/* 놀이섬 포털 셸 — 디자인 시스템 v2 (docs/DESIGN_SYSTEM.md) */
:root{--bg:#0d0a26;--bg2:#171244;--card:#1c1655;--card2:#251d6e;--card3:#2f2688;--line:rgba(255,255,255,.09);--line2:rgba(255,255,255,.16);
 --tx:#f4f2ff;--tx2:#a9a4d6;--pu:#8b3dff;--pu2:#b06bff;--gold:#ffc83a;--bl:#2f8cff;--rd:#ff453a;
 --nav:64px;--r:20px;--r2:16px;--r3:12px;--gap:12px;--pad:18px;--tap:44px;
 --sh1:0 6px 16px #0005;--sh2:0 14px 34px #5a1fd855;--t:.2s cubic-bezier(.2,.8,.2,1);
 --ft:Pretendard Variable,Pretendard,-apple-system,"Apple SD Gothic Neo",system-ui,sans-serif}
*{box-sizing:border-box;margin:0;-webkit-tap-highlight-color:transparent}
html,body{background:var(--bg);color:var(--tx);font-family:var(--ft);overscroll-behavior-y:none;-webkit-text-size-adjust:100%}
body{min-height:100dvh;padding-bottom:calc(var(--nav) + env(safe-area-inset-bottom) + 12px);background:radial-gradient(120% 50% at 50% -10%,#3a1f9a 0%,transparent 60%),var(--bg)}
body.lock{overflow:hidden}
button,select,input{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:8px}
.skip{position:absolute;left:-999px;top:8px;z-index:99;padding:10px 14px;border-radius:10px;background:var(--gold);color:#3a2300;font-weight:800}.skip:focus{left:8px}
/* 헤더 */
.top{position:sticky;top:0;z-index:20;background:linear-gradient(#0d0a26f2,#0d0a26c0);backdrop-filter:blur(14px);border-bottom:1px solid transparent}
.topin{display:flex;align-items:center;gap:16px;max-width:1120px;margin:0 auto;height:calc(54px + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--pad) 0}
.logo{display:flex;align-items:center;gap:8px;font-weight:800;font-size:20px;letter-spacing:-.02em;text-decoration:none}
.logo img{width:28px;height:28px;border-radius:9px;box-shadow:0 4px 12px #8b3dff66}
.tools{margin-left:auto;display:flex;align-items:center;gap:6px}
.ib{width:var(--tap);height:var(--tap);border-radius:22px;display:grid;place-items:center;color:var(--tx2)}.ib:active{background:var(--card2)}
.ib svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.login{position:relative;height:36px;padding:0 15px;border-radius:18px;background:var(--card2);font-weight:700;font-size:13px;box-shadow:inset 0 0 0 1px var(--line);max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background var(--t)}
.login::after,.chip::after,.tabs2 button::after{content:"";position:absolute;inset:-4px 0}
.dnav{display:none}
main{padding:4px var(--pad) 8px;max-width:1120px;margin:0 auto}
/* 섹션 */
.sec{margin:22px 0 10px;display:flex;align-items:baseline;justify-content:space-between}
.sec h2{font-size:18px;font-weight:800;letter-spacing:-.02em}.sec a{color:var(--tx2);font-size:13px;font-weight:600;text-decoration:none;min-height:24px}
/* 버튼 */
.btn{height:var(--tap);padding:0 22px;border-radius:22px;font-weight:800;font-size:15px;background:linear-gradient(180deg,#ffd75e,#ffb300);color:#3a2300;box-shadow:0 4px 0 #b97800,0 10px 20px #ffb30040;align-self:flex-start;transition:transform var(--t)}
.btn:active{transform:translateY(2px);box-shadow:0 2px 0 #b97800}
.btn.ghost{background:#ffffff1c;color:#fff;box-shadow:inset 0 0 0 1px var(--line2)}.btn.ghost:active{box-shadow:inset 0 0 0 1px var(--line2)}
.btn.sm{height:38px;padding:0 16px;font-size:13.5px;border-radius:19px;display:inline-flex;align-items:center;text-decoration:none;box-shadow:0 3px 0 #b97800;flex:none}
.btn.big{height:54px;font-size:17px;border-radius:27px;width:100%;align-self:auto}
/* 히어로 */
.hero{position:relative;overflow:hidden;border-radius:24px;padding:20px 18px;min-height:150px;background:linear-gradient(135deg,#6a2cf0,#2a1a8a 60%,#14104a);box-shadow:var(--sh2),inset 0 0 0 1px #ffffff1f;display:flex;align-items:flex-end;margin-top:6px}
.hero::before{content:"";position:absolute;right:-40px;top:-60px;width:220px;height:220px;border-radius:50%;background:radial-gradient(#ffffff26,transparent 70%)}
.hc{position:relative;z-index:1;max-width:72%}.hero small{color:var(--gold);font-weight:800;font-size:12px;letter-spacing:.06em}
.hero h1{font-size:23px;font-weight:800;margin:4px 0 3px;letter-spacing:-.03em;line-height:1.25}.hero p{color:#d8d2ff;font-size:13px;margin-bottom:14px}
.hb{display:flex;gap:8px}.hero .btn{height:40px;padding:0 18px;font-size:14px}
.hi{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 8px 12px #0007)}
/* 카테고리 바로가기 */
.qcat{display:flex;gap:8px;overflow-x:auto;margin:14px calc(var(--pad)*-1) 0;padding:2px var(--pad);scrollbar-width:none}.qcat::-webkit-scrollbar{display:none}
.qcat button{flex:none;display:flex;align-items:center;gap:6px;min-height:var(--tap);padding:0 14px;border-radius:22px;background:var(--card);font-weight:700;font-size:13.5px;box-shadow:inset 0 0 0 1px var(--line);transition:background var(--t)}
.qcat small{font-size:11px;color:var(--tx2);font-weight:800}
/* 게임 카드 */
.rail{display:flex;gap:8px;scroll-padding:0 var(--pad);overflow-x:auto;scroll-snap-type:x proximity;margin:0 calc(var(--pad)*-1);padding:8px var(--pad) 10px;scrollbar-width:none}.rail::-webkit-scrollbar{display:none}.rail::after{content:"";flex:none;width:6px}
.gc{position:relative;display:grid;grid-template-columns:40px 1fr;grid-template-rows:auto auto auto;column-gap:11px;align-items:center;text-align:left;padding:11px 12px;border-radius:var(--r2);background:linear-gradient(170deg,var(--card2),var(--card));box-shadow:inset 0 0 0 1px var(--line),var(--sh1);transition:transform var(--t),box-shadow var(--t);min-height:64px}
.gc:active{transform:scale(.97)}
.rail .gc{flex:none;width:176px;scroll-snap-align:start}
.gc .ic{grid-row:1/4;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,#ffffff2e,#ffffff0d);box-shadow:inset 0 0 0 1px var(--line)}
.gc .ic img{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 2px 3px #0006)}
.gc b{font-size:14px;font-weight:800;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gc span{color:var(--tx2);font-size:11.5px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.gc u{text-decoration:none;font-size:10.5px;font-weight:700;color:var(--pu2);margin-top:2px}
.tag{position:absolute;z-index:2;top:-5px;right:8px;font-style:normal;font-size:9px;font-weight:800;padding:2px 6px;border-radius:6px;background:var(--rd);color:#fff}.tag.h{background:var(--gold);color:#3a2300}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gsk{flex:none;width:176px;height:64px}
/* 필터 */
.chips{display:flex;gap:8px;overflow-x:auto;margin:0 calc(var(--pad)*-1) 14px;padding:2px var(--pad);scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{position:relative;flex:none;height:38px;padding:0 14px;border-radius:19px;background:var(--card);font-weight:700;font-size:13px;color:var(--tx2);box-shadow:inset 0 0 0 1px var(--line);transition:background var(--t)}
.chip.on{background:linear-gradient(180deg,var(--pu2),var(--pu));color:#fff;box-shadow:0 4px 12px #8b3dff55}
.srow{display:flex;gap:8px;margin:2px 0 10px}
.search{flex:1;min-width:0;width:100%;height:44px;border-radius:22px;border:0;padding:0 18px;background:var(--card);font-size:15px;box-shadow:inset 0 0 0 1px var(--line);outline:none}
.search:focus,.sort:focus{box-shadow:inset 0 0 0 2px var(--pu2)}
.sort{flex:none;height:44px;border-radius:22px;border:0;padding:0 12px;background:var(--card);font-size:13px;font-weight:700;box-shadow:inset 0 0 0 1px var(--line);outline:none;color:var(--tx)}.sort option{color:#000}
/* 패널·공통 */
.panel{border-radius:var(--r);padding:14px;background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}
.panel h3{font-size:16px;font-weight:800}.panel p{color:var(--tx2);font-size:13.5px;line-height:1.55;margin-top:6px}
.note{color:var(--tx2);font-size:12px;text-align:center;margin:26px 0 6px;line-height:1.5}
.view{display:none}.view.on{display:block;animation:in .25s}@keyframes in{from{opacity:0;transform:translateY(8px)}}
.foot{margin:34px calc(var(--pad)*-1) 0;padding:22px var(--pad) 8px;border-top:1px solid var(--line);text-align:center;color:var(--tx2);font-size:12.5px;line-height:1.6}
.fb{display:flex;align-items:center;justify-content:center;gap:7px;color:var(--tx);margin-bottom:4px}.fb img{border-radius:7px}.foot .fn{margin-top:8px;font-size:11.5px;opacity:.8}
/* 하단 탭 */
.nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:space-around;height:calc(var(--nav) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#120d38f2;backdrop-filter:blur(16px);border-top:1px solid var(--line)}
.nav button{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:700;color:var(--tx2);min-height:var(--tap)}
.nav svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.nav button.on{color:#fff}.nav button.on svg{stroke:var(--pu2);filter:drop-shadow(0 0 8px #b06bff99)}
.nav button.on::before{content:"";position:absolute;top:0;width:24px;height:3px;border-radius:0 0 3px 3px;background:var(--pu2)}
/* 플레이어 오버레이 */
.player{position:fixed;inset:0;z-index:50;background:#0d0a26;display:flex;flex-direction:column;transform:translateY(100%);visibility:hidden;transition:transform .3s cubic-bezier(.2,.8,.2,1),visibility 0s .3s}.player.open{transform:none;visibility:visible;transition-delay:0s}
.pbar{display:flex;align-items:center;gap:10px;height:calc(52px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0}
.pbar button{width:var(--tap);height:var(--tap);border-radius:22px;font-size:22px;background:var(--card2)}.pbar b{font-size:16px;font-weight:800}
.player iframe{flex:1;border:0;width:100%;background:#f2f2f7}
/* 모달 */
.modal{position:fixed;inset:0;z-index:70;display:none;align-items:flex-end;justify-content:center;background:#000a}.modal.open{display:flex}
.sheet{position:relative;width:100%;max-width:480px;border-radius:26px 26px 0 0;padding:22px 18px calc(22px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#241c70,#171244);box-shadow:inset 0 1px 0 #ffffff22;animation:up .28s cubic-bezier(.2,.8,.2,1);max-height:92dvh;overflow-y:auto}@keyframes up{from{transform:translateY(40px);opacity:0}}
.sheet .x{position:absolute;right:12px;top:12px;width:var(--tap);height:var(--tap);font-size:18px;color:var(--tx2)}
.tabs2{display:flex;gap:6px;margin:0 0 16px;width:max-content;padding:4px;border-radius:16px;background:#0d0a2677}.tabs2 button{position:relative;height:40px;padding:0 20px;border-radius:12px;font-weight:800;font-size:15px;color:var(--tx2)}.tabs2 button.on{background:var(--pu);color:#fff}
#af{display:grid;gap:10px}#af input{height:50px;border-radius:14px;border:0;padding:0 16px;background:#0d0a26aa;font-size:16px;box-shadow:inset 0 0 0 1px var(--line);outline:none}#af input:focus{box-shadow:inset 0 0 0 2px var(--pu2)}
.err{color:#ff8a80;font-size:13px;min-height:18px}.soc{display:grid;gap:8px;margin-top:14px}.sb{height:48px;border-radius:14px;font-weight:800;font-size:14px;opacity:.55}.sb.k{background:#fee500;color:#222}.sb.n{background:#03c75a;color:#fff}
@media(min-width:480px){.modal{align-items:center}.sheet{border-radius:26px}}
/* 내 정보·계급·커뮤니티 */
.prof{display:flex;gap:14px;align-items:center}.av{width:44px;height:44px;border-radius:15px;display:grid;place-items:center;font-size:24px;background:linear-gradient(160deg,var(--pu2),var(--pu));flex:none}
.bar{height:10px;border-radius:5px;background:#0d0a26aa;margin:10px 0 4px;overflow:hidden}.bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--gold),#ff9f0a)}
.cp{margin-top:var(--gap)}.ph{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:32px}
.mini{color:var(--tx2);font-size:11.5px;line-height:1.5;margin-top:10px!important}
.seg{display:flex;padding:3px;border-radius:14px;background:#0d0a2688}.seg button{height:30px;padding:0 14px;border-radius:11px;font-size:13px;font-weight:800;color:var(--tx2)}.seg button.on{background:var(--pu);color:#fff}
.chips.in{margin:10px -14px 6px;padding:2px 14px}
.lb{display:flex;align-items:center;gap:8px;min-height:var(--tap);padding:6px 10px;margin-top:6px;border-radius:14px;background:var(--card2)}.lb.me{box-shadow:inset 0 0 0 1.5px var(--gold)}
.lb .n{width:24px;text-align:center;font-weight:800;font-size:15px;color:var(--tx2);flex:none}
.lb b{font-weight:700;font-size:14.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb em{margin-left:auto;font-style:normal;font-weight:800;font-size:14px;font-variant-numeric:tabular-nums;color:var(--gold);flex:none}
.rb{font-style:normal;flex:none;font-size:10.5px;font-weight:800;padding:2px 7px;border-radius:8px;background:#ffffff1a;color:#e6e0ff;white-space:nowrap}
.rb.r0{background:#a8643a44;color:#ffc9a0}.rb.r1{background:#c0c8d844;color:#e8eef8}.rb.r2{background:#ffc83a33;color:#ffe08a}.rb.r3{background:#4fd6ff30;color:#9fe8ff}.rb.r4{background:#7aa8ff38;color:#b8d0ff}.rb.r5{background:#ff6bd433;color:#ffb3ec}
.empty{text-align:center;padding:18px 8px 6px;color:var(--tx2);font-size:13.5px;line-height:1.5}.empty img{width:40px;height:40px;object-fit:contain}.empty p{margin:6px 0 12px}
.sk{height:44px;margin-top:6px;border-radius:14px;background:linear-gradient(90deg,#251d6e,#2f2688,#251d6e);background-size:200% 100%;animation:sh 1.2s linear infinite}@keyframes sh{to{background-position:-200% 0}}
.ladder{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.lr{display:flex;flex-direction:column;align-items:center;gap:1px;padding:10px 4px;border-radius:14px;background:var(--card2);opacity:.65}.lr em{font-style:normal;font-size:20px}.lr b{font-size:13px;font-weight:800}.lr span{font-size:10.5px;color:var(--tx2)}
.lr.done{opacity:.9}.lr.me{opacity:1;box-shadow:inset 0 0 0 1.5px var(--gold);background:#3a2f8f}
.mecard{display:flex;align-items:center;gap:12px;margin-top:0}.mi{flex:1;min-width:0}.mi b{font-weight:800;font-size:15.5px;margin-right:6px}.mi small{color:var(--tx2);font-size:12px}.mi .bar{height:8px;margin:8px 0 4px}
.av.s{width:44px;height:44px}
.soonb{font-size:11px;font-weight:800;padding:3px 9px;border-radius:9px;background:#ffffff1a;color:var(--tx2)}
.prof .rb{margin-top:3px;display:inline-block}
/* 심리테스트 (js/tests.js) */
.tgrid{display:grid;gap:8px}.tc{display:flex;gap:12px;align-items:center;text-align:left;border-radius:var(--r2);padding:12px;background:linear-gradient(170deg,var(--card2),var(--card));box-shadow:inset 0 0 0 1px var(--line),var(--sh1);transition:transform var(--t)}.tc:active{transform:scale(.97)}
.rail .tc{flex:none;width:250px;scroll-snap-align:start}
.tci{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:22px;background:radial-gradient(circle at 50% 30%,#ffffff2e,#ffffff0d);box-shadow:inset 0 0 0 1px var(--line)}.tci img{width:30px;height:30px;object-fit:contain}
.tc b{display:block;font-size:15px;font-weight:800;margin:3px 0 2px;letter-spacing:-.02em}.tc small{display:block;color:var(--tx2);font-size:12.5px;line-height:1.4}
.ttag{display:inline-block;font-size:11px;font-weight:800;padding:3px 8px;border-radius:8px;background:#8b3dff55;color:#d9c2ff}
#tview .tbody{flex:1;overflow-y:auto;padding:8px var(--pad) calc(28px + env(safe-area-inset-bottom));max-width:560px;width:100%;margin:0 auto}
.tintro{text-align:center;padding-top:18px}.tcover{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;display:grid;place-items:center;font-size:34px;background:radial-gradient(circle at 50% 30%,#ffffff33,#ffffff0d);box-shadow:inset 0 0 0 1px var(--line)}.tcover img{width:50px;height:50px;object-fit:contain}
.tintro h1{font-size:26px;font-weight:800;margin:10px 0 6px;letter-spacing:-.03em;line-height:1.3}.tintro p{color:var(--tx2);font-size:15px}.tmeta{margin:14px 0 22px;color:var(--tx2);font-size:13px}
.tfun{color:var(--tx2);font-size:12px;text-align:center;margin-top:18px;opacity:.8}
.tq{padding-top:8px}.tprog{height:8px;border-radius:4px;background:#ffffff1a;overflow:hidden}.tprog i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--pu2),var(--gold));transition:width .3s}.tcnt{margin:10px 0 4px;color:var(--tx2);font-size:13px;font-weight:700}
.tq h2{font-size:23px;font-weight:800;line-height:1.38;letter-spacing:-.03em;margin:10px 0 22px;min-height:64px}.topts{display:grid;gap:10px}
.topt{min-height:60px;padding:14px 18px;border-radius:18px;text-align:left;font-size:16px;font-weight:600;line-height:1.4;background:var(--card2);box-shadow:inset 0 0 0 1px var(--line);transition:transform .15s,background .15s}.topt:active{transform:scale(.97);background:var(--pu)}
.tprev{margin-top:18px;color:var(--tx2);font-weight:700;font-size:14px;min-height:var(--tap)}
.tload{text-align:center;padding-top:30vh;color:var(--tx2)}.spin{width:44px;height:44px;margin:0 auto 16px;border-radius:50%;border:4px solid #ffffff22;border-top-color:var(--pu2);animation:sp .8s linear infinite}@keyframes sp{to{transform:rotate(360deg)}}
.tres{display:grid;gap:12px}.tcard{text-align:center;padding:24px 16px 22px;border-radius:26px;background:linear-gradient(160deg,#6a2cf0,#2a1a8a 70%);box-shadow:var(--sh2),inset 0 0 0 1px #ffffff1f}
.tcard h1{font-size:27px;font-weight:900;margin:10px 0 6px;letter-spacing:-.03em}.tcard .one{color:#e6e0ff;font-size:15.5px;line-height:1.45}
.tr-img.big{width:84px;height:72px;object-fit:contain;filter:drop-shadow(0 10px 14px #0007)}.tr-emo.big{font-size:52px;line-height:1.1}.tr-img{width:24px;height:24px;object-fit:contain}.tr-emo{font-size:16px}
.mrow{display:flex;align-items:center;gap:12px;margin-top:8px}.mrow b{font-size:16px}
.tact{display:grid;gap:8px;margin-top:6px}.tact .login{height:48px;border-radius:24px;font-size:14px;max-width:none}
#toast{position:fixed;left:50%;bottom:calc(90px + env(safe-area-inset-bottom));transform:translate(-50%,20px);opacity:0;z-index:99;padding:12px 18px;border-radius:22px;background:#000c;color:#fff;font-weight:700;font-size:14px;transition:.25s;pointer-events:none}#toast.on{opacity:1;transform:translate(-50%,0)}
.tcard>img,.tcard>.tr-emo{display:block;margin:0 auto}.tcard .ttag{display:block;width:max-content;margin:12px auto 0}
/* 게스트 안내 */
.gnote{display:flex;align-items:center;gap:10px;margin-top:12px;padding:10px 8px 10px 12px;border-radius:var(--r2);background:var(--card);box-shadow:inset 0 0 0 1px var(--line)}.gnote .gi{font-size:22px}.gnote div{flex:1;min-width:0}.gnote b{display:block;font-size:13.5px}.gnote small{display:block;color:var(--tx2);font-size:11.5px;line-height:1.4;margin-top:1px}
.gx{width:36px;height:44px;color:var(--tx2);font-size:14px;flex:none}.gnote .btn.sm{height:36px;padding:0 14px}
.pbar .gbadge{margin-left:auto;height:36px;padding:0 12px;border-radius:18px;background:#ffc83a22;color:var(--gold);font-size:12px;font-weight:800;box-shadow:inset 0 0 0 1px #ffc83a55;width:auto}.pbar .gbadge[hidden]{display:none}
/* 한마디 */
.say{display:flex;gap:8px;margin-top:10px}.say input{flex:1;min-width:0;height:44px;border-radius:22px;border:0;padding:0 16px;background:#0d0a26aa;font-size:15px;box-shadow:inset 0 0 0 1px var(--line);outline:none;opacity:1}.say input:focus{box-shadow:inset 0 0 0 2px var(--pu2)}.say .btn{height:44px;box-shadow:0 3px 0 #b97800}
#sayE{margin-top:6px;min-height:0}.cm{padding:10px 12px;margin-top:6px;border-radius:14px;background:var(--card2)}.ch{display:flex;align-items:center;gap:6px}.ch b{font-size:14px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ch small{color:var(--tx2);font-size:11px}
.ca{margin-left:auto;min-width:44px;height:36px;border-radius:12px;color:var(--tx2);font-size:12.5px;font-weight:700}.cm p{margin-top:2px!important;color:var(--tx)!important;font-size:14px!important;line-height:1.5;word-break:break-word}
/* 섬 리그 */
.lg-card{position:relative;overflow:hidden;border-radius:24px;padding:16px;background:linear-gradient(150deg,#1f6f8b,#2a3a9a 55%,#2a1a8a);box-shadow:var(--sh2),inset 0 0 0 1px #ffffff26}
.lg-card.t1{background:linear-gradient(150deg,#1f8b5a,#1f5f9a 55%,#2a1a8a)}.lg-card.t2{background:linear-gradient(150deg,#8b6a1f,#8a3a5a 55%,#2a1a8a)}.lg-card.t3{background:linear-gradient(150deg,#a8401f,#7a2a6a 55%,#2a1a8a)}.lg-card.t4{background:linear-gradient(150deg,#5a6ad8,#7a4ad8 55%,#2a1a8a)}
.lg-card::after{content:"";position:absolute;right:-30px;top:-40px;width:160px;height:160px;border-radius:50%;background:radial-gradient(#ffffff2a,transparent 70%)}
.lg-top{display:flex;align-items:center;gap:12px;position:relative;z-index:1}.lg-ic{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;font-size:26px;background:#ffffff26;box-shadow:inset 0 0 0 1px #ffffff33}
.lg-top small{color:#d8f0ff;font-size:11.5px;font-weight:800;letter-spacing:.04em}.lg-top h2{font-size:20px;font-weight:800;letter-spacing:-.03em}.lg-top .dd{margin-left:auto;text-align:right;font-size:11px;color:#e4eeff}.lg-top .dd b{display:block;font-size:15px;color:#fff}
.lg-me{position:relative;z-index:1;display:flex;align-items:baseline;gap:8px;margin-top:14px}.lg-me b{font-size:34px;font-weight:900;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.lg-me span{color:#e4eeff;font-size:13px}.lg-me em{margin-left:auto;font-style:normal;font-size:12px;font-weight:800;padding:3px 9px;border-radius:9px;background:#43c98b33;color:#8bf0bd}
.lg-bar{position:relative;z-index:1;height:8px;border-radius:4px;background:#0d0a2666;margin:10px 0 6px;overflow:hidden}.lg-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#8bf0bd,#43c98b);transition:width .5s}.lg-hint{position:relative;z-index:1;font-size:12px;color:#e4eeff;line-height:1.5}
.streak{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:12px}.streak div{display:grid;place-items:center;gap:2px;padding:8px 0;border-radius:12px;background:var(--card2);font-size:10.5px;color:var(--tx2);font-weight:700}.streak div.on{background:#ff9f0a2b;color:#ffcf7a}.streak div.today{box-shadow:inset 0 0 0 1.5px var(--gold)}.streak em{font-style:normal;font-size:16px}
.cut{display:flex;align-items:center;gap:8px;margin:10px 0 4px;font-size:11.5px;font-weight:800;color:#8bf0bd}.cut::before,.cut::after{content:"";flex:1;height:1px;background:#43c98b55}
.me-fix{box-shadow:inset 0 0 0 1.5px var(--gold)!important;background:#3a2f8f!important}
.pf{display:flex;gap:12px;align-items:center;margin-top:8px}.pf .av2{width:56px;height:56px;border-radius:20px;padding:3px;background:linear-gradient(160deg,#ffd75e,#ff9f0a);flex:none}.pf .av2 img{width:100%;height:100%;border-radius:17px;background:#2a1a8a;object-fit:contain}.pf h3{font-size:17px;margin-bottom:3px}.rb.lgb{background:#43c98b33;color:#8bf0bd}
.bdg{display:flex;gap:8px;margin-top:12px;overflow-x:auto;scrollbar-width:none}.bdg div{flex:none;width:64px;text-align:center;font-size:10.5px;color:var(--tx2);font-weight:700}.bdg em{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 4px;border-radius:16px;background:var(--card2);font-style:normal;font-size:24px;box-shadow:inset 0 0 0 1px var(--line)}.bdg .off em{opacity:.35;filter:grayscale(1)}
.rec{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.rec div{padding:10px;border-radius:14px;background:var(--card2)}.rec small{display:block;color:var(--tx2);font-size:10.5px}.rec b{font-size:15px;font-variant-numeric:tabular-nums}
.rx{display:flex;gap:6px;margin-top:6px}.rx button{min-width:44px;height:36px;padding:0 10px;border-radius:18px;background:#0d0a2688;font-size:12.5px;font-weight:700;color:var(--tx2)}.rx button.on{background:#8b3dff55;color:#fff;box-shadow:inset 0 0 0 1px var(--pu2)}
.topic{padding:12px;border-radius:16px;background:linear-gradient(135deg,#3a2f8f,#2a1a8a);box-shadow:inset 0 0 0 1px var(--line);margin-top:10px}.topic small{color:var(--gold);font-weight:800;font-size:11px}.topic b{display:block;font-size:15px;margin-top:2px}
details.panel summary{cursor:pointer;list-style:none;min-height:var(--tap)}details.panel summary::-webkit-details-marker{display:none}details.panel summary::after{content:"＋";margin-left:auto;color:var(--tx2)}details.panel[open] summary::after{content:"－"}
.cele{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:#000b;animation:in .25s}.cb{width:min(320px,86vw);text-align:center;padding:24px 18px;border-radius:26px;background:linear-gradient(160deg,#6a2cf0,#2a1a8a);box-shadow:var(--sh2),inset 0 0 0 1px #ffffff2a;animation:pop .5s cubic-bezier(.2,1.4,.4,1)}.cb img{filter:drop-shadow(0 8px 12px #0007)}.cb b{display:block;font-size:20px;font-weight:900;margin:8px 0 4px}.cb p{color:#d8d2ff;font-size:13.5px;margin-bottom:14px}@keyframes pop{from{transform:scale(.7);opacity:0}}
/* 데스크톱 */
@media(min-width:560px){.grid{grid-template-columns:repeat(3,1fr)}.tgrid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:900px){
 :root{--pad:28px}body{padding-bottom:0}.nav{display:none}
 .topin{height:64px}.logo{font-size:22px}.logo img{width:32px;height:32px}
 .dnav{display:flex;gap:4px;margin-left:12px}.dnav button{height:40px;padding:0 16px;border-radius:20px;font-weight:700;font-size:15px;color:var(--tx2);transition:background var(--t),color var(--t)}.dnav button:hover{background:var(--card);color:#fff}.dnav button.on{background:var(--card2);color:#fff}
 .grid{grid-template-columns:repeat(4,1fr);gap:12px}.rail .gc{width:200px}
 .hero{min-height:200px;padding:32px;border-radius:30px}.hero h1{font-size:34px}.hero p{font-size:15px}.hi{width:150px;height:150px;right:48px}.hc{max-width:60%}
 .gc:hover,.tc:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px var(--line2),0 14px 26px #0007}
 .qcat button:hover,.chip:hover{background:var(--card2)}
 .tgrid{grid-template-columns:repeat(3,1fr)}.rail .tc{width:300px}
 #v-community,#v-me{max-width:640px;margin:0 auto}.sec{margin-top:30px}.sec h2{font-size:22px}
 .modal{align-items:center}.sheet{border-radius:26px}
}
@media(min-width:1200px){.grid{grid-template-columns:repeat(5,1fr)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
