:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#172033;background:#eef2e6;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}.start-screen{display:grid;min-height:100vh;place-items:center;padding:20px;background:linear-gradient(180deg,#ffffffc2,#eef2e6f0),linear-gradient(115deg,rgba(56,189,248,.16),transparent 36%),linear-gradient(295deg,rgba(250,204,21,.18),transparent 34%),#eef2e6}.start-board{display:grid;grid-template-columns:minmax(360px,1fr) minmax(320px,.82fr);gap:clamp(28px,4vw,48px);align-items:start;width:min(1080px,100%);padding:clamp(24px,5vw,48px);border:1px solid #c6cfbd;border-radius:8px;background:linear-gradient(180deg,#fffffff5,#f9fbf6fa),#fff;box-shadow:0 24px 70px #17203329}.start-primary{display:grid;gap:24px}.start-copy{max-width:520px;margin:18px 0 0;color:#51605f;font-size:1.2rem;line-height:1.45}.start-visual{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;max-width:520px;padding:14px;border:1px solid #c6cfbd;border-radius:8px;background:linear-gradient(180deg,#d8e3d5e6,#f7f9f1eb),#f7f9f1;box-shadow:inset 0 0 0 1px #ffffff94}.start-visual strong{position:absolute;right:14px;bottom:13px;color:#b91c1c;font-size:.78rem;font-weight:1000;text-transform:uppercase}.start-mini-board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;max-width:270px;padding:8px;border:8px solid #5f7567;border-radius:8px;background:#8aa792;box-shadow:0 10px 22px #1720331f}.start-mini-tile{position:relative;display:block;aspect-ratio:1;border:1px solid rgba(23,32,51,.14);border-radius:6px;background:#d8ded2;overflow:hidden}.start-mini-mist{background:linear-gradient(120deg,transparent 28%,rgba(255,255,255,.66) 46%,transparent 64%),#cbd5cb}.start-mini-path:after,.start-mini-start:after,.start-mini-gate:after,.start-mini-bridge:after{position:absolute;top:42%;right:8%;bottom:42%;left:8%;border-radius:999px;background:#c6a46c;content:""}.start-mini-start{background:#7dd3fc}.start-mini-start:before{position:absolute;top:18%;right:36%;bottom:18%;left:36%;border-radius:3px;background:#2563eb;content:""}.start-mini-part:before,.start-mini-plank:before{position:absolute;left:20%;right:20%;top:30%;height:14%;border-radius:2px;background:#92400e;box-shadow:0 9px #a16207;content:""}.start-mini-crystal:before{position:absolute;top:22%;right:30%;bottom:22%;left:30%;border-radius:4px;background:#7dd3fc;clip-path:polygon(50% 0,100% 30%,74% 100%,26% 100%,0 30%);content:""}.start-mini-gate{background:#c7d2fe}.start-mini-gate:before{position:absolute;left:50%;top:18%;width:0;height:0;border-right:9px solid transparent;border-bottom:16px solid #38bdf8;border-left:9px solid transparent;content:"";transform:translate(-50%)}.start-mini-bridge{background:#fef3c7}.start-mini-track{display:grid;gap:5px;padding:6px 0 24px}.start-mini-track span{width:16px;height:16px;border:1px solid rgba(185,28,28,.18);border-radius:50%;background:#fecaca}.start-mini-track .track-danger{background:#dc2626;box-shadow:0 0 0 3px #dc262629}.start-mini-track .track-gate{border-radius:3px;background:#4f46e5}.start-options{display:grid;gap:18px;align-self:start;padding-top:140px}.option-label{margin:0 0 10px;color:#51605f;font-size:.84rem;font-weight:900;text-transform:uppercase}.difficulty-cards{display:grid;gap:10px}.compact-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.difficulty-card{display:grid;gap:4px;min-height:74px;justify-items:start;padding:14px;text-align:left;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.difficulty-card strong{font-size:1.1rem}.difficulty-card span{color:#51605f;font-size:.9rem}.difficulty-card.active{border-color:#255b5e;background:#e6f3ee;box-shadow:inset 0 0 0 2px #255b5e}.difficulty-card:hover:not(:disabled){transform:translateY(-1px)}.player-count-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.count-button{min-height:54px;border:2px solid #c6cfbd;background:#ffffffe0;font-size:1.15rem;font-weight:900}.count-button.active{border-color:#2f6d5f;background:#e9f5ed}.start-button{min-height:56px;border-color:#255b5e;background:#255b5e;color:#fff;font-size:1.08rem;font-weight:900}button,input{font:inherit}button{min-height:42px;border:1px solid #b7c0aa;border-radius:8px;background:#fff;color:#172033;cursor:pointer;touch-action:manipulation;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background-color .14s ease}button:hover{border-color:#3b6f70}button:hover:not(:disabled){box-shadow:0 5px 14px #17203314;transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:focus-visible,input:focus-visible{outline:3px solid #facc15;outline-offset:2px}.app-shell{min-height:100vh;padding:12px 18px 18px;background:linear-gradient(180deg,#ffffffbd,#eef2e6eb),radial-gradient(circle at top left,rgba(94,234,212,.24),transparent 32%),#eef2e6}.top-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1220px;margin:0 auto 10px}.eyebrow{margin:0 0 6px;color:#51605f;font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}h1,h2{margin:0;letter-spacing:0}h1{max-width:620px;font-size:clamp(1.45rem,3vw,2.25rem);line-height:1.04}h2{font-size:2.4rem;line-height:1}.control-cluster{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px}.segmented{display:grid;grid-template-columns:repeat(3,minmax(74px,1fr));overflow:hidden;border:1px solid #b7c0aa;border-radius:8px;background:#fff}.segmented button{min-height:42px;border:0;border-radius:0;background:transparent;font-weight:700}.segmented button.active{background:#2f6f73;color:#fff}.toggle{display:flex;align-items:center;gap:8px;min-height:42px;padding:0 12px;border:1px solid #b7c0aa;border-radius:8px;background:#fff;font-weight:700}.primary-button{border-color:#255b5e;background:#255b5e;color:#fff;font-weight:800}.primary-button:hover:not(:disabled),.start-button:hover:not(:disabled){background:#1f4e50;box-shadow:0 8px 18px #255b5e3d}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:12px;max-width:1420px;margin:0 auto}.board-panel{position:relative;height:calc(100vh - 118px);min-height:600px;max-height:840px;overflow:hidden;border:1px solid #c6cfbd;border-radius:8px;background:#d8e3d5;box-shadow:0 20px 50px #1720331f}.board-loading{display:grid;width:100%;height:100%;min-height:inherit;place-items:center;padding:24px;color:#255b5e;font-size:1rem;font-weight:900}.board-loading:before{display:grid;width:min(280px,100%);min-height:96px;place-items:center;border:1px solid rgba(37,91,94,.24);border-radius:8px;background:#ffffffc7;box-shadow:0 14px 32px #1720331f;content:"Building the forge..."}.board-loading{font-size:0}.turn-callout{position:absolute;left:16px;top:16px;z-index:2;display:grid;max-width:min(430px,calc(100% - 32px));gap:4px;padding:12px 14px;border:1px solid rgba(23,32,51,.14);border-radius:8px;background:#ffffffe6;box-shadow:0 14px 34px #17203324;pointer-events:none}.turn-callout-part,.turn-callout-place,.turn-callout-ready,.turn-callout-run,.turn-callout-win,.turn-callout-safe{border-color:#15803d57;background:#ecfdf3f0}.turn-callout-dragon,.turn-callout-lose,.turn-callout-mistake{border-color:#b91c1c57;background:#fef2f2f0}.turn-callout span{color:#51605f;font-size:.72rem;font-weight:900;text-transform:uppercase}.turn-callout strong{font-size:1rem;line-height:1.25}.action-banner{position:absolute;left:50%;top:16px;z-index:4;display:grid;grid-template-columns:46px minmax(0,1fr);align-items:center;min-width:min(360px,calc(100% - 190px));max-width:min(520px,calc(100% - 190px));gap:10px;padding:10px 12px;border:1px solid rgba(37,91,94,.28);border-radius:8px;background:#e6f3eef5;box-shadow:0 18px 38px #1720332e;transform:translate(-50%);animation:action-pop 1.1s ease both;pointer-events:none}.action-icon{display:grid;width:38px;height:38px;place-items:center;border-radius:999px;background:#166534;color:#fff;font-size:.84rem;font-weight:1000;line-height:1;font-variant-numeric:tabular-nums}.action-banner span:not(.action-icon){display:block;color:#51605f;font-size:.72rem;font-weight:900;text-transform:uppercase}.action-banner strong{display:block;overflow:hidden;color:#172033;font-size:1rem;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.action-banner-dragon,.action-banner-lose,.action-banner-mistake{border-color:#b91c1c59;background:#fee2e2f5;animation-name:action-alert}.action-banner-dragon .action-icon,.action-banner-lose .action-icon,.action-banner-mistake .action-icon{background:#b91c1c}.action-banner-part .action-icon{background:#b45309}.action-banner-part{border-color:#b4530957;background:#fff7edf5}.action-banner-part strong{color:#7c2d12}@keyframes action-pop{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.96)}16%,78%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-4px) scale(.98)}}@keyframes action-alert{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.96)}14%{opacity:1;transform:translate(calc(-50% - 4px)) translateY(0) scale(1)}20%{transform:translate(calc(-50% + 4px)) translateY(0) scale(1)}28%,78%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%) translateY(-4px) scale(.98)}}.r3f-board-shell{position:relative;width:100%;height:100%;min-height:600px;background:#d8e3d5;touch-action:manipulation}.board-zoom-controls{position:absolute;top:14px;right:14px;z-index:3;display:flex;gap:6px}.board-zoom-controls button{display:grid;width:38px;min-height:38px;place-items:center;border-color:#1720332e;background:#ffffffe6;font-size:1.15rem;font-weight:900;line-height:1}.board-zoom-controls button:disabled{opacity:.45;cursor:default}.board-canvas{display:block;width:100%;height:100%;min-height:600px}.board-accessibility-grid{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;gap:3px;padding:clamp(18px,4vw,44px);pointer-events:none}.board-accessibility-grid button{min-width:0;min-height:0;aspect-ratio:1;border:0;background:transparent;pointer-events:none}.board-accessibility-grid button:not(:disabled){pointer-events:auto;touch-action:manipulation}.board-grid{display:grid;width:100%;height:100%;min-height:620px;gap:10px;align-content:center;justify-content:center;padding:clamp(18px,4vw,44px);perspective:900px}.board-tile{position:relative;display:grid;place-items:center;min-width:0;aspect-ratio:1;min-height:0;border:1px solid rgba(23,32,51,.16);border-radius:8px;background:#d6d3d1;box-shadow:0 10px #565f5247,0 16px 22px #1720331f;color:#172033;transform:rotateX(52deg) rotate(-4deg);transform-style:preserve-3d;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.board-tile:after{content:"";position:absolute;top:10%;right:10%;bottom:10%;left:10%;border-radius:6px;border:1px solid rgba(255,255,255,.38);pointer-events:none}.board-tile:disabled{cursor:default}.board-tile.selectable{border-color:#facc15;box-shadow:0 10px #715b1252,0 0 0 4px #facc1573,0 18px 28px #17203329}.board-tile.selectable:hover{transform:rotateX(52deg) rotate(-4deg) translateY(-5px)}.tile-hidden{background:#4b5563}.tile-start{background:#22c55e}.tile-open{background:#d6d3d1}.tile-deadEnd{background:#a8a29e}.tile-lockedDoor{background:#c08457}.tile-brokenBridge{background:#b45309}.tile-gateCore{background:#38bdf8}.tile-dragonRune{background:#f87171}.tile-pitTrap{background:#78716c}.tile-shortcut{background:#84cc16}.tile-safeRoom{background:#5eead4}.tile-finalGate{background:#818cf8}.tile-token{z-index:1;display:grid;place-items:center;width:min(74%,72px);height:min(48%,42px);border-radius:8px;background:#ffffffc7;box-shadow:0 5px 10px #1720332e;font-size:clamp(.56rem,1.1vw,.82rem);font-weight:900;line-height:1;transform:translateZ(18px) rotate(4deg);text-align:center}.player-token{width:min(86%,82px);background:#2563eb;color:#fff}.crystal-token{background:#e0f2fe;color:#075985}.item-token{background:#f5f3ff;color:#5b21b6}.hidden-token{width:34%;height:34%;border-radius:50%;background:#ffffff38}.glyph-token{color:#172033}.side-panel{display:flex;flex-direction:column;gap:8px}.dragon-card,.inventory-card,.mission-card,.players-card,.math-card,.piece-card,.event-card,.bridge-kit-card,.dragon-draw-card,.stat-card,.message-box{border:1px solid #c6cfbd;border-radius:8px;background:#ffffffe0;box-shadow:0 12px 34px #17203314}.dragon-card,.inventory-card,.mission-card,.players-card,.math-card,.piece-card,.event-card,.bridge-kit-card,.dragon-draw-card,.stat-card{padding:12px}.mission-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:10px 0 0;padding:0;list-style:none}.objective-strip{display:grid;gap:3px;margin-top:10px;padding:9px 10px;border:1px solid rgba(37,91,94,.24);border-radius:8px;background:#e6f3ee}.objective-strip span{color:#51605f;font-size:.72rem;font-weight:900;text-transform:uppercase}.objective-strip strong{color:#255b5e;font-size:1rem}.mission-steps li{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;min-height:34px;padding:6px 8px;border:1px solid #d4dccb;border-radius:8px;background:#f7f9f1}.mission-steps span{display:grid;width:20px;height:20px;place-items:center;border-radius:50%;background:#255b5e;color:#fff;font-size:.72rem;font-weight:1000}.mission-steps strong{min-width:0;color:#172033;font-size:.88rem;line-height:1}.math-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.math-stats div{display:grid;gap:2px;min-height:48px;place-items:center;border:1px solid #d4dccb;border-radius:8px;background:#f7f9f1}.math-stats span{color:#51605f;font-size:.72rem;font-weight:900;text-transform:uppercase}.math-stats strong{color:#255b5e;font-size:1.35rem}.player-list{display:grid;gap:7px;margin-top:10px}.player-pill{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;min-height:36px;padding:7px 9px;border:1px solid #c6cfbd;border-radius:8px;background:#f9fbf6;color:#172033}.player-pill.active{border-color:#2f6d5f;background:#e9f5ed;box-shadow:inset 0 0 0 2px #2f6d5f24}.player-pill.skipped{border-color:#a16207;background:#fef3c7}.player-dot{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 2px #ffffffe6,0 0 0 3px #17203329}.player-pill small{color:#51605f;font-weight:900}.event-card ol{display:grid;gap:7px;margin:10px 0 0;padding-left:18px;color:#2f3a4c;font-size:.82rem;font-weight:700;line-height:1.25}.piece-card{display:grid;gap:10px}.current-piece{display:grid;gap:8px;min-height:124px;place-items:center;padding:12px;border:2px solid #2f6d5f;border-radius:8px;background:#e9f5ed;color:#172033;font-weight:900;text-align:center;box-shadow:inset 0 0 0 2px #2f6d5f29}.current-piece>span{color:#51605f;font-size:.78rem;font-weight:1000;text-transform:uppercase}.current-piece small{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border:1px solid rgba(47,109,95,.2);border-radius:999px;background:#ffffff9e;color:#255b5e;font-size:.72rem;font-weight:900;text-transform:uppercase}.piece-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(86px,.52fr);gap:8px}.piece-actions-swap-only{grid-template-columns:1fr}.path-hand{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.path-choice{display:grid;gap:7px;min-height:128px;padding:9px;border:2px solid #c6cfbd;background:#f9fbf6;color:#172033;font-weight:900;line-height:1.1}.path-choice.selected{border-color:#2f6d5f;background:#e9f5ed;box-shadow:inset 0 0 0 2px #2f6d5f29}.path-choice:disabled{cursor:default;opacity:.78}.piece-preview{position:relative;width:88px;height:88px;margin:0 auto;border:1px solid #c6cfbd;border-radius:8px;background:linear-gradient(#c6a46c,#c6a46c) center / 28px 28px no-repeat,#eef2e6}.piece-preview.mini{width:64px;height:64px;background:linear-gradient(#c6a46c,#c6a46c) center / 20px 20px no-repeat,#eef2e6}.piece-preview.unknown{display:grid;place-items:center;border-color:#8a6a47;background:#fff7e7;box-shadow:inset 0 0 0 2px #8a6a471f}.piece-preview.unknown strong{color:#7a4b23;font-size:2rem;line-height:1}.piece-preview.mini .piece-exit-north,.piece-preview.mini .piece-exit-south{left:22px;width:20px;height:25px}.piece-preview.mini .piece-exit-east,.piece-preview.mini .piece-exit-west{top:22px;width:25px;height:20px}.piece-exit{position:absolute;display:block;background:#c6a46c}.piece-exit-north,.piece-exit-south{left:30px;width:28px;height:34px}.piece-exit-north{top:0}.piece-exit-south{bottom:0}.piece-exit-east,.piece-exit-west{top:30px;width:34px;height:28px}.piece-exit-east{right:0}.piece-exit-west{left:0}.panel-heading,.stat-card{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-heading span,.stat-card span{color:#51605f;font-size:.84rem;font-weight:800;text-transform:uppercase}.panel-heading strong,.stat-card strong{font-size:1.35rem}.bridge-kit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.bridge-kit-part{display:grid;min-height:72px;place-items:center;gap:5px;padding:8px;border:1px dashed #a8b2a0;border-radius:8px;background:#f7f9f1;color:#64706c;text-align:center}.bridge-kit-part.collected{border-style:solid;border-color:#255b5e;background:#e6f3ee;color:#172033;box-shadow:inset 0 0 0 2px #255b5e29}.bridge-kit-part.just-collected{animation:kit-pop .92s ease both}.bridge-kit-icon{position:relative;display:block;width:34px;height:26px}.bridge-kit-plank:before,.bridge-kit-plank:after{position:absolute;content:"";display:block}.bridge-kit-plank:before,.bridge-kit-plank:after{left:2px;width:30px;height:8px;border-radius:2px;background:#92400e}.bridge-kit-plank:before{top:4px}.bridge-kit-plank:after{bottom:4px}.dragon-track{display:grid;gap:3px;margin-top:10px}.dragon-distance{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:8px;padding:8px 10px;border:1px solid rgba(185,28,28,.18);border-radius:8px;background:#fff7ed;color:#7c2d12}.dragon-distance span{font-size:1.42rem;font-weight:1000;line-height:1}.dragon-distance strong{font-size:.78rem;font-weight:900;text-transform:uppercase}.dragon-alert{border-color:#b91c1c6b;box-shadow:inset 0 0 0 2px #dc26261f,0 12px 34px #b91c1c24}.dragon-relief{border-color:#0891b26b;background:linear-gradient(180deg,#ecfeffdb,#fffffffa),#fff;box-shadow:inset 0 0 0 2px #0891b21a,0 12px 34px #0891b21f}.dragon-pressure{display:grid;min-height:28px;place-items:center;margin-top:8px;padding:5px 8px;border:1px solid rgba(37,91,94,.16);border-radius:8px;background:#f7f9f1;color:#51605f;font-size:.78rem;font-weight:900;text-transform:uppercase}.dragon-pressure.warning{border-color:#b4530947;background:#fff7ed;color:#9a3412}.dragon-pressure.danger{border-color:#b91c1c57;background:#fef2f2;color:#991b1b}.dragon-pressure.relief{border-color:#0891b242;background:#ecfeff;color:#075985}.track-space{display:grid;place-items:center;min-width:0;aspect-ratio:1;border:1px solid #c6cfbd;border-radius:6px;background:#e7eadf;color:#172033;font-size:.7rem;font-weight:900}.dragon-past{border-color:#b91c1c38;background:#fecaca}.dragon-danger-space{border-color:#b91c1c57;background:#fee2e2}.dragon-here{border-color:#b91c1c;background:#dc2626;color:#fff;animation:dragon-space-pulse .8s ease-in-out infinite alternate}.gate-space{border-color:#4f46e5;background:#c7d2fe;color:#312e81;font-size:.56rem;line-height:1;text-align:center}@keyframes dragon-space-pulse{0%{box-shadow:0 0 #b91c1c00}to{box-shadow:0 0 0 3px #b91c1c38}}.dragon-card-result{display:grid;gap:4px;margin-top:10px;min-height:70px;place-items:center;padding:12px;border:1px solid #b7c0aa;border-radius:8px;background:linear-gradient(145deg,#ffffffb8,#e6f3eef5),#e6f3ee;text-align:center;animation:draw-pop .22s ease-out}.dragon-card-result span{color:#51605f;font-size:.72rem;font-weight:900;text-transform:uppercase}.dragon-card-result strong{color:#255b5e;font-size:1.05rem}.dragon-card-result.danger{border-color:#b91c1c66;background:linear-gradient(145deg,#ffffffb3,#fee2e2f2),#fee2e2;animation-name:dragon-card-alert}.dragon-card-result.danger strong{color:#b91c1c}.dragon-card-result.repelled{border-color:#0891b252;background:linear-gradient(145deg,#ffffffb8,#ecfefff5),#ecfeff}.dragon-card-result.repelled strong{color:#075985}@keyframes draw-pop{0%{transform:translateY(4px) scale(.98);opacity:.55}to{transform:translateY(0) scale(1);opacity:1}}@keyframes dragon-card-alert{0%{transform:scale(.96);opacity:.55}22%{transform:translate(-3px) scale(1.02);opacity:1}36%{transform:translate(3px) scale(1.02)}54%,to{transform:translate(0) scale(1);opacity:1}}@keyframes kit-pop{0%{transform:scale(.94);box-shadow:inset 0 0 0 2px #255b5e29}45%{transform:translateY(-4px) scale(1.08);box-shadow:inset 0 0 0 2px #255b5e3d,0 0 0 5px #facc156b,0 12px 20px #92400e29}to{transform:translateY(0) scale(1);box-shadow:inset 0 0 0 2px #255b5e29}}@keyframes action-pop-mobile{0%{opacity:0;transform:translateY(-8px) scale(.96)}16%,78%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-4px) scale(.98)}}.inventory-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.inventory-slot{display:flex;min-height:84px;align-items:center;justify-content:center;flex-direction:column;padding:8px;text-align:center}.inventory-slot span{line-height:1.1}.inventory-slot small{color:#51605f;font-size:.68rem;line-height:1.15}.inventory-slot.filled{border-color:#7c3aed;background:#f5f3ff;font-weight:800}.inventory-slot.empty{border:1px dashed #a8b2a0;border-radius:8px;color:#6b7280}.message-box{display:grid;gap:4px;min-height:68px;padding:14px;line-height:1.35}.message-box span{color:#51605f;font-size:.72rem;font-weight:900;text-transform:uppercase}.message-box strong{color:#172033;font-size:1rem}.message-box-part,.message-box-place,.message-box-ready,.message-box-run,.message-box-win,.message-box-safe{border-color:#15803d57;background:#ecfdf3}.message-box-dragon,.message-box-lose,.message-box-mistake{border-color:#b91c1c57;background:#fef2f2}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:18px;background:#1720338f}.modal{width:min(520px,100%);padding:24px;border:1px solid #c6cfbd;border-radius:8px;background:#fff;box-shadow:0 28px 90px #17203340}.end-modal{position:relative;overflow:hidden;width:min(560px,100%);text-align:center;animation:end-pop .34s ease-out both}.end-modal-won{border-color:#15803d57;background:radial-gradient(circle at 50% 0%,rgba(134,239,172,.34),transparent 38%),linear-gradient(180deg,#fff,#ecfdf3),#fff;box-shadow:0 34px 100px #1720334d,0 0 0 8px #ecfdf32e}.end-modal-lost{border-color:#b91c1c57;background:linear-gradient(180deg,#fff,#fef2f2),#fff}.end-icon{display:grid;width:72px;height:72px;place-items:center;margin:0 auto 14px;border-radius:999px;background:#166534;color:#fff;font-size:1.25rem;font-weight:1000;box-shadow:0 14px 28px #16653438}.end-modal-lost .end-icon{background:#b91c1c}@keyframes end-pop{0%{opacity:0;transform:translateY(16px) scale(.93)}58%{opacity:1;transform:translateY(-2px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.victory-summary{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0 2px}.victory-summary span{display:grid;gap:2px;min-height:62px;align-content:center;border:1px solid rgba(21,128,61,.28);border-radius:8px;background:#ffffffbd;box-shadow:0 8px 18px #17203314}.victory-summary strong{color:#14532d;font-size:1.05rem}.victory-summary small{color:#5e6d65;font-size:.72rem;font-weight:900;text-transform:uppercase}.victory-bridge{position:relative;display:grid;grid-template-columns:1fr repeat(3,42px) 1fr;align-items:center;gap:7px;width:min(360px,100%);min-height:78px;margin:18px auto 4px;padding:12px 18px;border:1px solid rgba(21,128,61,.2);border-radius:8px;background:radial-gradient(circle at 84% 16%,rgba(250,204,21,.45),transparent 22%),linear-gradient(180deg,#e0f2fe99,#ecfdf3c7),#ecfdf3;overflow:hidden}.victory-bridge:before{position:absolute;inset:auto 16px 15px;height:10px;border-radius:999px;background:#0e749038;content:""}.victory-burst{position:absolute;right:42px;top:12px;width:48px;height:48px;border-radius:999px;background:linear-gradient(#facc15,#facc15) 50% 0 / 4px 100% no-repeat,linear-gradient(90deg,#facc15,#facc15) 0 50% / 100% 4px no-repeat,linear-gradient(45deg,transparent 45%,#facc15 46% 54%,transparent 55%),linear-gradient(-45deg,transparent 45%,#facc15 46% 54%,transparent 55%);opacity:.72}.victory-dragon{position:absolute;left:24px;bottom:12px;width:52px;height:24px;border-radius:999px 999px 10px 10px;background:#dc2626;box-shadow:8px -8px 0 -2px #ef4444,34px 6px 0 -7px #991b1b;opacity:.42;transform:rotate(-8deg)}.victory-dragon:before,.victory-dragon:after{position:absolute;content:""}.victory-dragon:before{right:-14px;top:6px;width:18px;height:8px;border-radius:999px;background:#991b1b}.victory-dragon:after{left:12px;top:-8px;width:10px;height:10px;border-radius:2px 8px;background:#7f1d1d;transform:rotate(35deg)}.victory-bank{height:46px;border-radius:6px;background:#5f7567;box-shadow:inset 0 0 0 2px #ffffff29}.victory-plank{z-index:1;height:52px;border-radius:4px;background:linear-gradient(90deg,rgba(255,255,255,.16),transparent 42%),#a16207;box-shadow:0 8px 12px #1720331f}.victory-knight{position:absolute;left:50%;top:14px;z-index:2;display:grid;width:34px;height:34px;place-items:center;border:3px solid #ffffff;border-radius:999px;background:#2563eb;color:#fff;font-size:.86rem;font-weight:1000;transform:translate(-50%);box-shadow:0 8px 14px #2563eb40}@media(prefers-reduced-motion:no-preference){.victory-summary span{animation:reward-pop .46s ease-out both}.victory-summary span:nth-child(2){animation-delay:90ms}.victory-summary span:nth-child(3){animation-delay:.18s}.victory-burst{animation:burst-spin 1.4s ease-out both}.victory-dragon{animation:dragon-defeated 1s ease-out both}.victory-knight{animation:victory-cross .9s .14s ease-out both}}@keyframes reward-pop{0%{opacity:0;transform:translateY(10px) scale(.9)}70%{opacity:1;transform:translateY(-3px) scale(1.04)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes burst-spin{0%{opacity:0;transform:rotate(-28deg) scale(.4)}58%{opacity:.8;transform:rotate(16deg) scale(1.15)}to{opacity:.72;transform:rotate(0) scale(1)}}@keyframes dragon-defeated{0%{opacity:0;transform:translate(34px) translateY(-4px) rotate(6deg)}62%{opacity:.5;transform:translate(-6px) translateY(4px) rotate(-12deg)}to{opacity:.42;transform:translate(0) translateY(0) rotate(-8deg)}}@keyframes victory-cross{0%{transform:translate(-160px) translateY(8px) scale(.86)}66%{transform:translate(-50%) translateY(-4px) scale(1.08)}to{transform:translate(-50%) translateY(0) scale(1)}}.math-report{display:grid;gap:10px;margin:16px 0 4px;padding:14px;border:1px solid #d7ddcf;border-radius:10px;background:#f7f9f3}.report-headline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.report-headline div{display:grid;gap:2px}.report-headline span{font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;color:#6b7a72}.report-headline strong{font-size:1.25rem;color:#1f2a3b}.report-ops{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.report-op{padding:4px 10px;border-radius:999px;background:#e8ede2;color:#3d4a44;font-weight:700;font-variant-numeric:tabular-nums}.report-op.weak{background:#fef3c7;color:#92400e}.report-practice{margin:0;color:#92400e;font-weight:700}.report-empty{margin:16px 0 4px;color:#6b7a72}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.confetti span{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;opacity:0}@media(prefers-reduced-motion:no-preference){.confetti span{animation:confetti-fall 1.8s ease-in forwards}}.confetti span:nth-child(4n+1){background:#16a34a}.confetti span:nth-child(4n+2){background:#2563eb}.confetti span:nth-child(4n+3){background:#d97706}.confetti span:nth-child(4n){background:#dc2626}.confetti span:nth-child(1){left:6%;animation-delay:0ms}.confetti span:nth-child(2){left:14%;animation-delay:.12s}.confetti span:nth-child(3){left:22%;animation-delay:40ms}.confetti span:nth-child(4){left:30%;animation-delay:.22s}.confetti span:nth-child(5){left:38%;animation-delay:80ms}.confetti span:nth-child(6){left:46%;animation-delay:.3s}.confetti span:nth-child(7){left:54%;animation-delay:.16s}.confetti span:nth-child(8){left:62%;animation-delay:20ms}.confetti span:nth-child(9){left:70%;animation-delay:.26s}.confetti span:nth-child(10){left:78%;animation-delay:.1s}.confetti span:nth-child(11){left:86%;animation-delay:.34s}.confetti span:nth-child(12){left:94%;animation-delay:60ms}.confetti span:nth-child(13){left:10%;animation-delay:.38s}.confetti span:nth-child(14){left:26%;animation-delay:.2s}.confetti span:nth-child(15){left:50%;animation-delay:.42s}.confetti span:nth-child(16){left:66%;animation-delay:.14s}.confetti span:nth-child(17){left:82%;animation-delay:.46s}.confetti span:nth-child(18){left:42%;animation-delay:.36s}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(360px) rotate(540deg)}}.streak-badge{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:5px 12px;border-radius:999px;background:#ecfdf3;border:1px solid rgba(21,128,61,.28);color:#166534;font-size:.85rem;font-weight:700}.streak-badge strong{font-size:1rem}.difficulty-star{margin-left:6px;color:#d97706}@media(prefers-reduced-motion:no-preference){.streak-now{display:inline-block;animation:streak-pop .32s ease-out}.math-card.milestone{animation:milestone-pulse .6s ease-out}}@keyframes streak-pop{0%{transform:scale(1)}40%{transform:scale(1.35);color:#16a34a}to{transform:scale(1)}}@keyframes milestone-pulse{0%{box-shadow:0 0 #16a34a80}to{box-shadow:0 0 0 14px #16a34a00}}@media(prefers-reduced-motion:reduce){.confetti span,.streak-now,.math-card.milestone,.bridge-ready-status,.run-status,.victory-summary span,.victory-burst,.victory-dragon,.victory-knight{animation:none!important}}.helper-text{margin:12px 0 0;color:#51605f;line-height:1.45}.rules-modal{display:grid;gap:16px}.rules-modal h2{margin-bottom:0}.rules-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.rules-grid div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 9px;min-height:76px;align-items:center;padding:12px;border:1px solid #c6cfbd;border-radius:8px;background:#f9fbf6}.rules-grid .rule-step{display:grid;width:32px;height:32px;place-items:center;grid-row:span 2;border-radius:50%;background:#255b5e;color:#fff;font-weight:1000}.rules-grid strong{color:#172033;font-size:1rem}.rules-grid span{color:#51605f;font-size:.9rem;line-height:1.25}.rules-mode-note{display:grid;grid-template-columns:auto 1fr auto 1fr;align-items:center;gap:8px;padding:10px 12px;border:1px solid #c6cfbd;border-radius:8px;background:#e6f3ee}.rules-mode-note strong{color:#172033}.rules-mode-note span{color:#51605f;font-weight:800}.rules-check{display:flex;align-items:center;gap:8px;color:#2f3a4c;font-weight:800}.item-find-icon{position:relative;display:block;width:70px;height:70px;margin:18px auto 0;border-radius:8px;background:#e6f3ee;box-shadow:inset 0 0 0 2px #255b5e1f}.item-find-icon:before,.item-find-icon:after{position:absolute;content:"";display:block}.item-find-icon.item-dragonRepellerCrystal:before{left:19px;top:11px;width:32px;height:42px;background:#38bdf8;clip-path:polygon(50% 0,100% 28%,78% 100%,22% 100%,0 28%)}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:20px}.choice-grid button{min-height:72px;border-color:#3b6f70;background:#f7f9f1;font-size:1.5rem;font-weight:900}.choice-grid button:hover{background:#e6f3ee;box-shadow:inset 0 0 0 2px #255b5e1f}.math-modal{text-align:center}.mistake-modal{overflow:hidden;text-align:center;background:radial-gradient(circle at 50% 0%,rgba(250,204,21,.16),transparent 34%),#fff}.mistake-modal-danger{border-color:#b91c1c5c;background:radial-gradient(circle at 50% 0%,rgba(254,202,202,.52),transparent 38%),#fff}.mistake-equation{display:grid;gap:8px;margin-top:18px;padding:16px;border:2px solid rgba(180,83,9,.24);border-radius:8px;background:#fff7ed}.mistake-modal-danger .mistake-equation{border-color:#b91c1c42;background:#fef2f2}.mistake-equation span,.mistake-equation strong{color:#172033;font-size:1.8rem;font-weight:1000;line-height:1}.mistake-equation strong{color:#9a3412}.mistake-modal-danger .mistake-equation strong{color:#b91c1c}.mistake-result{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.mistake-result div{display:grid;gap:4px;min-height:76px;place-items:center;padding:10px;border:1px solid #c6cfbd;border-radius:8px;background:#f7f9f1}.mistake-result span{color:#51605f;font-size:.74rem;font-weight:900;text-transform:uppercase}.mistake-result strong{color:#172033;font-size:1.55rem;line-height:1}.equation-lock{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px;padding:16px;border:2px solid rgba(37,91,94,.24);border-radius:8px;background:#f7f9f1}.equation-part,.equation-answer{display:grid;min-width:54px;min-height:54px;place-items:center;border-radius:8px;font-size:1.65rem;font-weight:1000}.equation-part{border:1px solid #c6cfbd;background:#fff;color:#172033}.equation-answer{border:2px solid #255b5e;background:#e6f3ee;color:#255b5e}.answer-form{display:grid;gap:10px;margin-top:20px}.answer-form label{font-weight:800}.answer-form input{min-height:52px;border:1px solid #b7c0aa;border-radius:8px;padding:0 12px;font-size:1.4rem}.dragon-card-backdrop{background:#0c0406b8;perspective:800px}.dragon-card-popup{width:min(260px,80vw);overflow:hidden;border:1px solid rgba(220,55,38,.42);border-radius:16px;background:linear-gradient(170deg,#1f0c10,#0d0407);box-shadow:0 0 0 1px #dc37262e,0 0 48px #dc372647,0 48px 96px #000000b8;animation:dragon-card-deal .38s cubic-bezier(.34,1.44,.64,1) both;text-align:center;color:#fff}.dragon-card-art-area{position:relative;display:grid;place-items:center;padding:36px 24px 28px;background:radial-gradient(circle at 50% 70%,rgba(220,55,38,.22),transparent 62%);border-bottom:1px solid rgba(220,55,38,.22);overflow:hidden}.dragon-card-emoji{position:relative;z-index:1;font-size:5.5rem;line-height:1;animation:dragon-hover 3s ease-in-out infinite;filter:drop-shadow(0 0 16px rgba(220,55,38,.65))}.dragon-card-glow{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:140px;height:40px;border-radius:50%;background:#dc372638;filter:blur(16px)}.dragon-card-body{padding:20px 20px 22px}.dragon-card-eyebrow{margin:0 0 6px;color:#dc3726bf;font-size:.72rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.dragon-card-title{margin:0 0 8px;color:#fff;font-size:1.35rem;line-height:1.1}.dragon-card-distance{margin:0 0 18px;color:#ffffff7a;font-size:.8rem;font-weight:700}.dragon-card-continue{width:100%;padding:10px 0;border:none;border-radius:8px;background:#dc3726d9;color:#fff;font-size:.85rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:background .14s}.dragon-card-continue:hover{background:#dc3726}@keyframes dragon-card-deal{0%{opacity:0;transform:translateY(-28px) scale(.82)}62%{opacity:1;transform:translateY(3px) scale(1.03)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dragon-hover{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.modal-actions{display:grid;gap:10px;margin-top:20px}button:disabled{opacity:.48;cursor:default}.primary-button:disabled{border-color:#a8b2a0;background:#d8ded1;color:#64706c;box-shadow:none;opacity:1}.bridge-progress-label,.board-loading-label{padding:4px 7px;border:1px solid rgba(23,32,51,.16);border-radius:999px;background:#ffffffeb;color:#172033;font-size:.72rem;font-weight:900;white-space:nowrap;box-shadow:0 6px 14px #17203329;pointer-events:none}.board-loading-label{border-radius:8px;font-size:.9rem}.bridge-progress-label{border-color:#92400e3d;background:#fff7edf5;color:#7c2d12}.bridge-progress-ready{border-color:#15803d47;background:#ecfdf3f5;color:#166534}.placement-board-controls-wrapper{pointer-events:auto}.placement-board-controls{display:grid;grid-template-columns:repeat(3,48px);gap:6px;padding:6px;border:1px solid rgba(23,32,51,.16);border-radius:8px;background:#fffffff5;box-shadow:0 12px 24px #1720332e}.placement-board-controls button{display:grid;width:48px;height:48px;min-height:48px;place-items:center;padding:0;border-radius:8px;font-size:1.2rem;font-weight:1000;line-height:1}.placement-board-turn{border-color:#c08457;background:#fff7ed;color:#92400e}.placement-board-lock{border-color:#166534;background:#166534;color:#fff}.placement-board-lock:disabled{border-color:#a8b2a0;background:#d8ded1;color:#64706c;opacity:1}.placement-board-cancel{border-color:#b7c0aa;background:#f7f9f1;color:#51605f}@keyframes danger-label-pulse{0%{transform:scale(.98)}to{transform:scale(1.04)}}.run-status,.bridge-ready-status{position:absolute;left:50%;bottom:18px;z-index:3;display:grid;min-width:min(320px,calc(100% - 32px));transform:translate(-50%);gap:3px;padding:12px 16px;border:1px solid rgba(37,91,94,.24);border-radius:8px;background:#e6f3eef0;text-align:center;box-shadow:0 16px 34px #1720332e;pointer-events:none}.run-status{border-color:#2563eb42;background:#eff6fff5;color:#1d4ed8}.run-status span,.bridge-ready-status span{color:#255b5e;font-size:.72rem;font-weight:900;text-transform:uppercase}.run-status strong,.bridge-ready-status strong{font-size:1.02rem}.run-status strong{color:#1d4ed8;font-size:1.42rem;line-height:1}.run-status small{color:#255b5e;font-size:.78rem;font-weight:900;text-transform:uppercase}@media(prefers-reduced-motion:no-preference){.run-status{animation:run-banner-surge .76s ease-in-out infinite alternate}}.bridge-ready-status{min-width:min(380px,calc(100% - 32px));border-color:#15803d57;background:#ecfdf3f5;color:#166534;animation:bridge-ready-pop .85s ease-out both}.bridge-ready-status strong{font-size:1.45rem;line-height:1}@keyframes bridge-ready-pop{0%{opacity:0;transform:translate(-50%) translateY(12px) scale(.94)}55%{opacity:1;transform:translate(-50%) translateY(0) scale(1.04)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}@keyframes run-banner-surge{0%{transform:translate(-50%) translateY(0) scale(1);box-shadow:0 16px 34px #1720332e}to{transform:translate(-50%) translateY(-3px) scale(1.02);box-shadow:0 22px 44px #2563eb33}}@media(max-width:920px){.start-board{grid-template-columns:1fr}.start-options{padding-top:0}.game-layout{grid-template-columns:1fr}.side-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.event-card{max-height:220px;overflow:auto}.message-box{grid-column:1 / -1}}@media(max-width:620px){.app-shell{padding:8px 10px}.top-bar{flex-direction:row;align-items:center;flex-wrap:nowrap;gap:8px;margin-bottom:8px}.top-bar>div:first-child{flex:1;min-width:0}.top-bar h1{display:none}.top-bar .eyebrow{margin:0;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.control-cluster{display:flex;flex-wrap:nowrap;gap:6px;justify-content:flex-end;flex-shrink:0}.control-cluster button,.control-cluster .toggle{min-height:36px;padding:0 10px;font-size:.82rem;width:auto;grid-column:unset}.board-panel{height:50vh;min-height:260px}.board-panel,.board-canvas,.board-grid,.r3f-board-shell{min-height:260px}.board-zoom-controls{display:none}.side-panel{grid-template-columns:1fr}.piece-card{order:-3;position:sticky;top:8px;z-index:5;border-color:#2f6d5f57;background:#fffffff5}.mission-card{order:-1}.current-piece{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label preview" "status preview";min-height:80px;place-items:center start;padding:10px 12px;text-align:left}.current-piece>span{grid-area:label}.current-piece .piece-preview{grid-area:preview}.current-piece small{grid-area:status}.piece-preview.mini{width:58px;height:58px}.piece-actions-swap-only button,.piece-card .primary-button{min-height:52px;font-size:1rem;font-weight:900}.modal-backdrop{align-items:flex-start;padding-block:16px;overflow-y:auto}.modal,.end-modal{max-height:none;overflow-y:visible}.start-screen{align-items:start;padding:16px}.start-board{padding:20px}.start-visual{grid-template-columns:minmax(0,1fr)}.start-mini-board{max-width:none}.start-mini-track{grid-template-columns:repeat(8,1fr);padding:0}.start-mini-track span{width:100%;height:13px}.start-visual strong{position:static;justify-self:end;margin-top:-6px}.segmented{width:100%}.action-banner{left:10px;right:10px;min-width:0;max-width:none;transform:none;animation-name:action-pop-mobile}.action-banner-dragon,.action-banner-lose,.action-banner-mistake{animation-name:action-pop-mobile}.victory-summary{gap:6px}.victory-summary span{min-height:54px}.victory-bridge{grid-template-columns:1fr repeat(3,34px) 1fr;gap:5px;padding-inline:12px}.choice-grid{grid-template-columns:1fr}}
