:root{font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:#fff5df;background:#1c2920;color-scheme:dark}*{box-sizing:border-box}body{margin:0;overflow:hidden}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible{outline:2px solid #f5cf8a;outline-offset:4px}#experience,#viewport,.wash{position:fixed;inset:0}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}canvas:active{cursor:grabbing}.wash{pointer-events:none;background:linear-gradient(180deg,#131b14ae,transparent 36%,transparent 61%,#161d15bc),linear-gradient(90deg,#16211a65,transparent 55%)}.top{position:absolute;inset:0 0 auto;display:flex;justify-content:space-between;align-items:center;padding:26px 38px;pointer-events:none}.brand,.top-controls{display:flex;align-items:center;gap:12px}.brand strong{display:block;font-size:15px;letter-spacing:.16em}.brand small{display:block;font:9px Georgia,serif;letter-spacing:.22em;margin-top:4px;color:#e2d1aa}.seal{width:40px;height:40px;display:grid;place-items:center;background:#9f502d;border:1px solid #d48956;border-radius:8px;font:23px serif}.top button,.close{pointer-events:auto;background:#273328c9;border:1px solid #e1d1a94d;border-radius:30px;padding:9px 13px;font-size:13px;min-height:38px}.top button:hover,.top button[aria-pressed=true]{background:#516047}.top #help{width:39px}.title{position:absolute;top:19%;left:6%;pointer-events:none;text-shadow:0 2px 22px #121c17}.eyebrow{font-size:11px;color:#f5d49a;letter-spacing:.24em}.eyebrow span{width:26px;border-top:1px solid currentColor;display:inline-block;vertical-align:middle;margin-right:7px}.title h1{font-family:"Songti SC","Noto Serif CJK SC",serif;font-weight:600;font-size:clamp(40px,6vw,88px);letter-spacing:.12em;margin:11px 0}.title p{font-size:14px;letter-spacing:.15em;margin:0;color:#fff0d4}.location{position:absolute;bottom:45px;left:38px;font-size:12px;letter-spacing:.14em;display:flex;align-items:center;gap:8px;color:#efe1c4;pointer-events:none}.location i{width:7px;height:7px;background:#c2cf93;border-radius:50%;box-shadow:0 0 12px #e4ecab}.dock{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:grid;justify-items:center;gap:12px;white-space:nowrap}.status{font-size:13px;text-shadow:0 1px 5px #0a100b;color:#fff2d8}.dock nav{display:flex;gap:5px;padding:6px;border-radius:18px;background:#222e24eb;border:1px solid #dcc99c55;box-shadow:0 12px 40px #10181170}.dock button{display:flex;align-items:center;gap:8px;border:1px solid transparent;background:transparent;border-radius:12px;padding:10px 13px;font-size:14px}.dock button:hover,.dock button[aria-pressed=true]{background:#45543b;border-color:#71815a}.dock button:disabled{opacity:.52;cursor:default}.dock svg{width:19px;height:19px;fill:none;stroke:#eac788;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}kbd{font:10px system-ui;border:1px solid #d0bf9344;border-radius:4px;min-width:16px;text-align:center;color:#d9d0b6}.foot{color:#e1d2b5;font-size:10px;letter-spacing:.1em}.foot b{padding:0 4px}.loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:16px 22px;background:#233126;border:1px solid #b6a47b;border-radius:12px;text-align:center;max-width:85vw}.loading[hidden]{display:none}dialog{width:min(420px,90vw);background:#253326;color:#fff3db;border:1px solid #a4936b;border-radius:18px;padding:25px 28px}dialog::backdrop{background:#102016bc}dialog h2{font:600 29px serif;margin:12px 0}dialog p{line-height:1.8;font-size:14px;color:#ebdfc6}.close{float:right}.accept{background:#b38852;color:#1d251b;border:0;padding:9px 16px;border-radius:8px;margin-top:6px;font-weight:700}@media(max-width:700px){.top{padding:17px 17px}.title{top:14%;left:6%}.title h1{font-size:42px}.title p{font-size:12px}.location{display:none}.dock{gap:9px;bottom:max(19px,env(safe-area-inset-bottom))}.dock button{padding:11px 12px;font-size:13px}.dock kbd{display:none}.foot{font-size:10px}}

.destinations{position:absolute;top:28px;left:50%;transform:translateX(-50%);display:flex;gap:4px;background:#273328d8;border:1px solid #e1d1a94d;border-radius:28px;padding:4px;white-space:nowrap}
.destinations button{font-size:13px;background:transparent;border:0;border-radius:22px;padding:7px 17px;letter-spacing:.1em}.destinations button:hover,.destinations button[aria-pressed=true]{background:#64744f;color:#fff3d4}
@media(max-width:700px){.destinations{top:68px}.destinations button{padding:7px 14px}.title{top:16%}.title p{font-size:11px;letter-spacing:.08em}}

.dock #enter-hall{padding:8px 14px;background:#344336e8;border:1px solid #e1cc9d77;border-radius:25px;font-size:13px}.dock #enter-hall:hover{background:#617052}.dock #enter-hall[hidden]{display:none}

/* Compact touch targets for the expanded action bar. */
@media(max-width:700px){
  .dock nav{gap:2px;padding:5px}
  .dock nav button{min-width:53px;min-height:51px;flex-direction:column;justify-content:center;gap:4px;padding:5px 6px;font-size:10px}
  .dock nav svg{width:18px;height:18px}
}
.ritual{width:min(94vw,385px);max-height:min(88dvh,670px);overflow:auto;text-align:center;padding:17px 22px 19px;background:linear-gradient(165deg,#3a4432ed,#242e26f8 62%);border-color:#d6bd8f7f;box-shadow:0 24px 80px #080d0ad9}
.ritual::backdrop{background:#151c16a1;backdrop-filter:blur(6px)}
.ritual-header{display:flex;align-items:flex-start;justify-content:space-between;text-align:left}
.ritual-header h2{margin:5px 0 0;font-size:27px;letter-spacing:.12em}
.ritual-header .close{width:39px;height:39px;line-height:18px;font-size:21px;padding:0}
.ritual-object{display:block;width:min(100%,290px);padding:0;margin:1px auto;border:0;background:transparent;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ritual-object svg{display:block;width:100%;height:auto;pointer-events:none}
#strike{width:min(100%,280px);filter:drop-shadow(0 9px 15px #19120c80)}
#fish-mallet{transform-origin:289px 173px}
#bead-strand{width:min(67%,183px,45dvh);cursor:ns-resize;filter:drop-shadow(0 8px 12px #0f1a1270)}
.ritual .ritual-hint{margin:3px 0 12px;font-size:12px;color:#e6d8b9}
.ritual-actions{display:flex;justify-content:center;gap:8px}
.ritual-actions button{border:1px solid #d8c39474;background:#364337;border-radius:30px;padding:9px 16px;min-height:40px;font-size:13px}
.ritual-actions button:hover,.ritual-actions button[aria-pressed=true]{background:#576346}
.bead-progress{margin:0 auto 3px;color:#e9dcbf;font-variant-numeric:tabular-nums}
.bead-progress strong{font:500 30px Georgia,serif;color:#ffdf9b}
.bead-progress span{font-size:13px}
.ritual .bead-progress p{font-size:11px;margin:0;line-height:1.4}
@media(max-height:590px){#strike{width:min(100%,210px,43dvh)}#bead-strand{width:min(57%,25dvh)}.ritual{padding-block:12px}.ritual .ritual-hint{margin-bottom:6px}}
