:root{--bg: #0b0d12;--surface: #14171f;--surface-2: #1c2030;--border: #2a2f42;--text: #e8eaf2;--text-dim: #9aa0b3;--accent: #6c8cff;--accent-hover: #8aa2ff;--danger: #ff6b6b;--ok: #5fcf80;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;color:var(--text);background:var(--bg);color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}h1{font-size:1.875rem;margin:0 0 1rem;font-family:var(--game-header-font, system-ui);letter-spacing:-.01em;font-weight:600}h2{font-size:1.375rem;margin:0 0 .75rem;font-family:var(--game-header-font, system-ui);font-weight:600}input,button,select,textarea{font:inherit;color:inherit}input[type=email],input[type=password],input[type=text],textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:.55rem .75rem;width:100%}input:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}button{background:var(--accent);color:#0b0d12;border:none;border-radius:8px;padding:.6rem 1rem;font-weight:600;cursor:pointer}button:hover{background:var(--accent-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}button.secondary:hover{background:var(--surface-2)}button.danger{background:var(--danger);color:#fff}.app{max-width:920px;margin:0 auto;padding:1.5rem}.nav{display:flex;gap:1rem;align-items:center;border-bottom:1px solid var(--border);padding-bottom:.75rem;margin-bottom:1.5rem}.nav .spacer{flex:1}.nav a{color:var(--text-dim)}.nav a.active{color:var(--text)}.nav-icon{padding:.4rem .6rem;font-size:1.1rem;line-height:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem;margin-bottom:1rem}.row{display:flex;gap:.75rem;align-items:center}.col{display:flex;flex-direction:column;gap:.75rem}.muted{color:var(--text-dim)}.error{color:var(--danger)}.ok{color:var(--ok)}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.field label{font-size:.875rem;color:var(--text-dim)}.tag{display:inline-block;padding:.1rem .5rem;background:var(--surface-2);border-radius:999px;font-size:.75rem;color:var(--text-dim)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.board-wrap{display:flex;flex-direction:column;gap:1rem;align-items:stretch}.board-grid{position:relative;display:grid;gap:4px;padding:8px;background:var(--board-bg, #0e1118);border:1px solid var(--cell-border, var(--border));border-radius:10px;width:100%;max-width:720px;margin:0 auto;box-shadow:0 18px 40px #0000008c,inset 0 0 0 1px #ffffff05}.board-cell{position:relative;border:1px solid var(--cell-border, var(--border));border-radius:6px;background:var(--cell-bg, #1a1f2e);padding:4px 6px;display:flex;flex-direction:column;color:var(--game-text, var(--text));font-size:clamp(.6rem,1.2vw,.8rem);overflow:hidden}.board-cell.ladder{background:var(--ladder-bg, rgba(95, 207, 128, .18))}.board-cell.snake{background:var(--snake-bg, rgba(255, 107, 107, .18))}.board-cell .cell-num{font-size:.85em;color:var(--cell-num-color, rgba(232, 234, 242, .55));line-height:1}.board-cell .cell-arrow{font-size:.85em;color:var(--cell-arrow-color, rgba(232, 234, 242, .85));font-weight:600;letter-spacing:.5px}.board-cell.flash{animation:cell-pulse .6s ease-out 1}@keyframes cell-pulse{0%{box-shadow:0 0 #fff9;transform:scale(1)}50%{box-shadow:0 0 0 8px #fff0;transform:scale(1.08)}to{box-shadow:0 0 #fff0;transform:scale(1)}}.board-overlay{position:absolute;inset:8px;pointer-events:none}.board-token{position:absolute;width:22px;height:22px;border-radius:50%;border:2px solid var(--token-border, #0e1118);background-image:radial-gradient(circle at 30% 25%,rgba(255,255,255,.45),transparent 55%);box-shadow:0 3px 7px #0000008c,0 0 0 1px #ffffff1f;transform:translate(-50%,-50%);transition:top var(--token-step-ms, .28s) cubic-bezier(.4,1.6,.6,1),left var(--token-step-ms, .28s) cubic-bezier(.4,1.6,.6,1);pointer-events:none;z-index:3}.board-token.teleporting{transition-duration:var(--token-teleport-ms, .6s);transition-timing-function:cubic-bezier(.5,0,.5,1)}.dice{width:64px;height:64px;border-radius:12px;background:linear-gradient(135deg,#fff,#d8dde8);color:#0b0d12;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:4px;padding:10px;box-shadow:0 4px 12px #00000080,inset 0 -2px 4px #0000001f}.dice .pip{background:#0b0d12;border-radius:50%}.dice.rolling{animation:dice-roll .6s ease-out 1}@keyframes dice-roll{0%{transform:rotate(0) scale(1)}35%{transform:rotate(180deg) scale(1.15)}70%{transform:rotate(330deg) scale(.95)}to{transform:rotate(360deg) scale(1)}}.dice-area{display:flex;gap:1rem;align-items:center;justify-content:center;padding:.5rem 0}.dice-area .label{color:var(--game-text-dim, var(--text-dim));font-size:.9rem}.players-panel{display:flex;gap:.75rem;flex-wrap:wrap}.player-chip{display:flex;align-items:center;gap:.5rem;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:.25rem .75rem;font-size:.85rem}.player-chip.is-current{border-color:var(--game-accent, var(--accent));box-shadow:0 0 0 1px var(--game-accent, var(--accent))}.player-chip .dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--surface-2)}.player-chip .pos{color:var(--text-dim);font-size:.8rem}.confetti-host{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:1000}.confetti-piece{position:absolute;top:-20px;width:9px;height:14px;border-radius:2px;animation:confetti-fall linear forwards}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(110vh) rotate(720deg);opacity:.3}}@media(max-width:640px){.board-grid{gap:2px;padding:4px}.board-cell{padding:2px 3px}.board-token{width:16px;height:16px}.dice{width:52px;height:52px;padding:7px;gap:3px}}.tiles-board{margin-top:.75rem;display:flex;justify-content:center}.tiles-board-grid{display:grid;gap:.5rem;width:100%;max-width:720px}.tiles-board-cell{aspect-ratio:1 / 1;border-radius:10px;background:var(--cell-bg, rgba(255, 255, 255, .02));border:1px dashed var(--cell-border, var(--border));display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.25rem;gap:.25rem}.tiles-board-cell.has-tile{border-style:solid;background:var(--surface-2)}.tiles-board-cell .entity-art{width:100%;height:auto;aspect-ratio:1 / 1}.tiles-board-cell-name{font-size:.7rem;line-height:1.2;text-align:center;color:var(--game-text-dim, var(--text-dim));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.tiles-board-hex .tiles-board-grid{gap:.25rem}.player-chip .chip-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;border:2px solid var(--surface-2);box-shadow:0 0 0 1px var(--border)}.private-role{display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap}.private-role-meta{display:flex;flex-direction:column;gap:.4rem;flex:1;min-width:200px}.private-role-name{font-size:1.15rem;font-weight:600;font-family:var(--game-header-font, system-ui)}.private-role-abilities{margin:.25rem 0 0;padding-left:1.1rem;color:var(--text-dim);font-size:.88rem}.private-role-abilities li{margin-bottom:.15rem}.hand-row{display:flex;gap:.75rem;overflow-x:auto;padding:.25rem 0 .5rem;margin:.5rem -.25rem 0}.hand-card{display:flex;flex-direction:column;gap:.4rem;width:120px;flex-shrink:0;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:.5rem}.hand-card-name{font-size:.78rem;font-weight:500;text-align:center;line-height:1.25}.entity-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.85rem;margin-top:1rem}.entity-card{display:flex;flex-direction:column;gap:.5rem;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:.75rem}.entity-art{width:100%;aspect-ratio:1 / 1;border-radius:10px;background:linear-gradient(135deg,#ffffff0a,#00000026);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.entity-art img{width:100%;height:100%;object-fit:cover;display:block}.entity-art-fallback .entity-art-glyph{font-size:2.5rem;line-height:1}.entity-art-fallback.has-hint:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,transparent 60%,rgba(108,140,255,.08));pointer-events:none}.entity-card-label{display:flex;flex-direction:column;gap:.15rem}.entity-card-kind{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.entity-card-name{font-weight:600;font-size:.95rem}.entity-card-desc{font-size:.8rem;line-height:1.35}.refine-list{display:flex;flex-direction:column;gap:1.1rem;margin-top:1rem}.refine-field{display:flex;flex-direction:column;gap:.4rem}.refine-label{font-weight:600;font-size:.95rem}.refine-rationale{margin:0;font-size:.85rem}.chip-row{display:flex;flex-wrap:wrap;gap:.4rem}.chip{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:.35rem .85rem;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.chip:hover{border-color:var(--accent)}.chip-active{background:var(--accent);color:#0b0d12;border-color:var(--accent)}.chip-active:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
