.ghost-board-enter{opacity:0;transform:translateY(-10px)}.ghost-board-enter-active{opacity:1;transform:translateY(0);transition:opacity var(--duration-normal),transform var(--duration-normal)}@keyframes momentum-pulse{0%,to{opacity:1}50%{opacity:.7}}.momentum-urgent{animation:momentum-pulse 1s infinite}@keyframes timer-critical{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.timer-critical{animation:timer-critical var(--duration-slow) infinite}@keyframes countdown-pop{0%{transform:scale(.5);opacity:0}50%{transform:scale(1.2);opacity:1}to{transform:scale(1);opacity:1}}.countdown-number{animation:countdown-pop var(--duration-normal) ease-out}@keyframes victory-glow{0%,to{box-shadow:0 0 20px rgba(var(--game-btn-success-rgb),.5)}50%{box-shadow:0 0 40px rgba(var(--game-btn-success-rgb),.8)}}.victory-glow{animation:victory-glow 2s infinite}@keyframes defeat-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.defeat-shake{animation:defeat-shake var(--duration-slow) ease-in-out}@keyframes ghost-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.ghost-card-shimmer{background:linear-gradient(90deg,rgba(255,255,255,0) 0%,var(--game-glass-10) 50%,rgba(255,255,255,0) 100%);background-size:200% 100%;animation:ghost-shimmer 2s infinite}:root{--tutorial-overlay-bg: var(--game-overlay-heavy);--tutorial-highlight-color: rgba(var(--game-btn-primary-rgb), .8);--tutorial-highlight-glow: rgba(var(--game-btn-primary-rgb), .4);--tutorial-tooltip-bg: var(--game-text-on-field);--tutorial-tooltip-text: var(--game-result-text);--tutorial-tooltip-shadow: 0 10px 25px var(--game-overlay-light);--tutorial-button-primary: var(--game-btn-primary);--tutorial-button-primary-hover: var(--game-btn-primary-hover);--tutorial-button-secondary: var(--game-result-text-muted);--tutorial-button-secondary-hover: var(--game-result-text-secondary);--tutorial-progress-bg: var(--game-glass-20);--tutorial-progress-fill: var(--game-btn-primary);--tutorial-error-color: var(--game-btn-danger);--tutorial-z-overlay: 9990;--tutorial-z-highlight: 9998;--tutorial-z-tooltip: 9999;--tutorial-z-progress: 9997}.tutorial__overlay{position:fixed;inset:0;z-index:var(--tutorial-z-overlay);pointer-events:none}.tutorial__highlight{position:fixed;z-index:var(--tutorial-z-highlight);border-radius:var(--radius-md);box-shadow:0 0 0 9999px var(--tutorial-overlay-bg);pointer-events:none;transition:all var(--duration-normal) ease-out}.tutorial__highlight--pulse{animation:tutorial-pulse 2s ease-in-out infinite}@keyframes tutorial-pulse{0%,to{box-shadow:0 0 0 9999px var(--tutorial-overlay-bg),0 0 0 4px var(--tutorial-highlight-glow)}50%{box-shadow:0 0 0 9999px var(--tutorial-overlay-bg),0 0 0 8px var(--tutorial-highlight-color),0 0 20px var(--tutorial-highlight-color)}}.tutorial__highlight-label{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--tutorial-highlight-color);color:#fff;padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-tiny);font-weight:600;white-space:nowrap;pointer-events:none}.tutorial__tooltip{position:fixed;z-index:var(--tutorial-z-tooltip);background:var(--tutorial-tooltip-bg);color:var(--tutorial-tooltip-text);border-radius:var(--radius-lg);padding:var(--space-5);max-width:400px;width:calc(100vw - var(--space-8));box-shadow:var(--tutorial-tooltip-shadow);pointer-events:auto}.tutorial__tooltip--mobile{position:fixed;bottom:16px;left:16px;right:16px;max-width:none;width:auto}.tutorial__tooltip-title{font-size:18px;font-weight:700;margin:0 0 8px;color:var(--tutorial-tooltip-text)}.tutorial__tooltip-content{font-size:14px;line-height:1.5;margin:0 0 16px;color:var(--game-result-text-secondary)}.tutorial__tooltip-error{background:var(--game-result-negative-bg);border:1px solid var(--game-result-negative-bg);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-4);font-size:13px;color:var(--tutorial-error-color)}.tutorial__tooltip-buttons{display:flex;gap:8px;justify-content:flex-end}.tutorial__tooltip-button{padding:var(--space-2-5) var(--space-5);border-radius:var(--radius-md);font-size:var(--text-small);font-weight:var(--font-weight-semibold);cursor:pointer;border:none;transition:all var(--duration-fast) var(--ease-smooth);font-family:inherit}.tutorial__tooltip-button--primary{background:var(--tutorial-button-primary);color:#fff}.tutorial__tooltip-button--primary:hover{background:var(--tutorial-button-primary-hover)}.tutorial__tooltip-button--secondary{background:transparent;color:var(--tutorial-button-secondary);border:1px solid var(--game-result-border)}.tutorial__tooltip-button--secondary:hover{background:var(--game-result-bg-alt);color:var(--tutorial-button-secondary-hover)}.tutorial__tooltip-button--skip{background:transparent;color:var(--color-text-muted);padding:10px 12px}.tutorial__tooltip-button--skip:hover{color:var(--game-result-text-muted)}.tutorial__progress{position:fixed;top:0;left:0;right:0;z-index:var(--tutorial-z-progress);background:var(--game-overlay-dark);padding:var(--space-2) var(--space-4);display:flex;align-items:center;gap:var(--space-3);pointer-events:auto}.tutorial__progress-bar{flex:1;height:6px;background:var(--tutorial-progress-bg);border-radius:3px;overflow:hidden}.tutorial__progress-fill{height:100%;background:var(--tutorial-progress-fill);border-radius:3px;transition:width .3s ease-out}.tutorial__progress-text{color:#fff;font-size:12px;font-weight:500;white-space:nowrap}.tutorial__progress-close{background:transparent;border:none;color:#fff;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .2s}.tutorial__progress-close:hover{opacity:1}.tutorial__arrow{position:fixed;z-index:var(--tutorial-z-highlight);pointer-events:none;animation:tutorial-bounce 1s ease-in-out infinite}@keyframes tutorial-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.tutorial__arrow svg{width:32px;height:32px;fill:var(--tutorial-highlight-color);filter:drop-shadow(0 2px 4px var(--game-overlay-light))}@media(prefers-reduced-motion:reduce){.tutorial__highlight,.tutorial__progress-fill{transition:none}.tutorial__highlight--pulse{animation:none;box-shadow:0 0 0 9999px var(--tutorial-overlay-bg),0 0 0 4px var(--tutorial-highlight-color)}.tutorial__arrow{animation:none}}@media(prefers-contrast:more){:root{--tutorial-overlay-bg: var(--game-overlay-darker);--tutorial-highlight-color: var(--game-text-on-field);--tutorial-highlight-glow: var(--game-text-on-field)}.tutorial__tooltip{border:2px solid var(--game-result-text)}.tutorial__tooltip-button{border:2px solid currentcolor}}@media(max-width:640px){.tutorial__tooltip{padding:16px}.tutorial__tooltip-title{font-size:16px}.tutorial__tooltip-content{font-size:13px}.tutorial__tooltip-buttons{flex-direction:column}.tutorial__tooltip-button{width:100%;justify-content:center}.tutorial__progress{padding:6px 12px}.tutorial__progress-text{font-size:11px}}@media print{.tutorial__overlay,.tutorial__highlight,.tutorial__tooltip,.tutorial__progress,.tutorial__arrow{display:none!important}}.trick-taking-container{--tt-card-width: var(--card-base-width, 70px);--tt-card-height: var(--card-base-height, 98px);--tt-hand-overlap: -35px;--tt-side-scale: .5;--tt-side-rotation: 90deg;--tt-side-overlap: -70px;--tt-top-scale: .55;width:100%;height:100%;position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:var(--space-2);overflow:hidden;box-sizing:border-box}@media(min-width:640px){.trick-taking-container{--tt-card-width: 80px;--tt-card-height: 112px;--tt-hand-overlap: -30px}}@media(min-width:768px){.trick-taking-container{--tt-hand-overlap: -25px}}@media(min-width:1024px){.trick-taking-container{--tt-card-width: 90px;--tt-card-height: 126px}}.trick-taking-board{width:100%;max-width:1000px;flex:1;display:flex;flex-direction:column;position:relative;padding-top:3.5rem;box-sizing:border-box;min-height:0}.trick-taking-board__status{position:absolute;top:0;left:0;display:flex;align-items:center;gap:var(--space-2);color:var(--game-glass-80);font-size:var(--text-tiny);z-index:var(--z-dropdown)}.trick-taking-container .scoreboard{background:var(--game-surface-dark);color:#fff}.trick-taking-container .scoreboard__name{color:var(--game-glass-90)}.trick-taking-container .scoreboard__round-score{color:var(--game-glass-60)}.trick-taking-container .scoreboard__total-score{color:#fff}.trick-taking-container .scoreboard__tricks{color:var(--game-glass-50)}.trick-taking-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-4);background:var(--game-overlay-medium);backdrop-filter:blur(4px);position:absolute;top:0;left:0;right:0;z-index:var(--z-drag);min-height:48px}.trick-taking-header__left{display:flex;align-items:center;gap:var(--space-3)}.trick-taking-header__logo{height:32px;width:auto;-o-object-fit:contain;object-fit:contain}.trick-taking-header__icon{font-size:1.75rem;line-height:1;color:#fff}.trick-taking-header__title{font-size:var(--text-large);font-weight:var(--font-weight-semibold);color:#fff;margin:0;letter-spacing:.02em}.trick-taking-header__right{display:flex;align-items:center;gap:var(--space-2)}.trick-taking-header__btn{padding:var(--space-1-5) var(--space-3-5);font-size:var(--text-small);font-weight:var(--font-weight-medium);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--duration-fast),opacity var(--duration-fast);white-space:nowrap}.trick-taking-header__btn--primary{background:var(--game-btn-primary-hover);color:#fff}.trick-taking-header__btn--primary:hover{background:var(--game-btn-blue-dark)}.trick-taking-header__btn--danger{background:var(--game-btn-danger);color:#fff}.trick-taking-header__btn--danger:hover{background:var(--game-btn-danger-hover)}@media(max-width:480px){.trick-taking-header{padding:.375rem .75rem;min-height:44px}.trick-taking-header__logo{height:28px}.trick-taking-header__icon{font-size:1.5rem}.trick-taking-header__title{font-size:1rem}.trick-taking-header__btn{padding:.25rem .625rem;font-size:.8125rem}}.tt-player--left,.tt-player--right{flex-shrink:0;width:var(--tt-side-width, 90px);display:flex;flex-direction:column;align-items:center;justify-content:center}.tt-player--left .player-hand,.tt-player--right .player-hand{display:flex;flex-direction:column;align-items:center;position:relative}.tt-player--left .player-hand__cards,.tt-player--right .player-hand__cards{display:flex;flex-direction:column}.tt-player--left .player-hand__label{position:absolute;top:50%;left:100%;transform:translateY(-50%);margin-left:var(--space-2);white-space:nowrap;z-index:var(--z-card-hover)}.tt-player--right .player-hand__label{position:absolute;top:50%;right:100%;transform:translateY(-50%);margin-right:var(--space-2);white-space:nowrap;z-index:var(--z-card-hover)}.tt-player--left .card,.tt-player--right .card{transform:scale(var(--tt-side-scale, .5)) rotate(var(--tt-side-rotation, 90deg))}.tt-player--left .hand-card:not(:first-child),.tt-player--right .hand-card:not(:first-child){margin-top:var(--tt-side-overlap, -70px)}.tt-player--bottom .card{transform:scale(var(--tt-bottom-scale, .85))}@media(min-width:768px){.tt-player--bottom .card{transform:scale(var(--tt-bottom-scale-lg, .9))}}.tt-player--top .card{transform:scale(var(--tt-top-scale, .55))}.player-hand{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-2)}.player-hand__label{font-size:var(--text-tiny);font-weight:var(--font-weight-medium);color:var(--color-text-faint);display:flex;align-items:center;gap:var(--space-1)}.player-hand__label--active{color:var(--game-indicator-blue);font-weight:600}.player-hand__indicator{color:var(--game-indicator-green);animation:pulse 1.5s ease-in-out infinite}.player-hand__cards{display:flex;position:relative}.player-hand__cards--horizontal{flex-direction:row}.player-hand__cards--vertical{flex-direction:column}.hand-card{position:relative;transition:transform var(--duration-fast) var(--ease-smooth),margin var(--duration-fast) var(--ease-smooth)}.player-hand--bottom .hand-card{margin-left:calc(-40px + (var(--fan-index) * 0px))}.player-hand--bottom .hand-card:first-child{margin-left:0}.player-hand--bottom .player-hand__cards{--overlap: max(-35px, calc(-50px + (var(--fan-total, 13) * 1px)))}.player-hand--bottom .hand-card:not(:first-child){margin-left:var(--overlap, var(--tt-hand-overlap, -35px))}.player-hand--top .hand-card:not(:first-child){margin-left:-40px}.player-hand--top .card{transform:scale(var(--tt-top-scale, .55))}.player-hand--left .hand-card:not(:first-child),.player-hand--right .hand-card:not(:first-child){margin-top:var(--tt-side-overlap, -70px)}.hand-card--valid .card{box-shadow:0 0 0 3px rgba(var(--game-highlight-green-rgb),.6)}.hand-card--selected{transform:translateY(-15px)}.hand-card--selected .card{box-shadow:0 0 0 3px rgba(var(--game-indicator-blue-rgb),.8)}.hand-card--disabled{opacity:.55}.hand-card--disabled .card{cursor:not-allowed}.hand-card--clickable .card{cursor:pointer}.hand-card--clickable:hover{transform:translateY(-10px)}.hand-card--selected.hand-card--clickable:hover{transform:translateY(-20px)}.trick-area{position:relative;width:200px;height:200px;display:flex;align-items:center;justify-content:center}@media(min-width:640px){.trick-area{width:250px;height:250px}}@media(min-width:768px){.trick-area{width:300px;height:300px}}.trick-card{position:absolute;transition:transform var(--duration-normal) var(--ease-smooth),opacity var(--duration-normal) var(--ease-smooth)}.trick-card--bottom{bottom:0;left:50%;transform:translate(-50%)}.trick-card--left{left:0;top:50%;transform:translateY(-50%)}.trick-card--top{top:0;left:50%;transform:translate(-50%)}.trick-card--right{right:0;top:50%;transform:translateY(-50%)}.trick-card--played{animation:cardPlayed .3s ease-out}@keyframes cardPlayed{0%{opacity:0;transform:translate(-50%) scale(.8)}to{opacity:1;transform:translate(-50%) scale(1)}}.trick-card--left.trick-card--played{animation:cardPlayedLeft .3s ease-out}@keyframes cardPlayedLeft{0%{opacity:0;transform:translateY(-50%) translate(-20px) scale(.8)}to{opacity:1;transform:translateY(-50%) scale(1)}}.trick-card--right.trick-card--played{animation:cardPlayedRight .3s ease-out}@keyframes cardPlayedRight{0%{opacity:0;transform:translateY(-50%) translate(20px) scale(.8)}to{opacity:1;transform:translateY(-50%) scale(1)}}.trick-card--top.trick-card--played{animation:cardPlayedTop .3s ease-out}@keyframes cardPlayedTop{0%{opacity:0;transform:translate(-50%) translateY(-20px) scale(.8)}to{opacity:1;transform:translate(-50%) scale(1)}}.trick-card--winning .card{box-shadow:0 0 15px 3px rgba(var(--game-highlight-yellow-rgb),.7)}.trick-area--collecting .trick-card{transition:transform .5s ease-in,opacity .5s ease-in}.trick-card--collecting{opacity:0}.trick-area--collecting .trick-card--bottom{transform:translate(-50%) translateY(50px)}.trick-area--collecting .trick-card--top{transform:translate(-50%) translateY(-50px)}.trick-area--collecting .trick-card--left{transform:translateY(-50%) translate(-50px)}.trick-area--collecting .trick-card--right{transform:translateY(-50%) translate(50px)}.trick-area__empty{color:var(--color-text-muted);font-size:var(--text-small)}.scoreboard{background:var(--game-overlay-faintest);border-radius:var(--radius-md);padding:var(--space-3);min-width:150px}.scoreboard--compact{padding:var(--space-2);min-width:120px}.scoreboard--game-over{background:rgba(var(--game-highlight-yellow-dark-rgb),.1);border:2px solid rgba(var(--game-highlight-yellow-dark-rgb),.5)}.scoreboard__header{display:flex;flex-direction:column;gap:var(--space-0-5);margin-bottom:var(--space-2);padding-bottom:var(--space-2);border-bottom:1px solid var(--game-overlay-lightest)}.scoreboard__title{font-weight:var(--font-weight-semibold);font-size:var(--text-small)}.scoreboard__round,.scoreboard__target{font-size:var(--text-tiny);color:var(--color-text-faint)}.scoreboard__players{display:flex;flex-direction:column;gap:var(--space-1-5)}.scoreboard__player{display:flex;justify-content:space-between;align-items:center;padding:var(--space-1) var(--space-1-5);border-radius:var(--radius-sm);font-size:var(--text-small);gap:var(--space-2)}.scoreboard__player--current{background:rgba(var(--game-indicator-blue-rgb),.1)}.scoreboard__player--human{font-weight:500}.scoreboard__player--leading{color:var(--game-indicator-green-dark)}.scoreboard__player--winner{background:rgba(var(--game-highlight-green-rgb),.2);font-weight:600}.scoreboard__player--danger{color:var(--game-btn-danger)}.scoreboard__name{display:flex;align-items:center;gap:var(--space-1);min-width:3.5rem}.scoreboard__you{font-weight:600}.scoreboard__turn-indicator{color:var(--game-indicator-green);font-size:.625rem;animation:pulse 1.5s ease-in-out infinite}.scoreboard__scores{display:flex;align-items:center;gap:var(--space-2)}.scoreboard__round-score{font-size:var(--text-tiny);color:var(--color-text-faint);min-width:1.75rem;text-align:right}.scoreboard__total-score{font-weight:var(--font-weight-semibold);min-width:2rem;text-align:right}.scoreboard__tricks{font-size:.6875rem;color:var(--game-result-text-muted);min-width:3.5rem;text-align:right}.scoreboard__game-over-message{margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--game-overlay-lightest);text-align:center;font-weight:var(--font-weight-semibold);color:var(--color-success)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.hearts-passing{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-4)}.hearts-passing__title{font-size:var(--text-large);font-weight:var(--font-weight-semibold)}.hearts-passing__instruction{font-size:var(--text-small);color:var(--color-text-faint)}.hearts-passing__direction{font-weight:500;color:var(--game-indicator-blue)}.hearts-passing__button{padding:var(--space-2) var(--space-4);background:var(--color-accent-primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--duration-fast)}.hearts-passing__button:hover{background:var(--color-accent-hover)}.hearts-passing__button:disabled{background:var(--color-text-muted);cursor:not-allowed}.hearts-round-summary{background:var(--game-text-on-field);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-xl);max-width:320px;width:90%}.hearts-round-summary__title{font-size:var(--text-large);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-4);text-align:center}.hearts-round-summary__moon{text-align:center;color:var(--color-currency-yellow);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-2)}.hearts-round-summary__scores{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.hearts-round-summary__player{display:flex;justify-content:space-between;padding:.375rem 0;border-bottom:1px solid var(--game-result-border)}.hearts-round-summary__player:last-child{border-bottom:none}.hearts-round-summary__name{font-weight:500}.hearts-round-summary__score{display:flex;gap:var(--space-3)}.hearts-round-summary__round-score{color:var(--color-error)}.hearts-round-summary__total{font-weight:var(--font-weight-semibold)}.hearts-round-summary__button{width:100%;padding:var(--space-2-5);background:var(--color-accent-primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--duration-fast)}.hearts-round-summary__button:hover{background:var(--color-accent-hover)}
