:root{--bg:#050b06;--panel:#0d1710;--panel2:#16231a;--panel3:#213628;--line:#9ac39a;--text:#e8f7e5;--muted:#b7d7b5;--accent:#efffc0;--pink:#ffd8ec;--warn:#ffe6b8;--bad:#ffcaca;--blue:#d7f7ff;--shadow:rgba(0,0,0,.52)}
*{box-sizing:border-box} body{margin:0;background:radial-gradient(circle at top,#162519,#040804 75%);color:var(--text);font-family:"Yu Gothic UI","Hiragino Kaku Gothic ProN","Meiryo",sans-serif;overflow-x:hidden}button,select{font:inherit;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:9px 11px;cursor:pointer}button:hover,select:hover{filter:brightness(1.1)}button:disabled{opacity:.38;cursor:not-allowed;filter:grayscale(.65)}button.primary{background:#2f4e36;color:var(--accent)}button.warn{background:#4b3e22;color:var(--warn)}button.danger{background:#4d2424;color:#ffe4e4}button.ghost{background:transparent}button.active{background:#395a40;color:var(--accent)}button.small{padding:6px 9px;font-size:12px}.wrap{max-width:1580px;margin:0 auto;padding:12px;display:grid;grid-template-columns:1.18fr .92fr;gap:12px;min-height:100vh}.left,.right{display:flex;flex-direction:column;gap:12px}.gb{background:linear-gradient(#0b140d,#101b13);border:3px solid var(--line);border-radius:18px;box-shadow:0 0 0 2px #1d2f21 inset,0 18px 44px var(--shadow);overflow:hidden}.pad{padding:12px}.topbar,.chips,.row,.tabs,.actions,.roomnav{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.topbar{justify-content:space-between}.chip{padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);font-size:12px;color:var(--muted)}.chip.hot{color:#fff5c8;border-color:#e2ce8e}.chip.pink{color:var(--pink);border-color:#e5aeca}.chip.blue{color:var(--blue);border-color:#a8d6e2}.screenwrap{padding:12px}.screen{position:relative;height:min(57vh,720px);min-height:420px;border:3px solid var(--line);border-radius:14px;overflow:hidden;background:#0d150e;box-shadow:inset 0 0 75px rgba(0,0,0,.72);transition:.2s filter,.2s transform}.screen:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:20;background:linear-gradient(rgba(180,255,180,.06),rgba(180,255,180,.04)),repeating-linear-gradient(180deg,rgba(0,0,0,0) 0,rgba(0,0,0,0) 3px,rgba(0,0,0,.18) 4px);mix-blend-mode:screen}.screen:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:19;background:radial-gradient(circle at 50% 8%,rgba(210,255,190,.07),transparent 38%),rgba(105,255,105,.04)}#bg,#char{position:absolute;inset:0;width:100%;height:100%}#bg{object-fit:cover;filter:grayscale(1) sepia(1) hue-rotate(25deg) saturate(4.2) brightness(.72) contrast(1.08)}#char{object-fit:contain;object-position:right bottom;padding:2% 2% 0 40%;z-index:6;filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(4.6) brightness(.88) contrast(1.06) drop-shadow(0 0 24px rgba(146,255,146,.16));transition:.2s opacity,.2s transform,.2s filter}#char.trace{opacity:.23;filter:grayscale(1) sepia(1) hue-rotate(25deg) saturate(2.5) brightness(.52) contrast(1.08) blur(.65px)}#char.buddy{opacity:.98;transform:translateX(-4px);filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(5.2) brightness(.95) contrast(1.08) drop-shadow(0 0 28px rgba(200,255,200,.2))}.placeholder{position:absolute;top:24%;left:0;right:0;z-index:3;padding:0 32px;color:#d7f0d3;opacity:.84;line-height:1.85;text-align:center}.roomlabel{position:absolute;top:12px;left:0;right:0;z-index:22;font-size:13px;color:var(--muted);letter-spacing:.18em;text-align:center;text-shadow:0 2px 6px #000}.objective{position:absolute;bottom:12px;left:12px;right:12px;z-index:22;padding:9px 10px;border:1px solid rgba(145,190,145,.5);background:rgba(10,18,11,.70);border-radius:10px;color:var(--muted);font-size:12px;line-height:1.55}.hintline{position:absolute;top:42px;left:12px;z-index:22;font-size:12px;color:#d9f4cb;background:rgba(8,16,9,.74);border:1px solid rgba(145,190,145,.35);padding:6px 8px;border-radius:8px;max-width:66%}.stamp{position:absolute;top:78px;right:24px;z-index:23;padding:8px 12px;border:2px solid rgba(222,255,184,.55);transform:rotate(-7deg);font-size:12px;letter-spacing:.18em;background:rgba(10,18,11,.52);color:#e7ffb9}.invasion{position:absolute;left:18px;bottom:75px;z-index:23;color:#ffe7f2;font-size:12px;opacity:.0;transition:.25s;text-shadow:0 0 8px #000}.glitchword{position:absolute;right:18px;bottom:58px;z-index:23;font-size:11px;letter-spacing:.12em;color:#ecffd4;opacity:0;transition:.15s;background:rgba(8,12,8,.44);border:1px solid rgba(255,255,255,.14);border-radius:8px;padding:6px 10px}.corruptHigh .invasion{opacity:.75}.corruptHigh .glitchword{opacity:.42}.corruptMax .screen{filter:contrast(1.15) brightness(.91)}.shake{animation:shake .35s linear 1}.glitch{animation:glitch .48s steps(2,end) 1}@keyframes shake{0%,100%{transform:translate(0,0)}20%{transform:translate(-3px,1px)}40%{transform:translate(3px,-1px)}60%{transform:translate(-2px,-2px)}80%{transform:translate(2px,1px)}}@keyframes glitch{0%{filter:contrast(1.08)}25%{filter:contrast(1.2) hue-rotate(14deg)}50%{filter:contrast(1.08) hue-rotate(-11deg)}75%{filter:contrast(1.24) hue-rotate(18deg)}100%{filter:contrast(1)}}.hotspots{position:absolute;inset:0;z-index:9}.hotspot{position:absolute;transform:translate(-50%,-50%);min-width:88px;padding:7px 8px;border-radius:999px;border:1px solid rgba(214,255,188,.55);background:rgba(8,16,9,.62);color:#e2f8d1;font-size:12px;line-height:1.2;text-align:center}.hotspot.active{background:#324d38;color:var(--accent);box-shadow:0 0 14px rgba(200,255,180,.15)}.speaker{font-weight:700;color:var(--accent);margin-bottom:8px;letter-spacing:.06em}.text{min-height:7.5em;line-height:1.8;white-space:pre-wrap}.subtext{margin-top:10px;border-top:1px solid rgba(143,189,146,.28);padding-top:10px;color:var(--muted);font-size:13px;line-height:1.72;min-height:3em;white-space:pre-wrap}.paneltitle{font-weight:700;color:var(--accent);margin-bottom:10px;letter-spacing:.04em}.box,.note,.itemrow,.docPage,.actionHelp,.keyBox,.ssBox{padding:9px 10px;border:1px solid rgba(143,189,146,.35);border-radius:10px;background:rgba(23,37,27,.75);font-size:13px;line-height:1.65}.statusgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.meter{height:10px;background:#0c130d;border:1px solid rgba(143,189,146,.45);border-radius:999px;overflow:hidden;margin-top:6px}.fill{height:100%;background:linear-gradient(90deg,#7fb67f,#daffb4)}.fill.pink{background:linear-gradient(90deg,#a9789a,#ffd3f0)}.fill.orange{background:linear-gradient(90deg,#b58b55,#fff0b3)}.fill.blue{background:linear-gradient(90deg,#6fa8bb,#d7fbff)}.scroll{max-height:265px;overflow:auto;display:grid;gap:8px;padding-right:4px}.scroll.tall{max-height:440px}.logline{padding:8px 10px;border-radius:10px;background:rgba(21,31,23,.74);font-size:13px;line-height:1.6;border:1px solid rgba(143,189,146,.24)}.itemrow{display:flex;justify-content:space-between;gap:8px;align-items:center}.invname{font-weight:700;color:#e7f6d1}.tiny{font-size:12px;color:var(--muted)}.targetGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.targetBtn{text-align:left}.actionGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.actionBtn{min-height:62px;text-align:left}.actionBtn b{display:block;color:var(--accent)}.actionBtn span{display:block;color:var(--muted);font-size:12px;margin-top:3px;line-height:1.4}.otome{border-color:rgba(255,215,231,.55)!important}.horror{border-color:rgba(255,220,180,.55)!important}.buddyAct{border-color:rgba(210,245,255,.45)!important}.docPanel{white-space:pre-wrap;min-height:122px}.overlay{position:fixed;inset:0;background:rgba(2,6,2,.82);z-index:80;display:flex;align-items:center;justify-content:center;padding:16px}.modal{max-width:1120px;width:100%;max-height:92vh;overflow:auto;background:#0e1710;border:2px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 24px 60px rgba(0,0,0,.52)}h1,h2,h3{margin:.1em 0 .5em}.subtitle{color:var(--muted);line-height:1.85}.endingTitle{font-size:28px;color:var(--accent);letter-spacing:.08em;margin-bottom:6px}.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.galleryCard{border:1px solid rgba(143,189,146,.35);border-radius:12px;padding:10px;background:rgba(23,37,27,.75)}.galleryCard img{width:100%;aspect-ratio:16/9;object-fit:cover;border:1px solid rgba(143,189,146,.25);border-radius:8px;background:#081108}.hidden{display:none!important}@media(max-width:1080px){.wrap{grid-template-columns:1fr}.screen{height:48vh;min-height:350px}#char{padding-left:25%}.statusgrid{grid-template-columns:1fr}.hintline{max-width:72%}}.chibi{position:absolute;top:8px;right:8px;width:64px;height:80px;z-index:24;pointer-events:none;filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(4.6) brightness(.92) contrast(1.06) drop-shadow(0 0 8px rgba(200,255,200,.3))}.chibi.hidden{display:none}.panelToggle{width:100%;text-align:left;margin-bottom:6px}.panelToggle b{color:var(--accent)}

.mapTools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.mapSummary{margin-bottom:8px;color:var(--muted);font-size:13px;line-height:1.55}.mapLegend{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.mapBadge{font-size:12px;border:1px solid rgba(143,189,146,.35);border-radius:999px;padding:4px 8px;background:rgba(23,37,27,.75);color:var(--muted)}.mapModeTabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.mapModeTabs button{font-size:12px;padding:6px 9px}.mapZoomBar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0;color:var(--muted);font-size:12px}.mapZoomBar button{font-size:12px;padding:5px 9px}.mapCurrentGrid{display:grid;grid-template-columns:1fr;gap:8px}.mapRoomCard{border:1px solid rgba(143,189,146,.35);border-radius:12px;background:rgba(23,37,27,.78);padding:10px;line-height:1.55}.mapRoomCard.current{border-color:#efffc0;background:rgba(49,81,58,.86)}.mapRoomCard.adjacent{border-color:#d7f7ff}.mapRoomCard.captor{border-color:#ffcaca;background:rgba(70,24,24,.72)}.mapRoomCard.unvisited{opacity:.72}.mapRoomCard b{color:var(--accent)}.mapLocalNext{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-top:8px}.mapJump{width:100%;text-align:left}.mapViewport{overflow:auto;max-height:620px;border:1px solid rgba(143,189,146,.38);border-radius:14px;background:radial-gradient(circle at 50% 45%,rgba(220,255,190,.08),rgba(6,14,7,.96) 64%);-webkit-overflow-scrolling:touch}.mapBoardScaler{transform-origin:0 0;transition:transform .12s linear}.mapBoard{position:relative;width:1280px;height:880px;min-width:1280px;border-radius:14px;overflow:hidden}.mapBoard svg{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}.mapEdge{stroke:rgba(154,195,154,.22);stroke-width:2.4;stroke-linecap:round}.mapEdge.active{stroke:rgba(220,255,210,.96);stroke-width:5;filter:drop-shadow(0 0 6px rgba(200,255,180,.55))}.mapNode{position:absolute;z-index:2;transform:translate(-50%,-50%);width:120px;min-height:46px;padding:7px 8px;border-radius:12px;border:1px solid rgba(214,255,188,.42);background:rgba(16,28,18,.94);color:var(--text);font-size:12px;line-height:1.24;text-align:center;box-shadow:0 6px 22px rgba(0,0,0,.35);cursor:pointer}.mapNode:disabled{cursor:default}.mapNode b{display:block;color:var(--accent);font-size:12px}.mapNode.here{border-color:#efffc0;background:#31513a;box-shadow:0 0 0 2px rgba(239,255,192,.28),0 0 26px rgba(210,255,190,.35);z-index:5}.mapNode.adj{border-color:#9feaff;background:rgba(30,58,64,.94);box-shadow:0 0 0 2px rgba(155,230,255,.22),0 0 18px rgba(155,230,255,.28);z-index:4}.mapNode.visited{opacity:1}.mapNode.unvisited{opacity:.5}.mapNode.captor{border-color:#ffcaca;background:rgba(70,24,24,.92);z-index:3}.mapNode.home{box-shadow:inset 0 0 0 1px rgba(255,230,184,.3)}.mapList{display:grid;gap:8px}.mapListSection{border:1px solid rgba(143,189,146,.3);border-radius:12px;background:rgba(12,22,14,.62);padding:9px}.mapListSection h3{font-size:14px;margin:0 0 6px;color:var(--accent)}@media(max-width:640px){.mapViewport{max-height:540px}.mapBoard{width:1080px;min-width:1080px;height:780px}.mapNode{width:108px;font-size:11px}.mapLocalNext{grid-template-columns:1fr}}

/* ========== v18 stage9 探索ノートUI ========== */
.notebookModal{position:relative;max-width:1180px;background:linear-gradient(135deg,#0f1b12,#172417 48%,#0b130d);border-color:#d8efb8;overflow:hidden;transform-origin:50% 8%;box-shadow:0 28px 80px rgba(0,0,0,.68), inset 0 0 0 1px rgba(239,255,192,.18)}
.notebookModal:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.035),transparent 11%,rgba(255,255,255,.018) 50%,transparent 89%,rgba(255,255,255,.035)),repeating-linear-gradient(180deg,rgba(239,255,192,.035) 0,rgba(239,255,192,.035) 1px,transparent 1px,transparent 34px);mix-blend-mode:screen}
.notebookOpen{animation:notebookOpen .42s cubic-bezier(.2,.9,.2,1) 1}
@keyframes notebookOpen{0%{opacity:0;transform:perspective(900px) rotateX(18deg) scale(.92) translateY(18px);filter:blur(2px)}55%{opacity:1;transform:perspective(900px) rotateX(-3deg) scale(1.015) translateY(-3px)}100%{opacity:1;transform:perspective(900px) rotateX(0) scale(1) translateY(0);filter:blur(0)}}
.noteChibi{position:absolute;right:18px;top:14px;width:86px;height:102px;object-fit:contain;z-index:2;filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(4.6) brightness(.92) contrast(1.06) drop-shadow(0 0 12px rgba(230,255,190,.32));pointer-events:none}
.notebookTitle{padding-right:105px}.notebookTabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 12px}.notebookGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}.notebookWide{grid-column:1/-1}.progressPill{display:inline-block;border:1px solid rgba(143,189,146,.35);border-radius:999px;padding:3px 8px;margin:2px 3px 2px 0;background:rgba(16,28,18,.78);font-size:12px;color:var(--muted)}.progressPill.ok{color:#efffc0;border-color:#d8efb8}.progressPill.warn{color:#ffe6b8;border-color:#e0bd7f}.progressPill.bad{color:#ffcaca;border-color:#d58f8f}.roomProgress{border-left:4px solid rgba(143,189,146,.35)}.roomProgress.current{border-left-color:#efffc0}.roomProgress.unvisited{opacity:.62}.roomProgress.hasKey{box-shadow:inset 0 0 0 1px rgba(255,230,184,.18)}.notebookMeter{height:12px;background:#0c130d;border:1px solid rgba(143,189,146,.45);border-radius:999px;overflow:hidden;margin:6px 0}.notebookMeterFill{height:100%;background:linear-gradient(90deg,#7fb67f,#daffb4);width:0}.recipeParts{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.notebookClose{position:relative;z-index:4}
.rescueCard{position:relative;min-height:148px;padding-right:86px;overflow:hidden}
.rescueCard.ok{border-color:#d8efb8;box-shadow:inset 0 0 0 1px rgba(239,255,192,.16)}
.rescueCard.warn{border-color:#e0bd7f}
.rescueCard.bad{opacity:.74}
.rescueChibi{position:absolute;right:8px;bottom:4px;width:72px;height:90px;object-fit:contain;filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(4.6) brightness(.92) contrast(1.06) drop-shadow(0 0 10px rgba(230,255,190,.25));pointer-events:none}
.rescueRank{display:inline-block;min-width:1.8em;text-align:center;margin-right:4px;border:1px solid rgba(143,189,146,.35);border-radius:999px;color:var(--muted);font-size:12px}
.keyboardHint{font-size:12px;color:var(--muted);margin-top:-6px;margin-bottom:8px}
.titleScreen{max-width:980px;padding:0;overflow:hidden}
.titleHero{min-height:280px;padding:26px;border-bottom:1px solid rgba(143,189,146,.35);background:linear-gradient(rgba(5,10,7,.45),rgba(5,10,7,.82)),url('../../assets/bg/bg_title_satellite.png') center/cover no-repeat}
.titleLogoWrap{max-width:760px}
.titleLogoWrap h1{font-size:42px;letter-spacing:.08em;text-shadow:0 4px 16px rgba(0,0,0,.65)}
.titleLogoWrap h2{font-size:18px;line-height:1.8;text-shadow:0 2px 12px rgba(0,0,0,.65)}
.titleActions{padding:18px 18px 8px}
.titleFlavor{margin:0 18px 18px;color:var(--accent)}
/* 全体マップはデスクトップでも見切れない横幅を確保 */
.mapModal{max-width:min(96vw,1460px)}

@media(max-width:720px){.noteChibi{width:66px;height:82px;right:12px;top:12px}.notebookTitle{padding-right:82px}.notebookGrid{grid-template-columns:1fr}}

/* Live2D-style portrait motion for generated bust PNGs. */
#char{
  transform-origin:63% 58%;
  transition:.2s opacity,.2s filter;
  animation:portraitLiveIdle 5.6s ease-in-out infinite;
}
#char.is-speaking{
  animation:portraitLiveIdle 5.6s ease-in-out infinite,portraitLiveTalk .34s steps(2,end) infinite;
}
#char.buddy{
  transform:none;
}
@keyframes portraitLiveIdle{
  0%,100%{transform:translateY(0) rotate(-.25deg) scaleY(1)}
  43%{transform:translateY(-7px) rotate(.35deg) scaleY(1.006)}
  47%{transform:translateY(-7px) rotate(.35deg) scaleY(.985);filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(4.2) brightness(.78) contrast(1.08) drop-shadow(0 0 22px rgba(146,255,146,.14))}
  50%{transform:translateY(-7px) rotate(.35deg) scaleY(1.002)}
  70%{transform:translateY(3px) rotate(-.18deg) scaleY(1)}
}
@keyframes portraitLiveTalk{
  0%,100%{filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(4.7) brightness(.9) contrast(1.06) drop-shadow(0 0 24px rgba(146,255,146,.16))}
  50%{filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(5.1) brightness(.98) contrast(1.1) drop-shadow(0 0 28px rgba(220,255,220,.22))}
}

.ssFold{padding:0;overflow:hidden}
.ssFoldHead{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;text-align:left;border:0;border-radius:0;background:rgba(23,37,27,.75)}
.ssFoldHead:hover{background:rgba(49,81,58,.86)}
.ssFoldMark{flex:0 0 auto;display:grid;place-items:center;width:30px;height:30px;border:1px solid rgba(143,189,146,.45);border-radius:999px;color:var(--accent);font-size:20px;line-height:1}
.ssFoldBody{padding:0 14px 14px}
.ssFold.open{border-color:rgba(239,255,192,.55)}

.endingModal{max-width:min(94vw,1180px)}
.endingVisual{position:relative;min-height:360px;border:3px solid rgba(167,215,125,.58);border-radius:4px;overflow:hidden;background:#081108}
.endingCg{display:block;width:100%;height:min(62vh,650px);object-fit:cover;object-position:center;background:#081108;filter:grayscale(1) sepia(1) hue-rotate(28deg) saturate(3.8) brightness(.78) contrast(1.08)}
.endingCg.hidden{display:none}
.endingMessageWindow{position:absolute;left:18px;right:18px;bottom:18px;padding:14px 16px;border:3px solid rgba(230,255,190,.78);border-radius:4px;background:rgba(4,11,5,.88);box-shadow:0 10px 26px rgba(0,0,0,.55),inset 0 0 0 2px rgba(255,255,255,.04)}
.endingText{color:var(--text);line-height:1.75;white-space:pre-wrap;font-size:15px}
.endingNovelBox{margin-top:10px;padding:10px;border:2px solid rgba(167,215,125,.42);border-radius:4px;background:rgba(8,18,9,.78)}
.endingNovelText{max-height:25vh;overflow:auto;white-space:pre-wrap;line-height:1.8;color:var(--muted);font-size:14px}
.endingArchiveGrid{display:grid;grid-template-columns:minmax(220px,.7fr) minmax(280px,1.3fr);gap:12px;align-items:start}
.endingNovelMini{margin-top:8px;max-height:220px;overflow:auto}
.gallerySection{margin-top:14px}
.gallerySection h3{font-size:15px;margin:0 0 8px;color:var(--accent)}
.galleryButton{display:block;width:100%;text-align:left;cursor:pointer}
.galleryButton img{display:block;margin-bottom:7px}
.lockedGalleryCard{min-height:180px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;opacity:.72}
.galleryLock{width:100%;aspect-ratio:16/9;display:grid;place-items:center;margin-bottom:7px;border:2px solid rgba(167,215,125,.28);background:repeating-linear-gradient(45deg,rgba(167,215,125,.08) 0,rgba(167,215,125,.08) 8px,rgba(0,0,0,.2) 8px,rgba(0,0,0,.2) 16px);color:#dfffb3;letter-spacing:.12em}
.portraitGalleryCard img{aspect-ratio:3/4;object-fit:contain;background:radial-gradient(circle at 50% 30%,rgba(167,215,125,.16),rgba(4,8,4,.95) 72%);padding:6px}
.galleryViewerModal{max-width:min(94vw,1240px)}
.galleryViewerImage{display:block;width:100%;max-height:78vh;object-fit:contain;margin-top:12px;border:3px solid rgba(167,215,125,.5);border-radius:4px;background:#040804}
@media(max-width:720px){.endingVisual{min-height:300px}.endingCg{height:52vh}.endingMessageWindow{left:10px;right:10px;bottom:10px;padding:10px}.endingArchiveGrid{grid-template-columns:1fr}}

/* GB-style generated full-map background. */
.mapViewport{
  background:#061006;
}
.mapBoard{
  background:
    linear-gradient(rgba(5,12,6,.08),rgba(5,12,6,.18)),
    url('../../assets/bg/bg_world_map_gb.png') center/100% 100% no-repeat;
  image-rendering:pixelated;
  box-shadow:inset 0 0 0 2px rgba(218,255,180,.18),inset 0 0 90px rgba(0,0,0,.55);
}
.mapBoard:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:
    repeating-linear-gradient(0deg,rgba(230,255,190,.035) 0,rgba(230,255,190,.035) 1px,transparent 1px,transparent 4px),
    radial-gradient(circle at 50% 44%,transparent 46%,rgba(0,0,0,.34) 100%);
  mix-blend-mode:screen;
}
.mapImageLayer{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
}
.mapCorridorSprite{
  position:absolute;
  height:32px;
  transform-origin:left center;
  image-rendering:pixelated;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.55));
  z-index:1;
}
.mapCorridorSprite.active{
  height:38px;
  filter:drop-shadow(0 0 10px rgba(236,255,176,.62)) drop-shadow(0 5px 7px rgba(0,0,0,.72));
}
.mapStairSprite{
  position:absolute;
  width:88px;
  height:56px;
  image-rendering:pixelated;
  filter:drop-shadow(0 4px 7px rgba(0,0,0,.68));
  z-index:2;
}
.mapRoomSprite{
  position:absolute;
  filter:drop-shadow(0 8px 10px rgba(0,0,0,.58));
  z-index:3;
  overflow:hidden;
}
.mapRoomThumb{
  position:absolute;
  inset:8px;
  width:calc(100% - 16px);
  height:calc(100% - 16px);
  object-fit:cover;
  filter:grayscale(1) sepia(1) hue-rotate(35deg) saturate(2.8) brightness(.62) contrast(1.25);
  opacity:.72;
}
.mapRoomFrame{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  image-rendering:pixelated;
  opacity:.86;
}
.mapBoard svg{z-index:4}
.mapEdge{
  stroke:rgba(234,255,193,.14);
  stroke-width:2.2;
  filter:drop-shadow(0 0 4px rgba(0,0,0,.82));
}
.mapEdge.active{
  stroke:rgba(255,255,205,.98);
  stroke-width:4.4;
  filter:drop-shadow(0 0 8px rgba(236,255,176,.72)) drop-shadow(0 0 3px rgba(0,0,0,.9));
}
.mapNode{
  z-index:6;
  background:rgba(7,18,8,.62);
  border:2px solid rgba(226,255,184,.62);
  border-radius:6px;
  text-shadow:0 2px 3px #000;
}
.mapNode b{
  color:#f1ffd0;
}
.mapNode.here{
  z-index:8;
  background:rgba(76,105,42,.78);
  border-color:#ffffc8;
}
.mapNode.adj{
  z-index:7;
  background:rgba(21,68,62,.74);
  border-color:#baf8ff;
}
.mapNode.captor{
  z-index:7;
}

/* GB command UI pass: reduce scattered buttons and sharpen the interface. */
:root{
  --gb-bg:#071006;
  --gb-dark:#0a170b;
  --gb-mid:#142719;
  --gb-lit:#dfffb3;
  --gb-line:#a7d77d;
  --gb-dim:#7fa66b;
}
body{
  background:
    radial-gradient(circle at 50% 0,rgba(142,190,92,.14),transparent 32%),
    linear-gradient(180deg,#0a1508,#020502 72%);
  font-family:"MS Gothic","Yu Gothic UI","Hiragino Kaku Gothic ProN","Meiryo",monospace;
}
.wrap{
  max-width:1500px;
  grid-template-columns:minmax(720px,1.25fr) minmax(360px,.75fr);
  gap:10px;
  padding:10px;
}
.gb,.modal{
  border-radius:4px;
  border:4px solid var(--gb-line);
  background:
    linear-gradient(180deg,rgba(20,39,25,.96),rgba(7,16,6,.98));
  box-shadow:
    0 0 0 2px #030803 inset,
    0 0 0 6px rgba(7,16,6,.88),
    0 12px 0 rgba(0,0,0,.34);
}
.pad{
  padding:10px;
}
button,select{
  border-radius:3px;
  border:2px solid rgba(167,215,125,.72);
  background:#102013;
  color:#dfffb3;
  box-shadow:inset -3px -3px 0 rgba(0,0,0,.24),inset 2px 2px 0 rgba(255,255,255,.05);
  letter-spacing:0;
}
button:hover,select:hover{
  filter:none;
  background:#1d3522;
  border-color:#ecffc3;
}
button:focus-visible{
  outline:2px solid #f5ffd1;
  outline-offset:2px;
}
button.primary{
  background:#274821;
  border-color:#f0ffc3;
  color:#f7ffd1;
}
button.warn{
  background:#3a3318;
}
button.danger{
  background:#351818;
  border-color:#d79b86;
}
button.small{
  padding:5px 8px;
  font-size:12px;
}
.topbar{
  display:grid;
  grid-template-columns:1fr auto;
  gap:10px;
  align-items:start;
}
.chips{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(118px,1fr));
  gap:5px;
}
.chip{
  border-radius:3px;
  border:1px solid rgba(167,215,125,.58);
  background:rgba(5,14,6,.78);
  padding:5px 7px;
  min-height:28px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.topbar>.row{
  width:178px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:5px;
}
.topbar>.row button{
  min-height:32px;
  padding:5px 6px;
}
.topbar>.row button:not(.primary):not(.danger),
.mapTools button:not(.primary),
.mapZoomBar button,
.mapModeTabs button:not(.active),
.tabs button:not(.active),
.notebookTabs button:not(.active){
  background:rgba(6,15,7,.62);
  color:#aacb91;
  border-color:rgba(167,215,125,.36);
  box-shadow:none;
}
.screenwrap,.screen{
  border-radius:4px;
}
.screen{
  border-width:4px;
  box-shadow:inset 0 0 0 2px rgba(2,8,3,.9),inset 0 0 80px rgba(0,0,0,.76);
}
.roomlabel,.hintline,.objective,.stamp{
  border-radius:2px;
  background:rgba(4,11,5,.82);
  border:2px solid rgba(167,215,125,.42);
}
.objective{
  left:10px;
  right:10px;
  bottom:10px;
}
.speaker{
  margin:-2px -2px 8px;
  padding:6px 8px;
  border:2px solid rgba(167,215,125,.42);
  background:#071006;
}
.text{
  min-height:6.8em;
}
.subtext{
  min-height:2.4em;
}
.paneltitle{
  margin-bottom:7px;
  padding:4px 6px;
  border-left:6px solid var(--gb-line);
  background:rgba(6,15,7,.64);
}
.box,.note,.itemrow,.docPage,.actionHelp,.keyBox,.ssBox,.galleryCard,.mapRoomCard,.mapListSection{
  border-radius:3px;
  border:2px solid rgba(167,215,125,.36);
  background:rgba(8,18,9,.78);
}
.right{
  gap:8px;
}
.right>.gb.pad{
  padding:8px;
}
.panelToggle{
  margin:-2px 0 7px;
  border-color:rgba(167,215,125,.42);
  background:#071006;
}
.panelToggle b{
  color:#dfffb3;
}
#actions.actionGrid{
  display:block;
}
#actions>.box{
  margin-bottom:6px!important;
  padding:5px!important;
}
#actions>.box>button{
  border-color:rgba(167,215,125,.46);
  background:rgba(6,15,7,.76);
}
#actions>.box>button.active{
  background:#223d20;
  border-color:#eaffbc;
}
#actions .actionGrid{
  grid-template-columns:repeat(auto-fit,minmax(142px,1fr));
  gap:6px;
}
.actionBtn{
  min-height:54px;
  padding:7px 8px;
  text-align:left;
  border-color:rgba(167,215,125,.46);
}
.actionBtn b{
  font-size:13px;
}
.actionBtn span{
  font-size:11px;
  line-height:1.35;
}
.actionHelp{
  margin-top:7px;
  color:#8fb87a;
  font-size:12px;
}
.targetGrid{
  grid-template-columns:repeat(auto-fit,minmax(128px,1fr));
  gap:5px;
}
.targetBtn{
  padding:7px 8px;
  min-height:48px;
}
.mapTools{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:5px;
}
.roomnav{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
  gap:5px;
}
.roomnav button{
  width:100%;
  min-height:34px;
}
.tabs,.mapModeTabs,.notebookTabs{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(72px,1fr));
  gap:4px;
  padding:4px;
  border:2px solid rgba(167,215,125,.25);
  background:rgba(3,9,4,.7);
}
.tabs button,.mapModeTabs button,.notebookTabs button{
  width:100%;
  min-height:30px;
}
.tabs button.active,.mapModeTabs button.active,.notebookTabs button.active{
  background:#2d4b27;
  border-color:#f0ffc3;
}
.statusgrid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:6px;
}
.meter,.notebookMeter{
  height:9px;
  border-radius:2px;
}
.fill,.notebookMeterFill{
  background:linear-gradient(90deg,#719e5d,#e2ffb8);
}
.scroll{
  scrollbar-color:#a7d77d #071006;
}
.modal{
  padding:14px;
}
.overlay{
  background:rgba(1,5,2,.88);
}
.mapViewport{
  border-radius:3px;
  border:3px solid rgba(167,215,125,.46);
}
.mapBoard{
  border-radius:0;
}
@media(max-width:1080px){
  .wrap{
    grid-template-columns:1fr;
  }
  .topbar{
    grid-template-columns:1fr;
  }
  .topbar>.row{
    width:100%;
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}
@media(max-width:640px){
  .chips,.mapTools,.topbar>.row,.tabs,.mapModeTabs,.notebookTabs{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .actionGrid,.statusgrid,.targetGrid{
    grid-template-columns:1fr;
  }
}

a.buttonLink{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:9px 11px;
  color:var(--text);
  text-decoration:none;
  border:2px solid rgba(167,215,125,.72);
  border-radius:3px;
  background:#102013;
  box-shadow:inset -3px -3px 0 rgba(0,0,0,.24),inset 2px 2px 0 rgba(255,255,255,.05);
}
a.buttonLink.small{
  min-height:32px;
  padding:5px 8px;
  font-size:12px;
}
a.buttonLink:hover{
  background:#1d3522;
  border-color:#ecffc3;
}
a.homeLink{
  border-color:rgba(215,247,255,.58);
  color:#d7f7ff;
}
.topbar>.homeLink{
  align-self:stretch;
}
.titleHome{
  padding:0 18px 10px;
}
