@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap";
:root{--ink:#243e32;--muted:#526352;--paper:#f9f9f0;--line:#ccd4c5;--green:#304d3b;--hover:#e8eddf;--focus:#a65f25;--edge:28px;--radius:8px}*{box-sizing:border-box}body{color:var(--ink);background:#e6e9e1;margin:0;font-family:DM Sans,sans-serif}::selection{color:var(--ink);background:#d4dfc6}button,select,a,summary{-webkit-tap-highlight-color:transparent}button,select{font:inherit;color:inherit}button,summary,select{cursor:pointer}button{border:0}a{color:inherit;text-underline-offset:3px}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,canvas:focus-visible{outline:3px solid var(--focus);outline-offset:3px}button{transition:background .15s ease-out,color .15s ease-out}button:disabled{opacity:.5;cursor:wait}button svg{flex-shrink:0}select{border:1px solid var(--line);background:var(--paper);border-radius:6px;max-width:100%;min-height:44px;padding:10px 30px 10px 12px;font-size:13px}.explorer{height:100svh;min-height:400px;position:relative;overflow:hidden}.scene{position:absolute;inset:0}.scene canvas{width:100%;height:100%;display:block}.header{padding:20px var(--edge);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0 0 auto}.header>*{pointer-events:auto}.identity{align-items:center;gap:10px;text-decoration:none;display:flex}.seal{border:1px solid var(--ink);padding:5px 7px;font-family:serif;font-size:18px;line-height:1.1}.identity strong{letter-spacing:1.5px;font-size:15px}.identity small{letter-spacing:.8px;margin-top:4px;font-size:10px;display:block}.about{background:var(--paper);border-radius:6px;align-items:center;gap:6px;min-height:44px;padding:0 12px;font-size:12px;display:flex}.about:hover{background:var(--hover)}.intro{top:112px;left:var(--edge);pointer-events:none;max-width:280px;position:absolute}h1{letter-spacing:-.02em;margin:0 0 12px;font-family:Libre Caslon Display,Georgia,serif;font-size:34px;font-weight:400;line-height:1.07}h1 em{color:var(--muted);font-style:normal}.intro p{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.focused .intro{display:none}.destination-picker{left:var(--edge);flex-direction:column;gap:8px;width:252px;display:flex;position:absolute;top:274px}.destination-picker label{font-size:12px;font-weight:600}.focused .destination-picker{top:112px}.view-toggle{top:108px;right:var(--edge);background:var(--paper);border-radius:var(--radius);max-width:calc(100% - 2*var(--edge));gap:3px;padding:4px;display:flex;position:absolute}.view-toggle button{white-space:nowrap;background:0 0;border-radius:5px;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:0 12px;font-size:12px;display:flex}.view-toggle button:hover{background:var(--hover)}.view-toggle .chosen{background:var(--hover);font-weight:600}.view-toggle .walk-primary{background:var(--green);color:var(--paper);margin-left:4px}.view-toggle .walk-primary:hover{background:#41664b}.view-toggle select{background:var(--hover);border:0;max-width:220px}.tools{right:var(--edge);background:var(--paper);border-radius:var(--radius);flex-direction:column;padding:4px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.tools button{background:0 0;border-radius:5px;place-items:center;width:44px;height:44px;display:grid}.tools button:hover{background:var(--hover)}.tools>span{background:var(--line);height:1px;margin:4px 8px}.bottom-panel{left:var(--edge);right:var(--edge);pointer-events:none;align-items:center;gap:14px;display:flex;position:absolute;bottom:56px}.bottom-panel>*{pointer-events:auto}.location{margin-right:auto}.location strong{font-size:12px;font-weight:500}.location small{color:var(--muted);margin-top:5px;font-size:10px;display:block}.environment{background:var(--paper);border-radius:var(--radius);align-items:center;padding:4px;display:flex}.environment button{background:0 0;border-radius:5px;align-items:center;gap:7px;min-height:44px;padding:0 12px;font-size:12px;display:flex}.environment button:hover{background:var(--hover)}.separator{background:var(--line);width:1px;height:20px}.tour{background:var(--paper);border-radius:var(--radius);justify-content:center;align-items:center;gap:8px;min-height:52px;padding:0 16px;font-size:12px;display:flex}.tour:hover,.tour.playing{background:var(--hover)}footer{padding:12px var(--edge);color:var(--muted);background:#e6e9e1;justify-content:space-between;gap:12px;font-size:11px;display:flex;position:absolute;bottom:0;left:0;right:0}footer a{text-decoration:underline}.place-detail{left:var(--edge);background:var(--paper);border-radius:var(--radius);scrollbar-width:thin;scrollbar-color:var(--line) var(--paper);width:300px;max-height:calc(100svh - 340px);padding:18px 20px;position:absolute;bottom:132px;overflow:auto}.place-detail h2,.about-panel h2{letter-spacing:-.02em;margin:0 24px 12px 0;font-family:Libre Caslon Display,Georgia,serif;font-size:28px;font-weight:400;line-height:1.1}.place-description summary{color:var(--muted);min-height:32px;padding:7px 0;font-size:12px}.place-detail p,.about-panel p{color:var(--muted);margin:10px 0;font-size:13px;line-height:1.65}.close{background:0 0;border-radius:5px;place-items:center;width:44px;height:44px;display:grid;position:absolute;top:5px;right:5px}.close:hover{background:var(--hover)}.enter-room{background:var(--green);width:100%;min-height:44px;color:var(--paper);border-radius:5px;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:10px 12px;font-size:12px;display:flex}.enter-room:hover{background:#41664b}.about-panel{z-index:5;right:var(--edge);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);scrollbar-width:thin;scrollbar-color:var(--line) var(--paper);width:400px;max-height:calc(100svh - 102px);padding:28px;position:absolute;top:78px;overflow:auto}.about-panel>a{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:10px 0;font-size:12px;display:flex}.about-panel .small{font-size:12px}.loading{z-index:4;text-align:center;background:#e6e9e1;place-items:center;padding:28px;font-size:15px;display:grid;position:absolute;inset:0}.scene-label{white-space:nowrap;background:var(--paper);border:1px solid var(--line);border-radius:5px;min-height:36px;padding:9px 12px;font-size:11px;position:absolute;transform:translate(-50%,-50%)}.scene-label:hover{background:var(--hover)}.crosshair{color:var(--paper);text-shadow:0 1px 3px var(--ink);pointer-events:none;font-size:21px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.interior .scene canvas{touch-action:none}.interior .place-detail{max-height:calc(100svh - 240px);top:108px;bottom:auto}.interior .location,.campus-walk .tools{display:none}.interior .bottom-panel{justify-content:flex-end}.walk-controls{background:var(--paper);border-radius:var(--radius);gap:4px;padding:4px;display:flex}.walk-controls button{background:var(--green);width:48px;height:44px;color:var(--paper);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:5px;place-items:center;display:grid}.walk-controls button:hover,.walk-controls button:active{background:#41664b}.walk-controls span{padding:12px;font-size:12px}@media (max-width:900px){.intro{max-width:240px}h1{font-size:30px}.view-toggle button{padding:0 9px;font-size:11px}.destination-picker{width:230px}.location{display:none}.bottom-panel{justify-content:flex-end}.place-detail{width:270px}.interior .place-detail{top:176px}.interior .view-toggle{left:var(--edge);right:auto}}@media (max-width:600px){:root{--edge:16px}.header{padding-top:14px}.identity strong{letter-spacing:.9px;font-size:12px}.identity small{font-size:8px}.seal{font-size:15px}.about{padding:0 9px;font-size:11px}.about svg{display:none}.intro{max-width:100%;top:86px;right:16px}h1{font-size:28px;line-height:1.1}.intro p{display:none}.view-toggle{justify-content:space-between;max-width:none;inset:auto 16px 128px}.view-toggle button{padding:0 8px;font-size:11px}.view-toggle button svg{width:15px}.view-toggle .walk-primary{margin-left:0}.destination-picker,.focused .destination-picker{gap:6px;width:calc(100% - 88px);top:auto;bottom:192px;left:16px}.tools{top:43%;right:16px;transform:translateY(-50%)}.tools button{width:40px;height:44px}.bottom-panel{justify-content:space-between;gap:8px;bottom:64px}.environment button{padding:0 9px;font-size:11px}.tour{padding:0 10px;font-size:11px}.place-detail{width:calc(100% - 88px);max-height:calc(100svh - 365px);padding:14px 16px;bottom:278px;left:16px}.place-detail h2{margin-bottom:6px;font-size:23px}.place-detail p{font-size:12px}.enter-room{font-size:11px}.about-panel{width:auto;max-height:calc(100svh - 92px);padding:24px;top:74px;left:16px;right:16px}.scene-label{padding:7px 9px;font-size:10px}footer{flex-direction:column;gap:5px;padding:10px 16px;font-size:10px}footer>span:first-child{font-size:9px}.interior .view-toggle{inset:78px 16px auto}.view-toggle select{min-width:0;max-width:60%;font-size:12px}.interior .place-detail{width:calc(100% - 88px);max-height:calc(100svh - 370px);top:144px;bottom:auto}.interior .bottom-panel{justify-content:space-between;gap:6px}.interior .environment button{padding:0 8px}.walk-controls{gap:3px}.walk-controls button{width:40px;height:44px}.interior .tools{top:45%}}@media (max-height:600px) and (min-width:601px){.intro{display:none}.destination-picker{top:96px}.view-toggle{top:90px}.place-detail,.interior .place-detail{max-height:calc(100svh - 275px);top:164px;bottom:auto}.tools{top:60%}.bottom-panel{bottom:44px}footer{font-size:10px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.penalty-mode .view-toggle,.penalty-mode .place-detail,.penalty-mode .walk-controls,.penalty-mode .crosshair,.penalty-mode footer>span:first-child{display:none}.penalty-panel{z-index:2;left:var(--edge);background:var(--paper);border-radius:var(--radius);width:310px;padding:18px;position:absolute;bottom:125px}.penalty-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.penalty-heading h2{margin:0;font-family:Libre Caslon Display,Georgia,serif;font-size:27px;font-weight:400}.penalty-heading button{background:0 0;align-items:center;gap:5px;min-height:44px;font-size:11px;display:flex}.penalty-score{justify-content:space-between;margin:12px 0;font-size:17px;font-weight:600;display:flex}.penalty-score span{align-self:center;font-size:12px;font-weight:400}.penalty-result{min-height:36px;color:var(--muted);margin:8px 0;font-size:13px;line-height:1.5}.penalty-panel fieldset{border:0;margin:0;padding:0}.penalty-panel label{flex-wrap:wrap;justify-content:space-between;align-items:center;margin:4px 0;font-size:12px;display:flex}.penalty-panel label span{color:var(--muted)}.penalty-panel input{width:100%;height:28px;accent-color:var(--green);cursor:pointer;flex-basis:100%;display:block}.kick-button{background:var(--green);width:100%;min-height:44px;color:var(--paper);border-radius:5px;margin-top:10px;font-weight:600}.kick-button:hover{background:#41664b}.penalty-panel input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}@media (max-width:600px){.penalty-panel{width:auto;padding:12px 16px;bottom:62px;left:16px;right:16px}.penalty-heading h2{font-size:23px}.penalty-result{min-height:20px;margin:4px 0}.penalty-score{margin:4px 0}.penalty-panel fieldset{gap:12px;display:flex}.penalty-panel label{flex:1;min-width:0}.penalty-panel label span{font-size:10px}.penalty-mode .bottom-panel{display:none}.penalty-mode footer{font-size:9px}.penalty-mode .scene{bottom:150px}}.bell-status{color:var(--muted);margin-top:8px;font-size:12px;display:block}.bell-status:empty{display:none}.interaction-prompt{z-index:2;background:var(--paper);min-height:48px;color:var(--ink);border-radius:var(--radius);white-space:nowrap;align-items:center;gap:10px;padding:8px 16px;font-size:13px;display:flex;position:absolute;bottom:150px;left:50%;transform:translate(-50%)}.interaction-prompt:hover{background:var(--hover)}.interaction-prompt kbd{border:1px solid var(--line);border-radius:4px;place-items:center;width:28px;height:28px;font:600 14px DM Sans,sans-serif;display:grid}.penalty-mode .header{background:#e6e9e1}
