:root{--bg:#10120f;--panel:#181b17;--panel-2:#20251f;--line:#384035;--text:#f0f3e8;--muted:#aeb8a5;--accent:#d7ff61;--warning:#ffb84d;--danger:#ff6b6b;--ok:#64d78b}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);letter-spacing:0;margin:0;font-family:ui-monospace,SFMono-Regular,Cascadia Code,Liberation Mono,monospace}a{color:inherit;text-decoration:none}button{font:inherit}.app-shell{grid-template-rows:auto 1fr;min-height:100vh;display:grid}.page{width:min(1280px,100vw - 32px);margin:0 auto;padding:24px 0 40px}.workbench-page{background:#080a08;width:100%;height:calc(100vh - 56px);min-height:0;position:relative;overflow:hidden}.grid{gap:16px;display:grid}.grid.two{grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr)}.panel{border:1px solid var(--line);background:var(--panel);border-radius:6px;min-width:0}.panel-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:10px 12px;display:flex}.panel-body{padding:12px}.muted{color:var(--muted)}@media (max-width:860px){.grid.two{grid-template-columns:1fr}}
.header{border-bottom:1px solid var(--line);background:#12150f;justify-content:space-between;align-items:center;height:72px;padding:0 20px;display:flex}.brand,.header-nav{align-items:center;gap:10px;display:inline-flex}.brand{font-weight:700}.brand-logo{flex:none;width:56px;height:56px;display:block}.header-nav{color:var(--muted);font-size:13px}.backend-status{border:1px solid var(--line);background:var(--panel);border-radius:4px;align-items:center;min-height:24px;padding:0 8px;display:inline-flex}.backend-ok{color:var(--ok)}.backend-fluka{color:var(--ok);border-color:#64d78b8c}.backend-mock{color:var(--warning);border-color:#ffb84d99}.backend-offline{color:var(--danger)}.scene-viewer{min-height:680px}.voxel-stage{background:#0b0d0a;height:clamp(560px,68vh,760px);min-height:560px;position:relative;overflow:hidden}.voxel-stage.walk-mode{cursor:crosshair}.voxel-stage canvas{display:block;width:100%!important;height:100%!important}.editor-shell{background:#080a08;position:absolute;inset:0;overflow:hidden}.editor-canvas-panel{min-width:0;min-height:0;position:absolute;inset:0}.editor-shell .voxel-stage{width:100%;height:100%;min-height:0}.editor-floating-header{z-index:3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f120dd6;border:1px solid #d7ff6147;border-radius:6px;align-items:center;gap:14px;max-width:min(680px,100vw - 32px);min-height:44px;padding:8px 10px;display:inline-flex;position:absolute;top:auto;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #0000004d}.editor-run-panel{z-index:5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f120ddb;border:1px solid #d7ff614d;border-radius:6px;justify-items:center;gap:8px;width:auto;min-width:max-content;padding:8px;display:grid;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #00000057}.run-button{white-space:nowrap;width:auto;min-width:max-content;padding:0 16px}.run-error{text-align:center;max-width:280px}.editor-control-drawer,.examples-drawer{z-index:6;border-color:var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#12150ff5;grid-template-rows:auto minmax(0,1fr);width:min(380px,100vw - 72px);transition:transform .18s;display:grid;position:absolute;top:0;bottom:0;box-shadow:0 20px 44px #0000006b}.editor-control-drawer{border-right:1px solid var(--line);left:0;transform:translate(-100%)}.editor-control-drawer.open{transform:translate(0)}.examples-drawer{border-left:1px solid var(--line);right:0;transform:translate(100%)}.examples-drawer.open{transform:translate(0)}.drawer-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:12px 14px;display:flex}.drawer-scroll{align-content:start;gap:12px;min-height:0;padding:12px;display:grid;overflow-y:auto}.drawer-close-button,.edge-drawer-toggle{border:1px solid var(--line);min-height:34px;color:var(--text);background:var(--panel-2);border-radius:4px}.drawer-close-button{padding:0 10px}.edge-drawer-toggle{z-index:8;color:#10120f;background:var(--accent);min-width:52px;padding:0 10px;transition:left .18s,right .18s;position:absolute;top:12px;box-shadow:0 12px 28px #00000061}.left-drawer-toggle{left:12px}.left-drawer-toggle.open{left:min(392px,100vw - 60px)}.right-drawer-toggle{left:-104px;right:auto}.right-drawer-toggle.open{left:-72px}.examples-modal-launch{z-index:8;border:1px solid var(--line);color:#10120f;background:var(--accent);border-radius:4px;min-height:34px;padding:0 10px;position:absolute;top:12px;right:12px;box-shadow:0 12px 28px #00000061}.examples-modal-backdrop{z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#060806b8;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.examples-modal{background:#12150ff7;border:1px solid #d7ff614d;border-radius:8px;grid-template-rows:auto minmax(0,1fr) auto auto;gap:0;width:min(1040px,100vw - 32px);max-height:min(720px,100vh - 32px);display:grid;overflow:hidden;box-shadow:0 28px 70px #0000008c}.examples-modal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:14px 16px;display:flex}.example-choice-list{min-height:0;max-height:min(536px,100vh - 164px);padding:14px;overflow-y:auto}.example-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.example-choice{border:1px solid var(--line);min-height:196px;color:var(--text);background:var(--panel-2);text-align:center;border-radius:8px;grid-template-rows:86px auto minmax(44px,1fr);justify-items:center;gap:8px;padding:12px;display:grid}.example-choice:hover:not(:disabled),.example-choice:focus-visible{border-color:var(--accent);background:#25301f;outline:none}.example-choice:disabled{cursor:not-allowed;opacity:.62}.example-icon-box{width:80px;height:80px;color:var(--accent);background:#161d14;border:1px solid #d7ff613d;border-radius:8px;place-items:center;display:grid}.example-icon-box svg{width:54px;height:54px}.example-choice>span:not(.example-icon-box){color:var(--muted);font-size:12px;line-height:1.35}.examples-modal-error,.examples-modal .scene-id{padding:0 14px 14px}.close-guard-toast{z-index:9;min-height:34px;color:var(--warning);pointer-events:none;background:#12150feb;border:1px solid #ffb84da6;border-radius:4px;padding:8px 12px;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 12px 28px #0006}.simulation-progress-bar{z-index:20;pointer-events:none;width:100%;position:fixed;bottom:0;left:0;right:0}.simulation-progress-track{background:#22c55e29;height:8px;position:relative;overflow:hidden;box-shadow:0 -1px #d7ff612e}.simulation-progress-fill{background:linear-gradient(90deg,#16a34a,#22c55e 58%,#d7ff61);min-width:0;transition:width .26s;position:absolute;top:0;bottom:0;left:0;box-shadow:0 0 18px #22c55eb8}.simulation-progress-edge{background:linear-gradient(90deg,#0000,#ffffffd1,#0000);width:36px;height:100%;animation:.72s ease-in-out infinite simulation-progress-edge;position:absolute;top:0;right:-18px}.simulation-progress-meta{min-height:30px;color:var(--text);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0c0e0be0;border:1px solid #d7ff6152;border-radius:4px;align-items:center;gap:10px;padding:6px 10px;font-size:12px;display:inline-flex;position:absolute;bottom:14px;right:12px;box-shadow:0 12px 28px #0000005c}.simulation-progress-meta span{color:var(--muted)}.simulation-progress-meta strong{color:var(--accent);font-variant-numeric:tabular-nums}@keyframes simulation-progress-edge{0%,to{opacity:.35;transform:scaleX(.45)}50%{opacity:1;transform:scaleX(1)}}.editor-view-header{gap:12px}.editor-mode-toggle{border:1px solid var(--line);border-radius:4px;grid-template-columns:repeat(2,max-content);display:inline-grid;overflow:hidden}.editor-mode-toggle button{border:0;border-right:1px solid var(--line);min-height:30px;color:var(--muted);background:var(--panel-2);padding:0 12px}.editor-mode-toggle button:last-child{border-right:0}.editor-mode-toggle .selected{color:#10120f;background:var(--accent)}.walk-hud{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.walk-crosshair{filter:drop-shadow(0 1px 2px #000c);width:20px;height:20px;position:relative}.walk-crosshair:before,.walk-crosshair:after{content:"";background:#f1f5e8db;position:absolute}.walk-crosshair:before{width:2px;height:16px;top:2px;left:9px}.walk-crosshair:after{width:16px;height:2px;top:9px;left:2px}@media (max-width:860px){.scene-viewer{min-height:520px}.voxel-stage{height:460px;min-height:460px}.editor-view-header{flex-direction:column;align-items:flex-start}}.material-list,.artifact-list,.simulation-panel,.demo-panel{gap:10px;display:grid}.beam-controls{gap:12px;display:grid}.beam-position-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.beam-vector-grid{border-top:1px solid var(--line);padding-top:10px}.numeric-control{color:var(--muted);gap:5px;font-size:12px;display:grid}.numeric-control input,.numeric-control select{border:1px solid var(--line);width:100%;min-height:32px;color:var(--text);background:var(--panel-2);border-radius:4px;padding:0 8px}.tutorial-panel{background:#20251fcc;border:1px solid #d7ff6138;border-radius:6px;gap:10px;padding:12px;display:grid}.tutorial-panel>div{gap:2px;display:grid}.tutorial-panel ol{color:var(--muted);gap:8px;margin:0;padding-left:20px;font-size:12px;line-height:1.45;display:grid}.tutorial-panel li::marker{color:var(--accent)}.material-row,.artifact-row{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;align-items:center;gap:10px;min-height:32px;padding:0 8px;font-size:13px;display:flex}.material-row{width:100%;color:var(--text);cursor:pointer;text-align:left}.material-row:disabled{cursor:default;opacity:1}.material-row.selected{border-color:var(--accent);background:#2a321f}.swatch{border:1px solid #ffffff47;flex:none;width:16px;height:16px}.primary-button{border:1px solid var(--line);color:#11140c;background:var(--accent);border-radius:4px;min-height:38px}.primary-button:disabled{cursor:not-allowed;opacity:.6}.secondary-button{color:var(--text);background:#263024}.air-fill-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fill-message{min-width:46px;color:var(--ok);font-size:12px}.debug-panel{border:1px solid var(--line);max-height:220px;color:var(--muted);white-space:pre-wrap;background:#0c0e0b;border-radius:4px;margin:0;padding:10px;font-size:11px;line-height:1.45;overflow:auto}.demo-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.examples-drawer .demo-grid{grid-template-columns:1fr}.demo-card{border:1px solid var(--line);min-height:112px;color:var(--text);background:var(--panel-2);text-align:left;border-radius:4px;gap:6px;padding:12px;display:grid}.demo-card:hover:not(:disabled),.demo-card:focus-visible{border-color:var(--accent);outline:none}.demo-card span,.demo-card small{color:var(--muted);line-height:1.35}.error-text{color:var(--danger);font-size:12px}.status-badge{border:1px solid var(--line);min-height:26px;color:var(--muted);background:var(--panel-2);border-radius:4px;align-items:center;padding:0 10px;font-size:12px;display:inline-flex}.status-completed{color:var(--ok)}.status-failed{color:var(--danger)}.heatmap-panel{gap:12px;display:grid}.heatmap-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.segmented-control{border:1px solid var(--line);border-radius:4px;grid-template-columns:repeat(3,40px);display:inline-grid;overflow:hidden}.segmented-control button{border:0;border-right:1px solid var(--line);min-height:30px;color:var(--muted);background:var(--panel-2)}.segmented-control button:last-child{border-right:0}.segmented-control .selected{color:#10120f;background:var(--accent)}.slice-control{min-width:180px;color:var(--muted);gap:4px;font-size:12px;display:grid}.heatmap-grid{gap:3px;display:grid}.heatmap-source{font-size:12px}.heatmap-grid span{aspect-ratio:1;background:var(--accent);min-width:0}.dose-volume-viewer{min-height:620px}.dose-volume-body{gap:12px;display:grid}.volume-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.volume-threshold{min-width:240px}.volume-stage{background:#0b0d0a;height:clamp(500px,58vh,700px);min-height:500px;position:relative;overflow:hidden}.volume-stage.is-hovering canvas{cursor:crosshair}.volume-stage canvas{display:block;width:100%!important;height:100%!important}.dose-hover-tooltip{z-index:5;color:#f4f7ec;pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0a0c09e6;border:1px solid #d7ff616b;border-radius:6px;width:220px;padding:10px 12px;position:absolute;transform:translate(12px,calc(-100% - 12px));box-shadow:0 18px 40px #00000052}.dose-hover-tooltip.below{transform:translate(12px,12px)}.dose-hover-tooltip .tooltip-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.dose-hover-tooltip strong{color:#fff3b0;font-variant-numeric:tabular-nums;margin-top:2px;font-size:18px;display:block}.dose-hover-tooltip dl{gap:4px;margin:8px 0 0;display:grid}.dose-hover-tooltip dl div{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.dose-hover-tooltip dt,.dose-hover-tooltip dd{margin:0;font-size:12px}.dose-hover-tooltip dt{color:var(--muted)}.dose-hover-tooltip dd{font-variant-numeric:tabular-nums}.editor-controls,.editor-actions{gap:12px;display:grid}.editor-slider{min-width:100%}.voxel-paint-grid{border:1px solid var(--line);touch-action:none;-webkit-user-select:none;user-select:none;background:#0c0e0b;border-radius:4px;gap:1px;padding:8px;display:grid}.voxel-cell{aspect-ratio:1;cursor:crosshair;border:1px solid #00000047;border-radius:2px;min-width:0;padding:0}.voxel-cell:hover,.voxel-cell:focus-visible{outline:1px solid var(--accent);outline-offset:0}.material-counts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.material-counts span{border:1px solid var(--line);background:var(--panel-2);min-height:30px;color:var(--muted);border-radius:4px;align-items:center;gap:8px;padding:0 8px;font-size:12px;display:inline-flex}.scene-id{overflow-wrap:anywhere;font-size:12px}@media (max-width:980px){.editor-floating-header{flex-direction:column;align-items:flex-start;max-width:calc(100vw - 28px);bottom:14px;left:50%;right:auto;transform:translate(-50%)}}@media (max-width:680px){.editor-run-panel{top:56px}.examples-modal-backdrop{align-items:start;padding:12px}.examples-modal{width:calc(100vw - 24px);max-height:calc(100vh - 72px);margin-top:48px}.example-choice-list{max-height:calc(100vh - 210px);padding:12px}.examples-modal-header{flex-direction:column;align-items:flex-start}.example-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.example-choice{grid-template-rows:74px auto minmax(38px,1fr);min-height:166px;padding:10px}.example-icon-box{width:70px;height:70px}.example-icon-box svg{width:48px;height:48px}}@media (max-width:460px){.example-choice-grid{grid-template-columns:1fr}}
