:root{
  --ink:#06251A; --paper:#FFFFFF;
  --a-ground:#FAF6EC; --a-accent:#146B45; --a-accent-ink:#FFFFFF; --a-mint:#DCEBD9; --a-sky:#E4EFE0; --a-butter:#F7C948; --a-peach:#F3E6C2; --a-mute:#6B7568;
  --b-ground:#FAF6EC; --b-ink:#06251A; --b-accent:#146B45; --b-lime:#F7C948; --b-mute:#5F6E64; --b-line:#E6DFCB; --b-soft:#E4EFE0;
  --spring:cubic-bezier(.32,.72,0,1);
}
*{box-sizing:border-box}
/* 스크롤바 전부 숨김 */
html,body,*{scrollbar-width:none;-ms-overflow-style:none}
::-webkit-scrollbar{display:none;width:0;height:0}
[hidden]{display:none!important}
html,body{margin:0}
body{background:#FAF6EC;color:#06251A;font-family:"Pretendard",system-ui,sans-serif;font-size:16px;line-height:1.55;overflow-x:clip;word-break:keep-all}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}
.wrap{max-width:1180px;margin:0 auto;padding-inline:20px}
h1,h2,h3{margin:0;text-wrap:balance}
p{margin:0}

/* switcher */
.sw{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:50;display:flex;gap:4px;background:#1F1B18;padding:5px;border-radius:999px;box-shadow:0 10px 30px rgba(43,38,34,.28)}
.sw button{border:0;border-radius:999px;padding:9px 16px;background:transparent;color:#CFC7BF;font-family:"Pretendard",sans-serif;font-size:13px;font-weight:600;transition:background .25s var(--spring),color .25s}
.sw button{white-space:nowrap}
@media (max-width:600px){.sw button{padding:8px 9px;font-size:11.5px}}
.sw button[aria-pressed="true"]{background:#fff;color:#1F1B18}
.sw button:focus-visible{outline:2px solid #fff;outline-offset:2px}
.note{background:#1F1B18;color:#fff;font:600 12px/1.3 "Pretendard",sans-serif;padding:8px 20px;text-align:center}
.note b{color:#FFD25F}

/* ===== 공통: 초록무대 ===== */

body{background:#FAF6EC;color:#06251A}
.G{display:block}

.G{--g9:#08301F;--g8:#0B4A32;--g7:#146B45;--y:#F7C948;--cream:#FAF6EC;--sand:#F1EBDB;--ink:#06251A;--mute:#5F6E64;font-family:"Pretendard",sans-serif;color:var(--ink)}
.G .disp{font-family:"GmarketSans",sans-serif;font-weight:700;letter-spacing:-.02em}
.G .nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--g9);color:#F3EBD6}
.G .nav .wrap{display:flex;align-items:center;gap:24px;height:68px}
.G .logo{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:23px;display:flex;align-items:center;gap:9px;color:#fff}
.G .logo i{width:26px;height:26px;border-radius:50%;background:var(--y);display:inline-block;position:relative}
.G .logo i::after{content:"";position:absolute;inset:8px;border-radius:50%;background:var(--g9)}
.G .menu{display:flex;gap:22px;font-size:15px}
.G .menu a{opacity:.85}.G .menu a:hover{opacity:1;text-decoration:underline;text-underline-offset:6px;text-decoration-color:var(--y)}
.G .nav .sp{flex:1}
.G .hp{display:flex;align-items:center;gap:7px;border:1.5px solid rgba(255,255,255,.25);border-radius:999px;padding:7px 12px;font-size:14px}
.G .hp s{width:14px;height:14px;background:var(--y);display:inline-block;clip-path:path("M7 13 L1.6 7.4 A3.2 3.2 0 0 1 7 3.2 A3.2 3.2 0 0 1 12.4 7.4 Z")}
.G .yb{border:0;border-radius:999px;padding:12px 22px;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:17px;background:var(--y);color:var(--ink);transition:transform .2s var(--spring),box-shadow .2s;box-shadow:0 4px 0 #C99A26}
.G .yb:hover{transform:translateY(-2px);box-shadow:0 6px 0 #C99A26}
.G .yb:active{transform:translateY(2px);box-shadow:0 2px 0 #C99A26}
.G .yb.sm{padding:9px 16px;font-size:15px}
.G .gb{border:2px solid var(--ink);background:transparent;color:var(--ink);border-radius:999px;padding:11px 20px;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:16px}
.G .gb:hover{background:var(--ink);color:var(--y)}
.G .gb.light{border-color:#fff;color:#fff}.G .gb.light:hover{background:#fff;color:var(--g9)}

.G .hero{background:var(--g8);color:#F3EBD6;position:relative;overflow:hidden}
.G .hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(247,201,72,.22) 1.5px,transparent 1.5px);background-size:26px 26px;opacity:.7;pointer-events:none}
.G .hero > .wrap{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:end;padding-top:56px;min-height:540px}
.G .hero h1{font-size:clamp(40px,5.3vw,64px);line-height:1.1;color:#fff}
.G .hero h1 em{font-style:normal;color:var(--y)}
.G .hero p{margin-top:16px;font-size:18px;color:#D6E3D8;max-width:34ch}
.G .hero .cta{display:flex;gap:10px;margin:26px 0 54px;flex-wrap:wrap}
.G .stage{position:relative;height:520px;align-self:end}
.G .stage .paper{position:absolute;background:#fff;padding:7px;border-radius:8px;width:230px;box-shadow:0 18px 40px rgba(0,0,0,.28)}
.G .stage .p1{left:0;bottom:120px;transform:rotate(-7deg)}
.G .stage .p2{left:36%;bottom:150px;transform:rotate(4deg)}
.G .stage .p3{right:0;bottom:110px;transform:rotate(10deg)}
.G .stage .paper img{border-radius:4px}
.G .stage .k1{position:absolute;left:8%;bottom:0;width:215px;z-index:3}
.G .stage .k2{position:absolute;right:6%;bottom:0;width:205px;z-index:3}
.G .stage .floor{position:absolute;left:0;right:0;bottom:0;height:90px;background:var(--g9);border-radius:50% 50% 0 0/100% 100% 0 0;z-index:2}
.G .stage .tag{position:absolute;left:44%;bottom:40px;z-index:4;background:var(--y);color:var(--ink);font-family:"GmarketSans",sans-serif;font-weight:700;padding:8px 14px;border-radius:12px;font-size:16px;transform:rotate(-4deg)}
.G .lineup{background:var(--g9);padding:22px 0 0}
.G .lineup .wrap{display:grid;grid-template-columns:repeat(12,1fr);gap:0;align-items:end}
.G .lineup img{width:100%;height:auto;transition:transform .35s var(--spring)}
.G .lineup img:hover{transform:translateY(-10px)}
.G .lineup .names{display:grid;grid-template-columns:repeat(12,1fr);text-align:center;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:13px;color:#C9D9CD;padding:8px 0 14px;border-top:2px solid rgba(255,255,255,.12)}

.G section{padding-block:64px}
.G .sh{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}
.G .sh h2{font-size:34px}
.G .sh p{color:var(--mute);font-size:15px}
.G .sh a{font-size:15px;border-bottom:2px solid var(--ink);padding-bottom:2px}
.G .bento{display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-template-rows:auto auto;gap:14px}
.G .bc{border-radius:22px;overflow:hidden;position:relative;background:#fff;border:2px solid var(--sand);display:grid;grid-template-columns:1fr 1fr;align-items:end;transition:transform .35s var(--spring),border-color .2s}
.G .bc:hover{transform:translateY(-5px);border-color:var(--g7)}
.G .bc.big{grid-row:span 2;grid-template-columns:1fr;background:var(--g7);color:#fff;border-color:var(--g7)}
.G .bc .txt{padding:20px}
.G .bc b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:20px;display:block;line-height:1.2}
.G .bc.big b{font-size:32px;color:#fff}
.G .bc p{font-size:14px;color:var(--mute);margin-top:6px}
.G .bc.big p{color:#D6E3D8;font-size:15px}
.G .bc .im{padding:14px 14px 0 0;justify-self:end}
.G .bc .im img{width:140px;border-radius:6px 6px 0 0;box-shadow:0 -4px 16px rgba(6,37,26,.14)}
.G .bc.big .im{padding:0 20px;justify-self:center;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:end}
.G .bc.big .im img{width:100%;box-shadow:0 -6px 22px rgba(0,0,0,.25)}
.G .pill{display:inline-block;font-size:12px;border-radius:999px;padding:3px 10px;background:var(--sand);color:var(--g8);font-weight:700;margin-top:10px}
.G .pill.y{background:var(--y);color:var(--ink)}
.G .bc.big .pill{background:var(--y)}

.G .chips{background:var(--sand)}
.G .chips .row{display:flex;flex-wrap:wrap;gap:10px}
.G .chip{display:flex;align-items:center;gap:10px;background:#fff;border-radius:999px;padding:6px 18px 6px 6px;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:17px;border:2px solid transparent;transition:border-color .2s,transform .3s var(--spring)}
.G .chip:hover{border-color:var(--g7);transform:translateY(-3px)}
.G .chip img{width:40px;height:40px;border-radius:50%;object-fit:cover}
.G .chip small{font-family:"Pretendard";color:var(--mute);font-size:13px;margin-left:2px}
.G .chip.all{background:var(--g8);color:#fff}

.G .steps{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:14px;align-items:stretch}
.G .st{background:#fff;border-radius:22px;padding:22px;border:2px solid var(--sand);position:relative;overflow:hidden;min-height:250px;display:grid;grid-template-rows:auto 1fr;gap:6px}
.G .st .n{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:15px;color:var(--g7);background:var(--sand);width:max-content;padding:3px 12px;border-radius:999px}
.G .st b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:24px;display:block;margin-top:8px}
.G .st p{font-size:14.5px;color:var(--mute);margin-top:6px;max-width:26ch}
.G .st img{position:absolute;right:10px;bottom:0;height:150px}
.G .st.one{background:var(--y);border-color:var(--y)}
.G .st.one .n{background:#fff}
.G .st.one p{color:#5A4A12}
.G .st.one img{height:190px;right:16px}

.G .ticket .wrap{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}
.G .tk{background:var(--y);border-radius:20px;padding:28px;position:relative;color:var(--ink);--r:16px}
.G .tk::before,.G .tk::after{content:"";position:absolute;top:50%;width:32px;height:32px;border-radius:50%;background:var(--cream);transform:translateY(-50%)}
.G .tk::before{left:-16px}.G .tk::after{right:-16px}
.G .tk .hd{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px dashed rgba(6,37,26,.3);padding-bottom:14px}
.G .tk .hd b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:24px}
.G .tk .hd span{font-size:13px;font-weight:700}
.G .tk .bal{display:flex;align-items:flex-end;gap:12px;padding-top:16px}
.G .tk .bal strong{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:64px;line-height:1}
.G .tk .bal small{font-size:14px;padding-bottom:10px;color:#5A4A12}
.G .tk p{font-size:14px;margin-top:10px;color:#5A4A12}
.G .ways{display:grid;gap:12px}
.G .way{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;background:#fff;border:2px solid var(--sand);border-radius:18px;padding:14px 18px 14px 14px}
.G .way .pic{width:84px;height:84px;border-radius:16px;background:var(--sand);overflow:hidden;display:grid;place-items:end center}
.G .way .pic img{height:92px;object-fit:contain;object-position:bottom}
.G .way b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:19px;display:block}
.G .way p{font-size:13.5px;color:var(--mute);margin-top:2px}
.G .way .amt{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:24px;color:var(--g7);white-space:nowrap}

.G .books{background:var(--sand)}
.G .shelf{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.G .bk{background:#fff;border-radius:20px;overflow:hidden;display:grid;grid-template-columns:1fr 130px;gap:10px;align-items:end;padding:18px 0 0 18px;min-height:220px}
.G .bk img{width:130px;border-radius:8px 0 0 0;box-shadow:-4px -6px 18px rgba(6,37,26,.12)}
.G .bk b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:22px;display:block}
.G .bk p{font-size:14px;color:var(--mute);margin:6px 0 10px}
.G .bk .ft{padding-bottom:18px}
.G .bk.q{background:var(--g8);color:#fff;grid-template-columns:1fr;padding:26px;align-content:center}
.G .bk.q p{color:#D6E3D8}

.G .insta .wrap{display:grid;grid-template-columns:1fr 1.2fr;gap:36px;align-items:center}
.G .insta h2{font-size:32px}
.G .insta p{margin-top:10px;color:var(--mute)}
.G .reels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.G .reel{aspect-ratio:9/14;border-radius:18px;overflow:hidden;position:relative;display:grid;place-items:end center;background:var(--sand)}
.G .reel img{width:76%;object-fit:contain}
.G .reel .cap{position:absolute;left:12px;top:12px;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:14px;background:var(--y);border-radius:999px;padding:4px 10px}
.G footer{background:var(--g9);color:#B7C9BC;font-size:13px;padding-block:40px}
.G footer .wrap{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px}
.G footer b{color:#fff;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:18px;display:block;margin-bottom:8px}
.G footer a{display:block;margin-top:6px}
.G footer .lic{margin-top:14px;line-height:1.7;color:#8FA697}

@media (max-width:980px){
.G .bento{grid-template-columns:1fr 1fr}.G .bc.big{grid-column:span 2;grid-row:auto}
  .G .steps,.G .shelf,.G footer .wrap,#C footer .wrap{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
.G .menu,#C .menu{display:none}
  .G .hero > .wrap{grid-template-columns:1fr;min-height:0;padding-top:34px}
  .G .hero .cta{margin-bottom:20px}
  .G .stage{height:360px}
  .G .stage .paper{width:40%}
  .G .stage .p1{left:0;bottom:110px}.G .stage .p2{left:30%;bottom:130px}.G .stage .p3{right:0;bottom:100px}
  .G .stage .k1{width:40%;left:4%}.G .stage .k2{width:38%;right:4%}
  .G .stage .tag{left:34%;bottom:30px;font-size:14px}
  .G .lineup .wrap,.G .lineup .names{grid-template-columns:repeat(6,1fr)}
  .G .lineup .names{display:none}
  .G .bento{grid-template-columns:1fr}.G .bc.big{grid-column:auto}
  .G .steps,.G .shelf,.G .ticket .wrap,.G .insta .wrap,.G footer .wrap{grid-template-columns:1fr}
  .G .sh h2,.G .insta h2{font-size:28px}
  .G .st img{height:120px}.G .st.one img{height:150px}
}
/* ===== v2: 실제 도안 갤러리 ===== */
.G .hero5{background:var(--g8);color:#F3EBD6;position:relative;overflow:hidden}
.G .hero5::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 70% 60%,rgba(20,107,69,.55),transparent 60%);pointer-events:none}
.G .hero5 > .wrap{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;min-height:560px;padding-block:40px 0}
.G .hero5 h1{font-size:clamp(40px,5.2vw,62px);line-height:1.1;color:#fff}
.G .hero5 h1 em{font-style:normal;color:var(--y)}
.G .hero5 .lead{margin-top:16px;font-size:18px;color:#D6E3D8;max-width:32ch}
.G .hero5 .cta{display:flex;gap:10px;margin-top:26px;flex-wrap:wrap}
.G .hero5 .facts{display:flex;gap:22px;margin-top:34px;flex-wrap:wrap}
.G .hero5 .facts div{font-size:13px;color:#B7C9BC}
.G .hero5 .facts b{display:block;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:26px;color:#fff;line-height:1.1}
.G .wallv{position:relative;height:600px;overflow:hidden;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;mask-image:linear-gradient(transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 8%,#000 92%,transparent)}
.G .wallv .col{display:flex;flex-direction:column;gap:14px;animation:up 46s linear infinite}
.G .wallv .col:nth-child(2){animation-direction:reverse;animation-duration:54s;margin-top:-120px}
.G .wallv .col:nth-child(3){animation-duration:50s}
.G .wallv img{width:100%;border-radius:10px;background:#fff;padding:4px;box-shadow:0 14px 34px rgba(0,0,0,.3)}
@keyframes up{to{transform:translateY(-50%)}}
.G .hero5 .peek{position:absolute;left:41%;bottom:-8px;width:150px;z-index:3}

.G .feat{display:grid;grid-template-columns:1.5fr 1fr 1fr;grid-template-rows:auto auto;gap:14px}
.G .fc{position:relative;border-radius:22px;overflow:hidden;background:#fff;border:2px solid var(--sand);transition:transform .35s var(--spring),border-color .2s;display:block}
.G .fc:hover{transform:translateY(-5px);border-color:var(--g7)}
.G .fc img{width:100%;aspect-ratio:210/297;object-fit:cover;object-position:top}
.G .fc.big{grid-row:span 2}
.G .fc.big img{aspect-ratio:auto;height:100%}
.G .fc .cap{position:absolute;left:0;right:0;bottom:0;padding:40px 16px 14px;background:linear-gradient(transparent,rgba(6,37,26,.86));color:#fff}
.G .fc .cap b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:18px;display:block;line-height:1.2}
.G .fc.big .cap b{font-size:26px}
.G .fc .cap small{font-size:12.5px;color:#C9D9CD}
.G .fc .tag{position:absolute;left:12px;top:12px;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:12.5px;background:#fff;color:var(--g8);border-radius:999px;padding:4px 10px}
.G .fc .tag.y{background:var(--y);color:var(--ink)}

.G .cats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.G .cat{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:3/3.6;background:#fff;border:2px solid var(--sand);display:block;transition:transform .35s var(--spring),border-color .2s}
.G .cat:hover{transform:translateY(-4px);border-color:var(--g7)}
.G .cat img{width:100%;height:100%;object-fit:cover;object-position:top}
.G .cat .cap{position:absolute;left:0;right:0;bottom:0;padding:34px 12px 12px;background:linear-gradient(transparent,rgba(6,37,26,.9));color:#fff}
.G .cat .cap b{font-family:"GmarketSans",sans-serif;font-weight:700;font-size:17px;display:block}
.G .cat .cap small{font-size:12px;color:#C9D9CD}
.G .cat .n{position:absolute;right:10px;top:10px;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:12px;background:var(--y);border-radius:999px;padding:3px 9px;color:var(--ink)}

.G .friends .wrap > .sh{margin-bottom:18px}
.G .frow{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.G .fr{background:#fff;border:2px solid var(--sand);border-radius:18px;padding:8px;text-align:center;transition:transform .3s var(--spring),border-color .2s;display:block}
.G .fr:hover{transform:translateY(-4px);border-color:var(--g7)}
.G .fr img{width:100%;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:10px}
.G .fr b{display:block;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:15px;margin-top:8px}
.G .fr small{color:var(--mute);font-size:12px}

.G .books5{background:var(--g9);color:#F3EBD6}
.G .books5 .sh h2{color:#fff}.G .books5 .sh p{color:#B7C9BC}.G .books5 .sh a{color:var(--y);border-color:var(--y)}
.G .shelf5{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.G .bk5{background:var(--g8);border-radius:20px;padding:14px;transition:transform .35s var(--spring);display:block}
.G .bk5:hover{transform:translateY(-6px)}
.G .bk5 img{width:100%;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:10px;box-shadow:0 12px 28px rgba(0,0,0,.3)}
.G .bk5 b{display:block;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:19px;margin-top:12px;color:#fff}
.G .bk5 p{font-size:13px;color:#B7C9BC;margin-top:2px}
.G .bk5 .pill{background:var(--y);color:var(--ink)}

.G .craft{display:grid;grid-template-columns:1.1fr repeat(4,1fr);gap:14px;align-items:stretch}
.G .craft .lead{background:var(--y);border-radius:22px;padding:24px;display:grid;align-content:space-between;gap:14px;color:var(--ink)}
.G .craft .lead h2{font-size:30px;line-height:1.15}
.G .craft .lead p{font-size:14.5px;color:#5A4A12}
.G .cr{background:#fff;border:2px solid var(--sand);border-radius:18px;padding:8px;display:block;transition:transform .3s var(--spring),border-color .2s}
.G .cr:hover{transform:translateY(-4px);border-color:var(--g7)}
.G .cr img{width:100%;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:10px;background:#fff}
.G .cr b{display:block;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:15px;margin-top:8px}
.G .cr small{color:var(--mute);font-size:12px}

@media (max-width:980px){
  .G .feat{grid-template-columns:1fr 1fr}.G .fc.big{grid-column:span 2;grid-row:auto}.G .fc.big img{aspect-ratio:16/10;height:auto}
  .G .cats,.G .frow{grid-template-columns:repeat(4,minmax(0,1fr))}
  .G .shelf5{grid-template-columns:repeat(2,minmax(0,1fr))}
  .G .craft{grid-template-columns:1fr 1fr 1fr}.G .craft .lead{grid-column:span 3}
}
@media (max-width:760px){
  .G .hero5 > .wrap{grid-template-columns:1fr;min-height:0;padding-top:34px;gap:24px}
  .G .wallv{height:380px}.G .hero5 .peek{display:none}
  .G .feat{grid-template-columns:1fr 1fr}
  .G .cats,.G .frow{grid-template-columns:repeat(3,minmax(0,1fr))}
  .G .craft{grid-template-columns:1fr 1fr}.G .craft .lead{grid-column:span 2}
  .G .shelf5{grid-template-columns:1fr 1fr;gap:10px}
}
@media (prefers-reduced-motion:reduce){.G .wallv .col{animation:none}}
/* ===== polish: 효과·디테일 ===== */
html{scroll-behavior:smooth}
.G{--ease:cubic-bezier(.32,.72,0,1);--shell:rgba(6,37,26,.06);--hl:inset 0 1px 0 rgba(255,255,255,.7)}
.prog{position:fixed;left:0;top:0;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--y),#FFE28A);z-index:60;pointer-events:none}
.grain{position:fixed;inset:0;z-index:55;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:multiply}
/* nav */
.G .nav{transition:box-shadow .5s var(--ease),background .5s var(--ease)}
.G .nav .wrap{transition:height .5s var(--ease)}
.G .nav.on{background:rgba(8,48,31,.86);backdrop-filter:blur(14px) saturate(150%);-webkit-backdrop-filter:blur(14px) saturate(150%);box-shadow:0 1px 0 rgba(255,255,255,.08),0 12px 40px rgba(0,0,0,.25)}
.G .nav.on .wrap{height:58px}
.G .menu a{position:relative;text-decoration:none}
.G .menu a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--y);transform:scaleX(0);transform-origin:0 50%;transition:transform .45s var(--ease)}
.G .menu a:hover::after{transform:scaleX(1)}
.G .hp s{animation:beat 2.4s var(--ease) infinite}
@keyframes beat{0%,70%,100%{transform:scale(1)}78%{transform:scale(1.25)}86%{transform:scale(1)}}
/* buttons: button-in-button */
.G .yb,.G .gb{display:inline-flex;align-items:center;gap:10px;transition:transform .45s var(--ease),box-shadow .45s var(--ease),background .45s var(--ease),color .45s var(--ease)}
.G .yb .ar,.G .gb .ar{width:26px;height:26px;border-radius:50%;background:rgba(6,37,26,.12);display:grid;place-items:center;margin-right:-8px;transition:transform .45s var(--ease),background .45s var(--ease)}
.G .gb.light .ar{background:rgba(255,255,255,.18)}
.G .yb .ar::before,.G .gb .ar::before{content:"";width:7px;height:7px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg) translate(-1px,1px)}
.G .yb:hover .ar,.G .gb:hover .ar{transform:translate(2px,-1px) scale(1.08);background:rgba(6,37,26,.2)}
.G .gb.light:hover .ar{background:rgba(8,48,31,.15)}
.G .yb:active,.G .gb:active{transform:scale(.97)}
.G .yb{box-shadow:0 4px 0 #C99A26,var(--hl)}
/* hero entrance */
.G .hero5 .e{animation:rise 1s var(--ease) both}
.G .hero5 .e:nth-child(1){animation-delay:.05s}.G .hero5 .e:nth-child(2){animation-delay:.15s}.G .hero5 .e:nth-child(3){animation-delay:.25s}.G .hero5 .e:nth-child(4){animation-delay:.35s}.G .hero5 .e:nth-child(5){animation-delay:.45s}
@keyframes rise{from{opacity:0;transform:translateY(28px);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
.G .eyebrow{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(247,201,72,.45);color:var(--y);border-radius:999px;padding:5px 12px 5px 6px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;margin-bottom:18px;background:rgba(247,201,72,.08)}
.G .eyebrow i{width:18px;height:18px;border-radius:50%;background:var(--y);display:inline-block;position:relative}
.G .eyebrow i::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--g8)}
.G .wallv{transform:perspective(1200px) rotateY(-6deg);transform-origin:100% 50%;transition:transform .8s var(--ease)}
.G .wallv:hover .col{animation-play-state:paused}
.G .wallv img{transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.G .wallv img:hover{transform:scale(1.04) translateX(-4px);box-shadow:0 22px 50px rgba(0,0,0,.4)}

@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-8px) rotate(-2deg)}}
.G .hero5 .facts b{font-variant-numeric:tabular-nums}
/* curve divider */
.G .curve{display:block;width:100%;height:56px;margin-top:-1px;background:var(--g8)}
.G .curve svg{display:block;width:100%;height:100%}
/* double-bezel cards */
.G .fc,.G .cat,.G .cr,.G .fr,.G .bk5{border:0;box-shadow:0 0 0 1px var(--shell),0 1px 2px rgba(6,37,26,.04);padding:6px;background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:24px;transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.G .fc img,.G .cat img,.G .cr img,.G .fr img,.G .bk5 img{border-radius:18px;box-shadow:inset 0 0 0 1px rgba(6,37,26,.05)}
.G .fc .cap,.G .cat .cap{left:6px;right:6px;bottom:6px;border-radius:0 0 18px 18px}
.G .fc .tag,.G .cat .n{left:16px;top:16px;box-shadow:0 2px 8px rgba(6,37,26,.15),var(--hl)}
.G .cat .n{left:auto;right:16px}
.G .fc:hover,.G .cat:hover,.G .cr:hover,.G .fr:hover{transform:translateY(-8px);box-shadow:0 0 0 1px rgba(20,107,69,.35),0 30px 60px -20px rgba(6,37,26,.35),0 12px 24px -12px rgba(6,37,26,.2)}
.G .fc img,.G .cat img{transition:transform 1.2s var(--ease)}
.G .fc:hover img,.G .cat:hover img{transform:scale(1.05)}
.G .cat .cap{padding-bottom:16px}
.G .bk5{background:linear-gradient(180deg,#0F5A3D,#0B4A32);box-shadow:0 0 0 1px rgba(255,255,255,.08),inset 0 1px 0 rgba(255,255,255,.08);padding:12px}
.G .bk5:hover{transform:translateY(-8px) rotate(-1deg);box-shadow:0 0 0 1px rgba(247,201,72,.5),0 30px 60px -20px rgba(0,0,0,.6)}
.G .bk5 b,.G .bk5 p,.G .bk5 .pill{margin-left:4px}
.G .tilt{transform-style:preserve-3d;will-change:transform}
/* ticket */
.G .tk{overflow:hidden;box-shadow:0 20px 50px -20px rgba(201,154,38,.6),var(--hl)}
.G .tk::before,.G .tk::after{z-index:2}
.G .tk .shine{position:absolute;inset:-40% -60%;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.55) 50%,transparent 60%);transform:translateX(-60%);pointer-events:none}
.G .tk:hover .shine{animation:shine 1.1s var(--ease) forwards}
@keyframes shine{to{transform:translateX(60%)}}
.G .way{transition:transform .5s var(--ease),border-color .5s var(--ease),box-shadow .5s var(--ease);box-shadow:var(--hl)}
.G .way:hover{transform:translateX(6px);border-color:var(--g7);box-shadow:0 18px 40px -20px rgba(6,37,26,.3)}
.G .way .pic img{transition:transform .5s var(--ease)}
.G .way:hover .pic img{transform:translateY(-6px)}
/* craft lead */
.G .craft .lead{box-shadow:0 24px 60px -24px rgba(201,154,38,.7),var(--hl);position:relative;overflow:hidden}
.G .craft .lead::after{content:"";position:absolute;right:-40px;bottom:-40px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.35)}
/* reels */
.G .reel{transition:transform .6s var(--ease);box-shadow:0 0 0 1px var(--shell)}
.G .reel:hover{transform:translateY(-8px) rotate(1.5deg)}
.G .reel img{transition:transform .6s var(--ease)}
.G .reel:hover img{transform:scale(1.06)}
/* scroll reveal */
html.js .rv{opacity:0;transform:translateY(26px);filter:blur(4px);transition:opacity .9s var(--ease),transform .9s var(--ease),filter .9s var(--ease)}
html.js .rv.on{opacity:1;transform:none;filter:blur(0)}
html.js .rvs>*{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
html.js .rvs.on>*{opacity:1;transform:none}
html.js .rvs.on>*:nth-child(1){transition-delay:.0s}html.js .rvs.on>*:nth-child(2){transition-delay:.06s}html.js .rvs.on>*:nth-child(3){transition-delay:.12s}html.js .rvs.on>*:nth-child(4){transition-delay:.18s}html.js .rvs.on>*:nth-child(5){transition-delay:.24s}html.js .rvs.on>*:nth-child(6){transition-delay:.3s}html.js .rvs.on>*:nth-child(7){transition-delay:.36s}html.js .rvs.on>*:nth-child(8){transition-delay:.42s}html.js .rvs.on>*:nth-child(9){transition-delay:.48s}html.js .rvs.on>*:nth-child(10){transition-delay:.54s}html.js .rvs.on>*:nth-child(11){transition-delay:.6s}html.js .rvs.on>*:nth-child(12){transition-delay:.66s}
.G section{padding-block:88px}
.G .sh{margin-bottom:32px}
.G .sh h2{font-size:38px}
@media (max-width:760px){.G section{padding-block:56px}.G .sh h2{font-size:28px}.G .wallv{transform:none}}
@media (prefers-reduced-motion:reduce){.G .hero5 .e,.G .hp s,.G .hero5 .peek,.G .wallv .col{animation:none!important}html.js .rv,html.js .rvs>*{opacity:1;transform:none;filter:none;transition:none}}
/* ===== mobile ===== */
.G .ham{display:none;width:44px;height:44px;border:0;background:transparent;position:relative;margin-right:-8px}
.G .ham i{position:absolute;left:11px;width:22px;height:2px;background:#fff;border-radius:2px;transition:transform .5s var(--ease),opacity .3s}
.G .ham i:nth-child(1){top:16px}.G .ham i:nth-child(2){top:22px}.G .ham i:nth-child(3){top:28px}
.G .ham[aria-expanded="true"] i:nth-child(1){transform:translateY(6px) rotate(45deg)}
.G .ham[aria-expanded="true"] i:nth-child(2){opacity:0}
.G .ham[aria-expanded="true"] i:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.G .mnav{position:fixed;inset:0;z-index:19;background:rgba(8,48,31,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:96px 24px 32px;display:none;flex-direction:column;justify-content:space-between}
.G .mnav.open{display:flex}
.G .mnav a{display:block;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:32px;color:#fff;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.1);opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.G .mnav.open a{opacity:1;transform:none}
.G .mnav.open a:nth-child(1){transition-delay:.05s}.G .mnav.open a:nth-child(2){transition-delay:.1s}.G .mnav.open a:nth-child(3){transition-delay:.15s}.G .mnav.open a:nth-child(4){transition-delay:.2s}.G .mnav.open a:nth-child(5){transition-delay:.25s}
.G .mnav .mfoot{display:grid;gap:10px}
.G .mnav .mfoot .yb{justify-content:center}
.G .mnav .mfoot .hp{justify-content:center;color:#fff;padding:12px}
.G .mbar{display:none;position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:18;background:rgba(8,48,31,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:999px;padding:8px 8px 8px 18px;align-items:center;gap:10px;color:#fff;box-shadow:0 14px 40px rgba(0,0,0,.35);transform:translateY(120%);transition:transform .6s var(--ease)}
.G .mbar.show{transform:none}
.G .mbar span{flex:1;font-size:13px;line-height:1.3}
.G .mbar b{display:block;font-family:"GmarketSans",sans-serif;font-size:14px;color:var(--y)}
.G .mbar .yb{padding:11px 16px;font-size:14px;box-shadow:none;white-space:nowrap}
body.menu-open{overflow:hidden}
@media (max-width:760px){
  .note{font-size:11px;padding:6px 14px}
  .G .nav .wrap{height:60px;gap:12px}
  .G .nav.on .wrap{height:54px}
  .G .logo{font-size:19px}
  .G .menu,.G .nav .hp,.G .nav .yb.sm{display:none}
  .G .ham{display:block}
  .G .mbar{display:flex}
  .G .hero5 > .wrap{grid-template-columns:1fr;min-height:0;padding:28px 20px 0;gap:22px}
  .G .hero5 h1{font-size:clamp(34px,10vw,44px);line-height:1.12}
  .G .hero5 .lead{font-size:15.5px;margin-top:12px;max-width:none}
  .G .hero5 .cta{margin-top:20px;gap:8px}
  .G .hero5 .cta .yb,.G .hero5 .cta .gb{flex:1;justify-content:center;padding:14px 16px;font-size:15px}
  .G .hero5 .cta .ar{display:none}
  .G .hero5 .facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;margin-top:24px;padding-top:20px;border-top:1px solid rgba(255,255,255,.12)}
  .G .hero5 .facts b{font-size:22px}
  .G .wallv{height:340px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;transform:none;margin:0 -20px;width:calc(100% + 40px)}
  .G .wallv .col{animation-duration:30s}
  .G .hero5 .peek{display:none}
  .G .curve{height:36px}
  .G section{padding-block:52px}
  .G .sh{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:20px}
  .G .sh h2{font-size:27px}
  .G .sh a{font-size:14px}
  .G .feat{grid-template-columns:1fr 1fr;gap:10px}
  .G .fc.big{grid-column:span 2}.G .fc.big img{aspect-ratio:16/11;height:auto}
  .G .fc .cap{padding:30px 12px 12px}.G .fc .cap b{font-size:15px}.G .fc.big .cap b{font-size:21px}
  .G .cats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .G .cat{aspect-ratio:3/3.3}
  .G .cat .cap b{font-size:16px}.G .cat .cap small{font-size:11.5px}
  .G .frow{display:flex;overflow-x:auto;gap:10px;padding:2px 20px 14px;margin:0 -20px;scroll-snap-type:x mandatory;scrollbar-width:none}
  .G .frow::-webkit-scrollbar{display:none}
  .G .fr{flex:0 0 42%;scroll-snap-align:start}
  .G .shelf5{display:flex;overflow-x:auto;gap:12px;padding:2px 20px 14px;margin:0 -20px;scroll-snap-type:x mandatory;scrollbar-width:none}
  .G .shelf5::-webkit-scrollbar{display:none}
  .G .bk5{flex:0 0 58%;scroll-snap-align:start}
  .G .craft{grid-template-columns:1fr 1fr;gap:10px}
  .G .craft .lead{grid-column:span 2;padding:20px}
  .G .craft .lead h2{font-size:24px}
  .G .ticket .wrap{gap:16px}
  .G .tk{padding:22px}.G .tk .bal strong{font-size:52px}
  .G .way{grid-template-columns:auto 1fr;padding:12px}
  .G .way .pic{width:64px;height:64px}.G .way .pic img{height:70px}
  .G .way b{font-size:16px}.G .way p{font-size:12.5px}
  .G .way .amt{grid-column:2;justify-self:end;font-size:18px;margin-top:-4px}
  .G .insta .wrap{gap:22px}
  .G .reels{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .G .reel{border-radius:14px}.G .reel .cap{font-size:11px;left:8px;top:8px;padding:3px 8px}
  .G footer{padding-bottom:110px}
  .G .gb,.G .yb{min-height:44px}
  .G .fc:hover,.G .cat:hover,.G .cr:hover,.G .fr:hover,.G .bk5:hover{transform:none}
  html.js .rvs>*{transition-delay:0s!important}
}
@media (max-width:400px){
  .G .hero5 h1{font-size:32px}
  .G .cats{gap:8px}
  .G .fr{flex-basis:46%}
}
/* ===== 우아띵 마켓 ===== */
.G .market{background:#fff;border-block:1px solid var(--sand)}
.G .mk{display:grid;grid-template-columns:1.1fr repeat(4,1fr);gap:14px;align-items:stretch}
.G .mk .lead{background:var(--g8);color:#fff;border-radius:22px;padding:24px;display:grid;align-content:space-between;gap:14px;position:relative;overflow:hidden;box-shadow:var(--hl)}
.G .mk .lead::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(247,201,72,.22) 1.5px,transparent 1.5px);background-size:22px 22px;opacity:.6}
.G .mk .lead > *{position:relative}
.G .mk .lead h2{font-size:28px;line-height:1.15}
.G .mk .lead h2 em{font-style:normal;color:var(--y)}
.G .mk .lead p{color:#D6E3D8;font-size:14.5px;margin-top:8px}
.G .mk .lead .yb{width:max-content}
.G .pd{background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:24px;padding:6px;box-shadow:0 0 0 1px var(--shell);display:block;transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.G .pd:hover{transform:translateY(-8px);box-shadow:0 0 0 1px rgba(20,107,69,.35),0 30px 60px -20px rgba(6,37,26,.35)}
.G .pd .shot{aspect-ratio:1;border-radius:18px;background:var(--sand);display:grid;place-items:center;overflow:hidden;position:relative}
.G .pd .frame{width:64%;aspect-ratio:3/4;background:#fff;padding:6%;box-shadow:0 14px 30px rgba(6,37,26,.18),inset 0 0 0 1px rgba(6,37,26,.08);display:grid;place-items:end center;overflow:hidden;position:relative}
.G .pd .frame::before{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 8px #FAF6EC;pointer-events:none}
.G .pd .frame img{height:88%;object-fit:contain;object-position:bottom}
.G .pd .frame.canvas{background:#E4EFE0;padding:0}
.G .pd .frame.canvas::before{box-shadow:inset 0 0 0 0}
.G .pd .frame.poster{width:70%;background:var(--g8);padding:4%}
.G .pd .frame.poster::before{box-shadow:none}
.G .pd .mobile{position:absolute;inset:0;display:grid;place-items:center}
.G .pd .mobile i{position:absolute;left:50%;top:0;width:2px;height:22%;background:#B7C9BC}
.G .pd .mobile span{position:absolute;top:22%;left:50%;transform:translateX(-50%);width:60%;height:2px;background:#B7C9BC}
.G .pd .mobile img{position:absolute;top:26%;height:38%;object-fit:contain}
.G .pd .mobile img:nth-of-type(1){left:14%;animation:sway 5s var(--ease) infinite}
.G .pd .mobile img:nth-of-type(2){left:40%;top:36%;animation:sway 6s var(--ease) infinite reverse}
.G .pd .mobile img:nth-of-type(3){left:64%;animation:sway 5.5s var(--ease) infinite}
@keyframes sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.G .pd .book{width:66%;aspect-ratio:1;background:#fff;border-radius:6px 14px 14px 6px;box-shadow:-6px 0 0 #E6DFCB,-12px 0 0 #D9D0B5,0 14px 30px rgba(6,37,26,.18);display:grid;place-items:end center;overflow:hidden;padding:8%}
.G .pd .book img{height:82%;object-fit:contain}
.G .pd b{display:block;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:16px;margin:10px 8px 0}
.G .pd small{display:block;color:var(--mute);font-size:12.5px;margin:2px 8px 8px}
.G .pd .go{margin:0 8px 8px;display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--g7)}
.G .pd .go::after{content:"";width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg)}
@media (max-width:980px){.G .mk{grid-template-columns:1fr 1fr 1fr}.G .mk .lead{grid-column:span 3}}
@media (max-width:760px){.G .mk{grid-template-columns:1fr 1fr;gap:10px}.G .mk .lead{grid-column:span 2;padding:20px}.G .mk .lead h2{font-size:24px}.G .pd b{font-size:14.5px}}
.G .pd .shot img{width:100%;height:100%;object-fit:cover;border-radius:18px;transition:transform 1.2s var(--ease)}
.G .pd:hover .shot img{transform:scale(1.05)}
.G .prail{margin-top:28px}
.G .prail-h{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.G .prail-h b{font-size:20px}
.G .prail-h span{font-size:13.5px;color:var(--mute)}
.G .pr{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 14px;scroll-snap-type:x mandatory;scrollbar-width:thin}
.G .pr a{flex:0 0 150px;scroll-snap-align:start;background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:18px;padding:5px;box-shadow:0 0 0 1px var(--shell);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.G .pr a:hover{transform:translateY(-6px);box-shadow:0 0 0 1px rgba(20,107,69,.35),0 22px 40px -18px rgba(6,37,26,.35)}
.G .pr img{width:100%;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:13px}
.G .pr span{display:block;text-align:center;font-size:12.5px;font-weight:600;padding:8px 4px 6px}
@media (max-width:760px){.G .pr a{flex-basis:118px}.G .prail-h{flex-direction:column;gap:2px}}
/* ===== 가로 레일: 스크롤바 숨김 + 더보기 신호 ===== */
.G .pr,.G .frow,.G .shelf5,.G .tabs,.G .tabs2,.G .seg3,.G .sub{scrollbar-width:none;-ms-overflow-style:none;cursor:grab}
.G .pr::-webkit-scrollbar,.G .frow::-webkit-scrollbar,.G .shelf5::-webkit-scrollbar,.G .tabs::-webkit-scrollbar,.G .sub::-webkit-scrollbar{display:none}
.G .rail-w{position:relative}
.G .rail-w .dragging{cursor:grabbing;scroll-snap-type:none}
.G .rail-w .dragging *{pointer-events:none}
.G .rfade{position:absolute;top:0;bottom:0;width:110px;pointer-events:none;z-index:2;transition:opacity .4s var(--ease);opacity:0}
.G .rfade.r{right:-20px;background:linear-gradient(90deg,transparent,var(--rbg) 75%)}
.G .rfade.l{left:-20px;background:linear-gradient(270deg,transparent,var(--rbg) 75%)}
.G .rfade.on{opacity:1}
.G .rcue{position:absolute;right:6px;top:50%;transform:translateY(-50%);z-index:3;width:52px;height:52px;border-radius:50%;border:0;background:var(--y);color:var(--ink);display:grid;place-items:center;box-shadow:0 12px 28px -8px rgba(6,37,26,.45),var(--hl);cursor:pointer;transition:opacity .4s var(--ease),transform .4s var(--ease)}
.G .rcue::before,.G .rcue::after{content:"";position:absolute;width:10px;height:10px;border-top:2.5px solid var(--ink);border-right:2.5px solid var(--ink);transform:rotate(45deg)}
.G .rcue::before{left:15px;animation:chev 1.4s var(--ease) infinite}
.G .rcue::after{left:25px;animation:chev 1.4s var(--ease) infinite .18s}
@keyframes chev{0%{opacity:.25;transform:translateX(-4px) rotate(45deg)}45%{opacity:1;transform:translateX(0) rotate(45deg)}100%{opacity:.25;transform:translateX(4px) rotate(45deg)}}
.G .rcue .ring{position:absolute;inset:-6px;border-radius:50%;border:2px solid var(--y);animation:ring 2s var(--ease) infinite}
@keyframes ring{0%{transform:scale(.8);opacity:.9}100%{transform:scale(1.35);opacity:0}}
.G .rcue.off{opacity:0;pointer-events:none;transform:translateY(-50%) scale(.6)}
.G .rcue.prev{right:auto;left:6px}
.G .rcue.prev::before,.G .rcue.prev::after{border:0;border-bottom:2.5px solid var(--ink);border-left:2.5px solid var(--ink)}
.G .rcue.prev::before{left:25px;animation-name:chevl}.G .rcue.prev::after{left:15px;animation-name:chevl}
@keyframes chevl{0%{opacity:.25;transform:translateX(4px) rotate(45deg)}45%{opacity:1;transform:translateX(0) rotate(45deg)}100%{opacity:.25;transform:translateX(-4px) rotate(45deg)}}
.G .rcue.prev .ring{display:none}
.G .rhint{position:absolute;right:66px;top:50%;transform:translateY(-50%);z-index:3;font-family:"GmarketSans",sans-serif;font-weight:700;font-size:12.5px;background:var(--ink);color:#fff;padding:7px 11px;border-radius:999px;white-space:nowrap;pointer-events:none;transition:opacity .4s var(--ease);box-shadow:0 8px 20px -8px rgba(0,0,0,.4)}
.G .rhint::after{content:"";position:absolute;right:-5px;top:50%;width:10px;height:10px;background:var(--ink);transform:translateY(-50%) rotate(45deg)}
.G .rhint.off{opacity:0}
.G .rdots{display:flex;justify-content:center;gap:6px;margin-top:6px}
.G .rdots i{width:6px;height:6px;border-radius:999px;background:rgba(6,37,26,.18);transition:width .4s var(--ease),background .3s}
.G .rail-w[data-dark] .rdots i{background:rgba(255,255,255,.25)}
.G .rdots i.on{width:22px;background:var(--g7)}
.G .rail-w[data-dark] .rdots i.on{background:var(--y)}
@media (max-width:760px){
  .G .rcue{width:44px;height:44px;right:2px}.G .rcue::before{left:12px}.G .rcue::after{left:21px}
  .G .rcue.prev{display:none}.G .rfade.l{display:none}
  .G .rfade{width:80px}.G .rfade.r{right:-20px}
  .G .rhint{right:54px;font-size:11.5px}
}
@media (prefers-reduced-motion:reduce){.G .rcue::before,.G .rcue::after,.G .rcue .ring{animation:none}}
/* ===== 소셜 로그인 4종 ===== */
.G .sbtn{display:inline-flex;align-items:center;gap:10px;padding-left:8px}
.G .sbtn .prov{display:flex}
.G .sbtn .prov i{width:22px;height:22px;border-radius:50%;border:2px solid var(--y);margin-right:-7px;display:grid;place-items:center;font:700 10px/1 "GmarketSans",sans-serif;box-shadow:0 1px 2px rgba(0,0,0,.15)}
.G .sbtn:hover .prov i{margin-right:-4px}
.G .sbtn .prov i{transition:margin .4s var(--ease)}
.G .p-kakao{background:#FEE500;color:#191919}.G .p-naver{background:#03C75A;color:#fff}.G .p-google{background:#fff;color:#4285F4}.G .p-apple{background:#111;color:#fff}
.G .mnav .sbtn .prov i{border-color:var(--y)}
.G .lm{position:fixed;inset:0;z-index:40;display:none;align-items:center;justify-content:center;padding:20px}
.G .lm.open{display:flex}
.G .lm .bg{position:absolute;inset:0;background:rgba(6,37,26,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.G .lm .box{position:relative;width:min(420px,100%);background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:32px;padding:8px;box-shadow:0 0 0 1px rgba(6,37,26,.08),0 40px 80px -30px rgba(0,0,0,.5);animation:pop .6s var(--ease) both}
@keyframes pop{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}
.G .lm .in{background:#fff;border-radius:26px;padding:28px 24px 22px;box-shadow:var(--hl)}
.G .lm .x{position:absolute;right:18px;top:18px;width:36px;height:36px;border-radius:50%;border:0;background:var(--sand);font-size:18px;line-height:1}
.G .lm .who{display:flex;justify-content:center;margin:-70px 0 6px}
.G .lm .who img{height:120px}
.G .lm h3{font-size:24px;text-align:center;line-height:1.2}
.G .lm h3 em{font-style:normal;color:var(--g7)}
.G .lm p{text-align:center;color:var(--mute);font-size:13.5px;margin-top:8px}
.G .lm .list{display:grid;gap:10px;margin-top:20px}
.G .lm .so{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;height:52px;border-radius:14px;border:0;font-family:"Pretendard",sans-serif;font-weight:600;font-size:15px;padding:0 10px;transition:transform .35s var(--ease),box-shadow .35s var(--ease);opacity:0;transform:translateY(12px)}
.G .lm.open .so{opacity:1;transform:none;transition:opacity .5s var(--ease),transform .5s var(--ease)}
.G .lm.open .so:nth-child(1){transition-delay:.08s}.G .lm.open .so:nth-child(2){transition-delay:.14s}.G .lm.open .so:nth-child(3){transition-delay:.2s}.G .lm.open .so:nth-child(4){transition-delay:.26s}
.G .lm .so:hover{transform:translateY(-2px)!important;box-shadow:0 12px 24px -12px rgba(6,37,26,.4)}
.G .lm .so:active{transform:scale(.98)!important}
.G .lm .so i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font:700 13px/1 "GmarketSans",sans-serif;justify-self:start}
.G .lm .so.kakao{background:#FEE500;color:#191919}.G .lm .so.kakao i{background:#191919;color:#FEE500}
.G .lm .so.naver{background:#03C75A;color:#fff}.G .lm .so.naver i{background:#fff;color:#03C75A}
.G .lm .so.google{background:#fff;color:#1F1F1F;box-shadow:0 0 0 1.5px #DADCE0 inset}.G .lm .so.google i{background:#fff;color:#4285F4;box-shadow:0 0 0 1.5px #DADCE0 inset}
.G .lm .so.apple{background:#111;color:#fff}.G .lm .so.apple i{background:#fff;color:#111}
.G .lm .fine{margin-top:16px;font-size:11.5px;color:var(--mute);text-align:center;line-height:1.6}
.G .lm .fine b{color:var(--g7);font-weight:600}
@media (max-width:760px){.G .sbtn{padding:9px 14px 9px 8px;font-size:14px}.G .sbtn .prov i{width:19px;height:19px;font-size:9px}.G .lm .who img{height:100px}}
/* 로고 심볼: 다띵이 "우아!" 표정, 글자와 세로 중앙 정렬 */
.G .logo{gap:8px;align-items:center}
.G .logo .sym{width:44px;height:44px;object-fit:contain;transform-origin:50% 60%;animation:peek 6s var(--ease) infinite}
@keyframes peek{0%,80%,100%{transform:rotate(0)}86%{transform:rotate(-10deg) translateY(-2px)}93%{transform:rotate(6deg)}}
.G .logo:hover .sym{animation:none;transform:rotate(-10deg) translateY(-2px) scale(1.08)}
.G .nav.on .logo .sym{width:38px;height:38px}
@media (max-width:760px){.G .logo{gap:6px}.G .logo .sym{width:38px;height:38px}}
@media (prefers-reduced-motion:reduce){.G .logo .sym{animation:none}}
.G .stage5{position:relative;height:500px}
.G .stage5 .p{position:absolute;width:240px;background:#fff;padding:6px;border-radius:12px;box-shadow:0 30px 60px -20px rgba(0,0,0,.55);transition:transform .8s var(--ease)}
.G .stage5 .p1{left:0;top:70px;transform:rotate(-9deg)}
.G .stage5 .p2{left:50%;top:20px;transform:translateX(-50%) rotate(2deg);z-index:2}
.G .stage5 .p3{right:0;top:80px;transform:rotate(9deg)}
.G .stage5:hover .p1{transform:rotate(-12deg) translateX(-10px)}
.G .stage5:hover .p3{transform:rotate(12deg) translateX(10px)}
.G .stage5 .k{position:absolute;left:50%;bottom:0;transform:translateX(-40%);width:200px;z-index:3;animation:bob 4s var(--ease) infinite}
.G .stage5 .floor{position:absolute;left:14%;right:14%;bottom:-2px;height:26px;border-radius:50%;background:rgba(0,0,0,.35);filter:blur(6px);z-index:1}
@media (max-width:760px){.G .stage5{height:300px;margin-top:6px}.G .stage5 .p{width:40%}.G .stage5 .p1{top:20px;left:2%}.G .stage5 .p2{top:0}.G .stage5 .p3{top:26px;right:2%}.G .stage5 .k{width:26%;left:auto;right:4%;transform:none}.G .stage5 .floor{left:auto;right:6%;width:22%}.G .hero5 .cta .gb.light{color:#fff;border-color:#fff}}
/* ===== 도안 목록 ===== */
.G .ph{background:var(--g8);color:#fff;position:relative;overflow:hidden}
.G .ph::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 90% 100%,rgba(20,107,69,.7),transparent 50%)}
.G .ph > .wrap{position:relative;display:flex;align-items:center;gap:22px;padding-top:22px;padding-bottom:14px}
.G .ph .mascot{height:84px;order:0;margin:-6px 0 -10px}
.G .ph .txt{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;flex:1;min-width:0}
.G .crumb{display:none}
.G .ph h1{font-size:clamp(26px,3vw,34px);line-height:1.1;display:flex;align-items:baseline;gap:10px}
.G .ph h1 small{font-family:"GmarketSans";font-weight:700;font-size:13px;color:var(--ink);background:var(--y);border-radius:999px;padding:4px 10px 3px;line-height:1}
.G .ph p{margin:0;color:#B7C9BC;font-size:14px;max-width:none}
.G .ph > .wrap.tabsw{display:block;padding-top:0;padding-bottom:0}
.G .tabsw{position:relative}
.G .rail-w{min-width:0;max-width:100%}
.G .rail-w[data-compact] .rcue{width:38px;height:38px;right:0;top:50%}
.G .rail-w[data-compact] .rcue::before{left:10px;width:8px;height:8px}.G .rail-w[data-compact] .rcue::after{left:18px;width:8px;height:8px}
.G .rail-w[data-compact] .rhint,.G .rail-w[data-compact] .rdots{display:none}
.G .rail-w[data-compact] .rfade{width:80px}
.G .sub-w{flex:1 1 auto;min-width:0}
.G .tabs{position:relative;display:flex;gap:6px;overflow-x:auto;padding:4px 0 18px;scrollbar-width:none;}
.G .tabs::-webkit-scrollbar{display:none}
.G .tabs a{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:rgba(255,255,255,.08);color:#E8EFEA;font-size:14px;font-weight:600;white-space:nowrap;transition:background .3s,transform .4s var(--ease)}
.G .tabs a img{width:26px;height:26px;border-radius:50%;object-fit:cover}
.G .tabs a:hover{background:rgba(255,255,255,.16);transform:translateY(-2px)}
.G .tabs a.on{background:var(--y);color:var(--ink)}
.G .tabs a small{font-weight:500;opacity:.7;font-size:12px}
.G .tabs a.on small{opacity:.8}
.G .ph > .wrap.tabsw{display:block;padding-top:0;padding-bottom:0}
.G .tabsw{position:relative}
.G .rail-w{min-width:0;max-width:100%}


.G .bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:24px 0 18px}
.G .sub{display:flex;gap:6px;flex-wrap:wrap}
.G .sub a{font-size:13.5px;padding:7px 12px;border-radius:999px;background:transparent;font-weight:500;color:#4B5A52;transition:transform .3s var(--ease),background .2s}
.G .sub a:hover{transform:translateY(-2px)}
.G .sub a.on{background:#fff;color:var(--ink);box-shadow:0 0 0 1px rgba(6,37,26,.08),0 6px 16px -10px rgba(6,37,26,.3);font-weight:600}
.G .bar .sp{flex:1}
.G .seg{display:flex;background:#fff;border-radius:999px;padding:4px;box-shadow:0 0 0 1px var(--shell)}
.G .seg button{border:0;background:transparent;padding:7px 14px;border-radius:999px;font:600 13px "Pretendard";color:var(--mute)}
.G .seg button.on{background:var(--ink);color:#fff}
.G .sort{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--mute);background:#fff;border-radius:999px;padding:8px 14px;box-shadow:0 0 0 1px var(--shell)}
.G .sort b{color:var(--ink);font-weight:600}
.G .cnt-l{font-size:13.5px;color:var(--mute)}
.G .cnt-l b{color:var(--ink);font-family:"GmarketSans";font-size:15px}

.G .grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.G .wc{position:relative;background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:22px;padding:6px;box-shadow:0 0 0 1px var(--shell);display:block;transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.G .wc:hover{transform:translateY(-8px);box-shadow:0 0 0 1px rgba(20,107,69,.35),0 30px 60px -20px rgba(6,37,26,.35)}
.G .wc .th{position:relative;border-radius:16px;overflow:hidden;aspect-ratio:210/297;background:#fff}
.G .wc .th img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform 1.2s var(--ease)}
.G .wc:hover .th img{transform:scale(1.05)}
.G .wc .th .wm{position:absolute;inset:0;display:grid;place-items:center;font-family:"GmarketSans";font-weight:700;font-size:26px;color:rgba(6,37,26,.12);transform:rotate(-18deg);letter-spacing:.2em;pointer-events:none}
.G .wc .badge{position:absolute;left:12px;top:12px;font-family:"GmarketSans";font-weight:700;font-size:12px;background:#fff;color:var(--g8);border-radius:999px;padding:5px 10px;box-shadow:0 2px 8px rgba(6,37,26,.15)}
.G .wc .badge.h{background:var(--y);color:var(--ink)}
.G .wc .badge.h::before{content:"";display:inline-block;width:10px;height:10px;margin-right:4px;background:#E8B400;clip-path:path("M5 9 L1.2 5.2 A2.2 2.2 0 0 1 5 2.2 A2.2 2.2 0 0 1 8.8 5.2 Z");vertical-align:-1px}
.G .wc .like{position:absolute;right:12px;top:12px;width:34px;height:34px;border-radius:50%;background:#fff;border:0;display:grid;place-items:center;box-shadow:0 2px 8px rgba(6,37,26,.15);opacity:0;transition:opacity .3s,transform .3s var(--ease)}
.G .wc:hover .like{opacity:1}
.G .like i{width:14px;height:14px;background:#D9D0B5;clip-path:path("M7 13 L1.6 7.4 A3.2 3.2 0 0 1 7 3.2 A3.2 3.2 0 0 1 12.4 7.4 Z");transition:background .2s,transform .3s var(--ease)}
.G .like:hover i{background:#E0455B;transform:scale(1.15)}
.G .wc .t{padding:12px 8px 6px}
.G .wc .t b{display:block;font-family:"GmarketSans";font-weight:700;font-size:15px;line-height:1.3}
.G .wc .t small{display:block;color:var(--mute);font-size:12.5px;margin-top:3px}
.G .wc .dl{margin:8px 8px 8px;width:calc(100% - 16px);border:0;background:var(--g8);color:#fff;border-radius:12px;padding:10px;font-family:"GmarketSans";font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .3s,transform .3s var(--ease)}
.G .wc .dl:hover{background:var(--g7)}
.G .wc .dl:active{transform:scale(.98)}
.G .wc .dl.lock{background:var(--y);color:var(--ink)}
.G .more{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 0 10px}
.G .more .prog{position:static;width:220px;height:4px;background:#E6DFCB;border-radius:999px;transform:none;overflow:hidden}
.G .more .prog i{display:block;height:100%;width:8%;background:var(--g7);border-radius:999px}
.G .more small{color:var(--mute);font-size:13px}
@media (max-width:980px){.G .grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){
  .G .ph > .wrap{gap:12px;padding-top:16px;padding-bottom:10px;align-items:center}.G .ph .mascot{height:64px;margin:-4px 0 -8px}.G .ph .txt{gap:4px 10px}
  .G .ph h1{font-size:24px;gap:8px}.G .ph h1 small{font-size:12px;padding:3px 8px 2px}.G .ph p{font-size:13px;width:100%}
  .G .tabs{padding:2px 0 14px}.G .tabs a{padding:7px 12px 7px 7px;font-size:13px}
  .G .bar{padding:16px 0 12px;gap:8px}.G .sub{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;width:100%;padding-bottom:2px}.G .sub::-webkit-scrollbar{display:none}.G .sub a{flex:0 0 auto}
  .G .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .G .wc .like{opacity:1}.G .wc .t b{font-size:14px}.G .wc .dl{font-size:13px;padding:9px}
  .G .cnt-l{width:100%}
}
/* ===== 목록 헤드 v3: 크림 + 표지 타일 탭 ===== */
.G .ph2{background:var(--cream);border-bottom:1px solid var(--sand)}
.G .ph2 .hd{display:grid;grid-template-columns:1fr auto;align-items:center;gap:30px;padding:30px 0 6px}
.G .ph2 .crumb{font-size:13px;color:var(--mute);display:flex;gap:8px;margin-bottom:8px}
.G .ph2 .crumb b{color:var(--g7);font-weight:600}
.G .ph2 h1{font-size:clamp(30px,3.6vw,42px);line-height:1.1}
.G .ph2 h1 em{font-style:normal;font-family:"Pretendard";font-weight:600;font-size:15px;color:var(--g7);background:#E4EFE0;border-radius:999px;padding:5px 12px;vertical-align:middle;margin-left:6px}
.G .ph2 p{margin-top:10px;color:#3F4D45;font-size:15px;max-width:52ch}
.G .ph2 .fan{position:relative;width:200px;height:120px}
.G .ph2 .fan img{position:absolute;bottom:0;width:86px;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:8px;background:#fff;padding:3px;box-shadow:0 12px 26px -10px rgba(6,37,26,.35),0 0 0 1px var(--shell)}
.G .ph2 .fan img:nth-child(1){left:0;transform:rotate(-10deg)}
.G .ph2 .fan img:nth-child(2){left:57px;transform:translateY(-8px);z-index:1}
.G .ph2 .fan img:nth-child(3){left:114px;transform:rotate(10deg)}
.G .tabs2{display:flex;gap:10px;overflow-x:auto;padding:16px 2px 22px;scrollbar-width:none;cursor:grab}
.G .tabs2::-webkit-scrollbar{display:none}
.G .tabs2 a{flex:0 0 118px;background:#fff;border-radius:16px;padding:6px 6px 10px;text-align:center;box-shadow:0 0 0 1px var(--shell);transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.G .tabs2 a .im{display:block;border-radius:11px;overflow:hidden;aspect-ratio:4/3;background:var(--sand)}
.G .tabs2 a .im img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .8s var(--ease)}
.G .tabs2 a b{display:block;font-family:"GmarketSans";font-weight:700;font-size:13.5px;margin-top:8px;line-height:1.2}
.G .tabs2 a small{display:block;font-size:11.5px;color:var(--mute);margin-top:2px}
.G .tabs2 a:hover{transform:translateY(-4px);box-shadow:0 0 0 1px rgba(20,107,69,.35),0 18px 30px -16px rgba(6,37,26,.35)}
.G .tabs2 a:hover .im img{transform:scale(1.06)}
.G .tabs2 a.on{background:var(--g8);color:#fff;box-shadow:0 0 0 2px var(--y),0 14px 30px -14px rgba(6,37,26,.6)}
.G .tabs2 a.on small{color:#B7C9BC}
.G .tabs2 a.on .im{box-shadow:inset 0 0 0 2px var(--y)}
.G .rail-w[data-compact] .rcue{top:calc(50% - 4px)}
@media (max-width:760px){
  .G .ph2 .hd{grid-template-columns:1fr;gap:14px;padding:20px 0 4px}
  .G .ph2 .fan{display:none}
  .G .ph2 h1{font-size:28px}.G .ph2 p{font-size:14px}
  .G .tabs2{gap:8px;padding:12px 2px 16px}.G .tabs2 a{flex-basis:96px;padding:5px 5px 8px}.G .tabs2 a b{font-size:12.5px}
}
/* ===== 목록 헤드 v5: 초록무대 + Soft Structuralism ===== */
.G .ph3{background:var(--g8);color:#fff;position:relative;overflow:hidden}
.G .ph3::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 85% 30%,rgba(20,107,69,.7),transparent 55%);pointer-events:none}
.G .ph3 > .wrap{position:relative}
.G .ph3 .hd{padding:48px 0 34px;max-width:600px;min-height:250px}
.G .eyebrow3{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--y);font-weight:600}
.G .ph3 h1{font-size:clamp(38px,5.2vw,58px);line-height:1;letter-spacing:-.03em;margin-top:12px;color:#fff}
.G .lead3{margin-top:16px;font-size:16.5px;line-height:1.6;color:#D6E3D8;max-width:46ch}
.G .lead3 span{display:block;margin-top:8px;font-size:13.5px;color:#9DB8A8}
.G .seg3-w{padding-bottom:26px;position:relative;z-index:3}
.G .seg3{display:flex;gap:4px;overflow-x:auto;padding:5px;background:rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:999px;box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 0 0 1px rgba(255,255,255,.08);scrollbar-width:none;cursor:grab;width:max-content;max-width:100%}
.G .seg3::-webkit-scrollbar{display:none}
.G .seg3 a{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;padding:11px 18px;border-radius:999px;font-size:14.5px;font-weight:600;color:#E8EFEA;white-space:nowrap;transition:background .5s var(--ease),color .5s var(--ease),transform .5s var(--ease)}
.G .seg3 a small{font-size:12px;font-weight:500;color:#9DB8A8;font-variant-numeric:tabular-nums}
.G .seg3 a:hover{background:rgba(255,255,255,.1)}
.G .seg3 a.on{background:var(--y);color:var(--ink);box-shadow:0 10px 24px -12px rgba(0,0,0,.6),inset 0 1px 0 #FFE9A6}
.G .seg3 a.on small{color:#6B5A12}
.G .seg3 a:active{transform:scale(.97)}
.G .rail-w[data-compact] .rcue{top:50%}
.G .rail-w[data-compact] .rfade.r{right:-20px;border-radius:0 999px 999px 0}
@media (max-width:760px){.G .ph3 .hd{padding:28px 0 20px}.G .ph3 h1{font-size:36px}.G .lead3{font-size:15px}.G .seg3{width:100%}.G .seg3 a{padding:9px 14px;font-size:13.5px}.G .seg3-w{padding-bottom:18px}}
.G .stack3{position:absolute;right:0;top:26px;width:400px;height:200px;pointer-events:none}
.G .stack3 img{position:absolute;bottom:0;width:128px;aspect-ratio:210/297;object-fit:cover;object-position:top;background:#fff;padding:5px;border-radius:12px;box-shadow:0 30px 60px -20px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.15);transition:transform .8s var(--ease)}
.G .stack3 img:nth-child(1){left:0;transform:rotate(-12deg) translateY(18px);opacity:.75}
.G .stack3 img:nth-child(2){left:86px;transform:rotate(-4deg) translateY(4px);opacity:.9}
.G .stack3 img:nth-child(3){left:172px;transform:rotate(3deg) translateY(-6px);z-index:2}
.G .stack3 img:nth-child(4){left:258px;transform:rotate(11deg) translateY(14px);opacity:.85}
.G .ph3:hover .stack3 img:nth-child(1){transform:rotate(-14deg) translate(-8px,18px)}
.G .ph3:hover .stack3 img:nth-child(4){transform:rotate(13deg) translate(8px,14px)}
.G .ph3 .hd{position:relative;z-index:1}
@media (max-width:980px){.G .stack3{width:320px}.G .stack3 img{width:120px}.G .stack3 img:nth-child(2){left:70px}.G .stack3 img:nth-child(3){left:140px}.G .stack3 img:nth-child(4){left:210px}}
@media (max-width:760px){.G .ph3 > .wrap{display:flex;flex-direction:column}.G .ph3 .hd{min-height:0;padding:26px 0 0;order:1}.G .stack3{position:relative;order:2;top:auto;right:auto;width:auto;height:130px;margin:14px -20px 0;overflow:hidden}.G .seg3-w{order:3}.G .stack3 img{width:88px;bottom:-22px;opacity:1}.G .stack3 img:nth-child(1){left:4%}.G .stack3 img:nth-child(2){left:27%}.G .stack3 img:nth-child(3){left:50%}.G .stack3 img:nth-child(4){left:73%}.G .seg3-w{padding-top:14px;padding-bottom:16px}}
/* ===== polish pass 2 ===== */
.G .wc .t small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.G .wc .badge{box-shadow:0 2px 8px rgba(6,37,26,.15),var(--hl)}
.G .seg button{transition:background .3s,color .3s}
.G .sort{cursor:pointer}
.G .more .gb{background:#fff}
.G footer{padding-block:48px 40px}
.G footer .lic{max-width:46ch}
/* ===== 도안 상세 ===== */
.G .dt{background:var(--cream)}
.G .dt .crumb{font-size:13px;color:var(--mute);display:flex;gap:8px;padding:22px 0 18px}
.G .dt .crumb b{color:var(--g7);font-weight:600}
.G .dt .wrap2{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:start;padding-bottom:70px}
.G .pv{position:sticky;top:90px}
.G .pv .frame{background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:28px;padding:8px;box-shadow:0 0 0 1px var(--shell),0 40px 80px -40px rgba(6,37,26,.4)}
.G .pv .paper{position:relative;border-radius:22px;overflow:hidden;background:#fff;aspect-ratio:210/297}
.G .pv .paper img{width:100%;height:100%;object-fit:cover;object-position:top}
.G .pv .wm{position:absolute;inset:0;display:grid;place-items:center;font-family:"GmarketSans";font-weight:700;font-size:44px;color:rgba(6,37,26,.1);transform:rotate(-18deg);letter-spacing:.25em;pointer-events:none}
.G .pv .zoom{position:absolute;right:14px;bottom:14px;background:#fff;border:0;border-radius:999px;padding:8px 14px;font:600 12.5px "Pretendard";color:var(--ink);box-shadow:0 4px 14px rgba(6,37,26,.2)}
.G .pv .thumbs{display:flex;gap:10px;margin-top:14px}
.G .pv .thumbs img{width:64px;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:10px;background:#fff;box-shadow:0 0 0 1px var(--shell);opacity:.6;cursor:pointer;transition:opacity .3s,transform .3s var(--ease)}
.G .pv .thumbs img.on,.G .pv .thumbs img:hover{opacity:1;transform:translateY(-3px)}
.G .info h1{font-size:clamp(28px,3.4vw,40px);line-height:1.15;letter-spacing:-.02em}
.G .info .tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.G .info .tags span{font-size:12.5px;padding:6px 12px;border-radius:999px;background:#fff;box-shadow:0 0 0 1px var(--shell);color:#3F4D45;font-weight:500}
.G .info .tags .free{background:var(--y);color:var(--ink);font-weight:700;box-shadow:none}
.G .info .tags .hh{background:var(--y);color:var(--ink);font-weight:700;box-shadow:none}
.G .dlbox{margin-top:22px;background:#fff;border-radius:24px;padding:20px;box-shadow:0 0 0 1px var(--shell),var(--hl)}
.G .dlbox .row{display:flex;gap:10px;flex-wrap:wrap}
.G .dlbox .yb{flex:1;justify-content:center;padding:15px 22px}
.G .dlbox .gb{flex:1;justify-content:center;padding:13px 20px}
.G .dlbox small{display:block;margin-top:12px;font-size:12.5px;color:var(--mute);line-height:1.6}
.G .dlbox .meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--sand)}
.G .dlbox .meta div{font-size:12px;color:var(--mute)}
.G .dlbox .meta b{display:block;font-family:"GmarketSans";font-size:15px;color:var(--ink);margin-bottom:2px}
.G .desc{margin-top:28px;display:grid;gap:22px}
.G .desc h3{font-family:"GmarketSans";font-weight:700;font-size:17px;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.G .desc h3::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--y)}
.G .desc p{font-size:15.5px;line-height:1.7;color:#2A3A33}
.G .desc ol{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.G .desc ol li{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;font-size:15px;line-height:1.55;color:#2A3A33}
.G .desc ol li i{width:28px;height:28px;border-radius:50%;background:var(--g8);color:#fff;display:grid;place-items:center;font:700 13px "GmarketSans";font-style:normal}
.G .desc .prep{display:flex;gap:8px;flex-wrap:wrap}
.G .desc .prep span{font-size:13.5px;padding:8px 14px;border-radius:12px;background:#fff;box-shadow:0 0 0 1px var(--shell)}
.G .share{display:flex;gap:8px;margin-top:22px;align-items:center;font-size:13px;color:var(--mute)}
.G .rel{background:#fff;border-top:1px solid var(--sand)}
.G .rel .grid{grid-template-columns:repeat(5,1fr)}
@media (max-width:980px){.G .dt .wrap2{gap:28px}.G .rel .grid{grid-template-columns:repeat(3,minmax(0,1fr))}.G .dlbox .row{flex-direction:column}.G .dlbox .meta{grid-template-columns:repeat(3,auto);justify-content:space-between}}
@media (max-width:760px){.G .dt .wrap2{grid-template-columns:minmax(0,1fr);gap:26px}.G .pv{position:static}.G .dlbox .row{flex-direction:row}}
@media (max-width:760px){.G .dt .crumb{padding:14px 0 12px}.G .dt .wrap2{padding-bottom:40px}.G .pv .frame{padding:6px;border-radius:22px}.G .pv .paper{border-radius:16px}.G .pv .wm{font-size:30px}.G .info h1{font-size:26px}.G .dlbox{padding:16px;border-radius:20px}.G .dlbox .row{flex-direction:column}.G .dlbox .meta b{font-size:14px}.G .rel .grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.G .dl .hi{display:inline-block;width:13px;height:13px;margin-right:6px;background:#C9342A;clip-path:path("M6.5 12 L1.5 7 A2.9 2.9 0 0 1 6.5 3 A2.9 2.9 0 0 1 11.5 7 Z");vertical-align:-1px}
.G .dl.again{background:#fff;color:var(--g8);box-shadow:inset 0 0 0 2px var(--g8)}
/* ===== 상세 v2: 카카오·평점·미리보기 상태·공유 아이콘 ===== */
.note .nb{border:0;background:rgba(255,255,255,.12);color:#fff;border-radius:999px;padding:2px 10px;margin:0 2px;font:600 11.5px "Pretendard";cursor:pointer}
.note .nb.on{background:#FFD25F;color:#1F1B18}
.G .kb{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;background:#FEE500;color:#191919;font:700 16px "GmarketSans";padding:13px 20px;transition:transform .35s var(--ease),filter .3s}
.G .kb:hover{filter:brightness(.96);transform:translateY(-1px)}
.G .kb:active{transform:scale(.98)}
.G .kb .ico-k{display:block;width:22px;height:22px;fill:#191919}
.G .dlbox .row{flex-wrap:nowrap}
.G .dlbox .yb{white-space:nowrap}
.G .stars{position:relative;display:inline-flex;gap:1px;margin-right:6px;vertical-align:-2px}
.G .stars svg{width:14px;height:14px;fill:#E6DFCB}
.G .rt .stars svg{fill:#F2B705}
.G .rt b{display:flex;align-items:center;gap:6px;white-space:nowrap}
.G .rt .stars{margin:0}
.G .single{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.G .single span{font-size:12.5px;color:#3F4D45;background:#fff;border-radius:999px;padding:7px 12px;box-shadow:0 0 0 1px var(--shell)}
.G .single .pg{background:var(--g8);color:#fff;box-shadow:none;font-weight:600}
.G .thumbs{align-items:center}
.G .thumbs .pgc{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--mute);font-variant-numeric:tabular-nums}
.G .share{gap:10px}
.G .share > span{font-size:13px;color:var(--mute);margin-right:2px}
.G .si{position:relative;width:42px;height:42px;padding:0;line-height:0;border:0;border-radius:50%;background:#fff;box-shadow:0 0 0 1px var(--shell);display:grid;place-items:center;color:var(--ink);transition:transform .35s var(--ease),box-shadow .35s}
.G .si svg{display:block;width:19px;height:19px;margin:auto}
.G .si.k{background:#FEE500;box-shadow:none}.G .si.k svg{fill:#191919;width:21px;height:21px;transform:translate(0,1px)}
.G .si.ig{background:radial-gradient(circle at 30% 107%,#fdf497 0%,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285AEB 90%);color:#fff;box-shadow:none}
.G .si:hover{transform:translateY(-3px);box-shadow:0 10px 20px -10px rgba(6,37,26,.45)}
.G .si::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);background:var(--ink);color:#fff;font:600 11.5px "Pretendard";padding:5px 9px;border-radius:8px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s var(--ease)}
.G .si:hover::after{opacity:1;transform:translate(-50%,0)}
.G .rm{position:fixed;inset:0;z-index:40;display:none;align-items:center;justify-content:center;padding:20px}
.G .rm.open{display:flex}
.G .rm .bg{position:absolute;inset:0;background:rgba(6,37,26,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.G .rm .box{position:relative;width:min(440px,100%);background:linear-gradient(180deg,#fff,#F7F3E8);border-radius:32px;padding:8px;box-shadow:0 40px 80px -30px rgba(0,0,0,.5);animation:pop .6s var(--ease) both}
.G .rm .in{background:#fff;border-radius:26px;padding:28px 24px 22px;text-align:center}
.G .rm .x{position:absolute;right:18px;top:18px;width:34px;height:34px;border-radius:50%;border:0;background:var(--sand);font-size:17px;line-height:1;color:var(--ink);padding:0}
.G .rm h3{font-size:24px;line-height:1.25}
.G .rm .k{font-size:13px;color:var(--mute);margin-top:6px}
.G .rm .prev{display:grid;grid-template-columns:104px 1fr;gap:16px;align-items:center;text-align:left;margin-top:20px;padding:12px;border-radius:20px;background:var(--cream)}
.G .rm .pimg{background:#fff;border-radius:12px;padding:4px;box-shadow:0 0 0 1px var(--shell),0 10px 22px -14px rgba(6,37,26,.4)}
.G .rm .pimg img{display:block;width:100%;aspect-ratio:210/297;object-fit:cover;object-position:top;border-radius:9px}
.G .rm .pk{display:inline-block;font-size:11.5px;font-weight:600;color:var(--g7);background:#E4EFE0;border-radius:999px;padding:3px 9px}
.G .rm .pt b{display:block;font-family:"GmarketSans";font-weight:700;font-size:18px;margin-top:8px;line-height:1.25}
.G .rm .pt small{display:block;font-size:12.5px;color:var(--mute);margin-top:4px}
.G .rate{display:flex;justify-content:center;gap:4px;margin-top:22px}
.G .rate button{border:0;background:transparent;padding:4px;cursor:pointer;line-height:0;transition:transform .3s var(--ease)}
.G .rate svg{width:40px;height:40px;fill:#EFEADB;stroke:#DCD3BA;stroke-width:1;transition:fill .2s,stroke .2s}
.G .rate button.on svg{fill:#F2B705;stroke:#E0A800}
.G .rate button:hover{transform:scale(1.1)}
.G .rate button.pop{animation:starpop .45s var(--ease)}
@keyframes starpop{40%{transform:scale(1.3) rotate(-8deg)}}
.G .rl{font-size:14px;color:var(--mute);margin-top:6px;min-height:21px;font-weight:600}
.G .rl.on{color:var(--ink)}
.G .rm .chips2{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:14px}
.G .rm .chips2 button{border:0;background:#fff;border-radius:999px;padding:8px 13px;font:500 13px "Pretendard";color:#3F4D45;box-shadow:inset 0 0 0 1.5px #E6DFCB;transition:background .25s,color .25s,box-shadow .25s}
.G .rm .chips2 button:hover{box-shadow:inset 0 0 0 1.5px var(--g7)}
.G .rm .chips2 button.on{background:#E4EFE0;color:var(--g8);box-shadow:inset 0 0 0 1.5px var(--g7);font-weight:600}
.G .rm .go{width:100%;justify-content:center;margin-top:20px;padding:15px}
.G .rm .go[disabled]{background:#EFEADB;color:#A9A08A;box-shadow:none;pointer-events:none}
.G .rm .go[disabled] .ar{background:rgba(0,0,0,.05)}
.G .rm .fine{display:block;margin-top:12px;font-size:11.5px;color:var(--mute);line-height:1.55}
@media (max-width:760px){.G .rm{padding:12px;align-items:flex-end}.G .rm .box{border-radius:28px}.G .rm .in{padding:24px 18px 18px}.G .rm h3{font-size:21px}.G .rm .prev{grid-template-columns:88px 1fr;gap:12px}.G .rm .pt b{font-size:16px}.G .rate svg{width:36px;height:36px}.G .rm .chips2 button{font-size:12.5px;padding:7px 11px}}
.G .toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:45;transform:translate(-50%,150%);background:var(--ink);color:#fff;font:600 14px "Pretendard";padding:12px 18px;border-radius:999px;box-shadow:0 20px 40px -16px rgba(0,0,0,.5);transition:transform .5s var(--ease);white-space:nowrap}
.G .toast.show{transform:translate(-50%,0)}
@media (max-width:760px){.G .dlbox .row{flex-direction:row;gap:8px}.G .dlbox .yb,.G .kb{padding:13px 12px;font-size:15px}.G .dlbox .yb .ar{display:none}.G .rate svg{width:34px;height:34px}.G .rm h3{font-size:21px}}
.G .share .si{padding:0;display:flex;align-items:center;justify-content:center}
.G .tags-w{margin-top:14px}
.G .info .tags{flex-wrap:nowrap;overflow-x:auto;margin-top:0;padding:2px 2px 4px;scrollbar-width:none;cursor:grab}
.G .info .tags::-webkit-scrollbar{display:none}
.G .info .tags span{flex:0 0 auto;white-space:nowrap}
.G .pv .paper{cursor:zoom-in}
.G .lbx{position:fixed;inset:0;z-index:50;display:none;align-items:center;justify-content:center;padding:24px 24px 60px}
.G .lbx.open{display:flex}
.G .lbx .bg{position:absolute;inset:0;background:rgba(6,20,14,.86);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.G .lbx .stage{position:relative;margin:0;height:min(88vh,1100px);aspect-ratio:210/297;max-width:100%;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 40px 80px -20px rgba(0,0,0,.6);animation:pop .5s var(--ease) both}
.G .lbx .stage img{width:100%;height:100%;object-fit:contain;display:block}
.G .lbx .stage .wm{position:absolute;inset:0;display:grid;place-items:center;font:700 60px "GmarketSans";color:rgba(6,37,26,.08);transform:rotate(-20deg);letter-spacing:.25em;pointer-events:none}
.G .lx{position:absolute;right:20px;top:20px;width:44px;height:44px;border:0;border-radius:50%;background:#fff;font-size:22px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;color:var(--ink)}
.G .lnav{position:absolute;top:50%;width:52px;height:52px;margin-top:-26px;border:0;border-radius:50%;background:var(--y);padding:0;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 24px -8px rgba(0,0,0,.5)}
.G .lnav::before{content:"";width:11px;height:11px;border-top:3px solid var(--ink);border-right:3px solid var(--ink);transform:rotate(45deg) translate(-2px,2px)}
.G .lnav.p{left:24px}.G .lnav.p::before{transform:rotate(-135deg) translate(-2px,2px)}
.G .lnav.n{right:24px}
.G .lcap{position:absolute;left:0;right:0;bottom:18px;text-align:center;color:#D6E3D8;font-size:13px}
@media (max-width:760px){.G .lbx{padding:12px 12px 56px}.G .lbx .stage{height:auto;width:100%}.G .lnav{width:44px;height:44px;margin-top:-22px}.G .lnav.p{left:8px}.G .lnav.n{right:8px}.G .lx{right:12px;top:12px}}
.G .dt .wrap2 > *{min-width:0}
.G .dt .wrap2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
@media (max-width:760px){.G .dt .wrap2{grid-template-columns:minmax(0,1fr)}}
/* ===== header tablet ===== */
.G .nav .wrap{flex-wrap:nowrap}
.G .logo,.G .menu a,.G .hp,.G .nav .yb{white-space:nowrap;flex-shrink:0}
.G .menu{flex-shrink:1;min-width:0}
@media (max-width:1080px){
  .G .menu,.G .nav .hp,.G .nav .yb.sm{display:none}
  .G .ham{display:block}
  .G .nav .wrap{height:62px}
}
/* ===== 로그인 전·후 헤더 ===== */
.note .authsw{display:inline-flex;align-items:center;gap:3px;margin-right:2px}
.note .authsw button{border:0;background:rgba(255,255,255,.12);color:#fff;border-radius:999px;padding:2px 10px;font:600 11.5px "Pretendard";cursor:pointer}
body[data-auth="out"] .note .authsw [data-auth="out"],body[data-auth="in"] .note .authsw [data-auth="in"]{background:#FFD25F;color:#1F1B18}
.G .mebtn{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.1);border-radius:999px;padding:4px 14px 4px 4px;color:#fff;font:700 14px "GmarketSans";white-space:nowrap;flex-shrink:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);transition:background .3s}
.G .mebtn:hover{background:rgba(255,255,255,.18)}
.G .mebtn img{width:32px;height:32px;border-radius:50%;background:#FAF6EC;object-fit:contain;padding:2px}
.G .mebtn.mob{display:none;padding:3px;margin-left:auto}
.G .mebtn.mob img{width:34px;height:34px}
.G .mme{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.08);border-radius:18px;padding:12px;color:#fff}
.G .mme img{width:48px;height:48px;border-radius:50%;background:#FAF6EC;object-fit:contain;padding:3px}
.G .mme b{display:block;font:700 16px "GmarketSans"}
.G .mme small{font-size:13px;color:#B7C9BC}
body[data-auth="out"] .G .hp,body[data-auth="out"] .G .mebtn,body[data-auth="out"] .G .mme{display:none!important}
body[data-auth="in"] .G .sbtn{display:none!important}
@media (max-width:1080px){body[data-auth="in"] .G .mebtn.mob{display:inline-flex}.G .nav .mebtn:not(.mob){display:none}}
/* ===== 프로필 원 빛 돌기 ===== */
.G .avr{position:relative;display:inline-flex;border-radius:50%;flex-shrink:0}
.G .avr::after{content:"";position:absolute;inset:-3px;border-radius:50%;pointer-events:none;opacity:0;
  background:conic-gradient(from 0deg,transparent 0deg,transparent 250deg,rgba(247,201,72,.35) 290deg,#F7C948 335deg,#FFF6CC 352deg,transparent 360deg);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px))}
.G .avr.glow::after{animation:ringspin 1.5s cubic-bezier(.45,.05,.25,1) 1 both}
@keyframes ringspin{0%{opacity:0;transform:rotate(-90deg)}4%{opacity:1}94%{opacity:1}100%{opacity:0;transform:rotate(270deg)}}
.G .avr.glow{animation:avpop .7s var(--ease) 9.4s 1 both}
@keyframes avpop{40%{transform:scale(1.08)}}
.G .mebtn .avr img,.G .mme .avr img{display:block}
@media (prefers-reduced-motion:reduce){.G .avr.glow::after,.G .avr.glow{animation:none}}
/* btn optical center */
.G .yb,.G .gb{line-height:1.2}
.G .yb:has(.ar),.G .gb:has(.ar){padding-left:22px;padding-right:8px}
.G .yb .ar,.G .gb .ar{margin-right:0}
.G .yb.sm:has(.ar){padding-right:6px}
/* ring stronger */
.G .avr::after{inset:-4px;background:conic-gradient(from 0deg,transparent 0deg,transparent 200deg,rgba(247,201,72,.25) 250deg,#F7C948 320deg,#FFF6CC 350deg,transparent 360deg);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3.5px),#000 calc(100% - 3px));mask:radial-gradient(farthest-side,transparent calc(100% - 3.5px),#000 calc(100% - 3px));filter:drop-shadow(0 0 3px rgba(247,201,72,.9))}
.G .avr.glow::after{animation:ringspin 10s cubic-bezier(.4,0,.3,1) 1 both}
.G .mebtn:hover .avr::after{animation:ringspin 10s cubic-bezier(.4,0,.3,1) 1 both}
/* gmarket optical vcenter: 글꼴이 줄 상자 안에서 약간 위로 뜨고, 노란 버튼은 아래 4px 단차 때문에 눈에 보이는 중심이 아래에 있음. 패딩 대신 투명 윗테두리로 보정해 개별 버튼 패딩 설정과 충돌하지 않게 함 */
.G .yb{border-top:4px solid transparent!important;border-bottom:0!important;background-clip:border-box}
.G .dl,.G .kb,.G .kb2,.G .wallet .acts button,.G .selall{border-top:2px solid transparent!important;border-bottom:0!important}

@media (max-width:760px){.G .wc .dl.again{padding-inline:8px;font-size:12.5px;gap:4px;letter-spacing:-.02em}.G .wc .dl.again .lb{gap:3px}.G .wc .dl.again .re{display:none}.G .wc .dl.again .cd{font-size:11px;padding:2px 5px;gap:2px;letter-spacing:0}.G .wc .dl.again .cd svg{display:none}}
/* 버튼 안 가운데 정렬: 화살표가 숨겨진 폭에서는 좌우 여백을 같게, 노란 버튼의 하트 아이콘 */
.G .yb .hi{display:inline-block;width:14px;height:14px;flex:0 0 14px;background:#C9342A;clip-path:path("M7 13 L1.6 7.4 A3.2 3.2 0 0 1 7 3.2 A3.2 3.2 0 0 1 12.4 7.4 Z");margin-right:-2px}
@media (max-width:760px){.G .dlbox .yb:has(.ar),.G .dlbox .yb{padding-left:12px!important;padding-right:12px!important;gap:6px}}
/* 버튼 테두리 이중 겹침 방지: 투명 윗테두리 보정 위에서 안쪽 그림자(inset)가 한 겹 더 보이던 문제 */
.G .yb{box-shadow:0 4px 0 #C99A26}
.G .yb:hover{box-shadow:0 6px 0 #C99A26}
.G .yb:active{box-shadow:0 2px 0 #C99A26}
.G .dl.again{box-shadow:none!important;border:2px solid var(--g8)!important;padding-top:10px;padding-bottom:8px}
.G .dl.again.soon{border-color:#E8B400!important}
@media (max-width:760px){.G .wc .dl.again{padding-top:9px;padding-bottom:7px}}
/* 하트 버튼 한 줄 고정: 문구는 "하트 N개"만 (세 자리까지) */
.G .dl,.G .yb,.G .wc .dl .lb{white-space:nowrap}
/* 프로필 캐릭터 원 통일: 원을 꽉 채우고 아래 그라데이션은 원 선 밖으로 */
.G .mebtn img,.G .mme img,.G .avr.mini img,.G .avr.big img,.G .avo .ci img{padding:0!important;object-fit:cover;border-radius:50%;background:#fff;display:block}
.G .avr.big img{width:84px;height:84px}
.G .avo .ci{overflow:hidden}
.G .avo .ci img{width:100%;height:100%}

.G .mnav a.mme{display:flex;align-items:center;gap:12px;font-size:inherit;border-bottom:0;padding:12px}
.G .mnav a.mme .avr img{width:48px;height:48px}
@media (max-width:760px){.G .avr.big img{width:64px;height:64px}.G .avo .ci img{width:100%;height:100%}}
.G .lm .fine a{text-decoration:underline;text-underline-offset:2px;color:inherit}
/* ===== 약관 · 개인정보처리방침 (lg-) ===== */
.G .lg-wrap{max-width:1040px;margin:0 auto;padding:12px 0 70px}
.G .lg{display:grid;grid-template-columns:230px minmax(0,1fr);gap:44px;align-items:start;margin-top:26px}
.G .lg-toc{position:sticky;top:92px}
.G .lg-toc summary{display:none}
.G .lg-toc b{display:block;font:700 13px "GmarketSans";color:var(--mute);letter-spacing:.04em;margin:0 0 10px 12px}
.G .lg-toc ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.G .lg-toc a{display:block;padding:8px 12px;border-radius:12px;font-size:13.5px;line-height:1.4;color:#2A3A33;border-left:2px solid transparent;transition:background .25s,color .25s}
.G .lg-toc a:hover{background:#fff}
.G .lg-toc a.on{background:#fff;color:var(--g7);font-weight:700;box-shadow:0 0 0 1px var(--shell)}
.G .lg-main{min-width:0}
.G .lg-hd{padding:6px 0 22px;border-bottom:1px solid var(--sand);max-width:820px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}
.G .lg-hd .lg-ch{flex:0 0 auto;width:132px;height:132px;object-fit:contain;object-position:bottom;margin-bottom:-22px;filter:drop-shadow(0 10px 14px rgba(6,37,26,.14))}
.G .lg-hd .eyebrow3{margin-bottom:6px}
.G .lg-hd h1{font-size:clamp(26px,3.2vw,36px);line-height:1.25;letter-spacing:-.02em}
.G .lg-hd .meta2{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--mute);margin-top:12px}
.G .lg-sum{background:#F1F7F2;border-radius:18px;padding:18px 20px;margin:22px 0 0;max-width:820px;box-shadow:inset 0 0 0 1.5px rgba(20,107,69,.2)}
.G .lg-sum b{display:block;font:700 14px "GmarketSans";color:var(--g7);margin-bottom:8px}
.G .lg-sum ul{margin:0;padding-left:18px;font-size:15px;line-height:1.75;color:#2A3A33}
.G .lg-sum li+li{margin-top:3px}
.G .lg-body{font-size:15.5px;line-height:1.85;color:#2A3A33;word-break:keep-all}
.G .lg-body h2{font:700 19px "GmarketSans";color:var(--ink);margin:38px 0 10px;padding-top:30px;border-top:1px solid var(--sand);scroll-margin-top:96px;letter-spacing:-.01em}
.G .lg-body h2:first-of-type{border-top:0;padding-top:8px}
.G .lg-body h3{font:700 15.5px "GmarketSans";color:var(--ink);margin:18px 0 6px}
.G .lg-body p+p{margin-top:10px}
.G .lg-body ol,.G .lg-body ul{margin:8px 0 0;padding-left:22px}
.G .lg-body li+li{margin-top:5px}
.G .lg-body ol>li::marker{font-weight:700;color:var(--g7)}
.G .lg-body table{width:100%;border-collapse:collapse;margin:14px 0 6px;font-size:14px;line-height:1.6;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px var(--shell)}
.G .lg-body th,.G .lg-body td{padding:11px 13px;text-align:left;vertical-align:top;border-bottom:1px solid #F1EBDB;overflow-wrap:anywhere}
.G .lg-body table.kv th{white-space:normal;width:34%;background:#F5F1E4}
.G .lg-body th{background:#F5F1E4;font:700 13px "GmarketSans";color:var(--ink);white-space:nowrap}
.G .lg-body tr:last-child td{border-bottom:0}
.G .lg-body .lg-note{font-size:13.5px;color:var(--mute);margin-top:8px}
.G .lg-tag{display:inline-block;font:700 11.5px "GmarketSans";color:#B08000;background:#FFF6D6;border-radius:999px;padding:4px 9px 3px;vertical-align:2px;margin-left:4px;white-space:nowrap}
.G .lg-co{margin-top:34px;background:#fff;border-radius:18px;padding:18px 20px;box-shadow:0 0 0 1px var(--shell);font-size:14px;line-height:1.8;color:#2A3A33}
.G .lg-co b{display:block;font:700 14px "GmarketSans";color:var(--g7);margin-bottom:6px}
.G .lg-x{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.G .lg-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 20px;border-radius:999px;border:2px solid var(--ink);background:transparent;color:var(--ink);font:700 15px/1 "GmarketSans";white-space:nowrap;transition:background .3s,color .3s,transform .3s var(--ease)}
.G .lg-btn span{display:inline-block;transform:translateY(2px)}
.G .lg-btn:hover{background:var(--ink);color:var(--y);transform:translateY(-2px)}
.G .lg-btn.y{border-color:var(--y);background:var(--y);color:var(--ink);box-shadow:0 4px 0 #C99A26}
.G .lg-btn.y:hover{background:var(--y);color:var(--ink)}
@media (max-width:900px){
 .G .lg-wrap{padding:8px 0 50px}
 .G .lg{grid-template-columns:1fr;gap:16px;margin-top:18px}
 .G .lg-toc{position:static;background:#fff;border-radius:16px;box-shadow:0 0 0 1px var(--shell);padding:0 14px}
 .G .lg-toc summary{display:block;list-style:none;cursor:pointer;padding:14px 26px 14px 0;font:700 15px "GmarketSans";color:var(--ink);position:relative}
 .G .lg-toc summary::-webkit-details-marker{display:none}
 .G .lg-toc summary::after{content:"";position:absolute;right:4px;top:50%;width:8px;height:8px;border-right:2px solid var(--g7);border-bottom:2px solid var(--g7);transform:translateY(-70%) rotate(45deg);transition:transform .3s var(--ease)}
 .G .lg-toc[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
 .G .lg-toc b{display:none}
 .G .lg-toc ol{padding:0 0 12px}
 .G .lg-toc a.on{background:#F1F7F2;box-shadow:none}
 .G .lg-body{font-size:15px}
 .G .lg-hd{align-items:flex-end;gap:10px}
 .G .lg-hd .lg-ch{width:84px;height:84px;margin-bottom:-14px}
 .G .lg-hd h1{font-size:24px}
 .G .lg-body h2{font-size:17.5px;margin-top:30px;padding-top:24px;scroll-margin-top:84px}
 .G .lg-body table{font-size:13px}
 .G .lg-body th,.G .lg-body td{padding:9px 10px}
 .G .lg-body td:first-child{min-width:88px}
 .G .lg-x{flex-direction:column}
 .G .lg-btn{width:100%}
}


/* ===== 공통 푸터 (컴팩트) ===== */
.G footer.ft{background:var(--g9);color:#B7C9BC;font-size:13px;padding:0;margin-top:32px;border-radius:28px 28px 0 0}
.G footer.ft .wrap{display:block}
.G .ft-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:26px 0 18px}
.G .ft-logo{display:inline-flex;align-items:center;gap:8px;font:700 20px "GmarketSans";color:#fff}
.G .ft-logo img{width:34px;height:34px;object-fit:contain}
.G .ft-cta{display:flex;align-items:center;gap:8px}
.G .ft-kakao{display:inline-flex;align-items:center;gap:7px;background:#FEE500;color:#191919;border-radius:999px;padding:9px 16px 9px 12px;font:700 13.5px "GmarketSans";border-top:2px solid transparent;white-space:nowrap;transition:transform .3s var(--ease),box-shadow .3s}
.G .ft-kakao svg{width:18px;height:18px;fill:#191919;display:block}
.G .ft-kakao:hover{transform:translateY(-2px);box-shadow:0 10px 24px -12px rgba(254,229,0,.6)}
.G .ft-ic{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.08);color:#fff;display:inline-flex;align-items:center;justify-content:center;transition:background .3s,transform .3s var(--ease)}
.G .ft-ic svg{width:18px;height:18px;display:block}
.G .ft-ic:hover{background:rgba(255,255,255,.18);transform:translateY(-2px)}
.G .ft-bot{border-top:1px solid rgba(255,255,255,.1);padding:14px 0 22px;display:flex;justify-content:space-between;align-items:center;gap:16px}
.G .ft-co{color:#8FA697;font-size:12.5px;line-height:1.6}
.G .ft-links{display:flex;gap:16px;white-space:nowrap}
.G .ft-links a{color:#C9D9CD;font-size:12.5px;font-weight:600}
.G .ft-links a:hover{color:var(--y)}
@media (max-width:760px){
 .G footer.ft{border-radius:22px 22px 0 0;margin-top:20px}
 .G .ft-row{flex-direction:column;align-items:flex-start;gap:14px;padding:22px 0 16px}
 .G .ft-cta{width:100%}
 .G .ft-kakao{flex:1;justify-content:center}
 .G .ft-bot{flex-direction:column;align-items:flex-start;gap:10px;padding:14px 0 110px}
}


/* ===== 워드마크 ===== */
.G .logo .wm{display:block;height:24px;width:auto;color:#FAF6EC;flex:none}
.G .ft-logo .wm{display:block;height:22px;width:auto;color:#FAF6EC}
@media (max-width:640px){.G .logo .wm{height:20px}}

/* FAQ (GEO: 보이는 본문) */
.G .faq-s{padding:56px 0 30px}
.G .faqs{display:grid;gap:8px;max-width:860px}
.G .fq{background:#fff;border-radius:16px;box-shadow:0 0 0 1px var(--shell);padding:0 18px}
.G .fq summary{cursor:pointer;list-style:none;padding:15px 30px 15px 0;font:700 15.5px "GmarketSans";color:var(--ink);position:relative}
.G .fq summary::-webkit-details-marker{display:none}
.G .fq summary::after{content:"";position:absolute;right:4px;top:50%;width:8px;height:8px;border-right:2px solid var(--g7);border-bottom:2px solid var(--g7);transform:translateY(-70%) rotate(45deg);transition:transform .3s var(--ease)}
.G .fq[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
.G .fq p{padding:0 0 16px;font-size:14.5px;line-height:1.75;color:#2A3A33}
@media (max-width:760px){.G .faq-s{padding:36px 0 10px}.G .fq summary{font-size:14.5px;padding:13px 26px 13px 0}}

/* ===== 타자놀이 /play/ (2026-10-13 · P1): 약관 화면 틀(terms.css) 위에 더한다. 모든 선택자는 .tg 아래(사이트 .key·.card·.btn 과 안 섞이게).
   투명 캐릭터 그림이 든 요소에는 filter·backdrop-filter 를 쓰지 않는다(대표 PC에서 흰 사각형으로 뜬 적 있음) ===== */
.G .tg-sec .wrap{max-width:1280px}
.tg{--tg-y:#F7C948;--tg-yd:#C99A26;--tg-ys:#FBEFC2;--tg-g8:#0B4A32;--tg-g7:#146B45;--tg-g9:#08301F;--tg-gs:#DCEBD9;--tg-sky:#E4EFE0;--tg-cream:#FAF6EC;--tg-sand:#F1EBDB;--tg-line:#E6DFCB;--tg-mute:#5F6E64;--tg-ink:#06251A;--tg-shell:rgba(6,37,26,.06);--tg-hl:inset 0 1px 0 rgba(255,255,255,.7);--tg-spring:cubic-bezier(.32,.72,0,1);
  --tg-l4:#0B4A32;--tg-l3:#146B45;--tg-l2:#6FA287;--tg-l1:#B9D6C4;--tg-r1:#F3E6C2;--tg-r2:#F3D98A;--tg-r3:#F7C948;--tg-r4:#C99A26;
  position:relative;display:grid;grid-template-rows:56px auto auto;gap:14px;margin:18px 0 10px;font-size:20px;line-height:1.5;color:var(--tg-ink);word-break:keep-all;font-variant-numeric:tabular-nums}
.tg *{box-sizing:border-box}
.tg h2,.tg h3,.tg .gm{font-family:"GmarketSans",Pretendard,sans-serif;letter-spacing:-.01em}
/* 상단 초록 알약 */
.tg-top{display:flex;align-items:center;gap:14px;background:var(--tg-g8);color:var(--tg-cream);border-radius:999px;padding:0 10px 0 22px;height:56px;box-shadow:0 0 0 1px var(--tg-shell),0 10px 24px -14px rgba(6,37,26,.5)}
.tg-top .tg-brand{font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:18px;letter-spacing:-.02em}
.tg-top .tg-div{width:1px;height:22px;background:rgba(250,246,236,.25)}
.tg-top .tg-stage{font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:17px;background:var(--tg-y);color:var(--tg-ink);border-radius:999px;padding:5px 14px;line-height:1.2}
.tg-top .tg-title{font-family:"GmarketSans",Pretendard,sans-serif;font-weight:500;font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tg-top .tg-right{margin-left:auto;display:flex;gap:8px;align-items:center;flex:none}
.tg-chip{background:rgba(250,246,236,.14);border-radius:999px;padding:5px 12px;font-size:15px;font-weight:600;white-space:nowrap}
.tg-chip b{font-family:"GmarketSans",Pretendard,sans-serif;font-size:17px;margin:0 2px}
.tg-chip.gold b{color:var(--tg-y)}
.tg-sticker{background:rgba(250,246,236,.14);border-radius:999px;padding:5px 14px 5px 8px;font-weight:700;display:flex;align-items:center;gap:8px;font-size:17px;white-space:nowrap}
.tg-sticker i{width:22px;height:22px;border-radius:50%;background:var(--tg-y);display:inline-block;box-shadow:inset 0 -3px 0 var(--tg-yd)}
.tg-pill{background:var(--tg-cream);color:var(--tg-g8);border:0;border-radius:999px;padding:8px 16px;font:700 16px Pretendard,sans-serif;cursor:pointer;min-height:40px;transition:transform .2s var(--tg-spring);white-space:nowrap}
.tg-pill:active{transform:scale(.96)}
/* 무대 */
.G .nav{position:relative}   /* /play/ 에서만(play.css 는 이 페이지에만 실린다): 머리말이 따라오지 않아야 판 시작 때 게임을 화면 위에 맞추면 키보드까지 한 화면에 들어온다 */
.tg-stage-area{position:relative;height:clamp(320px,calc(100vh - 442px),560px);display:grid;grid-template-columns:300px 1fr;gap:14px}   /* 게임을 화면 위에 맞췄을 때: 바 56 + 간격 28 + 키보드 340 + 여백 12 = 436, 맞춤 여백 6 더해 442 */
.tg-char{position:relative;min-height:0;border-radius:28px;background:linear-gradient(180deg,var(--tg-sky),var(--tg-gs));box-shadow:0 0 0 1px var(--tg-shell),var(--tg-hl);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:18px 18px 20px;overflow:hidden}
.tg-figure{position:relative;flex:1;min-height:0;width:100%;display:flex;align-items:flex-end;justify-content:center;transition:transform .22s var(--tg-spring);transform-origin:50% 100%}
.tg-figure::after{content:"";position:absolute;left:18%;right:18%;bottom:-4px;height:22px;border-radius:50%;background:rgba(6,37,26,.12);filter:blur(6px);z-index:0}
.tg-figure img{position:relative;z-index:1;max-height:100%;max-width:92%;width:auto;height:auto;object-fit:contain;display:block;animation:tg-idle 3.2s ease-in-out infinite}
.tg-figure.av img{max-height:88%}
.tg-figure.jump{transform:translateY(-28px) scale(1.04)}
.tg-figure.nod{transform:rotate(-5deg)}
@keyframes tg-idle{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.tg-char .tg-name{margin-top:10px;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:22px;color:var(--tg-g8)}
.tg-char .tg-say{margin-top:8px;background:#fff;border-radius:18px;padding:10px 18px;font-size:19px;font-weight:600;min-height:50px;text-align:center;box-shadow:0 0 0 1px var(--tg-shell),0 6px 14px -10px rgba(6,37,26,.35);position:relative;max-width:100%}
.tg-char .tg-say::before{content:"";position:absolute;top:-8px;left:50%;margin-left:-8px;border:8px solid transparent;border-top:0;border-bottom-color:#fff}
.tg-play{position:relative;border-radius:28px;background:#fff;box-shadow:0 0 0 1px var(--tg-shell),var(--tg-hl),0 18px 40px -28px rgba(6,37,26,.45);padding:18px 30px 16px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.tg-play h2{margin:0 0 4px;font-size:26px;font-weight:700;color:var(--tg-g8);padding-right:130px}
.tg-play .tg-sub{color:var(--tg-mute);margin:0 0 10px;font-size:19px;padding-right:130px}
.tg-board{flex:1;display:flex;align-items:center;justify-content:center;position:relative;min-height:120px}
.tg-glyph{font-family:"GmarketSans",Pretendard,sans-serif;font-size:clamp(96px,22vh,170px);font-weight:700;line-height:1;color:var(--tg-ink);transition:transform .18s var(--tg-spring),color .18s;text-shadow:0 10px 0 var(--tg-sand)}
.tg-glyph.soft{font-size:96px;color:#9EB3A5;text-shadow:none}
.tg-glyph.hit{transform:scale(1.14) rotate(-3deg);color:var(--tg-g7)}
.tg-glyph.miss{color:var(--tg-yd);transform:translateX(-6px)}
.tg-progress{display:flex;gap:4px;margin-top:10px}
.tg-progress b{flex:1;height:14px;border-radius:999px;background:var(--tg-sand);box-shadow:var(--tg-hl)}
.tg-progress b.on{background:var(--tg-g7)}
.tg-progress b.bad{background:var(--tg-y)}
.tg-warn{background:var(--tg-ys);color:var(--tg-yd);border-radius:14px;padding:8px 14px;font-size:16px;margin-top:10px;display:none;font-weight:600}
/* 콤보 배지 · 알림 */
.tg-combo{position:absolute;top:16px;right:20px;display:flex;align-items:baseline;gap:6px;padding:6px 16px;border-radius:999px;background:var(--tg-ys);color:var(--tg-yd);font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:16px;opacity:0;transform:scale(.8);transition:opacity .2s,transform .2s var(--tg-spring),background .2s;z-index:2}
.tg-combo b{font-size:30px;color:var(--tg-ink);line-height:1}
.tg-combo.on{opacity:1;transform:none}
.tg-combo.fire{background:var(--tg-y);color:var(--tg-ink);box-shadow:0 0 0 5px rgba(247,201,72,.3)}
.tg-combo.pop{animation:tg-cpop .25s var(--tg-spring)}
@keyframes tg-cpop{50%{transform:scale(1.22)}}
.tg-toast{position:absolute;left:50%;top:14px;transform:translate(-50%,-12px);opacity:0;background:var(--tg-g8);color:var(--tg-cream);padding:8px 18px;border-radius:999px;font-weight:700;font-size:17px;white-space:nowrap;transition:opacity .25s,transform .25s var(--tg-spring);z-index:3;pointer-events:none}
.tg-toast.on{opacity:1;transform:translate(-50%,0)}
/* 글자 만들기(3단계): 음절 상자 */
.tg-word{display:flex;gap:14px;justify-content:center;align-items:center}
.tg-word .box{position:relative;width:132px;height:132px;border-radius:26px;background:var(--tg-sky);box-shadow:var(--tg-hl);display:flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:92px;line-height:1;transition:transform .2s var(--tg-spring),background .2s}
.tg-word .box i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-style:normal;color:rgba(6,37,26,.14)}
.tg-word .box b{position:relative;color:var(--tg-g8)}
.tg-word .box.now{background:var(--tg-ys);box-shadow:0 6px 0 var(--tg-yd);transform:translateY(-4px)}
.tg-word .box.on{background:#fff;box-shadow:0 0 0 3px var(--tg-g7)}
.tg-word .box.on b{color:var(--tg-g7)}
@media (max-height:800px){.tg-word .box{width:104px;height:104px;font-size:72px;border-radius:20px}}
/* 걷기: 위 = 다음 글자 줄, 아래 = 길(소띵이·집). 둘이 겹치지 않게 세로로 나눈다 */
.tg-walk{--mv:88px;width:100%;height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:8px}
.tg-walk .q{display:flex;gap:10px}
.tg-walk .q span{width:68px;height:68px;border-radius:18px;background:var(--tg-sky);display:flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;font-size:40px;font-weight:700;color:var(--tg-g8);transition:transform .2s var(--tg-spring)}
.tg-walk .q span.now{background:var(--tg-y);color:var(--tg-ink);transform:scale(1.12);box-shadow:0 5px 0 var(--tg-yd)}
.tg-walk .lane{position:relative;flex:none;height:calc(var(--mv) + 22px)}
.tg-walk .road{position:absolute;left:0;right:0;bottom:4px;height:14px;border-radius:999px;background:var(--tg-sand);box-shadow:var(--tg-hl)}
.tg-walk .goal{position:absolute;right:0;bottom:14px;width:calc(var(--mv) - 10px);height:calc(var(--mv) - 10px);border-radius:22px;background:var(--tg-ys);border:3px solid var(--tg-y);display:flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;color:var(--tg-yd);font-size:22px}
.tg-walk .mover{position:absolute;left:0;bottom:14px;width:var(--mv);height:var(--mv);border-radius:50%;background:#fff;box-shadow:0 0 0 3px var(--tg-g7),0 8px 0 rgba(6,37,26,.12);display:flex;align-items:center;justify-content:center;transition:left .28s var(--tg-spring);overflow:hidden;z-index:1}
.tg-walk .mover img{width:calc(var(--mv) - 4px);height:calc(var(--mv) - 4px);object-fit:contain}
/* 기차 */
.tg-train{position:relative;width:100%;height:min(200px,100%)}
.tg-train .rail{position:absolute;left:0;right:0;bottom:26px;height:10px;background:repeating-linear-gradient(90deg,var(--tg-line) 0 18px,transparent 18px 30px)}
.tg-train .cars{position:absolute;left:0;bottom:42px;display:flex;gap:10px;transition:left .32s var(--tg-spring)}
.tg-train .car{width:82px;height:76px;flex:none;border-radius:18px;background:var(--tg-sky);display:flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;font-size:40px;font-weight:700;color:#9EB3A5;position:relative;box-shadow:var(--tg-hl)}
.tg-train .car.on{background:#fff;box-shadow:0 0 0 3px var(--tg-g7)}
.tg-train .car.on img{width:70px;height:70px;object-fit:contain}
.tg-train .car.now{background:var(--tg-y);color:var(--tg-ink);box-shadow:0 5px 0 var(--tg-yd)}
.tg-train .car::after{content:"";position:absolute;left:12px;right:12px;bottom:-16px;height:12px;background:radial-gradient(circle at 20% 50%,var(--tg-g8) 6px,transparent 7px),radial-gradient(circle at 80% 50%,var(--tg-g8) 6px,transparent 7px)}
.tg-train .engine{width:100px;background:var(--tg-g8);color:var(--tg-cream);box-shadow:none;overflow:hidden}
.tg-train .engine img{width:64px;height:64px;object-fit:contain}
/* 문장(9~11단계): 위 = 칠 문장, 아래 = 내가 친 글. 이야기 장면 · 달리기 길 */
.tg-typing{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;gap:8px}
.tg-line{text-align:center}
.tg-line .tgt{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;row-gap:4px;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:clamp(26px,3.3vw,40px);line-height:1.3;color:rgba(6,37,26,.32)}
.tg-line .tgt .w{display:inline-flex;white-space:nowrap}
.tg-line .tgt span.done{color:var(--tg-g7)}
.tg-line .tgt span.now{color:var(--tg-ink);background:var(--tg-ys);border-radius:8px;box-shadow:inset 0 -4px 0 var(--tg-y)}
.tg-line .tgt .sp{display:inline-flex;justify-content:center;min-width:.45em;font-size:.7em;color:var(--tg-yd)}
.tg-line .tgt .ent{margin-left:.4em;font:700 .42em Pretendard,sans-serif;padding:4px 12px;border-radius:999px;background:var(--tg-sand);color:var(--tg-mute);white-space:nowrap}
.tg-line .tgt .ent.now{background:var(--tg-y);color:var(--tg-ink);box-shadow:0 3px 0 var(--tg-yd)}
.tg-line .tgt .ent.done{background:var(--tg-gs);color:var(--tg-g7)}
.tg-line .inp{margin:8px auto 0;max-width:100%;min-height:1.35em;padding:0 10px 4px;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:clamp(24px,3vw,36px);line-height:1.3;color:var(--tg-g8);white-space:pre-wrap;border-bottom:3px solid var(--tg-line);display:inline-block}
.tg-line .caret{display:inline-block;width:3px;height:1em;margin-left:2px;vertical-align:-.12em;background:var(--tg-g7);animation:tg-blink 1s steps(1) infinite}
@keyframes tg-blink{50%{opacity:0}}
.tg-scene{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap;min-height:36px}
.tg-scene b{font:700 14px Pretendard,sans-serif;color:var(--tg-mute);margin-right:6px}
.tg-scene img{width:34px;height:34px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--tg-gs);object-fit:contain}
.tg-race{--mv:60px;position:relative;flex:none;height:calc(var(--mv) + 18px)}
.tg-race .road{position:absolute;left:0;right:0;bottom:4px;height:12px;border-radius:999px;background:var(--tg-sand);box-shadow:var(--tg-hl)}
.tg-race .goal{position:absolute;right:0;bottom:12px;height:calc(var(--mv) - 8px);padding:0 12px;border-radius:16px;background:var(--tg-ys);border:3px dashed var(--tg-y);display:flex;align-items:center;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;color:var(--tg-yd);font-size:17px}
.tg-race .mover{position:absolute;left:0;bottom:12px;width:var(--mv);height:var(--mv);border-radius:50%;background:#fff;box-shadow:0 0 0 3px var(--tg-g7),0 6px 0 rgba(6,37,26,.12);display:flex;align-items:center;justify-content:center;overflow:hidden;transition:left .25s var(--tg-spring);z-index:1}
.tg-race .mover img{width:calc(var(--mv) - 4px);height:calc(var(--mv) - 4px);object-fit:contain}
.tg-race .mover.ghost{opacity:.38;box-shadow:0 0 0 3px var(--tg-line);transition:left .25s linear;z-index:0}
.tg-rec{background:var(--tg-y);color:var(--tg-ink);border-radius:999px;padding:0 10px;font-weight:700}
.tg-racemsg{font-weight:700;color:var(--tg-g8)!important}
/* 키보드: 장난감 키캡. 글자 키는 숙달 4단계 색(회색 안 배움 · 흰색 배우는 중 · 초록 익힘 · 금색 마스터) */
.tg-kb{position:relative;overflow:hidden;background:var(--tg-sand);border-radius:28px;box-shadow:0 0 0 1px var(--tg-shell),var(--tg-hl);padding:14px 18px 10px;--k:64px;--g:7px;--wd:98px}
.tg-row{display:flex;gap:7px;justify-content:center;margin-bottom:8px}
/* 줄 어긋남을 실제 키보드처럼(ㅁ 기준: 1은 3/4칸 왼쪽, ㅂ은 1/4칸 왼쪽, ㅋ은 1/2칸 오른쪽, 띄어쓰기 가운데는 ㅎ·ㅗ 사이). 손가락 그림이 실제 손 움직임과 같아진다.
   --k 키 폭 · --g 키 사이 · --wd 넓은 키 폭은 아래 .tg-key 폭 규칙과 같이 바꾼다 */
.tg-row.r0,.tg-row.r1,.tg-row.r2,.tg-row.r3,.tg-row.r4{position:relative}
.tg-row.r0{left:calc((var(--wd) + var(--g)) / -2 - .375 * (var(--k) + var(--g)))}
.tg-row.r1{left:calc(.125 * (var(--k) + var(--g)))}
.tg-row.r2{left:calc(.375 * (var(--k) + var(--g)))}
.tg-row.r3{left:calc((2 * var(--k) + var(--g) - var(--wd)) / 2 - .125 * (var(--k) + var(--g)))}   /* 아랫줄 = Shift · ㅋ~ㅡ · , . / · Shift(둘 다 한 칸). ㅋ은 ㅁ보다 1/2칸 오른쪽 그대로 */
.tg-row.r4{left:calc(.375 * var(--k) - .125 * var(--g) - var(--wd) / 2)}
.tg-key.wide.shl{width:var(--k)}
.tg-key{width:64px;height:52px;border-radius:14px;background:#fff;box-shadow:0 4px 0 var(--tg-line),var(--tg-hl);display:flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:23px;color:var(--tg-ink);position:relative;transition:transform .12s var(--tg-spring),background .15s,box-shadow .12s}
.tg-key.wide{width:98px;font:600 14px Pretendard,sans-serif;color:var(--tg-mute)}
.tg-key.space{width:400px;font:600 14px Pretendard,sans-serif;color:var(--tg-mute)}
.tg-key.lv0{background:#EFEAD9;color:#7F8C82;box-shadow:0 4px 0 #DCD3BB,var(--tg-hl)}
.tg-key.lv1{background:#fff}
.tg-key.lv2{background:#E1EFDC;color:var(--tg-g8);box-shadow:0 4px 0 #B9D3B3,var(--tg-hl)}
.tg-key.lv3{background:linear-gradient(180deg,#FFE9A3,#F7C948);color:#4A3500;box-shadow:0 4px 0 var(--tg-yd),inset 0 1px 0 rgba(255,255,255,.85)}
.tg-key.lv3::before{content:"";position:absolute;top:6px;right:7px;width:9px;height:9px;background:#fff;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)}
.tg-key.lv3.dusty{background:linear-gradient(180deg,#F4E6BC,#E5CF8A)}
.tg-key.lv3.dusty::before{opacity:.25}
.tg-key.dim{opacity:.38}
.tg-key.target{background:var(--tg-g8);color:var(--tg-cream);opacity:1;box-shadow:0 5px 0 var(--tg-g9),0 0 0 3px var(--tg-y);animation:tg-bounce .8s var(--tg-spring) infinite}
@keyframes tg-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.tg-key.down{transform:translateY(4px);box-shadow:0 0 0 var(--tg-line)}
.tg-key.ok{background:#52B788;color:#fff;box-shadow:0 2px 0 #2D8659}
.tg-key.home::after{content:"";position:absolute;bottom:7px;width:18px;height:3px;border-radius:2px;background:currentColor;opacity:.4}
.tg-fin{position:absolute;left:7px;bottom:6px;width:10px;height:10px;border-radius:50%}
.tg-shg{position:absolute;left:7px;top:4px;font:700 12px/1 "GmarketSans",Pretendard,sans-serif;color:var(--tg-mute);opacity:.75}   /* Shift 글자(ㅃ ㅉ ㄸ ㄲ ㅆ ㅒ ㅖ ? !) */
.tg-key.target .tg-shg,.tg-key.lv3 .tg-shg{color:inherit}
.tg-key.target2{background:var(--tg-y);color:var(--tg-ink);opacity:1;box-shadow:0 5px 0 var(--tg-yd),0 0 0 3px var(--tg-g8);animation:tg-bounce .8s var(--tg-spring) infinite}   /* 같이 누를 Shift */
/* 손 그림(키보드 위 반투명 두 손) · 손가락 안내 줄 */
.tg-hand{position:absolute;left:0;top:0;pointer-events:none;z-index:2}
.tg-hand .skin{opacity:.8}
.tg-hand .act{animation:tg-glow 1.1s ease-in-out infinite}
@keyframes tg-glow{0%,100%{opacity:.55}50%{opacity:1}}
.tg-guide{position:relative;z-index:3;display:flex;justify-content:center;margin-top:0;min-height:24px}
.tg-guide span{display:inline-flex;align-items:center;gap:8px;background:rgba(250,246,236,.94);border-radius:999px;padding:2px 14px;font-size:14px;line-height:1.45;font-weight:600;color:var(--tg-mute);box-shadow:0 0 0 1px var(--tg-shell)}
.tg-guide em{font-style:normal}
.tg-guide b{font-family:"GmarketSans",Pretendard,sans-serif;color:var(--tg-ink)}
.tg-guide i{width:14px;height:14px;border-radius:50%;flex:none;box-shadow:0 0 0 2px #fff,0 0 0 3px rgba(6,37,26,.3)}
.tg-f-l4{background:var(--tg-l4)}.tg-f-l3{background:var(--tg-l3)}.tg-f-l2{background:var(--tg-l2)}.tg-f-l1{background:var(--tg-l1)}.tg-f-r1{background:var(--tg-r1)}.tg-f-r2{background:var(--tg-r2)}.tg-f-r3{background:var(--tg-r3)}.tg-f-r4{background:var(--tg-r4)}
/* 오버레이(게임 전체를 덮는다) · 카드 */
.tg-overlay{position:absolute;inset:0;background:rgba(250,246,236,.95);display:flex;overflow:auto;z-index:5;border-radius:28px;padding:16px}
.tg-card{margin:auto;background:#fff;border-radius:30px;padding:30px 38px;box-shadow:0 0 0 1px var(--tg-shell),0 30px 60px -30px rgba(6,37,26,.5);text-align:center;max-width:620px;width:100%;animation:tg-pop .35s var(--tg-spring)}
@keyframes tg-pop{from{transform:scale(.94);opacity:0}to{transform:none;opacity:1}}
.tg-card h2{margin:0 0 6px;font-size:30px;font-weight:700;color:var(--tg-g8)}
.tg-card h3{margin:0 0 8px;font-size:17px;font-weight:700;color:var(--tg-g8);display:flex;align-items:baseline;gap:8px}
.tg-card h3 small{font:600 14px Pretendard,sans-serif;color:var(--tg-mute)}
.tg-card p{margin:0 0 14px;color:var(--tg-mute)}
.tg-cardav{display:block;margin:0 auto 8px;width:84px;height:84px;border-radius:50%;background:var(--tg-cream);box-shadow:0 0 0 3px var(--tg-y);object-fit:contain}
.tg-pose{display:block;height:130px;width:auto;max-width:100%;margin:0 auto 6px;object-fit:contain}
.tg-btn{background:var(--tg-y);color:var(--tg-ink);border:0;border-radius:999px;padding:14px 30px;font-family:"GmarketSans",Pretendard,sans-serif;font-size:21px;font-weight:700;cursor:pointer;min-height:58px;box-shadow:0 5px 0 var(--tg-yd);transition:transform .15s var(--tg-spring),box-shadow .15s}
.tg-btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--tg-yd)}
.tg-btn:disabled{opacity:.45;cursor:default}
.tg-btn.soft{background:var(--tg-sky);color:var(--tg-g8);box-shadow:0 5px 0 #BFD3BC}
.tg-btn.soft:active{box-shadow:0 1px 0 #BFD3BC}
.tg-btn.sm{min-height:40px;padding:6px 14px;font-size:16px;box-shadow:0 3px 0 var(--tg-yd)}
.tg-btn.sm.soft{box-shadow:0 3px 0 #BFD3BC}
.tg-btn.big{width:100%;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:24px;padding:14px 20px}
.tg-btn.big small{font:600 15px Pretendard,sans-serif;color:#5A4300}
.tg-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:6px}
.tg-acts .tg-btn+.tg-btn{margin-left:0}
.tg-btn+.tg-btn{margin-left:10px}
.tg-hint{font-size:14px;color:var(--tg-mute);margin-top:12px}
.tg-nudge{margin:14px 0 0;font-size:16px;color:var(--tg-g8)}
.tg-link{background:none;border:0;padding:0 2px;font:inherit;color:var(--tg-g7);text-decoration:underline;cursor:pointer}
/* 결과 카드 */
.tg-stars{display:flex;gap:10px;justify-content:center;margin:8px 0 6px}
.tg-stars i{width:50px;height:50px;background:#E9E3D2;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.tg-stars i.on{background:var(--tg-y)}
.tg-stars i.new{animation:tg-star .45s var(--tg-spring) both}
@keyframes tg-star{from{transform:scale(.2) rotate(-40deg)}to{transform:none}}
.tg-stat{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;color:var(--tg-mute);font-size:17px;margin:4px 0 10px}
.tg-stat b{font-family:"GmarketSans",Pretendard,sans-serif;color:var(--tg-ink);font-size:22px;margin-right:2px}
.tg-ups{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 0 12px}
.tg-up{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 12px 4px 6px;font-size:15px;font-weight:700;background:#E1EFDC;color:var(--tg-g8)}
.tg-up b{width:28px;height:28px;border-radius:8px;background:#fff;display:inline-flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif}
.tg-up.lv3{background:var(--tg-ys);color:#6A4D00}
.tg-up.lv3 b{background:linear-gradient(180deg,#FFE9A3,#F7C948)}
.tg-daydone{background:var(--tg-ys);border-radius:20px;padding:12px 14px;margin:0 0 12px}
.tg-daydone strong{display:block;font-family:"GmarketSans",Pretendard,sans-serif;color:#6A4D00;font-size:19px;margin-bottom:8px}
/* 미션 · 주간 스티커판 · 미니 황금 키보드 */
.tg-ms{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:8px}
.tg-ms li{display:grid;grid-template-columns:22px 1fr 54px;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--tg-ink)}
.tg-ms li>i{width:22px;height:22px;border-radius:50%;box-shadow:inset 0 0 0 2px var(--tg-line);background:#fff}
.tg-ms li.ok>i{background:var(--tg-g7);box-shadow:none;clip-path:none;position:relative}
.tg-ms li.ok>i::after{content:"";position:absolute;left:7px;top:4px;width:6px;height:11px;border:solid #fff;border-width:0 3px 3px 0;transform:rotate(45deg)}
.tg-ms li em{grid-column:2;height:8px;border-radius:999px;background:var(--tg-sand);overflow:hidden;display:block;margin-top:-4px}
.tg-ms li em u{display:block;height:100%;background:var(--tg-g7);border-radius:999px;text-decoration:none}
.tg-ms li small{grid-column:3;grid-row:1;text-align:right;color:var(--tg-mute);font-weight:600}
.tg-ms li.ok span{color:var(--tg-g7)}
.tg-ms.mini{margin:0 0 10px;text-align:left}
.tg-week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:0 0 16px}
.tg-day{aspect-ratio:1;border-radius:14px;background:var(--tg-sand);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:var(--tg-hl)}
.tg-day i{font-style:normal;font-size:13px;color:var(--tg-mute);font-weight:600}
.tg-day.on{background:var(--tg-ys)}
.tg-day.on img{width:86%;height:86%;object-fit:contain}
.tg-day.today{box-shadow:0 0 0 3px var(--tg-y)}
.tg-mkb{display:grid;gap:4px;margin:0 0 14px}
.tg-mkb div{display:flex;gap:4px;justify-content:center}
.tg-mkb span{width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:#EFEAD9;color:#8C978E}
.tg-mkb span.lv1{background:#fff;color:var(--tg-ink);box-shadow:inset 0 0 0 1px var(--tg-line)}
.tg-mkb span.lv2{background:#E1EFDC;color:var(--tg-g8)}
.tg-mkb span.lv3{background:linear-gradient(180deg,#FFE9A3,#F7C948);color:#4A3500}
.tg-mkb span.lv3.dusty{background:#EBDDB0}
.tg-lim{font-size:14px;margin:0!important}
/* 처음 화면(허브) */
.tg-card.hub{max-width:1000px;display:grid;grid-template-columns:330px 1fr;gap:28px;text-align:left;padding:26px 30px}
.tg-hub-l{background:var(--tg-cream);border-radius:22px;padding:18px 18px 16px}
.tg-hub-r{display:flex;flex-direction:column;gap:12px;text-align:center}
.tg-hub-r h2{margin:0}
.tg-menu{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left;max-height:clamp(220px,48vh,430px);overflow:auto;padding:3px;overscroll-behavior:contain}   /* 12단계: 상자 안에서 스크롤 */
.tg-certbtn{align-self:center}
.tg-st{display:flex;gap:10px;align-items:flex-start;background:var(--tg-cream);border-radius:20px;padding:12px;box-shadow:0 0 0 1px var(--tg-shell),var(--tg-hl)}
.tg-st img{width:48px;height:48px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--tg-gs);flex:none}
.tg-st b{display:block;font-family:"GmarketSans",Pretendard,sans-serif;font-size:16px;color:var(--tg-g8);line-height:1.3}
.tg-st>div>span{display:block;color:var(--tg-mute);font-size:13px;margin:2px 0 6px}
.tg-st .parts{display:flex;flex-wrap:wrap;gap:6px}
.tg-st .parts button{border:0;border-radius:999px;background:#fff;box-shadow:0 2px 0 var(--tg-line),0 0 0 1px var(--tg-line);padding:5px 10px;font:600 13px Pretendard,sans-serif;color:var(--tg-ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px;min-height:32px}
.tg-st .parts button:hover{background:var(--tg-ys)}
.tg-st.locked{opacity:.45}
.tg-ministar{display:inline-flex;gap:1px}
.tg-ministar i{width:11px;height:11px;background:#DDD5BF;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.tg-ministar i.on{background:var(--tg-y)}
.tg-voice{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap}
.tg-voice>span{color:var(--tg-mute);font-size:15px}
.tg-friends{display:flex;gap:4px;justify-content:center;flex-wrap:wrap}
.tg-friends img{width:32px;height:32px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--tg-gs);opacity:.35}
.tg-friends img.got{opacity:1;box-shadow:0 0 0 2px var(--tg-y)}
/* 손가락 체조 · 보호자 */
.tg-steps{list-style:none;margin:0 auto 12px;padding:0;display:grid;gap:8px;max-width:420px;text-align:left}
.tg-steps li{display:flex;align-items:center;gap:12px;background:var(--tg-cream);border-radius:16px;padding:10px 14px;font-weight:600;font-size:17px}
.tg-steps li b{width:30px;height:30px;border-radius:50%;background:var(--tg-y);display:inline-flex;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;flex:none}
.tg-count{font-family:"GmarketSans",Pretendard,sans-serif;font-size:52px;font-weight:700;color:var(--tg-g7);margin:2px 0 10px}
.tg-gate label{display:flex;gap:10px;align-items:center;justify-content:center;font-family:"GmarketSans",Pretendard,sans-serif;font-size:26px;margin:0 0 12px}
.tg-gate input{width:110px;height:52px;border-radius:14px;border:2px solid var(--tg-line);font:700 24px "GmarketSans",sans-serif;text-align:center}
.tg-err{color:#B4532A!important;min-height:1.5em}
.tg-opts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 0 14px}
.tg-opts .tg-btn+.tg-btn{margin-left:0}
.tg-tmr{font-family:"GmarketSans",Pretendard,sans-serif;color:var(--tg-g8)!important}
.tg-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:6;border-radius:28px}
.tg-confetti i{position:absolute;top:-12px;width:10px;height:14px;border-radius:3px;animation:tg-fall 1.6s var(--tg-spring) forwards}
@keyframes tg-fall{to{transform:translateY(900px) rotate(540deg);opacity:.2}}
/* 수료증(11단계 통과). 인쇄하면 종이만 나온다 */
.tg-card.grad h2{color:var(--tg-yd)}
.tg-cert{max-width:680px}
.tg-paper{border:6px double var(--tg-y);border-radius:22px;padding:22px 26px 18px;background:#fff;margin:0 0 12px}
.tg-paper small{display:block;font:600 15px Pretendard,sans-serif;color:var(--tg-mute)}
.tg-paper h2{font-size:40px;letter-spacing:.3em;margin:4px 0 10px}
.tg-paper .nm{font:700 20px "GmarketSans",Pretendard,sans-serif;color:var(--tg-ink)!important;margin:0 0 12px}
.tg-paper .nm u{display:inline-block;width:220px;border-bottom:2px solid var(--tg-ink);text-decoration:none;vertical-align:-4px;margin-left:8px}
.tg-paper .tx{color:var(--tg-ink)!important;font-size:17px;line-height:1.7}
.tg-paper .tg-friends{margin:4px 0 10px}
.tg-paper .tg-date{margin:0;font-size:15px}   /* .dt 는 사이트 섹션 이름이라 쓰지 않는다 */
@media print{
  body.tg-printing *{visibility:hidden!important}
  body.tg-printing .tg-paper,body.tg-printing .tg-paper *{visibility:visible!important}
  body.tg-printing .tg-paper{position:fixed;left:0;top:0;width:100%;margin:0;border-color:#C99A26}
}
/* 소개 글(검색·GEO용) */
/* 낮은 화면(1366×768 노트북은 브라우저 창 안쪽이 650px 안팎): 바·키보드를 줄여 무대 + 키보드가 한 화면에. 키보드 약 298 + 바 50 + 간격 20 + 여백 12 = 380 */
@media (max-height:820px){
  .tg{grid-template-rows:50px auto auto;gap:10px;margin-top:10px}
  .tg-top{height:50px}
  .tg-stage-area{height:clamp(250px,calc(100vh - 380px),560px);gap:10px}
  .tg-char{padding:12px 14px 14px}
  .tg-char .tg-name{margin-top:6px;font-size:20px}
  .tg-char .tg-say{font-size:17px;min-height:44px;padding:8px 14px}
  .tg-play{padding:14px 24px 12px}
  .tg-play h2{font-size:23px}
  .tg-play .tg-sub{font-size:17px;margin-bottom:6px}
  .tg-glyph{font-size:clamp(84px,19vh,150px)}
  .tg-kb{padding:10px 16px 8px}
  .tg-row{margin-bottom:6px}
  .tg-key{height:46px;font-size:21px;border-radius:12px}
  .tg-guide span{font-size:13px;padding:1px 12px}
  .tg-card.hub{padding:20px 24px;gap:22px}
  .tg-hub-l{padding:14px 16px 12px}
  .tg-btn.big{padding:10px 20px;min-height:0}
  .tg-walk{--mv:66px;gap:6px}
  .tg-walk .q span{width:54px;height:54px;font-size:32px;border-radius:15px}
  .tg-walk .goal{font-size:18px;border-radius:18px}
  .tg-card{padding:22px 30px}
  .tg-cardav{width:64px;height:64px}
  .tg-card h2{font-size:26px}
  .tg-stars i{width:42px;height:42px}
  .tg-typing{gap:4px}
  .tg-race{--mv:40px;height:calc(var(--mv) + 14px)}
  .tg-race .goal{font-size:14px;border-radius:12px}
  .tg-scene{min-height:28px}
  .tg-scene img{width:26px;height:26px}
  .tg-line .tgt{font-size:clamp(22px,2.7vw,32px)}
  .tg-line .inp{font-size:clamp(20px,2.5vw,30px);margin-top:4px}
}
/* 좁은 화면: 무대 세로, 키보드 축소, 허브 한 줄 */
@media (max-width:1100px){.tg-chip.gold{display:none}}
@media (max-width:1000px){.tg-kb{--k:48px;--wd:72px}.tg-stage-area{grid-template-columns:1fr;height:auto;max-height:none}.tg-char{flex-direction:row;justify-content:space-between;padding:12px 18px}.tg-figure{height:120px;flex:0 0 120px}.tg-char .tg-name{margin:0}.tg-key{width:48px;height:44px;font-size:19px}.tg-key.wide{width:72px}.tg-key.space{width:280px}.tg-glyph{font-size:120px}.tg-card.hub{grid-template-columns:1fr}.tg-menu{grid-template-columns:1fr}.tg-chip{display:none}.tg-top .tg-title{display:none}}
@media (prefers-reduced-motion:reduce){.tg-figure img,.tg-key.target,.tg-key.target2,.tg-stars i.new,.tg-hand .act,.tg-line .caret{animation:none}}

/* ===== 타자게임 모음 (2026-10-15 · 12 문서) ===== */
.tg-arcrow{display:flex;gap:10px;margin:10px 0 12px}
.tg-arcrow .tg-btn{flex:1;flex-direction:column;align-items:center;gap:2px;min-height:64px}
.tg-arcrow .tg-btn small{font-size:12px;font-weight:500;opacity:.85}
.tg-coin{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-family:"GmarketSans",Pretendard,sans-serif}
.tg-coin i{width:18px;height:18px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#FFF1B8,#F7C948 60%,#C99A26);box-shadow:inset 0 0 0 2px rgba(201,154,38,.6)}
.tg-coin.big{font-size:22px}.tg-coin.big i{width:26px;height:26px}
.tg-coin.got{justify-content:center;font-size:20px;color:var(--tg-g8);margin:8px 0}
.tg-coin.got small{font-size:13px;font-weight:500;color:var(--tg-mute)}
.tg-card.arc{max-width:820px;text-align:left;padding:24px 28px}
.tg-arc-head{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.tg-arc-head img{width:72px;height:72px;object-fit:contain}
.tg-arc-head h2{margin:0;font-size:26px}.tg-arc-head p{margin:2px 0 0;color:var(--tg-mute);font-size:15px}
.tg-arc-head .tg-coin{margin-left:auto}
.tg-arc-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tg-arc{display:grid;grid-template-columns:64px 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;text-align:left;border:0;border-radius:20px;background:var(--tg-sky);padding:12px 14px;min-height:88px;cursor:pointer;box-shadow:var(--tg-hl);transition:transform .15s var(--tg-spring)}
.tg-arc:hover{transform:translateY(-2px);background:var(--tg-ys)}
.tg-arc img{grid-row:span 2;width:64px;height:64px;object-fit:contain}
.tg-arc b{font-family:"GmarketSans",Pretendard,sans-serif;font-size:18px}
.tg-arc span{font-size:13px;color:var(--tg-mute);line-height:1.35}
.tg-arc em{grid-column:2;font-style:normal;font-size:12px;color:var(--tg-g7);font-weight:700}
.tg-arc.locked{opacity:.5;cursor:default}
.tg-card.arc h3{margin:14px 0 6px;font-size:16px;color:var(--tg-g7)}
.tg-shop{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tg-item{border:0;border-radius:16px;background:#fff;box-shadow:0 0 0 1px var(--tg-shell);padding:10px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer}
.tg-item .e{font-size:34px;line-height:1}
.tg-item b{font-size:14px}.tg-item small{font-size:12px;color:var(--tg-mute)}
.tg-item[disabled]{opacity:.45;cursor:default}
.tg-item.own{background:var(--tg-sky)}.tg-item.sel{box-shadow:0 0 0 3px var(--tg-g7)}
.tg-acts{display:flex;gap:10px;justify-content:center;margin-top:16px}
.tg-card.arcres .tg-pose{width:110px;height:110px;object-fit:contain;margin:0 auto 6px}
.tg-score{font-size:22px;margin:4px 0}.tg-score b{font:800 44px/1 "GmarketSans",Pretendard,sans-serif;color:var(--tg-g7)}
.tg-score em{font-style:normal;color:var(--tg-yd);font-weight:800;margin-left:6px}.tg-score small{color:var(--tg-mute);font-size:14px;margin-left:6px}
.tg-tip{color:var(--tg-mute);font-size:14px}
.tg-cnt{animation:tg-cnt .7s var(--tg-spring) infinite}
@keyframes tg-cnt{0%{transform:scale(.6);opacity:.4}40%{transform:scale(1.1);opacity:1}100%{transform:scale(1)}}
.tg-arc-hud{display:flex;justify-content:space-between;align-items:center;width:100%;font-weight:700;font-size:16px;color:var(--tg-g8)}
.tg-arc-hud b{color:var(--tg-g7)}
/* 1 띵이 우산 */
.tg-uz{position:absolute;inset:0;display:flex;flex-direction:column}
.tg-uz .sky{position:relative;flex:1;overflow:hidden;border-radius:18px;background:linear-gradient(180deg,#EAF4FF,#F7FBFF)}
.tg-uz .drop{position:absolute;top:-12%;transform:translateX(-50%);background:#fff;border-radius:999px;padding:6px 14px;font:700 26px/1.2 "GmarketSans",Pretendard,sans-serif;color:var(--tg-ink);box-shadow:0 0 0 2px var(--tg-line),0 6px 14px -8px rgba(6,37,26,.4);white-space:nowrap;text-align:center}
.tg-uz .drop span.on{color:var(--tg-g7)}.tg-uz .drop span.half{color:var(--tg-yd)}
.tg-uz .drop.now{box-shadow:0 0 0 4px var(--tg-y),0 8px 16px -8px rgba(6,37,26,.5);transform:translateX(-50%) scale(1.08)}
.tg-uz .drop.slow{background:#DCEBFF;box-shadow:0 0 0 2px #2F6FB5}.tg-uz .drop.heal{background:var(--tg-ys);box-shadow:0 0 0 2px var(--tg-yd)}
.tg-uz .drop small{display:block;font:600 11px Pretendard,sans-serif;color:var(--tg-mute)}
.tg-uz .drop.pop{animation:tg-pop .3s forwards}.tg-uz .drop.shake{animation:tg-shake .3s}
@keyframes tg-pop{to{transform:translateX(-50%) scale(1.6);opacity:0}}
@keyframes tg-shake{25%{margin-left:-6px}75%{margin-left:6px}}
.tg-uz .ground{flex:0 0 64px;display:flex;align-items:center;gap:12px;padding:6px 8px 0}
.tg-uz .um{flex:1;height:14px;border-radius:7px;background:var(--tg-sand);overflow:hidden}.tg-uz .um i{display:block;height:100%;background:linear-gradient(90deg,#F7C948,#146B45);transition:width .3s}
.tg-uz .ground img{width:56px;height:56px;object-fit:contain;transition:transform .2s}.tg-uz .ground img.wet{transform:translateY(6px) rotate(-8deg);filter:none;opacity:.7}
/* 2 두더지 */
.tg-mole{display:flex;flex-direction:column;align-items:center;gap:8px}
.tg-mole img{width:120px;height:120px;object-fit:contain}
.tg-mole .say{font-size:20px;font-weight:700}.tg-mole .cnt{font:800 40px/1 "GmarketSans",Pretendard,sans-serif;color:var(--tg-g7)}
.tg-key.mole{background:#B98A5A;color:#fff;box-shadow:0 4px 0 #7A5533;opacity:1;animation:tg-moleup .25s var(--tg-spring)}
.tg-key.mole::before{content:"🐹";position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-size:26px;line-height:1}
.tg-key.bonk{background:#52B788;color:#fff}
@keyframes tg-moleup{from{transform:translateY(10px)}to{transform:none}}
/* 3 달리기 */
.tg-race{position:absolute;inset:0;display:flex;flex-direction:column;gap:10px}
.tg-race .track{flex:1;display:flex;flex-direction:column;justify-content:space-around;background:var(--tg-sand);border-radius:18px;padding:8px 12px}
.tg-race .lane{position:relative;height:60px;border-bottom:2px dashed rgba(6,37,26,.15)}
.tg-race .runner{position:absolute;left:0;top:2px;width:70px;height:56px;display:flex;align-items:center;justify-content:center;transition:left .25s linear}
.tg-race .runner img{width:52px;height:52px;object-fit:contain}
.tg-race .runner .veh{position:absolute;bottom:-4px;font-size:30px;line-height:1}
.tg-race .flag{position:absolute;right:0;top:8px;font-size:30px}
.tg-word.mini .box{width:72px;height:72px;font-size:44px;border-radius:16px}
#race-word span{display:inline-block;width:72px;height:72px;border-radius:16px;background:var(--tg-sky);margin:0 5px;font:700 44px/72px "GmarketSans",Pretendard,sans-serif;text-align:center;color:rgba(6,37,26,.25)}
#race-word span.half{color:var(--tg-yd);background:var(--tg-ys)}#race-word span.on{color:var(--tg-g7);background:#fff;box-shadow:0 0 0 3px var(--tg-g7)}
/* 4 판 뒤집기 */
.tg-flip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%;height:100%}
.tg-flip .tile{display:flex;align-items:center;justify-content:center;border-radius:14px;font:700 clamp(18px,3vh,28px)/1.1 "GmarketSans",Pretendard,sans-serif;text-align:center;padding:4px;transition:background .25s,transform .25s;word-break:keep-all}
.tg-flip .tile.y{background:var(--tg-ys);color:var(--tg-yd)}.tg-flip .tile.g{background:#CFE8D6;color:var(--tg-g8)}
.tg-flip .tile.now{box-shadow:0 0 0 4px var(--tg-g7);transform:scale(1.04);background:#fff}
.tg-flip .tile span.on{color:var(--tg-g7)}.tg-flip .tile span.half{color:var(--tg-ink)}
/* 키보드 스킨(가게) */
.tg.tg-skin-kb1 .tg-key.lv0,.tg.tg-skin-kb1 .tg-key.lv1,.tg.tg-skin-kb1 .tg-key.wide,.tg.tg-skin-kb1 .tg-key.space{background:#E3F0FF;box-shadow:0 4px 0 #9DBCE4,var(--tg-hl);color:#1E3F6B}
.tg.tg-skin-kb2 .tg-key.lv0,.tg.tg-skin-kb2 .tg-key.lv1,.tg.tg-skin-kb2 .tg-key.wide,.tg.tg-skin-kb2 .tg-key.space{background:#FFE4E8;box-shadow:0 4px 0 #E59AA8,var(--tg-hl);color:#7A2436}
.tg.tg-skin-kb3 .tg-key.lv0,.tg.tg-skin-kb3 .tg-key.lv1,.tg.tg-skin-kb3 .tg-key.wide,.tg.tg-skin-kb3 .tg-key.space{background:#DDF3E0;box-shadow:0 4px 0 #8FC79B,var(--tg-hl);color:#174D2A}
.tg.tg-skin-kb4 .tg-key.lv0,.tg.tg-skin-kb4 .tg-key.lv1,.tg.tg-skin-kb4 .tg-key.wide,.tg.tg-skin-kb4 .tg-key.space{background:#EFE3FF;box-shadow:0 4px 0 #B99BE0,var(--tg-hl);color:#4A2A7A}
.tg.tg-skin-kb5 .tg-key.lv0,.tg.tg-skin-kb5 .tg-key.lv1,.tg.tg-skin-kb5 .tg-key.wide,.tg.tg-skin-kb5 .tg-key.space{background:#2B3445;box-shadow:0 4px 0 #141A26,var(--tg-hl);color:#F3EBD6}
.tg.tg-skin-kb6 .tg-key.lv0,.tg.tg-skin-kb6 .tg-key.lv1,.tg.tg-skin-kb6 .tg-key.wide,.tg.tg-skin-kb6 .tg-key.space{background:linear-gradient(135deg,#FFE4E8,#FFF4D6 35%,#DDF3E0 70%,#E3F0FF);box-shadow:0 4px 0 #C9B8D6,var(--tg-hl)}
@media (max-width:900px){.tg-arc-list{grid-template-columns:1fr}.tg-shop{grid-template-columns:repeat(2,1fr)}}
/* 수준 고르기 · 실력 확인 (2026-10-15 저녁) */
.tg-card.set h3{font-size:16px;margin:14px 0 8px;color:var(--g8,#0B4A32)}
.tg-card.set h3 small{display:block;font-weight:400;font-size:12.5px;color:var(--mute,#5F6E64);margin-top:2px}
.tg-card.set .tg-opts{justify-content:flex-start;margin-bottom:4px}
.tg-card.set .tg-opts .tg-btn{position:relative;min-width:96px}
.tg-card.set .tg-opts .tg-btn small{position:absolute;top:-9px;right:-4px;background:#F7C948;color:#06251A;font-size:10px;font-weight:800;padding:2px 6px;border-radius:999px;line-height:1.2}
.tg-card.set .tg-acts{margin-top:18px}
.tg-placebtn{display:block;width:100%;margin:8px auto 0;font-weight:600}
.tg-placebtn small{font-weight:400;opacity:.8;margin-left:4px}
.tg-place-how{margin:4px 0 0;padding-left:20px;font-size:15px;line-height:1.7}
.tg-place{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:14px;padding:10px}
#place-word span{display:inline-block;width:72px;height:72px;border-radius:16px;background:var(--tg-sky);margin:0 5px;font:700 44px/72px "GmarketSans",Pretendard,sans-serif;text-align:center;color:rgba(6,37,26,.25)}
#place-word span.half{color:var(--tg-yd);background:var(--tg-ys)}#place-word span.on{color:var(--tg-g7);background:#fff;box-shadow:0 0 0 3px var(--tg-g7)}
#race-word,#place-word{display:flex;flex-wrap:nowrap;justify-content:center;max-width:100%;overflow:hidden;flex:none}
#race-word.long,#place-word.long{justify-content:flex-start;scroll-behavior:smooth;padding:0 50%}
#race-word.long span,#place-word.long span{flex:none}
.tg-race{height:auto}
.tg-race .track{min-height:0;overflow:hidden}
.tg-race .lane{height:auto;flex:1 1 0;min-height:30px;max-height:60px}
.tg-race .runner{top:0;height:100%}.tg-race .runner img{height:calc(100% - 6px);width:auto;max-width:52px}
.tg-race .flag{top:50%;transform:translateY(-50%);font-size:clamp(18px,4vh,30px)}
.tg-race .runner .veh{font-size:clamp(16px,3.5vh,30px)}
#race-word.long span,#place-word.long span{width:40px;height:48px;border-radius:10px;margin:0 2px;font-size:25px;line-height:48px}
@media (max-width:700px){#race-word.long span,#place-word.long span{width:30px;height:38px;font-size:19px;line-height:38px;margin:0 1px}.tg-race .lane{min-height:22px}.tg-race .track{padding:4px 10px}.tg-race{gap:6px}}
.tg-place-bar{display:flex;align-items:center;gap:12px;font-size:14px;color:var(--mute,#5F6E64)}
.tg-card.arcres .tg-acts .tg-btn{flex:1 1 30%}

/* ===== 위 메뉴 띠 (2026-10-15 밤 · 대표 "한 화면에 다 있으니 복잡 — 도안처럼 메뉴로"): 도안 목록 머리(.ph3 · .seg3)와 같은 모양·색, 놀이 화면이라 낮게.
   캐릭터 그림(.tg-ph-pals)에는 filter·backdrop-filter 를 쓰지 않는다. 유리 효과는 알약 줄(.seg3)에만 ===== */
.G .tg-ph{background:var(--g8);color:#fff;position:relative;overflow:hidden}
.G .tg-ph::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 85% 30%,rgba(20,107,69,.7),transparent 55%);pointer-events:none}
.G .tg-ph>.wrap{position:relative;max-width:1280px}
.G .tg-ph .hd{position:relative;z-index:1;padding:26px 0 20px;max-width:640px}
.G .tg-ph-crumb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12.5px;font-weight:600;color:#9DB8A8;letter-spacing:.02em}
.G .tg-ph-crumb a{color:#9DB8A8;text-decoration:none}.G .tg-ph-crumb a:hover{color:#fff}
.G .tg-ph-crumb b{color:var(--y);font-weight:600}
.G .tg-ph-t{font-family:"GmarketSans",Pretendard,sans-serif;font-weight:700;font-size:clamp(32px,3.6vw,46px);line-height:1;letter-spacing:-.03em;margin:12px 0 0;color:#fff}
.G .tg-ph-lead{margin:12px 0 0;font-size:15.5px;line-height:1.55;color:#D6E3D8;max-width:none}
.G .tg-ph-lead span{display:block;margin-top:4px;font-size:13px;color:#9DB8A8}
.G .tg-ph .seg3-w{padding-bottom:22px;position:relative;z-index:3}
.G .tg-ph .seg3{display:flex;gap:4px;overflow-x:auto;padding:5px;background:rgba(255,255,255,.08);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:999px;box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 0 0 1px rgba(255,255,255,.08);scrollbar-width:none;width:max-content;max-width:100%}
.G .tg-ph .seg3::-webkit-scrollbar{display:none}
.G .tg-ph .seg3 a{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;padding:11px 18px;border-radius:999px;font-size:14.5px;font-weight:600;color:#E8EFEA;white-space:nowrap;text-decoration:none;transition:background .5s var(--ease),color .5s var(--ease),transform .5s var(--ease)}
.G .tg-ph .seg3 a small{font-size:12px;font-weight:500;color:#9DB8A8;font-variant-numeric:tabular-nums}
.G .tg-ph .seg3 a:hover{background:rgba(255,255,255,.1)}
.G .tg-ph .seg3 a.on{background:var(--y);color:var(--ink);box-shadow:0 10px 24px -12px rgba(0,0,0,.6),inset 0 1px 0 #FFE9A6}
.G .tg-ph .seg3 a.on small{color:#6B5A12}
.G .tg-ph .seg3 a:active{transform:scale(.97)}
.G .tg-ph .seg3 a:focus-visible{outline:3px solid var(--y);outline-offset:2px}
.G .tg-ph-pals{position:absolute;right:18px;bottom:0;display:flex;align-items:flex-end;pointer-events:none;z-index:0}
.G .tg-ph-pals img{display:block;height:184px;width:auto}   /* 2026-10-16: 친구 셋 → 키보드 치는 지띵이 한 장(ch_type_ji) */
@media (max-width:1100px){.G .tg-ph-pals img{height:150px}}
@media (max-width:900px){.G .tg-ph-pals{display:none}}
@media (max-width:760px){.G .tg-ph .hd{padding:20px 0 14px}.G .tg-ph-t{font-size:32px;margin-top:10px}.G .tg-ph-lead{font-size:14px;margin-top:8px}.G .tg-ph .seg3{width:100%}.G .tg-ph .seg3 a{padding:9px 14px;font-size:13.5px}.G .tg-ph .seg3-w{padding-bottom:16px}}
@media (prefers-reduced-motion:reduce){.G .tg-ph .seg3 a{transition:none}}

/* ===== 메뉴 화면 = 페이지 그대로 (2026-10-15 23:40 대표: "배경 위에 떠 있는 형태 말고 해당 페이지에 그대로 · 디자인 다듬기 · 글은 최소로")
   주제가 키보드라 칸을 '키캡'으로 그린다: 흰 키 + 아랫단(누르면 내려감) · 지금 할 단계 = 노란 테두리 · 다 익힌 단계 = 금색 키 · 잠긴 단계 = 납작하게 들어간 키.
   놀이별 별은 키 아래 작은 불빛(별 1 = 연노랑 · 별 2 = 초록 · 별 3 = 금색). 글은 이름·숫자만, 설명 문장은 실력 확인·가게 한 줄씩만.
   카드 안에 카드를 두지 않는다. 캐릭터 그림에는 filter 를 쓰지 않는다 ===== */
.tg.tg-off{display:none}
.tg-page{--tg-y:#F7C948;--tg-yd:#C99A26;--tg-ys:#FBEFC2;--tg-g8:#0B4A32;--tg-g7:#146B45;--tg-g9:#08301F;--tg-gs:#DCEBD9;--tg-sky:#E4EFE0;--tg-cream:#FAF6EC;--tg-sand:#F1EBDB;--tg-line:#E6DFCB;--tg-mute:#5F6E64;--tg-ink:#06251A;--tg-shell:rgba(6,37,26,.06);--tg-hl:inset 0 1px 0 rgba(255,255,255,.7);--tg-spring:cubic-bezier(.32,.72,0,1);
  --tg-l4:#0B4A32;--tg-l3:#146B45;--tg-l2:#6FA287;--tg-l1:#B9D6C4;--tg-r1:#F3E6C2;--tg-r2:#F3D98A;--tg-r3:#F7C948;--tg-r4:#C99A26;--tp-lip:#E2D8BF;
  margin:28px 0 44px;color:var(--tg-ink);font-size:16px;line-height:1.5;word-break:keep-all;font-variant-numeric:tabular-nums}
.tg-page[hidden]{display:none}
.tg-page *{box-sizing:border-box}
.tg-page h2,.tg-page h3{font-family:"GmarketSans",Pretendard,sans-serif;letter-spacing:-.01em;margin:0;color:var(--tg-g8)}
.tg-page h3{font-size:17px;font-weight:700;margin:0 0 14px;display:flex;align-items:baseline;gap:8px}
.tg-page h3 small{font:600 13px Pretendard,sans-serif;color:var(--tg-mute)}
.tg-page h3 small.ok{color:var(--tg-g7)}
/* 보호자 확인·보호자 설정·쉬기 같은 카드도 페이지에 그대로(띄우지 않음) */
.tg-page .tg-card{margin:0;max-width:640px;box-shadow:0 0 0 1px var(--tg-shell);animation:none}
/* 키캡 공통 */
.tp-cap{position:relative;display:flex;border:0;border-radius:20px;background:#fff;color:inherit;font:inherit;cursor:pointer;text-align:left;box-shadow:0 0 0 1px rgba(6,37,26,.06),0 6px 0 var(--tp-lip);transition:transform .12s var(--tg-spring),box-shadow .12s var(--tg-spring);-webkit-tap-highlight-color:transparent}
.tp-cap:active{transform:translateY(5px);box-shadow:0 0 0 1px rgba(6,37,26,.06),0 1px 0 var(--tp-lip)}
.tp-cap[disabled]{cursor:default}
.tp-cap:focus-visible,.tp-enter:focus-visible,.tp-startbtn:focus-visible,.tp-opt:focus-visible,.tp-mini:focus-visible,.tp-back:focus-visible,.tp-ribbon:focus-visible,.tp-leds button:focus-visible{outline:3px solid var(--tg-g7);outline-offset:3px}
/* 단계 연습: 큰 '이어 하기' 키 */
.tp-top{display:flex;align-items:stretch;gap:16px;margin:0 0 34px}
.tp-enter{flex:1;min-width:0;display:flex;align-items:center;gap:20px;min-height:116px;padding:14px 26px 14px 16px;border:0;border-radius:28px;background:var(--tg-y);color:var(--tg-ink);font:inherit;text-align:left;cursor:pointer;box-shadow:0 7px 0 var(--tg-yd);transition:transform .12s var(--tg-spring),box-shadow .12s var(--tg-spring)}
.tp-enter:active{transform:translateY(6px);box-shadow:0 1px 0 var(--tg-yd)}
.tp-enter .av{width:86px;height:86px;border-radius:50%;background:#fff;object-fit:contain;flex:none}
.tp-enter .t{flex:1;min-width:0;display:flex;flex-direction:column}
.tp-enter .t b{font:700 36px/1 "GmarketSans",Pretendard,sans-serif;letter-spacing:-.03em;color:var(--tg-g8)}
.tp-enter .t em{font-style:normal;font-weight:700;font-size:17px;color:#5A4300;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-enter .go{flex:none;display:flex;align-items:center;gap:12px;font:700 22px "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8)}
.tp-enter .go::after{content:"";width:46px;height:46px;border-radius:50%;background:var(--tg-g8) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6.5v11l9-5.5z' fill='%23F7C948'/%3E%3C/svg%3E") 55% 50%/22px no-repeat}
.tp-ribbon{flex:none;border:0;border-radius:24px;padding:0 22px;background:linear-gradient(160deg,#FFF6D8,#F8DE8A);color:#6A4D00;font:700 17px "GmarketSans",Pretendard,sans-serif;cursor:pointer;box-shadow:0 0 0 1px rgba(201,154,38,.25),0 6px 0 #D2AA3A;min-height:56px}
.tp-ribbon:active{transform:translateY(5px);box-shadow:0 0 0 1px rgba(201,154,38,.25),0 1px 0 #D2AA3A}
.tp-rec .tp-ribbon{margin-top:34px}
/* 단계 키캡 */
.tp-keys{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:24px 16px}
.tp-k{display:flex;flex-direction:column;gap:12px;min-width:0}
.tp-k .tp-cap{flex-direction:column;justify-content:space-between;aspect-ratio:1/1;padding:14px 14px 13px;width:100%}
.tp-k .n{font:700 40px/1 "GmarketSans",Pretendard,sans-serif;letter-spacing:-.03em;color:var(--tg-g8)}
.tp-k .av{position:absolute;right:10px;top:10px;width:50px;height:50px;border-radius:50%;background:var(--tg-sand);object-fit:contain}
.tp-k .t{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-weight:700;font-size:15px;line-height:1.3;color:var(--tg-ink)}
.tp-k.now .tp-cap{box-shadow:0 0 0 3px var(--tg-y),0 6px 0 var(--tg-yd)}
.tp-k.now .tp-cap:active{box-shadow:0 0 0 3px var(--tg-y),0 1px 0 var(--tg-yd)}
.tp-k.gold .tp-cap{background:linear-gradient(160deg,#FFF6D8,#F8DE8A);box-shadow:0 0 0 1px rgba(201,154,38,.25),0 6px 0 #D2AA3A}
.tp-k.gold .n{color:#7A5A00}
.tp-k.gold .av{background:#fff}
.tp-k.lock .tp-cap{background:#ECE6D4;box-shadow:inset 0 2px 0 rgba(6,37,26,.05);transform:translateY(5px)}
.tp-k.lock .n,.tp-k.lock .t{color:#A39C86}
.tp-k.lock .av{opacity:.4}
.tp-k .lk{position:absolute;right:23px;top:44px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px rgba(6,37,26,.1)}
.tp-k .lk::before{content:"";position:absolute;left:8px;top:4px;width:6px;height:6px;border:2px solid #8C978E;border-bottom:0;border-radius:5px 5px 0 0}
.tp-k .lk::after{content:"";position:absolute;left:6px;top:10px;width:12px;height:9px;border-radius:2px;background:#8C978E}
.tp-leds{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.tp-leds button{position:relative;width:13px;height:13px;padding:0;border:0;border-radius:50%;background:#E3DCC8;cursor:pointer}
.tp-leds button::before{content:"";position:absolute;inset:-5px;border-radius:50%}
.tp-leds .s1{background:#F3D98A}
.tp-leds .s2{background:var(--tg-g7)}
.tp-leds .s3{background:var(--tg-y);box-shadow:0 0 0 2px #fff,0 0 0 3px var(--tg-yd)}
.tp-leds button[disabled]{opacity:.45;cursor:default}
.tp-note{margin:24px 0 0;background:var(--tg-ys);color:#6A4D00;border-radius:14px;padding:10px 16px;font-size:15px;font-weight:600}
/* 타자게임: 게임 키 넷 */
.tp-games{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.tp-game{flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:236px;padding:22px 14px 20px;background:var(--tg-sky);box-shadow:0 0 0 1px rgba(20,107,69,.08),0 6px 0 #BFD3BC;text-align:center}
.tp-game:active{box-shadow:0 0 0 1px rgba(20,107,69,.08),0 1px 0 #BFD3BC}
.tp-game .pic{display:flex;align-items:flex-end;justify-content:center;width:100%;height:156px;margin:-6px 0 8px}
.tp-game .pic img{display:block;height:100%;width:auto;max-width:100%;object-fit:contain}
.tp-game b{font:700 21px "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8)}
.tp-game .best{font-weight:700;font-size:13px;color:var(--tg-g7);background:#fff;border-radius:999px;padding:3px 11px;margin-top:4px}
/* 수준 고르기 · 실력 확인 · 설정: 한 줄씩 */
.tp-setup,.tp-set{max-width:820px}
.tp-back{display:inline-flex;align-items:center;gap:8px;border:0;background:none;padding:6px 2px;font:700 15px Pretendard,sans-serif;color:var(--tg-g7);cursor:pointer}
.tp-back::before{content:"";width:8px;height:8px;border-left:2.5px solid currentColor;border-bottom:2.5px solid currentColor;transform:rotate(45deg);margin-left:3px}
.tp-sethead{display:flex;align-items:center;gap:16px;margin:12px 0 22px}
.tp-sethead .pic{display:block;height:104px;width:auto;margin:-8px 0 -6px}
.tp-sethead h2{font-size:30px}
.tp-line{display:grid;grid-template-columns:132px minmax(0,1fr);align-items:center;gap:12px 20px;padding:18px 0;border-top:1px solid var(--tg-line)}
.tp-line h3{margin:0}
.tp-set .tp-line{grid-template-columns:132px minmax(0,1fr) auto}
.tp-set .tp-line:first-child{border-top:0;padding-top:4px}
.tp-seg{display:flex;flex-wrap:wrap;gap:10px}
.tp-opt{position:relative;border:0;border-radius:14px;background:#fff;padding:11px 18px;min-height:48px;font:700 16px Pretendard,sans-serif;color:var(--tg-ink);cursor:pointer;box-shadow:0 0 0 1px rgba(6,37,26,.08),0 4px 0 var(--tp-lip);transition:transform .12s var(--tg-spring),box-shadow .12s var(--tg-spring)}
.tp-opt:active{transform:translateY(3px);box-shadow:0 0 0 1px rgba(6,37,26,.08),0 1px 0 var(--tp-lip)}
.tp-opt.on{background:var(--tg-y);box-shadow:0 0 0 1px rgba(201,154,38,.3),0 4px 0 var(--tg-yd)}
.tp-opt small{position:absolute;top:-10px;right:-6px;background:var(--tg-g7);color:#fff;font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;line-height:1.4}
.tp-startbtn{display:block;margin:26px 0 0;min-width:240px;min-height:66px;padding:0 40px;border:0;border-radius:22px;background:var(--tg-y);color:var(--tg-g8);font:700 23px "GmarketSans",Pretendard,sans-serif;cursor:pointer;box-shadow:0 6px 0 var(--tg-yd);transition:transform .12s var(--tg-spring),box-shadow .12s var(--tg-spring)}
.tp-startbtn:active{transform:translateY(5px);box-shadow:0 1px 0 var(--tg-yd)}
.tp-place{display:flex;align-items:center;gap:22px;max-width:820px;padding:24px 28px;border-radius:28px;background:#fff;box-shadow:0 0 0 1px rgba(6,37,26,.06)}
.tp-place .pic{display:block;height:140px;width:auto;flex:none;margin:-18px 0 -12px}
.tp-place .t{flex:1;min-width:0}
.tp-place h2{font-size:28px}
.tp-place p{margin:6px 0 0;color:var(--tg-mute)}
.tp-place .tp-startbtn{margin:0;min-width:180px}
.tp-mini{border:0;border-radius:12px;background:var(--tg-sky);color:var(--tg-g8);font:700 15px Pretendard,sans-serif;padding:10px 16px;min-height:44px;cursor:pointer;box-shadow:0 3px 0 #BFD3BC;white-space:nowrap}
.tp-mini:active{transform:translateY(2px);box-shadow:0 1px 0 #BFD3BC}
.tp-val{margin:0;font-size:16px;color:var(--tg-ink)}
.tp-val b{font:700 24px "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8);margin:0 2px}
.tp-val span{color:#C9C1AA;margin:0 10px}
/* 내 기록 */
.tp-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0 0 38px}
.tp-stat{background:#fff;border-radius:20px;padding:16px 18px 14px;box-shadow:0 0 0 1px rgba(6,37,26,.06),0 6px 0 var(--tp-lip)}
.tp-stat b{display:block;font:700 40px/1 "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8);letter-spacing:-.02em}
.tp-stat b small{font-size:20px;color:var(--tg-mute)}
.tp-stat span{display:block;margin-top:8px;font-size:14px;font-weight:600;color:var(--tg-mute)}
.tp-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 48px}
.tp-cols .tp-box.wide{grid-column:1/-1}
.tp-rec .tg-ms{margin:0}
.tp-rec .tg-week{margin:0;max-width:420px}
.tp-rec .tg-mkb{margin:0;justify-items:start}
.tp-rec .tg-mkb div{justify-content:flex-start}
.tp-rec .tg-mkb span{width:30px;height:30px;font-size:14px;border-radius:8px}
.tp-rec .tg-friends{justify-content:flex-start;gap:8px}
.tp-rec .tg-friends img{width:42px;height:42px}
.tp-best{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 24px}
.tp-best li{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;min-width:0}
.tp-best img{width:42px;height:42px;border-radius:50%;background:var(--tg-sky);object-fit:contain;flex:none}
.tp-best span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp-best b{margin-left:auto;font:700 20px "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8)}
/* 띵이 가게 */
.tp-coin{display:flex;align-items:center;gap:10px;margin:0 0 30px}
.tp-coin i,.tp-items small i{display:inline-block;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFE9A6,#F7C948 55%,#C99A26);box-shadow:inset 0 -2px 0 rgba(0,0,0,.12)}
.tp-coin i{width:34px;height:34px}
.tp-coin b{font:700 38px/1 "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8)}
.tp-coin span{margin-left:8px;font-size:14px;font-weight:600;color:var(--tg-mute)}
.tp-items{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:18px 16px;margin:0 0 34px}
.tp-items .tg-item{flex-direction:column;align-items:center;gap:4px;padding:16px 8px 13px;background:#fff;box-shadow:0 0 0 1px rgba(6,37,26,.06),0 6px 0 var(--tp-lip);text-align:center}
.tp-items .tg-item .e{font-size:40px;line-height:1.1}
.tp-items .tg-item b{font-size:14px;font-weight:700}
.tp-items .tg-item small{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:700;color:var(--tg-g7)}
.tp-items small i{width:14px;height:14px;box-shadow:none}
.tp-items .tg-item.own{background:#fff}
.tp-items .tg-item.own small{color:var(--tg-mute)}
.tp-items .tg-item.sel{background:var(--tg-ys);box-shadow:0 0 0 2px var(--tg-y),0 6px 0 var(--tg-yd)}
.tp-items .tg-item[disabled]{opacity:.45}
@media (max-width:1100px){.tp-keys{grid-template-columns:repeat(5,minmax(0,1fr))}.tp-items{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:760px){
  .tg-page{margin:18px 0 30px}
  .tp-top{flex-direction:column;margin-bottom:26px}
  .tp-enter{min-height:98px;gap:12px;padding:12px 16px 12px 12px;border-radius:24px}.tp-enter .av{width:64px;height:64px}.tp-enter .t b{font-size:28px}.tp-enter .t em{font-size:15px}.tp-enter .go{font-size:18px;gap:8px}.tp-enter .go::after{width:40px;height:40px}
  .tp-keys{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px}.tp-k .n{font-size:30px}.tp-k .av{width:38px;height:38px;right:8px;top:8px}.tp-k .t{font-size:13px}.tp-k .lk{right:15px;top:34px}
  .tp-games{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.tp-game{min-height:190px}.tp-game .pic{height:116px}.tp-game b{font-size:18px}
  .tp-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tp-stat b{font-size:32px}
  .tp-cols{grid-template-columns:1fr;gap:28px}.tp-best{grid-template-columns:1fr}
  .tp-line,.tp-set .tp-line{grid-template-columns:1fr;gap:10px}
  .tp-place{flex-direction:column;text-align:center;padding:22px 18px}.tp-place .tp-startbtn{width:100%}.tp-place .pic{height:128px;margin:-6px 0 -4px}
  .tp-startbtn{width:100%}
  .tp-items{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 10px}
}
@media (prefers-reduced-motion:reduce){.tp-cap,.tp-enter,.tp-opt,.tp-startbtn,.tp-ribbon{transition:none}}

/* ===== 폰·패드(블루투스 키보드) 놀이 상자 맞춤 (2026-10-16 대표 "모바일에서 내려오는 글자가 안 보일 정도로 창이 좁다")
   - 상자 열 하나를 화면 폭 안에: 화면 키보드 최소 폭이 상자를 밀어내 오른쪽이 잘리던 것 막음
   - 게임 중(.tg-arcm): 설명 문장은 숨김(시작 전 수준 고르기 화면에 이름이 있고, PC 는 말풍선에 같은 문장)
   - 1000px 이하: JS(fitBox)가 키 크기 --k 를 폭에 맞추고(작으면 .tg-kbs), 상자(바~키보드) 높이를 화면에 맞춰 --tg-fit 을 준다(.tg-fit).
     게임 중엔 친구 칸·제목을 접어 놀이판을 키운다. 눕힌 폰은 놀이판 왼쪽 · 화면 키보드 오른쪽(.tg-side) ===== */
.tg{grid-template-columns:minmax(0,1fr)}
.tg.tg-arcm .tg-play .tg-sub{display:none}
.tg.tg-arcm #tg-warn-touch{display:none!important}
@media (max-width:1000px){
  .tg-kb .tg-row{gap:var(--g);margin-bottom:var(--g)}
  .tg-kb .tg-key{width:var(--k);height:calc(var(--k) * .9);font-size:calc(var(--k) * .42);border-radius:calc(var(--k) * .26)}
  .tg-kb .tg-key.wide{width:var(--wd);font-size:max(12px,calc(var(--k) * .28))}
  .tg-kb .tg-key.wide.shl{width:var(--k)}
  .tg-kb .tg-key.space{width:calc(var(--k) * 5.8);font-size:max(12px,calc(var(--k) * .28))}
  .tg.tg-fit .tg-stage-area{height:var(--tg-fit);grid-template-rows:auto minmax(0,1fr)}
  .tg.tg-fit .tg-play,.tg.tg-fit .tg-board{min-height:0}
  .tg.tg-arcm .tg-char,.tg.tg-arcm .tg-play h2{display:none}
  .tg.tg-arcm.tg-fit .tg-stage-area{grid-template-rows:minmax(0,1fr)}
  .tg.tg-arcm .tg-play{padding:12px 14px 10px}
  .tg.tg-kbhide .tg-kb{display:none}
}
/* 작은 키(폰): 작은 글씨는 빼고 기호로 */
.tg.tg-kbs .tg-kb{padding:8px 8px 6px;border-radius:20px}
.tg.tg-kbs .tg-shg{display:none}
.tg.tg-kbs .tg-fin{width:6px;height:6px;left:3px;bottom:3px}
.tg.tg-kbs .tg-key.wide{font-size:0}
.tg.tg-kbs .tg-key[data-code="ShiftLeft"]::after,.tg.tg-kbs .tg-key[data-code="ShiftRight"]::after{content:"⇧";font-size:14px}
.tg.tg-kbs .tg-key[data-code="Enter"]::after{content:"⏎";font-size:14px}
.tg.tg-kbs .tg-key[data-code="Backspace"]::after{content:"⌫";font-size:14px}
.tg.tg-kbs .tg-guide{height:42px;min-height:0;align-items:flex-start;overflow:hidden}   /* 안내 줄 높이를 두 줄로 고정(글이 길어져도 상자 높이가 안 바뀌게) */
.tg.tg-kbs .tg-guide span{font-size:13px;line-height:1.35;padding:2px 10px;border-radius:14px;max-width:100%}
/* 눕힌 폰: 놀이판 왼쪽 · 화면 키보드 오른쪽 */
.tg.tg-side{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr)}
.tg.tg-side .tg-top{grid-column:1/-1}
.tg.tg-side .tg-stage-area{grid-column:1;grid-row:2}
.tg.tg-side .tg-kb{grid-column:2;grid-row:2;align-self:start;width:calc(var(--k) * 13.6 + 16px)}
.tg.tg-side .tg-char,.tg.tg-side .tg-play .tg-sub{display:none}
.tg.tg-side .tg-play{padding:10px 14px 8px}
.tg.tg-side .tg-play h2{font-size:19px;padding-right:96px}
@media (max-width:600px){
  .tg{grid-template-rows:48px auto auto;gap:8px;margin-top:8px}
  .tg-top{height:48px;padding:0 6px 0 14px;gap:8px}
  .tg-top .tg-brand{font-size:16px}
  .tg-top .tg-stage{font-size:15px;padding:4px 10px}
  .tg-char{padding:8px 12px}
  .tg-figure{height:84px;flex:0 0 84px}
  .tg-char .tg-say{font-size:16px;padding:6px 12px;min-height:0}
  .tg-play{padding:12px 14px 10px}
  .tg-play h2{font-size:21px;padding-right:96px}
  .tg-play .tg-sub{font-size:15px;padding-right:0}
  .tg-arc-hud{font-size:14px}
  .tg-glyph{font-size:clamp(64px,22vw,120px)}
  .tg-glyph.soft{font-size:clamp(44px,15vw,96px)}
}
@media (max-width:600px),(max-height:500px){
  .tg-uz .drop{font-size:22px;padding:5px 11px}
  .tg-uz .ground{flex-basis:52px}
  .tg-uz .ground img{width:46px;height:46px}
  .tg-flip{gap:6px}
  .tg-flip .tile{font-size:clamp(14px,4.2vw,22px);padding:2px;border-radius:10px}
}
/* 두더지: 화면 키보드가 작을 때 올라온 두더지 글자를 놀이판에 크게 */
.tg-mole .now{display:none}
.tg.tg-kbs .tg-mole .now{display:flex;gap:10px;justify-content:center;min-height:64px}
.tg.tg-kbs .tg-mole .now b{width:64px;height:64px;border-radius:18px;background:#fff;box-shadow:0 0 0 3px var(--tg-y),0 6px 0 var(--tg-yd);display:flex;align-items:center;justify-content:center;font:700 36px/1 "GmarketSans",Pretendard,sans-serif;color:var(--tg-ink)}
.tg.tg-kbs .tg-mole img{width:84px;height:84px}
.tg.tg-side .tg-mole img,.tg.tg-side .tg-mole .say{display:none}

/* ===== 오타·지우기 (2026-10-16 대표 "오타가 나올 수 있는데 지울 수 없다"): 틀린 키는 빨간 글자로 보이고 ⌫ 지우기로 지운다. 맞는 키를 바로 쳐도 넘어간다 ===== */
.tg .tg-err{font-style:normal;color:#B93A26;background:#FCE3DC;border-radius:.28em;padding:0 .14em;margin:0 .05em;box-shadow:0 0 0 2px rgba(185,58,38,.28)}
.tg-word .box .tg-err{position:absolute;right:-12px;top:-12px;z-index:2;font-size:.4em;line-height:1;padding:.22em .32em;border-radius:.45em;background:#fff;box-shadow:0 0 0 3px #B93A26,0 4px 0 rgba(185,58,38,.25)}
.tg-line .inp .tg-err{margin-left:.06em}


/* ---------- 단계 주간 랭킹 (2026-10-17 16:18 대표 "타자놀이는 제안대로"): 결과 카드 한 줄 · 랭킹 카드(단계 탭 · 위 20명 · 내 순위) · 단계 연습 리본 · 내 기록 상자 ---------- */
.tg-cup{width:20px;height:20px;vertical-align:-4px;margin-right:6px}
.tg-rank{margin:-2px 0 12px!important;font-size:16px;font-weight:600;color:var(--tg-g8)!important;min-height:1.4em}
.tg-rank b{font-family:"GmarketSans",Pretendard,sans-serif;font-size:20px;color:var(--tg-ink)}
.tp-ribbon.rk .tg-cup{width:22px;height:22px;vertical-align:-5px}
.tg-card.tg-rk{max-width:560px;text-align:left}
.tg-card.tg-rk h2{text-align:center}
.tg-card.tg-rk h2 .tg-cup{width:28px;height:28px;vertical-align:-6px}
.tg-rktabs{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 6px;padding:4px 0 8px;margin:4px 0 6px}
.tg-rktab{flex:none;width:40px;height:40px;border:0;border-radius:50%;background:var(--tg-sky);color:var(--tg-g8);font:700 17px "GmarketSans",Pretendard,sans-serif;cursor:pointer;box-shadow:0 3px 0 #BFD3BC}
.tg-rktab.on{background:var(--tg-y);box-shadow:0 3px 0 var(--tg-yd)}
.tg-rktab:focus-visible{outline:3px solid var(--tg-g7);outline-offset:2px}
.tg-rkcap{font-size:14px;color:var(--tg-mute);margin:0 0 10px!important}
.tg-rklist{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:4px}
.tg-rklist li{display:grid;grid-template-columns:30px 36px minmax(0,1fr) auto;align-items:center;gap:10px;padding:6px 10px;border-radius:14px;background:var(--tg-cream);font-size:16px;min-width:0}
.tg-rklist li.top{background:var(--tg-ys)}
.tg-rklist li.me{box-shadow:0 0 0 2px var(--tg-y)}
.tg-rklist li b{font:700 18px "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8);text-align:center}
.tg-rklist li img{width:36px;height:36px;border-radius:50%;background:#fff;object-fit:contain}
.tg-rklist li span{font-weight:600;color:var(--tg-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tg-rklist li span i{font-style:normal;margin-left:6px;background:var(--tg-y);color:var(--tg-ink);border-radius:999px;padding:1px 7px;font-size:12px;font-weight:800}
.tg-rklist li em{font-style:normal;font-weight:700;color:var(--tg-g8);font-variant-numeric:tabular-nums;white-space:nowrap}
.tg-rkme{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:16px;background:var(--tg-sand);margin:0 0 10px;font-size:15px;color:var(--tg-mute)}
.tg-rkme b{font:700 24px "GmarketSans",Pretendard,sans-serif;color:var(--tg-g8)}
.tg-rkme em{font-style:normal;font-weight:700;color:var(--tg-ink);margin-left:auto;font-variant-numeric:tabular-nums}
.tg-rkempty,.tg-rkmore,.tg-rknote{font-size:14px;color:var(--tg-mute);margin:0 0 10px!important;text-align:center}
.tg-rk .tg-nudge{text-align:center}
.tg-ph3{margin:16px 0 4px;font-size:17px;color:var(--tg-g8)}
.tp-rkbox p{margin:0 0 12px;color:var(--tg-mute);font-size:15px}
.tp-rkbox .tp-mini .tg-cup{width:18px;height:18px;vertical-align:-4px}
@media (max-width:640px){
  .tg-card.tg-rk{padding:20px 16px}
  .tg-rklist li{grid-template-columns:26px 32px minmax(0,1fr) auto;gap:8px;padding:6px 8px;font-size:15px}
  .tg-rklist li img{width:32px;height:32px}
  .tg-rkme b{font-size:20px}
}

/* 2026-10-18 대표: 타자놀이 위 메뉴도 도안 메뉴처럼(띠 아래 .sub 줄, 알약 없음) · 키보드 안내 팝업(#tg-kbn, .rm 모양) */
.G .sub a small{margin-left:6px;font-size:11.5px;font-weight:500;color:var(--mute);font-variant-numeric:tabular-nums}
.G .rm.tg-kbn .in{padding-top:22px}
.G .rm.tg-kbn .who{display:flex;justify-content:center;margin:-74px 0 4px}
.G .rm.tg-kbn .who img{height:104px;width:auto}
.G .rm.tg-kbn h3{font-size:23px}
.G .rm.tg-kbn h3 em{font-style:normal;color:var(--g7)}
.G .rm.tg-kbn .k{font-size:14px;margin-top:8px}
.G .rm.tg-kbn ul{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px;text-align:left}
.G .rm.tg-kbn li{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:16px;background:var(--cream);font-size:13.5px;line-height:1.5;color:var(--mute);text-wrap:pretty}
.G .rm.tg-kbn li svg{flex:none;width:26px;height:26px;margin-top:2px;fill:none;stroke:var(--g7);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.G .rm.tg-kbn li b{display:block;font-size:15px;font-weight:700;color:var(--ink);margin-bottom:2px}
.G .rm.tg-kbn .go{display:flex;margin-top:18px}
.G .rm.tg-kbn .box:focus{outline:none}
/* ===== 놀이 입장(kids-pass.js, 2026-10-19): 위 막대 하트 수 · 처음 화면 안내 줄 · 폰 전체 화면 레이어 · 닫기 X. 모든 놀이 css 끝에 붙는다 ===== */
.kd-top .kd-heart{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 10px;border-radius:999px;background:rgba(255,255,255,.14);color:var(--kd-cream,#FAF6EC);font-size:13.5px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}
.kd-top .kd-heart svg{width:15px;height:15px;color:#FF7A8A}
.kd-top .kd-heart.free{background:rgba(247,201,72,.22);color:var(--kd-ys,#FBEFC2);font-size:12.5px}
.kd .kp-note{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px;padding:8px 10px 8px 12px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--kd-line,#E6DFCB);font-size:13.5px;line-height:1.35;color:var(--kd-g8,#0B4A32);word-break:keep-all}
.kd .kp-note span{display:block;min-width:0}
.kd .kp-note svg{display:inline-block;vertical-align:-2px;width:15px;height:15px;margin-right:4px;color:#E5566B}
.kd .kp-note b{font-weight:800;color:var(--kd-g7,#146B45)}
.kd .kp-note.kp-login{background:var(--kd-ys,#FBEFC2);box-shadow:inset 0 0 0 1.5px #F0D98A}
.kd .kp-btn{flex:0 0 auto;display:inline-flex;align-items:center;height:32px;padding:0 12px;border:0;border-radius:999px;background:var(--kd-g8,#0B4A32);color:var(--kd-cream,#FAF6EC);font:700 13px/1 Pretendard,sans-serif;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
.kd .kp-btn:active{transform:scale(.97)}
/* 닫기 X: 폰 레이어일 때만 */
.kd-top .kd-close{display:none;flex:0 0 auto;width:44px;height:44px;align-items:center;justify-content:center;border:0;border-radius:999px;background:rgba(255,255,255,.14);color:var(--kd-cream,#FAF6EC);padding:0}
.kd-top .kd-close svg{width:20px;height:20px}
.kd-fullbox .kd-top .kd-close{display:inline-flex}
/* 놀이 상자를 창 꽉 찬 레이어로(폰 · PC, 2026-10-19 12:09 대표 "PC 도 모바일처럼 전체 창"). 창 팝업이 아니라 같은 페이지 위라 팝업 차단과 무관. 브라우저 전체 화면 API 는 안 씀(안드로이드 주소 안내) */
body.kd-full{overflow:hidden;overscroll-behavior:none}
body.kd-full .kd.kd-fullbox{position:fixed;top:0;bottom:0;left:0;right:0;width:min(560px,100vw);height:100dvh;min-height:0;max-height:none;margin:0 auto;border-radius:0;z-index:2147483000;box-shadow:0 0 0 100vmax rgba(6,37,26,.82)}   /* PC: 놀이 판은 560px 기준이라 가운데 560 폭, 양옆은 그림자로 어두운 막(겹침 순서 문제 없게 ::after 대신 그림자) */
@media (max-width:760px){
  body.kd-full .kd.kd-fullbox{width:auto}
  body.kd-full .kd.kd-fullbox .kd-top{padding-top:env(safe-area-inset-top,0);height:calc(56px + env(safe-area-inset-top,0));flex-basis:calc(56px + env(safe-area-inset-top,0))}
  body.kd-full .kd.kd-fullbox .kd-overlay{top:calc(56px + env(safe-area-inset-top,0))}
}
/* 갈래 놀이 카드(2026-10-19 10:56): 놀이 상자는 hidden, 카드 '놀이 시작'으로 연다. 카드 규칙은 .pcs 안으로 한정(2026-10-19 14:24: 놀이 안 캐릭터 포즈 class "pc"(더하기 빼기 · 수세기 · 패턴 · 없어진 친구 · 짝)와 이름이 겹쳐 콩 뛸 때 흰 상자가 생겼다) */
.G .pg-cards{background:var(--cream,#FAF6EC)}
.G .pcs{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;padding:18px 0 24px}
.G .pcs .pc{display:flex;flex-direction:column;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 0 0 1px rgba(6,37,26,.08),0 10px 22px -16px rgba(6,37,26,.4);color:var(--ink,#06251A);text-decoration:none;transition:transform .25s,box-shadow .25s}
.G .pcs .pc:hover{transform:translateY(-2px)}
.G .pc-art{display:block;aspect-ratio:472/760;overflow:hidden;background:#E4EFE0}
.G .pc-art img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.G .pc-tx{display:flex;flex-direction:column;gap:3px;padding:10px 12px 12px}
.G .pc-tx b{font:700 15.5px/1.3 "GmarketSans",Pretendard,sans-serif;word-break:keep-all}
.G .pc-tx small{font-size:12.5px;color:#5F6E64;line-height:1.4;word-break:keep-all}
.G .pc-tx em{align-self:flex-start;margin-top:6px;padding:6px 12px;border-radius:999px;background:var(--y,#F7C948);color:#06251A;font:700 12.5px/1 Pretendard,sans-serif;font-style:normal}
.G .pcs .pc.on{box-shadow:0 0 0 2.5px var(--y,#F7C948),0 10px 22px -16px rgba(6,37,26,.4)}
.G .kd-sec[hidden]{display:none}
@media (max-width:760px){.G .pcs{grid-template-columns:repeat(2,1fr);gap:10px;padding:14px 0 18px}.G .pc-tx b{font-size:14.5px}}
/* 위 막대 정리(2026-10-19 11:11 대표 "제목은 아래에도 나오니 빼고, 소리는 아이콘으로, 깔끔하게"): [처음(집 아이콘)][오늘 n분] … [하트][소리 아이콘][X] */
.kd-top{gap:6px;padding:0 10px}
.kd-top .kd-back,.kd-top .kd-mute{min-width:44px;width:44px;height:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.kd-top .kd-back svg,.kd-top .kd-mute svg{width:22px;height:22px;display:block}
.kd-top .kd-mute .i-off{display:none}
.kd-top .kd-mute.off{text-decoration:none;background:rgba(0,0,0,.28)}
.kd-top .kd-mute.off .i-on{display:none}
.kd-top .kd-mute.off .i-off{display:block}
.kd-top .kd-sp{flex:1 1 auto}
.kd-top .kd-today{font-size:13px}
.kd-top .kd-heart{height:32px}
/* 배너 그림(.stack3)을 놀이 화면 비율 그대로(2026-10-19 11:10 대표 "게임 썸네일은 좀 더 길게, 게임이 보이게") */
.G .stack3{height:232px;top:12px}
.G .stack3 img{aspect-ratio:472/760;object-position:top}
@media (max-width:980px){.G .stack3{height:220px}}
@media (max-width:760px){.G .stack3{height:168px;margin-top:12px}.G .stack3 img{width:88px;bottom:-14px}}
