*{box-sizing:border-box}
html{scrollbar-gutter:stable}
.device-preview{padding:16px;background:#e9e5ee;min-height:100dvh;display:grid;place-items:center}.device-review{width:min(100%,360px)}.device-review header{margin:0 0 12px}.device-review h1{margin-top:4px;font-size:1.17rem}.device-review iframe{display:block;max-width:100%;border:0;outline:1px solid #c5bacd;border-radius:10px;background:white;box-shadow:0 9px 30px #24143115}.device-review footer{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:4px;font-size:.73rem;color:var(--muted)}.device-review footer a{display:inline-flex;align-items:center;min-height:44px;color:var(--deep);font-weight:700}
.pledge-lead{padding:16px 18px;border-left:3px solid var(--violet);background:var(--tint);line-height:1.65}.pledge-lead p{font-size:1.08rem;font-weight:650}.pledge-lead small,.pledge-lead strong{display:block}.pledge-lead small{color:var(--violet);margin-top:10px;font-weight:700}.pledge-lead strong{font-size:.91rem}.background{margin-bottom:18px;border-bottom:1px solid var(--hair)}.background summary{font-weight:750;padding:12px 0;min-height:44px;cursor:pointer}.background .prose{margin:4px 0 14px}
:root{--ink:#211d28;--violet:#573093;--deep:#432375;--tint:#f0eafa;--paper:#fcfbfe;--hair:#ddd7e5;--muted:#625a6e;color-scheme:light;--site-sans:"Wanted Sans Variable","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;font-family:var(--site-sans);color:var(--ink);background:var(--paper);letter-spacing:-.015em}
body{margin:0;padding-bottom:env(safe-area-inset-bottom,0px);word-break:break-all;overflow-wrap:anywhere}
h1,h2,h3,button,summary,label,input,select,time{word-break:keep-all}
body{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}
button,summary,.panel-bar{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
img,svg{-webkit-touch-callout:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}
input,textarea,select,[contenteditable]:not([contenteditable="false"]){-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}
h1,h2,h3,p,blockquote,figure,ul,ol{margin:0}
a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}button,summary,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default}
:focus-visible{outline:3px solid #8b4ccb;outline-offset:3px}
[hidden]{display:none!important}.sr-only,.skip:not(:focus){position:absolute;clip-path:inset(100%);width:1px;height:1px;overflow:hidden;white-space:nowrap}.skip:focus{position:fixed;z-index:5;top:8px;left:8px;background:#fff;padding:12px}

.wrap{width:min(calc(100% - 48px),1080px);margin-inline:auto}
.mast{background:var(--paper);border-bottom:1px solid var(--hair)}
.mast-in,.menu-head{display:flex;align-items:center;justify-content:space-between}
.mast-in{height:70px}
.brand,.menu-button{display:inline-flex;align-items:center;min-height:44px}
.brand img{width:65px;height:auto}
.menu-button{gap:10px;padding:7px 2px 7px 12px;border:0;background:transparent;font-weight:700;font-size:.95rem}
.menu-button svg{flex:none}
#site-menu{margin:0 0 0 auto;max-width:none;width:min(100%,420px);max-height:100dvh;border:0;padding:0;background:var(--paper);color:var(--ink);overflow:auto}
#site-menu::backdrop{background:#251c35a8}
.menu-sheet{padding:16px 24px 30px}
.menu-head{padding-bottom:14px;border-bottom:2px solid var(--ink)}
.menu-head h2{font-size:1.18rem}
#menu-close span{font:400 1.65rem/1 system-ui}
.menu-sheet nav{display:grid}
.menu-sheet nav a{display:flex;align-items:center;justify-content:space-between;min-height:60px;border-bottom:1px solid var(--hair);font-weight:700;font-size:1.15rem}
.menu-sheet nav a::after{content:'↗';font-size:1rem;color:var(--violet)}
.menu-sheet nav a[aria-current]{color:var(--violet)}
html.menu-open{overflow:hidden}
main{min-height:60vh}main:focus,#demo-result:focus,[tabindex="-1"]:focus{outline:none}

.home{max-width:1280px;margin:auto;padding-bottom:clamp(68px,12vh,160px)}
.poster{isolation:isolate;position:relative;overflow:hidden;background:linear-gradient(106deg,#f2edf8 0%,#e4d7f2 49%,#bd9fda 100%)}

.poster-inner{position:relative;max-width:900px;margin:auto;padding:20px 30px 12px;min-height:230px;display:grid;grid-template-columns:1.2fr 1fr;gap:20px;align-items:center}
.cover-title{position:relative;align-self:stretch;display:flex;align-items:center;isolation:isolate;min-width:0}
.poster h1{position:relative;z-index:1;color:#211827;font-size:clamp(2rem,4.6vw,3.7rem);line-height:1.18;font-weight:850;letter-spacing:-.08em}
.cover-art{position:absolute;left:54%;bottom:0;width:88px;aspect-ratio:144/124;pointer-events:none;opacity:.18;z-index:-1}
.candidate-link{display:block;min-width:0;position:relative;align-self:end;color:var(--ink);text-align:center}
.keep-words{display:inline-block}
.candidate-link{width:100%;max-width:315px;justify-self:end}
.pair-portrait{width:100%;aspect-ratio:1.45;overflow:hidden}
.pair-print{position:relative}
.pair-print img{display:block;width:100%;height:auto}
.pair-print::after{content:'';position:absolute;left:44%;top:60%;width:17%;aspect-ratio:340/210;background:url('/assets/wordmark.webp') center/contain no-repeat}
.candidate-names{display:grid;grid-template-columns:1fr 1fr;column-gap:4px;border-top:1px solid #8d759e;padding-top:7px;font-size:.78rem;line-height:1.4}
.candidate-names span{display:inline-block}.candidate-names b{font-size:1rem}
.profile-hint{display:inline-flex;gap:5px;align-items:center;font-size:.77rem;font-weight:700;color:var(--deep);padding:4px 0}
.candidate-link:hover .profile-hint{text-decoration:underline}
.mast-name{margin-right:auto;margin-left:14px;padding-left:14px;border-left:1px solid var(--hair);font-size:.74rem;line-height:1.45;font-weight:600;color:var(--muted)}
.door-frame,.poster-door{display:block;position:absolute;inset:0;width:100%;height:100%}
.poster-door{transform-origin:18.06% 50%;transform:scaleX(1)}
.poster.is-open .poster-door{transform:scaleX(-.72)}
.door-shadow{position:absolute;left:17.9%;top:60%;width:72%;height:48%;background:linear-gradient(145deg,#fff9,transparent 75%);clip-path:polygon(0 65%,100% 0,82% 77%,0 100%)}
.door-light{position:absolute;left:42%;top:16%;width:5%;height:66%;background:linear-gradient(90deg,#fff,#d7bdffb3,transparent);filter:blur(1px);box-shadow:0 0 8px 3px #c19ae580;opacity:0}
@media(prefers-reduced-motion:no-preference){
  .poster-door{transition:transform 400ms cubic-bezier(.2,.7,.2,1)}
  .poster.arrival .door-light{animation:seam-light 350ms ease-out 1}
  @keyframes seam-light{0%,100%{opacity:0}35%{opacity:1}}
}
@media(prefers-reduced-motion:reduce){.poster-door{transform:scaleX(-.72)}}

.home-body{max-width:760px;margin:auto;padding:0 24px}
.schedule{margin:22px 0 0}
.calendar-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:7px}
.calendar-head h2,.home-section h2{font-size:1.43rem;font-weight:800;letter-spacing:-.06em;line-height:1.32}
.calendar-head>span{font-weight:650;color:var(--muted);font-size:.79rem}
.election-calendar{border-spacing:0;table-layout:fixed;width:100%;margin-bottom:9px;text-align:center}
.election-calendar th{border-bottom:1px solid var(--hair);padding:2px 0 4px;color:#625969;font-size:.76rem}
.election-calendar td{vertical-align:top;padding:3px 0 2px;height:50px}
.cal-number{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;column-gap:1px;min-height:26px}
.cal-number>span{display:inline-grid;place-items:center;min-width:1.55em;min-height:1.55em;border-radius:100%;font-size:1rem;font-weight:650;line-height:1}
.is-past .cal-number>span{color:#716979}
[aria-current="date"] .cal-number>span{outline:1.5px solid var(--violet);outline-offset:-2px;color:var(--deep);font-weight:800}
.cal-number small{font-size:.61rem;font-weight:800;color:var(--deep)}
.cal-event{display:block;color:var(--deep);line-height:1.55;font-size:.72rem;font-weight:750}
.hearing-event::before{content:'';display:inline-block;vertical-align:middle;width:.36em;height:.36em;margin-right:3px;border-radius:100%;background:var(--violet)}
.vote-start .cal-event,.vote-end .cal-event{background:#e9ddf7}
.vote-start .cal-event{border-radius:12px 0 0 12px}.vote-end .cal-event{border-radius:0 12px 12px 0}
.election-times{margin:0;border-top:1px solid var(--hair)}
.election-times>div{display:grid;grid-template-columns:4em 1fr;gap:6px;padding:6px 0;border-bottom:1px solid var(--hair);align-items:baseline}
.election-times dt{color:var(--deep);font-weight:750;font-size:.85rem}
.election-times dd{margin:0;font-weight:650;line-height:1.5;letter-spacing:-.04em}
.election-times dd span{font-weight:500;color:var(--muted)}
.home-section{margin-top:30px}
.home-section h2{margin-bottom:12px}
#home-feed{font-size:.98rem;line-height:1.6}
.home-visitor{border-top:1px solid var(--hair);padding:10px 0;display:grid;grid-template-columns:minmax(65px,24%) 1fr;gap:8px;align-items:baseline}
.home-visitor strong,.home-seed b{color:var(--deep);font-size:.82rem}
.feed-empty,.feed-error{color:var(--muted);font-size:.9rem}
.home-seed{margin-top:9px;padding:10px 14px;background:#f0eaf7;border-left:2px solid #ac91c6}
.home-seed p{margin:3px 0 0}
.home-pledge{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;border-top:1px solid var(--hair)}
.home-pledge svg{flex:none;color:var(--violet)}
.home-pledge:hover strong{text-decoration:underline}
.contents h2{font-size:clamp(1.65rem,4vw,2.4rem);font-weight:800;line-height:1.25;letter-spacing:-.065em;margin-bottom:24px}
.feature-row{justify-content:space-between;gap:12px;min-height:58px;padding:13px 0;border-bottom:1px solid var(--hair)}
.feature-row:last-child{border-bottom:0}
.feature-row strong,.feature-row small{display:block}
.feature-row strong{font-size:1rem;line-height:1.5}
.feature-row small{margin-top:4px;font-size:.875rem;color:var(--muted);line-height:1.6}
.feature-row svg,.pledge-row svg{color:var(--violet)}
.text-link,.back{width:fit-content;gap:7px;padding:4px 0;background:transparent;border:0;color:var(--violet);font-weight:700;font-size:.9rem}
.text-link:hover,.back:hover,.feature-row:hover strong,.pledge-row:hover strong{text-decoration:underline}
.eyebrow{font-size:.78rem;font-weight:750;line-height:1.4;color:var(--violet)}
.reading{width:min(calc(100% - 48px),720px);margin:auto;padding:32px 0 54px}
.back{margin:-8px 0 8px}
.page-head{margin:4px 0 25px}
.page-head h1{font-weight:820;letter-spacing:-.065em;font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.25;margin-top:7px}
.intro{margin-top:12px;color:var(--muted);line-height:1.65}
.featured-section,.category-section{margin-bottom:28px;border-top:2px solid var(--ink)}
.featured-section h2,.category-section h3{font-size:1.2rem;padding:12px 0 8px;border-bottom:1px solid var(--hair)}
.category-section h3 small{display:block;margin-top:4px;font-size:.85rem;font-weight:500;color:var(--muted)}
.contents{margin:44px 0 28px}
.contents h2{margin-bottom:12px}
.contents h2 small{color:var(--violet);font-size:.95rem}
.contents nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
.contents nav a{display:block;align-content:center;min-height:44px;padding:10px 0;border-bottom:1px solid var(--hair);font-weight:700;font-size:.92rem}
.contents nav span{color:var(--muted);font-weight:500}
.category-section,.contents{scroll-margin-top:16px}
.pledge-row{gap:13px;min-height:52px;border-bottom:1px solid var(--hair);padding:10px 2px}
.pledge-row .num{font-size:.8rem;color:var(--violet)}
.pledge-row strong{flex:1;min-width:0;font-size:1rem;line-height:1.5}
.demo-link{align-items:center;display:flex;gap:10px;background:#eee8f6;border-radius:8px;padding:13px 16px;font-weight:700;color:var(--deep)}.demo-link>svg{margin-left:auto}.demo-link small{display:block;font-size:.75rem;color:var(--muted);margin-bottom:3px}
.empty-list,.notice,.seed,.receipt{background:var(--tint);border-radius:8px;padding:16px;line-height:1.6}
.empty-list{margin:14px 0}
.board-heading,.label-line{display:flex;align-items:center;justify-content:space-between;gap:12px}
.button,.text-link,.back,.demo-link,.feature-row,.pledge-row{display:flex;align-items:center;min-height:44px}.button{border-radius:8px;min-height:48px;padding:12px 16px;border:1px solid transparent;font-weight:750;justify-content:space-between;gap:8px;line-height:1.35}.primary{background:var(--violet);color:white}.primary:hover{background:var(--deep)}.button svg,.feature-row svg,.pledge-row svg,.text-link svg,.demo-link svg{flex-shrink:0}
label{display:block;font-weight:750;font-size:.95rem;margin-bottom:7px}input,select{display:block;width:100%;min-width:0;border:1px solid #ada3b7;border-radius:7px;min-height:47px;background:white;padding:10px 12px;font-size:1rem;line-height:1.4}input::placeholder{color:#716778}.detail-head{border-bottom:2px solid #4e415b;padding-bottom:20px}.prose{margin:22px 0 28px}.prose h2,.board-heading h2,.seed h2,.sample-result h2{font-size:1.25rem;letter-spacing:-.045em;margin-bottom:10px}.prose p,.person blockquote{line-height:1.8}.prose p+p{margin-top:12px}.timeline{list-style:none;padding:0}.timeline li{display:grid;grid-template-columns:minmax(86px,23%) 1fr;padding:10px 0;gap:12px;line-height:1.55;border-bottom:1px solid var(--hair)}.timeline b{color:var(--deep)}.timeline .condition{display:block;color:var(--muted);font-size:.85rem}.actions{display:grid;gap:4px}.people-photo{background:linear-gradient(115deg,#dfd0f0,#f7f3fc);border-radius:12px;overflow:hidden}.people-photo>div{width:min(74%,390px);position:relative;margin:18px auto 0}.people-photo .people{width:100%;display:block;height:auto}.placard-logo{position:absolute;width:17%;left:44%;top:61%}.people-photo figcaption{background:#efeaf5;border-top:1px solid #ded3e8;padding:8px;text-align:center;font-size:.75rem;color:var(--muted)}
.person{border-bottom:1px solid var(--hair);padding:20px 0}.person h2{font-size:1.55rem;margin:3px 0 8px}.person h2 small{font-size:.85rem;font-weight:500;color:var(--muted)}.person blockquote{font-weight:650}.speech summary{cursor:pointer;width:fit-content;color:var(--violet);font-weight:700;font-size:.9rem;min-height:44px;padding:11px 0}.open-label,details[open] .closed-label{display:none}details[open] .open-label{display:inline}.speech .prose{margin:4px 0}
.notice{color:var(--deep);margin:12px 0 20px}.sample-result{margin:22px 0 8px;background:white;border:1px solid var(--hair);border-left:5px solid var(--violet);padding:20px}.sample-result dl{display:grid;grid-template-columns:auto 1fr;gap:9px}.sample-result dt{font-weight:750}.sample-result dd{margin:0}.sample-result ol{padding:12px 0 12px 22px}.muted,.hint{color:var(--muted);font-size:.875rem;line-height:1.6}.hint.small{font-size:.77rem;margin-top:4px}.seed{margin:26px 0 18px}.seed h2{margin:3px 0 6px}.board-heading{align-items:center}.board-heading h2{margin:0}.visitor{padding:14px 0;border-bottom:1px solid var(--hair)}.visitor small{color:var(--violet);font-weight:700}.visitor p{line-height:1.6;margin-top:4px}
fieldset{border:0;padding:0;margin:0;min-width:0}fieldset:disabled{opacity:.68}form .button{width:100%;margin-top:12px}form .label-line{margin-top:15px}.label-line small{font-size:.75rem;color:var(--muted)}.field-error,.problem{color:#8c1932}.field-error:not(:empty){margin:5px 0;font-size:.85rem}.hint#form-help{margin-top:9px}.receipt:empty{display:none}.receipt{margin-top:10px;font-weight:650}.receipt span{display:block;font-weight:500;font-size:.88rem}.problem{background:#fff0f2}[aria-invalid=true]{border:2px solid #a12f40}

@media(max-width:640px){
  .mast-in{height:58px}.brand img{width:54px}
  .mast-name{font-size:.64rem;margin-left:9px;padding-left:9px}
  .poster-inner{min-height:0;padding:13px 18px 9px 24px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
  .cover-title{display:block;padding-top:15px;padding-bottom:48px}
  .poster h1{font-size:clamp(1.5rem,5.4vw,2rem);line-height:1.17;letter-spacing:-.085em}
  .cover-art{left:2px;bottom:2%;width:51px;opacity:.28}
  .candidate-names{padding-top:4px;font-size:.64rem}
  .candidate-names b{font-size:.83rem}
  .profile-hint{font-size:.7rem}
  .schedule{margin-top:14px}
  .calendar-head h2,.home-section h2{font-size:1.22rem}
  .election-calendar td{height:44px;padding-top:2px}
  .election-calendar{margin-bottom:6px}
  .election-times>div{grid-template-columns:3.1em 1fr;gap:5px;padding:5px 0}
  .election-times dt{font-size:.79rem}.election-times dd{font-size:.88rem}
  .home-section{margin-top:25px}
  .reading{padding:22px 0 36px}
  .page-head{margin-bottom:20px}
  .contents nav{grid-template-columns:1fr}
  .timeline li{grid-template-columns:26% 1fr}
  .people-photo>div{width:84%}
}

@media(max-width:315px){.poster-inner{padding-inline:14px}.mast-name{font-size:.6rem}.timeline li{display:block}.timeline b{display:block}}
