:root{--ink:#393332;--muted:#8b7c76;--plum:#744c60;--rose:#ba7984;--paper:#fffdf8;--line:#e6ded5;--serif:Georgia,'Noto Serif KR','Batang',serif}*{box-sizing:border-box}body{margin:0;background:#f6f2eb;color:var(--ink);font-family:'Malgun Gothic',system-ui,sans-serif;font-size:15px;line-height:1.75}button,a,input,select{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #be8958;outline-offset:4px}a{color:inherit}button{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:10px 17px}button:hover:not(:disabled){border-color:var(--rose);background:#fbf1ee}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.4}h1{font-size:38px;letter-spacing:-1.8px;margin:8px 0 12px}h2{font-size:28px}h3{font-size:22px}small{font-size:12px}.top{max-width:1400px;margin:auto;padding:25px 40px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:11px;font:600 24px/1.4 var(--serif);white-space:nowrap}.brand-icon{background:var(--plum);color:#f7eee2;width:44px;height:48px;display:grid;place-items:center;border-radius:50% 50% 5px 5px;font-size:26px}.brand small{display:block;font:9px/1.6 sans-serif;letter-spacing:2px;color:var(--muted)}nav{display:flex;gap:8px}nav button{border:0;background:none;font-size:14px;padding:10px 15px;white-space:nowrap}nav button.active{color:var(--plum);background:#eae0e1;font-weight:bold}.icon-btn{padding:5px;width:39px;height:39px;font-size:23px;background:transparent;border:0}main{max-width:1280px;padding:0 40px;margin:auto}.masthead{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:38px 0 25px}.eyebrow{font:10px/1.7 sans-serif;letter-spacing:2.6px;color:#967b68}.masthead p{color:var(--muted);font-size:14px;margin:0}.daybox{border-left:1px solid var(--line);padding-left:28px;min-width:142px}.daybox span{display:block;color:var(--plum);font:22px/1.6 var(--serif)}.daybox b{font-size:12px;font-weight:normal;color:var(--muted)}.statusbar{display:flex;align-items:center;gap:24px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px}.statusbar button{margin-left:auto;padding:6px 12px;background:none;border:0;color:var(--plum);font-size:13px}.statusbar b{font-size:17px;color:var(--plum)}.cast-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:24px 0 28px}.cast-button{display:flex;align-items:center;gap:10px;text-align:left;padding:10px;background:#fdfbf6;border:1px solid var(--line);min-width:0}.cast-button.selected{background:#f2e8e8;border-color:#b58895;box-shadow:0 2px 0 #b58895}.cast-button .art{width:48px;height:48px;flex:none;border-radius:50%;aspect-ratio:1}.cast-button b{font-size:14px;display:block}.cast-button small{font-size:10px;color:var(--muted)}.art{background-size:300% 200%;background-repeat:no-repeat;aspect-ratio:1;width:100%;background-color:#e9e0d3}.letters{background-image:url('./assets/letters.png')}.neighbors{background-image:url('./assets/neighbors.png')}.valley{background-image:url('./assets/valley.png')}.c0{background-position:0 0}.c1{background-position:50% 0}.c2{background-position:100% 0}.c0.work{background-position:0 100%}.c1.work{background-position:50% 100%}.c2.work{background-position:100% 100%}.story-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:30px;align-items:start}.portrait-frame{background:var(--paper);border:1px solid var(--line);padding:12px;box-shadow:0 8px 25px #3f273008;transform:rotate(-.5deg)}.portrait-frame .art{border-radius:3px}.photo-caption{padding:15px 10px 5px;display:flex;justify-content:space-between;gap:15px;color:var(--muted);font-size:11px;letter-spacing:1px}.photo-caption b{font:italic 17px var(--serif);color:var(--plum)}.letter-panel{padding:8px 8px 0}.person-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:12px 0 16px}.person-heading h2{font-size:37px;margin:0}.tag{font-size:11px;padding:5px 10px;border-radius:20px;background:#eae5dc;color:#8a7969;white-space:nowrap}.quote{font:21px/1.8 var(--serif);color:#715861;border-left:2px solid #d6b4bb;padding:5px 0 5px 20px;margin:20px 0}.rel-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0}.rel-grid small{color:var(--muted);display:flex;justify-content:space-between}.track{height:5px;background:#e4dbd5;border-radius:6px;margin-top:9px}.track i{display:block;height:100%;background:var(--rose);border-radius:6px}.chapter-box{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:22px;margin:20px 0}.chapter-box h3{margin:5px 0 10px;font-size:23px}.chapter-box p{font-size:13px;color:var(--muted);margin-bottom:15px}.primary{background:var(--plum);color:white;border-color:var(--plum)}.primary:hover:not(:disabled){background:#634051;color:white}.full{width:100%}.actions{display:flex;gap:10px;flex-wrap:wrap}.actions>*{flex:1;min-width:130px}.subhead{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:42px 0 20px}.subhead h2{margin:0;font-size:25px}.subhead span{font-size:12px;color:var(--muted)}.route-list{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.route-card{padding:18px;text-align:left;background:#fdfaf4;border:1px solid var(--line);min-width:0}.route-card .num{font:italic 26px var(--serif);color:#c09d9a;display:block}.route-card b{font:15px/1.6 var(--serif);display:block;margin:8px 0}.route-card small{color:var(--muted);font-size:11px}.page-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.page-title h2{margin:4px 0 8px}.page-title p{color:var(--muted);font-size:14px;margin:0}.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.game-card{border:1px solid var(--line);padding:28px;background:var(--paper);border-radius:10px}.game-icon{font:42px var(--serif);color:var(--rose);margin:5px 0 20px}.game-card h3{font-size:23px;margin-bottom:12px}.game-card p{font-size:13px;color:var(--muted);min-height:65px}.game-card small{display:block;margin-bottom:20px;color:#977554}.game-stage{max-width:750px;margin:auto;padding:30px;background:var(--paper);border:1px solid var(--line);border-radius:12px}.game-stage h2{margin-bottom:8px}.game-stage p{font-size:14px;color:var(--muted)}.game-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.memory-board{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:25px 0}.memory-board button{aspect-ratio:1;font-size:30px;background:#eadedc;color:#866074;border:1px solid #d7c1c4;padding:5px}.memory-board button.open{background:#fff9ee}.memory-board button.matched{background:#e5ede2;border-color:#b4c3a6;opacity:.7}.recipe{display:flex;gap:12px;margin:25px 0;justify-content:center;flex-wrap:wrap}.recipe span{padding:16px;border:1px dashed #c4aa9d;border-radius:8px;text-align:center}.recipe .done{opacity:.35}.ingredients{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.ingredients button{padding:20px 10px}.timing-track{position:relative;height:66px;background:#eee2db;border-radius:12px;margin:32px 0;overflow:hidden}.timing-target{position:absolute;left:40%;width:20%;height:100%;background:#c6d6be}.timing-needle{position:absolute;width:5px;height:100%;background:#87556e;left:0;box-shadow:0 0 15px #fff}.timing-label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.score-bubbles{display:flex;gap:10px;justify-content:center;margin:20px 0}.score-bubbles span{padding:8px;border:1px solid var(--line);border-radius:30px;min-width:44px;text-align:center}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.album-card{padding:9px;text-align:left;position:relative;min-width:0}.album-card .art{border-radius:3px}.album-card b{display:block;padding:12px 8px 2px;font:17px var(--serif)}.album-card small{display:block;padding:0 8px 10px;color:var(--muted)}.locked-art{aspect-ratio:1;display:grid;place-content:center;background:repeating-linear-gradient(45deg,#eee7de,#eee7de 8px,#f2ede5 8px,#f2ede5 16px);font:40px var(--serif);color:#b3a391;text-align:center}.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.badge{padding:20px;background:#eee8df;border:1px solid var(--line);border-radius:7px}.badge.earned{background:#efe0e2;border-color:#c4a0aa}.badge b{display:block;font-family:var(--serif);font-size:18px}.badge small{color:var(--muted)}.journal{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.journal article{background:#fffaf4;padding:20px;border-left:2px solid #c9aaa9}.journal h3{font-size:18px;margin:5px 0 10px}.journal p{font-size:13px;margin:0;color:var(--muted)}.guide-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.guide-grid article{padding:25px;background:var(--paper);border:1px solid var(--line);border-radius:8px}.guide-grid p{color:var(--muted);font-size:14px}.hint{padding:15px 18px;background:#eee8de;color:#84746b;font-size:13px;border-radius:6px;margin:20px 0;line-height:1.8}.gift-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.gift-grid button{text-align:left;padding:18px}.gift-grid b{display:block}.gift-grid small{color:var(--muted)}dialog{border:1px solid #d4c7bc;border-radius:12px;background:var(--paper);color:var(--ink);width:min(640px,calc(100% - 28px));max-height:90dvh;overflow:auto;padding:0 26px 28px;scrollbar-gutter:stable}dialog::backdrop{background:#342c32bd;backdrop-filter:blur(4px)}.modal-top{position:sticky;top:0;background:var(--paper);z-index:2;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:12px 0;margin-bottom:20px}dialog .art{max-width:510px;margin:0 auto 25px;border-radius:5px}dialog h2{font-size:27px;margin-bottom:20px}dialog p{line-height:1.95;overflow-wrap:anywhere}dialog .choices{display:grid;gap:12px;margin-top:25px}dialog .choices button{text-align:left;white-space:normal;padding:17px}.dialogue{font:22px/1.8 var(--serif);color:var(--plum);padding:18px;background:#f2e9e7;border-radius:6px}.ending{padding:20px;border:1px solid #d6b6b3;background:#f4e7e6}.ending span{font-size:11px;letter-spacing:2px;color:#aa747e}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;background:#594350;color:#fff;padding:14px 22px;border-radius:8px;z-index:20;font-size:13px;max-width:calc(100% - 28px);width:max-content;box-shadow:0 4px 18px #0002;transition:.2s}#toast.show{opacity:1;transform:translateX(-50%)}.notice{padding:12px 16px;background:#e8eedf;border-radius:5px;margin-bottom:15px;color:#506245;font-size:13px}footer{display:flex;align-items:center;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);padding:30px 0;margin-top:50px;font-size:11px;color:var(--muted)}footer p{margin:0;margin-left:auto}footer button{border:0;background:none;font-size:11px;padding:0}.brand-text{font:14px Georgia;letter-spacing:2px}.brand-text span{font:10px sans-serif;letter-spacing:0;margin-left:10px}.skip{position:absolute;top:-100px}.skip:focus{top:10px;left:10px;background:white;padding:10px;z-index:50}.empty{padding:35px;text-align:center;color:var(--muted)}.mini-status{min-height:25px;color:var(--plum)}@media(max-width:1050px){.top{padding:20px}.brand{font-size:20px}nav{gap:0}nav button{padding:9px}.cast-button{display:block;text-align:center}.cast-button .art{margin:0 auto 5px}.route-list{grid-template-columns:repeat(3,1fr)}main{padding:0 25px}.story-layout{gap:22px}.quote{font-size:19px}.letter-panel{padding:0}.game-card{padding:22px}}@media(max-width:700px){.top{flex-wrap:wrap;padding:15px 18px;gap:12px}.top nav{order:3;width:100%;display:grid;grid-template-columns:repeat(4,1fr)}.top nav button{font-size:12px;padding:10px 3px}.brand{font-size:21px}main{padding:0 18px}.masthead{padding:26px 0 20px;align-items:flex-start}.masthead h1{font-size:28px;letter-spacing:-1px}.masthead p{font-size:12px;max-width:240px}.daybox{padding-left:12px;min-width:85px}.daybox span{font-size:17px}.daybox b{font-size:10px}.eyebrow{font-size:9px;letter-spacing:1.6px}.statusbar{gap:10px;font-size:11px;flex-wrap:wrap}.statusbar b{font-size:14px}.statusbar button{font-size:11px;padding:5px 0}.cast-strip{grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0}.cast-button{display:flex;gap:7px;text-align:left;padding:8px}.cast-button .art{width:39px;height:39px;margin:0}.cast-button small{font-size:9px}.story-layout{grid-template-columns:1fr;gap:24px}.portrait-frame{padding:8px;max-width:510px;width:100%;margin:auto}.person-heading h2{font-size:32px}.letter-panel{padding:0 3px}.quote{font-size:20px}.route-list{grid-template-columns:repeat(2,1fr)}.route-card:last-child{grid-column:1/-1}.game-grid,.gallery,.guide-grid{grid-template-columns:1fr}.game-card p{min-height:0}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.album-card b{font-size:14px}.album-card small{font-size:10px}.page-title{display:block}.page-title h2{font-size:26px}.page-title .tag{display:inline-block;margin-top:12px}.badge-grid{grid-template-columns:repeat(2,1fr)}.badge{padding:15px}.badge b{font-size:16px}.journal{grid-template-columns:1fr}.game-stage{padding:20px 15px}.game-stage h2{font-size:24px}.memory-board{gap:8px}.memory-board button{font-size:25px}.ingredients{gap:8px}.ingredients button{padding:16px 6px;font-size:13px}.recipe{gap:7px}.recipe span{padding:10px;font-size:13px}dialog{padding:0 18px 24px}.dialogue{font-size:19px}.subhead{display:block;margin-top:30px}.subhead span{display:block;margin-top:5px}.gift-grid button{padding:13px;font-size:13px}footer{gap:15px}footer p{margin-left:0;width:100%}.statusbar #progress{display:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media(max-width:700px){.masthead{display:block}.masthead h1{word-break:keep-all}.masthead p{max-width:none}.daybox{display:flex;gap:14px;align-items:center;border:0;padding:0;margin-top:16px}.daybox span{font-size:15px}.cast-button{display:block;text-align:center}.cast-button .art{margin:0 auto 5px;width:48px;height:48px}.cast-button small{white-space:nowrap}.cast-button b{font-size:13px}}
dialog .art{max-width:360px}
