/* ===== v2 ===== */
.tabs{grid-template-columns:repeat(5,1fr)!important;gap:5px!important}
.tabs button{font-size:13.5px!important;padding:10px 0!important}
.toast.gold{background:linear-gradient(90deg,#b8860b,#f5c542);color:#1b2133}

/* 하늘 낮밤 */
.stage{background:#8fd0f2}
.sky{position:absolute;inset:0;animation:daycycle 160s linear infinite;background:linear-gradient(180deg,#8fd0f2,#f7e9cf)}
@keyframes daycycle{
  0%{background:linear-gradient(180deg,#8fd0f2,#f7e9cf)}
  40%{background:linear-gradient(180deg,#7ec3ee,#fff1d6)}
  55%{background:linear-gradient(180deg,#f29a6b,#ffd29a)}
  65%{background:linear-gradient(180deg,#2a2f5a,#7a5a8a)}
  85%{background:linear-gradient(180deg,#0f1530,#2a3462)}
  95%{background:linear-gradient(180deg,#e9a07a,#f7d9b5)}
  100%{background:linear-gradient(180deg,#8fd0f2,#f7e9cf)}}
.sun{position:absolute;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,#fff6c2,#ffd25a 60%,rgba(255,210,90,0) 72%);left:70%;top:6%;animation:sunarc 160s linear infinite}
@keyframes sunarc{0%{transform:translate(-160px,60px);opacity:1}25%{transform:translate(-40px,-6px)}50%{transform:translate(60px,30px);opacity:1}62%{transform:translate(90px,90px);opacity:0}96%{opacity:0;transform:translate(-160px,60px)}100%{opacity:1}}
.moon{position:absolute;width:26px;height:26px;border-radius:50%;background:#fff6d6;box-shadow:inset -8px -2px 0 #d9d2b8;left:22%;top:10%;opacity:0;animation:moon 160s linear infinite}
@keyframes moon{0%,60%{opacity:0}68%,88%{opacity:1}94%,100%{opacity:0}}
.stars{position:absolute;inset:0 0 50% 0;opacity:0;background-image:radial-gradient(1.2px 1.2px at 10% 20%,#fff,transparent),radial-gradient(1px 1px at 30% 40%,#fff,transparent),radial-gradient(1.4px 1.4px at 55% 15%,#fff,transparent),radial-gradient(1px 1px at 75% 35%,#fff,transparent),radial-gradient(1.2px 1.2px at 90% 10%,#fff,transparent),radial-gradient(1px 1px at 42% 8%,#fff,transparent);animation:moon 160s linear infinite}
.nightshade{position:absolute;inset:0;pointer-events:none;background:#0a1030;mix-blend-mode:multiply;opacity:0;animation:night 160s linear infinite}
@keyframes night{0%,50%{opacity:0}62%{opacity:.35}70%,86%{opacity:.5}95%,100%{opacity:0}}
.scene .lampglow{animation:lampon 160s linear infinite}
@keyframes lampon{0%,55%{fill:#ffe8a3}62%,90%{fill:#fff3b0}}

/* 장면 움직임 */
.drive-r{animation:driver 12s linear infinite}
.drive-l{animation:drivel 14s linear infinite}
@keyframes driver{from{transform:translateX(-60px)}to{transform:translateX(470px)}}
@keyframes drivel{from{transform:translateX(470px)}to{transform:translateX(-60px)}}
.waves{animation:wave2 3s ease-in-out infinite alternate}
@keyframes wave2{to{transform:translateX(8px)}}
.boat{animation:boat 3s ease-in-out infinite alternate}
.boat2{animation:boat 2.4s ease-in-out infinite alternate-reverse}
@keyframes boat{to{transform:translateY(2px)}}
.gull{animation:gull 18s linear infinite}
.gull.g2{animation-duration:24s;animation-delay:-8s}
@keyframes gull{from{transform:translateX(-200px)}to{transform:translateX(300px)}}
.flag{animation:flag 1.2s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:0 50%}
@keyframes flag{to{transform:skewY(4deg) scaleX(.94)}}
.spot{animation:spot 3s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:50% 100%}
@keyframes spot{to{transform:rotate(6deg)}}
.shout{animation:shout .5s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:50% 100%}
@keyframes shout{to{transform:translateY(-3px) rotate(2deg)}}
.fall{animation:fall2 6s linear infinite}
.fall.rain{animation-name:rainfall}
@keyframes fall2{from{transform:translate(0,-10px) rotate(0)}to{transform:translate(-30px,280px) rotate(360deg)}}
@keyframes rainfall{from{transform:translate(0,-10px)}to{transform:translate(-20px,280px)}}

/* 뉴스 자막 */
.newsbar{display:flex;align-items:center;background:#0f1424;color:#fff;height:30px;overflow:hidden;border-bottom:3px solid var(--party)}
.nlabel{flex:0 0 auto;background:#e5322d;font-size:12px;font-weight:900;padding:0 10px;height:100%;display:flex;align-items:center}
.nwrap{flex:1;overflow:hidden;white-space:nowrap;position:relative;height:100%;display:flex;align-items:center}
#newsText{display:inline-block;padding-left:100%;font-size:12.5px;font-weight:700;animation:marquee 30s linear infinite}
@keyframes marquee{to{transform:translateX(-100%)}}

/* 민심 */
.mood{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:8px 12px 0}
.gchip{position:relative;background:#fff;border-radius:10px;padding:5px 6px 8px;display:grid;grid-template-columns:22px 1fr;column-gap:4px;box-shadow:0 2px 0 #d6dbe6;overflow:hidden;min-height:44px}
.gchip .gi{width:22px;height:30px}
.gchip .gi svg{width:22px;height:30px}
.gchip .gn{font-size:11px;font-weight:800;color:var(--muted);line-height:1.15}
.gchip .gn small{display:block;font-size:9.5px;opacity:.8}
.gchip b{position:absolute;right:7px;bottom:8px;font-size:15px;font-weight:900}
.gchip i{position:absolute;left:0;bottom:0;height:4px;border-radius:0 2px 2px 0}
.gchip.hi{box-shadow:0 2px 0 #9fd8b6}
.gchip.lo{box-shadow:0 2px 0 #f2b0aa}
.gchip.lo b{color:var(--bad)}

/* 시작 화면 */
.homes{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.homes button{border:0;background:#f2f4f8;border-radius:12px;padding:10px;text-align:left;box-shadow:0 2px 0 #d6dbe6}
.homes button b{display:block;font-size:15px}
.homes button small{display:block;font-size:11px;color:var(--muted);margin-top:2px;line-height:1.3}
.homes button.on{background:var(--party);color:#fff;box-shadow:0 2px 0 rgba(0,0,0,.25)}
.homes button.on small{color:rgba(255,255,255,.85)}
.preview{height:170px;background:linear-gradient(180deg,#8fd0f2,#f7e9cf)}

/* 보좌진 */
.hirebox{display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(135deg,#2a2150,#1b2133);color:#fff;border-radius:16px;padding:14px;margin-bottom:10px;box-shadow:0 3px 0 #0c1020}
.hirebox b{display:block;font-size:17px}
.hirebox small{font-size:11px;color:#c4cbe0}
.big-buy{border:0;background:linear-gradient(180deg,#ffd25a,#f5b301);color:#1b2133;border-radius:12px;padding:10px 16px;font-weight:900;font-size:15px;box-shadow:0 3px 0 #a87a00;min-width:96px}
.big-buy small{display:flex;align-items:center;justify-content:center;gap:3px;font-size:12px}
.big-buy small svg{width:13px;height:13px}
.big-buy:disabled{background:#4a5470;color:#9aa1b0;box-shadow:0 3px 0 #2a3048}
.sgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.scard{position:relative;background:#fff;border-radius:14px;padding:10px;text-align:center;box-shadow:0 3px 0 #d6dbe6;border:2px solid var(--rc,transparent)}
.scard .sface{width:70px;height:70px;margin:0 auto 6px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#eef0f5;font-size:28px;font-weight:900;color:#c0c5d0}
.scard .sface svg{width:70px;height:70px}
.scard b{display:block;font-size:15px}
.scard small{display:block;font-size:11.5px;color:var(--muted);font-weight:700}
.scard em{display:block;font-style:normal;font-size:11.5px;font-weight:800;color:#2b6fd6;margin-top:4px}
.scard .srar{position:absolute;top:8px;left:8px;color:#fff;font-size:10px;font-weight:900;padding:2px 6px;border-radius:8px}
.scard.empty,.scard.lock{background:#f5f6fa;box-shadow:none;border:2px dashed #d6dbe6}

/* 영입 연출 */
.gacha{position:relative;height:300px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle,#2f3a57,#0f1424);border-radius:20px 20px 0 0;overflow:hidden;perspective:800px}
.gacha .burst{position:absolute;width:600px;height:600px;background:conic-gradient(from 0deg,rgba(255,255,255,0),rgba(255,255,255,.18),rgba(255,255,255,0) 20%,rgba(255,255,255,.18) 30%,rgba(255,255,255,0) 40%,rgba(255,255,255,.18) 55%,rgba(255,255,255,0) 65%,rgba(255,255,255,.18) 80%,rgba(255,255,255,0));animation:spin 8s linear infinite}
.gacha.r-SSR{background:radial-gradient(circle,#8a6600,#1b1400)}
.gacha.r-SR{background:radial-gradient(circle,#4a2f7a,#120a24)}
.gacha.r-R{background:radial-gradient(circle,#1f4e8a,#0a1428)}
@keyframes spin{to{transform:rotate(360deg)}}
.gcard{position:relative;width:180px;background:#fff;border-radius:16px;padding:14px 12px;text-align:center;box-shadow:0 10px 30px rgba(0,0,0,.5);animation:flipin .9s cubic-bezier(.2,1.4,.4,1)}
.r-SSR .gcard{box-shadow:0 0 50px #f5b301,0 10px 30px rgba(0,0,0,.5)}
.r-SR .gcard{box-shadow:0 0 34px #9b6cc6}
@keyframes flipin{0%{transform:rotateY(180deg) scale(.4);opacity:0}60%{opacity:1}100%{transform:none}}
.gface{width:110px;height:110px;margin:0 auto;border-radius:50%;overflow:hidden}
.gface svg{width:110px;height:110px}
.grar{display:inline-block;color:#fff;font-size:12px;font-weight:900;padding:2px 10px;border-radius:10px;margin-top:8px}
.gname{font-size:22px;font-weight:900;margin-top:4px}
.grole{font-size:12px;color:var(--muted);font-weight:800}
.gfx{font-size:12.5px;font-weight:800;color:#2b6fd6;margin-top:6px}
.center{text-align:center;font-weight:800}
.swap{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:6px;margin-bottom:10px}
.swap button{border:0;background:#f2f4f8;border-radius:12px;padding:8px;box-shadow:0 2px 0 #d6dbe6}
.swap .mini{display:block;width:44px;height:44px;margin:0 auto;border-radius:50%;overflow:hidden}
.swap .mini svg{width:44px;height:44px}
.swap b{display:block;font-size:13px}
.swap small{font-size:11px;color:var(--muted)}

/* 선거 준비 */
.boosts{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0}
.boosts div{background:#f4f6fa;border-radius:10px;padding:7px;font-size:11.5px;font-weight:800;color:var(--muted);text-align:center}
.boosts b{display:block;font-size:16px;color:var(--ink)}
.boosts b.pos{color:var(--good)}
.boosts b.neg{color:var(--bad)}
.prep{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:6px}
.prep button{display:flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:12px;padding:12px;font-weight:900;font-size:14px;background:linear-gradient(180deg,#3b4a78,#26324f);color:#fff;box-shadow:0 3px 0 #10162a}
.prep button svg{width:22px;height:22px}
.prep button:disabled{background:#e7e9ef;color:#9aa1b0;box-shadow:0 3px 0 #d3d7e0}
.race .side .face svg{height:64px;width:64px;border-radius:50%}
.race .side.topriv{background:#fff6d6;box-shadow:inset 0 0 0 2px #f5c542}
.pledgehead{padding-bottom:0}
.wbars{display:grid;gap:4px;margin-top:6px}
.wbars div{display:grid;grid-template-columns:60px 1fr 36px;align-items:center;gap:6px;font-size:12px;font-weight:800}
.wbars i{display:block;height:8px;border-radius:4px}
.wbars b{text-align:right}

/* 유세 */
.rally{position:relative}
.rscene{height:230px;position:relative;overflow:hidden;border-radius:20px 20px 0 0;background:linear-gradient(180deg,#f29a6b,#ffd29a)}
.rscene svg{position:absolute;inset:0;width:100%;height:100%}
.rscene.jump .crowd{animation:jump .18s ease-out}
@keyframes jump{50%{transform:translateY(-4px)}}
.rhud{display:flex;align-items:center;gap:10px;padding:10px 16px 0}
.rtime{flex:1;height:10px;background:#eef0f5;border-radius:6px;overflow:hidden}
.rtime i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#ff5a4f,#f5c542)}
.rcount{font-weight:900;font-size:14px}
.rcount b{font-size:22px}
.rcombo{position:absolute;top:20px;left:0;right:0;text-align:center;font-size:26px;font-weight:900;color:#fff;-webkit-text-stroke:1px rgba(0,0,0,.4);text-shadow:0 3px 0 rgba(0,0,0,.3);pointer-events:none}
.rbtn{display:flex;align-items:center;justify-content:center;gap:10px;width:calc(100% - 32px);margin:12px 16px 16px;border:0;border-radius:18px;padding:22px;font-size:22px;font-weight:900;color:#fff;background:linear-gradient(180deg,#ff5a4f,#e5322d);box-shadow:0 6px 0 #a51e1a;touch-action:manipulation;user-select:none}
.rbtn svg{width:34px;height:34px}
.rbtn:active{transform:translateY(4px);box-shadow:0 2px 0 #a51e1a}
.rbtn:disabled{opacity:.5}

/* 토론 */
.debate{padding-bottom:16px}
.dvs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-top:10px;text-align:center}
.dvs .face{display:block;width:64px;height:64px;margin:0 auto 4px;border-radius:50%;overflow:hidden;border:3px solid #fff}
.dvs .face svg{width:64px;height:64px}
.dvs b{font-size:14px}
.dvs em{font-style:normal;font-weight:900;font-size:22px;color:#ff5a4f}
.dmeter{height:10px;background:#8a93a8;border-radius:6px;overflow:hidden;margin-top:12px}
.dmeter i{display:block;height:100%;background:var(--party);transition:width .6s}
.dq{font-size:17px;font-weight:900;margin:4px 0 12px;line-height:1.4}
.result-line.win{color:var(--good)}
.result-line.lose{color:var(--bad)}

/* 전국 지도 */
.nmap{margin:8px auto 4px;max-width:300px;border-radius:12px;overflow:hidden}
.nmap svg{width:100%;display:block}
.mreg{transition:fill .5s}
.votes .face svg{width:44px;height:44px}

/* 엔딩 */
.ending-hero.gold{background:linear-gradient(180deg,#5a4300,#1b2133)}
.eport{width:84px;height:84px;margin:0 auto 6px;border-radius:50%;overflow:hidden;border:3px solid rgba(255,255,255,.6)}
.eport svg{width:84px;height:84px}

/* 랭킹 */
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:6px;margin:26px 0 10px}
.pod{text-align:center;position:relative}
.pod .pface{width:56px;height:56px;margin:0 auto 4px;border-radius:50%;overflow:hidden;border:3px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.pod.p1 .pface{width:72px;height:72px;border-color:#f5c542}
.pod .pface svg{width:100%;height:100%}
.pod b{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pod small{display:block;font-size:11px;color:var(--muted);font-weight:700}
.pblock{margin-top:6px;border-radius:10px 10px 0 0;color:#fff;font-weight:900;font-size:13px;padding:8px 2px}
.pblock span{display:block;font-size:22px}
.p1 .pblock{background:linear-gradient(180deg,#f5c542,#d4a017);height:96px;color:#1b2133}
.p2 .pblock{background:linear-gradient(180deg,#b9c0cc,#8a93a8);height:72px}
.p3 .pblock{background:linear-gradient(180deg,#d9a06b,#b8733a);height:56px}
.pcrown{position:absolute;top:-24px;left:50%;transform:translateX(-50%);width:34px;height:34px;animation:crownb 1.4s ease-in-out infinite}
.pcrown svg{width:34px;height:34px}
@keyframes crownb{50%{transform:translate(-50%,-4px) rotate(-6deg)}}
.pod.me .pface{box-shadow:0 0 0 3px var(--party)}
.ranklist li.me{box-shadow:0 0 0 2px var(--party),0 2px 0 #d6dbe6}
.ranklist .who b em{font-style:normal;font-size:10px;font-weight:900;background:#fff3c4;color:#8a6200;border-radius:6px;padding:1px 5px;margin-left:5px;vertical-align:2px}
.rankhead button{flex:1}
.muted{color:var(--muted);text-align:center;font-weight:700;padding:20px 0}

/* 업적 */
.achs{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.ach{background:#e4e7ee;border-radius:10px;padding:8px;color:var(--muted)}
.ach b{display:block;font-size:13px}
.ach small{font-size:11px}
.ach.got{background:#fff8dc;color:var(--ink);box-shadow:0 2px 0 #ecd98a}

/* 대관식 */
.coronation{position:fixed;inset:0;z-index:20;background:radial-gradient(circle,rgba(90,67,0,.92),rgba(10,8,0,.96));display:flex;align-items:center;justify-content:center;padding:20px;animation:tin .4s;overflow:hidden}
.coronation .rays{position:absolute;width:900px;height:900px;background:conic-gradient(from 0deg,rgba(255,210,90,0),rgba(255,210,90,.25),rgba(255,210,90,0) 12%,rgba(255,210,90,.25) 25%,rgba(255,210,90,0) 37%,rgba(255,210,90,.25) 50%,rgba(255,210,90,0) 62%,rgba(255,210,90,.25) 75%,rgba(255,210,90,0) 87%);animation:spin 10s linear infinite}
.cbox{position:relative;text-align:center;color:#fff;max-width:360px}
.ccrown{width:120px;height:120px;margin:0 auto;animation:crowndrop 1s cubic-bezier(.2,1.6,.4,1)}
.ccrown svg{width:120px;height:120px;filter:drop-shadow(0 0 20px #f5c542)}
@keyframes crowndrop{from{transform:translateY(-200px) scale(.4);opacity:0}to{transform:none;opacity:1}}
.ctitle{font-size:34px;font-weight:900;color:#f5c542;letter-spacing:-1px;text-shadow:0 3px 0 rgba(0,0,0,.4)}
.cname{font-size:22px;font-weight:900;margin-top:6px}
.cscore{font-size:40px;font-weight:900;margin:6px 0}
.dethrone{font-size:14px;color:#ffe9a8;margin-bottom:18px}
.coronation .big{background:linear-gradient(180deg,#ffd25a,#f5b301);color:#1b2133;box-shadow:0 4px 0 #a87a00}
.coronation .confetti{position:fixed;inset:0}
.dday{display:flex;flex-direction:column;align-items:center;gap:2px;background:#1b2133;color:#fff;border-radius:14px;padding:12px;margin-top:4px}
.dday b{font-size:20px;font-weight:900}
.dday span{font-size:12px;color:#c4cbe0;font-weight:700}
.dday.soon{background:linear-gradient(180deg,#ff5a4f,#c81d1d);animation:pulse 1s infinite}
.dday.soon span{color:#ffe3e1}
.warnline{color:var(--bad);font-weight:900}
.chance small{font-weight:700;font-size:11px}
.memo .mwho{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);margin-bottom:6px}
.memo .gi,.plist .gi{display:inline-block;width:22px;height:30px}
.memo .gi svg,.plist .gi svg{width:22px;height:30px}
.plist{list-style:none;padding:0;margin:0 0 10px;display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow:auto}
.plist li{background:#f4f6fa;border-radius:12px;padding:10px}
.plist li.urgent{background:#ffe9e7;box-shadow:inset 0 0 0 2px #f2b0aa}
.plist .pt{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:center}
.plist .pt b{display:block;font-size:13px}
.plist .pt small{display:block;font-size:12.5px;font-weight:700}
.plist .pt em{font-style:normal;font-weight:900;color:var(--bad)}
.plist .pb{display:grid;grid-template-columns:1fr 1fr auto;gap:6px;margin-top:8px}
.plist .pb button{border:0;border-radius:10px;padding:8px 6px;font-weight:900;font-size:12px;background:#fff;box-shadow:0 2px 0 #d6dbe6}
.plist .pb button[data-k=self]{background:#1fa463;color:#fff;box-shadow:0 2px 0 #12783f}
.who .quit{border:0;background:rgba(255,255,255,.12);color:#fff;font-weight:800;font-size:12px;padding:4px 9px;border-radius:20px;border:1px solid rgba(255,255,255,.25)}
.who .quit:active{background:#e5322d}
