:root{--bg:#f4f6f9;--surface:#ffffff;--surface-2:#f8fafc;--surface-3:#f1f5f9;--sidebar-bg:#0e1724;--sidebar-border:rgba(255,255,255,0.06);--sidebar-hover:rgba(255,255,255,0.05);--sidebar-active:rgba(255,255,255,0.1);--sidebar-width:228px;--border:#e4e9f0;--border-strong:#c8d3e0;--text:#0f1923;--text-2:#4a5568;--text-3:#94a3b8;--text-inv:#ffffff;--accent:#1f5d52;--accent-hover:#185049;--accent-soft:#ecfdf5;--accent-mid:#a7f3d0;--accent-glow:rgba(31,93,82,0.15);--green:#16a34a;--green-bg:#f0fdf4;--green-border:#bbf7d0;--amber:#c47f17;--amber-bg:#fffbeb;--amber-border:#fde68a;--red:#dc2626;--red-bg:#fef2f2;--red-border:#fecaca;--blue:#2563eb;--blue-bg:#eff6ff;--blue-border:#bfdbfe;--chart-up:#10b981;--chart-down:#ef4444;--chart-grid:rgba(100,116,139,0.16);--chart-axis:rgba(100,116,139,0.22);--chart-crosshair:rgba(15,23,42,0.46);--chart-hover:rgba(15,23,42,0.04);--chart-brush:rgba(248,250,252,0.9);--tooltip-bg:rgba(255,255,255,0.96);--shadow-xs:0 1px 2px rgba(0,0,0,0.04);--shadow-sm:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 8px rgba(0,0,0,0.07),0 2px 4px rgba(0,0,0,0.04);--shadow-lg:0 10px 20px rgba(0,0,0,0.08),0 4px 8px rgba(0,0,0,0.04);--r-sm:6px;--r:10px;--r-lg:14px;--r-xl:20px}:root[data-theme=dark]{--bg:#0b1018;--surface:#101722;--surface-2:#151e2b;--surface-3:#1b2636;--sidebar-bg:#070b12;--sidebar-border:rgba(255,255,255,0.08);--sidebar-hover:rgba(255,255,255,0.07);--sidebar-active:rgba(45,212,191,0.13);--border:rgba(148,163,184,0.18);--border-strong:rgba(148,163,184,0.32);--text:#e5edf7;--text-2:#aebbd0;--text-3:#718098;--accent:#2dd4bf;--accent-hover:#5eead4;--accent-soft:rgba(45,212,191,0.1);--accent-mid:rgba(45,212,191,0.35);--accent-glow:rgba(45,212,191,0.18);--green-bg:rgba(16,185,129,0.1);--green-border:rgba(16,185,129,0.28);--amber-bg:rgba(245,158,11,0.11);--amber-border:rgba(245,158,11,0.3);--red-bg:rgba(239,68,68,0.1);--red-border:rgba(239,68,68,0.3);--blue-bg:rgba(59,130,246,0.11);--blue-border:rgba(59,130,246,0.3);--chart-grid:rgba(148,163,184,0.12);--chart-axis:rgba(148,163,184,0.2);--chart-crosshair:rgba(203,213,225,0.48);--chart-hover:rgba(148,163,184,0.08);--chart-brush:rgba(15,23,42,0.9);--tooltip-bg:rgba(15,23,42,0.96);--shadow-xs:0 1px 2px rgba(0,0,0,0.3);--shadow-sm:0 8px 24px rgba(0,0,0,0.24);--shadow-md:0 14px 34px rgba(0,0,0,0.32);--shadow-lg:0 24px 58px rgba(0,0,0,0.42)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:50;overflow-y:auto}.sidebar__brand{padding:22px 18px 16px;border-bottom:1px solid var(--sidebar-border)}.brand-logo{gap:10px}.brand-icon,.brand-logo{display:flex;align-items:center}.brand-icon{width:30px;height:30px;background:var(--accent);border-radius:8px;justify-content:center;flex-shrink:0}.brand-icon svg{width:16px;height:16px;fill:white}.brand-name{font-size:.9375rem;font-weight:700;color:#ffffff;letter-spacing:-.01em;line-height:1.2}.brand-sub{font-size:.7rem;color:rgba(255,255,255,.36);display:block;font-weight:400;margin-top:1px;letter-spacing:.01em}.sidebar__nav{padding:14px 10px;flex:1 1}.nav-section{margin-bottom:8px}.nav-section__label{padding:4px 10px 8px;font-size:.67rem;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.28);font-weight:600}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--r);color:rgba(255,255,255,.52);font-size:.875rem;font-weight:500;transition:background .12s ease,color .12s ease;margin-bottom:2px}.nav-item:hover{background:var(--sidebar-hover);color:rgba(255,255,255,.85)}.nav-item--active{background:var(--sidebar-active);color:#ffffff;box-shadow:inset 3px 0 0 #6ee7b7}.nav-item__icon{width:17px;height:17px;flex-shrink:0;opacity:.7}.nav-item--active .nav-item__icon{opacity:1}.sidebar__footer{padding:14px 18px}.sidebar__footer,.sidebar__user{border-top:1px solid var(--sidebar-border)}.sidebar__user{margin-top:12px;padding-top:12px}.sidebar__user-email{margin:0 0 6px;font-size:.72rem;color:rgba(255,255,255,.35);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar__logout-btn{background:none;border:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.45);border-radius:var(--r-sm);padding:5px 10px;font-size:.72rem;cursor:pointer;width:100%;text-align:left;transition:background .12s ease,color .12s ease}.sidebar__logout-btn:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.7)}.status-indicator{display:flex;align-items:center;gap:8px;font-size:.75rem;color:rgba(255,255,255,.35)}.status-indicator__dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 6px rgba(34,197,94,.55);flex-shrink:0}.main-content{flex:1 1;margin-left:var(--sidebar-width);min-width:0;display:flex;flex-direction:column}.page-header{background:var(--surface);border-bottom:1px solid var(--border);padding:18px 32px;position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:66px;box-shadow:0 1px 0 var(--border),0 2px 8px rgba(0,0,0,.03)}.page-header__left{display:flex;flex-direction:column;gap:2px}.page-header__eyebrow{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-weight:700}.page-header__title{font-size:1.25rem;font-weight:700;color:var(--text);margin:0;letter-spacing:-.03em;line-height:1.25}.page-header__actions{display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.page-body{padding:28px 32px;flex:1 1}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.section-head__label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:600;margin-bottom:3px}.section-head__title{font-size:.9375rem;font-weight:600;color:var(--text);margin:0}.grid{display:grid;grid-gap:16px;gap:16px}.grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid--split{grid-template-columns:1.55fr 1fr}.grid--detail{grid-template-columns:1.45fr 1fr}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card--padded{padding:20px}.card__header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.divider{border:none;border-top:1px solid var(--border);margin:20px 0}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px 22px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;transition:box-shadow .15s ease,transform .15s ease}.metric-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--border);border-radius:var(--r-lg) var(--r-lg) 0 0}.metric-card--accent{background:linear-gradient(145deg,var(--surface) 45%,#edfaf5 100%);border-color:rgba(31,93,82,.16)}.metric-card--accent:before{background:var(--accent)}.metric-card--accent .metric-card__value{color:var(--accent)}.metric-card--green{background:linear-gradient(145deg,var(--surface) 45%,#f0fdf4 100%);border-color:rgba(22,163,74,.16)}.metric-card--green:before{background:var(--green)}.metric-card--green .metric-card__value{color:var(--green)}.metric-card--amber{background:linear-gradient(145deg,var(--surface) 45%,#fffbeb 100%);border-color:rgba(196,127,23,.18)}.metric-card--amber:before{background:var(--amber)}.metric-card--amber .metric-card__value{color:var(--amber)}.metric-card--blue{background:linear-gradient(145deg,var(--surface) 45%,#eff6ff 100%);border-color:rgba(37,99,235,.15)}.metric-card--blue:before{background:var(--blue)}.metric-card--blue .metric-card__value{color:var(--blue)}.metric-card__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);font-weight:600;margin:0 0 10px}.metric-card__value{display:block;font-size:2rem;font-weight:700;color:var(--text);letter-spacing:-.04em;line-height:1;margin-bottom:10px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.metric-card__helper{font-size:.78rem;color:var(--text-3);margin:0;line-height:1.4}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:.71rem;font-weight:600;letter-spacing:.01em;border:1px solid transparent;white-space:nowrap}.pill:before{content:"";width:5px;height:5px;border-radius:50%;flex-shrink:0}.pill--success{background:var(--green-bg);color:var(--green);border-color:var(--green-border)}.pill--success:before{background:var(--green)}.pill--warning{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-border)}.pill--warning:before{background:var(--amber)}.pill--danger{background:var(--red-bg);color:var(--red);border-color:var(--red-border)}.pill--danger:before{background:var(--red)}.pill--info{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-border)}.pill--info:before{background:var(--blue)}.pill--neutral{background:var(--surface-3);color:var(--text-2);border-color:var(--border)}.pill--neutral:before{background:var(--text-3)}.table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.table-card__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);gap:16px}.table-card__header-left .section-eyebrow{font-size:.67rem;text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);font-weight:600;margin:0 0 3px}.table-card__header-left h2{font-size:.9375rem;font-weight:600;color:var(--text);margin:0}.table-card__count{font-size:.75rem;color:var(--text-3);background:var(--surface-3);border:1px solid var(--border);padding:3px 10px;border-radius:999px;font-weight:500;flex-shrink:0}.table-wrap{overflow-x:auto}.records-table{width:100%;border-collapse:collapse}.records-table th{padding:10px 16px;text-align:left;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:600;background:var(--surface-2);white-space:nowrap}.records-table td,.records-table th{border-bottom:1px solid var(--border)}.records-table td{padding:13px 16px;vertical-align:middle}.records-table__row{cursor:pointer;transition:background .12s ease}.records-table tbody tr:last-child td{border-bottom:none}.records-table tbody tr:hover td,.records-table__row:focus-visible td{background:rgba(31,93,82,.03)}.records-table__row:focus-visible{outline:none}.records-table__row:focus-visible td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.stack{display:flex;flex-direction:column;gap:3px}.records-explorer{display:grid;grid-gap:20px;gap:20px}.records-calendar-card,.records-day-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-xs)}.records-calendar-card{padding:18px 20px 20px;max-width:760px}.records-calendar-card__header,.records-day-group__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.records-day-group__header{padding:16px 20px;border-bottom:1px solid var(--border)}.records-calendar-card__header h2,.records-day-group__header h2{font-size:1rem;margin:0;color:var(--text)}.records-calendar-nav{display:flex;align-items:center;gap:10px}.records-calendar-nav__label{min-width:130px;text-align:center;font-size:.9rem;color:var(--text)}.records-calendar-summary{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:14px;font-size:.82rem;color:var(--text-2)}.records-calendar-summary__dot{width:5px;height:5px;border-radius:999px;background:var(--border-strong)}.records-calendar-summary__clear{border:none;background:transparent;padding:0;color:var(--accent);font-size:.8rem;font-weight:600;cursor:pointer}.records-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:8px;gap:8px;margin-top:18px;max-width:520px}.records-calendar-grid__weekday{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);text-align:center;font-weight:700}.records-calendar-grid__empty{aspect-ratio:1}.records-calendar-day{position:relative;width:52px;height:52px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-3);font-size:.84rem;font-weight:600;cursor:default;transition:transform .12s ease,border-color .12s ease,background .12s ease,box-shadow .12s ease,color .12s ease}.records-calendar-day--has-records{cursor:pointer;color:var(--text);background:linear-gradient(180deg,#f8fdf9,#eef8f2);border-color:rgba(31,93,82,.22);box-shadow:inset 0 0 0 1px rgba(31,93,82,.05)}.records-calendar-day--has-records:hover{transform:translateY(-1px);border-color:rgba(31,93,82,.38);box-shadow:0 8px 18px rgba(15,23,42,.08)}.records-calendar-day--active{background:var(--accent);color:#ffffff;border-color:var(--accent);box-shadow:0 10px 22px rgba(31,93,82,.22)}.records-calendar-day__badge{position:absolute;right:5px;bottom:5px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.58rem;font-weight:700;background:rgba(31,93,82,.12);color:var(--accent)}.records-calendar-day--active .records-calendar-day__badge{background:rgba(255,255,255,.18);color:#ffffff}.records-day-groups{display:grid;grid-gap:18px;gap:18px}.records-day-group .table-card{border:none;box-shadow:none;border-radius:0}.records-batch-groups{display:grid;grid-gap:16px;gap:16px;padding:16px}.records-batch-group{border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(180deg,#ffffff,#fbfdfc)}.records-batch-group__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid var(--border)}.records-batch-group__header h3{margin:0;font-size:.95rem;color:var(--text)}.records-editor-card{border-bottom:1px solid var(--border);background:rgba(248,250,252,.85)}.records-editor-card:last-child{border-bottom:none}.records-editor-card__summary{list-style:none;cursor:pointer;padding:14px 18px;font-size:.84rem;font-weight:700;color:var(--text-2);-webkit-user-select:none;-moz-user-select:none;user-select:none}.records-editor-card__summary::-webkit-details-marker{display:none}.records-editor-card[open] .records-editor-card__summary{border-bottom:1px solid var(--border);background:rgba(255,255,255,.75)}.records-editor-card .records-record-editors,.records-editor-card form{padding:16px 18px 18px}.records-record-editor,.records-record-editors{display:grid;grid-gap:14px;gap:14px}.records-record-editor{border:1px solid var(--border);border-radius:var(--r);background:#ffffff;padding:14px}.records-record-editor__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.records-record-editor__header strong{display:block;font-size:.9rem;color:var(--text)}.records-record-editor__header span{display:block;margin-top:3px;font-size:.76rem;color:var(--text-3)}.btn,.ghost-button,.primary-button{display:inline-flex;align-items:center;gap:7px;border:none;border-radius:var(--r);padding:9px 16px;font-size:.875rem;font-weight:600;cursor:pointer;transition:opacity .12s ease,transform .12s ease,box-shadow .12s ease;white-space:nowrap}.btn:disabled,.primary-button:disabled{opacity:.55;cursor:wait}.btn--primary,.primary-button{background:var(--accent);color:white;box-shadow:0 1px 4px rgba(31,93,82,.25)}.btn--primary:hover:not(:disabled),.primary-button:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 10px rgba(31,93,82,.3)}.btn--ghost,.ghost-button{background:var(--surface);color:var(--text-2);border:1px solid var(--border)}.btn--ghost:hover:not(:disabled),.ghost-button:hover:not(:disabled){background:var(--surface-3);border-color:var(--border-strong)}.btn--sm{padding:6px 12px;font-size:.8rem}.sync-control{display:flex;align-items:center;gap:10px;min-width:min(100%,520px)}.sync-control__message{margin:0;max-width:340px;font-size:.76rem;line-height:1.35;color:var(--text-3)}.sync-control__message--success{color:var(--green)}.sync-control__message--error{color:var(--red)}.text-link{color:var(--accent);font-weight:600;font-size:.875rem;transition:opacity .12s ease}.text-link:hover{opacity:.72}.toolbar{justify-content:space-between;gap:16px;flex-wrap:wrap}.search-form,.toolbar{display:flex;align-items:center}.search-form{gap:8px}.search-form input,.search-input{width:280px;border:1px solid var(--border);border-radius:var(--r);padding:9px 13px;background:var(--surface);color:var(--text);outline:none;font-size:.875rem;transition:border-color .12s ease,box-shadow .12s ease}.search-form input:focus,.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.field{display:grid;grid-gap:6px;gap:6px}.field span,.field__label{font-size:.75rem;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.05em}.field input,.field select,.field textarea{width:100%;border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;background:var(--surface);color:var(--text);outline:none;font-size:.875rem;transition:border-color .12s ease,box-shadow .12s ease}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.field-grid,.field-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.review-form{display:grid;grid-gap:14px;gap:14px}.review-form__footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.form-message{font-size:.8rem;color:var(--text-3);margin:0}.form-message--success{color:var(--green)}.form-message--danger{color:var(--red)}.info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.info-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);padding:14px}.info-card__label,.subtle-label{font-size:.67rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:600;margin:0 0 6px;display:block}.info-card strong,.info-card__value{font-size:.9375rem;font-weight:600;color:var(--text);display:block}.info-card strong{margin-top:0}.info-card p{font-size:.8rem;color:var(--text-2);margin:6px 0 0;line-height:1.5}.timeline{display:grid;grid-gap:8px;gap:8px}.timeline-item{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:var(--r);background:var(--surface-2);border:1px solid var(--border)}.timeline-item__dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong);flex-shrink:0;margin-top:5px}.timeline-item__content{flex:1 1;min-width:0}.timeline-item__title{font-size:.875rem;font-weight:600;color:var(--text);margin-bottom:5px}.timeline-item__meta{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.timeline-item__detail{font-size:.78rem;color:var(--text-2)}.image-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.image-card{border-radius:var(--r);overflow:hidden;background:var(--surface-2);border:1px solid var(--border)}.image-card img,.image-card__placeholder{width:100%;aspect-ratio:4/3;display:block}.image-card img{object-fit:cover}.image-card__placeholder{background:linear-gradient(135deg,var(--surface-3),var(--border));display:flex;align-items:center;justify-content:center;color:var(--text-3);font-size:.75rem}.image-card__meta{padding:10px 12px;display:grid;grid-gap:3px;gap:3px}.image-card__meta strong{font-size:.82rem;color:var(--text)}.image-card__meta span{font-size:.72rem;color:var(--text-3)}.bar-list{display:grid;grid-gap:14px;gap:14px}.bar-row{display:grid;grid-gap:7px;gap:7px}.bar-row__label{display:flex;justify-content:space-between;gap:8px;font-size:.82rem;color:var(--text-2)}.bar-row__label strong{color:var(--text);font-weight:600}.bar-row__track{height:8px;border-radius:999px;background:var(--surface-3);border:1px solid var(--border);overflow:hidden}.bar-row__fill{height:100%;border-radius:inherit;background:var(--accent)}.empty-state{padding:52px 24px;text-align:center;border-radius:var(--r-lg);border:1px dashed var(--border-strong);background:var(--surface)}.empty-state h3{font-size:.9375rem;font-weight:600;color:var(--text-2);margin:0 0 8px}.empty-state p{font-size:.82rem;color:var(--text-3);margin:0 auto;max-width:42ch;line-height:1.55}.local-logs{display:grid;grid-gap:18px;gap:18px}.local-logs__toolbar{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(140px,.55fr) auto auto;align-items:end;grid-gap:14px;gap:14px}.local-logs__toggle{display:inline-flex;align-items:center;gap:8px;min-height:42px;color:var(--text-2);font-size:.84rem;font-weight:600;white-space:nowrap}.local-logs__toggle input{width:16px;height:16px;accent-color:var(--accent)}.local-logs__meta{display:grid;grid-template-columns:1.35fr .65fr 1fr;grid-gap:12px;gap:12px}.local-logs__meta .info-card{min-width:0}.local-logs__meta .info-card p{word-break:break-word}.local-logs__error{border:1px solid var(--red-border);border-radius:var(--r);background:var(--red-bg);color:var(--red);padding:10px 12px;font-size:.84rem;font-weight:600}.local-logs__panel{overflow:hidden}.local-logs__terminal{margin:0;min-height:520px;max-height:calc(100vh - 360px);overflow:auto;padding:16px 18px;background:#09111c;color:#d7e7df;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem;line-height:1.55;white-space:pre-wrap;word-break:break-word;-moz-tab-size:2;tab-size:2}.eyebrow,.section-eyebrow{font-size:.67rem;text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);font-weight:600;margin:0 0 3px;display:block}.muted{color:var(--text-2)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.theme-toggle{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);color:var(--text-2);cursor:pointer;transition:background .14s ease,border-color .14s ease,transform .14s ease}.theme-toggle:hover{background:var(--surface-3);border-color:var(--border-strong);transform:translateY(-1px)}.theme-toggle svg{width:18px;height:18px;fill:currentColor}.analytics-page{display:grid;grid-gap:20px;gap:20px}.analytics-card,.analytics-toolbar,.market-hero,.sensor-command-center{border:1px solid var(--border);border-radius:var(--r-lg);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,var(--sensor-color,var(--accent)) 6%),var(--surface));box-shadow:var(--shadow-sm)}.sensor-command-center{padding:20px;margin-bottom:28px;overflow:hidden;position:relative}.analytics-card--chart:before,.market-hero:before,.sensor-command-center:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 0,color-mix(in srgb,var(--sensor-color,var(--accent)) 12%,transparent) 50%,transparent 100%),repeating-linear-gradient(90deg,transparent 0 78px,rgba(148,163,184,.05) 78px 79px);opacity:.65}.analytics-card__head,.analytics-toolbar,.market-hero,.sensor-command-center__header{display:flex;align-items:center;justify-content:space-between;gap:18px}.sensor-command-center__header{margin-bottom:18px;position:relative;z-index:1}.analytics-card__head h3,.market-hero h2,.sensor-command-center h2{margin:0;color:var(--text);letter-spacing:-.03em}.sensor-command-center h2{font-size:1.15rem}.analytics-card__head p,.market-kicker{display:inline-flex;align-items:center;gap:8px;margin:0 0 5px;color:var(--text-3);font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.live-dot{width:8px;height:8px;border-radius:999px;background:var(--text-3);display:inline-block}.live-dot--on{background:var(--chart-up);box-shadow:0 0 0 4px rgba(16,185,129,.12),0 0 18px rgba(16,185,129,.48)}.system-health-strip{display:inline-flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--surface-2) 80%,transparent);color:var(--text-3);font-size:.78rem;position:relative;z-index:1}.system-health-strip strong{color:var(--text)}.sensor-card-grid{position:relative;z-index:1}.live-sensor-card{min-height:184px;padding:16px;border:1px solid color-mix(in srgb,var(--sensor-color) 24%,var(--border));border-radius:var(--r-lg);background:radial-gradient(circle at 85% 0,color-mix(in srgb,var(--sensor-color) 17%,transparent),transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,var(--sensor-color) 6%),var(--surface));color:inherit;display:grid;grid-template-rows:auto auto 1fr auto;grid-gap:10px;gap:10px;overflow:hidden;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.live-sensor-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--sensor-color) 54%,var(--border));box-shadow:var(--shadow-md)}.live-sensor-card__footer,.live-sensor-card__top,.live-sensor-card__value{display:flex;align-items:center;justify-content:space-between;gap:10px}.live-sensor-card__label{color:var(--text-2);font-size:.76rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.live-sensor-card__value strong{color:var(--text);font-size:clamp(2rem,4vw,2.7rem);line-height:1;letter-spacing:-.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.live-sensor-card__footer,.live-sensor-card__value span{color:var(--text-3);font-size:.78rem}.sparkline{width:100%;height:46px;opacity:.95;filter:drop-shadow(0 6px 12px color-mix(in srgb,var(--sensor-color) 18%,transparent))}.activity-feed{margin-top:18px;position:relative;z-index:1;border-top:1px solid var(--border);padding-top:16px}.activity-feed__head,.activity-feed__item{display:flex;align-items:center;justify-content:space-between;gap:12px}.activity-feed__head{margin-bottom:10px;color:var(--text-3);font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.activity-feed__items{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.activity-feed__item{min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--surface-2) 88%,transparent);color:var(--text-2);font-size:.78rem}.activity-feed__item>span{width:7px;height:7px;border-radius:999px;background:var(--sensor-color);flex-shrink:0}.activity-feed__item strong{margin-right:auto;color:var(--text)}.activity-feed__item em{color:var(--text-2);font-style:normal;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.market-hero{position:relative;overflow:hidden;padding:22px}.analytics-card>*,.analytics-card__head,.market-hero__main,.market-hero__tiles{position:relative;z-index:1}.market-hero h2{font-size:clamp(1.35rem,3vw,2.1rem);max-width:840px}.market-price-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-top:16px}.market-price-row strong{font-size:clamp(2.6rem,7vw,4.8rem);line-height:.92;letter-spacing:-.06em;color:var(--sensor-color,var(--accent));font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.market-price-row span{color:var(--text-3);font-size:.95rem;font-weight:700}.market-hero__tiles{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));grid-gap:10px;gap:10px;min-width:min(440px,100%)}.analytics-tile{min-height:102px;padding:14px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--surface-2) 86%,transparent);display:grid;align-content:space-between;grid-gap:8px;gap:8px}.analytics-tile span{color:var(--text-3);font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.analytics-tile strong{color:var(--text);font-size:1.35rem;line-height:1.1;letter-spacing:-.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.analytics-tile small{color:var(--text-3)}.analytics-tile--accent strong{color:var(--sensor-color,var(--accent))}.analytics-tile--up strong,.direction--rising,.text-up{color:var(--chart-up)}.analytics-tile--down strong,.direction--falling,.text-down{color:var(--chart-down)}.direction{font-style:normal;font-weight:800;text-transform:uppercase;letter-spacing:.07em;font-size:.68rem}.direction--stable{color:var(--text-3)}.health-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);font-size:.68rem;font-style:normal;font-weight:800;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.health-chip--success{color:var(--green);border-color:var(--green-border);background:var(--green-bg)}.health-chip--warning{color:var(--amber);border-color:var(--amber-border);background:var(--amber-bg)}.health-chip--danger{color:var(--red);border-color:var(--red-border);background:var(--red-bg)}.health-chip--neutral{color:var(--text-3)}.range-switcher,.sensor-tabs{display:flex;gap:5px;padding:4px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--surface-2) 88%,transparent);overflow-x:auto}.sensor-tabs{margin-bottom:0}.sensor-tabs--inline{margin:0}.range-switcher button,.sensor-tab{border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-3);cursor:pointer;font-size:.8rem;font-weight:800;padding:7px 12px;white-space:nowrap;transition:background .14s ease,color .14s ease,border-color .14s ease}.sensor-tab{display:inline-flex;align-items:center;gap:8px}.sensor-tab__dot{width:7px;height:7px;border-radius:999px;background:var(--sensor-color)}.range-switcher button.is-active,.sensor-tab--active{color:var(--sensor-color,var(--accent));border-color:color-mix(in srgb,var(--sensor-color,var(--accent)) 32%,var(--border));background:color-mix(in srgb,var(--sensor-color,var(--accent)) 10%,var(--surface));box-shadow:var(--shadow-xs)}.range-switcher button:disabled{cursor:wait;opacity:.55}.range-switcher--compact button{padding:6px 10px;font-size:.74rem}.analytics-card{position:relative;padding:18px;overflow:hidden}.analytics-card__head{margin-bottom:14px}.analytics-card__head h3{font-size:1rem}.analytics-grid{display:grid;grid-gap:20px;gap:20px}.analytics-grid--detail{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.analytics-grid--comparison{grid-template-columns:minmax(0,1fr) minmax(360px,.78fr)}.chart-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;color:var(--text-3);font-size:.73rem;flex-wrap:wrap}.simple-trend-chart,.trading-chart{border:1px solid var(--border);border-radius:var(--r);background:linear-gradient(180deg,color-mix(in srgb,var(--surface-2) 88%,transparent),var(--surface)),radial-gradient(circle at 70% 0,color-mix(in srgb,var(--chart-accent,var(--accent)) 11%,transparent),transparent 40%);padding:8px 8px 0}.simple-trend-chart{background:linear-gradient(180deg,color-mix(in srgb,var(--surface-2) 90%,transparent),var(--surface)),radial-gradient(circle at 18% 0,color-mix(in srgb,var(--chart-accent,var(--accent)) 13%,transparent),transparent 38%)}.chart-tooltip{background:var(--tooltip-bg);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-lg);min-width:220px;padding:12px;color:var(--text);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.chart-tooltip__top{display:flex;justify-content:space-between;gap:14px;margin-bottom:10px;color:var(--text-3);font-size:.72rem;font-weight:700}.ohlc-grid,.trend-tooltip-grid{display:grid;grid-template-columns:1fr auto;grid-gap:6px 18px;gap:6px 18px;font-size:.76rem}.chart-tooltip__foot,.muted-label,.ohlc-grid span,.trend-tooltip-grid span{color:var(--text-3)}.ohlc-grid strong,.trend-tooltip-grid strong{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart-tooltip__foot{margin:10px 0 0;padding-top:8px;border-top:1px solid var(--border);font-size:.72rem}.chart-empty,.chart-skeleton{border:1px dashed var(--border-strong);border-radius:var(--r);background:color-mix(in srgb,var(--surface-2) 76%,transparent);color:var(--text-3);display:flex;align-items:center;justify-content:center;min-height:220px;font-size:.86rem}.chart-skeleton{gap:10px}.chart-skeleton span{width:18px;height:18px;border:2px solid color-mix(in srgb,var(--sensor-color,var(--accent)) 24%,transparent);border-top-color:var(--sensor-color,var(--accent));border-radius:999px;animation:spin .75s linear infinite}.analytics-toolbar{padding:12px}.toolbar-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar-controls select{border:1px solid var(--border);border-radius:var(--r);background:var(--surface);color:var(--text);padding:8px 12px;font-weight:700}.comparison-list{display:grid;grid-gap:12px;gap:12px}.comparison-row{display:grid;grid-template-columns:110px minmax(120px,1fr) auto auto;align-items:center;grid-gap:12px;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface-2)}.comparison-row__name{color:var(--text);font-weight:800}.comparison-row__track{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}.comparison-row__track span{display:block;height:100%;border-radius:inherit;background:var(--sensor-color)}.comparison-row em,.comparison-row strong{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.season-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.season-cell{min-height:82px;display:grid;align-content:space-between;padding:12px;border-radius:var(--r);background:var(--sensor-color);color:#ffffff}.season-cell span{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.season-cell strong{font-size:1.1rem;letter-spacing:-.03em}.analytics-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r)}.analytics-table{width:100%;border-collapse:collapse;min-width:760px}.analytics-table td,.analytics-table th{padding:12px 14px;border-bottom:1px solid var(--border);text-align:left}.analytics-table th{color:var(--text-3);background:var(--surface-2);font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.analytics-table td{color:var(--text-2);font-size:.82rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.analytics-table tr:last-child td{border-bottom:none}.analytics-table tbody tr:hover td{background:color-mix(in srgb,var(--sensor-color,var(--accent)) 6%,transparent)}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:1280px){.grid--4,.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.analytics-grid--comparison,.analytics-grid--detail,.market-hero{grid-template-columns:1fr}.market-hero{display:grid}.activity-feed__items{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1024px){.grid--detail,.grid--split{grid-template-columns:1fr}.grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}.local-logs__meta,.local-logs__toolbar{grid-template-columns:1fr 1fr}}@media (max-width:900px){.sidebar{display:none}.main-content{margin-left:0}.page-body{padding:20px 18px}.page-header{padding:14px 18px;align-items:flex-start;gap:14px}.sync-control{min-width:0;width:100%;align-items:flex-start;flex-direction:column}.sync-control__message{max-width:none}.local-logs__meta,.local-logs__toolbar{grid-template-columns:1fr}.local-logs__toolbar{align-items:stretch}.local-logs__terminal{min-height:420px;max-height:68vh}.analytics-card__head,.analytics-toolbar,.sensor-command-center__header{align-items:flex-start;flex-direction:column}.market-hero__tiles{grid-template-columns:1fr 1fr;min-width:0;width:100%}}@media (max-width:640px){.detail-grid,.field-grid,.field-row,.grid--2,.grid--3,.grid--4,.image-grid,.info-grid{grid-template-columns:1fr}.search-form input,.search-input{width:180px}.records-table{min-width:700px}.page-header{flex-direction:column;align-items:flex-start;gap:12px}.page-header__actions{width:100%;justify-content:flex-start}.activity-feed__items,.comparison-row,.market-hero__tiles,.season-grid{grid-template-columns:1fr}.analytics-card,.market-hero,.sensor-command-center{padding:14px}.range-switcher,.sensor-tabs{width:100%}.range-switcher button,.sensor-tab{flex:1 0 auto}}.gallery-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:22px}.gallery-filter-group{display:flex;gap:3px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:3px}.gallery-filter-btn{padding:5px 13px;border-radius:calc(var(--r) - 2px);border:none;background:transparent;cursor:pointer;font-size:.8rem;font-weight:500;color:var(--text-2);transition:background .12s ease,color .12s ease}.gallery-filter-btn:hover{background:var(--surface-3);color:var(--text)}.gallery-filter-btn--active{background:var(--accent);color:#ffffff}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));grid-gap:16px;gap:16px}.gallery-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;cursor:pointer;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease;text-decoration:none;color:inherit;display:block}.gallery-card:hover{box-shadow:var(--shadow-md);border-color:var(--accent);transform:translateY(-2px)}.gallery-card__img{object-fit:cover;display:block}.gallery-card__img,.gallery-card__placeholder{width:100%;aspect-ratio:4/3;background:var(--surface-3)}.gallery-card__placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-3)}.gallery-card__meta{padding:11px 14px 13px}.gallery-card__title{font-size:.82rem;font-weight:600;color:var(--text);margin:0 0 3px}.gallery-card__sub,.gallery-card__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-card__sub{font-size:.72rem;color:var(--text-3);display:block;margin-bottom:2px}.gallery-card__tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.gallery-card__delete{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;background:rgba(0,0,0,.5);border:none;color:#ffffff;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s ease}.gallery-card__delete:hover{background:var(--red)}div:hover>.gallery-card__delete{opacity:1}.gallery-tag{font-size:.63rem;font-weight:700;padding:2px 7px;border-radius:999px;border:1px solid transparent;text-transform:uppercase;letter-spacing:.04em}.gallery-tag--machine{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-border)}.gallery-tag--dataset{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-mid)}.gallery-tag--folder{background:#f3e8ff;color:#7c3aed;border-color:#ddd6fe;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gallery-tag--annotated{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-border)}.gallery-alert{margin-bottom:14px;padding:10px 14px;border-radius:var(--r);font-size:.82rem;font-weight:500}.gallery-alert--success{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}.gallery-alert--danger{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border)}.gallery-alert--info{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);display:flex;align-items:center;gap:8px}.gallery-alert__close{margin-left:auto;background:none;border:none;cursor:pointer;font-size:1.1rem;line-height:1;color:inherit;opacity:.6;padding:0 2px}.gallery-alert__close:hover{opacity:1}.folder-upload-progress{margin-bottom:14px;display:flex;flex-direction:column;gap:6px}.folder-upload-progress__bar{height:5px;background:var(--border);border-radius:99px;overflow:hidden}.folder-upload-progress__fill{height:100%;background:var(--accent);border-radius:99px;transition:width .2s ease}.folder-upload-progress__label{font-size:.78rem;color:var(--text-3)}.folder-confirm{margin-bottom:16px;border:1px solid var(--accent-mid);border-radius:var(--r);background:var(--accent-soft);padding:14px 16px;display:flex;flex-direction:column;gap:10px}.folder-confirm__header{display:flex;align-items:flex-start;gap:10px}.folder-confirm__title{display:flex;flex-direction:column;gap:2px;font-size:.88rem;color:var(--text)}.folder-confirm__meta{font-size:.78rem;color:var(--text-2);font-weight:400}.folder-confirm__warning{display:flex;align-items:flex-start;gap:7px;background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:calc(var(--r) - 2px);padding:8px 10px;font-size:.8rem;color:var(--amber);line-height:1.4}.folder-confirm__empty{font-size:.82rem;color:var(--text-3);margin:0}.folder-confirm__list{list-style:none;margin:0;padding:0;max-height:180px;overflow-y:auto;border:1px solid var(--border);border-radius:calc(var(--r) - 2px);background:var(--surface)}.folder-confirm__file{display:flex;align-items:center;gap:7px;padding:5px 10px;border-bottom:1px solid var(--border);font-size:.78rem;color:var(--text-2)}.folder-confirm__file:last-child{border-bottom:none}.folder-confirm__filename{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.folder-confirm__filesize{flex-shrink:0;color:var(--text-3);font-size:.72rem}.folder-confirm__more{padding:5px 10px;font-size:.75rem;color:var(--text-3);font-style:italic}.folder-confirm__actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:4px;border-top:1px solid var(--accent-mid)}.export-progress-count{margin-left:auto;font-size:.75rem;opacity:.7}@keyframes export-spin{to{transform:rotate(1turn)}}.export-spinner{display:inline-block;width:13px;height:13px;border:2px solid;border-right:2px solid transparent;border-radius:50%;animation:export-spin .7s linear infinite;flex-shrink:0}.export-btn-group{display:flex;align-items:center;gap:1px}.export-btn{border-top-right-radius:0;border-bottom-right-radius:0}.export-config-toggle{border-top-left-radius:0;border-bottom-left-radius:0;border-left:1px solid var(--border);padding-left:6px;padding-right:6px}.export-split-panel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);margin-bottom:14px;font-size:.82rem}.export-split-label{font-weight:600;color:var(--text-2);margin-right:4px}.export-split-field{display:flex;align-items:center;gap:5px;color:var(--text-2)}.export-split-input{width:52px;padding:3px 6px;border:1px solid var(--border);border-radius:calc(var(--r) - 2px);background:var(--surface);font-size:.82rem;color:var(--text);text-align:right}.export-split-hint{margin-left:auto;font-size:.76rem;color:var(--text-3)}.ann-layout{display:flex;flex-direction:column;height:100vh;max-height:100vh;overflow:hidden;background:#0f1117;color:rgba(255,255,255,.85);font-family:Inter,Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px}.ann-header{height:52px;background:#1a1d27;border-bottom:1px solid rgba(255,255,255,.08);padding:0 12px;gap:6px;z-index:10}.ann-back-btn,.ann-header{display:flex;align-items:center;flex-shrink:0}.ann-back-btn{width:34px;height:34px;justify-content:center;border-radius:8px;color:rgba(255,255,255,.5);transition:background .12s ease,color .12s ease;text-decoration:none}.ann-back-btn:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.9)}.ann-header__sep{width:1px;height:22px;background:rgba(255,255,255,.1);flex-shrink:0;margin:0 4px}.ann-tools{display:flex;gap:2px}.ann-tool-btn{width:34px;height:34px;border-radius:8px;background:transparent;border:1px solid transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.45);transition:background .12s ease,color .12s ease,border-color .12s ease;flex-shrink:0}.ann-tool-btn:hover:not(:disabled){background:rgba(255,255,255,.07);color:rgba(255,255,255,.88)}.ann-tool-btn:disabled{opacity:.3;cursor:default}.ann-tool-btn--active{background:rgba(31,93,82,.35);border-color:rgba(31,93,82,.55);color:#34d399}.ann-zoom-controls{display:flex;align-items:center;gap:2px}.ann-zoom-label{font-size:.75rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:rgba(255,255,255,.35);min-width:46px;text-align:center;padding:0 4px}.ann-header__info{display:flex;flex-direction:column;gap:1px;margin-right:8px}.ann-header__name{font-size:.8rem;font-weight:600;color:rgba(255,255,255,.75);white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}.ann-header__pair{font-size:.7rem;color:rgba(255,255,255,.35);white-space:nowrap}.ann-save-btn{height:32px;padding:0 14px;border-radius:8px;border:1px solid rgba(31,93,82,.5);background:rgba(31,93,82,.3);color:#34d399;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease;flex-shrink:0}.ann-save-btn:hover:not(:disabled){background:rgba(31,93,82,.5);border-color:rgba(31,93,82,.75)}.ann-save-btn:disabled{opacity:.55;cursor:wait}.ann-save-btn--saved{background:rgba(22,163,74,.25);border-color:rgba(22,163,74,.4);color:#4ade80}.ann-save-btn--error{background:rgba(220,38,38,.2);border-color:rgba(220,38,38,.4);color:#f87171}.ann-body{flex:1 1;display:flex;overflow:hidden}.ann-left{width:210px;background:#14172a;border-right:1px solid rgba(255,255,255,.07);overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.ann-canvas-wrap{flex:1 1;position:relative;overflow:hidden;background:#0f1117;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ann-canvas-wrap canvas{width:100%;height:100%;display:block}.ann-canvas-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:rgba(255,255,255,.4);text-align:center;padding:40px}.ann-canvas-error p{margin:0;font-size:.9rem}.ann-right{width:250px;background:#14172a;border-left:1px solid rgba(255,255,255,.07);overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.ann-panel-section{padding:14px 14px 10px;border-bottom:1px solid rgba(255,255,255,.06)}.ann-panel-label{font-size:.63rem;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.28);font-weight:700;margin:0 0 10px}.ann-panel-help{margin:0 0 10px;font-size:.73rem;line-height:1.45;color:rgba(255,255,255,.42)}.ann-class-btn{display:flex;align-items:center;gap:9px;padding:8px 10px;width:100%;border:none;background:transparent;cursor:pointer;border-radius:8px;color:rgba(255,255,255,.6);text-align:left;font-size:.875rem;font-weight:500;transition:background .12s ease;margin-bottom:2px;font-family:inherit}.ann-class-btn:hover{background:rgba(255,255,255,.06);color:rgba(255,255,255,.9)}.ann-class-btn--active{background:rgba(255,255,255,.1);color:#ffffff}.ann-class-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}.ann-class-count{font-size:.7rem;color:rgba(255,255,255,.3);background:rgba(255,255,255,.07);padding:1px 6px;border-radius:999px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ann-class-id-row{display:flex;align-items:center;gap:8px;padding:4px 0}.ann-class-form{flex-direction:column;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.06)}.ann-class-form,.ann-class-form-row{display:flex;gap:8px}.ann-class-input{width:100%;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);border-radius:8px;color:#ffffff;font-size:.8rem;padding:9px 10px;outline:none}.ann-class-input::placeholder{color:rgba(255,255,255,.28)}.ann-class-input:focus{border-color:rgba(59,130,246,.55);background:rgba(255,255,255,.06)}.ann-class-add-btn{border:none;border-radius:8px;background:rgba(59,130,246,.18);color:#dbeafe;font-size:.78rem;font-weight:600;padding:0 12px;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease}.ann-class-add-btn:hover{background:rgba(59,130,246,.28);color:#ffffff}.ann-class-error{margin:0;font-size:.72rem;color:#fca5a5}.ann-shortcut-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:.75rem;color:rgba(255,255,255,.4)}.ann-kbd{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:1px 6px;font-size:.68rem;font-family:monospace;color:rgba(255,255,255,.55);white-space:nowrap;flex-shrink:0}.ann-empty{padding:20px 14px;text-align:center}.ann-empty p{margin:0 0 6px;font-size:.78rem;color:rgba(255,255,255,.3);line-height:1.5}.ann-list-item{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid rgba(255,255,255,.04);cursor:pointer;transition:background .12s ease}.ann-list-item:hover{background:rgba(255,255,255,.04)}.ann-list-item--selected{background:rgba(255,255,255,.08)}.ann-list-item__label{font-size:.82rem;font-weight:600;color:rgba(255,255,255,.85);margin:0 0 2px}.ann-list-item__sub{font-size:.7rem;color:rgba(255,255,255,.35);margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ann-list-item__delete{margin-left:auto;width:22px;height:22px;border-radius:5px;background:transparent;border:none;cursor:pointer;color:rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-size:16px;transition:background .12s ease,color .12s ease;flex-shrink:0;line-height:1;font-family:inherit}.ann-list-item__delete:hover{background:rgba(239,68,68,.15);color:#f87171}.ann-export-btn{display:flex;align-items:center;gap:7px;width:100%;padding:8px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.04);color:rgba(255,255,255,.55);font-size:.78rem;font-weight:500;cursor:pointer;text-align:left;transition:background .12s ease,border-color .12s ease,color .12s ease;margin-bottom:6px;font-family:inherit;text-decoration:none}.ann-export-btn:hover:not(:disabled){background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.13);color:rgba(255,255,255,.85)}.ann-export-btn:disabled{opacity:.35;cursor:default}@media (max-width:900px){.ann-left{display:none}.ann-right{width:200px}}@media (max-width:640px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ann-right{display:none}}.training-layout{display:grid;grid-template-columns:1fr 340px;grid-gap:24px;gap:24px;align-items:start}@media (max-width:1100px){.training-layout{grid-template-columns:1fr}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--sidebar-bg);padding:24px}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:40px 36px;box-shadow:var(--shadow-lg)}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.brand-icon--lg{width:44px;height:44px;border-radius:12px}.login-brand__name{margin:0;font-size:1.1rem;font-weight:700;color:var(--text);line-height:1.2}.login-brand__sub{margin:0;font-size:.74rem;color:var(--text-3);line-height:1.2}.login-title{margin:0 0 6px;font-size:1.25rem;font-weight:700;color:var(--text)}.login-subtitle{margin:0 0 24px;font-size:.84rem;color:var(--text-3)}.login-error{margin-bottom:16px;padding:10px 14px;background:var(--red-bg);border:1px solid var(--red-border);border-radius:var(--r-sm);color:var(--red);font-size:.82rem}.login-form{gap:16px}.form-field,.login-form{display:flex;flex-direction:column}.form-field{gap:6px}.form-label{font-size:.8rem;font-weight:600;color:var(--text-2)}.form-input{width:100%;padding:9px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);font-size:.9rem;outline:none;transition:border-color .12s ease,box-shadow .12s ease}.form-input::placeholder{color:var(--text-3)}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.btn--full{width:100%;justify-content:center;padding:10px 16px;font-size:.9rem}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_8b3a0b{font-family:Inter,Inter Fallback;font-style:normal}