:root{--brand: #af3034;--brand-dark: #8a262a;--ink: #0f172a;--ink-2: #334155;--muted: #64748b;--line: #e2e8f0;--line-2: #cbd5e1;--bg: #f6f7f9;--bg-elev: #ffffff;--green: #16a34a;--amber: #d97706;--red: #dc2626;--blue: #2563eb;--violet: #7c3aed;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--shadow-1: 0 1px 2px rgba(15,23,42,.04), 0 0 0 1px rgba(15,23,42,.04);--shadow-2: 0 6px 18px rgba(15,23,42,.1);--tab-h: 64px;--hdr-h: 56px;--sa-t: env(safe-area-inset-top, 0px);--sa-b: env(safe-area-inset-bottom, 0px);--sa-l: env(safe-area-inset-left, 0px);--sa-r: env(safe-area-inset-right, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.45;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}body{min-height:100dvh;overscroll-behavior:none}.app-header{position:sticky;top:0;z-index:50;background:#ffffffeb;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--line);padding:calc(var(--sa-t) + var(--space-2)) var(--space-4) var(--space-2);display:flex;align-items:center;gap:var(--space-3);min-height:var(--hdr-h)}.app-header .brand{display:flex;align-items:center;gap:var(--space-2);font-weight:600;font-size:16px;color:var(--ink)}.app-header .brand img{width:28px;height:28px;border-radius:6px;object-fit:contain}.app-header .brand-mark{width:28px;height:28px;border-radius:6px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;letter-spacing:.04em}.app-header .spacer{flex:1}.app-header .header-action{height:36px;padding:0 var(--space-3);border-radius:var(--r-sm);background:var(--bg);border:1px solid var(--line);color:var(--ink-2);font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:6px;cursor:pointer;flex-shrink:0}.app-header .header-action:active{transform:scale(.97)}@media (max-width: 600px){.hide-mobile{display:none!important}.app-header{gap:var(--space-2);padding-left:var(--space-3);padding-right:var(--space-3);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.app-header::-webkit-scrollbar{display:none}.app-header .header-action{padding:0 9px;min-width:36px}.app-header .brand{font-size:14px}.app-header .brand span{display:none}.app-header .spacer{flex:0 0 auto;min-width:4px}}.app-main{padding:var(--space-4);padding-bottom:calc(var(--tab-h) + var(--sa-b) + var(--space-6));max-width:1280px;margin:0 auto}.tab-pane{display:none}.tab-pane.active{display:block}.tab-bar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fffffff5;backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);border-top:1px solid var(--line);padding:var(--space-1) calc(var(--sa-l) + var(--space-1)) calc(var(--sa-b) + var(--space-1)) calc(var(--sa-r) + var(--space-1));display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.tab-bar::-webkit-scrollbar{display:none}.tab-bar button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;min-width:64px;min-height:52px;font-size:11px;color:var(--muted);font-weight:500;cursor:pointer;gap:2px;border-radius:var(--r-sm)}.tab-bar button .icn{font-size:22px;line-height:1}.tab-bar button.active{color:var(--brand)}.tab-bar button:active{background:#0000000d}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--space-4);box-shadow:var(--shadow-1)}.card+.card{margin-top:var(--space-3)}.card .title{font-size:13px;color:var(--muted);margin:0 0 var(--space-2);text-transform:uppercase;letter-spacing:.05em}.card h2{font-size:17px;margin:0 0 var(--space-3);font-weight:600}.row{display:flex;gap:var(--space-3);align-items:center}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:var(--space-3)}.grid-2{display:grid;grid-template-columns:1fr;gap:var(--space-3)}@media (min-width: 760px){.grid-2{grid-template-columns:1fr 1fr}}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px;color:var(--muted)}label,.field-label{display:block;font-size:13px;color:var(--ink-2);font-weight:500;margin-bottom:6px}input,select,textarea{width:100%;font:inherit;font-size:16px;background:var(--bg-elev);color:var(--ink);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:10px 12px;min-height:44px;transition:border-color .12s ease,box-shadow .12s ease}input[type=checkbox],input[type=radio]{width:20px;height:20px;min-height:0;padding:0;margin:0;vertical-align:middle;accent-color:var(--brand);flex-shrink:0}label>input[type=checkbox],label>input[type=radio]{margin-right:8px}textarea{min-height:88px;resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #af30342e}input:disabled,select:disabled,textarea:disabled{background:#f3f4f6;color:var(--muted)}.field{margin-bottom:var(--space-3)}.field-row{display:flex;gap:var(--space-3)}.field-row>.field{flex:1;margin-bottom:0}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:15px;font-weight:600;border:1px solid var(--line-2);background:var(--bg-elev);color:var(--ink);border-radius:var(--r-sm);padding:10px 16px;min-height:44px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .06s ease,background .12s ease,box-shadow .12s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--bg)}.btn.danger{color:var(--red);border-color:#dc26264d}.btn.danger:hover{background:#dc262614}.btn.full{width:100%}.btn-stack{display:flex;gap:var(--space-2);flex-wrap:wrap}.sticky-actions{position:sticky;bottom:calc(var(--tab-h) + var(--sa-b) + 4px);background:linear-gradient(0deg,var(--bg) 80%,rgba(246,247,249,0));padding:var(--space-3) 0;margin:var(--space-4) calc(var(--space-4) * -1) 0;padding-left:var(--space-4);padding-right:var(--space-4);display:flex;gap:var(--space-2);z-index:5}.sticky-actions .btn{flex:1}.chip{display:inline-flex;align-items:center;gap:6px;background:#eef2f6;border:1px solid var(--line);color:var(--ink-2);border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:500}.chip.brand{background:#af30341f;border-color:#af303440;color:var(--brand)}.chip.warn{background:#d977061f;border-color:#d9770640;color:var(--amber)}.chip.ok{background:#16a34a1f;border-color:#16a34a40;color:var(--green)}.chip.info{background:#2563eb1f;border-color:#2563eb40;color:var(--blue)}.chip.danger{background:#dc26261f;border-color:#dc262647;color:var(--red)}.chip.muted{background:var(--bg);border-color:var(--line);color:var(--muted)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--muted)}.status-pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:3px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.status-BOOKED{background:#2563eb1f;color:var(--blue)}.status-ASSIGNED{background:#d9770624;color:var(--amber)}.status-FINALISED{background:#16a34a24;color:var(--green)}.status-CANCELLED{background:#78716c2e;color:#57534e;text-decoration:line-through}.list-item{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);cursor:pointer;position:relative;min-height:56px}.list-item .stripe{position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0}.list-item .lead .ttl{font-weight:600;font-size:14.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item .lead .sub{font-size:12px;color:var(--muted);margin-top:2px}.list-item .trail{display:flex;gap:6px;align-items:center;flex-shrink:0}.list-item:active{background:var(--bg)}.list-item.is-loading{background:var(--bg);opacity:.7}#saved-list.is-loading{pointer-events:none}.qac-box{position:relative}.qac-list{position:absolute;left:0;right:0;top:100%;z-index:80;margin-top:2px;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--r-sm);max-height:240px;overflow-y:auto;box-shadow:0 12px 32px #0000002e;-webkit-overflow-scrolling:touch}.qac-list[hidden]{display:none}.qac-item{padding:10px 12px;font-size:14px;color:var(--ink);cursor:pointer;border-bottom:1px solid var(--line)}.qac-item:last-child{border-bottom:0}.qac-item.active,.qac-item:active{background:var(--bg)}table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}table.tbl th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:8px;border-bottom:1px solid var(--line);cursor:pointer}table.tbl td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}table.tbl tr:last-child td{border-bottom:0}.kpi-grid{display:grid;gap:var(--space-2);grid-template-columns:repeat(2,1fr)}@media (min-width: 760px){.kpi-grid{grid-template-columns:repeat(4,1fr)}}.kpi{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px}.kpi .lbl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.kpi .val{font-size:20px;font-weight:700;margin-top:2px;color:var(--ink)}.kpi .delta{font-size:11.5px;margin-top:2px}.kpi .delta.up{color:var(--red)}.kpi .delta.down{color:var(--green)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:80;display:none}.sheet-backdrop.open{display:block}.sheet{position:fixed;left:0;right:0;bottom:0;background:var(--bg-elev);border-radius:18px 18px 0 0;box-shadow:var(--shadow-2);max-height:90dvh;overflow-y:auto;z-index:81;transform:translateY(100%);transition:transform .26s cubic-bezier(.32,.72,0,1);padding:var(--space-3) var(--space-4) calc(var(--sa-b) + var(--space-6));will-change:transform;contain:layout paint}.sheet.open{transform:translateY(0)}.sheet .grabber{width:36px;height:5px;background:var(--line-2);border-radius:3px;margin:0 auto var(--space-3)}.sheet .sheet-title{font-weight:700;font-size:17px;margin:0 0 var(--space-2)}#toast-root{position:fixed;left:0;right:0;bottom:calc(var(--tab-h) + var(--sa-b) + 12px);z-index:90;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{background:#0f172aeb;color:#fff;font-size:14px;font-weight:500;border-radius:999px;padding:10px 16px;max-width:min(92vw,480px);box-shadow:var(--shadow-2);animation:toast-in .22s ease}.toast.error{background:#dc2626f5}.toast.success{background:#16a34af5}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.spinner{width:16px;height:16px;border:2px solid rgba(0,0,0,.15);border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}.spinner.lg{width:28px;height:28px;border-width:3px}.spinner.white{border-color:#fff6;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.skeleton{background:linear-gradient(90deg,#f0f2f6 25%,#e3e7ec,#f0f2f6 75%);background-size:200px 100%;animation:shimmer 1.4s infinite;border-radius:var(--r-md);height:80px}.skeleton+.skeleton{margin-top:var(--space-2)}.boot-loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);transition:opacity .35s ease}.boot-loader.hidden{opacity:0;pointer-events:none}.boot-loader-inner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px}.boot-logo{width:80px;height:80px;background:var(--brand);color:#fff;border-radius:16px;display:inline-flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;letter-spacing:-1px;box-shadow:var(--shadow-2);overflow:hidden}.boot-logo.has-image{background:transparent;box-shadow:none;border-radius:0;width:auto;height:auto;max-width:200px;max-height:120px}.boot-logo img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.boot-title{font-size:20px;font-weight:700;color:var(--ink);margin-top:4px}.boot-spinner{width:22px;height:22px;border-width:3px;margin-top:8px}.boot-status{margin-top:6px;font-size:13px;color:var(--muted);min-height:1.2em}.banner{display:flex;align-items:flex-start;gap:var(--space-3);border-radius:var(--r-md);padding:10px 12px;font-size:13.5px;background:#d977061a;border:1px solid rgba(217,119,6,.25);color:#92400e;margin-bottom:var(--space-3)}.banner.error{background:#dc26261a;border-color:#dc262640;color:#991b1b}.banner.info{background:#2563eb1a;border-color:#2563eb40;color:#1e3a8a}.banner.success{background:#16a34a1a;border-color:#16a34a40;color:#166534}.card.is-saving{opacity:.55!important;pointer-events:none!important;position:relative;transition:opacity .15s ease}.card.is-saving:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff59;border-radius:inherit;pointer-events:none;z-index:1}.card.is-saving>*{position:relative;z-index:2}.dropzone{border:2px dashed transparent;transition:border-color .15s ease,background .15s ease}.dropzone.active{border-color:var(--brand);background:#af30340d}.dragging{opacity:.55}.picker-bar{position:sticky;top:var(--hdr-h);z-index:40;margin:0 calc(var(--space-4) * -1) var(--space-3);padding:8px var(--space-4);background:#af3034f2;color:#fff;display:flex;align-items:center;gap:var(--space-3);font-size:14px}.picker-bar .pb-cancel{margin-left:auto;background:#fff3;border-color:transparent;color:#fff}.cal-event{border-left:3px solid var(--muted);padding:6px 8px;background:var(--bg);border-radius:var(--r-sm);font-size:12.5px;margin-bottom:4px;cursor:pointer}.hscroll{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}.hscroll::-webkit-scrollbar{display:none}@media (min-width: 960px){.app-main{padding:var(--space-5) var(--space-6);padding-bottom:var(--space-6)}.app-header{padding:var(--space-3) var(--space-6)}.tab-bar{position:sticky;top:var(--hdr-h);bottom:auto;justify-content:flex-start;gap:var(--space-2);border-top:0;border-bottom:1px solid var(--line);padding:6px var(--space-6);background:#ffffffeb}.tab-bar button{flex-direction:row;gap:8px;padding:10px 16px;font-size:14px}.tab-bar button .icn{font-size:18px}body{padding-bottom:0}.sticky-actions{bottom:0}.sheet{left:auto;right:var(--space-6);bottom:var(--space-6);width:min(440px,96vw);border-radius:var(--r-lg)}.sheet.open{transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}.cal-wrap{position:relative;display:flex;flex-direction:column;width:100%;min-height:600px;height:calc(100dvh - var(--hdr-h) - var(--tab-h) - 24px);background:var(--bg);padding:4px 6px 6px;box-sizing:border-box;--cal-zoom: 1}body.tv-mode .cal-wrap{height:100vh;padding:4px}.cal-wrap .cal-toolbar{display:flex;align-items:center;gap:6px;padding:8px 0;flex-wrap:wrap;flex-shrink:0}.cal-wrap .cal-title{font-weight:600;font-size:clamp(16px,1.8vh,24px);margin:0 8px;white-space:nowrap;color:var(--ink)}body.tv-mode .cal-wrap .cal-title{font-size:clamp(20px,2.3vh,30px)}body.tv-mode .cal-wrap .cal-btn,body.tv-mode .cal-wrap .cal-vbtn{font-size:clamp(14px,1.4vh,18px);padding:8px 14px}body.tv-mode .cal-wrap .cal-icn{font-size:clamp(18px,2vh,26px);padding:8px 12px}.cal-wrap .cal-cat-filters{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center}.cal-wrap .cal-cat-pill{padding:6px 10px;border:1px solid var(--line);background:var(--bg-elev);border-radius:999px;cursor:pointer;font:inherit;font-size:12px;font-weight:500;color:var(--ink);white-space:nowrap;transition:all .12s;opacity:.55;filter:grayscale(.5)}.cal-wrap .cal-cat-pill.is-on{background:var(--green);color:#fff;border-color:#059669;opacity:1;filter:none}.cal-wrap .cal-cat-pill:hover{opacity:1}body.tv-mode .cal-wrap .cal-cat-pill{font-size:clamp(13px,1.3vh,17px);padding:7px 12px}.cal-wrap .cal-datepick-btn{position:relative}.cal-wrap .cal-datepick-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;border:0;padding:0;margin:0}.cal-wrap .cal-spacer{flex:1}.cal-wrap .cal-btn{padding:6px 12px;border:1px solid var(--line);background:var(--bg-elev);border-radius:8px;cursor:pointer;font:inherit;font-size:13px;color:var(--ink)}.cal-wrap .cal-btn:hover{background:#f1f5f9}.cal-wrap .cal-btn-primary{font-weight:600}.cal-wrap .cal-icn{padding:6px 10px;font-size:16px;line-height:1}.cal-wrap .cal-btn[disabled]{opacity:.6;cursor:not-allowed}.cal-wrap .cal-views{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.cal-wrap .cal-vbtn{padding:6px 12px;border:0;background:var(--bg-elev);cursor:pointer;font:inherit;font-size:13px;color:var(--ink);border-right:1px solid var(--line)}.cal-wrap .cal-vbtn:last-child{border-right:0}.cal-wrap .cal-vbtn.active{background:var(--brand);color:#fff}.cal-wrap .cal-vbtn:hover:not(.active){background:#f1f5f9}.cal-wrap .cal-status{padding:8px 12px;font-size:13px;background:#fef3c7;color:#92400e;border-radius:6px;margin-bottom:8px;flex-shrink:0}.cal-wrap .cal-grid{flex:1;min-height:0;width:100%;display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden auto;box-sizing:border-box}.cal-wrap .cal-dayheader-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.5fr) minmax(0,.5fr);gap:1px;background:var(--line);width:100%;box-sizing:border-box;flex-shrink:0}.cal-wrap .cal-weeks{display:flex;flex-direction:column;gap:1px;background:var(--line);flex:1;min-height:0;width:100%;box-sizing:border-box}.cal-wrap .cal-week-row{display:flex;flex-direction:column;background:var(--bg-elev);flex:0 0 auto;width:100%}.cal-wrap .cal-grid.cal-month .cal-week-row{min-height:calc(clamp(90px,14vh,220px) * var(--cal-zoom))}.cal-wrap .cal-grid.cal-2weeks .cal-week-row{min-height:calc(clamp(110px,26vh,380px) * var(--cal-zoom))}body.tv-mode .cal-wrap .cal-grid.cal-month .cal-week-row{min-height:calc(clamp(120px,15vh,260px) * var(--cal-zoom))}body.tv-mode .cal-wrap .cal-grid.cal-2weeks .cal-week-row{min-height:calc(clamp(220px,38vh,480px) * var(--cal-zoom))}.cal-wrap .cal-daynums-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.5fr) minmax(0,.5fr);gap:1px;background:var(--line);flex-shrink:0}.cal-wrap .cal-day-num-cell{background:var(--bg-elev);padding:4px 6px;min-width:0}.cal-wrap .cal-day-num-cell.cal-day-other{background:#f8fafc}.cal-wrap .cal-day-num-cell.cal-day-today .cal-daynum{background:var(--brand);color:#fff;border-radius:50%;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.cal-wrap .cal-events-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.5fr) minmax(0,.5fr);grid-auto-rows:calc(clamp(22px,2.4vh,38px) * var(--cal-zoom));grid-auto-flow:row dense;gap:calc(clamp(2px,.3vh,4px) * var(--cal-zoom));padding:2px 1px;align-content:start}body.tv-mode .cal-wrap .cal-events-grid{grid-auto-rows:calc(clamp(28px,3vh,48px) * var(--cal-zoom));gap:calc(clamp(3px,.4vh,6px) * var(--cal-zoom))}.cal-wrap .cal-dayheader{background:var(--bg-elev);text-align:center;padding:calc(clamp(6px,.8vh,12px) * var(--cal-zoom)) 6px;font-size:calc(clamp(11px,1.1vh,16px) * var(--cal-zoom));letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600}.cal-wrap .cal-daynum{display:inline-block;font-size:calc(clamp(12px,1.4vh,20px) * var(--cal-zoom));color:var(--ink);min-width:calc(clamp(24px,2.6vh,36px) * var(--cal-zoom));height:calc(clamp(24px,2.6vh,36px) * var(--cal-zoom));line-height:calc(clamp(24px,2.6vh,36px) * var(--cal-zoom));padding:0 6px;font-weight:500}.cal-wrap .cal-day-num-cell.cal-day-today .cal-daynum{width:calc(clamp(24px,2.6vh,36px) * var(--cal-zoom));height:calc(clamp(24px,2.6vh,36px) * var(--cal-zoom))}.cal-wrap .cal-day-other .cal-daynum{color:var(--muted)}.cal-wrap .cal-ev.cal-ev-continues-left{border-top-left-radius:0;border-bottom-left-radius:0;padding-left:12px}.cal-wrap .cal-ev.cal-ev-continues-right{border-top-right-radius:0;border-bottom-right-radius:0;padding-right:12px}.cal-wrap .cal-ev.cal-ev-weekend-tall{grid-row:span 2;white-space:normal;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;text-overflow:ellipsis;line-height:1.2;word-break:break-word}.cal-wrap .cal-ev.cal-ev-provisional{background-image:repeating-linear-gradient(-45deg,rgba(255,255,255,.32) 0px,rgba(255,255,255,.32) 6px,transparent 6px,transparent 14px);box-shadow:inset 0 0 0 1.5px #00000073;font-style:italic}.cal-wrap .cal-ev{display:block;font-size:calc(clamp(11.5px,1.2vh,17px) * var(--cal-zoom));font-weight:600;padding:calc(clamp(2px,.3vh,6px) * var(--cal-zoom)) calc(clamp(6px,.6vw,12px) * var(--cal-zoom));border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;text-align:left;font-family:inherit;cursor:pointer;line-height:1.4;flex-shrink:0;transition:filter .12s,transform .12s,box-shadow .12s}.cal-wrap .cal-ev:hover{filter:brightness(1.08);transform:translateY(-1px)}.cal-wrap .cal-ev:active{transform:scale(.99)}.cal-wrap .cal-ev-time{opacity:.9;margin-right:2px}body.tv-mode .cal-wrap .cal-ev{font-size:calc(clamp(13px,1.55vh,22px) * var(--cal-zoom));padding:calc(clamp(3px,.45vh,8px) * var(--cal-zoom)) calc(clamp(8px,.8vw,14px) * var(--cal-zoom))}.cal-wrap .cal-ev.cal-ev-cancelled{text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:#000000b3;opacity:.5;background-image:repeating-linear-gradient(135deg,rgba(0,0,0,.18) 0,rgba(0,0,0,.18) 3px,transparent 3px,transparent 8px)!important}.cal-wrap .cal-ev.cal-ev-finalised{box-shadow:0 0 0 3px var(--green),0 0 0 4px #16a34a66;position:relative;z-index:1}.cal-wrap .cal-ev.cal-ev-unassigned{box-shadow:0 0 0 3px var(--red),0 0 0 4px #dc262666;position:relative;z-index:1;animation:cal-ev-pulse 1.6s ease-in-out infinite}@keyframes cal-ev-pulse{0%,to{box-shadow:0 0 0 3px var(--red),0 0 0 4px #dc262666}50%{box-shadow:0 0 0 3px var(--red),0 0 0 6px #dc26268c}}.cal-wrap .cal-ev.cal-ev-quickbook{box-shadow:0 0 0 2px var(--amber) inset,0 0 0 2px #f59e0b66;background-image:repeating-linear-gradient(45deg,#ffffff52 0,#ffffff52 4px,#fff0 4px,#fff0 9px);font-style:italic}.cal-wrap .cal-ev.cal-ev-quickbook:hover{filter:brightness(1.12)}.cal-wrap .cal-grid.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line)}.cal-wrap .cal-grid.cal-week .cal-agenda-day{background:var(--bg-elev);padding:8px;margin:0;overflow:auto;min-height:0}.cal-wrap .cal-grid.cal-day{display:block;padding:12px;overflow:auto;background:var(--bg-elev)}.cal-wrap .cal-agenda-day-h{font-size:13px;font-weight:600;padding:6px 0;border-bottom:1px solid var(--line);margin-bottom:6px;position:sticky;top:0;background:var(--bg-elev);line-height:1.3;color:var(--ink)}.cal-wrap .cal-agenda-day-h.today{color:var(--brand)}.cal-wrap .cal-agenda-empty{font-size:12px;color:var(--muted);padding:6px 0}.cal-wrap .cal-agenda-ev{display:flex;align-items:center;gap:6px;padding:6px 8px;margin:4px 0;border-radius:6px;cursor:pointer;background:var(--bg);font-size:12px;color:var(--ink)}.cal-wrap .cal-agenda-ev:hover{background:#eef2f6}.cal-wrap .cal-agenda-ev .cal-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.cal-wrap .cal-agenda-ev .cal-time{font-size:11px;color:var(--muted);white-space:nowrap}.cal-wrap .cal-agenda-ev .cal-titletxt{flex:1;min-width:0}.cal-wrap .cal-grid.cal-day .cal-agenda-ev{padding:10px 12px;font-size:14px}.cal-wrap .cal-grid.cal-day .cal-agenda-ev .cal-time{min-width:110px;font-size:13px}.cal-wrap .cal-agenda-ev.cal-agenda-ev-provisional{background:repeating-linear-gradient(-45deg,#f59e0b1a,#f59e0b1a 6px,#fff0 6px,#fff0 14px);border:1px dashed rgba(245,158,11,.7)}.cal-wrap .cal-agenda-ev.cal-agenda-ev-provisional .cal-titletxt{font-style:italic}.cal-wrap .cal-agenda-ev.cal-agenda-ev-cancelled .cal-titletxt{text-decoration:line-through;color:var(--muted)}.cal-wrap .cal-agenda-ev.cal-agenda-ev-finalised{box-shadow:inset 0 0 0 1.5px #16a34ab3}.cal-wrap .cal-agenda-ev.cal-agenda-ev-unassigned{box-shadow:inset 0 0 0 1.5px #dc2626d9}.cal-wrap .cal-agenda-ev.cal-agenda-ev-quickbook{box-shadow:inset 0 0 0 1.5px var(--amber);background-image:repeating-linear-gradient(45deg,#f59e0b1a 0,#f59e0b1a 4px,#fff0 4px,#fff0 9px)}.cal-wrap .cal-grid.cal-list{display:block;background:var(--bg-elev);overflow-y:auto;padding:0}.cal-wrap .cal-list-wrap{display:block}.cal-wrap .cal-list-empty{padding:60px 24px;text-align:center;color:var(--muted);font-size:14px}.cal-wrap .cal-list-month{padding:8px 0 16px}.cal-wrap .cal-list-month-h{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,#f8fafc,#f8fafcf0);padding:12px 24px 8px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--brand);border-bottom:1px solid #f1f5f9}.cal-wrap .cal-list-day{display:grid;grid-template-columns:80px 1fr;gap:16px;padding:14px 24px;border-bottom:1px solid #f1f5f9;align-items:start}.cal-wrap .cal-list-day-past{opacity:.68}.cal-wrap .cal-list-day-today{background:#fef3f2;border-left:4px solid var(--brand);padding-left:20px}.cal-wrap .cal-list-day-h{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding-top:4px}.cal-wrap .cal-list-dnum{font-size:28px;font-weight:700;line-height:1;color:var(--ink)}.cal-wrap .cal-list-day-today .cal-list-dnum{color:var(--brand)}.cal-wrap .cal-list-dwd{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8;font-weight:600}.cal-wrap .cal-list-events{display:flex;flex-direction:column;gap:8px}.cal-wrap .cal-list-ev{display:flex;gap:12px;padding:10px 12px;background:#fff;border:1px solid #f1f5f9;border-radius:10px;cursor:pointer;transition:border-color .12s,transform .12s}.cal-wrap .cal-list-ev:hover{border-color:#cbd5e1;transform:translate(2px)}.cal-wrap .cal-list-ev-bar{width:4px;flex-shrink:0;border-radius:2px;align-self:stretch}.cal-wrap .cal-list-ev-body{flex:1;min-width:0}.cal-wrap .cal-list-ev-title{font-size:14px;font-weight:600;line-height:1.35;color:var(--ink);margin-bottom:2px}.cal-wrap .cal-list-ev-meta{font-size:12px;color:#64748b;display:flex;flex-wrap:wrap;gap:0}.cal-wrap .cal-list-ev.cal-list-ev-provisional{background:repeating-linear-gradient(-45deg,#f59e0b14,#f59e0b14 6px,#fff0 6px,#fff0 14px);border:1px dashed rgba(245,158,11,.7)}.cal-wrap .cal-list-ev.cal-list-ev-provisional .cal-list-ev-title{font-style:italic}.cal-wrap .cal-list-ev.cal-list-ev-cancelled .cal-list-ev-title{text-decoration:line-through;color:var(--muted)}.cal-wrap .cal-list-ev.cal-list-ev-finalised{border-color:#16a34a73;box-shadow:inset 3px 0 0 var(--green)}.cal-wrap .cal-list-ev.cal-list-ev-unassigned{border-color:#dc2626a6}.cal-wrap .cal-list-ev.cal-list-ev-quickbook{border-color:#f59e0bb3;background-image:repeating-linear-gradient(45deg,#f59e0b12 0,#f59e0b12 4px,#fff0 4px,#fff0 9px)}body.tv-mode .app-header,body.tv-mode .tab-bar{display:none!important}body.tv-mode .app-main{padding:0;margin:0;max-width:none}body.tv-mode .tab-pane.active{display:block;height:100vh}.cal-popover-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:9000;animation:cal-pop-fade .14s ease-out}@keyframes cal-pop-fade{0%{opacity:0}to{opacity:1}}.cal-popover{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;box-shadow:0 24px 60px #0000004d;width:calc(100% - 48px);max-width:520px;max-height:80vh;display:flex;flex-direction:column;overflow:hidden;z-index:9001;animation:cal-pop-rise .18s cubic-bezier(.16,.84,.34,1)}@keyframes cal-pop-rise{0%{transform:translate(-50%,-46%) scale(.97);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.cal-popover-header{padding:22px 24px 18px;color:#fff;position:relative}.cal-popover-header:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#ffffff2e}.cal-popover-title{font-size:19px;font-weight:600;line-height:1.3;padding-right:36px}.cal-popover-subtitle{font-size:13px;opacity:.9;margin-top:4px}.cal-popover-close{position:absolute;top:12px;right:12px;width:36px;height:36px;border:1.5px solid rgba(255,255,255,.5);border-radius:50%;background:#0000002e;color:#fff;cursor:pointer;font-size:24px;font-weight:400;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .12s,transform .12s;z-index:1}.cal-popover-close:hover{background:#00000057;transform:scale(1.08)}.cal-popover-body{padding:18px 24px 24px;overflow-y:auto;flex:1}.cal-popover-section{display:flex;gap:14px;align-items:flex-start;padding:10px 0}.cal-popover-section+.cal-popover-section{border-top:1px solid #f1f5f9}.cal-popover-icon{font-size:16px;line-height:1;margin-top:2px;width:22px;text-align:center;flex-shrink:0;color:var(--muted)}.cal-popover-section-body{flex:1;min-width:0}.cal-popover-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-weight:600;margin-bottom:2px}.cal-popover-value{font-size:14px;color:var(--ink);line-height:1.5;word-wrap:break-word}.cal-popover-value.cal-popover-pre{white-space:pre-wrap;font-size:13px}.today-chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--space-3)}.chip.danger{background:#dc26261f;color:#991b1b}.chip.warn{background:#d977061f;color:#92400e}.chip.ok{background:#16a34a1f;color:#166534}.chip.info{background:#2563eb1f;color:#1e40af}.cal-card{padding:var(--space-4)}.cal-card .tcal-grid{margin-top:8px;display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}.cal-card .tcal-week{display:flex;flex-direction:column;background:var(--bg-elev)}.cal-card .tcal-week+.tcal-week{border-top:1px solid var(--line)}.cal-card .tcal-daynums{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.5fr) minmax(0,.5fr);gap:1px;background:var(--line);flex-shrink:0}.cal-card .tcal-daycell{background:var(--bg-elev);padding:6px 8px;min-width:0;cursor:pointer;transition:background .12s;display:flex;align-items:baseline;gap:6px}.cal-card .tcal-daycell:hover{background:#f1f5f9}.cal-card .tcal-daycell.is-weekend{background:#fafbfc}.cal-card .tcal-daycell.is-selected{background:#fef3f2;box-shadow:inset 3px 0 0 var(--brand)}.cal-card .tcal-dow{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.cal-card .tcal-dnum{font-size:13px;font-weight:500;color:var(--ink);min-width:22px;height:22px;line-height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}.cal-card .tcal-dnum.is-today{background:var(--brand);color:#fff;border-radius:50%;font-weight:700;width:22px;height:22px;padding:0}.cal-card .tcal-events{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,.5fr) minmax(0,.5fr);grid-auto-rows:22px;grid-auto-flow:row dense;gap:2px;padding:2px 1px;align-content:start}.cal-card .tcal-evt{display:block;font-size:11.5px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;text-align:left;font-family:inherit;cursor:pointer;line-height:1.4;transition:filter .12s,transform .12s}.cal-card .tcal-evt:hover{filter:brightness(1.08);transform:translateY(-1px)}.cal-card .tcal-evt:active{transform:scale(.99)}.cal-card .tcal-evt-time{opacity:.9;margin-right:2px}.cal-card .tcal-evt.is-weekend-tall{grid-row:span 2;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-overflow:ellipsis;line-height:1.2;word-break:break-word}.cal-card .tcal-evt.is-cancelled{text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:#000000b3;opacity:.5;background-image:repeating-linear-gradient(135deg,rgba(0,0,0,.18) 0,rgba(0,0,0,.18) 3px,transparent 3px,transparent 8px)!important}.cal-card .tcal-evt.is-finalised{box-shadow:0 0 0 3px var(--green),0 0 0 4px #16a34a66;position:relative;z-index:1}.cal-card .tcal-evt.is-unassigned{box-shadow:0 0 0 3px var(--red),0 0 0 4px #dc262666;position:relative;z-index:1;animation:tcal-pulse 1.6s ease-in-out infinite}@keyframes tcal-pulse{0%,to{box-shadow:0 0 0 3px var(--red),0 0 0 4px #dc262666}50%{box-shadow:0 0 0 3px var(--red),0 0 0 6px #dc26268c}}.cal-card .tcal-evt.is-quickbook{box-shadow:0 0 0 2px var(--amber) inset,0 0 0 2px #f59e0b66;background-image:repeating-linear-gradient(45deg,#ffffff52 0,#ffffff52 4px,#fff0 4px,#fff0 9px);font-style:italic}.cal-card .tcal-evt.is-quickbook:hover{filter:brightness(1.12)}.cal-card .tcal-evt.is-provisional{background-image:repeating-linear-gradient(-45deg,rgba(255,255,255,.32) 0,rgba(255,255,255,.32) 6px,transparent 6px,transparent 14px);box-shadow:inset 0 0 0 1.5px #00000073;font-style:italic}.cal-card .tcal-mgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:4px}.cal-card .tcal-mday{background:var(--bg-elev);border:1px solid var(--line);border-radius:8px;padding:8px;min-height:100px;display:flex;flex-direction:column}.cal-card .tcal-mday.is-weekend{background:#fafbfc}.cal-card .tcal-mday.is-today{border-color:var(--brand);border-width:2px;padding:7px}.cal-card .tcal-mday.is-selected{box-shadow:inset 3px 0 0 var(--brand)}.cal-card .tcal-mday-header{display:flex;align-items:baseline;gap:6px;padding-bottom:6px;margin-bottom:6px;border-bottom:1px solid var(--line);cursor:pointer}.cal-card .tcal-mday-dow{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.cal-card .tcal-mday-dnum{font-size:15px;font-weight:600;color:var(--ink);line-height:1}.cal-card .tcal-mday-dnum.is-today{background:var(--brand);color:#fff;border-radius:50%;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12px}.cal-card .tcal-mday-events{display:flex;flex-direction:column;gap:4px;flex:1}.cal-card .tcal-mday-empty{color:var(--muted);font-size:12px;text-align:center;padding:8px 0}.cal-card .tcal-mchip{display:block;width:100%;font-size:12px;font-weight:600;padding:5px 7px;border-radius:5px;white-space:normal;word-break:break-word;border:0;text-align:left;font-family:inherit;line-height:1.25;cursor:pointer}.cal-card .tcal-mchip-time{opacity:.9;margin-right:3px;font-weight:500}.cal-card .tcal-mchip:active{transform:scale(.99)}.cal-card .tcal-mchip.is-cancelled{text-decoration:line-through;text-decoration-thickness:2px;text-decoration-color:#000000b3;opacity:.55}.cal-card .tcal-mchip.is-finalised{box-shadow:0 0 0 1.5px #16a34ab3}.cal-card .tcal-mchip.is-unassigned{box-shadow:0 0 0 1.5px #dc2626d9}.cal-card .tcal-mchip.is-provisional{background-image:repeating-linear-gradient(45deg,rgba(0,0,0,.08) 0,rgba(0,0,0,.08) 3px,transparent 3px,transparent 8px);font-style:italic}.cal-card .today-cat-filters{display:inline-flex;flex-wrap:wrap;gap:4px;margin-right:4px}.cal-card .today-cat-pill{padding:5px 10px;border:1px solid var(--line);background:var(--bg-elev);border-radius:999px;cursor:pointer;font:inherit;font-size:12px;font-weight:500;color:var(--ink);white-space:nowrap;transition:all .12s;opacity:.55;filter:grayscale(.5)}.cal-card .today-cat-pill.is-on{background:var(--green);color:#fff;border-color:#059669;opacity:1;filter:none}.cal-card .today-cat-pill:hover{opacity:1}.list-item{display:flex;gap:10px;align-items:stretch;padding:8px 6px;border-top:1px solid var(--line);cursor:pointer;transition:background .12s}.list-item:hover{background:#f8fafc}.list-item .stripe{width:3px;border-radius:2px;flex-shrink:0}.list-item .lead{flex:1;min-width:0}.list-item .ttl{font-weight:600;font-size:14px}.list-item .sub{color:var(--muted);font-size:12px;margin-top:2px}.list-item .trail{display:flex;align-items:center;flex-shrink:0}.status-pill{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.status-pill.status-BOOKED{background:#dc26261f;color:#991b1b}.status-pill.status-ASSIGNED{background:#d977061f;color:#92400e}.status-pill.status-FINALISED{background:#16a34a1f;color:#166534}.status-pill.status-CANCELLED{background:#64748b26;color:var(--muted)}.status-pill.status-OTHER{background:var(--bg);color:var(--muted)}@media (max-width: 719px){.cal-card .tcal-evt{font-size:11px}}
