/* 아이 화면 — 글자를 몰라도, 누르기만 하면 되게 */
:root{--ink:#222;--cream:#fff7d6;--yellow:#ffe94a;--red:#ff6b5e;--blue:#5aa9ff;--green:#5fd07a;--pink:#ff9ecb;--u:min(1vw,1.6vh)}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0;overflow:hidden;overscroll-behavior:none}
body{background:var(--cream);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic','Noto Sans KR',sans-serif;font-weight:800;
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0;touch-action:manipulation}
[hidden]{display:none !important}

.screen{position:fixed;inset:0;display:none;padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
.screen.is-on{display:flex;flex-direction:column}

/* 공통 단추 */
.btn-round{width:calc(var(--u)*11);height:calc(var(--u)*11);min-width:64px;min-height:64px;border-radius:50%;background:#fff;border:5px solid var(--ink);box-shadow:0 6px 0 var(--ink);font-size:calc(var(--u)*5.2);display:grid;place-items:center;line-height:1}
.btn-round:active,.tile:active,.teach-btn:active,.slot:active,.btn-go:active,.pick:active{transform:translateY(5px);box-shadow:0 1px 0 var(--ink)}
.btn-home{position:absolute;left:max(14px,env(safe-area-inset-left));top:max(14px,env(safe-area-inset-top));z-index:5}
.caption{margin:0;font-size:clamp(15px,calc(var(--u)*2.4),26px);font-weight:700;text-align:center;line-height:1.35;color:#444;min-height:1.35em;word-break:keep-all}

/* 아잉이 */
.aying{width:100%;max-width:calc(var(--u)*30);margin:0 auto}
.aying-svg{display:block;width:100%;height:auto;overflow:visible}
.ay-float{animation:ay-float 2.6s ease-in-out infinite;transform-origin:50% 100%}
.ay-bulb{animation:ay-bulb 1.6s ease-in-out infinite}
.ay-eyes,.ay-mouth{display:none}
.aying[data-mood="idle"] .ay-eyes-open,.aying[data-mood="happy"] .ay-eyes-happy,.aying[data-mood="think"] .ay-eyes-think,.aying[data-mood="oops"] .ay-eyes-oops,.aying[data-mood="sleep"] .ay-eyes-sleep{display:block}
.aying[data-mood="idle"] .ay-mouth-smile,.aying[data-mood="happy"] .ay-mouth-smile,.aying[data-mood="sleep"] .ay-mouth-smile{display:block}
.aying[data-mood="think"] .ay-mouth-o,.aying[data-mood="oops"] .ay-mouth-o{display:block}
.aying[data-mood="idle"] .ay-eyes-open{animation:ay-blink 4s infinite;transform-origin:100px 102px}
.aying[data-mood="think"] .ay-bulb{animation-duration:.5s}
.aying[data-mood="sleep"] .ay-float{animation-duration:5s}
.aying[data-mood="sleep"] .ay-bulb{animation:none;fill:#bbb}
.aying.ay-cheer .aying-svg{animation:ay-cheer .7s ease}
@keyframes ay-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes ay-bulb{0%,100%{fill:#ff8a3d}50%{fill:#ffd21f}}
@keyframes ay-blink{0%,94%,100%{transform:scaleY(1)}97%{transform:scaleY(.1)}}
@keyframes ay-cheer{0%{transform:translateY(0) rotate(0)}30%{transform:translateY(-14%) rotate(-8deg)}60%{transform:translateY(0) rotate(8deg)}100%{transform:none}}

/* 처음 화면 */
#home{align-items:center;justify-content:space-evenly;gap:calc(var(--u)*2)}
.home-top{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%}
.home-aying{width:calc(var(--u)*19);min-width:110px}
.tiles{display:flex;gap:calc(var(--u)*3);width:100%;max-width:1200px;justify-content:center}
.tile{flex:0 1 auto;height:min(40vh,29vw,340px);aspect-ratio:1/1;border-radius:calc(var(--u)*5);border:6px solid var(--ink);box-shadow:0 8px 0 var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--u)*1.5);padding:10px}
.tile-rps{background:var(--yellow)}.tile-free{background:#bfe3ff}.tile-spell{background:#ffd3e8}
.tile-emoji{font-size:calc(var(--u)*7);line-height:1.1;letter-spacing:-.05em}
.tile-name{font-size:clamp(14px,calc(var(--u)*2.3),24px);font-weight:800;word-break:keep-all;text-align:center;line-height:1.25}
.home-class{margin:0;font-size:13px;font-weight:600;color:#8a8266;min-height:1.2em}

/* 가르치기 · 가위바위보 */
#play{gap:calc(var(--u)*2)}
.stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:calc(var(--u)*5)}
.cam-box{position:relative;height:100%;max-height:min(100%,56vw);aspect-ratio:1/1;border-radius:calc(var(--u)*5);border:6px solid var(--ink);overflow:hidden;background:#333;box-shadow:0 8px 0 var(--ink)}
.cam-box video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:block}
.cam-box.is-learning{border-color:var(--green);box-shadow:0 8px 0 var(--green),0 0 0 8px rgba(95,208,122,.35)}
.cam-badge{position:absolute;right:4%;bottom:4%;width:32%;aspect-ratio:1/1;border-radius:50%;background:#fff;border:5px solid var(--ink);display:grid;place-items:center;font-size:calc(var(--u)*6.5);line-height:1}
.count{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(255,247,214,.82);font-size:calc(var(--u)*17);line-height:1}
.count small{font-size:.24em;margin-top:.3em}
.count.pop{animation:pop .35s ease}
.think{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:calc(var(--u)*27);min-width:130px;max-height:100%}
.think .aying{width:calc(var(--u)*18);min-width:84px}
.bubble{position:relative;flex:none;width:calc(var(--u)*14);height:calc(var(--u)*12);min-width:84px;min-height:72px;background:#fff;border:5px solid var(--ink);border-radius:46% 46% 46% 46%/52% 52% 48% 48%;display:grid;place-items:center;font-size:calc(var(--u)*7.5);line-height:1;margin-bottom:calc(var(--u)*2.4)}
.bubble::after{content:"";position:absolute;bottom:calc(var(--u)*-2.6);left:50%;width:calc(var(--u)*3);height:calc(var(--u)*3);margin-left:calc(var(--u)*-1.5);background:#fff;border:5px solid var(--ink);border-radius:50%}
.bubble img{width:74%;height:74%;object-fit:cover;border-radius:22%;border:4px solid var(--ink)}
.bubble.pop span,.bubble.pop img{animation:pop .3s ease}
.bubble.unsure{opacity:.75}
@keyframes pop{0%{transform:scale(.5)}70%{transform:scale(1.18)}100%{transform:scale(1)}}

.panel{display:none;align-items:center;justify-content:center;gap:calc(var(--u)*3);min-height:calc(var(--u)*15)}
#play[data-mode="teach"] .panel-teach,#play[data-mode="game"] .panel-game{display:flex}
.teach-btns{display:flex;gap:calc(var(--u)*3)}
.teach-btn{position:relative;width:calc(var(--u)*15);height:calc(var(--u)*15);min-width:88px;min-height:88px;border-radius:calc(var(--u)*4.5);border:6px solid var(--ink);box-shadow:0 8px 0 var(--ink);font-size:calc(var(--u)*8);line-height:1;display:grid;place-items:center;overflow:hidden;touch-action:none;background:#fff}
.teach-btn .fill{position:absolute;left:0;right:0;bottom:0;height:var(--h,0%);background:var(--c);transition:height .15s}
.teach-btn .face{position:relative;z-index:1;display:grid;place-items:center;width:100%;height:100%}
.teach-btn .face img{width:78%;height:78%;object-fit:cover;border-radius:20%;border:4px solid var(--ink)}
.teach-btn.is-hold{transform:translateY(5px) scale(1.04);box-shadow:0 1px 0 var(--ink)}
.teach-btn.is-full::after{content:"⭐";position:absolute;right:3%;top:2%;font-size:.3em;z-index:2}
.btn-game{background:var(--green);animation:wiggle 1.2s ease-in-out infinite}
.btn-wipe{background:#eee}
.btn-wipe.is-hold{animation:shake .25s linear infinite}
@keyframes wiggle{0%,100%{transform:rotate(-6deg) scale(1)}50%{transform:rotate(6deg) scale(1.1)}}
@keyframes shake{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
#play[data-source="parent"] .btn-back{display:none}

.btn-go{width:calc(var(--u)*15);height:calc(var(--u)*15);min-width:88px;min-height:88px;border-radius:50%;background:var(--green);border:6px solid var(--ink);box-shadow:0 8px 0 var(--ink);font-size:calc(var(--u)*7);display:grid;place-items:center;line-height:1}
.btn-go[disabled]{opacity:.35}
.stars{position:absolute;right:max(16px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));max-width:46vw;text-align:right;font-size:calc(var(--u)*4.2);letter-spacing:.04em;line-height:1.2}

/* 주문 카드 */
#spell{gap:calc(var(--u)*1.2)}
.spell-top{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:calc(var(--u)*4);padding-left:calc(var(--u)*12)}
.scene-wrap{height:100%;aspect-ratio:4/3;max-width:64vw;display:flex;align-items:center}
.spell-side{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--u)*2.5);width:calc(var(--u)*21);min-width:110px;max-height:100%}
.spell-side .aying{max-width:calc(var(--u)*14)}
.prev-wrap{position:relative;width:100%}
.prev-wrap .scene{border-width:4px;opacity:.9}
.prev-tag{position:absolute;left:-6px;top:-10px;background:var(--ink);color:#fff;font-size:clamp(11px,calc(var(--u)*1.7),16px);padding:2px 8px;border-radius:99px}
.btn-save{background:var(--yellow);animation:wiggle 1.6s ease-in-out infinite}
.caption-spell{font-size:clamp(17px,calc(var(--u)*3),32px);color:var(--ink);font-weight:800}
.slots-row{display:flex;justify-content:center;align-items:center;gap:calc(var(--u)*3)}
.slots{display:flex;justify-content:center;gap:calc(var(--u)*3)}
.slot{width:calc(var(--u)*15);height:calc(var(--u)*15);min-width:76px;min-height:76px;border-radius:calc(var(--u)*4.5);border:6px solid var(--ink);box-shadow:0 8px 0 var(--ink);background:var(--c);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;line-height:1}
.slot-emoji{font-size:calc(var(--u)*6);line-height:1.25}
.slot-name{font-size:clamp(11px,calc(var(--u)*1.9),18px);font-weight:800}
.slot.pop .slot-emoji{animation:pop .3s ease}

/* 겹침 화면 */
.overlay{position:fixed;inset:0;z-index:20;background:rgba(34,34,34,.55);display:grid;place-items:center;padding:16px}
.overlay-soft{background:rgba(255,247,214,.94)}
.overlay-sleep{background:#27264a;z-index:30}
.load-box,.msg-box{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.load-box .aying,.msg-box .aying{width:calc(var(--u)*24);min-width:120px}
.dots{display:flex;gap:10px}
.dots i{width:16px;height:16px;border-radius:50%;background:var(--ink);animation:dot 1s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,100%{transform:translateY(0);opacity:.3}50%{transform:translateY(-10px);opacity:1}}
.msg-box{background:#fff;border:5px solid var(--ink);border-radius:28px;padding:26px 28px;max-width:440px}
.msg-box-sleep{background:#33325e;border-color:#6f6db0;color:#fff}
.msg-emoji{font-size:64px;line-height:1}
.msg-title{margin:0;font-size:24px}
.msg-text{margin:0;font-size:16px;font-weight:600;line-height:1.5;word-break:keep-all}
.msg-hint{margin:6px 0 0;font-size:12.5px;font-weight:500;opacity:.6}
.btn-text{padding:14px 28px;border-radius:99px;background:var(--yellow);border:4px solid var(--ink);font-size:18px}
.btn-text-sub{background:#fff;border-width:3px;font-size:15px;padding:10px 22px}
.picker-box{position:relative;background:#fff;border:6px solid var(--ink);border-radius:32px;padding:26px;max-width:min(92vw,900px);max-height:88vh;overflow:auto}
.picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--u)*15),1fr));gap:14px;min-width:min(80vw,620px)}
.pick{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border-radius:22px;border:5px solid var(--ink);box-shadow:0 6px 0 var(--ink);background:var(--cream)}
.pick-emoji{font-size:calc(var(--u)*8);line-height:1.1}
.pick-name{font-size:clamp(13px,calc(var(--u)*2),20px)}
.btn-close{position:absolute;right:-14px;top:-14px;width:60px;height:60px;min-width:0;min-height:0;font-size:24px}

.confetti{position:fixed;inset:0;pointer-events:none;z-index:40;overflow:hidden}
.confetti span{position:absolute;top:-60px;animation:fall 2.1s ease-in forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(540deg)}}

/* 세로 화면 (휴대폰) */
@media (orientation:portrait){
  :root{--u:min(1.55vw,1vh)}
  #home{justify-content:center;gap:3vh}
  .tiles{flex-direction:column;align-items:center;gap:2.2vh}
  .tile{flex:none;width:min(86vw,460px);max-width:none;aspect-ratio:auto;height:17vh;flex-direction:row;gap:5vw}
  .tile-emoji{font-size:9vw}
  .stage{flex-direction:column;gap:1.5vh}
  .cam-box{height:auto;width:min(86vw,46vh);max-height:none}
  .think{flex-direction:row;width:100%;gap:4vw}
  .think .aying{width:22vw;margin:0;min-width:0}
  .think .caption{display:none}
  .bubble{margin-bottom:0}
  .bubble::after{bottom:auto;left:auto;right:calc(var(--u)*-2.6);top:50%;margin:calc(var(--u)*-1.5) 0 0}
  .spell-top{flex-direction:column;padding-left:0;gap:1.5vh}
  .scene-wrap{height:auto;width:min(92vw,52vh);max-width:none}
  .spell-side{flex-direction:row;width:100%;gap:5vw}
  .prev-wrap{width:30vw}
  .spell-side .aying{max-width:20vw;margin:0}
  .teach-btns{gap:3vw}
  .teach-btn{width:24vw;height:24vw;font-size:13vw}
  .btn-go{width:30vw;height:30vw;font-size:14vw}
  .panel{gap:4vw}
  .slots-row{gap:2vw}
  .slots{gap:2vw}
  .slot{width:17.5vw;height:17.5vw;min-width:0;min-height:0;border-width:4px;box-shadow:0 6px 0 var(--ink);border-radius:5vw}
  .slot-emoji{font-size:9vw;line-height:1.2}
  .slot-name{display:none}
  .btn-save{width:13vw;height:13vw;min-width:0;min-height:0;font-size:6.5vw;border-width:4px}
}
@media (prefers-reduced-motion:reduce){.ay-float,.ay-bulb,.btn-game{animation:none}}

@media (orientation:landscape) and (max-height:520px){.think .caption{display:none}.home-class{display:none}}
