*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#eef2f8;--surface:#ffffff;--surface-hover:#f5f8fc;--surface-alt:#f3f6fb;
  --border:rgba(15,23,42,.10);--border-light:rgba(15,23,42,.06);
  --text:#141b2b;--text2:#525f76;--text3:#8b94a6;
  --accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:rgba(37,99,235,.10);
  --green:#16a34a;--green-bg:rgba(22,163,74,.12);
  --red:#dc2626;--red-bg:rgba(220,38,38,.12);
  --amber:#d97706;--amber-bg:rgba(217,119,6,.14);
  --purple:#7c3aed;--purple-bg:rgba(124,58,237,.12);
  --gray:#64748b;--gray-bg:rgba(100,116,139,.12);
  --r:10px;--r-lg:14px;
  --sh:0 4px 16px rgba(15,23,42,.08);
  --glow-accent:0 0 20px rgba(37,99,235,.12);
}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}

/* SCROLLBAR */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(15,23,42,.1);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:rgba(15,23,42,.18)}

/* NAV */
.nav{background:rgba(255,255,255,.9);border-bottom:1px solid var(--border);padding:0 2rem;height:52px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:300;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.nav-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:1rem;color:var(--text);text-decoration:none}
.nav-logo{width:28px;height:28px;background:linear-gradient(135deg,#3b82f6,#6366f1);border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:13px;box-shadow:0 0 12px rgba(59,130,246,.3)}
.nav-right{font-size:.78rem;color:var(--text3)}
.nav-right a{color:var(--accent);text-decoration:none}
.nav-right a:hover{color:var(--accent-hover)}
/* HERO pinned as a sticky search+stats header */
.hero{position:sticky;top:46px;z-index:200;overflow:visible}
.hero::before{display:none}

/* HERO */
.hero{background:linear-gradient(160deg,#ffffff 0%,#eaf1fb 45%,#e3ecfa 72%,#f2f6fc 100%);padding:2.8rem 2rem 2.2rem;color:var(--text);position:sticky;top:46px;z-index:200;overflow:visible;border-bottom:1px solid var(--border)}
.hero::before{content:'';position:absolute;top:-50%;right:-20%;width:60%;height:200%;background:radial-gradient(ellipse,rgba(37,99,235,.10) 0%,transparent 70%);pointer-events:none}
.hero-inner{max-width:920px;margin:0 auto;position:relative}
.hero h1{font-size:1.75rem;font-weight:800;letter-spacing:-.03em;margin-bottom:0;background:linear-gradient(135deg,#0f172a,#475569);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.hero p{color:var(--text2);font-size:.9rem;margin-bottom:1.4rem}
.s-row{display:flex;gap:8px;align-items:stretch}
.s-row select{padding:.85rem .9rem;border:1px solid rgba(15,23,42,.14);border-radius:var(--r);background:#fff;color:var(--text);font-size:.9rem;font-family:inherit;cursor:pointer;transition:border-color .2s,box-shadow .2s}
.s-row .mgr-sel{padding:.85rem .9rem;border:1px solid rgba(15,23,42,.14);border-radius:var(--r);background:#fff;color:var(--text);font-size:.9rem;font-family:inherit;cursor:pointer;transition:border-color .2s,box-shadow .2s;max-width:170px;text-overflow:ellipsis}
.s-row select:focus,.s-row .mgr-sel:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.s-row select option,.s-row .mgr-sel option{background:#fff;color:var(--text)}
.season-note{flex:1 0 100%;margin:.5rem 0 0;font-size:.73rem;line-height:1.4;color:var(--text3);text-align:center}
.season-note.pending{color:var(--text2);font-weight:600}
@media(min-width:769px){.hero-center .s-row #yr{max-width:300px;text-overflow:ellipsis}}
.s-field{position:relative;flex:3;min-width:0}
.s-field input{width:100%;padding:.85rem 1rem .85rem 2.7rem;border:1px solid rgba(15,23,42,.14);border-radius:var(--r);background:#fff;color:var(--text);font-size:1rem;font-family:inherit;transition:border-color .2s,box-shadow .2s}
.s-field input::placeholder{color:#9aa4b5}
.s-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.s-icon{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:#9aa4b5;pointer-events:none}
.s-btn{padding:.85rem 1.5rem;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:var(--r);font-size:.9rem;font-weight:600;font-family:inherit;cursor:pointer;transition:all .2s;white-space:nowrap;box-shadow:0 0 16px rgba(59,130,246,.2)}
.s-btn:hover{background:linear-gradient(135deg,#60a5fa,#3b82f6);box-shadow:0 0 24px rgba(59,130,246,.35)}
.s-btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}

/* COMPANY LIST PANEL */
.cl-panel{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:0 12px 40px rgba(15,23,42,.14);z-index:200;max-height:350px;overflow-y:auto;display:none}
.cl-panel.vis{display:block}
.cl-item{padding:.6rem 1rem;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .12s;border-bottom:1px solid rgba(15,23,42,.04)}
.cl-item:last-child{border-bottom:none}
.cl-item:hover{background:rgba(59,130,246,.1)}
.cl-name{font-size:.85rem;font-weight:600;color:var(--text)}
.cl-meta{font-size:.72rem;color:var(--text3);white-space:nowrap;margin-left:12px}
.cl-empty{padding:1rem;text-align:center;font-size:.82rem;color:var(--text3)}

/* CONTAINER */
.ct{max-width:none;margin:0;padding:1.5rem 2.5rem 4rem}

/* STATS */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:1.25rem}
.st-c{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1rem 1.25rem;position:relative;overflow:hidden;transition:border-color .2s,box-shadow .2s}
.st-c:hover{border-color:rgba(15,23,42,.12);box-shadow:var(--sh)}
.st-c::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px}
.st-c:nth-child(1)::before{background:var(--accent)}
.st-c:nth-child(2)::before{background:var(--green)}
.st-c:nth-child(3)::before{background:var(--purple)}
.st-c:nth-child(4)::before{background:var(--amber)}
.st-c:nth-child(1):hover{box-shadow:0 0 20px rgba(59,130,246,.08)}
.st-c:nth-child(2):hover{box-shadow:0 0 20px rgba(34,197,94,.08)}
.st-c:nth-child(3):hover{box-shadow:0 0 20px rgba(167,139,250,.08)}
.st-c:nth-child(4):hover{box-shadow:0 0 20px rgba(245,158,11,.08)}
.st-c .st-l{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-bottom:2px}
.st-c .st-v{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;color:var(--text)}
.st-c .st-d{font-size:.75rem;color:var(--text2);margin-top:1px}

/* STATE MSG */
.msg{text-align:center;padding:3.5rem 2rem;color:var(--text3)}
.msg h3{font-size:1rem;font-weight:600;color:var(--text2);margin-bottom:.3rem}

/* RESULTS */
.res-header{display:flex;gap:1.5rem;margin-bottom:1rem;align-items:flex-start}
.res-left{flex:1;min-width:0}
.res-right{display:flex;flex-direction:column;gap:.5rem;min-width:140px}
.res-title{font-size:1.25rem;font-weight:700;color:var(--text);margin-bottom:.4rem}
.stat-item{background:var(--surface-alt);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;text-align:center}
.stat-val{display:block;font-size:1.1rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.stat-lbl{font-size:.68rem;color:var(--text3);text-transform:uppercase;letter-spacing:.05em}
.so-info{display:flex;align-items:baseline;gap:.5rem;margin-bottom:.75rem;padding:.4rem .6rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:6px;width:fit-content}
.so-label{font-size:.72rem;color:var(--text3);text-transform:uppercase;letter-spacing:.04em;font-weight:600}
.so-val{font-size:.95rem;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
/* Pie chart */
.pie-section{margin-top:1.25rem;background:linear-gradient(145deg,var(--surface),var(--surface-alt));border:1px solid var(--border);border-radius:var(--r-lg);padding:1.25rem 1.5rem;transition:border-color .3s,box-shadow .3s}
.pie-section:hover{border-color:rgba(15,23,42,.15);box-shadow:0 4px 20px rgba(15,23,42,.1)}
.pie-title{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text2);margin-bottom:.2rem}
.pie-subtitle{font-size:.65rem;color:var(--text3);opacity:.7;margin-bottom:.85rem;line-height:1.4}
.pie-wrap{display:flex;align-items:flex-start;gap:2rem}
.pie-svg{width:200px;height:200px;flex-shrink:0}
.pie-svg path{transition:opacity .2s,transform .15s;cursor:pointer;transform-origin:center}
.pie-svg path:hover{opacity:.85;transform:scale(1.02)}
.pie-legend{display:flex;flex-direction:column;gap:0;font-size:.73rem;flex:1;min-width:0}
.pie-leg-item{display:flex;align-items:center;gap:.5rem;padding:.18rem .5rem;border-radius:8px;transition:background .15s,transform .1s}
.pie-leg-item:hover{background:rgba(15,23,42,.06);transform:translateX(2px)}
.pie-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.pie-leg-name{color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.pie-leg-pct{color:var(--text);font-weight:700;margin-left:auto;font-variant-numeric:tabular-nums;padding-left:.5rem;font-size:.72rem}
.pie-leg-src{margin-left:.25rem}

/* FILTER PILLS */
.fpills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:1rem}
.fpill{padding:.3rem .75rem;border:1px solid var(--border);border-radius:999px;font-size:.75rem;font-weight:500;font-family:inherit;background:transparent;color:var(--text2);cursor:pointer;transition:all .15s;white-space:nowrap}
.fpill:hover{border-color:var(--accent);color:var(--accent)}
.fpill.on{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 0 12px rgba(59,130,246,.2)}

/* PROPOSAL CARD */
.prop{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:10px;overflow:hidden;transition:border-color .2s,box-shadow .2s}
.prop:hover{border-color:rgba(15,23,42,.12);box-shadow:0 4px 20px rgba(15,23,42,.1)}
.prop-top{padding:1.15rem 1.35rem;cursor:pointer;transition:background .15s}
.prop-top:hover{background:var(--surface-hover)}
.prop-r1{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.4rem}
.prop-desc{font-size:.88rem;font-weight:600;line-height:1.4;flex:1;color:var(--text)}
.chev{flex-shrink:0;color:var(--text3);transition:transform .25s}
.prop.open .chev{transform:rotate(180deg)}
.prop-meta{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.6rem;font-size:.75rem;color:var(--text2)}
.cat-badge{display:inline-block;background:var(--purple-bg);color:var(--purple);padding:.15rem .5rem;border-radius:999px;font-size:.7rem;font-weight:600}

/* VOTE BAR */
.vbar{height:30px;background:rgba(15,23,42,.04);border-radius:999px;overflow:hidden;display:flex;margin-bottom:.4rem}
.vbar-seg{height:100%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff;padding:0 5px;white-space:nowrap;overflow:hidden}
.vbar-seg.for{background:var(--green)}.vbar-seg.against{background:var(--red)}.vbar-seg.abstain{background:var(--amber)}.vbar-seg.withhold{background:#f59e0b}.vbar-seg.other{background:var(--gray)}.vbar-seg.unreported{background:rgba(15,23,42,.06);color:var(--text3);font-size:.65rem}

.vlegend{display:flex;gap:10px;flex-wrap:wrap;font-size:.75rem;color:var(--text2)}
.vlegend b{color:var(--text)}
.ldot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:3px}
.ldot.for{background:var(--green)}.ldot.against{background:var(--red)}.ldot.abstain{background:var(--amber)}.ldot.withhold{background:#f59e0b}.ldot.other{background:var(--gray)}

.mgmt-row{font-size:.75rem;color:var(--text3);margin-top:.4rem;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.mgmt-b{font-weight:600;padding:.1rem .4rem;border-radius:3px}
.mgmt-b.for{background:var(--green-bg);color:var(--green)}.mgmt-b.against{background:var(--red-bg);color:var(--red)}.mgmt-b.none{background:var(--gray-bg);color:var(--gray)}
.vote-outcome{font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:4px;letter-spacing:.03em;margin-left:auto}
.vote-outcome.passed{background:var(--green-bg);color:var(--green);border:1px solid rgba(34,197,94,.2)}
.vote-outcome.failed{background:var(--red-bg);color:var(--red);border:1px solid rgba(239,68,68,.2)}
.vote-outcome.mixed{background:var(--amber-bg);color:var(--amber);border:1px solid rgba(245,158,11,.2)}

/* MANAGER TABLE */
.mgr-panel{max-height:0;overflow:hidden;transition:max-height .35s ease;border-top:1px solid var(--border)}
.prop.open .mgr-panel,.psum.open .mgr-panel{max-height:none}
.mgr-inner{padding:1rem 1.35rem;background:var(--surface-alt)}
.mgr-sec-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-bottom:.6rem}
.mgr-tbl{width:100%;border-collapse:collapse}
.mgr-tbl th{text-align:left;padding:.5rem .7rem;border-bottom:1px solid rgba(15,23,42,.1);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text3)}
.mgr-tbl th:last-child{text-align:right}
.mgr-tbl td{padding:.5rem .7rem;border-bottom:1px solid var(--border-light);font-size:.84rem;color:var(--text)}
.mgr-tbl tr:last-child td{border-bottom:none}
.mgr-tbl tr.mgr-row{cursor:pointer}
.mgr-tbl tr.mgr-row:hover td{background:rgba(15,23,42,.03)}
.mgr-name{font-weight:600;color:var(--text)}
.shares-r{text-align:right;font-variant-numeric:tabular-nums;font-weight:500}

/* Vote chips */
.vc{display:inline-block;padding:.12rem .5rem;border-radius:4px;font-size:.75rem;font-weight:600}
.vc.for{background:var(--green-bg);color:var(--green)}.vc.against{background:var(--red-bg);color:var(--red)}.vc.abstain{background:var(--amber-bg);color:var(--amber)}.vc.withhold{background:var(--amber-bg);color:var(--amber)}.vc.other{background:var(--gray-bg);color:var(--gray)}

/* Fund sub-panel */
.fund-panel{display:none;background:rgba(15,23,42,.02)}
.fund-panel.open{display:table-row}
.fund-panel td{padding:0}
.fund-wrap{padding:.75rem 1rem .75rem 2.5rem}
.fund-wrap .ftitle{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);margin-bottom:.5rem}
.fund-tbl{width:100%;border-collapse:collapse}
.fund-tbl td{padding:.35rem .6rem;border-bottom:1px solid var(--border-light);font-size:.8rem;color:var(--text)}
.fund-tbl tr:last-child td{border-bottom:none}
.fund-n{color:var(--text2)}
.src-link{display:inline-block;margin-left:.4rem;padding:.1rem .35rem;font-size:.62rem;font-weight:700;color:#2563eb;background:#eff6ff;border:1px solid #bfdbfe;border-radius:3px;text-decoration:none;vertical-align:middle;letter-spacing:.02em}
.src-link:hover{background:#dbeafe;color:#1d4ed8}
/* FOR/AGAINST column colors */
.for-col{color:var(--green)}.against-col{color:var(--red)}
.mgr-tbl th.for-col{color:var(--green)}.mgr-tbl th.against-col{color:var(--red)}
.mgr-subtotal td{border-top:2px solid var(--border);border-bottom:none;padding-top:.7rem}
/* Two-column fund layout */
.fund-cols{display:flex;gap:1.5rem}
.fund-col{flex:1;min-width:0}
.fund-col-hdr{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.3rem .6rem;border-radius:4px 4px 0 0;margin-bottom:.2rem}
.fund-col-hdr.for-hdr{color:var(--green);background:var(--green-bg)}
.fund-col-hdr.against-hdr{color:var(--red);background:var(--red-bg)}
.subtotal-row td{border-top:2px solid var(--border);border-bottom:none!important;padding-top:.4rem}

/* Participation banner */
.part-banner{font-size:.75rem;color:var(--accent);background:rgba(59,130,246,.06);border:1px solid rgba(59,130,246,.12);border-radius:6px;padding:.35rem .65rem;margin-top:.45rem;display:flex;align-items:center;gap:6px;transition:opacity .3s}
.part-banner .part-pct{font-weight:700;font-size:.82rem}
.part-banner .part-note{color:var(--text3);font-size:.7rem}
.part-banner.loading{opacity:.5}
.part-banner.hidden{display:none}

/* Spinner */
.spin{width:18px;height:18px;border:3px solid rgba(15,23,42,.15);border-top-color:var(--accent);border-radius:50%;animation:sp .5s linear infinite;display:inline-block;vertical-align:middle}
.spin.wh{border-color:rgba(15,23,42,.3);border-top-color:#fff}
@keyframes sp{to{transform:rotate(360deg)}}

/* Responsive */
@media(max-width:768px){
  .hero{padding:1.5rem 1rem}.s-row{flex-direction:column}.ct{padding:1rem}.stats{grid-template-columns:repeat(2,1fr)}.nav{padding:0 1rem}
}
@media(max-width:480px){.stats{grid-template-columns:1fr}}

/* POLICIES HERO BUTTON */
.hero-title-row{display:flex;align-items:center;justify-content:flex-start;gap:1.2rem;flex-wrap:wrap}
.policies-fab{position:fixed;bottom:24px;left:24px;z-index:1000;display:flex;align-items:center;gap:8px;padding:9px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;text-decoration:none!important;cursor:pointer;box-shadow:var(--sh);transition:border-color .2s,color .2s,transform .2s}
.policies-fab:hover{border-color:var(--accent);transform:translateY(-2px)}
.policies-fab-text{color:var(--text2);font-size:.8rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}
.policies-fab:hover .policies-fab-text{color:var(--accent)}
.beta-badge{margin:.1rem 0 .8rem;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text3);font-weight:600}
.suggestion-box{position:fixed;bottom:24px;right:24px;z-index:1000;cursor:pointer;text-decoration:none;display:flex;align-items:center;gap:8px;padding:9px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text2);box-shadow:var(--sh);transition:border-color .2s,color .2s,transform .2s}
.suggestion-box:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
.suggestion-box svg{flex-shrink:0}
.suggestion-box span{font-size:.8rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}

/* ===== RESULTS WORKSPACE (redesigned) ===== */
.abstain-col{color:var(--amber)}
.company-head{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:flex-end;justify-content:space-between;margin-bottom:1.4rem}
.ch-title{font-size:1.55rem;font-weight:800;letter-spacing:-.025em;color:var(--text)}
.ch-sub{font-size:.82rem;color:var(--text2);margin-top:.3rem}
.ch-sub .muted{color:var(--text3)}
.ch-stats{display:flex;gap:10px;flex-wrap:wrap}
.chip{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:.55rem .85rem;text-align:center;min-width:86px;box-shadow:var(--sh)}
.chip-v{display:block;font-size:1.18rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.1}
.chip-l{font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:600}

.workspace{display:flex;gap:1.6rem;align-items:flex-start}
.rail{position:sticky;top:66px;width:252px;flex-shrink:0;max-height:calc(100vh - 82px);overflow-y:auto}
.rail-title{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text3);margin:.1rem 0 .55rem .25rem}
.cat-nav{display:flex;flex-direction:column;gap:3px}
.cat-btn{display:grid;grid-template-columns:1fr auto;gap:3px 8px;text-align:left;padding:.5rem .7rem;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--text2);cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s,color .15s;width:100%}
.cat-btn:hover{background:var(--surface);border-color:var(--border)}
.cat-btn.on{background:var(--surface);border-color:var(--border);box-shadow:var(--sh)}
.cat-btn.on .cat-name{color:var(--accent)}
.cat-name{font-size:.82rem;font-weight:600;line-height:1.25;color:var(--text)}
.cat-count{font-size:.72rem;font-weight:700;color:var(--text3);font-variant-numeric:tabular-nums;align-self:center}
.cat-mini{grid-column:1/-1;height:4px;border-radius:2px;background:var(--red);overflow:hidden;margin-top:2px;opacity:.9}
.cat-mini-for{display:block;height:100%;background:var(--green)}

.main{flex:1;min-width:0}
.ov-grid{display:flex;gap:1.25rem;flex-wrap:wrap;align-items:flex-start;margin-bottom:1.4rem}
.ov-grid .pie-section{margin-top:0;flex:2;min-width:320px}
.ov-holders{flex:1;min-width:250px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1rem 1.25rem;box-shadow:var(--sh)}
.ov-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-bottom:.7rem}
.ovh-row{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;border-bottom:1px solid var(--border-light);font-size:.8rem}
.ovh-row:last-child{border-bottom:none}
.ovh-name{color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovh-sh{color:var(--text2);font-variant-numeric:tabular-nums;white-space:nowrap}
.ovh-note{margin-top:.7rem;padding-top:.6rem;border-top:1px solid var(--border-light);font-size:.68rem;line-height:1.45;color:var(--text3)}

.section-bar{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.85rem;padding-bottom:.55rem;border-bottom:1px solid var(--border)}
.section-bar h3{font-size:1.08rem;font-weight:700;color:var(--text);letter-spacing:-.01em}
.section-count{font-size:.78rem;color:var(--text3);font-weight:500}

.psum{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:10px;overflow:hidden;transition:border-color .2s,box-shadow .2s}
.psum:hover{border-color:rgba(15,23,42,.16);box-shadow:0 4px 20px rgba(15,23,42,.08)}
.psum-head{display:flex;gap:1.6rem;align-items:center;padding:1.05rem 1.3rem;cursor:pointer}
.psum-main{flex:1;min-width:0}
.psum-tags{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}
.psum-date{font-size:.72rem;color:var(--text3)}
.psum-desc{font-size:.95rem;font-weight:600;line-height:1.35;color:var(--text);margin-bottom:.55rem}
.psum-sub{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;font-size:.75rem;color:var(--text2)}
.mgmt-inline{color:var(--text2)}
.psum-mgrs{color:var(--text3)}
.psum-toggle{display:inline-flex;align-items:center;gap:3px;color:var(--accent);font-weight:600;margin-left:auto}
.psum-toggle .chev{transition:transform .25s}
.psum.open .psum-toggle .chev{transform:rotate(180deg)}
.psum-meter{width:238px;flex-shrink:0;text-align:right}
.meter-num{font-size:1.7rem;font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.meter-cap{font-size:.61rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);font-weight:600;margin:.15rem 0 .5rem}
.psum-meter .vbar{margin-bottom:0;height:26px}
.mgr-panel .detail-meta{display:flex;gap:1.25rem;flex-wrap:wrap;font-size:.72rem;color:var(--text3);margin-bottom:.7rem}
.detail-sub{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);margin:.2rem 0 .5rem}
.tally{font-size:.72rem;color:var(--text2);background:var(--surface-alt);border:1px solid var(--border);border-radius:6px;padding:.45rem .65rem;margin-bottom:.8rem}
.mgr-inner .vlegend{margin:.5rem 0 .3rem}

/* --- sizing / density tuning (larger type, roomier topics & chart) --- */
html{font-size:17px}
/* proxyvotenow.com brand banner */
.site-banner{position:sticky;top:0;z-index:300;display:flex;align-items:center;gap:1.25rem;padding:.7rem 2rem;background:linear-gradient(90deg,#0b1220,#111c33 55%,#1b2a4a);color:#fff;border-bottom:1px solid rgba(255,255,255,.1)}
.brand{display:flex;align-items:center;gap:22px;text-decoration:none;color:#fff}
.brand-mark{width:84px;height:84px;background:linear-gradient(135deg,#3b82f6,#6366f1 50%,#8b5cf6);border-radius:20px;position:relative;box-shadow:0 4px 22px rgba(99,102,241,.6),inset 0 1px 0 rgba(255,255,255,.25);overflow:visible}
.brand-mark svg{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:118px;height:118px;overflow:visible;filter:drop-shadow(0 2px 5px rgba(15,23,42,.4))}
.brand-name{font-weight:800;font-size:3.3rem;letter-spacing:-.03em;color:#fff}
.brand-blue{background:linear-gradient(90deg,#60a5fa,#22d3ee);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.brand-tld{color:#93c5fd;font-weight:700;margin-left:1px}
.brand-tag{flex:1;font-size:.82rem;color:rgba(255,255,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:.5rem}
.banner-link{display:inline-flex;align-items:center;gap:6px;padding:.44rem .95rem;border:1px solid rgba(255,255,255,.22);border-radius:8px;color:#fff;text-decoration:none;font-size:.86rem;font-weight:600;white-space:nowrap;transition:background .15s,border-color .15s;flex-shrink:0}
.banner-link:hover{background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.42)}
/* compact one-row sticky hero (search + stats) */
.hero{padding:.85rem 2rem .95rem}
.hero-inner{max-width:none;margin:0}
.hero-bar{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}
.hero-center{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:1.9rem;flex-wrap:wrap}
.policy-btn{display:inline-flex;align-items:center;gap:9px;padding:.85rem 1.4rem;border:1px solid var(--border);border-radius:var(--r);background:var(--surface);color:var(--text2);font-size:1.02rem;font-weight:600;text-decoration:none;white-space:nowrap;flex-shrink:0;box-shadow:var(--sh);transition:border-color .15s,color .15s}
.policy-btn:hover{border-color:var(--accent);color:var(--accent)}
.policy-btn svg{width:26px;height:26px}
.s-row{flex:0 1 820px;min-width:320px;max-width:860px;margin:0}
/* --- hero control overflow guard (769-1150px band) ------------------------
   Measured before: 324px of horizontal overflow at 769px, 197px at 1024px,
   74px at 1150px. Phones (<=768px) were always 0 -- the mobile stack below
   handles them -- so this band is the one that was scrolling sideways.
   min-width:0 is load-bearing: a flex item will not shrink below its content
   width without it, which is why the row overflowed instead of reflowing. */
.s-row{flex-wrap:wrap;min-width:0;flex:1 1 auto}
.s-row select,.s-row .mgr-sel,.s-row .s-field{min-width:0}
.s-row .s-field{flex:1 1 100%}
/* The guard above puts the search field on its own line at EVERY width, so
   the three controls sat on three rows even at 1920px.  With the three hero
   cards removed (2026-09-30) the row has ~500px more room, so a 220px basis
   fits them on one row from 900px up and still wraps -- never overflows --
   below that.  Measured 0px overflow at 320,360,390,414,480,600,700,769,800,
   900,1024,1150,1300,1440,1600,1920.  Re-measure ALL of those if you change
   this basis; a wider one pushes the 769-1150 band back into overflow. */
@media(min-width:769px){.hero-center .s-row .s-field{flex:3 1 220px}}
.stats{flex-wrap:wrap}
.hero-center .s-row select{font-size:1rem;padding:.72rem .9rem}
.hero-center .s-field input{font-size:1.12rem;padding:.75rem 1rem .75rem 2.9rem}
.hero-center .s-field .s-icon{left:1rem}
.hero-center .s-btn{font-size:1rem;padding:.75rem 1.7rem}
.stats{display:flex;gap:1.7rem;margin:0;grid-template-columns:none}
.st-c{background:transparent;border:none;box-shadow:none;padding:0 0 0 .8rem;min-width:0;overflow:visible;transition:none}
.st-c:hover{box-shadow:none}
.st-v{font-size:1.28rem;line-height:1.05}
.st-l{font-size:.64rem;margin:0}
.st-d{display:none}
/* bigger topics rail */
.rail{width:380px;top:var(--stick-top,320px);max-height:calc(100vh - var(--stick-top,320px) - 20px)}
.rail-title{font-size:.84rem;margin-bottom:.8rem}
.cat-btn{padding:.9rem 1.05rem;gap:6px 10px}
.cat-name{font-size:1.15rem;line-height:1.3}
.cat-count{font-size:.98rem}
.cat-mini{height:6px}
.workspace{gap:2.2rem}
.ch-title{font-size:1.95rem}
.ch-sub{font-size:.98rem}
/* ownership chart: smaller, legend % next to names */
.pie-svg{width:240px;height:240px}
.ov-grid{gap:1.25rem}
.ov-grid .pie-section{flex:1.3;min-width:330px;padding:1.35rem 1.5rem}
.pie-wrap{gap:1.1rem}
.pie-title{font-size:1rem}
.pie-subtitle{font-size:.8rem}
.pie-legend{font-size:.95rem;gap:1px}
.pie-leg-item{padding:.24rem .35rem}
.pie-leg-name{max-width:180px}
.pie-leg-pct{font-size:.9rem;margin-left:.5rem}
.ov-holders{flex:1;min-width:270px;padding:1.3rem 1.5rem}
/* voting insights card (far right) */
.ov-insights{flex:1;min-width:270px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.3rem 1.5rem;box-shadow:var(--sh)}
.ins-item{padding:.55rem 0;border-bottom:1px solid var(--border-light)}
.ins-item:last-child{border-bottom:none}
.ins-item:first-of-type{padding-top:0}
.ins-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text3);margin-bottom:.2rem}
.ins-big{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.ins-val{font-size:1rem;font-weight:600;color:var(--text)}
.ins-sub{font-size:.82rem;color:var(--text2);margin-top:.1rem}
.ins-rank{display:flex;align-items:center;gap:.55rem;padding:.32rem 0;font-size:.92rem}
.ins-rk{width:19px;height:19px;flex-shrink:0;border-radius:50%;background:var(--accent-bg);color:var(--accent);font-size:.7rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.ins-rname{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ins-rcount{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text2);white-space:nowrap}
.ins-rof{color:var(--text3);font-weight:600}
.ov-title{font-size:.88rem}
.ovh-row{font-size:1.05rem;padding:.55rem 0}
.section-bar h3{font-size:1.35rem}
.section-count{font-size:.95rem}
.psum-head{padding:1.25rem 1.5rem;gap:1.6rem}
.psum-desc{font-size:1.18rem}
.psum-tags .cat-badge,.cat-badge{font-size:.84rem;padding:.22rem .65rem}
.psum-date{font-size:.86rem}
.psum-sub{font-size:.92rem;gap:1.1rem}
.psum-meter{width:280px}
.meter-num{font-size:2.35rem}
.meter-cap{font-size:.7rem}
.psum-meter .vbar{height:32px}
.vbar-seg{font-size:.8rem}
.mgr-sec-title{font-size:.85rem}
.mgr-tbl td{font-size:1rem}
.mgr-tbl th{font-size:.8rem}
.detail-meta{font-size:.85rem}
/* per-proposal info box: three side-by-side segments (mgmt rec / outcome / source) */
.psum-box{flex-shrink:0;display:flex;align-items:stretch;border:1px solid var(--border);border-radius:12px;background:var(--surface-alt);overflow:hidden}
.pb-seg{padding:.8rem 1.15rem;display:flex;flex-direction:column;justify-content:center;gap:.4rem;min-width:116px;border-left:1px solid var(--border)}
.pb-seg:first-child{border-left:none}
.pb-label{font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text3)}
.pb-val{font-size:1rem;font-weight:700;color:var(--text);display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;line-height:1.2;min-width:0;overflow-wrap:anywhere}
/* Sponsor badge. Deliberately neutral grey for both values: who put an item
   on the ballot is a fact, not a verdict, and must not read as a green/red
   endorsement the way the old "Mgmt rec" badge did. Sized below .pb-val so
   "Shareholder" fits a third of a 390px row. */
.spon-b{font-weight:600;padding:.1rem .4rem;border-radius:3px;background:var(--gray-bg);color:var(--gray);font-size:.85rem;overflow-wrap:anywhere}
.pb-src{display:inline-flex;align-items:center;gap:4px;color:var(--accent);font-weight:700;font-size:.9rem;text-decoration:none}
.pb-src:hover{color:var(--accent-hover);text-decoration:underline}
.psum-meter{width:250px}

@media(max-width:920px){
  .brand-tag{display:none}
  .hero{position:static}
  .rail{top:66px}
  .psum-box{width:100%}
  .pb-seg{flex:1;min-width:0}
  .workspace{flex-direction:column;gap:1.25rem}
  .rail{position:static;width:100%;max-height:none;overflow:visible}
  .cat-nav{flex-direction:row;overflow-x:auto;gap:6px;padding-bottom:8px}
  .cat-btn{width:auto;flex-shrink:0;grid-template-columns:auto auto;align-items:center}
  .cat-mini{display:none}
  .ov-grid .pie-section{min-width:0;flex-basis:100%;padding:1.1rem}
  .pie-svg{width:240px;height:240px}
  .psum-head{flex-direction:column;align-items:stretch;gap:.85rem}
  .psum-meter{width:100%;text-align:left;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
  .psum-meter .meter-cap{margin:0}
  .psum-meter .vbar{flex-basis:100%}
}

/* FOOTER */
.site-footer{max-width:1100px;margin:2.5rem auto 0;padding:1.4rem 2.5rem 3.2rem;border-top:1px solid var(--border);color:var(--text3);font-size:.7rem;line-height:1.55}
.site-footer p{margin:0 0 .55rem}
.site-footer p:last-child{margin-bottom:0}
.site-footer strong{color:var(--text2);font-weight:600}
.site-footer a{color:var(--text2);text-decoration:underline;text-underline-offset:2px}
.site-footer a:hover{color:var(--accent)}

/* ===== MOBILE / PHONE RESPONSIVE ===== */
@media(max-width:768px){
  html{font-size:15px}
  html,body{overflow-x:clip;max-width:100%}
  #app{overflow-x:clip;max-width:100%}
  /* kill decorative hero glow that bleeds past the right edge */
  .hero::before{display:none}
  /* brand banner */
  .site-banner{padding:.55rem 1rem;gap:.6rem}
  .brand{gap:10px}
  .brand-mark{width:40px;height:40px;border-radius:12px}
  .brand-mark svg{width:56px;height:56px;bottom:4px}
  .brand-name{font-size:1.55rem}
  .brand-tag{display:none}
  .banner-link{padding:.35rem .7rem;font-size:.78rem}
  /* hero: stop being sticky, stack controls full width */
  .hero{padding:.8rem 1rem;position:static}
  .hero-inner{max-width:none;margin:0}
  .hero-bar{flex-direction:column;align-items:stretch;gap:.7rem}
  .hero-center{flex-direction:column;align-items:stretch;gap:.7rem;justify-content:flex-start}
  .policy-btn{justify-content:center;padding:.65rem 1rem;font-size:.92rem}
  .s-row{flex:1 1 auto;min-width:0;max-width:none;width:100%;flex-direction:column;gap:8px;margin:0}
  .s-row select,.s-row .mgr-sel,.hero-center .s-row select{width:100%;max-width:none;font-size:1rem;padding:.8rem .9rem}
  .s-field{flex:1 1 auto;width:100%}
  .hero-center .s-field input{font-size:1rem;padding:.8rem 1rem .8rem 2.7rem}
  .hero-center .s-field .s-icon{left:.9rem}
  .s-btn,.hero-center .s-btn{width:100%;font-size:1rem;padding:.8rem 1rem}
  /* stats: 2-col grid with a light card look */
  .stats{display:grid!important;grid-template-columns:1fr 1fr;gap:.5rem .75rem;width:100%;margin:.4rem 0 0}
  .st-c{padding:.15rem 0 .15rem .7rem;border-left:3px solid var(--border);border-radius:0}
  .st-c::before{display:none}
  .st-v{font-size:1.2rem}
  .st-l{font-size:.62rem}
  /* main container */
  .ct{padding:1rem 1rem 5rem}
  /* results header */
  .company-head{gap:.6rem 1rem;margin-bottom:1rem}
  .ch-title{font-size:1.4rem}
  /* overview cards stack full width */
  .ov-grid{gap:.9rem}
  .ov-grid .pie-section,.ov-holders,.ov-insights{min-width:0;flex-basis:100%;width:100%}
  .pie-wrap{flex-direction:column;align-items:center;gap:1rem}
  .pie-svg{width:min(220px,72vw);height:min(220px,72vw)}
  .pie-legend{width:100%}
  .pie-leg-name{max-width:none;flex:1}
  /* proposal rows */
  .psum-head{flex-direction:column;align-items:stretch;gap:.75rem;padding:1rem}
  .psum-meter{width:100%;text-align:left}
  .psum-box{width:100%}
  .pb-seg{flex:1;min-width:0}
  .psum-desc{font-size:1.02rem}
  .meter-num{font-size:1.9rem}
  /* manager/fund tables FIT the screen (compact + wrapping) instead of overflowing */
  .mgr-inner{padding:.7rem;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .mgr-tbl{min-width:0;width:100%}
  .mgr-tbl th,.mgr-tbl td{padding:.4rem .3rem;font-size:.8rem}
  .mgr-tbl th:first-child,.mgr-tbl td:first-child{white-space:normal;overflow-wrap:anywhere}
  .mgr-tbl .shares-r{font-size:.76rem}
  .detail-meta{gap:.35rem 1rem;font-size:.72rem}
  .fund-cols{flex-direction:column;gap:.6rem}
  .fund-wrap{padding:.5rem .35rem 0 .75rem}
  .fund-tbl td{padding:.3rem .25rem;font-size:.76rem}
  /* keep the results column from overflowing its container (was clipping card content) */
  .workspace{flex-direction:column;gap:1rem;align-items:stretch}
  .main{width:100%;max-width:100%;min-width:0}
  .psum,.prop,.ov-grid,.section-bar,.company-head,.psum-head{max-width:100%;min-width:0}
  /* topic rail -> horizontal scroller */
  .rail{position:static;width:100%;max-height:none;overflow:visible;top:auto}
  .cat-nav{flex-direction:row;overflow-x:auto;gap:6px;padding-bottom:6px}
  .cat-btn{width:auto;flex-shrink:0}
  .cat-name{font-size:.95rem}
  /* floating buttons: smaller, tucked into corners */
  .policies-fab,.suggestion-box{bottom:12px;padding:7px 11px}
  .policies-fab{left:12px}
  .suggestion-box{right:12px}
  .policies-fab-text,.suggestion-box span{font-size:.72rem}
  .site-footer{padding:1.2rem 1rem 4.5rem;font-size:.68rem}
}
@media(max-width:400px){
  html{font-size:14px}
  .brand-name{font-size:1.35rem}
  /* drop FAB labels to avoid overlap on very small screens */
  .policies-fab-text{display:none}
  .suggestion-box span{display:none}
}

/* ===== COMPANY PAGES: pre-rendered HTML, then this same app ===============
   /company/<slug>/<year> (templates/seo_company_unified.html) arrives as a
   complete static page. Its blocks carry one of two classes:
     .pv-a  drawn by the app; hidden until the app has rendered everything
     .pv-s  static blocks the app's view replaces; hidden only then
   The switch is the single class `pv-hydrated` on <html>, set by
   hydrateCompany() in pv-app.js after every card has rendered. With no
   JavaScript, a failed data load or a script error, that class is never set
   and every static block stays as it arrived.
   The search bar needs the script: absent without JavaScript; its space is
   kept from first paint when JavaScript is on (pv-js, set inline in <head>)
   and it is shown once the script is running (pv-live), so nothing below it
   moves when it appears. */
.pv-a{display:none}
html.pv-hydrated .pv-a{display:block}
html.pv-hydrated .pv-s{display:none}
html.pv-co .hero{display:none}
html.pv-co.pv-js .hero{display:block;visibility:hidden}
html.pv-co.pv-live .hero{visibility:visible}
/* The company name is the page's <h1>; the app's own title row would repeat it. */
html.pv-co .company-head{display:none}
