:root{--bg:#fff;--surface:#f6f7f9;--text:#1a1a1a;--muted:#5c6370;--border:#d0d4da;--accent:#1f6feb;--accent-contrast:#fff;--danger:#c0392b;--danger-contrast:#fff;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-sm:4px;--radius:6px;--radius-lg:8px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:var(--font);line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#14161a;--surface:#1c1f25;--text:#e8eaed;--muted:#9aa0a6;--border:#3a3f47;--accent:#5b9bff;--accent-contrast:#0b0f1a;--danger:#c0392b;--danger-contrast:#fff}}body{background:var(--bg);color:var(--text);margin:0}.shell{max-width:960px;padding:0 var(--space-4) 48px;margin:0 auto}.shell.wide{max-width:1280px}.chrome{z-index:20;background:var(--bg);position:sticky;top:0}.topbar{align-items:center;gap:var(--space-2) var(--space-6);padding:var(--space-3) 0;border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.topbar h1{margin:0;font-size:1.25rem}.topbar-end{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;margin-left:auto;display:flex}.account{text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:.9rem;overflow:hidden}.chip{padding:var(--space-1) var(--space-3);border-radius:999px;font-size:.85rem}.tabs{gap:var(--space-1);flex-wrap:wrap;display:flex}button.tab{padding:var(--space-2) var(--space-4);color:var(--muted);border:0;border-bottom:3px solid #0000;border-radius:0;font-weight:500}button.tab:hover{color:var(--text)}button.tab.active{border-bottom-color:var(--accent);color:var(--text)}main{position:relative}.tab-panel.keep-size{width:100%;position:absolute;top:0;left:-10000px}.session-banner{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border);border-left:4px solid var(--accent);background:var(--surface);flex-wrap:wrap;font-size:.9rem;display:flex}.session-banner.ended{border-left-color:var(--danger)}.session-banner-actions{gap:var(--space-2);display:flex}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.home-block{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border)}.home-block h3{margin:0 0 var(--space-2)}.example{padding:var(--space-4);border:1px solid var(--accent);border-radius:var(--radius-lg);background:var(--surface)}.example-actions{gap:var(--space-2);margin:var(--space-3) 0;flex-wrap:wrap;display:flex}.lesson{margin:var(--space-3) 0}.lesson summary{cursor:pointer;font-weight:600}.lesson ol{padding-left:var(--space-6)}.checklist,.steps,.projects{margin:0;padding:0;list-style:none}.checklist .check{padding:var(--space-1) 0;color:var(--muted)}.checklist .check.done{color:var(--text)}.checklist .check.next{color:var(--text);font-weight:600}.project{padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.steps{align-items:flex-start;gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.step{align-items:center;gap:var(--space-1);white-space:nowrap;padding:var(--space-1) var(--space-3);border:1px solid var(--border);color:var(--muted);border-radius:999px;font-size:.85rem;display:inline-flex;position:relative}.step.state-done,.step.state-ready{border-color:var(--accent);color:var(--text)}.step.state-next,.step.state-active{border-color:var(--accent);background:var(--accent);color:var(--accent-contrast)}.step.state-error{border-color:var(--danger);background:var(--danger);color:var(--danger-contrast)}.step.state-na{border-style:dashed}.project-next{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=720px){.chrome{position:static}.session-banner{z-index:20;position:sticky;top:0}}.hero{text-align:center;padding:64px 0}.hero h2{margin-top:0}.muted{color:var(--muted)}.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin-top:24px;display:grid}.card{border:1px solid var(--border);border-radius:8px;padding:16px}.card h2{margin:0 0 8px}.card.wide{margin-top:24px}.toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.toolbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.usage-total{font-size:1.1rem}.live{border:1px solid var(--accent);border-radius:6px;padding:8px 12px}.stream{border:1px solid var(--border);background:#000;border-radius:6px;width:100%;height:75vh;min-height:480px;display:block}.jobs{border-collapse:collapse;width:100%;font-size:.9rem}.jobs th,.jobs td{border-bottom:1px solid var(--border);text-align:left;padding:8px 12px 8px 0}select{border:1px solid var(--border);color:inherit;font:inherit;background:0 0;border-radius:6px;padding:6px 8px}button:disabled{opacity:.6;cursor:not-allowed}.badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:.75rem;display:inline-block}button{border:1px solid var(--border);color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:6px;padding:8px 16px}button.primary{border-color:var(--accent);background:var(--accent);color:var(--accent-contrast)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.error{border:1px solid var(--danger);border-radius:6px;padding:12px 16px}.field{align-items:flex-end;gap:6px;display:inline-flex}.hint{display:inline-block;position:relative}.hint-button{width:24px;height:24px;color:var(--muted);border-radius:50%;padding:0;font-size:.8rem;line-height:1}.hint-text{z-index:10;border:1px solid var(--border);background:var(--bg);width:260px;max-width:70vw;color:var(--text);pointer-events:auto;border-radius:6px;padding:8px 10px;font-size:.85rem;line-height:1.4;display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0003}.hint.open .hint-text{display:block}.failure{margin-top:4px;font-size:.85rem}.failure ul{margin:4px 0;padding-left:18px}.failure details{margin-top:4px}.failure code{word-break:break-word}dialog.confirm{border:1px solid var(--border);background:var(--bg);max-width:460px;color:var(--text);border-radius:8px;padding:20px 24px}dialog.confirm::backdrop{background:#00000080}dialog.confirm h2{margin-top:0}.confirm-actions{justify-content:flex-end;gap:8px;display:flex}button.danger{border-color:var(--danger);background:var(--danger);color:var(--danger-contrast)}.run-card{gap:var(--space-3);margin:var(--space-4) 0;padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;display:flex}.run-card h3{margin:0}.size-title{margin-bottom:var(--space-2);font-weight:600}.size-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.size-choice{gap:var(--space-1);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);cursor:pointer;flex-direction:column;display:flex;position:relative}.size-choice.selected{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:-2px}.size-choice:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.size-choice input{opacity:0;pointer-events:none;position:absolute}.size-help{margin:var(--space-2) 0 0;font-size:.9rem}.run-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.run-chip{padding:1px var(--space-3);border:1px solid var(--border);color:var(--text);white-space:nowrap;border-radius:999px;font-size:.85rem;display:inline-block}.run-chip:before{margin-right:var(--space-1)}.run-chip.tone-queued:before{content:"○" / ""}.run-chip.tone-running{border-color:var(--accent)}.run-chip.tone-running:before{content:"●" / "";color:var(--accent)}.run-chip.tone-done:before{content:"✓" / ""}.run-chip.tone-failed{border-color:var(--danger)}.run-chip.tone-failed:before{content:"!" / "";color:var(--danger);font-weight:700}.run-since{white-space:nowrap;font-size:.85rem}.run-card .field{max-width:100%;display:flex}.run-card .field label{flex:1;min-width:0}.run-card .field select{max-width:100%}.run-summary{margin:var(--space-4) 0 var(--space-2);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.run-summary h3{margin:0 0 var(--space-3)}.summary-figures{gap:var(--space-2) var(--space-8);margin:0 0 var(--space-3);flex-wrap:wrap;display:flex}.summary-figures dt{color:var(--muted);font-size:.9rem}.summary-figures dd{margin:0;font-size:1.5rem;font-weight:600;line-height:1.3}.summary-smoothed{font-size:.9rem;font-weight:400}.summary-note{margin:var(--space-2) 0 0;font-size:.9rem}.hand-calc{margin-top:var(--space-3);padding:var(--space-3);border-left:3px solid var(--accent);background:var(--bg)}.hand-calc ul{margin:var(--space-1) 0;padding-left:var(--space-6)}#analyses-heading{scroll-margin-top:var(--sticky-offset,130px)}.result-title:focus,#analyses-heading:focus{outline:none}.result-head{align-items:baseline;gap:var(--space-1) var(--space-4);margin-bottom:var(--space-3);scroll-margin-top:var(--sticky-offset,130px);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"back title run";display:grid}.back-link{align-items:center;gap:var(--space-1);grid-area:back;min-height:24px;font-weight:600;display:inline-flex}.result-title{overflow-wrap:anywhere;grid-area:title;min-width:0;margin:0;font-size:1.25rem}.result-run-id{grid-area:run;margin:0;font-size:.85rem}.result-notice{margin:var(--space-3) 0;padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.result-notice>p{margin:0 0 var(--space-3)}.result-notice>:last-child{margin-bottom:0}.result-grid{gap:var(--space-4);grid-template-columns:minmax(0,1fr);display:grid}.result-page .run-summary{margin:0}.result-rest{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.result-rest>.hand-calc{margin-top:0}.result-rest .summary-note{margin:0}.summary-meaning>summary,.result-files>button{cursor:pointer}.summary-meaning>summary{font-weight:600}.summary-meaning>.summary-note{margin-top:var(--space-2)}.result-files ul{margin:var(--space-2) 0;padding-left:var(--space-6)}.result-files p{margin:var(--space-2) 0 0}@media (width>=1100px){.result-grid{align-items:start;column-gap:var(--space-6);grid-template:"picture figures""picture rest"1fr/minmax(0,1fr) 340px}.result-figures{grid-area:figures}.result-picture{grid-area:picture;min-width:0}.result-rest{grid-area:rest}}.jobs tr.last-viewed{box-shadow:inset 3px 0 0 var(--accent)}.last-viewed-note{font-size:.85rem}.toast-region{right:var(--space-4);bottom:var(--space-4);z-index:40;gap:var(--space-2);width:min(380px, calc(100vw - 2 * var(--space-4)));pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast-stack{gap:var(--space-2);flex-direction:column;display:flex}.toast{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);pointer-events:auto;border-left-width:4px;display:flex;box-shadow:0 2px 10px #00000040}.toast-success{border-left-color:var(--accent)}.toast-error{border-left-color:var(--danger)}.toast-text{overflow-wrap:anywhere;flex:1;min-width:0}button.toast-dismiss{min-width:28px;padding:0 var(--space-2);border-color:#0000;flex:none;font-size:1.2rem;line-height:1.4}.toast-waiting{padding:var(--space-1) var(--space-3);border-radius:var(--radius);background:var(--surface);color:var(--muted);pointer-events:auto;align-self:flex-end;margin:0;font-size:.85rem}.empty-state{margin:var(--space-4) 0;padding:var(--space-4);border:1px dashed var(--border);border-radius:var(--radius-lg)}.empty-state-body{margin:var(--space-2) 0 0;color:var(--muted)}.empty-state-action{margin-top:var(--space-3)}.hint-text:after{content:"";height:10px;position:absolute;top:100%;left:0;right:0}a:focus-visible,select:focus-visible,summary:focus-visible,input:focus-visible,.table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip-link{left:var(--space-2);z-index:60;padding:var(--space-2) var(--space-4);border-radius:var(--radius);background:var(--accent);color:var(--accent-contrast);font-weight:600;position:fixed;top:-100px}.skip-link:focus{top:var(--space-2)}#main-content:focus,.freecad-end:focus{outline:none}.freecad-end{margin:var(--space-2) 0 0;font-size:.9rem}.table-scroll{max-width:100%;position:relative;overflow-x:auto}summary,input[type=range]{min-height:24px}@media (forced-colors:active){.size-choice.selected{outline-offset:-3px;outline:3px solid highlight}.toast{border:1px solid canvastext;border-left-width:6px}.run-chip{border-color:canvastext}}@media (width<=699px){.chrome{display:contents}.session-banner{z-index:20;position:sticky;top:0}.table-scroll{overflow-x:visible}.jobs,.jobs tbody,.jobs tr,.jobs td{display:block}.jobs thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.jobs tr{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius)}.jobs th,.jobs td{padding:var(--space-1) 0;border-bottom:0}.jobs td[data-label]:before{content:attr(data-label) ": " / "";color:var(--muted);font-size:.85rem}.jobs td.row-actions{padding-top:var(--space-2)}.session-banner-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.result-page{min-height:100svh}.result-head{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"back run""title title"}.result-title{font-size:1.1rem}.result-page .run-summary{padding:var(--space-3)}.result-page .summary-figures{gap:var(--space-1) var(--space-4);margin-bottom:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.result-page .summary-figures dt{font-size:.8rem}.result-page .summary-figures dd{font-size:1.15rem}.result-page .run-summary .summary-note{font-size:.8rem;line-height:1.3}.result-page .run-summary h3{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.result-page .run-summary{position:relative}.result-head{scroll-margin-top:var(--space-2)}.app-shell:has(.session-banner) .result-head{scroll-margin-top:130px}}@media (pointer:coarse){button,select,summary,input[type=range]{min-height:44px}button.hint-button{min-width:32px;min-height:32px}button.toast-dismiss{min-width:44px}.size-choice,.back-link{min-height:44px}}.app-footer{margin-top:var(--space-6);padding:var(--space-4) 0;border-top:1px solid var(--border);font-size:.9rem}.app-footer a{min-height:24px;font-weight:600;line-height:24px;display:inline-block}@media (pointer:coarse){.app-footer a{min-height:44px;line-height:44px}}.viewer{grid-template-columns:minmax(0,1fr) 260px;gap:16px;margin-top:16px;display:grid}@media (width<=760px){.viewer{grid-template-columns:minmax(0,1fr)}}.viewer-stage{gap:10px;height:560px;min-height:360px;display:flex}.viewer-frame{border:1px solid var(--border);touch-action:none;border-radius:6px;flex:1;min-width:0;position:relative;overflow:hidden}.viewer-canvas{touch-action:none;position:absolute;inset:0}.viewer-status{text-align:center;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:16px;display:flex;position:absolute;inset:0}.viewer-status button{pointer-events:auto}.viewer-legend{flex-direction:column;gap:10px;width:104px;font-size:.8rem;display:flex}.viewer-legend-title{overflow-wrap:anywhere;font-weight:600;line-height:1.25}.viewer-legend-body{flex:1;gap:6px;min-height:0;padding:8px 0;display:flex}.viewer-legend-bar{border:1px solid var(--border);border-radius:3px;width:18px}.viewer-legend-ticks{font-variant-numeric:tabular-nums;flex-direction:column;justify-content:space-between;margin:-.6em 0;display:flex}.viewer-controls{flex-direction:column;gap:14px;display:flex}.viewer-controls label{flex-direction:column;gap:4px;font-size:.9rem;display:flex}.viewer-controls select,.viewer-controls input[type=range]{box-sizing:border-box;width:100%}.viewer-row{flex-wrap:wrap;gap:8px;display:flex}.viewer-note{margin:0;font-size:.85rem}.viewer-page{grid-template-columns:minmax(0,1fr);gap:10px;margin-top:0}.viewer-page .viewer-stage{height:clamp(380px,100dvh - 340px,780px)}.viewer-controls-page{gap:10px}.viewer-bar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:8px 16px;display:flex}.viewer-bar .field{align-items:flex-end;gap:4px;display:flex}.viewer-options>summary{cursor:pointer;font-weight:600}.viewer-options-body{flex-direction:column;gap:14px;padding-top:10px;display:flex}@media (width<=699px){.viewer-stage,.viewer-page .viewer-stage{height:min(50svh,420px);min-height:240px}.viewer-legend{width:84px}}
