:root{--color-bg-app: #0b1120;--color-bg-secondary: #111c2f;--color-surface-dock: #151f33;--color-surface-card: #18263b;--color-surface-elevated: #1f3049;--color-accent-primary: #62c3b5;--color-accent-secondary: #8bafd9;--color-text-primary: #e8edf5;--color-text-secondary: #9aa9bc;--color-border: #2a3950;--color-focus: #62c3b5;--color-success: #83c9a5;--color-warning: #e7b66a;--color-error: #e47d83;--color-neutral: #7c8aa0;--bg-void: var(--color-bg-app);--bg-panel: var(--color-surface-card);--bg-panel-raised: var(--color-surface-elevated);--border-subtle: var(--color-border);--border-glow: var(--color-accent-secondary);--text-primary: var(--color-text-primary);--text-muted: var(--color-text-secondary);--accent-cyan: var(--color-accent-primary);--accent-blue: var(--color-accent-secondary);--success: var(--color-success);--warning: var(--color-warning);--danger: var(--color-error);--radius-md: 10px;--radius-lg: 16px;--dock-width-collapsed: 64px;--dock-width-expanded: 232px;--dock-edge-gap: 20px;--font-display: "Space Grotesk", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg-void);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased}a{color:inherit}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;vertical-align:middle}.material-symbols-rounded.icon-filled{font-variation-settings:"FILL" 1,"wght" 500,"GRAD" 0,"opsz" 24}@keyframes icon-spin{to{transform:rotate(360deg)}}.icon-spin{animation:icon-spin 1.1s linear infinite}@media(prefers-reduced-motion:reduce){.icon-spin{animation:none}}.app-shell{position:relative;min-height:100vh}.app-main{min-width:0;padding:32px clamp(16px,4vw,48px) 64px;padding-left:calc(var(--dock-width-collapsed) + var(--dock-edge-gap) + 28px);position:relative;z-index:1}.dock{position:fixed;left:var(--dock-edge-gap);top:50%;transform:translateY(-50%);z-index:40;max-height:calc(100vh - 48px)}.dock-panel{width:var(--dock-width-collapsed);max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:color-mix(in srgb,var(--color-surface-dock) 92%,transparent);border:1px solid var(--color-border);border-radius:22px;box-shadow:0 20px 44px -20px #000000a6;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);padding:14px 0;overflow:hidden;transition:width .24s cubic-bezier(.4,0,.2,1)}.dock:hover .dock-panel,.dock:focus-within .dock-panel{width:var(--dock-width-expanded)}.dock-brand{display:flex;align-items:center;gap:12px;padding:2px 16px 14px;margin-bottom:8px;border-bottom:1px solid var(--color-border);white-space:nowrap;overflow:hidden}.dock-brand-mark{display:flex;align-items:center;justify-content:center;flex-shrink:0;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--color-accent-primary) 40%,transparent))}.dock-nav{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-width:none}.dock-nav::-webkit-scrollbar{display:none}.dock-list{list-style:none;margin:0;padding:0 8px;display:flex;flex-direction:column;gap:4px}.dock-divider{height:1px;margin:10px 16px;background:var(--color-border);flex-shrink:0}.dock-link{display:flex;align-items:center;gap:14px;height:44px;padding:0 12px;border-radius:12px;color:var(--color-text-secondary);text-decoration:none;white-space:nowrap;transition:background .15s ease,color .15s ease}.dock-link:hover{background:color-mix(in srgb,var(--color-accent-secondary) 12%,transparent);color:var(--color-text-primary)}.dock-link.active{background:color-mix(in srgb,var(--color-accent-primary) 16%,transparent);color:var(--color-text-primary);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-accent-primary) 45%,transparent)}.dock-link.active .dock-icon{color:var(--color-accent-primary)}.dock-icon{width:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);transition:color .15s ease}.dock-link:hover .dock-icon{color:var(--color-text-primary)}.dock-label{font-size:.87rem;font-weight:600;opacity:0;transform:translate(-4px);transition:opacity .18s ease,transform .18s ease}.dock:hover .dock-label,.dock:focus-within .dock-label{opacity:1;transform:translate(0)}.dock-brand-label{font-family:var(--font-display);font-weight:600;color:var(--color-text-primary);font-size:.95rem;letter-spacing:-.01em}.dock-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media(hover:none){.dock-panel{width:var(--dock-width-expanded)}.dock-label{opacity:1;transform:none}.app-main{padding-left:calc(var(--dock-width-expanded) + var(--dock-edge-gap) + 28px)}}.dock-toggle{display:none;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;margin-left:auto;padding:0;border:none;border-radius:12px;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:background .15s ease,color .15s ease}.dock-toggle:hover,.dock[data-open=true] .dock-toggle{background:color-mix(in srgb,var(--color-accent-secondary) 12%,transparent);color:var(--color-text-primary)}.dock-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media(max-width:768px){:root{--dock-edge-gap: 12px;--mobile-bar-height: 56px}.app-main{padding-top:calc(var(--mobile-bar-height) + var(--dock-edge-gap) + 24px);padding-left:clamp(16px,4vw,48px)}.dock{top:var(--dock-edge-gap);left:var(--dock-edge-gap);right:var(--dock-edge-gap);transform:none;max-height:none}.dock .dock-panel,.dock:hover .dock-panel,.dock:focus-within .dock-panel{width:auto;max-height:calc(100vh - 2 * var(--dock-edge-gap));max-height:calc(100dvh - 2 * var(--dock-edge-gap));padding:0;border-radius:18px;transition:none}.dock-brand{min-height:var(--mobile-bar-height);padding:6px 6px 6px 16px;margin-bottom:0;border-bottom:none}.dock[data-open=true] .dock-brand{border-bottom:1px solid var(--color-border)}.dock-label{opacity:1;transform:none}.dock-toggle{display:inline-flex}.dock-nav{display:none;padding:8px 0 10px}.dock[data-open=true] .dock-nav{display:flex;animation:fade-in-up .2s ease both}.dock-link{height:44px}}.starfield-canvas{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.page-header{margin-bottom:28px}.page-title{font-size:1.75rem;font-weight:600;margin:0 0 6px;background:linear-gradient(100deg,var(--color-text-primary) 0%,var(--color-accent-secondary) 60%,var(--color-accent-primary) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.page-subtitle{color:var(--text-muted);font-size:.9rem;max-width:640px;line-height:1.5}.panel{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:24px}.panel+.panel{margin-top:20px}.dropzone{border:1.5px dashed var(--border-subtle);border-radius:var(--radius-lg);padding:48px 24px;text-align:center;cursor:pointer;transition:border-color .2s ease,background .2s ease,transform .15s ease;background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--color-accent-secondary) 6%,transparent),transparent 70%)}.dropzone:hover{border-color:var(--accent-blue)}.dropzone.active{border-color:var(--accent-cyan);background:color-mix(in srgb,var(--color-accent-primary) 6%,transparent);transform:scale(1.005)}.dropzone-icon{display:block;margin:0 auto 12px;color:var(--color-accent-primary);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--color-accent-primary) 40%,transparent))}.dropzone-title{font-weight:600;margin-bottom:4px}.dropzone-subtitle{color:var(--text-muted);font-size:.85rem}.btn{display:inline-flex;align-items:center;gap:8px;border:none;border-radius:var(--radius-md);padding:10px 20px;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}.btn-primary{background:var(--color-accent-primary);color:#0a1a18;box-shadow:0 1px 2px #0000004d}.btn-primary:hover{background:color-mix(in srgb,var(--color-accent-primary) 88%,white);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--color-accent-primary) 25%,transparent)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-ghost{background:transparent;border:1px solid var(--border-subtle);color:var(--text-primary)}.btn-ghost:hover{border-color:var(--accent-blue)}.progress-track{width:100%;height:8px;background:var(--bg-panel-raised);border-radius:999px;overflow:hidden;border:1px solid var(--border-subtle)}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-blue),var(--accent-cyan));transition:width .2s ease;box-shadow:0 0 12px color-mix(in srgb,var(--color-accent-primary) 60%,transparent)}.state-block{text-align:center;padding:48px 24px;color:var(--text-muted)}.state-icon{margin-bottom:12px;display:block;color:var(--color-accent-secondary)}.state-block.error .state-icon{color:var(--color-error)}.state-title{color:var(--text-primary);font-weight:600;margin-bottom:6px}.state-block.error .state-title{color:var(--danger)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.75rem;font-weight:600;border:1px solid var(--border-subtle)}.status-dot{width:8px;height:8px;border-radius:50%}.status-pill.ok .status-dot{background:var(--success);box-shadow:0 0 8px var(--success)}.status-pill.bad .status-dot{background:var(--danger);box-shadow:0 0 8px var(--danger)}.status-pill.pending .status-dot{background:var(--warning);box-shadow:0 0 8px var(--warning)}.summary-row{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px}.summary-tile{flex:1 1 140px;background:var(--bg-panel-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:16px}.summary-tile .value{font-size:1.6rem;font-weight:700}.summary-tile .label{color:var(--text-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}.candidate-card{border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:16px 18px;margin-bottom:12px;background:var(--bg-panel-raised);animation:fade-in-up .35s ease both}.candidate-card.is-error{border-color:color-mix(in srgb,var(--color-error) 40%,transparent)}.candidate-header{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer}.candidate-title{font-weight:600}.candidate-badge{font-size:.75rem;padding:3px 9px;border-radius:999px;font-weight:700}.candidate-badge.candidate{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--success)}.candidate-badge.not-candidate{background:color-mix(in srgb,var(--color-neutral) 15%,transparent);color:var(--text-muted)}.candidate-badge.error{background:color-mix(in srgb,var(--color-error) 15%,transparent);color:var(--danger)}.candidate-detail{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px 16px;font-size:.85rem}.candidate-detail dt{color:var(--text-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.candidate-detail dd{margin:2px 0 0}.table-scroll{max-width:100%;margin-top:12px;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll>.feature-table{margin-top:0}.feature-table{margin-top:12px;width:100%;border-collapse:collapse;font-size:.78rem}.feature-table th,.feature-table td{text-align:left;padding:4px 8px;border-bottom:1px solid var(--border-subtle);color:var(--text-muted)}.feature-table td.value{color:var(--text-primary);font-variant-numeric:tabular-nums}.physics-teaser-header,.physics-dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.physics-header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.physics-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:.78rem;font-weight:700;letter-spacing:.01em;border:1px solid transparent;white-space:nowrap}.physics-badge.lg{padding:7px 16px;font-size:.85rem}.physics-badge-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.physics-badge.pass{color:var(--success);background:color-mix(in srgb,var(--color-success) 12%,transparent);border-color:color-mix(in srgb,var(--color-success) 35%,transparent)}.physics-badge.review{color:var(--warning);background:color-mix(in srgb,var(--color-warning) 12%,transparent);border-color:color-mix(in srgb,var(--color-warning) 35%,transparent)}.physics-badge.unevaluated{color:var(--text-muted);background:color-mix(in srgb,var(--color-neutral) 10%,transparent);border-color:var(--border-subtle)}.physics-card-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}.physics-card-summary{color:var(--text-primary);font-size:.92rem;line-height:1.55;margin:0 0 16px}.physics-metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 16px;margin-bottom:12px}.physics-metric{background:var(--bg-panel-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:10px 12px;display:flex;flex-direction:column;gap:4px}.physics-metric-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.physics-metric-value{font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums}.physics-discrepancy-line{font-size:.85rem;color:var(--text-muted);margin:0 0 12px}.physics-missing-line{font-size:.85rem;color:var(--warning);margin:0 0 12px}.physics-missing-line code{color:var(--text-primary);background:var(--bg-panel-raised);padding:1px 6px;border-radius:6px;font-size:.8rem}.physics-consistency-list,.physics-issues-list{margin:0 0 12px;padding-left:20px;font-size:.85rem;color:var(--text-muted);line-height:1.6}.physics-issues-list li{color:var(--text-primary)}.physics-calc-details{border-top:1px solid var(--border-subtle);padding-top:12px;margin-top:4px}.physics-calc-details>summary{cursor:pointer;color:var(--accent-cyan);font-size:.85rem;font-weight:600;list-style:none;display:flex;align-items:center;gap:4px}.physics-calc-details>summary::-webkit-details-marker{display:none}.physics-calc-details>summary:before{font-family:Material Symbols Rounded;font-variation-settings:"FILL" 0,"wght" 500,"GRAD" 0,"opsz" 20;content:"chevron_right";font-size:1.1rem;transition:transform .15s ease}.physics-calc-details[open]>summary:before{transform:rotate(90deg)}.physics-calc-body{margin-top:14px}.physics-calc-body h4{margin:18px 0 8px;font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.physics-calc-body h4:first-of-type{margin-top:0}.physics-equation{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;background:var(--bg-panel-raised);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:10px 12px;margin:0;white-space:pre-wrap;word-break:break-word}.physics-calc-body ul{margin:0;padding-left:20px;font-size:.85rem;color:var(--text-muted);line-height:1.6}.comparison-chart{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.comparison-row{display:grid;grid-template-columns:80px 1fr 120px;align-items:center;gap:10px}.comparison-row-label{font-size:.78rem;color:var(--text-muted)}.comparison-track{height:10px;background:var(--bg-panel-raised);border:1px solid var(--border-subtle);border-radius:999px;overflow:hidden}.comparison-fill{height:100%;border-radius:999px}.comparison-fill.bar-observed{background:var(--color-accent-primary)}.comparison-fill.bar-expected{background:var(--color-accent-secondary)}.comparison-row-value{font-size:.82rem;font-variant-numeric:tabular-nums;text-align:right;color:var(--text-primary)}@media(max-width:640px){.comparison-row{grid-template-columns:70px minmax(0,1fr) auto}}.coming-soon{border:1px dashed var(--border-subtle);border-radius:var(--radius-lg);padding:32px 24px;text-align:center;color:var(--text-muted)}.coming-soon .badge{display:inline-block;margin-bottom:10px;padding:4px 10px;border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:color-mix(in srgb,var(--color-warning) 15%,transparent);color:var(--warning)}@keyframes fade-in-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fade-in-up .3s ease both}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}a:focus-visible,button:focus-visible,input:focus-visible,.nav-link:focus-visible,.dropzone:focus-visible,summary:focus-visible{outline:2px solid var(--accent-cyan);outline-offset:2px;border-radius:var(--radius-md)}.panel{box-shadow:0 1px #ffffff05 inset,0 12px 28px -18px #0000008c}.summary-tile,.physics-metric{transition:border-color .15s ease}.summary-tile:hover,.physics-metric:hover{border-color:var(--border-glow)}.page-subtitle{line-height:1.6}.param-form-grid{display:grid;grid-template-columns:minmax(200px,1fr) minmax(140px,220px) minmax(70px,auto);align-items:center;row-gap:16px;column-gap:18px}.param-row,.param-section{display:contents}.param-section-heading{grid-column:1 / -1;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-cyan);padding-top:18px;border-top:1px solid var(--border-subtle)}.param-section:first-child .param-section-heading{padding-top:0;border-top:none}.param-label{display:flex;flex-direction:column;gap:2px;line-height:1.3}.param-label .display-name{color:var(--text-primary);font-size:.88rem;font-weight:600}.param-label .canonical-name{color:var(--text-muted);font-size:.72rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.param-input{width:100%;background:var(--bg-panel-raised);border:1px solid var(--border-subtle);color:var(--text-primary);border-radius:var(--radius-md);padding:9px 10px;font-size:.9rem;height:40px}.param-input:focus{outline:none;border-color:var(--accent-blue)}.param-unit{color:var(--text-muted);font-size:.8rem;white-space:nowrap}@media(max-width:640px){.param-form-grid{grid-template-columns:1fr}.param-row{display:flex;flex-direction:column;gap:6px;padding-bottom:12px;border-bottom:1px solid var(--border-subtle)}}.upload-stage{max-width:760px;margin:0 auto;padding-top:12px}.welcome-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 42%,color-mix(in srgb,var(--color-bg-secondary) 94%,transparent),color-mix(in srgb,var(--color-bg-app) 98%,transparent) 72%);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:1;transition:opacity .42s ease}.welcome-overlay.is-leaving{opacity:0}.welcome-content{text-align:center;padding:0 24px;animation:welcome-rise .9s cubic-bezier(.16,1,.3,1) both}.welcome-mark{display:flex;align-items:center;justify-content:center;margin:0 auto 20px;filter:drop-shadow(0 0 16px color-mix(in srgb,var(--color-accent-primary) 50%,transparent))}.welcome-title{margin:0 0 10px;font-size:clamp(1.6rem,4vw,2.4rem);font-weight:600;letter-spacing:-.01em;background:linear-gradient(100deg,var(--color-text-primary) 0%,var(--color-accent-secondary) 55%,var(--color-accent-primary) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 36px color-mix(in srgb,var(--color-accent-primary) 30%,transparent)}.welcome-subtitle{margin:0;color:var(--color-text-secondary);font-size:.92rem;letter-spacing:.03em}@keyframes welcome-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.welcome-content{animation:none}.welcome-overlay{transition:none}}.step-indicator{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-bottom:24px}.step-item{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.82rem}.step-dot{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-subtle);font-size:.75rem;font-weight:700;flex-shrink:0}.step-item.active{color:var(--text-primary)}.step-item.active .step-dot{border-color:var(--accent-cyan);color:var(--accent-cyan);box-shadow:0 0 10px color-mix(in srgb,var(--color-accent-primary) 40%,transparent)}.step-item.done .step-dot{border-color:var(--success);color:var(--success);background:color-mix(in srgb,var(--color-success) 10%,transparent)}.step-connector{width:28px;height:1px;background:var(--border-subtle);margin:0 4px}.attached-banner{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:color-mix(in srgb,var(--color-success) 10%,transparent);border:1px solid color-mix(in srgb,var(--color-success) 35%,transparent);color:var(--success);font-size:.85rem;font-weight:600;margin-bottom:20px}.page-title{font-size:clamp(1.4rem,1rem + 2.5vw,1.75rem);overflow-wrap:break-word}@media(max-width:640px){.page-header{margin-bottom:22px}.btn{min-height:44px;justify-content:center}.param-input{font-size:16px}.summary-tile .value,.candidate-detail dd,.physics-metric-value,.physics-missing-line code,.feature-table th,.feature-table td{overflow-wrap:anywhere}.step-indicator{flex-direction:column;align-items:flex-start;gap:8px}.step-connector{display:none}.comparison-row-label{overflow-wrap:anywhere}}@media(max-width:480px){.panel{padding:18px}.dropzone{padding:36px 16px}.summary-row{gap:12px}.summary-tile .value{font-size:1.4rem}.candidate-card{padding:14px}}
