/* ==========================================================================
   THE INVESTMENT CLUB — design system
   Image-free, data-dense, terminal-inspired. Dark is the default theme.
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,500&family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  /* ---- dark (default) ---- */
  --bg:            #0d1117;
  --surface:       #131a24;
  --surface-2:     #1a2230;
  --surface-3:     #212b3b;
  --border:        #29344a;
  --border-soft:   #1f2838;
  --ink:           #eef1f6;
  --ink-soft:      #aab4c5;
  --ink-faint:     #6f7a8f;
  --accent-green:  #5fb88a;
  --accent-red:    #d97b7b;
  --accent-amber:  #d9b26b;
  --accent-blue:   #6f9bd9;
  --accent-primary:#c9a24b;
  --shadow: 0 12px 32px rgba(0,0,0,.35);
  --radius: 3px;
  --radius-lg: 6px;
  --mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --serif: 'Fraunces', Georgia, serif;
  --max: 1280px;
  --gap: 24px;
}

[data-theme="light"]{
  --bg:            #f3efe6;
  --surface:       #fbf9f4;
  --surface-2:     #efe9db;
  --surface-3:     #e6dfcd;
  --border:        #d8cfb8;
  --border-soft:   #e2dac2;
  --ink:           #1c1a14;
  --ink-soft:      #52503f;
  --ink-faint:     #85806a;
  --accent-green:  #2f7a54;
  --accent-red:    #a83f3f;
  --accent-amber:  #93641f;
  --accent-blue:   #2e5ea1;
  --accent-primary:#7a5a1e;
  --shadow: 0 12px 32px rgba(30,25,10,.10);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:var(--sans); font-size:15px; line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
body.txt-large{ font-size:17px; }
body.txt-small{ font-size:13.5px; }
img{ display:none; } /* image-free by design */

a{ color:inherit; text-decoration:none; }
h1,h2,h3,h4{ font-family:var(--serif); font-weight:500; margin:0 0 .5em; line-height:1.15; letter-spacing:-.01em; }
h1{ font-size:clamp(2rem,4vw,3.4rem); }
h2{ font-size:clamp(1.5rem,2.6vw,2.1rem); }
h3{ font-size:1.25rem; }
p{ margin:0 0 1em; color:var(--ink-soft); }
.num{ font-family:var(--mono); font-variant-numeric:tabular-nums; }
.eyebrow{ font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-primary); }
.muted{ color:var(--ink-faint); }
.serif{ font-family:var(--serif); }
::selection{ background:var(--accent-primary); color:#0d1117; }

button{ font-family:inherit; cursor:pointer; }
input,select,textarea{ font-family:inherit; font-size:inherit; }

/* ---- layout ---- */
.wrap{ max-width:var(--max); margin:0 auto; padding:0 24px; }
.grid12{ display:grid; grid-template-columns:repeat(12,1fr); gap:var(--gap); }
@media (max-width:1024px){ .grid12{ grid-template-columns:repeat(8,1fr); } }
@media (max-width:640px){ .grid12{ grid-template-columns:repeat(4,1fr); gap:16px; } .wrap{ padding:0 16px; } }
section{ padding:56px 0; border-bottom:1px solid var(--border-soft); }
section.tight{ padding:32px 0; }
.section-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:28px; flex-wrap:wrap; }

/* ---- header ---- */
#site-header{
  position:sticky; top:0; z-index:60; background:color-mix(in srgb, var(--bg) 92%, transparent);
  backdrop-filter:blur(10px); border-bottom:1px solid var(--border-soft);
  transition:padding .2s ease;
}
.header-inner{ display:flex; align-items:center; justify-content:space-between; padding:20px 0; gap:20px; }
#site-header.compact .header-inner{ padding:11px 0; }
.brand{ display:flex; flex-direction:column; line-height:1.1; }
.brand-name{ font-family:var(--serif); font-size:19px; font-weight:600; letter-spacing:.01em; }
.brand-tag{ font-family:var(--mono); font-size:9.5px; letter-spacing:.12em; color:var(--ink-faint); text-transform:uppercase; margin-top:2px; }
#site-header.compact .brand-tag{ display:none; }
nav.primary-nav{ display:flex; gap:28px; }
nav.primary-nav a{ font-size:13px; letter-spacing:.03em; color:var(--ink-soft); font-weight:500; padding:6px 0; border-bottom:2px solid transparent; }
nav.primary-nav a:hover, nav.primary-nav a.active{ color:var(--ink); border-color:var(--accent-primary); }
.header-utility{ display:flex; align-items:center; gap:10px; }
@media (max-width:900px){ nav.primary-nav{ display:none; } }

.btn{
  display:inline-flex; align-items:center; gap:8px; justify-content:center;
  border:1px solid var(--border); background:var(--surface-2); color:var(--ink);
  padding:9px 16px; border-radius:var(--radius); font-size:13px; font-weight:600; letter-spacing:.02em;
  transition:all .15s ease; white-space:nowrap;
}
.btn:hover{ border-color:var(--accent-primary); color:var(--accent-primary); }
.btn-primary{ background:var(--accent-primary); border-color:var(--accent-primary); color:#151008; }
.btn-primary:hover{ filter:brightness(1.08); color:#151008; }
.btn-ghost{ background:transparent; border-color:transparent; }
.btn-ghost:hover{ background:var(--surface-2); border-color:var(--border); }
.btn-sm{ padding:6px 11px; font-size:12px; }
.btn:disabled{ opacity:.4; cursor:not-allowed; }
.icon-btn{ width:34px; height:34px; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--border); background:var(--surface-2); border-radius:var(--radius); color:var(--ink-soft); }
.icon-btn:hover{ color:var(--accent-primary); border-color:var(--accent-primary); }

/* ---- mobile nav ---- */
#mobile-nav-toggle{ display:none; }
@media (max-width:900px){ #mobile-nav-toggle{ display:inline-flex; } }
#mobile-nav{ position:fixed; inset:0; background:var(--bg); z-index:100; display:none; flex-direction:column; padding:20px; }
#mobile-nav.open{ display:flex; }
#mobile-nav .header-inner{ padding:0 0 24px; }
#mobile-nav a{ font-family:var(--serif); font-size:26px; padding:14px 0; border-bottom:1px solid var(--border-soft); color:var(--ink); }
#mobile-nav .mn-utility{ margin-top:auto; display:flex; gap:10px; }

/* ---- market ticker ---- */
#ticker{ background:var(--surface); border-bottom:1px solid var(--border-soft); overflow:hidden; white-space:nowrap; }
#ticker-track{ display:inline-flex; align-items:center; padding:8px 0; animation:ticker-scroll 38s linear infinite; }
#ticker:hover #ticker-track{ animation-play-state:paused; }
@keyframes ticker-scroll{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }
.ticker-item{ display:inline-flex; align-items:baseline; gap:8px; padding:0 20px; border-right:1px solid var(--border-soft); font-family:var(--mono); font-size:12.5px; background:none; border-top:none;border-bottom:none;border-left:none; color:var(--ink-soft); }
.ticker-item:hover{ color:var(--ink); }
.ticker-item .sym{ font-weight:600; color:var(--ink); letter-spacing:.03em; }
.up{ color:var(--accent-green); } .down{ color:var(--accent-red); } .flat{ color:var(--accent-amber); }

/* ---- badges / status ---- */
.badge{ display:inline-flex; align-items:center; gap:5px; font-family:var(--mono); font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; padding:3px 8px; border-radius:2px; border:1px solid var(--border); color:var(--ink-soft); }
.badge.pos{ color:var(--accent-green); border-color:color-mix(in srgb, var(--accent-green) 45%, var(--border)); }
.badge.neg{ color:var(--accent-red); border-color:color-mix(in srgb, var(--accent-red) 45%, var(--border)); }
.badge.watch{ color:var(--accent-amber); border-color:color-mix(in srgb, var(--accent-amber) 45%, var(--border)); }
.badge.info{ color:var(--accent-blue); border-color:color-mix(in srgb, var(--accent-blue) 45%, var(--border)); }
.dot{ width:6px; height:6px; border-radius:50%; background:currentColor; display:inline-block; }

/* ---- cards / panels ---- */
.card{ background:var(--surface); border:1px solid var(--border-soft); border-radius:var(--radius-lg); padding:22px; }
.panel-label{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:6px; }
.metric{ font-family:var(--mono); font-size:1.9rem; font-weight:600; letter-spacing:-.01em; }
.metric-sm{ font-family:var(--mono); font-size:1.2rem; font-weight:600; }
.metric-row{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }

.disclaimer{ background:var(--surface-2); border:1px dashed var(--border); border-radius:var(--radius); padding:12px 16px; font-family:var(--mono); font-size:11.5px; color:var(--ink-faint); line-height:1.6; }

/* ---- tabs / range controls ---- */
.tabbar{ display:inline-flex; border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.tabbar button{ background:var(--surface); border:none; color:var(--ink-soft); padding:7px 14px; font-family:var(--mono); font-size:12px; border-right:1px solid var(--border); }
.tabbar button:last-child{ border-right:none; }
.tabbar button.active{ background:var(--accent-primary); color:#151008; font-weight:600; }
.tabbar button:hover:not(.active){ background:var(--surface-2); color:var(--ink); }
.toggle{ display:inline-flex; align-items:center; gap:8px; font-size:12.5px; color:var(--ink-soft); user-select:none; cursor:pointer; }
.toggle input{ accent-color:var(--accent-primary); width:15px; height:15px; }

/* ---- charts ---- */
.chart-wrap{ width:100%; overflow:visible; }
.chart-wrap svg{ width:100%; height:auto; display:block; }
.chart-tooltip{ position:absolute; background:var(--surface-3); border:1px solid var(--border); padding:8px 10px; font-family:var(--mono); font-size:11.5px; border-radius:3px; pointer-events:none; box-shadow:var(--shadow); z-index:5; white-space:nowrap; }
.chart-legend{ display:flex; gap:16px; font-family:var(--mono); font-size:11.5px; color:var(--ink-soft); margin-top:10px; flex-wrap:wrap; }
.chart-legend span{ display:inline-flex; align-items:center; gap:6px; }
.chart-legend i{ width:12px; height:3px; display:inline-block; border-radius:2px; }
.sr-only{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }

/* ---- tables ---- */
.table-wrap{ overflow-x:auto; border:1px solid var(--border-soft); border-radius:var(--radius-lg); }
table{ width:100%; border-collapse:collapse; min-width:640px; font-size:13px; }
thead th{ text-align:left; font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-faint); padding:12px 14px; border-bottom:1px solid var(--border); background:var(--surface); position:sticky; top:0; white-space:nowrap; }
thead th.sortable{ cursor:pointer; user-select:none; }
thead th.sortable:hover{ color:var(--ink); }
thead th .arrow{ opacity:.5; margin-left:4px; }
tbody td{ padding:12px 14px; border-bottom:1px solid var(--border-soft); white-space:nowrap; }
tbody tr{ background:var(--surface); transition:background .12s; }
tbody tr:hover{ background:var(--surface-2); cursor:pointer; }
tbody tr:last-child td{ border-bottom:none; }
td.num,th.num{ text-align:right; font-family:var(--mono); }

/* ---- forms ---- */
.field{ margin-bottom:16px; display:flex; flex-direction:column; gap:6px; }
.field label{ font-size:12px; font-family:var(--mono); text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); }
.field input, .field select, .field textarea{
  background:var(--surface-2); border:1px solid var(--border); border-radius:var(--radius); color:var(--ink);
  padding:10px 12px; font-size:14px;
}
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--accent-primary); }
.field .error{ color:var(--accent-red); font-size:12px; display:none; }
.field.has-error input, .field.has-error select{ border-color:var(--accent-red); }
.field.has-error .error{ display:block; }
.radio-row{ display:flex; gap:10px; flex-wrap:wrap; }
.radio-row label{ display:flex; align-items:center; gap:7px; border:1px solid var(--border); padding:8px 12px; border-radius:var(--radius); font-size:13px; color:var(--ink-soft); cursor:pointer; }
.radio-row input{ accent-color:var(--accent-primary); }
.radio-row input:checked + span{ color:var(--ink); }

/* ---- allocation bars ---- */
.alloc-bar{ display:flex; height:34px; border-radius:var(--radius); overflow:hidden; border:1px solid var(--border-soft); }
.alloc-seg{ display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:10.5px; color:#0d1117; cursor:pointer; transition:filter .15s; min-width:2px; }
.alloc-seg:hover{ filter:brightness(1.12); }
.alloc-key{ display:flex; flex-wrap:wrap; gap:14px; margin-top:14px; }
.alloc-key button{ background:none; border:none; display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--ink-soft); padding:0; }
.alloc-key button.active{ color:var(--ink); font-weight:600; }
.alloc-key i{ width:10px; height:10px; border-radius:2px; display:inline-block; }

/* ---- heatmap ---- */
.heatmap{ display:grid; grid-template-columns:repeat(6,1fr); gap:6px; }
@media (max-width:640px){ .heatmap{ grid-template-columns:repeat(2,1fr); } }
.heat-tile{ border-radius:var(--radius); padding:12px; border:1px solid var(--border-soft); text-align:left; font-family:var(--mono); }
.heat-tile .t{ font-size:12px; font-weight:700; }
.heat-tile .r{ font-size:14px; margin-top:6px; }

/* ---- lists / index ---- */
.index-row{ display:flex; justify-content:space-between; gap:16px; padding:20px 0; border-bottom:1px solid var(--border-soft); }
.index-row:hover .idx-title{ color:var(--accent-primary); }
.idx-num{ font-family:var(--mono); color:var(--ink-faint); font-size:12px; width:34px; flex-shrink:0; }
.idx-title{ font-family:var(--serif); font-size:1.1rem; }
.idx-meta{ font-family:var(--mono); font-size:11px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.05em; margin-top:4px; }

/* ---- pills / filters ---- */
.pillbar{ display:flex; flex-wrap:wrap; gap:8px; }
.pill{ border:1px solid var(--border); background:var(--surface); color:var(--ink-soft); padding:6px 13px; border-radius:99px; font-size:12px; }
.pill.active{ background:var(--accent-primary); border-color:var(--accent-primary); color:#151008; font-weight:600; }

/* ---- toast ---- */
#toast-stack{ position:fixed; bottom:20px; right:20px; z-index:200; display:flex; flex-direction:column; gap:10px; }
.toast{ background:var(--surface-3); border:1px solid var(--border); color:var(--ink); padding:12px 16px; border-radius:var(--radius); font-size:13px; box-shadow:var(--shadow); animation:toast-in .2s ease; }
@keyframes toast-in{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none;} }

/* ---- command palette ---- */
#cmdk-backdrop{ position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:300; display:none; align-items:flex-start; justify-content:center; padding-top:12vh; }
#cmdk-backdrop.open{ display:flex; }
#cmdk{ width:min(560px,90vw); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow); overflow:hidden; }
#cmdk input{ width:100%; border:none; background:var(--surface-2); color:var(--ink); padding:16px; font-size:15px; border-bottom:1px solid var(--border-soft); }
#cmdk input:focus{ outline:none; }
#cmdk-list{ max-height:340px; overflow-y:auto; }
#cmdk-list .cmdk-item{ padding:12px 16px; font-size:13.5px; color:var(--ink-soft); cursor:pointer; display:flex; justify-content:space-between; }
#cmdk-list .cmdk-item.active{ background:var(--surface-2); color:var(--ink); }

/* ---- modal ---- */
.modal-backdrop{ position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:250; display:none; align-items:center; justify-content:center; padding:20px; }
.modal-backdrop.open{ display:flex; }
.modal{ width:min(420px,100%); background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); padding:24px; box-shadow:var(--shadow); }
.modal-actions{ display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }

/* ---- footer ---- */
footer{ padding:48px 0 90px; }
footer .fgrid{ display:flex; justify-content:space-between; gap:24px; flex-wrap:wrap; }
footer nav{ display:flex; gap:20px; flex-wrap:wrap; }
footer a{ color:var(--ink-faint); font-size:12.5px; }
footer a:hover{ color:var(--ink); }
.fine{ font-family:var(--mono); font-size:11px; color:var(--ink-faint); margin-top:24px; line-height:1.7; }

/* ---- misc ---- */
.hr{ height:1px; background:var(--border-soft); border:none; margin:32px 0; }
.empty-state{ text-align:center; padding:60px 20px; color:var(--ink-faint); }
.empty-state .btn{ margin-top:14px; }
.skip-link{ position:absolute; left:-999px; top:0; background:var(--accent-primary); color:#151008; padding:10px 16px; z-index:400; }
.skip-link:focus{ left:16px; top:16px; }
:focus-visible{ outline:2px solid var(--accent-primary); outline-offset:2px; }
@media (prefers-reduced-motion: reduce){ *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; } }

.principle-wheel{ display:grid; grid-template-columns:repeat(6,1fr); gap:8px; }
@media (max-width:640px){ .principle-wheel{ grid-template-columns:repeat(2,1fr); } }
.principle-btn{ background:var(--surface); border:1px solid var(--border-soft); border-radius:var(--radius); padding:14px 10px; text-align:left; }
.principle-btn.active{ border-color:var(--accent-primary); background:var(--surface-2); }
.principle-btn .n{ font-family:var(--mono); color:var(--accent-primary); font-size:11px; }
.principle-btn .t{ font-size:12.5px; font-weight:600; margin-top:4px; }

.slider-row{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.slider-row label{ width:110px; font-size:12.5px; color:var(--ink-soft); flex-shrink:0; }
.slider-row input[type=range]{ flex:1; accent-color:var(--accent-primary); }
.slider-row .val{ width:56px; text-align:right; font-family:var(--mono); font-size:13px; }

.quiz-choice{ display:block; width:100%; text-align:left; border:1px solid var(--border); background:var(--surface); color:var(--ink-soft); padding:12px 14px; border-radius:var(--radius); margin-bottom:8px; }
.quiz-choice.selected{ border-color:var(--accent-blue); }
.quiz-choice.correct{ border-color:var(--accent-green); color:var(--accent-green); }
.quiz-choice.incorrect{ border-color:var(--accent-red); color:var(--accent-red); }
.quiz-choice:disabled{ cursor:default; }

.toc{ position:sticky; top:100px; }
.toc a{ display:block; font-size:12.5px; color:var(--ink-faint); padding:6px 0; border-left:2px solid var(--border-soft); padding-left:12px; }
.toc a.active{ color:var(--accent-primary); border-color:var(--accent-primary); }

.reading-controls{ display:flex; gap:18px; flex-wrap:wrap; align-items:center; }

.tier-card{ border:1px solid var(--border-soft); border-radius:var(--radius-lg); padding:26px; display:flex; flex-direction:column; background:var(--surface); }
.tier-card.featured{ border-color:var(--accent-primary); background:var(--surface-2); }
.tier-card ul{ list-style:none; padding:0; margin:20px 0; flex:1; }
.tier-card li{ padding:9px 0; border-bottom:1px solid var(--border-soft); font-size:13px; color:var(--ink-soft); }
.tier-card li:last-child{ border:none; }

.market-strip-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
@media (max-width:900px){ .market-strip-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .market-strip-grid{ grid-template-columns:1fr 1fr; } }
