:root{--wood-dark: #3e2a1c;--wood: #5a3d28;--wood-light: #6e4c33;--board-frame: #e9dcc3;--board-frame-edge: #c9b48f;--water-deep: #16455e;--water: #1f5d7d;--water-shallow: #2d7396;--plank: #c9a06b;--plank-dark: #a97f4e;--plank-edge: #8a6238;--cream: #f6eeda;--cream-dim: #e8dcc0;--ink: #2e2419;--ink-dim: #6b5c48;--chip-back: #4a7d9e;--chip-back-edge: #35617f;--v0: #8a9a8a;--v1: #b9c4cc;--v2: #c98d5a;--v3: #d9782d;--v4: #f0c33c;--gold-deep: #c79718;--chalk-board: #2f3a33;--chalk: #e8efe6;--accent: #2e8b74;--danger: #c0483a;--p0: #d94f3d;--p1: #2e9b8f;--p2: #e3b23c;--p3: #8d6fc9;--cat-movement: #4a7fae;--cat-casting: #4e8f5c;--cat-attack: #b05244;--cat-special: #7d63ad}*{box-sizing:border-box}body{margin:0;color:var(--cream);font-family:system-ui,-apple-system,sans-serif;font-size:.875rem;background:repeating-linear-gradient(93deg,#00000012,#0000 .15rem,#0000 .9rem,#0000000d 1.05rem),linear-gradient(160deg,var(--wood-light),var(--wood) 40%,var(--wood-dark));background-attachment:fixed;min-height:100vh}h1,h2,h3,.display{font-family:Georgia,Times New Roman,serif}.money{font-variant-numeric:tabular-nums}button{background:var(--cream);color:var(--ink);border:1px solid var(--board-frame-edge);border-bottom-width:.15rem;border-radius:.35rem;padding:.35rem .75rem;cursor:pointer;font-size:.8125rem;font-weight:600;box-shadow:0 .1rem .2rem #00000040}button:hover:not(:disabled){background:#fffbef;transform:translateY(-.05rem)}button:disabled{opacity:.45;cursor:default;box-shadow:none}#app{display:flex;flex-direction:column;gap:.9rem;padding:1rem 1.25rem 2rem;max-width:90rem;margin:0 auto}.setup{margin:4rem auto;background:var(--cream);color:var(--ink);border:.4rem solid var(--board-frame-edge);border-radius:.6rem;padding:2rem;max-width:26rem;display:flex;flex-direction:column;gap:.8rem;box-shadow:0 .8rem 2rem #00000073}.setup h1{margin:0 0 .25rem;font-size:1.5rem;text-align:center}.setup .tagline{text-align:center;color:var(--ink-dim);margin-bottom:.5rem}.setup label{display:flex;justify-content:space-between;align-items:center;gap:.5rem;color:var(--ink-dim);font-weight:600}.setup input,.setup select{background:#fffbef;color:var(--ink);border:1px solid var(--board-frame-edge);border-radius:.3rem;padding:.35rem .5rem;font-size:.875rem}.action-strip{display:flex;align-items:center;gap:1rem;background:var(--cream);color:var(--ink);border-radius:.5rem;border:1px solid var(--board-frame-edge);padding:.5rem 1rem;box-shadow:0 .35rem .9rem #00000059;flex-wrap:wrap}.action-strip .turn-title{font-size:1.05rem;font-weight:700;display:flex;align-items:center;gap:.5rem}.action-strip .round-tag{color:var(--ink-dim);font-size:.8125rem}.die{display:inline-grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:1.9rem;height:1.9rem;background:#fffbef;border:1px solid var(--ink-dim);border-radius:.35rem;padding:.22rem;gap:.08rem;box-shadow:inset 0 0 .15rem #0003}.die .pip{border-radius:50%}.die .pip.on{background:var(--ink)}.stat-pill{display:inline-flex;align-items:center;gap:.35rem;background:var(--cream-dim);border:1px solid var(--board-frame-edge);border-radius:1rem;padding:.2rem .7rem;font-weight:600}.stat-pill.off{opacity:.45}.action-strip .spacer{flex:1}.end-turn{background:var(--accent);color:#fff;border-color:#1f6152}.play-area{display:flex;gap:1.1rem;align-items:flex-start}.board-col{flex:0 0 auto;display:flex;flex-direction:column;gap:.6rem}.sidebar{flex:1;min-width:20rem;display:flex;flex-direction:column;gap:.8rem}.census{display:flex;gap:.45rem;align-items:center;justify-content:center;color:var(--cream);font-size:.8125rem}.census .census-chip{display:inline-flex;align-items:center;gap:.3rem;background:#00000040;border-radius:1rem;padding:.15rem .6rem;font-weight:600}.census .dot{width:.7rem;height:.7rem;border-radius:50%;border:1px solid rgba(255,255,255,.5)}.board-wrap{display:grid;grid-template-columns:2rem auto 2rem;grid-template-rows:2rem auto 2rem;gap:.25rem;background:var(--board-frame);border:.35rem solid var(--board-frame-edge);border-radius:.75rem;padding:.55rem;box-shadow:0 1rem 2.2rem #00000080,inset 0 0 .4rem #00000026}.strip{display:grid;gap:.15rem}.strip.top{grid-column:2;grid-row:1;grid-template-columns:repeat(16,1fr)}.strip.right{grid-column:3;grid-row:2;grid-template-rows:repeat(16,1fr)}.strip.bottom{grid-column:2;grid-row:3;grid-template-columns:repeat(16,1fr)}.strip.left{grid-column:1;grid-row:2;grid-template-rows:repeat(16,1fr)}.ring-cell{position:relative;background:repeating-linear-gradient(0deg,#0000000f,#0000 .12rem,#0000 .45rem,#00000014 .55rem),var(--plank);border:1px solid var(--plank-edge);border-radius:.2rem;min-width:1.4rem;min-height:1.4rem;box-shadow:inset 0 .05rem .1rem #ffffff40}.ring-cell.reachable{cursor:pointer;background:#d8b87e;border-color:var(--accent);box-shadow:0 0 0 .12rem var(--accent),inset 0 0 .35rem #2e8b7466}.ring-cell.reachable:hover{background:#ecd096}.ring-cell.corner{background:var(--plank-dark);border:.14rem solid var(--v4);border-radius:.3rem}.corner-tl{grid-column:1;grid-row:1}.corner-tr{grid-column:3;grid-row:1}.corner-bl{grid-column:1;grid-row:3}.corner-br{grid-column:3;grid-row:3}.ring-cell .token{position:absolute;top:14%;right:14%;bottom:14%;left:14%;border-radius:50%;border:.13rem solid #fffbef;box-shadow:0 .12rem .25rem #00000080;z-index:2}.pond{grid-column:2;grid-row:2;display:grid;grid-template-columns:repeat(8,3.6rem);grid-template-rows:repeat(8,3.6rem);gap:.15rem;background:radial-gradient(circle at 50% 45%,var(--water-deep) 0%,var(--water) 55%,var(--water-shallow) 100%);border-radius:.4rem;padding:.3rem;box-shadow:inset 0 .3rem 1rem #00000073}.pond-cell{position:relative;display:flex;align-items:center;justify-content:center;border-radius:.25rem}.pond-cell.castable{cursor:pointer;box-shadow:inset 0 0 0 .14rem var(--v4);background:#f0c33c1f}.pond-cell.castable:hover{background:#f0c33c47}.chip-disc{width:2.7rem;height:2.7rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.95rem;box-shadow:0 .18rem .3rem #00000073,inset 0 .08rem .12rem #ffffff59}.chip-disc.facedown{background:radial-gradient(circle at 30% 30%,#ffffff40,#fff0 40%),repeating-radial-gradient(circle at 50% 120%,var(--chip-back) 0rem,var(--chip-back) .35rem,var(--chip-back-edge) .45rem,var(--chip-back) .55rem);border:.16rem solid var(--chip-back-edge);color:#ffffffbf;font-size:1.1rem}.chip-disc.v0{background:var(--v0);border:.16rem solid #6c7d6c;color:#33402f}.chip-disc.v1{background:var(--v1);border:.16rem solid #8f9ca6;color:#3c4650}.chip-disc.v2{background:var(--v2);border:.16rem solid #9c6034;color:#4d2c14}.chip-disc.v3{background:var(--v3);border:.16rem solid #a4551d;color:#47230a}.chip-disc.v4{background:radial-gradient(circle at 35% 30%,#ffe58a,var(--v4) 60%,var(--gold-deep));border:.16rem solid var(--gold-deep);color:#5c4405;box-shadow:0 0 .6rem #f0c33c8c,0 .18rem .3rem #00000073}.panel{background:var(--cream);color:var(--ink);border:1px solid var(--board-frame-edge);border-radius:.5rem;padding:.65rem .8rem;box-shadow:0 .35rem .9rem #0000004d}.panel h3{margin:0 0 .45rem;font-size:.95rem;color:var(--ink)}.meta{color:var(--ink-dim);font-size:.78rem}.market-sign{background:var(--chalk-board);color:var(--chalk);border:.35rem solid var(--wood-light);border-radius:.5rem;padding:.7rem .9rem;box-shadow:0 .35rem .9rem #00000059}.market-sign h3{margin:0 0 .3rem;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:#9fb8a6}.market-sign .condition{font-family:Georgia,serif;font-size:1.1rem;font-weight:700}.market-sign .details{margin-top:.15rem;color:#c7d6c9}.market-sign .countdown{margin-top:.3rem;font-size:.78rem;color:#9fb8a6}.shop-row{display:flex;gap:.6rem;align-items:stretch}.gear-card{flex:1;min-width:0;background:#fffbef;border:1px solid var(--board-frame-edge);border-radius:.45rem;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 .2rem .45rem #00000040}.gear-card .head{display:flex;align-items:center;gap:.4rem;padding:.35rem .5rem;color:#fff;font-weight:700;font-size:.8125rem}.gear-card .head svg{width:.95rem;height:.95rem;flex:0 0 auto}.gear-card.movement .head{background:var(--cat-movement)}.gear-card.casting .head{background:var(--cat-casting)}.gear-card.attack-defense .head{background:var(--cat-attack)}.gear-card.special .head{background:var(--cat-special)}.gear-card .body{padding:.4rem .5rem;font-size:.78rem;color:var(--ink);flex:1}.gear-card .foot{display:flex;align-items:center;justify-content:space-between;gap:.4rem;padding:.35rem .5rem;border-top:1px dashed var(--board-frame-edge)}.coin{display:inline-flex;align-items:center;justify-content:center;min-width:1.6rem;height:1.6rem;padding:0 .25rem;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe58a,var(--v4) 60%,var(--gold-deep));border:1px solid var(--gold-deep);color:#5c4405;font-weight:800;font-size:.78rem}.tag{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-dim);font-weight:700}.tag.sacrificial{color:var(--danger)}.angler{border-left:.35rem solid transparent}.angler.active{border-left-color:var(--accent);box-shadow:0 0 0 .14rem var(--accent),0 .35rem .9rem #0000004d}.angler .head-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.angler .who{display:flex;align-items:center;gap:.45rem;font-weight:700;font-size:.95rem}.angler .who .token{width:1rem;height:1rem;border-radius:50%;border:.12rem solid #fffbef;box-shadow:0 .08rem .2rem #0006}.hold-chips{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.4rem}.hold-chip{width:1.7rem;height:1.7rem;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.72rem;cursor:pointer;border:.12rem solid rgba(0,0,0,.25);box-shadow:0 .1rem .2rem #0000004d}.hold-chip.disabled{cursor:default;opacity:.55}.hold-chip.v0{background:var(--v0);color:#33402f}.hold-chip.v1{background:var(--v1);color:#3c4650}.hold-chip.v2{background:var(--v2);color:#4d2c14}.hold-chip.v3{background:var(--v3);color:#47230a}.hold-chip.v4{background:radial-gradient(circle at 35% 30%,#ffe58a,var(--v4) 65%,var(--gold-deep));color:#5c4405}.tray{display:flex;gap:.4rem;margin-top:.4rem;flex-wrap:wrap}.slot{flex:1;min-width:8.5rem;min-height:6rem;border-radius:.35rem}.slot.empty{border:.12rem dashed var(--board-frame-edge);background:#00000008;display:flex;align-items:center;justify-content:center;color:var(--ink-dim);font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}.slot .mini-card{width:100%;height:100%;border:1px solid var(--board-frame-edge);border-radius:.35rem;background:#fffbef;display:flex;flex-direction:column;overflow:hidden;text-align:left}.slot .mini-card .mini-head{padding:.25rem .45rem;color:#fff;font-size:.74rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 0 auto}.slot .mini-card.movement .mini-head{background:var(--cat-movement)}.slot .mini-card.casting .mini-head{background:var(--cat-casting)}.slot .mini-card.attack-defense .mini-head{background:var(--cat-attack)}.slot .mini-card.special .mini-head{background:var(--cat-special)}.slot .mini-card .mini-effect{flex:1;padding:.3rem .45rem;font-size:.7rem;line-height:1.28;color:var(--ink);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.slot .mini-card .mini-foot{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:.3rem;padding:.25rem .4rem;border-top:1px dashed var(--board-frame-edge)}.slot .mini-card .mini-value{font-size:.7rem;color:var(--ink-dim);font-weight:700}.slot .mini-card .mini-sell-btn{font-size:.65rem;padding:.15rem .45rem;border-bottom-width:.1rem}.hand{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.35rem}.log-panel .log{max-height:9rem;overflow-y:auto;font-size:.76rem;color:var(--ink-dim);border-top:1px dashed var(--board-frame-edge);padding-top:.35rem}.log div{padding:.08rem 0}.gameover{border-left:.35rem solid var(--v4)}.score-table{width:100%;border-collapse:collapse;font-size:.8125rem}.score-table th,.score-table td{text-align:left;padding:.3rem .5rem;border-bottom:1px solid var(--cream-dim)}.moment-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#140c0699;display:flex;align-items:center;justify-content:center;z-index:50;cursor:pointer;animation:backdrop-in .18s ease-out}.moment-card{background:var(--cream);color:var(--ink);border-radius:.7rem;padding:1.6rem 2.4rem;max-width:24rem;text-align:center;box-shadow:0 1.4rem 3rem #0000008c;animation:moment-in .28s cubic-bezier(.2,1.4,.4,1);border-top:.5rem solid var(--board-frame-edge)}.moment-card.vice{border-top-color:var(--danger);background:linear-gradient(180deg,#f4e3dc,var(--cream) 40%)}.moment-card.virtue{border-top-color:var(--accent);background:linear-gradient(180deg,#e0efe4,var(--cream) 40%)}.moment-card.market{background:var(--chalk-board);color:var(--chalk);border-top-color:var(--wood-light)}.moment-card.trophy{border-top-color:var(--gold-deep);background:radial-gradient(circle at 50% 30%,#f0c33c73,#f0c33c00 60%),var(--cream);animation:moment-in .28s cubic-bezier(.2,1.4,.4,1),trophy-glow 1.2s ease-in-out infinite alternate}.moment-kicker{font-size:.8rem;text-transform:uppercase;letter-spacing:.14em;font-weight:800;opacity:.75}.moment-title{font-family:Georgia,serif;font-size:1.7rem;font-weight:700;margin:.35rem 0}.moment-text{font-size:.9rem;line-height:1.45}.moment-note{margin-top:.5rem;font-size:.78rem;font-style:italic;opacity:.7}.moment-hint{margin-top:.9rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;opacity:.5}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes moment-in{0%{opacity:0;transform:translateY(1.4rem) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes trophy-glow{0%{box-shadow:0 1.4rem 3rem #0000008c,0 0 1.2rem #f0c33c59}to{box-shadow:0 1.4rem 3rem #0000008c,0 0 2.4rem #f0c33cbf}}.toast-host{position:fixed;left:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.4rem;z-index:40;pointer-events:none}.toast{background:var(--cream);color:var(--ink);border:1px solid var(--board-frame-edge);border-left:.3rem solid var(--board-frame-edge);border-radius:.4rem;padding:.4rem .8rem;font-size:.8125rem;font-weight:600;box-shadow:0 .3rem .8rem #00000059;animation:toast-in .22s cubic-bezier(.2,1.3,.4,1),toast-out .3s ease-in 1.75s forwards}.toast.good{border-left-color:var(--accent)}.toast.turn{border-left-color:var(--cat-movement)}@keyframes toast-in{0%{opacity:0;transform:translate(-1.2rem)}to{opacity:1;transform:translate(0)}}@keyframes toast-out{to{opacity:0;transform:translateY(.5rem)}}.round-track{display:inline-flex;align-items:center;gap:.18rem}.rdot{width:.32rem;height:.32rem;border-radius:50%;background:var(--cream-dim);border:1px solid var(--board-frame-edge)}.rdot.market-tick{width:.45rem;height:.45rem;border-color:var(--gold-deep)}.rdot.done{background:var(--ink-dim)}.rdot.current{background:var(--accent);border-color:var(--accent);transform:scale(1.35)}.confetti-host{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:60}.confetti-piece{position:absolute;top:-1rem;width:.5rem;height:.8rem;border-radius:.1rem;animation:confetti-fall 3s linear forwards}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:.7}}.tut-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#140c068c;z-index:55;animation:backdrop-in .18s ease-out}.tut-ring{position:fixed;z-index:56;border:.2rem solid var(--v4);border-radius:.5rem;box-shadow:0 0 0 200vmax #140c0640,0 0 1.2rem #f0c33ccc;pointer-events:none;transition:all .25s ease}.tut-card{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%);z-index:57;background:var(--cream);color:var(--ink);border-radius:.7rem;border-top:.5rem solid var(--v4);padding:1.1rem 1.5rem;max-width:28rem;box-shadow:0 1rem 2.5rem #0000008c;animation:moment-in .25s cubic-bezier(.2,1.3,.4,1);text-align:center}.tut-dots{display:flex;justify-content:center;gap:.3rem;margin:.7rem 0 .6rem}.tut-dot{width:.4rem;height:.4rem;border-radius:50%;background:var(--cream-dim);border:1px solid var(--board-frame-edge)}.tut-dot.on{background:var(--gold-deep);transform:scale(1.3)}.tut-buttons{display:flex;justify-content:center;gap:.5rem}.die.rolling{animation:die-roll .5s ease-out}@keyframes die-roll{0%{transform:rotate(0) scale(.6)}40%{transform:rotate(200deg) scale(1.15)}70%{transform:rotate(340deg) scale(.95)}to{transform:rotate(360deg) scale(1)}}
