@font-face{font-family:BopomofoRuby;src:url(/fonts/BopomofoRuby1909-v1-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}ruby{position:relative;margin-right:24px;vertical-align:middle}rt{position:absolute;top:50%;left:100%;transform:translateY(-50%);margin-left:1px;font-family:BopomofoRuby,Noto Sans TC,sans-serif;writing-mode:vertical-rl;text-orientation:upright;font-size:10px;line-height:1;color:#06c;white-space:nowrap}rt[data-tone]:after{content:attr(data-tone);position:absolute;writing-mode:horizontal-tb;text-orientation:mixed;top:50%;left:calc(100% + 2px);transform:translateY(-50%);font-size:1em;line-height:1}.zhuyin-top[data-tone]:after,.zhuyin-bottom[data-tone]:after,.zhuyin[data-tone]:after{content:attr(data-tone);position:absolute;writing-mode:horizontal-tb;text-orientation:mixed;top:50%;left:calc(100% + 2px);transform:translateY(-50%);font-size:1em;line-height:1}rp{display:none}:root{--fx-primary: #e74c3c;--fx-primary-hover: #c0392b;--fx-bg: #ffffff;--fx-bg-soft: #f8f9fa;--fx-text: #111827;--fx-text-muted: #6b7280;--fx-border: rgba(0, 0, 0, .08);--fx-shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--fx-shadow-md: 0 6px 18px rgba(0, 0, 0, .12);--fx-radius-sm: 8px;--fx-radius-md: 12px;--fx-space-2: 8px;--fx-space-3: 12px;--fx-space-4: 16px}html,body{width:100%;height:100%;overflow-x:hidden}#app{width:100%;min-width:100%;margin:0;padding:0;font-weight:400;display:flex;flex-direction:column}a{text-decoration:none;color:var(--fx-primary);transition:.3s}@media (hover: hover){a:hover{color:var(--fx-primary-hover)}}@media (min-width: 1024px){body{width:100%;display:block}#app{width:100%;display:flex;flex-direction:column;padding:0}}.pwa-toast[data-v-3b78932d]{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:#1f2937;color:#f9fafb;border-radius:12px;padding:12px 16px;display:flex;align-items:center;gap:16px;box-shadow:0 10px 30px #00000040;z-index:9999;font-size:14px;max-width:calc(100vw - 32px)}.pwa-toast__msg[data-v-3b78932d]{display:inline-flex;align-items:center;gap:8px;font-weight:500}.pwa-toast__icon[data-v-3b78932d]{font-size:18px;animation:spin-3b78932d 2s linear infinite}@keyframes spin-3b78932d{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pwa-toast__actions[data-v-3b78932d]{display:inline-flex;gap:8px}.pwa-toast__btn[data-v-3b78932d]{border:none;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s}.pwa-toast__btn--primary[data-v-3b78932d]{background:#e74c3c;color:#fff}.pwa-toast__btn--primary[data-v-3b78932d]:hover{opacity:.92}.pwa-toast__btn--ghost[data-v-3b78932d]{background:transparent;color:#d1d5db;border:1px solid #4b5563}.pwa-toast__btn--ghost[data-v-3b78932d]:hover{background:#ffffff0f}.pwa-toast-fade-enter-active[data-v-3b78932d],.pwa-toast-fade-leave-active[data-v-3b78932d]{transition:all .25s ease}.pwa-toast-fade-enter-from[data-v-3b78932d],.pwa-toast-fade-leave-to[data-v-3b78932d]{opacity:0;transform:translate(-50%) translateY(20px)}.celebration-fade-enter-active,.celebration-fade-leave-active{transition:opacity .22s ease}.celebration-fade-enter-from,.celebration-fade-leave-to{opacity:0}.celebration-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5200;pointer-events:none}.celebration-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 42%,#fff1763b,#fff0)}.celebration-center{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%)}.celebration-ring{position:absolute;top:-34px;right:-34px;bottom:-34px;left:-34px;border-radius:999px;border:8px solid rgba(255,193,7,.4);animation:celebrationRingPulse 1s ease-out infinite}.celebration-banner{position:relative;min-width:280px;max-width:min(80vw,560px);padding:18px 26px;border-radius:18px;background:linear-gradient(120deg,#ffb300,#fb8c00 42%,#f4511e);color:#fff;box-shadow:0 16px 45px #00000047;text-align:center;animation:celebrationBounce .7s ease-out}.celebration-title{font-size:clamp(30px,5vw,56px);line-height:1.08;font-weight:900;letter-spacing:1px;text-shadow:0 3px 0 rgba(0,0,0,.15)}.celebration-sub{margin-top:8px;font-size:clamp(15px,2.1vw,22px);font-weight:700;opacity:.96}.celebration-confetti-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.celebration-burst-wrap{position:absolute;left:50%;top:42%;width:1px;height:1px}.celebration-burst{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font-size:var(--size, 28px);filter:drop-shadow(0 2px 6px rgba(0,0,0,.18));animation:celebrationBurstFly 1.3s ease-out forwards}.celebration-confetti{position:absolute;top:-30px;border-radius:3px;opacity:.96;transform:rotate(var(--rot, 0deg));animation-name:celebrationConfettiFall;animation-timing-function:cubic-bezier(.2,.7,.1,1);animation-fill-mode:forwards}.celebration-confetti:nth-child(4n+1){background:#ef4444}.celebration-confetti:nth-child(4n+2){background:#22c55e}.celebration-confetti:nth-child(4n+3){background:#3b82f6}.celebration-confetti:nth-child(4n){background:#f59e0b}@keyframes celebrationBounce{0%{transform:scale(.6) translateY(20px);opacity:0}60%{transform:scale(1.08) translateY(-6px);opacity:1}to{transform:scale(1) translateY(0);opacity:1}}@keyframes celebrationRingPulse{0%{transform:scale(.75);opacity:.82}to{transform:scale(1.12);opacity:0}}@keyframes celebrationConfettiFall{0%{transform:translateZ(0) rotate(var(--rot, 0deg));opacity:0}10%{opacity:1}to{transform:translate3d(var(--drift, 0px),108vh,0) rotate(calc(var(--rot, 0deg) + 280deg));opacity:0}}@keyframes celebrationBurstFly{0%{opacity:0;transform:translate(-50%,-50%) rotate(0) scale(.5)}20%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--dx, 0px)),calc(-50% + var(--dy, 0px))) rotate(28deg) scale(1.22)}}@media (prefers-reduced-motion: reduce){.celebration-ring,.celebration-banner,.celebration-confetti,.celebration-burst{animation:none!important}}.celebration-preset-golden_burst .celebration-banner{background:linear-gradient(120deg,#ffb300,#fb8c00 42%,#f4511e)}.celebration-preset-star_pop .celebration-banner{background:linear-gradient(120deg,#1d4ed8,#2563eb 42%,#7c3aed)}.celebration-preset-rainbow_wave .celebration-banner{background:linear-gradient(120deg,#ef4444,#f59e0b 25%,#22c55e,#3b82f6 75%,#8b5cf6)}.celebration-preset-confetti_storm .celebration-banner{background:linear-gradient(120deg,#ec4899,#f43f5e 45%,#f97316)}.celebration-preset-firework_night .celebration-banner{background:linear-gradient(120deg,#0f172a,#1e293b 40%,#2563eb)}.celebration-preset-trophy_shine .celebration-banner{background:linear-gradient(120deg,#f59e0b,#d97706 45%,#b45309)}.celebration-preset-rocket_launch .celebration-banner{background:linear-gradient(120deg,#0ea5e9,#2563eb 45%,#1d4ed8)}.celebration-preset-comet_tail .celebration-banner{background:linear-gradient(120deg,#14b8a6,#06b6d4 45%,#3b82f6)}.celebration-preset-power_flash .celebration-banner{background:linear-gradient(120deg,#84cc16,#22c55e 45%,#16a34a)}.celebration-preset-bubble_cheer .celebration-banner{background:linear-gradient(120deg,#ec4899,#d946ef 45%,#8b5cf6)}.celebration-preset-drum_win .celebration-banner{background:linear-gradient(120deg,#f97316,#ef4444 45%,#eab308)}.celebration-preset-legend_crown .celebration-banner{background:linear-gradient(120deg,#f59e0b,#ef4444 30%,#7c3aed 75%)}.celebration-style-bubble .celebration-confetti{border-radius:999px;opacity:.8}.celebration-style-firework .celebration-backdrop{background:radial-gradient(circle at 50% 40%,#3b82f647,#0f172a05)}.celebration-style-firework .celebration-ring{border-color:#3b82f673;animation-duration:.74s}.celebration-style-rainbow .celebration-title{text-shadow:0 0 12px rgba(255,255,255,.34)}.celebration-style-storm .celebration-confetti{animation-duration:.9s!important}.celebration-style-power .celebration-ring{border-width:10px;animation-duration:.62s}.celebration-style-comet .celebration-burst{animation-duration:1s!important}.celebration-style-rocket .celebration-banner{transform-origin:center bottom;animation:celebrationBounce .52s ease-out}.celebration-style-crown .celebration-banner{box-shadow:0 0 0 2px #ffffff3d,0 16px 45px #00000047}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Microsoft YaHei,微軟雅黑,Noto Sans TC,Arial,sans-serif;color:#333;line-height:1.6;overflow-x:hidden}html{overflow-x:hidden}@media (max-width: 768px){.app-normal-layout.is-mobile-fullscreen .n-layout-header,.app-normal-layout.is-mobile-fullscreen .n-layout-sider,.app-normal-layout.is-mobile-fullscreen .n-layout-footer{display:none!important}.app-normal-layout.is-mobile-fullscreen .n-layout-content>.n-scrollbar>.n-scrollbar-container>.n-scrollbar-content,.app-normal-layout.is-mobile-fullscreen .n-layout-content{padding:0!important}}@media (max-width: 768px){.app-normal-layout .app-header.n-layout-header{padding:0 12px!important;height:52px!important}.app-normal-layout .app-header__logo{font-size:16px!important}.app-normal-layout .app-header__user{max-width:120px!important;height:30px!important;padding:0 8px!important;font-size:12px!important;gap:4px!important}.app-normal-layout .app-header__btn{padding:0 10px!important;height:32px!important}.app-normal-layout .app-header__btn .n-button__content{font-size:13px!important}.app-normal-layout .app-header__actions{gap:4px!important}.app-normal-layout .app-header__hamburger{height:36px!important;padding:0 6px!important}.app-normal-layout .n-layout-content>div[style*=padding]{padding:12px!important}.app-normal-layout .n-layout-footer{padding:12px!important;font-size:12px!important}}@media (max-width: 480px){.app-normal-layout .app-header.n-layout-header{padding:0 8px!important}.app-normal-layout .app-header__logo{font-size:15px!important}.app-normal-layout .app-header__user{max-width:36px!important;padding:0 6px!important}.app-normal-layout .app-header__user-name{display:none!important}.app-normal-layout .app-header__btn{padding:0 8px!important;height:30px!important}.app-normal-layout .app-header__btn .n-button__content{font-size:12px!important}}.page-fade-enter-active,.page-fade-leave-active{transition:opacity .18s ease}.page-fade-enter-from,.page-fade-leave-to{opacity:0}
