:root{--color-background:#f3ede2;--color-background-secondary:#eae3d7;--color-surface:#ffffff;--color-surface-muted:#faf7f1;--color-border:#d8d1c7;--color-border-strong:#c3bbae;--color-text-primary:#2b2b2b;--color-text-secondary:#706d67;--color-success:#526b55;--color-warning:#a47c3c;--color-danger:#a34e43;--color-info:#647d8b;--color-success-soft:#e7ede6;--color-warning-soft:#f1e8d7;--color-danger-soft:#f1e0dc;--color-info-soft:#e3e9ec;--color-accent:#2b2b2b;--color-accent-contrast:#ffffff;--font-sans:var(--font-inter),ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-head:var(--font-bricolage),var(--font-sans);--font-mono:var(--font-plex-mono),ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--fs-xs:11px;--fs-sm:12.5px;--fs-base:13.5px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:24px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--radius-sm:4px;--radius:6px;--radius-lg:8px;--shadow-sm:0 1px 2px rgba(43,43,43,0.05);--shadow:0 1px 3px rgba(43,43,43,0.08),0 1px 2px rgba(43,43,43,0.04);--shadow-lg:0 8px 28px rgba(43,43,43,0.14);--bg:var(--color-background);--bg-2:var(--color-background-secondary);--panel:var(--color-surface);--panel-2:var(--color-surface-muted);--border:var(--color-border);--text:var(--color-text-primary);--muted:var(--color-text-secondary);--accent:var(--color-accent);--accent-2:var(--color-info);--danger:var(--color-danger);--warn:var(--color-warning);--ok:var(--color-success);--radius-token:var(--radius)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--color-background);font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.45;min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body,h1,h2,h3,h4,html{color:var(--color-text-primary)}h1,h2,h3,h4{font-family:var(--font-head);font-weight:600;letter-spacing:-.01em}h2{font-size:var(--fs-xl);margin:0 0 var(--sp-3)}a{color:var(--color-info);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.mono,.tabular,code{font-family:var(--font-mono)}.encounter-date,.kpi .value,.tabular,table.dense td.num,table.dense th.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topnav{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:var(--sp-5);padding:0 var(--sp-6);height:52px;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topnav .brand{font-family:var(--font-head);font-weight:700;letter-spacing:-.01em;margin-right:var(--sp-2);white-space:nowrap}.topnav .brand span{color:var(--color-text-secondary);font-weight:600}.topnav nav{display:flex;gap:2px;flex:1 1}.topnav nav a{display:inline-flex;align-items:center;gap:var(--sp-2);padding:6px 12px;border-radius:var(--radius);font-weight:500;font-size:var(--fs-base)}.topnav nav a,.topnav nav a svg{color:var(--color-text-secondary)}.topnav nav a svg{opacity:.85}.topnav nav a.active svg,.topnav nav a:hover svg{color:var(--color-text-primary);opacity:1}.topnav nav a:hover{text-decoration:none}.topnav nav a.active,.topnav nav a:hover{color:var(--color-text-primary);background:var(--color-background-secondary)}.topnav nav a.active{box-shadow:inset 0 -2px 0 var(--color-text-primary)}.topnav .user{display:flex;align-items:center;gap:var(--sp-3);color:var(--color-text-secondary);white-space:nowrap}.content{padding:var(--sp-5) var(--sp-6) var(--sp-8);width:100%;max-width:1920px;margin:0 auto}.toolbar{gap:var(--sp-4);margin-bottom:var(--sp-4);flex-wrap:wrap}.breadcrumbs,.toolbar{display:flex;align-items:center}.breadcrumbs{gap:6px;font-size:var(--fs-sm);color:var(--color-text-secondary)}.breadcrumbs button{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-primary);padding:4px 10px;border-radius:var(--radius-sm);cursor:pointer}.breadcrumbs button:hover{border-color:var(--color-border-strong)}.breadcrumbs .crumb-sep{opacity:.5}.breadcrumbs .crumb.active{color:var(--color-text-primary);font-weight:600;border-color:var(--color-border-strong)}.dash-grid{display:grid;grid-template-columns:7fr 3fr;grid-gap:var(--sp-4);gap:var(--sp-4);align-items:start}@media (max-width:1100px){.dash-grid{grid-template-columns:1fr}}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.panel .panel-head{display:flex;align-items:center;justify-content:space-between;padding:10px var(--sp-4);border-bottom:1px solid var(--color-border);font-weight:600;font-size:var(--fs-base)}.panel .panel-body{padding:var(--sp-4)}.analytics-col,.grid-col{display:flex;flex-direction:column;gap:var(--sp-4)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:var(--sp-3);gap:var(--sp-3)}.kpi{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-3) var(--sp-4)}.kpi .label{color:var(--color-text-secondary);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em}.kpi .value{font-family:var(--font-mono);font-size:var(--fs-2xl);font-weight:600;margin-top:var(--sp-1);color:var(--color-text-primary)}.dense-wrap{max-height:72vh;overflow:auto;border-radius:var(--radius-lg)}table.dense{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:var(--fs-sm);background:var(--color-surface)}table.dense td,table.dense th{padding:6px 12px;border-bottom:1px solid var(--color-border);white-space:nowrap;text-align:left}table.dense thead th{position:-webkit-sticky;position:sticky;top:0;z-index:3;background:var(--color-surface-muted);color:var(--color-text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:var(--fs-xs);border-bottom:1px solid var(--color-border-strong)}table.dense td.sticky-col,table.dense th.sticky-col{position:-webkit-sticky;position:sticky;left:0;z-index:2;background:var(--color-surface);font-family:var(--font-mono);font-size:var(--fs-xs)}table.dense thead th.sticky-col{z-index:4}table.dense tbody tr:nth-child(2n) td,table.dense thead th.sticky-col{background:var(--color-surface-muted)}table.dense tbody tr:hover td{background:var(--color-background-secondary)}.btn,table.dense tbody tr.clickable{cursor:pointer}.btn{display:inline-flex;align-items:center;gap:var(--sp-2);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-primary);padding:6px 12px;border-radius:var(--radius);font-weight:500;font-size:var(--fs-base);transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--color-background-secondary);border-color:var(--color-text-secondary)}.btn:focus-visible{outline:2px solid var(--color-info);outline-offset:1px}.btn.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast);font-weight:600}.btn.primary:hover{background:#1b1b1b;border-color:#1b1b1b}.btn.danger{background:transparent;border-color:var(--color-danger);color:var(--color-danger)}.btn.danger:hover{background:var(--color-danger-soft)}.btn.ok{background:transparent;border-color:var(--color-success);color:var(--color-success)}.btn.ok:hover{background:var(--color-success-soft)}.btn:disabled{opacity:.45;cursor:not-allowed}.badge{display:inline-block;padding:1px 8px;border-radius:var(--radius-sm);font-size:var(--fs-xs);font-weight:600;border:1px solid var(--color-border-strong);color:var(--color-text-secondary);background:var(--color-surface-muted)}.badge.on{color:var(--color-success);border-color:var(--color-success);background:var(--color-success-soft)}.badge.off{color:var(--color-danger);border-color:var(--color-danger);background:var(--color-danger-soft)}.badge.perm{color:var(--color-info);border-color:var(--color-info);background:var(--color-info-soft);margin:1px 2px;font-family:var(--font-mono);font-weight:500}.field{width:100%;padding:8px 11px;border-radius:var(--radius);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-primary);font-size:var(--fs-md);font-family:inherit}.field::placeholder{color:var(--color-text-secondary);opacity:.7}.field:focus{outline:none;border-color:var(--color-info);box-shadow:0 0 0 3px var(--color-info-soft)}.select{padding:6px 10px;border-radius:var(--radius);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-primary);font-family:inherit;font-size:var(--fs-base)}.select:focus{outline:none;border-color:var(--color-info)}.muted{color:var(--color-text-secondary)}.chart-box{width:100%;height:300px}.chart-box.short{height:240px}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--sp-6);background:var(--color-background)}.auth-card{width:100%;max-width:400px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--sp-8)}.auth-card h1{margin:0 0 var(--sp-1);font-size:var(--fs-2xl)}.auth-card p.sub{margin:0 0 var(--sp-5);color:var(--color-text-secondary)}.auth-card label{display:block;margin:var(--sp-4) 0 6px;font-weight:600;font-size:var(--fs-sm)}.auth-error{color:var(--color-danger);margin-top:var(--sp-3);font-size:var(--fs-sm)}.auth-note{color:var(--color-text-secondary);margin-top:var(--sp-4);font-size:var(--fs-xs)}.center-screen{min-height:100vh;display:grid;place-items:center;text-align:center;padding:var(--sp-6);background:var(--color-background)}.spinner{width:16px;height:16px;border:2px solid var(--color-border);border-top-color:var(--color-info);border-radius:50%;display:inline-block;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(1turn)}}.datagrid{display:flex;flex-direction:column;gap:var(--sp-3)}.datagrid-toolbar{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap}.grid-search{max-width:280px;padding:6px 11px;font-size:var(--fs-base)}.datagrid-pager{display:flex;align-items:center;gap:var(--sp-2)}.col-chooser{position:absolute;right:0;top:34px;z-index:60;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--sp-2);max-height:340px;overflow:auto;min-width:220px}.col-chooser-item{display:flex;align-items:center;gap:var(--sp-2);padding:4px 6px;font-size:var(--fs-sm);white-space:nowrap}.col-chooser-item:hover{background:var(--color-background-secondary);border-radius:var(--radius-sm)}.fk-cell{color:var(--color-info);cursor:pointer;font-family:var(--font-mono)}.fk-cell:hover{text-decoration:underline}.scope-banner{background:var(--color-info-soft);border:1px solid var(--color-border);border-left:3px solid var(--color-info);border-radius:var(--radius);padding:8px 12px;margin-bottom:var(--sp-3);font-size:var(--fs-sm)}.data-index{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:var(--sp-4);gap:var(--sp-4)}.data-index-links{display:flex;flex-direction:column;gap:6px}.data-index-link{padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-primary)}.data-index-link:hover{border-color:var(--color-border-strong);background:var(--color-background-secondary);text-decoration:none}.ag-theme-pristine{--ag-background-color:var(--color-surface);--ag-foreground-color:var(--color-text-primary);--ag-header-background-color:var(--color-surface-muted);--ag-header-foreground-color:var(--color-text-secondary);--ag-border-color:var(--color-border);--ag-row-border-color:var(--color-border);--ag-odd-row-background-color:var(--color-surface-muted);--ag-row-hover-color:var(--color-background-secondary);--ag-selected-row-background-color:var(--color-info-soft);--ag-font-size:12.5px;--ag-font-family:var(--font-sans);--ag-header-column-resize-handle-color:var(--color-border-strong);--ag-input-focus-border-color:var(--color-info);--ag-header-cell-hover-background-color:var(--color-background-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.ag-theme-pristine .ag-header-cell-text{text-transform:uppercase;letter-spacing:.04em;font-size:var(--fs-xs)}.modal-overlay{position:fixed;inset:0;background:rgba(43,43,43,.4);display:grid;place-items:center;z-index:100;padding:var(--sp-6)}.modal-panel{width:75vw;max-width:1400px;max-height:86vh;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);background:var(--color-surface-muted)}.modal-title{font-family:var(--font-head);font-size:var(--fs-lg);font-weight:600}.modal-body{padding:var(--sp-5);overflow:auto}.record-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:var(--sp-3) var(--sp-6);gap:var(--sp-3) var(--sp-6)}.record-field{border-bottom:1px solid var(--color-border);padding-bottom:var(--sp-2)}.record-label{color:var(--color-text-secondary);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em}.record-value{margin-top:3px;word-break:break-word}.record-value.mono{font-size:var(--fs-sm);white-space:pre-wrap}.fk-link,.record-value.mono{font-family:var(--font-mono)}.fk-link{color:var(--color-info);cursor:pointer}.fk-link:hover{text-decoration:underline}.p360-grid{display:grid;grid-template-columns:320px 1fr;grid-gap:var(--sp-4);gap:var(--sp-4);align-items:start}@media (max-width:1000px){.p360-grid{grid-template-columns:1fr}}.p360-rail{display:flex;flex-direction:column;gap:var(--sp-3);position:-webkit-sticky;position:sticky;top:68px}.p360-name{font-family:var(--font-head);font-size:var(--fs-xl);font-weight:600}.p360-tags{display:flex;gap:6px;margin:var(--sp-3) 0;flex-wrap:wrap}.p360-facts{display:grid;grid-template-columns:auto 1fr;grid-gap:4px 12px;gap:4px 12px;margin:var(--sp-2) 0 0;font-size:var(--fs-sm)}.p360-facts dt{color:var(--color-text-secondary)}.p360-facts dd{margin:0;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.p360-summary{display:grid;grid-template-columns:repeat(4,1fr);text-align:center;grid-gap:var(--sp-2);gap:var(--sp-2)}.p360-summary div{display:flex;flex-direction:column}.p360-summary b{font-family:var(--font-mono);font-size:var(--fs-xl);font-weight:600}.p360-summary span{color:var(--color-text-secondary);font-size:var(--fs-xs)}.timeline{display:flex;flex-direction:column}.encounter{border-left:2px solid var(--color-border);margin-left:var(--sp-2)}.encounter.open{border-left-color:var(--color-text-primary)}.encounter-head{display:flex;align-items:center;gap:var(--sp-3);width:100%;background:transparent;border:none;color:var(--color-text-primary);text-align:left;padding:10px var(--sp-2) 10px 18px;cursor:pointer;position:relative}.encounter-head:hover{background:var(--color-background-secondary)}.encounter-dot{position:absolute;left:-7px;width:11px;height:11px;border-radius:50%;background:var(--color-surface);border:2px solid var(--color-text-secondary)}.encounter.open .encounter-dot{border-color:var(--color-text-primary);background:var(--color-text-primary)}.encounter-date{font-family:var(--font-mono);font-weight:500;min-width:92px;font-size:var(--fs-sm)}.encounter-main{flex:1 1}.encounter-title{font-weight:600}.encounter-chips{display:flex;gap:4px;flex-wrap:wrap;max-width:320px;justify-content:flex-end}.encounter-toggle{color:var(--color-text-secondary);width:16px}.encounter-body{padding:4px var(--sp-2) var(--sp-4) 18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:var(--sp-3);gap:var(--sp-3)}.enc-section{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius);padding:10px 12px}.enc-section-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin-bottom:6px;font-weight:600}.enc-section .line{font-size:var(--fs-sm);padding:2px 0}.encounter-links{grid-column:1/-1;display:flex;gap:var(--sp-4);font-size:var(--fs-sm)}.eye-chip{display:inline-block;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1px 7px;margin-right:6px;font-size:var(--fs-sm);font-family:var(--font-mono)}.line{padding:2px 0}.tip-card .panel-body,.tip-list{display:flex;flex-direction:column;gap:var(--sp-3)}.tip-context{font-size:var(--fs-sm);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius);padding:8px 10px;color:var(--color-text-secondary)}.tip-text{width:100%;font-size:var(--fs-base);resize:vertical}.tip-text-view{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius);padding:10px 12px;white-space:pre-wrap}.tip-actions{display:flex;gap:var(--sp-2)}.tip-track{font-size:var(--fs-xs)}.fld-label{display:block;margin:var(--sp-3) 0 5px;font-weight:600;font-size:var(--fs-sm)}.role-picker{display:flex;flex-wrap:wrap;gap:var(--sp-2);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius);padding:10px}.role-item{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);padding:4px 8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:var(--color-surface)}.role-item:hover{border-color:var(--color-border-strong)}