.header[data-v-090ea010]{background:var(--color-ink);border-bottom:1px solid rgba(255,255,255,.08)}.header-inner[data-v-090ea010]{display:flex;align-items:center;gap:32px;height:64px}.brand[data-v-090ea010]{display:flex;align-items:center;gap:10px;color:#fff}.brand[data-v-090ea010]:hover{text-decoration:none}.brand-logo[data-v-090ea010]{height:32px;width:auto;border-radius:4px}.brand-text[data-v-090ea010]{font-family:var(--font-display);font-weight:700;font-size:16px;display:flex;flex-direction:column;line-height:1.2}.brand-sub[data-v-090ea010]{font-family:var(--font-body);font-weight:400;font-size:11px;color:#fff9}.nav[data-v-090ea010]{display:flex;gap:8px;flex:1}.nav-link[data-v-090ea010]{color:#ffffffbf;font-size:14px;font-weight:600;padding:8px 12px;border-radius:var(--radius-sm)}.nav-link[data-v-090ea010]:hover{color:#fff;background:#ffffff14;text-decoration:none}.router-link-active.nav-link[data-v-090ea010]{color:#fff;background:#ffffff1f}.search-box[data-v-090ea010]{display:flex;align-items:center;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:999px;padding:4px 4px 4px 14px;width:220px;flex-shrink:0}.search-box input[data-v-090ea010]{flex:1;background:transparent;border:none;color:#fff;font-size:13px;outline:none;min-width:0}.search-box input[data-v-090ea010]::placeholder{color:#ffffff80}.search-box input[data-v-090ea010]::-webkit-search-cancel-button{filter:invert(1);opacity:.6}.search-btn[data-v-090ea010]{background:#ffffff26;border:none;border-radius:50%;width:26px;height:26px;flex-shrink:0;font-size:12px;color:#fff}.search-btn[data-v-090ea010]:hover{background:#ffffff40}.user-box[data-v-090ea010]{display:flex;align-items:center;gap:12px}.user-info[data-v-090ea010]{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.user-name[data-v-090ea010]{color:#fff;font-size:13px;font-weight:600}.user-box .btn-ghost[data-v-090ea010]{color:#ffffffd9;border-color:#ffffff40}.user-box .btn-ghost[data-v-090ea010]:hover{background:#ffffff1a}.banner[data-v-e4856e04]{display:flex;align-items:center;gap:16px;background:var(--color-accent);border-bottom:1px solid #a97a2b;padding:10px 16px;overflow:hidden}.banner-label[data-v-e4856e04]{flex-shrink:0;font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--color-accent);background:#fff;border-radius:999px;padding:3px 10px}.banner-track[data-v-e4856e04]{flex:1;overflow:hidden;white-space:nowrap}.banner-text[data-v-e4856e04]{display:inline-block;font-size:14px;font-weight:600;color:#fff}.banner-text.scrolling[data-v-e4856e04]{animation:marquee-e4856e04 24s linear infinite;padding-right:40px}@keyframes marquee-e4856e04{0%{transform:translate(0)}to{transform:translate(-50%)}}.banner-time[data-v-e4856e04]{flex-shrink:0;font-size:12px;color:#ffffffd9}.banner-close[data-v-e4856e04]{flex-shrink:0;background:none;border:none;color:#fff;font-size:14px;padding:4px;line-height:1;opacity:.85}.banner-close[data-v-e4856e04]:hover{opacity:1}.app-shell[data-v-35c11e58]{min-height:100vh;display:flex;flex-direction:column}.sticky-top[data-v-35c11e58]{position:sticky;top:0;z-index:100}.app-main[data-v-35c11e58]{flex:1}:root{--color-ink: #16233f;--color-ink-light: #2c3e63;--color-bg: #f6f5f1;--color-surface: #ffffff;--color-accent: #c08a34;--color-accent-soft: #efe1c4;--color-teal: #3e7c74;--color-border: #e2dfd6;--color-text: #1c1c1c;--color-text-muted: #6b6a64;--color-danger: #b3432b;--color-danger-soft: #f5e1db;--font-display: "Sora", "Noto Sans TC", sans-serif;--font-body: "Noto Sans TC", -apple-system, BlinkMacSystemFont, sans-serif;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-card: 0 1px 2px rgba(22, 35, 63, .06), 0 8px 24px -12px rgba(22, 35, 63, .18);--shadow-card-hover: 0 1px 2px rgba(22, 35, 63, .08), 0 16px 32px -12px rgba(22, 35, 63, .28)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-ink);margin:0 0 .5em;letter-spacing:-.01em}a{color:var(--color-teal);text-decoration:none}a:hover{text-decoration:underline}button{font-family:var(--font-body);cursor:pointer}input,textarea,select{font-family:var(--font-body)}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*:not(.banner-text){animation-duration:.01ms!important;transition-duration:.01ms!important}.banner-text{animation:none!important;transform:none!important}}.container{max-width:1100px;margin:0 auto;padding:0 24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:var(--radius-sm);border:1px solid transparent;font-size:14px;font-weight:600;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.btn-primary{background:var(--color-ink);color:#fff}.btn-primary:hover{background:var(--color-ink-light)}.btn-accent{background:var(--color-accent);color:#fff}.btn-accent:hover{background:#a97a2b}.btn-ghost{background:transparent;border-color:var(--color-border);color:var(--color-ink)}.btn-ghost:hover{background:#16233f0a}.btn-danger{background:transparent;border-color:var(--color-danger);color:var(--color-danger)}.btn-danger:hover{background:var(--color-danger-soft)}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label{font-size:13px;font-weight:600;color:var(--color-ink)}.field input,.field textarea,.field select{padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:14px;background:#fff;color:var(--color-text)}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--color-accent)}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:.02em}.badge-accent{background:var(--color-accent-soft);color:#8a611f}.badge-teal{background:#3e7c7424;color:var(--color-teal)}.badge-muted{background:#16233f0f;color:var(--color-text-muted)}.error-text{color:var(--color-danger);font-size:13px}.empty-state{text-align:center;padding:64px 24px;color:var(--color-text-muted)}
