@font-face{font-family:Work Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/WorkSans-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Work Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/WorkSans-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Work Sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/WorkSans-400-italic-latin.woff2) format("woff2")}@font-face{font-family:Work Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/WorkSans-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Work Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/WorkSans-500-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Work Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/WorkSans-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Work Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/WorkSans-600-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/Poppins-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/Poppins-600-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Poppins-700-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Poppins;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Poppins-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{color-scheme:light dark;--font-head: "Poppins", "Segoe UI", system-ui, sans-serif;--font-body: "Work Sans", "Segoe UI", system-ui, sans-serif;--brand: #e20a16;--brand-hover: #c40912;--brand-soft: #fdecec;--on-brand: #ffffff;--bg: #f4f5f7;--card: #ffffff;--card-2: #f8f9fb;--ink: #0f172a;--ink-2: #334155;--muted: #5b6676;--border: #dfe3e8;--border-strong: #c5ccd5;--success: #15803d;--success-soft: #e7f6ec;--warning: #b45309;--warning-soft: #fdf1e0;--danger: #c81e1e;--danger-soft: #fdeaea;--info: #1d4ed8;--info-soft: #e8efff;--neutral-soft: #eef1f4;--radius: 12px;--radius-sm: 8px;--radius-lg: 18px;--shadow: none;--shadow-lg: none;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--tap: 48px;--nav-h: 64px;--topbar-h: 56px;--sidebar-w: 264px;--dur-fast: .12s;--dur: .2s;--dur-slow: .32s;--ease: cubic-bezier(.2, .7, .2, 1);--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px)}@media(prefers-color-scheme:dark){:root{--brand: #ff3b45;--brand-hover: #ff5a62;--brand-soft: #3a1518;--bg: #0f1115;--card: #181b22;--card-2: #1f232c;--ink: #f1f5f9;--ink-2: #d5dbe4;--muted: #9aa5b4;--border: #2b313c;--border-strong: #3c4452;--success: #4ade80;--success-soft: #12301d;--warning: #fbbf24;--warning-soft: #3a2a0c;--danger: #f87171;--danger-soft: #3b1515;--info: #7ea6ff;--info-soft: #172647;--neutral-soft: #242a35;--shadow: none;--shadow-lg: none}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;height:100%}body{margin:0;min-height:100%;font-family:var(--font-body);font-size:16px;line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}h1,h2,h3,h4{font-family:var(--font-head);font-weight:600;line-height:1.25;margin:0;letter-spacing:-.01em}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.05rem}h4{font-size:.95rem}p{margin:0}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 55%,transparent);outline-offset:2px;border-radius:6px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{min-height:100dvh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;height:calc(var(--topbar-h) + var(--sat));padding-top:var(--sat);display:flex;align-items:center;gap:var(--space-3);padding-left:var(--space-4);padding-right:var(--space-2);background:var(--card);border-bottom:1px solid var(--border)}.topbar .logo{height:36px;width:auto}.topbar .title{font-family:var(--font-head);font-weight:600;font-size:1.05rem;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .back{margin-left:calc(var(--space-2) * -1)}.content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:var(--space-4) var(--space-4) calc(var(--nav-h) + var(--sab) + var(--space-6))}.content.narrow{max-width:760px}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--nav-h) + var(--sab));padding-bottom:var(--sab);display:grid;grid-template-columns:repeat(5,1fr);background:var(--card);border-top:1px solid var(--border)}.bottomnav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--tap);font-size:.68rem;font-weight:500;color:var(--muted);text-decoration:none;-webkit-tap-highlight-color:transparent;transition:color var(--dur-fast)}.bottomnav a svg{width:24px;height:24px}.bottomnav a.active{color:var(--brand)}.bottomnav a:active{opacity:.6}.bottomnav .scan{position:relative}.bottomnav .scan span.fab{width:56px;height:56px;border-radius:50%;background:var(--brand);color:var(--on-brand);display:grid;place-items:center;margin-top:-28px;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast)}.bottomnav .scan span.fab svg{width:28px;height:28px}.bottomnav .scan:active span.fab{transform:scale(.94)}.sidebar{display:none}@media(min-width:1024px){.shell{flex-direction:row}.sidebar{display:flex;flex-direction:column;width:var(--sidebar-w);flex-shrink:0;position:sticky;top:0;height:100dvh;background:var(--card);border-right:1px solid var(--border);padding:var(--space-5) var(--space-4)}.sidebar .brand{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-2) var(--space-5);border-bottom:1px solid var(--border);margin-bottom:var(--space-4)}.sidebar .brand img{height:48px;width:auto}.sidebar .brand small{display:block;color:var(--muted);font-size:.78rem;margin-top:2px}.sidebar .group{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:var(--space-4) var(--space-2) var(--space-1)}.sidebar a.nav{display:flex;align-items:center;gap:var(--space-3);padding:10px var(--space-3);border-radius:var(--radius-sm);color:var(--ink-2);font-weight:500;font-size:.95rem;transition:background var(--dur-fast),color var(--dur-fast);text-decoration:none}.sidebar a.nav svg{width:20px;height:20px;flex-shrink:0}.sidebar a.nav:hover{background:var(--card-2)}.sidebar a.nav.active{background:var(--brand-soft);color:var(--brand)}.sidebar .spacer{flex:1}.sidebar .user{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-2);border-top:1px solid var(--border);margin-top:var(--space-3)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{padding-left:var(--space-6);padding-right:var(--space-5)}.topbar .logo{display:none}.topbar .title{font-size:1.25rem}.content{padding:var(--space-6) var(--space-8) var(--space-10)}.bottomnav{display:none}}.avatar{width:36px;height:36px;border-radius:50%;background:var(--neutral-soft);color:var(--ink-2);display:grid;place-items:center;font-weight:600;font-size:.85rem;flex-shrink:0}.avatar.brand{background:var(--brand-soft);color:var(--brand)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:var(--space-4)}.card+.card{margin-top:var(--space-3)}.section{margin-bottom:var(--space-6)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.section-head h2{font-size:1.05rem}.muted{color:var(--muted)}.small{font-size:.85rem}.tiny{font-size:.75rem}.strong{font-weight:600}.row{display:flex;align-items:center;gap:var(--space-3)}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.col{display:flex;flex-direction:column;gap:var(--space-2)}.grid{display:grid;gap:var(--space-3)}.grid>*{min-width:0}.content{overflow-x:hidden}.grid.two{grid-template-columns:1fr}.grid.stats{grid-template-columns:repeat(2,1fr)}@media(min-width:640px){.grid.two{grid-template-columns:1fr 1fr}.grid.stats{grid-template-columns:repeat(4,1fr)}}@media(min-width:1024px){.grid.three{grid-template-columns:repeat(3,1fr)}.grid.stats{grid-template-columns:repeat(6,1fr)}}.stack>*+*{margin-top:var(--space-3)}.divider{height:1px;background:var(--border);margin:var(--space-3) 0}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-5);border-radius:var(--radius-sm);border:1px solid transparent;font-weight:600;font-size:.95rem;line-height:1.2;text-decoration:none;white-space:nowrap;-webkit-user-select:none;user-select:none;background:var(--brand);color:var(--on-brand);transition:background var(--dur-fast),border-color var(--dur-fast),opacity var(--dur-fast),transform var(--dur-fast);-webkit-tap-highlight-color:transparent}.btn svg{width:20px;height:20px;flex-shrink:0}.btn:hover{background:var(--brand-hover);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.btn.secondary{background:var(--card);color:var(--ink);border-color:var(--border-strong)}.btn.secondary:hover{background:var(--card-2)}.btn.ghost{background:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--neutral-soft)}.btn.danger{background:var(--danger);color:#fff}.btn.danger:hover{background:color-mix(in srgb,var(--danger) 85%,black)}.btn.success{background:var(--success);color:#fff}.btn.block{width:100%}.btn.sm{min-height:40px;padding:0 var(--space-3);font-size:.875rem}.btn.sm svg{width:18px;height:18px}.btn.lg{min-height:56px;font-size:1.05rem;border-radius:var(--radius)}.btn.icon{width:var(--tap);padding:0;border-radius:50%}.btn.icon.sm{width:40px}.actions{display:grid;gap:var(--space-2);grid-template-columns:1fr}@media(min-width:640px){.actions{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}.actions.compact{grid-template-columns:repeat(2,1fr)}.actions.compact .action-tile{flex-direction:column;justify-content:center;text-align:center;gap:var(--space-2);min-height:92px;padding:var(--space-3)}.actions.compact .action-tile b{font-size:.9rem;line-height:1.2}@media(min-width:640px){.actions.compact{grid-template-columns:repeat(3,1fr)}}.action-tile{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-height:64px;text-align:left;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:var(--ink);transition:background var(--dur-fast),border-color var(--dur-fast)}.action-tile:hover{border-color:var(--border-strong);background:var(--card-2)}.action-tile:active{background:var(--neutral-soft)}.action-tile .ic{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);flex-shrink:0}.action-tile .ic.neutral{background:var(--neutral-soft);color:var(--ink-2)}.action-tile .ic.success{background:var(--success-soft);color:var(--success)}.action-tile .ic.warning{background:var(--warning-soft);color:var(--warning)}.action-tile .ic.info{background:var(--info-soft);color:var(--info)}.action-tile .ic svg{width:22px;height:22px}.action-tile b{display:block;font-weight:600}.action-tile span.d{display:block;font-size:.82rem;color:var(--muted)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4)}.field label,.label{font-weight:600;font-size:.875rem;color:var(--ink-2)}.field .hint{font-size:.8rem;color:var(--muted)}.field .error{font-size:.82rem;color:var(--danger);font-weight:500}.input,.select,.textarea{width:100%;min-height:var(--tap);padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--card);color:var(--ink);transition:border-color var(--dur-fast),box-shadow var(--dur-fast);font-size:16px}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 20%,transparent)}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--danger)}.textarea{min-height:96px;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235b6676' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}.check{display:flex;align-items:center;gap:var(--space-3);min-height:var(--tap);cursor:pointer}.check input{width:22px;height:22px;accent-color:var(--brand)}.search{position:relative}.search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--muted);pointer-events:none}.search .input{padding-left:44px}.chips{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.chips::-webkit-scrollbar{display:none}.chip{flex-shrink:0;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--border-strong);background:var(--card);color:var(--ink-2);font-weight:500;font-size:.875rem;display:inline-flex;align-items:center;gap:6px;transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast)}.chip.active{background:var(--ink);color:var(--card);border-color:var(--ink)}@media(prefers-color-scheme:dark){.chip.active{background:var(--ink);color:var(--bg)}}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.6;white-space:nowrap;background:var(--neutral-soft);color:var(--ink-2)}.badge svg{width:13px;height:13px}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.brand{background:var(--brand-soft);color:var(--brand)}.badge.outline{background:transparent;border:1px solid var(--border-strong)}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-height:64px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);color:inherit;text-decoration:none;transition:background var(--dur-fast),border-color var(--dur-fast);margin-bottom:var(--space-2)}.list-item:hover{background:var(--card-2);text-decoration:none;border-color:var(--border-strong)}.list-item:active{background:var(--neutral-soft)}.list-item .thumb{width:48px;height:48px;border-radius:10px;background:var(--neutral-soft);overflow:hidden;flex-shrink:0;display:grid;place-items:center;color:var(--muted)}.list-item .thumb img{width:100%;height:100%;object-fit:cover}.list-item .thumb svg{width:22px;height:22px}.list-item .body{flex:1;min-width:0}.list-item .body b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item .body .sub{font-size:.82rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item .end{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.list-item .chev{color:var(--muted);width:20px;height:20px;flex-shrink:0}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}table.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th{text-align:left;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:10px 14px;border-bottom:1px solid var(--border);background:var(--card-2);white-space:nowrap}.table td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tr.click{cursor:pointer;transition:background var(--dur-fast)}.table tr.click:hover{background:var(--card-2)}.table td.num{text-align:right;font-variant-numeric:tabular-nums}.stat{padding:var(--space-4);background:var(--card);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:inherit;display:block;transition:border-color var(--dur-fast)}.stat:hover{border-color:var(--border-strong);text-decoration:none}.stat .v{font-family:var(--font-head);font-size:1.75rem;font-weight:700;line-height:1.1}.stat .l{font-size:.8rem;color:var(--muted);margin-top:4px}.stat.warn .v{color:var(--warning)}.stat.danger .v{color:var(--danger)}.stat.ok .v{color:var(--success)}.stat.brand .v{color:var(--brand)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:var(--space-4);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{flex-shrink:0;background:none;border:0;padding:12px 14px;min-height:var(--tap);font-weight:600;font-size:.9rem;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--dur-fast),border-color var(--dur-fast)}.tabs button.active{color:var(--brand);border-bottom-color:var(--brand)}.tabs button .n{margin-left:6px;font-size:.72rem;background:var(--neutral-soft);border-radius:999px;padding:1px 7px;color:var(--ink-2)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#080c148c;display:flex;align-items:flex-end;justify-content:center;animation:fade var(--dur) var(--ease)}.sheet{width:100%;max-height:calc(100dvh - 40px);overflow-y:auto;background:var(--card);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-3) var(--space-4) calc(var(--space-6) + var(--sab));animation:up var(--dur-slow) var(--ease)}.sheet .grip{width:40px;height:4px;border-radius:2px;background:var(--border-strong);margin:0 auto var(--space-3)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}@media(min-width:640px){.sheet-backdrop{align-items:center;padding:var(--space-6)}.sheet{max-width:560px;border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6) var(--space-6);max-height:calc(100dvh - 80px)}.sheet .grip{display:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes up{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}.toasts{position:fixed;left:0;right:0;bottom:calc(var(--nav-h) + var(--sab) + var(--space-3));z-index:60;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:0 var(--space-4);pointer-events:none}@media(min-width:1024px){.toasts{bottom:var(--space-6)}}.toast{pointer-events:auto;max-width:480px;width:100%;padding:12px 16px;border-radius:var(--radius);background:var(--ink);color:var(--card);font-size:.9rem;font-weight:500;display:flex;align-items:center;gap:var(--space-3);animation:up var(--dur) var(--ease)}@media(prefers-color-scheme:dark){.toast{background:#f1f5f9;color:#0f172a}}.toast.error{background:var(--danger);color:#fff}.toast.success{background:var(--success);color:#fff}.toast svg{width:20px;height:20px;flex-shrink:0}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);display:flex;gap:var(--space-3);align-items:flex-start;font-size:.9rem;border:1px solid transparent}.alert svg{width:20px;height:20px;flex-shrink:0;margin-top:1px}.alert.info{background:var(--info-soft);color:var(--info);border-color:color-mix(in srgb,var(--info) 25%,transparent)}.alert.warning{background:var(--warning-soft);color:var(--warning);border-color:color-mix(in srgb,var(--warning) 25%,transparent)}.alert.danger{background:var(--danger-soft);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 25%,transparent)}.alert.success{background:var(--success-soft);color:var(--success);border-color:color-mix(in srgb,var(--success) 25%,transparent)}.empty{text-align:center;padding:var(--space-8) var(--space-4);color:var(--muted)}.empty svg{width:40px;height:40px;margin:0 auto var(--space-3);opacity:.6}.empty b{display:block;color:var(--ink-2);font-weight:600;margin-bottom:4px}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--border-strong);border-top-color:var(--brand);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-8);color:var(--muted)}.skeleton{background:linear-gradient(90deg,var(--neutral-soft) 25%,var(--card-2) 50%,var(--neutral-soft) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{to{background-position:-200% 0}}.scanner{position:relative;background:#000;border-radius:var(--radius);overflow:hidden;aspect-ratio:1 / 1;max-height:70dvh}.scanner video{width:100%;height:100%;object-fit:cover}.scanner .frame{position:absolute;top:12%;right:12%;bottom:12%;left:12%;border:3px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px #00000059;pointer-events:none}.scanner .frame:after{content:"";position:absolute;left:8%;right:8%;top:50%;height:2px;background:var(--brand);opacity:.85;animation:scanline 2.2s ease-in-out infinite}@keyframes scanline{0%,to{transform:translateY(-120px)}50%{transform:translateY(120px)}}.scanner .hint{position:absolute;left:0;right:0;bottom:14px;text-align:center;color:#fff;font-size:.85rem;font-weight:500;text-shadow:0 1px 3px rgba(0,0,0,.6)}.photo-box{border:2px dashed var(--border-strong);border-radius:var(--radius);min-height:140px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4);color:var(--muted);background:var(--card-2);position:relative;overflow:hidden}.photo-box img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.photo-box.filled{border-style:solid;border-color:var(--success);min-height:220px}.photo-box .remove{position:absolute;top:8px;right:8px}.geo{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;font-size:.82rem;font-weight:500;background:var(--neutral-soft);color:var(--ink-2)}.geo svg{width:16px;height:16px}.geo.ok{background:var(--success-soft);color:var(--success)}.geo.err{background:var(--danger-soft);color:var(--danger)}.timeline{position:relative;padding-left:28px}.timeline:before{content:"";position:absolute;left:11px;top:8px;bottom:8px;width:2px;background:var(--border)}.tl-item{position:relative;padding-bottom:var(--space-4)}.tl-item .dot{position:absolute;left:-28px;top:2px;width:24px;height:24px;border-radius:50%;background:var(--card);border:2px solid var(--border-strong);display:grid;place-items:center;color:var(--ink-2)}.tl-item .dot svg{width:12px;height:12px}.tl-item .dot.brand{border-color:var(--brand);color:var(--brand)}.tl-item .dot.success{border-color:var(--success);color:var(--success)}.tl-item .dot.warning{border-color:var(--warning);color:var(--warning)}.tl-item .dot.danger{border-color:var(--danger);color:var(--danger)}.tl-item .when{font-size:.75rem;color:var(--muted)}.tl-item .what{font-weight:600}.tl-item .meta{font-size:.85rem;color:var(--ink-2)}.tl-item img{margin-top:8px;width:120px;height:90px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.cal{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--card)}.cal-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-grid .wd{font-size:.7rem;text-transform:uppercase;color:var(--muted);text-align:center;padding:6px 0;border-bottom:1px solid var(--border);font-weight:600}.cal-day{min-height:44px;padding:4px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);font-size:.8rem;position:relative}.cal-day:nth-child(7n){border-right:0}.cal-day.other{color:var(--border-strong);background:var(--card-2)}.cal-day.today .n{background:var(--brand);color:#fff;border-radius:50%;width:22px;height:22px;display:inline-grid;place-items:center}.cal-day .bar{display:block;margin-top:2px;height:6px;border-radius:3px;background:var(--info)}.cal-day .bar.mine{background:var(--brand)}.cal-legend{display:flex;gap:var(--space-4);padding:var(--space-2) var(--space-3);font-size:.78rem;color:var(--muted)}.cal-legend i{display:inline-block;width:14px;height:6px;border-radius:3px;background:var(--info);margin-right:6px;vertical-align:middle}.cal-legend i.mine{background:var(--brand)}.auth{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--space-6) var(--space-4);background:var(--bg)}.auth .box{width:100%;max-width:420px}.auth .logo{width:240px;margin:0 auto var(--space-6)}.auth .card{padding:var(--space-6)}.dot-badge{position:absolute;top:8px;right:8px;min-width:18px;height:18px;border-radius:9px;background:var(--brand);color:#fff;font-size:.68rem;font-weight:700;display:grid;place-items:center;padding:0 5px}.offlinebar{position:sticky;top:calc(var(--topbar-h) + var(--sat));z-index:29;display:flex;align-items:center;gap:10px;padding:8px 16px;font-size:.85rem;font-weight:500;color:#fff;text-decoration:none}.offlinebar:hover{text-decoration:none}.offlinebar svg{width:18px;height:18px;flex-shrink:0}.offlinebar span{flex:1}.offlinebar.offline{background:#475569}.offlinebar.pending{background:var(--info)}.offlinebar.failed{background:var(--danger)}@media(min-width:1024px){.offlinebar{padding-left:var(--space-8)}}.dl{display:grid;grid-template-columns:1fr;gap:0}.dl>div{display:flex;justify-content:space-between;gap:var(--space-3);padding:10px 0;border-bottom:1px solid var(--border);font-size:.92rem}.dl>div:last-child{border-bottom:0}.dl dt{color:var(--muted);font-weight:500;flex-shrink:0}.dl dd{margin:0;text-align:right;font-weight:500;word-break:break-word}@media(min-width:640px){.dl.two{grid-template-columns:1fr 1fr;column-gap:var(--space-8)}}.hero{display:flex;gap:var(--space-4);align-items:flex-start}.hero h1{font-size:1.15rem}.hero .img{width:80px;height:80px;border-radius:var(--radius);background:var(--neutral-soft);overflow:hidden;flex-shrink:0;display:grid;place-items:center;color:var(--muted)}.hero .img img{width:100%;height:100%;object-fit:cover}.hero .img svg{width:36px;height:36px}@media(min-width:640px){.hero .img{width:140px;height:140px}.hero h1{font-size:1.4rem}}.rec{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-5)}.rec .mic{width:88px;height:88px;border-radius:50%;border:0;background:var(--brand);color:#fff;display:grid;place-items:center;transition:transform var(--dur-fast)}.rec .mic svg{width:40px;height:40px}.rec .mic.on{animation:pulse 1.2s ease-in-out infinite;background:var(--danger)}.rec .mic:active{transform:scale(.95)}@keyframes pulse{0%,to{box-shadow:0 0 #e20a1673}50%{box-shadow:0 0 0 18px #e20a1600}}@media print{.topbar,.bottomnav,.sidebar,.no-print{display:none!important}.content{padding:0;max-width:none}body{background:#fff;color:#000}}
