@font-face{font-family:Oz Sans;src:url('assets/fonts/PretendardVariable.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Oz Story;src:url('assets/fonts/GowunBatang-Bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--paper:#fff9e9;--paper-shade:#eae4cf;--ink:#283f37;--muted:#637265;--green:#365b4c;--gold:#dfb95e;--line:#cccbb5;font-family:Oz Sans,'Malgun Gothic',sans-serif;color:var(--ink);font-weight:500;font-synthesis:none}
html,body{margin:0;width:100%;height:100%;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{border:0;color:inherit;font:inherit;cursor:pointer}a{color:inherit;text-underline-offset:4px}button:disabled{cursor:default}button:not(:disabled):active{transform:translateY(2px)}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,summary:focus-visible,textarea:focus-visible{outline:3px solid #c58832;outline-offset:4px}button:focus:not(:focus-visible){outline:none}.icon-library{position:absolute;width:0;height:0;overflow:hidden}h1,h2{font-family:Oz Story,serif;font-weight:700;word-break:keep-all}p{word-break:keep-all}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:25px;height:27px;border:1px solid currentColor;border-radius:5px;font:650 13px Oz Sans,sans-serif;box-shadow:0 2px 0 #17271e20}small{font-size:13px}
#adventure{position:relative;width:100%;height:100%;isolation:isolate;background:#8eaa77}#world{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px}#adventure:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;background:linear-gradient(180deg,#152e2d78,transparent 30%,transparent 73%,#192f2680)}.menu-button,.icon-button{display:inline-flex;justify-content:center;align-items:center;gap:12px;min-height:48px;background:var(--paper);border:1px solid #fff7dc;border-bottom:3px solid #c1ba9e;border-radius:10px;box-shadow:0 3px 10px #263d3324;font-weight:650}.menu-button{padding:0 14px}.menu-button kbd{color:#6e796b}.icon-button{width:48px;flex:none}.menu-button:hover,.icon-button:hover{background:#fffefa}.icon-button[aria-pressed=true]{background:#d5e4c7}.primary-action{background:var(--green);color:#fffbe8;border:1px solid #b5caaa}.primary-action:hover:not(:disabled){background:#254d3d}.primary-action kbd{background:#f8eed1;color:#355447;border:0;box-shadow:0 2px 0 #c2cba1;min-width:30px;height:31px;font-size:16px}.primary-action:disabled{background:#e8e6d6;color:#6e786b;border-color:#c1c7ad;box-shadow:0 3px 0 #273b2720}.primary-action:disabled kbd{background:#f3f0e0;color:#6e786b}.secondary-action:disabled{color:#899480;box-shadow:none}
/* A bound book: navigation is a table of contents, artwork opens each chapter. */
dialog{color:var(--ink);border:0;padding:0;background:var(--paper);box-shadow:0 22px 75px #10221d7a;border-radius:8px;max-width:none;max-height:none}dialog::backdrop{background:#102e2bac;backdrop-filter:blur(5px)}#atlas{width:min(1150px,calc(100vw - 60px));height:min(790px,calc(100dvh - 54px));overflow:hidden;border:7px solid #557060;border-bottom:12px solid #455c4f}#atlas[open]{display:flex;flex-direction:column}.journal-header{flex:none;display:flex;align-items:center;gap:16px;padding:19px 25px 16px;border-bottom:1px solid var(--line)}.journal-title{display:flex;gap:16px;align-items:center;flex:1}.journal-title>svg{width:33px;height:33px;color:#6a846b}.journal-title small{color:var(--muted)}.journal-title h2{margin:4px 0 0;font-size:28px;line-height:1.3}.text-button{background:none;display:flex;gap:10px;align-items:center;font-size:14px;min-height:44px;padding:6px 12px}.journal-header .icon-button{box-shadow:none;background:transparent;border:1px solid #bec4ab;border-radius:50%}.atlas-spread{display:grid;grid-template-columns:245px 1fr;min-height:0;flex:1}#chapterList{overflow:auto;padding:12px 18px 20px 14px;background:#efeedd;border-right:1px solid #c8c6af;box-shadow:inset -9px 0 15px -12px #617353}#chapterList h3{margin:18px 12px 8px;font-size:12px;color:#697761;letter-spacing:.05em;font-weight:600}#chapterList button{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:46px;text-align:left;padding:9px 10px;background:none;border-radius:4px;font-size:15px;font-weight:550}#chapterList button:hover{background:#e0e4cf}#chapterList button[aria-current=true]{background:#426550;color:#fff9df;box-shadow:0 3px 0 #304e382b}#chapterList em{font-family:Oz Story,serif;font-size:19px;font-weight:700;font-style:normal;opacity:.75}#chapterList .chapter-check{margin-left:auto}#chapterDetails{overflow:auto;scrollbar-gutter:stable;padding:0;background:linear-gradient(90deg,#dfdcca70,transparent 20px),var(--paper)}.chapter-illustration{position:relative;height:225px;margin:22px 28px 0;overflow:hidden;border-radius:100px 6px 6px 6px;background:#d9e3cc}.chapter-illustration img{width:100%;height:100%;object-fit:cover;object-position:center 46%}.chapter-illustration figcaption{position:absolute;right:12px;bottom:9px;font-size:11px;color:#fff9e8;background:#2e4b3de8;padding:5px 8px;border-radius:3px}.chapter-number{position:absolute;left:23px;bottom:14px;color:white;font:700 48px Oz Story;text-shadow:0 2px 7px #273b29}.chapter-empty-art{height:125px;margin:22px 28px 0;display:flex;gap:20px;align-items:center;padding:25px 35px;background:#e1e8d3;border:1px solid #c4ceb4;border-radius:60px 4px 4px 4px}.chapter-empty-art span{font:700 52px Oz Story;color:#638269}.chapter-empty-art p{font:700 21px Oz Story}.chapter-content{padding:20px 32px 26px}.chapter-kicker{display:flex;gap:12px;align-items:center;color:#586f54;font-size:12px}.chapter-kicker span{border-left:1px solid #b9c3a8;padding-left:12px}.chapter-content h2{font-size:32px;margin:7px 0 10px;line-height:1.3}.chapter-intro{font-size:16px;line-height:1.8;margin:0 0 19px}.journey-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:13px 0 17px;margin:0;list-style:none;border-bottom:1px solid var(--line);color:#566b4d;font-size:13px;font-weight:650}.journey-line li:not(:last-child):after{content:'→';margin-left:12px;color:#8a987b}.chapter-layout{display:grid;grid-template-columns:1.25fr 1fr;gap:28px;margin-top:17px}.chapter-layout h3{font-size:14px;margin:0 0 10px;color:#3b5745}.chapter-layout ol{margin:0;padding-left:20px}.chapter-layout li{font-size:14px;line-height:1.8;padding-left:3px;margin-bottom:7px}.chapter-layout aside{border-left:1px solid var(--line);padding-left:22px}.chapter-layout aside p{font-size:14px;line-height:1.7;margin:0 0 13px}.chapter-footer{margin-top:19px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.chapter-footer p{font-size:13px;color:#66775f}.production-note{margin-top:24px;padding-top:14px;border-top:1px solid var(--line);font-size:13px;line-height:1.8;color:#60715c}.production-note summary,.story-source summary{cursor:pointer;min-height:30px}.production-note a{display:inline-block;margin-right:14px}.art-status{font-size:13px}.atlas-foot{display:flex;gap:24px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:11px 25px;font-size:12px;color:#65725f}.atlas-foot a{margin-left:auto}
#book{width:min(1050px,calc(100vw - 80px));max-height:calc(100dvh - 66px);border-bottom:7px solid #c6c3a8;overflow:visible}.close-book{position:absolute;right:14px;top:14px;z-index:2;border-radius:50%;width:43px;min-height:43px;box-shadow:0 2px 5px #314d3430}.book-spread{display:grid;grid-template-columns:1fr 1fr;min-height:400px;max-height:calc(100dvh - 78px)}.book-spread:has(figure[hidden]){grid-template-columns:1fr;min-height:320px}#book:has(figure[hidden]){max-width:660px}.book-spread figure{margin:0;padding:20px 12px 20px 20px;display:flex;flex-direction:column;justify-content:center;background:#eee9d7;border-radius:6px 0 0 6px;min-height:0}.book-spread img{display:block;object-fit:contain;max-width:100%;max-height:calc(100dvh - 145px);border-radius:3px}.book-spread figcaption{text-align:center;font-size:12px;margin-top:10px;color:#617257}.book-page{display:flex;flex-direction:column;min-height:0;padding:45px 34px 28px;background:linear-gradient(90deg,#d4d2b72e,transparent 30px)}.book-prose{overflow:auto;min-height:0;padding-right:6px;scrollbar-gutter:stable}.book-kicker{color:#66805c;font-size:13px}.book-page h2{font-size:29px;margin:11px 0 17px;line-height:1.45;padding-right:20px}#bookBody{font-size:18px;line-height:1.95;white-space:pre-line;margin:0 0 20px;font-weight:450}.story-source{font-size:12px;line-height:1.7;color:#62705b;border-top:1px solid #d7d8bf;padding-top:10px}.story-source p{margin:6px 0}.book-page>.primary-action{flex:none;margin-top:22px;align-self:flex-end}#noteLabel{font-size:14px;line-height:1.8;font-weight:600;display:block;margin-bottom:15px}textarea{display:block;width:100%;margin-top:8px;padding:10px;border:1px solid #a8b59b;border-radius:4px;background:#fffdf3;color:#304e3d;font:400 16px/1.8 Oz Sans;resize:vertical;min-height:90px;max-height:150px}
@media(max-width:1100px){.atlas-spread{grid-template-columns:210px 1fr}.chapter-illustration{height:180px}.chapter-content{padding:17px 23px 24px}.chapter-layout{gap:17px}.chapter-content h2{font-size:29px}}
@media(max-height:600px) and (orientation:landscape){.menu-button{min-height:44px;padding:0 11px;gap:9px;font-size:14px}.icon-button{width:44px;min-height:44px}.primary-action,.secondary-action{min-height:47px;padding:0 14px;font-size:14px;gap:9px}#atlas{width:calc(100vw - 28px);height:calc(100dvh - 24px);border-width:5px 5px 8px}.journal-header{padding:10px 17px;gap:10px}.journal-title{gap:10px}.journal-title h2{font-size:22px}.journal-title small{font-size:11px}.journal-title>svg{width:26px}.atlas-spread{grid-template-columns:190px 1fr}#chapterList{padding:2px 10px 14px}#chapterList h3{margin-top:14px;font-size:11px}#chapterList button{min-height:44px;font-size:14px}.atlas-foot{padding:7px 18px;font-size:11px}.chapter-illustration{height:140px;margin:16px 20px 0}.chapter-content{padding:14px 22px}.chapter-content h2{font-size:27px}.chapter-intro{font-size:15px}.chapter-layout{grid-template-columns:1fr}.chapter-layout aside{border-left:0;border-top:1px solid var(--line);padding:14px 0 0}.text-button{font-size:13px}.chapter-empty-art{height:90px;margin:16px 20px 0}#book{width:calc(100vw - 38px);max-height:calc(100dvh - 30px)}.book-spread{min-height:260px;max-height:calc(100dvh - 38px)}.book-spread img{max-height:calc(100dvh - 100px)}.book-page{padding:25px 25px 17px}.book-page h2{font-size:23px;margin:8px 0 13px}#bookBody{font-size:16px;line-height:1.85}.book-page>.primary-action{margin-top:12px}.close-book{top:8px;right:8px;width:36px;min-height:36px}.close-book svg{width:20px}#book:has(figure[hidden]){max-width:650px}.book-spread:has(figure[hidden]){min-height:260px}}
@media(pointer:coarse){.menu-button kbd{display:none}}
@media(prefers-reduced-motion:no-preference){dialog[open]{animation:book-open .18s ease-out}@keyframes book-open{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}}

@media(min-height:601px) and (max-height:800px){.chapter-illustration{height:175px}.chapter-content{padding-top:16px}.chapter-content h2{font-size:29px}.chapter-intro{margin-bottom:12px}.chapter-footer{margin-top:14px}}
.chapter-illustration img{object-position:center top}
@media(prefers-reduced-motion:reduce){}
.book-spread{height:min(520px,calc(100dvh - 78px));grid-template-rows:minmax(0,1fr)}
.book-spread:has(figure[hidden]){height:min(400px,calc(100dvh - 78px))}
@media(max-height:600px) and (orientation:landscape){.book-spread,.book-spread:has(figure[hidden]){height:calc(100dvh - 50px);max-height:calc(100dvh - 50px)}}@media(max-width:900px) and (min-height:601px){}

.primary-action,.secondary-action{min-height:54px;display:inline-flex;align-items:center;justify-content:center;gap:12px;border-radius:9px;font-size:16px;font-weight:650;padding:0 22px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
button svg,header svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round;flex:none}
#adventure .oz-overhead-bubble{max-width:calc(100% - 48px);white-space:normal;word-break:keep-all;text-align:center}
#adventure .oz-dialogue:active{transform:translateX(-50%)}
#playMenu{width:min(620px,calc(100vw - 48px));max-height:calc(100dvh - 48px);padding:24px;box-sizing:border-box;overflow:auto}
#playMenu header{display:flex;justify-content:space-between;align-items:center;gap:16px}#playMenu h2{font-size:24px;margin:0}
#playMenu button,#playMenu a{min-height:48px;border-radius:12px;background:#e8eddb;padding:10px 16px;text-align:center;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
#playMenu button[aria-pressed=true]{background:#bfd3ae}#playMenu button:disabled{opacity:.45}.play-menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}
.easy-walk{display:flex;align-items:center;gap:10px;min-height:48px}.easy-walk input{width:24px;height:24px}#playMenu p{font-size:14px;line-height:1.7}#saveStatus{display:block;color:#637265}
.oz-touch-input [data-key-hint],.oz-touch-input .oz-hud kbd{display:none}
@media(pointer:coarse){body:not(.oz-touch-input) .menu-button kbd{display:inline-flex}}
.oz-token-earned,.oz-hint-blink{animation:oz-earned .8s ease-out 2}@keyframes oz-earned{50%{transform:scale(1.14);filter:brightness(1.15)}}
@media(prefers-reduced-motion:reduce){.oz-token-earned,.oz-hint-blink{animation:none;outline:2px solid #d9ba62}}

/* One text manager owns geometry; portrait dialogue suppresses toast and bubble. */
#adventure .oz-dialogue{width:min(700px,calc(100% - 64px));transform:none;bottom:auto}
#adventure .oz-dialogue:active{transform:none}
#adventure .oz-dialogue-text{word-break:normal}
#adventure .oz-overhead-bubble{transform:none;max-width:min(480px,calc(100% - 32px));box-sizing:border-box;font-size:16px;line-height:1.5}
.oz-overhead-bubble:after{transform:rotate(var(--tail-angle,0deg));transform-origin:50% -4px}
.oz-instruction-toast{position:absolute;z-index:2;max-width:min(420px,calc(100% - 32px));padding:12px 18px;border-radius:18px;background:#203d30ed;color:#fff6db;box-shadow:0 4px 12px #17312455;font:600 15px/1.6 Oz Sans;box-sizing:border-box;pointer-events:none;word-break:normal}
.oz-instruction-toast[hidden],.oz-overhead-bubble[hidden]{display:none}

.oz-objective-arrow{position:absolute;width:48px;height:48px;z-index:2;display:grid;place-items:center;border-radius:50%;background:#fff4d9ed;color:#486147;border:2px solid #857450;box-shadow:0 3px 10px #1d352855;pointer-events:none}.oz-objective-arrow span{font:700 29px Oz Sans;display:block}.oz-objective-arrow[hidden]{display:none}

/* Save-free alpha measurement keeps the runtime actor, pose and camera intact. */
#adventure.oz-alpha-review{background:transparent}#adventure.oz-alpha-review:after{display:none}.oz-alpha-review .oz-hud,.oz-alpha-review [data-oz-text],.oz-alpha-review .oz-objective-arrow{visibility:hidden}
/* Field extent follows the viewport, independent of body content or SVG height. */
#adventure{position:fixed;inset:0;width:100vw;height:100dvh;margin:0;padding:0;border:0}
#world{position:absolute;inset:0;display:block;margin:0;padding:0;border:0}
