:root{--paper:#f7f3eb;--panel:#fff;--bone:#e8e0d4;--ink:#24221f;--soft:#5b564c;--hair:#24221f24;--line:#24221f3d;--verm:#c9473a;--verm-deep:#a8382d;--serif:"Source Serif 4", "Noto Serif SC", "Songti SC", Georgia, "Times New Roman", serif;--sans:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--color-primary:#c9473a;--color-border:#d9d7d2;--color-muted:#5b564c;--color-surface:#fff;--color-background:#f7f3eb;--color-success:#1f7a45;--color-warning:#9a6700;--color-danger:#b3261e;--radius:2px}*{box-sizing:border-box}html{background:var(--paper)}body{background:var(--paper);min-width:320px;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.7}#root{flex-direction:column;min-height:100vh;display:flex}main{outline:none;flex:1;min-width:0;padding-bottom:48px}@media (prefers-reduced-motion:no-preference){main>*{animation:.28s cubic-bezier(.2,.7,.3,1) both page-enter}}@keyframes page-enter{0%{opacity:0;transform:translateY(10px)}}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}h1,h2,h3,p{margin:0}.num{font-variant-numeric:tabular-nums}.shell{flex-direction:column;min-height:100vh;display:flex}.top{border-bottom:1px solid var(--hair)}.toprow{justify-content:space-between;align-items:center;gap:20px;padding:20px 0 16px;display:flex}.wrap{width:100%;max-width:1160px;margin:0 auto;padding:0 48px}.brand{font-family:var(--serif);letter-spacing:.02em;font-size:24px;font-weight:700}.who{color:var(--soft);align-items:center;gap:16px;font-size:13px;display:flex}.whoami b{color:var(--ink);font-weight:700}.quiet{color:var(--soft);border-bottom:1px solid var(--hair);padding-bottom:2px;font-size:13px}.quiet:hover{color:var(--ink)}.skip-link{background:var(--paper);border:1px solid var(--ink);z-index:20;padding:10px 14px;position:fixed;top:-100px;left:12px}.skip-link:focus{top:12px}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.hero{padding:52px 0 36px}.hero h1{font-family:var(--serif);letter-spacing:.02em;margin:0;font-size:44px;font-weight:900;line-height:1.3}.phead{padding:48px 0 8px}.phead h1{font-family:var(--serif);font-size:40px;font-weight:900;line-height:1.25}.sect{letter-spacing:.28em;color:var(--soft);text-transform:uppercase;border-bottom:2px solid var(--ink);align-items:center;gap:14px;padding:30px 0 10px;font-size:12.5px;font-weight:700;display:flex}.segbar{flex-wrap:wrap;align-items:center;gap:16px;margin:24px 0 6px;display:flex}.seg{border:1px solid var(--line);border-radius:2px;display:flex;overflow:hidden}.seg button{color:var(--soft);border-left:1px solid var(--line);padding:7px 18px;font-size:13px}.seg button:first-child{border-left:0}.seg button.on{background:var(--ink);color:var(--paper);font-weight:700}.trow{border-bottom:1px solid var(--hair);grid-template-columns:minmax(0,1fr) 260px 110px 90px;align-items:center;gap:24px;padding:22px 0;display:grid}.trow .st,.trow .lnk{justify-self:start}.trow h3{font-family:var(--serif);overflow-wrap:anywhere;font-size:21px;font-weight:700}.trow .m{color:var(--soft);font-size:13px}.mlab{min-width:7ch;display:inline-block}.st{letter-spacing:.14em;white-space:nowrap;align-items:center;gap:7px;font-size:12.5px;font-weight:700;display:inline-flex}.st i{border-radius:50%;flex-shrink:0;width:7px;height:7px}.st.open{color:var(--verm-deep)}.st.open i{background:var(--verm)}.st.draft{color:var(--soft)}.st.draft i{background:var(--bone);border:1px solid var(--line);box-sizing:border-box}.st.closed{color:var(--soft)}.st.closed i{background:var(--soft)}.lnk{border-bottom:2px solid var(--ink);white-space:nowrap;padding-bottom:2px;font-size:14px;font-weight:700}.lnk.hot{color:var(--verm-deep);border-color:var(--verm)}.pager{color:var(--soft);align-items:center;gap:18px;margin:28px 0 0;font-size:13px;display:flex}.pbtn{border:1px solid var(--line);background:var(--paper);border-radius:2px;padding:8px 18px;font-size:13px}.pbtn:disabled{opacity:.35;cursor:default}.btn{cursor:pointer;text-align:center;padding:12px 28px;font-size:14px;font-weight:700;display:inline-block}.btn.main{background:var(--verm);color:#fff}.btn.main:disabled{opacity:.5;cursor:default}.btn.ghost{border:1.5px solid var(--ink)}button.quiet,a.quiet{color:var(--soft);border-bottom:1px solid var(--hair);background:0 0;padding-bottom:2px;font-size:13px}button.quiet:hover,a.quiet:hover{color:var(--ink)}.state{color:var(--soft);padding:26px 0}.state[role=alert]{color:var(--verm-deep);font-weight:500}.state button{border:1px solid var(--line);background:var(--paper);margin-top:10px;padding:7px 16px;font-size:13px}.state-loading{letter-spacing:.08em;justify-content:center;padding:110px 24px;font-size:14px;display:flex}.state-error{border:1px solid var(--line);background:var(--panel);max-width:620px;color:var(--ink);flex-direction:column;align-items:flex-start;gap:14px;margin:44px auto;padding:26px 30px;display:flex}.state-error h1{font:900 30px/1.2 var(--serif);color:var(--ink)}.state-error .state-message{color:var(--verm-deep);font-weight:500}.state-error .state-actions{align-items:center;gap:20px;display:flex}.state-error .state-actions button{margin-top:0}.empty{color:var(--soft);padding:34px 0}.lfield{margin-bottom:18px;display:block}.lfield>span{color:var(--soft);margin-bottom:6px;font-size:12.5px;display:block}.lfield input,.lfield textarea{border:1px solid var(--line);background:var(--panel);width:100%;min-width:0;min-height:42px;color:var(--ink);font:inherit;border-radius:2px;padding:8px 12px}.lfield textarea{resize:vertical}.field{margin-bottom:18px;display:block}.field>span{color:var(--soft);margin-bottom:6px;font-size:12.5px;display:block}.field input,.field textarea{width:100%;font:inherit;color:var(--ink);border:1px solid var(--line);background:var(--panel);border-radius:2px;min-height:42px;padding:8px 12px}.form-error{color:var(--verm-deep);font-size:13px;font-weight:700}.actions{align-items:center;gap:18px;margin-top:24px;display:flex}.login{flex:1;grid-template-columns:1fr 1fr;width:100%;display:grid}main:has(.login){flex-direction:column;padding-bottom:0;display:flex}.lgl{background:var(--ink);color:var(--paper);flex-direction:column;padding:40px 48px;display:flex}.lgl .brandrow{align-items:center;gap:16px;display:flex}.lgl .brandrow b{font-family:var(--serif);font-size:25px;font-weight:700}.lgl .brandrow .sep{background:#f7f3eb59;width:1px;height:22px}.lgl .brandrow span{color:#f7f3eb8c;font-size:12.5px}.lglcenter{margin:auto 0;padding:40px 0}.lgl h1{font-family:var(--serif);letter-spacing:.08em;font-size:60px;font-weight:700;line-height:1}.lglead{color:#f7f3eb99;margin-top:20px;font-size:14px}.lgr{background:#f1f0ed;justify-content:center;align-items:center;padding:48px 40px;display:flex;position:relative}.lgbox{border:1px solid #d9d7d2;width:340px;max-width:100%;padding:34px 30px 26px}.lgbox .lfield>span{color:var(--ink);margin-bottom:7px;font-size:13px;display:block}.lgbox .lfield input{background:#fffdfb;border:1px solid #d5d3ce;border-radius:2px;width:100%;height:44px;padding:0 12px;font-size:15px}.lgbox .lfield input:focus{border-color:var(--verm);outline:none}.lgbox .lerr-slot{height:calc(2lh + 14px);font-size:13px;line-height:1.5;overflow:hidden}@media (width<=480px){.lgbox .lerr-slot{height:calc(3lh + 14px)}}.lgbox .lerr{color:var(--verm-deep);margin:0;font-weight:700}.lbtn{background:var(--verm);color:#fff;letter-spacing:.42em;cursor:pointer;border:0;width:100%;height:46px;padding:0 0 0 12px;font-size:14px;font-weight:700}.lbtn:disabled{opacity:.5;cursor:default}.lsub{color:var(--soft);text-align:center;margin-top:14px;font-size:12px}.bbar{z-index:5;background:var(--ink);color:var(--paper);flex-wrap:wrap;align-items:center;gap:24px;margin-top:40px;padding:16px 28px;display:flex;position:sticky;bottom:0;box-shadow:0 -8px 24px #24221f24}.bbar .bt{font-family:var(--serif);letter-spacing:.18em;white-space:nowrap;font-size:16px;font-weight:700}.bbar .bs{color:#f7f3eba8;font-size:13px}.bbar .bpick{margin-left:auto;font-size:15px}.bbar .bpick b{font-family:var(--serif);color:#f0c9c4;font-weight:700}.bsub{background:var(--verm);color:#fff;white-space:nowrap;padding:12px 28px;font-size:14px;font-weight:700}.bsub:disabled{opacity:.45;cursor:default}.bconfirm{border-top:1px solid #f7f3eb47;flex-wrap:wrap;align-items:center;gap:18px;width:100%;padding-top:14px;display:flex}.bconfirm .warn{color:#f0c9c4;font-size:13.5px;font-weight:700}.bconfirm .ghost{color:var(--paper);border:1.5px solid #f7f3eb80;padding:11px 22px;font-size:13.5px}.done{text-align:center;padding:64px 48px 72px}.done h1{font-family:var(--serif);font-size:54px;font-weight:900}.done h1 i{background:var(--verm);border-radius:50%;width:.26em;height:.26em;margin-left:.1em;font-style:normal;display:inline-block}.stub{background:var(--bone);border:2px solid var(--ink);text-align:left;width:440px;max-width:100%;margin:36px auto 0;display:flex}.stub .l{border-right:2px dashed var(--ink);flex:1;padding:20px 24px}.stub .t{letter-spacing:.26em;color:var(--soft);font-size:11.5px;font-weight:700}.stub b{font-family:var(--serif);margin-top:6px;font-size:20px;font-weight:900;display:block}.stub .r{justify-content:center;align-items:center;width:118px;display:flex}.seal{border:3px solid var(--verm);color:var(--verm);font-family:var(--serif);letter-spacing:.22em;opacity:.62;border-radius:3px;padding:5px 11px;font-size:16px;font-weight:900;transform:rotate(-7deg)}.done .meta{color:var(--soft);margin-top:22px;font-size:14px}.done .ops{justify-content:center;align-items:center;gap:24px;margin-top:24px;display:flex}@media (width<=900px){.wrap{padding:0 22px}.hero h1,.phead h1{font-size:30px}.trow{grid-template-columns:auto auto;gap:8px 20px}.trow h3,.trow .m{grid-column:1/-1}.login{grid-template-columns:minmax(0,1fr)}.lgl{padding:30px 26px}.lgl h1{font-size:40px}}@media (width<=360px){.lgbox .lerr-slot{min-height:calc(4lh + 14px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.formbox{border:1px solid var(--line);width:560px;max-width:100%;margin-top:28px;padding:30px 32px 26px}.lgbox-wrap{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.field textarea{resize:vertical}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 40px;max-width:760px;margin:26px 0;display:grid}.facts>div{border-bottom:1px solid var(--hair);align-items:baseline;gap:16px;padding-bottom:10px;display:flex}.facts dt{letter-spacing:.18em;text-transform:uppercase;color:var(--soft);min-width:9ch;font-size:12px}.facts dd{margin:0;font-size:15px}.facts dd.num{font-variant-numeric:tabular-nums}.about{white-space:pre-wrap;overflow-wrap:anywhere;max-width:760px;color:var(--ink);margin-top:10px}.adminrow{flex-wrap:wrap;align-items:center;gap:22px;margin:26px 0 0;display:flex}.noticeline{color:var(--verm-deep);padding:14px 0;font-weight:500}.cand-modes{flex-wrap:wrap;align-items:center;gap:14px;margin:22px 0 6px;display:flex}.cand-hint{color:var(--soft);font-size:12.5px}.cand-prof{border-top:1px solid var(--line);grid-template-columns:116px minmax(0,1fr);gap:22px;padding:24px 0 26px;display:grid}.cand-prof .pic,.cand-tight .pic,.cand-dir .pic{background:var(--bone);font-family:var(--serif);color:var(--ink);opacity:.92;justify-content:center;align-items:center;font-weight:700;display:flex;overflow:hidden}.cand-prof .pic{width:116px;height:145px;font-size:52px}.cand-prof .pic img,.cand-tight .pic img,.cand-dir .pic img{object-fit:cover;width:100%;height:100%}.cand-prof h3,.cand-dir h3{font-family:var(--serif);font-size:24px;font-weight:700}.cand-prof .cpos,.cand-tight .cpos,.cand-dir .cpos{letter-spacing:.14em;color:var(--verm-deep);margin:4px 0 8px;font-size:12.5px;font-weight:700}.cand-prof p{color:var(--soft);font-size:14px}.cand-prof.sel{box-shadow:inset 4px 0 0 var(--verm);background:#c9473a0d;padding-left:20px;padding-right:16px}.cand-tight{grid-template-columns:repeat(4,minmax(0,1fr));gap:34px 28px;padding-top:10px;display:grid}.cand-tight .piece{text-align:center;border:2px solid #0000;border-radius:2px;padding:8px 8px 14px}.cand-tight .piece.sel{border-color:var(--verm);background:#c9473a0d}.cand-tight .pic{aspect-ratio:4/5;font-size:42px}.cand-tight h3{font-family:var(--serif);margin-top:12px;font-size:18px;font-weight:700}.cand-tight .cpos{color:var(--soft);letter-spacing:.16em;margin-top:2px;font-size:11px}.cand-dir{border-top:1px solid var(--line)}.cand-dir .drow{border-bottom:1px solid var(--hair);grid-template-columns:52px minmax(0,1fr);align-items:center;gap:18px;padding:16px 2px;display:grid}.pickrow{color:var(--soft);align-items:center;gap:10px;margin-top:12px;font-size:13.5px;font-weight:700;display:inline-flex}.radio{border:2px solid var(--ink);background:var(--panel);border-radius:50%;flex-shrink:0;width:26px;height:26px;position:relative}.sel .radio,.pickrow.on .radio{border-color:var(--verm);background:var(--verm)}.sel .radio:after,.pickrow.on .radio:after{content:"";border:3px solid #fff;border-width:0 3px 3px 0;width:8px;height:13px;position:absolute;top:3px;left:7px;transform:rotate(43deg)}label.cand-prof,label.cand-tight .piece,label.cand-dir .drow{cursor:pointer}label.cand-prof:focus-within,label.cand-tight .piece:focus-within,label.cand-dir .drow:focus-within{outline:2px solid var(--ink);outline-offset:2px}input.vh{opacity:0;width:1px;height:1px;position:absolute}@media (width<=900px){.facts{grid-template-columns:1fr}.cand-prof{grid-template-columns:96px minmax(0,1fr);gap:16px}.cand-prof .pic{width:96px;height:120px;font-size:40px}.cand-tight{grid-template-columns:repeat(2,minmax(0,1fr))}}.cand-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:30px 26px;padding-top:10px;display:grid}.cand-grid .piece{text-align:center;cursor:pointer;border:2px solid #0000;border-radius:2px;padding:8px 8px 14px;display:block}.cand-grid .piece.sel{border-color:var(--verm);background:#c9473a0d}.cand-grid .pic{aspect-ratio:4/5;font-size:42px}.cand-grid h3{font-family:var(--serif);margin-top:12px;font-size:18px;font-weight:700}.cand-grid .pickrow{justify-content:center}.cand-dir .drow{border-bottom:1px solid var(--hair);cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 10px;display:grid}.cand-dir .drow.sel{box-shadow:inset 4px 0 0 var(--verm);background:#c9473a0d}.cand-dir .drow h3{font-family:var(--serif);font-size:19px;font-weight:700}.cand-dir .cdesc{color:var(--soft);-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:13.5px;display:-webkit-box;overflow:hidden}.pickrow{color:var(--soft);align-items:center;gap:9px;font-size:13px;font-weight:700;display:inline-flex}.pickrow .radio{border-width:1.5px;width:22px;height:22px}.pickrow.on{color:var(--verm-deep)}.pickrow.on .radio{border-color:var(--verm);background:var(--verm)}.pickrow.on .radio:after{border-width:0 2px 2px 0;width:6px;height:10px;top:2px;left:5px}.cand-prof .pickrow{margin-top:12px}.cdesc{color:var(--soft);margin-top:8px;font-size:14px}.cand-prof.sel .cdesc{color:var(--soft)}.candidate-list{min-width:0}.cand-grid .pic{background:var(--bone);font-family:var(--serif);justify-content:center;align-items:center;display:flex;overflow:hidden}.cand-grid .pic img{object-fit:cover;width:100%;height:100%}.cand-dir .drow{grid-template-columns:minmax(0,1fr) minmax(0,2fr) auto}.candidate-list h3,.cand-grid h3,.cand-dir h3,.cdesc,.facts dd,.phead h1,.trow h3,.whoami,.stub b{overflow-wrap:anywhere;min-width:0}.ballot-error{width:100%;color:var(--paper)}.bbar :focus-visible{outline-color:var(--paper)}.candidate-form-grid{border:0;min-width:0;margin:0;padding:0}.adminrow .bconfirm .ghost{color:var(--ink);border-color:var(--line)}.adminrow .bconfirm .warn{color:var(--verm-deep)}@media (width<=900px){.cand-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}}@media (width<=600px){.toprow,.who{flex-wrap:wrap}.who{gap:10px}.seg{flex-wrap:wrap;overflow:visible}.seg button{min-height:44px;padding:7px 12px}.lgbox-wrap{grid-template-columns:minmax(0,1fr);gap:0}.cand-dir .drow{grid-template-columns:minmax(0,1fr) auto}.cand-dir .cdesc{grid-column:1}.cand-dir .pickrow{grid-area:1/2/3}.bbar{gap:12px;padding:16px}.bbar .bpick{width:100%;margin-left:0}.bsub{white-space:normal}.done{padding:40px 22px}.stub .l{min-width:0;padding:16px}.stub .r{flex-shrink:0;width:100px}}
