.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}.animate-spin{animation:spin 1s linear infinite}.rounded-full{border-radius:var(--radius-full)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.bg-accent-primary{background-color:var(--accent-primary)}.bg-accent-warning{background-color:var(--accent-warning)}.bg-overlay{background-color:var(--overlay)}.bg-surface-1{background-color:var(--surface-1)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface-3{background-color:var(--surface-3)}.bg-surface-sunken{background-color:var(--surface-sunken)}.bg-tint-error-weak{background-color:var(--tint-error-weak)}.bg-tint-primary{background-color:var(--tint-primary)}.bg-tint-primary-weak{background-color:var(--tint-primary-weak)}.bg-tint-secondary-weak{background-color:var(--tint-secondary-weak)}.bg-tint-success-weak{background-color:var(--tint-success-weak)}.bg-tint-warning{background-color:var(--tint-warning)}.bg-tint-warning-weak{background-color:var(--tint-warning-weak)}.bg-primary-gradient{background-image:var(--primary-gradient)}.text-2xl{font-size:var(--text-2xl)}.text-base{font-size:var(--text-base)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-accent-error{color:var(--accent-error)}.text-accent-primary{color:var(--accent-primary)}.text-accent-secondary{color:var(--accent-secondary)}.text-accent-success{color:var(--accent-success)}.text-accent-warning{color:var(--accent-warning)}.text-on-accent{color:var(--text-on-accent)}.text-on-primary{color:var(--text-on-primary)}.text-primary{color:var(--text-primary)}.text-reading-muted{color:var(--reading-fg-muted)}.text-secondary{color:var(--text-secondary)}:root{--bg-base: #0a0a0f;--bg-surface: #13131a;--text-primary: #f8fafc;--text-secondary: #94a3b8;--accent-primary: #7c3aed;--accent-secondary: #06b6d4;--accent-success: #10b981;--accent-error: #ef4444;--accent-warning: #f59e0b;--primary-gradient: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));--success-gradient: linear-gradient(135deg, #059669, #10b981);--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-tc: "Noto Sans TC", var(--font-sans);--radius-sm: .5rem;--radius-md: 1rem;--radius-lg: 1.5rem;--radius-full: 9999px;--glass-bg: rgba(19, 19, 26, .6);--glass-border: rgba(255, 255, 255, .08);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .4);--page-glow: radial-gradient(circle at 15% 50%, rgba(124, 58, 237, .05) 0%, transparent 50%), radial-gradient(circle at 85% 30%, rgba(6, 182, 212, .05) 0%, transparent 50%);--sidebar-bg: rgba(13, 13, 20, .9);--sidebar-shadow: 4px 0 30px rgba(0, 0, 0, .5);--scrollbar-thumb: rgba(124, 58, 237, .3);--scrollbar-thumb-hover: rgba(124, 58, 237, .55);--focus-ring: rgba(124, 58, 237, .2);--feature-wash: linear-gradient(135deg, var(--tint-primary) 0%, var(--tint-secondary-weak) 100%);--panel-wash: linear-gradient(135deg, var(--tint-primary-weak), var(--tint-secondary-weak));--hero-glow: radial-gradient(ellipse, var(--tint-primary) 0%, transparent 70%);--field-bg: var(--surface-sunken);--field-border: var(--glass-border);--sidebar-width: 240px;--content-max: 900px;--surface-1: rgba(255, 255, 255, .04);--surface-2: rgba(255, 255, 255, .07);--surface-3: rgba(255, 255, 255, .1);--surface-sunken: rgba(0, 0, 0, .22);--overlay: rgba(0, 0, 0, .72);--border-subtle: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--tint-primary-weak: rgba(124, 58, 237, .12);--tint-primary: rgba(124, 58, 237, .25);--tint-primary-strong: rgba(124, 58, 237, .4);--tint-secondary-weak: rgba(6, 182, 212, .1);--tint-secondary: rgba(6, 182, 212, .2);--tint-success-weak: rgba(16, 185, 129, .12);--tint-success: rgba(16, 185, 129, .25);--tint-error-weak: rgba(239, 68, 68, .12);--tint-error: rgba(239, 68, 68, .25);--tint-warning-weak: rgba(245, 158, 11, .12);--tint-warning: rgba(245, 158, 11, .3);--text-on-accent: #1a1205;--text-on-primary: #f8fafc;--heading-3: #c4b5fd;--reading-fg: #e8e6f0;--reading-fg-muted: #a9a5bd;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--reading-size: 1.125rem;--reading-leading: 1.9;--reading-measure: 34em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--motion-fast: .12s;--motion-base: .2s;--motion-slow: .4s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}:root[data-theme=light]{--bg-base: #f6f2ea;--bg-surface: #fffdf9;--text-primary: #241d15;--text-secondary: #5f5647;--accent-primary: #6d28d9;--accent-secondary: #0c6478;--accent-success: #03664a;--accent-error: #b91c1c;--accent-warning: #984006;--primary-gradient: linear-gradient(135deg, #6d28d9, #0c6478);--success-gradient: linear-gradient(135deg, #047857, #059669);--glass-bg: rgba(255, 253, 249, .94);--glass-border: rgba(90, 72, 44, .12);--glass-shadow: 0 1px 2px rgba(74, 58, 36, .05), 0 4px 10px rgba(74, 58, 36, .05), 0 12px 28px rgba(74, 58, 36, .045);--surface-1: rgba(92, 72, 44, .055);--surface-2: rgba(92, 72, 44, .11);--surface-3: rgba(92, 72, 44, .17);--surface-sunken: rgba(92, 72, 44, .08);--overlay: rgba(38, 30, 18, .45);--border-subtle: rgba(90, 72, 44, .12);--border-strong: rgba(90, 72, 44, .22);--page-glow: radial-gradient(circle at 50% -8%, rgba(184, 142, 62, .08) 0%, transparent 58%), radial-gradient(circle at 6% 94%, rgba(132, 92, 38, .06) 0%, transparent 55%), radial-gradient(circle at 97% 4%, rgba(109, 40, 217, .05) 0%, transparent 40%);--field-bg: #fffdf9;--field-border: rgba(90, 72, 44, .24);--sidebar-bg: rgba(255, 253, 249, .92);--sidebar-shadow: 1px 0 0 rgba(90, 72, 44, .1), 4px 0 24px rgba(74, 58, 36, .05);--scrollbar-thumb: rgba(90, 72, 44, .28);--scrollbar-thumb-hover: rgba(90, 72, 44, .5);--focus-ring: rgba(109, 40, 217, .28);--feature-wash: linear-gradient(135deg, rgba(184, 142, 62, .14) 0%, rgba(109, 40, 217, .05) 100%);--panel-wash: linear-gradient(135deg, rgba(184, 142, 62, .07), rgba(109, 40, 217, .03));--hero-glow: radial-gradient(ellipse, rgba(184, 142, 62, .2) 0%, transparent 70%);--tint-primary-weak: rgba(109, 40, 217, .06);--tint-primary: rgba(109, 40, 217, .14);--tint-primary-strong: rgba(109, 40, 217, .28);--tint-secondary-weak: rgba(12, 100, 120, .06);--tint-secondary: rgba(12, 100, 120, .16);--tint-success-weak: rgba(4, 120, 87, .09);--tint-success: rgba(4, 120, 87, .18);--tint-error-weak: rgba(185, 28, 28, .08);--tint-error: rgba(185, 28, 28, .16);--tint-warning-weak: rgba(152, 64, 6, .09);--tint-warning: rgba(152, 64, 6, .2);--text-on-accent: #fdfbf7;--text-on-primary: #fdfbf7;--heading-3: #6d28d9;--reading-fg: #2b2318;--reading-fg-muted: #565046}:root[data-reading-measure=narrow]{--reading-measure: 34em}:root[data-reading-measure=wide]{--reading-measure: 46em}:root[data-reading-size=small]{--reading-size: 1rem;--reading-leading: 1.85}:root[data-reading-size=medium]{--reading-size: 1.125rem;--reading-leading: 1.9}:root[data-reading-size=large]{--reading-size: 1.3125rem;--reading-leading: 1.95}@media (prefers-reduced-motion: reduce){:root{--motion-fast: 0ms;--motion-base: 0ms;--motion-slow: 0ms}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media (prefers-contrast: more){:root{--reading-fg: #ffffff;--reading-fg-muted: #d4d1e0;--border-subtle: rgba(255, 255, 255, .18)}}*{box-sizing:border-box;margin:0;padding:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}body{background-color:var(--bg-base);color:var(--text-primary);font-family:var(--font-tc);font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;overflow-x:hidden;background-image:var(--page-glow);background-attachment:fixed}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;margin-bottom:1rem}a{color:var(--accent-secondary);text-decoration:none;transition:color .2s ease}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;background:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent-secondary);outline-offset:2px;border-radius:4px}button:focus:not(:focus-visible){outline:none}.skip-link{position:fixed;top:0;left:0;z-index:10001;padding:.75rem 1.25rem;background:var(--accent-primary);color:#fff;font-weight:600;font-size:var(--text-base);border-bottom-right-radius:var(--radius-sm);text-decoration:none;transform:translateY(-120%);transition:transform var(--motion-fast) var(--ease-out)}.skip-link:focus{transform:translateY(0);outline:2px solid var(--accent-secondary);outline-offset:-4px}main:focus{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.glass-panel{background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--glass-shadow)}.app-container{display:flex;flex-direction:column;min-height:100vh;padding-top:60px;padding-bottom:80px}@media (min-width: 1024px){.app-container{margin-left:var(--sidebar-width);padding-top:0;padding-bottom:0;min-height:100vh}}.desktop-sidebar{display:none}@media (min-width: 1024px){.desktop-sidebar{display:flex;flex-direction:column;position:fixed;top:0;left:0;width:var(--sidebar-width);height:100vh;background:var(--sidebar-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-right:1px solid var(--glass-border);z-index:200;overflow:hidden;box-shadow:var(--sidebar-shadow)}}.main-content{width:100%;padding:1.25rem 1rem}@media (min-width: 1024px){.main-content{max-width:var(--content-max);padding:2.5rem 3rem}}@media (min-width: 1400px){.main-content{max-width:1040px;padding:2.5rem 3.5rem}}.btn-primary{background:var(--primary-gradient);color:#fff;padding:.75rem 1.5rem;border-radius:var(--radius-full);font-weight:600;font-size:1rem;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease;width:100%;display:inline-flex;justify-content:center;align-items:center;gap:.5rem}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 12px #7c3aed4d}.btn-primary:active{transform:translateY(1px)}.btn-secondary{background:var(--surface-2);color:var(--text-primary);border:1px solid var(--glass-border);padding:.75rem 1.5rem;border-radius:var(--radius-full);font-weight:500;transition:all .2s ease;width:100%}.btn-secondary:hover{background:var(--surface-3)}.input-field{width:100%;background:var(--field-bg);border:1px solid var(--field-border);color:var(--text-primary);padding:.875rem 1rem;border-radius:var(--radius-sm);font-size:1rem;transition:border-color .2s ease,box-shadow .2s ease;margin-bottom:1rem}.input-field:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 2px var(--focus-ring)}.input-field::-moz-placeholder{color:var(--text-secondary)}.input-field::placeholder{color:var(--text-secondary)}.markdown-content{font-size:var(--reading-size);line-height:var(--reading-leading);color:var(--reading-fg);max-width:var(--reading-measure);margin-inline:auto;text-spacing-trim:space-all}.markdown-content p{text-indent:2em;margin-bottom:1.1em}.markdown-content h2+p,.markdown-content h3+p,.markdown-content blockquote+p{text-indent:0}.markdown-content ul,.markdown-content ol{padding-left:1.75em;margin-bottom:1.5rem}.markdown-content li{margin-bottom:.5rem}.markdown-content li>p{text-indent:0;margin-bottom:.5rem}.markdown-content img{max-width:100%;height:auto}.markdown-content mark[data-hl-id]{background:var(--tint-warning);color:inherit;padding:.08em .05em;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone;cursor:pointer;box-shadow:inset 0 -.12em 0 var(--accent-warning)}.markdown-content h2{font-size:1.75rem;margin-top:2.5rem;color:var(--accent-secondary)}.markdown-content h3{font-size:1.25rem;margin-top:2rem;color:var(--heading-3)}.markdown-content blockquote{border-left:4px solid var(--accent-primary);margin-left:0;padding-left:1.5rem;font-style:italic;color:var(--text-secondary)}.carousel-container{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;gap:1rem;padding-bottom:.75rem}.carousel-container::-webkit-scrollbar{height:8px}.carousel-container::-webkit-scrollbar-track{background:var(--surface-2);border-radius:99px}.carousel-container::-webkit-scrollbar-thumb{background:var(--tint-primary-strong);border-radius:99px}.carousel-container::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}.carousel-item{scroll-snap-align:start;flex:0 0 calc(90vw - 3rem);max-width:320px}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse-glow{0%{box-shadow:0 0 #7c3aed66}70%{box-shadow:0 0 0 10px #7c3aed00}to{box-shadow:0 0 #7c3aed00}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes route-fade{0%{opacity:0}to{opacity:1}}.route-transition{animation:route-fade var(--motion-base) var(--ease-out)}@keyframes star-twinkle{0%,to{opacity:1}50%{opacity:.55}}@keyframes count-pop{0%{transform:scale(1)}40%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}.animate-slide-up{animation:slideUp var(--motion-slow) var(--ease-out) forwards}.animate-fade-in{animation:fadeIn var(--motion-base) ease-out forwards}.animate-spin{animation:spin .9s linear infinite;transform-origin:center}.animate-star-twinkle{animation:star-twinkle 3.6s ease-in-out infinite}.animate-count-pop{animation:count-pop var(--motion-slow) var(--ease-spring)}.animate-shake{animation:shake var(--motion-slow) ease-in-out}.text-gradient{background:var(--primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-weight:600;margin-bottom:.75rem}
