:root{--bg:#160c1c;--panel:#231430;--panel2:#2d1b3d;--line:#5a3d70;--gold:#e6c36a;--text:#f1e6d4;--muted:#b3a2bf;--accent:#8f5cd6;--good:#7fdc98;--bad:#ff7b6b;font-family:Crimson Pro,Georgia,serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(ellipse at 50% -10%, #3a2250 0%, var(--bg) 60%) fixed;color:var(--text);font-size:17px}h1,h2,h3,.brand,.logo{letter-spacing:.04em;font-family:Cinzel,Georgia,serif;font-weight:700}button,.btn{font:inherit;background:var(--panel2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:7px 12px;font-size:15px;text-decoration:none;display:inline-flex}button:hover:not(:disabled),.btn:hover{border-color:var(--gold);background:#3a2350}button:disabled{opacity:.45;cursor:default}button.primary{background:linear-gradient(#a06be8,#6f3fb5);border-color:#c9a2ff;font-weight:600}button.warn{color:#ffb3a8;border-color:#b8584c}button.small,.btn.small{padding:3px 9px;font-size:14px}input,select{font:inherit;color:var(--text);border:1px solid var(--line);background:#120a18;border-radius:8px;padding:7px 10px}a{color:var(--gold)}.dot{vertical-align:-1px;border-radius:50%;width:12px;height:12px;margin-right:4px;display:inline-block}em{color:var(--muted);font-size:.85em}em.off{color:var(--bad)}.landing{grid-template-columns:minmax(0,1fr);place-items:center;min-height:100%;padding:20px;display:grid}.landing input,.landing select{width:100%;min-width:0;max-width:100%}.landing h3{margin:6px 0 0}.landing-card{border:1px solid var(--line);background:#231430eb;border-radius:16px;grid-template-columns:minmax(0,1fr);gap:12px;width:min(780px,100%);padding:24px 28px;display:grid;box-shadow:0 20px 60px #000a}.landing-head{align-items:center;gap:20px;display:flex}.landing-box{border-radius:8px;width:150px;box-shadow:0 6px 20px #000a}.logo{color:var(--gold);text-shadow:0 0 22px #8f5cd6aa;margin:0;font-size:46px}.logo.small{font-size:32px}.sub{color:var(--muted);margin:6px 0 0}.landing label{color:var(--muted);gap:4px;display:grid}.landing-cols{grid-template-columns:1fr 1.4fr;gap:24px;display:grid}.landing-cols>div{align-content:start;gap:10px;min-width:0;display:grid}.landing-head>div{min-width:0}.landing-box{flex-shrink:0;height:auto}.code-input{text-transform:uppercase;letter-spacing:.3em;text-align:center;font-size:22px}.fine{color:var(--muted);font-size:14px}.my-tables{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.my-tables h3{margin:0 8px 0 0;font-size:15px}.seats{gap:6px;margin:0;padding:0;list-style:none;display:grid}.seats li{align-items:center;gap:8px;display:flex}.swatch{border-radius:50%;width:28px;height:28px;padding:0}.lobby-actions{gap:12px;display:flex}.linkbtn{color:var(--gold);background:0 0;border:none;padding:0;text-decoration:underline}.center-msg{height:100%;color:var(--muted);place-items:center;display:grid}.toast{border:1px solid var(--bad);z-index:60;cursor:pointer;background:#5a1d1d;border-radius:10px;padding:10px 16px;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}.conn-banner{text-align:center;z-index:70;background:#7a4a12;padding:4px;font-size:14px;position:fixed;top:0;left:0;right:0}.notify-btn,.textlink{font-size:14px}.notify-hint{color:var(--muted);font-size:14px}.game{flex-direction:column;min-height:100%;display:flex}.top{border-bottom:1px solid var(--line);z-index:20;background:#120a18ee;flex-wrap:wrap;align-items:center;gap:14px;padding:8px 14px;display:flex;position:sticky;top:0}.brand{color:var(--gold);font-size:22px}.round{color:var(--muted)}.status{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:3px 12px}.status.mine{background:#5b2fa0;border-color:#c9a2ff;font-weight:600;animation:1.6s infinite pulse}.spacer{flex:1}.zoom{color:var(--muted);align-items:center;gap:6px;display:flex}.table{flex:1;grid-template-columns:minmax(0,1fr) 470px;align-items:start;gap:12px;padding:10px 12px;display:grid}.boardwrap{border:1px solid var(--line);background:#0a0610;border-radius:12px;max-height:calc(100vh - 70px);overflow:auto}.boardzoom{min-width:100%}.board{-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.side{align-content:start;gap:10px;max-height:calc(100vh - 70px);padding-right:4px;display:grid;overflow-y:auto}.prompt{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:8px;padding:12px;display:grid}.prompt.mine{border-color:#c9a2ff;box-shadow:0 0 0 1px #c9a2ff55,0 0 24px #8f5cd655}.prompt.idle{color:var(--muted)}.ptext{font-size:18px}.hint{color:var(--muted);font-size:15px}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.batchhead{align-items:center;gap:10px;font-size:26px;display:flex}.batchhead .left{color:var(--gold)}.pending{color:var(--muted);align-items:center;gap:4px;margin-left:8px;font-size:15px;display:inline-flex}.orderbtn{flex-direction:column;flex:1;padding:8px 14px}.orderbtn b{font-size:24px}.orderbtn .first{color:var(--gold);text-transform:uppercase;letter-spacing:.1em;font-size:12px}.orderbtn .then{color:var(--muted);align-items:center;gap:4px;font-size:13px;display:flex}.counts{text-align:center;background:#120a18;border-radius:8px;gap:8px;padding:8px;font-size:18px;display:grid}.spellrow{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;display:flex}.symicon{vertical-align:middle;border-radius:50%}.hand{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.handtile{border:2px solid #0000;border-radius:12px;padding:4px}.handtile img{height:112px;display:block}.handtile.clickable{cursor:pointer}.handtile.clickable:hover{border-color:var(--gold)}.handtile.sel{background:#8f5cd633;border-color:#c9a2ff;transform:translateY(-4px)}.supply{color:var(--muted);text-align:center;font-size:13px}.players{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pcard{background:var(--panel);border:2px solid var(--line);cursor:pointer;opacity:.88;border-radius:10px;gap:2px;padding:8px 10px;display:grid}.pcard.viewing{opacity:1;background:var(--panel2)}.pcard.active{opacity:1;box-shadow:0 0 0 2px #fff4,0 0 16px #c9a2ff88}.pname{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.turnmark{color:var(--gold);margin-left:auto}.pscore{color:var(--gold);font-family:Cinzel,serif;font-size:28px;line-height:1.1}.pscore small{color:var(--muted);font-family:Crimson Pro,serif;font-size:12px}.pstats{color:var(--muted);flex-wrap:wrap;gap:3px 9px;font-size:13px;display:flex}.cauldron-box,.scrolls{background:var(--panel);border:1px solid var(--line);border-radius:12px;justify-items:center;gap:4px;padding:8px;display:grid}.cauldron-title{color:var(--muted);justify-self:start;font-size:15px}.cauldron{max-width:100%;height:auto;display:block}.cauldron .hl,.board .hl{fill:#ffe69a33;stroke:#ffe69a;stroke-width:4px;cursor:pointer;animation:1.1s infinite alternate glow}.board .hl{stroke-width:7px}.cauldron .hl-first{fill:#c9a2ff44;stroke:#c9a2ff;stroke-width:4px;cursor:pointer}.cauldron .crystal{cursor:default}.cauldron .crystal.movable{cursor:pointer}.cauldron .crystal.movable svg{filter:drop-shadow(0 0 6px #ffe69a)}.cauldron .crystal.sel svg{filter:drop-shadow(0 0 10px #fff)}.cauldron .lasttile{filter:drop-shadow(0 0 8px #ffe69a)}.gem.glow{filter:drop-shadow(0 0 6px #fff)}.clickable-g{cursor:pointer}.board .badge{fill:#fff;stroke:#000;stroke-width:7px;paint-order:stroke;font:700 38px Cinzel,serif}.scroll-row{flex-wrap:wrap;gap:6px;display:flex}.scrollcard{border-radius:8px;transition:transform .1s;position:relative}.scrollcard img{border-radius:8px;width:100%;display:block}.scrollcard.used{opacity:.45;filter:grayscale(.6)}.scrollcard.clickable{cursor:pointer}.scrollcard.clickable:hover{transform:translateY(-3px);box-shadow:0 0 12px #ffe69a}.scrollcard.pulse{animation:1.6s infinite pulse}.scrollcard .lvl{text-align:center;color:#fff;background:#333;border:1px solid #fff8;border-radius:12px;min-width:22px;padding:1px 5px;font:700 14px Cinzel,serif;position:absolute;top:3px;right:3px}.scrollcard .lvl.l0{background:#5a3d3d}.scrollcard .lvl.l1{background:#3d5a45}.scrollcard .lvl.l2{background:#2d7a4a}.scrollcard .lvl.l3{color:#1a1020;background:#c79a1d}.log-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:4px;padding:6px 8px;display:grid}.log-head{color:var(--muted);cursor:pointer;font-size:15px}.log{color:#d8c9e3;align-content:start;gap:1px;max-height:200px;font-size:14px;display:grid;overflow-y:auto}.chatline{color:var(--gold)}.chat-input{width:100%;padding:4px 8px;font-size:14px}.bot-row{text-align:center}.preview{z-index:50;pointer-events:none;border:1px solid var(--gold);background:#120a18f2;border-radius:12px;max-width:420px;padding:10px;position:fixed;bottom:14px;left:14px;box-shadow:0 10px 40px #000c}.scrollpreview{align-items:flex-start;gap:12px;display:flex}.scrollpreview img{border-radius:8px;width:150px}.scrollpreview p{margin:0 0 6px;font-size:15px}.scrollpreview p.head{color:var(--gold);font-weight:600}.tip{max-width:260px}.modal{z-index:80;background:#000b;place-items:center;display:grid;position:fixed;inset:0;overflow:auto}.aid{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:12px;padding:16px;display:flex}.aid img{border-radius:14px;max-width:44vw;max-height:80vh}.results table{border-collapse:collapse;width:100%}.results th,.results td{text-align:left;border-bottom:1px solid var(--line);padding:4px 6px}.results tr.win td{color:var(--gold);font-weight:600}.results h2{color:var(--gold);margin:0 0 6px;font-size:20px}@keyframes glow{0%{fill-opacity:.5}to{fill-opacity:1}}@keyframes pulse{0%,to{box-shadow:0 0 #c9a2ff00}50%{box-shadow:0 0 14px 2px #c9a2ffaa}}@media (width<=520px){.landing{padding:12px}.landing-card{padding:18px 16px}.logo{font-size:34px}}@media (width<=1100px){.table{grid-template-columns:1fr}.boardwrap{max-height:none}.side{max-height:none;overflow:visible}.landing-cols{grid-template-columns:1fr}.landing-head{text-align:center;flex-direction:column}.prompt.mine{z-index:15;background:#231430f5;position:sticky;bottom:6px}}.rmcrystal{color:var(--muted);font-size:14px}.rmcrystal summary{cursor:pointer}.rmcrystal .row{margin-top:6px}.chatbox{border-top:1px solid var(--line);align-content:start;gap:1px;max-height:110px;padding-top:4px;font-size:14px;display:grid;overflow-y:auto}
