*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-primary: #007AFF;--color-primary-light: #4DA2FF;--color-primary-dark: #0056CC;--color-primary-bg: rgba(0, 122, 255, .08);--color-accent: #34C759;--color-accent-light: #6ADB83;--color-warning: #FF9500;--color-danger: #FF3B30;--color-info: #5AC8FA;--color-purple: #AF52DE;--color-gold: #FFD60A;--gray-50: #F9FAFB;--gray-100: #F2F2F7;--gray-200: #E5E5EA;--gray-300: #D1D1D6;--gray-400: #C7C7CC;--gray-500: #8E8E93;--gray-600: #636366;--gray-700: #48484A;--gray-800: #3A3A3C;--gray-900: #1C1C1E;--bg: #ffffff;--text: var(--gray-900);--text-secondary: var(--gray-500);--border: var(--gray-200);--white: #FFFFFF;--primary: var(--color-primary);--primary-dark: var(--color-primary-dark);--success: var(--color-accent);--warning: var(--color-warning);--danger: var(--color-danger);--info: var(--color-info);--gold: var(--color-gold);--font-family: "Inter", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "PingFang TC", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", "Menlo", "Consolas", monospace;--text-hero: 34px;--text-title-1: 28px;--text-title-2: 22px;--text-title-3: 20px;--text-headline: 17px;--text-body: 17px;--text-callout: 16px;--text-subhead: 15px;--text-footnote: 13px;--text-caption: 12px;--font-xs: 12px;--font-sm: 14px;--font-md: 16px;--font-lg: 18px;--font-xl: 20px;--font-title: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-xs: 6px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 22px;--radius-2xl: 28px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 1px 0 rgba(255,255,255,.9) inset, 0 1px 3px rgba(20,30,80,.05), 0 4px 12px -4px rgba(20,30,80,.08);--shadow-md: 0 1px 0 rgba(255,255,255,.9) inset, 0 2px 6px rgba(0,0,0,.04), 0 8px 24px -8px rgba(20,30,80,.1);--shadow-lg: 0 1px 0 rgba(255,255,255,.9) inset, 0 4px 12px rgba(0,0,0,.05), 0 16px 40px -10px rgba(20,30,80,.16);--shadow-hover: 0 1px 0 rgba(255,255,255,.9) inset, 0 2px 6px rgba(0,0,0,.04), 0 18px 40px -12px rgba(20,30,80,.18);--shadow-sketch: 6px 7px 0 0 rgba(0,122,255,.12), 0 1px 0 rgba(255,255,255,.9) inset, 0 8px 24px -8px rgba(20,30,80,.08);--shadow-sketch-hover: 10px 12px 0 0 rgba(0,122,255,.2), 0 1px 0 rgba(255,255,255,.9) inset, 0 22px 44px -12px rgba(20,30,80,.18);--ease-out: cubic-bezier(.25, .1, .25, 1);--ease-in-out: cubic-bezier(.42, 0, .58, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-bounce: cubic-bezier(.36, 1.6, .4, 1);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .35s;--duration-sheet: .5s;--bottom-nav-height: 64px;--navbar-height: 48px;--topnav-height: 68px}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--text-body);color:var(--text);background:radial-gradient(ellipse 80% 50% at 15% 0%,rgba(0,122,255,.05),transparent 60%),radial-gradient(ellipse 60% 40% at 85% 30%,rgba(175,82,222,.04),transparent 60%),radial-gradient(ellipse 70% 50% at 50% 100%,rgba(52,199,89,.04),transparent 60%),#fff;background-attachment:fixed;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}#app{min-height:100vh;display:flex;flex-direction:column}.app-container,.main-content{min-height:100vh}.main-content.has-topnav{padding-top:var(--topnav-height)}@keyframes sparkleTwinkle{0%,to{opacity:.4;transform:scale(.8) rotate(0)}50%{opacity:1;transform:scale(1.1) rotate(180deg)}}@keyframes iconJiggle{0%,to{transform:rotate(0) scale(1)}20%{transform:rotate(-12deg) scale(1.08)}40%{transform:rotate(12deg) scale(1.08)}60%{transform:rotate(-8deg) scale(1.04)}80%{transform:rotate(8deg) scale(1.04)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes btnShine{0%{transform:translate(-100%)}to{transform:translate(200%)}}@keyframes navTumble{0%{transform:translateY(0) rotate(0)}30%{transform:translateY(-3px) rotate(-6deg)}60%{transform:translateY(-3px) rotate(6deg)}to{transform:translateY(0) rotate(0)}}.fade-up{animation:fadeUp .6s var(--ease-bounce) both}.fade-up.d1{animation-delay:.08s}.fade-up.d2{animation-delay:.16s}.fade-up.d3{animation-delay:.24s}.fade-up.d4{animation-delay:.32s}.fade-up.d5{animation-delay:.4s}.loading-screen,.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-6);text-align:center}.loading-spinner{width:40px;height:40px;border:3px solid var(--gray-200);border-top-color:var(--color-primary);border-right-color:var(--color-primary-light);border-radius:50%;animation:spin .7s linear infinite;margin-bottom:var(--space-4);filter:drop-shadow(0 4px 12px rgba(0,122,255,.2))}.page{min-height:calc(100vh - var(--bottom-nav-height));max-width:1080px;margin:0 auto;padding:var(--space-4) 24px var(--space-6)}.section-label{display:inline-block;font-size:12px;font-weight:700;color:var(--color-primary);text-transform:uppercase;letter-spacing:.14em;margin-bottom:14px;padding:6px 14px;background:linear-gradient(135deg,#007aff1a,#5ac8fa0f);border:1px solid rgba(0,122,255,.15);border-radius:999px;box-shadow:0 1px #fff9 inset,0 2px 6px -2px #007aff26}.section-title,.page-title{position:relative;font-size:28px;font-weight:800;background:linear-gradient(180deg,#0a0a1a,#2a2a3e);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.025em;line-height:1.2;margin-bottom:8px}.page-sub,.section-sub{font-size:15px;color:var(--gray-500);margin-bottom:24px;line-height:1.7}.card{position:relative;background:linear-gradient(180deg,#fff,#fafbff);border-radius:22px 26px 22px 24px;padding:24px;margin-bottom:16px;border:2px solid var(--card-border, rgba(0,122,255,.15));box-shadow:4px 5px 0 0 var(--card-shadow-color, rgba(0,122,255,.1)),0 1px #ffffffe6 inset,0 8px 20px -8px #141e5014;transition:transform .35s var(--ease-bounce),box-shadow .3s var(--ease-out),border-color .25s ease}.card:hover{transform:translateY(-4px);border-color:var(--card-glow-color, var(--color-primary));box-shadow:7px 9px 0 0 var(--card-shadow-color, rgba(0,122,255,.18)),0 1px #ffffffe6 inset,0 18px 36px -10px #141e502e}.card.card-primary{--card-border: rgba(0,122,255,.22);--card-shadow-color: rgba(0,122,255,.15);--card-glow-color: #007AFF}.card.card-success{--card-border: rgba(52,199,89,.24);--card-shadow-color: rgba(52,199,89,.15);--card-glow-color: #34C759}.card.card-warning{--card-border: rgba(255,149,0,.26);--card-shadow-color: rgba(255,149,0,.18);--card-glow-color: #FF9500}.card.card-danger{--card-border: rgba(255,59,48,.24);--card-shadow-color: rgba(255,59,48,.15);--card-glow-color: #FF3B30}.card.card-purple{--card-border: rgba(175,82,222,.24);--card-shadow-color: rgba(175,82,222,.15);--card-glow-color: #AF52DE}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:0 24px;height:50px;border:none;border-radius:var(--radius-full);font-size:var(--text-headline);font-weight:700;font-family:var(--font-family);cursor:pointer;text-decoration:none;gap:10px;overflow:hidden;transition:transform .25s var(--ease-bounce),box-shadow .25s var(--ease-out),background .25s ease,color .25s ease}.btn:before{content:"";position:absolute;top:0;left:0;width:30%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);transform:translate(-100%);pointer-events:none}.btn:hover:before{animation:btnShine 1s ease}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg,var(--color-primary) 0%,#5AC8FA 100%);color:var(--white);box-shadow:0 1px #ffffff4d inset,0 4px 16px -2px #007aff66,0 10px 24px -8px #007aff4d}.btn-primary:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 1px #ffffff4d inset,0 8px 24px -2px #007aff8c,0 16px 32px -10px #007aff66}.btn-primary:hover i{animation:navTumble .6s ease}.btn-secondary,.btn-outline{background:#ffffff80;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--color-primary);border:2px solid var(--color-primary)}.btn-secondary:hover,.btn-outline:hover{background:linear-gradient(135deg,var(--color-primary),#5AC8FA);color:var(--white);border-color:transparent;transform:translateY(-2px) scale(1.02);box-shadow:0 8px 22px -2px #007aff73}.btn-danger{background:linear-gradient(135deg,var(--color-danger),#FF6B5E);color:var(--white);box-shadow:0 1px #ffffff4d inset,0 4px 16px -2px #ff3b3066}.btn-danger:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 1px #ffffff4d inset,0 8px 24px -2px #ff3b308c}.btn-success{background:linear-gradient(135deg,var(--color-accent),#5AD8A0);color:var(--white);box-shadow:0 1px #ffffff4d inset,0 4px 16px -2px #34c75966}.btn-success:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 1px #ffffff4d inset,0 8px 24px -2px #34c7598c}.btn-ghost{background:transparent;border:none;color:var(--color-primary);height:44px;box-shadow:none}.btn-ghost:before{display:none}.btn-ghost:hover{background:var(--color-primary-bg);transform:none;box-shadow:none}.btn-pill{border-radius:var(--radius-full);height:38px;padding:0 16px;font-size:var(--text-subhead)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn:disabled:before{display:none}.btn:disabled:hover{transform:none!important;box-shadow:none}.form-group{margin-bottom:var(--space-5)}.form-label{display:block;margin-bottom:10px;font-weight:700;font-size:14px;color:var(--gray-700);letter-spacing:-.005em}.form-control{width:100%;height:52px;padding:0 18px;border:1.5px solid var(--gray-200);border-radius:14px;background:#fafbffb3;font-size:15px;font-family:var(--font-family);color:var(--text);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.form-control:hover{border-color:var(--gray-400);background:var(--white)}.form-control:focus{outline:none;border-color:var(--color-primary);background:var(--white);box-shadow:0 0 0 4px #007aff1f}.form-control::placeholder{color:var(--gray-400)}textarea.form-control{height:auto;min-height:120px;padding:14px 18px;resize:vertical}.fade-enter-active,.fade-leave-active{transition:opacity var(--duration-normal) var(--ease-out)}.fade-enter-from,.fade-leave-to{opacity:0}.page-enter-active{animation:fadeSlideUp var(--duration-slow) var(--ease-bounce)}.page-leave-active{animation:fadeOut var(--duration-fast) var(--ease-out)}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:700;letter-spacing:.02em}.badge-confirmed,.badge-success{background:linear-gradient(135deg,#34c75929,#30d1581a);color:#34c759;border:1px solid rgba(52,199,89,.22)}.badge-waiting,.badge-warning{background:linear-gradient(135deg,#ff95002e,#ff9f0a1a);color:#ff9500;border:1px solid rgba(255,149,0,.22)}.badge-cancelled,.badge-danger{background:linear-gradient(135deg,#ff3b3029,#ff6b5e1a);color:#ff3b30;border:1px solid rgba(255,59,48,.22)}.badge-attended,.badge-primary{background:linear-gradient(135deg,#007aff24,#5ac8fa14);color:#007aff;border:1px solid rgba(0,122,255,.2)}.badge-no-show{background:linear-gradient(135deg,#8e8e9329,#8e8e9314);color:#8e8e93;border:1px solid rgba(142,142,147,.2)}.badge-pending,.badge-purple{background:linear-gradient(135deg,#af52de29,#bf5af21a);color:#af52de;border:1px solid rgba(175,82,222,.22)}.text-center{text-align:center}.text-primary{color:var(--color-primary)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-accent)}.text-secondary{color:var(--text-secondary)}.mb-0{margin-bottom:0}.mb-sm{margin-bottom:var(--space-2)}.mb-md{margin-bottom:var(--space-4)}.mb-lg{margin-bottom:var(--space-6)}.mt-0{margin-top:0}.mt-sm{margin-top:var(--space-2)}.mt-md{margin-top:var(--space-4)}.mt-lg{margin-top:var(--space-6)}.p-0{padding:0}.p-sm{padding:var(--space-2)}.p-md{padding:var(--space-4)}.p-lg{padding:var(--space-6)}.gradient-text{background:linear-gradient(135deg,var(--color-primary),#5AC8FA);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-hero-banner{position:relative;padding:36px 24px 28px;margin-bottom:8px;border-radius:0 0 28px 28px;background:radial-gradient(ellipse 60% 50% at 50% 0%,rgba(0,122,255,.1),transparent 70%),linear-gradient(180deg,#fafbff,#f4f6fb);overflow:hidden}.page-hero-banner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 15% 80%,rgba(0,122,255,.12),transparent 35%),radial-gradient(circle at 85% 20%,rgba(175,82,222,.1),transparent 40%);pointer-events:none}.page-hero-banner>*{position:relative;z-index:1}.bg-dots{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'><circle cx='10' cy='15' r='2' fill='%23007AFF' opacity='.10'/><circle cx='55' cy='40' r='2.5' fill='%23AF52DE' opacity='.08'/><circle cx='30' cy='65' r='2' fill='%2334C759' opacity='.10'/><circle cx='70' cy='70' r='1.5' fill='%23FF9500' opacity='.10'/></svg>");background-size:80px 80px}@media(max-width:640px){.page{padding:var(--space-3) 16px var(--space-6)}.card{padding:20px;border-radius:18px 22px 18px 20px;box-shadow:3px 4px 0 0 var(--card-shadow-color, rgba(0,122,255,.1)),0 1px #ffffffe6 inset,0 6px 18px -6px #141e5014}.card:hover{transform:translateY(-3px);box-shadow:5px 6px 0 0 var(--card-shadow-color, rgba(0,122,255,.18)),0 1px #ffffffe6 inset,0 14px 28px -8px #141e502e}.section-title,.page-title{font-size:24px}.btn{height:48px;padding:0 22px;font-size:16px}.form-control{height:48px;padding:0 16px}.form-label{font-size:13px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.15s!important}}.pill-tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;margin-bottom:8px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}.pill-tabs button{flex-shrink:0;border:1.5px solid var(--gray-200);background:#ffffffb3;border-radius:var(--radius-full);padding:9px 18px;font-size:14px;font-weight:600;font-family:var(--font-family);cursor:pointer;color:var(--gray-600);transition:all .25s var(--ease-out);box-shadow:0 1px #fff9 inset,0 2px 6px -2px #141e500f}.pill-tabs button:hover{border-color:#007aff66;color:var(--color-primary);transform:translateY(-1px)}.pill-tabs button.active{background:linear-gradient(135deg,var(--color-primary),#5AC8FA);border-color:transparent;color:#fff;box-shadow:0 1px #ffffff4d inset,0 4px 12px -2px #007aff66}.data-table{width:100%;border-collapse:collapse;font-size:15px}.data-table th,.data-table td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--gray-100)}.data-table th{color:var(--gray-500);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.data-table tr:last-child td{border-bottom:none}.data-table .num{text-align:right}.bib{display:inline-block;background:linear-gradient(135deg,#007aff1a,#5ac8fa0f);border:1px solid rgba(0,122,255,.18);border-radius:8px;padding:2px 8px;font-size:12px;font-weight:800;font-family:var(--font-mono);color:var(--color-primary);margin-right:8px}.empty-state{text-align:center;color:var(--gray-500);padding:48px 16px}.empty-state .empty-icon{font-size:44px;margin-bottom:12px;display:block;filter:grayscale(.2)}.skeleton{background:linear-gradient(90deg,#eef0f5 25%,#f7f8fc,#eef0f5 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:var(--radius-lg);height:110px;margin-bottom:16px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.back-link{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--gray-500);margin-bottom:4px;transition:color .2s,transform .2s}.back-link:hover{color:var(--color-primary);transform:translate(-2px)}
