*{box-sizing:border-box}body{margin:0;min-height:100svh;color:#f9edcf;font-family:Georgia,serif;background:#112326 center/cover fixed no-repeat}.door{background-image:linear-gradient(#0002,#0006),url(media/cabin-door-day.png)}.door.night{background-image:linear-gradient(#0002,#0006),url(media/cabin-door-night.png)}.room{background-image:linear-gradient(#0004,#0008),url(media/captain-cabin-v42.png)}.room.night{background-image:linear-gradient(#0004,#0008),url(media/captain-cabin-v42.png)}.home{display:inline-block;margin:22px;color:#fff1ce;text-shadow:0 2px 5px #000;padding:12px;background:#102223c9;border-radius:6px}.door-panel{margin:12vh auto 30px;max-width:390px;padding:28px;background:#102326e8;border:1px solid #ac8950;border-radius:8px;box-shadow:0 20px 60px #0008;transition:opacity .6s,transform .6s}.door.unlocked .door-panel{opacity:0;transform:perspective(700px) rotateY(-60deg)}h1{font-weight:400;font-size:32px}.eyebrow{font:11px system-ui;letter-spacing:.22em}p{line-height:1.6}form{display:grid;gap:12px}label{font:14px system-ui}input,button{font:16px system-ui;border-radius:5px;padding:12px;border:1px solid #b39560}input{background:#fff7e9;color:#182322;width:100%}button{cursor:pointer;background:#e0bd76;color:#162429;min-height:44px}button:disabled{opacity:.6;cursor:wait}#feedback{font:14px/1.6 system-ui;min-height:23px}.room-panel{max-width:1000px;margin:4vh auto 50px;background:#102326ed;padding:clamp(16px,4vw,40px);border:1px solid #ac8950;border-radius:8px;overflow:auto}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat-card{padding:16px;background:#ffffff0b}.stat-card small,.stat-card strong{display:block}.stat-card strong{font-size:32px;margin-top:8px}.admin-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:20px 0}table{width:100%;border-collapse:collapse;font:14px system-ui}th,td{padding:12px;text-align:left;border-bottom:1px solid #ffffff20}.admin-hint{font:13px/1.6 system-ui}@media(max-width:600px){.door-panel{margin:8vh 16px 25px}.room-panel{margin:20px 12px}.stat-cards{grid-template-columns:repeat(2,1fr)}th,td{padding:8px;font-size:12px}}@media(prefers-reduced-motion:reduce){.door-panel{transition:none}}

/* Door artwork stays complete and the lock belongs to its center. */
.door{background:#071312;overflow-x:hidden}.door.night{background:#03080b}.door-scene{min-height:calc(100svh - 100px);display:flex;align-items:center;justify-content:center;flex-direction:column;perspective:1200px}.red-door{position:relative;height:min(84svh,980px);max-width:96vw;aspect-ratio:1229/1536;transform-origin:left center;transition:transform 1.1s ease,opacity 1.1s ease}.red-door img{width:100%;height:100%;object-fit:contain;display:block}.red-door .door-night{position:absolute;inset:0;opacity:0}.night .door-night{opacity:1}.door-lock{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);width:64px;height:76px;border:2px solid #bd9651;background:linear-gradient(145deg,#f2d294,#977239);box-shadow:0 5px 22px #0009;border-radius:14px;color:#251909;display:grid;place-items:center}.door-lock svg{width:34px;height:40px;fill:none;stroke:currentColor;stroke-width:1.5}.door-lock:hover{filter:brightness(1.15)}.door-caption{font:14px system-ui;color:#e4c98a;text-align:center}.door.unlocked .red-door{transform:rotateY(-85deg);opacity:0}.door.unlocked{background:#132524 url(media/captain-cabin-v42.png) center/cover no-repeat}.door.night.unlocked{background-image:url(media/captain-cabin-v42.png)}.access-dialog{width:min(420px,calc(100vw - 28px));max-height:90svh;overflow:auto;padding:28px;background:#102326;color:#f9edcf;border:1px solid #ac8950;border-radius:10px}.access-dialog::backdrop{background:#0009;backdrop-filter:blur(3px)}.close-access{float:right;background:transparent;border:0;color:#e9ce96;font-size:24px;padding:0 8px}.access-tabs{display:flex;gap:8px;margin-bottom:22px}.access-tabs button{font-size:14px;padding:10px;flex:1;background:#203c3f;color:#f9edcf}.access-tabs button[aria-pressed=true]{background:#dfbc79;color:#102326}#registrationFields{display:grid;gap:12px}#registrationFields[hidden]{display:none}.form-note{font:12px/1.5 system-ui;margin:0;color:#d1c5aa}.door .home{position:absolute;z-index:2;margin:10px}.door-scene{min-height:100svh;padding:55px 0 15px}button:focus-visible,input:focus-visible{outline:3px solid #fcdfa2;outline-offset:3px}@media(prefers-reduced-motion:reduce){.red-door{transition:none}}

.captain-room{background:#081615;min-height:100svh}.room-heading{text-align:center;margin:8px 18px 24px}.room-heading h1{margin:10px 0}.room-heading p{margin:0;font:14px/1.6 system-ui}.room-art{position:relative;width:min(1536px,100%);margin:0 auto;aspect-ratio:16/9}.room-art img{display:block;width:100%;height:100%;object-fit:contain}.room-art .room-night{position:absolute;inset:0;opacity:0}.night .room-art .room-night{opacity:1}.desk-link{position:absolute;left:5%;top:47%;width:53%;height:45%;display:flex;align-items:center;justify-content:center;color:#ffebc7;text-decoration:none;border-radius:8px}.desk-link span{background:#112725e8;border:1px solid #d8b578;border-radius:6px;padding:12px 18px;font:14px system-ui;box-shadow:0 4px 18px #0008}.desk-link:hover{outline:0;background:transparent}.desk-link:focus-visible{outline:2px solid #f3d895;outline-offset:2px;background:transparent}@media(max-width:600px){.room-heading h1{font-size:25px}.desk-link span{font-size:11px;padding:9px}.room-heading{margin-bottom:40px}.captain-room .home{margin:10px}}

.password-visibility{background:transparent;color:#edd8af;border:0;padding:8px 0;text-decoration:underline;font-size:13px;min-height:44px}.access-dialog{overscroll-behavior:contain}.access-tabs button{min-height:44px}.room-panel table{min-width:300px}.room-heading p{padding:0 10px}html{scrollbar-gutter:stable}

.ledger-dialog{width:min(1000px,calc(100vw - 24px));max-height:88svh;overflow:auto;background:#102326f7;color:#f9edcf;border:1px solid #ac8950;border-radius:10px;padding:clamp(16px,3vw,36px);overscroll-behavior:contain}.ledger-dialog::backdrop{background:#0009;backdrop-filter:blur(3px)}.ledger-dialog h2{font-weight:400;font-size:30px}.ledger-dialog table{min-width:310px}.ledger-dialog .admin-dashboard{clear:both}

.room-heading,.door-caption,.home,.desk-link span{text-shadow:0 1px 1px #000,0 -1px 1px #000,1px 0 1px #000,-1px 0 1px #000,0 3px 5px #000,0 0 12px #000}.home,.desk-link span{background:transparent;border:0;box-shadow:none}.home:focus-visible{outline:2px solid #ffe2a4}

/* V15: interact with the padlock already painted on the approved door. */
.door-lock{left:50.2%;top:55.5%;width:14%;height:14%;min-width:44px;min-height:44px;background:transparent;border:0;border-radius:10px;box-shadow:none;color:transparent}.door-lock svg{display:none}.door-lock:hover{background:#ffd78215;box-shadow:0 0 22px #e9bf7044}.door-lock:focus-visible{outline:3px solid #ffe6a5;outline-offset:4px}
