:root{--color-primary:#2f6d4f;--color-primary-dark:#20503a;--color-primary-light:#4a8f6a;--color-primary-bg:#eaf5ef;--color-accent:#e8a33d;--color-accent-dark:#c98a2e;--color-accent-bg:#fef6e8;--color-bg:#f6f4ef;--color-card:#fff;--color-card-hover:#faf9f5;--color-ink:#1a1e1b;--color-ink-soft:#5b6b60;--color-ink-muted:#8a9a8f;--color-line:#e5e1d8;--color-line-light:#f0ede6;--color-success:#2f6d4f;--color-success-bg:#eaf5ef;--color-warning:#c75b39;--color-warning-bg:#fdf0eb;--color-danger:#b13e3e;--color-danger-bg:#fceeee;--shadow-sm:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.03);--shadow-md:0 4px 12px rgba(0,0,0,.05),0 2px 4px rgba(0,0,0,.03);--shadow-lg:0 8px 24px rgba(0,0,0,.06),0 4px 8px rgba(0,0,0,.03);--shadow-xl:0 12px 36px rgba(0,0,0,.08),0 6px 12px rgba(0,0,0,.04);--shadow-button:0 4px 14px rgba(47,109,79,.3);--shadow-button-hover:0 6px 20px rgba(47,109,79,.4);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--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;--text-xs:15px;--text-sm:17px;--text-base:22px;--text-lg:24px;--text-xl:28px;--text-2xl:34px;--transition-fast:0.15s ease;--transition-base:0.2s ease;--transition-slow:0.3s ease;--z-base:1;--z-dropdown:10;--z-modal:100}html{font-size:18px}body{font-family:Noto Sans TC,PingFang TC,SF Pro TC,-apple-system,sans-serif;background:var(--color-bg);color:var(--color-ink);min-height:100dvh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{-webkit-tap-highlight-color:transparent}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}main.page{flex:1 0 auto;min-height:0!important}.footer{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 20px 24px;margin-top:auto;flex-shrink:0}.footer-logo{height:28px;width:auto;opacity:.55}.footer-text{font-size:13px;color:var(--color-ink-muted);letter-spacing:.3px}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}