.home-page{--h-bg:#0d0f10;--h-panel:#121516;--h-ink:#f2f0ea;--h-muted:#949897;--h-line:#292d2e;--h-red:#ee3024;background:var(--h-bg)}
.home-page.light{--h-bg:#f5f5f2;--h-panel:#fff;--h-ink:#111314;--h-muted:#606566;--h-line:#d9dddc;--h-red:#ed281e}
.home-page .ninja-header{height:74px;background:#080a0a;border:1px solid #252929;color:#f2f0ea}.home-page .ninja-header nav a{color:#c3c6c5}.home-page .ninja-header nav a:hover{color:#fff}.home-page .ninja-theme-toggle{border-color:#343839}
.technical-home{background:var(--h-bg);color:var(--h-ink);overflow:hidden}.technical-hero{min-height:580px;display:grid;grid-template-columns:minmax(390px,.82fr) 1.18fr;max-width:1500px;margin:auto;padding:74px 4vw 35px;gap:4vw}.technical-copy{align-self:center}.technical-kicker{color:var(--h-red);font:500 10px 'DM Mono',monospace;letter-spacing:.09em}.technical-copy h1{font-size:clamp(48px,5vw,78px);line-height:1.02;letter-spacing:-.065em;margin:25px 0}.technical-copy h1 em{color:var(--h-red);font:italic 400 1em Georgia,serif}.technical-copy>p{max-width:620px;color:var(--h-muted);font-size:15px;line-height:1.65}.hero-actions{display:flex;gap:15px;margin-top:30px}.hero-actions a{min-width:168px;padding:15px 20px;display:flex;justify-content:space-between;border:1px solid var(--h-line);font:600 10px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.05em}.primary-action{background:var(--h-red);border-color:var(--h-red)!important;color:#fff}.secondary-action{color:var(--h-ink);background:var(--h-panel)}
.system-map{min-height:450px;position:relative;align-self:center}.map-grid{position:absolute;inset:5%;opacity:.35;background-image:linear-gradient(30deg,var(--h-line) 1px,transparent 1px),linear-gradient(150deg,var(--h-line) 1px,transparent 1px);background-size:55px 32px;clip-path:polygon(10% 15%,90% 15%,98% 85%,2% 85%)}.map-sun{position:absolute;width:145px;height:145px;border-radius:50%;background:var(--h-red);top:58px;left:53%;box-shadow:inset 0 0 0 12px color-mix(in srgb,#fff 18%,transparent)}.map-mountain{position:absolute;width:210px;height:160px;top:95px;left:54%;border-left:3px solid var(--h-ink);border-top:3px solid var(--h-ink);transform:skew(-23deg) rotate(34deg);opacity:.85}.system-stack{position:absolute;width:210px;height:205px;left:39%;top:145px;transform:skewY(8deg)}.system-stack i{display:block;height:42px;margin-top:7px;border:2px solid var(--h-ink);background:color-mix(in srgb,var(--h-panel) 90%,transparent);box-shadow:inset 0 0 0 7px color-mix(in srgb,var(--h-line) 50%,transparent)}.system-stack i:first-child{border-color:var(--h-red);background:color-mix(in srgb,var(--h-red) 28%,var(--h-panel));transform:translateY(-12px)}.map-label{position:absolute;font:9px/1.55 'DM Mono',monospace}.map-label strong{display:block;color:var(--h-red);text-transform:uppercase;margin-bottom:6px}.map-label span{color:var(--h-ink)}.label-learn{top:80px;left:5%}.label-build{bottom:70px;left:5%}.label-operate{top:85px;right:1%}.label-improve{bottom:70px;right:1%}.map-label:after{content:"";position:absolute;top:12px;width:80px;border-top:1px solid var(--h-muted)}.label-learn:after,.label-build:after{left:88px}.label-operate:after,.label-improve:after{right:82px}
.topic-rail{display:grid;grid-template-columns:repeat(8,1fr);max-width:1500px;margin:auto;padding:25px 4vw 34px;border-bottom:1px solid var(--h-line)}.topic-rail div{min-height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border-right:1px solid var(--h-line);text-align:center}.topic-rail div:last-child{border:0}.topic-rail b{font:22px 'DM Mono',monospace;color:var(--h-ink)}.topic-rail span{font:500 9px/1.35 'DM Mono',monospace;color:var(--h-ink)}
.latest-notes{max-width:1500px;margin:auto;padding:35px 4vw 90px}.latest-notes>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.latest-notes>header h2{font:500 10px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.08em}.latest-notes>header h2 i{display:inline-block;width:25px;border-top:2px solid var(--h-red);margin-right:12px;vertical-align:middle}.latest-notes>header a{color:var(--h-red);font:500 9px 'DM Mono',monospace;text-transform:uppercase}.note-list{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px}.note-row{min-height:145px;padding:20px;display:grid;grid-template-columns:65px 1fr auto;gap:18px;border:1px solid var(--h-line);background:var(--h-panel)}.note-index{display:grid;place-items:center;border:1px solid var(--h-line);color:var(--h-red);font:18px 'DM Mono',monospace}.note-row span,.note-row time{color:var(--h-muted);font:8px 'DM Mono',monospace}.note-row h3{font-size:15px;margin:8px 0}.note-row p{color:var(--h-muted);font-size:11px;line-height:1.6;margin:0}.notes-empty{padding:70px;border:1px solid var(--h-line);background:var(--h-panel);position:relative}.notes-empty:before{content:"記";position:absolute;right:50px;top:10px;color:transparent;-webkit-text-stroke:1px var(--h-line);font:150px 'Noto Serif JP',serif}.notes-empty>span{color:var(--h-red);font:9px 'DM Mono',monospace}.notes-empty h2{font-size:clamp(32px,4vw,55px);letter-spacing:-.05em;line-height:1.05;margin:20px 0}.notes-empty p{max-width:650px;color:var(--h-muted);font-size:13px;line-height:1.7}
.home-page .ninja-footer{background:#080a0a;color:#a7aaa9;border-color:#252929}
@media(max-width:980px){.technical-hero{grid-template-columns:1fr}.system-map{min-height:400px}.topic-rail{grid-template-columns:repeat(4,1fr)}.topic-rail div:nth-child(4){border-right:0}.note-list{grid-template-columns:1fr}}
@media(max-width:620px){.technical-hero{padding:60px 20px 20px}.technical-copy h1{font-size:48px}.hero-actions{flex-direction:column}.system-map{min-height:330px}.system-stack{left:28%;transform:scale(.78) skewY(8deg)}.map-sun{left:53%;width:110px;height:110px}.map-label:after{display:none}.label-operate,.label-improve{right:0}.topic-rail{grid-template-columns:repeat(2,1fr);padding-inline:20px}.topic-rail div:nth-child(even){border-right:0}.latest-notes{padding:35px 20px 70px}.notes-empty{padding:40px 25px}.notes-empty:before{display:none}.note-row{grid-template-columns:48px 1fr}.note-row time{display:none}}
