/* A tactile study with controls that stay quiet around its physical wall menu. */
:root{--paper:#f8f3e9;--ink:#352c23;--brass:#b89b6b;--wine:#672c40;--line:#d7cab5;color-scheme:light}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;color:var(--ink)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}button{transition:background .2s,color .2s,border-color .2s}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid #b58947;outline-offset:4px}button:disabled{cursor:default}svg{width:20px;height:20px;flex-shrink:0}[hidden]{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.study{position:relative;width:100%;height:100svh;min-height:360px;overflow:hidden;background:radial-gradient(ellipse at 45% 30%,#4d4638,#25261f 70%);color:#f8f0df}.room-stage{position:absolute;inset:0}.room-stage canvas{display:block;width:100%;height:100%;touch-action:none;opacity:0;transition:opacity .75s}.is-ready .room-stage canvas{opacity:1}.room-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#20140b0c,transparent 24%,transparent 80%,#170d0929),radial-gradient(ellipse at center,transparent 65%,#2515080d)}
.room-header{position:absolute;inset:clamp(22px,3.4vh,40px) 28px auto;z-index:5;pointer-events:none;display:flex;justify-content:center;align-items:flex-start}.room-header>*{pointer-events:auto}.settings-trigger{position:absolute;right:0;top:0;display:grid;place-items:center;width:46px;height:46px;border:1px solid #e7ddc075;border-radius:50%;background:linear-gradient(135deg,#e4d8bbe8,#c5b797e8);color:#4c4332;box-shadow:inset 0 1px #fff8eaa8,0 3px 14px #1f1d1336;backdrop-filter:blur(12px)}.settings-trigger:hover{background:#f1e5cb}.settings-trigger svg{width:22px;height:22px}.room-footer{position:absolute;left:0;right:0;bottom:max(15px,env(safe-area-inset-bottom));pointer-events:none;text-align:center}.prototype-label{margin:0;font:10px Georgia,"Yu Mincho",serif;letter-spacing:.12em;color:#f1e9d8a3;text-shadow:0 1px 3px #35241899}
.room-pins{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s}.is-ready .room-pins{opacity:1}.room-pin{position:absolute;left:0;top:0;display:flex;align-items:center;gap:7px;transform:translate(-50%,-50%);white-space:nowrap;padding:7px;pointer-events:auto;color:#f7edd5}.pin-dot{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;border:1px solid #f5e2bfa8;background:#d9c59edb;color:#4d3e28;font-size:18px;box-shadow:0 0 0 5px #e2cf9522}.pin-label{padding:6px 9px;border:1px solid #dcc08b60;border-radius:3px;background:#352c1fd9;font-size:12px}.room-pin:hover .pin-dot{background:#752f46;color:#fff5da}.study:not(.is-ready) .room-pin,.hidden-pins,.hidden-pins .room-pin{pointer-events:none!important;visibility:hidden!important;opacity:0!important}
.loading-note{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:23px;pointer-events:none;padding:180px 24px 80px;background:radial-gradient(ellipse at 50% 43%,#424539,#282c25 75%)}.loading-monogram{font:italic 80px/.9 Georgia,serif;letter-spacing:-.075em;color:#e0ceb0;text-shadow:0 2px 20px #131b1154}.loading-monogram span{color:#aa8b59}.loading-rule{width:160px;height:1px;margin:3px 0 8px;background:#c7b08530;overflow:hidden}.loading-rule>span{display:block;transform-origin:left;width:100%;height:100%;background:#c9ac76;transform:scaleX(.04);transition:transform .65s ease}.loading-note p{max-width:36em;text-align:center;margin:0;font-size:13px;line-height:1.9;letter-spacing:.06em;color:#dfd6c6}.fallback-message{position:absolute;top:50%;left:24px;right:24px;transform:translateY(-50%);text-align:center;font-size:14px;color:#e2d6c0}.skip-link{position:absolute;top:-100px;left:20px;z-index:100;background:var(--paper);color:var(--ink);padding:13px}.skip-link:focus{top:14px}
.settings-panel{position:fixed;inset:18px 18px auto auto;margin:0;width:min(355px,calc(100vw - 28px));max-height:calc(100svh - 36px);padding:24px;border:1px solid #bbaa8a;border-radius:8px;background:linear-gradient(125deg,#f8f3e9,#eae2d2);color:var(--ink);box-shadow:0 20px 70px #18130942,inset 0 1px #fff9e9;overflow-y:auto;overscroll-behavior:contain}.settings-panel:not([open]){display:none}.settings-panel::backdrop{background:#18201816;backdrop-filter:blur(2px)}.settings-heading{display:flex;align-items:center;justify-content:space-between;padding-bottom:18px}.settings-heading span{font:9px Georgia,serif;letter-spacing:.21em;color:#86704e}.settings-heading h2{font:500 23px "Yu Mincho",serif;margin:6px 0 0;letter-spacing:.12em}.settings-close{display:grid;place-items:center;background:transparent;border:1px solid #c2b2958c;width:34px;height:34px;border-radius:50%;color:#6d5c44;font-size:24px;font-weight:300}.settings-close:hover{background:#ded2bc}.settings-section{border-top:1px solid #bcab8c66;padding:12px 0}.setting-row{width:100%;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 3px;background:none;border:0;color:#453a2d;font-size:13px;text-align:left}.setting-row>span:last-child{color:#806746;font-size:12px}.setting-row:hover{background:#fef9ed}.setting-row[aria-pressed=true]>span:last-child{color:#793349}.setting-row:disabled{opacity:.5}.movement-toggle{display:flex;position:relative;align-items:center;justify-content:space-between;gap:14px;padding:10px 2px 14px;cursor:pointer;font-size:13px}.movement-toggle small{display:block;color:#89775d;font-size:11px;margin-top:7px;line-height:1.5}.movement-toggle input{position:absolute;right:0;width:42px;height:24px;opacity:0;cursor:pointer;z-index:1}.switch-track{width:40px;height:23px;flex-shrink:0;background:#c9bfad;border:1px solid #b4a487;border-radius:16px;position:relative;box-shadow:inset 0 1px 3px #77674838;transition:background .2s}.switch-track:after{content:"";position:absolute;width:17px;height:17px;left:2px;top:2px;border-radius:50%;background:#fffcf3;box-shadow:0 1px 3px #473a273d;transition:transform .2s}.movement-toggle input:checked+.switch-track{background:#6a7359;border-color:#61694f}.movement-toggle input:checked+.switch-track:after{transform:translateX(17px)}.movement-toggle input:focus-visible+.switch-track{outline:2px solid #a17d44;outline-offset:4px}#movement-controls{margin:0;padding:0;border:0;min-width:0;transition:opacity .2s}#movement-controls:disabled{opacity:.4}.orbit-controls{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;font-size:12px;margin-top:8px}.orbit-controls select{min-width:0;width:100%;border:1px solid #bcac9099;border-radius:3px;background:#fffbf0;color:#594b37;padding:9px 6px;font-size:12px}.view-presets{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.view-presets button,.view-controls button{min-height:36px;border:1px solid #bcac9099;border-radius:3px;color:#69563c;background:#f5edde;font-size:12px}.view-presets button:hover:enabled,.view-controls button:hover:enabled{background:#e3d5bb}.view-controls{display:grid;grid-template-columns:40px 40px 1fr;gap:6px;margin-top:7px}.view-controls>button:nth-child(-n+2){font-size:21px;font-weight:300}.view-controls #view-reset{display:flex;justify-content:center;align-items:center;gap:12px}.inspection-caption{font-size:11px;line-height:1.6;color:#88704e;margin:13px 0 0}.settings-foot{border-top:1px solid #bcab8c66;padding-top:15px;color:#9a8769;font-size:10px}.room-time{display:flex;align-items:center;justify-content:space-between;gap:12px}.room-time>span{font:9px Georgia,serif;letter-spacing:.16em}.room-time time{font-size:12px;letter-spacing:.07em;font-variant-numeric:tabular-nums}#render-mode:not(:empty){display:block;margin-top:10px}
dialog.reading-sheet{position:fixed;inset:0 0 0 auto;margin:0;width:min(560px,48vw);height:100svh;max-width:100vw;max-height:100svh;border:0;border-left:1px solid #b49b71;border-radius:0;padding:25px 36px 20px;background:var(--paper);color:var(--ink);box-shadow:-15px 0 70px #1c170b3b;overflow-y:auto;overscroll-behavior:contain}dialog.reading-sheet:not([open]){display:none}dialog.reading-sheet::backdrop{background:#18190f2b;backdrop-filter:blur(3px)}.reader-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:35px}.back-button,.reader-x{border:0;background:transparent;color:#786951;padding:8px 0;display:flex;align-items:center;gap:8px;font-size:12px}.back-button svg{width:16px;height:16px}.reader-x{padding:8px}.reader-heading{position:relative;border-bottom:1px solid #bfaa86;padding-bottom:24px;margin-bottom:27px}.reader-heading:after{content:"";position:absolute;left:0;bottom:-2px;width:34px;height:3px;background:#784254}.reader-number{font:10px Georgia,serif;letter-spacing:.18em;color:#937854}#reader-title{font-family:"Yu Mincho",serif;font-size:28px;font-weight:500;letter-spacing:.08em;margin:12px 0 8px}#reader-subtitle{font-size:12px;color:#88775d;line-height:1.8;margin:0}.reader-body{font-size:15px;line-height:1.95}.reader-body p{margin:0 0 24px}.reader-body h2{font:500 27px "Yu Mincho",serif;letter-spacing:.1em;margin:28px 0 20px}.reader-body h2 small{display:block;font:11px sans-serif;letter-spacing:.08em;margin-top:8px;color:#857664}.reader-body h3{font-size:17px;line-height:1.7;font-weight:600;margin:28px 0 12px}.reader-photo{width:100%;height:auto;display:block;object-fit:contain}.timeline{border-left:1px solid #d5c8ad;padding-left:22px}.timeline article{margin:24px 0}.timeline time{font:12px Georgia,serif;color:#877152}.timeline h4{font-size:15px;line-height:1.8;margin:6px 0}.timeline p{font-size:14px;color:#776958}.reader-link{display:flex;align-items:center;justify-content:space-between;padding:15px 0;border-bottom:1px solid #b49971;color:#702c3c;font-size:13px;margin:30px 0}.reader-link:hover{background:#76283c06}.reader-link svg{width:16px;height:16px}.research-item{padding:24px 0 10px;border-top:1px solid #dfd5c4}.research-item h3{margin:9px 0 12px}.item-tag{font-size:11px;color:#927455}.research-item p{font-size:14px;color:#655b4d}.home-post{display:block;border-top:1px solid #d9cfbc;padding:18px 0}.home-post h3{font-size:15px;margin:6px 0}.home-post:hover h3{color:#76283c;text-decoration:underline;text-underline-offset:4px}.letter-heading{margin:25px 0 40px;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#7d2b40}.letter-heading svg{width:45px;height:45px;stroke-width:1}.letter-heading p{margin:15px 0 0;font-size:15px}.email-address{display:flex;align-items:center;justify-content:space-between;font-size:clamp(15px,1.5vw,20px);border-block:1px solid #d5c4a8;padding:20px 0;color:#7b2f43;margin:28px 0 10px;overflow-wrap:anywhere;gap:8px}.contact-note{font-size:12px;color:#8b7a64}.reader-footer{border-top:1px solid #ded4c2;padding-top:22px;font-size:10px;color:#9e8c70;margin-top:40px;text-align:center}.noscript-about{background:var(--paper);color:var(--ink);padding:32px;line-height:1.9}.noscript-about p{max-width:65em}
@media(max-width:1050px){.room-header{left:20px;right:20px}.settings-trigger{right:-6px;width:40px;height:40px}dialog.reading-sheet{width:58vw}}
@media(max-width:680px){.room-header{inset:max(14px,env(safe-area-inset-top)) 14px auto}.settings-trigger{right:8px;top:11px;width:34px;height:34px;background:#dacbaa;border-color:#ab967d66;box-shadow:inset 0 1px #fff5db6b,0 1px 3px #33221624}.settings-trigger svg{width:18px;height:18px}.prototype-label{font-size:9px}.room-pin .pin-label{display:none}.room-pin:hover .pin-label,.room-pin:focus-visible .pin-label{display:block}.loading-note{padding:150px 26px 60px;gap:20px}.loading-monogram{font-size:70px}.loading-note p{font-size:12px;max-width:24em}.settings-panel{inset:12px 12px auto auto;padding:22px;max-height:calc(100svh - 24px)}dialog.reading-sheet{width:100%;padding:22px 25px;border:0}.reader-top{margin-bottom:25px}#reader-title{font-size:26px}.reader-body{font-size:15px}}
@media(max-width:360px){.room-header{left:10px;right:10px}.settings-trigger{right:6px;top:10px;width:31px;height:31px}}
@media(max-height:520px) and (min-width:681px){.room-header{top:14px}.loading-note{padding-top:140px;padding-bottom:30px;gap:16px}.loading-monogram{font-size:54px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* The only persistent screen control is the gear. Navigation follows actual
   wall geometry; these transparent links provide keyboard and touch access. */
.wall-navigation{position:absolute;inset:0;z-index:4;pointer-events:none}
.wall-link{position:absolute;display:block;pointer-events:auto;background:transparent;border:0;transition:background .15s;transform:none}
.is-ready .wall-link>span{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.wall-link:hover{background:#ad8c421a}.wall-link:focus-visible{outline:0;background:#d5b65e4d;box-shadow:inset 0 0 0 3px #7a5928}
.wall-link.texture-failed>span{position:absolute;inset:25% 3% 3%;display:flex;align-items:center;justify-content:center;width:auto;height:auto;margin:0;clip-path:none;color:#59442d;font-size:clamp(9px,1vw,15px);white-space:normal;text-align:center}
.study:not(.is-ready) .wall-navigation,.study.is-failed .wall-navigation{inset:auto 24px 45px;display:flex;justify-content:center;flex-wrap:wrap;gap:7px}
.study:not(.is-ready) .wall-link,.study.is-failed .wall-link{position:relative!important;inset:auto!important;width:auto!important;height:auto!important;visibility:visible!important;clip-path:none!important;min-height:39px;display:flex;align-items:center;padding:9px 15px;border:1px solid #b4a17b6b;background:#d4c7aee8;color:#453d2a;font-size:12px;border-radius:3px}
.study.is-failed .wall-link>span{position:static;width:auto;height:auto;margin:0;clip-path:none;white-space:normal}
.settings-pages{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;padding:15px 0 19px;border-top:1px solid #bcab8c66}
.settings-pages a{display:flex;justify-content:space-between;align-items:center;gap:8px;color:#7c6546;font-size:11px;padding:8px 0}.settings-pages a:hover{color:#672c40}.settings-pages a span{color:#b19a71}
.room-header{pointer-events:none;display:block}.room-header .settings-trigger{pointer-events:auto}
@media(max-width:680px){.room-header{inset:max(14px,env(safe-area-inset-top)) 14px auto}.settings-trigger{right:0;top:0;width:40px;height:40px}.settings-trigger svg{width:21px;height:21px}.study:not(.is-ready) .wall-navigation,.study.is-failed .wall-navigation{left:16px;right:16px;bottom:43px;gap:6px}.study:not(.is-ready) .wall-link,.study.is-failed .wall-link{padding:8px 10px;font-size:11px;min-height:36px}}
@media(max-height:500px){.study:not(.is-ready) .wall-navigation,.study.is-failed .wall-navigation{bottom:32px}.loading-note{padding-top:65px;padding-bottom:95px;gap:13px}.loading-monogram{font-size:50px}}
