.app-shell{min-height:100vh;padding:60px 20px 160px;display:flex;flex-direction:column;align-items:center;gap:28px}.board-area{display:flex;flex-direction:column;align-items:center;transition:transform .6s cubic-bezier(.22,1,.36,1),margin .6s cubic-bezier(.22,1,.36,1)}.board--shake{animation:board-shake .3s ease-out}@keyframes board-shake{0%{transform:translate(0)}15%{transform:translate(-4px,2px)}30%{transform:translate(3px,-2px)}45%{transform:translate(-2px,3px)}60%{transform:translate(3px,-1px)}75%{transform:translate(-1px,1px)}to{transform:translate(0)}}.title{margin:0;padding:0;line-height:1;-webkit-user-select:none;user-select:none}.title-logo{display:block;height:100px;width:auto}.board{width:min(82vw,320px);display:grid;grid-template-columns:repeat(var(--board-size, 3),1fr);gap:8px;margin-top:40px;margin-bottom:20px}.submit-row{width:100%;display:flex;flex-direction:column;align-items:center;gap:8px}.submit-row--hidden{height:0;overflow:hidden;margin:0;pointer-events:none}.submit-button{border:2px solid #2c2520;border-radius:12px;background:#fff;box-shadow:0 3px #2c2520;color:#3b3028;font-family:Fredoka,sans-serif;font-size:14px;font-weight:700;padding:10px 16px;line-height:1;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease;min-width:240px}.submit-button:hover:not(:disabled){transform:translateY(-1px)}.submit-button:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #2c2520}.submit-button:disabled{opacity:.55;cursor:not-allowed}.submit-button--debug{font-size:12px;padding:8px 12px;background:#f2ece2}.board-cell{width:100%;aspect-ratio:1 / 1;border:2px solid transparent;border-radius:16px;background:#e2c9a8;display:grid;place-items:center;align-content:center;gap:2px;cursor:pointer;touch-action:none;padding:0;position:relative;overflow:visible;transition:background .12s,transform .1s,border-color .12s,box-shadow .12s}.board-cell--occupied{border-color:#2c2520;border-width:3px}.board-cell--rock{background:#c2c2c2;border:none;cursor:default;pointer-events:none}.board-cell--rock .rock-icon{width:65%;height:65%;object-fit:contain}.board-cell:hover{background:#d9be9a}.board-cell--valid{background:#c8a87e}.board-cell--drag-affect{border:3px dashed #2c2520!important;z-index:2}.board-zone-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:Fredoka,sans-serif;font-weight:700;font-size:28px;color:#fff;-webkit-text-stroke:5px #2c2520;paint-order:stroke fill;text-shadow:0 3px 0 #2c2520;white-space:nowrap;z-index:17;pointer-events:none}.board-cell--hovered-source{z-index:3;filter:brightness(1.05)}.board-cell--dimmed{opacity:.4;transition:opacity .15s ease}.board-cell--scoring{animation:scoring-pulse .6s ease-in-out infinite alternate;z-index:3}.board-cell--modifier-source{transform:translateY(-6px);box-shadow:0 8px #2c2520!important;z-index:4}.board-cell--modifier-target:not(.board-cell--modifier-source){border:3px dashed #2c2520!important}@keyframes scoring-pulse{0%{transform:scale(1);filter:brightness(1)}to{transform:scale(1.08);filter:brightness(1.12)}}.board-cell--placed-pop{animation:placed-pop .36s cubic-bezier(.22,1.2,.36,1);z-index:2}.board-cell--shock-wave{animation:shock-near .32s cubic-bezier(.22,1,.36,1);animation-delay:var(--shock-delay, 0ms)}@keyframes placed-pop{0%{transform:scale(.84)}60%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes shock-near{0%{transform:scale(1)}45%{transform:scale(1.08)}to{transform:scale(1)}}.board-cell__hint{font-family:Fredoka,sans-serif;font-size:28px;font-weight:600;color:#c4a87a;opacity:.5;line-height:1}.board-cell--undoable{cursor:grab}.board-cell--dragging{opacity:.25;cursor:grabbing}.board-cell--affect-gives:not(.board-cell--hovered-source),.board-cell--affect-receives:not(.board-cell--hovered-source){border:3px dashed #2c2520!important;z-index:2}.board-cell__tooltip{position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%) translateY(4px);background:#fff;color:#3b3028;font-family:Fredoka,sans-serif;font-size:12px;font-weight:500;line-height:1.4;padding:10px 14px;border:2px solid #2c2520;border-radius:12px;white-space:nowrap;opacity:0;transition:opacity .14s ease,transform .14s ease;pointer-events:none;z-index:20;min-width:160px;box-shadow:0 3px #2c2520}.board-cell__tooltip:after,.board-cell__tooltip:before{content:"";position:absolute;left:50%;border-style:solid}.board-cell__tooltip:before{top:100%;transform:translate(-50%);border-width:8px;border-color:#2c2520 transparent transparent transparent;filter:drop-shadow(0 3px 0 #2c2520)}.board-cell__tooltip:after{top:calc(100% - 2px);transform:translate(-50%);border-width:7px;border-color:#fff transparent transparent transparent}.board-cell:hover .board-cell__tooltip{opacity:1;transform:translate(-50%) translateY(0)}.board-cell--dragging .board-cell__tooltip{opacity:0}.tile-emoji{display:block}.tile-name{font-family:Fredoka,sans-serif;font-size:12px;font-weight:600;letter-spacing:.3px;color:#6b5c4a}.hand-dock{position:fixed;left:0;right:0;bottom:0;display:flex;gap:-4px;justify-content:center;align-items:flex-end;padding:30px 16px 64px;pointer-events:none}.hand-card{flex:0 0 96px;width:96px;height:96px;border:2px solid #2c2520;border-radius:16px;background:#fff;box-shadow:0 3px #2c2520;display:grid;place-items:center;align-content:center;gap:4px;padding:8px;cursor:grab;touch-action:none;transform:rotate(var(--fan-rotation, 0deg)) translateY(var(--fan-translateY, 0px));transition:transform .18s ease,box-shadow .18s ease,z-index 0ms;z-index:1;margin:0 -2px;pointer-events:auto;position:relative}.hand-card:hover{transform:rotate(0) translateY(-22px);box-shadow:0 8px #2c2520;z-index:10}.hand-card:hover .hand-card__tooltip{opacity:1;transform:translate(-50%) translateY(0);pointer-events:none}.hand-card--selected{transform:rotate(0) translateY(-26px);box-shadow:0 10px #2c2520;z-index:10}.hand-card--dragging{opacity:.3;transform:rotate(var(--fan-rotation, 0deg)) translateY(var(--fan-translateY, 0px));box-shadow:0 3px #2c2520;cursor:grabbing}.hand-card--overlay{flex:0 0 96px;cursor:grabbing;transform:scale(1.08) rotate(-2deg);box-shadow:0 6px #2c2520;pointer-events:none}.hand-card__emoji{display:block}.hand-card__name{font-family:Fredoka,sans-serif;font-size:13px;text-align:center;font-weight:600;color:#7a6e5c;letter-spacing:.2px}.hand-card__tooltip{position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%) translateY(4px);background:#fff;color:#3b3028;font-family:Fredoka,sans-serif;font-size:12px;font-weight:500;line-height:1.4;padding:10px 14px;border-radius:12px;border:2px solid #2c2520;white-space:nowrap;opacity:0;transition:opacity .14s ease,transform .14s ease;pointer-events:none;z-index:20;min-width:160px;box-shadow:0 3px #2c2520}.hand-card__tooltip:after,.hand-card__tooltip:before{content:"";position:absolute;left:50%;border-style:solid}.hand-card__tooltip:before{top:100%;transform:translate(-50%);border-width:8px;border-color:#2c2520 transparent transparent transparent;filter:drop-shadow(0 3px 0 #2c2520)}.hand-card__tooltip:after{top:calc(100% - 2px);transform:translate(-50%);border-width:7px;border-color:#fff transparent transparent transparent}.tooltip__header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;padding-bottom:5px;border-bottom:1px solid rgba(0,0,0,.1)}.tooltip__category{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:#3b302873}.tooltip__yield{font-size:13px;font-weight:700;color:#c8960a;display:flex;align-items:center;gap:3px}.coin-inline{display:inline-block;vertical-align:middle;flex-shrink:0;position:relative;top:-1px}.tooltip__effect{font-size:12px;font-weight:500;line-height:1.45;color:#5c4a36}.tooltip__boost{margin-top:6px;padding-top:5px;border-top:1px solid rgba(0,0,0,.1);font-size:12px;font-weight:700}.tooltip__boost--gives{color:#4a8c2a}.tooltip__boost--receives{color:#c8860a}.tooltip__modifiers{margin-top:6px;padding-top:5px;border-top:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;gap:3px}.tooltip__modifier{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11px}.tooltip__modifier-val{font-weight:700;color:#c8860a}.toast{position:fixed;top:20px;left:50%;transform:translate(-50%);border:none;border-radius:12px;background:#fff;padding:10px 18px;font-size:14px;font-weight:500;color:#5c4a36;box-shadow:0 4px #c9bda8;animation:toast-pop .2s ease-out;z-index:200;white-space:nowrap}@keyframes toast-pop{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.board-score-label{position:absolute;top:-8px;left:50%;transform:translate(-50%);font-family:Fredoka,sans-serif;font-size:14px;font-weight:700;color:#3b3028;background:#fff;border:2px solid #2c2520;border-radius:8px;padding:2px 8px;box-shadow:0 2px #2c2520;white-space:nowrap;z-index:18;pointer-events:none;display:flex;align-items:center;gap:4px;animation:score-label-in .2s cubic-bezier(.22,1.2,.36,1)}.board-score-label--base{color:#3b3028}.board-score-label--pulse{animation:score-label-pulse .25s cubic-bezier(.22,1.2,.36,1)}@keyframes score-label-in{0%{transform:translate(-50%) scale(0) translateY(8px);opacity:0}to{transform:translate(-50%) scale(1) translateY(0);opacity:1}}@keyframes score-label-pulse{0%{transform:translate(-50%) scale(1)}40%{transform:translate(-50%) scale(1.25)}to{transform:translate(-50%) scale(1)}}.board-modifier-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:Fredoka,sans-serif;font-weight:700;color:#fff;-webkit-text-stroke:5px #2c2520;paint-order:stroke fill;text-shadow:0 3px 0 #2c2520;white-space:nowrap;z-index:17;pointer-events:none;animation:modifier-label-in .18s cubic-bezier(.22,1.2,.36,1)}.board-modifier-label--additive{font-size:38px}.board-modifier-label--multiplier{font-size:42px}@keyframes modifier-label-in{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.board-score-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding-bottom:20px;width:min(80vw,304px);margin-inline:auto}.board-score-card__shell{position:relative;width:100%;background:#fff;border:2px solid #2c2520;border-radius:6px;box-shadow:0 3px #2c2520;padding:12px 14px;overflow:visible}.board-score-card__total-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.board-score-card__label{font-family:Fredoka,sans-serif;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#8b7355}.board-score-card__number{font-family:Fredoka,sans-serif;font-size:30px;font-weight:700;color:#3b3028;line-height:1;display:flex;align-items:center;gap:6px}.board-score-card__number--done{animation:final-total-pop .4s cubic-bezier(.22,1.2,.36,1)}.board-score-card__best-row{display:flex;flex-direction:column;gap:10px;border-top:1px solid #e8dfd4;margin-top:10px;padding-top:10px;animation:best-row-in .4s ease-out}.board-score-card__best-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.board-score-card__best-label{font-family:Fredoka,sans-serif;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#a89878}.board-score-card__best-number{font-family:Fredoka,sans-serif;font-size:18px;font-weight:600;color:#8b7355;line-height:1;display:flex;align-items:center;gap:4px}.board-score-card__grade-row{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid #e8dfd4}.board-score-card__grade-label{font-family:Fredoka,sans-serif;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:#8b7355}.board-score-card__grade-letter{font-family:Fredoka,sans-serif;font-size:46px;font-weight:700;line-height:1;color:#fff;-webkit-text-stroke:7px #2c2520;paint-order:stroke fill;filter:drop-shadow(0 2px 0 #2c2520);transform:rotate(-6deg);animation:grade-pop .5s cubic-bezier(.22,1.2,.36,1)}.board-score-card__grade-letter--s{color:#fff59d}.board-score-card__grade-letter--a{color:#c8e6c9}.board-score-card__grade-letter--b{color:#bbdefb}.board-score-card__grade-letter--c{color:#d8c4e8}.board-score-card__grade-letter--d{color:#ffe0b2}.board-score-card__grade-letter--f{color:#fcc8c0}@keyframes grade-pop{0%{transform:scale(0) rotate(-6deg);opacity:0}50%{transform:scale(1.3) rotate(-6deg)}to{transform:scale(1) rotate(-6deg);opacity:1}}.best-grid{display:grid;grid-template-columns:repeat(var(--board-size),1fr);gap:3px;width:100%;aspect-ratio:1;max-width:160px;margin-inline:auto}.best-grid__cell{aspect-ratio:1;border-radius:4px;background:#f0ebe3;border:1.5px solid #ddd4c8;display:flex;align-items:center;justify-content:center}.best-grid__cell--occupied{border-color:#c4b8a8}.best-grid__cell--rock{background:#c4b8a8}@keyframes best-row-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes final-total-pop{0%{transform:scale(.85)}35%{transform:scale(1.12)}55%{transform:scale(.95)}75%{transform:scale(1.04)}to{transform:scale(1)}}.board-score-actions{display:flex;gap:8px;width:100%;margin-top:6px;animation:score-actions-in .3s ease-out}.board-score-btn{flex:1;border:2px solid #2c2520;border-radius:10px;background:#fff4d2;box-shadow:0 3px #2c2520;color:#3b3028;font-family:Fredoka,sans-serif;font-size:13px;font-weight:700;padding:10px 8px;line-height:1;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;display:flex;align-items:center;justify-content:center;gap:6px}.board-score-btn:hover{transform:translateY(-1px)}.board-score-btn:active{transform:translateY(2px);box-shadow:0 1px #2c2520}.board-score-btn--secondary{background:#fddcb5}.board-score-btn--primary{background:#c8e6c9}.board-score-btn img{width:16px;height:16px;display:block}@keyframes score-actions-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 480px){.hand-card{flex:0 0 76px;width:76px;height:76px;padding:6px;border-radius:14px}.hand-card__name{font-size:11px}.hand-dock{padding:20px 8px 40px}}*{box-sizing:border-box;margin:0;user-select:none;-webkit-user-select:none}html,body,#root{height:100%;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#3b3028;-webkit-font-smoothing:antialiased}body{background:#f5f0e8}button{font:inherit;color:inherit}
