@import"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&family=Noto+Serif+KR:wght@500;700&display=swap";:root{font-family:Noto Sans KR,sans-serif;color:#eee9dc;background:#0e1116;font-synthesis:none;--gold: #d5ac6b;--gold-soft: #efc47d;--panel: #111920d9;--good: #8fd39a;--bad: #f09a8a}*{box-sizing:border-box}body{margin:0;overflow:hidden}button{font:inherit;cursor:pointer}button:focus-visible,[role=button]:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--gold-soft);outline-offset:2px}#app,#game{width:100vw;height:100vh;display:block}#game{touch-action:none}.hidden{display:none!important}.serif{font-family:"Noto Serif KR",Batang,serif}.dim{opacity:.7;font-size:.92em}.big{font-size:1.25em}.huge{font-size:26px;color:var(--gold-soft);margin:4px 0 10px;letter-spacing:.08em}.good,.green{color:var(--good)}.vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,transparent 34%,rgba(3,6,9,.52) 100%)}.scene-art{position:fixed;inset:0;z-index:3;pointer-events:none;opacity:0;background-image:linear-gradient(90deg,#081017f0,#081017bb 38%,#08101722),var(--scene-image);background-position:center;background-size:cover;transition:opacity .65s ease}body.show-intro-art .scene-art{opacity:1}body.show-title-art .scene-art{z-index:9;opacity:1;background-image:linear-gradient(#060b13a8,#060b13a8),var(--scene-image)}.fade{position:fixed;inset:0;background:#05070a;opacity:1;pointer-events:none;z-index:8}.topbar{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:24px 32px;z-index:5;pointer-events:none}.topbar>*{pointer-events:auto}.brand{font-size:13px;letter-spacing:.25em;font-weight:700;display:flex;align-items:center;gap:10px}.brand-mark{font-size:23px;color:#d8ae6e;line-height:0}.chapter{font-size:12px;letter-spacing:.14em;color:#d0c4ac}.chapter span{opacity:.4;margin:0 8px}.top-actions{display:flex;gap:8px}.icon-button{height:40px;width:40px;border:1px solid #ffffff55;border-radius:50%;background:#151b20cc;color:#efe7d5;font-size:17px}.icon-button:hover{border-color:var(--gold)}.icon-button.off{opacity:.55}.hint-button{border-color:#efc47d99}.intro{position:fixed;left:clamp(24px,8vw,130px);top:50%;transform:translateY(-50%);z-index:4;max-width:580px}.intro .eyebrow{margin-bottom:18px}.intro h1{font-family:"Noto Serif KR",serif;font-size:clamp(46px,7vw,96px);line-height:1.1;letter-spacing:-.03em;font-weight:700;margin:0 0 24px;text-shadow:0 5px 35px #090c0ed9}.intro>p:not(.eyebrow){font-size:16px;line-height:1.9;color:#e2ddd2;margin:0 0 24px;text-shadow:0 3px 20px #000}.mode-pick{display:flex;gap:10px;margin-bottom:22px;flex-wrap:wrap}.mode-pick button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 16px;min-width:170px;background:#111920cc;border:1px solid #ffffff40;color:#efe7d5;text-align:left}.mode-pick button b{font-size:16px}.mode-pick button span{font-size:12px;opacity:.75}.mode-pick button.on{border-color:var(--gold);background:#2a2418e6;box-shadow:inset 0 0 0 1px var(--gold)}.intro-buttons{display:flex;gap:10px;flex-wrap:wrap}.primary-button{border:0;background:var(--gold);color:#1b1c1b;padding:16px 22px;min-width:190px;text-align:left;font-size:15px;font-weight:700;display:inline-flex;justify-content:space-between;gap:25px;align-items:center;transition:background .2s,transform .2s}.primary-button:hover{background:#f1cc88;transform:translateY(-2px)}.primary-button span{font-size:20px;line-height:12px}.secondary-button{border:1px solid #ffffff55;background:#111920cc;color:#efe7d5;padding:15px 18px;font-size:14px}.resume-note{font-size:13px!important;color:var(--gold-soft)!important;margin:14px 0 0!important}.intro-note{font-size:12px;color:#b9b6ae;margin-top:22px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.27em;color:#dcb875;margin:0 0 22px}.hud{position:fixed;inset:0;pointer-events:none;z-index:3}.objective{position:absolute;top:84px;left:24px;max-width:min(430px,calc(100vw - 60px));padding:12px 16px;background:var(--panel);border-left:3px solid var(--gold);font-size:15px;line-height:1.6;color:#f2e9d8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.objective.pulse{animation:pulse 1.2s ease}@keyframes pulse{0%{box-shadow:0 0 #efc47d99;transform:translate(0)}20%{transform:translate(6px)}to{box-shadow:0 0 0 16px #efc47d00;transform:translate(0)}}.obj-tag{display:block;font-size:10px;letter-spacing:.2em;color:#dcb875;font-weight:700;margin-bottom:2px}.objective small{opacity:.75;font-size:12px}.checklist{list-style:none;padding:0;margin:6px 0 0;font-size:14px}.checklist li{margin:3px 0}.checklist li.done{color:var(--good)}.crosshair{position:absolute;left:50%;top:50%;width:6px;height:6px;border-radius:50%;background:#f3e3c0;transform:translate(-50%,-50%);box-shadow:0 0 6px #000;transition:width .15s,height .15s,background .15s}.crosshair.active{width:14px;height:14px;background:var(--gold-soft);box-shadow:0 0 0 3px #efc47d44,0 0 10px #000}.edge-arrow{position:absolute;left:0;top:0;font-size:30px;color:#ffd98a;text-shadow:0 0 12px #ffb040,0 0 3px #000;animation:nudge 1s ease-in-out infinite}@keyframes nudge{50%{opacity:.55}}.hint{position:absolute;bottom:104px;left:50%;transform:translate(-50%);padding:10px 18px;background:var(--panel);border:1px solid #dac19044;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-size:15px;white-space:nowrap;color:#f2e9d8;transition:opacity .25s;opacity:0;max-width:calc(100vw - 30px)}.hint.show{opacity:1}.hint.toast{border-color:var(--gold)}.bottom-bar{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:end;justify-content:space-between;gap:16px;padding:24px 32px;background:linear-gradient(transparent,#070b10b5)}.inventory{display:flex;align-items:center;gap:14px;min-height:35px;min-width:0}.inventory-label{font-size:12px;font-weight:700;letter-spacing:.14em;color:#d5ae6e;white-space:nowrap}.inventory-items{display:flex;gap:8px;flex-wrap:wrap}.inventory-item{pointer-events:auto;display:inline-flex;align-items:center;gap:6px;border:1px solid #d7b87470;padding:7px 11px;background:#192026e6;color:#efe7d5;font-size:13px}button.inventory-item:hover{border-color:var(--gold)}.inventory-item .icon{background:#efe6d0;border-radius:3px}.empty{font-size:13px;color:#a5a8a5}.text-button{pointer-events:auto;background:none;border:0;color:#e3d9c9;font-size:13px;text-decoration:underline;text-underline-offset:4px;white-space:nowrap}.touch-pad{position:absolute;right:20px;bottom:96px;display:grid;grid-template-columns:repeat(3,56px);grid-template-rows:repeat(3,56px);gap:6px;pointer-events:auto}.touch-pad button{border:1px solid #d5ac6b88;background:#111920cc;color:#f2e9d8;font-size:18px;border-radius:12px;touch-action:none}.title-card{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;opacity:0;transition:opacity .5s;text-shadow:0 4px 28px #000}.title-card.in{opacity:1}.title-card h2{font-family:"Noto Serif KR",serif;font-size:clamp(48px,8vw,92px);margin:0 0 10px;font-weight:700;letter-spacing:.02em}.title-card p:last-child{font-size:20px;color:#e2d6bf;margin:0}.title-card .eyebrow{margin-bottom:16px}.dialog-backdrop{position:fixed;inset:0;z-index:10;background:#02060aa8;display:grid;place-items:center;padding:16px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialog{position:relative;width:min(100%,700px);max-height:calc(100vh - 32px);overflow:auto;background:linear-gradient(145deg,#212b31,#131b21);border:1px solid #c6a46b70;box-shadow:0 30px 90px #000a;padding:42px 46px 34px}.dialog.wide{width:min(100%,940px)}.dialog:before{content:"";position:absolute;inset:8px;border:1px solid #d6b57320;pointer-events:none}.dialog-close{position:absolute;top:16px;right:18px;border:0;background:none;color:#eadfc7;font-size:34px;line-height:1;width:44px;height:44px}.dialog .eyebrow{margin-bottom:12px;font-size:13px}.dialog h2{font-size:32px;font-weight:700;letter-spacing:-.02em;margin:0 0 18px;padding-right:36px;line-height:1.35}.dialog-body{font-size:19px;line-height:1.85;color:#e2e2da}.dialog-body p{margin:0 0 14px}.dialog-body strong{color:var(--gold-soft)}.dialog-body em{color:#cfe0ff}.dialog-body blockquote{margin:0 0 12px;padding:14px 18px;border-left:3px solid var(--gold);background:#0b1216;font-family:"Noto Serif KR",serif;line-height:1.9}.dialog-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px;position:relative}.dialog-actions button{padding:14px 24px;border:1px solid #d1af72;background:#d1af72;color:#161e22;font-size:17px;font-weight:700}.dialog-actions button:hover{background:#ebc98a}.dialog-actions button.secondary{background:transparent;color:#e6d5b6;font-weight:500}.dialog-actions button.tts{margin-left:auto;border-color:#ffffff40}.message{font-size:17px;color:#f3cf8f;min-height:22px;margin-top:12px;line-height:1.7}kbd{display:inline-block;padding:1px 7px;border:1px solid #ffffff55;border-bottom-width:2px;border-radius:4px;font-size:.85em;background:#0b1216;font-family:inherit}.term{border-bottom:2px dotted var(--gold-soft);cursor:help;color:#fff3da}.term-tip{position:fixed;z-index:12;max-width:280px;padding:10px 14px;background:#f3ead6;color:#231a12;font-size:14px;line-height:1.6;box-shadow:0 10px 30px #000a;border-radius:4px}.sentence-line{border:1px solid #d3aa6c80;background:#090f13;padding:14px 16px;text-align:center;font-size:22px;min-height:64px;line-height:1.5;color:#e7c17f;margin:14px 0 12px}.placeholder{opacity:.45;font-size:15px}.card-row{display:flex;flex-wrap:wrap;gap:8px}.word-card{padding:12px 16px;border:1px solid #617172;border-left:6px solid #888;background:#19252a;color:#f0eadf;font-size:16px}.word-card:hover:not(:disabled){background:#26333a}.word-card:disabled{opacity:.35;cursor:default}.writing-table{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:14px 0;font-size:14px;line-height:1.6}.writing-table b.big{font-size:18px;color:#f2e9d8}.message-box{margin:6px 0 14px;padding:12px 16px 12px 36px;background:#efe6d0;color:#2a1c14;font-size:16px;line-height:1.8;border-radius:2px}.message-box .heart{color:#8a4a3a}.gift{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px dashed var(--gold);margin-top:10px}.gift .icon{background:#efe6d0;border-radius:4px}.stamp-show{display:flex;justify-content:center;margin:4px 0 12px}.stamp-show .icon{background:#efe6d0;padding:6px;border-radius:6px;width:110px;height:110px}.note-sheet{background:#efe6d0;color:#2a1c14;padding:12px;margin:10px 0;display:grid;gap:8px}.note-row{display:grid;grid-template-columns:minmax(120px,1.1fr) 84px 84px minmax(120px,1.4fr);gap:8px;align-items:center;padding:6px;border:2px solid transparent}.note-row.ok{border-color:#4f9a5c;background:#e3efd9}.note-row.bad{border-color:#c8463c;background:#f5dcd6}.note-row.heart{grid-template-columns:1fr 1fr;opacity:.75;font-style:italic}.row-label{font-size:14px;font-weight:700;line-height:1.4}.row-read{font-size:14px;line-height:1.4}.cell{height:84px;border:2px dashed #a8906a;background:#fbf6ea;color:#2a1c14;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px}.cell.filled{border-style:solid;border-color:#6b4a2e}.cell .plus{font-size:26px;opacity:.4}.pool-label{font-size:12px!important;letter-spacing:.15em;color:#dcb875;margin:12px 0 6px!important;font-weight:700}.stamp-card{display:inline-flex;flex-direction:column;align-items:center;gap:4px;padding:8px 10px;min-width:78px;border:1px solid #617172;background:#19252a;color:#f0eadf;font-size:13px}.stamp-card .icon{background:#efe6d0;border-radius:4px}.stamp-card:hover:not(:disabled){border-color:var(--gold);background:#26333a}.stamp-card:disabled{opacity:.3;cursor:default}.jegi-canvas{display:block;width:100%;max-width:340px;margin:8px auto;border:1px solid #d3aa6c80;touch-action:none;cursor:pointer}.jegi-score{text-align:center;font-size:22px;font-weight:700;color:var(--gold-soft)}.record{background:#efe6d0;color:#2a1c14;padding:10px 14px;margin:8px 0 14px;display:grid;gap:4px}.rec-line{display:grid;grid-template-columns:24px 110px 1fr;gap:4px 10px;align-items:baseline;padding:6px 8px;border-left:4px solid transparent}.rec-line b{font-size:20px}.rec-line .dim{font-size:13px}.rec-mean{grid-column:2 / -1;font-size:14px}.rec-line.current{border-left-color:#c8463c;background:#f5e4c8}.rec-line.fixed{border-left-color:#4f9a5c}.rec-line.fixed .rec-mean{color:#2f6b3a;font-weight:700}.rec-no{font-weight:700;opacity:.6}.sato-says{display:flex;gap:12px;align-items:baseline;padding:12px 14px;background:#0b1216;border-left:3px solid #6b98dc;margin-bottom:10px}.sato-says b{color:#9dbbe8;white-space:nowrap}.ask{font-weight:700}.ok-mark{font-size:30px;line-height:44px;color:var(--good)}.trace-wrap{display:flex;justify-content:center}.trace-canvas{width:min(320px,72vw);height:auto;aspect-ratio:1;border:1px solid #d3aa6c80;touch-action:none;cursor:crosshair;background:#efe6d0}.glyph-row{display:flex;justify-content:center;gap:28px;margin:6px 0 16px}.glyph-row span{display:flex;flex-direction:column;align-items:center;font-size:14px}.glyph-row b{font-size:46px;color:var(--gold-soft);line-height:1.2}.quiz-row{display:flex;gap:14px;justify-content:center;margin:12px 0}.quiz-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 18px;border:2px solid #617172;background:#efe6d0;color:#2a1c14;font-size:14px;font-weight:700}.quiz-option:hover:not(:disabled){border-color:var(--gold)}.quiz-option.right{border-color:#4f9a5c;background:#e3efd9}.quiz-option.wrong{border-color:#c8463c}.letter-card{display:flex;gap:14px;align-items:center;background:#efe6d0;color:#2a1c14;padding:16px 18px;margin-bottom:14px;font-family:"Noto Serif KR",serif;font-size:19px;line-height:1.7}.letter-card p{margin:0}.letter-card.mine{flex-direction:column;align-items:stretch}.letter-card .to{font-weight:700}.letter-card .from{text-align:right;font-weight:700}.letter-card .icon{flex:none}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;font-size:14px;color:#e2d6bf}.field input,.field textarea{font:inherit;font-size:17px;padding:10px 12px;background:#efe6d0;color:#231a12;border:1px solid #a8906a;resize:vertical}.stats{display:flex;gap:16px;flex-wrap:wrap;margin:4px 0 12px;font-size:14px}.stats b{color:var(--gold-soft)}.help-keys{padding-left:18px;margin:0 0 12px}.help-keys li{margin:4px 0}.hint-line{display:flex;gap:10px;align-items:baseline}.hint-line b{flex:none;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#161e22;display:inline-grid;place-items:center;font-size:13px}@media(max-width:650px){.topbar{padding:14px 16px}.chapter{display:none}.intro{left:20px;right:20px}.intro h1{font-size:52px}.objective{top:68px;left:12px;font-size:14px}.bottom-bar{padding:14px 16px}.hint{bottom:86px;white-space:normal;text-align:center;font-size:14px}.dialog{padding:28px 18px 20px}.dialog h2{font-size:24px}.dialog-body{font-size:17px}.note-row{grid-template-columns:1fr 70px 70px}.note-row .row-read{grid-column:1 / -1}.cell{height:70px}.rec-line{grid-template-columns:20px 90px 1fr}}.talk{position:fixed;inset:0;z-index:10;background:linear-gradient(to top,#02060ae6 0%,#02060a99 32%,transparent 62%);outline:none;cursor:pointer}.talk-portrait{position:absolute;bottom:188px;width:min(34vw,380px);height:min(56vh,520px);display:flex;align-items:flex-end;justify-content:center;pointer-events:none;transition:filter .25s,transform .25s,opacity .25s;filter:brightness(.45) saturate(.6);transform:translateY(12px) scale(.96)}.talk-portrait.left{left:max(2vw,calc(50% - 600px))}.talk-portrait.right{right:max(2vw,calc(50% - 600px))}.talk-portrait.right svg,.talk-portrait.right img{transform:scaleX(-1)}.talk-portrait.empty{opacity:0}.talk-portrait.active{filter:none;transform:none}.talk-portrait svg,.talk-portrait img{max-width:100%;max-height:100%;filter:drop-shadow(0 10px 24px #000c)}.talk-portrait.speaking svg,.talk-portrait.speaking img{animation:bob .32s ease-in-out infinite alternate}.talk-portrait .eyes{transform-box:fill-box;transform-origin:center;animation:blink 4.4s infinite}.talk-portrait .mouth-open{opacity:0;transform-box:fill-box;transform-origin:center}.talk-portrait.speaking .mouth-open{animation:talk .16s ease-in-out infinite alternate}@keyframes bob{to{translate:0 -4px}}@keyframes blink{0%,93%,to{transform:scaleY(1)}96%{transform:scaleY(.1)}}@keyframes talk{0%{opacity:1;transform:scaleY(.2)}to{opacity:1;transform:scaleY(1)}}.talk-box{position:absolute;left:50%;bottom:24px;transform:translate(-50%);width:min(calc(100% - 32px),1080px);min-height:172px;padding:30px 36px 18px;background:linear-gradient(160deg,#1f2a30f2,#11181df5);border:2px solid #c6a46b;box-shadow:0 20px 60px #000c,inset 0 0 0 5px #0b121688;cursor:pointer}.talk-name{position:absolute;top:-22px;left:28px;padding:7px 22px;background:#d5ac6b;color:#161e22;font-size:19px;font-weight:700;letter-spacing:.04em;box-shadow:0 4px 12px #0008}.talk-name.right{left:auto;right:28px;background:#8fc1a6}.talk-title{position:absolute;top:8px;right:36px;font-size:11px;letter-spacing:.22em;color:#dcb87599;font-weight:700}.talk-text{font-size:22px;line-height:1.75;color:#f2ede2;min-height:78px}.talk-text p{margin:0 0 8px}.talk-text strong{color:var(--gold-soft)}.talk-text em{color:#cfe0ff}.talk-text.narr{color:#d7d6cf;font-style:italic}.talk-text .gift,.talk-text .message-box{cursor:auto}.talk-choices{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.talk-choices:empty{display:none}.talk-choices button{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border:1px solid #d1af72;background:#d1af72;color:#161e22;font-size:18px;font-weight:700}.talk-choices button.secondary{background:transparent;color:#e6d5b6;font-weight:500}.talk-choices button:hover{filter:brightness(1.1)}.talk-choices .key{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#161e2233;font-size:13px}.talk-choices button.secondary .key{background:#fff2}.talk-foot{display:flex;align-items:center;gap:6px;margin-top:8px}.talk-small{border:0;background:none;color:#b9b3a6;font-size:13px;padding:4px 8px}.talk-small:hover:not(:disabled){color:#fff}.talk-small:disabled{opacity:.3;cursor:default}.talk-next{margin-left:auto;color:var(--gold-soft);font-size:18px;animation:nudge-down .8s ease-in-out infinite}.talk.typing .talk-next,.talk.at-end .talk-choices:not(:empty)~.talk-foot .talk-next{visibility:hidden}@keyframes nudge-down{50%{transform:translateY(4px);opacity:.6}}@media(prefers-reduced-motion:reduce){.talk-portrait .eyes,.talk-portrait.speaking svg,.talk-portrait.speaking .mouth-open,.talk-next{animation:none}}@media(max-width:650px){.talk-portrait{width:44vw;height:34vh;bottom:230px}.talk-box{padding:26px 18px 12px;min-height:200px}.talk-text{font-size:18px}.talk-name{font-size:16px;left:16px}.talk-choices button{font-size:16px;padding:10px 14px}}.seeds{position:absolute;top:84px;right:24px;display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--panel);border:1px solid #d5ac6b55;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.seeds-label{font-size:11px;letter-spacing:.16em;color:#dcb875;font-weight:700;margin-right:2px}.seed{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1px dashed #ffffff40;color:#ffffff40;font-size:20px;font-weight:700}.seed.on{border:1px solid #ffd98a;color:#ffe7b0;background:radial-gradient(circle,#ffd98a55,#ffd98a11);box-shadow:0 0 12px #ffc86a88}.seeds.pulse{animation:pulse 1.2s ease}.seed-get{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid #ffd98a88;background:radial-gradient(circle at 30px 50%,#ffd98a33,transparent 70%)}.seed-get b:first-child{font-size:40px;color:#ffe7b0;text-shadow:0 0 14px #ffc86a;min-width:40px;text-align:center}.seed-note{color:#ffe7b0}.sound-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:12px 0}.sound-slot{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:64px;padding:8px;background:#efe6d0;color:#2a1c14;border:2px solid #a8906a}.sound-slot b{font-family:"Noto Serif KR",serif;font-size:30px}.sound-slot span{min-height:26px;font-size:20px;font-weight:700;color:#8a3a2a}.sound-slot.current{border-color:#c8463c;box-shadow:0 0 0 3px #c8463c44}.chart{display:grid;grid-template-columns:repeat(6,minmax(52px,1fr));gap:6px;margin:6px 0}.chart button{display:flex;flex-direction:row;justify-content:center;align-items:baseline;gap:6px;padding:5px 4px;border:1px solid #617172;background:#19252a;color:#f0eadf;font-size:15px}.chart button b{font-family:"Noto Serif KR",serif;font-size:22px}.chart button[data-ch]:hover{border-color:var(--gold);background:#26333a}.sound-slot{min-width:56px;padding:6px}.chart button.missing{opacity:.25;cursor:default}@media(max-width:650px){.seeds{top:68px;right:12px;padding:6px 8px}.seed{width:28px;height:28px;font-size:17px}.seeds-label{display:none}}
