:root{color-scheme:dark;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Noto Sans JP",sans-serif;background:#070d18;color:#eaf2fc}
*{box-sizing:border-box}body{margin:0}.shell{max-width:1320px;margin:auto;padding:38px 24px 60px}.eyebrow{color:#67e8f9;font:700 .75rem ui-monospace,monospace;letter-spacing:.16em}h1{font-size:clamp(2rem,4vw,3.2rem);line-height:1.15;letter-spacing:-.03em;margin:14px 0}header p{color:#a6b8d2;margin:0 0 32px;line-height:1.8}
.columns{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;align-items:start}.card{border:1px solid #24334b;background:#101c30;border-radius:15px;padding:22px;box-shadow:0 6px 32px #0002}.stage{position:sticky;top:16px}.stage-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.tag,.step{font:700 .73rem ui-monospace,monospace;color:#67e8f9;letter-spacing:.07em}small{color:#8ca2be;font-size:.72rem}
canvas{display:block;width:100%;height:420px;border-radius:10px;touch-action:none;cursor:grab;border:1px solid #273855}canvas:active{cursor:grabbing}.hint{font-size:.82rem;color:#9ab0ca;margin:8px 0 18px}.settings{display:grid;gap:13px}.settings label{font-size:.88rem;color:#d8e6f7}.select-label,.range-label{display:grid;gap:6px}.range-label{grid-template-columns:1fr auto}.range-label input{grid-column:1 / -1}output{color:#67e8f9;font-family:ui-monospace,monospace}select,button{background:#1a2b44;border:1px solid #39506a;color:#edf6ff;padding:8px;border-radius:7px;font:inherit}button{cursor:pointer}input[type=range]{accent-color:#67e8f9;width:100%}input[type=checkbox]{accent-color:#38bdf8}.check-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.check-row button{margin-left:auto}.readout{background:#091527;border:1px solid #2c3e5a;margin-top:18px;padding:14px;border-radius:10px}.readout b{font-size:.82rem;color:#e9bc75}.readout pre{overflow:auto;margin:8px 0 0;font-size:.81rem;color:#b9d6f7;line-height:1.55}
.notes{display:grid;gap:16px}.notes .card{padding:21px 24px}.notes h2{font-size:1.24rem;margin:10px 0}.notes p{font-size:.93rem;color:#b6c8df;line-height:1.9;margin:9px 0}.notes strong{color:#e6f2ff}code,.formula{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.formula{white-space:pre-wrap;font-size:.88rem;line-height:1.7;background:#091527;border-left:3px solid #56d8e4;padding:12px 16px;border-radius:6px;color:#e6f4ff;overflow:auto}.warning{border-color:#67512c!important}.warning .step{color:#f2bd72}footer{font-size:.89rem;border-top:1px solid #293a50;margin-top:34px;padding-top:24px;color:#8ca2be;line-height:1.8}a{color:#67e8f9}
@media(max-width:900px){.columns{grid-template-columns:1fr}.stage{position:static}canvas{height:390px}}@media(max-width:500px){.shell{padding:24px 12px}.card{padding:14px}.notes .card{padding:17px}canvas{height:310px}.check-row{gap:10px}}
/* Explicitly hide the FOV slider when orthographic projection is selected. */
[hidden] { display: none !important; }
