: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{flex:1;min-width: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-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}.cal-dow{background:var(--bg-elev);padding:6px 4px;text-align:center;font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase}.cal-cell{background:var(--bg-elev);min-height:92px;padding:4px;display:flex;flex-direction:column;gap:2px}.cal-cell.dim{background:var(--bg)}.cal-cell .dn{font-size:12px;color:var(--muted);align-self:flex-end}.cal-cell.today .dn{color:#fff;background:var(--brand);border-radius:999px;width:20px;height:20px;display:grid;place-items:center}.cal-chip{font-size:11px;line-height:1.25;padding:2px 5px;border-radius:5px;background:#af30341a;color:var(--ink);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;border:0;width:100%}.cal-chip .ct{color:var(--muted)}.cal-more{font-size:11px;color:var(--muted);cursor:pointer;background:0;border:0;text-align:left;padding:0 5px}@media (max-width:600px){.cal-cell{min-height:64px}.cal-chip{font-size:10px}}
