:root{--color-primary: #7EB198;--color-primary-dark: #5E8F78;--color-primary-light: #B4D4C6;--color-accent: #EEEEEE;--color-accent-dark: #CCCCCC;--color-bg: #FFFFFF;--color-bg-subtle: #F5F5F5;--color-text-primary: #1A1A1A;--color-text-secondary: #555555;--color-text-muted: #999999;--color-border: #DDDDDD;--color-border-dashed: #AAAAAA;--sidebar-width: 240px;--navbar-height: 60px;--font-sans: "Noto Sans TC", system-ui, sans-serif;--font-serif: "Noto Serif TC", Georgia, serif;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--transition: .18s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);font-size:1rem;line-height:1.75;color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:700;line-height:1.3;letter-spacing:.04em;color:var(--color-text-primary)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.1rem}p{margin-bottom:var(--space-4)}.underline-link{color:var(--color-primary-dark);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-thickness var(--transition)}.underline-link:hover{text-decoration-thickness:2px}.border-solid-box{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.border-dashed-box{border:1.5px dashed var(--color-border-dashed);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.card-hover{transition:background var(--transition),box-shadow var(--transition);cursor:pointer}.card-hover:hover{background:var(--color-accent);box-shadow:0 2px 8px #0000000f}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-body{display:flex;flex:1;padding-top:var(--navbar-height)}.main-content{flex:1;min-width:0;padding:var(--space-6) var(--space-6);margin-left:var(--sidebar-width);transition:margin-left var(--transition)}@media(max-width:768px){.main-content{margin-left:0;padding:var(--space-4)}}.navbar{position:fixed;top:0;left:0;right:0;height:var(--navbar-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-5);z-index:100}.navbar-brand{font-family:var(--font-serif);font-size:1.15rem;font-weight:700;color:var(--color-text-primary);letter-spacing:.05em;white-space:nowrap}.navbar-brand span{color:var(--color-primary-dark)}.navbar-menu{display:flex;gap:var(--space-2);list-style:none}.nav-item{position:relative}.nav-trigger{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-size:.9rem;font-weight:500;color:var(--color-text-primary);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;background:transparent;transition:border-color var(--transition),color var(--transition);white-space:nowrap}.nav-trigger:hover,.nav-item:hover .nav-trigger{border-color:var(--color-primary);color:var(--color-primary-dark)}.nav-dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:180px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 16px #00000014;padding:var(--space-2);display:none;flex-direction:column;gap:var(--space-1);z-index:200}.nav-item:hover .nav-dropdown{display:flex}.nav-item:last-child .nav-dropdown{left:auto;right:0}.nav-sub-item{display:block;padding:var(--space-2) var(--space-3);font-size:.875rem;color:var(--color-text-secondary);border:1.5px dashed transparent;border-radius:var(--radius-sm);transition:border-color var(--transition),color var(--transition),background var(--transition);white-space:nowrap}.nav-sub-item:hover{border-color:var(--color-border-dashed);color:var(--color-primary-dark);background:var(--color-bg-subtle)}.nav-sub-item.external:after{content:" ↗";font-size:.75rem;opacity:.6}.hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:var(--space-2);background:none;border:none}.hamburger span{display:block;width:22px;height:2px;background:var(--color-text-primary);transition:transform var(--transition),opacity var(--transition);border-radius:2px}.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}@media(max-width:768px){.navbar-menu{display:none}.hamburger{display:flex}}.sidebar{position:fixed;top:var(--navbar-height);left:0;width:var(--sidebar-width);height:calc(100vh - var(--navbar-height));background:var(--color-bg-subtle);border-right:1px solid var(--color-border);overflow-y:auto;padding:var(--space-4) 0;z-index:90;transition:transform var(--transition)}@media(max-width:768px){.sidebar.mobile-hidden{transform:translate(-100%)}}.sidebar-section{margin-bottom:var(--space-2)}.sidebar-section-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);font-size:.85rem;font-weight:700;letter-spacing:.06em;color:var(--color-text-secondary);background:none;border:none;cursor:pointer;text-align:left;text-transform:uppercase;transition:color var(--transition)}.sidebar-section-toggle:hover{color:var(--color-primary-dark)}.sidebar-section-toggle .chevron{font-size:.75rem;transition:transform var(--transition)}.sidebar-section-toggle.collapsed .chevron{transform:rotate(-90deg)}.sidebar-items{list-style:none;padding:0 var(--space-3) var(--space-2)}.sidebar-items.collapsed{display:none}.sidebar-link{display:block;padding:var(--space-2) var(--space-3);font-size:.875rem;color:var(--color-text-secondary);border-left:2px solid transparent;border-radius:0 var(--radius-sm) var(--radius-sm) 0;transition:color var(--transition),border-color var(--transition),background var(--transition)}.sidebar-link:hover{color:var(--color-primary-dark);background:var(--color-primary-light);background:color-mix(in srgb,var(--color-primary-light) 30%,transparent)}.sidebar-link.active{color:var(--color-primary-dark);border-left-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary-light) 40%,transparent);font-weight:500}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:80}@media(max-width:768px){.sidebar-overlay.visible{display:block}}.timeline{position:relative;padding-left:var(--space-6)}.timeline:before{content:"";position:absolute;left:12px;top:0;bottom:0;width:2px;background:var(--color-border)}.timeline-entry{position:relative;margin-bottom:var(--space-6)}.timeline-entry:before{content:"";position:absolute;left:calc(-1 * var(--space-6) + 6px);top:6px;width:12px;height:12px;border-radius:50%;background:var(--color-primary);border:2px solid var(--color-bg);box-shadow:0 0 0 2px var(--color-primary)}.timeline-date{font-size:.8rem;color:var(--color-text-secondary);font-weight:500;margin-bottom:var(--space-1);letter-spacing:.04em}.timeline-description{font-size:.95rem;line-height:1.75;color:var(--color-text-primary)}.timeline-two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6)}.timeline-col-label{font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}@media(max-width:640px){.timeline-two-col{grid-template-columns:1fr}}.mascot-bubble-wrapper{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-7);animation:fadeInUp .4s ease}.mascot-img{width:80px;height:80px;flex-shrink:0;object-fit:contain}.mascot-bubble{position:relative;background:var(--color-accent);border:2px solid var(--color-primary);border-radius:20px 20px 20px 4px;padding:var(--space-4) var(--space-5);font-size:1rem;font-weight:500;color:var(--color-text-primary);cursor:pointer;max-width:480px;line-height:1.6;transition:opacity var(--transition)}.mascot-bubble:after{content:"";position:absolute;left:-10px;bottom:16px;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:10px solid var(--color-primary)}.mascot-bubble .dismiss-hint{display:block;font-size:.75rem;color:var(--color-text-muted);margin-top:var(--space-2)}.graph-container{width:100%;height:420px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-subtle);overflow:hidden;margin-bottom:var(--space-6)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;transition:box-shadow var(--transition),border-color var(--transition)}.card:hover{box-shadow:0 4px 16px #00000014;border-color:var(--color-primary-light)}.card-img{width:100%;height:160px;object-fit:cover;background:var(--color-bg-subtle)}.card-body{padding:var(--space-4)}.card-caption{font-size:.85rem;color:var(--color-text-secondary);line-height:1.5}.card-attribution{font-size:.72rem;color:var(--color-text-muted);margin-top:4px;line-height:1.4}.card-attribution a{color:var(--color-text-muted);text-decoration:underline;text-underline-offset:2px}.card-attribution a:hover{color:var(--color-primary-dark)}.tabs{display:flex;border-bottom:2px solid var(--color-border);margin-bottom:var(--space-6);gap:var(--space-1)}.tab-btn{padding:var(--space-3) var(--space-5);font-size:.9rem;font-weight:500;color:var(--color-text-secondary);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color var(--transition),border-color var(--transition)}.tab-btn:hover{color:var(--color-primary-dark)}.tab-btn.active{color:var(--color-primary-dark);border-bottom-color:var(--color-primary)}.event-card{display:flex;gap:var(--space-5);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-4);transition:background var(--transition),box-shadow var(--transition)}.event-card:hover{background:var(--color-accent);box-shadow:0 2px 8px #0000000f}.event-date-badge{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:56px;height:56px;background:var(--color-primary-light);border-radius:var(--radius-md);font-size:.75rem;font-weight:700;color:var(--color-primary-dark);text-align:center;line-height:1.2}.event-card-body{flex:1;min-width:0}.event-card-title{font-weight:700;font-size:1rem;margin-bottom:var(--space-2);color:var(--color-text-primary)}.event-card-desc{font-size:.875rem;color:var(--color-text-secondary);line-height:1.65}.section-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-5)}.section-header h2{font-size:1.35rem}.section-divider{flex:1;height:1px;background:var(--color-border)}.page-hero{margin-bottom:var(--space-7);padding-bottom:var(--space-5);border-bottom:1px solid var(--color-border)}.page-hero h1{margin-bottom:var(--space-3)}.page-hero .subtitle{font-size:1rem;color:var(--color-text-secondary)}.person-meta{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-top:var(--space-3);margin-bottom:var(--space-5)}.meta-pill{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:var(--color-primary-light);color:var(--color-primary-dark);border-radius:99px;font-size:.8rem;font-weight:500}.form-cta{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5);background:var(--color-accent);border:1.5px dashed var(--color-accent-dark);border-radius:var(--radius-md);margin-top:var(--space-5)}.form-cta-text{flex:1}.form-cta-text h4{font-family:var(--font-sans);font-size:1rem;margin-bottom:var(--space-1)}.form-cta-text p{font-size:.875rem;color:var(--color-text-secondary);margin:0}.btn-primary{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-primary);color:#fff;font-size:.9rem;font-weight:600;border-radius:var(--radius-sm);border:none;cursor:pointer;text-decoration:none;transition:background var(--transition);white-space:nowrap}.btn-primary:hover{background:var(--color-primary-dark);color:#fff}.map-placeholder{width:100%;height:300px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:.9rem;margin-top:var(--space-4)}.home-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-8) var(--space-5);max-width:640px;margin:0 auto}.home-hero h1{font-size:2.2rem;margin-bottom:var(--space-4)}.home-hero p{font-size:1.05rem;color:var(--color-text-secondary);line-height:1.8;max-width:520px}.home-mascot-section{display:flex;justify-content:center;margin-bottom:var(--space-6)}.explore-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-7)}.explore-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-5);border:1.5px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition);text-decoration:none;color:inherit}.explore-card:hover{border-color:var(--color-primary);box-shadow:0 4px 16px #7eb19826;background:color-mix(in srgb,var(--color-primary-light) 20%,transparent)}.explore-card-icon{font-size:2rem;margin-bottom:var(--space-3)}.explore-card-label{font-size:1rem;font-weight:700;margin-bottom:var(--space-2)}.explore-card-count{font-size:.8rem;color:var(--color-text-muted)}@media(max-width:480px){.explore-grid{grid-template-columns:1fr}}.prose{max-width:680px;line-height:1.8}.prose h2{margin-top:var(--space-6);margin-bottom:var(--space-3)}.prose h3{margin-top:var(--space-5);margin-bottom:var(--space-2)}.prose ul{padding-left:var(--space-5);margin-bottom:var(--space-4)}.prose li{margin-bottom:var(--space-2)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeInUp .35s ease forwards}.chart-wrapper{position:relative;height:300px;margin-bottom:var(--space-6)}
