:root{--night:#11154b;--purple:#6e4bb6;--pink:#f15f9d;--rose:#ff8dbc;--text:#fff;--muted:#d6d1ef;--glass:rgba(48,35,108,.78);--line:rgba(255,255,255,.2)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100%;background:#0e123c;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}body{background-image:url('../img/qixi-lake-bg.jpg');background-position:center;background-size:cover;background-attachment:fixed}.app-shell{position:relative;width:100%;max-width:520px;min-height:100vh;margin:auto;background:rgba(12,14,58,.36);box-shadow:0 0 80px rgba(0,0,0,.35);overflow:hidden}.screen{display:none;min-height:100vh;padding:calc(24px + env(safe-area-inset-top)) 22px calc(28px + env(safe-area-inset-bottom));animation:fadeIn .28s ease}.screen.active{display:block}@keyframes fadeIn{from{opacity:.25;transform:translateY(8px)}to{opacity:1;transform:none}}button,input{font:inherit}.home-screen{padding-top:calc(58px + env(safe-area-inset-top));text-align:center}.hero-copy .eyebrow{font-size:11px;letter-spacing:3px;color:#efb2d6;margin-bottom:16px}.hero-copy h1{font-family:STKaiti,KaiTi,serif;font-size:42px;line-height:1.2;letter-spacing:5px;margin:0;text-shadow:0 2px 18px rgba(255,125,194,.65)}.hero-copy h2{display:inline-block;margin:18px 0 13px;padding:7px 20px;border:1px solid rgba(255,204,229,.45);border-radius:99px;background:rgba(213,90,159,.36);font-size:16px;letter-spacing:2px}.hero-copy time{display:block;color:#ece9ff;font-size:14px}.entrances{margin-top:38px;display:grid;gap:16px}.entrance{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.38);border-radius:21px;padding:20px 18px;color:#fff;text-align:left;box-shadow:0 10px 30px rgba(17,12,72,.4);cursor:pointer}.entrance.male{background:rgba(77,94,200,.82)}.entrance.female{background:rgba(225,77,151,.78)}.entrance:active{transform:scale(.985)}.entrance-label{display:block;font-size:20px;font-weight:700;margin-bottom:5px}.entrance small{color:#f0edff}.home-tip{margin-top:22px;font-size:13px;color:#ddd8f7}.ranking-link,.text-btn,.back-btn{border:0;background:transparent;color:#fff;cursor:pointer}.ranking-link{margin-top:22px;border-bottom:1px solid rgba(255,255,255,.55);padding:5px 2px}.back-btn{padding:7px 0;color:#ded9f7}.section-head{text-align:center;margin:42px 0 26px}.section-head.compact{margin:24px 0 18px}.section-head .step{font-size:11px;letter-spacing:3px;color:#ff9ac4}.section-head h2{font-size:25px;margin:8px 0}.section-head p{font-size:13px;color:var(--muted);margin:0}.glass-card{background:var(--glass);border:1px solid var(--line);box-shadow:0 15px 45px rgba(9,8,44,.3);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.auth-card{border-radius:22px;padding:22px}.auth-card label{display:block;font-size:13px;color:#d8d3f2;margin-bottom:9px}.auth-card input,.search-wrap input{width:100%;border:1px solid rgba(255,255,255,.26);border-radius:14px;background:rgba(255,255,255,.12);color:#fff;outline:none;padding:15px}.auth-card input::placeholder,.search-wrap input::placeholder{color:#bdb7d4}.auth-card input:focus,.search-wrap input:focus{border-color:#ff8cbd}.primary-btn{border:0;border-radius:14px;background:#f15f9d;color:#fff;font-weight:700;padding:14px 20px;cursor:pointer}.auth-card .primary-btn{width:100%;margin-top:16px}.form-error{min-height:20px;font-size:13px;color:#ffb2d2;text-align:center;margin-top:9px}.note-card{margin-top:18px;border-radius:18px;padding:18px;font-size:13px;line-height:1.65;color:#ddd9f5}.note-card strong{color:#ffabd0}.note-card p{margin:6px 0}.list-screen{background:rgba(16,15,66,.62)}.list-header{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;margin:10px 0 18px}.list-header .welcome{font-size:12px;color:#ffb1d1}.list-header h2{font-size:25px;margin:5px 0}.list-header p{font-size:12px;color:var(--muted);margin:0}.text-btn{font-size:12px;color:#e7e1fa;padding:6px}.search-wrap{margin-bottom:16px}.search-wrap input{padding:13px}.candidate-list{display:grid;gap:13px}.candidate{display:flex;align-items:center;gap:13px;border-radius:20px;padding:13px;background:rgba(242,200,231,.88);color:#292249;border:1px solid rgba(255,255,255,.55);box-shadow:0 9px 24px rgba(13,10,57,.28)}.candidate.male-card{background:rgba(205,209,250,.91)}.candidate img{width:66px;height:66px;border-radius:50%;object-fit:cover;border:3px solid rgba(255,255,255,.7)}.candidate-info{min-width:0;flex:1}.candidate-info strong{font-size:18px}.candidate-info span{display:block;font-size:13px;font-weight:600;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.candidate-info small{display:block;font-size:11px;color:#625c77;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vote-btn{border:0;border-radius:99px;padding:11px 16px;background:#e95092;color:#fff;font-weight:700;box-shadow:0 5px 13px rgba(205,50,115,.3);cursor:pointer}.male-card .vote-btn{background:#7655cc}.empty-state{display:none;text-align:center;color:#c9c4dd;padding:60px 0}.success-screen{text-align:center;padding-top:calc(64px + env(safe-area-inset-top));background:rgba(20,15,72,.48)}.success-kicker{font-size:11px;letter-spacing:3px;color:#ff9bc5}.success-screen>h2{font-size:31px;margin:10px 0 24px}.success-card{border-radius:23px;padding:25px;display:flex;flex-direction:column;align-items:center;gap:8px;background:rgba(224,103,167,.63)}.success-card img{width:94px;height:94px;object-fit:cover;border-radius:50%;border:4px solid rgba(255,255,255,.75)}.success-card strong{font-size:23px}.mutual-card,.waiting-card{border-radius:20px;padding:20px;margin:17px 0}.mutual-card{background:rgba(219,77,153,.67)}.mutual-label{font-size:19px;font-weight:700}.mutual-card p,.waiting-card p{font-size:13px;line-height:1.7;color:#f3efff;margin:9px 0 0}.success-screen>.primary-btn{width:100%}.ranking-screen{background:rgba(17,17,65,.72)}.rank-tabs{display:flex;background:rgba(255,255,255,.1);padding:4px;border-radius:13px;margin-bottom:14px}.rank-tabs button{flex:1;border:0;border-radius:10px;background:transparent;color:#ddd8f2;padding:10px;cursor:pointer}.rank-tabs button.active{background:#e75c99;color:#fff;font-weight:700}.rank-list{border-radius:20px;overflow:hidden}.rank-row{display:flex;align-items:center;gap:12px;padding:13px;border-bottom:1px solid rgba(255,255,255,.1)}.rank-row:last-child{border:0}.rank-pos{width:25px;text-align:center;font-weight:800;color:#ffb2d0}.rank-row:nth-child(1) .rank-pos{color:#ffd56b}.rank-row:nth-child(2) .rank-pos{color:#e2e6ef}.rank-row:nth-child(3) .rank-pos{color:#e5a06d}.rank-row img{width:48px;height:48px;border-radius:50%;object-fit:cover}.rank-name{flex:1}.rank-name strong{display:block}.rank-name small{color:#cbc5e5}.rank-votes{font-size:13px;color:#ffc1dc}.dialog-mask{display:none;position:fixed;z-index:20;inset:0;background:rgba(4,4,25,.72);padding:20px;align-items:center;justify-content:center}.dialog-mask.show{display:flex}.dialog{width:100%;max-width:380px;border-radius:23px;padding:23px;text-align:center;background:rgba(47,36,105,.98)}.dialog h3{font-size:22px;margin:3px 0 17px}.dialog p{font-size:13px;color:#d7d2ed}.dialog-guest{display:flex;align-items:center;justify-content:center;gap:12px}.dialog-guest img{width:65px;height:65px;border-radius:50%;object-fit:cover}.dialog-guest strong{font-size:20px}.dialog-actions{display:flex;gap:10px;margin-top:20px}.dialog-actions button{flex:1;border:0;border-radius:13px;padding:13px;background:rgba(255,255,255,.13);color:#fff}.dialog-actions .primary-btn{background:#f15f9d}.toast{position:fixed;z-index:30;left:50%;bottom:40px;transform:translate(-50%,20px);background:#242047;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:99px;padding:10px 17px;opacity:0;pointer-events:none;transition:.2s;white-space:nowrap;max-width:90%;overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translate(-50%,0)}
.hero-copy h1 span{display:block}@media(min-width:700px){body{padding:22px}.app-shell{min-height:calc(100vh - 44px);border-radius:32px}.screen{min-height:calc(100vh - 44px)}}
