:root{--color-bg:#f6f5f1;--color-surface:#fff;--color-surface-2:#efede7;--color-border:#d9d6cc;--color-border-strong:#8c887b;--color-text:#1c1b18;--color-text-muted:#57534a;--color-text-inverse:#fff;--color-accent:#0f6b4a;--color-accent-hover:#0b5a3e;--color-accent-active:#084a33;--color-accent-soft:#e3f2ea;--color-critical:#b42318;--color-critical-strong:#912018;--color-critical-soft:#fdecea;--color-critical-border:#f1a9a1;--color-warning:#92400e;--color-warning-icon:#d97706;--color-warning-soft:#fff4d6;--color-warning-border:#f0c25a;--color-ok:#3f3d36;--color-ok-soft:#efede7;--color-success:#0f6b4a;--color-success-soft:#e3f2ea;--color-focus:#1d4ed8;--font-sans:"Inter","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;--fs-xs:.8125rem;--fs-sm:.9375rem;--fs-md:1.0625rem;--fs-lg:1.25rem;--fs-xl:1.625rem;--fs-2xl:2.25rem;--fs-display:3.5rem;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;--shadow-1:0 1px 2px rgba(28,27,24,.06),0 1px 1px rgba(28,27,24,.04);--shadow-2:0 4px 16px rgba(28,27,24,.1);--dur-fast:.12s;--dur:.2s;--ease:cubic-bezier(.2,.7,.2,1);--tap:48px;--nav-h:64px;--sidebar-w:248px}[data-theme=dark]{--color-bg:#141412;--color-surface:#1e1d1a;--color-surface-2:#2a2925;--color-border:#3a3832;--color-border-strong:#8f8b7e;--color-text:#f2f0ea;--color-text-muted:#b9b5a8;--color-text-inverse:#10100e;--color-accent:#4cc38a;--color-accent-hover:#6fd3a2;--color-accent-active:#8adfb5;--color-accent-soft:#16302a;--color-critical:#ff8a80;--color-critical-strong:#ffb4ad;--color-critical-soft:#3a1814;--color-critical-border:#7a2e27;--color-warning:#fbbf24;--color-warning-icon:#fbbf24;--color-warning-soft:#33270b;--color-warning-border:#6b4f12;--color-ok:#d6d2c6;--color-ok-soft:#2a2925;--color-success:#4cc38a;--color-success-soft:#16302a;--color-focus:#7aa2ff}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font:400 var(--fs-md)/1.5 var(--font-sans);-webkit-font-smoothing:antialiased}h1,h2,h3{line-height:1.2;margin:0;letter-spacing:-.01em}h1{font-size:var(--fs-xl);font-weight:750}h2{font-size:var(--fs-lg);font-weight:700}h3{font-size:var(--fs-md);font-weight:650}p{margin:0}a{color:var(--color-accent);text-underline-offset:3px}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px;border-radius:6px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip{position:absolute;left:8px;top:-60px;background:var(--color-text);color:var(--color-text-inverse);padding:12px 16px;border-radius:8px;z-index:100}.skip:focus{top:8px}.icon{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.muted{color:var(--color-text-muted)}.eyebrow{font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-5);border-radius:var(--r-md);border:2px solid transparent;font:650 var(--fs-md)/1 var(--font-sans);cursor:pointer;text-decoration:none;transition:background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),border-color var(--dur-fast);white-space:nowrap}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-accent);color:var(--color-text-inverse)}.btn-primary:hover{background:var(--color-accent-hover)}.btn-primary:active{background:var(--color-accent-active)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover{background:var(--color-surface-2)}.btn-ghost{background:transparent;color:var(--color-accent);padding:0 var(--s-3)}.btn-ghost:hover{background:var(--color-accent-soft)}.btn-danger{background:var(--color-critical);color:#fff}.btn-danger:hover{background:var(--color-critical-strong)}.btn-danger-outline{background:var(--color-surface);color:var(--color-critical);border-color:var(--color-critical)}.btn-danger-outline:hover{background:var(--color-critical-soft)}.btn-lg{min-height:56px;font-size:var(--fs-lg);padding:0 var(--s-6)}.btn-block{width:100%}.btn[disabled],.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.btn.is-loading{pointer-events:none;color:transparent;position:relative}.btn.is-loading:after{content:"";position:absolute;width:20px;height:20px;border:3px solid #fff;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}.btn-secondary.is-loading:after{border-color:var(--color-text);border-right-color:transparent}@keyframes spin{to{transform:rotate(360deg)}}.btn-row{display:flex;gap:var(--s-3);flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--s-5)}.field label,.legend{font-weight:650;font-size:var(--fs-sm)}.field .hint{font-size:var(--fs-sm);color:var(--color-text-muted)}.input,.select,.textarea{width:100%;min-height:var(--tap);padding:10px 14px;border:2px solid var(--color-border-strong);border-radius:var(--r-md);background:var(--color-surface);color:var(--color-text);font:inherit;transition:border-color var(--dur-fast),box-shadow var(--dur-fast)}.input:hover,.select:hover{border-color:var(--color-text-muted)}.input:focus-visible,.select:focus-visible{outline:3px solid var(--color-focus);outline-offset:1px}.input[disabled]{background:var(--color-surface-2);color:var(--color-text-muted);cursor:not-allowed}.select{appearance:none;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2357534a' stroke-width='2.5' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.field.has-error .input,.field.has-error .select{border-color:var(--color-critical);background:var(--color-critical-soft)}.error-msg{display:flex;gap:6px;align-items:flex-start;color:var(--color-critical);font-size:var(--fs-sm);font-weight:600}.error-msg .icon{width:18px;height:18px;margin-top:2px}.pw{position:relative}.pw .input{padding-right:64px}.pw button{position:absolute;right:4px;top:2px;min-width:48px;min-height:44px;border:0;background:none;color:var(--color-accent);font-weight:650;cursor:pointer;border-radius:8px}.choice-group{border:0;padding:0;margin:0 0 var(--s-5)}.choice{display:flex;gap:var(--s-3);align-items:flex-start;padding:var(--s-4);border:2px solid var(--color-border);border-radius:var(--r-md);background:var(--color-surface);margin-top:var(--s-2);cursor:pointer;min-height:var(--tap)}.choice:has(input:checked){border-color:var(--color-accent);background:var(--color-accent-soft)}.choice:has(input:focus-visible){outline:3px solid var(--color-focus);outline-offset:2px}.choice input{flex:none;width:22px;height:22px;margin:2px 0 0;accent-color:var(--color-accent)}.choice b{display:block}.choice span{color:var(--color-text-muted);font-size:var(--fs-sm)}.form-grid{display:grid;gap:0 var(--s-5)}@media(min-width:700px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .span-2{grid-column:span 2}}.alert{display:flex;gap:var(--s-3);padding:var(--s-4);border-radius:var(--r-md);border:1.5px solid;align-items:flex-start;font-size:var(--fs-sm)}.alert b{display:block;font-size:var(--fs-md)}.alert-error{background:var(--color-critical-soft);border-color:var(--color-critical-border);color:var(--color-critical-strong)}.alert-warn{background:var(--color-warning-soft);border-color:var(--color-warning-border);color:var(--color-warning)}.alert-info{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-text)}.alert-success{background:var(--color-success-soft);border-color:var(--color-success);color:var(--color-text)}.alert .icon{margin-top:2px}.badge{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:2px 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:750;letter-spacing:.02em;border:1.5px solid;white-space:nowrap}.badge .icon{width:16px;height:16px}.badge-expired{background:var(--color-critical);border-color:var(--color-critical);color:#fff;text-transform:uppercase}[data-theme=dark] .badge-expired{color:#2a0805}.badge-critical{background:var(--color-critical-soft);border-color:var(--color-critical);color:var(--color-critical-strong)}.badge-soon{background:var(--color-warning-soft);border-color:var(--color-warning-border);color:var(--color-warning)}.badge-ok{background:var(--color-ok-soft);border-color:var(--color-border);color:var(--color-ok)}.badge-info{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);padding:var(--s-5);box-shadow:var(--shadow-1)}.card-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);margin-bottom:var(--s-4);flex-wrap:wrap}.stack>*+*{margin-top:var(--s-5)}.stack-sm>*+*{margin-top:var(--s-3)}.empty{text-align:center;padding:var(--s-12) var(--s-5);background:var(--color-surface);border:2px dashed var(--color-border);border-radius:var(--r-lg)}.empty .ill{width:72px;height:72px;margin:0 auto var(--s-4);border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent);display:grid;place-items:center}.empty .ill .icon{width:34px;height:34px}.empty h3{margin-bottom:var(--s-2)}.empty p{color:var(--color-text-muted);margin-bottom:var(--s-5);max-width:40ch;margin-inline:auto}.skeleton{background:linear-gradient(90deg,var(--color-surface-2) 25%,var(--color-border) 50%,var(--color-surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite linear;border-radius:8px}@keyframes shimmer{to{background-position:-200% 0}}.sk-row{display:flex;gap:var(--s-4);padding:var(--s-4);border-bottom:1px solid var(--color-border)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.skeleton{animation:none}}.auth{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:clamp(24px,10vh,96px) var(--s-4) var(--s-4)}.auth-top{width:100%;max-width:480px;display:flex;justify-content:space-between;align-items:center;padding:var(--s-2) 0 var(--s-6)}.auth-card{width:100%;max-width:480px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);padding:var(--s-6);box-shadow:var(--shadow-2)}.auth-card h1{margin-bottom:var(--s-2)}.auth-card .lead{color:var(--color-text-muted);margin-bottom:var(--s-6)}.auth-foot{margin-top:var(--s-6);text-align:center;font-size:var(--fs-sm);color:var(--color-text-muted)}.auth-foot a{font-weight:650;display:inline-flex;align-items:center;min-height:var(--tap);padding:0 4px}@media(min-width:600px){.auth{padding-inline:var(--s-8)}.auth-card{padding:var(--s-10)}}.brand{display:inline-flex;align-items:center;min-height:44px;gap:10px;font-weight:800;font-size:var(--fs-lg);letter-spacing:-.02em;color:var(--color-text);text-decoration:none}.brand-mark{width:36px;height:36px;border-radius:10px;background:var(--color-accent);color:#fff;display:grid;place-items:center}[data-theme=dark] .brand-mark{color:#062016}.status-hero{text-align:center}.status-hero .big-icon{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;margin:0 auto var(--s-5);background:var(--color-warning-soft);color:var(--color-warning)}.status-hero .big-icon .icon{width:36px;height:36px}.steps-list{text-align:left;margin:var(--s-6) 0;padding:0;list-style:none;counter-reset:s}.steps-list li{counter-increment:s;display:flex;gap:var(--s-3);padding:var(--s-2) 0}.steps-list li:before{content:counter(s);flex:none;width:28px;height:28px;border-radius:50%;background:var(--color-surface-2);font-weight:750;display:grid;place-items:center;font-size:var(--fs-sm)}.lang{display:inline-flex;border:2px solid var(--color-border-strong);border-radius:var(--r-pill);padding:2px;background:var(--color-surface)}.lang button{min-width:48px;min-height:44px;border:0;background:none;border-radius:var(--r-pill);font:750 var(--fs-sm) var(--font-sans);color:var(--color-text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:4px}.lang button[aria-pressed=true]{background:var(--color-accent);color:var(--color-text-inverse)}.lang button:not([aria-pressed=true]):hover{background:var(--color-surface-2)}.auth-card app-alert{display:block;margin-bottom:var(--s-5)}.auth-foot-tight{margin-top:var(--s-3)}.auth-rule{border:0;border-top:1px solid var(--color-border);margin:var(--s-2) 0 0}.auth-card .btn-block+.btn-block{margin-top:var(--s-3)}.status-reason{display:block;margin-top:var(--s-1);font-weight:650}.store-skeleton{height:var(--tap)}.alert-action{margin-top:var(--s-2)}.shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-4);min-height:60px;background:color-mix(in srgb,var(--color-bg) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border)}.topbar .spacer{flex:1;min-width:0}.topbar>*{min-width:0;white-space:nowrap}.topbar .brand,.topbar .lang,.topbar .icon-btn{flex:none}.topbar .brand{min-width:var(--tap);justify-content:center}@media(max-width:399px){.topbar{gap:var(--s-2);padding-inline:var(--s-3)}.topbar .brand-text{display:none}}.store-chip{display:none;font-size:var(--fs-sm);color:var(--color-text-muted)}.store-chip b{color:var(--color-text);display:block;line-height:1.2}.icon-btn{position:relative;min-width:var(--tap);min-height:var(--tap);display:inline-grid;place-items:center;border:0;background:none;border-radius:var(--r-md);color:var(--color-text);cursor:pointer;text-decoration:none}.icon-btn:hover{background:var(--color-surface-2)}.count-dot{position:absolute;top:4px;right:2px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--color-critical);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;border:2px solid var(--color-bg)}.sidebar{display:none}.content{width:100%;padding:var(--s-5) var(--s-4) calc(var(--nav-h) + var(--s-8));max-width:1200px;margin:0 auto}.page-head{display:flex;flex-direction:column;gap:var(--s-3);margin-bottom:var(--s-6)}.page-head p{color:var(--color-text-muted)}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;height:var(--nav-h);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:var(--s-1) 2px 0;text-align:center;line-height:1.15;font-size:var(--fs-xs);font-weight:650;color:var(--color-text-muted);text-decoration:none;min-height:var(--nav-h);position:relative;min-width:0}.bottom-nav a[aria-current=page]{color:var(--color-accent)}.bottom-nav a[aria-current=page]:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:32px;height:3px;border-radius:0 0 3px 3px;background:var(--color-accent)}.bottom-nav a.nav-critical{color:var(--color-critical)}.bottom-nav a.nav-add .icon{background:var(--color-accent);color:#fff;border-radius:50%;width:36px;height:36px;padding:8px;margin-top:-14px;box-shadow:var(--shadow-2)}.bottom-nav .count-dot{top:6px;right:calc(50% - 26px);border-color:var(--color-surface)}.user-menu{display:none}@media(min-width:900px){.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);grid-template-rows:auto 1fr}.topbar{grid-column:2;padding:var(--s-2) var(--s-8)}.sidebar{display:flex;flex-direction:column;grid-column:1;grid-row:1/3;position:sticky;top:0;height:100vh;padding:var(--s-5) var(--s-4);background:var(--color-surface);border-right:1px solid var(--color-border);gap:var(--s-1)}.sidebar .brand{margin:0 var(--s-2) var(--s-6)}.sidebar a.nav{display:flex;align-items:center;gap:var(--s-3);min-height:var(--tap);padding:0 var(--s-3);border-radius:var(--r-md);color:var(--color-text);text-decoration:none;font-weight:650}.sidebar a.nav:hover{background:var(--color-surface-2)}.sidebar a.nav[aria-current=page]{background:var(--color-accent-soft);color:var(--color-accent)}.sidebar a.nav.nav-critical{color:var(--color-critical)}.sidebar a.nav .badge{margin-left:auto}.sidebar .grow{flex:1}.sidebar .nav-label{margin:var(--s-4) var(--s-3) var(--s-1)}.bottom-nav{display:none}.store-chip{display:block}.user-menu{display:flex}.content{padding:var(--s-8) var(--s-8) var(--s-16)}.page-head{flex-direction:row;justify-content:space-between;align-items:flex-end}.topbar .mobile-only{display:none}}.user-menu{flex-direction:row;align-items:center;justify-content:flex-end;gap:var(--s-2);font-size:var(--fs-sm);line-height:1.25}.user-menu b{display:block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.count-dot-accent{background:var(--color-accent);color:var(--color-text-inverse)}.link-btn{min-height:44px;padding:0 var(--s-2);border:0;background:none;color:var(--color-accent);font:650 var(--fs-sm) var(--font-sans);text-decoration:underline;text-underline-offset:3px;cursor:pointer;border-radius:var(--r-sm)}.icon-btn .icon-host,.bottom-nav .icon-host,.sidebar .icon-host{display:inline-flex}.toolbar{display:grid;gap:var(--s-3);margin-bottom:var(--s-5)}.search{position:relative}.search .icon{position:absolute;left:14px;top:14px;color:var(--color-text-muted);pointer-events:none}.search .input{padding-left:44px}@media(min-width:700px){.toolbar-stock{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar-stock .search{grid-column:1/3}}@media(min-width:1240px){.toolbar-stock{grid-template-columns:minmax(220px,1fr) 200px 200px 260px}.toolbar-stock .search{grid-column:auto}}.stack-gap{margin-bottom:var(--s-4)}.alert-actions{margin-top:var(--s-3)}.alert-actions .link-btn,.alert .link-btn{margin-left:var(--s-2)}.result-count{margin-bottom:var(--s-3)}.btn-row-center{justify-content:center}.load-more{display:flex;justify-content:center;margin-top:var(--s-5)}.sk-line{height:20px}.sk-grow{flex:2}.sk-short{flex:1}.sk-field{height:var(--tap);margin-bottom:var(--s-5)}.data tr{display:grid;grid-template-columns:1fr auto;gap:2px var(--s-3);padding:var(--s-4);border-bottom:1px solid var(--color-border);position:relative}.data td{padding:0;font-size:var(--fs-sm)}.data td.cell-name{grid-column:1;font-size:var(--fs-md);font-weight:700;overflow-wrap:anywhere}.data td.cell-status{grid-column:2;grid-row:1;justify-self:end}.data td.cell-meta{grid-column:1/3;color:var(--color-text-muted)}.data td.cell-qty{grid-column:1/3;font-weight:650;font-size:var(--fs-md)}.data td.cell-actions{grid-column:1/3;margin-top:var(--s-3)}.data td.cell-meta[data-label]:before{content:attr(data-label) ": ";font-weight:600}.row-expired{background:var(--color-critical-soft);box-shadow:inset 6px 0 0 var(--color-critical)}.row-critical{box-shadow:inset 6px 0 0 var(--color-critical)}.row-soon{box-shadow:inset 6px 0 0 var(--color-warning-icon)}.row-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.row-actions .btn{min-height:44px;padding:0 var(--s-3);font-size:var(--fs-sm);flex:1 1 auto}.th-btn{display:inline-flex;gap:4px;align-items:center;min-height:44px;padding:0;border:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.th-btn .icon{width:16px;height:16px}th[aria-sort=ascending] .th-btn,th[aria-sort=descending] .th-btn{color:var(--color-text)}.batch-wrap{container:batches/inline-size}@container batches (min-width:960px){.batch-wrap .data thead{display:table-header-group}.batch-wrap .data th{text-align:left;font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);padding:0 var(--s-3);background:var(--color-surface-2);border-bottom:1px solid var(--color-border)}.batch-wrap .data tr{display:table-row;padding:0}.batch-wrap .data tbody tr{border-bottom:1px solid var(--color-border)}.batch-wrap .data td{display:table-cell;padding:var(--s-3);vertical-align:middle}.batch-wrap .data td.cell-meta[data-label]:before{content:none}.batch-wrap .data tbody tr:hover{background:var(--color-surface-2)}.batch-wrap .data tbody tr.row-expired:hover{background:var(--color-critical-soft)}.batch-wrap .data td.cell-actions{margin:0;width:1%}.batch-wrap .data th:nth-child(6){width:1%}.batch-wrap .row-actions{flex-wrap:nowrap}.batch-wrap .row-actions .btn{flex:none;padding:0;min-width:var(--tap)}.batch-wrap .row-actions .btn .btn-label{display:none}}@container batches (min-width:1100px){.batch-wrap .data td.cell-actions{white-space:normal}.batch-wrap .row-actions{flex-wrap:wrap;width:max-content;max-width:19rem}.batch-wrap .row-actions .btn{padding:0 var(--s-3);flex:1 1 auto}.batch-wrap .row-actions .btn .btn-label{display:inline}}.stepper{display:inline-flex;align-items:center;align-self:flex-start;border:2px solid var(--color-border-strong);border-radius:var(--r-md);overflow:hidden;background:var(--color-surface)}.field.has-error .stepper{border-color:var(--color-critical);background:var(--color-critical-soft)}.stepper button{width:var(--tap);height:var(--tap);border:0;background:var(--color-surface-2);color:var(--color-text);cursor:pointer;display:grid;place-items:center}.stepper button:hover{background:var(--color-border)}.stepper button[disabled]{opacity:.4;cursor:not-allowed}.stepper-input{width:96px;height:var(--tap);border:0;background:transparent;color:var(--color-text);text-align:center;font:750 var(--fs-lg) var(--font-sans)}.stepper-input:focus-visible{outline:3px solid var(--color-focus);outline-offset:-3px}dialog.modal{width:min(480px,100vw - var(--s-8));padding:0;border:1px solid var(--color-border);border-radius:var(--r-lg);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2)}dialog.modal::backdrop{background:#1c1b1880}.modal-body{padding:var(--s-6)}.modal-body h2{margin-bottom:var(--s-2)}.modal-lead,.modal-body .alert{margin-bottom:var(--s-4)}.combo{position:relative}.combo-list{position:absolute;z-index:10;left:0;right:0;top:calc(100% + var(--s-1));margin:0;padding:var(--s-1);list-style:none;background:var(--color-surface);border:2px solid var(--color-border-strong);border-radius:var(--r-md);box-shadow:var(--shadow-2);max-height:320px;overflow:auto}.combo-list li{display:flex;flex-direction:column;min-height:var(--tap);justify-content:center;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);cursor:pointer}.combo-list li:hover,.combo-list li.active{background:var(--color-accent-soft)}.combo-list li span{font-size:var(--fs-sm)}.field.has-error .input[role=combobox]{border-color:var(--color-critical);background:var(--color-critical-soft)}.form-actions{margin-top:var(--s-2)}.input[disabled],.select[disabled]{background:var(--color-surface-2);color:var(--color-text-muted);cursor:not-allowed}.notice:focus{outline:none}.notice:not(:empty){margin-bottom:var(--s-5)}.section-title{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-3)}.section-title:focus{outline:none}.more{display:flex;align-items:center;gap:var(--s-3);margin-top:var(--s-3);flex-wrap:wrap}.list-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);overflow:hidden;list-style:none;margin:0;padding:0}.item{display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--color-border)}.item:last-child{border-bottom:0}.item .who{min-width:0}.item .who b{display:block;overflow-wrap:anywhere}.item .who>span{display:block;color:var(--color-text-muted);font-size:var(--fs-sm)}.item .who-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-top:var(--s-1)}.item .btn-row .btn{flex:1 1 auto}@media(min-width:700px){.item{flex-direction:row;align-items:center;justify-content:space-between}.item .btn-row{flex-wrap:nowrap}.item .btn-row .btn{flex:none}}.sk-row{align-items:center;justify-content:space-between}.skeleton-line{height:20px;flex:1;max-width:260px}.skeleton-btn{height:var(--tap);width:120px}.stat-skeleton{height:120px;border-radius:var(--r-lg)}.error-state .btn{margin-top:var(--s-3);display:flex}.error-state span{display:block}.stats{display:grid;gap:var(--s-4);grid-template-columns:1fr}.stat{display:flex;flex-direction:column;gap:var(--s-2);padding:var(--s-5);border-radius:var(--r-lg);border:2px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.stat .num{font-size:var(--fs-display);font-weight:800;line-height:1;letter-spacing:-.03em;color:var(--color-text)}.stat .lbl{font-weight:700;display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-md)}.stat-soon{background:var(--color-warning-soft);border-color:var(--color-warning-border)}.stat-soon .lbl{color:var(--color-warning)}@media(min-width:700px){.stats{grid-template-columns:repeat(3,1fr)}}@media(max-width:699px){.stat{flex-direction:row;align-items:center;justify-content:space-between}.stat .num{font-size:var(--fs-2xl)}}.segmented{display:flex;gap:var(--s-2);flex-wrap:wrap;margin-bottom:var(--s-3)}.segmented button{min-height:var(--tap);min-width:var(--tap);padding:0 var(--s-5);display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-pill);border:2px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font:700 var(--fs-md) var(--font-sans);cursor:pointer}.segmented button[aria-pressed=true]{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-text-inverse)}.segmented button:not([aria-pressed=true]):hover{background:var(--color-surface-2)}.table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);overflow:hidden}table.data{width:100%;border-collapse:collapse}.data thead{display:none}.data tr{display:grid;grid-template-columns:1fr auto;gap:2px var(--s-3);padding:var(--s-4);border-bottom:1px solid var(--color-border)}.data tr:last-child{border-bottom:0}.data td,.data th[scope=row]{padding:0;font-size:var(--fs-sm);text-align:left}.data .cell-name{grid-column:1;font-size:var(--fs-md);font-weight:700}.data .cell-sub{display:block;font-size:var(--fs-sm);font-weight:400;color:var(--color-text-muted)}.data .cell-status{grid-column:2;grid-row:1;justify-self:end}.data .cell-meta{grid-column:1/3;color:var(--color-text-muted);overflow-wrap:anywhere}.data .cell-actions{grid-column:1/3}.data .cell-actions:not(:empty){margin-top:var(--s-3)}@media(min-width:900px){.table-wrap:not(.batch-wrap) .data thead{display:table-header-group}.table-wrap:not(.batch-wrap) .data th[scope=col]{text-align:left;font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);padding:var(--s-3) var(--s-4);background:var(--color-surface-2);border-bottom:1px solid var(--color-border)}.table-wrap:not(.batch-wrap) .data tr{display:table-row;padding:0}.table-wrap:not(.batch-wrap) .data tbody tr{border-bottom:1px solid var(--color-border)}.table-wrap:not(.batch-wrap) .data td,.table-wrap:not(.batch-wrap) .data th[scope=row]{display:table-cell;padding:var(--s-3) var(--s-4);vertical-align:middle}.table-wrap:not(.batch-wrap) .data th.cell-name{font-size:var(--fs-sm);font-weight:400;overflow-wrap:anywhere}.table-wrap:not(.batch-wrap) .data .cell-actions{margin:0!important;white-space:nowrap}}.issued{margin-bottom:var(--s-4)}.issued:focus{outline:none}.issued .alert>div{flex:1;min-width:0}.issued-warning{display:block;margin-top:var(--s-1)}.issued-field{display:flex;margin:var(--s-3) 0 var(--s-3)}.issued-field .input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--fs-sm)}.issued .btn-row{display:flex;margin-bottom:var(--s-2)}.copy-status{display:block;min-height:1.5em;font-weight:650}.copy-ok{display:inline-flex;align-items:center;gap:var(--s-1);color:var(--color-success)}.copy-fail{color:var(--color-critical)}dialog.dialog{border:0;border-radius:var(--r-lg);padding:var(--s-6);box-shadow:var(--shadow-2);width:min(480px,100vw - 2 * var(--s-4));background:var(--color-surface);color:var(--color-text)}dialog.dialog::backdrop{background:color-mix(in srgb,var(--color-text) 55%,transparent)}.dialog h2{margin-bottom:var(--s-2);overflow-wrap:anywhere}.dialog-text{margin-bottom:var(--s-4)}.dialog-note{margin-bottom:var(--s-4);padding:var(--s-3);border-radius:var(--r-md);border:1.5px solid var(--color-warning-border);background:var(--color-warning-soft);color:var(--color-warning);font-size:var(--fs-sm);font-weight:650}.dialog .btn-row .btn{flex:1 1 auto}.textarea{min-height:96px;resize:vertical}app-approvals,app-admin,app-batch-form{display:block;margin-inline:auto}app-approvals{max-width:var(--col-approvals, 560px)}app-admin{max-width:var(--col-admin, 714px)}app-batch-form{max-width:var(--col-form, 678px)}.stat-link{text-decoration:none;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.stat-link:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}.stat .more{margin-top:auto;display:flex;align-items:center;gap:var(--s-1);font-weight:650;font-size:var(--fs-sm)}.stat-critical{background:var(--color-critical);border-color:var(--color-critical);color:var(--color-text-inverse)}.stat-critical .num,.stat-critical .lbl,.stat-critical .more{color:inherit}.stat-ok .lbl{color:var(--color-text)}.stat-ok .more{color:var(--color-text-muted)}.stat-soon .more{color:var(--color-warning)}.stat .more .icon{width:18px;height:18px}.stat-soon .num{color:var(--color-text)}@media(max-width:699px){.stat-link{flex-direction:column;align-items:stretch;justify-content:flex-start}.stat-link .num{font-size:var(--fs-display)}.stat-critical{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start}.stat-critical .num{order:2;margin-left:auto}.stat-critical .more{width:100%}}@media(prefers-reduced-motion:reduce){.stat-link{transition:none}.stat-link:hover{transform:none}}.dash-cols{margin-top:var(--s-8)}.two-col{display:grid;gap:var(--s-5);grid-template-columns:1fr;align-items:start}@media(min-width:1100px){.two-col{grid-template-columns:1fr 1fr}}.dash-cols .card-head{padding:var(--s-5) var(--s-5) 0;margin-bottom:0}.card-title{margin-bottom:var(--s-4)}.item-empty{flex-direction:column;align-items:flex-start}.day-picker{margin-bottom:var(--s-5)}.day-picker .legend{font-weight:650;margin-bottom:var(--s-2)}.empty-cta{display:flex;justify-content:center;margin-top:var(--s-4)}.note{margin-top:var(--s-3);font-size:var(--fs-sm)}.crit-banner{display:flex;gap:var(--s-4);align-items:center;padding:var(--s-5);border-radius:var(--r-lg);background:var(--color-critical);color:var(--color-text-inverse);margin-bottom:var(--s-6)}.crit-banner .icon{width:var(--s-10);height:var(--s-10);flex:none}.crit-banner b{display:block;font-size:var(--fs-xl);line-height:1.1}.group-title{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-8) 0 var(--s-3)}.group-title .count{background:var(--color-surface-2);border-radius:var(--r-pill);padding:0 var(--s-3);font-size:var(--fs-sm);font-weight:750}.import-page{max-width:1000px;margin-inline:auto}.stepper-nav{display:flex;gap:var(--s-2);list-style:none;padding:0;margin:0 0 var(--s-6);counter-reset:st}.stepper-nav li{flex:1;counter-increment:st;display:flex;flex-direction:column;gap:6px;font-size:var(--fs-sm);font-weight:650;color:var(--color-text-muted)}.stepper-nav li:before{content:"";height:6px;border-radius:3px;background:var(--color-border)}.stepper-nav li[aria-current=step]{color:var(--color-text)}.stepper-nav li[aria-current=step]:before,.stepper-nav li.done:before{background:var(--color-accent)}.stepper-nav li span:before{content:counter(st) ". "}.dropzone{border:2.5px dashed var(--color-border-strong);border-radius:var(--r-lg);background:var(--color-surface);padding:var(--s-10) var(--s-5);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}.dropzone:hover,.dropzone.dragging{border-color:var(--color-accent);background:var(--color-accent-soft)}.dropzone:has(input:focus-visible){outline:3px solid var(--color-focus);outline-offset:2px}.dropzone>app-icon .icon{width:40px;height:40px;color:var(--color-accent)}.template-note{margin-top:var(--s-3);font-size:var(--fs-sm)}.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}@media(min-width:700px){.summary-grid{grid-template-columns:repeat(3,1fr)}}.sum{padding:var(--s-4);border-radius:var(--r-md);border:1.5px solid var(--color-border);background:var(--color-surface)}.sum b{display:block;font-size:var(--fs-2xl);line-height:1.1}.sum.good{border-color:var(--color-success)}.sum.bad{border-color:var(--color-critical);background:var(--color-critical-soft)}.sum.warn{border-color:var(--color-warning-border);background:var(--color-warning-soft)}.sticky-bar{position:sticky;bottom:calc(var(--nav-h) + var(--s-2));display:flex;gap:var(--s-3);flex-wrap:wrap;padding:var(--s-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);margin-top:var(--s-5);align-items:center}.sticky-bar .grow{flex:1 1 200px}@media(min-width:900px){.sticky-bar{bottom:var(--s-4)}}.pv-table{overflow-x:auto}.pv-table table{min-width:640px;border-collapse:collapse;width:100%}.pv-table th,.pv-table td{padding:var(--s-3) var(--s-4);text-align:left;border-bottom:1px solid var(--color-border);font-size:var(--fs-sm);vertical-align:top}.pv-table th{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);background:var(--color-surface-2)}.pv-table tr.row-invalid{background:var(--color-critical-soft)}.pv-table td.reason{color:var(--color-critical-strong);font-weight:600}.pv-table .reason-warn{display:block;color:var(--color-warning);font-weight:600}.pv-table .reason-list{margin:0;padding:0;list-style:none}.file-warnings,.skipped-list{margin:var(--s-2) 0 0;padding-left:var(--s-5)}.import-saving{padding:var(--s-5)}.gap-top{margin-top:var(--s-5)}.pv-table .pv-reason-inline{display:none}@media(max-width:699px){.pv-table{overflow:visible}.pv-table table{min-width:0}.pv-table thead{display:none}.pv-table tr{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s-1) var(--s-3);padding:var(--s-4);border-bottom:1px solid var(--color-border)}.pv-table th,.pv-table td{padding:0;border:0}.pv-table td:nth-child(1){grid-column:1;grid-row:1;color:var(--color-text-muted)}.pv-table td:nth-child(3){grid-column:2;grid-row:1;font-weight:700;font-size:var(--fs-md);overflow-wrap:anywhere}.pv-table td:nth-child(2){grid-column:3;grid-row:1;justify-self:end}.pv-table td:nth-child(4){grid-column:1/3;grid-row:2;font-weight:650}.pv-table td:nth-child(5){grid-column:3;grid-row:2;justify-self:end;color:var(--color-text-muted)}.pv-table td:nth-child(6){grid-column:1/4;grid-row:3}.pv-table td:nth-child(6):empty{display:none}}
