/* Layout: sticky ledger header + stock ticker, tabbed desk below; railroad-schematic map as the signature piece */
:root{
  --paper:#ECEFE8; --card:#F8F9F5; --sunk:#E2E6DD; --ink:#1B2440; --muted:#5A6276; --line:#CBD1C6;
  --accent:#B1661A; --accent-ink:#FFFFFF; --accent-soft:#F1E1CC;
  --good:#2D7A4C; --bad:#B0372E; --rail:#9AA39A; --city:#1B2440;
  --f-display:"Big Shoulders Display", "Arial Narrow", Impact, sans-serif;
  --f-body:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;
  --f-mono:"IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;
  /* alias-uri folosite de componentele noi (hartă pe zone, forum, admin) */
  --bg:var(--paper); --surface:var(--card); --surface-2:var(--sunk);
  --line-2:color-mix(in srgb, var(--ink) 22%, var(--line)); --faint:var(--muted);
  --accent-line:color-mix(in srgb, var(--accent) 45%, transparent);
  --good-soft:color-mix(in srgb, var(--good) 12%, transparent); --bad-soft:color-mix(in srgb, var(--bad) 12%, transparent);
  --r-sm:4px; --r:4px; --r-lg:6px; --ease:ease; --shadow:none; --shadow-lg:0 20px 50px rgba(0,0,0,.3);
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --paper:#11151E; --card:#191F2C; --sunk:#0D1018; --ink:#E5E7EE; --muted:#99A0B1; --line:#2B3344;
  --accent:#E3953C; --accent-ink:#1A1206; --accent-soft:#3A2A16;
  --good:#5DBE89; --bad:#E7695D; --rail:#3D4658; --city:#E5E7EE; color-scheme:dark } }
:root[data-theme="dark"]{
  --paper:#11151E; --card:#191F2C; --sunk:#0D1018; --ink:#E5E7EE; --muted:#99A0B1; --line:#2B3344;
  --accent:#E3953C; --accent-ink:#1A1206; --accent-soft:#3A2A16;
  --good:#5DBE89; --bad:#E7695D; --rail:#3D4658; --city:#E5E7EE; color-scheme:dark }

*{box-sizing:border-box}
html{color-scheme:light; -webkit-text-size-adjust:100%}
body{margin:0; background:var(--paper); color:var(--ink); font-family:var(--f-body); font-size:14px; line-height:1.45}
[hidden]{display:none!important}
img{max-width:100%}
button,input,select,textarea{font:inherit; color:inherit}
.num{font-family:var(--f-mono); font-variant-numeric:tabular-nums}
.pos{color:var(--good)} .neg{color:var(--bad)} .mut{color:var(--muted)}
.skip{position:absolute; left:-999px; top:8px; z-index:200; background:var(--card); padding:8px 12px; border-radius:4px}
.skip:focus{left:max(16px, env(safe-area-inset-left, 0px))}
code{font-family:var(--f-mono); font-size:12.5px; background:var(--sunk); padding:1px 5px; border-radius:3px}

.wrap{max-width:1180px; margin:0 auto; padding-left:max(16px, env(safe-area-inset-left, 0px)); padding-right:max(16px, env(safe-area-inset-right, 0px))}

/* header */
.top{position:sticky; top:env(safe-area-inset-top, 0px); z-index:20; background:var(--ink); color:var(--paper)}
.top .wrap{display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; padding-block:10px}
.brand{font-family:var(--f-display); font-weight:900; font-size:26px; letter-spacing:.02em; text-transform:uppercase; line-height:1; white-space:nowrap; color:inherit; text-decoration:none}
.brand small{display:block; font-family:var(--f-mono); font-weight:400; font-size:10px; letter-spacing:.14em; opacity:.65; margin-top:3px; text-transform:uppercase}
.adm{font-family:var(--f-mono); font-size:11px; background:var(--accent); color:var(--accent-ink); padding:2px 7px; border-radius:3px; letter-spacing:.1em; vertical-align:4px; margin-left:6px; text-transform:uppercase}
.stats{display:flex; flex-wrap:wrap; gap:6px 22px; flex:1; min-width:0}
.stat{display:flex; flex-direction:column; min-width:0}
.stat span{font-size:10px; letter-spacing:.12em; text-transform:uppercase; opacity:.6}
.stat b{font-family:var(--f-mono); font-weight:500; font-size:16px; white-space:nowrap}
.stat small{font-family:var(--f-mono); font-size:12px; opacity:.85}
.stat .live{display:none}
.dayb b{font-family:var(--f-display); font-weight:800; font-size:20px; letter-spacing:.03em}
.prog{height:3px; background:color-mix(in srgb, var(--paper) 20%, transparent); margin-top:4px; width:110px}
.prog i{display:block; height:100%; background:var(--accent)}
.who{display:flex; align-items:center; gap:8px; font-size:12.5px}
.avatar{width:28px; height:28px; border-radius:4px; display:grid; place-items:center; font-weight:600; font-size:12px; text-transform:uppercase}
.btn{border:1px solid var(--line); background:var(--card); color:var(--ink); padding:7px 12px; border-radius:4px; cursor:pointer; font-weight:500; white-space:nowrap; text-decoration:none; display:inline-block}
.btn:hover{border-color:var(--ink)}
.btn:disabled{opacity:.45; cursor:not-allowed; border-color:var(--line)}
.btn.pri{background:var(--accent); color:var(--accent-ink); border-color:var(--accent); font-weight:600}
.btn.pri:hover{filter:brightness(1.07)}
.btn.sm{padding:4px 9px; font-size:13px}
.btn.ghost{background:transparent}
.btn.warn{color:var(--bad); border-color:color-mix(in srgb, var(--bad) 50%, var(--line))}
.btn.warn:hover{border-color:var(--bad)}
.top .btn{background:transparent; color:var(--paper); border-color:color-mix(in srgb, var(--paper) 35%, transparent)}
.top .btn:hover{border-color:var(--paper)}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.live{display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--good)}
.live.off{background:var(--muted)}

/* ticker */
.ticker{background:var(--sunk); border-bottom:1px solid var(--line); overflow:hidden; white-space:nowrap; font-family:var(--f-mono); font-size:12px}
.ticker .belt{display:inline-flex; gap:28px; padding:6px 0; animation:belt 60s linear infinite}
.ticker .belt span b{font-weight:600; margin-right:6px}
@keyframes belt{from{transform:translateX(0)} to{transform:translateX(-50%)}}
@media (prefers-reduced-motion: reduce){ .ticker .belt{animation:none} }

/* tabs */
.tabs{display:flex; gap:2px; overflow-x:auto; border-bottom:2px solid var(--ink); margin-top:14px; scrollbar-width:none}
.tab{border:0; background:transparent; padding:9px 14px 7px; cursor:pointer; font-family:var(--f-display); font-weight:800; font-size:17px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); white-space:nowrap; border-radius:4px 4px 0 0}
.tab:hover{color:var(--ink)}
.tab.on{background:var(--ink); color:var(--paper)}
.tab .cnt{font-family:var(--f-mono); font-size:11px; font-weight:500; margin-left:4px; opacity:.7}
.tab svg{display:none}

main{padding-block:18px 60px}
main:focus{outline:none}
h1,h2,h3{margin:0}
h2{font-family:var(--f-display); font-weight:800; font-size:24px; letter-spacing:.03em; text-transform:uppercase; margin:0 0 10px; text-wrap:balance}
h3{font-family:var(--f-display); font-weight:800; font-size:18px; letter-spacing:.04em; text-transform:uppercase; margin:0 0 8px}
.eyebrow{font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); font-weight:600}
p{margin:0 0 8px; max-width:68ch}

.grid{display:grid; gap:16px}
.g2{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.g-map{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
@media (max-width:860px){ .g2,.g-map{grid-template-columns:minmax(0,1fr)} }
.panel{background:var(--card); border:1px solid var(--line); border-radius:6px; padding:16px; min-width:0}
.kpis{display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:0; border:1px solid var(--line); border-radius:6px; background:var(--card); margin-bottom:16px}
.kpi{padding:12px 16px; border-left:1px solid var(--line); min-width:0}
.kpi:first-child{border-left:0}
.kpi .eyebrow{display:block}
.kpi .v{font-family:var(--f-mono); font-size:22px; font-weight:500; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.kpi .s{font-size:12px; color:var(--muted)}
@media (max-width:700px){ .kpis{grid-template-columns:repeat(2,minmax(0,1fr))} .kpi:nth-child(3){border-left:0} .kpi:nth-child(n+3){border-top:1px solid var(--line)} }

.tips{background:var(--accent-soft); border:1px solid color-mix(in srgb, var(--accent) 40%, transparent); border-radius:6px; padding:14px 16px; margin-bottom:16px; display:flex; gap:16px; align-items:flex-start}
.tips ol{margin:4px 0 0; padding-left:20px; display:grid; gap:3px}
.tips div{flex:1; min-width:0}

.pl{width:100%; border-collapse:collapse}
.pl td{padding:5px 0; border-bottom:1px dashed var(--line)}
.pl td:last-child{text-align:right}
.pl tr.tot td{border-bottom:0; border-top:2px solid var(--ink); font-weight:600; padding-top:8px}

.news{display:grid; gap:0; max-height:330px; overflow:auto}
.news div{padding:8px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:52px minmax(0,1fr); gap:8px}
.news div:last-child{border-bottom:0}
.news .d{font-family:var(--f-mono); font-size:11.5px; color:var(--muted); padding-top:1px}
.news .hot{font-weight:600}

.chart svg{width:100%; height:auto; display:block}
.chart .lbls{display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; font-family:var(--f-mono); font-size:11px; color:var(--muted); margin-top:4px}

.cityhead{display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap}
.facts{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:10px 0 14px}
.facts div{background:var(--sunk); border-radius:4px; padding:7px 9px}
.facts b{display:block; font-family:var(--f-mono); font-weight:500; font-size:15px}
.chips{display:flex; flex-wrap:wrap; gap:6px}
.chip{display:inline-flex; align-items:center; gap:4px; font-size:12px; padding:2px 8px; border-radius:99px; background:var(--sunk); border:1px solid var(--line); white-space:nowrap}
.chip.acc{background:var(--accent-soft); border-color:color-mix(in srgb, var(--accent) 45%, transparent)}
.chip.good{color:var(--good); border-color:color-mix(in srgb, var(--good) 45%, transparent); background:transparent}
.chip.bad{color:var(--bad); border-color:color-mix(in srgb, var(--bad) 45%, transparent); background:transparent}

.seg{display:flex; gap:2px; background:var(--sunk); padding:3px; border-radius:5px; margin-bottom:10px; flex-wrap:wrap}
.seg button{flex:1; border:0; background:transparent; padding:6px 8px; border-radius:3px; cursor:pointer; font-weight:500; color:var(--muted); white-space:nowrap}
.seg button.on{background:var(--card); color:var(--ink); box-shadow:0 1px 0 var(--line)}
.blist{display:grid; gap:0; max-height:520px; overflow:auto; border-top:1px solid var(--line)}
.blist .eyebrow{padding:10px 0 2px}
.brow{display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 12px; align-items:center; padding:9px 0; border-bottom:1px solid var(--line)}
.brow .nm{font-weight:600}
.brow .ds{font-size:12.5px; color:var(--muted); grid-column:1}
.brow .btn{grid-row:1 / span 2; grid-column:2}

/* buildings */
.filters{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; align-items:center}
.filters .seg{max-width:460px; margin:0}
.cards{display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap:14px}
.bcard{background:var(--card); border:1px solid var(--line); border-radius:6px; padding:14px; display:flex; flex-direction:column; gap:10px; min-width:0}
.bcard.idle{border-color:color-mix(in srgb, var(--bad) 55%, var(--line))}
.bcard > .row:last-child{border-top:1px solid var(--line); padding-top:10px; margin-top:auto}
.bh{display:flex; justify-content:space-between; gap:8px; align-items:flex-start}
.bh .t{font-family:var(--f-display); font-weight:800; font-size:19px; letter-spacing:.03em; text-transform:uppercase; line-height:1.05}
.bh .c{font-size:12px; color:var(--muted); margin-top:2px}
.lvl{font-family:var(--f-mono); font-size:11px; background:var(--ink); color:var(--paper); padding:2px 7px; border-radius:3px; white-space:nowrap; text-transform:uppercase}
.kv{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px}
.kv div{background:var(--sunk); border-radius:4px; padding:6px 8px; min-width:0}
.kv span{display:block; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}
.kv b{font-family:var(--f-mono); font-weight:500; font-size:14px; white-space:nowrap}
.staff{display:flex; align-items:center; gap:6px; flex-wrap:wrap}
.staff .num{min-width:62px; text-align:center}
.bar{height:6px; background:var(--sunk); border-radius:3px; overflow:hidden}
.bar i{display:block; height:100%; background:var(--accent)}
.row{display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:space-between}
label.ck{display:inline-flex; gap:6px; align-items:center; font-size:13px; cursor:pointer}
input[type=range]{width:100%; accent-color:var(--accent)}
input[type=checkbox]{accent-color:var(--accent); width:15px; height:15px}
input.q{width:78px; padding:5px 7px; border:1px solid var(--line); border-radius:4px; background:var(--paper); font-family:var(--f-mono); font-size:13px}
.empty{padding:40px 16px; text-align:center; color:var(--muted); border:1px dashed var(--line); border-radius:6px}

/* tables */
.tbl-wrap{overflow-x:auto; border:1px solid var(--line); border-radius:6px; background:var(--card)}
table.tbl{width:100%; border-collapse:collapse; min-width:720px}
table.tbl.fit{min-width:560px}
.tbl th{text-align:left; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); font-weight:600; padding:9px 10px; border-bottom:2px solid var(--ink); white-space:nowrap; background:var(--card)}
.tbl td{padding:7px 10px; border-bottom:1px solid var(--line); white-space:nowrap; vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl td.r,.tbl th.r{text-align:right}
.tbl tr.grp td{background:var(--sunk); font-family:var(--f-display); font-weight:800; letter-spacing:.06em; text-transform:uppercase; font-size:13px; padding:5px 10px}
.tbl tr.me td{background:var(--accent-soft); font-weight:600}
.tbl .gn{font-weight:600}
.tbl .ins{font-size:11.5px; color:var(--muted)}
.spark{width:90px; height:26px; display:block}
.spark polyline{fill:none; stroke-width:1.5}

.bank{display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%,300px),1fr)); gap:16px}
.big{font-family:var(--f-mono); font-size:30px; font-weight:500}
.field{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:10px}
.field input{width:140px; padding:7px 9px; border:1px solid var(--line); border-radius:4px; background:var(--paper); font-family:var(--f-mono)}
.cname{border:1px dashed transparent; background:transparent; font-family:var(--f-display); font-weight:800; font-size:24px; letter-spacing:.03em; text-transform:uppercase; padding:0 4px; margin-left:-4px; width:100%; max-width:420px; border-radius:4px; display:block}
.cname:hover,.cname:focus{border-color:var(--line); outline:none; background:var(--card)}

/* modal + toast */
#modal{position:fixed; inset:0; z-index:50; background:color-mix(in srgb, var(--ink) 55%, transparent); display:flex; align-items:center; justify-content:center; padding:20px max(16px, env(safe-area-inset-right, 0px)) 20px max(16px, env(safe-area-inset-left, 0px))}
#modal[hidden]{display:none!important}
.dlg{background:var(--card); border:1px solid var(--line); border-radius:8px; padding:22px; max-width:440px; width:100%; box-shadow:0 20px 50px rgba(0,0,0,.3)}
.dlg .acts{display:flex; gap:8px; justify-content:flex-end; margin-top:16px; flex-wrap:wrap}
#toast{position:fixed; left:50%; bottom:calc(18px + env(safe-area-inset-bottom, 0px)); transform:translateX(-50%) translateY(20px); background:var(--ink); color:var(--paper); padding:9px 16px; border-radius:5px; font-size:13.5px; opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; z-index:60; max-width:calc(100% - 32px)}
#toast.show{opacity:1; transform:translateX(-50%) translateY(0)}

/* landing */
.landing{display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); gap:20px; padding-block:28px 60px}
@media (max-width:860px){ .landing{grid-template-columns:minmax(0,1fr)} }
.hero .eyebrow{display:inline-flex; align-items:center; gap:8px}
.hero h1{font-family:var(--f-display); font-weight:900; font-size:clamp(44px, 8vw, 84px); line-height:.9; text-transform:uppercase; letter-spacing:.01em; margin:10px 0 14px; text-wrap:balance}
.hero h1 em{font-style:normal; color:var(--accent)}
.hero p{font-size:16px; max-width:52ch}
.auth .seg{margin-bottom:14px}
.auth form{display:grid; gap:10px}
.auth label{display:grid; gap:4px; font-size:12.5px; color:var(--muted); font-weight:500}
.auth input{padding:9px 11px; border:1px solid var(--line); border-radius:4px; background:var(--paper); font-size:15px; color:var(--ink)}
.auth .err{color:var(--bad); font-size:13px; min-height:18px}
.statline{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; border:1px solid var(--line); border-radius:6px; margin:18px 0; background:var(--card)}
.statline div{padding:10px 14px; border-left:1px solid var(--line)}
.statline div:first-child{border-left:0}
.statline b{display:block; font-family:var(--f-mono); font-weight:500; font-size:20px}
.over{background:var(--ink); color:var(--paper); border-radius:6px; padding:16px 18px; margin-bottom:16px}
.over h2{color:var(--paper); margin-bottom:4px}
.over .eyebrow, .over p{color:inherit; opacity:.8}
.hall{display:grid; gap:10px; grid-template-columns:repeat(auto-fill, minmax(min(100%, 260px), 1fr))}
.hall .panel ol{margin:6px 0 0; padding-left:20px}
.skel{border-radius:6px; background:var(--sunk); border:1px solid var(--line)}
@media (max-width:560px){ .brand{font-size:22px} .stat b{font-size:14px} .top .wrap{gap:8px 14px} .facts{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ajutor */
.help{display:grid; grid-template-columns:220px minmax(0,1fr); gap:20px; align-items:start}
@media (max-width:860px){ .help{grid-template-columns:minmax(0,1fr)} }
.toc{position:sticky; top:calc(env(safe-area-inset-top, 0px) + 84px); display:grid; gap:2px; background:var(--card); border:1px solid var(--line); border-radius:6px; padding:8px}
@media (max-width:860px){ .toc{position:static; grid-template-columns:repeat(auto-fill, minmax(150px,1fr))} }
.toc button{border:0; background:transparent; text-align:left; padding:6px 8px; border-radius:4px; cursor:pointer; color:var(--muted); font-weight:500}
.toc button:hover{color:var(--ink); background:var(--sunk)}
.toc button.on{color:var(--ink); background:var(--accent-soft)}
.hsec{background:var(--card); border:1px solid var(--line); border-radius:6px; padding:18px 20px; margin-bottom:14px; scroll-margin-top:96px}
.hsec h2{margin-bottom:8px}
.hsec h4{font-size:13.5px; margin:14px 0 4px}
.hsec p, .hsec li{max-width:72ch}
.hsec ul, .hsec ol{padding-left:20px; margin:6px 0 10px; display:grid; gap:4px}
.hsec .tbl-wrap{margin:8px 0}
.hsec table.tbl{min-width:520px}
.callout{background:var(--accent-soft); border:1px solid color-mix(in srgb, var(--accent) 40%, transparent); border-radius:6px; padding:10px 12px; margin:8px 0; max-width:72ch}
dl.gloss{display:grid; grid-template-columns:max-content minmax(0,1fr); gap:6px 16px; margin:6px 0}
dl.gloss dt{font-weight:600} dl.gloss dd{margin:0; color:var(--muted)}
@media (max-width:560px){ dl.gloss{grid-template-columns:minmax(0,1fr)} dl.gloss dd{margin-bottom:6px} }
.helpbtn{width:30px; padding:4px 0!important; text-align:center; font-weight:700}

/* tur ghidat */
#tour{position:fixed; inset:0; z-index:70; pointer-events:none}
#tour .hole{position:fixed; border-radius:6px; box-shadow:0 0 0 9999px rgba(10,14,24,.62); outline:2px solid var(--accent); outline-offset:2px; transition:all .25s ease; pointer-events:none}
#tour .hole.none{box-shadow:0 0 0 9999px rgba(10,14,24,.62); width:0; height:0; outline:0}
#tour .pop{position:fixed; width:min(360px, calc(100vw - 24px)); background:var(--card); color:var(--ink); border:1px solid var(--line); border-radius:8px; padding:16px; box-shadow:0 20px 50px rgba(0,0,0,.35); pointer-events:auto; transition:top .25s ease, left .25s ease}
#tour .pop h3{margin-bottom:6px}
#tour .pop p{margin:0 0 12px; font-size:13.5px}
#tour .pop .row{gap:6px}
#tour .pop .dots{font-family:var(--f-mono); font-size:11px; color:var(--muted)}
@media (max-width:560px){ #tour .pop{left:12px!important; right:12px; width:auto; top:auto!important; bottom:calc(12px + env(safe-area-inset-bottom, 0px))} }
@media (prefers-reduced-motion: reduce){ #tour .hole, #tour .pop{transition:none} }

/* clădiri: listă compactă */
.bgroup{margin-bottom:18px}
.bgroup h3{margin-bottom:8px}
.blistx{border:1px solid var(--line); border-radius:6px; background:var(--card); overflow:hidden}
.brow2{border-bottom:1px solid var(--line)}
.brow2:last-child{border-bottom:0}
.brow2.open{background:color-mix(in srgb, var(--accent) 6%, var(--card))}
.bhead{all:unset; box-sizing:border-box; cursor:pointer; width:100%; display:grid; grid-template-columns:34px minmax(0,1.6fr) 54px 84px minmax(0,1.6fr) 120px 90px 16px; gap:10px; align-items:center; padding:9px 12px}
.bhead:hover{background:var(--sunk)}
.bhead:focus-visible{outline:2px solid var(--accent); outline-offset:-2px}
.bico{font-size:22px; line-height:1; text-align:center}
.bico.sm{font-size:16px; display:inline-block; width:22px}
.bname{display:grid; min-width:0}
.bname b{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.bname small, .bstaff small, .bcost small{color:var(--muted); font-size:11.5px}
.blv{font-family:var(--f-mono); font-size:12px; color:var(--muted)}
.bsum{font-size:12.5px; color:var(--muted); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.bcost{text-align:right; font-size:13px}
.bchev{color:var(--muted)}
.pill{display:inline-block; font-style:normal; font-size:11.5px; font-weight:600; padding:2px 8px; border-radius:99px; white-space:nowrap}
.pill.ok{color:var(--good); background:color-mix(in srgb, var(--good) 14%, transparent)}
.pill.warn{color:#b7791f; background:rgba(183,121,31,.14)}
.pill.bad{color:var(--bad); background:color-mix(in srgb, var(--bad) 14%, transparent)}
.pill.uc{color:var(--accent); background:var(--accent-soft)}
.brow2.st-bad .bhead{box-shadow:inset 3px 0 0 var(--bad)}
.brow2.st-warn .bhead{box-shadow:inset 3px 0 0 #b7791f}
.bdetail{padding:4px 14px 14px 56px; display:grid; gap:10px}
@media (max-width:860px){
  .bhead{grid-template-columns:30px minmax(0,1fr) auto 16px; gap:4px 10px}
  .blv, .bsum, .bstaff{display:none}
  .bst{grid-column:2; grid-row:2}
  .bcost{grid-column:3; grid-row:1 / span 2}
  .bdetail{padding:4px 12px 14px}
}
.citymap .licon text{dominant-baseline:auto}

/* când alegi locul unei clădiri, degetul mută conturul în loc să deruleze pagina */
.citymap.placing{touch-action:none}

/* harta României */
.romap{width:100%; height:auto; display:block; margin-top:10px; border-radius:6px}
.romap .bg{fill:var(--sunk)}
.romap .rl line{stroke:var(--rail); stroke-width:.3; stroke-dasharray:.8 .7}
.romap .rc{cursor:pointer}
.romap .rc .d{fill:var(--card); stroke:var(--muted); stroke-width:.35}
.romap .rc.mine .d{fill:var(--accent); stroke:var(--accent)}
.romap .rc.on .d{fill:var(--ink); stroke:var(--accent); stroke-width:.6}
.romap .rc:hover .d{stroke:var(--accent)}
.romap .rc text{font-family:var(--f-body); font-size:2.1px; fill:var(--muted); font-weight:500}
.romap .rc.on text, .romap .rc.mine text{fill:var(--ink); font-weight:700}

/* bani necesari pentru finalul zilei */
.needcard{display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; border-radius:6px; padding:16px 18px; margin-bottom:16px; border:2px solid var(--good); background:color-mix(in srgb, var(--good) 10%, var(--card))}
.needcard.bad{border-color:var(--bad); background:color-mix(in srgb, var(--bad) 14%, var(--card))}
.needcard > div:first-child{flex:1 1 320px; min-width:0}
.needbig{font-family:var(--f-mono); font-size:40px; font-weight:600; letter-spacing:-.03em; line-height:1.1; margin:4px 0 6px}
.needcard.ok .needbig{color:var(--good)} .needcard.bad .needbig{color:var(--bad)}
.needtime b{display:block; font-family:var(--f-mono); font-size:26px}
.need-stat.ok b{color:var(--good)} .need-stat.bad b{color:var(--bad)}
.top .need-stat b{font-size:17px}
@media (max-width:640px){ .needbig{font-size:32px} }

/* ce îi trebuie unei fabrici */
.need{font-size:12.5px; color:var(--muted); margin-top:4px}
.need b{color:var(--ink)}
.need ul{margin:2px 0 0; padding-left:16px; display:grid; gap:2px}

/* ---------- telefon ---------- */
@media (max-width:640px){
  .top{position:static}
  .top .wrap{display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 10px; padding-block:10px 8px}
  .brand{font-size:22px}
  .who{gap:6px}
  .who > span{max-width:90px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  .stats{grid-column:1 / -1; grid-row:2; flex-wrap:nowrap; overflow-x:auto; gap:16px; scrollbar-width:none; padding-bottom:2px; -webkit-overflow-scrolling:touch}
  .stats::-webkit-scrollbar{display:none}
  .stat{flex:none}
  .stat span{font-size:9.5px}
  .stat b{font-size:14px}
  .dayb b{font-size:16px}
  .prog{width:60px}
  .ticker{font-size:11px}
  .tabs{position:sticky; top:env(safe-area-inset-top, 0px); z-index:15; background:var(--paper); margin-top:8px; padding-top:6px}
  .tab{font-size:15px; padding:8px 11px 6px}
  main{padding-block:14px 48px}
  h2{font-size:21px}
  .panel{padding:14px}
  .kpi{padding:10px 12px}
  .kpi .v{font-size:18px}
  .tips{flex-direction:column; gap:10px}
  .tips > div + div{display:flex!important; flex-wrap:wrap; gap:6px; width:100%}
  .btn{min-height:40px}
  .btn.sm{min-height:36px; padding:6px 11px}
  input, select, textarea{font-size:16px!important}
  input.q{width:96px}
  .field input{flex:1 1 140px; width:auto}
  .staff .btn{flex:1 1 auto}
  .tbl th, .tbl td{padding:7px 8px}
  table.tbl.fit{min-width:0}
  .tbl.fit td, .tbl.fit th{white-space:normal; font-size:13px}
  .tbl.fit td.num{white-space:nowrap}
  .tbl.fit .chip{font-size:10.5px; padding:1px 6px}
  .hide-m{display:none!important}
  .bcard{padding:12px}
  .kv b{font-size:13px}
  .cname{font-size:20px}
  .big{font-size:26px}
  /* pagina de start: formularul imediat după titlu */
  .landing{display:flex; flex-direction:column; gap:16px; padding-block:20px 48px}
  .landing > .hero, .landing > .grid{display:contents}
  .hero > .eyebrow{order:1; align-self:flex-start}
  .hero > h1{order:2; font-size:44px; margin:0}
  .hero > p{order:3; margin:0}
  .landing .auth{order:4}
  .hero > .statline{order:5; margin:0}
  .hero > .panel{order:6}
  .landing > .grid > .panel:not(.auth){order:7}
  /* crypto: tabel, apoi panoul de tranzacționare, apoi știrile */
  .cx-left{display:contents}
  .cx-table{order:1} .cx-trade{order:2} .cx-news{order:3}
  .citypick button{padding:6px 9px}
  .legend{gap:8px; font-size:11px}
  .toc{grid-template-columns:repeat(2, minmax(0,1fr))}
  .hsec{padding:14px}
}

/* piață: prima coloană rămâne fixă la scroll orizontal */
.tbl.mkt .stick{position:sticky; left:0; z-index:1; background:var(--card); box-shadow:1px 0 0 var(--line); min-width:132px; white-space:normal}
.tbl.mkt th.stick{z-index:2}
.tbl.mkt .stickl{position:sticky; left:10px; display:inline-block}

.lnk{background:none; border:0; padding:0; font:inherit; color:var(--muted); cursor:pointer; text-transform:inherit; letter-spacing:inherit}
.lnk:hover,.lnk.on{color:var(--ink); text-decoration:underline}
.tbl tr.tot td{border-top:2px solid var(--ink)}

/* tab-uri pe categorii (Piață, lista de construcții) */
.cattabs{display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; padding:2px 1px 8px; margin:8px 0 6px; scroll-snap-type:x proximity}
.cattabs::-webkit-scrollbar{display:none}
.cattabs button{flex:0 0 auto; display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line); background:var(--card); color:var(--ink); padding:7px 12px 7px 10px; border-radius:999px; font:600 13px/1 inherit; font-family:inherit; cursor:pointer; white-space:nowrap; scroll-snap-align:start; transition:background .15s, border-color .15s, color .15s}
.cattabs button:hover{border-color:var(--accent)}
.cattabs button:active{transform:translateY(1px)}
.cattabs button:focus-visible{outline:2px solid var(--accent); outline-offset:2px}
.cattabs button.on{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.cattabs .ci{font-size:14px; line-height:1}
.cattabs .cn{font-size:11px; font-weight:600; min-width:18px; text-align:center; padding:2px 6px; border-radius:999px; background:var(--sunk); color:var(--muted); font-variant-numeric:tabular-nums}
.cattabs button.on .cn{background:var(--accent); color:var(--accent-ink)}
.cattabs .sep{flex:0 0 1px; align-self:stretch; background:var(--line); margin:4px 2px}
@media (max-width:640px){
  /* pe telefon: rândul se derulează; marginea din dreapta se estompează ca să se vadă că mai sunt tab-uri */
  .cattabs{padding-right:36px; -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 36px), transparent); mask-image:linear-gradient(to right, #000 calc(100% - 36px), transparent)}
  .cattabs button{padding:7px 10px 7px 9px; font-size:12.5px}
}

/* jurnalul banilor */
.pl.ledger tr.lhead td{padding-top:12px; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); font-family:inherit; border-bottom:0}
.pl.ledger tr.lcat td{font-weight:700; padding-top:8px}
.pl.ledger tr.litem td{font-size:12.5px; color:var(--muted); padding-top:3px; padding-bottom:3px}
.pl.ledger tr.litem td:first-child{padding-left:14px; white-space:normal}
.pl.ledger tr.litem td.pos,.pl.ledger tr.litem td.neg{opacity:.85}
.pl.ledger .lsub{font-weight:400; color:var(--muted); font-size:12.5px}
.pl.ledger tr.lhead td{text-align:left}
.pl.ledger td:last-child{white-space:nowrap; padding-left:10px; vertical-align:top}

.stat.cal small{opacity:.9; white-space:nowrap}

.kpis.k3{grid-template-columns:repeat(3, minmax(0,1fr))}
@media (max-width:700px){ .kpis.k3{grid-template-columns:repeat(3,minmax(0,1fr))} .kpis.k3 .kpi:nth-child(3){border-left:1px solid var(--line)} .kpis.k3 .kpi:nth-child(n+3){border-top:0} .kpis.k3 .kpi .s{font-size:11px} }
.stat.cal span i{font-style:normal; font-family:var(--f-mono); opacity:1}
