@font-face{font-family:Vazir;src:local('Vazirmatn'),local('Vazir');font-display:swap}
:root{color-scheme:dark;--bg:#0c1720;--panel:#142530;--tile:#1d3640;--ink:#eef6ef;--muted:#9aafb3;--gold:#f1c26d;--line:#2a424c;--mint:#59ddbd}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 80% 0,#24463f 0,transparent 48%),var(--bg);color:var(--ink);font:15px/1.65 Vazir,Tahoma,Arial,sans-serif;min-height:100dvh}button,input{font:inherit}button{cursor:pointer;border:1px solid var(--line);border-radius:12px;background:#1b303b;color:var(--ink);min-height:42px;padding:7px 12px;touch-action:manipulation}button:hover{filter:brightness(1.15)}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:2px}input{color:var(--ink);background:#0e1d27;border:1px solid var(--line);border-radius:12px;padding:12px;min-width:0;font-size:16px;width:100%}button.primary{background:linear-gradient(145deg,#f8d78e,#d8a84f);color:#29220f;border-color:#f4d18b;font-weight:bold;box-shadow:0 3px 0 #84642b}button.secondary{background:transparent}.fine{font-size:12px;color:var(--muted)}[hidden]{display:none!important}#app{max-width:1140px;margin:auto;padding:0 24px}.topbar{display:flex;justify-content:space-between;align-items:center;height:76px;border-bottom:1px solid #ffffff0b}.brand{display:flex;align-items:center;gap:10px}.brand b{font:700 14px Arial;letter-spacing:2px;color:var(--gold)}.brand small{display:block;font-size:12px;color:var(--muted)}.spade{font-size:39px;line-height:1;color:var(--gold)}.header-actions{display:flex;gap:8px}.header-actions button{width:40px;padding:0;font-size:21px;background:transparent}.entry{max-width:390px;margin:10px auto 40px;text-align:center}.mascot{position:relative;height:215px;background:radial-gradient(ellipse,#69d7a72d,transparent 65%)}.mascot img{height:220px;max-width:100%;object-fit:contain;filter:drop-shadow(0 15px 20px #0005)}.mascot-label{position:absolute;bottom:4px;left:20%;background:#224237;border:1px solid #4b7153;color:#d5eabc;border-radius:18px;padding:3px 16px;transform:rotate(-5deg);font-size:13px}h1{font-size:28px;line-height:1.5;margin:12px 0}h1 em{color:var(--gold);font-style:normal}.entry p{color:var(--muted);margin:8px 0 18px}.entry form{display:grid;gap:10px;text-align:right}.entry label{font-size:13px}.entry .primary{margin-top:6px}.error{color:#ffb2b7;font-size:13px;min-height:22px}.room-bar{display:flex;gap:12px;align-items:center;padding:10px 0;font-size:12px}.room-bar button{min-height:30px;font-size:12px;background:transparent;padding:3px 8px}.room-bar #connection{margin-left:auto;color:var(--muted)}.room-bar #room-label{color:var(--gold);letter-spacing:1px}.game-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(290px,.8fr);gap:22px;align-items:start}.arena{min-width:0}.round-banner{display:flex;align-items:center;gap:12px;padding:0 2px 12px;min-height:65px}.round-banner strong{display:block;font-size:18px}.eyebrow{font-size:11px;color:var(--mint)}#phase-label{font-size:13px;color:var(--muted);margin-right:auto}#countdown{border-radius:50%;width:42px;height:42px;display:grid;place-items:center;border:2px solid #bcaa6f;color:var(--gold);font:700 21px Arial}.board-shell{aspect-ratio:1;position:relative;border-radius:20px;background:linear-gradient(145deg,#a18b54,#4b745e 45%,#8c7745);padding:7px;box-shadow:0 5px 0 #050c11,0 14px 30px #0005;isolation:isolate}.board{height:100%;display:grid;grid-template-columns:repeat(10,minmax(0,1fr));grid-template-rows:repeat(10,minmax(0,1fr));gap:3px;direction:ltr;background:#0c1d25;border-radius:14px;padding:4px}.cell{position:relative;background:linear-gradient(145deg,#24414c,#18323c);border-radius:5px;color:#a5c1c5;box-shadow:inset 0 1px #ffffff0c;min-width:0;min-height:0}.cell:nth-child(2n){background:linear-gradient(145deg,#29473e,#1b3734)}.cell .num{position:absolute;left:3px;top:0;font:12px/1.5 Arial;color:#d3e3df}.cell.dragon{background:linear-gradient(145deg,#724946,#442830);box-shadow:inset 0 0 0 1px #ce8a69}.cell.heart{background:linear-gradient(145deg,#773e63,#4e2848);box-shadow:inset 0 0 0 1px #bf698f}.cell.goal{background:linear-gradient(145deg,#af924e,#6a552c)}.cell.owned{box-shadow:inset 0 -3px var(--owner)}.cell .mark{position:absolute;right:3px;bottom:1px;font-size:14px}.cell.heart .mark{color:#ff95c4}.cell .owner{position:absolute;right:3px;bottom:0;font-size:12px;color:var(--owner);font-weight:bold}.tokens{position:absolute;inset:11px;pointer-events:none;z-index:6}.token{position:absolute;display:grid;place-items:center;left:calc(var(--x)*10% + 2%);top:calc(var(--y)*10% + 3%);width:6%;height:6.4%;border-radius:48% 48% 25% 25%;color:#14202a;background:linear-gradient(#ffffff50,transparent),var(--color,#f1c26d);border:1px solid #ffffffe0;box-shadow:0 2px 4px #0009;line-height:1;font-size:12px;font-weight:bold;transition:top .95s,left .95s;pointer-events:auto;min-height:0;padding:0}.token.mine{outline:2px solid var(--gold);outline-offset:2px}.token.pile{transform:translate(4px,-4px)}.pile-badge{position:absolute;left:calc(var(--x)*10%);top:calc(var(--y)*10% + 6%);font:11px/1 Arial;background:#06131b;border-radius:4px;padding:2px;pointer-events:auto;border:0;min-height:20px;z-index:8}.dragon-decor{position:absolute;left:35%;top:33%;width:26%;z-index:3;pointer-events:none;filter:drop-shadow(0 5px 8px #0008);opacity:.95}.dragon-decor img{width:100%;display:block}.dragon-tag{position:absolute;left:38%;top:57%;font-size:11px;background:#0c1d25d9;border:1px solid #856747;color:#ebc984;padding:0 6px;border-radius:8px;z-index:4}.board-caption{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:9px 1px 5px;font-size:11px;color:var(--muted)}.board-caption button{border:0;padding:0 4px;min-height:28px;background:transparent;font-size:11px;color:var(--gold)}.personal{display:flex;align-items:center;gap:12px;background:#172a34;border:1px solid var(--line);padding:10px;border-radius:15px;margin-top:4px;min-height:70px}.me-info{display:flex;gap:8px;align-items:center;min-width:0;flex:1}.sample{position:static;width:23px;height:27px;flex-shrink:0;font-size:12px;pointer-events:none}.me-info b{display:block;font-size:13px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-info small{font-size:11px;color:var(--muted)}.ammo{display:flex;flex-direction:column;align-items:center;font-size:10px}.ammo b{color:var(--gold);letter-spacing:2px;font-size:15px}.personal .primary{font-size:13px;min-width:90px;padding:7px}.status{font-size:12px;color:var(--muted);padding:6px 0;min-height:31px}.players-head{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:12px;margin:4px 0}.players-head small{font-size:10px;color:var(--muted)}.players{display:flex;flex-wrap:wrap;gap:5px;padding:4px 0 14px;max-height:120px;overflow:auto}.player-chip{display:flex;align-items:center;gap:6px;background:#142a34;padding:4px 8px;font-size:12px;min-height:36px;max-width:150px}.player-chip span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-chip.offline{opacity:.5}.player-chip .sample{width:16px;height:19px;font-size:10px}.chat-panel{display:flex;flex-direction:column;background:linear-gradient(160deg,#1b313c,#13232e);border:1px solid var(--line);border-radius:20px;min-height:520px;height:calc(100dvh - 150px);max-height:780px;padding:0 14px 14px;position:sticky;top:14px}.chat-heading{display:flex;justify-content:space-between;align-items:center;min-height:55px;border-bottom:1px solid #ffffff09}.chat-heading button{background:transparent;border:0;color:var(--muted);font-size:12px;min-height:34px}.chat-heading b{font-size:15px}.chat-log{flex:1;overflow:auto;min-height:0;padding:10px 0;overscroll-behavior:contain;scrollbar-width:thin}.message{margin-bottom:9px;font-size:13px;overflow-wrap:anywhere}.message .who{display:inline-block;font-size:11px;color:var(--gold);margin-left:7px}.message.mine .who{color:var(--mint)}.message.system{text-align:center;font-size:11px;color:var(--muted);padding:5px;background:#0e20294f;border-radius:8px}.reactions{display:flex;gap:6px;padding:6px 0}.reactions button{font-size:17px;min-height:32px;border:0;background:#ffffff07;padding:2px 10px}.reactions button:last-child{font-size:11px}#chat-form{display:flex;gap:7px}#chat-form input{padding:9px;font-size:16px}#chat-form button{background:var(--gold);color:#272313;border:0;font-size:13px}.chat-grip{display:none}dialog{border:1px solid #44615b;border-radius:22px;color:var(--ink);background:#142732;padding:28px 22px 22px;max-width:min(440px,92vw);width:440px;max-height:85dvh;box-shadow:0 25px 90px #0008}dialog::backdrop{background:#031019c9;backdrop-filter:blur(5px)}.close{position:absolute;left:8px;top:6px;border:0;background:transparent;font-size:24px}.modal-title{font-size:21px;color:var(--gold);margin:7px 0 14px}.modal-text{font-size:14px;color:#bed0d0}.modal-actions{display:flex;gap:8px;margin-top:18px}.modal-actions button{flex:1}.report-row{font-size:12px;padding:8px 0;border-bottom:1px solid #ffffff0b}.report-title{color:var(--gold);font-size:15px;margin-top:18px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);max-width:90vw;background:#e9d199;color:#172525;padding:10px 20px;border-radius:13px;box-shadow:0 8px 35px #0006;z-index:50;display:none;font-size:13px}.fx{position:absolute;inset:0;pointer-events:none;z-index:20;overflow:hidden;border-radius:20px}.fx-caption{position:absolute;bottom:7%;left:5%;right:5%;text-align:center;font-size:16px;font-weight:bold;text-shadow:0 2px 8px #000;background:#13252ae8;border:1px solid #b5975a;border-radius:15px;padding:12px;animation:pop .35s ease-out}.fx-dragon{position:absolute;width:64%;left:18%;top:13%;filter:drop-shadow(0 0 25px #e9b45580);animation:chomp .65s ease-in-out}.fx-heart{position:absolute;left:35%;top:24%;font-size:100px;color:#ff97cb;filter:drop-shadow(0 0 30px #ff4385);animation:heartbeat .7s ease-in-out}.projectile{position:absolute;width:14px;height:4px;border-radius:5px;background:#ffe18c;box-shadow:0 0 10px #ffc166;transform-origin:left}.flash{animation:flash .5s}.jolt{animation:jolt .35s}.winner{color:var(--gold);font-size:30px;text-align:center}.connection-lost{color:#fda2a7!important}@keyframes pop{from{transform:translateY(15px) scale(.9);opacity:0}to{transform:none;opacity:1}}@keyframes chomp{0%{transform:scale(.3) rotate(-12deg)}55%{transform:scale(1.15) rotate(5deg)}100%{transform:scale(1)}}@keyframes heartbeat{0%,100%{transform:scale(.8)}40%{transform:scale(1.2)}}@keyframes flash{50%{filter:brightness(2)}}@keyframes jolt{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
@media(min-width:760px){#expand-chat{display:none}.board-shell{max-width:580px}.entry{padding-top:10px}}
@media(max-width:759px){#app{padding:0 12px;max-width:540px}.topbar{height:57px}.spade{font-size:31px}.brand b{font-size:12px}.brand small{font-size:10px}.header-actions button{min-height:36px;width:36px}.room-bar{padding:5px 0;gap:6px}.room-bar button{font-size:11px}.game-layout{display:block}.round-banner{min-height:51px;padding-bottom:6px}.round-banner strong{font-size:15px}.eyebrow{font-size:10px}#phase-label{font-size:11px}#countdown{width:34px;height:34px;font-size:18px}.board-shell{max-width:420px;margin:auto}.cell .num{font-size:10px}.cell .mark{font-size:12px}.cell .owner{font-size:10px}.token{font-size:10px}.board-caption{font-size:10px;gap:5px;padding:5px 0 3px}.personal{min-height:61px;padding:7px;gap:8px}.personal .primary{font-size:12px;min-width:87px}.me-info b{font-size:12px;max-width:95px}.status{font-size:11px;padding:5px 0}.players-head{margin-top:0}.players-head small{font-size:10px}.players{max-height:46px;flex-wrap:nowrap;padding:2px 0;overflow:auto}.player-chip{flex-shrink:0}.chat-panel{position:fixed;bottom:0;left:0;right:0;top:auto;height:210px;min-height:0;max-height:none;border-radius:20px 20px 0 0;padding:0 12px max(8px,env(safe-area-inset-bottom));z-index:30;border-top:2px solid #54776b;box-shadow:0 -6px 30px #0004}.chat-grip{display:block;width:34px;height:3px;background:#45636a;border-radius:5px;margin:6px auto 0;flex-shrink:0}.chat-heading{min-height:31px}.chat-heading b{font-size:13px}.chat-heading button{min-height:28px;padding:2px 6px}.chat-log{padding:4px 0}.message{font-size:12px;margin-bottom:5px}.reactions{padding:3px 0}.reactions button{min-height:27px}#chat-form input{height:39px;padding:6px 10px}#chat-form button{min-height:39px}.arena{padding-bottom:226px}.chat-panel.expanded{height:65dvh}.entry .mascot{height:180px}.entry .mascot img{height:190px}.entry h1{font-size:25px;margin:4px 0}.entry{margin-top:5px}.entry p{font-size:13px}.entry form{gap:6px}#toast{bottom:224px}.dragon-tag{font-size:9px}.fx-caption{font-size:13px}}
@media(max-height:780px) and (max-width:759px){.board-shell{max-width:310px}.chat-panel{height:185px}.arena{padding-bottom:198px}.players-head{display:none}.round-banner{min-height:43px}.personal{min-height:54px}.status{min-height:24px;padding:2px 0}.players{max-height:39px}.chat-log{padding:1px 0}.reactions{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.victory-scene{text-align:center;position:relative;overflow:hidden;padding:8px 4px 18px;min-height:340px}.victory-cup{font-size:70px;animation:pop .8s ease-out}.victory-names{color:var(--gold);font-size:27px;font-weight:bold;position:relative;z-index:2;overflow-wrap:anywhere}.victory-sub{font-size:14px;color:#c4ded8;position:relative;z-index:2}.defeated-dragon{display:block;width:150px;margin:8px auto;filter:grayscale(.6);opacity:.55;animation:dragon-defeat 2s ease-out forwards}.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}.confetti i{position:absolute;top:-18px;left:var(--left);width:7px;height:12px;border-radius:2px;animation:confetti-fall 3.3s var(--delay) ease-in forwards}@keyframes dragon-defeat{0%{transform:translateY(-15px) rotate(0deg) scale(1.15);opacity:1;filter:none}60%{transform:translateY(9px) rotate(16deg) scale(.85)}100%{transform:translateY(12px) rotate(22deg) scale(.8);opacity:.45;filter:grayscale(.8)}}@keyframes confetti-fall{to{transform:translateY(430px) rotate(var(--spin));opacity:0}}
@media(prefers-reduced-motion:reduce){.confetti{display:none}.defeated-dragon{transform:rotate(15deg);animation:none}}

.start-dock{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:9px 11px;border:1px solid #d0b47740;background:#142c29;border-radius:12px;margin-top:8px}.start-dock[hidden]{display:none}.start-label{font-size:11px;color:#e4cf93;margin-inline-end:auto}.start-dock .start-pawn{position:relative;inset:auto;flex-shrink:0;width:25px;height:25px;cursor:pointer}.start-more{border:1px solid #d0b47755;border-radius:15px;color:#e4cf93;background:#213c35;padding:4px 8px;font-size:11px}

/* Landmark icons scale with their own board cell on mobile and desktop. */
.cell.dragon,.cell.heart{container-type:size;overflow:hidden}
.cell.dragon .mark,.cell.heart .mark{inset:0;display:grid;place-items:center;line-height:1;font-size:clamp(24px,7vw,52px);pointer-events:none}
.cell.dragon .mark{filter:drop-shadow(0 1px 2px #17090a99)}
.cell.heart .mark{font-size:clamp(29px,8vw,62px);color:#ff95c4;text-shadow:0 1px 2px #41152e,0 0 8px #ff438555}
.cell.dragon .num,.cell.heart .num{z-index:2;left:1px;top:1px;padding:0 2px;border-radius:3px;background:#102129dc;color:#fff4d6;font-weight:bold;line-height:1.2}
@supports(font-size:1cqw){.cell.dragon .mark{font-size:90cqw}.cell.heart .mark{font-size:108cqw}}

.cell.teleport{background:radial-gradient(ellipse,#316d8c,#192743 80%);box-shadow:inset 0 0 0 1px #6eceef;container-type:size;overflow:hidden;cursor:pointer}
.cell.teleport .mark{inset:0;display:grid;place-items:center;font-size:clamp(21px,6vw,44px);line-height:1;opacity:.88}
.cell.teleport .num{z-index:2;background:#102129df;border-radius:3px;padding:0 2px;left:1px;top:1px;line-height:1.2;color:#e4faff}
.portal-destination{position:absolute;right:1px;bottom:0;z-index:2;background:#102129e8;color:#c5f7ff;border-radius:3px;padding:0 2px;font:700 9px/1.3 Arial}
.portal-routes{position:absolute;inset:11px;width:calc(100% - 22px);height:calc(100% - 22px);z-index:2;pointer-events:none;overflow:visible}
.portal-routes path{fill:none;stroke:var(--route-color);stroke-width:.55;stroke-dasharray:1.3 1;opacity:.3}
.portal-routes circle{fill:var(--route-color);stroke:#091c29;stroke-width:.3;opacity:.6}
.portal-routes .selected{opacity:1;stroke-width:1;filter:drop-shadow(0 0 1px #abf7ff)}
.fx-portal{position:absolute;left:30%;top:20%;font-size:100px;filter:drop-shadow(0 0 20px #76c9ff);animation:portal-spin 1.2s ease-out}
@keyframes portal-spin{from{transform:scale(.2) rotate(-180deg);opacity:.2}to{transform:scale(1) rotate(0);opacity:1}}
@supports(font-size:1cqw){.cell.teleport .mark{font-size:80cqw}}
@media(prefers-reduced-motion:reduce){.fx-portal{animation:none}}

.tokens .token{transition:top var(--move-ms,.95s) linear,left var(--move-ms,.95s) linear}
.move-banner{display:flex;align-items:center;gap:10px;min-height:55px;padding:8px 12px;margin-bottom:8px;border:1px solid #6d9c98;border-radius:13px;background:linear-gradient(110deg,#203d44,#142c35);color:#f2dfaf}
.move-dice{display:grid;place-items:center;flex-shrink:0;min-width:35px;height:35px;font:700 26px/1 Arial;color:#fff1ca;border-radius:8px;background:#091e2a}
.move-banner strong{font-size:13px;line-height:1.5}
@media(prefers-reduced-motion:reduce){.tokens .token{transition:none}}

/* Keep movement report space stable through every round and long captions. */
.move-banner{height:72px;min-height:72px;max-height:72px;overflow:hidden}
.move-banner strong{flex:1;min-width:0;max-height:54px;font-size:12px;line-height:18px;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}

#creator-controls,#creator-lock{display:grid;gap:8px}#creator-controls button{width:100%}#creator-lock label{font-size:13px}
