:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--gutter:20px;--font-sm:12px;--font-md:14px;--font-input-touch:16px;--touch-target:44px;--brand-cyan:#19d6ff;--brand-blue:#1268ff;--brand-navy:#071b55;--brand-ink:#04070f;--container-max:1280px;--sheet-max-height:80vh;--z-sticky:10;--z-popover:20;--z-drawer:90;--z-modal:100}@media not (min-width:640px){:root{--gutter:16px}}:root{--bg:#f6f7f9;--panel:#fff;--text:#1c2430;--muted:#5c6878;--border:#d9dee5;--accent:#1f6feb;--accent-text:#fff;--error:#c62828;--error-bg:#fdecea;--computed:#1b7f45;--computed-bg:#e3f4ea;--cached:#1f5fbf;--cached-bg:#e4eefc;--estimated:#9a6200;--estimated-bg:#fdf3dd;--waiting:#8a94a3;--port-gas:#1f8fbf;--port-heat:#d9622b;--port-data:#8a5cd6;--port-liquid:#2c9c7a;--port-control:#7d8590;--notice-bg:#eef4ff;--viz-1:#2a78d6;--viz-2:#eb6834;--viz-3:#1baf7a;--viz-4:#eda100;--viz-5:#e87ba4;--viz-6:#008300;--viz-7:#4a3aa7;--viz-8:#e34948;--viz-text:#1c2430;--viz-text-secondary:#52514e;--viz-muted:#6f6d67;--viz-grid:#e1e0d9;--viz-axis:#c3c2b7;--radius:8px;--mono:ui-monospace, SFMono-Regular, Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#12161c;--panel:#1a2029;--text:#e3e8ef;--muted:#97a3b4;--border:#2d3644;--accent:#4c8dff;--error:#ff7b72;--error-bg:#3a1d1d;--computed:#56d38a;--computed-bg:#15301f;--cached:#79a8ff;--cached-bg:#172741;--estimated:#f0b54a;--estimated-bg:#3a2c10;--port-gas:#4cb8e6;--port-heat:#ff8a50;--port-data:#b494ff;--notice-bg:#172741;--viz-1:#3987e5;--viz-2:#d95926;--viz-3:#199e70;--viz-4:#c98500;--viz-5:#d55181;--viz-6:#008300;--viz-7:#9085e9;--viz-8:#e66767;--viz-text:#e3e8ef;--viz-text-secondary:#c3c2b7;--viz-muted:#97a3b4;--viz-grid:#2c3340;--viz-axis:#3b4555;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Hiragino Sans,sans-serif}.topbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:10px 20px;display:flex}.brand{flex-shrink:0;align-items:center;text-decoration:none;display:inline-flex}.brand-logo{align-items:center;gap:8px;line-height:0;display:inline-flex}.brand-logo img{display:block}.brand-wordmark{height:auto}.topbar nav{flex:1;align-items:center;gap:16px;display:flex}.nav-spacer{flex:1}.menu-toggle{margin-left:auto;display:none}.lang-select{display:inline-flex}.lang-select button{border-radius:0;padding:3px 10px;font-size:13px}.lang-select button:first-child{border-radius:6px 0 0 6px}.lang-select button:last-child{border-left:none;border-radius:0 6px 6px 0}.lang-select button[aria-pressed=true]{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}.edit-toggle{color:var(--muted);white-space:nowrap;font-size:12px}@media not (min-width:1024px){.topbar{flex-wrap:wrap}.menu-toggle{display:inline-block}.topbar nav{flex-direction:column;flex-basis:100%;align-items:flex-start;gap:10px;padding:8px 0;display:none}.topbar nav.open{display:flex}.nav-spacer{display:none}}.topbar a{color:var(--text);text-decoration:none}.topbar a.active{border-bottom:2px solid var(--accent);font-weight:600}.topbar .disabled{color:var(--muted)}main{padding:16px var(--gutter) 40px}.quick{grid-template-columns:minmax(320px,420px) minmax(0,1fr);grid-template-areas:"kinds kinds""input output";gap:16px;max-width:1280px;margin:0 auto;display:grid}.kinds{grid-area:kinds;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.input{grid-area:input}.output{grid-area:output;min-width:0}@media not (min-width:1024px){.quick{grid-template-columns:1fr;grid-template-areas:"kinds""input""output"}}.kind{text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--text);cursor:pointer;padding:10px 12px;text-decoration:none;display:block}.kind.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.kind-title{font-weight:600;display:block}.kind-summary{color:var(--muted);font-size:12px;display:block}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}h2{margin:0 0 12px;font-size:16px}h3{margin:16px 0 8px;font-size:14px}fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:0 0 12px;padding:8px 12px 12px}legend{align-items:baseline;gap:8px;padding:0 4px;font-weight:600;display:flex}.fields{gap:10px;display:grid}.field{grid-template-columns:9.5em minmax(0,1fr);align-items:center;gap:4px 8px;display:grid}.field.kind-composition{align-items:start}.field .error{color:var(--error);grid-column:2;font-size:12px}.field.has-error input,.field.has-error select{border-color:var(--error)}.req{color:var(--error)}input,select,button{font:inherit;color:inherit}input:not([type=checkbox]),select{border:1px solid var(--border);background:var(--bg);border-radius:6px;width:100%;min-width:0;padding:5px 8px}:is(input:focus-visible,select:focus-visible,button:focus-visible){outline:2px solid var(--accent);outline-offset:1px}.quantity{grid-template-columns:minmax(0,1fr) 5.5em;gap:4px;display:grid}.quantity .unit{color:var(--muted);align-self:center}.composition-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 28px;gap:4px;margin-bottom:4px;display:grid}.hint{color:var(--muted);margin:2px 0 0;font-size:12px}button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;padding:6px 12px}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);width:100%;padding:8px;font-weight:600}button.link{color:var(--accent);background:0 0;border:none;padding:0;font-size:12px}button.icon{padding:0}details.solver{margin-bottom:12px}summary{cursor:pointer;color:var(--muted)}.alert{background:var(--error-bg);color:var(--error);border-radius:6px;padding:8px 10px}.muted{color:var(--muted)}.mono{font-family:var(--mono);word-break:break-all;font-size:12px}.pipeline{flex-wrap:wrap;gap:6px;margin:0 0 12px;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--border);border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:inline-flex}.chip+.chip:before{content:"→";color:var(--muted);margin-right:4px}.chip-status{font-weight:600}.status-completed .chip-status{color:var(--computed)}.status-cached .chip-status{color:var(--cached)}.status-failed .chip-status,.status-invalid .chip-status{color:var(--error)}.status-waiting .chip-status,.status-ready .chip-status{color:var(--waiting)}.status-queued .chip-status,.status-running .chip-status{color:var(--accent)}.result-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.result-head h2{margin:0}.badge{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600}.result-computed{color:var(--computed);background:var(--computed-bg)}.result-cached{color:var(--cached);background:var(--cached-bg)}.result-estimated{color:var(--estimated);background:var(--estimated-bg)}table{border-collapse:collapse;width:100%;margin-top:8px}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:4px 8px}table.kv th{width:11em;color:var(--muted);font-weight:500}td.num{font-variant-numeric:tabular-nums;font-family:var(--mono)}.stream{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;gap:0 16px;display:grid}.provenance{margin-top:16px}.actions{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.route-cad main{padding:0}.whoami{color:var(--muted);margin:0;font-size:12px;position:absolute;top:10px;right:20px}.login{gap:10px;max-width:420px;margin:40px auto;display:grid}.cad{grid-template:"toolbar toolbar toolbar""notice notice notice""palette canvas properties"minmax(0,1fr)/170px minmax(0,1fr) 360px;height:calc(100vh - 45px);display:grid}.cad-toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;grid-area:toolbar;align-items:center;gap:8px;padding:8px 12px;display:flex}.cad-toolbar select,.cad-toolbar input{width:auto}.cad-toolbar .doc-name{min-width:14em}button.primary-inline{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}.cad-notice{background:var(--notice-bg);border-bottom:1px solid var(--border);grid-area:notice;margin:0;padding:6px 12px;font-size:13px}.notice{background:var(--notice-bg);border-radius:6px;padding:8px 10px}.palette{background:var(--panel);border-right:1px solid var(--border);grid-area:palette;padding:8px;overflow-y:auto}.palette h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 0 4px;font-size:11px}.palette-item{text-align:left;cursor:grab;width:100%;margin-bottom:4px;display:block}.cad-canvas{grid-area:canvas;min-height:0;position:relative}.properties{background:var(--panel);border-left:1px solid var(--border);grid-area:properties;padding:12px;overflow-y:auto}.properties .field{grid-template-columns:8.5em minmax(0,1fr)}.react-flow{--xy-background-color:var(--bg);--xy-minimap-background-color:var(--panel);--xy-controls-button-background-color:var(--panel);--xy-controls-button-color:var(--text);--xy-controls-button-border-color:var(--border)}.cad-node{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);min-width:170px;max-width:230px;color:var(--text);padding:8px 12px;font-size:12px;box-shadow:0 1px 2px #00000014}.cad-node.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.cad-node.has-error{border-color:var(--error)}.cad-node-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 8px;display:flex}.cad-node-head .chip-status{white-space:nowrap;font-size:11px}.cad-node-label{font-size:13px;font-weight:600}.cad-node-type,.cad-node-line{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cad-node-result{border-radius:999px;margin-top:4px;padding:1px 8px;font-weight:600;display:inline-block}.react-flow__handle.port{border:2px solid var(--panel);width:10px;height:10px}.react-flow__handle.port-gas{background:var(--port-gas)}.react-flow__handle.port-heat{background:var(--port-heat)}.react-flow__handle.port-data{background:var(--port-data)}.react-flow__handle.port-liquid{background:var(--port-liquid)}.react-flow__handle.port-control{background:var(--port-control)}.react-flow__handle.connectingto.valid{box-shadow:0 0 0 3px var(--computed)}.react-flow__handle.connectingto:not(.valid){box-shadow:0 0 0 3px var(--error)}.port-edge{stroke-width:2px}.port-edge.port-gas{stroke:var(--port-gas)}.port-edge.port-heat{stroke:var(--port-heat)}.port-edge.port-data{stroke:var(--port-data);stroke-dasharray:5 4}.port-edge.selected{stroke-width:3.5px}.profiles,.distribution{margin-top:16px}.profiles h4{margin:12px 0 0;font-size:13px;font-weight:600}.echart{width:100%;min-width:0}.viz-controls{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;font-size:12px;display:flex}.viz-controls select{width:auto}.segmented{margin-left:auto;display:inline-flex}.segmented button{border-radius:0;padding:3px 10px;font-size:12px}.segmented button:first-child{border-radius:6px 0 0 6px}.segmented button:last-child{border-left:none;border-radius:0 6px 6px 0}.segmented button[aria-pressed=true]{background:var(--bg);font-weight:600}.species-picker{flex-wrap:wrap;gap:4px;display:flex}.species-chip{color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:2px 8px;font-size:12px;display:inline-flex}.species-chip[aria-pressed=true]{color:var(--text);border-color:var(--viz-axis)}.viz-key{border-radius:1px;width:14px;height:2px;display:inline-block}.viz-tooltip{color:var(--viz-text);font:12px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}.viz-tooltip-title{color:var(--viz-muted);margin-bottom:4px}.viz-tooltip-row{align-items:center;gap:6px;display:flex}.viz-tooltip-row strong{font-variant-numeric:tabular-nums}.viz-tooltip-name{color:var(--viz-text-secondary)}.viz-table-wrap{max-height:360px;overflow:auto}.viz-table td,.viz-table th{white-space:nowrap;font-size:12px}.viz-table td{font-variant-numeric:tabular-nums}.page{max-width:920px;margin:0 auto;padding:8px 0 24px}.lead{color:var(--muted);font-size:16px}a{color:var(--accent)}.button,a.button{border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:6px;padding:8px 16px;font-weight:600;text-decoration:none;display:inline-block}a.button.primary-inline,.button.primary-inline{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.footer{border-top:1px solid var(--border);color:var(--muted);background:var(--panel);padding:16px 20px;font-size:13px}.footer-links{flex-wrap:wrap;gap:16px;display:flex}.route-cad .footer{display:none}.home{max-width:1100px;margin:0 auto}.hero{color:#eef4ff;background:radial-gradient(60% 90% at 78% 45%, #1268ff59, transparent 70%), radial-gradient(40% 60% at 95% 100%, #19d6ff2e, transparent 70%), linear-gradient(135deg, #060b1c 0%, var(--brand-ink) 60%, #020409 100%);border-radius:20px;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:24px;margin:8px 0 32px;padding:48px;display:grid;position:relative;overflow:hidden;box-shadow:0 20px 50px #04070f40}.hero h1{color:#fff;max-width:22em;margin:0 0 14px;font-size:clamp(26px,3.6vw,42px);line-height:1.2}.hero .lead{color:#b8c7e0;max-width:34em}.hero-logo{justify-content:center;display:flex}.hero-logo img{mix-blend-mode:screen;width:100%;max-width:460px;height:auto}.hero a.button.hero-primary{color:#fff;background:linear-gradient(135deg, var(--brand-cyan), var(--brand-blue) 55%, #0a3fd6);border:0;box-shadow:0 6px 20px #1268ff73}.hero a.button.hero-primary:hover{filter:brightness(1.08)}.hero a.button.hero-secondary{color:#eef4ff;background:#ffffff0f;border:1px solid #ffffff47}.hero a.button.hero-secondary:hover{background:#ffffff1f}.footer-brand{margin-bottom:4px}.admin-logo{padding:4px 8px 10px;display:block}.login-mark{margin:0 auto 8px;display:block}.maintenance-logo{justify-content:center;display:flex}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:20px;display:flex}.home-section{border-top:1px solid var(--border);padding:24px 0}.home-section h2{font-size:20px}.cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--text);flex-direction:column;gap:4px;padding:14px;text-decoration:none;display:flex}a.card:hover{border-color:var(--accent)}.card-icon{font-size:22px}.card-title{font-weight:600}.card-text{color:var(--muted);font-size:13px}.cad-teaser{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:center;gap:24px;display:grid}@media not (min-width:1024px){.cad-teaser{grid-template-columns:1fr}}.flow-sketch{flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.flow-col{flex-direction:column;gap:6px;display:flex}.flow-box{border:1px solid var(--border);background:var(--panel);white-space:nowrap;border-radius:6px;padding:6px 10px}.flow-arrow{color:var(--port-gas);font-weight:700}.steps{gap:6px;padding-left:20px;display:grid}.link-list{padding-left:18px}.learn-tools{flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0;display:flex}.search{max-width:420px}.term-list{gap:8px;padding:0;list-style:none;display:grid}.term-list li{gap:2px;display:grid}.term-name{font-weight:600}.term-short{color:var(--muted);font-size:13px}.term-symbol{color:var(--muted);margin-right:8px}.glossary-head{border-bottom:1px solid var(--border);font-size:16px}.breadcrumb{color:var(--muted);font-size:13px}.learn-entry h1{font-size:26px}.learn-entry h2{margin-top:24px;font-size:16px}.learn-short{background:var(--notice-bg);border-radius:var(--radius);padding:4px 16px;font-size:15px}.rich-text p,.rich-text li{line-height:1.7}.formula{background:var(--bg);border-radius:6px;margin:10px 0;padding:8px 12px;overflow:auto hidden}.formula .katex-display{margin:0}.math .katex,.formula .katex{font-size:1.08em}.tex-source code{font-family:var(--mono);color:var(--muted);font-size:.92em}.related{flex-wrap:wrap;gap:6px 10px;padding:0;list-style:none;display:flex}.related li a{border:1px solid var(--border);border-radius:999px;padding:2px 10px;text-decoration:none;display:inline-block}.help{margin-left:4px;display:inline-block;position:relative}.help-button{width:18px;height:18px;color:var(--muted);border-radius:50%;padding:0;font-size:11px;line-height:16px}.help-popover{z-index:20;background:var(--panel);width:280px;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);white-space:normal;flex-direction:column;gap:6px;padding:10px 12px;font-size:13px;font-weight:400;display:flex;position:absolute;top:22px;left:0;box-shadow:0 4px 16px #00000026}.help-more{font-weight:600}.edit-mode .editable{color:inherit;border-radius:3px;outline:1px dashed #0000;text-decoration:none}:is(.edit-mode .editable:hover,.edit-mode .editable:focus-visible){outline-color:var(--estimated);background:var(--estimated-bg);cursor:pointer}.admin-bar{background:var(--estimated-bg);border-radius:6px;padding:6px 10px;font-size:13px}.bilingual{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin:12px 0;display:grid}.field.stacked{grid-template-columns:1fr}textarea{width:100%;font:inherit;color:inherit;border:1px solid var(--border);background:var(--bg);border-radius:6px;padding:6px 8px}.preview{border-top:1px dashed var(--border);margin-top:8px;padding-top:8px}.diff del{color:var(--error);display:block}.diff ins{color:var(--computed);text-decoration:none;display:block}.status-badge.s-published{color:var(--computed);background:var(--computed-bg)}.status-badge.s-review_required,.status-badge.s-missing{color:var(--estimated);background:var(--estimated-bg)}.status-badge.s-draft{color:var(--muted);background:var(--bg)}.feedback-form{gap:12px;display:grid}.feedback-form .field{grid-template-columns:1fr}.type-picker{flex-wrap:wrap;gap:8px 16px;display:flex}.consent{align-items:flex-start;gap:8px;font-size:13px;display:flex}.hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}:root{--warning:#8a5a00;--warning-bg:#fff4d6;--warning-border:#e0b44a;--danger:#b42318;--ok:#1b7f45}@media (prefers-color-scheme:dark){:root{--warning:#f5c35b;--warning-bg:#33280f;--warning-border:#8a6a1f;--danger:#ff7b72;--ok:#56d38a}}.maintenance-banner{background:var(--warning-bg);color:var(--warning);border-bottom:1px solid var(--warning-border);flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 16px;display:flex}.maintenance-banner a{color:inherit;font-weight:600}.topbar a.nav-admin{font-weight:600}.maintenance-page{max-width:640px;margin:12vh auto;padding:0 16px}.maintenance-page section.secondary{border-top:1px solid var(--border);color:var(--muted);margin-top:32px;padding-top:16px}.pre-line{white-space:pre-line}.small{font-size:12px}.admin-shell{grid-template-columns:220px minmax(0,1fr);min-height:100vh;display:grid}.admin-side{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;align-self:start;gap:4px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.admin-back{color:var(--accent);padding:4px 8px;font-weight:600;text-decoration:none}.admin-brand{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:8px 8px 4px;font-size:12px}.admin-side nav{flex-direction:column;display:flex}.admin-side nav a{color:var(--text);border-radius:6px;align-items:center;gap:6px;padding:6px 8px;text-decoration:none;display:flex}.admin-side nav a:hover{background:var(--bg)}.admin-side nav a.active{background:var(--notice-bg);color:var(--accent);font-weight:600}.dot-warning{background:var(--warning-border);border-radius:50%;width:8px;height:8px}.admin-side-foot{flex-direction:column;gap:8px;margin-top:auto;padding:8px;display:flex}.admin-main{min-width:0;padding:0 24px 48px}.admin-main>.maintenance-banner{margin:0 -24px 8px}.admin-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:20px 0 12px;display:flex}.admin-head h1{margin:0;font-size:22px}.admin-head-tools{align-items:center;gap:8px;display:flex}.range-picker{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.range-custom{align-items:center;gap:8px;display:flex}.admin-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);min-width:0;margin-bottom:16px;padding:14px 16px}.admin-card h2{margin:0 0 10px;font-size:15px}.admin-card h3{margin:16px 0 6px;font-size:13px}.card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.key-kpi{border-color:var(--accent)}.kpi-grid,.now-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:16px;display:grid}.now-grid{margin-bottom:0}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);flex-direction:column;gap:2px;padding:12px 14px;text-decoration:none;display:flex}.kpi-link:hover{border-color:var(--accent)}.kpi-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:650}.kpi-label{color:var(--muted);font-size:12px}.kpi-hint{color:var(--muted);font-size:11px}.chart-grid,.card-grid{grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:16px;display:grid}.chart-grid>.admin-card,.card-grid>.admin-card{margin-bottom:0}.chart-grid,.card-grid{margin-bottom:16px}.tabs{flex-wrap:wrap;margin-bottom:12px}.filters{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:12px;display:flex}.table-scroll{overflow-x:auto}.admin-table td,.admin-table th{white-space:nowrap;vertical-align:top}.admin-table tr.selected{background:var(--notice-bg)}.num{text-align:right;font-variant-numeric:tabular-nums}.clip{text-overflow:ellipsis;max-width:260px;overflow:hidden}.row-actions{gap:10px;display:flex}.danger-text,button.link.danger-text{color:var(--danger)}.error-text{color:var(--error);max-width:320px;white-space:normal!important}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.badge+.badge,.badge{margin-left:4px}.lib-invalidated,.run-failed,.run-invalid{color:var(--error);background:var(--error-bg)}.lib-protected,.run-running{color:var(--cached);background:var(--cached-bg)}.lib-valid,.run-completed{color:var(--computed);background:var(--computed-bg)}.bar-table{border-collapse:collapse;width:100%}.bar-table th,.bar-table td{border-bottom:1px solid var(--border);text-align:left;padding:4px 6px;font-weight:400}.bar-table thead th{color:var(--muted);font-size:12px}.bar-table tbody th{width:60%;position:relative}.bar-label{z-index:1;word-break:break-all;position:relative}.bar{background:var(--viz-1);opacity:.18;border-radius:0 4px 4px 0;position:absolute;top:3px;bottom:3px;left:0}.pager{justify-content:flex-end;align-items:center;gap:12px;margin-top:10px;display:flex}.modal-backdrop{z-index:100;background:#0006;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);color:var(--text);border-radius:var(--radius);width:min(440px,100%);padding:20px;box-shadow:0 8px 32px #0000004d}.modal h2{margin-top:0;font-size:17px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.settings-form fieldset{border:0;margin:0;padding:0}.check{gap:4px;margin-right:12px;display:inline-flex}.inline-fields{flex-wrap:wrap;gap:12px;display:flex}.inline-fields .grow{flex:300px}.health-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.health{grid-template-columns:auto 1fr auto;align-items:center;gap:2px 8px;display:grid}.health .muted{grid-column:2/-1}.health.ok .health-icon{color:var(--ok)}.health.down .health-icon,.health.down strong{color:var(--danger)}.maintenance-state.on{border-color:var(--warning-border);background:var(--warning-bg)}.help-backdrop,.help-close{display:none}.menu-icon{margin-right:6px;font-size:18px;line-height:1}@media not (min-width:1024px){.topbar{padding:8px var(--gutter)}.topbar nav{align-items:stretch;gap:0;padding:4px 0 8px}.topbar nav>a,.topbar nav>label{min-height:var(--touch-target);border-bottom:1px solid var(--border);align-items:center;padding:0 4px;display:flex}.topbar nav .lang-select{align-self:flex-start;margin:10px 0 4px}.topbar nav .lang-select button{min-height:var(--touch-target);min-width:88px}.topbar nav .nav-admin{border-top:1px solid var(--border);margin-top:12px;font-weight:600}.topbar nav .nav-account{border-bottom:0}.menu-toggle{min-height:var(--touch-target)}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media not (min-width:640px){.cards{grid-template-columns:1fr}.hero-actions{flex-direction:column}.hero-actions>*{text-align:center;min-height:var(--touch-target);justify-content:center}.kinds{scroll-snap-type:x mandatory;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter) 6px;gap:8px;display:flex;overflow-x:auto}.kind{scroll-snap-align:start;max-width:75vw;min-height:var(--touch-target);flex-direction:column;flex:none;justify-content:center;display:flex}.kind .kind-summary{display:none}.kind.active .kind-summary{display:block}.panel{padding:12px}fieldset{padding:8px 10px 10px}.field{grid-template-columns:minmax(0,1fr);gap:4px}.field .error{grid-column:1}.properties .field{grid-template-columns:minmax(0,1fr)}.quantity{grid-template-columns:minmax(0,1fr) 7em}.composition-row{grid-template-columns:minmax(0, 1fr) minmax(0, 1fr) var(--touch-target)}}@media (pointer:coarse){input:not([type=checkbox]):not([type=radio]),select,textarea{min-height:var(--touch-target);font-size:var(--font-input-touch)}button,a.button{min-height:var(--touch-target)}input[type=checkbox],input[type=radio]{width:22px;height:22px}.help-button{width:28px;height:28px;min-height:0;font-size:14px;line-height:26px;position:relative}.help-button:after{content:"";position:absolute;inset:-8px}button.link{min-height:0;padding:10px 4px}}@media not (min-width:640px){.help-backdrop{z-index:var(--z-modal);background:#00000059;display:block;position:fixed;inset:0}.help-popover{z-index:calc(var(--z-modal) + 1);width:auto;max-height:var(--sheet-max-height);padding:16px var(--gutter) calc(16px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;gap:10px;font-size:15px;position:fixed;inset:auto 0 0;overflow-y:auto}.help-popover strong{font-size:17px}.help-more{min-height:var(--touch-target);align-items:center;display:flex}.help-close{align-self:flex-end;min-width:96px;display:block}.profiles{flex-direction:column;display:flex}.profiles .profile-plots{order:0}.profiles .species-picker{order:1;margin-top:8px}.profiles .viz-controls{order:2;margin-top:8px}.species-chip{min-height:36px;padding:6px 10px}}.viz-table.pin-first th:first-child,.viz-table.pin-first td:first-child{z-index:1;background:var(--panel);position:sticky;left:0}.table-scroll,.viz-table-wrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}@media not (min-width:640px){table.cards-on-phone,table.cards-on-phone tbody,table.cards-on-phone tr,table.cards-on-phone th,table.cards-on-phone td{white-space:normal;display:block}table.cards-on-phone thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}table.cards-on-phone tr{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;padding:8px 12px}table.cards-on-phone tbody th{border:0;padding:0 0 4px;font-size:14px;font-weight:600}table.cards-on-phone td{font-variant-numeric:tabular-nums;border:0;justify-content:space-between;gap:12px;padding:2px 0;font-size:13px;display:flex}table.cards-on-phone td:before{content:attr(data-label);color:var(--muted)}}.learn-layout{max-width:var(--container-max);grid-template-columns:minmax(0,1fr);grid-template-areas:"main""side""refs";gap:0 40px;display:grid}.learn-layout .learn-entry{grid-area:main;min-width:0}.learn-side{grid-area:side;min-width:0}.learn-refs{grid-area:refs;min-width:0}.learn-toc{display:none}.learn-toc ol{margin:0;padding-left:18px;line-height:1.9}@media (min-width:1024px){.learn-layout{grid-template-columns:minmax(0,720px) 240px;grid-template-areas:"main side""refs side";justify-content:center}.learn-side{align-self:start;padding-top:48px;position:sticky;top:16px}.learn-side h2{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:13px}.learn-toc{margin-bottom:24px;display:block}}details.disclosure>summary{cursor:pointer;min-height:var(--touch-target);align-items:center;gap:8px;list-style:none;display:flex}details.disclosure>summary::-webkit-details-marker{display:none}details.disclosure>summary:before{content:"▸";color:var(--muted);transition:transform .15s}details.disclosure[open]>summary:before{transform:rotate(90deg)}details.disclosure>summary h2{margin:0}@media not (min-width:640px){.learn-entry{font-size:15px;line-height:1.6}.related li a,.term-list a{align-items:center;min-height:36px;display:inline-flex}}.admin-topbar,.admin-backdrop{display:none}@media not (min-width:1024px){.admin-shell{grid-template-columns:minmax(0,1fr)}.admin-topbar{z-index:var(--z-sticky);padding:6px var(--gutter);background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:12px;display:flex;position:sticky;top:0}.admin-topbar .menu-toggle{align-items:center;margin-left:0;display:inline-flex}.admin-topbar-title{font-weight:600}.admin-side{width:min(300px,85vw);height:100%;z-index:var(--z-drawer);border-right:1px solid var(--border);border-bottom:0;transition:transform .2s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.drawer-open .admin-side{transform:none;box-shadow:0 0 24px #0003}.admin-side nav{flex-flow:column}.admin-side nav a{min-height:var(--touch-target)}.admin-backdrop{z-index:calc(var(--z-drawer) - 1);background:#00000059;display:block;position:fixed;inset:0}.admin-main{padding:0 var(--gutter) 32px}.admin-main>.maintenance-banner{margin:0 calc(-1 * var(--gutter)) 8px}.chart-grid,.card-grid{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.admin-side{transition:none}}@media not (min-width:640px){.kpi-grid,.now-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpi{padding:10px 12px}.kpi-value{font-size:20px}.admin-head{padding:14px 0 8px}.admin-head h1{font-size:19px}.range-picker .segmented{max-width:100%;overflow-x:auto}.filters{grid-template-columns:minmax(0,1fr);display:grid}.filters label{gap:4px;display:grid}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}.row-actions{flex-wrap:wrap}}.admin-table tbody th:first-child,.admin-table thead th:first-child{z-index:1;background:var(--panel);position:sticky;left:0}.maintenance-page{padding:0 var(--gutter)}@media not (min-width:640px){.maintenance-page{margin:32px auto}}.cad-pane,.cad-more{display:contents}.sheet-header,.cad-bottombar,.cad-backdrop,.cad-title,.cad-more-toggle{display:none}.cad-menu-backdrop{z-index:calc(var(--z-modal) - 1);position:fixed;inset:0}.cad-menu{z-index:var(--z-modal);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-width:180px;padding:4px;display:flex;position:fixed;box-shadow:0 6px 24px #0003}.cad-menu button{text-align:left;background:0 0;border:0}.cad-menu button:hover{background:var(--bg)}.cad-connect-hint{z-index:var(--z-popover);background:var(--text);color:var(--panel);border-radius:999px;max-width:calc(100% - 32px);margin:0;padding:8px 14px;font-size:13px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.cad{position:relative}@media not (min-width:1024px){.app.route-cad{flex-direction:column;height:100dvh;display:flex}.route-cad main{flex:1;min-height:0}.route-cad .footer{display:none}.cad{flex-direction:column;height:100%;display:flex}.cad-toolbar{padding:6px var(--gutter);flex-wrap:wrap;gap:8px}.cad-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;display:block;overflow:hidden}.cad-more-toggle{min-width:var(--touch-target);min-height:var(--touch-target);justify-content:center;align-items:center;font-size:20px;display:inline-flex}.cad-run{min-height:var(--touch-target);order:3}.cad-run:before{content:"▶ "}.cad-more{display:none}.tools-open .cad-more{flex-basis:100%;order:4;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:4px 0 6px;display:grid}.tools-open .cad-more>label,.tools-open .cad-more>.doc-name,.tools-open .cad-more>select{grid-column:1/-1;width:100%}.tools-open .cad-more>label{gap:4px;display:grid}.cad-canvas{flex:1;min-height:0}.cad .react-flow__minimap{display:none}.cad-bottombar{padding:6px var(--gutter) calc(6px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--border);grid-template-columns:1fr 1fr;gap:8px;display:grid}.cad-bottombar button{min-height:var(--touch-target);font-weight:600}.cad-bottombar button[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.cad-pane{display:none}.cad-pane.sheet-open{max-height:75dvh;z-index:var(--z-modal);background:var(--panel);padding-bottom:env(safe-area-inset-bottom);border-radius:16px 16px 0 0;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 32px #00000040}.cad-pane .palette,.cad-pane .properties{padding:8px var(--gutter) 16px;border:0;overflow-y:auto}.sheet-header{padding:10px var(--gutter);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-header strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cad-pane-add .palette section{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.cad-pane-add .palette h3{grid-column:1/-1;margin:8px 0 0}.cad-pane-add .palette-item{width:100%;min-height:var(--touch-target);margin:0}.cad-backdrop{z-index:calc(var(--z-modal) - 1);background:#0000004d;display:block;position:fixed;inset:0}.cad-connect-hint{bottom:72px}.cad-notice{padding:6px var(--gutter);margin:0}}@media not (min-width:640px){.cad-menu{padding:8px var(--gutter) calc(8px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;bottom:0;right:0;top:auto!important;left:0!important}.cad-menu button{min-height:var(--touch-target);font-size:16px}.cad-menu-backdrop{background:#0000004d}}@media (pointer:coarse){.cad-node .react-flow__handle.port{width:18px;height:18px}.cad-node .react-flow__handle.port:after{content:"";position:absolute;inset:-10px}.react-flow__controls-button{width:36px;height:36px}.cad-node{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}}@media not (min-width:1024px){.hero{text-align:left;grid-template-columns:minmax(0,1fr);padding:32px 28px}.hero-logo{order:-1}.hero-logo img{max-width:300px}}@media not (min-width:640px){.hero{margin:0 calc(-1 * var(--gutter)) 24px;padding:24px var(--gutter) 28px;border-radius:0}.hero-logo img{max-width:220px}.brand-wordmark{width:104px}}.hero+.home-section{border-top:0;padding-top:0}@media (prefers-color-scheme:dark){.hero{box-shadow:inset 0 0 0 1px #ffffff12,0 20px 50px #0006}}
