:root{color-scheme:dark;--bg:#0c1319;--panel:#131e26;--line:#b6ad812b;--gold:#d3bc85;--text:#e5e3d7;--muted:#95a2a5;--green:#9bbbaa;--serif:'Yu Mincho','Hiragino Mincho ProN','Noto Serif CJK JP',serif;--sans:'Yu Gothic','Hiragino Kaku Gothic ProN',system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px}button,input,select{font:inherit}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:#18252d;padding:11px 17px;transition:background .2s,border-color .2s,transform .2s}button:hover{background:#263740;border-color:#c4b48288}button:active{transform:translateY(1px)}button:disabled{cursor:default;opacity:.35}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid #e1ca92;outline-offset:4px}.primary{background:#c6b17d;color:#162129;border-color:#c6b17d;font-weight:700}.primary:hover{background:#e0cea1}.quiet{background:transparent;border-color:transparent;color:var(--muted)}.small{font-size:12px;padding:7px 11px}.gold{color:var(--gold)}.muted{color:var(--muted)}.eyebrow{letter-spacing:.23em;font-size:11px;color:var(--gold)}.serif{font-family:var(--serif)}
.shell{max-width:1440px;margin:auto;padding:0 64px}.site-header{height:94px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{letter-spacing:.32em;font-family:Georgia,serif;font-size:22px;display:flex;align-items:center;gap:15px}.brand-icon{color:var(--gold);font-size:27px}.header-right{display:flex;align-items:center;gap:25px;font-size:11px;letter-spacing:.15em;color:var(--muted)}.edition{border:1px solid var(--line);padding:7px 10px;letter-spacing:.1em}.library-intro{text-align:center;padding:61px 0 42px}.library-intro h1{font-family:var(--serif);font-size:38px;font-weight:400;letter-spacing:.16em;margin:16px 0}.library-intro p{color:var(--muted);font-size:13px;letter-spacing:.07em;line-height:2}.ornament{display:flex;align-items:center;justify-content:center;gap:16px;color:var(--gold);margin-top:23px;font-size:11px}.ornament:before,.ornament:after{content:'';width:70px;height:1px;background:var(--line)}.stories{display:grid;grid-template-columns:1fr 1fr;gap:28px}.story-card{position:relative;border:1px solid var(--line);background:#121c23;overflow:hidden}.story-art{position:relative;height:290px;overflow:hidden;background:#1d3039}.story-art canvas,.story-art .cover-art{width:100%;height:100%;object-fit:cover;transform:scale(1.2);image-rendering:auto;transition:transform 1s}.story-card:hover .story-art canvas,.story-art .cover-art{transform:scale(1.25)}.story-art:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#07101600 25%,#121c23 100%)}.story-number{position:absolute;top:21px;left:25px;font-family:Georgia,serif;font-size:12px;letter-spacing:.18em;color:#d5d6c5;z-index:1}.story-tag{position:absolute;top:18px;right:21px;background:#0b1525a6;border:1px solid #d6d9c12a;padding:6px 11px;font-size:10px;letter-spacing:.12em;z-index:1}.story-info{padding:0 32px 27px;position:relative;margin-top:-41px;z-index:2}.story-info h2{font-size:32px;font-weight:400;letter-spacing:.1em;font-family:var(--serif);margin:9px 0 7px}.story-info .english{font-size:9px;letter-spacing:.2em;color:var(--gold)}.story-description{white-space:pre-line;color:#aab5b5;font-size:12px;line-height:2.1;margin:19px 0}.story-meta{display:flex;gap:22px;font-size:11px;color:#c2c8bd;padding:18px 0;border-top:1px solid var(--line)}.story-actions{display:flex;gap:9px}.story-actions .primary{flex:1;text-align:left;display:flex;justify-content:space-between;font-size:12px}.story-actions button{font-size:12px}.library-footer{padding:32px 0;display:flex;align-items:center;justify-content:space-between;color:#7e9096;font-size:11px}.footer-controls{display:flex;gap:18px}kbd{display:inline-block;min-width:21px;text-align:center;border:1px solid #aab7ac33;border-radius:3px;padding:2px 5px;margin-right:5px;font:10px var(--sans);color:#b5c0b8}.bottom-note{text-align:center;border-top:1px solid var(--line);padding:20px;font-size:10px;letter-spacing:.17em;color:#667d84}
.game{max-width:1440px;margin:auto;padding:0 38px}.game-header{height:72px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.game-title{display:flex;align-items:center;gap:22px}.game-title .brand{font-size:16px}.game-title .story-name{border-left:1px solid var(--line);padding-left:22px;font-family:var(--serif);letter-spacing:.12em}.game-actions{display:flex;gap:8px}.location-bar{display:flex;align-items:center;justify-content:space-between;padding:20px 0 17px;gap:20px}.location-bar h1{font-family:var(--serif);font-weight:400;font-size:23px;letter-spacing:.12em;margin:0}.location-bar .objective{font-size:12px;color:#b4beb6;display:flex;align-items:center;gap:10px}.location-bar .eyebrow{font-size:9px}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:18px}.viewport{position:relative;border:1px solid #82968a44;background:#0c1720;aspect-ratio:16/9;overflow:hidden}.world{width:100%;height:100%;display:block;touch-action:none}.map-badge{position:absolute;top:17px;left:19px;font-size:10px;letter-spacing:.18em;color:#d5d9c5;background:#0d1a23af;border:1px solid #b5c0ac30;padding:8px 11px;pointer-events:none}.map-badge:before{content:'◆';color:var(--gold);margin-right:10px}.interact-hint{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#0d1924e8;border:1px solid #bfae7477;padding:9px 18px;font-size:12px;color:#e0d4b4;pointer-events:none}.field-bottom{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);min-height:44px;gap:10px}.sidebar{background:#121d24;border:1px solid var(--line);padding:21px 17px;display:flex;flex-direction:column;gap:18px}.sidebar-label{font-size:10px;letter-spacing:.17em;color:var(--gold)}.party-member{position:relative;padding:2px 0 16px;border-bottom:1px solid var(--line)}.party-heading{display:flex;gap:11px;align-items:center;margin-bottom:11px}.portrait{width:43px;height:49px;border:1px solid #b0bfaa29;background:linear-gradient(140deg,#344751,#14222b);image-rendering:pixelated;flex-shrink:0}.party-heading strong{display:block;font-family:var(--serif);font-size:16px;font-weight:400;letter-spacing:.05em}.party-heading span{font-size:10px;color:var(--muted)}.level{margin-left:auto!important;font-family:Georgia,serif;font-size:12px!important;color:var(--gold)!important}.stat-line{display:flex;justify-content:space-between;font-family:Georgia,serif;font-size:10px;margin-top:7px;color:#a4b9b2}.stat-line .num{color:#d9dfd0}.bar{height:4px;background:#29353b;margin-top:4px}.bar i{height:100%;display:block;background:linear-gradient(90deg,#5c867d,#b0c8a0);transition:width .3s}.bar.mp i{background:linear-gradient(90deg,#4d6f8a,#9aafc6)}.dead{opacity:.45}.party-member:last-of-type{border-bottom:0}.sidebar-footer{margin-top:auto;font-size:11px;color:var(--muted);display:flex;justify-content:space-between}.game-toolbar{display:flex;gap:9px}.game-toolbar button{font-size:11px;padding:7px 12px}.touch-controls{display:none;gap:8px;align-items:center}.dpad{display:grid;grid-template-columns:repeat(3,35px);grid-template-rows:repeat(2,30px);gap:3px}.dpad button{padding:1px}.dpad [data-move="up"]{grid-column:2}.dpad [data-move="left"]{grid-column:1;grid-row:2}.dpad [data-move="down"]{grid-column:2;grid-row:2}.dpad [data-move="right"]{grid-column:3;grid-row:2}
.overlay{position:fixed;inset:0;background:#050b12b3;backdrop-filter:blur(5px);z-index:20;display:flex;align-items:center;justify-content:center;padding:24px}.modal{position:relative;border:1px solid #b3ab7866;background:linear-gradient(140deg,#1c2c36,#111c25);width:min(700px,100%);max-height:88vh;overflow-y:auto;padding:34px;box-shadow:0 25px 100px #0009}.modal h2{font-family:var(--serif);font-size:26px;font-weight:400;letter-spacing:.1em;margin:9px 0 23px}.modal p{line-height:2;color:#b9c3bf;font-size:13px}.modal .close{position:absolute;top:16px;right:15px}.modal-actions{display:flex;gap:10px;margin-top:24px;flex-wrap:wrap}.modal-actions button{flex:1}.dialogue-overlay{align-items:flex-end;padding-bottom:8vh;background:#040b1533;backdrop-filter:none}.dialogue-box{width:min(860px,100%);min-height:188px;padding:27px 34px}.speaker{display:inline-block;color:var(--gold);font-family:var(--serif);font-size:18px;letter-spacing:.1em;margin-bottom:13px}.dialogue-text{font-size:15px!important;line-height:2.1!important;color:#e2e5d8!important;margin:0 0 22px}.dialogue-next{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:10px}.dialogue-next button{font-size:12px;padding:6px 14px}.option-list{display:grid;gap:10px}.option-list button{text-align:left;font-size:14px;padding:15px 18px}.option-list .index{color:var(--gold);font-family:Georgia,serif;margin-right:15px}.journal-list{list-style:none;padding:0;margin:0;counter-reset:entries}.journal-list li{padding:17px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.9;color:#c5cec7;display:flex;gap:17px}.journal-list li:before{counter-increment:entries;content:counter(entries,decimal-leading-zero);color:var(--gold);font:12px Georgia,serif;padding-top:5px}.room-list{display:grid;grid-template-columns:1fr 1fr;gap:9px}.room-entry{border:1px solid var(--line);padding:15px;font-size:13px}.room-entry.active{background:#9bbaab16;border-color:#a6c4ad88}.room-entry small{display:block;color:var(--muted);font-size:10px;margin-top:7px}.item-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 0;border-bottom:1px solid var(--line)}.item-row strong{font-weight:400;font-size:15px}.item-row small{display:block;font-size:11px;color:var(--muted);margin-top:6px}.item-row button{font-size:12px;min-width:85px}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:17px 0;border-bottom:1px solid var(--line);gap:15px}.settings-row small{color:var(--muted);display:block;margin-top:5px;font-size:11px}select{background:#23343e;color:var(--text);padding:9px;border:1px solid var(--line)}
.battle-panel{border:1px solid var(--line);background:#121e27;margin-top:12px;padding:18px}.battle-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:12px}.battle-heading h2{font-family:var(--serif);font-size:18px;font-weight:400;margin:0}.battle-commands{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.battle-commands button{font-size:12px;text-align:left}.plans{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:12px 0}.plan{padding:10px 7px;border:1px solid var(--line);font-size:10px;color:var(--muted);text-align:left}.plan strong{color:var(--text);display:block;font-size:12px;font-weight:400;margin-bottom:5px}.plan.selected{border-color:var(--gold);background:#bba96f17}.battle-log{font-size:12px;line-height:1.9;height:100px;min-height:100px;max-height:100px;overflow-y:auto;color:#bfcbc2}.battle-log .warning{color:#e0ad78}.battle-log .heal{color:#acd2ac}.battle-log .victory{color:var(--gold)}.battle-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.battle-actions button{font-size:11px}.battle-actions .primary{margin-left:auto}.ending{padding:60px 20px;text-align:center}.ending h2{font-size:38px;margin:25px 0}.ending-stats{display:flex;justify-content:center;gap:35px;margin:30px 0}.ending-stats strong{display:block;font:25px Georgia,serif;color:var(--gold);margin-bottom:8px}.ending-stats span{font-size:11px;color:var(--muted)}#toast{position:fixed;top:22px;left:50%;transform:translate(-50%,-15px);z-index:100;background:#263a40f5;border:1px solid #b6bd8e77;color:#e7e4cc;padding:12px 24px;opacity:0;pointer-events:none;transition:.2s;max-width:90vw;font-size:13px}#toast.visible{opacity:1;transform:translate(-50%,0)}.save-info{font-size:10px;color:var(--gold);margin-top:12px}.help-grid{display:grid;grid-template-columns:100px 1fr;gap:15px;font-size:12px;line-height:1.8}.file-input{display:none}
@media(min-width:1500px){.library-intro{padding-top:80px}.story-art{height:330px}}
@media(max-width:1050px){.shell{padding:0 30px}.game{padding:0 20px}.play-layout{grid-template-columns:minmax(0,1fr) 185px}.sidebar{padding:15px 12px;gap:10px}.party-member{padding-bottom:10px}.location-bar .objective{max-width:50%;font-size:10px}.story-info{padding:0 24px 23px}.story-info h2{font-size:27px}.story-art{height:250px}.game-title .brand{display:none}.game-title .story-name{border:0;padding:0}}
@media(max-width:760px){.shell{padding:0 20px}.site-header{height:70px}.brand{font-size:18px}.header-right>span:first-child{display:none}.library-intro{padding:35px 0 25px}.library-intro h1{font-size:27px}.library-intro p{font-size:11px}.stories{grid-template-columns:1fr;gap:22px}.story-art{height:240px}.library-footer{align-items:flex-start;gap:20px;flex-direction:column}.footer-controls{gap:8px}.game{padding:0 10px}.game-header{height:60px}.game-actions button{font-size:10px;padding:8px}.game-title .story-name{font-size:13px}.location-bar{padding:14px 4px;align-items:flex-start}.location-bar h1{font-size:17px}.location-bar .objective{max-width:48%;font-size:9px;line-height:1.8}.play-layout{display:flex;flex-direction:column;gap:9px}.sidebar{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:10px}.sidebar-label,.sidebar-footer{display:none}.party-member{border:0;padding:0}.party-heading{gap:5px;margin-bottom:5px;flex-wrap:wrap}.portrait{width:28px;height:34px}.party-heading strong{font-size:13px}.party-heading span{font-size:8px}.level{display:none!important}.stat-line{font-size:8px}.field-bottom{flex-wrap:wrap;padding:9px 0}.keyboard-help{display:none}.touch-controls{display:flex}.game-toolbar button{padding:8px;font-size:10px}.interact-hint{bottom:8px;padding:5px 10px;font-size:9px}.map-badge{top:8px;left:8px;font-size:8px;padding:5px}.overlay{padding:13px}.modal{padding:26px 20px}.modal h2{font-size:22px}.dialogue-overlay{padding-bottom:25px}.dialogue-text{font-size:13px!important}.battle-panel{padding:12px;margin-top:0}.battle-commands{grid-template-columns:1fr 1fr}.battle-heading h2{font-size:16px}.battle-actions button{font-size:10px;padding:9px}.room-list{grid-template-columns:1fr 1fr}.ending h2{font-size:28px}.modal-actions button{font-size:11px}.battle-log{height:70px;min-height:70px;max-height:70px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}.story-card:hover .story-art canvas,.story-art .cover-art{transform:scale(1.2)}}
.spec-link{color:var(--gold);text-decoration:none;align-self:center;font-size:11px;white-space:nowrap}.spec-link:hover{text-decoration:underline}
.battle-mode .viewport{height:clamp(250px,42vh,410px);aspect-ratio:auto}.battle-mode .world{object-fit:contain}.battle-mode .field-bottom{display:none}.battle-mode .battle-panel{padding:13px}.battle-mode .battle-heading{margin-bottom:7px}.battle-mode .plans{margin:8px 0}.battle-mode .plan{padding:7px}.battle-mode .battle-commands button{padding:8px 12px}.battle-mode .battle-log{height:58px;min-height:58px;max-height:58px;margin-top:8px}.battle-mode .battle-actions{margin-top:8px}.battle-mode .sidebar{gap:10px}.battle-mode .party-member{padding-bottom:10px}
@media(max-width:760px){.battle-mode .viewport{height:auto;aspect-ratio:16/9}.battle-mode .battle-log{height:64px;min-height:64px;max-height:64px}.battle-mode .battle-commands{grid-template-columns:repeat(3,1fr)}.battle-mode .battle-commands button{font-size:10px;padding:9px 5px}.footer-controls{flex-wrap:wrap}}
