@charset "UTF-8";
:root{color-scheme:dark;--bg:#10171a;--panel:#192327;--panel2:#202c30;--line:#3a4547;--gold:#e7bb70;--muted:#b1b8b4;--text:#f2eee4;--cyan:#81d6d1;--red:#ec8a7b;--R:#e78c7d;--Y:#e9c578;--G:#9dc997;--B:#8dcfdc;--N:#b4bcba;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #697371;background:#293538;color:var(--text);border-radius:5px;padding:.7rem 1rem;transition:background .15s,transform .15s}button:hover{background:#3a494b}button:active{transform:translateY(1px)}button:disabled{opacity:.42;cursor:not-allowed}button.primary{background:var(--gold);color:#182024;border-color:var(--gold);font-weight:700}button.primary:hover{background:#f3cd8b}button.ghost{border-color:var(--line);background:transparent}button.danger{color:#ffb5a9;border-color:#9a655c}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}input,select{border:1px solid #627171;background:#111a1e;color:var(--text);border-radius:5px;padding:.65rem .75rem;min-width:0}input[type=checkbox]{accent-color:var(--gold)}input[type=number]{width:100%}h1,h2,h3,p{margin-top:0}h1{font-family:"Noto Serif SC","SimSun",serif;font-size:2.7rem;letter-spacing:.12em;line-height:1.4}h2{font-size:1.35rem}h3{font-size:1rem}p{line-height:1.7}.muted,small{color:var(--muted)}small{font-size:.85rem}.eyebrow{font-size:.8rem;letter-spacing:.19em;color:var(--gold);margin-bottom:.75rem}.row{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.between{justify-content:space-between}.start{max-width:1320px;margin:4vh auto;padding:1.4rem;display:grid;grid-template-columns:1.05fr 1fr;gap:0;min-height:85vh}.start-art{position:relative;background:linear-gradient(0deg,rgba(11,19,22,.98),transparent 80%),url('assets/temple-hourglass.png') center/cover;border:1px solid #454844;border-right:0;border-radius:12px 0 0 12px;display:flex;align-items:flex-end;padding:2.5rem}.start-art h1{font-size:3.1rem}.start-art p{max-width:28rem;color:#d6d5cd}.start-art .art-credit{font-size:.75rem;opacity:.65}.start-controls{border:1px solid #454844;border-radius:0 12px 12px 0;background:var(--panel);padding:2.2rem;display:flex;flex-direction:column;justify-content:center;gap:1.2rem}.start-controls h2{margin:0}.settings{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.settings label{display:flex;flex-direction:column;gap:.5rem;font-size:.9rem}.settings .full{grid-column:1/-1}.check{flex-direction:row!important;align-items:center}.start-controls details{border-top:1px solid var(--line);padding-top:1rem}summary{cursor:pointer;color:var(--gold);padding:.3rem 0}.instructions{font-size:.9rem;line-height:1.8}.instructions p{margin:.75rem 0}.start-actions{display:grid;gap:.7rem}.start-actions .primary{padding:1rem}.brandbar{padding:1rem 2rem;border-bottom:1px solid var(--line);display:flex;gap:1rem;justify-content:space-between;align-items:center;background:#141e21}.brand{color:var(--gold);font-family:SimSun,serif;font-size:1.35rem;letter-spacing:.12em}.brandbar small{margin-left:1rem}.game{max-width:1540px;margin:auto;padding:1.5rem 2rem 2rem}.hud{display:grid;grid-template-columns:1.4fr repeat(3,1fr);border:1px solid var(--line);border-radius:8px;margin-bottom:1.2rem;background:var(--panel)}.stat{padding:1rem 1.3rem;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat label{display:block;color:var(--muted);font-size:.85rem;margin-bottom:.35rem}.stat strong{font-family:Consolas,monospace;font-size:1.8rem;color:var(--gold);font-weight:500;font-variant-numeric:tabular-nums}.stat em{font-size:.85rem;font-style:normal;color:var(--muted);margin-left:.7rem}.timer-track{height:3px;background:#354242;margin-top:.65rem}.timer-track div{height:100%;background:var(--gold);transition:width .2s}.low strong{color:#ff8c79}.low .timer-track div{background:#ff8c79}.board{display:grid;grid-template-columns:minmax(340px,.95fr) minmax(420px,1.35fr);gap:1.4rem}.map-panel,.room-panel,.team-panel{background:var(--panel);border:1px solid var(--line);border-radius:9px;overflow:hidden}.panelhead{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 1.25rem;border-bottom:1px solid var(--line);gap:1rem}.panelhead h2{font-size:1rem;margin:0}.mapwrap{padding:1.5rem;overflow:auto;max-height:560px}.map{display:grid;gap:8px;min-width:300px;position:relative}.cell{position:relative;aspect-ratio:1;padding:0;background:#141c20;border:1px solid #344247;min-width:0;border-radius:4px;color:#626f71;font-size:.85rem}.cell.open{background:#2b3839;color:var(--N);border-color:#738484}.cell.frontier{border-style:dashed;color:#94a3a2;background:#1e2a2f}.cell.hub{background:#51442b;border-color:#998359;color:#f0d69d}.cell.me{outline:2px solid #fff4d5;outline-offset:2px;box-shadow:0 0 17px #e2b86148;color:#fff;font-weight:bold}.cell.complete{background:#253c39}.cell .link{position:absolute;background:#71827f;z-index:2;pointer-events:none}.cell .link.right{height:2px;width:10px;right:-10px;top:50%}.cell .link.down{height:10px;width:2px;bottom:-10px;left:50%}.cell .pin{position:absolute;right:2px;top:0;color:var(--gold)}.cell .peer{position:absolute;bottom:1px;left:2px;color:var(--cyan);font-size:.7rem}.legend{display:flex;gap:1rem;flex-wrap:wrap;padding:0 1.25rem 1.2rem;color:var(--muted);font-size:.8rem}.legend span::before{content:'■';margin-right:.4rem}.legend .you{color:var(--gold)}.nav{border-top:1px solid var(--line);padding:1.2rem;display:grid;grid-template-columns:140px 1fr;gap:1rem;align-items:center}.dpad{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.dpad button{padding:.55rem 0}.dpad button:first-child{grid-column:2}.dpad button:nth-child(2){grid-row:2}.dpad button:nth-child(3){grid-row:2}.dpad button:nth-child(4){grid-row:2}.nav-note{font-size:.8rem;color:var(--muted);line-height:1.8}.vault-row{display:flex;gap:.5rem;padding:1rem 1.25rem;border-top:1px solid var(--line);flex-wrap:wrap}.key{font-size:.8rem;padding:.35rem .55rem;border:1px solid var(--line);border-radius:4px;opacity:.4}.key.owned{opacity:1;border-color:currentColor}.room-banner{padding:1.6rem 1.5rem;background:linear-gradient(90deg,#182427ee,#1a262cbf),url('assets/temple-hourglass.png') center 45%/cover;border-bottom:1px solid var(--line)}.room-banner h2{font-family:SimSun,serif;font-size:1.8rem;margin-bottom:.55rem}.room-banner p{margin:0;font-size:.9rem;color:#c4ccc8}.room-content{padding:1.3rem 1.5rem}.hub-actions{display:flex;gap:.7rem;padding:1rem 1.5rem;background:#24302e;border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center}.hub-actions input{width:70px}.hub-actions small{flex-basis:100%;font-size:.8rem}.question-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:1.3rem}.question-tabs button{font-size:.8rem;padding:.45rem;min-width:33px;border-color:var(--line)}.question-tabs button.active{border-color:var(--gold);color:var(--gold);background:#453c2b}.question-tabs button.correct{color:#9dd8ba;background:#25453e}.question-tabs button.wrong{color:#ef9f91}.qtext{font-size:1.55rem;font-family:Consolas,"Microsoft YaHei",sans-serif;line-height:1.7;white-space:pre-line;margin:1.2rem 0}.qmeta{display:flex;gap:1rem;font-size:.8rem;color:var(--muted)}.qgrid{border-collapse:collapse;margin:1rem 0;width:100%;max-width:420px}.qgrid td{border:1px solid #637170;text-align:center;padding:.5rem;font-family:Consolas,monospace}.answerform{margin:1.5rem 0 .8rem}.answer-fields{display:flex;gap:.6rem;margin-bottom:.7rem}.answer-fields label{flex:1;min-width:0;font-size:.8rem;color:var(--muted)}.answer-fields input{width:100%;font-family:Consolas,monospace;font-size:1.3rem;display:block;margin-top:.4rem}.feedback{min-height:1.7rem;font-size:.9rem;color:var(--gold)}.question-hint{border-top:1px solid var(--line);padding-top:1rem;margin-top:1.3rem;color:var(--muted);font-size:.8rem;line-height:1.7}.room-content > .empty{padding:2rem 0}.log{margin-top:1.1rem;color:var(--muted);font-size:.8rem;line-height:1.8;max-height:100px;overflow:auto}.log p{margin:.25rem 0}.footer-note{font-size:.75rem;color:#95a3a0;margin-top:1rem}.team-panel{margin-top:1.4rem;padding:1.25rem}.team-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.3rem}.players{display:grid;gap:.5rem}.playerline{padding:.65rem;background:#243134;font-size:.85rem;border-radius:4px}.chatlog{height:150px;overflow:auto;background:#121e22;padding:.75rem;font-size:.85rem;line-height:1.7}.chatlog p{margin:.2rem 0;overflow-wrap:anywhere}.chat-form{display:flex;gap:.5rem;margin-top:.65rem}.chat-form input{flex:1;width:0}.roomcode{font:2.3rem Consolas,monospace;letter-spacing:.2em;color:var(--gold)}.lobby{max-width:680px;margin:8vh auto;padding:2rem;background:var(--panel);border:1px solid var(--line);border-radius:9px}.result{text-align:center;padding:2rem}.result .finalscore{font:3.5rem Consolas,monospace;color:var(--gold)}.machine{background:#111d21;padding:1rem;border:1px solid var(--line);border-radius:4px;margin:1rem 0}.machine input{width:28%;margin-right:3%}.machine output{display:block;color:var(--cyan);padding-top:.7rem}.cover{position:fixed;inset:0;background:#0c141af5;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:20;padding:2rem}.cover h2{font:2rem SimSun,serif}.cover button{margin:.5rem}dialog{max-width:540px;width:calc(100% - 2rem);background:var(--panel);color:var(--text);border:1px solid #6b756e;border-radius:10px;padding:2rem}dialog::backdrop{background:#061016cc}dialog h2{color:var(--gold)}dialog p{color:#d0d6ce}dialog .row{justify-content:flex-end;margin-top:1.3rem}#toast{position:fixed;bottom:1.3rem;left:50%;transform:translateX(-50%);z-index:40;background:#e7bb70;color:#182024;max-width:calc(100% - 2rem);border-radius:6px;padding:.8rem 1.2rem;box-shadow:0 5px 30px #0008;display:none;font-size:.9rem}.hidden{display:none!important}a{color:var(--cyan)}.net-note{font-size:.8rem;line-height:1.6;color:var(--muted)}
@media(max-width:1000px){.game{padding:1rem}.brandbar{padding:1rem}.board{grid-template-columns:minmax(280px,.9fr) minmax(320px,1.2fr)}.mapwrap{padding:1rem}.nav{grid-template-columns:115px 1fr;padding:1rem}.start{padding:1rem}.start-art,.start-controls{padding:1.6rem}.start-art h1{font-size:2.5rem}}
@media(max-width:720px){.start{display:flex;flex-direction:column;margin:0;padding:0;min-height:100vh}.start-art{border-radius:0;min-height:260px;padding:1.5rem;background-position:center 42%;border:0}.start-art h1{font-size:2rem;margin-bottom:.4rem}.start-art p{font-size:.9rem;margin-bottom:0}.start-art .art-credit{display:none}.start-controls{border-radius:0;padding:1.5rem;border:0}.brandbar small{display:none}.brandbar .brand{font-size:1rem}.brandbar button{padding:.5rem}.board{display:flex;flex-direction:column}.hud{grid-template-columns:repeat(4,1fr)}.stat{padding:.7rem .6rem}.stat strong{font-size:1.35rem}.stat label{font-size:.75rem}.stat em{font-size:.75rem;display:block;margin:0}.map-panel{order:1}.room-panel{order:0}.mapwrap{max-height:400px}.map{min-width:280px;max-width:450px;margin:auto}.nav{grid-template-columns:140px 1fr}.room-banner{padding:1.1rem}.room-banner h2{font-size:1.5rem}.room-content{padding:1.1rem}.qtext{font-size:1.35rem}.team-grid{grid-template-columns:1fr}.lobby{margin:1rem;padding:1.5rem}.game{padding:.7rem}.hud{margin-bottom:.8rem}.question-tabs{gap:4px}.question-tabs button{min-width:29px}.hub-actions{padding:1rem}.stat .timer-track{margin-top:.4rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.mobile-nav{display:none}@media(max-width:720px){.game{padding-bottom:90px}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:12;justify-content:center;align-items:center;gap:.7rem;padding:.7rem;padding-bottom:max(.7rem,env(safe-area-inset-bottom));background:#152328f5;border-top:1px solid #566764;backdrop-filter:blur(10px)}.mobile-nav button{min-width:52px;min-height:45px;padding:.5rem}.mobile-nav small{margin-right:.4rem}}

/* A single chamber replaces the map; no remote room or coordinate is rendered. */
[hidden]{display:none!important}.view-panel{background:var(--panel);border:1px solid var(--line);border-radius:9px;overflow:hidden;align-self:start}.board{grid-template-columns:minmax(300px,.85fr) minmax(380px,1.35fr)}
.chamber{position:relative;padding:1.2rem;background:radial-gradient(ellipse at 50% 55%,#75603a36,transparent 62%),linear-gradient(90deg,#080f1499,#080f1477),url('assets/temple-hourglass.png') center/cover;border-bottom:1px solid var(--line)}.chamber::before{content:'';position:absolute;inset:1rem;border:1px solid #d1b77c35;pointer-events:none}.chamber-light{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 55%,var(--room-color),transparent 70%);opacity:.1;pointer-events:none}.compass{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:76px 105px 76px;gap:.7rem;position:relative;align-items:center;justify-items:stretch;max-width:440px;margin:auto}.compass [data-dir=w]{grid-column:2;grid-row:1}.compass [data-dir=a]{grid-column:1;grid-row:2}.compass [data-dir=s]{grid-column:2;grid-row:3}.compass [data-dir=d]{grid-column:3;grid-row:2}.passage{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .25rem;min-height:64px;font-size:.8rem;position:relative}.passage.available{background:#1c3034ee;border-color:#ad965e;color:#f1dca6;box-shadow:0 0 20px #e7bb7014}.passage.wall{background:#172023cc;color:#939c9c;border-style:dashed;opacity:.5}.passage b{font:1.3rem system-ui}.passage kbd{font:.7rem Consolas,monospace;position:absolute;top:.3rem;right:.4rem;opacity:.6}.chamber-center{grid-column:2;grid-row:2;display:flex;flex-direction:column;align-items:center;gap:.3rem}.chamber-icon{font-size:2.7rem;color:var(--room-color);text-shadow:0 0 30px #e7bb7099}.central .chamber-icon{color:var(--gold)}.chamber-center small{font-size:.75rem}.view-panel .nav-note{padding:.9rem 1.2rem}.occupants{padding:1rem 1.2rem;border-bottom:1px solid var(--line)}.occupant-list{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.6rem}.occupant{display:inline-flex;gap:.5rem;align-items:center;border:1px solid #466266;border-radius:30px;padding:.25rem .8rem .25rem .25rem;font-size:.85rem;background:#243b3c}.occupant.self{border-color:#92774c;background:#3d3427}.avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#577877;color:white}.self .avatar{background:#91784b}.sand-alarm{position:sticky;top:0;z-index:14;padding:.85rem 1rem;margin-bottom:1rem;border:1px solid #ef9a76;border-radius:6px;color:#ffddd0;background:#632d23;box-shadow:0 0 24px #e2543733;font-weight:bold;animation:alarmPulse 1.5s ease-in-out infinite}.qmeta:empty{display:none}.question-tabs button{min-width:38px;min-height:38px}.room-panel{min-width:0}.qtext{overflow-wrap:anywhere}#roomFade{position:fixed;inset:0;background:#000;z-index:90;opacity:0;pointer-events:none;transition:opacity .18s linear}#roomFade.active{pointer-events:auto}#roomFade.active::after{content:'穿过通道';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#b5a583;font-size:.85rem;letter-spacing:.4em}
@keyframes alarmPulse{50%{box-shadow:0 0 20px #df684a77}}#gameKeypad{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,520px);z-index:50;background:#162329;border:1px solid #566967;border-radius:14px 14px 0 0;padding:.55rem .8rem max(.6rem,env(safe-area-inset-bottom));box-shadow:0 -12px 50px #0009;touch-action:manipulation}.keypad-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.85rem;gap:1rem}.keypad-top button{font-size:.8rem;padding:.3rem .7rem}#keypadValue{display:block;height:36px;font:1.4rem Consolas,monospace;text-align:right;padding:.3rem .5rem;overflow:hidden;color:var(--gold);white-space:nowrap}.keypad-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.keypad-keys button{min-height:44px;padding:.4rem;font-size:1.1rem;touch-action:manipulation}.keypad-next,.keypad-enter{grid-column:span 2}.pad-open .mobile-nav{display:none}.pad-open .game,.pad-open .lobby,.pad-open .start{padding-bottom:370px}body.pad-open{scroll-padding-bottom:370px}.pad-open #toast{bottom:350px}
@media(max-width:720px){.board{display:flex;flex-direction:column;gap:.8rem}.view-panel{order:0;width:100%}.room-panel{order:1}.compass{grid-template-rows:58px 72px 58px;gap:.4rem;max-width:330px}.chamber{padding:.8rem}.passage{min-height:54px;font-size:.75rem;padding:.3rem}.chamber-icon{font-size:2rem}.occupants{padding:.7rem 1rem}.view-panel .nav-note{padding:.6rem 1rem}.vault-row{padding:.6rem 1rem}.panelhead{padding:.7rem 1rem}.question-tabs{flex-wrap:nowrap;overflow-x:auto;padding:.2rem 0 .5rem;scrollbar-width:thin}.question-tabs button{min-width:42px;min-height:44px;flex-shrink:0}.brandbar{flex-wrap:wrap;gap:.5rem}.brandbar .row{gap:.4rem}.brandbar button{min-height:40px;font-size:.8rem}.mobile-nav{gap:.5rem}.mobile-nav .passage{min-width:64px;min-height:52px}.mobile-nav .passage span{font-size:.7rem}.mobile-nav .passage b{font-size:1rem}.stat{padding:.65rem .45rem}.stat label{font-size:.68rem}.stat em{font-size:.68rem;line-height:1.5}.stat strong{font-size:1.25rem}.team-panel{padding:1rem}.team-panel h2{font-size:1.1rem}.game{padding-bottom:100px}.lobby input{font-size:16px}.room-banner .eyebrow{font-size:.65rem}.qgrid td{padding:.35rem}.sand-alarm{font-size:.8rem}.room-banner{padding:.85rem 1rem}.room-banner h2{font-size:1.3rem}.room-banner p{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){.sand-alarm{animation:none}}

/* Corridor colour belongs to the current room, never to a remote player's location. */
body{--route-rgb:176 153 108;background:radial-gradient(ellipse at 4% 40%,rgb(var(--route-rgb)/.15),transparent 58%),radial-gradient(ellipse at 100% 80%,rgb(var(--route-rgb)/.1),transparent 55%),#10171a;background-attachment:fixed}
body[data-corridor=R]{--route-rgb:230 83 78}body[data-corridor=Y]{--route-rgb:234 186 61}body[data-corridor=G]{--route-rgb:68 188 134}body[data-corridor=B]{--route-rgb:64 173 225}
.room-banner{background:radial-gradient(ellipse at 90% 15%,rgb(var(--route-rgb)/.46),transparent 80%),linear-gradient(90deg,#152023eb,#152023c9),url('assets/temple-hourglass.png') center 45%/cover;border-top:3px solid rgb(var(--route-rgb)/.8)}
.view-panel,.room-panel{border-color:rgb(var(--route-rgb)/.34);box-shadow:0 10px 60px rgb(var(--route-rgb)/.07)}.chamber-light{opacity:.3}.view-panel .panelhead{background:linear-gradient(105deg,rgb(var(--route-rgb)/.15),transparent)}.room-panel .room-content{background:linear-gradient(145deg,rgb(var(--route-rgb)/.07),transparent 55%)}.passage.available{border-color:rgb(var(--route-rgb)/.85)}
#lootNotice{position:fixed;left:50%;top:43%;transform:translate(-50%,-50%);z-index:80;pointer-events:none;opacity:0;width:max-content;max-width:calc(100vw - 2rem);padding:1.1rem 2.4rem;border:1px solid #e7bb7088;border-radius:12px;background:linear-gradient(145deg,#233336f2,#151e22f5);text-align:center;box-shadow:0 12px 60px #0009,0 0 40px #e7bb7022;backdrop-filter:blur(8px)}#lootNotice.show{animation:lootArrival 2s ease forwards}#lootNotice small{display:block;font-size:.75rem;letter-spacing:.28em;margin-bottom:.55rem;color:#e4d9b7}.loot-coins{font-size:1.65rem;font-weight:bold;color:#f3ce7e;line-height:1.5}.loot-item{font-size:1.05rem;color:#d9eee1;line-height:1.65}
@keyframes lootArrival{0%{opacity:0;transform:translate(-50%,calc(-50% + 15px)) scale(.96)}12%,78%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,calc(-50% - 18px)) scale(1)}}
.music-volume{display:flex;align-items:center;gap:.3rem;font-size:1.1rem;color:var(--gold)}.music-volume input{width:68px;min-width:0;padding:0;accent-color:var(--gold)}.team-banked{color:var(--gold)}.team-banked b{font-size:1.5rem}.brandbar .row{gap:.5rem}
@media(max-width:720px){.brandbar{align-items:flex-start}.brandbar>.row{width:100%;justify-content:flex-start;gap:.35rem}.brandbar>.row button{font-size:.75rem;padding:.45rem .55rem;min-height:36px}.music-volume input{width:55px}#lootNotice{padding:.9rem 1.8rem;top:40%}.loot-coins{font-size:1.4rem}.loot-item{font-size:.95rem}}
@media(prefers-reduced-motion:reduce){#lootNotice.show{animation:none;opacity:1}}

.sand-card-bar{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.8rem 1rem;margin-bottom:1rem;background:linear-gradient(100deg,#283e3c,#192c32);border:1px solid #587e77;border-radius:8px;color:#cee5dc;font-size:.9rem}.sand-card-bar strong{font-size:1.2rem;margin:0 .35rem;color:var(--gold)}.sand-card-bar button{padding:.5rem .8rem;color:#e8ddae;border-color:#a08e59}.card-active{color:#9ad8bb;font-size:.8rem}.remote-sand{background:#263d36}.team-grid.roster-only{grid-template-columns:1fr}.roster-only .players{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
#teamChat{max-width:1476px;margin:0 auto 2rem;padding:1.25rem;background:var(--panel);border:1px solid var(--line);border-radius:9px}#teamChat h2{font-size:1.05rem}#teamChat input{font-size:16px}#teamChat .chatlog{height:160px;overflow-anchor:none}#connectionStatus{position:fixed;top:.6rem;left:50%;transform:translateX(-50%);z-index:100;max-width:calc(100% - 1rem);padding:.7rem 1.2rem;border-radius:8px;color:#fff0cb;background:#594729f5;border:1px solid #b5995f;box-shadow:0 6px 25px #0007;font-size:.9rem}
@media(max-width:1540px){#teamChat{margin-left:2rem;margin-right:2rem}}
@media(max-width:720px){#teamChat{margin:0 .7rem 100px;padding:1rem}.sand-card-bar{font-size:.8rem;padding:.65rem .75rem}.sand-card-bar button{min-height:40px}.roster-only .players{grid-template-columns:1fr}body:has(#teamChat:not([hidden])) .game{padding-bottom:1rem}body.pad-open:has(#teamChat:not([hidden])) .game{padding-bottom:370px}}
/* Shared markings and directional cues. */
.mark-panel{padding:.8rem 1rem;margin:0 0 1rem;border:1px solid var(--line);border-radius:8px;background:#17282ac9;font-size:.9rem}.mark-panel strong{color:var(--gold)}.mark-panel details{margin-top:.65rem}.mark-panel summary{cursor:pointer;color:var(--muted);padding:.35rem 0}.mark-list{display:grid;gap:.5rem;padding-top:.5rem}.mark-entry{display:flex;justify-content:space-between;align-items:center;gap:1rem}.mark-entry>span{overflow-wrap:anywhere;min-width:0}.mark-entry button{font-size:.8rem;flex-shrink:0}.navigation-guide{display:flex;align-items:center;gap:.7rem;margin-top:.75rem;padding:.65rem;background:#6fd2bf12;border-left:3px solid var(--cyan)}.navigation-guide>b{font-size:1.8rem;color:var(--cyan)}.navigation-guide>span{flex:1;overflow-wrap:anywhere}.navigation-guide button{font-size:.8rem}.mark-arrival{margin:.75rem 0 0;color:var(--cyan)}#markName{display:block;width:100%;margin:.5rem 0 1rem}.passage.vault-glow{border-color:var(--vault-glow);box-shadow:0 0 26px 5px color-mix(in srgb,var(--vault-glow) 50%,transparent),inset 0 0 24px color-mix(in srgb,var(--vault-glow) 30%,transparent);background:radial-gradient(ellipse at center,var(--vault-glow) -180%,#17282bf0 100%)}.passage.vault-glow::before{content:'';position:absolute;inset:-16px;pointer-events:none;background:radial-gradient(ellipse,var(--vault-glow),transparent 70%);opacity:.16}.passage.nav-guided{outline:2px solid var(--cyan);outline-offset:3px}.route-cue{font-size:.65rem;font-style:normal;color:var(--cyan);position:absolute;bottom:-.6rem;background:#153235;padding:0 .35rem;border-radius:3px;z-index:1}
/* Notices live outside game/chat renders and never capture touches. */
#noticeDock{display:contents;pointer-events:none}#lootNotice{background:linear-gradient(145deg,#23333685,#151e2285);backdrop-filter:blur(2px);box-shadow:0 8px 32px #0003}#messageNotice{position:fixed;top:23%;left:50%;transform:translateX(-50%);width:max-content;max-width:min(560px,calc(100vw - 2rem));padding:.8rem 1.1rem;z-index:81;border:1px solid #9bc8bf66;border-radius:10px;background:#15303780;backdrop-filter:blur(2px);pointer-events:none;opacity:0;text-shadow:0 1px 3px #000;overflow-wrap:anywhere}#messageNotice b{display:block;color:#b4e8da;font-size:.85rem;margin-bottom:.25rem}#messageNotice span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5}#messageNotice.show{animation:messageArrival 2s ease forwards}@keyframes messageArrival{0%,100%{opacity:0}12%,80%{opacity:.88}}
/* The review cursor is separate from all player positions and inventories. */
.review{max-width:1500px;padding:1.5rem;margin:auto}.review-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,1fr);gap:1.5rem;align-items:start}.review-map-panel,.review-room{background:#142328db;border:1px solid var(--line);border-radius:10px;min-width:0;padding:1rem}.review-legend{display:flex;flex-wrap:wrap;gap:.8rem;color:var(--muted);font-size:.8rem;margin-bottom:.8rem}.review-scroll{max-height:70vh;overflow:auto;overscroll-behavior:contain}.review-map{display:grid;grid-template-columns:repeat(var(--cols),60px);grid-auto-rows:60px;position:relative;margin:auto}.review-map svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;stroke:#a5aaa1;stroke-width:3}.review-cell{position:relative;width:46px;height:46px;margin:7px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--cell-color);color:var(--cell-color);background:#1d2a2d;border-radius:5px}.review-cell span{font-size:1.2rem;line-height:1.15}.review-cell small{font-size:.55rem;color:inherit;opacity:.8}.review-cell.selected{outline:3px solid #fff;outline-offset:1px;background:#526363}.review-cell.hall{background:#50422e;color:var(--gold)}.review-cell i{position:absolute;top:-6px;right:-5px;font-style:normal;color:#fff;background:#233f43;border-radius:20px;font-size:.7rem}.review-directions{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0}.review-directions button{min-width:55px;min-height:44px}.review-questions article{border-top:1px solid var(--line);padding:1rem 0}.review-questions article p{margin:.7rem 0;overflow-wrap:anywhere}.review-questions details{color:var(--muted);font-size:.85rem}.review-questions summary{cursor:pointer}.review-questions .qgrid{max-width:100%}.result #previewMap{margin:.5rem}
@media(max-width:720px){.mark-panel{font-size:.8rem;padding:.7rem}.mark-panel button{min-height:42px;padding:.5rem .65rem}.navigation-guide{gap:.4rem}.navigation-guide button{font-size:.7rem}.mark-entry{gap:.4rem}#noticeDock{display:flex;position:fixed;top:max(.45rem,env(safe-area-inset-top));left:.65rem;right:.65rem;z-index:100;flex-direction:column;align-items:center;gap:.35rem}#noticeDock>#lootNotice,#noticeDock>#messageNotice{display:none;position:static;transform:none;max-width:100%;width:100%;padding:.5rem .8rem;box-shadow:0 3px 15px #0002;background:#13282f73;border-color:#c5d8c14d;backdrop-filter:blur(1px)}#noticeDock>#lootNotice.show{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.2rem .85rem;animation:messageArrival 2s ease forwards}#noticeDock>#messageNotice.show{display:block}#lootNotice small{display:none}.loot-coins,.loot-item{font-size:.95rem;line-height:1.4}#messageNotice b{font-size:.75rem;margin:0}#messageNotice span{font-size:.85rem;-webkit-line-clamp:2}.review{padding:.7rem}.review-layout{grid-template-columns:minmax(0,1fr);gap:.8rem}.review-scroll{max-height:45vh}.review-map-panel,.review-room{padding:.8rem}.review-questions .qgrid td{padding:.2rem}.review>p{font-size:.85rem}}
@media(prefers-reduced-motion:reduce){#messageNotice.show,#noticeDock>#lootNotice.show{animation:none;opacity:.88}}
/* Frozen expedition frame: only the room contents scroll. */
body.in-expedition{height:100dvh;min-height:0;overflow:hidden}.in-expedition #app{height:100%;min-height:0}.expedition-shell{height:100%;display:flex;flex-direction:column;overflow:hidden}.expedition-shell .brandbar{flex-shrink:0;padding:.5rem 1rem;min-height:48px}.expedition-toolbar{display:flex;gap:.4rem;align-items:center}.expedition-toolbar button,.game-menu summary{font-size:.8rem;padding:.45rem .65rem;min-height:36px}.game-menu{position:relative}.game-menu summary{border:1px solid var(--line);border-radius:5px;list-style:none;color:var(--text)}.menu-content{position:absolute;right:0;top:42px;z-index:61;width:220px;padding:.7rem;border:1px solid var(--line);border-radius:8px;background:#17272c;box-shadow:0 8px 25px #0009;display:grid;gap:.5rem}.menu-content .music-volume{padding:.5rem}.menu-content .music-volume input{width:140px}.frozen-status{position:relative;z-index:15;flex-shrink:0;background:#142126f5;border-bottom:1px solid #546059;padding:0 1rem}.frozen-status .hud{margin:0;border:0;border-radius:0;grid-template-columns:1.25fr repeat(4,1fr);background:transparent}.frozen-status .stat{padding:.5rem .8rem}.frozen-status .stat label{font-size:.72rem;margin:0 0 .2rem}.frozen-status .stat strong{font-size:1.45rem}.frozen-status .stat em{font-size:.7rem;margin-left:.5rem}.frozen-status .timer-track{margin-top:.15rem}.inventory-strip{display:flex;gap:1.5rem;align-items:center;flex-wrap:wrap;font-size:.75rem;padding:.25rem .8rem .5rem;color:var(--muted)}.vault-token{display:inline-block;font-style:normal;border:1px solid currentColor;border-radius:3px;padding:0 .2rem;margin-left:.15rem;opacity:.22}.vault-token.owned{opacity:1;background:#ffffff16}.expedition-shell .game{flex:1;min-height:0;max-width:1600px;width:100%;display:flex;flex-direction:column;padding:.7rem 1rem;overflow:hidden;margin:0 auto}.expedition-shell .board{flex:1;min-height:0;display:grid;grid-template-columns:270px minmax(0,1fr);gap:.8rem;overflow:hidden}.expedition-shell .view-panel{overflow:auto;align-self:start;max-height:100%}.expedition-shell .room-panel{overflow:auto;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;scroll-padding:1rem}.expedition-shell .chamber{padding:.6rem}.expedition-shell .compass{grid-template-rows:58px 65px 58px;gap:.5rem}.expedition-shell .chamber-center small{font-size:.6rem;text-align:center}.expedition-shell .chamber-icon{font-size:1.8rem}.expedition-shell .panelhead{padding:.6rem .8rem}.expedition-shell .occupants{padding:.6rem .8rem}.expedition-shell .occupant-list{gap:.3rem;margin-top:.3rem}.expedition-shell .occupant{font-size:.75rem;padding:.15rem .4rem .15rem .15rem}.expedition-shell .avatar{height:24px;width:24px}.expedition-shell .view-panel .vault-row{display:none}.expedition-shell .room-banner{padding:.65rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.expedition-shell .room-banner h2{font-size:1.2rem;margin:0}.inline-navigation{font-size:.8rem;color:var(--cyan);overflow-wrap:anywhere}.expedition-shell .hub-actions{padding:.5rem 1rem;gap:.5rem}.expedition-shell .hub-actions input{width:60px;padding:.4rem}.expedition-shell .hub-actions button{font-size:.8rem;padding:.5rem .7rem;min-height:36px}.expedition-shell .room-content{padding:.8rem 1rem}.expedition-shell .room-content h3{margin:0}.expedition-shell .question-tabs{flex-wrap:nowrap;overflow:auto;scrollbar-width:thin;margin:.6rem 0 .4rem;gap:4px;padding:2px}.expedition-shell .question-tabs button{flex-shrink:0;min-width:34px;min-height:34px;padding:.3rem}.expedition-shell .qtext{margin:.7rem 0;font-size:1.5rem;line-height:1.5}.expedition-shell .answerform{margin:.65rem 0 .4rem}.expedition-shell .question-hint{margin:.5rem 0 0;padding-top:.5rem;font-size:.72rem}.expedition-shell .feedback{min-height:1rem;font-size:.8rem}.expedition-shell .sand-alarm{flex-shrink:0;font-size:.8rem;padding:.45rem .7rem;margin-bottom:.5rem}.expedition-shell .mobile-nav{display:none}.game-drawer{position:fixed;z-index:42;top:54px;right:1rem;width:min(470px,calc(100vw - 2rem));max-height:calc(100dvh - 70px);overflow:auto;background:#15252bf7;border:1px solid #637573;box-shadow:0 15px 60px #000b;border-radius:10px;padding:1rem}.game-drawer[hidden]{display:none}.drawer-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.drawer-head h2{margin:0;font-size:1.1rem}.game-drawer .team-panel{margin:0;padding:.6rem}.game-drawer .sand-card-bar{padding:.6rem;font-size:.8rem}.game-drawer .mark-panel{margin:0}.game-drawer .roster-only .players{grid-template-columns:1fr}.game-drawer .playerline{font-size:.8rem}.game-drawer .team-panel h2{font-size:1rem}.in-expedition #teamChat{position:fixed;z-index:44;right:1rem;bottom:1rem;width:min(440px,calc(100vw - 2rem));margin:0;padding:1rem;background:#14252afa;box-shadow:0 10px 50px #000b;max-height:calc(100dvh - 60px);overflow:auto}.in-expedition #teamChat h2{margin:0;font-size:1rem}.in-expedition #teamChat .chatlog{height:min(240px,35dvh);margin-top:.6rem}.hall-feature{padding:1rem;max-width:880px;margin:auto}.hall-feature h3{font-size:1.15rem!important}.hall-feature>p{font-size:.9rem;margin:.8rem 0}.feature-sigil{font-size:2.3rem;color:var(--gold);line-height:1.2;margin-bottom:.8rem}.bank-feature{text-align:center}.bank-quote{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin:1.3rem 0}.bank-quote span{padding:.8rem .5rem;background:#caa65d0d;border:1px solid #a58b5b55;border-radius:7px;font-size:.8rem}.bank-quote b{display:block;color:var(--gold);font:1.6rem Consolas;margin-top:.4rem}.chest-stock{display:flex;flex-wrap:wrap;gap:.7rem 1rem;background:#25413788;padding:1rem;border:1px solid #62887966;border-radius:7px;font-size:.9rem}.chest-stock b{color:var(--cyan)}.chest-form{display:flex;flex-wrap:wrap;gap:.8rem;align-items:end;margin:1rem 0}.chest-form label{display:flex;flex-direction:column;gap:.4rem;font-size:.8rem}.chest-form input{max-width:90px}.chest-form label[hidden]{display:none}.chest-note{display:block;margin-top:1rem;line-height:1.6}.sense-feature .feature-sigil{color:var(--cyan)}.sense-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;margin-top:1rem}.sense-player{min-width:0;padding:1rem;border:1px solid var(--sense-color);border-radius:8px;background:linear-gradient(110deg,color-mix(in srgb,var(--sense-color) 15%,transparent),#14252a)}.sense-player .row{gap:.4rem}.sense-player span,.sense-player p,.sense-player small{font-size:.8rem}.sense-player span{color:var(--sense-color)}.sense-player p{margin:.8rem 0 .4rem}.sense-player b{overflow-wrap:anywhere}.cover{overflow:auto}.cover .result{max-height:100%;overflow:auto}
@media(max-width:1000px) and (min-width:721px){.expedition-shell .board{grid-template-columns:230px minmax(0,1fr)}.expedition-shell .compass{gap:.3rem}.sense-grid{grid-template-columns:1fr}}
@media(max-width:720px){.expedition-shell .brandbar{min-height:42px;padding:.3rem .55rem;flex-wrap:nowrap;gap:.3rem}.expedition-shell .brand{font-size:.9rem;letter-spacing:0;white-space:nowrap}.expedition-toolbar{gap:.25rem}.expedition-toolbar button,.game-menu summary{font-size:.7rem;padding:.35rem .4rem;min-height:34px}.frozen-status{padding:0 .4rem}.frozen-status .stat{padding:.3rem .35rem}.frozen-status .stat label{font-size:.62rem}.frozen-status .stat strong{font-size:1.12rem}.frozen-status .stat em{font-size:.6rem;margin:0;display:block}.inventory-strip{gap:.2rem .7rem;padding:.25rem .35rem;font-size:.65rem;justify-content:space-between}.inventory-strip>span:last-child{display:none}.expedition-shell .game{padding:.4rem .5rem 0!important;gap:.3rem}.expedition-shell .board{display:flex;flex-direction:column;gap:.35rem;overflow:hidden}.expedition-shell .view-panel{flex-shrink:0;align-self:stretch;width:100%;overflow:hidden;border:0;background:transparent}.expedition-shell .view-panel .panelhead,.expedition-shell .chamber{display:none}.expedition-shell .occupants{padding:.15rem .25rem;border:0;display:flex;align-items:center;gap:.5rem}.expedition-shell .occupants>small{font-size:.6rem}.expedition-shell .occupant-list{margin:0;flex-wrap:nowrap;overflow:auto;scrollbar-width:none}.expedition-shell .occupant{white-space:nowrap;font-size:.65rem;padding:.1rem .35rem}.expedition-shell .avatar{height:19px;width:19px;font-size:.65rem}.expedition-shell .room-panel{flex:1;width:100%;order:1}.expedition-shell .room-banner{padding:.5rem .65rem;gap:.4rem}.expedition-shell .room-banner h2{font-size:1rem}.inline-navigation{font-size:.68rem}.expedition-shell .hub-actions{padding:.35rem .65rem;gap:.4rem}.expedition-shell .hub-actions button{padding:.4rem .55rem;font-size:.7rem;min-height:34px}.expedition-shell .hub-actions input{width:48px;padding:.3rem;font-size:16px}.expedition-shell .room-content{padding:.55rem .65rem}.expedition-shell .room-content h3{font-size:.8rem}.expedition-shell .room-content>.row small{font-size:.7rem}.expedition-shell .question-tabs{margin:.4rem 0 .3rem}.expedition-shell .question-tabs button{min-height:34px;min-width:34px}.expedition-shell .qtext{font-size:1.25rem;margin:.55rem 0;line-height:1.5}.expedition-shell .answer-fields input{font-size:1.15rem;padding:.45rem;margin-top:.2rem}.expedition-shell .answer-fields{margin-bottom:.4rem}.expedition-shell .answerform button{padding:.55rem .7rem;font-size:.8rem;min-height:38px}.expedition-shell .question-hint{font-size:.65rem;line-height:1.5}.expedition-shell .mobile-nav{display:flex;position:static;transform:none;flex-shrink:0;padding:.4rem 0 max(.4rem,env(safe-area-inset-bottom));gap:.65rem;border:0;background:transparent;backdrop-filter:none}.expedition-shell .mobile-nav .passage{min-width:65px;min-height:46px;padding:.15rem .2rem}.expedition-shell .mobile-nav .passage span{font-size:.62rem}.in-expedition.pad-open .mobile-nav{display:none}.in-expedition.pad-open .expedition-shell{padding-bottom:var(--keypad-height,260px)}.in-expedition.pad-open{scroll-padding:0}.in-expedition #gameKeypad{padding:.3rem .55rem max(.3rem,env(safe-area-inset-bottom))}.in-expedition #gameKeypad .keypad-keys{gap:3px}.in-expedition #gameKeypad .keypad-keys button{min-height:35px;padding:.2rem;font-size:1rem}.in-expedition #keypadValue{height:27px;font-size:1.15rem;padding:.15rem .4rem}.in-expedition #gameKeypad .keypad-top{font-size:.7rem}.in-expedition #gameKeypad .keypad-top button{font-size:.7rem;padding:.2rem .5rem}.in-expedition #teamChat{right:.5rem;bottom:4rem;width:calc(100vw - 1rem);padding:.7rem}.in-expedition #teamChat .chat-form input{font-size:16px}.game-drawer{top:48px;right:.5rem;width:calc(100vw - 1rem);padding:.7rem;max-height:calc(100dvh - 105px)}.game-drawer .drawer-head{margin-bottom:.5rem}.game-drawer button{font-size:.8rem}.hall-feature{padding:.4rem}.hall-feature>p{font-size:.8rem}.feature-sigil{font-size:1.6rem;margin:.25rem 0 .6rem}.bank-quote{gap:.4rem;margin:.7rem 0}.bank-quote span{font-size:.7rem;padding:.6rem .2rem}.bank-quote b{font-size:1.3rem}.sense-grid{grid-template-columns:1fr;margin-top:.7rem}.sense-player{padding:.7rem}.chest-stock{padding:.7rem;font-size:.8rem}.chest-form{gap:.6rem}.chest-form select,.chest-form input{font-size:16px}.chest-form .row{gap:.5rem}.chest-form button{padding:.6rem}.chest-note{font-size:.7rem}.expedition-shell .sand-alarm{font-size:.7rem;padding:.35rem .5rem;margin:0}.in-expedition #toast{bottom:68px}.in-expedition.pad-open #toast{bottom:calc(var(--keypad-height,260px) + 5px)}}
