:root{--bg:#14060b;--surf:#26101a;--surf2:#321522;--txt:#fbeee8;--dim:#d6b5b1;--ruby:#c01e48;--ruby-d:#8c1030;--gold:#e6c17a;--rose:#f3b6ae;--plum:#7a3a68;--edge:1px solid #e6c17a66;--amb:#f0968229;--pg:.3;--serif:"Iowan Old Style", Palatino, "Palatino Linotype", "Noto Serif", Georgia, serif}html[data-spicy="2"]{--amb:#d2466438;--pg:.4}html[data-spicy="3"]{--amb:#d71e4b52;--pg:.55;--ruby:#cf1d4c}html[data-spicy="4"]{--amb:#eb0f3c75;--pg:.8;--ruby:#d81b4a;--ruby-d:#6e0a22}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--txt);touch-action:manipulation;overscroll-behavior:none;background-image:radial-gradient(ellipse 90% 45% at 50% -5%, var(--amb), transparent 70%), radial-gradient(ellipse 80% 40% at 50% 108%, var(--amb), transparent 70%), linear-gradient(180deg, #1a0710, #14060b 60%, #100408);background-attachment:fixed;font:500 16px/1.35 system-ui,sans-serif}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle at 50% 38%, var(--amb), transparent 55%);animation:6s ease-in-out infinite breathe;position:fixed;inset:0}#root{z-index:1;position:relative}.app{max-width:480px;height:100dvh;padding:calc(max(10px, env(safe-area-inset-top)) + 50px) 16px max(16px, env(safe-area-inset-bottom));flex-direction:column;gap:8px;margin:0 auto;display:flex;position:relative;overflow:hidden}.screen{animation:.5s ease-out enter}button{min-height:48px;font:inherit;border:var(--edge);background:linear-gradient(180deg, var(--surf2), var(--surf));color:var(--txt);border-radius:16px;padding:0 12px;font-weight:700;transition:transform 90ms,filter .2s,background .3s,box-shadow .3s,border-color .3s;box-shadow:0 2px 10px #00000073,inset 0 1px #ffffff0f}button:active{filter:brightness(1.25);transform:scale(.97)}button:disabled{opacity:.45;box-shadow:none}button.primary{background:linear-gradient(180deg, var(--ruby), var(--ruby-d));color:#fff;min-height:56px;font-size:20px;font-family:var(--serif);letter-spacing:.02em;box-shadow:0 0 calc(18px + 14px * var(--pg)) rgba(220, 30, 80, var(--pg)), inset 0 1px 0 #ffffff40;border:1px solid #ffd6be8c;font-weight:700;animation:4s ease-in-out 3 glow}button.primary:disabled{animation:none}button.ghost{box-shadow:none;color:var(--dim);background:0 0;border:1px dashed #e6c17a80}button.on{background:linear-gradient(180deg, #f1d9a0, var(--gold));color:#2a0a14;border-color:#fff0c8;box-shadow:0 0 16px #e6c17a66}button.choice{text-align:left;align-items:center;gap:10px;min-height:52px;padding:6px 10px;line-height:1.15;display:flex}button.choice b{border:1px solid var(--gold);width:30px;height:30px;color:var(--gold);font-size:16px;font-family:var(--serif);background:#e6c17a1a;border-radius:50%;flex:none;place-items:center;display:grid}input{min-height:56px;font:inherit;border:var(--edge);color:var(--txt);-webkit-user-select:text;user-select:text;background:#1b0910;border-radius:16px;width:100%;padding:0 16px;font-size:18px;font-weight:600}input:focus{border-color:var(--gold);outline:0;box-shadow:0 0 0 3px #e6c17a59,0 0 20px #e6c17a40}input::placeholder{color:#b99a98}.col{flex-direction:column;gap:8px;display:flex}.row{gap:8px;display:flex}.row>*{flex:1}.grow{flex:1;min-height:0}.title{font:italic 700 30px/1.1 var(--serif);color:var(--gold)}.hero{text-align:center;font-size:72px;line-height:1.1}.status{font:italic 600 20px/1.3 var(--serif)}.small{color:var(--dim);font-size:16px}.back{flex:none;width:48px;min-height:48px;padding:0;font-size:22px}.row>.back{flex:none}.code{font:700 44px/1.1 var(--serif);letter-spacing:.15em;text-indent:.15em;text-align:center;color:var(--gold);border:1px solid var(--gold);background:linear-gradient(#2c1220,#1b0910);border-radius:16px;padding:12px;box-shadow:0 0 26px #e6c17a40,inset 0 0 18px #e6c17a14}.dot{border:1px solid var(--gold);border-radius:50%;width:12px;height:12px;margin-right:4px;display:inline-block}.seats button{min-height:48px}.lobby{overflow:hidden}.logo{font:italic 700 70px/.95 var(--serif);text-align:center;letter-spacing:-1px;filter:drop-shadow(0 0 16px #e6967866);animation:1.2s ease-out logoIn}.logo span{background:linear-gradient(180deg, #fff3d6, var(--gold) 60%, #b88a43);color:#0000;-webkit-background-clip:text;background-clip:text;display:block}.logo .l2{background-image:linear-gradient(180deg, #ffd9d2, var(--rose) 45%, #e0456b);transform:translate(16px)}.rule{background:linear-gradient(90deg, transparent, var(--gold), transparent);width:120px;height:1px;margin:12px auto 0}.tag{font:italic 600 22px/1.25 var(--serif);text-align:center;margin-top:10px}.tag b{color:var(--rose);font-weight:700}.lobby-die{place-items:center;height:96px;margin:20px 0 14px;display:grid}.deco{color:var(--gold);opacity:.75;font-size:26px;animation:8s ease-in-out infinite float;position:absolute}.d1{top:14%;left:26px}.d2{font-size:32px;animation-delay:-2s;top:20%;right:28px}.d3{animation-delay:-4s;top:37%;left:32px}.d4{font-size:22px;animation-delay:-6s;top:40%;right:36px}.hud{align-items:stretch;gap:8px;display:flex}.pl{background:linear-gradient(180deg, var(--surf2), var(--surf));border:1px solid #e6c17a40;border-radius:16px;flex:1;align-items:center;gap:6px;min-width:0;padding:4px 8px 4px 6px;font-size:16px;font-weight:700;transition:background .5s,box-shadow .5s,border-color .5s;display:flex;position:relative}.pl.act{border-color:var(--gold);background:linear-gradient(#4a1426,#2d0e1b);box-shadow:0 0 18px #e6c17a59}.av{border:1px solid var(--gold);color:#fff;width:28px;height:28px;font:700 15px var(--serif);border-radius:50%;flex:none;place-items:center;display:grid}.nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.st{color:var(--gold);flex:none;font-size:18px;font-weight:700;position:relative}.st .pop{animation:1.2s starPop;display:inline-block}.plus{color:#2a0a14;background:var(--gold);white-space:nowrap;z-index:3;border-radius:10px;padding:0 6px;font-size:18px;font-style:normal;font-weight:700;animation:1.8s forwards floatUp;position:absolute;top:-6px;right:0;box-shadow:0 0 14px #e6c17ab3}.turnrow{align-items:stretch}.turnrow .turn{justify-content:center;align-items:center;display:flex}.turn{font:italic 700 20px/1.2 var(--serif);background:linear-gradient(180deg, var(--surf2), var(--surf));text-align:center;border:1px solid #e6c17a40;border-radius:16px;padding:6px 12px;animation:.6s ease-out bannerIn}.turn .pos{opacity:.65;font-size:16px;font-weight:700}.turn.mine{background:linear-gradient(180deg, var(--ruby), var(--ruby-d));color:#fff;border-color:#ffd6be99;animation:.6s ease-out bannerIn,3.6s ease-in-out .6s 2 glow}.boardwrap{flex:none;position:relative}.board{width:100%;height:auto;max-height:46dvh;margin:0 auto;display:block;overflow:visible}.road-edge{fill:none;stroke:#e6c17a66;stroke-width:19px;stroke-linecap:round;stroke-linejoin:round}.road{fill:none;stroke:#1b0910;stroke-width:17px;stroke-linecap:round;stroke-linejoin:round}.chev{fill:none;stroke:var(--gold);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;opacity:.7}.start{fill:#1b0910;stroke:var(--gold);stroke-width:1.2px}.start-flag{dominant-baseline:central;text-anchor:middle;font-size:18px}.tile .lip{fill:#0000008c}.tile .top{stroke:#ffebc8a6;stroke-width:1.2px}.ticon{text-anchor:middle;dominant-baseline:central;font-size:22px}.tlet{font:700 11px var(--serif)}.pawn{transition:transform .22s cubic-bezier(.3,1.3,.5,1)}.pout{fill:#0d0306;stroke:var(--gold);stroke-width:1.5px}.pshadow{fill:#00000080}.pini{font:700 14px var(--serif);text-anchor:middle;dominant-baseline:central}.pshield{text-anchor:middle;font-size:14px}.pring{fill:none;stroke:var(--gold);stroke-width:2.5px;transform-box:fill-box;transform-origin:50%;animation:2.4s ease-out infinite ring}.pact{filter:drop-shadow(0 0 5px #e6c17ae6)}.hop{animation:.24s ease-out hop}.dice-stage{z-index:4;background:#100409db;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:12px;animation:.25s fadeIn;display:flex;position:absolute;inset:0}.dice-res{font:italic 700 40px var(--serif);color:#2a0a14;background:linear-gradient(180deg, #f6dfa6, var(--gold));opacity:0;border-radius:16px;padding:0 16px;animation:.5s 1.05s forwards resIn;box-shadow:0 0 24px #e6c17a99}.toast{text-align:center;font:italic 700 22px/1.2 var(--serif);color:var(--txt);border:1px solid var(--gold);z-index:5;background:#14060bf0;border-radius:16px;padding:12px;animation:2.1s forwards toast;position:absolute;top:40%;left:12px;right:12px;box-shadow:0 0 26px #dc1e508c}.track{flex:none;height:52px;padding-top:22px;position:relative}.segs{border:1px solid var(--gold);background:#1b0910;border-radius:8px;height:16px;display:flex;overflow:hidden}.segs span{border-right:1px solid #14060b99;flex:1}.tk{border:1px solid var(--gold);width:24px;height:24px;font:700 14px var(--serif);border-radius:50%;place-items:center;transition:left .3s;display:grid;position:absolute;transform:translateY(-14px);box-shadow:0 0 8px #0009}.tk.p0{background:var(--ruby);color:#fff}.tk.p1{background:var(--rose);color:#2a0a14}.panel{background:linear-gradient(#321522eb,#1f0b14f5);border:1px solid #e6c17a4d;border-radius:20px;flex-direction:column;flex:1;min-height:0;padding:12px;font-size:18px;animation:.4s ease-out enter;display:flex;overflow:auto;box-shadow:0 6px 30px #00000080,inset 0 0 40px #c01e4814}.panel>.col{flex:1;justify-content:flex-end}.q{font:italic 600 21px/1.25 var(--serif);margin-bottom:auto}.chip{border:1px solid #ffebc899;border-radius:20px;align-self:flex-start;align-items:center;gap:6px;padding:2px 12px 2px 8px;font-size:16px;font-weight:700;animation:.5s pop;display:inline-flex}.wait{font:italic 600 20px/1.3 var(--serif);text-align:center;margin:auto;animation:2.6s ease-in-out infinite pulseSoft}.ev{color:#f6dfa6;background:#e6c17a1f;border:1px solid #e6c17a80;border-radius:12px;margin-top:8px;padding:4px 10px;font-size:16px;font-weight:600;animation:1.8s flash}.err{color:#fff;background:#a3112f;border:1px solid #ffb3a8;border-radius:12px;padding:8px 12px;font-size:16px;font-weight:700;animation:.35s shake}.result{font:italic 700 24px/1.2 var(--serif);text-align:center;border:1px solid #e6c17a66;border-radius:16px;padding:6px;animation:.7s pop}.result.good{background:linear-gradient(180deg, #f6dfa6, var(--gold));color:#2a0a14;box-shadow:0 0 22px #e6c17a80}.result.nope{background:var(--surf);font-size:20px}.rstar{animation:1.1s spin;display:inline-block}.roll .rdie{animation:3s ease-in-out infinite wobble;display:inline-block}.end-screen{text-align:center;z-index:1;flex:1;justify-content:center;align-items:stretch}.end-screen.win .hero{animation:3s ease-in-out 3 bounceBig}.end-screen.win .title{color:var(--gold);text-shadow:0 0 22px #e6c17a8c;font-size:44px}.end-screen.lose .hero{animation:5s ease-in-out 2 floatSlow}.fx{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.fx i{top:-30px;left:var(--x);animation:fall var(--t) var(--d) linear 2 both;opacity:.85;border-radius:50% 0;font-size:26px;font-style:normal;position:absolute}.fx-heart i{animation-name:rise;top:auto;bottom:-40px}.fx i{will-change:transform}.die{width:var(--s);height:var(--s);perspective:calc(var(--s) * 6);position:relative}.die-bounce{width:100%;height:100%}.die-roll .die-bounce{animation:1s cubic-bezier(.3,0,.5,1) forwards dieBounce}.die-shadow{background:#0000008c;border-radius:50%;height:10px;position:absolute;bottom:-14px;left:10%;right:10%}.die-roll .die-shadow{animation:1s forwards dieShadow}.cube{width:100%;height:100%;transform-style:preserve-3d;transition:transform 1s cubic-bezier(.15,.7,.2,1);position:relative}.cube-idle{animation:12s linear infinite idleSpin}.face{border:1.5px solid var(--gold);backface-visibility:hidden;background:linear-gradient(145deg,#3a1526,#1a0710);border-radius:16%;grid-template:repeat(3,1fr)/repeat(3,1fr);padding:14%;display:grid;position:absolute;inset:0;box-shadow:inset 0 0 14px #e6c17a40}.face i{background:radial-gradient(circle at 35% 30%, #fff3d6, var(--gold));border-radius:50%;place-self:center;width:72%;height:72%}.face i.one{background:radial-gradient(circle at 35% 30%, #ff7d9c, var(--ruby));width:90%;height:90%;box-shadow:0 0 12px #e61e50b3}@keyframes enter{0%{opacity:0;transform:translateY(10px)}}@keyframes fadeIn{0%{opacity:0}}@keyframes bannerIn{0%{opacity:0;transform:translate(-24px)}}@keyframes breathe{50%{opacity:.55}}@keyframes glow{50%{filter:brightness(1.18)saturate(1.1);box-shadow:0 0 calc(30px + 22px * var(--pg)) rgba(235, 40, 90, calc(var(--pg) + .2)), inset 0 1px 0 #ffffff40}}@keyframes pulseSoft{50%{opacity:.55}}@keyframes pop{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.06)}}@keyframes flash{0%{background:#c01e488c}}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes hop{50%{transform:translateY(-13px)}}@keyframes ring{0%{opacity:1;transform:scale(.8)}to{opacity:0;transform:scale(1.5)}}@keyframes starPop{0%{transform:scale(1)}30%{text-shadow:0 0 14px #fff3d6;transform:scale(1.7)}to{transform:scale(1)}}@keyframes floatUp{0%{opacity:0;transform:translateY(8px)scale(.6)}20%{opacity:1;transform:translateY(0)scale(1.05)}to{opacity:0;transform:translateY(-34px)}}@keyframes spin{0%{transform:rotate(-180deg)scale(.2)}}@keyframes resIn{0%{opacity:0;transform:scale(.5)}70%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes toast{0%{opacity:0;transform:scale(.9)}14%{opacity:1;transform:scale(1)}85%{opacity:1}to{opacity:0;transform:translateY(-10px)}}@keyframes dieBounce{0%{transform:translateY(-120px)}28%{transform:translateY(0)}44%{transform:translateY(-46px)}60%{transform:translateY(0)}72%{transform:translateY(-16px)}84%,to{transform:translateY(0)}}@keyframes dieShadow{0%{opacity:.1;transform:scale(.4)}28%{opacity:.5;transform:scale(1)}44%{transform:scale(.6)}60%,to{transform:scale(1)}}@keyframes idleSpin{0%{transform:rotateX(-20deg)rotateY(0)}to{transform:rotateX(-20deg)rotateY(360deg)}}@keyframes float{50%{opacity:.4;transform:translateY(-12px)rotate(8deg)}}@keyframes floatSlow{50%{transform:translateY(-10px)}}@keyframes logoIn{0%{opacity:0;filter:blur(8px);transform:scale(.94)}}@keyframes wobble{0%,70%,to{transform:rotate(0)}80%{transform:rotate(-14deg)}90%{transform:rotate(12deg)}}@keyframes bounceBig{50%{transform:translateY(-10px)scale(1.05)}}@keyframes fall{0%{transform:translateY(0) rotate(var(--r))}to{transform:translateY(110dvh) rotate(calc(var(--r) + 360deg))}}@keyframes rise{0%{opacity:.9;transform:translateY(0)scale(.6)}to{opacity:0;transform:translateY(-110dvh)scale(1.2)}}@media (height<=700px){.hero{font-size:48px}.title{font-size:26px}.q{font-size:18px}.code{font-size:36px}.logo{font-size:58px}.lobby-die{margin:8px 0 4px}.panel{padding:8px}.board{max-height:40dvh}button.choice{min-height:48px}.turn{padding:4px 8px;font-size:18px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.fx{display:none}.dice-res{opacity:1}body:before{animation:none}}.roll-hero{justify-content:center;align-items:center;gap:16px;margin:auto 0;padding-bottom:14px;display:flex}.roll-hero .die{flex:none}.roll-hero .small{max-width:150px;font-style:italic;font-weight:600;font-family:var(--serif)}.end-body{flex-direction:column;flex:1;justify-content:center;gap:10px;display:flex}.end-screen .hero{font-size:96px}.scorecard{background:linear-gradient(180deg, var(--surf2), var(--surf));color:var(--txt);border:1px solid #e6c17a66;border-radius:16px;align-self:center;padding:8px 14px;font-size:18px;font-weight:600}@media (height<=700px){.roll-hero{display:none}.end-screen .hero{font-size:64px}}input.code-in{font:700 36px var(--serif);text-align:center;letter-spacing:.3em;text-indent:.3em;text-transform:uppercase;min-height:72px;color:var(--gold)}input.code-in::placeholder{letter-spacing:.3em;font-size:28px}.slot{background:linear-gradient(180deg, var(--surf2), var(--surf));border:1px solid #e6c17a4d;border-radius:16px;align-items:center;gap:10px;min-height:64px;padding:8px 10px;display:flex}.slot .av{width:40px;height:40px;font-size:20px}.slot .nm{font:italic 700 19px var(--serif)}.slot.in{animation:.5s pop}.slot.me{border-color:var(--gold);background:linear-gradient(#4a1426,#2d0e1b);box-shadow:0 0 16px #e6c17a40}.slot .ok{color:#8fe0ac;font-size:16px;font-weight:700}.wait-slot{background:0 0;border-style:dashed}.ghostav{color:var(--dim);background:0 0;border-style:dashed}.dots i{font-style:normal;animation:2s infinite blink}.dots i:nth-child(2){animation-delay:.3s}.dots i:nth-child(3){animation-delay:.6s}@keyframes blink{0%,60%,to{opacity:.2}30%{opacity:1}}@media (prefers-reduced-motion:reduce){.dots i{animation:none}}.screen>.row,.screen>.col:not(.grow),.screen>input,.slot{flex-shrink:0}button.grow{min-height:48px}.toast.hold{animation:.35s ease-out forwards pop}.gsym{font-size:1.15em;font-weight:800}.gsym.male{color:#6fb7ff}.gsym.female{color:#ff7aa8}.row>button.grow .gsym{font-size:34px;line-height:1}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.spicy-btn{flex-direction:column;justify-content:center;align-items:center;gap:0;min-height:64px;padding:6px 2px;display:flex}.spicy-btn span{font-size:20px;line-height:1.2}.spicy-btn small{font-size:12px;font-weight:700}.formpage{gap:14px}.formpage>.row:first-child+*,.formpage>button.primary{margin-top:auto}.formpage>.grow{display:none}.formpage>.row:first-child{top:max(10px, env(safe-area-inset-top));position:absolute;left:16px;right:84px}.langbox{z-index:30;top:max(10px, env(safe-area-inset-top));position:fixed;right:max(12px,50vw - 228px)}.langbtn{min-width:64px;min-height:44px;color:var(--gold,#e6c17a);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#14060bd1;border:1px solid #e6c17a99;border-radius:14px;padding:0 12px;font-size:16px}.langmenu{background:#14060bf5;border:1px solid #e6c17a99;border-radius:14px;flex-direction:column;gap:4px;min-width:170px;padding:6px;animation:.2s pop;display:flex;position:absolute;top:50px;right:0;box-shadow:0 8px 24px #0009}.langmenu button{text-align:left;min-height:48px;box-shadow:none;background:0 0;border-color:#0000;justify-content:flex-start}.langmenu button.on{color:var(--gold,#e6c17a);border-color:#e6c17a99}.spectate .choice:disabled{opacity:.72}.waitline{text-align:center;font:italic 600 18px/1.3 var(--serif);color:var(--gold,#e6c17a);animation:2.6s ease-in-out infinite pulseSoft}.presence{color:#f6dfa6;text-align:center;background:#e6c17a24;border:1px solid #e6c17a80;border-radius:12px;padding:6px 10px;font-size:15px;font-weight:600;animation:1.8s flash}.paused{z-index:50;text-align:center;color:#f6dfa6;background:#0c060adb;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;font-size:18px;display:flex;position:fixed;inset:0}.paused .title{font:italic 700 28px/1.2 var(--serif)}.recap{text-align:left;background:#14060b8c;border:1px solid #e6c17a59;border-radius:14px;flex-direction:column;gap:6px;margin-top:14px;padding:10px 14px;font-size:15px;display:flex}
