:root{--night: #120d0b;--vellum: #f3e9d8;--vellum-dim: #c9b9a0;--gilt: #d9a54a;--gilt-deep: #8a5f1f;--glass: rgba(24, 17, 14, .72);--line: rgba(217, 165, 74, .28);--live: #e2604f;--font-display: "Cormorant Garamond", "Iowan Old Style", Georgia, serif;--font-body: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:dark}html,body{height:100%}[hidden]{display:none!important}body{background:var(--night);color:var(--vellum);font-family:var(--font-body);font-size:15px;line-height:1.5;overflow:hidden}#stage{position:fixed;inset:0;touch-action:none;cursor:grab}#stage:active{cursor:grabbing}#stage canvas{display:block;width:100%;height:100%}.hud{position:fixed;left:0;right:0;pointer-events:none;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.hud>*{pointer-events:auto}.top{top:0;padding-top:calc(env(safe-area-inset-top,0px) + 12px);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.brand{font-family:var(--font-display);font-size:1.45rem;font-weight:600;letter-spacing:.01em;text-shadow:0 1px 12px rgba(0,0,0,.8)}.brand small{display:block;font-family:var(--font-body);font-size:.7rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt)}.chip{background:var(--glass);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.8rem;color:var(--vellum-dim);backdrop-filter:blur(8px);font-variant-numeric:tabular-nums}.chip b{color:var(--vellum);font-weight:600}.bottom{bottom:0;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 14px);display:grid;gap:10px;justify-items:center}.subs{max-width:46rem;width:100%;min-height:4.2em;text-align:center;font-family:var(--font-display);font-size:clamp(1.15rem,2.6vw,1.55rem);font-weight:500;line-height:1.35;text-wrap:balance;text-shadow:0 2px 14px rgba(0,0,0,.95),0 0 2px rgba(0,0,0,.9);display:flex;align-items:flex-end;justify-content:center}.subs .reading{font-family:var(--font-body);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gilt);display:block;margin-bottom:6px}.dock{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:8px;backdrop-filter:blur(10px);max-width:100%}button,.btn{font:inherit;font-size:.85rem;font-weight:500;color:var(--vellum);background:transparent;border:1px solid transparent;border-radius:10px;padding:8px 12px;cursor:pointer}button:hover{background:#d9a54a1f}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gilt);outline-offset:2px}button.primary{background:var(--gilt);color:#1c130a;font-weight:600}button.primary:hover{background:#e7b65c}.note{font-size:.7rem;color:var(--vellum-dim);opacity:.8;text-align:center}.panel{position:fixed;z-index:5;right:max(16px,env(safe-area-inset-right,0px));top:calc(env(safe-area-inset-top,0px) + 72px);width:min(22rem,calc(100% - 32px));background:var(--glass);border:1px solid var(--line);border-radius:16px;padding:16px 18px;backdrop-filter:blur(12px)}.panel h2,.gate h1{font-family:var(--font-display);font-weight:600;margin:0;text-wrap:balance}.panel h2{font-size:1.35rem}.slots{list-style:none;padding:0;margin:12px 0 8px;display:grid;gap:6px}.slots li{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.slots li:last-child{border-bottom:0}.slots time{font-family:var(--font-display);font-size:1.3rem;font-weight:600;color:var(--vellum)}.tag{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--vellum-dim)}.tag.live{color:var(--live);font-weight:600}.muted{color:var(--vellum-dim);font-size:.82rem;margin:4px 0 0}.gate{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 40%,#120d0b59,#120d0be0);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:24px;overflow-y:auto}.gate form{width:min(26rem,100%);background:var(--glass);border:1px solid var(--line);border-radius:20px;padding:26px 24px;display:grid;gap:14px;backdrop-filter:blur(14px)}.gate .eyebrow{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt)}.gate h1{font-size:2.3rem;line-height:1.05}.gate p{margin:0;color:var(--vellum-dim)}label{display:grid;gap:6px;font-size:.78rem;letter-spacing:.06em;color:var(--vellum-dim)}input,select{font:inherit;font-size:.95rem;color:var(--vellum);background:#00000059;border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;box-sizing:border-box}.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.nextmass{border-top:1px solid var(--line);padding-top:12px;font-size:.85rem;color:var(--vellum-dim)}.nextmass strong{color:var(--vellum);font-family:var(--font-display);font-size:1.15rem}.toast{position:fixed;z-index:6;left:50%;transform:translate(-50%);top:calc(env(safe-area-inset-top,0px) + 74px);background:var(--glass);border:1px solid var(--line);border-radius:999px;padding:8px 16px;font-size:.85rem;transition:opacity .6s;max-width:calc(100% - 32px);text-align:center}@media(max-width:560px){.brand{font-size:1.2rem}.row{grid-template-columns:1fr}button{padding:7px 9px;font-size:.8rem}}@media(prefers-reduced-motion:reduce){.toast{transition:none}}.swatches{display:grid;gap:6px;font-size:.78rem;letter-spacing:.06em;color:var(--vellum-dim)}.sw{display:flex;gap:8px;flex-wrap:wrap}.sw button{width:30px;height:30px;border-radius:50%;padding:0;border:2px solid rgba(255,255,255,.15)}.sw button[aria-pressed=true]{border-color:var(--gilt);box-shadow:0 0 0 2px #d9a54a66}.joy{position:fixed;z-index:4;left:max(18px,env(safe-area-inset-left,0px));bottom:calc(env(safe-area-inset-bottom,0px) + 150px);width:120px;height:120px;border-radius:50%;background:#18110e73;border:1px solid var(--line);touch-action:none}.joy-knob{position:absolute;left:35px;top:35px;width:50px;height:50px;border-radius:50%;background:#d9a54a8c;pointer-events:none}@media(hover:hover)and (pointer:fine){.joy{display:none!important}}@media(max-width:560px){.joy{bottom:auto;top:44%;width:104px;height:104px}.joy-knob{left:27px;top:27px}}.dock.sub{padding:4px 6px;gap:4px}.dock.sub button{font-size:.75rem;padding:5px 9px;color:var(--vellum-dim)}.panel{max-height:calc(100vh - 200px);overflow-y:auto}.beads{display:flex;align-items:center;gap:6px;margin:10px 0;flex-wrap:wrap}.beads i{width:14px;height:14px;border-radius:50%;background:#d9a54a2e;border:1px solid var(--line)}.beads i.on{background:var(--gilt)}.beads span{margin-left:6px;font-size:.8rem;color:var(--vellum-dim);font-variant-numeric:tabular-nums}.prayer b{display:block;font-family:var(--font-display);font-size:1.1rem;margin-top:8px;color:var(--gilt)}.prayer p{margin:4px 0 0;font-family:var(--font-display);font-size:1.1rem;line-height:1.4}.small{font-size:.74rem}.done{font-family:var(--font-display);font-size:1.15rem;color:var(--gilt)}.rowbtn{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.rowbtn button:not(.primary){border-color:var(--line)}textarea{font:inherit;width:100%;box-sizing:border-box;color:var(--vellum);background:#00000059;border:1px solid var(--line);border-radius:10px;padding:10px 12px;resize:vertical}.plist{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:6px}.plist li{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:start;padding:6px 0;border-top:1px solid var(--line);font-size:.85rem}.plist time{color:var(--gilt);font-size:.72rem;letter-spacing:.06em;padding-top:3px}.plist button{padding:0 6px;color:var(--vellum-dim)}@media(max-width:560px){.panel{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 190px);max-height:48vh;right:16px;left:16px;width:auto}}.panel h3{font-family:var(--font-display);font-size:1.05rem;margin:14px 0 6px;color:var(--gilt)}.credits{list-style:none;padding:0;margin:0;display:grid;gap:8px}.credits li{display:grid;gap:2px;font-size:.82rem;padding:6px 0;border-top:1px solid var(--line)}.credits b{color:var(--vellum)}.credits span{color:var(--vellum-dim)}.credits a{color:var(--gilt);font-size:.75rem}.charpick{display:grid;gap:6px;font-size:.78rem;letter-spacing:.06em;color:var(--vellum-dim)}.charpick-row{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:start}#char-preview{width:110px;height:150px;border-radius:12px;background:radial-gradient(ellipse at 50% 30%,#3a2a20,#120d0b);border:1px solid var(--line)}.chargrid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.chargrid button{font-size:.72rem;padding:7px 4px;border:1px solid var(--line);border-radius:8px;letter-spacing:0}.chargrid button[aria-pressed=true]{background:var(--gilt);color:#1c130a;font-weight:600}@media(max-width:560px){.chargrid{grid-template-columns:repeat(3,1fr)}}
