/* ─────────────────────────────────────────────────────────────
   lima-spielhofen.com — stylesheet
   One light, paper-toned scheme for the whole site. Surfaces are
   flat with hairline borders; no backdrop blur, no particle canvas,
   no floating orbs — those were the main cost on load and the main
   reason the old design read as "generated".
   ───────────────────────────────────────────────────────────── */
:root{
  --bg:#f3f1ec;
  --surface:#fbfaf7;
  --surface-2:#f0ede6;
  --surface-3:#e7e3da;
  --line:rgba(27,26,23,.12);
  --line-2:rgba(27,26,23,.07);
  --ink:#1b1a17;
  --ink-2:rgba(27,26,23,.66);
  --ink-3:rgba(27,26,23,.44);
  --accent:#2e5c4c;
  --green:#2c7a4b;  --green-soft:#5d9c76;
  --yellow:#9c6f14; --yellow-soft:#c2933a;
  --red:#b13a2c;    --red-soft:#cf6a5e;
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --radius:14px; --radius-sm:10px;
  --shadow:0 1px 2px rgba(27,26,23,.04),0 10px 30px -18px rgba(27,26,23,.18);
  --photo:260px;
  /* legacy aliases still referenced by the stressboard rules */
  --text-main:var(--ink); --text-sub:var(--ink-2); --text-dim:var(--ink-3);
  --glass:var(--surface); --glass-border:var(--line);
}

*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);font-size:15px;line-height:1.5;
  background:var(--bg);color:var(--ink);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  min-height:100vh;
}
a{color:inherit}
button,input{font:inherit;color:inherit}
::selection{background:rgba(46,92,76,.18)}

/* ═══════════════════════════════════════
   HOME
   ═══════════════════════════════════════ */
.hub-home{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:4rem 1.5rem 5rem;transition:opacity .2s ease;position:relative;overflow:hidden;
}
.hub-home.hidden{opacity:0;pointer-events:none}
.hub-home-inner{
  display:grid;grid-template-columns:auto 1fr;gap:clamp(2rem,6vw,4.5rem);
  align-items:center;max-width:960px;width:100%;position:relative;z-index:1;
}

/* Drifting colour fields behind the home. Pre-blurred radial gradients moved
   with transforms only — no filter:blur, no canvas, so it stays cheap. */
.drift{position:absolute;inset:-20%;pointer-events:none;z-index:0}
.drift span{
  position:absolute;border-radius:50%;will-change:transform;
  background:radial-gradient(circle at 50% 50%,var(--c) 0%,transparent 62%);
  opacity:.9;
}
.drift-a{--c:rgba(197,178,140,.55);width:66vmax;height:66vmax;left:-6%;top:-2%;animation:drift-a 38s ease-in-out infinite alternate}
.drift-b{--c:rgba(150,178,168,.50);width:58vmax;height:58vmax;right:-6%;top:14%;animation:drift-b 46s ease-in-out infinite alternate}
.drift-c{--c:rgba(214,190,196,.48);width:52vmax;height:52vmax;left:26%;bottom:-14%;animation:drift-c 52s ease-in-out infinite alternate}
@keyframes drift-a{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(9vw,7vh,0) scale(1.12)}}
@keyframes drift-b{from{transform:translate3d(0,0,0) scale(1.08)}to{transform:translate3d(-8vw,-9vh,0) scale(.96)}}
@keyframes drift-c{from{transform:translate3d(0,0,0) scale(.98)}to{transform:translate3d(-6vw,-10vh,0) scale(1.1)}}

/* Photo hovers; its shadow breathes with it. */
.photo-wrap{
  width:var(--photo);height:var(--photo);border-radius:50%;overflow:hidden;
  border:1px solid var(--line);background:var(--surface-2);
  box-shadow:0 1px 2px rgba(27,26,23,.05),0 30px 50px -28px rgba(27,26,23,.35);
  animation:hover-photo 7s ease-in-out infinite;
}
@keyframes hover-photo{
  0%,100%{translate:0 0;box-shadow:0 1px 2px rgba(27,26,23,.05),0 30px 50px -28px rgba(27,26,23,.35)}
  50%{translate:0 -9px;box-shadow:0 1px 2px rgba(27,26,23,.04),0 44px 60px -30px rgba(27,26,23,.28)}
}
.photo-wrap img{width:100%;height:100%;object-fit:cover;display:block}

/* Staggered entrance on first paint */
.hub-home .rise{opacity:0;animation:rise .9s cubic-bezier(.2,.7,.2,1) forwards}
.hub-home .rise:nth-child(1){animation-delay:.05s}
.hub-home .rise:nth-child(2){animation-delay:.18s}
.hub-home .rise:nth-child(3){animation-delay:.30s}
.hub-home .rise:nth-child(4){animation-delay:.42s}
.hub-home .photo-wrap.rise{animation:rise .9s cubic-bezier(.2,.7,.2,1) forwards,hover-photo 7s ease-in-out 1s infinite}
@keyframes rise{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
.profile-name{
  font-family:var(--serif);font-weight:600;line-height:.98;letter-spacing:-.02em;
  font-size:clamp(2.6rem,6vw,4.4rem);
}
.tagline{
  margin-top:.9rem;font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3);
}
.hub-tagline{margin-top:1.3rem;font-size:1.08rem;line-height:1.6;color:var(--ink-2);max-width:40ch}
.hub-nav{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1.9rem}
.hub-btn{
  display:inline-flex;align-items:center;padding:.62rem 1.15rem;border-radius:999px;
  border:1px solid var(--line);background:var(--surface);text-decoration:none;
  font-size:.82rem;font-weight:500;letter-spacing:.01em;color:var(--ink);
  transition:border-color .15s ease,background .15s ease,transform .15s ease;
}
.hub-btn:hover{border-color:var(--ink);background:#fff;transform:translateY(-2px);box-shadow:0 10px 22px -14px rgba(27,26,23,.4)}
.hub-btn:active{transform:translateY(0);box-shadow:none}

footer{
  text-align:center;padding:1.5rem 1rem 1.6rem;font-size:.64rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);
}
.hub-home+footer{position:fixed;bottom:0;left:0;right:0;pointer-events:none}
body.viewing .hub-home+footer{position:static}

/* ═══════════════════════════════════════
   CONTENT VIEW (sections)
   ═══════════════════════════════════════ */
.hub-content{display:none;position:relative;min-height:100vh;padding-top:3.4rem;opacity:0;transition:opacity .2s ease}
.hub-content.active{display:block;opacity:1}
.hub-topbar{
  position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:.9rem;
  padding:.55rem 1.4rem;background:rgba(243,241,236,.92);border-bottom:1px solid var(--line-2);
}
@supports (backdrop-filter:blur(8px)){.hub-topbar{backdrop-filter:blur(8px)}}
.hub-back-btn{
  display:inline-flex;align-items:center;gap:.35rem;font-size:.74rem;font-weight:500;
  padding:.35rem .8rem;border-radius:999px;border:1px solid var(--line);background:var(--surface);cursor:pointer;
}
.hub-back-btn:hover{border-color:var(--ink)}
.hub-topbar-title{font-family:var(--serif);font-size:1.05rem;font-weight:600;letter-spacing:-.01em}
.hub-topbar-nav{margin-left:auto;display:flex;gap:.15rem}
.hub-topbar-nav a{font-size:.72rem;color:var(--ink-3);text-decoration:none;padding:.3rem .55rem;border-radius:6px}
.hub-topbar-nav a:hover{color:var(--ink);background:var(--surface-2)}
.hub-topbar-nav a.current{color:var(--ink);font-weight:500}

.hub-section{display:none}
.hub-section.active{display:block}
.wrap{max-width:1120px;width:94vw;margin:0 auto}
.hub-sec-hdr{max-width:1120px;width:94vw;margin:0 auto;padding:2.6rem 0 .3rem}
.hub-sec-title{font-family:var(--serif);font-weight:600;letter-spacing:-.02em;font-size:clamp(2rem,4vw,2.8rem);line-height:1.05}
.hub-sec-intro{max-width:1120px;width:94vw;margin:0 auto;padding:.4rem 0 1.4rem}
.hub-sec-intro p{font-size:.98rem;line-height:1.65;color:var(--ink-2);max-width:64ch}
.hub-sec-body{max-width:1120px;width:94vw;margin:0 auto;padding-bottom:4rem}

/* Card list (Dilettante / Languages) */
.hub-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.9rem;max-width:960px}
.hub-card{
  position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:1.4rem 1.5rem 1.35rem;
}
.hub-card h3{font-family:var(--serif);font-size:1.45rem;font-weight:600;letter-spacing:-.01em;line-height:1.15;margin-bottom:.15rem}
.hub-card-meta{font-size:.7rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.6rem}
.hub-card p{font-size:.92rem;line-height:1.6;color:var(--ink-2)}
.hub-card-with-cert{padding-right:1.5rem}
.hub-card-cert{
  position:absolute;top:1rem;right:1.1rem;font-size:.6rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;padding:.25rem .6rem;border-radius:999px;border:1px solid var(--line);
  background:var(--surface-2);cursor:pointer;color:var(--ink-2);
}
.hub-card-cert:hover{border-color:var(--ink);color:var(--ink)}

/* Vita */
.vita-hero{max-width:820px;margin:0 0 2.2rem;padding:1.6rem 1.8rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.vita-hero p{font-family:var(--serif);font-size:1.18rem;line-height:1.6;color:var(--ink-2)}
.vita-group{max-width:820px;margin:0 0 2rem}
.vita-group-hdr{font-size:.68rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin:0 0 .8rem .2rem}
.vita-entry{
  display:grid;grid-template-columns:150px 1fr;gap:1.6rem;padding:1.2rem 1.6rem;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:.7rem;
}
.vita-entry-date{font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding-top:.35rem;white-space:nowrap}
.vita-entry h4{font-family:var(--serif);font-size:1.3rem;font-weight:600;letter-spacing:-.01em;line-height:1.15}
.vita-entry-inst{font-size:.78rem;color:var(--ink-3);margin:.15rem 0 .4rem}
.vita-entry p{font-size:.92rem;line-height:1.6;color:var(--ink-2)}

/* Certificate lightbox */
.cert-modal{position:fixed;inset:0;background:rgba(27,26,23,.86);display:flex;align-items:center;justify-content:center;z-index:10000;opacity:0;pointer-events:none;transition:opacity .2s ease;padding:2rem}
.cert-modal.active{opacity:1;pointer-events:auto}
.cert-modal-inner{position:relative;max-width:min(900px,92vw);max-height:92vh}
.cert-modal img{display:block;max-width:100%;max-height:88vh;width:auto;height:auto;border-radius:8px;background:#fff;box-shadow:0 24px 80px rgba(0,0,0,.5)}
.cert-modal-close{position:absolute;top:-2.4rem;right:-.2rem;background:transparent;border:none;color:rgba(255,255,255,.85);font-size:2rem;font-weight:300;line-height:1;cursor:pointer;padding:.2rem .6rem}
.cert-modal-caption{position:absolute;bottom:-2.2rem;left:0;right:0;text-align:center;color:rgba(255,255,255,.75);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}

/* ═══════════════════════════════════════
   FINANCE — sub-nav + holdings
   ═══════════════════════════════════════ */
.fin-subnav{max-width:1120px;width:94vw;margin:0 auto 1.2rem;display:flex;gap:.3rem;padding:.25rem;width:fit-content;background:var(--surface-2);border:1px solid var(--line-2);border-radius:999px}
.fin-pill{font-size:.74rem;font-weight:500;letter-spacing:.04em;background:transparent;border:none;color:var(--ink-2);padding:.45rem 1rem;border-radius:999px;cursor:pointer;transition:background .15s ease,color .15s ease}
.fin-pill:hover{color:var(--ink)}
.fin-pill.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(27,26,23,.08)}
.fin-view{display:none}.fin-view.active{display:block}

.hold-wrap{max-width:960px;width:94vw;margin:0 auto;padding-bottom:3rem}
.hold-intro{font-size:.9rem;color:var(--ink-2);margin-bottom:1.2rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.hold-live{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);font-size:.6rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.hold-live.on{background:rgba(44,122,75,.1);border-color:rgba(44,122,75,.3);color:var(--green)}
.hold-live.off{background:rgba(177,58,44,.08);border-color:rgba(177,58,44,.3);color:var(--red)}
.hold-chart-wrap{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:1.6rem 1.8rem;margin-bottom:1.2rem;display:grid;grid-template-columns:270px 1fr;gap:2rem;align-items:center;
}
.hold-pie-box{position:relative;width:250px;height:250px;margin:0 auto}
.hold-pie{width:100%;height:100%;transform:rotate(-90deg);overflow:visible}
.hold-pie-slice{transition:opacity .15s ease;cursor:pointer}
.hold-pie:hover .hold-pie-slice{opacity:.55}
.hold-pie .hold-pie-slice:hover{opacity:1}
.hold-pie-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.hold-pie-center-lbl{font-size:.58rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
.hold-pie-center-val{font-family:var(--serif);font-size:1.9rem;font-weight:600;letter-spacing:-.01em;margin-top:.05rem;font-variant-numeric:tabular-nums}
.hold-pie-center-sub{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:.2rem}
.hold-legend{display:flex;flex-direction:column;gap:.15rem}
.hold-legend-item{display:grid;grid-template-columns:12px 1fr auto auto;gap:.7rem;align-items:center;padding:.38rem .55rem;border-radius:8px;transition:background .15s ease}
.hold-legend-item:hover{background:var(--surface-2)}
.hold-legend-sw{width:10px;height:10px;border-radius:3px}
.hold-legend-name{font-size:.84rem;display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;color:var(--ink)}
.hold-legend-name strong{font-weight:600}
.hold-legend-sub{font-size:.68rem;color:var(--ink-3)}
.hold-legend-gain{font-size:.76rem;font-weight:600;font-variant-numeric:tabular-nums;min-width:56px;text-align:right}
.hold-legend-pct{font-size:.84rem;font-weight:600;font-variant-numeric:tabular-nums;min-width:48px;text-align:right}
.up{color:var(--green)}.down{color:var(--red)}.muted{color:var(--ink-3)}

.hold-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:.8rem}
.hold-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.3rem}
.hold-card-hdr{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.35rem;flex-wrap:wrap}
.hold-card-t{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap}
.hold-card-tick{font-size:1rem;font-weight:600;letter-spacing:.02em}
.hold-card-name{font-family:var(--serif);font-size:1.05rem;color:var(--ink-2);font-style:italic}
.hold-card-tag{font-size:.58rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);border:1px solid var(--line);border-radius:999px;padding:1px 7px}
.hold-card-r{display:flex;align-items:baseline;gap:.7rem}
.hold-card-gain{font-size:.78rem;font-weight:600;font-variant-numeric:tabular-nums}
.hold-card-pct{font-size:.92rem;font-weight:600;font-variant-numeric:tabular-nums}
.hold-card-thesis{font-size:.88rem;line-height:1.6;color:var(--ink-2)}

/* ═══════════════════════════════════════
   STRESSBOARD (data dashboard)
   ═══════════════════════════════════════ */
.board-section{max-width:1120px;width:94vw;margin:0 auto;padding:0 0 4rem}
.gp{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.3rem;margin-bottom:.9rem}

.hdr{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}
.hdr-title{font-family:var(--serif);font-size:1.35rem;font-weight:600;letter-spacing:-.01em}
.hdr-title em{font-style:italic;color:var(--red)}
.hdr-r{display:flex;gap:.6rem;align-items:center}
.yh-badge{font-size:.62rem;color:var(--ink-3);display:flex;align-items:center;gap:5px;letter-spacing:.08em}
.yh-dot{width:7px;height:7px;border-radius:50%;background:var(--ink-3);flex-shrink:0}
.yh-dot.live{background:var(--green);animation:pdot 2s infinite}
.yh-dot.stale{background:var(--yellow)}.yh-dot.err{background:var(--red)}
@keyframes pdot{0%,100%{opacity:1}50%{opacity:.3}}
.btn{font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);padding:5px 12px;border-radius:999px;cursor:pointer;transition:all .15s}
.btn:hover{border-color:var(--ink);color:var(--ink)}.btn:disabled{opacity:.4;cursor:default}

.summary{display:flex;gap:.8rem;font-size:.78rem;font-weight:600;letter-spacing:.04em;margin-bottom:.5rem;flex-wrap:wrap}
.sc{color:var(--red)}.sw{color:var(--yellow)}.sn{color:var(--green)}.ss{color:var(--ink-3);font-weight:400}

.ev{display:flex;justify-content:space-between;align-items:center;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:.45rem .9rem}
.ev.imm{border-color:var(--yellow-soft)}.ev.live{border-color:var(--red-soft);animation:bflash .6s infinite}
@keyframes bflash{0%,100%{opacity:1}50%{opacity:.5}}
.ev-name{font-size:.68rem;font-weight:600;letter-spacing:.12em;color:var(--ink-2)}
.ev-name.imm{color:var(--yellow)}.ev-name.live{color:var(--red)}
.ev-date{font-size:.62rem;color:var(--ink-3)}
.ev-cd{font-size:.82rem;font-weight:600}
.ev-cd.imm{color:var(--yellow)}.ev-cd.live{color:var(--red)}

.sec-label{font-size:.64rem;font-weight:600;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase;margin-bottom:.4rem;display:flex;justify-content:space-between}
.pgrid{display:grid;gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:.75rem}
.pgrid.c2{grid-template-columns:repeat(2,1fr)}.pgrid.c3{grid-template-columns:repeat(3,1fr)}
.pgrid.c4{grid-template-columns:repeat(4,1fr)}.pgrid.c5{grid-template-columns:repeat(5,1fr)}
.pcell,.hl-cell{background:var(--surface);padding:.5rem .7rem;min-width:0}
.psym{font-size:.6rem;font-weight:600;letter-spacing:.08em;color:var(--ink-3);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pval{font-size:1.05rem;font-weight:600;font-variant-numeric:tabular-nums;transition:color .3s}
.pval.up{color:var(--green)}.pval.down{color:var(--red)}
.pchg{font-size:.62rem;color:var(--ink-3)}.pchg.up{color:var(--green)}.pchg.down{color:var(--red)}
.ptime{font-size:.58rem;color:var(--ink-3);opacity:.7;margin-top:1px}
.pstale{font-size:.58rem;color:var(--yellow);font-weight:600}
@keyframes tick{from{opacity:.4}to{opacity:1}}.tick-f{animation:tick .2s ease}

.top2{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-bottom:.9rem}
.top2 .gp{margin-bottom:0;min-width:0}
.top2.wide{grid-template-columns:3fr 2fr}

/* Yield curve */
.yc-h{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}
.yc-lbl{font-size:.64rem;font-weight:600;letter-spacing:.14em;color:var(--ink-3);text-transform:uppercase}
.yc-sub{font-size:.6rem;color:var(--ink-3);margin-top:1px}
.yc-sb{text-align:right}.yc-st{font-size:.6rem;color:var(--ink-3);letter-spacing:.06em}
.yc-sv{font-size:1.3rem;font-weight:600;font-variant-numeric:tabular-nums}
.yc-sv.inv{color:var(--red)}.yc-sv.flat{color:var(--yellow)}.yc-sv.ok{color:var(--green)}
.yc-ss{font-size:.58rem;color:var(--ink-3)}
.yc-cg{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden}
.yc-cc{background:var(--surface);padding:.5rem}
.yc-ch{font-size:.6rem;font-weight:600;letter-spacing:.08em;color:var(--ink-3);display:flex;justify-content:space-between;margin-bottom:3px}
.yc-cv{font-size:.88rem;font-weight:600;font-variant-numeric:tabular-nums}
.yc-cv.rising{color:var(--red)}.yc-cv.falling{color:var(--green)}
.yc-dc{font-size:.62rem;font-weight:500;letter-spacing:.04em;color:var(--ink-3);font-variant-numeric:tabular-nums;margin-bottom:2px}
.yc-dc.up{color:var(--red)}.yc-dc.down{color:var(--green)}
.yc-dc.shock{color:#fff;background:var(--red);padding:1px 6px;border-radius:6px;letter-spacing:.08em;text-transform:uppercase;display:inline-block;font-weight:600}
.yc-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);overflow:hidden;margin-top:.5rem}
.yc-strip-cell{background:var(--surface);padding:.4rem .5rem}
.yc-strip-lbl{font-size:.55rem;font-weight:600;letter-spacing:.1em;color:var(--ink-3);text-transform:uppercase}
.yc-strip-val{font-size:.78rem;font-weight:600;font-variant-numeric:tabular-nums;margin-top:1px}
.yc-strip-val.up{color:var(--red)}.yc-strip-val.down{color:var(--green)}
svg.spark{width:100%;height:44px;overflow:visible}
.spark-line{fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}
.spark-area{opacity:.1}.spark-dot{r:2.5px}
.spark-zero{stroke:var(--line);stroke-width:1px;stroke-dasharray:3,3}

/* Metric rows */
.cl{font-size:.62rem;font-weight:600;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase;padding-bottom:.2rem;margin:.75rem 0 .25rem;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between}
.cl:first-child{margin-top:0}
.pb{font-weight:400}.pb.fast{color:var(--yellow)}
.mr{display:flex;align-items:center;padding:4px 0;gap:.55rem;border-bottom:1px solid var(--line-2)}
.mr:last-child{border-bottom:none}
.md{width:8px;height:8px;flex-shrink:0;border-radius:2px;border:1px solid currentColor}
.md.concern{color:var(--red);background:var(--red)}.md.watch{color:var(--yellow);background:var(--yellow)}
.md.normal{color:var(--green);background:var(--green)}.md.loading{color:var(--ink-3);background:transparent;animation:pdot 1s infinite}
.mn{font-size:.8rem;flex:1}.ms{font-size:.6rem;color:var(--ink-3);display:block}
.mrt{display:flex;align-items:center;gap:.4rem}
.mv{font-size:.85rem;font-weight:600;min-width:55px;text-align:right;font-variant-numeric:tabular-nums}
.mv.concern{color:var(--red)}.mv.watch{color:var(--yellow)}.mv.normal{color:var(--green)}.mv.loading{color:var(--ink-3)}
.mst{font-size:.64rem;color:var(--ink-3);min-width:80px;text-align:right}
.mi{background:transparent;border:none;border-bottom:1px dashed var(--line);font-size:.85rem;font-weight:600;color:var(--green);width:55px;text-align:right;outline:none;padding:1px 2px}
.mi:focus{border-bottom-color:var(--ink)}

/* Oil */
.oil-section{margin-bottom:.9rem}
.oil-section .gp{margin-bottom:0}
.oil-tab-hdr{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}
.oil-tab-hdr h2{font-family:var(--serif);font-size:1.3rem;font-weight:600;letter-spacing:-.01em}
.oil-tab-hdr h2 em{font-style:italic;color:var(--yellow)}
.oil-badge{font-size:.58rem;font-weight:600;letter-spacing:.1em;color:var(--ink-3);border:1px solid var(--line);border-radius:999px;padding:2px 8px}
.oil-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem}
.hl-sym{font-size:.58rem;font-weight:600;letter-spacing:.08em;color:var(--ink-3);margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hl-row{display:flex;justify-content:space-between;align-items:baseline}
.hl-mark{font-size:1.02rem;font-weight:600;font-variant-numeric:tabular-nums}
.hl-funding{font-size:.58rem;font-weight:600;padding:1px 5px;border-radius:4px;letter-spacing:.03em}
.hl-funding.pos{color:var(--green);background:rgba(44,122,75,.1)}
.hl-funding.neg{color:var(--red);background:rgba(177,58,44,.1)}
.hl-funding.neutral{color:var(--ink-3);background:var(--surface-2)}
.hl-oracle{font-size:.55rem;color:var(--ink-3);margin-top:1px}
.oil-spread{display:flex;align-items:center;justify-content:space-between;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:.4rem .8rem;margin-top:.5rem}
.osp-label{font-size:.62rem;font-weight:600;letter-spacing:.1em;color:var(--ink-3);text-transform:uppercase}
.osp-val{font-size:1rem;font-weight:600;font-variant-numeric:tabular-nums}
.osp-val.contango{color:var(--red)}.osp-val.backw{color:var(--green)}.osp-val.neutral{color:var(--ink-3)}

/* Tooltip */
[data-tip]{cursor:help}
#global-tip{position:fixed;display:none;z-index:9999;pointer-events:none;background:var(--ink);color:#fff;font-size:.68rem;letter-spacing:.02em;line-height:1.5;padding:7px 11px;border-radius:8px;max-width:320px;white-space:pre-wrap;box-shadow:0 6px 20px rgba(0,0,0,.22);transition:opacity .12s ease;opacity:0}

.bfooter{display:flex;justify-content:space-between;align-items:center;padding-top:.5rem}
.bf-live{font-size:.62rem;color:var(--ink-3);letter-spacing:.06em;display:flex;align-items:center;gap:5px}
.bf-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pdot 1.5s infinite}
.bf-ts{font-size:.62rem;color:var(--ink-3)}

/* Macro table */
.macro-tbl-wrap{margin-top:.6rem;overflow-x:auto}
.macro-tbl{width:100%;border-collapse:collapse;font-size:.78rem}
.macro-tbl thead th{font-size:.58rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:.5rem .55rem;border-bottom:1px solid var(--line)}
.macro-tbl tbody td{padding:.45rem .35rem;font-variant-numeric:tabular-nums;vertical-align:middle}
.mc-row+.mc-row td{border-top:1px solid var(--line-2)}
.mc-reg{font-weight:500;display:flex;align-items:center;gap:.6rem;white-space:nowrap}
.mc-flag{font-size:1rem;line-height:1;width:1.4rem;display:inline-block;text-align:center}
.mc-i{background:transparent;border:1px solid transparent;border-radius:6px;padding:.25rem .4rem;font-size:.78rem;font-weight:500;font-variant-numeric:tabular-nums;width:84px;transition:border-color .15s ease,background .15s ease}
.mc-i.mc-iw{width:160px}
.mc-i:hover{border-color:var(--line);background:var(--surface-2)}
.mc-i:focus{outline:none;border-color:var(--ink);background:#fff}
.macro-foot{font-size:.62rem;color:var(--ink-3);margin-top:.6rem;line-height:1.5}

/* Mag 7 */
.mag7-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.4rem .6rem;margin-top:.4rem}
.mag7-cell{display:grid;grid-template-columns:52px minmax(56px,auto) auto 1fr;align-items:center;gap:.4rem;padding:.45rem .55rem;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--surface-2);cursor:pointer;transition:border-color .15s ease;min-width:0}
.mag7-cell:hover{border-color:var(--ink)}
.m7-tk{font-size:.74rem;font-weight:600;letter-spacing:.04em}
.m7-px{font-size:.84rem;font-weight:500;font-variant-numeric:tabular-nums}
.m7-chg{font-size:.7rem;font-weight:600;font-variant-numeric:tabular-nums}
.m7-chg.up{color:var(--green)}.m7-chg.down{color:var(--red)}.m7-chg.flat{color:var(--ink-3)}
.m7-spk{width:72px;max-width:100%;height:24px;grid-column:4;grid-row:1;justify-self:end}
.m7-pe{font-size:.62rem;color:var(--ink-3);grid-column:1/-1;display:flex;align-items:center;gap:.4rem}
.m7-pe-i{background:transparent;border:1px solid transparent;border-radius:5px;padding:1px 4px;font-size:.62rem;width:38px;font-variant-numeric:tabular-nums;text-align:right}
.m7-pe-i:hover{border-color:var(--line)}.m7-pe-i:focus{outline:none;border-color:var(--ink);background:#fff}
.m7-foot{font-size:.62rem;color:var(--ink-3);margin-top:.6rem}

.m7-modal{position:fixed;inset:0;background:rgba(27,26,23,.55);display:flex;align-items:center;justify-content:center;z-index:11000;opacity:0;pointer-events:none;transition:opacity .2s ease}
.m7-modal.active{opacity:1;pointer-events:auto}
.m7-modal-inner{position:relative;width:min(90vw,880px);max-height:88vh;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem 1.6rem;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:auto}
.m7-modal-close{position:absolute;top:.7rem;right:.8rem;width:32px;height:32px;border:none;background:var(--surface-2);border-radius:50%;font-size:1.1rem;cursor:pointer;line-height:1}
.m7-modal-close:hover{background:var(--surface-3)}
.m7-modal-hdr{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.6rem;margin-bottom:.4rem;padding-right:2.5rem}
.m7-modal-tk{font-family:var(--serif);font-size:1.7rem;font-weight:600;letter-spacing:-.02em}
.m7-modal-px{font-size:1.4rem;font-weight:600;font-variant-numeric:tabular-nums}
.m7-modal-px.up{color:var(--green)}.m7-modal-px.down{color:var(--red)}
.m7-modal-meta{font-size:.72rem;color:var(--ink-3)}
.m7-tf{display:flex;gap:.3rem;margin:.8rem 0 .6rem;flex-wrap:wrap}
.m7-tf-btn{font-size:.66rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.38rem .8rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);cursor:pointer;transition:all .15s ease}
.m7-tf-btn:hover{border-color:var(--ink)}
.m7-tf-btn.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.m7-chart-wrap{position:relative;width:100%;height:340px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:1rem .6rem .4rem;margin-bottom:.8rem}
.m7-chart-svg{width:100%;height:100%;overflow:visible}
.m7-chart-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.78rem;color:var(--ink-3);letter-spacing:.06em}
.m7-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;font-size:.72rem;font-variant-numeric:tabular-nums}
.m7-stat{padding:.4rem .55rem;background:var(--surface-2);border:1px solid var(--line-2);border-radius:8px}
.m7-stat-l{font-size:.55rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-weight:600}
.m7-stat-v{font-size:.85rem;font-weight:600;margin-top:1px}
.m7-stat-v.up{color:var(--green)}.m7-stat-v.down{color:var(--red)}

.us-stress-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem;margin-top:.4rem}
.us-stress-col{display:flex;flex-direction:column}

/* Feed status line */
.feed-note{font-size:.66rem;color:var(--ink-3);letter-spacing:.03em}
.feed-note.err{color:var(--red)}

/* ═══════════════════════════════════════
   RESPONSIVE
   ═══════════════════════════════════════ */
@media(max-width:860px){
  .hub-home-inner{grid-template-columns:1fr;text-align:center;gap:1.8rem;justify-items:center}
  .hub-tagline{margin-left:auto;margin-right:auto}
  .hub-nav{justify-content:center}
  .top2,.oil-grid,.us-stress-grid{grid-template-columns:1fr}
  .pgrid.c4{grid-template-columns:repeat(2,1fr)}
  .pgrid.c5{grid-template-columns:repeat(3,1fr)}
  .hold-cards{grid-template-columns:1fr}
  .hub-topbar-nav{display:none}
}
@media(max-width:600px){
  :root{--photo:170px}
  body{font-size:14px}
  .hub-home{padding:3rem 1.2rem 4rem}
  .hub-sec-hdr{padding-top:1.6rem}
  .hub-cards{grid-template-columns:1fr}
  .hub-card{padding:1.1rem 1.2rem}
  .gp{padding:.85rem .8rem}
  .pgrid.c3,.pgrid.c4,.pgrid.c5{grid-template-columns:repeat(2,1fr)}
  .pgrid.c2{grid-template-columns:1fr}
  .yc-cg{grid-template-columns:1fr}
  .yc-h{flex-direction:column;gap:.4rem}.yc-sb{text-align:left}
  .mag7-grid{grid-template-columns:1fr}
  .macro-tbl{font-size:.68rem}.mc-i{width:64px}.mc-i.mc-iw{width:120px}
  .hold-chart-wrap{grid-template-columns:1fr;gap:1.2rem;padding:1.2rem 1rem}
  .hold-pie-box{width:210px;height:210px}
  .hold-legend-item{grid-template-columns:12px 1fr auto auto;gap:.5rem;padding:.35rem .3rem}
  .vita-entry{grid-template-columns:1fr;gap:.3rem;padding:1rem 1.2rem}
  .m7-modal-inner{width:96vw;padding:1rem}
  .m7-chart-wrap{height:240px}
  .m7-stats{grid-template-columns:repeat(2,1fr)}
  .bfooter{flex-direction:column;gap:.3rem;align-items:flex-start}
  .ev{flex-direction:column;gap:.2rem;align-items:flex-start}
  footer{font-size:.6rem;right:1rem;bottom:.7rem}
}
@media(max-width:400px){
  .pgrid.c3,.pgrid.c4,.pgrid.c5{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .hub-home .rise{opacity:1;translate:0 0}
}
