/*
                    |
                 ___|___
                /       \
               /_________\
                   \./

             .-.         .-.
             \  \  | |  /  /
              '._\(o o)/_.'
                  /   \
                  '---'

        The moth has strong opinions about this light theme.
*/
.cabin-page{height:100dvh;min-height:440px;overflow:hidden;display:flex;flex-direction:column;color:#efe9d6;background:radial-gradient(ellipse at 66% 40%,#395451 0%,#233e3f 43%,#152d30 100%)}
.cabin-page .site-header{height:82px;background:transparent;border-bottom:1px solid #f7f2e612;padding:0 42px;flex-shrink:0}.cabin-page .site-header nav{gap:25px}.cabin-page .site-header nav a{font-size:12px}.cabin-page #menu-toggle{margin-left:auto;color:var(--paper);background:none;border:1px solid #ffffff35;padding:9px 12px;font-size:12px}.cabin-page #mobile-menu{top:82px}
#cabin-stage{flex:1;position:relative;min-height:0;isolation:isolate;overflow:hidden}#cabin-canvas{position:absolute;width:100%;height:100%;inset:0;display:block;image-rendering:pixelated;outline:0}
.cabin-intro{position:absolute;left:5%;top:50%;transform:translateY(-52%);width:310px;z-index:3}.cabin-intro .eyebrow{font-size:10px;letter-spacing:2px;color:#c5c6a6;margin-bottom:22px}.cabin-intro h1{font-family:var(--pixel);font-weight:400;font-size:clamp(36px,4.5vw,60px);line-height:1.06;letter-spacing:-3.5px;margin:0 0 24px;text-shadow:2px 2px 0 #182e2d}.intro-copy{font-family:system-ui,sans-serif;font-size:16px;line-height:1.7;color:#bfcbbd;margin:0 0 32px}.intro-copy a{color:#ede4be;text-decoration-color:#bfcbbd55}
#enter-cabin{display:flex;align-items:center;justify-content:space-between;gap:45px;background:#ecd4a0;color:#25382e;font-size:14px;padding:17px 22px;border:1px solid #f9edce;box-shadow:4px 4px 0 #10252990;min-width:208px;transition:background .2s,translate .2s}#enter-cabin:hover{background:#ffe5a7;translate:0 -2px}#enter-cabin span{font-size:18px}.intro-reading{display:inline-block;font-size:11px;color:#adbcab;margin-top:24px;text-decoration-color:#adbcab60}
.cabin-footer{height:74px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 42px;color:#b3c0ad;border-top:1px solid #f7f2e610;position:relative;z-index:4}.cabin-location{font-size:9px;letter-spacing:1.4px;display:flex;align-items:center;gap:13px}.cabin-location i{width:5px;height:5px;background:#d8bb76;box-shadow:0 0 10px #d8bb7644}.cabin-camera{display:flex;align-items:center;gap:19px}.cabin-camera span{font-size:9px;letter-spacing:1px}.cabin-camera button{width:37px;height:34px;border:1px solid #ffffff29;background:transparent;color:#dcd8bf;font-size:17px}.cabin-camera button:hover{background:#ffffff10}.cabin-settings{display:flex;gap:21px}.cabin-settings button,#leave-cabin{background:none;border:0;color:#bdc9b6;padding:12px 0;font-size:11px}.cabin-settings button[aria-pressed=true]{color:#f2d597}
.cabin-menu{position:absolute;left:4%;top:50%;transform:translateY(-50%);width:324px;background:#f4eedfd9;backdrop-filter:blur(14px);color:#233c36;padding:28px 30px;box-shadow:5px 5px 0 #142b2a55;z-index:3}.cabin-menu>.eyebrow{font-size:9px;color:#77816b}.cabin-menu h2{font-size:25px;line-height:1.2;font-weight:500;letter-spacing:-1.3px;margin:14px 0 16px}.cabin-menu>p{font-family:system-ui,sans-serif;font-size:14px;color:#65745f;line-height:1.7;margin-bottom:16px}.cabin-menu nav{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.cabin-menu nav a{font-size:12px;text-decoration:none;border-bottom:1px solid #bdc3ad;padding:12px 0}.cabin-menu nav a:hover{color:#986e30}.cabin-menu nav a:last-child{display:none}.cabin-about{display:inline-block;font-size:10px;text-decoration:none;margin-top:24px;color:#78856c}.scene-secret{position:absolute;width:30px;height:30px;transform:translate(-50%,-50%);border:0;background:none;color:transparent;z-index:2;cursor:help}.scene-secret:hover,.scene-secret:focus-visible{background:#e1c99022;color:#ffe1a0;border:1px solid #f3d59670}.cabin-page #toast{bottom:95px;font-size:12px;background:#f3eddf;color:#2d4436}.cabin-page .noscript-note{inset:auto 10% 15%;z-index:10;background:var(--paper);color:var(--ink);padding:22px;font-size:15px}
#scene-loading{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);font-size:11px;letter-spacing:.4px;color:#dacaa2}#scene-fallback{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:28px;background:var(--paper);color:var(--ink);z-index:10;max-width:90vw;width:420px;font-size:15px;line-height:1.7}.cabin-page.is-entering .cabin-intro{opacity:0;pointer-events:none;transition:opacity .45s}.cabin-page.is-entering .cabin-camera{opacity:.3;pointer-events:none}.cabin-page.is-inside #cabin-canvas{image-rendering:auto}
@media(max-width:1150px){.cabin-page .site-header{padding:0 28px}.cabin-page .site-header nav{gap:18px}.cabin-page .site-header nav a{font-size:11px}.cabin-intro{left:4%;width:250px}.cabin-intro h1{font-size:43px}.intro-copy{font-size:14px}.cabin-footer{padding-inline:28px}.cabin-menu{width:295px;padding:25px}}
@media(max-width:900px){.cabin-page .site-header nav{display:none}.cabin-page #menu-toggle{display:block}.cabin-location{font-size:8px;max-width:180px;line-height:1.8}.cabin-intro{left:28px;width:218px}.cabin-intro h1{font-size:37px}.cabin-intro .eyebrow{font-size:8px;letter-spacing:1.2px}.intro-copy{font-size:13px}#enter-cabin{min-width:185px;padding:15px 18px;font-size:12px}.cabin-menu{width:272px;left:22px;padding:24px}.cabin-menu h2{font-size:23px}.cabin-menu>p{font-size:13px}}
@media(max-width:600px){.cabin-page .site-header{height:65px;padding:0 20px}.cabin-page #mobile-menu{top:65px}.cabin-page .wordmark{font-size:15px}.cabin-intro{left:24px;top:auto;bottom:24px;transform:none;width:calc(100% - 48px);display:grid;grid-template-columns:1fr auto;align-items:end;gap:10px 12px;text-shadow:0 1px 5px #142b2a}.cabin-intro .eyebrow{grid-column:1/-1;margin:0;font-size:8px;letter-spacing:1.8px}.cabin-intro h1{font-size:33px;letter-spacing:-2px;margin:0;line-height:1.04}.intro-copy{grid-column:1/-1;margin:0;font-size:12px;line-height:1.6;max-width:290px}.intro-copy br{display:none}#enter-cabin{grid-column:2;grid-row:2;min-width:0;font-size:12px;gap:18px;padding:13px 16px;white-space:nowrap}.intro-reading{grid-column:1/-1;margin:3px 0 0;font-size:10px}.cabin-footer{height:63px;padding:0 20px;gap:10px}.cabin-location{display:none}.cabin-camera{gap:12px}.cabin-camera span{font-size:8px}.cabin-camera button{height:30px;width:32px}.cabin-settings{gap:15px}.cabin-settings button,#leave-cabin{font-size:10px}.cabin-menu{left:16px;top:auto;bottom:15px;transform:none;width:calc(100% - 32px);padding:20px 23px}.cabin-menu h2{font-size:22px;margin:10px 0}.cabin-menu h2 br{display:none}.cabin-menu>p{display:none}.cabin-menu nav{grid-template-columns:repeat(3,1fr);gap:0 15px}.cabin-menu nav a{font-size:11px;padding:10px 0}.cabin-about{font-size:9px;margin-top:16px}#scene-loading{bottom:240px;width:max-content;font-size:10px}.cabin-page #toast{bottom:80px}.cabin-page .scene-secret{width:28px;height:28px}}
@media(prefers-reduced-motion:reduce){.cabin-page.is-entering .cabin-intro{transition:none}}

.computer-screen{background:#142a23;overflow:hidden;backface-visibility:hidden}.computer-screen iframe{color-scheme:dark}.cabin-page #cabin-canvas{pointer-events:none}.cabin-page .terminal-hotspot{width:auto;height:auto;min-width:150px;white-space:nowrap;border:1px solid #d8cba380;background:#f1dfb3;color:#273c2e;padding:12px 16px;cursor:pointer;font-size:12px;box-shadow:3px 3px 0 #142b2a55}.cabin-page .terminal-hotspot:hover{background:#fff0c5}.cabin-page.is-entering.is-inside .cabin-camera{opacity:1;pointer-events:auto}.vertical-look{display:grid;gap:2px}.cabin-camera .vertical-look button{height:21px;width:30px;line-height:15px;font-size:12px;padding:0}#computer-back{background:none;border:0;color:#d8caa4;font-size:11px;padding:12px 0}.cabin-page.at-computer .cabin-footer{justify-content:space-between}.cabin-page.at-computer #cabin-canvas{image-rendering:auto}.cabin-page.at-computer .cabin-location{font-size:8px}@media(max-width:600px){.cabin-camera{gap:8px}.cabin-camera span{font-size:7px}.cabin-camera button{width:27px}.cabin-settings{gap:10px}.cabin-settings button{font-size:9px}.cabin-page .terminal-hotspot{min-width:125px;font-size:11px;padding:10px 12px}.cabin-page.is-inside .cabin-footer{flex-wrap:wrap;height:84px;justify-content:center;gap:0 16px}.cabin-page.is-inside .cabin-settings{margin-left:auto}.cabin-page.is-inside #leave-cabin{order:-1;min-width:100%;text-align:left;padding:0}.cabin-page.at-computer .cabin-footer{height:63px;justify-content:space-between}#computer-back{font-size:10px}}

/* Keep the iframe in place, but flatten its transforms once seated. This avoids
   browser hit-test errors from nested CSS3D perspective transforms. */
.computer-input-ready>div>div{transform:none!important;transform-style:flat!important}
.computer-input-ready .computer-screen{transform:translate(var(--screen-x),var(--screen-y)) scale(var(--screen-scale))!important;transform-origin:0 0;backface-visibility:visible;user-select:auto!important}
.cabin-page #desk-terminal{transform:none;min-width:0;min-height:0;padding:0;border:0;box-shadow:none;background:transparent;display:flex;align-items:flex-end;justify-content:center;cursor:pointer}
.cabin-page #desk-terminal span{margin-bottom:5%;padding:6px 9px;font-size:10px;background:#e8d8ab;color:#233b30;opacity:.9;pointer-events:none}
.cabin-page #desk-terminal:hover,.cabin-page #desk-terminal:focus-visible{background:#cddcb619;outline:2px solid #e8d8ab;outline-offset:-3px}
.cabin-page.afterglow{background:radial-gradient(ellipse at 60% 28%,#344351 0%,#182c3e 43%,#101c30 100%)}.discovery-body .service-scan{width:100%;height:auto;image-rendering:pixelated}.cabin-page.is-revealing .cabin-intro{opacity:0;pointer-events:none}
#rebuild-cabin{border:1px solid #e2b576;background:#ead1a0;color:#273a2e;padding:10px 14px;font:inherit;font-size:11px;cursor:pointer}#replacement-search{font-size:10px;color:#dfcea8;white-space:nowrap}@media(max-width:600px){.cabin-footer:has(#rebuild-cabin:not([hidden])){height:100px;flex-wrap:wrap;justify-content:center;gap:8px;padding-block:10px}.cabin-footer:has(#rebuild-cabin:not([hidden])) .cabin-settings{display:none}}
/* After the welcome, the objects themselves are the interface. */
.cabin-intro{transition:opacity .45s ease}.has-arrived .cabin-intro{opacity:0;pointer-events:none}.has-arrived .site-header nav,.has-arrived #menu-toggle,.has-arrived #mobile-menu{display:none!important}.cabin-page .scene-secret{transform:none;background:none!important;border:0!important;color:transparent!important;cursor:pointer;box-shadow:none!important;min-width:0!important;min-height:0!important;padding:0!important}.cabin-page .scene-secret:hover{background:none!important;border:0!important}.cabin-page .scene-secret:focus-visible{outline:2px solid #e0c387;outline-offset:-2px}.cabin-page #desk-terminal:hover{background:none!important;outline:0}.cabin-page #leave-cabin,.cabin-page #computer-back{display:none!important}.has-arrived .cabin-location{display:none}.has-arrived .cabin-footer{justify-content:space-between}
/* Projected controls must never scroll the scene when they receive focus. */
#cabin-stage{overflow:clip}.cabin-page{overflow:clip}
#discovery.bitmap-discovery{background:#cdb98d}.bitmap-discovery #discovery-title,.bitmap-discovery .reader-bar .eyebrow{display:none}.bitmap-discovery .reader-bar{height:44px;justify-content:flex-end;border-bottom:0;background:transparent}.bitmap-discovery .discovery-body{padding:0 24px 24px}.bitmap-discovery .service-scan{display:block}
#discovery.chalkboard-discovery{width:min(1250px,96vw);max-width:1250px;max-height:94dvh;background:#203932;color:#dedfcc;overflow:auto}.chalkboard-discovery .reader-bar{background:#1a302a;color:#dedfcc;position:sticky;top:0;z-index:1}.chalkboard-discovery .discovery-body{padding:0 12px 12px}.chalkboard-discovery h2{font-size:18px;padding:8px 16px;margin:10px 0}.chalkboard-study{display:block;width:100%;height:auto;max-width:none}

#discovery.recipe-discovery{width:min(950px,94vw,calc(94dvh - 54px));max-width:950px;max-height:94dvh;overflow:auto;background:#ef88a5}.recipe-discovery #discovery-title,.recipe-discovery .reader-bar .eyebrow{display:none}.recipe-discovery .reader-bar{position:sticky;top:0;z-index:1;height:42px;justify-content:flex-end;border:0;background:#ef88a5}.recipe-discovery .discovery-body{padding:0 12px 12px}.gesha-recipe{display:block;width:100%;height:auto}

/* The hand grinder sits in front of the gooseneck on the counter. */
.cabin-page #coffee-grinder{z-index:3}
