:root{--color-primary:#1b4d3e;--color-surface:#faf6ed;--color-on-surface:#16211b;--color-accent:#f5b301;--color-on-accent:#3d2e00;--color-ai-signal:#2e8fe8;--color-green-950:#0f2e25;--color-green-800:#1b4d3e;--color-green-600:#2e6b52;--color-green-500:#4e8c6f;--color-green-300:#8fbfa4;--color-green-100:#d7e8dd;--color-green-50:#eff6f0;--color-gray-950:#16211b;--color-gray-800:#33403a;--color-gray-600:#5c6b62;--color-gray-400:#93a199;--color-gray-200:#c7d1ca;--color-gray-100:#e8ede9;--color-gray-50:#f6f8f6;--color-info:#2e8fe8;--color-info-text:#1d6fc0;--color-success:#2fa84f;--color-success-text:#217a3b;--color-warning:#e8a13c;--color-warning-text:#9a6215;--color-error:#d9534f;--color-error-text:#b03a36;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-section:64px;--radius-none:0px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--font-serif:"Noto Serif TC", serif;--font-sans:"Noto Sans TC", sans-serif;--font-mono:"IBM Plex Mono", monospace}
*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-surface);color:var(--color-on-surface);font-family:var(--font-sans);font-size:.9375rem;line-height:1.7}h1,h2,h3{font-family:var(--font-serif);color:var(--color-primary);font-weight:600}h1{font-size:2.5rem;line-height:1.25}h2{font-size:1.75rem;line-height:1.3}h3{font-size:1.375rem;line-height:1.35}a{color:var(--color-primary)}code,pre{font-family:var(--font-mono);font-size:.875rem;line-height:1.6}main{max-width:1040px;padding:var(--space-xl) var(--space-lg);margin:0 auto}.text-secondary{color:var(--color-gray-600)}.btn-primary{background:var(--color-primary);color:var(--color-surface);font-family:var(--font-sans);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);cursor:pointer;border:none;font-size:.875rem;font-weight:500;line-height:1.4;display:inline-block}.btn-primary:hover{background:var(--color-green-600)}.btn-secondary{background:var(--color-surface);color:var(--color-primary);font-family:var(--font-sans);border:1px solid var(--color-primary);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);cursor:pointer;font-size:.875rem;font-weight:500;line-height:1.4;display:inline-block}.btn-secondary:hover{background:var(--color-green-50)}.card{color:var(--color-on-surface);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);padding:var(--space-lg);background:#fff}input,textarea,select{color:var(--color-on-surface);font-family:var(--font-sans);border:1px solid var(--color-gray-200);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);background:#fff;font-size:.9375rem}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);outline:none}.auth-wrap{padding-top:var(--space-section);justify-content:center;display:flex}.auth-card{gap:var(--space-md);flex-direction:column;width:100%;max-width:400px;display:flex}.form-field{gap:var(--space-xs);flex-direction:column;font-size:.875rem;font-weight:500;display:flex}.error-text{color:var(--color-error-text);font-size:.875rem}.auth-switch{font-size:.875rem}.workspace-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:baseline;display:flex}.workspace-nav{gap:var(--space-lg);margin-top:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.nav-card{color:inherit;text-decoration:none}.nav-card h3{margin-bottom:var(--space-xs)}.upload-card{gap:var(--space-md);margin:var(--space-lg) 0;flex-direction:column;max-width:520px;display:flex}.dataset-list{gap:var(--space-md);margin-top:var(--space-lg);flex-direction:column;display:flex}.dataset-head{justify-content:space-between;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-sm);display:flex}.chip-row{gap:var(--space-xs);flex-wrap:wrap;display:flex}.chip{align-items:center;gap:var(--space-xs);background:var(--color-green-100);color:var(--color-primary);border-radius:var(--radius-full);padding:2px var(--space-sm);font-size:.75rem;font-weight:500;line-height:1.4;display:inline-flex}.chip em{color:var(--color-gray-600);font-style:normal}.chip-select{cursor:pointer}.dataset-actions{margin-top:var(--space-sm)}.link-line{overflow-wrap:anywhere;font-size:.875rem}.link-line code{background:var(--color-gray-50);border-radius:var(--radius-sm);padding:1px 6px}.success-text{color:var(--color-success-text);font-size:.875rem}.warning-box{border:1px solid var(--color-warning);border-radius:var(--radius-md);padding:var(--space-md);color:var(--color-warning-text);margin-bottom:var(--space-md);background:#fff;font-size:.875rem}.warning-box ul{margin-top:var(--space-xs);padding-left:var(--space-lg)}.editor-section{margin-top:var(--space-xl);gap:var(--space-sm);flex-direction:column;align-items:flex-start;display:flex}.editor-section textarea{width:100%;max-width:720px}.row-card{gap:var(--space-md);grid-template-columns:200px 1fr auto;align-items:start;width:100%;max-width:880px;display:grid}.chart-card{gap:var(--space-md);flex-direction:column;width:100%;max-width:880px;display:flex}.chart-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.checkbox-row{gap:var(--space-md);padding-top:var(--space-lg);flex-direction:row;align-items:center}
