:root{--bg:#f5f0eb;--surface:#faf7f4;--surface-alt:#efe9e2;--text:#2c2420;--text-secondary:#7a6e64;--text-muted:#a89e94;--border:#e0d6cc;--border-input:#d4c9be;--primary:#9c6b3a;--primary-hover:#855a2f;--primary-disabled:#c9b59a;--primary-soft:rgba(156,107,58,0.08);--success:#5a8a6a;--success-hover:#4a7a5a;--danger:#b84a3a;--danger-hover:#a03a2a;--danger-soft:rgba(184,74,58,0.06);--tab-active-border:var(--primary);--sidebar-width:240px;--radius:8px;--radius-sm:5px;--shadow-sm:0 1px 3px rgba(44,36,32,0.06);--shadow-md:0 2px 8px rgba(44,36,32,0.08);--shadow-hover:0 6px 20px rgba(44,36,32,0.1)}html.dark{--bg:#1a1714;--surface:#231f1b;--surface-alt:#2a2520;--text:#e8e0d8;--text-secondary:#a09588;--text-muted:#6d6158;--border:#3a332d;--border-input:#4a4038;--primary:#c4884a;--primary-hover:#d4985a;--primary-disabled:#6a5a48;--primary-soft:rgba(196,136,74,0.1);--success:#6aaa7a;--success-hover:#5a9a6a;--danger:#d06a5a;--danger-hover:#e07a6a;--danger-soft:rgba(208,106,90,0.08);--tab-active-border:var(--primary);--shadow-sm:0 1px 3px rgba(0,0,0,0.2);--shadow-md:0 2px 8px rgba(0,0,0,0.25);--shadow-hover:0 6px 20px rgba(0,0,0,0.3)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{font-family:ui-sans-serif,-apple-system,system-ui,Segoe UI,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--primary);text-decoration:none;transition:color .15s ease}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:ui-serif,Georgia,Times New Roman,serif;font-weight:500;letter-spacing:-.01em;text-wrap:balance}.app-layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:1.5rem 1rem;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:100;transition:transform .25s cubic-bezier(.16,1,.3,1)}.sidebar-header{margin-bottom:1.5rem}.sidebar-header h2{font-size:1.1rem;margin-bottom:.2rem}.sidebar-version{font-size:.75rem;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.sidebar-nav{flex:1 1}.sidebar-footer{margin-top:auto;padding-top:1rem;font-size:.78rem;color:var(--text-muted);line-height:1.5}.sidebar-footer hr{border:none;border-top:1px solid var(--border)}.sidebar-footer hr,.sidebar-theme{margin-bottom:.75rem}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-secondary);cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease}.theme-toggle:hover{background:var(--primary-soft);color:var(--primary);border-color:var(--primary)}.nav-link{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:var(--radius-sm);color:var(--text-secondary);font-weight:500;font-size:.9rem;margin-bottom:.15rem;transition:color .15s ease,background .15s ease}.nav-link:hover{text-decoration:none}.nav-link.active,.nav-link:hover{background:var(--primary-soft);color:var(--primary)}.nav-link.active{font-weight:600}.nav-link .nav-icon{width:18px;text-align:center;flex-shrink:0;font-size:.85rem}.main-content{flex:1 1;min-width:0}.hamburger{display:none;position:fixed;top:.75rem;left:.75rem;z-index:200;width:40px;height:40px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0;box-shadow:var(--shadow-sm)}.hamburger span{display:block;width:18px;height:1.5px;background:var(--text);border-radius:2px;transition:transform .2s cubic-bezier(.16,1,.3,1)}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:99;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media (max-width:768px){.hamburger{display:flex}.sidebar{position:fixed;left:0;top:0;transform:translateX(-100%);height:100vh;width:260px;z-index:150}.sidebar.open{transform:translateX(0)}.sidebar-overlay.visible{display:block}.main-content{padding-top:3.5rem}}.container{max-width:1060px;margin:0 auto;padding:2.5rem 2rem}@media (max-width:768px){.container{padding:1.25rem 1rem}}.page-header{margin-bottom:2rem}.page-title{font-size:1.6rem;margin-bottom:.25rem}.page-subtitle{font-size:.88rem;color:var(--text-muted)}.divider{display:none}.card{background:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm);margin-bottom:1.25rem;border:1px solid var(--border)}.card h3{margin-bottom:.5rem;font-size:1.05rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1.2rem;border:none;border-radius:var(--radius-sm);font-size:.88rem;font-weight:500;cursor:pointer;transition:background .15s ease,transform .1s ease,box-shadow .15s ease;font-family:inherit;min-height:36px}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-success{background:var(--success);color:#fff}.btn-success:hover:not(:disabled){background:var(--success-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover)}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){background:var(--primary-soft);color:var(--primary);border-color:var(--primary)}input,select,textarea{width:100%;padding:.55rem .75rem;border:1px solid var(--border-input);border-radius:var(--radius-sm);font-size:.88rem;background:var(--surface);color:var(--text);font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}label{font-weight:500;display:block;margin-bottom:.3rem;color:var(--text-secondary);font-size:.85rem}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:1.5rem}.tab{padding:.55rem 1rem;background:transparent;color:var(--text-muted);font-size:.88rem;font-weight:500;cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s ease,border-color .15s ease;font-family:inherit}.tab:hover{color:var(--text-secondary)}.tab.active{color:var(--primary);border-bottom-color:var(--tab-active-border)}.file-drop{border:1.5px dashed var(--border-input);border-radius:var(--radius);padding:2.5rem 1.5rem;text-align:center;cursor:pointer;transition:border-color .15s ease,background .15s ease;background:var(--surface-alt)}@media (hover:hover){.file-drop:hover{border-color:var(--primary);background:var(--primary-soft)}}.file-drop.active{border-color:var(--primary);background:var(--primary-soft)}table{width:100%;border-collapse:collapse;font-size:.85rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td,th{padding:.5rem .7rem;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}th{background:var(--surface-alt);font-weight:600;color:var(--text-secondary);position:sticky;top:0;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}tbody tr{transition:background .1s ease}@media (hover:hover){tbody tr:hover{background:var(--primary-soft)}}.csv-preview{background:var(--surface-alt);padding:1rem;border-radius:var(--radius-sm);font-size:.78rem;max-height:400px;overflow:auto;font-family:SF Mono,Cascadia Code,Fira Code,JetBrains Mono,monospace;line-height:1.5;border:1px solid var(--border)}.spinner{display:inline-block;width:28px;height:28px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin:1.25rem 0}.feature-card{background:var(--surface);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s cubic-bezier(.16,1,.3,1)}@media (hover:hover){.feature-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover)}}.feature-card h3{margin-bottom:.4rem;font-size:1.05rem}.feature-card ul{padding-left:1.1rem;color:var(--text-secondary);font-size:.88rem;line-height:1.7}.feature-card .card-cta{margin-top:1rem;display:inline-flex;align-items:center;gap:.3rem;font-size:.88rem;font-weight:500;color:var(--primary);transition:gap .15s ease}@media (hover:hover){.feature-card:hover .card-cta{gap:.5rem}}.plot-container{width:100%;min-height:400px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeInUp .4s cubic-bezier(.16,1,.3,1) both}.fade-in-delay-1{animation-delay:.05s}.fade-in-delay-2{animation-delay:.1s}.fade-in-delay-3{animation-delay:.15s}.fade-in-delay-4{animation-delay:.2s}.fade-in-delay-5{animation-delay:.25s}@media (prefers-reduced-motion:reduce){.fade-in,.fade-in-delay-1,.fade-in-delay-2,.fade-in-delay-3,.fade-in-delay-4,.fade-in-delay-5{animation:none;opacity:1}.feature-card:hover{transform:none}}.stat-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;background:var(--surface-alt);border-radius:20px;font-size:.78rem;color:var(--text-secondary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--text-muted)}.empty-state p{max-width:320px;margin:0 auto;line-height:1.6}