/* ============================================================
   FALCON — design system "Still, until it isn't"
   Obsidian dark-first · un solo accento ambra (the strike)
   Archivo + IBM Plex Mono · zero emoji · halt = acciaio, mai rosso
   ============================================================ */
:root{
  /* base — obsidian (dark-first) */
  --obsidian-0:#090909; --obsidian-1:#0F0F0E; --obsidian-2:#151513; --obsidian-3:#1C1B18;
  --line-1:#262520; --line-2:#35332B;
  --bone-0:#EAE6DC; --bone-1:#C6C2B6; --bone-2:#8F8C82; --bone-3:#5B594F;
  --amber-0:#F5B857; --amber-1:#EBA53C; --amber-2:#9C6A1E;
  --jade-1:#63A388; --oxide-1:#C25E48; --steel-1:#8299AC;

  --bg-page:var(--obsidian-0); --bg-surface:var(--obsidian-1);
  --bg-card:var(--obsidian-2); --bg-raised:var(--obsidian-3);
  --border-1:var(--line-1); --border-2:var(--line-2);
  --text-primary:var(--bone-0); --text-secondary:var(--bone-1);
  --text-muted:var(--bone-2); --text-faint:var(--bone-3);

  --accent:var(--amber-1); --accent-hover:var(--amber-0); --accent-deep:var(--amber-2);
  --accent-dim:rgba(235,165,60,.13); --on-accent:#16130B;

  --signal-gain:var(--jade-1);   --signal-gain-dim:rgba(99,163,136,.12);
  --signal-loss:var(--oxide-1);  --signal-loss-dim:rgba(194,94,72,.12);
  --signal-watch:var(--amber-1); --signal-watch-dim:rgba(235,165,60,.12);
  --signal-halt:var(--steel-1);  --signal-halt-dim:rgba(130,153,172,.12);

  --focus-ring:0 0 0 1px var(--bg-page),0 0 0 3px var(--amber-2);
  --scrim:rgba(5,5,4,.62);

  --font-display:'Archivo',system-ui,sans-serif;
  --font-text:'Archivo',system-ui,sans-serif;
  --font-mono:'IBM Plex Mono',ui-monospace,monospace;
  --text-xs:11px; --text-sm:12.5px; --text-base:14px; --text-md:16px;
  --text-lg:20px; --text-xl:26px; --text-2xl:36px; --text-display:52px;
  --leading-tight:1.1; --leading-snug:1.3; --leading-body:1.55;
  --track-label:.14em; --track-wordmark:.34em; --track-display:-.01em;

  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px;
  --space-6:24px; --space-7:32px; --space-8:40px;
  --pad-card:20px; --gutter:24px; --max-content:1280px;

  --radius-1:2px; --radius-2:4px; --radius-3:8px; --radius-pill:999px;
  --edge-inner:inset 0 0 0 1px rgba(234,230,220,.03);
  --shadow-overlay:0 24px 64px rgba(0,0,0,.55),0 2px 8px rgba(0,0,0,.4);
  --glow-strike:0 0 0 1px var(--amber-2),0 0 24px rgba(235,165,60,.18);

  --ease-strike:cubic-bezier(.16,1,.3,1);
  --ease-exit:cubic-bezier(.6,0,.85,.25);
  --dur-1:90ms; --dur-2:160ms; --dur-3:260ms;
}
[data-theme="light"]{
  --bg-page:#F1EDE3; --bg-surface:#F6F3EA; --bg-card:#FBF9F2; --bg-raised:#FFFFFF;
  --border-1:#DED8C9; --border-2:#C9C2AE;
  --text-primary:#161510; --text-secondary:#3E3C33; --text-muted:#777466; --text-faint:#A5A192;
  --accent:#A97417; --accent-hover:#8A5D10; --accent-deep:#E9BE72; --accent-dim:rgba(169,116,23,.12);
  --on-accent:#FFFDF6;
  --signal-gain:#33715A; --signal-gain-dim:rgba(51,113,90,.12);
  --signal-loss:#9E4630; --signal-loss-dim:rgba(158,70,48,.12);
  --signal-watch:#A97417; --signal-watch-dim:rgba(169,116,23,.14);
  --signal-halt:#4F6C82; --signal-halt-dim:rgba(79,108,130,.14);
  --focus-ring:0 0 0 1px var(--bg-page),0 0 0 3px #C99B3F;
  --scrim:rgba(30,28,20,.4);
}
@media (prefers-reduced-motion:reduce){:root{--dur-1:0ms;--dur-2:0ms;--dur-3:0ms}}

*{box-sizing:border-box;}
body{margin:0;background:var(--bg-page);color:var(--text-primary);
  font-family:var(--font-text);font-size:var(--text-base);line-height:var(--leading-body);
  -webkit-font-smoothing:antialiased;}
a{color:var(--accent);text-decoration:none;}
a:hover{color:var(--accent-hover);}
::selection{background:var(--accent);color:var(--on-accent);}
code,pre,.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:var(--track-display);}

main{max-width:var(--max-content);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-8);}

/* ---------- micro-label ---------- */
.microlabel,.tlabel,ul.limits span,.filters label,.logincard label,
.tbl th,.metric span{
  font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:var(--track-label);text-transform:uppercase;
  color:var(--text-muted);font-weight:500;font-variant-numeric:normal;}

/* ---------- topbar ---------- */
.top{display:flex;align-items:center;gap:var(--space-5);height:56px;
  background:var(--bg-surface);border-bottom:1px solid var(--border-1);
  padding:0 var(--space-6);position:sticky;top:0;z-index:20;}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);
  font-weight:600;font-size:13px;letter-spacing:var(--track-wordmark);
  margin-right:calc(var(--track-wordmark) * -1);color:var(--text-primary);}
.brand svg{width:22px;height:22px;display:block;flex:none;}
.topdiv{width:1px;height:22px;background:var(--border-2);}
.mainnav{display:flex;gap:2px;flex:1;height:100%;align-items:stretch;}
.mainnav a{display:flex;align-items:center;color:var(--text-muted);
  font-size:13px;font-weight:500;padding:0 14px;position:relative;
  transition:color var(--dur-1) var(--ease-strike);}
.mainnav a:hover{color:var(--text-secondary);}
.mainnav a.on{color:var(--text-primary);}
.mainnav a.on::after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;
  height:2px;background:var(--accent);}
.userbox{display:flex;align-items:center;gap:var(--space-3);}
.utcclock{font-family:var(--font-mono);font-size:12px;color:var(--text-faint);
  font-variant-numeric:tabular-nums;}
.uname{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary);}
.themebtn{background:transparent;border:1px solid var(--border-1);color:var(--text-muted);
  width:28px;height:28px;border-radius:var(--radius-2);cursor:pointer;font-size:14px;
  display:inline-flex;align-items:center;justify-content:center;padding:0;}
.themebtn:hover{border-color:var(--border-2);color:var(--text-secondary);}
.modechip{font-family:var(--font-mono);font-size:10.5px;font-weight:500;
  letter-spacing:.1em;padding:3px 8px;border-radius:var(--radius-1);}
.modechip.paper{background:var(--bg-raised);color:var(--text-muted);border:1px solid var(--border-1);}
.modechip.live{background:var(--accent-dim);color:var(--accent);border:1px solid var(--accent-deep);}

/* ---------- status light ---------- */
.statuslight{display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-mono);font-size:12px;font-weight:500;
  letter-spacing:.08em;text-transform:uppercase;}
.statuslight .dot{width:8px;height:8px;border-radius:var(--radius-pill);flex:none;}
.statuslight.armed{color:var(--accent);} .statuslight.armed .dot{background:var(--accent);}
.statuslight.armed .dot{animation:breathe 3.2s var(--ease-strike) infinite;}
.statuslight.inpos{color:var(--signal-gain);} .statuslight.inpos .dot{background:var(--signal-gain);}
.statuslight.halt{color:var(--signal-halt);} .statuslight.halt .dot{background:var(--signal-halt);}
.statuslight.flat{color:var(--text-muted);} .statuslight.flat .dot{background:var(--text-muted);}
@keyframes breathe{0%,100%{opacity:1;}50%{opacity:.35;}}

/* ---------- cards ---------- */
.card{background:var(--bg-card);border:1px solid var(--border-1);
  border-radius:var(--radius-2);padding:var(--pad-card);margin-bottom:var(--space-4);
  box-shadow:var(--edge-inner);}
.card.highlight{border-color:var(--accent-deep);box-shadow:var(--edge-inner),0 0 0 1px var(--accent-deep);}
.grid{display:grid;gap:var(--space-4);}
.grid.tiles{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));}
.grid.two{grid-template-columns:minmax(0,2.1fr) minmax(0,1fr);}
@media (max-width:900px){.grid.two{grid-template-columns:1fr;}}
.cardhead{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin:-2px 0 var(--space-4);padding-bottom:var(--space-3);
  border-bottom:1px solid var(--border-1);}
.cardhead h2{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;
  letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-muted);margin:0;}
.cardhead > div{display:flex;align-items:center;gap:var(--space-2);}
.pagehead{display:flex;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-5);}
.pagehead h1{font-size:var(--text-lg);margin:0;font-weight:600;}

/* ---------- stat / tile / hero ---------- */
.tile{display:flex;flex-direction:column;gap:6px;margin-bottom:0;}
.hero{font-family:var(--font-mono);font-variant-numeric:tabular-nums;
  font-size:var(--text-2xl);font-weight:500;line-height:var(--leading-tight);
  color:var(--text-primary);letter-spacing:-.01em;}
.hero .unit{font-size:var(--text-base);color:var(--text-muted);margin-left:4px;}
.tile-actions{margin-top:auto;padding-top:var(--space-3);}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:var(--space-2);margin-top:var(--space-4);}
.metric{background:var(--bg-surface);border:1px solid var(--border-1);
  border-radius:var(--radius-2);padding:10px 12px;display:flex;flex-direction:column;gap:3px;}
.metric b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;
  font-size:var(--text-md);font-weight:500;color:var(--text-primary);}
.metric b.good{color:var(--signal-gain);} .metric b.bad{color:var(--signal-loss);}

/* ---------- delta / numbers ---------- */
.delta,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
.good{color:var(--signal-gain);} .bad{color:var(--signal-loss);}
.warn{color:var(--signal-watch);}

/* ---------- chips / badges / tags ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);
  font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;font-weight:500;
  padding:3px 8px;border-radius:var(--radius-1);
  background:var(--bg-raised);color:var(--text-muted);border:1px solid var(--border-1);}
.chip.good{background:var(--signal-gain-dim);color:var(--signal-gain);border-color:transparent;}
.chip.bad{background:var(--signal-loss-dim);color:var(--signal-loss);border-color:transparent;}
.chip.watch{background:var(--signal-watch-dim);color:var(--signal-watch);border-color:transparent;}
.chip.halt{background:var(--signal-halt-dim);color:var(--signal-halt);border-color:transparent;}
.chip.mod{background:var(--bg-raised);color:var(--text-secondary);border-color:var(--border-1);}
.chip.lv.warn{background:var(--signal-watch-dim);color:var(--signal-watch);border-color:transparent;}
.chip.lv.error{background:var(--signal-loss-dim);color:var(--signal-loss);border-color:transparent;}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap;
  font-family:var(--font-text);font-size:13.5px;font-weight:500;
  border:1px solid transparent;border-radius:var(--radius-2);padding:8px 16px;
  color:var(--text-primary);transition:background var(--dur-1) var(--ease-strike),
  border-color var(--dur-1) var(--ease-strike);}
.btn.primary{background:var(--accent);color:var(--on-accent);}
.btn.primary:hover{background:var(--accent-hover);}
.btn.armed{box-shadow:var(--glow-strike);}
.btn.secondary,a.ghost.btn{background:var(--bg-raised);border-color:var(--border-2);color:var(--text-secondary);}
.btn.ghost{background:transparent;border-color:var(--border-1);color:var(--text-muted);}
.btn.ghost:hover{border-color:var(--border-2);color:var(--text-secondary);}
.btn.danger{background:transparent;border-color:var(--signal-loss);color:var(--signal-loss);}
.btn.danger:hover{background:var(--signal-loss-dim);}
.btn.small{font-size:12.5px;padding:5px 12px;}
.btn.wide{width:100%;justify-content:center;}
.btn:active{transform:none;filter:brightness(.92);}
a.ghost{color:var(--text-muted);font-size:12.5px;font-family:var(--font-mono);}
a.ghost:hover{color:var(--text-secondary);}
.inline{display:inline;}

/* conferma a due passi (niente alert nativo) */
details.confirm summary{list-style:none;}
details.confirm summary::-webkit-details-marker{display:none;}
details.confirm[open] summary{opacity:.4;pointer-events:none;}
details.confirm form{margin-top:10px;padding:14px;border:1px solid var(--border-2);
  border-radius:var(--radius-2);background:var(--bg-surface);}
details.confirm p{margin:0 0 10px;color:var(--text-secondary);}

/* ---------- limits list ---------- */
ul.limits{list-style:none;margin:0;padding:0;}
ul.limits li{display:flex;justify-content:space-between;gap:10px;padding:7px 0;
  border-bottom:1px solid var(--border-1);font-size:13px;}
ul.limits li:last-child{border-bottom:0;}
ul.limits b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;
  color:var(--text-primary);font-weight:500;}

/* ---------- tables ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:13px;}
.tbl th{text-align:left;padding:0 10px 10px;border-bottom:1px solid var(--border-1);font-weight:500;}
.tbl td{padding:9px 10px;border-bottom:1px solid var(--border-1);vertical-align:top;
  color:var(--text-secondary);}
.tbl td:first-child,.tbl .num,.tbl td.num{font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;color:var(--text-primary);}
.tbl tr:last-child td{border-bottom:0;}
.tbl.compact td,.tbl.compact th{padding:5px 8px;}
.nowrap{white-space:nowrap;}
tr.lv-error td{background:var(--signal-loss-dim);}
tr.lv-warn td{background:var(--signal-watch-dim);}

/* ---------- sparkline / data-viz ---------- */
.spark{position:relative;}
.spark svg{width:100%;height:96px;display:block;}
.spark .line{fill:none;stroke:var(--bone-1);stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round;}
.spark .area{fill:rgba(194,94,72,.05);stroke:none;}
.spark .lastdot{fill:var(--accent);stroke:var(--bg-card);stroke-width:2;}
.spark .crosshair{stroke:var(--border-2);stroke-width:1;stroke-dasharray:2 3;}
.spark .hoverdot{fill:var(--bg-card);stroke:var(--accent);stroke-width:2;}
.sparktip{position:absolute;display:none;z-index:50;pointer-events:none;
  background:var(--obsidian-3);color:var(--text-primary);border:1px solid var(--border-2);
  border-radius:var(--radius-2);padding:6px 9px;font-family:var(--font-mono);font-size:10.5px;
  box-shadow:var(--shadow-overlay);}
.sparktip b{display:block;font-size:12px;font-variant-numeric:tabular-nums;}
.sparktip span{color:var(--text-muted);}

/* ---------- banner / flash / empty ---------- */
.banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  background:var(--signal-halt-dim);border:1px solid var(--signal-halt);
  border-radius:var(--radius-2);padding:12px 16px;margin-bottom:var(--space-4);
  font-family:var(--font-mono);font-size:12.5px;color:var(--signal-halt);letter-spacing:.03em;}
.flash{border-radius:var(--radius-2);padding:10px 14px;margin-bottom:var(--space-4);
  font-size:13px;font-weight:500;border:1px solid var(--border-2);}
.flash.ok{background:var(--signal-gain-dim);color:var(--signal-gain);border-color:transparent;}
.flash.bad{background:var(--signal-loss-dim);color:var(--signal-loss);border-color:transparent;}
.empty{text-align:center;padding:var(--space-7) var(--space-3);color:var(--text-muted);}
.empty p{margin:4px 0;}

/* ---------- filters / inputs ---------- */
.filters{display:flex;gap:var(--space-4);align-items:flex-end;flex-wrap:wrap;}
.filters label,.logincard label{display:flex;flex-direction:column;gap:5px;}
select,input{font-family:var(--font-text);font-size:13.5px;color:var(--text-primary);
  border:1px solid var(--border-2);border-radius:var(--radius-2);padding:8px 12px;
  background:var(--bg-surface);min-width:150px;}
input.num,input[inputmode="decimal"]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
select:focus,input:focus{outline:none;border-color:var(--accent-deep);box-shadow:var(--focus-ring);}

/* ---------- login ---------- */
.loginwrap{display:flex;justify-content:center;padding:var(--space-8) 0;min-height:70vh;align-items:center;}
.logincard{width:360px;}
.logincard .brand{font-size:20px;margin-bottom:var(--space-2);}
.logincard form{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-4);}

/* ---------- ricerca ---------- */
.verdict{border-left:2px solid var(--accent);}
.mcgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:var(--space-3);margin:var(--space-4) 0;}
.mccol{background:var(--bg-surface);border:1px solid var(--border-1);
  border-radius:var(--radius-2);padding:14px;text-align:center;}
.mcbig{font-family:var(--font-mono);font-variant-numeric:tabular-nums;
  font-size:var(--text-xl);font-weight:500;line-height:1.1;margin:6px 0 2px;}
.mcbig.good{color:var(--signal-gain);} .mcbig.warn{color:var(--signal-watch);} .mcbig.bad{color:var(--signal-loss);}
.mcsub{margin-top:4px;} .mcsub b{color:var(--text-primary);font-family:var(--font-mono);}
code{background:var(--bg-raised);padding:1px 6px;border-radius:var(--radius-1);
  font-size:12px;color:var(--text-secondary);border:1px solid var(--border-1);}

/* ---------- market / portafoglio ---------- */
.market .mkhead{display:flex;justify-content:space-between;align-items:flex-start;
  gap:12px;margin-bottom:var(--space-2);}
.mkmeta{margin-top:6px;}
.tableview{margin-top:var(--space-2);}
.tableview summary{cursor:pointer;color:var(--text-muted);}

/* ---------- footer ---------- */
.foot{max-width:var(--max-content);margin:var(--space-4) auto var(--space-8);
  padding:0 var(--space-5);color:var(--text-faint);
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;
  display:flex;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;}
.foot .manifesto{text-transform:uppercase;}

/* ---------- utility ---------- */
.muted{color:var(--text-muted);} .faint{color:var(--text-faint);}
.small{font-size:12.5px;}
.mono{font-family:var(--font-mono);}
