:root{color-scheme:light;--ink: #172019;--muted: #5c6a60;--paper: #f3f0e8;--panel: #fffdf7;--felt: #1c5a46;--felt-dark: #123d31;--line: #d7d2c6;--gold: #d49a32;--coral: #d86349;--focus: #2159d1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 15% 10%,rgb(212 154 50 / 10%),transparent 24rem),var(--paper);color:var(--ink)}button,input,select,textarea{font:inherit}button{touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:24px 0 48px}.topbar{display:flex;gap:24px;align-items:center;justify-content:space-between}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,5vw,3.4rem);letter-spacing:-.04em}h2{margin-bottom:8px;font-family:Georgia,Times New Roman,serif;letter-spacing:-.025em}.eyebrow{margin-bottom:4px;color:var(--muted);font-size:.73rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.top-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}button,select{min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);padding:9px 14px;font-weight:700;cursor:pointer}button:hover:not(:disabled){border-color:var(--felt);transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.48}.primary{border-color:var(--felt);background:var(--felt);color:#fff}.text-button{border-color:transparent;background:transparent;color:var(--muted)}.live-status{min-height:28px;margin:18px 0 8px;color:var(--felt-dark);font-weight:750}.error-banner{margin-bottom:16px;border-left:5px solid var(--coral);border-radius:8px;background:#fff1ed;padding:12px 16px}.setup-card{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:24px 40px;margin:28px auto 40px;border:1px solid var(--line);border-radius:24px;background:var(--panel);padding:clamp(24px,5vw,52px);box-shadow:0 24px 60px #27322a1a}.setup-copy{grid-row:span 3;align-self:center}.setup-copy h2{max-width:12ch;font-size:clamp(2.2rem,5vw,4.5rem);line-height:.98}fieldset{margin:0;border:0;padding:0}legend{margin-bottom:10px;font-weight:800}.choice{display:flex;gap:10px;align-items:center;margin-bottom:8px;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.choice.selected{border-color:var(--felt);background:#edf7f2}.choice span{display:grid}.choice small{color:var(--muted)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden}.difficulty-selector{grid-template-columns:repeat(5,minmax(0,1fr))}.segmented label{position:relative}.segmented input{position:absolute;opacity:0}.segmented span{display:grid;min-height:44px;min-width:0;place-items:center;border-right:1px solid var(--line);text-transform:capitalize;cursor:pointer}.segmented label:last-child span{border-right:0}.segmented input:checked+span{background:var(--felt);color:#fff}.segmented input:focus-visible+span{outline:3px solid var(--focus);outline-offset:-3px}.start-button{width:100%}.resume-card{grid-column:2;display:grid;grid-template-columns:1fr auto;gap:6px 12px;align-items:center;border-top:1px solid var(--line);padding-top:18px}.resume-card p{margin:2px 0 0;color:var(--muted)}.resume-actions{display:grid;gap:6px}.resume-actions .text-button{min-height:auto;padding:2px;font-size:.8rem}.physical-entry-callout{grid-column:2;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border-top:1px solid var(--line);padding-top:18px}.physical-entry-callout p{margin:3px 0 0;color:var(--muted);font-size:.86rem}.game-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:16px 0;border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:10px 14px}.game-toolbar>div{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.status-chip{border-radius:999px;background:#e5f2eb;color:var(--felt-dark);padding:6px 10px;font-weight:800}.table{position:relative;overflow:hidden;border:8px solid #6d4b2e;border-radius:30px;background:linear-gradient(145deg,var(--felt),var(--felt-dark));color:#fff;box-shadow:0 24px 60px #0e2a2147}.opponent-zone,.player-zone,.build-zone{padding:14px 24px}.opponent-zone{display:grid;grid-template-columns:minmax(310px,.8fr) minmax(410px,1.2fr);gap:24px;align-items:center}.build-zone{display:grid;grid-template-columns:minmax(210px,.42fr) minmax(0,1.58fr);gap:24px;align-items:center;border-block:1px solid rgb(255 255 255 / 18%);background:#071c163d}.player-zone{display:grid;grid-template-columns:minmax(590px,1.7fr) minmax(270px,.8fr);gap:4px 18px;align-items:end}.player-zone>.zone-heading{grid-column:1 / -1}.zone-heading{display:flex;justify-content:space-between;align-items:center;gap:18px}.zone-heading h2{margin-bottom:0}.zone-heading .eyebrow{color:#d6e4dd}.zone-heading.compact p:last-child{margin-bottom:0;color:#d6e4dd}.mini-hand{display:flex;min-width:148px;min-height:68px;align-items:flex-start;justify-content:center;padding:8px 18px 0}.opponent-hand-card{position:relative;margin-left:-20px;transform:rotate(var(--opponent-rotation)) translateY(var(--opponent-lift));transform-origin:50% 120%}.opponent-hand-card:first-child{margin-left:0}.opponent-hand-card .card-face{width:42px;height:60px;font-size:.85rem}.pile-row,.personal-piles{display:flex;gap:12px;align-items:end;margin-top:0}.opponent-piles{justify-content:flex-end}.stock-display,.pile-display{position:relative;display:grid;justify-items:center;gap:5px;color:#eef6f2;font-size:.72rem}.count-badge{position:absolute;top:-6px;right:-7px;min-width:28px;border:2px solid white;border-radius:999px;background:var(--coral);color:#fff;padding:3px 5px;font-size:.75rem;font-weight:900;text-align:center}.build-grid{display:grid;grid-template-columns:repeat(4,minmax(90px,1fr));gap:14px;margin-top:0}.pile-button{position:relative;display:grid;min-width:84px;justify-items:center;gap:5px;border:2px solid transparent;background:#ffffff1a;color:#fff}.pile-button:disabled{opacity:.66}.pile-button.legal-destination{border-color:#ffe08a;background:#ffe08a2e;opacity:1;box-shadow:0 0 0 3px #ffe08a33}.pile-button.drag-over{border-color:#fff;background:#ffffff40;opacity:1;transform:translateY(-4px) scale(1.025);box-shadow:0 0 0 5px #ffe08a6b}.selected-source{border-color:#fff!important;opacity:1!important;box-shadow:0 0 0 4px var(--gold)!important}.pile-caption,.next-value{font-size:.72rem;font-weight:800}.next-value{color:#d6e4dd}.personal-piles{align-items:stretch}.stock-pile{flex:0 0 112px}.discard-grid{display:grid;grid-template-columns:repeat(4,minmax(86px,1fr));flex:1;gap:12px}.hand{display:flex;min-height:126px;align-items:flex-end;justify-content:center;margin-top:0;padding:14px 12px 2px;perspective:900px}.hand-card{position:relative;z-index:var(--fan-z);display:block;min-width:0;min-height:0;margin-left:-16px;border:2px solid transparent;background:transparent;color:#fff;padding:3px;transform:rotate(var(--fan-rotation)) translateY(var(--fan-lift));transform-origin:50% 130%;touch-action:none}.hand-card:first-child{margin-left:0}.hand-card:disabled{opacity:.52}.hand-card:hover:not(:disabled),.hand-card:focus-visible,.hand-card.selected-source{z-index:20;transform:rotate(0) translateY(-14px) scale(1.04)}.hand-card.is-dragging{opacity:.3}.empty-hand{align-self:center;margin:0;color:#d6e4dd;font-weight:800}.card-face{position:relative;display:grid;width:58px;height:82px;place-items:center;border:3px solid #f7f2e8;border-radius:9px;background:#fffdf7;color:var(--felt-dark);box-shadow:0 5px #00000029;font-family:Georgia,Times New Roman,serif;font-size:1.7rem;font-weight:900}.card-value{line-height:1}.card-corner{position:absolute;top:4px;left:5px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:.65rem;line-height:1}.card-corner-bottom{inset:auto 5px 4px auto;transform:rotate(180deg)}.card-back-mark{font-size:1.1em}.card-face.wild{background:conic-gradient(from 45deg,#f8d267,#e26954,#78a8d8,#60a979,#f8d267);color:#14251d}.card-back{background:repeating-linear-gradient(45deg,#d86349 0 8px,#f4cc73 8px 16px);color:#462e21}.discard-stack{position:relative;display:block;width:58px;height:var(--stack-height);min-height:82px}.discard-stack-card{position:absolute;top:calc(var(--stack-index) * var(--stack-offset));left:0;display:block;transition:top .12s ease}.discard-stack-card:nth-child(3n+1){transform:rotate(-1.4deg)}.discard-stack-card:nth-child(3n+2){transform:translate(1px) rotate(1.2deg)}.discard-stack-card:nth-child(3n){transform:translate(-1px) rotate(-.4deg)}.drag-preview{position:fixed;z-index:100;display:block;pointer-events:none;filter:drop-shadow(0 14px 14px rgb(0 0 0 / 30%));transform:translate(-50%,-55%) rotate(5deg) scale(1.06)}.stock-pile,.discard-grid .pile-button{touch-action:none}.opponent-card-flight{position:absolute;z-index:80;top:0;left:0;display:block;width:var(--flight-card-width);height:var(--flight-card-height);perspective:700px;pointer-events:none;animation:opponent-play .52s cubic-bezier(.24,.8,.35,1) forwards;filter:drop-shadow(0 12px 10px rgb(0 0 0 / 28%))}.opponent-card-flight .card-face{width:100%;height:100%}.opponent-card-flipper{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d}.opponent-card-flipper.flip-to-reveal{animation:opponent-flip .52s cubic-bezier(.24,.8,.35,1) forwards}.opponent-card-flipper.face-up-flight{transform:rotateY(0)}.flight-face{position:absolute;inset:0;display:block;backface-visibility:hidden}.flight-face-back{transform:rotateY(180deg)}@keyframes opponent-flip{0%,34%{transform:rotateY(180deg)}72%,to{transform:rotateY(0)}}@keyframes opponent-play{0%{transform:translate(var(--flight-from-x),var(--flight-from-y)) rotate(9deg) scale(.62)}to{transform:translate(var(--flight-to-x),var(--flight-to-y)) rotate(0) scale(1)}}.replay-studio,.history,.result-panel{margin-top:18px;border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:18px}.replay-studio-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.replay-studio-heading h2{margin-bottom:0}.quality-summary{display:grid;max-width:540px;gap:3px;border:1px solid #98c8ac;border-radius:12px;background:#e5f2eb;padding:10px 12px;color:var(--felt-dark)}.quality-summary span{font-size:.82rem}.quality-observed{border-color:#d0a74d;background:#fff3cf}.quality-partial{border-color:#d87862;background:#ffe5df}.timeline-controls{display:grid;grid-template-columns:minmax(150px,1fr) auto auto auto auto auto minmax(180px,1fr);gap:8px;align-items:center;margin-top:16px}.timeline-controls input[type=range]{grid-column:1 / -1;width:100%}.turn-jump{display:grid;grid-template-columns:auto minmax(120px,1fr);gap:8px;align-items:center;margin-left:auto;font-size:.82rem;font-weight:800}.replay-detail-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr);gap:12px;margin-top:16px}.board-diff,.replay-annotations{border:1px solid var(--line);border-radius:12px;background:#fbfaf7;padding:14px}.board-diff h3,.replay-annotations h3{margin-bottom:6px}.board-diff p,.replay-annotations p{margin-bottom:0;color:var(--muted)}.board-diff ul,.replay-annotations ul{margin:8px 0 0;padding-left:20px}.annotation-list li{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:6px}.annotation-list button{min-height:auto;padding:0 4px}.annotation-form{display:grid;gap:9px;margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.annotation-form label,.physical-entry label,.event-entry-form label{display:grid;gap:5px;color:var(--muted);font-size:.8rem;font-weight:750}.annotation-form textarea,.event-entry-form textarea,.event-entry-form input{width:100%;min-height:42px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:9px 10px;color:var(--ink)}.physical-entry{margin:22px 0 40px}.physical-entry.setup-card{display:grid;grid-template-columns:1fr;max-width:920px;gap:22px}.physical-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:18px}.physical-entry.setup-card .physical-heading{border:0;padding:0}.physical-heading p:last-child{margin-bottom:0;color:var(--muted)}.physical-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.physical-setup-grid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px}.card-entry-row{display:flex;flex-wrap:wrap;gap:8px}.card-entry-row label{min-width:94px;flex:1}.compact-cards{grid-column:1 / -1}.record-diagnostic{display:grid;grid-template-columns:auto minmax(200px,1fr) minmax(220px,1fr) auto;gap:12px;align-items:center;margin:12px 0;border-left:5px solid var(--coral);border-radius:10px;background:#fff1ed;padding:12px 14px}.diagnostic-correction{color:#6c3d32}.record-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;margin:12px 0}.record-summary>div{display:grid;gap:2px;border:1px solid #98c8ac;border-radius:11px;background:#e5f2eb;padding:10px 12px}.record-summary span{color:var(--muted);font-size:.78rem}.record-summary .record-builds{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,1fr)}.record-warnings{margin:0 0 12px;border:1px solid #d87862;border-radius:11px;background:#ffe5df;padding:12px 14px;color:#6c3025}.record-warnings ul{margin:7px 0 0;padding-left:20px}.physical-workspace{display:grid;grid-template-columns:minmax(310px,.78fr) minmax(420px,1.22fr);gap:14px;align-items:start}.event-entry-form,.recorded-events{display:grid;gap:12px;border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:18px}.event-entry-form h3,.recorded-events h3{margin:0}.event-form-actions,.event-row-actions{display:flex;flex-wrap:wrap;gap:7px}.recorded-events>ol{display:grid;gap:8px;margin:0;padding:0;list-style:none}.recorded-events>ol>li{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:9px 10px}.recorded-events>ol>li.event-error{border-color:var(--coral);background:#fff1ed}.event-row-actions button{min-height:34px;padding:5px 9px;font-size:.78rem}.revision-list{color:var(--muted);font-size:.82rem}.branch-banner{display:flex;gap:12px;align-items:baseline;margin-top:12px;border:1px solid #d0a74d;border-radius:12px;background:#fff3cf;padding:10px 14px;color:#5f481a}.history{display:grid;grid-template-columns:minmax(150px,.4fr) 1fr;gap:20px}.history ol{margin:0;columns:2;color:var(--muted)}.history li{margin-bottom:6px;break-inside:avoid}.result-panel{text-align:center;padding:28px}.utility-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}details{border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:14px 16px}summary{font-weight:850;cursor:pointer}details[open] summary{margin-bottom:14px}.settings-list{display:grid;gap:12px}.settings-list label:not(.toggle){display:grid;gap:6px}.toggle{display:flex;gap:8px;align-items:center}.rules-list{padding-left:20px}.rules-list li{margin-bottom:8px}.technical-meta{display:grid;gap:8px}.technical-meta div{display:grid;grid-template-columns:90px 1fr}.technical-meta dt{color:var(--muted)}.technical-meta dd{margin:0;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}footer{margin-top:28px;border-top:1px solid var(--line);padding-top:18px;color:var(--muted);font-size:.8rem}[data-motion=full] button,[data-motion=full] .card-face{transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}[data-motion=reduced] *{animation-duration:.001ms!important;transition-duration:.001ms!important}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media(max-width:920px){.opponent-zone,.player-zone,.build-zone{display:block;padding:clamp(16px,3vw,28px)}.player-zone>.zone-heading{grid-column:auto}.opponent-piles,.build-grid,.personal-piles{margin-top:18px}.hand{min-height:150px;margin-top:16px;padding:22px 40px 4px}}@media(max-width:760px){.app-shell{width:min(100% - 20px,680px);padding-top:14px}.topbar{align-items:flex-start}.top-actions{max-width:180px}.setup-card{grid-template-columns:1fr;padding:24px 18px}.setup-copy,.resume-card,.physical-entry-callout{grid-column:1;grid-row:auto}.table{border-width:5px;border-radius:20px}.zone-heading{align-items:flex-start}.build-grid{grid-template-columns:repeat(2,1fr)}.opponent-piles{display:grid;grid-template-columns:repeat(5,1fr)}.personal-piles{display:grid;grid-template-columns:88px 1fr}.stock-pile{min-width:0}.discard-grid{grid-template-columns:repeat(2,1fr)}.hand{grid-template-columns:repeat(5,minmax(52px,1fr));gap:5px}.hand-card{min-width:0;padding-inline:2px}.card-face{width:46px;height:66px;font-size:1.35rem}.replay-studio-heading,.branch-banner{display:grid}.timeline-controls{grid-template-columns:repeat(3,1fr)}.physical-heading,.record-diagnostic{display:grid}.physical-actions{justify-content:flex-start}.physical-setup-grid,.record-summary{grid-template-columns:repeat(2,1fr)}.physical-workspace{grid-template-columns:1fr}.turn-jump,.timeline-controls input[type=range]{grid-column:1 / -1}.turn-jump{margin-left:0}.replay-detail-grid,.history{grid-template-columns:1fr}.history ol{columns:1}.utility-grid{grid-template-columns:1fr}}@media(max-width:460px){.topbar{display:grid}.top-actions{max-width:none;justify-content:flex-start}.top-actions button{flex:1;padding-inline:8px}.game-toolbar{align-items:flex-start}.game-toolbar,.zone-heading{display:grid}.mini-hand{justify-content:flex-end}.opponent-piles{grid-template-columns:repeat(3,1fr)}.opponent-piles .pile-display:nth-last-child(-n+2){grid-column:span 1}.personal-piles,.physical-setup-grid,.record-summary,.record-summary .record-builds{grid-template-columns:1fr}.recorded-events>ol>li{display:grid}.stock-pile{width:100%}.hand{grid-template-columns:repeat(3,1fr)}}
