/* 게임 담벼락 — 공통 꼴. 글꼴은 게임 메이커와 같은 주아 · 고운돋움(우리 주소의 /maker/34/fonts/). 게임 메이커처럼 다크 모드에서도 밝은 색 그대로 */
:root{color-scheme:light dark;--bg:#eef6ff;--card:#fff;--ink:#1d2433;--sub:#56637c;--line:#d3e0f3;--soft:#e7f0ff;--blue:#2f62c9;--blue2:#3f5efb;
  --yel:#ffcc33;--yel-d:#d9a200;--teal:#0e9e90;--red:#d9481f;--pink:#ffe3dc;--mint:#e3f7ee;--lem:#fff4c7;--sky:#dff1ff;--lav:#efe7ff;
  --title:'Jua','Gowun Dodum',system-ui,sans-serif;--body:'Gowun Dodum',system-ui,-apple-system,'Malgun Gothic',sans-serif}
@media (prefers-color-scheme:dark){:root{--bg:#eef6ff;--card:#fff;--ink:#1d2433}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;-webkit-text-size-adjust:100%}
body{min-height:100vh}
a{color:var(--blue)}
h1,h2,h3{font-family:var(--title);font-weight:400;line-height:1.25;margin:0}
button,input,textarea{font:inherit;color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding:16px}
.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;background:#fff;border-bottom:2px solid var(--line)}
.top .brand{font-family:var(--title);font-size:22px;display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink)}
.top .grow{flex:1}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 12px;font-size:14px;background:var(--soft);color:var(--blue);white-space:nowrap}
.pill.warn{background:#fff1d6;color:#8a5a00}.pill.ok{background:var(--mint);color:#0b6e63}.pill.red{background:#ffe8e3;color:#b3261e}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:10px 18px;font-family:var(--title);font-size:18px;cursor:pointer;
  background:var(--soft);color:var(--blue);text-decoration:none;min-height:46px;white-space:nowrap;transition:transform .08s}
.btn:active{transform:translateY(2px)}
.btn.y{background:var(--yel);color:var(--ink);box-shadow:0 4px 0 var(--yel-d)}.btn.y:active{box-shadow:0 2px 0 var(--yel-d)}
.btn.b{background:var(--blue2);color:#fff;box-shadow:0 4px 0 #2a43c4}.btn.t{background:var(--teal);color:#fff;box-shadow:0 4px 0 #0a7a70}
.btn.ghost{background:#fff;border:2px solid var(--line);color:var(--ink)}.btn.red{background:#fff;border:2px solid #f2c4b8;color:var(--red)}
.btn.sm{font-size:15px;padding:6px 12px;min-height:38px;border-radius:11px}
.btn[disabled]{opacity:.45;cursor:default;transform:none}
.card{background:var(--card);border:2px solid var(--line);border-radius:20px;padding:16px}
.muted{color:var(--sub)}.small{font-size:14px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.field{display:flex;flex-direction:column;gap:6px;font-family:var(--title);font-size:17px}
.field input,.field textarea{font-family:var(--body);font-size:18px;padding:10px 14px;border:2px solid var(--line);border-radius:12px;background:#fff;width:100%}
.field input:focus,.field textarea:focus{outline:3px solid #b9cdf7;border-color:var(--blue2)}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:14px;padding:10px 18px;z-index:99;max-width:calc(100vw - 32px);text-align:center}
.sheet{position:fixed;inset:0;background:rgba(20,30,50,.45);display:flex;align-items:center;justify-content:center;padding:16px;z-index:90}
.sheet>div{background:#fff;border-radius:22px;padding:20px;width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto}
.sheet h2{font-size:24px;margin-bottom:8px}
[hidden]{display:none!important}
.ai-tag{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:999px;background:#eef0ff;color:#4b4fb8;white-space:nowrap}
.empty{text-align:center;padding:40px 16px;color:var(--sub)}
.empty b{display:block;font-family:var(--title);font-size:22px;color:var(--ink);margin-bottom:6px;font-weight:400}

/* 첫 화면 */
.home{max-width:880px;margin:0 auto;padding:28px 16px 40px}
.home h1{font-size:clamp(30px,6vw,46px);text-align:center}
.home .lead{text-align:center;color:var(--sub);margin:8px 0 26px;font-size:18px}
.choose{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.choose .card{display:flex;flex-direction:column;gap:12px}
.choose .card h2{font-size:26px}
.big-emo{font-size:48px;line-height:1}

/* 담벼락(아이) */
.bhead{background:linear-gradient(135deg,#d6ebff,#f5faff);border-bottom:2px solid var(--line)}
.bhead .wrap{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.bhead h1{font-size:clamp(26px,4.5vw,40px)}
.bhead .grow{flex:1;min-width:220px}
.mine{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 10px}
.mine .mi{flex:0 0 auto;background:#fff;border:2px solid var(--line);border-radius:16px;padding:10px 12px;min-width:220px;max-width:300px;display:flex;flex-direction:column;gap:6px}
.mine .mi b{font-family:var(--title);font-weight:400;font-size:18px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;padding-top:6px}
.gcard{border-radius:22px;padding:16px;border:2px solid rgba(0,0,0,.06);display:flex;flex-direction:column;gap:8px;cursor:pointer;text-decoration:none;color:var(--ink);
  box-shadow:0 4px 0 rgba(29,36,51,.08);transition:transform .1s;min-height:210px;position:relative}
.gcard:hover{transform:translateY(-2px)}
.gcard .emo{font-size:52px;line-height:1.1}
.gcard h3{font-size:24px;word-break:keep-all;overflow-wrap:anywhere}
.gcard .by{color:var(--sub);font-size:15px}
.gcard .foot{margin-top:auto;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:15px}
.gcard .ver{position:absolute;top:12px;right:12px;font-size:12px;background:#fff;border-radius:999px;padding:2px 8px;color:var(--teal)}
.c0{background:var(--lem)}.c1{background:var(--sky)}.c2{background:var(--mint)}.c3{background:var(--pink)}.c4{background:var(--lav)}

/* 게임 보기 */
.viewer{display:flex;flex-direction:column;height:100vh;height:100dvh}
.vbar{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#fff;border-bottom:2px solid var(--line);flex-wrap:nowrap;min-height:58px}
.vbar .ttl{flex:1;min-width:0;font-family:var(--title);font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vstage{flex:1;position:relative;background:#0f172a}
.vstage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff}
.vfoot{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#fff;border-top:2px solid var(--line);flex-wrap:wrap}
.stk{display:inline-flex;align-items:center;gap:6px;border:2px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:16px;cursor:pointer;min-height:42px}
.stk.on{background:var(--lem);border-color:var(--yel)}
.stk b{font-family:var(--title);font-weight:400}
.rot{position:absolute;inset:0;background:rgba(15,23,42,.92);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:20px;z-index:5}
.rot b{font-family:var(--title);font-size:24px;font-weight:400}
.errbar{background:#fff3f0;color:#b3261e;padding:6px 12px;font-size:14px;border-bottom:2px solid #f2c4b8}

/* 선생님 화면 */
.tgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.thead{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}
.thead .card{display:flex;flex-direction:column;gap:8px}
.codebig{font-family:var(--title);font-size:44px;letter-spacing:4px;color:var(--blue2);line-height:1}
.linkrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.linkrow code{font-size:13px;background:var(--soft);border-radius:8px;padding:4px 8px;word-break:break-all;flex:1;min-width:160px}
.sec h2{font-size:24px;display:flex;align-items:center;gap:10px;margin:8px 0 10px}
.sec h2 .n{font-size:16px;background:var(--soft);color:var(--blue);border-radius:999px;padding:2px 10px;font-family:var(--body)}
.subs{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.sub{background:#fff;border:2px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px}
.sub.again{border-color:#bfe8e2}
.sub .h{display:flex;gap:10px;align-items:flex-start}
.sub .h .emo{font-size:34px;line-height:1}
.sub .h h3{font-size:20px;word-break:keep-all;overflow-wrap:anywhere}
.sub .meta{color:var(--sub);font-size:14px}
.sub .ask{background:#e9faf6;border-radius:12px;padding:8px 10px;font-size:15px}
.sub .note{background:#fff1d6;border-radius:12px;padding:8px 10px;font-size:14px;color:#6b4700}
.sub .note.err{background:#ffe8e3;color:#9c2a12}
.sub pre{white-space:pre-wrap;word-break:break-word;font-family:var(--body);font-size:14px;background:#f6f9ff;border-radius:12px;padding:10px;margin:0;max-height:280px;overflow:auto}
.sub .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}
.spin{display:inline-block;width:16px;height:16px;border:3px solid #b9cdf7;border-top-color:var(--blue2);border-radius:50%;animation:sp 1s linear infinite;vertical-align:-3px}
@keyframes sp{to{transform:rotate(360deg)}}
.cost{font-size:13px;color:var(--sub)}
.bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#fff;border:2px solid var(--line);border-radius:16px;padding:10px 14px}
/* 선생님 화면(단순판): 위에 반 이름 · 학급 코드 · 메뉴, 아래에 작품 카드 */
.ttop{position:sticky;top:0;z-index:20}
.tname{font-family:var(--title);font-size:22px}
.tcode{display:inline-flex;align-items:center;gap:8px;background:var(--soft);border-radius:14px;padding:4px 14px;color:var(--blue);font-size:15px}
.tcode b{font-family:var(--title);font-weight:400;font-size:30px;letter-spacing:3px;color:var(--blue2)}
.tbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:2px solid var(--line);border-radius:16px;padding:10px 14px;margin-bottom:14px}
.works{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.work{border-radius:20px;padding:14px;border:2px solid rgba(0,0,0,.06);display:flex;flex-direction:column;gap:6px;box-shadow:0 4px 0 rgba(29,36,51,.06)}
.work .whead{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.work .emo{font-size:44px;line-height:1.1}
.work h3{font-size:22px;word-break:keep-all;overflow-wrap:anywhere}
.work .by{color:var(--sub);font-size:14px}
.work .ask{background:rgba(255,255,255,.7);border-radius:12px;padding:6px 10px;font-size:14px}
.work .note{background:#fff1d6;border-radius:12px;padding:6px 10px;font-size:13px;color:#6b4700}
.work .note.err{background:#ffe8e3;color:#9c2a12}
.work .acts{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:auto}
.wst{font-size:13px;border-radius:999px;padding:3px 10px;background:#fff;white-space:nowrap}
.wst.new{background:var(--blue2);color:#fff}.wst.making{color:var(--blue)}.wst.ready{background:var(--yel);color:var(--ink)}
.wst.shown{background:var(--teal);color:#fff}.wst.error{background:#ffe8e3;color:#9c2a12}.wst.returned{color:var(--sub)}
.wmore{display:flex;flex-direction:column;gap:6px;background:rgba(255,255,255,.75);border-radius:12px;padding:8px}
.wmore pre{white-space:pre-wrap;word-break:break-word;font-family:var(--body);font-size:13px;margin:0;max-height:220px;overflow:auto}
.tempty{text-align:center;padding:60px 16px;color:var(--ink)}
.tempty .codebig{font-size:64px;margin:6px 0 14px}
.clist{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;padding-top:6px}
.cbtn{display:flex;flex-direction:column;gap:6px;border-radius:22px;padding:18px;text-decoration:none;color:var(--ink);border:2px solid rgba(0,0,0,.06);box-shadow:0 4px 0 rgba(29,36,51,.08);min-height:140px}
.cbtn b{font-family:var(--title);font-weight:400;font-size:26px}
.cbtn .ccode{font-family:var(--title);font-size:34px;letter-spacing:4px;color:var(--blue2)}
.cbtn .cst{font-size:14px;color:var(--sub);margin-top:auto}
.kban{background:#fff4c7;border:2px solid #f0d27a;color:#6b4700;border-radius:14px;padding:10px 14px;margin-bottom:12px;font-size:15px}
.kban.red{background:#ffe8e3;border-color:#f2b8aa;color:#9c2a12}
.bigov{position:fixed;inset:0;z-index:100;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px;text-align:center}
.bigov .bigx{position:absolute;top:16px;right:16px}
.bigov .bigl{font-family:var(--title);font-size:clamp(22px,4vw,44px);color:var(--sub)}
.bigov .bigc{font-family:var(--title);font-size:clamp(80px,20vw,260px);letter-spacing:.08em;color:var(--blue2);line-height:1}
.bigov .bigq{display:flex;align-items:center;gap:24px;font-size:clamp(16px,2.2vw,28px);text-align:left;line-height:1.5}
.bigov #qr{width:clamp(140px,20vw,260px)}.bigov #qr svg{width:100%;height:auto;display:block}
.foot{text-align:center;padding:24px 16px;font-size:14px;color:var(--sub)}
.msec{display:flex;flex-direction:column;gap:6px;border-top:2px solid var(--line);padding:10px 0}
@media (max-width:560px){.tname{font-size:18px}.tcode b{font-size:24px}.btn{font-size:16px;padding:8px 14px}.codebig{font-size:36px}.subs{grid-template-columns:minmax(0,1fr)}.vbar .ttl{font-size:17px}}
