:root{--ink:#17214a;--muted:#687293;--paper:#f5f7ff;--white:#fff;--line:#dfe5f5;--indigo:#172c8c;--blue:#3268db;--purple:#7b1ff2;--orange:#f06a20;--cyan:#28c5cf;--green:#15a779;--danger:#d83b57;--shadow:0 18px 50px rgba(28,45,107,.14);--radius:18px}
*{box-sizing:border-box}html{font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--paper)}body{margin:0;min-height:100vh}a{color:inherit}button,input,select{font:inherit}button{cursor:pointer}.muted{color:var(--muted)}.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:#d4e8ff}.eyebrow.dark{color:var(--blue)}
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:12px;padding:12px 18px;font-weight:800;text-decoration:none;transition:.2s transform,.2s box-shadow}.button:hover{transform:translateY(-1px)}.button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(40,197,207,.45);outline-offset:2px}.button.primary{color:#fff;background:linear-gradient(135deg,var(--blue),var(--purple));box-shadow:0 10px 22px rgba(72,53,210,.24)}.button.secondary{color:var(--indigo);background:#e8edff}.button.success{color:#fff;background:var(--green)}.button.danger{color:#fff;background:var(--danger)}.button.ghost{background:transparent;border:1px solid var(--line)}.button.small{padding:8px 12px;font-size:13px}.button.full{width:100%;margin-top:18px}.alert,.notice{padding:13px 15px;border-radius:12px;margin:14px 0}.alert.error{background:#ffedf0;color:#a91e38}.alert.success{background:#e5f8f1;color:#087754}.notice{background:#eef2ff;color:#32458d}
.auth-page{background:#102467}.install-shell,.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(340px,.9fr) minmax(520px,1.1fr)}.brand-panel{background:linear-gradient(160deg,rgba(23,44,140,.15),rgba(123,31,242,.35)),url('../images/event-background.png') center/cover;display:flex;align-items:flex-end;padding:8vw;color:#fff}.brand-copy h1{font-size:clamp(52px,7vw,104px);line-height:.92;letter-spacing:-.05em;margin:16px 0}.brand-copy p{font-size:19px}.install-card,.auth-card{background:var(--white);padding:clamp(36px,7vw,90px);display:flex;flex-direction:column;justify-content:center}.install-card h2,.auth-card h2{font-size:36px;margin:10px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid label,.field{display:flex;flex-direction:column;gap:8px;font-size:14px;font-weight:700}.form-grid input,.field input,.field select{border:1px solid var(--line);border-radius:12px;padding:13px 14px;background:#fbfcff;color:var(--ink)}.form-grid .wide{grid-column:1/-1}.form-divider{border-top:1px solid var(--line);padding-top:18px;font-weight:900}.form-grid small{font-weight:400;color:var(--muted)}.success-mark{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--green);font-size:32px}
.admin-body{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,#142878,#20136b);color:#fff;padding:28px 20px;position:sticky;top:0;height:100vh}.sidebar-brand{font-size:22px;font-weight:900;line-height:1.2;margin:4px 10px 34px}.sidebar-brand small{font-size:11px;letter-spacing:.16em;color:#9fdbea}.sidebar nav{display:grid;gap:7px}.sidebar nav a{padding:12px 14px;border-radius:10px;text-decoration:none;color:#cdd9ff;font-weight:700}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.13);color:#fff}.sidebar-user{position:absolute;bottom:24px;left:30px;color:#bfcaff;font-size:13px}.admin-main{padding:34px clamp(24px,4vw,64px)}.page-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:26px}.page-head h1{margin:5px 0;font-size:32px}.grid{display:grid;gap:18px}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.card{background:#fff;border:1px solid #e8ebf5;border-radius:var(--radius);padding:22px;box-shadow:0 8px 30px rgba(32,51,112,.06)}.stat strong{display:block;font:800 34px/1 "Arial Narrow","DIN Alternate",sans-serif;color:var(--indigo);margin-top:10px}.section-title{display:flex;justify-content:space-between;align-items:center;margin:30px 0 14px}.section-title h2{margin:0;font-size:21px}.link-card{display:flex;align-items:center;gap:12px}.link-card .icon{width:42px;height:42px;border-radius:12px;background:#edf0ff;display:grid;place-items:center;font-size:19px}.link-value{font-size:12px;color:var(--muted);word-break:break-all;margin-top:4px}.table-wrap{overflow:auto;border-radius:var(--radius);background:#fff;border:1px solid var(--line)}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid #edf0f8}th{font-size:12px;color:var(--muted);background:#f8f9fd}tr:last-child td{border-bottom:0}.pill{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef2ff;color:var(--indigo);font-size:12px;font-weight:800}.pill.live{background:#e3f9f1;color:#087754}.actions{display:flex;flex-wrap:wrap;gap:8px}.danger-zone{border-color:#ffd3da;background:#fffafb}.inline-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.inline-form .field{min-width:160px;flex:1}.progress{height:8px;background:#e8ecf7;border-radius:10px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--purple))}
.judge-page{min-height:100vh;background:linear-gradient(145deg,#142878,#6b1ed9);padding:20px}.judge-shell{max-width:980px;margin:auto}.judge-top{display:flex;justify-content:space-between;align-items:center;color:#fff;padding:10px 4px 22px}.judge-card{background:#fff;border-radius:28px;padding:clamp(22px,4vw,46px);box-shadow:var(--shadow)}.contestant-kicker{font-size:13px;color:var(--blue);font-weight:900;letter-spacing:.12em}.contestant-name{font-size:clamp(34px,6vw,64px);margin:7px 0}.speech-title{font-size:clamp(18px,3vw,28px);color:var(--muted);margin:0 0 26px}.rule-strip{background:#f0f3ff;border-left:5px solid var(--purple);padding:14px 16px;border-radius:0 12px 12px 0;line-height:1.7;margin-bottom:24px}.score-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.score-field{border:1px solid var(--line);padding:18px;border-radius:16px}.score-field label{display:flex;justify-content:space-between;font-weight:900}.score-field input{width:100%;margin-top:14px;border:0;border-bottom:3px solid #ccd5f4;padding:8px 2px;font:800 34px "Arial Narrow",sans-serif;color:var(--indigo)}.score-total{display:flex;align-items:center;justify-content:space-between;margin:24px 0;padding:18px 22px;border-radius:16px;background:linear-gradient(110deg,#eef7ff,#f5ecff)}.score-total strong{font:900 48px "Arial Narrow",sans-serif;color:var(--purple)}
.vote-page{min-height:100vh;background:#2c55cb url('../images/event-portrait.png') top center/cover fixed no-repeat;padding:42vh 16px 80px}.vote-card{max-width:560px;margin:auto;background:rgba(255,255,255,.96);border-radius:28px;padding:26px;box-shadow:var(--shadow);text-align:center}.vote-name{font-size:36px;margin:8px}.vote-title{color:var(--muted);font-size:18px}.like-button{width:140px;height:140px;border-radius:50%;border:8px solid #fff;background:linear-gradient(145deg,var(--orange),#ff3f79);color:#fff;font-size:52px;box-shadow:0 15px 45px rgba(240,106,32,.38);margin:24px}.like-button:active{transform:scale(.94)}.vote-count{font:900 48px "Arial Narrow",sans-serif;color:var(--purple)}
.screen-page{margin:0;overflow:hidden;background:#172c8c;color:#fff}.screen-stage{width:100vw;height:100vh;position:relative;background:center/cover no-repeat;display:flex;flex-direction:column}.screen-stage:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(17,34,119,.1),rgba(14,20,80,.5))}.screen-header,.screen-content,.wave-track{position:relative;z-index:1}.screen-header{display:flex;justify-content:space-between;align-items:center;padding:3vh 4vw}.screen-event{font-weight:900;font-size:clamp(20px,2vw,38px);text-shadow:0 3px 10px rgba(0,0,0,.3)}.live-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#ff5f6d;box-shadow:0 0 0 7px rgba(255,95,109,.18);margin-right:10px}.screen-content{flex:1;display:grid;place-items:center;padding:2vh 6vw 12vh}.screen-card{text-align:center;max-width:1500px}.screen-order{font-size:clamp(16px,1.5vw,26px);letter-spacing:.25em;font-weight:900;color:#83eff2}.screen-name{font-size:clamp(56px,8vw,150px);line-height:1;margin:1vh 0;text-shadow:0 8px 28px rgba(0,0,0,.28)}.screen-title{font-size:clamp(24px,3vw,54px);margin:2vh 0;color:#eef6ff}.screen-meta{display:flex;justify-content:center;gap:4vw;font-size:clamp(16px,2vw,32px);font-weight:800}.rolling-score{font:900 clamp(130px,23vw,390px)/.8 "Arial Narrow","DIN Alternate",sans-serif;color:#fff;text-shadow:0 0 30px rgba(40,197,207,.55),0 12px 40px rgba(0,0,0,.3)}.score-details{display:grid;grid-template-columns:repeat(4,1fr);gap:1vw;margin-top:4vh}.score-detail{background:rgba(14,27,108,.72);border:1px solid rgba(255,255,255,.28);border-radius:14px;padding:1.4vh 1vw}.score-detail strong{display:block;font-size:clamp(24px,3vw,54px)}.judge-scores{display:flex;justify-content:center;gap:.7vw;flex-wrap:wrap;margin-top:2vh}.judge-chip{background:rgba(255,255,255,.14);padding:.7vh 1vw;border-radius:9px}.ranking-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1vw;width:min(1500px,90vw)}.rank-row{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:12px;background:rgba(20,32,110,.82);border:1px solid rgba(255,255,255,.18);border-radius:13px;padding:1.1vh 1vw;animation:rankIn .55s both}.rank-number{font:900 28px "Arial Narrow";color:#79f4ee}.rank-award{color:#ffd067;font-weight:900}.wave-track{position:absolute;left:0;right:0;bottom:0;height:7px;background:linear-gradient(90deg,#b8ed21,var(--cyan),var(--blue),var(--purple),#ef4da0,var(--orange));box-shadow:0 -6px 24px rgba(80,230,255,.75);transform-origin:left;animation:wavePulse 2.4s ease-in-out infinite}.countdown{font:900 min(35vw,520px) "Arial Narrow";animation:countPop .8s both}.hidden{display:none!important}@keyframes countPop{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.1)}100%{transform:scale(1);opacity:1}}@keyframes wavePulse{50%{filter:hue-rotate(30deg);transform:scaleX(.94)}}@keyframes rankIn{from{opacity:0;transform:translateY(26px)}}
@media(max-width:900px){.install-shell,.auth-shell{grid-template-columns:1fr}.brand-panel{min-height:260px;padding:40px}.brand-copy h1{font-size:54px}.admin-body{display:block}.sidebar{position:relative;height:auto}.sidebar nav{grid-template-columns:repeat(3,1fr)}.sidebar-user{display:none}.grid.cols-4,.grid.cols-2{grid-template-columns:1fr 1fr}.score-grid{grid-template-columns:1fr}.screen-header{padding:18px}.ranking-grid{grid-template-columns:1fr 1fr}.rank-row{padding:8px}.rank-number{font-size:20px}}
@media(max-width:600px){.form-grid,.grid.cols-4,.grid.cols-2{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.install-card,.auth-card{padding:30px 22px}.sidebar nav{grid-template-columns:1fr 1fr}.admin-main{padding:24px 14px}.page-head{align-items:flex-start;gap:12px;flex-direction:column}.score-total strong{font-size:40px}.vote-page{padding-top:36vh}.ranking-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition:none!important}}

