@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700&family=Noto+Serif+JP:wght@400;500;600&display=swap');
:root{--paper:#f7f5ed;--ink:#303d3c;--muted:#6d7c77;--line:#d9ded2;--green:#3c6d60;--rose:#a36958;--serif:'Noto Serif JP',serif;--sans:'Noto Sans JP',sans-serif;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.85 var(--sans)}button,input,select{font:inherit}button,a{touch-action:manipulation}button{border:1px solid var(--line);border-radius:6px;background:#fffdf6;color:var(--ink);padding:9px 15px;cursor:pointer;min-height:44px}button:hover:not(:disabled){border-color:var(--green);background:#edf2e8}button:disabled{opacity:.42;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #bd9652;outline-offset:3px}a{color:var(--green)}.top{height:77px;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;border-bottom:1px solid var(--line);background:#f7f5edf5}.brand{font:600 20px var(--serif);text-decoration:none;color:var(--ink)}.brand small{font:11px var(--sans);display:block;color:var(--muted);letter-spacing:.15em;margin-top:6px}.top-actions{display:flex;align-items:center;gap:10px}.top-actions button{background:transparent;border:0}.top-actions span{font-size:12px;color:var(--muted)}main{max-width:1440px;margin:auto;padding:30px 4vw 150px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:500}h2{font-size:23px}h3{font-size:18px}p+p{margin-top:14px}.eyebrow{font:500 11px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.lead{font-family:var(--serif);font-size:20px;line-height:2}.muted,small{color:var(--muted)}small{font-size:12px}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover:not(:disabled){background:#2f584d;color:#fff}.home{max-width:950px;margin:30px auto;display:grid;grid-template-columns:1.1fr 1fr;gap:45px;align-items:center}.home h1{font-size:38px;line-height:1.7;margin:16px 0 22px}.home p{color:var(--muted)}.home canvas{width:100%;aspect-ratio:16/9;object-fit:cover;image-rendering:pixelated;border-radius:6px}.home .primary{width:100%;margin:20px 0 10px}.home-controls{margin-top:20px;display:grid;gap:12px}.fine{font-size:12px;color:var(--muted)}.resume{margin:20px 0;padding:22px;background:#e7ece1;border-radius:8px}.birth{max-width:980px;margin:15px auto;display:grid;grid-template-columns:1fr 1fr;gap:40px}.birth canvas{width:100%;margin-top:20px;image-rendering:pixelated}.birth h1{font-size:40px;margin:15px 0}.facts{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.fact{border-top:1px solid var(--line);padding-top:10px}.fact strong{display:block;font-weight:500}.birth .primary{width:100%;margin-top:22px}.layout{display:grid;grid-template-columns:230px minmax(0,1fr) 250px;gap:28px}.identity h1{font-size:28px;margin:8px 0 2px}.profile-caption{font-size:12px;color:var(--muted)}.stamp{font-family:var(--serif);width:50px;height:50px;border:1px solid #819188;color:#7c8c84;display:grid;place-items:center;font-size:19px;float:right;border-radius:50%}.section-title{font:500 12px var(--sans);letter-spacing:.09em;color:var(--muted);margin:27px 0 12px;border-bottom:1px solid var(--line);padding-bottom:8px}.status-item{margin-bottom:11px}.status-item div{display:flex;justify-content:space-between;font-size:12px}.track{height:3px;background:#e0e3da;margin-top:5px}.track i{display:block;height:3px;background:#879b88}.money{font-family:var(--serif);font-size:25px}.money.negative{color:var(--rose)}.person-row{display:flex;justify-content:space-between;gap:5px;padding:7px 0;border-bottom:1px solid #e4e6dc}.person-row strong{font-weight:500;font-size:13px}.person-row span{font-size:12px;color:var(--muted)}.person-row.past{opacity:.55}.stage-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.stage-head h2{font-size:22px}.age{font-family:var(--serif);font-size:38px;line-height:1}.age small{font-size:14px;margin-left:5px}.scene-wrap{position:relative;background:#c5dbda;border:1px solid #c8cfbf;border-radius:5px;overflow:hidden}.scene-wrap canvas{display:block;width:100%;image-rendering:pixelated;aspect-ratio:16/7}.scene-caption{padding:8px 13px;background:#e8e9df;color:#64736b;font-size:11px;display:flex;justify-content:space-between}.focus{display:flex;gap:7px;flex-wrap:wrap;margin:15px 0 26px}.focus button{flex:1;font-size:12px;white-space:nowrap;padding:6px 9px;min-height:40px;background:transparent}.focus button[aria-pressed=true]{background:#e0e8da;border-color:#7c9780}.event{background:#fffdf6;border:1px solid #cfd8c9;border-radius:7px;padding:27px;box-shadow:0 5px 24px #60725608;scroll-margin-top:20px}.event h2{font-size:22px;margin:8px 0 16px}.event>p{line-height:2;font-size:14px}.choices{display:grid;gap:10px;margin-top:24px}.choice{text-align:left;display:grid;grid-template-columns:25px 1fr 14px;gap:10px;background:var(--paper);padding:14px}.choice b{font-weight:500}.choice small{display:block;font-size:11px;line-height:1.7;margin-top:4px}.choice .number{font:12px var(--serif);color:#7d8b7a;padding-top:4px}.choice .arrow{color:#758976;align-self:center}.recent{margin-top:22px}.entry{display:grid;grid-template-columns:48px 1fr 30px;gap:12px;border-bottom:1px solid var(--line);padding:16px 0}.entry-age{font-family:var(--serif);font-size:18px;color:#74866f}.entry-age small{display:block;font:10px var(--sans)}.entry h3{font:500 14px var(--sans);margin-bottom:5px}.entry p{font-size:12px;color:#64726d;line-height:1.9}.entry button{border:0;padding:0;min-height:35px;background:none;font-size:20px}.entry button.active{color:#ad8c4b}.section-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.section-actions button{font-size:12px}.peer{padding:12px 0;border-bottom:1px solid var(--line)}.peer strong{display:block;font-weight:500;font-size:13px}.peer p{font-size:11px;color:var(--muted)}.peer span{font-size:11px}.peer.dead{opacity:.55}.context-row{display:flex;justify-content:space-between;font-size:12px;padding:4px 0}.context-row b{font-weight:500}.dock{position:fixed;z-index:3;bottom:0;left:0;right:0;background:#f7f5edf7;backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:14px max(4vw,env(safe-area-inset-left)) max(14px,env(safe-area-inset-bottom));display:flex;justify-content:center;gap:14px;align-items:center}.dock button{min-width:105px}.dock .pace{display:flex;gap:3px;align-items:center}.pace button{border:0;background:none;min-width:40px;padding:8px;font-size:12px}.pace button.active{background:#dde7d8}.dock-note{font-size:11px;color:var(--muted);max-width:210px;line-height:1.7}.tabs{display:none}.loading{text-align:center;margin:100px}.ledger{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}.ledger .out{color:var(--rose)}.ledger .in{color:var(--green)}.balance{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:20px 0}.balance strong{display:block;font:26px var(--serif)}.ending{max-width:950px;margin:15px auto}.ending .title{font:38px var(--serif);margin:12px 0}.ending-intro{display:grid;grid-template-columns:1.2fr 1fr;gap:32px;margin:28px 0}.ending canvas{width:100%;image-rendering:pixelated}.ending .lead{font-size:17px}.year-grid{display:flex;flex-wrap:wrap;gap:4px;margin:20px 0}.year-grid button{min-height:25px;width:25px;padding:0;border-radius:2px;border:0;font-size:8px}.film{margin:25px 0}.film input{width:100%;accent-color:var(--green)}.film p{min-height:50px}.books{display:grid;gap:12px}.books button{text-align:left}.books strong{display:block}.toast{display:none}#toast{position:fixed;z-index:20;bottom:110px;left:50%;transform:translateX(-50%);background:#344e43;color:#fff;padding:12px 22px;border-radius:6px;font-size:13px;max-width:90%;pointer-events:none;opacity:0;transition:opacity .2s}#toast.show{opacity:1}dialog{border:1px solid var(--line);border-radius:10px;width:min(720px,94vw);max-height:88dvh;background:var(--paper);color:var(--ink);padding:26px}dialog::backdrop{background:#233c3266;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-head button{border:0;background:none;font-size:24px;min-width:44px}.dialog-head h2{font-size:22px}details{margin-top:20px}summary{cursor:pointer;font-size:13px}details p{font-size:13px;margin:10px 0}label{font-size:13px}input[type=checkbox]{accent-color:var(--green)}.source-list p{font-size:13px}.source-list a{overflow-wrap:anywhere}.data-note{padding:12px 15px;background:#e9ecdf;margin:15px 0;font-size:12px;line-height:1.8}.review-link{display:inline-block;margin-top:16px;font-size:13px}.chart{width:100%;height:170px;border-bottom:1px solid var(--line)}
@media(min-width:1500px){main{padding-left:20px;padding-right:20px}.layout{grid-template-columns:250px minmax(0,1fr) 270px}}
@media(max-width:1100px){.layout{grid-template-columns:210px minmax(0,1fr);gap:24px}.world-panel{display:none}.home{gap:28px}.dock-note{display:none}}
@media(max-width:700px){body{font-size:14px}.top{height:65px;padding:0 16px}.brand{font-size:17px}.brand small{font-size:9px}.top-actions{gap:0}.top-actions span{display:none}.top-actions button{font-size:12px;padding:7px;min-width:40px}main{padding:20px 16px 150px}.home{display:flex;flex-direction:column;margin-top:8px;gap:25px}.home h1{font-size:30px;margin:15px 0}.home .home-art{width:100%;order:-1}.home canvas{aspect-ratio:16/7}.home-controls{margin-top:15px}.birth{display:flex;flex-direction:column;gap:20px}.birth h1{font-size:32px}.birth .birth-art{order:-1}.birth canvas{margin:0}.facts{margin:20px 0;gap:12px}.tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:20px;position:sticky;top:0;background:var(--paper);z-index:2}.tabs button{flex:1;border:0;border-radius:0;background:none;font-size:13px}.tabs button.active{border-bottom:2px solid var(--green);color:var(--green)}.layout{display:block}.identity,.world-panel{display:none}.layout[data-tab=people] .identity{display:block}.layout[data-tab=world] .world-panel{display:block}.layout:not([data-tab=life]) .life-panel{display:none}.layout[data-tab=money] .identity{display:block}.layout[data-tab=money] .identity .identity-basics,.layout[data-tab=money] .identity .people-section{display:none}.stage-head h2{font-size:20px}.age{font-size:34px}.focus{gap:4px;margin:12px 0 20px}.focus button{min-height:40px;font-size:11px;padding:6px 4px}.scene-caption{font-size:10px;padding:7px 9px}.event{padding:20px 18px}.event h2{font-size:20px}.event>p{font-size:13px}.choice{padding:12px 10px;grid-template-columns:20px 1fr 10px;gap:7px}.choice small{font-size:11px}.dock{justify-content:space-between;flex-wrap:wrap;gap:7px;padding:10px 14px max(10px,env(safe-area-inset-bottom))}.dock>button{flex:1;min-width:0;padding:10px;font-size:13px}.dock .pace{justify-content:center;order:3;width:100%;gap:9px}.pace button{min-height:32px;min-width:42px}.pace small{font-size:10px}.entry{grid-template-columns:37px 1fr 28px;gap:7px}.entry-age{font-size:16px}.ending .title{font-size:28px}.ending-intro{grid-template-columns:1fr;gap:22px}.ending-intro .lead{font-size:16px}.ending .section-actions button{flex:1}dialog{padding:20px}.balance{gap:15px}.balance strong{font-size:23px}.money{font-size:24px}.data-note{font-size:11px}.top-actions #audio[aria-pressed=true]{color:var(--green)}.section-actions{gap:6px}.section-actions button{padding:8px 10px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

@media(max-width:700px){.scene-wrap canvas,.birth-art canvas,.home .home-art canvas,#film-scene{aspect-ratio:12/7}.scene-caption{font-size:12px}.focus button{font-size:12px}.choice small{font-size:13px;line-height:1.55}.event>p{font-size:14px}.profile-caption{font-size:14px}}

@media(max-width:700px){.ending-intro>div:last-child{order:-1}.ending .lead{font-size:16px}.year-grid button{min-width:28px;min-height:28px}.film .stage-head{align-items:flex-start;gap:12px}.film .stage-head button{font-size:13px}.ending .entry p{font-size:14px}.ending .entry h3{font-size:15px}}

/* Module-capable older mobile browsers still need native-dialog equivalents. */
dialog{max-height:88vh;max-height:88dvh;overflow:auto}.legacy-dialog{position:fixed;top:50%;bottom:auto;transform:translateY(-50%);max-height:calc(100vh - 24px)}dialog+.backdrop{background:#233c3266}

.storage-warning{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 4vw;border-bottom:1px solid #c5a564;background:#fff0cc;color:#684e29;font-size:14px}.storage-warning[hidden]{display:none}.storage-warning p{max-width:800px}.storage-warning button{flex-shrink:0}@media(max-width:700px){.storage-warning{align-items:stretch;flex-direction:column;padding:14px 16px;gap:10px}}

.audio-settings{display:grid;gap:14px}.audio-settings label{display:flex;align-items:center;justify-content:space-between;font-size:16px;min-height:36px}.audio-settings input[type=range]{width:100%;min-height:36px;accent-color:var(--green)}.audio-settings input[type=checkbox]{width:22px;height:22px}.audio-settings output{color:var(--green)}@media(max-width:380px){.brand{font-size:15px}.top-actions button{font-size:11px;padding:6px;min-width:35px}}

/* A memory, its caption and playback controls stay together on a phone. */
.ending .film{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);margin:24px 0 15px;border:1px solid #b7c7b3;border-radius:12px;overflow:hidden;background:#ecf0e5;scroll-margin-top:12px}
.film-screen{position:relative;align-self:stretch;display:grid;place-items:center;background:#aab6a0}.ending .film-screen canvas{display:block;width:100%;aspect-ratio:12/7;object-fit:contain;image-rendering:pixelated}
#film-year-badge{position:absolute;left:12px;bottom:12px;padding:4px 10px;border-radius:4px;background:#2d493ce8;color:#fff7e5;font-size:13px;letter-spacing:.04em}
.film-content{min-width:0;padding:20px}.film-content .stage-head{margin:0}.film-content h3{font:21px/1.5 var(--serif)}.film-content #film-text{font-size:14px;line-height:1.8;min-height:0;max-height:7.2em;overflow:auto;margin:12px 0 18px;overscroll-behavior:contain}.film-buttons{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px}.film-buttons button{min-height:44px;padding:8px;font-size:14px}.film-buttons>button:first-child,.film-buttons>button:last-child{font-size:24px}.film-seek{display:flex;justify-content:space-between;gap:8px;margin-top:16px;font-size:11px;color:var(--muted)}.film-content input{min-height:34px;width:100%}.film-years{margin:0 0 25px}.film-years summary{font-size:14px;padding:8px 0}.ending-numbers{padding:18px;border-left:2px solid #c5d0bc;font-size:14px;align-self:start}.ending-numbers p+p{margin-top:16px}
@media(max-width:700px){.ending .film{grid-template-columns:1fr}.film-content{padding:16px}.film-content h3{font-size:19px}.film-content #film-text{margin:8px 0 12px;max-height:5.4em}.film-seek{margin-top:10px}.ending-intro>div:last-child{order:initial}.ending-numbers{margin:0}.ending .film-screen canvas{aspect-ratio:12/7}}
@media(max-width:360px){.film-content{padding:12px}.film-content h3{font-size:17px}.film-content #film-text{font-size:13px;line-height:1.65;max-height:4.95em}.film-buttons{gap:5px}.film-buttons button{font-size:12px}.film-seek{font-size:10px;gap:4px}}
@media(orientation:landscape) and (max-height:550px){.ending .film{grid-template-columns:1fr 1.15fr;align-items:stretch}.film-content{padding:12px}.film-content h3{font-size:17px}.film-content #film-text{font-size:13px;line-height:1.55;max-height:4.65em;margin:6px 0 10px}.film-seek{margin-top:8px}}

.book-row{border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:12px}.books .book-open{border:0;border-radius:0;text-align:left;width:100%;display:block}.books .book-open strong,.books .book-open small{display:block}.book-tools{display:flex;gap:8px;padding:0 12px 12px}.book-tools button{font-size:13px;flex:1;padding:6px;min-height:44px}

.top-actions{flex-wrap:wrap}.top{align-items:flex-start}.top-actions button{white-space:nowrap}@media(max-width:600px){.top{flex-wrap:wrap}.top-actions{justify-content:flex-start;gap:5px}.top-actions button{font-size:11px;padding:7px}}

.top{height:auto;min-height:77px;padding-top:12px;padding-bottom:12px;gap:12px}.top-actions{max-width:100%}@media(max-width:600px){.top-actions{width:100%}}
