:root{--bg-page: #FAFBFC;--bg-surface: #FFFFFF;--bg-surface-2: #F3F5F7;--border-default: #E4E7EB;--border-strong: #CBD2D9;--text-primary: #0E1116;--text-secondary: #4A5562;--text-tertiary: #7A8594;--text-disabled: #B0B8C1;--primary-default: #1564C0;--primary-hover: #0F4F9D;--primary-pressed: #0C417F;--primary-subtle: #E3F0FC;--primary-border: #8DBCE8;--status-high-fg: #B42318;--status-high-bg: #FEF0EE;--status-low-fg: #1A56DB;--status-low-bg: #EDF2FE;--status-warn-fg: #A15C07;--status-warn-bg: #FDF4E7;--status-norm-fg: #0A6E50;--status-norm-bg: #EAF5F0;--status-neutral-fg: #4A5562;--status-neutral-bg: #EEF1F4;--chart-line-primary: #1564C0;--chart-point-default: #1564C0;--chart-point-above: #B42318;--chart-point-below: #1A56DB;--chart-reference-band: rgba(10, 110, 80, .13);--chart-reference-border: rgba(10, 110, 80, .33);--chart-axis: #7A8594;--chart-grid: #E4E7EB;--chart-event-med: #A15C07;--chart-event-episode: #6B21A8;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.25rem;--text-h2: 1.5rem;--text-h1: 2rem;--lh-xs: 1rem;--lh-sm: 1.125rem;--lh-base: 1.25rem;--lh-md: 1.5rem;--lh-lg: 1.75rem;--lh-h2: 2rem;--lh-h1: 2.5rem;--fw-regular: 400;--fw-medium: 500;--fw-semi: 600;--fw-bold: 700;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(14, 17, 22, .06);--shadow-sm: 0 4px 8px rgba(14, 17, 22, .08);--shadow-md: 0 8px 16px rgba(14, 17, 22, .12);--shadow-lg: 0 16px 32px rgba(14, 17, 22, .16);--focus-ring: 0 0 0 2px var(--bg-surface), 0 0 0 4px var(--primary-border);--content-max-width: 1440px;--navbar-height: 56px;--touch-target-min: 44px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--lh-base);color:var(--text-primary);background-color:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh}table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;padding:0}a{color:var(--primary-default);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--primary-border);outline-offset:2px;border-radius:var(--radius-sm)}img,svg{max-width:100%;height:auto;display:block}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--fw-semi);color:var(--text-primary)}p{margin:0}.skip-link{position:absolute;left:-9999px;top:0;background:var(--primary-default);color:#fff;padding:var(--space-2) var(--space-4);z-index:10000}.skip-link:focus{left:var(--space-2);top:var(--space-2)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tabular{font-variant-numeric:tabular-nums}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-main{flex:1 1 auto;width:100%;max-width:var(--content-max-width);margin-inline:auto;padding:var(--space-6)}@media (max-width: 767px){.app-main{padding:var(--space-4)}}.page-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap}.page-title{font-size:var(--text-h2);line-height:var(--lh-h2);font-weight:var(--fw-semi)}.page-subtitle{color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--lh-sm)}.grid{display:grid;gap:var(--space-6)}.grid-12{grid-template-columns:repeat(12,1fr)}.col-span-4{grid-column:span 4}.col-span-5{grid-column:span 5}.col-span-7{grid-column:span 7}.col-span-8{grid-column:span 8}.col-span-12{grid-column:span 12}@media (max-width: 1279px){.grid-12{grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.col-span-4,.col-span-5,.col-span-7,.col-span-8,.col-span-12{grid-column:span 2}}@media (max-width: 767px){.grid-12{grid-template-columns:1fr;gap:var(--space-4)}.col-span-4,.col-span-5,.col-span-7,.col-span-8,.col-span-12{grid-column:span 1}}.navbar{position:sticky;top:0;z-index:10;background:var(--bg-surface);border-bottom:1px solid var(--border-default);height:var(--navbar-height);display:flex;align-items:center;padding-inline:var(--space-6);gap:var(--space-6)}.navbar-brand{font-weight:var(--fw-semi);font-size:var(--text-md)}.navbar-links{display:flex;gap:var(--space-6);list-style:none;margin:0;padding:0;flex:1}.navbar-link{color:var(--text-secondary);text-decoration:none;padding:var(--space-2) var(--space-1);border-bottom:2px solid transparent;line-height:calc(var(--navbar-height) - var(--space-2) * 2);min-height:var(--touch-target-min);display:inline-flex;align-items:center}.navbar-link:hover{color:var(--text-primary);text-decoration:none}.navbar-link[aria-current=page]{color:var(--text-primary);border-bottom-color:var(--primary-default);font-weight:var(--fw-medium)}.navbar-actions{display:flex;gap:var(--space-2);align-items:center}.navbar-hamburger{display:none;min-width:var(--touch-target-min);min-height:var(--touch-target-min);align-items:center;justify-content:center;border-radius:var(--radius-md)}.user-menu{position:relative}.user-menu-trigger{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);min-height:var(--touch-target-min);color:var(--text-primary)}.user-menu-trigger:hover{background:var(--bg-surface-2)}.user-menu-popup{position:absolute;right:0;top:calc(100% + 4px);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);min-width:160px;padding:var(--space-1);list-style:none;margin:0}.user-menu-popup button,.user-menu-popup a{display:block;width:100%;text-align:left;padding:var(--space-2) var(--space-3);color:var(--text-primary);border-radius:var(--radius-sm)}.user-menu-popup button:hover,.user-menu-popup a:hover{background:var(--bg-surface-2);text-decoration:none}@media (max-width: 767px){.navbar{padding-inline:var(--space-4);gap:var(--space-3)}.navbar-hamburger{display:inline-flex}.navbar-links{display:none}}.drawer-backdrop{position:fixed;inset:0;background:#0e111673;z-index:20}.drawer{position:fixed;top:0;bottom:0;left:0;width:280px;background:var(--bg-surface);box-shadow:var(--shadow-lg);z-index:21;padding:var(--space-4);transform:translate(0)}.drawer-nav-link{display:block;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--text-primary);min-height:var(--touch-target-min)}.drawer-nav-link[aria-current=page]{background:var(--primary-subtle);color:var(--primary-default);font-weight:var(--fw-medium)}.card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-6)}.card.compact{padding:var(--space-4)}.card-title{font-size:var(--text-xs);line-height:var(--lh-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);font-weight:var(--fw-semi);margin-bottom:var(--space-3)}.card-subtitle{color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--lh-sm);margin-bottom:var(--space-2)}.card-footer{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border-default);font-size:var(--text-xs);color:var(--text-secondary);display:flex;gap:var(--space-3);align-items:center;justify-content:space-between}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);min-height:var(--touch-target-min);border-radius:var(--radius-md);font-size:var(--text-base);line-height:var(--lh-base);font-weight:var(--fw-medium);border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .12s ease,border-color .12s ease,color .12s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary-default);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-primary:active:not(:disabled){background:var(--primary-pressed)}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-default)}.btn-secondary:hover:not(:disabled){background:var(--bg-surface-2)}.btn-ghost{background:transparent;color:var(--primary-default)}.btn-ghost:hover:not(:disabled){background:var(--primary-subtle)}.btn-danger{background:var(--bg-surface);color:var(--status-high-fg);border-color:var(--border-default)}.btn-danger:hover:not(:disabled){background:var(--status-high-bg);border-color:var(--status-high-fg)}.btn-sm{padding:var(--space-1) var(--space-3);min-height:32px;font-size:var(--text-sm)}.btn-dashed{border-style:dashed;border-color:var(--border-strong);background:transparent;color:var(--text-primary)}.btn-dashed:hover:not(:disabled){background:var(--bg-surface-2);border-color:var(--primary-default);color:var(--primary-default)}.form-field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.form-label{font-size:var(--text-sm);line-height:var(--lh-sm);color:var(--text-secondary);font-weight:var(--fw-medium)}.form-label .required{color:var(--status-high-fg);margin-left:2px}.form-input,.form-select,.form-textarea{font:inherit;padding:var(--space-2) var(--space-3);min-height:var(--touch-target-min);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-primary);width:100%}.form-textarea{min-height:96px;resize:vertical}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary-default)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{background:var(--bg-surface-2);color:var(--text-disabled)}.form-hint{font-size:var(--text-xs);color:var(--text-tertiary)}.form-error{font-size:var(--text-xs);color:var(--status-high-fg)}#toast-root{position:fixed;top:var(--space-4);right:var(--space-4);z-index:100;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}@media (max-width: 767px){#toast-root{top:var(--space-2);left:var(--space-2);right:var(--space-2);align-items:center}}.toast{background:var(--bg-surface);border:1px solid var(--border-default);border-left:4px solid var(--primary-default);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-sm);min-width:280px;max-width:420px;pointer-events:auto;display:flex;align-items:center;gap:var(--space-3)}.toast.success{border-left-color:var(--status-norm-fg)}.toast.error{border-left-color:var(--status-high-fg)}.toast.info{border-left-color:var(--primary-default)}.modal-backdrop{position:fixed;inset:0;background:#0e111673;z-index:40;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.modal{background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:560px;max-height:calc(100vh - var(--space-8));display:flex;flex-direction:column;overflow:hidden}.modal.modal-sm{max-width:400px}.modal.modal-lg{max-width:800px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border-default)}.modal-title{font-size:var(--text-md);font-weight:var(--fw-semi)}.modal-body{padding:var(--space-6);overflow-y:auto;flex:1 1 auto}.modal-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--border-default);display:flex;gap:var(--space-3);justify-content:flex-end}@media (max-width: 767px){.modal-backdrop{padding:0}.modal{border-radius:0;max-width:100%;height:100vh;max-height:100vh}}.data-table{width:100%;font-size:var(--text-sm);line-height:var(--lh-sm)}.data-table th{text-align:left;font-weight:var(--fw-semi);color:var(--text-secondary);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-default);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em}.data-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-default);vertical-align:middle}.data-table tbody tr[role=button]:hover,.data-table tbody tr.clickable:hover{background:var(--bg-surface-2);cursor:pointer}.marker-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);line-height:var(--lh-xs);font-weight:var(--fw-medium);white-space:nowrap}.marker-badge .dot{width:8px;height:8px;border-radius:50%;border:2px solid currentColor;box-sizing:border-box}.marker-badge.status-high{background:var(--status-high-bg);color:var(--status-high-fg)}.marker-badge.status-high .dot{background:currentColor}.marker-badge.status-low{background:var(--status-low-bg);color:var(--status-low-fg)}.marker-badge.status-low .dot{background:currentColor}.marker-badge.status-norm{background:var(--status-norm-bg);color:var(--status-norm-fg)}.marker-badge.status-norm .dot{background:transparent}.marker-badge.status-borderline{background:var(--status-warn-bg);color:var(--status-warn-fg)}.marker-badge.status-borderline .dot{background:currentColor}.marker-badge.status-unknown{background:var(--status-neutral-bg);color:var(--status-neutral-fg)}.sparkline-row{display:grid;grid-template-columns:1fr auto auto 110px 90px 20px;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-default);min-height:var(--touch-target-min);font-size:var(--text-sm);color:var(--text-primary);text-decoration:none;cursor:pointer}.sparkline-row:hover{background:var(--bg-surface-2);text-decoration:none}.sparkline-row:last-child{border-bottom:none}.sparkline-row .name{font-weight:var(--fw-medium);color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sparkline-row .value{font-variant-numeric:tabular-nums;font-weight:var(--fw-semi)}.sparkline-row .delta{font-size:var(--text-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums}.sparkline-row .spark{height:18px;width:100px}.sparkline-row .date{font-size:var(--text-xs);color:var(--text-tertiary);white-space:nowrap}.sparkline-row .chevron{color:var(--text-tertiary)}@media (max-width: 767px){.sparkline-row{grid-template-columns:1fr auto 20px;grid-template-areas:"name badge chev" "value value chev" "spark spark chev";gap:var(--space-1);padding:var(--space-3)}.sparkline-row .name{grid-area:name}.sparkline-row .value-and-delta{grid-area:value;display:flex;gap:var(--space-3)}.sparkline-row .spark{grid-area:spark;width:100%}.sparkline-row .chevron{grid-area:chev}}.trend-chart{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4)}.trend-chart .chart-area{position:relative;width:100%;height:360px}@media (max-width: 767px){.trend-chart .chart-area{height:240px}}.trend-chart .chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-3);font-size:var(--text-xs);color:var(--text-secondary)}.skeleton{background:linear-gradient(90deg,var(--bg-surface-2) 25%,#E8ECF0 50%,var(--bg-surface-2) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite;border-radius:var(--radius-sm);display:block}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.skeleton{animation:none;background:var(--bg-surface-2)}}.login-container{min-height:100vh;display:grid;place-items:center;padding:var(--space-6);background:var(--bg-page)}.login-card{width:100%;max-width:400px;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-8)}.login-title{font-size:var(--text-h2);font-weight:var(--fw-bold);margin-bottom:var(--space-2)}.login-subtitle{color:var(--text-secondary);margin-bottom:var(--space-6)}.totp-input-group{display:flex;gap:var(--space-2);justify-content:space-between;margin-bottom:var(--space-4)}.totp-digit{width:44px;height:52px;font-size:var(--text-h2);text-align:center;border:1px solid var(--border-default);border-radius:var(--radius-md);font-variant-numeric:tabular-nums}.totp-digit:focus{border-color:var(--primary-default)}.totp-digit.error{border-color:var(--status-high-fg)}.login-footer{text-align:center;margin-top:var(--space-6);color:var(--text-tertiary);font-size:var(--text-xs)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius-lg);padding:var(--space-12) var(--space-6);text-align:center;background:var(--bg-surface);min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);cursor:pointer;transition:background .12s ease,border-color .12s ease}.dropzone.dragover{background:var(--primary-subtle);border-color:var(--primary-default);border-style:solid}.dropzone-icon{font-size:var(--text-h1);color:var(--text-tertiary)}.upload-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border-default);border-radius:var(--radius-md);margin-top:var(--space-3)}.progress{flex:1;height:6px;background:var(--bg-surface-2);border-radius:var(--radius-full);overflow:hidden}.progress .bar{height:100%;background:var(--primary-default);transition:width .12s ease-out}.fab{position:fixed;right:var(--space-4);bottom:var(--space-4);width:56px;height:56px;border-radius:var(--radius-full);background:var(--primary-default);color:#fff;box-shadow:var(--shadow-md);display:none;align-items:center;justify-content:center;font-size:var(--text-h2);z-index:15}@media (max-width: 767px){.fab.owner-visible{display:flex}}.note-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4)}.note-card+.note-card{margin-top:var(--space-3)}.note-meta{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);font-size:var(--text-xs);color:var(--text-tertiary)}.note-meta .tag{padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--primary-subtle);color:var(--primary-default);font-size:var(--text-xs)}.note-body{white-space:pre-wrap;line-height:var(--lh-md)}.stat-tile{display:flex;flex-direction:column;gap:var(--space-1)}.stat-tile .stat-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary)}.stat-tile .stat-value{font-size:var(--text-lg);font-weight:var(--fw-semi)}.stat-tile .stat-sub{color:var(--text-secondary);font-size:var(--text-sm)}.breadcrumb{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.breadcrumb a{color:var(--text-secondary)}.breadcrumb .sep{margin:0 var(--space-2);color:var(--text-tertiary)}.panel-title{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.panel-title h3{font-size:var(--text-md);font-weight:var(--fw-semi)}.panel-title .count{font-size:var(--text-xs);color:var(--status-high-fg);background:var(--status-high-bg);padding:2px var(--space-2);border-radius:var(--radius-full)}.empty-state{padding:var(--space-8) var(--space-4);text-align:center;color:var(--text-secondary)}.empty-state .empty-hint{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--text-tertiary)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-2{margin-bottom:var(--space-2)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
