:root{--ink:#edf0e8;--muted:#a8b4a9;--gold:#d8b56d;--deep:#07100f;--line:rgba(238,236,215,.17);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--deep)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% -10%,#254039 0,#0d1c1a 40%,#060c0c 100%);color:var(--ink)}button{font:inherit}.hidden{display:none!important}.app{min-height:100vh;padding:24px 32px 40px}.topbar{height:58px;display:flex;align-items:flex-start;justify-content:space-between;position:relative;z-index:20}.brand{display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.22em;color:#d7ded4}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border:1px solid rgba(216,181,109,.7);border-radius:50%;font:600 9px Georgia,serif;color:var(--gold)}.scoreboard{min-width:150px;text-align:right}.scoreboard>div:first-child{display:flex;justify-content:flex-end;align-items:baseline;gap:5px}.score-label{font-size:9px;letter-spacing:.18em;color:var(--muted);margin-right:8px}.scoreboard strong{font:400 28px Georgia,serif}.goal{font:12px Georgia,serif;color:var(--muted)}.meter{height:2px!important;background:rgba(255,255,255,.1);margin-top:7px;overflow:hidden}.meter i{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--gold),#f0d99d);transition:width .5s cubic-bezier(.2,.8,.2,1)}
.intro{min-height:calc(100vh - 122px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding-bottom:8vh}.eyebrow{font-size:9px;letter-spacing:.28em;color:var(--gold);margin:0 0 22px}.intro h1{font:400 clamp(48px,7vw,92px)/.86 Georgia,serif;letter-spacing:-.045em;margin:0}.intro h1 em{font-weight:400;color:#cdd7cc}.intro>p:not(.eyebrow){color:var(--muted);font:16px/1.6 Georgia,serif;margin:28px 0 32px}.primary,.secondary{border-radius:999px;padding:13px 22px;cursor:pointer;transition:.2s}.primary{border:1px solid var(--gold);background:var(--gold);color:#111814;font-weight:650}.primary:hover{background:#edcf8f;transform:translateY(-1px)}.secondary{border:1px solid var(--line);color:var(--ink);background:transparent}.secondary:hover{border-color:var(--gold)}
.game{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:26px;max-width:1460px;margin:8px auto 0}.table-shell{position:relative;min-height:calc(100vh - 118px);display:grid;place-items:center}.table{position:relative;width:min(100%,1050px);aspect-ratio:1.55;border-radius:48%/18%;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,rgba(122,95,50,.22),transparent 45%),linear-gradient(110deg,#172b24,#0e201c 45%,#173029);border:1px solid rgba(214,188,127,.35);box-shadow:0 50px 90px #020605,0 4px 0 #513f28,0 11px 0 #261d14,inset 0 0 100px rgba(0,0,0,.48),inset 0 0 0 10px rgba(227,199,136,.025)}.table:after{content:"";position:absolute;inset:14px;border:1px solid rgba(223,195,131,.09);border-radius:inherit;pointer-events:none}.grain{position:absolute;inset:-20%;opacity:.15;pointer-events:none;background:repeating-radial-gradient(ellipse at 20% 50%,transparent 0 18px,rgba(224,194,126,.22) 19px,transparent 20px 35px);transform:rotate(-7deg)}.grain-b{transform:rotate(8deg) scale(1.4);opacity:.06}.constellation{position:absolute;color:rgba(225,197,127,.22);font-size:18px}.c1{left:31%;top:42%}.c2{left:72%;top:50%}.c3{left:56%;top:18%}.table-title{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);text-align:center;opacity:.09;pointer-events:none}.table-title span{display:block;font-size:8px;letter-spacing:.35em}.table-title b{font:400 30px Georgia,serif;letter-spacing:.03em}.piece{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%) rotate(var(--r));z-index:var(--z);width:112px;background:none;border:0;color:var(--ink);cursor:pointer;text-align:center;padding:0;transition:left .7s cubic-bezier(.2,.85,.25,1),top .7s cubic-bezier(.2,.85,.25,1),transform .35s,filter .25s}.piece:hover,.piece:focus-visible{filter:drop-shadow(0 0 15px rgba(225,192,116,.5));outline:none}.piece.selected .object-art{filter:drop-shadow(0 0 14px rgba(242,210,136,.75));transform:translateY(-5px) scale(1.08)}.piece.targetable:not(.selected) .object-art{animation:targetPulse 1.7s infinite}.object-art{height:82px;display:grid;place-items:center;transition:.25s;filter:drop-shadow(0 16px 10px rgba(0,0,0,.42))}.object-art svg{width:82px;height:82px;overflow:visible}.object-name{display:block;margin-top:4px;font:12px Georgia,serif;text-shadow:0 2px 8px #000}.object-detail{display:block;font-size:7px;letter-spacing:.08em;color:#aebbb0;margin-top:2px;text-shadow:0 2px 5px #000}.reaction{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);z-index:30;width:min(76%,620px);padding:18px 24px;text-align:center;border:1px solid rgba(227,198,126,.3);background:rgba(5,13,12,.88);backdrop-filter:blur(12px);font:17px/1.4 Georgia,serif;color:#f2e8d0;opacity:0;pointer-events:none}.reaction.show{animation:omen 2.4s both}
.command{align-self:center;border-left:1px solid var(--line);padding:8px 0 8px 24px;min-height:520px;display:flex;flex-direction:column}.move-state{position:relative;padding-bottom:22px;border-bottom:1px solid var(--line)}.step,.move-feed span{display:block;color:var(--gold);font-size:8px;letter-spacing:.22em;margin-bottom:8px}.move-state strong{font:400 18px/1.3 Georgia,serif;display:block;padding-right:42px}.quiet{position:absolute;right:0;bottom:19px;border:0;background:none;color:#839087;font-size:10px;cursor:pointer}.quiet:disabled{opacity:.25}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:22px 0}.action{border:1px solid var(--line);background:rgba(255,255,255,.025);color:#dfe6dc;padding:11px 8px;border-radius:4px;font-size:11px;cursor:pointer;transition:.18s}.action:hover:not(:disabled),.action.active{border-color:var(--gold);background:rgba(216,181,109,.1);color:#f4d996}.action:disabled{opacity:.28;cursor:not-allowed}.move-feed{border-top:1px solid var(--line);padding-top:20px}.move-feed>div{display:flex;justify-content:space-between;align-items:baseline}.move-feed strong{font:400 28px Georgia,serif}.move-feed strong.positive{color:#d9ca8a}.move-feed strong.negative{color:#ec8c70}.move-feed p{font:13px/1.55 Georgia,serif;color:var(--muted);min-height:62px}.reveal-link{margin-top:auto;border:0;background:none;color:#74837a;font-size:10px;text-decoration:underline;text-underline-offset:4px;cursor:pointer;text-align:left;padding:10px 0}.reveal-link:hover{color:#d3dbd2}
.reveal{max-width:940px;margin:7vh auto;padding-bottom:80px}.reveal h2{font:400 clamp(40px,6vw,72px)/1 Georgia,serif;margin:0;letter-spacing:-.035em}.reveal-lead{font:18px/1.6 Georgia,serif;color:var(--muted);max-width:650px}.final-score{margin:38px 0;display:flex;align-items:baseline;gap:18px}.final-score span{font-size:9px;letter-spacing:.22em;color:var(--gold)}.final-score strong{font:400 54px Georgia,serif}.ledger{border-top:1px solid var(--line)}.ledger-row{display:grid;grid-template-columns:54px minmax(150px,1fr) 70px 2fr;gap:16px;padding:18px 0;border-bottom:1px solid var(--line);align-items:start}.ledger-row .turn{font-size:9px;color:#79877d;letter-spacing:.12em}.ledger-row .move{font:14px/1.35 Georgia,serif}.ledger-row .pts{text-align:right;font:20px Georgia,serif}.ledger-row .why{font-size:12px;line-height:1.55;color:var(--muted)}.reveal-actions{display:flex;gap:10px;margin-top:32px}
@keyframes targetPulse{50%{transform:scale(1.07);filter:drop-shadow(0 0 12px rgba(226,190,110,.45))}}@keyframes omen{0%{opacity:0;transform:translate(-50%,-44%)}15%,74%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0;transform:translate(-50%,-56%)}}
@media(max-width:900px){.app{padding:18px 18px 30px}.game{grid-template-columns:1fr;margin-top:0}.table-shell{min-height:auto}.table{width:100%;aspect-ratio:1.1;border-radius:34%/13%}.command{border-left:0;border-top:1px solid var(--line);padding:18px 0 0;min-height:330px}.piece{width:92px}.object-art{height:66px}.object-art svg{width:64px;height:64px}.object-name{font-size:10px}.object-detail{display:none}.actions{grid-template-columns:repeat(3,1fr)}.reveal{margin-top:4vh}.ledger-row{grid-template-columns:38px 1fr 50px}.ledger-row .why{grid-column:2/4}}
@media(max-width:520px){.app{padding:14px 12px 28px}.topbar{height:50px}.brand>span:last-child{display:none}.scoreboard{min-width:130px}.intro h1{font-size:48px}.game{gap:14px}.table{aspect-ratio:.82;border-radius:27%/9%}.piece{width:76px}.object-art{height:58px}.object-art svg{width:56px;height:56px}.object-name{font-size:9px}.actions{gap:6px}.action{padding:10px 5px;font-size:10px}.reaction{font-size:14px;padding:14px;width:82%}.ledger-row{gap:9px}.reveal-actions{flex-direction:column}}
@media print{body{background:#fff;color:#111}.topbar,.game,.reveal-actions{display:none!important}.reveal{display:block!important;margin:0}.eyebrow,.final-score span{color:#555}.reveal-lead,.ledger-row .why{color:#333}.ledger,.ledger-row{border-color:#bbb}}

/* V2 — direct manipulation */
.game-v2{display:block;max-width:1180px;margin:0 auto}.game-v2 .table-shell{min-height:calc(100vh - 170px)}.game-v2 .table{width:min(100%,1120px)}.game-v2 .piece{transform:translate(-50%,-50%)}.game-v2 .object-art{position:relative;transform:rotate(var(--r))}.play-instruction{height:50px;display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;align-items:center;max-width:1120px;margin:0 auto;color:#dfe7dc}.play-instruction>span{grid-row:1/3;width:27px;height:27px;display:grid;place-items:center;border:1px solid rgba(216,181,109,.5);border-radius:50%;color:var(--gold)}.play-instruction strong{font:400 14px Georgia,serif}.play-instruction small{font-size:9px;color:#7f8f84;letter-spacing:.04em}.game-footer{display:flex;justify-content:space-between;align-items:center;max-width:1120px;margin:-14px auto 0;color:#708078;font-size:10px}.game-footer .reveal-link{margin:0;text-align:right}.piece{touch-action:none;user-select:none;-webkit-user-select:none}.piece.held{transition:none!important;filter:drop-shadow(0 24px 18px rgba(0,0,0,.72)) drop-shadow(0 0 20px rgba(232,202,129,.6));transform:translate(-50%,-58%) scale(1.13);cursor:grabbing}.piece.drop-target .object-art{filter:drop-shadow(0 0 22px rgba(238,203,119,.95));transform:scale(1.1)}.piece.drop-beside .object-art{filter:drop-shadow(14px 0 18px rgba(238,203,119,.8))}.manipulating .piece:not(.held):not(.drop-target){opacity:.62}.drop-hint{position:absolute;transform:translate(-50%,-50%);z-index:80;width:94px;height:94px;border:1px solid rgba(241,208,130,.8);border-radius:50%;display:grid;place-items:center;align-content:center;pointer-events:none;background:radial-gradient(circle,rgba(216,181,109,.18),transparent 67%);box-shadow:0 0 35px rgba(216,181,109,.18)}.drop-hint span{font:28px Georgia,serif;color:#f1d492;line-height:1}.drop-hint b{font-size:7px;letter-spacing:.18em;color:#f1d492;margin-top:5px}.toast{position:fixed;z-index:200;left:50%;bottom:26px;transform:translate(-50%,24px);width:min(620px,calc(100vw - 28px));display:grid;grid-template-columns:72px 1fr;gap:17px;align-items:center;padding:17px 21px;border:1px solid rgba(255,255,255,.15);background:rgba(5,13,12,.93);backdrop-filter:blur(18px);box-shadow:0 22px 55px rgba(0,0,0,.48);opacity:0;pointer-events:none;transition:.35s cubic-bezier(.2,.8,.2,1)}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.positive{border-color:rgba(221,190,112,.58)}.toast.negative{border-color:rgba(226,113,87,.55)}.toast-score{font:400 38px Georgia,serif;color:#e9cf8c;border-right:1px solid var(--line);padding-right:16px;text-align:center}.toast.negative .toast-score{color:#ef8e75}.toast strong{display:block;font:400 17px Georgia,serif;margin-bottom:3px}.toast p{margin:0;color:#abb8ae;font:13px/1.45 Georgia,serif}.point-burst{position:absolute;z-index:150;transform:translate(-50%,-50%);pointer-events:none;opacity:0;font:400 34px Georgia,serif;text-shadow:0 3px 16px #000}.point-burst.burst{animation:scoreBurst 1.25s cubic-bezier(.15,.8,.2,1) both}.point-burst.positive{color:#ffe3a0}.point-burst.negative{color:#ff9a81}.is-wet .object-art:after{content:"•••";position:absolute;color:#81d9ed;font-size:16px;letter-spacing:3px;transform:translateY(28px);animation:drip 1.5s infinite}.is-glowing .object-art{filter:drop-shadow(0 0 18px rgba(134,206,255,.85))}.is-extinguished .flame{opacity:.08}.is-extinguished .object-art:after{content:"∿";position:absolute;color:#9ba6a2;font-size:24px;transform:translateY(-34px);animation:smoke 2.4s infinite}.is-awake .object-art{animation:awake 1.2s ease-out}.is-perched .object-art{filter:drop-shadow(0 0 17px rgba(188,160,205,.65))}
@keyframes scoreBurst{0%{opacity:0;transform:translate(-50%,-30%) scale(.4)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.35)}68%{opacity:1;transform:translate(-50%,-80%) scale(1)}100%{opacity:0;transform:translate(-50%,-135%) scale(.85)}}@keyframes drip{50%{transform:translateY(34px);opacity:.45}}@keyframes smoke{50%{transform:translate(5px,-44px);opacity:.35}}@keyframes awake{0%{transform:rotate(0)}35%{transform:rotate(18deg) scale(1.1)}70%{transform:rotate(-10deg)}100%{transform:rotate(0)}}
@media(max-width:900px){.game-v2 .table-shell{min-height:auto;margin-top:8px}.play-instruction{height:58px}.game-footer{margin-top:10px}.toast{bottom:14px}.drop-hint{width:75px;height:75px}}
@media(max-width:520px){.game-v2 .table{aspect-ratio:.82}.play-instruction{grid-template-columns:30px 1fr;padding:0 3px}.play-instruction strong{font-size:12px}.play-instruction small{font-size:8px}.game-footer{padding:0 4px}.toast{grid-template-columns:56px 1fr;padding:13px 14px;gap:12px}.toast-score{font-size:30px;padding-right:11px}.toast strong{font-size:15px}.toast p{font-size:12px}.drop-hint{width:64px;height:64px}.drop-hint span{font-size:21px}}

/* V3 — the table is alive */
.fx-canvas{position:absolute;inset:0;z-index:60;pointer-events:none;width:100%;height:100%}.scene-word{position:absolute;z-index:130;left:50%;top:50%;transform:translate(-50%,-50%) scale(.55) rotate(-4deg);opacity:0;pointer-events:none;white-space:nowrap;font:700 clamp(30px,5vw,68px)/1 Georgia,serif;letter-spacing:-.035em;text-shadow:0 8px 28px #000}.scene-word.gold{color:#ffe5a5}.scene-word.water{color:#a8efff}.scene-word.fire{color:#ffd17c}.scene-word.bad{color:#ff9079}.scene-word.play{animation:sceneWord 1.05s cubic-bezier(.14,.82,.18,1) both}.game-v2.resolving .piece{pointer-events:none}.game-v2.resolving .table{box-shadow:0 50px 90px #020605,0 4px 0 #513f28,0 11px 0 #261d14,inset 0 0 120px rgba(208,176,101,.12),inset 0 0 0 10px rgba(227,199,136,.04)}
[data-id="candle"] .flame{transform-origin:50% 100%;animation:livingFlame 1.35s ease-in-out infinite}[data-id="rain"] .object-art{animation:livingRain 3.6s ease-in-out infinite}[data-id="heron"] .object-art{transform-origin:50% 80%;animation:livingHeron 4.4s ease-in-out infinite}[data-id="cat"] .object-art{animation:livingCat 3.1s ease-in-out infinite}[data-id="comet"] .object-art{animation:livingComet 5.5s ease-in-out infinite}[data-id="pear"] .object-art{animation:livingPear 2.8s ease-in-out infinite}[data-id="compass"] .object-art{animation:livingCompass 4s ease-in-out infinite}.held .object-art,.resolving .object-art{animation-play-state:paused}
@keyframes sceneWord{0%{opacity:0;transform:translate(-50%,-42%) scale(.45) rotate(-7deg);filter:blur(8px)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.18) rotate(2deg);filter:blur(0)}65%{opacity:.92;transform:translate(-50%,-53%) scale(1) rotate(-1deg)}100%{opacity:0;transform:translate(-50%,-76%) scale(.9) rotate(-2deg);filter:blur(3px)}}@keyframes livingFlame{0%,100%{transform:scaleY(1) rotate(-2deg)}50%{transform:scaleY(1.2) scaleX(.88) rotate(4deg)}}@keyframes livingRain{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-4px) rotate(2deg)}}@keyframes livingHeron{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(2deg) translateY(-2px)}}@keyframes livingCat{0%,88%,100%{transform:translateY(0)}92%{transform:translateY(-3px) rotate(-2deg)}96%{transform:translateY(0) rotate(2deg)}}@keyframes livingComet{0%,100%{filter:drop-shadow(0 0 3px rgba(240,186,94,.25))}50%{filter:drop-shadow(0 0 15px rgba(240,186,94,.7));transform:translate(2px,-3px)}}@keyframes livingPear{0%,100%{filter:brightness(1)}50%{filter:brightness(1.17) drop-shadow(0 0 9px rgba(255,133,76,.4))}}@keyframes livingCompass{0%,80%,100%{transform:rotate(var(--r))}88%{transform:rotate(calc(var(--r) + 4deg))}94%{transform:rotate(calc(var(--r) - 3deg))}}

