:root{color-scheme:dark;--bg:#080e18;--panel:#0c1420;--ink:#edf3f8;--muted:#93a7b9;--line:#243241;--accent:#86efdc;--violet:#ada3e9;--serif:'Hiragino Mincho ProN','Yu Mincho','Noto Serif CJK JP',serif;--sans:-apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif;--mono:'SFMono-Regular',Consolas,monospace;font-family:var(--sans);font-size:16px;background:var(--bg);color:var(--ink)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 33% 38%,#10213050,transparent 58%),var(--bg)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}button:disabled{opacity:.4;cursor:default}a{color:inherit}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button{transition:background .18s,color .18s,border-color .18s}button:hover{color:white}p,h1,h2,h3{margin:0}.skip{position:fixed;left:12px;top:-60px;z-index:20;background:var(--ink);color:var(--bg);padding:12px}.skip:focus{top:12px}
.masthead{display:flex;align-items:center;gap:28px;margin:0 42px;padding:27px 0 24px;border-bottom:1px solid var(--line)}.wordmark{text-decoration:none;font:500 32px var(--serif);letter-spacing:4px;display:flex;align-items:center;gap:27px;flex-shrink:0}.logo-line{height:32px;width:1px;background:var(--line)}.identity{display:flex;align-items:baseline;gap:24px}.identity h1{font:500 22px var(--serif);letter-spacing:.14em}.identity>span{font-size:14px;color:var(--muted)}.about-button{margin-left:auto;font-size:14px;color:#bcc9d4;display:flex;align-items:center;gap:10px;min-height:44px}.info-icon{width:19px;height:19px;border:1px solid #526675;border-radius:50%;font:13px var(--serif);display:grid;place-items:center}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 370px;max-width:1680px;margin:0 auto;padding:32px 42px 24px;gap:36px}.visual-panel{min-width:0}.visual-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:7px 0 0}.eyebrow{font:12px var(--mono);letter-spacing:.17em;color:var(--accent)}.visual-heading h2{font:400 clamp(24px,2.3vw,34px) var(--serif);letter-spacing:.1em;margin-top:14px}.figure-number{color:var(--muted);font:12px var(--mono);padding-top:5px;white-space:nowrap}.figure-number span{padding:0 6px;color:#485766}
.stage{height:clamp(390px,58vh,650px);position:relative;isolation:isolate;touch-action:none;cursor:grab;overflow:hidden;margin-top:9px;background:radial-gradient(ellipse at 50% 45%,#30616913 0%,transparent 64%)}.stage:active{cursor:grabbing}.stage canvas{position:absolute;inset:0;width:100%;height:100%}.labels{position:absolute;inset:0;pointer-events:none}.vertex{position:absolute;left:0;top:0;pointer-events:auto;display:flex;align-items:center;justify-content:center;gap:8px;min-width:74px;height:42px;padding:0 12px;border:1px solid #405262;background:#0b1421ed;backdrop-filter:blur(8px);border-radius:4px;white-space:nowrap;color:#d5e0ea;font-size:15px;box-shadow:0 2px 10px #0002;will-change:transform;transition:color .2s,border-color .2s,background .2s;touch-action:none}.vertex:before{content:'';width:4px;height:4px;background:var(--node-color);border-radius:50%;flex-shrink:0}.vertex.selected{border-color:var(--node-color);color:var(--node-color);background:#123134;box-shadow:0 0 24px #7df0dd13}.vertex.related{border-color:#759eaa;color:#e6f7fa}.vertex.dimmed{color:#8e9eac;border-color:#293846;background:#0a1320ed}.vertex:hover{border-color:var(--node-color);color:white}.orientation{position:absolute;left:3px;top:30px;display:flex;gap:10px;align-items:center;color:var(--muted);font-size:12px;pointer-events:none}.crosshair{font:24px var(--mono);color:#577180}.model-scale{position:absolute;right:2px;top:30px;display:flex;flex-direction:column;gap:12px}.model-scale span{height:1px;width:6px;background:#4c6070}.model-scale span:first-child,.model-scale span:last-child{width:11px}.gesture-hint{position:absolute;bottom:12px;left:0;right:0;text-align:center;color:var(--muted);font-size:12px;pointer-events:none;letter-spacing:.07em}.view-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 auto;max-width:550px}.view-presets{display:flex;background:#101b29;border:1px solid var(--line);border-radius:7px;padding:4px;gap:3px}.view-presets button{min-height:36px;padding:4px 16px;border-radius:4px;font-size:14px;color:var(--muted)}.view-presets button.is-active{background:#233e45;color:#c5f9ed}.view-presets button:hover{background:#253440}.camera-tools{display:flex;align-items:center;gap:2px}.camera-tools button{min-width:36px;min-height:44px;border-radius:4px;font-size:20px;color:#c1cfd9}.camera-tools #rotate{font-size:14px;padding:0 7px;white-space:nowrap}.camera-tools #rotate span{font-size:22px;vertical-align:-2px;margin-right:3px}.camera-tools button:hover{background:#162637}.camera-tools #rotate[aria-pressed=true]{color:var(--accent)}.separator{height:20px;width:1px;background:var(--line);margin:0 7px}.model-caption{display:flex;gap:8px;align-items:center;justify-content:center;font-size:12px;color:#a9b8c7;margin:22px 0 27px;flex-wrap:wrap}.legend-dot{width:5px;height:5px;border-radius:50%;display:inline-block}.legend-dot.top{background:var(--accent)}.legend-dot.bottom{background:var(--violet);margin-left:12px}.insight{border-top:1px solid var(--line);padding:19px 0 0;display:flex;gap:14px;align-items:center;min-height:60px}.insight-mark{color:var(--accent);font-size:27px;line-height:1}.insight p{font-size:14px;color:#b9ccd6;line-height:1.9}
.inspector{border-left:1px solid var(--line);padding:10px 0 0 30px;min-width:0}.explore-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px}.explore-note{font-size:12px;color:var(--muted)}.tabs{display:flex;gap:25px;border-bottom:1px solid var(--line);margin-bottom:20px}.tabs button{padding:0 0 15px;min-height:42px;font-size:14px;color:var(--muted);position:relative}.tabs button[aria-selected=true]{color:var(--ink)}.tabs button[aria-selected=true]:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent)}.choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:26px}.choice{padding:10px 3px;min-height:46px;border:1px solid var(--line);border-radius:5px;font-size:14px;color:#b6c5d2;line-height:1.5}.choice:hover{background:#142536;border-color:#557184}.choice[aria-pressed=true]{border-color:var(--accent);background:#163333;color:var(--accent)}.choices.regions{grid-template-columns:repeat(3,minmax(0,1fr))}.choices.sections{grid-template-columns:1fr 1fr}.detail{border-top:1px solid var(--line);padding-top:25px}.detail-kicker{display:flex;justify-content:space-between;color:var(--muted);font:12px var(--mono);letter-spacing:.08em;align-items:center}.detail-title{display:flex;align-items:baseline;gap:16px;margin:17px 0 13px}.detail-title h2{font:400 46px var(--serif);letter-spacing:.12em;color:var(--selection-color,var(--accent))}.detail-title .romaji{font:12px var(--mono);letter-spacing:.18em;color:var(--muted)}.detail-lead{font-size:17px;line-height:1.8;margin-bottom:12px;font-weight:500;letter-spacing:.01em}.detail-body{font-size:16px;line-height:1.95;color:#b1c0ce}.opposite{margin-top:22px;padding:15px 0;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:10px}.opposite>span{font-size:13px;color:var(--muted)}.opposite button{font-size:15px;border:1px solid #405667;border-radius:4px;min-height:36px;padding:3px 12px;color:#d6e6ef}.opposite button:hover{background:#223540}.elements{margin-top:23px}.elements h3,.region-vertices h3{font-size:13px;color:var(--muted);font-weight:400;margin-bottom:12px}.element-row{display:flex;align-items:baseline;gap:12px;margin:9px 0;line-height:1.6}.element-row strong{font:400 16px var(--serif);color:#dcf1ed;min-width:50px}.element-row span{font-size:13px;color:var(--muted)}.region-vertices{margin-top:24px;border-top:1px solid var(--line);padding-top:19px}.region-vertices p{color:#c6d3df;font-size:14px;line-height:1.9}.reading-note{margin-top:28px;padding:17px 18px;background:#111d2a;border-radius:5px}.reading-note>span{font:11px var(--mono);letter-spacing:.12em;color:var(--muted)}.reading-note p{font-size:13px;color:#9fb2c3;line-height:1.8;margin-top:8px}
footer{border-top:1px solid var(--line);margin:0 42px;padding:20px 0 24px;display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--muted);font:11px var(--mono);letter-spacing:.05em}footer button{font:12px var(--sans);min-height:36px}.footer-slash{margin:0 8px;color:#436273}.edition{font:12px var(--sans)}dialog{position:fixed;color:var(--ink);border:1px solid #35485d;border-radius:12px;background:#0d1825;padding:38px 36px;width:min(640px,calc(100% - 32px));max-height:85dvh;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#020711cf;backdrop-filter:blur(6px)}dialog h2{font:400 28px var(--serif);margin:18px 0 21px}dialog h3{font-size:16px;margin:27px 0 9px}dialog p{font-size:16px;color:#b6c6d5;line-height:1.95}dialog .close-dialog{position:absolute;right:12px;top:10px;width:44px;height:44px;font-size:27px;color:#adc2d3}.source-link{display:inline-flex;margin-top:24px;color:var(--accent);text-underline-offset:6px;line-height:1.8}.source-credit{font-size:12px!important;margin-top:15px}.no-script{position:fixed;inset:auto 0 0;background:#213746;padding:20px;z-index:10}
@media(min-width:1700px){.masthead,footer{max-width:1596px;margin-inline:auto}}
@media(max-width:1100px){.masthead{margin-inline:26px;gap:20px}.identity>span{display:none}.workspace{padding:27px 26px 22px;gap:25px;grid-template-columns:minmax(0,1fr) 320px}.inspector{padding-left:23px}.figure-number{display:none}.visual-heading h2{font-size:28px}.stage{height:510px}.view-presets button{padding:4px 10px}.camera-tools button{min-width:32px}.camera-tools #rotate{padding:0 3px}.separator{margin-inline:3px}footer{margin-inline:26px}}
@media(max-width:800px){.masthead{padding:21px 0 18px;margin-inline:22px;gap:17px}.wordmark{font-size:27px;gap:17px}.logo-line{height:28px}.identity h1{font-size:19px;letter-spacing:.05em}.about-button{font-size:0;gap:0;width:38px;justify-content:center}.info-icon{width:23px;height:23px;font-size:15px}.workspace{display:block;padding:25px 22px}.visual-heading{padding:0}.visual-heading h2{font-size:25px;margin-top:10px}.eyebrow{font-size:11px}.stage{height:clamp(330px,50dvh,470px);margin-top:5px}.orientation{top:14px}.model-scale{top:14px}.view-tools{justify-content:center;gap:16px;flex-wrap:wrap}.view-presets button{padding-inline:16px}.model-caption{margin-top:15px;margin-bottom:20px;font-size:11px}.insight{padding-top:15px;min-height:55px}.insight p{font-size:13px}.inspector{border-left:0;border-top:1px solid var(--line);padding:25px 0 0;margin-top:22px}.explore-top{margin-bottom:20px}.tabs{gap:30px;margin-bottom:18px}.choices{margin-bottom:22px;gap:10px}.choice{font-size:15px;min-height:48px}.detail{padding-top:21px}.detail-title h2{font-size:42px}.detail-body{max-width:650px}.detail-lead{font-size:18px}.elements{display:block}.element-row{gap:18px}.element-row strong{font-size:18px;min-width:59px}.element-row span{font-size:14px}.reading-note{margin-top:23px}.reading-note p{font-size:14px}.reading-note>span{font-size:12px}footer{margin-inline:22px;flex-wrap:wrap;padding-top:15px;gap:4px 16px}footer>span:first-child{font-size:10px}footer .edition{display:none}footer button{font-size:11px;margin-left:auto}.vertex{font-size:14px;height:40px;min-width:70px;padding-inline:9px}.gesture-hint{font-size:11px;bottom:10px}dialog{padding:30px 23px}dialog h2{font-size:25px}}
@media(max-width:400px){.masthead,.workspace,footer{margin-inline:0}.masthead{margin-inline:16px}.workspace{padding-inline:16px}.wordmark{font-size:23px;gap:11px}.identity h1{font-size:17px}.view-tools{gap:6px}.view-presets button{padding-inline:12px}.camera-tools #rotate{font-size:13px}.camera-tools button{min-width:30px}.separator{margin-inline:1px}footer{margin-inline:16px}.model-caption{gap:6px}.legend-dot.bottom{margin-left:4px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}
