:root{--sidebar-bg:oklch(.21 .035 265);--sidebar-text:oklch(.68 .02 265);--sidebar-text-active:oklch(.97 .005 265);--sidebar-active:oklch(.29 .045 265);--sidebar-section:oklch(.52 .025 265);--bg:oklch(.975 .004 250);--card:#ffffff;--border:oklch(.92 .008 250);--text:oklch(.25 .02 260);--text-dim:oklch(.5 .015 260);--text-faint:oklch(.65 .012 260);--accent:oklch(.55 .19 262);--accent-hover:oklch(.5 .19 262);--accent-soft:oklch(.955 .02 262);--green:oklch(.55 .15 155);--green-soft:oklch(.96 .03 155);--red:oklch(.55 .19 25);--red-soft:oklch(.96 .02 25);--amber:oklch(.6 .14 70);--amber-soft:oklch(.97 .03 85);--radius:12px;--shadow:0 1px 2px oklch(.2 .02 260 / .04), 0 1px 3px oklch(.2 .02 260 / .06);--shadow-lg:0 4px 16px oklch(.2 .02 260 / .08)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Instrument Sans,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;letter-spacing:.005em}a{color:var(--accent)}a:hover{color:var(--accent-hover)}#app{display:flex;min-height:100vh}.sidebar{width:256px;min-width:256px;background:var(--sidebar-bg);display:flex;flex-direction:column;transition:width .2s ease,min-width .2s ease}.sidebar.collapsed{width:64px;min-width:64px}.sidebar.collapsed .brand{padding:22px 0;justify-content:center}.sidebar.collapsed .brand .name,.sidebar.collapsed .nav-section,.sidebar.collapsed .nav-item span,.sidebar.collapsed .sidebar-user .who,.sidebar.collapsed .sidebar-user .logout{display:none}.sidebar.collapsed .nav{padding:12px 8px}.sidebar.collapsed .nav-item{justify-content:center;padding:9.5px 0}.sidebar.collapsed .sidebar-user{justify-content:center;padding:14px 0}.sidebar.collapsed .rail-toggle{justify-content:center;padding:9.5px 0}.sidebar.collapsed .rail-toggle span{display:none}.sidebar.collapsed .rail-toggle svg{transform:rotate(180deg)}.rail-toggle{display:flex;align-items:center;gap:11px;margin:4px 12px 10px;padding:9px 12px;border-radius:9px;color:var(--sidebar-text);background:#ffffff0a;border:1px solid oklch(1 0 0 / .07);cursor:pointer;font-family:inherit;font-size:12px;font-weight:600;letter-spacing:.02em;transition:background .12s,color .12s}.rail-toggle:hover{color:var(--sidebar-text-active);background:#ffffff17}.rail-toggle svg{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease}.content{flex:1;min-width:0;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:22px;border-bottom:1px solid oklch(1 0 0 / .07)}.brand .logo{width:30px;height:30px;border-radius:8px;background:var(--accent);display:flex;align-items:center;justify-content:center;flex:none}.brand .logo svg{width:17px;height:17px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.brand .name{color:#fff;font-weight:700;font-size:16.5px;letter-spacing:.02em}.brand .name span{color:#73a3fc}.nav{flex:1;padding:12px;overflow-y:auto}.nav-section{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sidebar-section);padding:18px 12px 7px}.nav-item{display:flex;align-items:center;gap:11px;padding:9.5px 12px;border-radius:9px;color:var(--sidebar-text);cursor:pointer;font-weight:500;margin:1px 0;user-select:none;transition:background .12s,color .12s}.nav-item svg{width:17px;height:17px;flex:none;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.nav-item:hover{color:var(--sidebar-text-active);background:#ffffff0d}.nav-item.active{color:var(--sidebar-text-active);background:var(--sidebar-active);font-weight:600}.sidebar-user{padding:14px 16px;border-top:1px solid oklch(1 0 0 / .07);display:flex;align-items:center;gap:10px}.sidebar-user .avatar{width:33px;height:33px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}.sidebar-user .who{flex:1;min-width:0}.sidebar-user .who .n{color:#e9ebef;font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user .who .r{color:var(--sidebar-text);font-size:11px}.sidebar-user .logout{color:var(--sidebar-text);cursor:pointer;font-size:12px;background:none;border:none;padding:4px;font-family:inherit}.sidebar-user .logout:hover{color:#fff}.topbar{background:#ffffffd1;backdrop-filter:blur(10px);border-bottom:1px solid var(--border);padding:0 28px;height:60px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:5}.topbar h1{font-size:16.5px;font-weight:700;letter-spacing:-.01em}.burger{background:none;border:none;cursor:pointer;color:var(--text-dim);padding:6px;border-radius:8px;display:flex}.burger:hover{background:var(--bg)}.burger svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}.main{padding:26px 28px;max-width:1280px;width:100%}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:22px}.stat{display:flex;align-items:center;justify-content:space-between;padding:18px 20px}.stat.accent{border-left:3px solid var(--accent)}.stat .lbl{display:flex;align-items:center;gap:9px;color:var(--text-dim);font-weight:500}.stat .lbl svg{width:16px;height:16px;stroke:var(--text-faint);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.stat .val{font-size:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.section-title{font-size:15px;font-weight:700;margin:26px 0 12px;letter-spacing:-.01em}h3.card-h{font-size:13.5px;font-weight:700;padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:9px;letter-spacing:-.005em}h3.card-h svg{width:16px;height:16px;flex:none;stroke:var(--text-dim);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);background:var(--card);color:var(--text);padding:8.5px 16px;border-radius:9px;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s,box-shadow .12s}.btn:hover{background:var(--bg);border-color:#ccd2d7}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px #2d69de4d}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.danger{color:var(--red);border-color:#f7cbc7}.btn.danger:hover{background:var(--red-soft)}.btn.sm{padding:5px 11px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}input[type=text],input[type=number],input[type=date],input[type=email],input[type=password],input[type=search],input[type=tel],select,textarea{border:1px solid var(--border);border-radius:9px;padding:9.5px 13px;font-size:13.5px;font-family:inherit;color:var(--text);background:#fff;width:100%;transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}label.fld{display:block;font-size:12px;font-weight:600;color:var(--text-dim);margin-bottom:6px}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:600;letter-spacing:.01em}.pill:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.pill.in{background:var(--green-soft);color:var(--green)}.pill.out{background:var(--accent-soft);color:var(--accent)}.pill.overdue{background:var(--red-soft);color:var(--red)}.pill.gray{background:#eceff2;color:var(--text-dim)}.pill.issue{background:var(--amber-soft);color:var(--amber)}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;padding:11px 16px;color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--border);white-space:nowrap;font-weight:600}td{padding:11px 16px;border-bottom:1px solid var(--border);vertical-align:top}tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover td{background:#f9fafc}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.grid2>*,.grid3>*{min-width:0}@media (max-width:900px){.grid2{grid-template-columns:1fr}}.scan-input-wrap{padding:24px 22px}.scan-input{font-size:17px!important;padding:15px 18px!important;border-width:1.5px!important;border-radius:11px!important}.slots{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:0 22px 22px}.slot{border:1.5px dashed var(--border);border-radius:var(--radius);padding:18px;text-align:center;color:var(--text-faint);transition:border-color .15s,background .15s}.slot.filled{border-style:solid;border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.slot .t{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;margin-bottom:7px;color:var(--text-faint)}.slot .v{font-weight:700;font-size:15px;letter-spacing:-.01em}.slot .s{font-size:12px;color:var(--text-dim)}.lookup-hits{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.lookup-hits .btn{gap:6px}.dep-count{font-size:12px;font-weight:600;color:var(--text-dim);font-variant-numeric:tabular-nums}.chk-item{display:flex;align-items:center;gap:13px;padding:12px 22px;border-bottom:1px solid var(--border);cursor:pointer;user-select:none;transition:background .1s}.chk-item:hover{background:#f9fafc}.chk-item input{width:18px;height:18px;accent-color:var(--accent)}.chk-item.unchecked{background:var(--red-soft)}.feed-item{display:flex;align-items:center;gap:13px;padding:12px 22px;border-bottom:1px solid var(--border)}.feed-item:last-child{border-bottom:none}.feed-ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:none}.feed-ic svg{width:16px;height:16px;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.feed-ic.checkout{background:var(--accent-soft)}.feed-ic.checkout svg{stroke:var(--accent)}.feed-ic.checkin{background:var(--green-soft)}.feed-ic.checkin svg{stroke:var(--green)}.basket-card{padding:15px 17px;display:flex;flex-direction:column;gap:8px}.basket-card .bc{font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:8px}.basket-card .meta{font-size:12px;color:var(--text-dim)}.login-wrap{flex:1;min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--sidebar-bg)}.login-box{width:390px;background:var(--card);border-radius:16px;padding:36px;box-shadow:0 20px 60px #0006}.login-box .brandline{display:flex;align-items:center;gap:11px;margin-bottom:8px;font-size:21px;font-weight:700;letter-spacing:-.01em}.login-box .brandline .logo{width:34px;height:34px;border-radius:9px;background:var(--accent);display:flex;align-items:center;justify-content:center}.login-box .brandline .logo svg{width:19px;height:19px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.login-box .brandline span{color:var(--accent)}.login-sub{color:var(--text-dim);font-size:13px;margin-bottom:24px}.stub-note{margin-top:18px;font-size:11.5px;color:var(--text-faint);background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:11px 13px;line-height:1.55}#toasts{position:fixed;bottom:22px;right:22px;z-index:50;display:flex;flex-direction:column;gap:8px}.toast{background:#1c222b;color:#fff;padding:12px 18px;border-radius:11px;font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);animation:pop .18s ease;max-width:360px}.toast.err{background:var(--red)}.toast.ok{background:var(--green)}@keyframes pop{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.empty{padding:36px 20px;text-align:center;color:var(--text-faint)}.muted{color:var(--text-dim)}.mono{font-family:JetBrains Mono,Consolas,monospace;font-size:.93em}.mt{margin-top:14px}.mb{margin-bottom:14px}.flex{display:flex;align-items:center;gap:10px}.filter-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr auto;gap:10px;align-items:end}.form-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:520px}td{overflow-wrap:break-word}#backdrop{display:none}@media (max-width:820px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;transition:transform .22s ease;margin-left:0!important;transform:translate(0);box-shadow:0 0 40px #0000004d}.sidebar.collapsed{transform:translate(-100%);box-shadow:none;width:256px;min-width:256px}.sidebar.collapsed .brand{padding:22px;justify-content:flex-start}.sidebar.collapsed .brand .name,.sidebar.collapsed .nav-section,.sidebar.collapsed .nav-item span,.sidebar.collapsed .sidebar-user .who,.sidebar.collapsed .sidebar-user .logout,.sidebar.collapsed .rail-toggle span{display:initial}.sidebar.collapsed .nav{padding:12px}.sidebar.collapsed .nav-item{justify-content:flex-start;padding:9.5px 12px}.sidebar.collapsed .sidebar-user{justify-content:flex-start;padding:14px 16px}.sidebar.collapsed .rail-toggle{justify-content:flex-start;padding:9px 12px}.sidebar.collapsed .rail-toggle svg{transform:none}#backdrop{display:block;position:fixed;inset:0;z-index:15;background:#11161f73;opacity:1;transition:opacity .2s}#backdrop.hidden{opacity:0;pointer-events:none}.topbar{padding:0 16px}.main{padding:16px 14px}.slots{grid-template-columns:1fr;padding:0 16px 16px}.scan-input-wrap{padding:18px 16px}.filter-grid{grid-template-columns:1fr 1fr}.filter-grid>div:first-child{grid-column:1/-1}.form-row{grid-template-columns:1fr}.stat-row{grid-template-columns:1fr 1fr;gap:10px}.stat .val{font-size:22px}.grid3{grid-template-columns:1fr 1fr}.chk-item,.feed-item{padding-left:16px;padding-right:16px}.login-box{width:calc(100vw - 32px);max-width:390px;padding:26px}.history-table table{min-width:760px}}@media (max-width:480px){.grid3,.stat-row{grid-template-columns:1fr}}.users-table td{vertical-align:middle}.role-select{width:auto;min-width:150px;padding:6px 10px;font-size:12.5px;font-weight:600}.role-select:disabled{opacity:.55;cursor:not-allowed;background:var(--bg)}.user-row.inactive td{opacity:.55}.user-row .email{font-size:12px;color:var(--text-dim)}.users-toolbar{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;padding:15px 17px}@media (max-width:820px){.users-toolbar{grid-template-columns:1fr}.users-table table{min-width:640px}}.temp-pw{margin:15px 17px;border:1.5px solid var(--amber);border-left-width:4px;border-radius:var(--radius);background:var(--amber-soft);padding:16px 18px}.temp-pw .t{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13.5px;color:var(--amber);margin-bottom:8px}.temp-pw .t svg{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.temp-pw .pw{font-family:JetBrains Mono,Consolas,monospace;font-size:19px;font-weight:600;letter-spacing:.06em;background:var(--card);border:1px solid var(--border);border-radius:9px;padding:11px 14px;margin-bottom:10px;user-select:all;overflow-wrap:anywhere}.temp-pw .why{font-size:12px;color:var(--text-dim);line-height:1.55;margin-bottom:11px}.temp-pw .acts{display:flex;flex-wrap:wrap;gap:8px}.load-error{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:24px}.load-error .box{max-width:460px;width:100%;background:var(--card);border:1px solid var(--border);border-left:4px solid var(--red);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:28px}.load-error .ic{width:40px;height:40px;border-radius:11px;background:var(--red-soft);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.load-error .ic svg{width:20px;height:20px;stroke:var(--red);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.load-error h2{font-size:16px;font-weight:700;letter-spacing:-.01em;margin-bottom:8px}.load-error p{font-size:13px;color:var(--text-dim);line-height:1.6;margin-bottom:8px}.load-error .detail{font-family:JetBrains Mono,Consolas,monospace;font-size:11.5px;color:var(--text-faint);background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:10px 12px;margin-bottom:16px;overflow-wrap:anywhere}.spinner{display:inline-block;width:15px;height:15px;flex:none;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.btn .spinner{border-color:#ffffff59;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}.busy{position:relative;pointer-events:none;opacity:.65}.loading-screen{flex:1;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;color:var(--text-dim);font-size:13px}.loading-screen .spinner{width:26px;height:26px;border-width:2.5px}#install-banner{position:fixed;left:12px;right:12px;bottom:12px;z-index:60;display:flex;align-items:center;gap:12px;padding:13px 14px;background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);animation:ib-up .22s ease}#install-banner .ib-icon{width:38px;height:38px;flex:none;border-radius:10px;background:var(--accent);display:flex;align-items:center;justify-content:center}#install-banner .ib-icon svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#install-banner .ib-body{flex:1;min-width:0}#install-banner .ib-title{font-weight:700;font-size:13.5px;letter-spacing:-.005em}#install-banner .ib-sub{font-size:12px;color:var(--text-dim);margin-top:2px}#install-banner .ib-sub svg{width:13px;height:13px;vertical-align:-2px;stroke:var(--text-dim);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}#install-banner .ib-actions{display:flex;align-items:center;gap:7px;flex:none}@keyframes ib-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (max-width:420px){#install-banner{flex-wrap:wrap}#install-banner .ib-actions{width:100%;justify-content:flex-end}}
