/*! MERIDIAN — a portfolio dashboard that moves like a single instrument — © 2026 Hasib (OVERSHOOT). All rights reserved. Licensed, not sold: see LICENSE.md. */
:root{--bg:#07090d;--shell:#0d1016;--panel:#10141b;--panel-2:#171c25;--panel-3:#1e2430;--hair:#ffffff13;--hair-lit:#ffffff24;--text:#eef1f6;--text-dim:#a6adbd;--text-faint:#6f7788;--violet:#5a3df5;--violet-deep:#3a21cc;--violet-lt:#a690ff;--lime:#d4ff4a;--lime-ink:#101418;--coral:#ff7a6e;--sky:#7cc8ff;--cream:#f3efe6;--font-display:"Outfit", system-ui, sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--r-shell:34px;--r-panel:22px;--r-tile:14px;--ease:cubic-bezier(.22, 1, .36, 1);--ease-soft:cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}body:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(60% 40% at 50% 0,#d4ff4a12,#0000 70%),radial-gradient(40% 30% at 85% 90%,#7cc8ff0d,#0000 70%);position:fixed;inset:0}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}svg{display:block}button{font:inherit;color:inherit;cursor:pointer}ul{margin:0;padding:0;list-style:none}p,h3{margin:0}.app{z-index:1;grid-template-rows:1fr auto;gap:10px;min-height:100dvh;padding:clamp(10px,1.4vw,18px);display:grid;position:relative}.dash{grid-template:"top top top""hold hold hold"minmax(min-content,1fr)"watch watch watch""mix risk notes"/1.9fr 1fr 1fr;gap:12px;min-height:0;display:grid}.topbar{grid-area:top}.panel--holdings{flex-direction:column;grid-area:hold;display:flex}.panel--watch{grid-area:watch}.panel--mix{grid-area:mix}.panel--risk{grid-area:risk}.panel--notes{grid-area:notes}html.js .topbar,html.js .panel{opacity:0}.foot{letter-spacing:.02em;color:var(--text-faint);justify-content:space-between;align-items:center;gap:16px;padding:0 10px;font-size:11.5px;display:flex}.foot a{color:var(--text-dim);text-decoration:none}.foot a:hover{color:var(--text)}.panel{border-radius:var(--r-panel);background:var(--panel);min-height:0;box-shadow:inset 0 0 0 1px var(--hair), inset 0 1px 0 #ffffff0a;padding:18px 20px;position:relative}.panel__head{align-items:center;gap:16px;margin-bottom:22px;display:flex}.panel__head--tight{margin-bottom:16px}.panel__title{font-family:var(--font-display);letter-spacing:-.01em;align-items:center;gap:8px;font-size:17px;font-weight:500;display:inline-flex}.panel__title--sm{color:var(--text-dim);font-size:13px;font-weight:500;font-family:var(--font-body)}.panel__ico{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:14px;height:14px}.panel__tools{align-items:center;gap:8px;margin-left:auto;display:flex}.icon-btn{background:var(--panel-2);width:38px;height:38px;box-shadow:inset 0 0 0 1px var(--hair);color:var(--text);transition:transform .35s var(--ease), background-color .25s, box-shadow .25s;border:0;border-radius:50%;place-items:center;padding:0;display:inline-grid;position:relative}.icon-btn svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.icon-btn:hover{background:var(--panel-3);box-shadow:inset 0 0 0 1px var(--hair-lit);transform:translateY(-1px)}.icon-btn:active{transition-duration:80ms;transform:scale(.94)}.icon-btn--sm{width:32px;height:32px}.icon-btn--sm svg{width:14px;height:14px}.icon-btn--dot:after{content:"";background:var(--coral);width:7px;height:7px;box-shadow:0 0 0 2px var(--panel-2);border-radius:50%;position:absolute;top:9px;right:9px}.icon-btn--ink{background:#ffffff1a;box-shadow:inset 0 0 0 1px #ffffff24}.icon-btn--ink:hover{background:#ffffff2e}.ghost-btn{background:var(--panel-2);height:36px;box-shadow:inset 0 0 0 1px var(--hair);transition:transform .35s var(--ease), background-color .25s, box-shadow .25s;border:0;border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.ghost-btn svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.ghost-btn:hover{background:var(--panel-3);box-shadow:inset 0 0 0 1px var(--hair-lit);transform:translateY(-1px)}.ghost-btn:active{transition-duration:80ms;transform:scale(.96)}.ghost-btn--sm{height:32px;padding:0 12px;font-size:12px}:is(.icon-btn,.ghost-btn,.range,.nav__item,.avatar):focus-visible{outline:2px solid var(--lime);outline-offset:2px}.topbar{align-items:center;gap:12px;padding:6px 6px 6px 8px;display:flex}.brand{background:var(--panel);height:44px;box-shadow:inset 0 0 0 1px var(--hair);color:var(--text);font-family:var(--font-display);letter-spacing:-.01em;border-radius:999px;align-items:center;gap:10px;padding:0 16px 0 12px;font-size:16px;font-weight:600;text-decoration:none;display:inline-flex}.brand__mark{width:20px;height:20px;position:relative}.brand__mark i{border:2.5px solid var(--lime);border-right-color:#0000;border-radius:50%;position:absolute;inset:0;transform:rotate(-30deg)}.brand__mark i+i{border-color:var(--violet-lt);border-left-color:#0000;inset:5px;transform:rotate(40deg)}.nav{background:var(--panel);height:44px;box-shadow:inset 0 0 0 1px var(--hair);border-radius:999px;align-items:center;gap:2px;padding:4px;display:flex;position:relative}.nav__pill{background:var(--cream);transform-origin:0;border-radius:999px;width:0;position:absolute;top:4px;bottom:4px;left:0;box-shadow:0 6px 18px -8px #f3efe680}.nav__item{z-index:1;height:36px;color:var(--text-dim);transition:color .3s var(--ease-soft);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:0 15px;font-size:13px;font-weight:500;position:relative}.nav__item:hover{color:var(--text)}.nav__item.is-active{color:var(--lime-ink)}.topbar__tools{align-items:center;gap:8px;margin-left:auto;display:flex}.avatar{background:var(--panel-2);height:38px;box-shadow:inset 0 0 0 1px var(--hair);transition:transform .35s var(--ease);border:0;border-radius:999px;align-items:center;gap:6px;padding:0 10px 0 3px;display:inline-flex}.avatar:hover{transform:translateY(-1px)}.avatar__img{background:linear-gradient(140deg, var(--violet-lt), var(--violet-deep));width:32px;height:32px;font-family:var(--font-display);color:#fff;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.avatar__chev{fill:none;width:14px;height:14px;stroke:var(--text-dim);stroke-width:1.8px;stroke-linecap:round}.meter{background:var(--panel-2);height:34px;box-shadow:inset 0 0 0 1px var(--hair);border-radius:999px;align-items:center;gap:10px;padding:0 12px 0 10px;display:inline-flex}.meter__ticks{gap:3px;display:inline-flex}.meter__ticks i{background:var(--text-faint);opacity:.45;width:2px;height:12px;transition:background-color .3s, opacity .3s, transform .5s var(--ease);border-radius:1px;display:block;transform:scaleY(.55)}.meter__ticks i.is-lit{background:var(--lime);opacity:1;transform:scaleY(1)}.meter__val{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}.meter__label{color:var(--text-faint);margin-left:4px;font-size:12px}.holdings{flex:1;grid-template-columns:290px 1fr;gap:16px;min-height:0;display:grid}.holdings__side{grid-template-rows:auto 1fr;display:grid}.kpi{gap:8px;display:grid}.kpi__label{color:var(--text-dim);font-size:12.5px}.kpi__row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.kpi__val{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:30px;font-weight:500;line-height:1}.kpi--hero .kpi__label{color:var(--text-dim)}.kpi--hero .kpi__val{color:var(--text);font-size:34px}.delta{font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:3px;height:24px;padding:0 9px 0 6px;font-size:12px;font-weight:600;display:inline-flex}.delta svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px}.delta--up{color:var(--lime);background:#d4ff4a24}.delta--pill{background:var(--lime);color:var(--lime-ink)}.delta--pill.is-down{background:var(--coral);color:#1a0c0a}.tiles{grid-template-columns:1fr 1fr;gap:10px;margin-top:24px;display:grid}.tile{border-radius:var(--r-tile);background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--hair);align-content:center;gap:8px;padding:16px 16px 14px;transition:box-shadow .3s,background-color .3s;display:grid;position:relative}.tile:hover{background:var(--panel-3);box-shadow:inset 0 0 0 1px var(--hair-lit);transform:translateY(-3px)}.tile__k{color:var(--text-dim);align-items:center;gap:7px;font-size:12px;display:inline-flex}.tile__k:before{content:"";background:var(--tile);border-radius:2px;width:3px;height:11px}.tile__v{font-family:var(--font-display);letter-spacing:-.015em;font-variant-numeric:tabular-nums;font-size:21px;font-weight:500}.hero{min-height:0;box-shadow:inset 0 0 0 1px var(--hair-lit), inset 0 1px 0 #ffffff1a, 0 30px 60px -30px #000000e6;color:var(--text);isolation:isolate;background:radial-gradient(70% 60% at 100% 0,#d4ff4a1a,#0000 60%),linear-gradient(#1a2029 0%,#12171e 100%);border-radius:20px;grid-template-rows:auto 1fr;padding:22px 22px 18px;display:grid;position:relative;overflow:hidden}.hero:after{content:"";z-index:0;pointer-events:none;opacity:0;background:linear-gradient(115deg,#0000 40%,#ffffff12 50%,#0000 60%);position:absolute;inset:-20%;transform:translate(-70%)}.hero.is-shine:after{animation:hero-shine 1.5s var(--ease-soft) forwards}@keyframes hero-shine{0%{opacity:0;transform:translate(-70%)}30%{opacity:1}to{opacity:0;transform:translate(70%)}}.hero>*{z-index:1;position:relative}.hero__head{align-items:flex-start;gap:16px;display:flex}.ranges{gap:2px;margin-left:auto;display:inline-flex}.range{letter-spacing:.04em;height:26px;color:var(--text-faint);transition:color .25s, background-color .25s, transform .3s var(--ease);background:0 0;border:0;border-radius:6px;padding:0 8px;font-size:11.5px;font-weight:600;position:relative}.range:after{content:"";background:var(--lime);transform-origin:50%;height:2px;transition:transform .35s var(--ease);border-radius:1px;position:absolute;bottom:1px;left:8px;right:8px;transform:scaleX(0)}.range:hover{color:var(--text)}.range:active{transform:scale(.94)}.range.is-active{color:var(--text)}.range.is-active:after{transform:scaleX(1)}.chart{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:44px 1fr;gap:8px;min-height:0;margin-top:18px;display:grid}.chart__y{color:var(--text-faint);font-variant-numeric:tabular-nums;flex-direction:column;grid-row:1;justify-content:space-between;padding:2px 0;font-size:10.5px;display:flex}.chart__plot{touch-action:pan-y;cursor:crosshair;min-height:170px;position:relative}.chart__svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.chart__grid line{stroke:#ffffff17;stroke-width:1px;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.chart__bars{opacity:.9}.chart__line,.chart__glow{fill:none;stroke:var(--lime);stroke-width:2.25px;stroke-linecap:round;stroke-linejoin:round}.chart__glow{stroke-width:8px;opacity:.18}.chart__cross{stroke:#ffffff73;stroke-width:1px;stroke-dasharray:3 3;opacity:0}.chart__dot{background:var(--lime);opacity:0;pointer-events:none;border-radius:50%;width:12px;height:12px;margin:-6px 0 0 -6px;position:absolute;top:0;left:0;box-shadow:0 0 0 3px #101418e6,0 0 0 5px #d4ff4a59}.chart__x{color:var(--text-faint);grid-column:2;justify-content:space-between;font-size:10.5px;display:flex}.chart__x span{text-align:center;flex:1}.chart__x span:first-child{text-align:left}.chart__x span:last-child{text-align:right}.tip{min-width:156px;color:var(--text);opacity:0;pointer-events:none;will-change:transform;background:#232a35;border-radius:12px;gap:6px;padding:10px 12px;font-size:11.5px;display:grid;position:absolute;top:0;left:0;box-shadow:0 16px 30px -12px #000c,inset 0 0 0 1px #ffffff1f}.tip__row{justify-content:space-between;gap:14px;display:flex}.tip__k{color:var(--text-dim)}.tip__v{font-variant-numeric:tabular-nums;font-weight:600}.tip__delta{text-align:center;font-variant-numeric:tabular-nums;background:#ffffff14;border-radius:6px;justify-self:stretch;padding:4px 8px;font-weight:600}.tip__delta.pos{color:var(--lime)}.tip__delta.neg{color:var(--coral)}.panel--watch{align-items:center;gap:18px;padding:12px 20px;display:flex}.panel--watch .panel__title{flex:none}.watch{flex:1;grid-template-columns:repeat(4,1fr);display:grid}.stock{border-left:1px solid var(--hair);transition:transform .45s var(--ease), background-color .3s;border-radius:12px;align-items:center;gap:12px;padding:6px 14px;display:flex}.stock:first-child{border-left:0}.stock:hover{background:var(--panel-2);transform:translateY(-2px)}.stock__logo{background:var(--logo);width:40px;height:40px;color:var(--logo-ink);box-shadow:inset 0 0 0 1px var(--hair-lit);font-family:var(--font-display);border-radius:50%;flex:none;place-items:center;font-size:15px;font-weight:700;display:grid}.stock__meta{gap:3px;display:grid}.stock__sym{color:var(--text-dim);letter-spacing:.04em;font-size:11.5px}.stock__px{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:15px;font-weight:500}.stock__px em{font-style:normal;font-family:var(--font-body);margin-left:4px;font-size:11px;font-weight:600}.pos{color:var(--lime)}.neg{color:var(--coral)}.spark{width:64px;height:24px;margin-left:auto;overflow:visible}.spark path{fill:none;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}[data-dir=up] .spark path{stroke:var(--lime)}[data-dir=down] .spark path{stroke:var(--coral)}.panel--mix{grid-template-rows:auto 1fr;display:grid}.bars{grid-template-columns:repeat(4,1fr);gap:10px;min-height:0;display:grid}.bar{text-align:center;grid-template-rows:1fr auto;gap:10px;min-height:0;display:grid}.bar__well{background:repeating-linear-gradient(135deg, #ffffff0f 0 2px, transparent 2px 7px), var(--panel-2);min-height:104px;box-shadow:inset 0 0 0 1px var(--hair);border-radius:12px;display:block;position:relative;overflow:hidden}.bar__fill{height:calc(var(--pct) * 100%);background:var(--fill);color:var(--ink);transform-origin:bottom;font-variant-numeric:tabular-nums;border-radius:10px;align-items:flex-start;padding:9px 10px;font-size:12px;font-weight:700;display:flex;position:absolute;bottom:0;left:0;right:0}.bar__fill b{font-weight:700}html.js .bar__fill b{opacity:0}.bar__k{color:var(--text-dim);font-size:11.5px}.panel--risk{grid-template-rows:auto auto 1fr auto;display:grid}.score{align-items:baseline;gap:6px;margin-top:-4px;display:flex}.score__val{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:36px;font-weight:500;line-height:1}.score__of{color:var(--text-faint);font-size:13px}.gauge{--g:0;align-self:center;width:100%;max-width:200px;margin:6px auto 0;position:relative}.gauge svg{width:100%;height:auto;overflow:visible}.gauge__track{fill:none;stroke:var(--panel-3);stroke-width:22px;stroke-linecap:round}.gauge__arc,.gauge__glow{fill:none;stroke:var(--lime);stroke-width:22px;stroke-linecap:round;stroke-dasharray:var(--g) 1}.gauge__glow{stroke-width:34px;opacity:.16}.gauge__knob{width:18px;height:18px;box-shadow:0 0 0 4px var(--lime-ink), 0 0 0 6px #ffffff40;opacity:0;background:#fff;border-radius:50%;margin:-9px 0 0 -9px;position:absolute;top:0;left:0}.gauge__note{color:var(--text-dim);text-align:center;margin-top:6px;font-size:12px}.gauge__note b{color:var(--text);font-weight:600}.panel--notes{background:radial-gradient(80% 60% at 100% 0,#ffffff1f,#0000 60%),linear-gradient(#2a2f3b,#1c2029);grid-template-rows:auto 1fr auto;display:grid}.panel--notes .panel__title{color:var(--text)}.notes__copy{color:var(--text-dim);font-size:13.5px;line-height:1.55}.notes__copy b{color:var(--text);font-weight:600}.sources{box-shadow:inset 0 0 0 1px var(--hair);background:#00000059;border-radius:999px;justify-self:start;gap:6px;margin-top:18px;padding:6px;display:inline-flex}.source{background:var(--src);width:32px;height:32px;color:var(--src-ink);font-family:var(--font-display);letter-spacing:.02em;border-radius:50%;place-items:center;font-size:10.5px;font-weight:700;display:grid}.source:hover{transform:translateY(-3px)scale(1.06)}.dash.is-ready .tile{transition:transform .45s var(--ease), box-shadow .3s, background-color .3s}.dash.is-ready .source{transition:transform .4s var(--ease)}.menu-wrap{position:relative}.menu{z-index:5;min-width:210px;box-shadow:0 24px 40px -16px #000c, inset 0 0 0 1px var(--hair-lit);transform-origin:100% 0;background:#141922;border-radius:14px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.menu[hidden]{display:none}.menu__item{text-align:left;width:100%;height:36px;color:var(--text-dim);background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:0 10px;font-size:13px;transition:background-color .2s,color .2s;display:flex}.menu__item:hover,.menu__item:focus-visible{background:var(--panel-3);color:var(--text);outline:none}.menu__item i{width:16px;height:16px;box-shadow:inset 0 0 0 1.5px var(--text-faint);border-radius:5px;flex:none;transition:background-color .25s,box-shadow .25s;position:relative}.menu__item i:after{content:"";border:solid var(--lime-ink);width:4px;height:8px;transition:transform .3s var(--ease);border-width:0 2px 2px 0;position:absolute;top:2px;left:5px;transform:rotate(45deg)scale(0)}.menu__item.is-on i{background:var(--lime);box-shadow:inset 0 0 0 1.5px var(--lime)}.menu__item.is-on i:after{transform:rotate(45deg)scale(1)}.menu__item.is-on{color:var(--text)}@media (width<=1040px){.nav{display:none}}@media (width<=900px){.dash{grid-template-rows:none;grid-template-columns:1fr 1fr;grid-template-areas:"top top""hold hold""watch watch""mix mix""risk notes"}.holdings{grid-template-columns:1fr}.tiles{grid-template-columns:repeat(4,1fr)}.watch{grid-template-columns:1fr 1fr;gap:4px}.stock{border-left:0}.meter__label{display:none}}@media (width<=640px){.dash{grid-template-rows:none;grid-template-columns:1fr;grid-template-areas:"top""hold""watch""mix""risk""notes";gap:8px}.foot{text-align:center;flex-direction:column;gap:4px}.panel{padding:16px}.panel__head{flex-wrap:wrap;gap:10px}.panel__tools{margin-left:0}.tiles{grid-template-columns:1fr 1fr}.watch{grid-template-columns:1fr}.panel--watch{flex-direction:column;align-items:stretch}.panel--watch>.icon-btn{display:none}.hero{padding:16px}.hero__head{flex-direction:column}.ranges{margin-left:0}.bars{gap:6px}.kpi--hero .kpi__val{font-size:28px}.chart{grid-template-columns:38px 1fr}.chart__x span:nth-child(2n){display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important}html.js .topbar,html.js .panel,html.js .bar__fill b{opacity:1}}
