@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap');
:root{font-family:'Noto Sans TC',sans-serif;color:#28392c;background:#f8f9f5;font-synthesis:none;--green:#345b3b;--muted:#889083;--border:#e3e7dc}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #b4bd7f;outline-offset:4px}.site-header{background:#fffefa;border-bottom:1px solid var(--border)}.nav-wrap{height:86px;max-width:1192px;padding:0 32px;margin:auto;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;font-size:21px;font-weight:700;letter-spacing:1px}.brand-mark{width:37px;height:39px;background:var(--green);color:#faf7dc;display:grid;place-items:center;border-radius:11px}.brand-mark svg{width:24px;height:24px}.brand-en{font-size:9px;font-weight:500;letter-spacing:1.6px;max-width:40px;line-height:1.6;color:#8b927f;border-left:1px solid #dce0d2;padding-left:11px;margin-left:4px}nav{display:flex;height:100%;gap:35px}.nav-tab{background:none;border:0;color:#8b9086;position:relative;font-size:14px;padding:0 3px}.nav-tab.active{color:var(--green);font-weight:600}.nav-tab.active:after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--green);border-radius:2px 2px 0 0}.nav-tab span{font-size:13px;margin-left:7px}.header-note{font-size:12px;color:#87907d;letter-spacing:.5px}.tiny-spark{font-size:21px;vertical-align:-2px;margin-right:8px;color:#8e9b62}main{max-width:1192px;margin:auto;padding:43px 32px 35px}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:35px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:600;color:#8c976d}.intro h1{font-size:38px;line-height:1.4;font-weight:600;letter-spacing:1px;margin:10px 0 10px}.intro h1 em{font-style:normal;color:#789057}.intro p{font-size:13px;color:#858c80;margin:0;letter-spacing:.3px}.intro-art{width:150px;position:relative;text-align:center;margin-right:28px;transform:rotate(-7deg)}.intro-art svg{width:114px;height:105px}.intro-art:after{content:'a little gift, a lot of love';position:absolute;bottom:3px;left:0;width:100%;font-family:Georgia,serif;font-style:italic;font-size:12px;color:#939c7b;white-space:nowrap}.poll-top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:24px;border-top:1px solid var(--border);margin-bottom:22px}.poll-title-line{display:flex;gap:12px;align-items:center}.poll-top h2{font-size:20px;font-weight:600;margin:0}.badge{background:#eaf0e2;color:#67804d;display:inline-flex;align-items:center;gap:6px;border-radius:5px;padding:5px 9px;font-size:10px;white-space:nowrap}.badge:before{content:'';width:5px;height:5px;background:#7c9b5e;border-radius:100%}.badge.closed{background:#eeeee7;color:#919384}.poll-meta{display:flex;align-items:center;gap:15px;font-size:11px;color:#909589;margin-top:9px}.poll-meta span+span{padding-left:14px;border-left:1px solid #dfe4d5}.switcher{display:flex;background:#ecefe7;padding:4px;border-radius:8px;flex-shrink:0}.switcher button{border:0;background:none;font-size:12px;color:#8c9384;padding:9px 17px;border-radius:5px}.switcher button.active{background:#fffefa;box-shadow:0 1px 4px #334d2910;color:#405f37}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.card{padding:0;border:1px solid #e1e5d9;background:#fffefa;border-radius:13px;text-align:left;overflow:hidden;position:relative;color:inherit;transition:border-color .18s,transform .18s,box-shadow .18s}.card:not(:disabled):hover{transform:translateY(-3px);border-color:#93a780;box-shadow:0 8px 20px #3c4b2210}.card.selected{border:2px solid #587346;box-shadow:0 0 0 3px #66834e12}.card.selected .art-wrap{margin:-1px -1px 0}.art-wrap{height:173px;display:flex;justify-content:center;align-items:center;position:relative;background:#eaf0e7}.art-wrap svg{width:100%;height:100%;max-width:310px;transition:transform .3s}.card:hover .art-wrap svg{transform:scale(1.035)}.art-coffee{background:#f2ece1}.art-speaker{background:#f0e9dd}.art-lamp{background:#f5e9df}.art-camera{background:#e8ece8}.art-bag{background:#eeeee1}.art-gift{background:#edf0e6}.option-number{position:absolute;top:14px;left:15px;color:#8b9682;font-size:10px;letter-spacing:1px}.choice-circle{position:absolute;top:13px;right:14px;width:21px;height:21px;border:1.5px solid #b9c1af;background:#ffffff7d;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px}.selected .choice-circle{background:#577347;border-color:#577347}.card-body{padding:18px 19px 19px}.card-body h3{font-size:15px;font-weight:600;margin:0 0 6px}.card-body p{font-size:11px;color:#94988d;margin:0;letter-spacing:.2px;line-height:1.6}.selection-bar{display:flex;align-items:center;justify-content:space-between;margin-top:25px;padding:18px 0 0;gap:18px}.selection-info{display:flex;gap:11px;align-items:center}.outline-icon{width:32px;height:32px;border:1px solid #dce2d3;border-radius:50%;display:grid;place-items:center;color:#7c8a6c}.selection-info strong{font-size:12px;font-weight:500}.selection-info p{font-size:10px;margin:4px 0 0;color:#969c8d}.primary{background:var(--green);border:1px solid var(--green);border-radius:7px;color:white;padding:12px 24px;font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:36px;transition:background .2s}.primary:hover{background:#26482d}.primary:disabled{background:#e3e8db;border-color:#e3e8db;color:#9aa58c}.secondary{background:#fffefa;border:1px solid #dce2d3;border-radius:7px;color:#5c7051;padding:10px 16px;font-size:12px}.poll-picker{margin-bottom:20px;display:flex;align-items:center;gap:12px;font-size:12px;color:#8b9381}select{border:1px solid #dce2d3;border-radius:6px;background:#fffefa;padding:8px 32px 8px 12px;color:#44583b;max-width:100%}.result-line{display:flex;justify-content:space-between;font-size:11px;margin-top:12px}.result-line span{color:#8b9381}.result-line b{font-weight:600;color:#537046}.progress{height:5px;background:#edf0e7;border-radius:5px;margin-top:8px;overflow:hidden}.progress i{display:block;background:#78935e;height:100%;border-radius:5px;transition:width .4s}.voted-tag{font-size:9px;color:#6c8556;float:right;border:1px solid #d8e1c9;padding:2px 5px;border-radius:4px}.note{font-size:12px;color:#8a9280}.error{font-size:12px;color:#a45041}.loading,.empty{padding:70px 24px;text-align:center;color:#919a86;font-size:14px}.empty h2{color:#405637;font-size:24px}.empty p{font-size:13px;line-height:1.9}.empty-symbol{display:inline-grid;place-items:center;background:#e9eedf;width:64px;height:64px;border-radius:20px;font-size:26px;color:#809267}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:26px}.stat{padding:22px;background:#fffefa;border:1px solid var(--border);border-radius:10px}.stat>span{font-size:12px;color:#8b9482}.stat b{display:block;font-size:32px;margin-top:12px;font-weight:500}.stat b small{font-size:12px;color:#97a08e;margin-left:9px}.stat .leader-name{font-size:21px;min-height:45px;display:flex;align-items:center}.admin-ranking{background:#fffefa;border:1px solid var(--border);border-radius:10px;padding:24px;margin-bottom:26px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.section-head h3{font-size:15px;margin:0;font-weight:500}.rank-row{display:grid;grid-template-columns:24px minmax(110px,170px) 1fr 70px;gap:14px;align-items:center;margin-top:18px;font-size:12px}.rank-row>span{color:#89967a}.rank-row .progress{margin:0;height:9px}.rank-row>strong{text-align:right;font-size:11px;font-weight:500}.records-panel{border:1px solid var(--border);border-radius:10px;background:#fffefa;padding:24px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}th{text-align:left;color:#8c9582;font-weight:400;background:#f5f7f0}th,td{padding:14px 16px;border-bottom:1px solid #eef0e8}td{color:#6b775f}.profile{display:inline-flex;align-items:center;gap:8px}.profile img{width:25px;height:25px;border-radius:50%}.record-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:16px;color:#9aa18f;font-size:11px}.toolbar{display:flex;gap:10px;align-items:center}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);background:#304b32;color:white;border-radius:8px;box-shadow:0 8px 25px #1f3a2426;padding:13px 23px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;z-index:50;max-width:calc(100% - 32px);width:max-content}#toast.show{transform:translate(-50%,0);opacity:1}dialog{border:1px solid #dce3d1;border-radius:16px;background:#fffefa;width:500px;max-width:calc(100% - 32px);padding:28px;color:#334c32;box-shadow:0 20px 100px #24312029}dialog::backdrop{background:#1d2d255c;backdrop-filter:blur(4px)}.dialog-heading{display:flex;justify-content:space-between;align-items:start;margin-bottom:25px}.dialog-heading h2{font-size:22px;margin:6px 0 0}.icon-button{border:0;background:#eff2e9;color:#78856c;border-radius:50%;width:28px;height:28px;font-size:22px;line-height:1}label{font-size:12px;display:block;margin-bottom:19px}input,textarea{width:100%;display:block;margin-top:8px;border:1px solid #dce2d2;border-radius:7px;background:#fffefa;color:#3c5137;padding:11px 12px;font-size:13px;resize:vertical}input:focus,textarea:focus{outline:2px solid #b4c19f;border-color:transparent}input::placeholder,textarea::placeholder{color:#abb19e}.muted{color:#969e8c;font-size:11px}form>.primary{width:100%}.refresh{border:0;background:none;color:#7a8e68;font-size:12px}.success-note{color:#577347;font-size:12px}.admin-title{margin-bottom:25px}.admin-title h1{font-size:30px}.admin-title .primary{gap:12px}
@media(min-width:1500px){main{padding-top:55px}.art-wrap{height:200px}.intro{margin-bottom:43px}}
@media(max-width:800px){.nav-wrap{padding:0 22px;height:74px}.header-note{display:none}.brand{font-size:18px}.brand-en{display:none}nav{gap:20px}.nav-tab{font-size:12px}main{padding:30px 22px}.intro h1{font-size:30px}.intro-art{margin:0;width:110px}.intro-art svg{width:100px}.intro-art:after{font-size:10px}.grid{gap:14px}.card-body{padding:14px}.card-body h3{font-size:13px}.card-body p{font-size:10px}.art-wrap{height:150px}.poll-top h2{font-size:17px}.switcher button{padding:8px 12px}.poll-title-line{gap:8px}.stats{gap:10px}.stat{padding:17px}.stat .leader-name{font-size:17px}}
@media(max-width:600px){.nav-wrap{padding:0 18px;height:68px}.brand{font-size:17px;gap:8px}.brand-mark{width:31px;height:33px;border-radius:9px}nav{gap:17px}.nav-tab span{display:none}main{padding:28px 18px}.intro{margin-bottom:27px}.intro h1{font-size:28px;letter-spacing:0}.intro p{font-size:11px;max-width:240px;line-height:1.8}.eyebrow{font-size:8px;letter-spacing:1.7px}.intro-art{width:70px;margin-right:3px}.intro-art svg{width:80px}.intro-art:after{display:none}.poll-top{align-items:flex-start;flex-direction:column;gap:16px;padding-top:23px}.poll-top h2{font-size:17px}.poll-meta{font-size:10px;gap:10px;flex-wrap:wrap}.poll-meta span+span{padding-left:10px}.switcher{align-self:stretch}.switcher button{flex:1}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.art-wrap{height:139px}.card-body{padding:13px 12px}.card-body h3{font-size:13px;margin-bottom:5px}.card-body p{font-size:10px;line-height:1.7;min-height:34px}.option-number{top:12px;left:12px;font-size:9px}.choice-circle{width:18px;height:18px;right:11px;top:10px}.selection-bar{background:#f8f9f5ed;position:sticky;bottom:0;padding:15px 0;margin-top:10px;backdrop-filter:blur(12px)}.outline-icon{display:none}.selection-info strong{font-size:11px}.selection-info p{font-size:9px;max-width:170px;line-height:1.7}.primary{padding:11px 17px;font-size:12px;gap:18px;flex-shrink:0}.stats{grid-template-columns:repeat(2,1fr)}.stat:last-child{grid-column:span 2}.stat b{font-size:27px;margin-top:7px}.stat .leader-name{min-height:30px}.rank-row{grid-template-columns:17px 95px 1fr 43px;gap:8px;font-size:10px}.rank-row>strong{font-size:9px}.admin-ranking,.records-panel{padding:17px}.admin-title h1{font-size:27px}.admin-title p{max-width:180px}.toolbar{flex-wrap:wrap}.record-bottom{gap:10px;flex-wrap:wrap}.section-head h3{font-size:14px}.badge{font-size:9px;padding:4px 6px}.voted-tag{float:none;display:inline-block;margin-bottom:4px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.voter-form{margin-top:24px;padding:22px 24px 18px;background:#fffefa;border:1px solid var(--border);border-radius:12px}.voter-form-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.voter-form-heading h3{margin:0;font-size:15px;font-weight:600}.voter-form-heading span{font-size:11px;color:#8a957e}.voter-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.voter-fields label{margin-bottom:0}.voter-fields input{background:#fcfdf9}.voter-form>p{font-size:10px;color:#929b86;margin:13px 0 0;line-height:1.7}.voter-form input:disabled{opacity:.6}
@media(max-width:600px){.voter-form{padding:18px 16px}.voter-fields{grid-template-columns:1fr;gap:15px}.voter-form-heading span{font-size:10px}.voter-fields input{font-size:16px}.voter-form-heading h3{font-size:14px}}
/* Candidate images in the create poll dialog and voting cards */
#create-dialog{width:560px;max-height:min(90vh,840px);overflow-y:auto}.option-list-heading{font-size:12px;margin-bottom:10px}.create-option-row{border:1px solid #e2e7dc;border-radius:9px;padding:11px 13px 13px;margin-bottom:10px;background:#fbfcf8}.create-option-top{display:flex;justify-content:space-between;align-items:center;color:#89957c;font-size:11px;margin-bottom:8px}.remove-option{border:0;background:none;color:#8c9186;font-size:11px;padding:2px 0}.remove-option:hover{color:#a04e41}.create-option-fields{display:grid;grid-template-columns:minmax(0,1fr) 112px;align-items:center;gap:12px}.create-option-fields>.option-name{margin:0;min-width:0}.image-picker{display:flex;align-items:center;gap:8px;margin:0;position:relative;cursor:pointer;color:#587648;font-size:11px;white-space:nowrap}.image-picker:focus-within{outline:2px solid #b4c19f;outline-offset:3px;border-radius:5px}.image-picker input[type=file]{position:absolute;opacity:0;width:1px;height:1px;overflow:hidden;padding:0;border:0;margin:0;left:0;bottom:0}.image-preview{width:38px;height:38px;border:1px dashed #b8c7a9;border-radius:6px;display:grid;place-items:center;color:#829878;font-size:18px;overflow:hidden;flex-shrink:0}.image-preview img{width:100%;height:100%;object-fit:cover}.add-option{width:100%;padding:10px;border:1px dashed #b8c7a9;background:#f7f9f3;color:#587648;border-radius:7px;font-size:12px}.add-option:hover{background:#edf2e7}.add-option[hidden]{display:none}.art-wrap .option-photo{width:100%;height:100%;object-fit:cover;display:block}.art-wrap.has-image .option-number{background:#fffefaeb;color:#496144;padding:4px 7px;border-radius:4px;top:11px;left:12px}.art-wrap.has-image .choice-circle{background:#fffefaeb}
@media(max-width:600px){#create-dialog{padding:21px 17px;max-height:92vh}.create-option-fields{grid-template-columns:minmax(0,1fr) 95px;gap:9px}.image-picker{gap:5px;font-size:10px}.image-preview{width:33px;height:33px}.create-option-row{padding:10px}}
.toolbar{flex-wrap:wrap}.poll-picker{flex-wrap:wrap}.poll-picker #poll-select{flex:1;min-width:160px;max-width:560px}.poll-top:has(.toolbar){align-items:flex-start;flex-wrap:wrap}.danger{color:#a15848;border-color:#e2c8bf}.danger:hover{background:#fbf0eb}.danger:disabled{color:#b4a6a1;border-color:#e9e1dd;background:#f6f3ef}.danger-fill{background:#a15848;border-color:#a15848}.danger-fill:hover{background:#8b4537}.row-actions{display:flex;align-items:center;gap:10px}.row-actions button{border:0;background:none;color:#748267;font-size:12px;padding:2px 5px}.row-actions button:disabled{opacity:.3}.option-detail-row{display:flex;align-items:center;gap:12px;margin-top:9px}.option-detail-row .option-description{margin:0;min-width:0;font-size:11px;padding:8px 10px;flex:1}.option-detail-row button{white-space:nowrap}.option-vote-note{font-size:10px;color:#a17d59;margin:9px 0 0;line-height:1.6}#confirm-dialog{width:430px}#confirm-dialog h2{font-size:20px;margin:0 0 15px}#confirm-dialog p{font-size:13px;color:#7b8272;line-height:1.9;overflow-wrap:anywhere;margin-bottom:24px}.confirm-buttons{display:flex;justify-content:flex-end;gap:10px}.confirm-buttons .primary{gap:0;padding:10px 18px}#create-form input:disabled,#create-form textarea:disabled{opacity:.65}.section-head .toolbar{justify-content:flex-end}
@media(max-width:600px){.poll-picker #poll-select{flex-basis:100%;max-width:100%}.records-panel .section-head{align-items:flex-start}.records-panel .toolbar{gap:6px}.records-panel .toolbar button{font-size:10px;padding:8px 10px}.poll-top .toolbar{gap:8px}.poll-top .toolbar .secondary{font-size:11px;padding:9px 12px}.option-detail-row .option-description{font-size:12px}.confirm-buttons button{flex:1}}
/* Medal positions in the live result cards */
.results-grid .card.results-rank-1{border-color:#d5b76c;background:#fffef9;box-shadow:0 4px 20px #b99c4b1f}.results-grid .card.results-rank-2{border-color:#c4cbd0}.results-grid .card.results-rank-3{border-color:#d8b69d}.results-grid .card.selected.results-rank-1{box-shadow:0 0 0 3px #66834e2a,0 4px 20px #b99c4b1f}.rank-badge{position:absolute;z-index:2;top:12px;left:12px;display:inline-flex;align-items:center;gap:6px;border:1px solid;border-radius:999px;padding:5px 10px 5px 7px;box-shadow:0 3px 12px #24351f19;font-size:11px;font-weight:700;line-height:1;white-space:nowrap}.rank-badge svg{width:17px;height:17px;flex:none}.rank-badge.rank-1{color:#845d17;border-color:#d7b965;background:#fff4d7}.rank-badge.rank-2{color:#536876;border-color:#b9c6cc;background:#f4f8fa}.rank-badge.rank-3{color:#86533b;border-color:#d6ac92;background:#fae9dc}.results-grid .card.results-rank-1 .result-line b{color:#9b7227}.results-grid .card.results-rank-1 .progress i{background:#caa451}.results-grid .card.results-rank-2 .progress i{background:#9cabaf}.results-grid .card.results-rank-3 .progress i{background:#bc8d71}
@media(max-width:600px){.rank-badge{font-size:10px;gap:4px;top:9px;left:9px;padding:4px 8px 4px 5px}.rank-badge svg{width:15px;height:15px}}
.voter-fields select{display:block;width:100%;height:45px;margin-top:8px;padding:9px 12px;background:#fcfdf9;font-size:13px}.voter-fields select:focus{outline:2px solid #b4c19f;border-color:transparent}.voter-fields select:disabled{color:#9aa18f;background:#f1f3ed}.center-manager{background:#fffefa;border:1px solid var(--border);border-radius:10px;padding:19px 22px;margin:0 0 24px}.center-manager .section-head{margin:0;align-items:center}.center-manager .section-head h3{display:flex;align-items:center;gap:8px}.center-manager .section-head p,.center-empty{margin:5px 0 0;font-size:11px;color:#929b86}.center-count{border-radius:999px;background:#eaf0e2;color:#617d4c;font-size:10px;padding:2px 7px}.center-list{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px;max-height:180px;overflow-y:auto}.center-item{display:inline-flex;align-items:center;gap:12px;border:1px solid #dfe6d7;border-radius:7px;background:#f7f9f3;padding:7px 8px 7px 11px;font-size:12px}.center-item>span{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.center-item>div{display:flex;gap:4px}.center-item button{border:0;background:none;color:#607b53;padding:3px 5px;font-size:11px}.center-item button:last-child{color:#a15749}.center-item button:hover{text-decoration:underline}.center-empty{padding-top:11px}#center-dialog{width:420px}#center-dialog .dialog-heading h2{margin:0}
@media(max-width:600px){.voter-fields select{font-size:16px}.center-manager{padding:16px;margin-bottom:20px}.center-manager .section-head{gap:12px}.center-manager .section-head .secondary{font-size:11px;padding:9px 10px}.center-item>span{max-width:130px}}
