:root{--bg:#f3f5f7;--surface:#fff;--surface2:#eef2f5;--text:#172638;--muted:#56687b;--line:#203a541c;--nav:#172b3d;--accent:#176c61;--lag:#16816e;--equal:#426dc3;--spy:#b47728;--bad:#b3434c;--warnbg:#fbf2df;--warn:#754f13;--shadow:0 6px 24px #17324a06;--font-body:'Satoshi',sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.18rem;--text-xl:clamp(1.65rem,2.2vw,2.15rem);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px}
[data-theme=dark]{--bg:#101a23;--surface:#182632;--surface2:#22333f;--text:#e7edf1;--muted:#a7b8c6;--line:#c7d6e71f;--nav:#0b141c;--accent:#79c9b8;--lag:#72c7b1;--equal:#89acf1;--spy:#e2b779;--bad:#f096a0;--warnbg:#332e21;--warn:#ebcb90;--shadow:none}
*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);font-size:var(--text-base);color:var(--text);background:var(--bg);font-variant-numeric:tabular-nums lining-nums}html,body{height:100%;overflow:hidden}button,select,a{touch-action:manipulation}button,select{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:6px;min-height:44px;padding:var(--space-2) var(--space-4);cursor:pointer;font-size:var(--text-sm)}button:hover,select:hover{background:var(--surface2)}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:var(--accent)}.primary{background:var(--accent);color:var(--surface);border-color:transparent;font-weight:700}.primary:hover{filter:brightness(1.12);background:var(--accent)}h1,h2,h3,p{margin:0}h1{font-size:var(--text-xl);line-height:1.25;letter-spacing:-.035em;font-weight:900}h2{font-size:var(--text-lg);letter-spacing:-.02em}h3{font-size:var(--text-base)}p{line-height:1.6}.muted{color:var(--muted);font-size:var(--text-sm)}.eyebrow{font-size:var(--text-xs);font-weight:700;letter-spacing:.12em;color:var(--muted);margin-bottom:var(--space-2)}.shell{display:grid;grid-template-columns:228px minmax(0,1fr);grid-template-rows:76px minmax(0,1fr);height:100dvh}.sidebar{grid-row:1/-1;background:var(--nav);color:#f0f4f7;display:flex;flex-direction:column;padding:var(--space-8) var(--space-5);min-height:0}.brand{display:flex;gap:var(--space-3);align-items:center;font-size:var(--text-lg);font-weight:900;letter-spacing:.08em;margin-bottom:var(--space-12)}.brand svg{height:36px;width:36px;color:#9bcebf}.brand span{display:block;font-size:var(--text-xs);color:#9caeba;font-weight:500;letter-spacing:.06em;margin-top:var(--space-1)}.nav-label{font-size:var(--text-xs);letter-spacing:.12em;color:#93a9b9;margin:var(--space-2) var(--space-3) var(--space-3)}nav{display:flex;flex-direction:column;gap:var(--space-2)}.nav{color:#b9c8d3;background:transparent;text-align:left;border:0;display:flex;align-items:center;gap:var(--space-4);font-weight:500;min-height:48px}.nav span{font-size:var(--text-xs);color:#91a6b6}.nav:hover{background:#ffffff0b}.nav.active{background:#cceee816;color:#e7fff8}.nav.active span{color:#9bd5c5}.sidebar-note{margin-top:var(--space-12);padding:var(--space-6) var(--space-3);border-top:1px solid #ffffff1a}.sidebar-note p{font-size:var(--text-lg);margin-bottom:var(--space-4);line-height:1.5}.sidebar-note .eyebrow{color:#95abba}.sidebar-note .muted{color:#a6b9c5}.sidebar-bottom{margin-top:auto;font-size:var(--text-xs);letter-spacing:.04em;color:#b9c8d3;padding:var(--space-5) var(--space-3) 0;line-height:2}.sidebar-bottom>span:last-child{display:block;color:#94a8b7;letter-spacing:0}.status-dot{display:inline-block;width:7px;height:7px;background:#9bd5c5;border-radius:50%;margin-right:var(--space-2)}header{grid-column:2;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-10);background:var(--surface);border-bottom:1px solid var(--line)}.breadcrumb{font-size:var(--text-sm);color:var(--muted)}.breadcrumb span{margin:0 var(--space-3);color:#8b9cac}.header-actions{display:flex;gap:var(--space-3)}.header-actions button{display:flex;gap:var(--space-3);align-items:center}main{grid-column:2;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-10);min-width:0;scroll-behavior:smooth}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:var(--space-6);margin-bottom:var(--space-6)}.page-heading p{font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-2)}.scope{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1);white-space:nowrap}.scope strong{font-size:var(--text-lg)}.scope span{font-size:var(--text-xs);color:var(--muted)}.notice{display:flex;align-items:center;gap:var(--space-4);background:var(--warnbg);color:var(--warn);border-radius:6px;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-6)}.notice-label{font-size:var(--text-xs);font-weight:900;white-space:nowrap;letter-spacing:.07em}.notice p{font-size:var(--text-sm);line-height:1.5;flex:1}.text-button{padding:var(--space-2) 0;border:0;background:none;color:var(--accent);font-weight:700;white-space:nowrap}.text-button:hover{background:transparent;text-decoration:underline}.notice .text-button{color:var(--warn);font-size:var(--text-xs)}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.metric{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:var(--space-5) var(--space-6);box-shadow:var(--shadow)}.metric-head{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:700;margin-bottom:var(--space-4)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.metric-value{font-size:var(--text-xl);font-weight:900;letter-spacing:-.04em;line-height:1.2}.metric-label{font-size:var(--text-xs);color:var(--muted);margin-top:var(--space-1)}.metric-bottom{display:flex;justify-content:space-between;gap:var(--space-3);border-top:1px solid var(--line);margin-top:var(--space-4);padding-top:var(--space-3);font-size:var(--text-xs);color:var(--muted)}.metric-bottom strong{color:var(--text);font-size:var(--text-sm)}.chart-panel,.table-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:var(--space-6);margin-bottom:var(--space-6);min-width:0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.chart-controls{display:flex;align-items:center;gap:var(--space-2)}select{max-width:100%;font-weight:500}.main-chart{height:310px;position:relative;margin:var(--space-4) 0}.legend{display:flex;gap:var(--space-5);flex-wrap:wrap}.legend button{display:flex;gap:var(--space-2);align-items:center;padding:0;border:0;min-height:32px;background:none;font-size:var(--text-xs);color:var(--muted)}.legend button[aria-pressed=false]{opacity:.4;text-decoration:line-through}.chart-footer{display:flex;gap:var(--space-4);justify-content:space-between;font-size:var(--text-xs);color:var(--muted);border-top:1px solid var(--line);padding-top:var(--space-4)}.insights{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--space-6);margin:var(--space-8) 0}.insight{padding:0 var(--space-2)}.insight h3{font-size:var(--text-lg);margin-bottom:var(--space-2)}.insight p{color:var(--muted);font-size:var(--text-sm);max-width:64ch}.risk-text{color:var(--bad)}.table-scroll{overflow-x:auto;overscroll-behavior:contain;max-width:100%}table{width:100%;border-collapse:collapse;text-align:right;font-size:var(--text-sm);white-space:nowrap}th{color:var(--muted);font-weight:500;font-size:var(--text-xs);padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--line);background:var(--surface)}td{padding:var(--space-4) var(--space-3);border-bottom:1px solid var(--line)}td:first-child,th:first-child{text-align:left;padding-left:0}td:last-child,th:last-child{padding-right:0}tbody tr:last-child td{border-bottom:0}tbody tr.selected{background:color-mix(in srgb,var(--lag) 8%,var(--surface))}td.ticker{font-weight:700}.footnote{font-size:var(--text-xs);line-height:1.6;color:var(--muted);margin-top:var(--space-4)}.badge{font-size:var(--text-xs);font-weight:700;color:var(--muted);background:var(--surface2);padding:var(--space-2) var(--space-3);border-radius:5px;white-space:nowrap}.success{color:var(--accent)}.top-controls{margin:var(--space-8) 0 var(--space-5)}.holdings-grid{display:grid;grid-template-columns:.85fr 1.3fr;gap:var(--space-6)}.donut{height:260px;margin-top:var(--space-5)}.hold-total{text-align:center;font-weight:700;margin-top:var(--space-3)}.holding-row{margin-top:var(--space-5)}.holding-row-head{display:flex;justify-content:space-between;font-size:var(--text-sm);gap:var(--space-3);margin-bottom:var(--space-2)}.holding-row-head span:last-child{color:var(--muted)}.bar-track{height:8px;background:var(--surface2);border-radius:2px;overflow:hidden}.bar-fill{height:100%;border-radius:2px}.bar-sub{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--muted);margin-top:var(--space-1)}.frequency-chart{height:260px}.trade-ticket{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;background:var(--nav);color:#f0f5f8;border-radius:8px;padding:var(--space-6);gap:var(--space-5);margin-bottom:var(--space-6)}.trade-ticket .eyebrow{color:#a8c0cb}.trade-ticket strong{display:block;font-size:var(--text-lg);line-height:1.5}.trade-ticket .ticket-winner{font-size:var(--text-xl)}.trade-ticket p{font-size:var(--text-xs);color:#bfd0da}.trade-ticket .ticket-note{grid-column:1/-1;padding-top:var(--space-4);border-top:1px solid #ffffff20}.calendar-grid{display:grid;grid-template-columns:48px repeat(12,minmax(50px,1fr));gap:var(--space-1);min-width:750px}.calendar-grid .month-label{font-size:var(--text-xs);color:var(--muted);text-align:center;padding:var(--space-2) 0}.calendar-grid .year-label{display:flex;align-items:center;font-size:var(--text-xs);color:var(--muted)}.month-cell{border:1px solid transparent;border-radius:4px;font-size:var(--text-xs);font-weight:700;min-height:44px;padding:var(--space-1);background:var(--surface2)}.month-cell:hover{filter:brightness(.95)}.month-cell.current{outline:2px solid var(--text);outline-offset:1px}.month-cell.empty{visibility:hidden}.method-intro{max-width:850px;margin:var(--space-8) 0}.method-intro h2{font-size:var(--text-lg);margin-bottom:var(--space-3)}.method-intro p{color:var(--muted)}.method-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6)}.method-grid h3{margin-bottom:var(--space-3)}.method-grid p{font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--space-4)}.method-grid p strong{color:var(--text)}ul{padding-left:var(--space-5);margin:0;color:var(--muted);font-size:var(--text-sm);line-height:1.7}li{margin:var(--space-2) 0}.method-callout{padding:var(--space-5) var(--space-6);background:var(--surface2);border-radius:6px;margin-bottom:var(--space-6)}.method-callout p{font-size:var(--text-sm);color:var(--muted);margin-top:var(--space-2)}.audit-item{display:grid;grid-template-columns:28px 250px 1fr;gap:var(--space-3);padding:var(--space-4) 0;border-top:1px solid var(--line);font-size:var(--text-sm)}.audit-item:first-child{border-top:0}.audit-item .check{color:var(--accent);font-weight:900}.audit-item p{font-size:var(--text-sm);color:var(--muted)}#source-list{display:flex;flex-wrap:wrap;gap:var(--space-3);margin:var(--space-5) 0}#source-list a{font-size:var(--text-sm);padding:var(--space-3);border:1px solid var(--line);border-radius:4px;text-decoration:none}.table-panel>p{color:var(--muted);font-size:var(--text-sm)}footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;color:var(--muted);font-size:var(--text-xs);padding:var(--space-4) 0 var(--space-8);gap:var(--space-3)}footer p{width:100%;font-size:var(--text-xs)}footer .text-button{font-size:var(--text-xs)}dialog{border:1px solid var(--line);border-radius:12px;padding:var(--space-8);background:var(--surface);color:var(--text);width:min(560px,calc(100vw - 32px));box-shadow:0 20px 100px #0003}dialog::backdrop{background:#0a152b88;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4)}.dialog-head button{font-size:var(--text-lg)}dialog>p{margin-top:var(--space-3);color:var(--muted);font-size:var(--text-sm)}.export-list{display:flex;flex-direction:column;margin-top:var(--space-6)}.export-list a{padding:var(--space-4) 0;border-top:1px solid var(--line);cursor:pointer;text-decoration:none;font-weight:700}.export-list span{display:block;font-size:var(--text-sm);font-weight:400;color:var(--muted);margin-top:var(--space-1)}.skeleton{height:145px;border-radius:8px;margin-top:var(--space-6);background:var(--surface2);animation:pulse 1.5s infinite}.skeleton.large{height:320px}.skip{position:absolute;top:-80px;left:var(--space-4);z-index:100;background:var(--surface);padding:var(--space-3)}.skip:focus{top:var(--space-3)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}@keyframes pulse{50%{opacity:.45}}
@media(min-width:1600px){main{padding:var(--space-10) var(--space-12)}.main-chart{height:370px}}
@media(max-width:1100px){.shell{grid-template-columns:190px minmax(0,1fr)}header,main{padding-left:var(--space-6);padding-right:var(--space-6)}.sidebar{padding:var(--space-6) var(--space-3)}.metric{padding:var(--space-5) var(--space-4)}.metric-bottom{flex-direction:column;gap:var(--space-2)}.notice .text-button{display:none}.panel-head{align-items:flex-start}.chart-controls{flex-wrap:wrap}.trade-ticket{grid-template-columns:1fr 1fr}.audit-item{grid-template-columns:24px 190px 1fr}}
@media(max-width:760px){.shell{grid-template-columns:1fr;grid-template-rows:auto 64px minmax(0,1fr)}.sidebar{grid-row:1;grid-column:1;padding:var(--space-3) var(--space-4)}.brand{font-size:var(--text-base);margin-bottom:var(--space-3);gap:var(--space-2)}.brand svg{width:28px;height:28px}.brand span{display:inline;margin-left:var(--space-3);font-size:var(--text-xs)}.sidebar .nav-label,.sidebar-note,.sidebar-bottom{display:none}nav{flex-direction:row;gap:var(--space-1);justify-content:space-between}.nav{padding:var(--space-2);font-size:var(--text-xs);gap:var(--space-1);min-height:44px}.nav span{display:none}header{grid-column:1;grid-row:2;padding:0 var(--space-4)}.breadcrumb{font-size:var(--text-xs)}.breadcrumb span{margin:0 var(--space-1)}.header-actions{gap:var(--space-2)}.header-actions button{padding:var(--space-2) var(--space-3)}#theme span{display:none}main{grid-column:1;grid-row:3;padding:var(--space-6) var(--space-4)}.page-heading{align-items:flex-start}.scope{display:none}.notice{align-items:flex-start;gap:var(--space-3)}.notice-label{margin-top:var(--space-1)}.notice p{font-size:var(--text-xs)}.metric-grid{grid-template-columns:1fr;gap:var(--space-3)}.metric{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-1) var(--space-4);padding:var(--space-4)}.metric-head{grid-column:1;margin:0;align-self:start;grid-row:1}.metric-value{grid-column:2;grid-row:1;text-align:right;font-size:var(--text-lg)}.metric-label{grid-column:2;text-align:right;margin:0}.metric-bottom{grid-column:1/-1;flex-direction:row;margin-top:var(--space-2);padding-top:var(--space-2)}.chart-panel,.table-panel{padding:var(--space-4)}.panel-head{flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-4)}.chart-controls{width:100%;flex-wrap:nowrap;gap:var(--space-2)}.chart-controls select{min-width:0;flex:1;font-size:var(--text-xs);padding:var(--space-2)}.main-chart{height:290px}.legend{gap:var(--space-3)}.chart-footer{flex-direction:column;gap:var(--space-2)}.insights,.holdings-grid,.method-grid{grid-template-columns:1fr;gap:var(--space-4)}.insight{margin-bottom:var(--space-3)}.trade-ticket{padding:var(--space-5);gap:var(--space-4)}.trade-ticket strong{font-size:var(--text-base)}.trade-ticket .ticket-winner{font-size:var(--text-xl)}.top-controls{margin-top:var(--space-6)}.audit-item{grid-template-columns:24px 1fr}.audit-item p{grid-column:2}.holdings-grid .table-panel{margin-top:calc(-1 * var(--space-4))}th,td{padding:var(--space-3) var(--space-2)}.method-intro{margin-top:var(--space-6)}.method-intro p{font-size:var(--text-sm)}footer{padding-bottom:var(--space-6)}}
.metric-cumulative{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-4);font-size:var(--text-xs);color:var(--muted)}
.metric-cumulative strong{color:var(--text);font-size:var(--text-lg);letter-spacing:-.02em}
.amount-field{gap:var(--space-1)}.amount-field label{font-size:var(--text-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.amount-input{display:flex;align-items:center;gap:var(--space-1);border:1px solid var(--line);border-radius:6px;background:var(--surface);padding:0 var(--space-3);min-height:44px}
.amount-input:focus-within{outline:3px solid var(--accent);outline-offset:2px}
.amount-input span{font-size:var(--text-lg);font-weight:700;color:var(--muted)}
.amount-input input{border:0;background:transparent;color:var(--text);font:inherit;font-size:var(--text-lg);font-weight:700;width:9ch;text-align:right;outline:none;font-variant-numeric:tabular-nums}
.amount-input:has(input[aria-invalid=true]){border-color:var(--bad)}
.amount-error{color:var(--bad);font-size:var(--text-xs)}
@media(max-width:760px){.page-heading{flex-direction:column;align-items:stretch}.scope.amount-field{display:flex;align-items:flex-start}.amount-input input{width:100%;text-align:left}.amount-input{width:100%}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
