:root{--milk:#eeeee7;--paper:#fafaf5;--ink:#213633;--muted:#717b76;--line:rgba(33,54,51,.15);--soft:rgba(33,54,51,.055);--accent:#c96d55;--good:#4f806d;--shadow:0 20px 60px rgba(33,54,51,.09)}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);font-family:Arial,Helvetica,sans-serif;background:radial-gradient(circle at 43% 5%,#fff,transparent 31%),linear-gradient(145deg,var(--paper),var(--milk) 70%,#dedfd6)}button,input,textarea{font:inherit;color:inherit}.election-app{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:16px;min-height:100dvh;padding:18px clamp(14px,3vw,38px) 22px}.app-head{display:flex;align-items:center;gap:14px;min-height:52px}.brand,.brand img{display:block;width:44px;height:44px}.brand img{filter:brightness(0) saturate(100%) invert(20%) sepia(18%) saturate(673%) hue-rotate(122deg) brightness(92%) contrast(90%)}h1,h2,h3,p{margin:0}.title-block h1{font-size:1.22rem}.eyebrow{display:block;margin-bottom:4px;color:var(--muted);font-size:.65rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.head-actions{display:flex;align-items:center;gap:12px;margin-left:auto}.save-state{color:var(--muted);font-size:.7rem}.step-nav{display:grid;grid-template-columns:repeat(8,minmax(56px,1fr));gap:7px}.step-button{display:grid;gap:5px;min-width:0;padding:9px 10px;border:1px solid transparent;border-radius:13px;background:transparent;text-align:left;cursor:pointer}.step-button span{color:var(--muted);font-size:.61rem;font-weight:800}.step-button b{overflow:hidden;font-size:.69rem;text-overflow:ellipsis;white-space:nowrap}.step-button.active{border-color:var(--line);background:rgba(250,250,245,.8);box-shadow:0 6px 20px rgba(33,54,51,.05)}.step-button.done span{color:var(--good)}.step-button:disabled{cursor:not-allowed;opacity:.48}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 286px;gap:16px;min-height:0}.step-panel,.election-summary{border:1px solid var(--line);border-radius:24px;background:rgba(250,250,245,.76);box-shadow:var(--shadow);backdrop-filter:blur(12px)}.step-panel{overflow:auto;padding:clamp(24px,4vw,46px)}.election-summary{align-self:stretch;padding:24px}.panel-head{max-width:740px;margin-bottom:28px}.panel-head h2{font-size:clamp(1.7rem,3vw,2.65rem);letter-spacing:-.04em}.panel-head p{max-width:680px;margin-top:10px;color:var(--muted);font-size:.86rem;line-height:1.6}.info-grid,.principle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:850px}.info-card,.principle-card,.form-card,.result-card{padding:19px;border:1px solid var(--line);border-radius:17px;background:rgba(255,255,255,.48)}.info-card h3,.principle-card h3{font-size:.93rem}.info-card p,.principle-card p{margin-top:7px;color:var(--muted);font-size:.76rem;line-height:1.5}.source-link{display:inline-block;margin-top:18px;color:var(--ink);font-size:.72rem;font-weight:700}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:760px}.field{display:grid;gap:7px}.field>span,.field-label{font-size:.71rem;font-weight:800}.field input,.field textarea,.number-input{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.75);outline:none}.field textarea{min-height:80px;resize:vertical}.field input:focus,.field textarea:focus,.number-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(33,54,51,.08)}.wide{grid-column:1/-1}.leader-choice{display:flex;gap:10px;align-items:center}.leader-choice input[type=checkbox],.accept-check input{accent-color:var(--ink)}.leader-choice span{font-size:.78rem}.candidate-form{display:grid;grid-template-columns:1fr 2fr auto;gap:10px;align-items:end;max-width:900px}.candidate-list{display:grid;gap:9px;max-width:900px;margin-top:20px}.candidate-row{display:grid;grid-template-columns:36px minmax(130px,.8fr) minmax(170px,1.6fr) auto auto;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.45)}.candidate-index{display:grid;width:30px;height:30px;place-items:center;border-radius:50%;background:var(--ink);color:var(--paper);font-size:.72rem;font-weight:800}.candidate-row input{min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.7)}.accept-check{display:flex;align-items:center;gap:5px;font-size:.69rem;font-weight:700;white-space:nowrap}.icon-button{width:34px;height:34px;border:0;border-radius:9px;background:var(--soft);cursor:pointer}.empty-card{max-width:900px;padding:24px;border:1px dashed var(--line);border-radius:15px;color:var(--muted);font-size:.8rem;text-align:center}.ballot-setup{display:grid;grid-template-columns:minmax(220px,340px) 1fr;gap:20px;align-items:start}.ballot-preview{padding:22px;border:1px solid var(--line);border-radius:17px;background:#fff}.ballot-preview h3{font-size:1rem}.ballot-preview p{margin:6px 0 17px;color:var(--muted);font-size:.7rem}.ballot-preview ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.ballot-preview li{padding:8px 0;border-bottom:1px solid #d6d6cf;font-size:.76rem}.button-row{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px}.primary,.secondary,.quiet,.danger{padding:11px 15px;border-radius:11px;font-size:.75rem;font-weight:800;cursor:pointer}.primary{border:1px solid var(--ink);background:var(--ink);color:var(--paper)}.secondary{border:1px solid var(--line);background:rgba(250,250,245,.76)}.quiet{padding:9px 12px;border:0;background:var(--soft)}.danger{border:1px solid rgba(201,109,85,.3);background:rgba(201,109,85,.1);color:#8b3f31}.count-list{display:grid;gap:9px;max-width:820px}.count-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 12px 12px 16px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.45)}.count-name small{display:block;margin-top:2px;color:var(--muted);font-size:.66rem}.counter{display:flex;align-items:center;gap:8px}.counter button{display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--line);border-radius:10px;background:var(--paper);font-size:1.1rem;font-weight:700;cursor:pointer}.counter output{min-width:36px;text-align:center;font-size:1.12rem;font-weight:800}.count-row.leading{border-color:rgba(79,128,109,.45);background:rgba(79,128,109,.08)}.vote-summary{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}.metric{padding:10px 13px;border-radius:11px;background:var(--soft);font-size:.72rem}.metric strong{font-size:.84rem}.runoff-box{max-width:820px;margin-top:18px;padding:17px;border:1px solid rgba(201,109,85,.3);border-radius:15px;background:rgba(201,109,85,.07)}.runoff-box p{color:var(--muted);font-size:.75rem;line-height:1.5}.result-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:820px}.result-card .role{color:var(--muted);font-size:.67rem;font-weight:800;text-transform:uppercase}.result-card h3{margin-top:8px;font-size:1.45rem}.result-card p{margin-top:5px;color:var(--muted);font-size:.74rem}.acceptance{display:flex;align-items:center;gap:8px;margin-top:15px;font-size:.76rem;font-weight:700}.declaration{max-width:820px;margin-top:18px;padding:18px;border-radius:16px;background:var(--ink);color:var(--paper);font-size:.88rem;line-height:1.55}.election-summary h2{font-size:1.25rem}.election-summary dl{display:grid;gap:0;margin:20px 0}.election-summary dl div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}.election-summary dt{color:var(--muted);font-size:.7rem}.election-summary dd{margin:0;font-size:.72rem;font-weight:800;text-align:right}.privacy-note{padding:13px;border-radius:12px;background:var(--soft);color:var(--muted);font-size:.68rem;line-height:1.5}.privacy-note strong{color:var(--ink)}.flow-actions{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px}.flow-actions span{color:var(--muted);font-size:.68rem;text-align:center}.print-area{display:none}
@media(max-width:900px){.step-nav{overflow:auto;grid-template-columns:repeat(8,110px);padding-bottom:4px}.workspace{grid-template-columns:1fr}.election-summary{display:none}.step-panel{overflow:visible}.candidate-form{grid-template-columns:1fr}.candidate-row{grid-template-columns:32px 1fr auto}.candidate-row .candidate-intro{grid-column:2/-1}.ballot-setup{grid-template-columns:1fr}}@media(max-width:560px){.election-app{padding:10px}.app-head{flex-wrap:wrap}.head-actions{width:100%;margin-left:58px}.save-state{display:none}.step-panel{padding:22px 17px;border-radius:18px}.info-grid,.principle-grid,.field-grid,.result-stack{grid-template-columns:1fr}.wide{grid-column:auto}.panel-head h2{font-size:1.75rem}.candidate-row{grid-template-columns:32px 1fr auto}.accept-check{grid-column:2}.flow-actions{position:sticky;bottom:8px;padding:8px;border:1px solid var(--line);border-radius:14px;background:rgba(250,250,245,.94);backdrop-filter:blur(12px)}.flow-actions span{display:none}}
@media print{body{background:#fff}.election-app{display:none}.print-area{display:block!important}.print-page{display:grid;grid-template-columns:repeat(2,1fr);gap:10mm;padding:10mm;break-after:page}.print-ballot{min-height:125mm;padding:8mm;border:1px solid #213633;break-inside:avoid}.print-ballot h1{font-size:16pt}.print-ballot p{margin:2mm 0 5mm;font-size:9pt}.print-ballot ul{display:grid;gap:3mm;margin:0;padding:0;list-style:none}.print-ballot li{display:flex;align-items:center;gap:3mm;padding-bottom:2mm;border-bottom:1px solid #aaa;font-size:10pt}.print-ballot i{display:block;width:5mm;height:5mm;border:1px solid #213633;border-radius:50%}.print-cut{position:fixed;inset:auto 0 50%;border-top:1px dashed #bbb}@page{size:A4 portrait;margin:0}}
