@charset "UTF-8";
:root{color-scheme:dark;--ink:#fff3dc;--muted:#c6bbd5;--gold:#e8c57d;--line:#8e765a;--panel:#26223d;--bg:#18162f}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 10%,#302748, #141323 80%);color:var(--ink);font-family:'Yu Gothic','Meiryo',sans-serif}button,input{font:inherit}button{border:1px solid #89735e;border-radius:9px;min-height:44px;padding:8px 15px;color:var(--ink);background:#312942;cursor:pointer;transition:background .12s,transform .12s}button:hover{background:#4a3c57}button:active{transform:translateY(1px)}button:disabled{cursor:default;opacity:.5}button.primary{background:#ebce92;color:#282035;border-color:#ffdf9e;font-weight:700}button.primary:hover{background:#ffe5b2}button small{opacity:.8;font-size:10px;margin-left:4px}button:focus-visible,canvas:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid #8adce6;outline-offset:3px}[hidden]{display:none!important}.app{position:relative;width:min(1440px,100%);height:100svh;min-height:350px;margin:auto;padding:14px max(14px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));display:grid;grid-template-rows:62px minmax(0,1fr) 20px;gap:10px}.topbar{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #72604966;padding:0 8px 12px;gap:12px}.brand{display:flex;gap:10px;align-items:center;font-family:'Yu Mincho','MS PMincho',serif;font-size:22px;font-weight:700;letter-spacing:.06em}.brand small{display:block;font-size:11px;color:var(--muted);font-weight:400;letter-spacing:.2em;margin-top:5px}.moon-mark{font-size:38px;color:var(--gold)}nav{display:flex;gap:7px}nav button{padding:6px 11px;font-size:12px}.game-layout{min-height:0;display:grid;grid-template-columns:minmax(190px,260px) minmax(0,640px);justify-content:center;gap:28px}.side{min-height:0;display:flex;flex-direction:column;align-items:center;text-align:center;padding:12px 0}.chapter-ornament{font-family:serif;width:54px;height:54px;padding-top:10px;border:1px solid #b99b6a;border-radius:50%;font-size:26px;color:var(--gold);position:relative}.chapter-ornament:before{content:'';position:absolute;inset:5px;border:1px solid #8e765a88;border-radius:50%}.eyebrow{font-size:10px;letter-spacing:.3em;color:var(--muted);margin:15px 0 7px}h1{font-family:'Yu Mincho','MS PMincho',serif;font-size:23px;letter-spacing:.09em;margin:0;line-height:1.5}.level-label{font-size:12px;color:var(--gold);margin:8px 0}.portrait{flex:1;min-height:70px;width:100%;position:relative;max-height:310px}.portrait:after{content:'';position:absolute;bottom:0;left:0;right:0;height:30px;background:linear-gradient(transparent,var(--bg))}.portrait img{height:100%;width:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 8px 20px #ad68be33)}.quote{background:#2d254166;border:1px solid #a0876a44;border-radius:12px;padding:12px;width:100%;font-size:13px;line-height:1.8}.quote span{color:var(--gold);font-size:11px}.quote p{margin:2px 0}.side-actions{display:flex;gap:6px;margin:12px 0}.side-actions button{font-size:12px;padding:8px 10px}.fan-note{font-size:10px;color:var(--muted);line-height:1.7;margin:0}.play-column{min-height:0;display:grid;grid-template-rows:42px minmax(0,1fr) 50px 22px;gap:6px}.hud{display:flex;align-items:center;justify-content:space-around;border:1px solid #b99b6a55;background:#262139;border-radius:12px;font-size:12px}.hud strong{font-size:21px;color:var(--gold);font-family:Georgia,serif;margin-left:5px}.board-box{min-height:0;position:relative;display:flex;justify-content:center;align-items:center;background:#1b253199;border:1px solid #b99b6a88;border-radius:18px;overflow:hidden;box-shadow:0 12px 60px #0005,inset 0 0 25px #dabb7211}canvas{max-width:100%;max-height:100%;width:auto;height:100%;aspect-ratio:480/650;display:block;touch-action:none;user-select:none}.controls{display:flex;gap:7px;align-items:center;justify-content:center}.controls button{font-size:13px;white-space:nowrap;padding:7px 11px}.aim-label{display:none}.hint{font-size:11px;text-align:center;color:var(--muted);margin:2px 0}.credit{font-size:9px;text-align:center;color:var(--muted);padding-top:4px}.toast{position:absolute;top:55%;left:5%;right:5%;pointer-events:none;text-align:center;font-weight:700;font-size:20px;color:#fff5d8;text-shadow:0 2px 4px #000;opacity:0;transition:opacity .15s}.toast.show{opacity:1}.layer{position:absolute;inset:0;background:#0e0d20d9;backdrop-filter:blur(8px);z-index:5;display:flex;justify-content:center;align-items:center;padding:18px}.panel{background:linear-gradient(145deg,#332b48,#211c33);border:1px solid #c5a87899;border-radius:22px;width:min(690px,100%);max-height:100%;overflow:auto;padding:28px;box-shadow:0 20px 100px #0008;text-align:center;scrollbar-width:thin}.panel h2{font-family:'Yu Mincho','MS PMincho',serif;font-size:29px;margin:8px 0 12px;letter-spacing:.1em}.panel p{line-height:1.9;font-size:14px}.panel .kicker{font-size:11px;letter-spacing:.25em;color:var(--gold)}.panel .subtitle{color:var(--gold);font-size:17px}.panel .actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:18px}.title-art{height:200px;position:relative;background:radial-gradient(ellipse,#68508977,transparent 70%);margin:0 auto;display:flex;align-items:flex-end;justify-content:center;gap:15px}.title-art img{height:100%;max-width:48%;object-fit:contain}.title-art .decor{font-size:70px;color:#ffe1a2;align-self:center}.fine{font-size:11px!important;color:var(--muted)}.chapter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;text-align:center;margin:9px 0 18px}.chapter-grid button{padding:7px 3px;font-size:12px;min-height:58px}.chapter-grid small{display:block;font-size:12px;color:var(--gold);margin:2px 0}.map-heading{text-align:left;font-size:14px;font-weight:700;color:var(--gold)}.stars{font-size:38px;letter-spacing:8px;color:var(--gold);margin:12px 0}.result-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;max-width:420px;margin:20px auto}.result-stats div{padding:10px;background:#19162d;border-radius:10px}.result-stats dt{font-size:11px;color:var(--muted)}.result-stats dd{margin:4px 0;font-size:24px;color:#f5dfa8}.story-stage{position:relative;height:min(36svh,310px);min-height:120px;background:url('assets/garden.webp') center/cover;border-radius:12px;overflow:hidden;display:flex;justify-content:center;align-items:flex-end;gap:15px}.story-stage img{height:94%;max-width:42%;object-fit:contain}.story-stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#111320;z-index:1}.story-stage.ending:before{content:'✦ ✧ ✦';position:absolute;inset:15px 0 auto;font-size:50px;color:#ffeaa9;text-shadow:30px 15px #cc8cd5,-40px 20px #80d9c4;letter-spacing:16px}.caption{min-height:86px;padding:9px;border-radius:10px;background:#19162d;margin-top:10px}.caption strong{font-size:12px;color:var(--gold)}.caption p{font-size:16px;margin:4px 0}.story-progress{height:3px;margin:10px 0;background:#5c4b67;border-radius:3px}.story-progress span{display:block;background:var(--gold);height:3px;width:0}.rules{text-align:left;max-width:500px;margin:auto}.rules li{font-size:14px;line-height:1.9;margin:8px 0}.art-note{border:1px dashed #af8d6755;background:#1c1930;padding:6px;font-size:10px!important;color:var(--muted)}
@media(min-width:1100px){.game-layout{grid-template-columns:280px minmax(0,740px);gap:48px}.brand{font-size:24px}.app{padding-top:18px}}
@media(max-width:650px){.app{padding:6px max(7px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));grid-template-rows:48px minmax(0,1fr) 15px;gap:5px}.topbar{padding:0 0 6px;gap:3px}.brand{font-size:15px;gap:4px;letter-spacing:0}.brand small{font-size:8px;margin-top:2px;letter-spacing:.1em}.moon-mark{font-size:26px}nav{gap:4px}nav button{font-size:10px;min-height:38px;padding:6px}.game-layout{display:block;position:relative}.side{display:none}.play-column{height:100%;grid-template-rows:36px minmax(0,1fr) 44px 17px;gap:4px}.hud{font-size:10px;border-radius:8px}.hud strong{font-size:19px}.controls{gap:5px}.controls button{min-height:42px;font-size:12px;padding:5px 12px}.controls button small{display:none}.hint{font-size:10px}.credit{font-size:8px}.board-box{border-radius:12px}.panel{padding:18px 14px;border-radius:16px}.panel h2{font-size:24px}.panel p{font-size:13px}.title-art{height:160px}.title-art .decor{font-size:45px}.layer{padding:10px}.caption{min-height:82px}.caption p{font-size:14px}.chapter-grid{gap:5px}.panel .actions button{font-size:13px}.result-stats{margin:10px auto}.story-stage{height:28svh}}
@media(max-height:500px) and (min-width:650px){.app{grid-template-rows:42px minmax(0,1fr) 12px;gap:4px;padding:6px 12px}.topbar{padding-bottom:5px}.brand{font-size:16px}.brand small{display:none}.moon-mark{font-size:27px}nav button{min-height:34px}.game-layout{grid-template-columns:minmax(170px,220px) minmax(0,520px);gap:18px}.side{padding:0;align-items:stretch}.chapter-ornament,.eyebrow,.fan-note{display:none}h1{font-size:17px}.level-label{font-size:10px;margin:3px 0}.portrait{position:absolute;width:140px;height:120px;bottom:100px;opacity:.75;pointer-events:none}.quote{font-size:11px;margin-top:auto;padding:8px;z-index:1}.side-actions{margin:5px 0;justify-content:center;z-index:1}.side-actions button{min-height:36px}.play-column{grid-template-rows:30px minmax(0,1fr) 40px;gap:3px}.hint{display:none}.hud strong{font-size:17px}.controls button{min-height:36px;font-size:11px;padding:5px 10px}.controls button small{display:none}.credit{font-size:8px}.panel{padding:12px 20px}.panel h2{font-size:21px}.title-art{height:75px}.panel p{font-size:12px;margin:5px 0}.panel .actions{margin-top:10px}.story-stage{height:125px;min-height:100px}.caption{min-height:50px;margin-top:6px;padding:5px}.caption p{font-size:13px}.stars{margin:4px;font-size:26px}.result-stats{margin:5px auto}.chapter-grid{margin:4px 0 9px}.chapter-grid button{min-height:44px}.map-heading{margin:3px 0}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.fallback-full{position:fixed!important;inset:0!important;z-index:100000!important;width:100vw!important;height:100dvh!important;max-width:none!important}html:has(.fallback-full){overflow:hidden}

#pauseMobile{display:none}@media(max-width:650px){#pauseMobile{display:block}.controls button{padding:5px 10px}}

/* 共通の完成人物素材：脇役は背景側、主役は手前。 */
.story-stage .story-person{position:absolute;bottom:0;max-width:38%;height:94%;z-index:1}.story-stage .kaguya{right:9%;}.story-stage .mokou{left:9%;}.story-stage .eirin{left:44%;height:66%;max-width:23%;z-index:0;opacity:.9}.story-stage .reisen{right:0;height:66%;max-width:23%;z-index:0;opacity:.9}.story-stage video{z-index:2}

/* Fit the portrait inside its flex area, including short landscape screens. */
.portrait img{position:absolute;inset:0}

/* 明るい月明かり。元の庭と人物を保ち、ゲーム画面の暗幕を外す。 */
:root{color-scheme:light;--ink:#382d4a;--muted:#615572;--gold:#866026;--line:#bfa987;--panel:#fffaf1;--bg:#e8e0f0}
body{background:radial-gradient(ellipse at 50% 5%,#fff8e5 0%,#e8e0f0 52%,#d8e9ec 100%)}
button{background:#fff9f0;border-color:#b7a5bd;color:var(--ink)}button:hover{background:#f1e1ef}button.primary{background:#efd293;color:#392d42;border-color:#c5a568}button.primary:hover{background:#ffe3a6}
.topbar{border-bottom-color:#a693b666}.chapter-ornament{background:#fff5d9;border-color:#c4a877}.chapter-ornament:before{border-color:#c4a87777}
.quote{background:#fffaf0d9;border-color:#bda2bc77}.hud{background:#fffaf1;border-color:#bea4ba88}
.board-box{background:#d9e9e9;border-color:#b39bbd;box-shadow:0 10px 36px #76608925,inset 0 0 25px #fff9d977}
.layer{background:#e8e1f0d9}.panel{background:linear-gradient(145deg,#fffaf1,#eee6f6);border-color:#bda0bb;box-shadow:0 16px 65px #76598a30}
.result-stats div,.caption{background:#fffaf0;border:1px solid #d7c4d9}.result-stats dd{color:#6c4b21}.story-progress{background:#d3c0d8}.title-art{background:radial-gradient(ellipse,#e9cfed99,transparent 70%)}.title-art .decor{color:#987139}
.art-note{background:#f9f0ff;border-color:#c6abc8}.stars{color:#946824}
