/* ==================================================================
   STODA · Roadmap: Bauhütte (Startseite) und Ratsversammlung (/roadmap)
   ================================================================== */
/* ---------- Bauhütte ---------- */
.band.bg-road{--bg:radial-gradient(ellipse 50% 60% at 10% 90%,rgba(227,139,61,.12),transparent 70%),linear-gradient(180deg,#120f0d,#0f1219)}
.kb-tools{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:18px;align-items:center}
.kb-date{font-family:var(--f-label);letter-spacing:.1em;text-transform:uppercase;font-size:.66rem;color:var(--stone)}
.kb{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kb-col{border:1px solid var(--line);border-radius:var(--r-l);background:rgba(16,13,10,.85);display:flex;flex-direction:column;min-width:0}
.kb-col > header{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line);border-radius:var(--r-l) var(--r-l) 0 0}
.kb-col > header h3{margin:0;font-family:var(--f-label);letter-spacing:.16em;text-transform:uppercase;font-size:.8rem}
.kb-col > header b{font-family:var(--f-label);font-size:.72rem;color:var(--stone);font-weight:500;min-width:24px;height:24px;border-radius:12px;display:grid;place-items:center;border:1px solid var(--line)}
.kb-col[data-c="now"]{border-color:rgba(227,139,61,.4)}
.kb-col[data-c="now"] > header{background:linear-gradient(180deg,rgba(227,139,61,.16),transparent)}
.kb-col[data-c="test"] > header{background:linear-gradient(180deg,rgba(166,220,211,.1),transparent)}
.kb-col[data-c="done"] > header{background:linear-gradient(180deg,rgba(159,227,176,.08),transparent)}
.kb-list{display:grid;gap:10px;padding:12px;align-content:start;flex:1}
.kb-card{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--ac,var(--ember));border-radius:var(--r-m);background:rgba(28,22,17,.9);transition:transform .4s var(--soft),box-shadow .4s}
.kb-card:hover{transform:translateY(-3px);box-shadow:0 14px 26px rgba(0,0,0,.45)}
.kb-card strong{font-weight:500;line-height:1.3}
.kb-card p{margin:0;font-size:.9rem;color:var(--dim)}
.kb-card .row{display:flex;align-items:center;gap:8px}
.kb-card .pct{font-family:var(--f-label);font-size:.66rem;letter-spacing:.06em;color:var(--stone)}
.kb-card.done{opacity:.78}
.kb-card.done strong{text-decoration:line-through;text-decoration-color:rgba(227,139,61,.6)}
.kb-card[hidden]{display:none}
.kb-card.fresh{animation:gPop .5s var(--soft) both;animation-delay:calc(var(--i,0) * 50ms)}
.kb-empty{margin:0;font-size:.88rem;color:var(--stone);padding:6px 4px}
.kb-empty[hidden]{display:none}
@media (max-width:980px){.kb{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px;scrollbar-width:thin}.kb-col{flex:0 0 min(300px,82%);scroll-snap-align:start}}

/* ---------- Ratsversammlung ---------- */
.rat{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:clamp(20px,3vw,36px);align-items:start}
.vote-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.vote-left{font-family:var(--f-label);letter-spacing:.1em;text-transform:uppercase;font-size:.68rem;color:var(--stone);transition:color .3s}
.vote-left.warn{color:var(--err)}
.votes{display:grid;gap:10px;position:relative}
.vt{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:16px;align-items:center;padding:14px 18px 14px 14px;border:1px solid var(--line);border-radius:var(--r-l);background:rgba(18,14,11,.9);transition:border-color .35s,background .35s}
.vt.mine{border-color:rgba(227,139,61,.45);background:linear-gradient(90deg,rgba(227,139,61,.08),rgba(18,14,11,.9) 40%)}
.vbtn{display:grid;justify-items:center;gap:2px;padding:8px 0;border:1px solid var(--line);border-radius:var(--r-m);background:rgba(12,15,21,.6);cursor:pointer;color:var(--parchment);transition:border-color .3s,background .3s,transform .35s var(--soft)}
.vbtn:not([disabled]):hover{border-color:var(--ember);transform:translateY(-2px)}
.vbtn[disabled]{cursor:default;opacity:.6}
.vbtn svg{width:20px;height:20px;fill:none;stroke:var(--stone);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke .3s,transform .4s var(--soft)}
.vbtn b{font-family:var(--f-label);font-variant-numeric:tabular-nums;font-size:1rem;font-weight:700}
.vbtn small{font-family:var(--f-label);font-size:.56rem;letter-spacing:.12em;text-transform:uppercase;color:var(--stone)}
.vbtn[aria-pressed="true"]{border-color:var(--ember);background:rgba(227,139,61,.16)}
.vbtn[aria-pressed="true"] svg{stroke:var(--ember-hot);transform:translateY(-2px)}
.vbtn.pop{animation:vPop .5s cubic-bezier(.3,1.6,.5,1)}
@keyframes vPop{40%{transform:scale(1.12)}}
.vt-body{min-width:0;display:grid;gap:4px}
.vt-body strong{font-weight:500;font-size:1.08rem;line-height:1.3}
.vt-body p{margin:0;color:var(--dim);font-size:.94rem}
.vt-side{display:grid;justify-items:end;gap:8px}
.vt-rank{font-family:var(--f-display);font-size:calc(1.6rem * var(--hs,1));line-height:1;color:rgba(235,225,203,.25)}
.vt-rank.gold{color:var(--gold)}
.vt-age{font-family:var(--f-label);letter-spacing:.1em;text-transform:uppercase;font-size:.6rem;color:var(--stone)}
.rat-side{display:grid;gap:16px;position:sticky;top:calc(var(--nav-h) + 20px)}
.rat-card{padding:20px;display:grid;gap:12px}
.rat-card h2{margin:0;font-family:var(--f-label);letter-spacing:.18em;text-transform:uppercase;font-size:.78rem;color:var(--ember)}
.rat-hint{color:var(--stone);font-size:.9rem;margin:0}
.rat-form{display:grid;gap:12px}
.rat-form .fld{display:grid;gap:5px}
.rat-form .fld span{font-family:var(--f-label);letter-spacing:.14em;text-transform:uppercase;font-size:.66rem;color:var(--stone)}
.rat-form input,.rat-form textarea,.rat-form select{width:100%;padding:.6rem .8rem;font:inherit;font-size:.98rem;background:rgba(12,15,21,.65);border:1px solid rgba(235,225,203,.22);border-radius:var(--r-s);color:var(--parchment)}
.rat-form select option{background:#1a140f}
.rat-form input:focus,.rat-form textarea:focus,.rat-form select:focus{outline:none;border-color:var(--ember);box-shadow:0 0 0 3px rgba(227,139,61,.18)}
.rat-steps{margin:0;padding-left:1.2em;display:grid;gap:8px;color:var(--dim);font-size:.95rem}
@media (max-width:980px){.rat{grid-template-columns:minmax(0,1fr)}.rat-side{position:static}}
@media (max-width:640px){.vt{grid-template-columns:62px minmax(0,1fr);gap:12px}.vt-side{grid-column:2;justify-items:start;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.vt-rank{display:none}}
