:root{--color-brand-50: #eef2ff;--color-brand-100: #e0e7ff;--color-brand-200: #c7d2fe;--color-brand-300: #a5b4fc;--color-brand-400: #818cf8;--color-brand-500: #6366f1;--color-brand-600: #4f46e5;--color-brand-700: #4338ca;--color-brand-800: #3730a3;--color-brand-900: #312e81;--color-success-50: #f0fdf4;--color-success-100: #dcfce7;--color-success-500: #22c55e;--color-success-600: #16a34a;--color-success-700: #15803d;--color-warning-50: #fffbeb;--color-warning-100: #fef3c7;--color-warning-500: #f59e0b;--color-warning-600: #d97706;--color-warning-700: #b45309;--color-error-50: #fef2f2;--color-error-100: #fee2e2;--color-error-500: #ef4444;--color-error-600: #dc2626;--color-error-700: #b91c1c;--color-info-50: #ecfeff;--color-info-100: #cffafe;--color-info-500: #06b6d4;--color-info-600: #0891b2;--color-info-700: #0e7490;--color-tile-man: #e74c3c;--color-tile-pin: #3498db;--color-tile-sou: #27ae60;--color-tile-honor: #8e44ad;--color-tile-wild: #ef4444;--color-tile-facai: #22c55e;--z-app-header: 900;--z-app-footer: 900;--z-floating-window-base: 1000;--z-base: 0;--z-dropdown: 1500;--z-sticky: 200;--z-fixed: 300;--z-modal-backdrop: 400;--z-modal: 500;--z-popover: 600;--z-tooltip: 700;--z-toast: 1600;--z-celebration: 1700;--z-max: 2000;--touch-target-min: 44px;--touch-target-comfortable: 48px;--focus-ring-width: 2px;--focus-ring-offset: 2px;--focus-ring-color: var(--color-brand-500);--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--safe-area-right: env(safe-area-inset-right, 0px)}.dark{--color-brand-50: #1e1b4b;--color-brand-100: #312e81;--color-brand-500: #818cf8;--color-brand-600: #6366f1;--color-success-50: #052e16;--color-success-500: #4ade80;--color-warning-50: #422006;--color-warning-500: #fbbf24;--color-error-50: #450a0a;--color-error-500: #f87171;--color-info-50: #083344;--color-info-500: #22d3ee}.container{width:100%;padding-left:16px;padding-right:16px;margin-left:auto;margin-right:auto}.hide-mobile{display:none!important}.show-mobile{display:block!important}.grid-tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.safe-area-top{padding-top:var(--safe-area-top)}.safe-area-bottom{padding-bottom:var(--safe-area-bottom)}@media(min-width:640px){.container{max-width:640px}.grid-tiles{grid-template-columns:repeat(7,1fr);gap:6px}.hide-sm{display:none!important}.show-sm{display:block!important}}@media(min-width:768px){.container{max-width:768px;padding-left:24px;padding-right:24px}.grid-tiles{grid-template-columns:repeat(9,1fr);gap:8px}.hide-mobile{display:block!important}.show-mobile,.hide-md{display:none!important}.show-md{display:block!important}.layout-two-column{display:grid;grid-template-columns:1fr 300px;gap:24px}}@media(min-width:1024px){.container{max-width:1024px}.grid-tiles{grid-template-columns:repeat(10,1fr)}.layout-two-column{grid-template-columns:1fr 360px}.hide-lg{display:none!important}.show-lg{display:block!important}.hover-effect:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}}@media(min-width:1280px){.container{max-width:1280px}.layout-two-column{grid-template-columns:1fr 400px}.hide-xl{display:none!important}.show-xl{display:block!important}}@media(orientation:landscape)and (max-height:500px){.landscape-compact{padding-top:8px!important;padding-bottom:8px!important}.landscape-hide{display:none!important}}@media(hover:none)and (pointer:coarse){.hover-effect:hover{transform:none;box-shadow:none}.btn,button{min-height:var(--touch-target-min)}.scroll-container{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}}@media(prefers-contrast:high){:root{--border-color: #000000}.dark{--border-color: #ffffff}.tile,.btn,.card{border-width:2px}}@media print{.no-print{display:none!important}body{background:#fff!important;color:#000!important}}.tile{--tile-bg: linear-gradient(145deg, #f8f9fa 0%, #e9ecef 100%);--tile-border: #dee2e6;--tile-shadow: 0 2px 4px rgba(0, 0, 0, .1);--tile-shadow-hover: 0 4px 12px rgba(0, 0, 0, .15);position:relative;background:var(--tile-bg);border:1px solid var(--tile-border);border-radius:6px;box-shadow:var(--tile-shadow);overflow:hidden;cursor:pointer;transition:all .2s ease;user-select:none;-webkit-tap-highlight-color:transparent}.tile:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#fff6,#ffffffb3,#fff6);border-radius:6px 6px 0 0;pointer-events:none}.tile:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,#00000014,#0000000a,#00000014);pointer-events:none}@media(hover:hover)and (pointer:fine){.tile:hover{transform:translateY(-4px) scale(1.02);box-shadow:var(--tile-shadow-hover)}}.tile:active{transform:translateY(-2px) scale(.98);transition-duration:.1s}.tile.selected{border:2px solid var(--color-brand-500);box-shadow:0 0 0 3px #6366f14d}.tile.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.tile.tile-wild,.tile[data-code="35"]{--tile-bg: linear-gradient(145deg, #fee2e2 0%, #fecaca 100%);--tile-border: #ef4444}.tile.tile-wild:after,.tile[data-code="35"]:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(239,68,68,.1) 0%,transparent 70%);animation:wild-pulse 2s ease-in-out infinite;pointer-events:none}@keyframes wild-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.tile.tile-facai,.tile[data-code="36"]{--tile-bg: linear-gradient(145deg, #dcfce7 0%, #bbf7d0 100%);--tile-border: #22c55e}.tile.ting-target{position:relative;animation:ting-glow 1.5s ease-in-out infinite}.tile.ting-target:before{content:"";position:absolute;inset:-4px;border:2px solid var(--color-success-500);border-radius:10px;animation:ting-border 1.5s ease-in-out infinite}@keyframes ting-glow{0%,to{box-shadow:0 0 #22c55e99}50%{box-shadow:0 0 12px 4px #22c55e4d}}@keyframes ting-border{0%,to{opacity:1}50%{opacity:.5}}.tile.recommended{border-color:var(--color-warning-500);box-shadow:0 0 0 2px #f59e0b4d}.tile.recommended:before{background:linear-gradient(90deg,#f59e0b4d,#f59e0b80,#f59e0b4d)}.hand-tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:4px;padding:12px;background:var(--bg-secondary);border-radius:var(--radius-lg);min-height:80px}.hand-tiles .tile-group{display:flex;gap:4px}.hand-tiles .tile-group:not(:last-child):after{content:"";display:block;width:8px}.tile-pool{display:grid;gap:4px;padding:16px;background:var(--bg-tertiary);border-radius:var(--radius-lg)}.tile-pool .tile{aspect-ratio:3/4}.tile-xs{width:28px;height:36px;font-size:12px}.tile-sm{width:36px;height:48px;font-size:14px}.tile-md{width:48px;height:64px;font-size:16px}.tile-lg{width:60px;height:80px;font-size:20px}.tile-xl{width:72px;height:96px;font-size:24px}.dark .tile{--tile-bg: linear-gradient(145deg, #334155 0%, #1e293b 100%);--tile-border: #475569;--tile-shadow: 0 2px 4px rgba(0, 0, 0, .3);--tile-shadow-hover: 0 4px 12px rgba(0, 0, 0, .4)}.dark .tile:before{background:linear-gradient(90deg,#ffffff1a,#fff3,#ffffff1a)}.dark .tile.tile-wild,.dark .tile[data-code="35"]{--tile-bg: linear-gradient(145deg, #7f1d1d 0%, #991b1b 100%);--tile-border: #dc2626}.dark .tile.tile-facai,.dark .tile[data-code="36"]{--tile-bg: linear-gradient(145deg, #14532d 0%, #166534 100%);--tile-border: #16a34a}@media(max-width:640px){.hand-tiles{gap:3px;padding:8px}.tile-pool{gap:3px;padding:12px}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;color:var(--text-color);background-color:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-normal),color var(--transition-normal)}#app{min-height:100vh;min-height:100dvh;padding:0;padding-top:var(--safe-area-top);padding-bottom:var(--safe-area-bottom);background-color:var(--bg-primary)}a{color:var(--color-brand-500);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-brand-600);text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.5}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit;background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-brand-500);box-shadow:0 0 0 3px #6366f133}:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-40px;left:0;padding:8px 16px;background:var(--color-brand-500);color:#fff;z-index:var(--z-max);transition:top .2s ease}.skip-link:focus{top:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.no-select{user-select:none;-webkit-user-select:none}.touch-target{min-width:var(--touch-target-min);min-height:var(--touch-target-min)}.scroll-smooth{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}@media(max-width:768px){#app{padding:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{#app{padding:0}.no-print{display:none!important}body{background:#fff;color:#000}}:root{--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-primary-rgb: 99, 102, 241;--color-success: #22c55e;--color-success-rgb: 34, 197, 94;--color-warning: #f59e0b;--color-warning-rgb: 245, 158, 11;--color-error: #ef4444;--color-error-rgb: 239, 68, 68;--color-info: #06b6d4;--color-info-rgb: 6, 182, 212;--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--bg-tertiary: #e9ecef;--bg-quaternary: #dee2e6;--color-background: var(--bg-primary);--color-surface: var(--bg-secondary);--color-surface-hover: var(--bg-tertiary);--border-color: #e1e5e9;--color-border: var(--border-color);--color-divider: #dee2e6;--text-color: #2c3e50;--text-secondary: #6c757d;--text-muted: #94a3b8;--text-inverse: #ffffff;--color-text-primary: var(--text-color);--color-text-secondary: var(--text-secondary);--color-text-muted: var(--text-muted);--color-text-inverse: var(--text-inverse);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1);--filter-reduce-blue: none;--brightness-reduced: 1;--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font-xs: 11px;--font-sm: 13px;--font-md: 15px;--font-lg: 17px;--font-xl: 22px;--font-2xl: 28px;--font-3xl: 36px}.dark{--color-primary: #818cf8;--color-primary-hover: #6366f1;--color-primary-rgb: 129, 140, 248;--color-success: #4ade80;--color-success-rgb: 74, 222, 128;--color-warning: #fbbf24;--color-warning-rgb: 251, 191, 36;--color-error: #f87171;--color-error-rgb: 248, 113, 113;--color-info: #22d3ee;--color-info-rgb: 34, 211, 238;--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--bg-quaternary: #475569;--color-background: var(--bg-primary);--color-surface: var(--bg-secondary);--color-surface-hover: var(--bg-tertiary);--border-color: #475569;--color-border: var(--border-color);--color-divider: #334155;--text-color: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #64748b;--text-inverse: #0f172a;--color-text-primary: var(--text-color);--color-text-secondary: var(--text-secondary);--color-text-muted: var(--text-muted);--color-text-inverse: var(--text-inverse);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .5);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5);--filter-reduce-blue: sepia(10%) saturate(90%);--brightness-reduced: .95}.light{--color-primary: #3498db;--color-primary-hover: #2980b9;--color-success: #2ecc71;--color-warning: #f39c12;--color-error: #e74c3c;--color-info: #17a2b8;--color-background: #ffffff;--color-surface: #f8f9fa;--color-surface-hover: #e9ecef;--color-border: #e1e5e9;--color-divider: #dee2e6;--color-text-primary: #2c3e50;--color-text-secondary: #495057;--color-text-muted: #6c757d;--color-text-inverse: #ffffff;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--filter-reduce-blue: none;--brightness-reduced: 1}.work{--color-primary: #2c5282;--color-primary-hover: #1a365d;--color-success: #276749;--color-warning: #975a16;--color-error: #9b2c2c;--color-info: #2a69ac;--color-background: #a0aec0;--color-surface: #718096;--color-surface-hover: #4a5568;--color-border: #2d3748;--color-divider: #4a5568;--color-text-primary: #1a202c;--color-text-secondary: #2d3748;--color-text-muted: #4a5568;--color-text-inverse: #ffffff;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .25);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .3);--filter-reduce-blue: none;--brightness-reduced: 1}.work .tile img{filter:grayscale(1) contrast(.6) brightness(.7);opacity:.8;transform:scale(.8)}.work .tile{border-color:#2d3748;background:linear-gradient(145deg,#718096,#4a5568);border-radius:4px;padding:8px;position:relative}.work .tile:before{content:attr(data-value);position:absolute;top:2px;right:4px;font-size:10px;color:#1a202c;font-weight:600;background:#fffffff2;padding:1px 3px;border-radius:2px}.work .tile:hover{border-color:#2c5282;background:linear-gradient(145deg,#4a5568,#2d3748);box-shadow:0 2px 4px #2c528233}.work .simple-mahjong-app{background:#a0aec0}.work .app-title{color:#1a202c;font-weight:600}.work .tiles-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:8px;padding:16px;background:#cbd5e0;border-radius:8px;border:1px solid #2d3748}.work .hand-display{background:#cbd5e0;border:1px solid #2d3748;box-shadow:0 1px 3px #0003}.work .control-group{background:#cbd5e0;border:1px solid #2d3748;box-shadow:0 1px 3px #00000026}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;padding:0;background:var(--color-background);color:var(--color-text-primary);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;transition:background-color var(--transition-normal),color var(--transition-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dark .simple-mahjong-app>*:not(header):not(footer){filter:var(--filter-reduce-blue);brightness:var(--brightness-reduced)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-surface)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.dark ::-webkit-scrollbar-thumb{background:var(--color-text-muted)}.dark ::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}::selection{background:var(--color-primary);color:var(--color-text-inverse)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}*{transition:background-color var(--transition-normal),border-color var(--transition-normal),color var(--transition-normal),box-shadow var(--transition-normal)}.no-transition *{transition:none!important}@media print{.app-header,.theme-toggle,.controls{display:none!important}body{background:#fff!important;color:#000!important}.simple-mahjong-app{box-shadow:none!important}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(prefers-contrast:high){:root{--color-border: #000000;--color-text-primary: #000000}.dark{--color-border: #ffffff;--color-text-primary: #ffffff}}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-left-enter-active,.slide-left-leave-active{transition:transform .4s ease}.slide-left-enter-from{transform:translate(-100%)}.slide-left-leave-to{transform:translate(100%)}.slide-right-enter-active,.slide-right-leave-active{transition:transform .4s ease}.slide-right-enter-from{transform:translate(100%)}.slide-right-leave-to{transform:translate(-100%)}.slide-up-enter-active,.slide-up-leave-active{transition:transform .4s ease}.slide-up-enter-from{transform:translateY(100%)}.slide-up-leave-to{transform:translateY(-100%)}.slide-down-enter-active,.slide-down-leave-active{transition:transform .4s ease}.slide-down-enter-from{transform:translateY(-100%)}.slide-down-leave-to{transform:translateY(100%)}.scale-enter-active,.scale-leave-active{transition:all .3s ease}.scale-enter-from,.scale-leave-to{transform:scale(.8);opacity:0}.bounce-enter-active{animation:bounce-in .6s ease}.bounce-leave-active{animation:bounce-out .3s ease}@keyframes bounce-in{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1);opacity:1}}@keyframes bounce-out{0%{transform:scale(1);opacity:1}to{transform:scale(.3);opacity:0}}.list-enter-active,.list-leave-active{transition:all .4s ease}.list-enter-from,.list-leave-to{opacity:0;transform:translate(30px)}.list-move{transition:transform .4s ease}.hover-lift{transition:all .3s ease}.hover-lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.hover-scale{transition:transform .3s ease}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:all .3s ease}.hover-glow:hover{box-shadow:0 0 20px rgba(var(--color-primary-rgb),.3)}.click-shrink{transition:transform .1s ease}.click-shrink:active{transform:scale(.95)}.pulse{animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}to{transform:scale(1);opacity:1}}.blink{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:.3}}.shake{animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}.bounce{animation:bounce .6s ease}@keyframes bounce{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-8px,0)}70%{transform:translate3d(0,-4px,0)}90%{transform:translate3d(0,-2px,0)}}.rotate{animation:rotate 2s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.wobble{animation:wobble 1s ease-in-out}@keyframes wobble{0%{transform:translate(0)}15%{transform:translate(-25%) rotate(-5deg)}30%{transform:translate(20%) rotate(3deg)}45%{transform:translate(-15%) rotate(-3deg)}60%{transform:translate(10%) rotate(2deg)}75%{transform:translate(-5%) rotate(-1deg)}to{transform:translate(0)}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite}.dark .skeleton{background:linear-gradient(90deg,#2d3748 25%,#4a5568,#2d3748 75%);background-size:200% 100%}.work .skeleton{background:linear-gradient(90deg,#718096 25%,#4a5568,#718096 75%);background-size:200% 100%}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.wave-loading{position:relative;overflow:hidden}.wave-loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:wave 1.5s infinite}@keyframes wave{0%{transform:translate(-100%)}to{transform:translate(100%)}}.notification-enter-active{animation:notification-in .4s ease}.notification-leave-active{animation:notification-out .3s ease}@keyframes notification-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes notification-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.ripple{position:relative;overflow:hidden}.ripple-effect{position:absolute;border-radius:50%;background:#ffffff4d;pointer-events:none;animation:ripple-animation .6s ease-out}@keyframes ripple-animation{0%{transform:scale(0);opacity:1}to{transform:scale(1);opacity:0}}.typewriter{overflow:hidden;border-right:2px solid var(--color-primary);white-space:nowrap;margin:0 auto;animation:typing 3.5s steps(40,end),blink-caret .75s step-end infinite}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink-caret{0%,to{border-color:transparent}50%{border-color:var(--color-primary)}}.float{animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.heartbeat{animation:heartbeat 1.5s ease-in-out infinite both}@keyframes heartbeat{0%{transform:scale(1);transform-origin:center center;animation-timing-function:ease-out}10%{transform:scale(.91);animation-timing-function:ease-in}17%{transform:scale(.98);animation-timing-function:ease-out}33%{transform:scale(.87);animation-timing-function:ease-in}45%{transform:scale(1);animation-timing-function:ease-out}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:768px){.hover-lift:hover,.hover-scale:hover{transform:none}.fade-enter-active,.fade-leave-active{transition-duration:.2s}.slide-left-enter-active,.slide-left-leave-active,.slide-right-enter-active,.slide-right-leave-active{transition-duration:.3s}}.work .pulse{animation:business-pulse 2s infinite}@keyframes business-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.02);opacity:.9}to{transform:scale(1);opacity:1}}.dark .wave-loading:after{background:linear-gradient(90deg,transparent,rgba(74,158,255,.2),transparent)}.dark .ripple-effect{background:#4a9eff4d}.animate-on-scroll{opacity:0;transform:translateY(20px);transition:all .6s ease}.animate-on-scroll.visible{opacity:1;transform:translateY(0)}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.duration-100{animation-duration:.1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.duration-1000{animation-duration:1s}.ease-in{animation-timing-function:ease-in}.ease-out{animation-timing-function:ease-out}.ease-in-out{animation-timing-function:ease-in-out}.ease-linear{animation-timing-function:linear}.floating-window[data-v-d3065aed]{position:fixed;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;box-shadow:0 8px 32px #00000040;display:flex;flex-direction:column;overflow:hidden;backdrop-filter:blur(12px);transition:box-shadow .15s ease,transform .1s ease}.floating-window.window-active[data-v-d3065aed]{box-shadow:0 12px 48px #6366f14d,0 0 0 2px #6366f166;transform:scale(1.005)}.floating-window.minimized[data-v-d3065aed]{height:auto!important}.floating-window.maximized[data-v-d3065aed]{border-radius:12px}.window-header[data-v-d3065aed]{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;min-height:38px;box-sizing:border-box;color:#fff;cursor:grab;user-select:none;touch-action:none;flex-shrink:0}.window-header[data-v-d3065aed]:active{cursor:grabbing}.window-header[data-v-d3065aed]:focus-visible{outline:2px solid rgba(255,255,255,.95);outline-offset:-2px}.header-purple[data-v-d3065aed]{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.header-orange[data-v-d3065aed]{background:linear-gradient(135deg,#f59e0b,#d97706)}.header-green[data-v-d3065aed]{background:linear-gradient(135deg,#22c55e,#16a34a)}.header-blue[data-v-d3065aed]{background:linear-gradient(135deg,#06b6d4,#0891b2)}.header-gray[data-v-d3065aed]{background:linear-gradient(135deg,#64748b,#475569)}.header-left[data-v-d3065aed]{display:flex;align-items:center;gap:6px}.window-icon[data-v-d3065aed]{font-size:14px}.window-header h3[data-v-d3065aed]{margin:0;font-size:13px;font-weight:600}.header-right[data-v-d3065aed]{display:flex;align-items:center;gap:4px}.header-btn[data-v-d3065aed]{background:#ffffff26;border:none;color:#fff;width:22px;height:22px;min-width:22px;min-height:22px!important;border-radius:50%;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}.header-btn[data-v-d3065aed]:hover{background:#ffffff4d;transform:scale(1.1)}.close-btn[data-v-d3065aed]:hover{background:#ef4444cc}.window-content[data-v-d3065aed]{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;overscroll-behavior:contain}.window-body[data-v-d3065aed]{flex:1;min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.window-body[data-v-d3065aed] .info-panel,.window-body[data-v-d3065aed] .tab-content,.window-body[data-v-d3065aed] .patterns-scroll-area,.window-body[data-v-d3065aed] .magic-content,.window-body[data-v-d3065aed] .settings-content,.window-body[data-v-d3065aed] .favorites-content,.window-body[data-v-d3065aed] .achievements-content,.window-body[data-v-d3065aed] .easy-content,.window-body[data-v-d3065aed] .wrong-content,.window-body[data-v-d3065aed] .virtual-scroll-container,.window-body[data-v-d3065aed] .heatmap{min-height:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.resize-handle[data-v-d3065aed]{position:absolute;z-index:10;touch-action:none}.resize-se[data-v-d3065aed]{right:0;bottom:0;width:16px;height:16px;cursor:se-resize;background:linear-gradient(135deg,transparent 50%,rgba(100,100,100,.3) 50%);border-radius:0 0 12px}.resize-se[data-v-d3065aed]:hover{background:linear-gradient(135deg,transparent 50%,rgba(99,102,241,.5) 50%)}.resize-e[data-v-d3065aed]{right:0;top:40px;bottom:16px;width:4px;cursor:e-resize}.resize-e[data-v-d3065aed]:hover{background:#6366f166}.resize-s[data-v-d3065aed]{bottom:0;left:10px;right:16px;height:4px;cursor:s-resize}.resize-s[data-v-d3065aed]:hover{background:#6366f166}.window-fade-enter-active[data-v-d3065aed]{animation:window-in-d3065aed .2s ease-out}.window-fade-leave-active[data-v-d3065aed]{animation:window-out-d3065aed .15s ease-in}@keyframes window-in-d3065aed{0%{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes window-out-d3065aed{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@media(max-width:768px){.window-header[data-v-d3065aed]{padding:8px 10px;min-height:36px}.window-header h3[data-v-d3065aed],.window-icon[data-v-d3065aed]{font-size:12px}.resize-e[data-v-d3065aed],.resize-s[data-v-d3065aed]{display:none}.resize-se[data-v-d3065aed]{width:20px;height:20px}.header-btn[data-v-d3065aed]{width:26px;height:26px;min-width:26px;min-height:26px!important;font-size:11px;flex-shrink:0}}@media(max-width:480px){.floating-window[data-v-d3065aed]{border-radius:10px}.window-header h3[data-v-d3065aed]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-left[data-v-d3065aed]{gap:4px;flex-shrink:1;min-width:0}.header-right[data-v-d3065aed]{gap:4px;flex-shrink:0}.resize-se[data-v-d3065aed]{width:16px;height:16px}}@media(pointer:coarse){.window-header[data-v-d3065aed]{min-height:48px;padding:8px 12px}.header-btn[data-v-d3065aed]{width:40px;height:40px;min-width:40px;min-height:40px!important;font-size:14px}.header-right[data-v-d3065aed]{gap:6px}.resize-se[data-v-d3065aed]{width:32px;height:32px}.resize-e[data-v-d3065aed]{width:10px}.resize-s[data-v-d3065aed]{height:10px}}.toolbar-container[data-v-e0453cbc]{position:relative}.toolbar-row[data-v-e0453cbc]{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:40px}.toolbar-row-primary[data-v-e0453cbc],.toolbar-row-battle[data-v-e0453cbc]{gap:8px}.toolbar-sep[data-v-e0453cbc]{width:1px;height:20px;background:var(--border-color);flex-shrink:0;opacity:1}.btn-group[data-v-e0453cbc]{display:flex;align-items:center;gap:4px}.battle-mode-badge[data-v-e0453cbc]{padding:9px 12px;border-radius:999px;background:linear-gradient(135deg,#ffe8a82e,#ffffff14);border:1px solid rgba(255,232,168,.28);color:var(--text-color);font-size:12px;font-weight:800;white-space:nowrap}.battle-mode-meta[data-v-e0453cbc]{flex:1;min-width:0;padding:0 6px;font-size:13px;font-weight:700;color:var(--text-color)}.mode-switch[data-v-e0453cbc]{flex-shrink:0}.mode-tab[data-v-e0453cbc]{padding:6px 10px;min-height:40px;font-size:13px;font-weight:600;border:1px solid var(--border-color);border-radius:8px;background:linear-gradient(135deg,var(--bg-secondary),var(--bg-primary));color:var(--text-color);cursor:pointer;transition:all .2s}.mode-tab[data-v-e0453cbc]:hover:not(:disabled){background:linear-gradient(135deg,var(--color-brand-50),var(--bg-primary));color:var(--text-color)}.mode-tab.active[data-v-e0453cbc]{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;border-color:transparent}.mode-tab.mode-tab-riichi.active[data-v-e0453cbc]{background:linear-gradient(135deg,#06b6d4,#0891b2)}.mode-tab[data-v-e0453cbc]:disabled{opacity:.72;cursor:not-allowed}.mode-tab-label[data-v-e0453cbc]{white-space:nowrap}.random-wrap[data-v-e0453cbc]{display:inline-flex;align-items:center;gap:2px}.random-bias-select[data-v-e0453cbc]{padding:4px 6px;min-height:40px;font-size:11px;border-radius:6px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-color);cursor:pointer;min-width:0}.random-bias-select[data-v-e0453cbc]:focus{outline:none;border-color:var(--accent-color)}.btn[data-v-e0453cbc]{padding:6px 10px;min-height:40px;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;font-size:20px;background:var(--bg-secondary);color:var(--text-color);transition:all .2s;display:flex;align-items:center;justify-content:center;gap:4px}.btn[data-v-e0453cbc]:hover:not(:disabled){background:linear-gradient(135deg,var(--color-brand-50),var(--bg-primary));transform:translateY(-1px)}.btn[data-v-e0453cbc]:disabled{opacity:.68;cursor:not-allowed}.btn-label[data-v-e0453cbc]{font-size:12px}.btn.active[data-v-e0453cbc],.btn-quiz-active[data-v-e0453cbc],.btn-discard-active[data-v-e0453cbc],.btn-favorite-active[data-v-e0453cbc],.btn-easy-active[data-v-e0453cbc],.btn-purple[data-v-e0453cbc],.btn-orange[data-v-e0453cbc],.btn-red[data-v-e0453cbc],.btn-gray[data-v-e0453cbc]{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;border-color:transparent}.btn-quiz-active[data-v-e0453cbc]{background:linear-gradient(135deg,#f59e0b,#d97706)}.btn-discard-active[data-v-e0453cbc]{background:linear-gradient(135deg,#10b981,#059669)}.btn-favorite-active[data-v-e0453cbc]{background:linear-gradient(135deg,#f59e0b,#d97706)}.btn-easy-active[data-v-e0453cbc]{background:linear-gradient(135deg,#10b981,#059669)}.btn-purple[data-v-e0453cbc]{background:linear-gradient(135deg,#6366f1,#8b5cf6)}.btn-orange[data-v-e0453cbc]{background:linear-gradient(135deg,#f59e0b,#d97706)}.btn-red[data-v-e0453cbc]{background:linear-gradient(135deg,#ef4444,#dc2626)}.btn-gray[data-v-e0453cbc]{background:linear-gradient(135deg,#64748b,#475569)}.btn-magic-active[data-v-e0453cbc]{background:linear-gradient(135deg,#ec4899,#a855f7)}.btn-outline[data-v-e0453cbc],.btn-primary[data-v-e0453cbc],.btn-secondary[data-v-e0453cbc],.btn-hongzhong[data-v-e0453cbc],.btn-facai[data-v-e0453cbc]{background:linear-gradient(135deg,var(--bg-secondary),var(--bg-primary));color:var(--text-color);border:1px solid var(--border-color)}.more-wrap[data-v-e0453cbc]{margin-left:auto}.btn-more[data-v-e0453cbc]{min-width:66px;padding:6px 10px;font-size:14px;line-height:1;border-style:dashed;color:var(--text-color);gap:6px}.btn-more .btn-more-text[data-v-e0453cbc]{font-size:12px;font-weight:700;letter-spacing:.02em;white-space:nowrap}.btn-more .btn-more-icon[data-v-e0453cbc]{font-size:1.1em}.btn-more[data-v-e0453cbc]:hover{color:var(--text-color)}.btn-more.open[data-v-e0453cbc]{background:linear-gradient(135deg,var(--color-brand-50),var(--bg-primary));border-color:var(--accent-color);border-style:solid;color:var(--text-color)}.practice-mode-wrap[data-v-e0453cbc]{position:relative}.practice-mode-wrap .btn .practice-btn-icon[data-v-e0453cbc]{font-size:1em}.practice-mode-wrap .btn .practice-btn-chevron[data-v-e0453cbc]{font-size:10px;opacity:1;margin-left:2px;transition:transform .2s}.practice-mode-wrap .btn.practice-btn-open .practice-btn-chevron[data-v-e0453cbc]{transform:rotate(-180deg)}.practice-dropdown[data-v-e0453cbc]{position:absolute;top:100%;left:0;margin-top:4px;min-width:200px;padding:6px 0;background:linear-gradient(135deg,var(--bg-secondary),var(--bg-primary));border:1px solid var(--border-color);border-radius:10px;box-shadow:0 6px 20px #00000026;z-index:var(--z-dropdown, 1500)}.practice-opt[data-v-e0453cbc]{display:block;width:100%;padding:10px 14px;font-size:13px;text-align:left;border:none;background:transparent;color:var(--text-color);cursor:pointer;transition:background .15s}.practice-opt[data-v-e0453cbc]:hover{background:var(--bg-tertiary)}.more-menu-content[data-v-e0453cbc]{flex:1;min-height:0;overflow-y:auto;padding:8px 0 12px;-webkit-overflow-scrolling:touch}.more-menu-content .more-group-title[data-v-e0453cbc]{padding:10px 12px 4px;font-size:11px;font-weight:600;color:var(--text-color);letter-spacing:.03em}.more-menu-content .more-group-title[data-v-e0453cbc]:first-child{padding-top:4px}.more-menu-content .more-item[data-v-e0453cbc]{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:10px 12px;font-size:14px;text-align:left;border:none;background:transparent;color:var(--text-color);cursor:pointer;transition:background .15s}.more-menu-content .more-item[data-v-e0453cbc]:hover:not(:disabled){background:var(--bg-tertiary)}.more-menu-content .more-item[data-v-e0453cbc]:disabled{opacity:.72;cursor:not-allowed}@media(max-width:768px){.toolbar-row-primary[data-v-e0453cbc],.toolbar-row-battle[data-v-e0453cbc]{gap:6px}.toolbar-sep[data-v-e0453cbc]{height:18px}.btn-group[data-v-e0453cbc]{gap:3px}.mode-tab[data-v-e0453cbc]{padding:5px 8px;font-size:12px}.mode-tab[data-v-e0453cbc],.random-bias-select[data-v-e0453cbc],.btn[data-v-e0453cbc]{min-height:42px}.btn[data-v-e0453cbc]{padding:5px 8px;font-size:18px}.btn-label[data-v-e0453cbc]{display:none}.btn-more[data-v-e0453cbc]{min-width:62px;padding:5px 8px;font-size:13px}.btn-more .btn-more-text[data-v-e0453cbc]{display:inline;font-size:12px}.battle-mode-meta[data-v-e0453cbc]{font-size:12px}}@media(max-width:480px){.toolbar-row-primary[data-v-e0453cbc]{gap:4px}.toolbar-row-battle[data-v-e0453cbc]{flex-wrap:wrap;gap:4px}.toolbar-sep[data-v-e0453cbc]{height:16px}.btn-group[data-v-e0453cbc]{gap:2px}.mode-tab[data-v-e0453cbc]{padding:4px 6px;font-size:11px}.btn[data-v-e0453cbc]{padding:5px 6px;font-size:18px;min-width:36px}.btn-more[data-v-e0453cbc]{min-width:58px;padding:5px 7px}.btn-more .btn-more-text[data-v-e0453cbc]{font-size:11px}.battle-mode-badge[data-v-e0453cbc]{padding:8px 10px;font-size:11px}.battle-mode-meta[data-v-e0453cbc]{width:100%;padding:0;font-size:11px}}@media(max-width:360px){.btn-group.core-tiles .btn-secondary[data-v-e0453cbc]{display:none}}.level-badge[data-v-f6319ef2]{display:flex;align-items:center;gap:6px;padding:4px 10px;background:linear-gradient(135deg,#6366f126,#8b5cf626);border:1px solid rgba(99,102,241,.3);border-radius:20px;cursor:pointer;transition:all .2s}.level-badge[data-v-f6319ef2]:hover{background:linear-gradient(135deg,#6366f140,#8b5cf640);transform:scale(1.02)}.level-badge[data-v-f6319ef2]:active{transform:scale(.98)}.level-icon[data-v-f6319ef2]{font-size:18px;line-height:1}.level-info[data-v-f6319ef2]{display:flex;flex-direction:column;gap:2px}.level-num[data-v-f6319ef2]{font-size:11px;font-weight:700;color:#6366f1;line-height:1}.exp-bar[data-v-f6319ef2]{width:40px;height:3px;background:#6366f133;border-radius:2px;overflow:hidden}.exp-fill[data-v-f6319ef2]{height:100%;background:linear-gradient(90deg,#6366f1,#8b5cf6);border-radius:2px;transition:width .3s ease}@media(max-width:480px){.level-badge[data-v-f6319ef2]{padding:3px 8px;gap:4px}.level-icon[data-v-f6319ef2]{font-size:16px}.level-num[data-v-f6319ef2]{font-size:10px}.exp-bar[data-v-f6319ef2]{width:30px;height:2px}}.app-header[data-v-7cc80a68]{background-color:var(--bg-secondary);background:linear-gradient(135deg,var(--bg-primary) 0%,var(--bg-secondary) 100%);border-bottom:1px solid var(--border-color);padding:calc(10px + var(--safe-area-top)) calc(16px + var(--safe-area-right)) 10px calc(16px + var(--safe-area-left));position:fixed;top:0;left:0;right:0;z-index:var(--z-app-header, 900);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 12px #0000001a}.app-header--battle[data-v-7cc80a68]{padding:calc(6px + var(--safe-area-top)) calc(12px + var(--safe-area-right)) 6px calc(12px + var(--safe-area-left));background:linear-gradient(180deg,#04100ef5,#04100ed6);border-bottom-color:#ffffff14;box-shadow:0 8px 28px #0003}.header-content[data-v-7cc80a68]{display:flex;justify-content:center;align-items:center;gap:12px;max-width:1200px;margin:0 auto}.app-header--battle .header-content[data-v-7cc80a68]{max-width:1480px}.toolbar-section[data-v-7cc80a68]{flex:1;background:#ffffff08;border-radius:8px;padding:6px 10px}.level-badge-container[data-v-7cc80a68]{flex-shrink:0}.app-header--battle .toolbar-section[data-v-7cc80a68]{padding:4px 8px;border-radius:12px;background:#ffffff05}@media(max-width:768px){.desktop-only[data-v-7cc80a68]{display:none}.app-header[data-v-7cc80a68]{padding:calc(6px + var(--safe-area-top)) calc(8px + var(--safe-area-right)) 6px calc(8px + var(--safe-area-left));-webkit-backdrop-filter:none;backdrop-filter:none}.app-header--battle[data-v-7cc80a68]{padding:calc(4px + var(--safe-area-top)) calc(8px + var(--safe-area-right)) 4px calc(8px + var(--safe-area-left))}.toolbar-section[data-v-7cc80a68]{padding:4px 6px}.app-header--battle .toolbar-section[data-v-7cc80a68]{padding:3px 5px}}@media(hover:none)and (pointer:coarse){.app-header[data-v-7cc80a68]{-webkit-backdrop-filter:none;backdrop-filter:none}}.main-content[data-v-e925d383]{flex:1;padding:20px;background:var(--bg-primary)}.main-content--immersive[data-v-e925d383]{padding:10px 12px 12px}.content-container[data-v-e925d383]{max-width:1200px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:20px}.content-container--immersive[data-v-e925d383]{max-width:min(1500px,calc(100vw - 24px));gap:12px}@media(max-width:768px){.main-content[data-v-e925d383]{padding:12px;padding-left:max(12px,var(--safe-area-left));padding-right:max(12px,var(--safe-area-right))}.main-content--immersive[data-v-e925d383]{padding:8px;padding-left:max(8px,var(--safe-area-left));padding-right:max(8px,var(--safe-area-right))}.content-container[data-v-e925d383]{gap:16px}.content-container--immersive[data-v-e925d383]{max-width:calc(100vw - 16px);gap:10px}}.toast[data-v-876d6179]{position:fixed;top:max(20px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));z-index:var(--z-toast, 1600);min-width:300px;max-width:500px;border-radius:8px;box-shadow:0 4px 12px #00000026}.toast-content[data-v-876d6179]{display:flex;align-items:center;padding:12px 16px;gap:8px}.toast-icon[data-v-876d6179]{font-size:18px;flex-shrink:0}.toast-text[data-v-876d6179]{flex:1;display:flex;flex-direction:column;gap:2px}.toast-message[data-v-876d6179]{font-size:14px;line-height:1.4;font-weight:500}.toast-subtitle[data-v-876d6179]{font-size:12px;opacity:.8;line-height:1.2}.toast-progress[data-v-876d6179]{position:relative;height:3px;background:#0000001a;overflow:hidden;border-radius:0 0 8px 8px}.toast-progress-bar[data-v-876d6179]{height:100%;background:#fffc;animation:toast-progress-shrink-876d6179 linear;transform-origin:left}.toast-persistent[data-v-876d6179]{border-left-width:6px;box-shadow:0 8px 32px #00000040}@keyframes toast-progress-shrink-876d6179{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.toast-close[data-v-876d6179]{background:none;border:none;font-size:18px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;opacity:.7;transition:all .2s}.toast-close[data-v-876d6179]:hover{opacity:1;background:#0000001a}.toast-success[data-v-876d6179]{background:#d4edda;color:#155724;border-left:4px solid #2ecc71}.toast-warning[data-v-876d6179]{background:#fff3cd;color:#856404;border-left:4px solid #f39c12}.toast-error[data-v-876d6179]{background:#f8d7da;color:#721c24;border-left:4px solid #dc3545}.toast-info[data-v-876d6179]{background:#d1ecf1;color:#0c5460;border-left:4px solid #17a2b8}.toast-enter-active[data-v-876d6179]{animation:slideInRight-876d6179 .3s ease-out}.toast-leave-active[data-v-876d6179]{animation:slideOutRight-876d6179 .3s ease-in}@keyframes slideInRight-876d6179{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOutRight-876d6179{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@media(max-width:768px){.toast[data-v-876d6179]{top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right));left:max(10px,env(safe-area-inset-left));min-width:auto;max-width:none}}.error-boundary[data-v-4e6ffe31]{display:flex;align-items:center;justify-content:center;min-height:200px;padding:24px;background:linear-gradient(135deg,var(--color-error-50),var(--bg-primary));border:2px dashed var(--color-error-500);border-radius:12px;margin:16px}.error-content[data-v-4e6ffe31]{text-align:center;max-width:300px}.error-icon[data-v-4e6ffe31]{font-size:48px;display:block;margin-bottom:16px}.error-title[data-v-4e6ffe31]{margin:0 0 8px;font-size:20px;color:#ef4444}.error-message[data-v-4e6ffe31]{margin:0 0 16px;font-size:14px;color:var(--text-color);line-height:1.5}.btn-retry[data-v-4e6ffe31]{padding:10px 20px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:8px;cursor:pointer;transition:all .2s}.btn-retry[data-v-4e6ffe31]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #ef444466}.loading-container[data-v-c3a0d1db]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:16px}.loading-container.overlay[data-v-c3a0d1db]{position:absolute;inset:0;background:#000000b3;backdrop-filter:blur(4px);z-index:100;border-radius:inherit}.spinner[data-v-c3a0d1db]{position:relative;display:flex;align-items:center;justify-content:center}.spinner.small[data-v-c3a0d1db]{width:24px;height:24px}.spinner.medium[data-v-c3a0d1db]{width:40px;height:40px}.spinner.large[data-v-c3a0d1db]{width:60px;height:60px}.spinner-ring[data-v-c3a0d1db]{position:absolute;width:100%;height:100%;border-radius:50%;border:3px solid transparent;border-top-color:var(--color-primary, #6366f1);animation:spin-c3a0d1db 1s linear infinite}.spinner-ring[data-v-c3a0d1db]:nth-child(2){width:80%;height:80%;border-top-color:var(--color-success, #22c55e);animation-duration:.8s;animation-direction:reverse}.spinner-ring[data-v-c3a0d1db]:nth-child(3){width:60%;height:60%;border-top-color:var(--color-warning, #f59e0b);animation-duration:.6s}@keyframes spin-c3a0d1db{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-text[data-v-c3a0d1db]{margin:0;font-size:14px;color:var(--text-color);text-align:center;line-height:1.5;font-weight:500}.progress-bar[data-v-c3a0d1db]{width:120px;height:4px;background:var(--bg-tertiary);border-radius:2px;overflow:hidden}.progress-fill[data-v-c3a0d1db]{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-success));border-radius:2px;transition:width .3s ease}.celebration-overlay[data-v-0dd7dd3f]{position:fixed;inset:0;z-index:var(--z-celebration, 1700);pointer-events:all;background:#0006;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;overflow:hidden}.particle[data-v-0dd7dd3f]{position:absolute;top:-30px;animation:particle-fall-0dd7dd3f linear forwards;pointer-events:none;will-change:transform}@keyframes particle-fall-0dd7dd3f{0%{transform:translateY(0) translate(0) rotate(0) scale(1);opacity:1}to{transform:translateY(100vh) translate(var(--drift, 0px)) rotate(var(--rotation, 360deg)) scale(.5);opacity:0}}.celebration-message[data-v-0dd7dd3f]{text-align:center;padding:32px 48px;background:var(--bg-secondary, #1e293b);border-radius:20px;box-shadow:0 20px 60px #0000004d;animation:message-pop-0dd7dd3f .5s cubic-bezier(.34,1.56,.64,1);max-width:90vw}@keyframes message-pop-0dd7dd3f{0%{transform:scale(0) rotate(-10deg);opacity:0}50%{transform:scale(1.1) rotate(2deg)}to{transform:scale(1) rotate(0);opacity:1}}.message-icon[data-v-0dd7dd3f]{font-size:64px;margin-bottom:16px;animation:icon-bounce-0dd7dd3f 1s ease infinite;filter:drop-shadow(0 4px 8px rgba(0,0,0,.2))}@keyframes icon-bounce-0dd7dd3f{0%,to{transform:scale(1) translateY(0)}50%{transform:scale(1.1) translateY(-8px)}}.message-title[data-v-0dd7dd3f]{font-size:28px;font-weight:700;color:var(--text-color, #e2e8f0);margin-bottom:8px;text-shadow:0 2px 8px rgba(0,0,0,.2)}.message-subtitle[data-v-0dd7dd3f]{font-size:16px;color:var(--text-color, #e2e8f0);margin-bottom:20px;opacity:.92}.celebration-btn[data-v-0dd7dd3f]{margin-top:16px;padding:12px 32px;font-size:16px;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--color-brand-500, #6366f1),var(--color-brand-600, #4f46e5));border:none;border-radius:10px;cursor:pointer;transition:all .2s ease}.celebration-btn[data-v-0dd7dd3f]:hover{transform:translateY(-2px);box-shadow:0 4px 20px #6366f166}.celebration-btn[data-v-0dd7dd3f]:active{transform:translateY(0)}.celebration-enter-active[data-v-0dd7dd3f]{animation:overlay-in-0dd7dd3f .3s ease-out}.celebration-leave-active[data-v-0dd7dd3f]{animation:overlay-out-0dd7dd3f .2s ease-in}@keyframes overlay-in-0dd7dd3f{0%{opacity:0}to{opacity:1}}@keyframes overlay-out-0dd7dd3f{0%{opacity:1}to{opacity:0}}@media(max-width:768px){.celebration-message[data-v-0dd7dd3f]{padding:24px 32px}.message-icon[data-v-0dd7dd3f]{font-size:48px}.message-title[data-v-0dd7dd3f]{font-size:22px}.message-subtitle[data-v-0dd7dd3f]{font-size:14px}}.simple-mahjong-app[data-v-fc7dc19a]{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg-primary);color:var(--text-color);padding-bottom:calc(var(--app-footer-height, 0px) + 28px);padding-right:calc(var(--app-footer-side-width, 0px) + 28px);transition:padding-top .2s ease}.simple-mahjong-app--battle[data-v-fc7dc19a]{padding-bottom:16px;padding-right:0;background:radial-gradient(circle at top,rgba(31,122,101,.22),transparent 32%),linear-gradient(180deg,#071816,#04100f 74%,#020807)}.loading-fallback[data-v-fc7dc19a]{display:flex;align-items:center;justify-content:center;min-height:300px}@media(max-width:768px){.simple-mahjong-app[data-v-fc7dc19a]{padding-bottom:calc(var(--app-footer-height, 0px) + 18px);padding-right:0}.simple-mahjong-app--battle[data-v-fc7dc19a]{padding-bottom:12px}}
