@charset "UTF-8";
:root{--ink:#284c43;--cream:#fff9e8;--green:#2b7869;--yellow:#ffcf64}*{box-sizing:border-box}body{margin:0;background:#193e38;color:var(--ink);font-family:'Paperlogy','Malgun Gothic','Apple SD Gothic Neo',sans-serif}button,input{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,input:focus-visible{outline:4px solid #ef7956;outline-offset:3px}button:disabled{cursor:default;opacity:.45}#app{height:100dvh;min-height:540px;display:flex;flex-direction:column;overflow:hidden}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.topbar{height:58px;flex:none;background:var(--cream);display:flex;align-items:center;justify-content:space-between;padding:0 25px;gap:15px;border-bottom:2px solid #3a5548;z-index:4}.wordmark{background:none;border:0;text-align:left;font-size:16px;font-weight:900;letter-spacing:-.6px;padding:0}.wordmark small{display:block;letter-spacing:2px;font-size:8px;margin-bottom:2px}.top-actions{display:flex;align-items:center;gap:8px}.top-actions button,.utility{background:#fffdf4;border:1px solid #b6c1aa;border-radius:9px;padding:7px 12px;font-size:12px;font-weight:800;min-height:34px}.lesson-label{font-size:12px;margin-right:10px;font-weight:bold}.stage{position:relative;isolation:isolate;flex:1;min-height:0;overflow:hidden;background:#d9e9cc}.background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3}.stage:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#14372a08,transparent 50%,#14372a33);pointer-events:none;z-index:-1}.scene-heading{position:absolute;top:25px;left:30px;max-width:61%;filter:drop-shadow(0 3px 7px #fff7d6bb)}.kicker{display:inline-block;background:#fff8dded;border:1.5px solid #49664d;border-radius:30px;padding:5px 12px;font-size:12px;font-weight:800;box-shadow:0 3px 0 #314e3322}.scene-heading h1{margin:10px 0 0;font-size:clamp(23px,3vw,43px);line-height:1.25;letter-spacing:-1.5px;word-break:keep-all;color:#244b3b;text-shadow:2px 2px 0 #fffce8,-2px -2px 0 #fffce8,2px -2px 0 #fffce8,-2px 2px 0 #fffce8}.page-pin{position:absolute;right:25px;top:24px;background:#fff9e8f5;border:2px solid #3e5e46;padding:12px 20px;border-radius:15px;box-shadow:0 4px 0 #3e5e4644;transform:rotate(2deg);font-weight:900;font-size:22px;text-align:center;line-height:1.35}.page-pin small{display:block;font-size:11px;letter-spacing:1px}.dialogue-wrap{position:absolute;bottom:17px;left:3%;width:94%;min-height:166px;display:flex;align-items:flex-end}.sprite{position:absolute;width:clamp(155px,17vw,255px);height:clamp(210px,31vh,320px);object-fit:contain;object-position:bottom;bottom:0;z-index:2;pointer-events:none;filter:drop-shadow(0 5px 3px #173c3225)}.dialogue-wrap.left .sprite{left:-10px}.dialogue-wrap.right .sprite{right:-10px}.speech{position:relative;background:#fffbedf7;border:3px solid #3b5946;border-radius:22px;box-shadow:0 6px 0 #254f3a40;padding:25px 26px 17px;min-height:158px;width:100%;backdrop-filter:blur(5px)}.left .speech{margin-left:155px;padding-left:65px}.right .speech{margin-right:155px;padding-right:65px}.speaker{position:absolute;top:-19px;left:24px;background:#ffcf68;border:2px solid #3b5946;border-radius:12px;padding:5px 18px;font-size:14px;font-weight:900;box-shadow:0 3px 0 #3b594622}.right .speaker{left:auto;right:24px}.dialogue{font-size:clamp(18px,1.8vw,27px);line-height:1.5;font-weight:700;letter-spacing:-.6px;margin:0 0 11px;word-break:keep-all}.task{font-size:clamp(15px,1.35vw,20px);line-height:1.5;color:#386c59;margin:0;padding-top:9px;border-top:1px dashed #b8c6a9;font-weight:800;word-break:keep-all}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.chip{background:#e6edd7;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:700}.reveal-box{position:absolute;top:130px;left:30px;max-width:58%;background:#fffbe8f5;border:2px solid #3e5f48;border-radius:17px;padding:17px 23px;box-shadow:0 5px 0 #294d3730;z-index:3}.reveal-box ul{padding-left:20px;margin:0}.reveal-box li{font-size:clamp(15px,1.55vw,23px);line-height:1.65;font-weight:700;word-break:keep-all;margin:4px 0}.reveal-box[hidden]{display:none}.bottom{flex:none;background:var(--cream);border-top:2px solid #3d5d46;padding:12px 25px 10px;z-index:4}.timer-line{display:flex;align-items:center;gap:14px}.timer-label{width:120px;flex:none;font-size:12px;font-weight:900;line-height:1.5}.timer-label small{display:block;font-size:10px;color:#7c8368;font-weight:normal}.gauge{height:27px;border:2px solid #31583f;border-radius:20px;flex:1;background:#d9dfcd;overflow:hidden;position:relative;box-shadow:inset 0 3px 3px #173a2b12}.gauge:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 1px),#ffffff88 calc(10% - 1px),#ffffff88 10%);pointer-events:none}.fill{height:100%;background:linear-gradient(90deg,#72b197,#f6cc62);border-radius:20px;transition:width .24s linear}.gauge.expired{border-color:#b46e45;background:#f8dcb0}.gauge.expired:before{content:'시간이 끝났어요 · 마무리해요';position:absolute;inset:0;text-align:center;font-size:12px;font-weight:bold;z-index:2;line-height:23px}.time{min-width:78px;font-size:26px;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-1px}.timer-button{border:0;border-radius:11px;background:var(--green);color:white;font-size:13px;font-weight:800;padding:9px 16px;min-width:100px;min-height:39px}.small-btn{border:1px solid #aebb9e;background:#fffdf2;border-radius:8px;font-size:11px;min-height:32px;padding:5px 9px}.nav-line{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:9px}.nav-group{display:flex;gap:8px;align-items:center}.nav-button{background:#fffcef;border:1.5px solid #44604a;border-radius:10px;padding:8px 20px;min-height:38px;font-weight:800;font-size:13px}.nav-button.next{background:#ffcf68;box-shadow:0 3px 0 #b89c4f55}.counter{font-size:11px;color:#68785e;text-align:center}.counter strong{color:#355b41}.keyboard-hint{font-size:10px;color:#7c826b}.lesson-progress{height:3px;background:#d7dfc5;margin-top:9px;border-radius:3px;overflow:hidden}.lesson-progress i{display:block;height:100%;background:#83ae81}.landing{position:relative;flex:1;background:#d4e7c8;overflow:hidden;isolation:isolate;display:flex;align-items:center}.landing:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#fff4d7b3,#fff6da52 40%,transparent 62%);z-index:-1}.landing-copy{margin:0 0 0 5.3%;max-width:52%;padding-bottom:6vh}.landing-copy .badge{display:inline-block;background:#fff7deed;border:2px solid #5d7450;border-radius:30px;padding:6px 17px;font-weight:900;font-size:12px}.landing h1{font-size:clamp(38px,5.1vw,72px);line-height:1.16;letter-spacing:-3px;margin:18px 0;color:#244f3d;text-shadow:3px 3px 0 #fff6db,-2px -2px 0 #fff6db,2px -2px 0 #fff6db,-2px 2px 0 #fff6db;word-break:keep-all}.landing p{font-size:clamp(17px,1.6vw,23px);font-weight:800;line-height:1.6;color:#2a5e45;text-shadow:0 1px 5px #fff9dc}.landing-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:25px}.start{border:2px solid #2c5a43;border-radius:15px;background:#ffe19a;padding:14px 22px;box-shadow:0 5px 0 #2e563b66;font-weight:900;font-size:17px}.start.secondary{background:#fffbed}.landing-meta{position:absolute;left:5.3%;bottom:20px;font-size:11px;font-weight:800;padding:7px 11px;background:#fff7e6cc;border-radius:8px;color:#5b7358}.break-scene{display:flex;align-items:center;justify-content:center}.break-card{width:min(620px,85%);background:#fff8e9f5;border:3px solid #3e5e46;padding:35px 40px;border-radius:28px;text-align:center;box-shadow:0 7px 0 #38583d55}.break-card h1{font-size:36px;letter-spacing:-1px;line-height:1.35;margin:10px 0}.break-card p{font-size:18px;line-height:1.8}.break-card .small{font-size:12px;color:#758162}.break-card .start{margin:5px;font-size:15px}.break-icon{font-size:40px}dialog{width:min(920px,94vw);max-height:88dvh;padding:0;border:2px solid #3b5b46;border-radius:20px;background:#fffaf0;color:#254c3b;box-shadow:0 15px 80px #0d322c77}dialog::backdrop{background:#173a2bc2}.panel-head{position:sticky;top:0;background:#fff7e3;padding:20px 25px;border-bottom:1px solid #ced9bb;display:flex;justify-content:space-between;align-items:center;z-index:3}.panel-head h2{margin:0;font-size:22px;letter-spacing:-.8px}.panel-body{padding:22px 25px;font-size:15px;line-height:1.75}.panel-body h3{font-size:18px;margin:25px 0 9px}.panel-body h3:first-child{margin-top:0}.panel-body p{margin:8px 0}.panel-body ul,.panel-body ol{padding-left:24px}.callout{background:#e6edd8;padding:15px 18px;border-radius:12px}.teacher-tag{background:#eee5cd;padding:4px 9px;border-radius:5px;font-size:12px}.schedule{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:25px}.schedule th,.schedule td{padding:10px 8px;text-align:left;border-bottom:1px solid #d2d9c2;vertical-align:top}.schedule th{background:#e9eddc}.schedule button{border:0;background:none;text-align:left;font-weight:800;color:#286d52;padding:0}.schedule tr.current{background:#fff0ba}.mins{white-space:nowrap}.timing-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0}.timing-form input{width:80px;padding:8px;border:1px solid #9bb091;border-radius:7px;font-weight:bold}.toolbar-note{font-size:12px;color:#768167}.settings-row{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.settings-row button{padding:10px 16px;border:1px solid #9db090;background:#eaf0dc;border-radius:9px;font-weight:bold}.portrait-tip{display:none}#toast{position:fixed;bottom:145px;left:50%;transform:translateX(-50%);background:#234d40;color:white;max-width:85vw;font-size:13px;padding:11px 20px;border-radius:10px;z-index:20;pointer-events:none}#toast:empty{display:none}.book-activity .speech{border-color:#49624b;background:#fffceef9}.book-activity .kicker{background:#ffe7a6}.book-activity .task{color:#815a26}.book-activity .chip{background:#f4e5bd}
@media(max-height:760px) and (min-width:800px){.scene-heading{top:18px}.scene-heading h1{font-size:32px}.dialogue-wrap{min-height:140px;bottom:13px}.speech{min-height:140px;padding-top:23px}.dialogue{font-size:21px;margin-bottom:8px}.task{font-size:17px}.chips{margin-top:6px}.sprite{height:235px}.bottom{padding:9px 22px 7px}.page-pin{top:18px;padding:8px 15px;font-size:19px}.reveal-box{top:112px}.reveal-box li{font-size:18px}}
@media(max-width:800px){.topbar{padding:0 14px;height:51px}.top-actions{gap:5px}.top-actions button{font-size:10px;padding:6px 8px}.lesson-label{display:none}.wordmark{font-size:13px}.scene-heading{top:18px;left:18px;max-width:70%}.scene-heading h1{font-size:27px}.page-pin{right:13px;top:17px;padding:7px 12px;font-size:15px}.page-pin small{font-size:9px}.sprite{width:145px;height:210px}.left .speech{margin-left:100px;padding-left:45px}.right .speech{margin-right:100px;padding-right:45px}.speech{padding:22px 17px 14px;border-radius:17px}.dialogue{font-size:18px}.task{font-size:15px}.chip{font-size:10px}.timer-label{width:80px;font-size:10px}.timer-label small{display:none}.timer-line{gap:8px}.time{font-size:23px;min-width:65px}.timer-button{min-width:75px;padding:8px 10px;font-size:11px}.timer-line .small-btn{display:none}.bottom{padding:10px 14px}.keyboard-hint{display:none}.reveal-box{top:110px;left:18px;max-width:70%;padding:12px 17px}.reveal-box li{font-size:15px}.landing h1{font-size:46px}.landing-copy{max-width:62%}.landing p{font-size:18px}.start{font-size:14px;padding:12px 16px}.nav-button{font-size:12px;padding:7px 14px}}
@media(max-width:520px){#app{min-height:670px;overflow:auto}.topbar{height:58px}.top-actions button{padding:5px 6px}.fullscreen-btn{display:none}.wordmark small{font-size:6px;letter-spacing:1px}.wordmark{max-width:125px;font-size:12px}.stage{min-height:475px}.background{object-position:62% center}.scene-heading{max-width:87%;top:18px;left:16px}.scene-heading h1{font-size:25px;margin-top:8px}.page-pin{top:103px;right:15px;transform:none;font-size:15px}.dialogue-wrap{left:3%;width:94%;bottom:12px}.sprite{width:120px;height:200px;bottom:150px}.dialogue-wrap.left .sprite{left:0}.dialogue-wrap.right .sprite{right:0}.left .speech,.right .speech{margin:0;padding:23px 17px 14px}.dialogue{font-size:17px}.task{font-size:14px}.speaker{font-size:12px}.chips{gap:4px}.chip{font-size:9px}.reveal-box{top:125px;max-width:calc(100% - 32px);left:16px;z-index:5}.timer-label{display:none}.gauge{height:24px}.time{font-size:22px;min-width:62px}.timer-button{font-size:10px;min-width:65px;padding:8px}.nav-line{gap:4px}.nav-button{padding:7px 11px}.counter{font-size:9px}.reveal-toggle{font-size:10px!important;padding:7px 9px!important}.landing{min-height:620px;align-items:flex-start}.landing-copy{margin:40px 22px;max-width:93%;padding:0}.landing h1{font-size:41px;letter-spacing:-2px}.landing p{font-size:16px}.landing:after{background:linear-gradient(180deg,#fff7ddaf,#fff5d968 50%,transparent 90%)}.landing .background{object-position:66% center}.landing-actions{max-width:300px}.start{font-size:13px;padding:12px 15px}.landing-meta{bottom:14px;left:20px;font-size:10px}.portrait-tip{display:block;font-size:10px;color:#556e51;margin-top:14px}.break-card{padding:25px 20px}.break-card h1{font-size:28px}.break-card p{font-size:16px}.panel-body{padding:18px}.panel-head{padding:17px}.panel-head h2{font-size:19px}.schedule{font-size:11px}.schedule th,.schedule td{padding:8px 5px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media print{body{background:white}#app,#toast{display:none}dialog[open]{position:static;border:0;max-height:none;width:100%;box-shadow:none}.panel-head{position:static}.panel-head button,.settings-row{display:none}.schedule{break-inside:avoid}}

@font-face{font-family:Paperlogy;src:url('fonts/Paperlogy-5Medium.woff2') format('woff2');font-weight:100 600;font-display:swap}@font-face{font-family:Paperlogy;src:url('fonts/Paperlogy-8ExtraBold.woff2') format('woff2');font-weight:700 900;font-display:swap}
body{word-break:keep-all;overflow-wrap:anywhere}.timer-label{width:155px;font-size:13px}.timer-label small{font-size:11px}.top-actions button,.nav-button{font-size:14px}.chip{font-size:13px}.dialogue{font-size:clamp(22px,1.9vw,30px)}.task{font-size:clamp(18px,1.5vw,23px)}
.dialogue-wrap{--character:clamp(160px,18vw,250px);gap:10px}.sprite{width:var(--character);height:clamp(220px,34vh,340px)}.dialogue-wrap.left .sprite{left:0}.dialogue-wrap.right .sprite{right:0}.left .speech{margin-left:var(--character);padding-left:24px}.right .speech{margin-right:var(--character);padding-right:24px}
.stage.showing-reveal .scene-heading,.stage.showing-reveal .page-pin{visibility:hidden}.reveal-box{top:18px;left:3%;max-width:none;width:94%;max-height:calc(100% - 245px);overflow:auto;overscroll-behavior:contain}.reveal-box li{font-size:clamp(18px,1.7vw,25px)}
.phase-status{display:flex;align-items:center;gap:10px;font-size:12px;margin:0 0 7px;color:#4b6652}.phase-status strong{color:#254e3e}.phase-status small{margin-left:auto;font-size:11px}.phase-mark{position:absolute;top:0;bottom:0;width:2px;background:#2b634e66;z-index:1}.gauge:after{background:none}.time{font-size:28px}.timer-button{font-size:14px;min-width:126px}.small-btn{font-size:12px}.image-failed{background:#dce8ce}.image-failed:after{background:linear-gradient(140deg,#f6ecd0,#bad6c3)}
@media(max-height:760px) and (min-width:801px){.dialogue{font-size:22px}.task{font-size:18px}.dialogue-wrap{bottom:12px}.speech{padding-bottom:13px}.sprite{height:245px}.chips{margin-top:7px}.reveal-box{top:15px;max-height:calc(100% - 235px)}.scene-heading h1{font-size:32px}.phase-status{font-size:11px;margin-bottom:5px}}
@media(max-width:1000px) and (min-width:801px){.timer-label{width:125px;font-size:11px}.timer-line{gap:8px}.timer-button{min-width:108px}.dialogue-wrap{--character:165px}.dialogue{font-size:20px}.task{font-size:17px}}
@media(max-width:800px){.dialogue-wrap{--character:135px}.dialogue{font-size:19px}.task{font-size:16px}.timer-label{width:100px;font-size:11px}.timer-button{min-width:95px;font-size:11px}.phase-status small{display:none}.reveal-box{max-height:calc(100% - 255px)}}
@media(max-width:520px){.left .speech,.right .speech{margin:0;padding:23px 17px 14px}.sprite{height:190px;width:120px}.dialogue{font-size:18px}.task{font-size:15px}.chip{font-size:10px}.reveal-box{max-height:190px}.phase-status{font-size:10px}.timer-button{min-width:85px}}
.timer-label{white-space:nowrap}.phase-status strong,.phase-status span{flex-shrink:0}@media(max-width:1000px){.phase-status{flex-wrap:wrap;gap:5px 10px}.phase-status small{display:none}}
