:root{--bg:#fff8e7;--accent:#ffb347;--accent-dark:#e8912a;--ink:#333;--muted:#777;--card:#fff;--line:#e4ddcc;--danger:#c0392b;--glow:#4cc9f0;--chosen:#90e0a0;--min-target:96px;--target-gap:24px}*{box-sizing:border-box}html,body,#root{height:100%;color:var(--ink);background:var(--bg);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button{font:inherit;cursor:pointer}.teacher{min-height:100%}.teacher-nav{background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:20px;padding:12px 24px;display:flex}.teacher-nav a{color:var(--ink);text-decoration:none}.teacher-nav a.active{color:var(--accent-dark);font-weight:600}.teacher-nav .link{margin-left:auto}.teacher-main{max-width:960px;margin:0 auto;padding:24px 16px 48px}.teacher h1{margin:0 0 16px;font-size:1.5rem}.teacher h2{margin:16px 0 8px;font-size:1.1rem}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;padding:16px 20px}.login{place-items:center;padding:24px 16px;display:grid}.login .card{gap:12px;width:min(360px,100%);display:grid}.login label{gap:4px;display:grid}.teacher input,.teacher select{font:inherit;border:1px solid var(--line);border-radius:8px;min-width:0;padding:8px 10px}.teacher button:not(.link){background:var(--accent);color:#222;border:none;border-radius:8px;padding:8px 16px;font-weight:600}.teacher button:disabled{opacity:.5;cursor:default}.teacher .link{color:var(--accent-dark);background:0 0;border:none;padding:0;text-decoration:underline}.teacher .link.danger{color:var(--danger)}.row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--line);justify-content:space-between;padding:10px 0;display:flex}.table{border-collapse:collapse;background:var(--card);width:100%;font-size:.95rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}.table .actions{gap:12px;display:flex}.muted{color:var(--muted)}.error{color:var(--danger)}.tag{color:var(--muted);border:1px solid var(--line);border-radius:6px;margin-left:8px;padding:2px 6px;font-size:.75rem;font-weight:400}.stars{color:var(--accent-dark);margin-left:8px}.preview-row{flex-wrap:wrap;gap:12px;margin:8px 0;display:flex}.json-pair{grid-template-columns:1fr 1fr;gap:12px;display:grid}.json-pair pre{border:1px solid var(--line);background:#faf6ec;border-radius:8px;margin:8px 0 0;padding:10px;font-size:.8rem;overflow:auto}.created code{word-break:break-all}.sprite-group{place-items:center;gap:2px;display:inline-grid}@media (width<=640px){.json-pair{grid-template-columns:1fr}}.play{overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:radial-gradient(circle at 50% 30%, #fffdf5, var(--bg) 70%);grid-template-rows:64px 1fr 40px;width:100vw;height:100dvh;display:grid;position:relative;overflow:hidden}.play-center{flex-direction:column;grid-row:1/-1;justify-content:center;align-items:center;gap:24px;padding:16px;display:flex}.greeting{margin:0;font-size:2rem}.adult-line{color:var(--muted);text-align:center;margin:0;font-size:1rem}.prompt-text{white-space:nowrap;text-overflow:ellipsis;align-self:center;max-width:100vw;padding:0 120px;overflow:hidden}.big-button{min-width:var(--min-target);min-height:var(--min-target);background:var(--accent);color:#222;box-shadow:0 6px 0 var(--accent-dark);border:none;border-radius:48px;padding:0 40px;font-size:2.2rem;font-weight:700;transition:transform .12s}.big-button:active{box-shadow:0 2px 0 var(--accent-dark);transform:translateY(4px)}.big-button:disabled{opacity:.4;cursor:default}.play-button{min-height:128px;padding:0 64px;font-size:3rem}.speaker{width:var(--min-target);height:var(--min-target);background:var(--card);z-index:5;border:none;border-radius:50%;font-size:2.6rem;position:absolute;top:12px;right:12px;box-shadow:0 4px 12px #00000026}.stars-bar{padding-right:var(--min-target);padding-left:var(--min-target);justify-content:center;align-items:center;gap:8px;display:flex}.star{color:#0000;-webkit-text-stroke:2px var(--accent-dark);font-size:2.2rem;transition:color .3s}.star.filled{-webkit-text-stroke:0}.star.stars-3{color:#ffc107}.star.stars-2{color:#ffd54f}.star.stars-1{color:#ffe082}.final-stars{flex-wrap:wrap;justify-content:center;gap:4px;max-width:80vw;display:flex}.step-area{justify-content:center;align-items:center;min-height:0;padding:8px 16px;display:flex;position:relative}.done-button{min-width:128px;padding:0 32px;position:absolute;bottom:16px;right:24px}.target-box{min-width:var(--min-target);min-height:var(--min-target);background:var(--card);border:4px solid #0000;border-radius:24px;justify-content:center;align-items:center;padding:12px;transition:transform .15s,box-shadow .15s;display:flex;box-shadow:0 4px 12px #0000001f}.highlight{animation:.9s ease-in-out infinite pulse;border-color:var(--glow)!important;box-shadow:0 0 0 8px #4cc9f059!important}.chosen{background:#eefbf1;border-color:var(--chosen)!important;box-shadow:0 0 0 6px #90e0a073!important}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.story{align-items:center;gap:48px;display:flex}.story-frame{flex-direction:column;align-items:center;gap:12px;display:flex}.caption{color:var(--muted);margin:0;font-size:1.1rem}.next{font-size:3rem}.pick-one{justify-content:center;align-items:center;gap:40px;display:flex}.tap-scene-wrap{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.scene{aspect-ratio:16/9;border:2px dashed var(--line);background:#fffdf3;border-radius:24px;width:min(100%,177.778dvh - 213.333px);max-height:100%;position:relative}.scene-object{min-width:var(--min-target);min-height:var(--min-target);aspect-ratio:1;background:0 0;border:4px solid #0000;border-radius:20px;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute}.scene-object.chosen{background:#eefbf1}.timer{background:var(--line);border-radius:5px;height:10px;position:absolute;top:-6px;left:10%;right:10%;overflow:hidden}.timer-fill{background:var(--accent);height:100%;transition:width .25s linear}.order{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.order-row{gap:32px;display:flex}.order-card{touch-action:none}.order-card.dragging{opacity:.6;z-index:2}.drag-step{grid-template-rows:1fr auto;gap:16px;width:100%;height:100%;display:grid;position:relative}.targets-row{justify-content:center;align-items:flex-start;gap:40px;padding-top:8px;display:flex}.drop-target{border:4px dashed var(--line);background:#fff9;border-radius:24px;flex-direction:column;align-items:center;min-width:160px;min-height:160px;padding:8px;transition:transform .15s,border-color .15s;display:flex}.drop-target.over{border-color:var(--accent);transform:scale(1.04)}.in-target{flex-wrap:wrap;justify-content:center;gap:4px;max-width:200px;min-height:56px;display:flex}.placed{animation:.25s ease-out pop}.placed-button{background:0 0;border:none;padding:0}@keyframes pop{0%{transform:scale(.4)}to{transform:scale(1)}}.tray{justify-content:center;gap:var(--target-gap);flex-wrap:wrap;min-height:136px;padding:12px 140px 12px 16px;display:flex}.drag-item{background:var(--card);touch-action:none;border:4px solid #0000;border-radius:24px;justify-content:center;align-items:center;width:120px;height:120px;transition:transform .22s ease-out;display:flex;box-shadow:0 4px 12px #0000001f}.drag-item.dragging{z-index:3;transition:none;position:relative}.ttt{justify-content:center;align-items:center;display:flex;position:relative}.ttt-board{grid-template-columns:repeat(3, var(--min-target));gap:10px;display:grid}.ttt-cell{width:var(--min-target);height:var(--min-target);background:var(--card);border:none;border-radius:16px;font-size:2.6rem;box-shadow:0 3px 8px #0000001f}.ttt-cell:disabled{cursor:default}.ttt-result{filter:drop-shadow(0 4px 8px #0000004d);font-size:7rem;animation:.4s ease-out pop;position:absolute}.hand{pointer-events:none;z-index:4;filter:drop-shadow(0 4px 6px #0000004d);font-size:5rem;position:absolute;top:50%;left:50%}.hand-tap{animation:1.2s ease-in-out infinite hand-tap}.hand-drag{animation:2.4s ease-in-out infinite hand-drag}@keyframes hand-tap{0%,to{transform:translate(-50%,-30%)scale(1)}50%{transform:translate(-50%,-30%)scale(.8)}}@keyframes hand-drag{0%{transform:translate(-50%,60%)}20%{transform:translate(-50%,60%)scale(.85)}70%{transform:translate(-50%,-140%)scale(.85)}85%{transform:translate(-50%,-140%)scale(1)}to{transform:translate(-50%,60%)}}.rotate-hint{display:none}@media (orientation:portrait){.play .rotate-hint{z-index:10;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:16px;font-size:5rem;display:flex;position:absolute;inset:0}}
