/* Congress Visualizer, On and Off Topic */
:root{
  --bg:#e8dcc0; --paper:#f5eedb; --paper2:#efe4c8; --card:#dfd0a8; --line:#c6b184; --line2:#a89060;
  --ink:#1c1408; --mu:#5a4020; --mu2:#7a6445; --acc:#7a2c10; --acc2:#a0471d; --focus:#7a2c10;
  --D:#2f62b0; --R:#c0392b; --I:#1f9e89; --gray:#b3a88f; --dim:.16;
  --yea:#2c6e49; --nay:#9b2d20; --nv:#9a8f78;
  --seq0:#f1e2c0; --seq1:#5e1a07; --div0:#2f62b0; --div1:#c0392b; --divm:#d8cfbd;
  --shadow:0 1px 2px rgba(60,40,10,.12),0 6px 18px rgba(60,40,10,.10);
  --sans:"Segoe UI",system-ui,-apple-system,Arial,Helvetica,sans-serif;
  --serif:Georgia,"Iowan Old Style","Times New Roman",serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#15110b; --paper:#1f1911; --paper2:#261f15; --card:#2c2418; --line:#3f3423; --line2:#5c4c33;
    --ink:#f1e8d4; --mu:#c4b391; --mu2:#9c8b6c; --acc:#e59a63; --acc2:#f0b27f; --focus:#f0b27f;
    --D:#5b8fe0; --R:#e0604f; --I:#35bca5; --gray:#6a604e; --dim:.14;
    --yea:#5cb883; --nay:#e0715f; --nv:#8a8068;
    --seq0:#3a2f1f; --seq1:#ffc98a; --div0:#5b8fe0; --div1:#e0604f; --divm:#4a4336;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 22px rgba(0,0,0,.35);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#15110b; --paper:#1f1911; --paper2:#261f15; --card:#2c2418; --line:#3f3423; --line2:#5c4c33;
  --ink:#f1e8d4; --mu:#c4b391; --mu2:#9c8b6c; --acc:#e59a63; --acc2:#f0b27f; --focus:#f0b27f;
  --D:#5b8fe0; --R:#e0604f; --I:#35bca5; --gray:#6a604e; --dim:.14;
  --yea:#5cb883; --nay:#e0715f; --nv:#8a8068;
  --seq0:#3a2f1f; --seq1:#ffc98a; --div0:#5b8fe0; --div1:#e0604f; --divm:#4a4336;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 22px rgba(0,0,0,.35);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans)}
a{color:var(--acc)}
button,input,select{font:inherit;color:inherit}
h1,h2,h3,h4{font-family:var(--serif);font-weight:700;margin:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;top:-40px;left:0;background:var(--acc);color:#fff;padding:8px 16px;z-index:9999;text-decoration:none}
.skip-link:focus{top:0}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
.sc{font-variant:small-caps;text-transform:lowercase;letter-spacing:.02em}

/* ---------- header ---------- */
.top{max-width:1400px;margin:0 auto;padding:18px 16px 6px;display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap}
.brand h1{font-size:34px;letter-spacing:.5px;font-variant:small-caps;line-height:1.05}
.brand p{margin:4px 0 0;color:var(--mu);font-style:italic;font-family:var(--serif);font-size:15px}
.era{display:flex;align-items:center;gap:8px}
.era-now{font-family:var(--serif);font-size:20px;font-weight:700}
.era-sub{color:var(--mu);font-size:13px}
.eralabel{text-align:right}

/* ---------- timeline ---------- */
.tl-wrap{max-width:1400px;margin:0 auto;padding:4px 16px 0}
.tl{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 10px 4px;box-shadow:var(--shadow)}
.tl-row{display:flex;align-items:center;gap:8px}
.tl-svg{flex:1;min-width:0;height:78px;display:block;touch-action:pan-y;cursor:pointer}
.tl-svg text{font:10px var(--sans);fill:var(--mu)}
.tl-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line2);background:var(--paper2);cursor:pointer;display:grid;place-items:center;flex:none}
.tl-btn:hover{background:var(--card)}
.tl-btn svg{width:16px;height:16px;fill:var(--ink)}
.tl-hint{font-size:11.5px;color:var(--mu);display:flex;gap:2px 14px;flex-wrap:wrap;padding:2px 2px 2px 46px;line-height:1.45}
.tl-hint b{color:var(--ink);font-weight:600}
.tl-now{font-size:12px;border:1px solid var(--line2);background:var(--paper2);border-radius:999px;padding:4px 10px;cursor:pointer;flex:none}
.tl-now[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* ---------- toolbar ---------- */
.bar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-bottom:1px solid transparent;transition:border-color .2s}
.bar.stuck{border-bottom-color:var(--line)}
.bar-in{max-width:1400px;margin:0 auto;padding:10px 16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.seg{display:inline-flex;background:var(--paper2);border:1px solid var(--line2);border-radius:999px;padding:3px;position:relative;isolation:isolate}
.seg button{border:0;background:none;padding:6px 13px;border-radius:999px;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--mu);position:relative;z-index:1;transition:color .25s;white-space:nowrap}
.seg button[aria-pressed=true]{color:var(--paper)}
.seg .knob{position:absolute;z-index:0;top:3px;bottom:3px;border-radius:999px;background:var(--ink);transition:left .35s cubic-bezier(.2,.8,.2,1),width .35s cubic-bezier(.2,.8,.2,1)}
.seg button svg{width:14px;height:14px;vertical-align:-2px;margin-right:5px;fill:currentColor}
.search{position:relative;flex:1 1 240px;min-width:180px;max-width:420px}
.search input{width:100%;border:1px solid var(--line2);background:var(--paper);border-radius:999px;padding:8px 14px 8px 34px;font-size:14px}
.search input:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 25%,transparent)}
.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:15px;height:15px;fill:var(--mu)}
.sugg{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--paper);border:1px solid var(--line2);border-radius:12px;box-shadow:var(--shadow);max-height:60vh;overflow:auto;z-index:60;padding:6px}
.sugg[hidden]{display:none}
.sugg h5{margin:6px 8px 4px;font:600 10.5px var(--sans);text-transform:uppercase;letter-spacing:1px;color:var(--mu)}
.sugg button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:none;padding:6px 8px;border-radius:8px;cursor:pointer}
.sugg button:hover,.sugg button.on{background:var(--paper2)}
.sugg small{color:var(--mu);display:block;font-size:12px}
.btn{border:1px solid var(--line2);background:var(--paper);border-radius:999px;padding:7px 13px;cursor:pointer;font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;transition:background .2s,border-color .2s}
.btn:hover{background:var(--paper2)}
.btn[aria-pressed=true],.btn.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn svg{width:14px;height:14px;fill:currentColor}
.btn .ct{background:var(--acc);color:#fff;border-radius:999px;font-size:11px;padding:0 6px;min-width:18px;text-align:center}
.btn.sm{padding:4px 10px;font-size:12.5px}
.btn.ghost{background:none;border-color:transparent}
.btn.ghost:hover{background:var(--paper2)}
.pop{position:relative}
.menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--paper);border:1px solid var(--line2);border-radius:14px;box-shadow:var(--shadow);padding:10px;z-index:70;min-width:260px;max-height:75vh;overflow:auto;transform-origin:top right;animation:pop .18s ease-out}
.menu.left{left:0;right:auto;transform-origin:top left}
.menu[hidden]{display:none}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:none}}
.menu h5{margin:8px 4px 6px;font:600 10.5px var(--sans);text-transform:uppercase;letter-spacing:1px;color:var(--mu)}
.menu h5:first-child{margin-top:2px}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.opt{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--paper2);border-radius:10px;padding:7px 9px;cursor:pointer;text-align:left;font-size:13px;min-height:38px}
.opt:hover{border-color:var(--line2)}
.opt[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);background:var(--paper)}
.opt[disabled]{opacity:.45;cursor:not-allowed}
.opt .sw{width:26px;height:10px;border-radius:3px;flex:none}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:1px solid var(--line2);background:var(--paper);border-radius:999px;padding:4px 10px;cursor:pointer;font-size:12.5px;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.chip:hover{background:var(--paper2)}
.chip[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.chip .dot{width:9px;height:9px;border-radius:50%}
.menu label.row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;margin:6px 4px}
.menu select,.panel select,.panel input[type=search]{border:1px solid var(--line2);background:var(--paper);border-radius:8px;padding:6px 8px;font-size:13px;max-width:100%}
.menu hr{border:0;border-top:1px solid var(--line);margin:10px 0}
.pills{max-width:1400px;margin:0 auto;padding:0 16px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;min-height:0}
.pills:empty{display:none}
.pill{background:var(--ink);color:var(--paper);border:0;border-radius:999px;padding:4px 8px 4px 11px;font-size:12.5px;display:inline-flex;gap:6px;align-items:center;cursor:pointer;animation:pop .2s ease-out}
.pill span{opacity:.7;font-size:14px;line-height:1}
.pills .clear{background:none;border:0;color:var(--acc);font-weight:600;cursor:pointer;font-size:12.5px;padding:4px 6px}

/* ---------- stage ---------- */
.stage{max-width:1400px;margin:0 auto;padding:10px 16px 30px;display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}
.viz{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 14px 10px;box-shadow:var(--shadow);min-width:0;position:relative}
.viz-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.viz-title{font-family:var(--serif);font-size:19px}
.viz-title small{display:block;font:13px var(--sans);color:var(--mu);margin-top:2px}
.comp{margin:24px 0 4px}
.comp-bar{position:relative;height:16px;border-radius:5px;overflow:visible;display:flex;gap:2px;background:transparent}
.comp-bar i{display:block;height:100%;transition:flex-basis .7s cubic-bezier(.2,.8,.2,1),background-color .4s;min-width:0}
.comp-bar i:first-child{border-radius:5px 0 0 5px}
.comp-bar i:last-child{border-radius:0 5px 5px 0}
.comp-bar .mk{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--ink);transition:left .7s cubic-bezier(.2,.8,.2,1)}
.comp-bar .mk::after{content:attr(data-l);position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:10px;color:var(--mu);white-space:nowrap}
.comp-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;margin-top:7px;color:var(--mu)}
.comp-legend b{color:var(--ink);font-family:var(--serif);font-size:15px}
.comp-legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.lens-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--mu);margin:4px 0 0;min-height:18px}
.lens-legend .grad{display:inline-block;width:120px;height:9px;border-radius:5px;vertical-align:middle;margin:0 6px}
.lens-legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px;vertical-align:-1px}
.hl-count{font-size:12.5px;color:var(--acc);font-weight:600}

.hemi-wrap{position:relative;overflow-x:auto;overflow-y:hidden;margin-top:6px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.hemi{position:relative;margin:0 auto;touch-action:manipulation}
.seat{position:absolute;left:0;top:0;border-radius:50%;border:2px solid var(--gray);padding:0;cursor:pointer;background:var(--paper2) no-repeat;background-color:var(--paper2);
  transition:transform .75s cubic-bezier(.2,.8,.2,1),border-color .45s,opacity .45s,width .6s,height .6s,background-color .45s,box-shadow .2s,filter .45s;will-change:transform;
  font:700 9px/1 var(--sans);color:var(--mu);display:grid;place-items:center;overflow:visible;user-select:none}
.seat.fresh{opacity:0}
.seat.leaving{opacity:0!important;pointer-events:none}
.seat:hover{box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 35%,transparent);z-index:5}
.seat.sel{box-shadow:0 0 0 3px var(--ink),0 0 0 6px var(--paper);z-index:6}
.seat.dim{opacity:var(--dim);filter:grayscale(1)}
.seat.deleg{border-style:dashed}
.seat.vac{background:transparent;border-style:dotted;opacity:.5;cursor:default}
.seat.dots{background-image:none!important;color:transparent}
.seat.ini{background-image:none}
.seat .bdg{position:absolute;right:-3px;bottom:-3px;width:46%;min-width:9px;max-width:18px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;font:700 8px/1 var(--sans);color:#fff;border:1.5px solid var(--paper);opacity:0;transform:scale(.4);transition:opacity .3s,transform .3s}
.seat.vY .bdg,.seat.vN .bdg,.seat.vA .bdg{opacity:1;transform:none}
.seat.vY .bdg{background:var(--ink);color:var(--paper)}
.seat.vN .bdg{background:var(--paper);color:var(--ink);border-color:var(--ink)}
.seat.vA .bdg{background:var(--nv)}
.seat.vA{border-style:dashed;opacity:.75}
.seat.vX{opacity:.22;border-style:dotted}
.ctr{position:absolute;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none}
.ctr b{display:block;font:700 34px/1 var(--serif)}
.ctr span{font-size:12px;color:var(--mu);text-transform:uppercase;letter-spacing:1px}
.ctr em{display:block;font-style:normal;font-size:12px;color:var(--mu);margin-top:4px}
.split-lab{position:absolute;font:700 12px var(--sans);text-transform:uppercase;letter-spacing:1px;color:var(--mu);transition:opacity .4s}
.viz-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center;margin-top:8px;font-size:12px;color:var(--mu)}
.zoom{display:inline-flex;gap:4px}
.zoom .fb{width:auto;border-radius:999px;padding:0 10px;font-size:12px;font-weight:600}
.zoom button{width:30px;height:30px;border-radius:50%;border:1px solid var(--line2);background:var(--paper2);cursor:pointer;font-size:16px;line-height:1}

/* grid view */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;margin-top:10px}
.grid h6{grid-column:1/-1;margin:10px 0 0;font:700 12px var(--sans);text-transform:uppercase;letter-spacing:1px;color:var(--mu);border-bottom:1px solid var(--line);padding-bottom:4px;position:sticky;top:0}
.card{border:1px solid var(--line);background:var(--paper2);border-radius:10px;padding:8px 6px;text-align:center;cursor:pointer;transition:transform .15s,box-shadow .15s,opacity .3s;animation:fadeup .35s ease-out both;min-width:0}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.card.dim{opacity:.25}
.card .ph{width:58px;height:58px;border-radius:50%;margin:0 auto 6px;border:3px solid var(--gray);background:var(--paper) no-repeat;display:grid;place-items:center;font:700 14px var(--sans);color:var(--mu);position:relative}
.card b{display:block;font-size:12.5px;line-height:1.25;overflow:hidden;text-overflow:ellipsis}
.card small{color:var(--mu);font-size:11.5px}
.card .lv{display:block;font-size:11px;color:var(--acc);margin-top:2px}
@keyframes fadeup{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.gridbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px;font-size:12.5px;color:var(--mu)}

/* map */
.mapw{position:relative;margin-top:8px;border-radius:10px;overflow:hidden;background:var(--paper2);touch-action:none}
.mapw svg{display:block;width:100%;height:auto}
.mapw path.d{stroke:var(--paper);stroke-width:.35;cursor:pointer;transition:fill .45s,fill-opacity .45s}
.mapw path.d:hover{stroke:var(--ink);stroke-width:1}
.mapw path.st{fill:none;stroke:var(--ink);stroke-opacity:.55;stroke-width:.6;pointer-events:none}
.mapw path.sf{cursor:pointer;transition:fill .45s,fill-opacity .45s;stroke:var(--paper);stroke-width:.6}
.mapw path.sf:hover{stroke:var(--ink);stroke-width:1.2}
.mapw path.nostate{fill:var(--line);fill-opacity:.35}
.mapw svg.zoomed text.lbl{display:none}
.map-ov .seat.dots{box-shadow:0 0 0 1px var(--paper)}
.mapw text.lbl{font:700 9px var(--sans);fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:2.5px;pointer-events:none;text-anchor:middle}
.map-ov{position:absolute;inset:0;pointer-events:none}
.map-ov .seat{pointer-events:auto;transition:border-color .45s,opacity .45s,background-color .45s}
.map-ctl{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px;z-index:4}
.map-ctl button{width:34px;height:34px;border-radius:8px;border:1px solid var(--line2);background:var(--paper);cursor:pointer;font-size:16px;box-shadow:var(--shadow)}
.map-note{position:absolute;left:10px;bottom:8px;font-size:11.5px;color:var(--mu);background:color-mix(in srgb,var(--paper) 85%,transparent);padding:3px 8px;border-radius:6px;pointer-events:none;max-width:70%}
.deleg-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px;font-size:12px;color:var(--mu)}

/* ---------- dock ---------- */
.dock{position:sticky;top:64px;max-height:calc(100vh - 76px);display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);min-width:0}
.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:8px;border-bottom:1px solid var(--line);flex:none;position:relative}
.tabs::-webkit-scrollbar{display:none}
.tab{border:1px solid var(--line);background:var(--paper2);padding:6px 4px;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--mu);border-radius:8px;white-space:nowrap;position:relative;transition:background .2s,color .2s,border-color .2s}
.tab:hover{color:var(--ink);border-color:var(--line2)}
.tab[aria-selected=true]{color:var(--paper);background:var(--ink);border-color:var(--ink)}
.tab[disabled]{opacity:.4;cursor:not-allowed}
.tabs .ink{display:none}
.panel{padding:14px 14px 18px;overflow:auto;flex:1;min-height:0;animation:fadeup .3s ease-out}
.panel h3{font-size:17px;margin:0 0 4px}
.panel h4{font:700 11px var(--sans);text-transform:uppercase;letter-spacing:1px;color:var(--mu);margin:16px 0 7px}
.panel h4:first-child{margin-top:0}
.cap{font-size:12.5px;color:var(--mu);line-height:1.45}
.cap b{color:var(--ink)}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.kpi{background:var(--paper2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.kpi b{display:block;font:700 22px/1.1 var(--serif)}
.kpi span{font-size:11.5px;color:var(--mu)}
.who{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;font-size:13px}
.who dt{color:var(--mu)}
.who dd{margin:0}
.linkish{background:none;border:0;padding:0;color:var(--acc);cursor:pointer;text-decoration:underline;text-underline-offset:2px;font:inherit;text-align:left}
.hb{display:grid;grid-template-columns:minmax(90px,148px) 1fr auto;gap:8px;align-items:center;font-size:12.5px;padding:3px 4px;border-radius:6px}
.hb[role=button]{cursor:pointer}
.hb[role=button]:hover{background:var(--paper2)}
.hb.on{background:var(--paper2);box-shadow:inset 3px 0 0 var(--acc)}
.hb .tr{height:9px;background:var(--paper2);border-radius:5px;overflow:hidden}
.hb .tr i{display:block;height:100%;border-radius:5px;background:var(--mu2);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.hb span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb b{font-variant-numeric:tabular-nums;font-weight:600}
.chart{width:100%;height:auto;display:block;overflow:visible}
.chart text{font:10px var(--sans);fill:var(--mu)}
.chart .gl{stroke:var(--line);stroke-width:1}
.chart .ax{stroke:var(--line2);stroke-width:1}
.chart .ln{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .cur{stroke:var(--ink);stroke-width:1;stroke-dasharray:3 3}
.chart-tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--paper);font-size:12px;padding:6px 9px;border-radius:8px;white-space:nowrap;z-index:90;box-shadow:var(--shadow);opacity:0;transition:opacity .12s}
.chart-tip.show{opacity:1}
.chart-tip b{font-weight:700}
.cw{position:relative}
.seg-mini{display:inline-flex;border:1px solid var(--line2);border-radius:999px;overflow:hidden}
.seg-mini button{border:0;background:var(--paper);padding:3px 10px;font-size:12px;cursor:pointer}
.seg-mini button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.vlist{display:flex;flex-direction:column;gap:4px}
.vitem{border:1px solid var(--line);background:var(--paper2);border-radius:10px;padding:7px 9px;cursor:pointer;text-align:left;display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:center;width:100%}
.vitem:hover{border-color:var(--line2)}
.vitem.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.vitem b{font-size:13px;line-height:1.3;font-weight:600;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.vitem small{grid-column:1/-1;color:var(--mu);font-size:11.5px}
.vitem .tally{font:600 12px var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.lmk{display:inline-block;font:700 9.5px var(--sans);text-transform:uppercase;letter-spacing:.8px;color:var(--acc);border:1px solid color-mix(in srgb,var(--acc) 45%,transparent);border-radius:4px;padding:0 4px;margin-right:5px;vertical-align:1px}
.vcard{border:1px solid var(--line2);border-radius:12px;padding:12px;background:var(--paper2);margin-bottom:12px}
.vcard h3{font-size:16px;line-height:1.25}
.vbar{display:flex;height:22px;border-radius:6px;overflow:hidden;gap:2px;margin:10px 0 4px}
.vbar i{display:grid;place-items:center;color:#fff;font:700 11px var(--sans);font-style:normal;transition:flex-basis .8s cubic-bezier(.2,.8,.2,1);min-width:0;overflow:hidden}
.vt{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}
.vt th,.vt td{padding:4px 5px;text-align:right;border-bottom:1px solid var(--line)}
.vt th:first-child,.vt td:first-child{text-align:left}
.vt th{color:var(--mu);font-weight:600;font-size:11.5px}
.cmp2{display:grid;grid-template-columns:1fr 34px 1fr;align-items:stretch;gap:6px;margin:12px 0 8px}
.cmp2 .vs{align-self:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--line2);background:var(--paper);cursor:pointer;font-size:16px;color:var(--ink)}
.cmp2 .vs:disabled{opacity:.35;cursor:default}
.cmpc{position:relative;border:1px solid var(--line);border-radius:12px;background:var(--paper2);min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 6px;animation:pop .2s ease-out}
.cmpc.empty{border-style:dashed;background:none;justify-content:flex-start;gap:6px;padding-top:12px}
.cmpc.empty small{font-size:11px;color:var(--mu)}
.cmpnum{width:34px;height:34px;border-radius:50%;border:2px dashed var(--line2);display:grid;place-items:center;font:700 14px var(--serif);color:var(--mu)}
.cmpq{width:100%;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink);font:13px var(--sans);padding:6px 8px}
.cmpq:focus{outline:2px solid var(--acc);outline-offset:1px}
.cmps{width:100%;display:flex;flex-direction:column;gap:2px}
.cmps button{display:flex;align-items:center;gap:6px;border:0;background:none;text-align:left;padding:4px;border-radius:6px;cursor:pointer;color:var(--ink);font-size:12.5px}
.cmps button:hover,.cmps button:focus{background:var(--paper)}
.cmps button i{width:20px;height:20px;border-radius:50%;border:2px solid var(--gray);background:var(--paper2) no-repeat;flex:none}
.cmps small{display:block;color:var(--mu);font-size:11px}
.cmpface{border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;color:var(--ink);padding:2px}
.cmpface i{width:60px;height:60px;border-radius:50%;border:3px solid var(--gray);background:var(--paper2) no-repeat;display:grid;place-items:center;font:700 17px var(--serif);font-style:normal;color:var(--mu)}
.cmpface:hover b{text-decoration:underline}
.cmpface b{font-size:13px;line-height:1.2}
.cmpface small{font-size:11px;color:var(--mu)}
.cmpx{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;border:0;background:none;cursor:pointer;color:var(--mu);font-size:16px;line-height:1}
.cmpx:hover{background:var(--paper);color:var(--ink)}
.cmpi{position:relative;height:44px;margin:12px 6px 10px}
.cmpi .ax{position:absolute;left:0;right:0;top:14px;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--D),var(--line) 50%,var(--R));opacity:.55}
.cmpi span{position:absolute;top:4px;transform:translateX(-50%);width:24px;height:24px;border-radius:50%;color:#fff;font:700 9.5px var(--sans);display:grid;place-items:center;border:2px solid var(--paper);transition:left .6s cubic-bezier(.2,.8,.2,1)}
.cmpi em{position:absolute;bottom:0;font-size:10.5px;font-style:normal;color:var(--mu)}
.cmpt{table-layout:fixed}
.cmpt td,.cmpt th{overflow-wrap:anywhere}
.agree{display:grid;gap:5px;font-size:12.5px}
.agree .tr{height:9px;background:var(--paper2);border-radius:5px;overflow:hidden}
.agree .tr i{display:block;height:100%;background:var(--ink);border-radius:5px;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.cvl{display:flex;flex-direction:column;gap:3px}
.cv{display:grid;grid-template-columns:1fr 44px 44px;gap:6px;align-items:center;border:1px solid var(--line);background:var(--paper2);border-radius:8px;padding:5px 8px;cursor:pointer;text-align:left;color:var(--ink);font-size:12.5px}
.cv:hover{border-color:var(--line2)}
.cv span{min-width:0}
.cv em{font-style:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cv small{display:block;color:var(--mu);font-size:11px}
.cv b{text-align:center;font-size:11.5px;border-radius:5px;padding:2px 0}
.cv .cy{background:var(--ink);color:var(--paper)}
.cv .cn{border:1.5px solid var(--ink)}
.mchip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:2px 8px 2px 3px;cursor:pointer;font-size:12px;margin:2px}
.mchip:hover{border-color:var(--line2)}
.mchip i{width:18px;height:18px;border-radius:50%;background:var(--paper2) no-repeat;border:2px solid var(--gray);flex:none}
.note{font-size:12px;color:var(--mu);background:var(--paper2);border-left:3px solid var(--line2);padding:6px 9px;border-radius:0 8px 8px 0;margin:8px 0}
.empty{padding:20px 6px;text-align:center;color:var(--mu);font-size:13px}
.ticker{display:inline-block;font:700 11.5px ui-monospace,Menlo,Consolas,monospace;background:var(--paper2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;margin:2px}
.trow{display:grid;grid-template-columns:74px 1fr auto;gap:8px;font-size:12.5px;padding:5px 0;border-bottom:1px solid var(--line);align-items:center}
.trow .t{font:700 12px ui-monospace,Menlo,Consolas,monospace}
.bs{font:700 10px var(--sans);padding:1px 5px;border-radius:4px;color:#fff}
.bs.B{background:var(--yea)}
.bs.S{background:var(--nay)}
.bs.X{background:var(--nv)}
.net svg{width:100%;height:auto}
.net circle{cursor:pointer;stroke:var(--paper);stroke-width:1.5}
.net text{font-size:9px;fill:var(--ink)}

/* ---------- profile drawer ---------- */
.scrim{position:fixed;inset:0;background:rgba(20,12,4,.35);opacity:0;pointer-events:none;transition:opacity .3s;z-index:2147483100}
.scrim.show{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(470px,100vw);background:var(--paper);border-left:1px solid var(--line2);box-shadow:-10px 0 30px rgba(0,0,0,.18);z-index:2147483101;transform:translateX(105%);visibility:hidden;transition:transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s linear .38s;display:flex;flex-direction:column}
.drawer.open{transform:none;visibility:visible;transition:transform .38s cubic-bezier(.2,.8,.2,1),visibility 0s}
.d-top{display:flex;gap:14px;padding:16px 16px 12px;border-bottom:1px solid var(--line);position:relative;background:linear-gradient(to bottom,color-mix(in srgb,var(--pc,var(--gray)) 18%,var(--paper)),var(--paper))}
.d-ph{width:96px;height:120px;border-radius:12px;border:3px solid var(--pc,var(--gray));background:var(--paper2) no-repeat;flex:none;display:grid;place-items:center;font:700 26px var(--serif);color:var(--mu)}
.d-top h2{font-size:21px;line-height:1.15;margin-right:112px;text-wrap:balance}
.d-top .role{color:var(--mu);font-size:13.5px;margin-top:3px}
.ppill{display:inline-block;color:#fff;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:700;margin-top:6px}
.badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.badge{font-size:11px;border:1px solid var(--line2);border-radius:999px;padding:1px 7px;color:var(--mu);background:var(--paper)}
.badge.hot{border-color:var(--acc);color:var(--acc)}
.x{position:absolute;right:10px;top:10px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line2);background:var(--paper);cursor:pointer;font-size:20px;line-height:1}
.d-nav{position:absolute;right:50px;top:10px;display:flex;gap:4px}
.d-nav button{width:34px;height:34px;border-radius:50%;border:1px solid var(--line2);background:var(--paper);cursor:pointer}
.d-body{overflow:auto;padding:4px 16px 30px;flex:1}
.d-body section{padding:12px 0;border-bottom:1px solid var(--line)}
.d-body section:last-child{border-bottom:0}
.d-body h4{font:700 11px var(--sans);text-transform:uppercase;letter-spacing:1px;color:var(--mu);margin:0 0 8px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fact{background:var(--paper2);border-radius:10px;padding:7px 10px;border:1px solid var(--line)}
.fact b{display:block;font:700 17px/1.15 var(--serif)}
.fact span{font-size:11.5px;color:var(--mu)}
.meter{position:relative;height:28px;margin:6px 0 2px}
.meter .track{position:absolute;left:0;right:0;top:12px;height:5px;border-radius:3px;background:linear-gradient(90deg,var(--div0),var(--divm),var(--div1))}
.meter .dist{position:absolute;left:0;right:0;top:0;height:10px}
.meter .dist i{position:absolute;top:0;width:2px;height:10px;opacity:.35;border-radius:1px}
.meter .me{position:absolute;top:6px;width:16px;height:16px;border-radius:50%;background:var(--paper);border:3px solid var(--ink);transform:translateX(-50%);transition:left .6s cubic-bezier(.2,.8,.2,1)}
.meter-l{display:flex;justify-content:space-between;font-size:11px;color:var(--mu)}
.career{position:relative;height:34px;margin:4px 0 2px}
.career i{position:absolute;top:6px;height:14px;border-radius:4px;min-width:3px}
.career i.S{top:6px;background:var(--acc)}
.career i.H{top:6px;background:var(--mu2)}
.career i.VP{background:var(--ink)}
.career-ax{display:flex;justify-content:space-between;font-size:11px;color:var(--mu)}
.cen{display:grid;grid-template-columns:1fr 64px 1fr;gap:4px 8px;font-size:12.5px;align-items:center}
.cen .tr{height:8px;border-radius:4px;background:var(--paper2);position:relative;overflow:visible}
.cen .tr i{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:var(--acc2);transition:width .6s}
.cen .tr em{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.6}
.cen b{text-align:right;font-variant-numeric:tabular-nums}
.minimap{width:100%;height:auto;display:block;background:var(--paper2);border-radius:10px}
.minimap path{stroke:var(--paper);stroke-width:.8px;vector-effect:non-scaling-stroke;cursor:pointer}
.minimap path.on{stroke:var(--ink);stroke-width:1.5px}
.minimap path[data-id]:hover{fill-opacity:.7}
.mm.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.links{display:flex;flex-wrap:wrap;gap:6px}
.links a{font-size:12.5px;border:1px solid var(--line2);border-radius:999px;padding:3px 10px;text-decoration:none;color:var(--ink);background:var(--paper)}
.links a:hover{background:var(--paper2)}
.vdots{display:flex;flex-direction:column;gap:3px}
.vdot{display:grid;grid-template-columns:18px 1fr auto;gap:8px;font-size:12.5px;align-items:center;border:0;background:none;text-align:left;padding:3px 4px;border-radius:6px;cursor:pointer}
.vdot:hover{background:var(--paper2)}
.vdot i{width:16px;height:16px;border-radius:50%;display:grid;place-items:center;color:#fff;font:700 9px var(--sans);font-style:normal}
.vdot i.Y{background:var(--yea)}
.vdot i.N{background:var(--nay)}
.vdot i.A{background:var(--nv)}

/* tooltip for seats */
.tip{position:fixed;z-index:2147483200;pointer-events:none;background:var(--ink);color:var(--paper);border-radius:10px;padding:8px 10px;font-size:12.5px;box-shadow:var(--shadow);opacity:0;transform:translateY(4px);transition:opacity .12s,transform .12s;max-width:260px}
.tip.show{opacity:1;transform:none}
.tip b{display:block;font-size:13.5px}
.tip small{opacity:.8}
.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);background:var(--ink);color:var(--paper);padding:9px 16px;border-radius:999px;font-size:13px;opacity:0;transition:all .3s;z-index:2147483200;pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}
.loading{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--paper) 55%,transparent);z-index:20;opacity:0;pointer-events:none;transition:opacity .2s;border-radius:14px}
.loading.show{opacity:1}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--acc);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
footer.src{max-width:1400px;margin:0 auto 30px;padding:14px 16px;font-size:12px;color:var(--mu);line-height:1.6}
footer.src div{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 16px}
footer.src a{color:var(--acc)}
kbd{border:1px solid var(--line2);border-radius:4px;padding:0 5px;font-size:11px;background:var(--paper2)}

/* ---------- responsive ---------- */
.resizing .seat{transition:none!important}
@media (max-width:1100px){
  .stage{grid-template-columns:1fr}
  .dock{position:relative;top:0;max-height:none}
  .panel{max-height:none}
}
@media (max-width:720px){
  .top{padding:12px 16px 4px}
  .brand h1{font-size:27px}
  .brand p{font-size:13.5px}
  .era{width:100%;justify-content:space-between}
  .eralabel{text-align:left}
  .bar-in{gap:6px;padding:8px 16px}
  .seg button{padding:6px 10px;font-size:12.5px}
  .seg button .lbl{display:none}
  .seg button svg{margin-right:0}
  .search{order:10;flex-basis:100%;max-width:none}
  .viz{padding:10px 8px 8px;border-radius:12px}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .tl-hint{padding-left:0}
  .menu{position:fixed;left:8px!important;right:8px!important;top:auto;bottom:8px;max-height:70vh;min-width:0;border-radius:16px}
  .drawer{width:100vw;top:auto;height:92vh;border-radius:16px 16px 0 0;transform:translateY(105%);border-left:0;border-top:1px solid var(--line2)}
  .drawer.open{transform:none}
  .ctr b{font-size:24px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
@media print{.bar,.dock,.tl-wrap,.drawer,.scrim{display:none}.stage{display:block}}
