:root{--navy: #0F2A3F;--navy-2: #163A55;--navy-3: #1F4B6B;--blue: #2E7BA6;--blue-lt: #7FB3CE;--blue-pale: #A9C4D4;--ink: #20323F;--ink-soft: #5B6B78;--panel: #F1F6F9;--line: #D8E3EA;--bg: #F6F8FA;--white: #fff;--orange: #C46A0A;--green: #15803d;--green-bg: #dcfce7;--amber: #b45309;--amber-bg: #fef3c7;--red: #b91c1c;--red-bg: #fee2e2;--grey: #64748b;--grey-bg: #f1f5f9;--blue-bg: #e0eff7;--radius: 10px;--shadow: 0 1px 2px rgba(15, 42, 63, .06), 0 2px 8px rgba(15, 42, 63, .06);--shadow-lg: 0 20px 50px rgba(15, 42, 63, .25);font-family:Inter,Segoe UI,system-ui,sans-serif;color:var(--ink);font-size:14px}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1,h2,h3,h4{margin:0;color:var(--navy)}h1{font-size:24px;font-weight:700}h2{font-size:18px}h3{font-size:15px}h4{font-size:13px;margin-bottom:6px}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--ink-soft)}.small{font-size:12px}.text-red{color:var(--red);font-weight:600}.upper{text-transform:uppercase}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--blue-lt);border-color:var(--blue)}input[type=checkbox]{width:auto}input[type=color]{padding:2px;height:38px}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--navy);color:#dbe7ef;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:18px 12px}.sidebar nav{display:flex;flex-direction:column;gap:2px;margin-top:22px;flex:1;overflow-y:auto}.nav-item{display:flex;gap:10px;align-items:center;padding:9px 12px;border-radius:8px;color:#c7d7e3;font-weight:500}.nav-item:hover{background:var(--navy-2);text-decoration:none;color:#fff}.nav-item--on{background:var(--blue);color:#fff}.nav-item__icon{width:18px;text-align:center;opacity:.9}.nav-item--kiosk{margin-top:12px;border:1px dashed var(--navy-3)}.sidebar__foot{border-top:1px solid var(--navy-3);padding-top:12px;display:flex;flex-direction:column;gap:10px}.sidebar__site{font-size:11px;color:var(--blue-pale)}.user-chip{display:flex;justify-content:space-between;align-items:center;gap:8px}.user-chip__name{font-weight:600;color:#fff;font-size:13px}.user-chip__role{font-size:11px;color:var(--blue-lt)}.sidebar .link-btn{color:var(--blue-lt)}.dev-mini__row{display:flex;align-items:center;gap:8px;font-size:12px;padding:2px 0}.dev-mini__st{margin-left:auto;text-transform:capitalize;color:var(--blue-pale)}.main{min-width:0}.page{padding:24px 28px 60px;max-width:1500px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-head p{margin:4px 0 0}.page-head__actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.topbar-mobile{display:none}.center-screen{min-height:100vh;display:grid;place-items:center;padding:20px}.center{padding:60px;display:grid;place-items:center}.brand{display:flex;gap:10px;align-items:center}.brand__name{font-weight:700;font-size:17px;color:#fff;letter-spacing:.2px}.brand__org{font-size:11px;color:var(--blue-lt);letter-spacing:.5px;text-transform:uppercase}.brand--dark .brand__name{color:var(--navy)}.brand--dark .brand__org{color:var(--blue)}.auth-bg{background:linear-gradient(160deg,var(--navy) 0%,var(--navy-3) 60%,var(--blue) 100%)}.auth-card{background:#fff;border-radius:14px;padding:28px;width:100%;max-width:400px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:12px}.auth-card h2{margin-top:10px}.auth-links{display:flex;justify-content:space-between}.btn{border:1px solid transparent;border-radius:8px;padding:8px 14px;font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;transition:background .15s,box-shadow .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--blue);color:#fff}.btn--primary:hover:not(:disabled){background:#256a90}.btn--ghost{background:#fff;border-color:var(--line);color:var(--navy)}.btn--ghost:hover:not(:disabled){background:var(--panel)}.btn--danger{background:var(--red);color:#fff}.btn--danger-ghost{background:transparent;color:var(--red);border-color:transparent}.btn--warn{background:var(--orange);color:#fff}.btn--sm{padding:4px 10px;font-size:12px}.btn--lg{padding:12px 20px;font-size:16px}.btn--xl{padding:18px 28px;font-size:20px;border-radius:12px;min-width:220px}.btn--block{width:100%}.link-btn{background:none;border:0;color:var(--blue);cursor:pointer;font:inherit;padding:0;font-size:12px}.icon-btn{background:none;border:0;cursor:pointer;font-size:16px;color:var(--ink-soft);padding:4px 8px;border-radius:6px}.icon-btn:hover{background:var(--panel)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;text-transform:capitalize;white-space:nowrap}.badge--green{background:var(--green-bg);color:var(--green)}.badge--amber{background:var(--amber-bg);color:var(--amber)}.badge--red{background:var(--red-bg);color:var(--red)}.badge--blue{background:var(--blue-bg);color:var(--blue)}.badge--grey{background:var(--grey-bg);color:var(--grey)}.badge--navy{background:var(--navy);color:#fff}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;min-width:0}.card__head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px 0;gap:8px;flex-wrap:wrap}.card__actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.card__body{padding:14px 16px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(440px,1fr));gap:16px}.grid-2>.card{margin-bottom:0}.grid-2+.grid-2{margin-top:16px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}.stat{background:#fff;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:var(--radius);padding:12px 14px}.stat__label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);font-weight:600}.stat__value{font-size:24px;font-weight:700;color:var(--navy);margin-top:2px}.stat__sub{font-size:11px;color:var(--ink-soft)}.stat--green{border-left-color:#22c55e}.stat--amber{border-left-color:#f59e0b}.stat--red{border-left-color:#ef4444}.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.filters label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft)}.filters input[type=date]{width:auto}.select{width:auto;min-width:140px}.search{width:260px}.tabs{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:9px;padding:3px;gap:2px;margin-bottom:12px;flex-wrap:wrap}.filters .tabs,.page-head .tabs{margin-bottom:0}.tab{border:0;background:none;padding:6px 12px;border-radius:6px;font:inherit;font-weight:600;color:var(--ink-soft);cursor:pointer}.tab--on{background:var(--navy);color:#fff}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);padding:8px 10px;border-bottom:1px solid var(--line);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}.table td{padding:9px 10px;border-bottom:1px solid #eef2f5;vertical-align:top}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--panel)}.row--red td:first-child{box-shadow:inset 3px 0 #ef4444}.row--amber td:first-child{box-shadow:inset 3px 0 #f59e0b}.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:460px}.empty{padding:30px;text-align:center;color:var(--ink-soft)}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.plain-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.alert{padding:10px 12px;border-radius:8px;margin:10px 0;font-size:13px}.alert--err{background:var(--red-bg);color:var(--red)}.alert--ok{background:var(--green-bg);color:var(--green)}.alert--warn{background:var(--amber-bg);color:var(--amber)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f2a3f8c;display:grid;place-items:center;z-index:50;padding:20px}.modal{background:#fff;border-radius:14px;width:100%;max-width:560px;max-height:calc(100vh - 40px);display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}.modal--wide{max-width:860px}.modal__head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}.modal__body{padding:18px 20px;overflow-y:auto}.modal__foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.field{display:flex;flex-direction:column;gap:4px}.field>label,.field>span{font-size:12px;font-weight:600;color:var(--ink-soft)}.field--span2{grid-column:span 2}.req{color:var(--red)}.check{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}.check--lg{font-size:16px;margin-top:10px}.check--lg input{width:22px;height:22px}.form-extras{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line)}.parts__row{display:grid;grid-template-columns:1fr 90px 140px 36px;gap:8px;margin-bottom:6px}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:100}.toast{background:var(--navy);color:#fff;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow-lg);max-width:380px;font-weight:500}.toast--err{background:var(--red)}.spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0}.dot--serviceable{background:#22c55e}.dot--restricted{background:#f59e0b}.dot--unserviceable{background:#ef4444}.dot--maintenance{background:#3b82f6}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:middle}.live{color:var(--green);font-weight:600}.text-amber{color:var(--amber);font-weight:600}.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px 16px;margin:8px 0 12px}.kv>div{font-size:13px}.kv span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);font-weight:600}.card h3{margin:16px 0 6px}.device-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:16px}.device-card{background:#fff;border:1px solid var(--line);border-top:4px solid #22c55e;border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow)}.device-card--unserviceable{border-top-color:#ef4444;background:snow}.device-card--restricted{border-top-color:#f59e0b}.device-card--maintenance{border-top-color:#3b82f6}.device-card__top{display:flex;justify-content:space-between;align-items:flex-start}.device-card__name{font-size:17px;font-weight:700;color:var(--navy)}.device-card__row{display:flex;justify-content:space-between;font-size:12px}.device-card .btn{align-self:flex-start}.booking-list{list-style:none;margin:0;padding:0}.booking-list li{display:grid;grid-template-columns:14px 90px 46px 1fr auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #eef2f5}.booking-list li .muted{grid-column:3 / 5;font-size:12px}.booking-list li .badge{grid-row:1;grid-column:5}.week{display:grid;grid-template-columns:150px repeat(7,minmax(120px,1fr));border:1px solid var(--line);border-radius:8px;overflow-x:auto}.week__corner,.week__day{background:var(--panel);padding:8px;font-weight:600;font-size:12px;border-bottom:1px solid var(--line)}.week__day{border-left:1px solid var(--line)}.week__day--today{background:var(--blue);color:#fff}.week__dev{padding:10px 8px;font-weight:600;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:6px}.week__cell{min-height:110px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:4px}.week__cell--add{cursor:copy}.week__cell--add:hover{background:#fafcfd}.chip{text-align:left;border:1px solid var(--line);border-left:4px solid var(--blue);background:#fff;border-radius:6px;padding:4px 6px;font:inherit;font-size:11px;display:flex;flex-direction:column;cursor:pointer}.chip:hover{box-shadow:var(--shadow)}.chip__sub{color:var(--ink-soft)}.chip__st{font-size:10px;font-weight:700;text-transform:uppercase;color:var(--amber)}.chip--Cancelled,.chip--NoShow{opacity:.5;text-decoration:line-through}.chip--Completed{background:#f0fdf4}.chip--Tentative{border-style:dashed}.ageing{display:flex;gap:20px;align-items:flex-end;justify-content:space-around;height:170px;padding-top:10px}.ageing__col{display:flex;flex-direction:column;align-items:center;gap:6px}.ageing__bar{width:56px;background:var(--navy);color:#fff;font-weight:700;display:flex;align-items:flex-start;justify-content:center;padding-top:4px;border-radius:6px 6px 0 0}.method{margin-top:16px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}.method summary{cursor:pointer;font-weight:600;color:var(--navy)}.method li{margin:6px 0}.kiosk{min-height:100vh;background:#0b2233;color:#e6eef4;font-size:16px;display:flex;flex-direction:column}.kiosk h3,.kiosk h4{color:inherit}.kiosk__top{display:flex;align-items:center;gap:24px;padding:14px 24px;background:var(--navy);border-bottom:1px solid var(--navy-3)}.kiosk__devices{display:flex;gap:8px;flex:1;justify-content:center}.kiosk__dev{background:var(--navy-2);color:#fff;border:2px solid transparent;border-radius:10px;padding:12px 22px;font:inherit;font-weight:700;font-size:18px;cursor:pointer;display:flex;align-items:center;gap:10px}.kiosk__dev--on{border-color:var(--blue-lt);background:var(--blue)}.kiosk__clock{text-align:right}.kiosk__time{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}.kiosk__banner{padding:14px 24px;font-size:18px;text-align:center}.kiosk__banner--unserviceable{background:#b91c1c;color:#fff}.kiosk__banner--restricted{background:#b45309;color:#fff}.kiosk__banner--maintenance{background:#1d4ed8;color:#fff}.kiosk__main{flex:1;display:grid;grid-template-columns:1fr 380px;gap:20px;padding:20px 24px}.kiosk__primary,.kiosk__side{display:flex;flex-direction:column;gap:20px;min-width:0}.kiosk-card{background:var(--navy);border:1px solid var(--navy-3);border-radius:16px;padding:22px}.kiosk-card--active{border-color:#22c55e;box-shadow:0 0 0 1px #22c55e inset}.kiosk-card__label{font-size:12px;letter-spacing:1.5px;color:var(--blue-lt);font-weight:700;margin-bottom:10px}.kiosk-big{font-size:28px;font-weight:700;margin:6px 0 20px}.kiosk-timer{font-size:64px;font-weight:800;font-variant-numeric:tabular-nums;color:#4ade80;line-height:1.1}.kiosk-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:18px 0}.kiosk-meta span{display:block;font-size:12px;color:var(--blue-pale)}.kiosk-meta b{font-size:17px}.kiosk-actions{display:flex;gap:14px;flex-wrap:wrap}.kiosk-bookings{display:flex;flex-direction:column;gap:10px}.kiosk-booking{display:grid;grid-template-columns:130px 1fr auto;grid-template-rows:auto auto;gap:2px 14px;text-align:left;background:var(--navy-2);color:#fff;border:1px solid var(--navy-3);border-radius:12px;padding:14px 16px;font:inherit;cursor:pointer;align-items:center}.kiosk-booking:disabled{cursor:default;opacity:.75}.kiosk-booking .muted{grid-column:2;color:var(--blue-pale);font-size:14px}.kiosk-booking>:last-child{grid-row:1 / 3;grid-column:3}.kiosk-booking__go{color:#4ade80;font-weight:700}.kiosk-booking--done{opacity:.55}.kiosk-defects{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px;max-height:46vh;overflow-y:auto}.kiosk-defects li{background:var(--navy-2);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.kiosk__footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.kiosk .muted{color:var(--blue-pale)}.kiosk .link-btn{color:var(--blue-lt)}.kiosk .modal{color:var(--ink);font-size:16px}.kiosk .modal input,.kiosk .modal select,.kiosk .modal textarea{padding:12px;font-size:16px}.kiosk .modal .muted{color:var(--ink-soft)}.kiosk-form{display:flex;flex-direction:column;gap:14px}.kiosk-form>label{font-weight:700;color:var(--navy)}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}.pick{border:2px solid var(--line);background:#fff;border-radius:10px;padding:16px 10px;font:inherit;font-weight:600;cursor:pointer;color:var(--navy)}.pick--on{border-color:var(--blue);background:var(--blue-bg)}.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.seg--4{grid-template-columns:repeat(4,1fr)}.seg__btn{border:2px solid var(--line);background:#fff;border-radius:10px;padding:14px 10px;font:inherit;font-weight:600;cursor:pointer;display:flex;flex-direction:column;gap:4px;color:var(--navy)}.seg__btn small{font-weight:400;color:var(--ink-soft);font-size:12px}.seg__btn--on{border-color:var(--blue);background:var(--blue-bg)}.seg__btn--Completed{border-color:#22c55e;background:var(--green-bg)}.seg__btn--Interrupted{border-color:#f59e0b;background:var(--amber-bg)}.seg__btn--Aborted,.seg__btn--sev3{border-color:#ef4444;background:var(--red-bg)}.seg__btn--sev2{border-color:#f59e0b;background:var(--amber-bg)}.stars{display:flex;align-items:center;gap:6px}.star{font-size:38px;background:none;border:0;cursor:pointer;color:#cbd5e1;padding:0 2px}.star--on{color:#f59e0b}.pin-step{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.pin-step .pick-grid{width:100%}.pinpad{display:flex;flex-direction:column;align-items:center;gap:16px}.pinpad__dots{display:flex;gap:14px}.pinpad__dots span{width:18px;height:18px;border-radius:50%;border:2px solid var(--navy)}.pinpad__dots span.on{background:var(--navy)}.pinpad__keys{display:grid;grid-template-columns:repeat(3,84px);gap:10px}.pinpad__key{height:72px;font-size:26px;font-weight:700;border-radius:12px;border:1px solid var(--line);background:var(--panel);cursor:pointer;color:var(--navy)}.pinpad__key:active{background:var(--blue-bg)}.pinpad__key--ok{background:var(--blue);color:#fff;font-size:20px}.pinpad__key:disabled{opacity:.4}.rft{display:flex;justify-content:space-between;align-items:center;gap:12px;border-radius:14px;padding:14px 18px}.rft--ok{background:#14532d;border:1px solid #22c55e}.rft--no{background:#78350f;border:1px solid #f59e0b}.rft .kiosk-card__label{color:#fff;margin-bottom:4px}.rft__counts{display:flex;gap:6px;flex-wrap:wrap}.kiosk-cert p{margin:8px 0 0}.kiosk-limit{color:#fcd34d}.ddl-brief{background:var(--amber-bg);border:1px solid #f59e0b;border-radius:10px;padding:12px 14px}.ddl-brief ul{margin:8px 0;padding-left:18px}.ddl-brief li{margin:4px 0}.rft-ack{background:var(--amber-bg);padding:10px;border-radius:10px}.check--danger{color:var(--red);font-weight:600}.seg--2{grid-template-columns:1fr 1fr}.seg__eg{font-size:11px!important;font-style:italic}.seg__btn:disabled{opacity:.45;cursor:not-allowed}.checklist{display:flex;flex-direction:column;gap:2px;margin-top:8px}.checklist__sys{font-weight:700;color:var(--navy);margin-top:10px;font-size:12px;text-transform:uppercase;letter-spacing:.4px}.checklist__row{display:grid;grid-template-columns:1fr 210px 150px 70px;gap:8px;align-items:center;padding:6px 8px;border-radius:6px;background:var(--panel)}.checklist__row--Defect{background:var(--red-bg)}.checklist__row--NA{opacity:.65}.checklist__text small{display:block;color:var(--ink-soft)}.checklist__res{display:flex;gap:2px}.checklist__res button{flex:1;border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 2px;font:inherit;font-size:11px;font-weight:600;cursor:pointer}.checklist__res button.on-OK{background:#22c55e;color:#fff;border-color:#22c55e}.checklist__res button.on-Defect{background:#ef4444;color:#fff;border-color:#ef4444}.checklist__res button.on-NA{background:#94a3b8;color:#fff}.checklist__res button.on-NotDone{background:#f59e0b;color:#fff}.checklist__row input{padding:5px 8px;font-size:12px}.aog{margin-top:6px;padding:8px 10px;border-radius:8px;background:var(--red-bg);color:var(--red);font-size:12px;font-weight:600}.print-only{display:none}@media print{.sidebar,.page-head__actions,.tabs,.filters,.no-print,.toasts{display:none!important}.shell{display:block}.page{padding:0}.card{box-shadow:none;break-inside:avoid}.print-only{display:block}}@media (max-width: 900px){.checklist__row,.shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:40;width:250px;transform:translate(-100%);transition:transform .2s}.shell--nav .sidebar{transform:none}.topbar-mobile{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--navy);color:#fff;font-weight:700}.topbar-mobile .icon-btn{color:#fff}.page{padding:16px}.form-grid{grid-template-columns:1fr}.field--span2{grid-column:auto}.grid-2,.kiosk__main{grid-template-columns:1fr}.kiosk__top{flex-wrap:wrap}.seg,.seg--4{grid-template-columns:1fr 1fr}}
