
:root{--bg:#0c1013;--panel:#171b1d;--paper:#e6dfcf;--ink:#cfd1cf;--muted:#8d989a;--red:#b95353;--line:#394044;--mono:"Courier New",Consolas,"Noto Sans Mono",monospace;--sans:system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);min-height:100vh}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.26;z-index:9;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 150 150' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.15'/%3E%3C/svg%3E")}
a{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid #d96a6a;outline-offset:4px}
.wrap{width:min(1120px,calc(100% - 44px));margin-inline:auto}.topbar{border-bottom:1px solid #2d3538;background:rgba(7,10,13,.9)}.topbar .wrap{height:70px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{font-family:var(--mono);font-size:15px;font-weight:800;letter-spacing:.11em;text-decoration:none;display:flex;align-items:center;gap:13px}.brand .sigil{width:28px;height:28px;border:2px solid #b65353;border-radius:50%;display:grid;place-items:center;color:#c96666;font-size:19px;transform:rotate(-8deg)}.status{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:#a9b0ae}.red{color:var(--red)}
main{position:relative}.hero{display:grid;grid-template-columns:1.05fr .95fr;min-height:650px;border-left:1px solid #283034;border-right:1px solid #283034}.hero-copy{padding:75px 48px 72px 45px;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:1;background:radial-gradient(ellipse at 0% 0%,#222c2f,#0d1215 72%)}
.kicker{font:700 11px/1.5 var(--mono);color:#cc6666;letter-spacing:.18em;text-transform:uppercase}.mega{font:900 clamp(43px,5.4vw,83px)/.98 var(--mono);letter-spacing:-.058em;margin:17px 0 18px;color:#f0e9df}.mega span{color:#c25555}.sub{font:600 clamp(15px,1.4vw,20px)/1.6 var(--mono);letter-spacing:.015em;margin:0;color:#dbd8d0}.desc{max-width:460px;font-size:14px;line-height:1.9;color:#a8afae;margin:25px 0 32px}.serial{font:11px/1.7 var(--mono);color:#8b9698;letter-spacing:.06em;margin-top:29px}.hero-photo{position:relative;min-height:525px;overflow:hidden}.hero-photo img{height:100%;width:100%;object-fit:cover;filter:grayscale(1) contrast(1.15) brightness(.63)}.hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,16,19,.9) 0%,transparent 34%,rgba(6,9,11,.1) 85%)}.photo-overlay{position:absolute;z-index:2;right:23px;top:23px;border:2px solid #b34848;color:#d36363;font:700 13px var(--mono);letter-spacing:.1em;padding:10px 14px;transform:rotate(7deg);background:#07090b9a}.photo-foot{position:absolute;z-index:2;bottom:29px;right:30px;font:10px/1.7 var(--mono);letter-spacing:.1em;text-align:right;color:#e1e4e4}
.control{max-width:455px;padding:20px;border:1px solid #43484a;background:#131718c9;box-shadow:0 16px 38px #0004}.control label{display:block;font:700 10px var(--mono);letter-spacing:.18em;color:#b8b6b2;margin-bottom:12px}.input-row{display:flex;gap:9px}.access-input{min-width:0;flex:1;background:#070b0d;border:1px solid #515a5d;color:#f3f2ed;padding:14px 15px;font:700 18px var(--mono);letter-spacing:.22em;text-transform:uppercase;border-radius:2px}.access-input::placeholder{color:#526064;opacity:1}.go{border:1px solid #c86565;background:#ae4343;color:#fff;padding:11px 19px;font:800 12px var(--mono);letter-spacing:.08em;cursor:pointer;border-radius:2px;transition:background .2s,transform .2s}.go:hover{background:#ca5757;transform:translateY(-1px)}.response{min-height:19px;margin:12px 0 0;color:#a0aaac;font:12px/1.6 var(--mono)}.response.bad{color:#e29490}.response.good{color:#9fc1ab}
.strip{border-top:1px solid #2e3638;padding:17px 0;color:#768387;font:10px/1.8 var(--mono);letter-spacing:.14em}.strip .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.strip strong{color:#b6bdba;font-weight:400}
.page-title{padding:55px 0 29px}.page-title h1{font:800 clamp(30px,4.3vw,57px)/1.1 var(--mono);letter-spacing:-.03em;margin:10px 0;color:#e7e5df}.page-title p{color:#a5afae;font:13px/1.8 var(--mono);max-width:750px}
.scene{border:1px solid #3b4446;position:relative;min-height:530px;overflow:hidden;background-color:#12191b}.forest{background-image:linear-gradient(to bottom,#080e13aa,#080e1355),url(forest.svg);background-size:cover;background-position:center}.scene-mark{position:absolute;z-index:2;left:25px;top:25px;font:12px/1.55 var(--mono);letter-spacing:.12em;text-shadow:0 2px 10px #000;color:#eee9df}.scene-mark strong{color:#da6868}.tree-note{position:absolute;left:51%;top:53%;transform:translate(-50%,-50%) rotate(-2deg);width:240px;min-height:242px;padding:35px 23px 20px;background:#e7d9b9;color:#2d302e;border:1px solid #80755e;box-shadow:0 12px 25px #000b,8px 4px 0 #867d65aa;font:700 17px/1.4 var(--mono);display:flex;flex-direction:column;justify-content:center;gap:12px;text-align:center}.tree-note:before{content:"";position:absolute;width:10px;height:10px;border-radius:100%;background:#413b31;top:12px;left:calc(50% - 5px);box-shadow:2px 2px 1px #0003}.tree-note span{font-size:13px;color:#6b3939;letter-spacing:.11em}.tree-note em{font-style:normal;border-top:1px solid #a99f8c;padding-top:11px;font-size:11px;font-weight:500}
.story-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,350px);gap:27px;padding-bottom:65px}.info-panel{border:1px solid #3a4243;background:#161b1e;padding:30px}.info-panel h2{font:700 21px var(--mono);color:#ebe8df;margin:0 0 14px}.info-panel p{font:14px/1.9 var(--sans);color:#aab4b5;margin:0 0 22px}.info-panel .mini{font:12px/1.7 var(--mono);color:#b5ae9f;border-left:3px solid #b34e4e;padding-left:14px;margin:18px 0 28px}.aside{display:grid;align-content:start;gap:20px}.aside img{width:100%;display:block;filter:grayscale(1) brightness(.77);border:1px solid #354044}.aside small{font:11px/1.7 var(--mono);color:#8d9899}
.signal-scene{display:grid;grid-template-columns:1fr 1fr;gap:0;min-height:480px}.signal-scene .im{position:relative;min-height:480px;background:#0e1416}.signal-scene img{width:100%;height:100%;object-fit:cover;filter:saturate(.6) contrast(1.05) brightness(.86)}.signal-scene .im:first-child img{filter:grayscale(.7) brightness(.85)}.image-number{position:absolute;left:25px;top:25px;padding:8px 11px;background:#0a0f12be;border:1px solid #6c3b3d;color:#f2c0af;font:700 11px var(--mono)}
.done{min-height:620px;display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.88fr);background:#15191c;border:1px solid #354044}.done-copy{padding:60px 45px 55px}.done-visual{min-height:550px;overflow:hidden;position:relative}.done-visual img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.52) contrast(1.25)}.done-visual:before{content:"";position:absolute;inset:0;background:#0004;z-index:1}.done-visual:after{content:"CLEARANCE VERIFIED";position:absolute;bottom:35px;right:30px;border:2px solid #be5353;color:#d96565;font:700 16px var(--mono);letter-spacing:.11em;padding:13px 17px;transform:rotate(-8deg);z-index:2}.jp{font-family:var(--sans);color:#f1ebe2;font-size:clamp(16px,2vw,23px);line-height:2.1;letter-spacing:.05em;margin:31px 0 20px}.en{font:13px/2 var(--mono);color:#a8b0ac;max-width:440px;margin:15px 0 25px}.link-button{display:inline-flex;align-items:center;gap:12px;margin-top:10px;padding:17px 22px;background:#ac4545;color:#fff;font:700 13px/1.2 var(--mono);letter-spacing:.07em;text-decoration:none;border:1px solid #d17070;cursor:pointer}.link-button:hover{background:#c25555}.link-button.disabled{cursor:not-allowed;background:#30373b;color:#7a8689;border-color:#525d60}.note{font:12px/1.8 var(--mono);color:#b1a597;margin-top:14px}.stamp{display:inline-block;border:2px solid #b85252;color:#d56a6a;padding:8px 12px;transform:rotate(-6deg);font:700 12px var(--mono);letter-spacing:.15em;margin:23px 0 0}
@media(max-width:820px){.hero,.done{grid-template-columns:1fr}.hero-copy{padding:60px 23px 45px}.hero-photo{min-height:310px;max-height:430px}.story-layout{grid-template-columns:1fr}.page-title{padding:40px 0 22px}.done-copy{padding:40px 26px}.done-visual{min-height:300px;max-height:420px}.signal-scene{grid-template-columns:1fr}.signal-scene .im{min-height:290px;max-height:340px}.input-row{flex-wrap:wrap}.go{flex:0 0 100%;padding:15px}.wrap{width:min(100% - 24px,1120px)}.topbar .wrap{height:62px}.brand{font-size:13px}.status{font-size:9px}.tree-note{width:210px;min-height:210px;font-size:15px}.scene{min-height:450px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* V2 — riddles / bilingual interface */
[hidden]{display:none!important}
.header-right{display:flex;align-items:center;gap:20px}
.lang-switch{display:flex;gap:2px;padding:3px;border:1px solid #495357;background:#0b1013}
.lang-switch button{font:800 11px/1.1 var(--mono);color:#929fa2;background:transparent;border:0;padding:8px 10px;cursor:pointer}
.lang-switch button[aria-pressed="true"]{background:#ab4646;color:#fff}
.hero-puzzle{min-height:780px}
.hero-puzzle .hero-copy{padding-top:45px;padding-bottom:45px}
.hero-puzzle .mega{margin:12px 0}
.hero-puzzle .desc{margin:14px 0 17px}
.minor{font:12px/1.5 var(--mono);color:#879397}
.progress-path{display:flex;gap:7px;margin:8px 0 20px;max-width:500px}
.progress-step{display:flex;gap:7px;align-items:center;justify-content:center;flex:1;min-width:0;padding:10px 4px;border:1px solid #3a4347;background:#12181b;color:#849092;font:600 10px var(--mono);letter-spacing:.06em}
.progress-step b{color:#8c9699;font-size:11px}
.progress-step.is-current{border-color:#af4c4d;background:#271a1c;color:#f3dddd;box-shadow:inset 0 0 0 1px #843839}
.progress-step.is-current b{color:#ef9c9c}
.progress-step.is-done{border-color:#566961;color:#acc2b4}
.progress-step.is-done b{color:#99b9a6}
.riddle-card{border:1px solid #4b5252;background:#131719ec;padding:22px 23px;max-width:560px;box-shadow:0 12px 35px #0004}
.riddle-meta{display:flex;align-items:center;justify-content:space-between;gap:9px;color:#d27a78;font:700 10px/1.5 var(--mono);letter-spacing:.06em;margin-bottom:15px}
.riddle-card h2,.riddle-inner h2{font:800 clamp(17px,1.7vw,24px)/1.3 var(--mono);color:#eee5d8;letter-spacing:.01em;margin:0 0 12px}
.riddle-card p,.riddle-inner p{font:14px/1.85 var(--sans);color:#bbc3c0;margin:8px 0}
.riddle-card strong,.riddle-inner strong{color:#efc1b5}
.riddle-card .challenge,.riddle-inner .challenge{margin-top:18px;color:#efede5;font-weight:650;border-top:1px solid #3c4445;padding-top:14px}
.riddle-card .puzzle-form{margin-top:20px}
.puzzle-form{border-top:1px solid #41494a;padding-top:19px;margin-top:21px}
.puzzle-form label{display:block;font:700 11px/1.5 var(--mono);letter-spacing:.1em;color:#d8cac0;margin-bottom:11px}
.key-count{font:10px var(--mono);color:#8e999a;margin-left:10px}
.hints{margin:16px 0 2px}
.hints-title{font:700 10px/1.5 var(--mono);color:#b87973;letter-spacing:.12em;margin:13px 0 8px}
.hint{border:1px solid #3c4445;border-bottom:none;background:#11181a;color:#b8bebc}
.hint:last-child{border-bottom:1px solid #3c4445}
.hint summary{list-style:none;cursor:pointer;padding:10px 14px;font:700 11px/1.5 var(--mono);letter-spacing:.05em;color:#c4cdcb;display:flex;justify-content:space-between}
.hint summary::-webkit-details-marker{display:none}
.hint .hint-plus{color:#d06d6d;font-size:16px;line-height:1}
.hint[open] .hint-plus{transform:rotate(45deg)}
.hint p{padding:1px 14px 13px;margin:0;font:13px/1.7 var(--sans);color:#bcc7c5}
.cipher-sequence{padding:16px 9px;white-space:nowrap;text-align:center;border:1px dashed #a65757;background:#220f11;color:#f6d2c8!important;font:800 clamp(16px,1.6vw,22px)/1.2 var(--mono)!important;letter-spacing:0!important;overflow:hidden}
.cipher-sequence em{font-style:normal;color:#b06b66}
.info-panel .riddle-inner{padding-top:14px}
.info-panel .riddle-inner p{margin-bottom:14px}
.info-panel .puzzle-form{margin-top:22px}
.info-panel .puzzle-form label{font-size:10px}
.info-panel .riddle-inner .challenge{font-size:14px}
.info-panel .hints{margin-top:16px}
.final-path{display:flex;gap:10px;flex-wrap:wrap;color:#a9beb6;font:700 12px/1.6 var(--mono);margin:26px 0 6px;letter-spacing:.08em}
.final-path span:nth-child(even){color:#b95757}
.reward{border-left:3px solid #b65353;background:#1b2325;padding:14px 15px;max-width:520px;margin:16px 0 20px}
.reward p{color:#b6c0bb;font:12px/1.9 var(--sans);margin:8px 0 0}
.finish-space{height:55px}
@media(max-width:900px){.hero-puzzle{grid-template-columns:1fr}.hero-puzzle .hero-photo{min-height:280px;max-height:430px}.hero-puzzle .hero-copy{padding:45px 27px}.hero-puzzle .riddle-card{max-width:700px}}
@media(max-width:520px){.header-right{gap:8px}.topbar .status{display:none}.lang-switch button{padding:8px 10px}.hero-puzzle .hero-copy{padding:35px 18px}.riddle-card{padding:18px 14px}.riddle-card p,.riddle-inner p{font-size:13px}.page-title{padding-top:30px}.cipher-sequence{font-size:15px!important}.info-panel{padding:23px 17px}.progress-step{font-size:9px;gap:3px}.done .jp{font-size:16px;line-height:2}.riddle-meta{font-size:9px}}

/* The final archive photograph has separate JA/EN variants. */
.done-visual img[hidden]{display:none!important}

/* Goal-screen English text: equal priority to the Japanese original. */
.done-copy > p.en{font:17px/1.95 var(--mono);color:#f1ebe2;max-width:520px;margin:31px 0 20px}
@media(max-width:520px){.done-copy > p.en{font-size:15px;line-height:1.9}}

/* Independent language gate for all pages, including finish images. */
html[data-ui-lang="ja"] [data-lang-panel="en"],html[data-ui-lang="en"] [data-lang-panel="ja"]{display:none!important}
[hidden]{display:none!important}

/* BUILD 05: bilingual tree note uses same switch as the riddles. */
.tree-note .note-body{display:flex; flex-direction:column; justify-content:center; align-items:center; gap:12px; width:100%}
.tree-note .note-body strong{font-size:17px;line-height:1.55}
.tree-note .note-body[data-lang-panel="ja"]{font-family:system-ui,-apple-system,"Noto Sans JP",sans-serif}
.tree-note .note-body[data-lang-panel="ja"] strong{font-size:19px;letter-spacing:.1em}
.tree-note .note-body[data-lang-panel="ja"] span{font-size:15px;letter-spacing:.1em}
@media(max-width:520px){.tree-note .note-body strong{font-size:15px}.tree-note .note-body[data-lang-panel="ja"] strong{font-size:17px}}

/* BUILD08: full language sync and safe default even if script execution is prevented. */
html[data-ui-lang="ja"] [data-lang-panel="en"],
html[data-ui-lang="en"] [data-lang-panel="ja"]{display:none!important}
html[data-ui-lang="ja"] .lang-switch button[data-set-lang="ja"],
html[data-ui-lang="en"] .lang-switch button[data-set-lang="en"]{background:#ab4646;color:#fff}
html[data-ui-lang="ja"] .lang-switch button[data-set-lang="en"],
html[data-ui-lang="en"] .lang-switch button[data-set-lang="ja"]{background:transparent;color:#929fa2}
