:root{--paper:#f3ead7;--paper-deep:#e4d3b2;--ink:#21302b;--muted:#66716a;--stamp:#d34b35;--stamp-dark:#a93124;--green:#47745b;--line:rgba(33,48,43,0.22);--shadow:0 18px 50px rgba(74,50,26,0.15)}*{box-sizing:border-box}html{background:#d7c6a5}body{margin:0;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 12% 0,rgba(255,255,255,.65),transparent 32rem),linear-gradient(135deg,#decfb1,#c8b28c);font-family:"Noto Serif SC",Songti SC,SimSun,serif}button,input,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}.grain{pointer-events:none;position:fixed;inset:0;z-index:10;opacity:.22;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.10'/%3E%3C/svg%3E")}.shell{width:min(1080px,calc(100% - 28px));margin:0 auto;padding:30px 0 80px;z-index:1}.paper,.shell{position:relative}.paper{background:var(--paper);border:1px solid rgba(67,46,24,.18);box-shadow:var(--shadow)}.paper:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 96%,rgba(50,34,17,.03))}.topbar{justify-content:space-between;gap:18px;margin-bottom:26px}.brand,.topbar{display:flex;align-items:center}.brand{gap:12px}.brand-mark{width:48px;height:48px;border:3px solid var(--stamp);color:var(--stamp);display:grid;place-items:center;transform:rotate(-7deg);font-weight:900}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:STKaiti,KaiTi,serif;letter-spacing:.02em}h1{font-size:clamp(2rem,7vw,4.6rem);line-height:.95;margin-bottom:12px}h2{font-size:clamp(1.45rem,4vw,2.15rem)}.eyebrow{color:var(--stamp);font-size:.76rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase}.muted{color:var(--muted)}.hero{padding:clamp(25px,6vw,58px);overflow:hidden;margin-bottom:24px}.hero-copy{max-width:680px;position:relative;z-index:1}.hero:after{content:"投";position:absolute;right:3%;bottom:-24%;color:rgba(211,75,53,.08);font:900 min(35vw,300px)/1 STKaiti,serif;transform:rotate(10deg)}.toolbar{display:flex;gap:10px;flex-wrap:wrap}.button,.toolbar{align-items:center}.button{border:1px solid var(--ink);background:transparent;color:var(--ink);min-height:44px;padding:10px 16px;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,background .16s;display:inline-flex;justify-content:center;gap:8px;font-weight:700}.button:hover{transform:translateY(-2px) rotate(-.3deg);box-shadow:4px 5px 0 rgba(33,48,43,.15)}.button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #1673ff;outline-offset:3px}.button.primary{background:var(--ink);color:var(--paper)}.button.stamp{background:var(--stamp);color:white}.button.danger,.button.stamp{border-color:var(--stamp-dark)}.button.danger{color:var(--stamp-dark)}.button.small{min-height:36px;padding:6px 10px;font-size:.85rem}.button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));grid-gap:17px;gap:17px}.card{padding:21px;min-height:190px;transition:transform .18s ease}.card:nth-child(3n+1){transform:rotate(-.35deg)}.card:nth-child(3n+2){transform:rotate(.3deg)}.card:hover{transform:translateY(-4px) rotate(0)}.card-footer{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:24px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:800;padding:5px 9px;border:1px solid}.badge.nomination{color:var(--stamp-dark)}.badge.voting{color:#17609a}.badge.closed{color:var(--green)}.form-grid{display:grid;grid-gap:15px;gap:15px}label{font-weight:800;font-size:.88rem;display:grid;grid-gap:7px;gap:7px}input,textarea{width:100%;border:1px solid var(--line);border-bottom:2px solid var(--ink);background:rgba(255,255,255,.25);padding:12px 13px;color:var(--ink);border-radius:0}textarea{min-height:90px;resize:vertical}.panel{padding:clamp(20px,4vw,34px);margin-bottom:20px}.split{display:grid;grid-template-columns:1fr .9fr;grid-gap:20px;gap:20px;align-items:start}.notice{border-left:5px solid var(--stamp);background:rgba(211,75,53,.08);padding:13px 15px;margin:14px 0}.deadline-warning-list{display:grid;grid-gap:14px;gap:14px}.deadline-warning-item{display:grid;grid-template-columns:52px minmax(0,1fr);grid-gap:14px;gap:14px;align-items:start;padding:13px;background:rgba(255,255,255,.3);border:1px dashed rgba(169,49,36,.38)}.warning-brush-number{position:relative;width:46px;height:46px;display:grid;place-items:center;border:3px solid var(--stamp);border-radius:47% 53% 45% 55%;color:var(--stamp-dark);font:900 1.75rem/1 STKaiti,KaiTi,serif;transform:rotate(-7deg)}.warning-brush-number:after{content:"";position:absolute;inset:-5px -3px;border:1px solid rgba(169,49,36,.48);border-radius:55% 45% 52% 48%;transform:rotate(11deg)}.warning-title{display:block;color:var(--stamp-dark);font:900 1.35rem/1.15 STKaiti,KaiTi,serif}.deadline-warning-item p{margin:5px 0 0}.error{color:var(--stamp-dark);font-weight:800}.success{color:var(--green);font-weight:800}.empty{padding:46px 22px;text-align:center;border:1px dashed var(--line)}.candidate{display:flex;gap:13px;align-items:center;padding:14px 0;border-bottom:1px dashed var(--line)}.candidate:last-child{border-bottom:0}.rank-number{flex:0 0 38px;height:38px;display:grid;place-items:center;border:2px solid var(--stamp);color:var(--stamp);font-weight:900;transform:rotate(-4deg)}.candidate-copy{flex:1 1;min-width:0}.candidate-copy h3{margin:0 0 4px}.sortable{touch-action:pan-y;background:rgba(255,255,255,.22);padding-inline:12px;margin-bottom:8px;border:1px solid transparent}.sortable.is-dragging{opacity:.65;border-color:var(--stamp);box-shadow:var(--shadow)}.drag-handle{color:var(--muted);display:inline-flex;place-items:center;min-width:72px;border-style:dashed;touch-action:none;cursor:-webkit-grab;cursor:grab}.modal-backdrop{position:fixed;inset:0;z-index:20;background:rgba(22,24,20,.68);display:grid;place-items:center;padding:18px}.modal{width:min(520px,100%);max-height:calc(100dvh - 36px);overflow-y:auto;padding:28px}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:20px;position:relative;z-index:11}.auth-card{width:min(470px,100%);padding:clamp(26px,7vw,48px);transform:rotate(-.25deg)}.result-row{display:grid;grid-template-columns:55px 1fr auto;grid-gap:13px;gap:13px;align-items:center;padding:16px 0;border-bottom:1px dashed var(--line)}.score{font-size:1.45rem;font-weight:900;color:var(--stamp)}.result-row.winner{margin:10px -14px 14px;padding:22px 14px;border:2px solid #b37a24;background:linear-gradient(105deg,rgba(239,201,112,.34),rgba(255,255,255,.24) 62%),var(--paper);box-shadow:7px 8px 0 rgba(179,122,36,.16);position:relative;overflow:hidden}.result-row.winner:after{content:"冠";position:absolute;right:20%;bottom:-42px;color:rgba(179,122,36,.09);font:900 112px/1 STKaiti,KaiTi,serif;transform:rotate(-9deg);pointer-events:none}.winner .rank-number{color:var(--paper);background:#b37a24;border-color:#805414;box-shadow:3px 3px 0 rgba(128,84,20,.18)}.winner-crown{display:inline-flex;align-items:center;gap:5px;margin-bottom:5px;color:#805414;font-size:.74rem;font-weight:900;letter-spacing:.14em}.winner-name{color:#6f4610;font-size:clamp(1.55rem,4vw,2.15rem);font-weight:900!important;position:relative;z-index:1}.winner .score{color:#805414;position:relative;z-index:1}.join-stamp-button{color:var(--stamp-dark);border:2px solid var(--stamp);background:rgba(211,75,53,.07);box-shadow:3px 3px 0 rgba(169,49,36,.13);transform:rotate(-1deg)}.join-stamp-button:hover{background:rgba(211,75,53,.13);transform:rotate(-1deg) translateY(-1px)}.participant-roster-inline{position:relative;z-index:1;margin:15px 0 18px;padding:13px 0 17px;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line)}.participant-roster-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.participant-roster-heading strong{display:inline-flex;align-items:center;gap:7px;font-family:STKaiti,KaiTi,serif}.participant-roster-heading small{color:var(--muted)}.participant-group{margin-top:13px}.participant-group-title{display:inline-flex;align-items:center;gap:6px;margin-bottom:9px;font-family:STKaiti,KaiTi,serif;font-size:1.05rem}.participant-group-title.sorted{color:var(--green)}.participant-group-title.waiting{color:var(--stamp-dark)}.participant-chips{display:flex;flex-wrap:wrap;gap:8px}.participant-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 9px;border:1px solid;background:rgba(255,255,255,.28);font-weight:800}.participant-chip small{padding-left:7px;border-left:1px dashed;opacity:.78;font-size:.68rem;letter-spacing:.04em}.note-edit-button{width:25px;height:25px;display:inline-grid;place-items:center;padding:0;color:currentColor;background:transparent;border:1px dashed;cursor:pointer}.note-edit-button:hover{background:rgba(255,255,255,.48)}.note-edit-button:focus-visible{outline:3px solid #1673ff;outline-offset:2px}.participant-chip.sorted{color:var(--green);transform:rotate(-.6deg)}.participant-chip.waiting{color:var(--stamp-dark);transform:rotate(.5deg)}.live-tally{position:relative;overflow:hidden}.live-tally:after{content:"计";position:absolute;right:-10px;top:-28px;color:rgba(211,75,53,.055);font:900 118px/1 STKaiti,KaiTi,serif;transform:rotate(8deg);pointer-events:none}.tally-row{position:relative;z-index:1;margin-top:16px}.tally-label{display:grid;grid-template-columns:28px minmax(0,1fr) auto;grid-gap:8px;gap:8px;align-items:baseline;margin-bottom:6px}.tally-rank{color:var(--stamp-dark);font:900 1.05rem/1 STKaiti,KaiTi,serif}.tally-score{color:var(--stamp-dark);font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tally-bar{height:13px;overflow:hidden;background:rgba(33,48,43,.1);border:1px solid rgba(33,48,43,.16)}.tally-bar-fill{display:block;height:100%;min-width:3px;background:repeating-linear-gradient(105deg,rgba(255,255,255,.16) 0 5px,transparent 5px 9px),var(--stamp);box-shadow:inset -2px 0 0 var(--stamp-dark);transition:width .38s ease}.time-poll{position:relative;overflow:hidden}.time-poll:after{content:"刻";position:absolute;right:-18px;top:-30px;color:rgba(211,75,53,.045);font:900 118px/1 STKaiti,KaiTi,serif;transform:rotate(9deg);pointer-events:none}.time-poll-heading{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.time-poll-heading h2{display:flex;align-items:center;gap:8px;margin:5px 0 0}.time-builder{position:relative;z-index:1;margin:22px 0;padding:18px;border:1px dashed var(--stamp);background:rgba(211,75,53,.045)}.period-picker,.time-kind-picker{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin:12px 0 16px}.period-picker button,.time-hour-grid button,.time-kind-picker button{min-height:44px;border:1px solid var(--ink);color:var(--ink);background:rgba(255,255,255,.32);font:900 1rem/1 STKaiti,KaiTi,serif;cursor:pointer}.period-picker button.active,.time-hour-grid button.active,.time-kind-picker button.active{color:var(--paper);border-color:var(--stamp-dark);background:var(--stamp);box-shadow:3px 3px 0 rgba(169,49,36,.16)}.period-picker button:focus-visible,.time-choice input:focus-visible+span,.time-hour-grid button:focus-visible,.time-kind-picker button:focus-visible{outline:3px solid #1673ff;outline-offset:2px}.time-hour-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:9px;gap:9px}.time-minute-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;grid-gap:14px;gap:14px;margin-top:16px}.time-minute-row input{margin-top:7px}.time-preview{min-width:86px;padding:8px 11px;text-align:center;border:2px solid var(--stamp);color:var(--stamp-dark);transform:rotate(-1deg)}.time-preview small,.time-preview strong{display:block}.time-preview strong{margin-top:3px;font-size:1.2rem}.time-choice-groups{position:relative;z-index:1;display:grid;grid-gap:18px;gap:18px;margin-top:22px}.time-choice-group{padding-top:14px;border-top:1px dashed var(--line)}.time-choice-group-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.time-choice-group-heading>strong{font-family:STKaiti,KaiTi,serif;font-size:1.05rem}.time-select-trigger{white-space:nowrap}.time-choice-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.time-choice{position:relative;cursor:pointer}.time-choice input{position:absolute;width:1px;height:1px;opacity:0}.time-choice span{min-height:48px;display:grid;place-items:center;border:1px solid var(--ink);background:rgba(255,255,255,.28);font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.time-choice.selected span{color:var(--paper);border-color:var(--stamp-dark);background:var(--stamp);box-shadow:3px 3px 0 rgba(169,49,36,.14);transform:rotate(-.7deg)}.time-choice input:disabled+span{cursor:default;opacity:.82}.time-vote-actions{position:relative;z-index:1;display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:18px}.vote-timeline{position:relative;overflow:hidden}.vote-timeline:after{content:"时";position:absolute;right:-8px;bottom:-34px;color:rgba(211,75,53,.05);font:900 116px/1 STKaiti,KaiTi,serif;transform:rotate(7deg);pointer-events:none}.vote-timeline-heading{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.vote-timeline-heading h2{display:flex;align-items:center;gap:8px;margin:5px 0 0}.time-curve{position:relative;z-index:1;margin-top:22px;padding-top:16px;border-top:1px dashed var(--line)}.time-curve-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.time-curve-title strong{font:900 1.1rem/1 STKaiti,KaiTi,serif}.time-curve-title small{color:var(--muted)}.time-curve-scroll{margin-top:8px;overflow-x:auto;overflow-y:hidden}.time-curve-svg{width:100%;min-width:520px;display:block;overflow:visible}.time-curve-axis{stroke:var(--ink);stroke-width:1.5}.time-curve-guide{stroke:var(--line);stroke-width:1;stroke-dasharray:5 6}.time-curve-guide-label{fill:var(--muted);font-size:11px;font-weight:800}.time-curve-path{fill:none;stroke:var(--stamp);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(3px 3px 0 rgba(169,49,36,.1))}.time-curve-path.departure{stroke:var(--ink)}.time-curve-point{cursor:pointer;outline:none}.time-curve-point circle{fill:var(--paper);stroke:var(--stamp);stroke-width:4;transition:r .18s ease,fill .18s ease}.time-curve-point.departure circle{stroke:var(--ink)}.time-curve-point:focus circle,.time-curve-point:hover circle{r:10px;fill:var(--stamp)}.time-curve-point.departure:focus circle,.time-curve-point.departure:hover circle{fill:var(--ink)}.time-curve-tooltip{opacity:0;pointer-events:none;transition:opacity .16s ease}.time-curve-point:focus .time-curve-tooltip,.time-curve-point:hover .time-curve-tooltip{opacity:1}.time-curve-tooltip rect{fill:var(--ink);stroke:var(--paper);stroke-width:1}.time-curve-tooltip text{fill:var(--paper);font-size:10px;text-anchor:middle;font-weight:800}.time-curve-time{fill:var(--ink);font-size:11px;text-anchor:middle;font-weight:900;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fade-up{animation:fade-up .5s both;animation-delay:calc(var(--i, 0) * 70ms)}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (max-width:720px){.split{grid-template-columns:1fr}.topbar{align-items:flex-start}.topbar .muted{display:none}.shell{width:min(100% - 18px,1080px);padding-top:14px}.hero{padding:27px 21px}.card{min-height:auto}.sortable{display:grid;grid-template-columns:38px 72px minmax(0,1fr);align-items:center}.sortable .sort-controls{grid-column:2;grid-row:2}.sortable .candidate-actions{grid-column:3;grid-row:2;justify-self:end}.time-poll-heading{display:block}.time-choice-group-heading{align-items:flex-start}.time-minute-row{grid-template-columns:1fr}.time-preview{justify-self:start}.vote-timeline-heading{display:block}.time-curve-svg{min-width:500px}}