@import url("/css/nemoh.css?v=0.41.0");
.stack-waveresponse-view{width:100%;height:100%;overflow:auto;padding:18px}.wave-response-shell{display:grid;gap:18px}.wave-response-shell>header{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;padding:18px;border:1px solid var(--line-soft);border-radius:14px;background:var(--panel)}.wave-response-shell h1{margin:4px 0;font-size:28px}.wave-response-shell p{margin:0;color:var(--text-muted)}.wave-response-actions{display:flex;gap:10px}.wave-response-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.wave-response-card{border:1px solid var(--line-soft);border-radius:14px;background:var(--panel);padding:16px;min-height:620px}.wave-response-card h2{margin:0 0 12px}.wave-response-card textarea,.wave-response-card pre{width:100%;height:540px;box-sizing:border-box;border:1px solid var(--line-soft);border-radius:10px;background:var(--panel-deep);color:var(--text-primary);padding:12px;font:12px/1.45 ui-monospace,monospace;overflow:auto;white-space:pre}.wave-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.wave-metrics article{border:1px solid var(--line-soft);border-radius:10px;padding:10px}.wave-metrics span{display:block;color:var(--text-muted);font-size:11px}.wave-metrics strong{display:block;font-size:20px;margin-top:4px}@media(max-width:1000px){.wave-response-grid{grid-template-columns:1fr}.wave-response-shell>header{align-items:flex-start;flex-direction:column}.wave-metrics{grid-template-columns:repeat(2,1fr)}}
body.wave-response-active #stackNemohView{display:none!important}
body.wave-response-active #stackWaveResponseView{display:block!important}
.prosolve-auth-overlay{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 30% 20%,rgba(23,102,154,.23),transparent 42%),#06111c}.prosolve-auth-card{width:min(420px,100%);display:grid;gap:14px;padding:30px;border:1px solid rgba(110,157,190,.24);border-radius:16px;background:rgba(8,24,38,.96);box-shadow:0 30px 90px rgba(0,0,0,.45)}.prosolve-auth-card h1{margin:8px 0 0}.prosolve-auth-card p{margin:0;color:var(--muted)}.prosolve-auth-card label{display:grid;gap:6px}.prosolve-auth-card label span,.prosolve-auth-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.prosolve-auth-card input{height:42px;padding:0 12px;border:1px solid var(--border);border-radius:9px;background:#081725;color:var(--text)}.prosolve-auth-error{min-height:18px;color:#ff8c8c;font-size:12px}.prosolve-user-menu{margin-left:auto;display:flex;align-items:center;gap:12px;padding-left:14px;border-left:1px solid var(--border)}.prosolve-user-menu strong,.prosolve-user-menu small{display:block}.prosolve-user-menu small{margin-top:2px;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.05em}
.prosolve-auth-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:10px;text-transform:uppercase}.prosolve-auth-divider:before,.prosolve-auth-divider:after{content:"";height:1px;flex:1;background:var(--border)}.prosolve-google-login{height:42px;display:flex;align-items:center;justify-content:center;gap:10px}.prosolve-google-login:disabled{opacity:.45;cursor:not-allowed}.google-mark{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#fff;color:#4285f4;font-weight:800}.prosolve-google-status{color:var(--muted);font-size:10px;line-height:1.45;text-align:center}
.prosolve-admin-overlay{z-index:100100}.prosolve-google-admin-card{width:min(580px,100%)}.prosolve-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.prosolve-modal-header h1{margin-top:5px}.prosolve-google-current{padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:rgba(4,16,26,.65);color:var(--muted);font-size:11px;overflow-wrap:anywhere}


/* Mechanics matrix editor */
.nemoh-matrix-editor-fieldset{display:block!important;padding:18px!important;min-width:0}.nemoh-matrix-tabs{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:8px;margin-bottom:14px}.nemoh-matrix-tabs button{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:11px 13px;border:1px solid var(--border,#244258);border-radius:9px;background:rgba(8,25,38,.72);color:inherit;cursor:pointer}.nemoh-matrix-tabs button span{font-size:10px;opacity:.58}.nemoh-matrix-tabs button.active{border-color:#46aee8;box-shadow:inset 0 -2px #ff7f32;background:rgba(30,69,94,.62)}.nemoh-matrix-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 12px}.nemoh-matrix-toolbar>div:first-child{display:flex;flex-direction:column;gap:3px}.nemoh-matrix-toolbar span{font-size:11px;opacity:.62}.nemoh-matrix-toolbar span.error{color:#ff7171;opacity:1}.nemoh-matrix-tools{display:flex;flex-wrap:wrap;gap:7px}.nemoh-matrix-grid-wrap{overflow:auto;border:1px solid rgba(85,147,184,.24);border-radius:11px;padding:10px;background:rgba(4,17,27,.55)}.nemoh-matrix-grid{display:grid;grid-template-columns:82px repeat(6,minmax(95px,1fr));gap:6px;min-width:760px}.nemoh-matrix-grid>strong{display:flex;align-items:center;justify-content:center;min-height:38px;font-size:11px;color:#91cceb;font-weight:600}.nemoh-matrix-grid input{width:100%;min-width:0;height:42px;text-align:right;font-variant-numeric:tabular-nums;padding:8px;border-radius:7px}.nemoh-matrix-grid input:focus{outline:2px solid #3ea9df;outline-offset:-1px}.nemoh-matrix-grid input.invalid{border-color:#ff6262;background:rgba(115,25,25,.3)}.nemoh-matrix-help{display:flex;justify-content:space-between;gap:12px;margin-top:10px;font-size:11px;opacity:.65}.nemoh-matrix-help code{white-space:nowrap}@media(max-width:1000px){.nemoh-matrix-tabs{grid-template-columns:repeat(2,1fr)}.nemoh-matrix-toolbar{align-items:flex-start;flex-direction:column}.nemoh-matrix-help{flex-direction:column}.nemoh-matrix-help code{white-space:normal}}


/* Results graph/table switch */
.nemoh-results-view-tabs{display:inline-flex;gap:4px;padding:4px;margin:0 0 12px 12px;border:1px solid rgba(91,151,187,.28);border-radius:10px;background:rgba(5,19,30,.55)}.nemoh-results-view-tabs button{padding:8px 18px;border:0;border-radius:7px;background:transparent;color:inherit;cursor:pointer}.nemoh-results-view-tabs button.active{background:rgba(40,100,137,.55);box-shadow:inset 0 -2px #ff812f}.nemoh-results-view{min-width:0}.nemoh-results-table-summary{padding:10px 14px;font-size:12px;color:rgba(204,226,242,.7);border:1px solid rgba(91,151,187,.2);border-bottom:0;border-radius:10px 10px 0 0;background:rgba(5,19,30,.45)}.nemoh-results-table-wrap{overflow:auto;max-height:calc(100vh - 390px);border:1px solid rgba(91,151,187,.24);border-radius:0 0 10px 10px;background:rgba(4,16,25,.5)}.nemoh-results-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}.nemoh-results-table th,.nemoh-results-table td{padding:9px 12px;border-right:1px solid rgba(91,151,187,.13);border-bottom:1px solid rgba(91,151,187,.12);text-align:right;white-space:nowrap}.nemoh-results-table thead th{position:sticky;top:0;z-index:3;background:#102636;color:#cce8f7;text-align:center}.nemoh-results-table thead tr:nth-child(2) th{top:37px}.nemoh-results-table th span,.nemoh-results-table th small{display:block}.nemoh-results-table th small{margin-top:3px;font-weight:400;opacity:.62}.nemoh-results-table tbody tr:hover td{background:rgba(57,132,173,.12)}.nemoh-results-table .sticky-col{position:sticky;left:0;z-index:2;background:#0c2130;text-align:right}.nemoh-results-table thead .sticky-col{z-index:5;background:#102636}


/* Critical damping assistant */
.nemoh-critical-damping-panel{margin-top:14px;padding:16px;border:1px solid rgba(82,159,201,.28);border-radius:12px;background:rgba(5,20,31,.62)}.nemoh-critical-damping-panel>header{display:flex;justify-content:space-between;gap:16px;align-items:end;margin-bottom:14px}.nemoh-critical-damping-panel>header div{display:flex;flex-direction:column}.nemoh-critical-damping-panel>header span{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#67bce8}.nemoh-critical-damping-panel>header strong{font-size:17px}.nemoh-critical-damping-panel>header small{opacity:.65}.nemoh-critical-damping-controls{display:grid;grid-template-columns:180px 180px minmax(260px,1fr) auto;gap:12px;align-items:end}.nemoh-critical-damping-controls label{display:flex;flex-direction:column;gap:6px}.nemoh-critical-damping-controls select,.nemoh-critical-damping-controls input[type=number]{min-height:40px}.nemoh-critical-compare-option{flex-direction:row!important;align-items:center;padding:8px 10px;border:1px solid rgba(82,159,201,.2);border-radius:8px}.nemoh-critical-compare-option span{display:flex;flex-direction:column}.nemoh-critical-compare-option small{opacity:.62}.nemoh-critical-damping-status{margin-top:12px;padding:10px 12px;border-radius:8px;background:rgba(30,74,99,.28)}.nemoh-critical-damping-metrics{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:8px;margin-top:12px}.nemoh-critical-damping-metrics article{padding:10px;border:1px solid rgba(82,159,201,.18);border-radius:8px}.nemoh-critical-damping-metrics span,.nemoh-critical-damping-metrics strong{display:block}.nemoh-critical-damping-metrics span{font-size:10px;opacity:.6}.nemoh-critical-damping-metrics strong{margin-top:4px;font-size:12px}.nemoh-critical-damping-charts{display:grid;grid-template-columns:repeat(2,minmax(360px,1fr));gap:12px;margin-top:12px}.nemoh-critical-damping-charts article{padding:12px;border:1px solid rgba(82,159,201,.2);border-radius:10px}.nemoh-critical-damping-charts article header{display:flex;flex-direction:column;margin-bottom:8px}.nemoh-critical-damping-charts article small{opacity:.6}.nemoh-critical-damping-charts canvas{width:100%;height:300px;display:block}@media(max-width:1100px){.nemoh-critical-damping-controls{grid-template-columns:1fr 1fr}.nemoh-critical-damping-metrics{grid-template-columns:repeat(3,1fr)}.nemoh-critical-damping-charts{grid-template-columns:1fr}}


/* OpenFOAM desktop-style workspace */
body.openfoam-active #stackNemohView,body.openfoam-active #stackWaveResponseView{display:none!important}.stack-openfoam-view{width:100%;height:100%;min-height:0;background:#20252b;color:#d8dde3;font:12px/1.35 Inter,Segoe UI,sans-serif;overflow:hidden}.of-menubar{height:31px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;border-bottom:1px solid #11161a;background:#2b3036}.of-menu-items{display:flex;height:100%}.of-menu-items button{padding:0 10px;border:0;background:transparent;color:#d2d6da;font-size:12px}.of-menu-items button:hover{background:#3a4148}.of-case-title{display:flex;align-items:center;gap:8px;color:#939ca5}.of-case-title strong{color:#e6ebef}.of-status-light{width:7px;height:7px;border-radius:50%;background:#53c878;box-shadow:0 0 7px #53c878}.of-toolbar{height:43px;display:flex;align-items:center;gap:8px;padding:0 9px;border-bottom:1px solid #11161a;background:#252a30}.of-tool-group{display:flex;gap:2px;padding-right:8px;border-right:1px solid #42484f}.of-toolbar button{width:29px;height:29px;border:1px solid transparent;border-radius:3px;background:transparent;color:#cbd2d8}.of-toolbar button:hover{border-color:#59636c;background:#394149}.of-toolbar .of-run{color:#71cf8d}.of-tool-spacer{flex:1}.of-toolbar-label{color:#87919a}.of-toolbar select{height:27px;min-width:130px;border:1px solid #4a535b;background:#1e2328;color:#dbe1e6}.of-main-grid{height:calc(100% - 74px);display:grid;grid-template-columns:245px minmax(480px,1fr) 285px;min-height:0}.of-tree-panel,.of-properties-panel{display:flex;flex-direction:column;min-height:0;background:#262c32}.of-tree-panel{border-right:1px solid #11161a}.of-properties-panel{border-left:1px solid #11161a}.of-panel-title{height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;border-bottom:1px solid #171b20;background:#30363d}.of-panel-title button{border:0;background:none;color:#aab2b9}.of-tree-search{display:flex;align-items:center;gap:7px;margin:7px;padding:0 8px;border:1px solid #464e56;border-radius:3px;background:#1d2227}.of-tree-search input{width:100%;height:27px;border:0;outline:0;background:transparent;color:#e3e8ec}.of-tree{flex:1;overflow:auto;padding:3px 0}.of-tree button{width:100%;height:25px;display:flex;align-items:center;gap:6px;padding:0 7px;border:0;background:transparent;color:#c8cfd5;text-align:left}.of-tree button:hover{background:#343c44}.of-tree button.selected{background:#315774;color:white;box-shadow:inset 2px 0 #58b8f0}.of-tree button i{width:11px;color:#8d969f;font-style:normal}.of-tree button span{white-space:nowrap}.of-tree-level{padding-left:14px}.of-folder{color:#e1ad4f}.of-tree-footer{height:29px;display:flex;align-items:center;gap:4px;padding:0 7px;border-top:1px solid #171b20}.of-tree-footer span{flex:1;color:#818b94}.of-tree-footer button{border:0;background:none;color:#bac2c8}.of-center{display:grid;grid-template-rows:33px minmax(300px,1fr) 150px;min-width:0;min-height:0;background:#171b1f}.of-tabs{display:flex;align-items:end;padding-left:4px;background:#262c32;border-bottom:1px solid #11161a}.of-tabs button{height:31px;padding:0 12px;border:0;border-right:1px solid #171b20;background:#2c3238;color:#9fa8b0}.of-tabs button.active{background:#1b2025;color:#eef2f5;border-top:2px solid #41a9e3}.of-tabs button span{margin-left:12px;color:#7f8992}.of-tabs .of-new-tab{padding:0;width:31px}.of-viewport{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 42%,#39434b 0,#242b31 46%,#161a1e 100%)}.of-view-tools{position:absolute;z-index:3;top:8px;left:8px;display:flex;gap:2px;padding:3px;border:1px solid #404951;border-radius:3px;background:#252b31cc}.of-view-tools button{width:26px;height:25px;border:0;background:transparent;color:#bfc7ce}.of-view-tools span{width:1px;background:#515a62}.of-scene-label{position:absolute;top:12px;right:14px;display:flex;flex-direction:column;text-align:right;text-shadow:0 1px 2px #000}.of-scene-label span{color:#9da7af}.of-model{position:absolute;inset:0;perspective:700px;transform-style:preserve-3d}.of-floor{position:absolute;left:9%;right:9%;bottom:17%;height:45%;transform:rotateX(68deg);background-image:linear-gradient(#50606b55 1px,transparent 1px),linear-gradient(90deg,#50606b55 1px,transparent 1px);background-size:28px 28px;border-radius:50%;opacity:.75}.of-body{position:absolute;left:31%;top:38%;width:38%;height:20%;transform:skewX(-9deg) rotate(-4deg);border:2px solid #7ed1f0;background:linear-gradient(155deg,#56b6d8,#176481 58%,#0b3548);box-shadow:inset 0 0 24px #b2ecff55,0 24px 38px #0009;clip-path:polygon(3% 40%,18% 23%,57% 16%,72% 1%,88% 5%,99% 42%,96% 80%,11% 91%,0 69%)}.of-cabin{position:absolute;left:54%;top:-39%;width:29%;height:55%;border:2px solid #75c9e8;background:#234f62;clip-path:polygon(8% 100%,25% 0,75% 0,100% 100%)}.of-wheel{position:absolute;width:36px;height:36px;border:5px solid #12171b;border-radius:50%;background:#3b454c;box-shadow:inset 0 0 0 4px #69757d}.of-wheel.w1{left:14%;bottom:-13%}.of-wheel.w2{right:12%;bottom:-7%}.of-wheel.w3{left:18%;top:73%;transform:scale(.72)}.of-wheel.w4{right:16%;top:70%;transform:scale(.72)}.of-axis{position:absolute;left:20px;bottom:18px;width:55px;height:55px}.of-axis b{position:absolute;font-size:10px}.of-axis:before,.of-axis:after{content:"";position:absolute;left:25px;bottom:15px;transform-origin:left center}.of-axis:before{width:30px;border-top:2px solid #e75656;transform:rotate(-8deg)}.of-axis:after{width:28px;border-top:2px solid #5cc86f;transform:rotate(-128deg)}.of-axis .x{right:0;bottom:7px;color:#ef6d6d}.of-axis .y{left:0;top:2px;color:#6fd47e}.of-axis .z{left:27px;top:0;color:#69aef0}.of-legend{position:absolute;right:13px;bottom:13px;min-width:135px;padding:9px;border:1px solid #4c555dcc;border-radius:3px;background:#1b2025d9}.of-legend>span{display:block;margin-bottom:6px;color:#98a2aa}.of-legend div{display:flex;align-items:center;gap:7px;margin:4px 0}.of-legend i{width:11px;height:11px;background:#3fa8d2}.of-legend div:last-child i{background:#6c747b}.of-bottom-panel{min-height:0;border-top:1px solid #11161a;background:#20262b}.of-bottom-tabs{height:31px;display:flex;align-items:center;border-bottom:1px solid #171b20;background:#2b3137}.of-bottom-tabs button{height:100%;padding:0 12px;border:0;background:transparent;color:#9fa8b0}.of-bottom-tabs button.active{color:white;border-bottom:2px solid #42abe5}.of-bottom-tabs span{flex:1}.of-bottom-tabs em{padding:1px 5px;border-radius:8px;background:#3a4249;font-style:normal}.of-bottom-panel pre{margin:0;padding:10px 13px;color:#aeb8c0;font:11px/1.55 ui-monospace,monospace}.of-bottom-panel pre span{color:#58b9ec}.of-object-heading{display:flex;align-items:center;gap:10px;padding:12px;border-bottom:1px solid #171b20}.of-object-heading small{display:block;color:#818c95}.of-object-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:4px;background:#315774;color:#70c7f3}.of-property-tabs{display:flex;border-bottom:1px solid #171b20}.of-property-tabs button{flex:1;height:31px;border:0;background:#252b31;color:#939da5}.of-property-tabs button.active{color:white;border-bottom:2px solid #43abe4}.of-property-group{border-bottom:1px solid #171b20}.of-property-group>button{width:100%;height:30px;display:flex;align-items:center;gap:7px;border:0;background:#30363d;color:#d7dde2;text-align:left}.of-property-group>button i{font-style:normal}.of-property-group label{min-height:34px;display:grid;grid-template-columns:46% 54%;align-items:center;padding:3px 9px;border-top:1px solid #30363d;color:#9da7af}.of-property-group input,.of-property-group select{width:100%;height:25px;border:1px solid #4a535b;background:#1e2328;color:#dce2e7;padding:0 5px}.of-value{color:#d9e0e5;text-align:right}.of-good{color:#61d486;text-align:right}.of-vector{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}.of-property-actions{margin-top:auto;display:flex;justify-content:flex-end;gap:7px;padding:9px;border-top:1px solid #171b20}.of-property-actions button{height:29px;padding:0 14px;border:1px solid #4a535b;border-radius:3px;background:#30373e;color:#d5dce1}.of-property-actions .primary-button{background:#2179a9;border-color:#328fc0}@media(max-width:1050px){.of-main-grid{grid-template-columns:210px minmax(420px,1fr)}.of-properties-panel{display:none}}


/* OpenFOAM V1 · native Prosolve visual language */
.prosolve-of{--of-bg:var(--bg,#07111f);--of-panel:rgba(10,25,42,.94);--of-panel-2:rgba(14,33,52,.96);--of-border:rgba(104,154,194,.22);--of-accent:#22b8f0;--of-accent-soft:rgba(34,184,240,.14);--of-text:#dcebf5;--of-muted:#8198aa;background:linear-gradient(180deg,#081421 0%,#07111c 100%);color:var(--of-text)}
.prosolve-of .of-module-header{height:48px;display:grid;grid-template-columns:220px 1fr auto;align-items:center;gap:16px;padding:0 14px;border-bottom:1px solid var(--of-border);background:linear-gradient(180deg,rgba(14,34,53,.98),rgba(8,23,38,.98));box-shadow:0 8px 24px #0003}
.of-module-brand{display:flex;align-items:center;gap:10px}.of-module-mark{display:grid;place-items:center;width:30px;height:30px;border:1px solid #25b9ee88;border-radius:9px;background:linear-gradient(145deg,#0d4263,#08283e);color:#66d5ff;font-weight:800;box-shadow:0 0 18px #16aee633}.of-module-brand div{display:flex;flex-direction:column}.of-module-brand strong{font-size:13px}.of-module-brand small{color:var(--of-muted);font-size:9px;letter-spacing:.12em;text-transform:uppercase}.of-module-menu{display:flex;align-self:stretch}.of-module-menu button{padding:0 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:#a9bfce;font-size:11px}.of-module-menu button:hover{color:white;background:var(--of-accent-soft);border-bottom-color:var(--of-accent)}.of-module-state{display:flex;align-items:center;gap:10px}.of-module-state>div{display:flex;flex-direction:column}.of-module-state strong{font-size:11px}.of-module-state small{color:var(--of-muted);font-size:9px}.of-module-state label{display:flex;align-items:center;gap:7px;color:var(--of-muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.of-module-state select{height:28px;border:1px solid var(--of-border);border-radius:7px;background:#091a29;color:#dcebf5;padding:0 24px 0 8px}.of-state-dot{width:8px;height:8px;border-radius:50%;background:#31d88a;box-shadow:0 0 10px #31d88a}
.of-workflow-tabs{height:39px;display:flex;align-items:end;padding:0 13px;gap:3px;border-bottom:1px solid var(--of-border);background:#081522}.of-workflow-tabs button{height:34px;padding:0 17px;border:1px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;background:transparent;color:#8ba2b3;font-size:11px;font-weight:600}.of-workflow-tabs button:hover{color:#d9f4ff;background:#0d2234}.of-workflow-tabs button.active{color:#70d7ff;background:#0e263a;border-color:var(--of-border);box-shadow:inset 0 2px #22b8f0}
.prosolve-of .of-commandbar{height:62px;display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--of-border);background:rgba(8,21,34,.92)}.of-command-group{position:relative;display:flex;align-items:center;gap:3px;padding:11px 10px 0 0;border-right:1px solid var(--of-border)}.of-command-group>span{position:absolute;top:-2px;left:4px;color:#59758a;font-size:8px;letter-spacing:.11em;text-transform:uppercase}.of-command-group button{min-width:44px;height:39px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border:1px solid transparent;border-radius:7px;background:transparent;color:#b8cfdd;font-size:15px}.of-command-group button small{font-size:8px;color:#7891a3}.of-command-group button:hover{border-color:var(--of-border);background:var(--of-accent-soft);color:#6bd7ff}.of-command-group .of-run{color:#37d98c}.of-command-status{margin-left:auto;display:grid;grid-template-columns:auto auto;gap:2px 8px;align-items:center;padding:5px 10px;border:1px solid var(--of-border);border-radius:9px;background:#081827}.of-command-status span{color:#6f8799;font-size:8px;text-transform:uppercase}.of-command-status b{font-size:9px;color:#e7b45f}.of-command-status b.done{color:#3ed994}
.prosolve-of .of-main-grid{height:calc(100% - 149px);grid-template-columns:258px minmax(480px,1fr) 300px;gap:8px;padding:8px;background:#06101a}.prosolve-panel{border:1px solid var(--of-border)!important;border-radius:11px;overflow:hidden;background:linear-gradient(180deg,rgba(12,28,44,.96),rgba(8,20,33,.98))!important;box-shadow:0 10px 28px #0003}.prosolve-of .of-panel-title{height:43px;padding:0 12px;background:linear-gradient(180deg,rgba(21,45,66,.92),rgba(12,30,47,.92));border-bottom:1px solid var(--of-border)}.of-panel-title>div{display:flex;flex-direction:column}.of-panel-title>div span{color:#4eaed8;font-size:8px;font-weight:700;letter-spacing:.13em}.of-panel-title>div strong{font-size:12px}.prosolve-of .of-tree-search{margin:9px;border-color:var(--of-border);border-radius:8px;background:#071827}.prosolve-of .of-tree-search input{height:30px}.prosolve-of .of-tree button{height:27px;border-radius:5px;color:#b9cedb}.prosolve-of .of-tree button:hover{background:rgba(35,184,240,.08)}.prosolve-of .of-tree button.selected{background:linear-gradient(90deg,rgba(25,160,214,.35),rgba(25,160,214,.13));box-shadow:inset 2px 0 #35c6ff;color:white}.prosolve-of .of-tree button.root{margin-bottom:3px}.of-tree button em{margin-left:auto;min-width:17px;height:17px;display:grid;place-items:center;border-radius:9px;background:#3a2d18;color:#ffc66b;font-size:8px;font-style:normal}.of-tree button em.ok{background:#123b31;color:#54e3a4}.prosolve-of .of-tree-footer{border-top-color:var(--of-border);background:#081a2a}
.prosolve-of .of-center{grid-template-rows:36px minmax(300px,1fr) 144px;gap:0;border:1px solid var(--of-border);border-radius:11px;overflow:hidden;background:#07131f;box-shadow:0 10px 28px #0003}.prosolve-of .of-tabs{background:#0a1c2b;border-bottom-color:var(--of-border)}.prosolve-of .of-tabs button{height:34px;background:transparent;border-right-color:var(--of-border);color:#7690a2}.prosolve-of .of-tabs button.active{background:#0c2538;color:#e5f8ff;border-top-color:#21b9f1}.prosolve-of .of-viewport{background:radial-gradient(circle at 50% 42%,#15344a 0,#0b2031 48%,#06121d 100%)}.prosolve-of .of-view-tools{border-color:var(--of-border);border-radius:8px;background:rgba(7,24,38,.9);box-shadow:0 8px 20px #0004}.of-scene-label{padding:8px 10px;border:1px solid var(--of-border);border-radius:8px;background:rgba(7,24,38,.72);text-align:left}.of-scene-label>span{color:#3bbbe9;font-size:8px;letter-spacing:.12em}.of-scene-label strong{font-size:11px}.of-scene-label small{color:#7f98a9}.prosolve-of .of-legend{border-color:var(--of-border);border-radius:8px;background:rgba(7,24,38,.84)}.prosolve-of .of-legend>span{color:#42bde9;font-size:8px;letter-spacing:.12em}.of-view-status{position:absolute;left:50%;bottom:9px;display:flex;gap:12px;transform:translateX(-50%);padding:5px 10px;border:1px solid var(--of-border);border-radius:12px;background:rgba(7,24,38,.75);color:#7894a7;font-size:8px}.prosolve-of .of-bottom-panel{background:#081522;border-top-color:var(--of-border)}.prosolve-of .of-bottom-tabs{background:#0c2132;border-bottom-color:var(--of-border)}.prosolve-of .of-bottom-tabs button.active{border-bottom-color:#21b9f1}.prosolve-of .of-bottom-panel pre{color:#94aabb}.prosolve-of .of-bottom-panel pre span{color:#55cfff}.prosolve-of .okline{color:#3ed994!important}.prosolve-of .pendingline{color:#f0b65f!important}
.prosolve-of .of-properties-panel{min-height:0}.prosolve-of .of-object-heading{border-bottom-color:var(--of-border);background:#0a1d2c}.prosolve-of .of-object-icon{background:linear-gradient(145deg,#0d5275,#0b3049);color:#67d5ff;box-shadow:0 0 14px #1caadd22}.of-object-ready{margin-left:auto;padding:3px 6px;border:1px solid #2fc88755;border-radius:10px;background:#10372e;color:#53e1a1;font-size:7px;font-weight:800;letter-spacing:.08em}.prosolve-of .of-property-tabs{border-bottom-color:var(--of-border);background:#081a29}.prosolve-of .of-property-tabs button.active{border-bottom-color:#22b8f0}.of-property-scroll{flex:1;overflow:auto}.prosolve-of .of-property-group{border-bottom-color:var(--of-border)}.prosolve-of .of-property-group>button{background:#0e2638;color:#cde2ee}.prosolve-of .of-property-group label{border-top-color:rgba(104,154,194,.13);color:#819cad}.prosolve-of .of-property-group input,.prosolve-of .of-property-group select{border-color:var(--of-border);border-radius:6px;background:#071827;color:#dcebf5}.prosolve-of .of-property-actions{border-top-color:var(--of-border);background:#081a29}.prosolve-of .of-property-actions button{border-color:var(--of-border);border-radius:7px;background:#0d2638}.prosolve-of .of-property-actions .primary-button{background:linear-gradient(180deg,#179bd3,#1276a6);border-color:#32bff4;color:white;box-shadow:0 0 16px #1aaee533}
@media(max-width:1150px){.prosolve-of .of-main-grid{grid-template-columns:225px minmax(420px,1fr)}.prosolve-of .of-properties-panel{display:none}.of-command-status{display:none}.of-module-state>div{display:none}}


/* OpenFOAM V2 · same system as NEMOH */
.openfoam-workflow-shell{height:100%;min-height:0}.openfoam-workflow-shell .nemoh-workflow-content{min-width:0}.openfoam-workflow-shell .nemoh-module-tabs{overflow-x:auto}.openfoam-workflow-shell .nemoh-module-tabs button{white-space:nowrap}.of-nemoh-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:10px;min-height:0;padding:10px}.of-setup-card,.of-view-card{min-height:0}.of-setup-card{overflow:auto}.of-part-list{display:grid;gap:7px;padding:12px;border-bottom:1px solid var(--border)}.of-part-list button{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:10px;background:rgba(8,24,39,.62);color:var(--text);text-align:left}.of-part-list button.active{border-color:rgba(44,174,233,.48);background:rgba(23,110,164,.16)}.of-part-list button>span:nth-child(2){display:flex;flex-direction:column}.of-part-list small{color:var(--muted);font-size:9px}.of-part-list em{color:#8ee7bc;font-size:9px;font-style:normal}.of-part-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:rgba(44,174,233,.14);color:#68ccf7;font-size:9px;font-weight:800}.of-compact-form{padding:10px}.of-view-card{display:flex!important;flex-direction:column}.of-view-grid{grid-template-columns:minmax(0,1fr) 270px}.of-native-viewport{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 35%,#315f78 0,#1d465e 46%,#12344a 100%)}.of-native-floor{position:absolute;left:8%;right:8%;bottom:12%;height:45%;transform:perspective(650px) rotateX(67deg);background-image:linear-gradient(rgba(168,216,239,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(168,216,239,.16) 1px,transparent 1px);background-size:28px 28px}.of-native-body{position:absolute;left:31%;top:39%;width:38%;height:19%;transform:skewX(-8deg);border:2px solid #91dcfb;background:linear-gradient(155deg,#56b7da,#17627f 60%,#0d3f58);box-shadow:inset 0 0 22px #d0f4ff44,0 22px 36px #0007;clip-path:polygon(2% 39%,18% 21%,57% 15%,72% 0,88% 4%,100% 43%,96% 82%,10% 91%,0 69%)}.of-native-body div{position:absolute;left:54%;top:-38%;width:29%;height:55%;border:2px solid #91dcfb;background:#214d62;clip-path:polygon(8% 100%,25% 0,76% 0,100% 100%)}.of-native-axis{position:absolute;left:18px;bottom:17px;display:flex;gap:7px}.of-native-axis b{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(5,17,29,.66);font-size:9px}.of-native-axis b:nth-child(1){color:#ff8b8b}.of-native-axis b:nth-child(2){color:#84dfa0}.of-native-axis b:nth-child(3){color:#83bfff}.of-native-overlay{position:absolute;right:14px;top:14px;display:flex;flex-direction:column;padding:9px 11px;border:1px solid rgba(166,218,244,.23);border-radius:10px;background:rgba(6,21,34,.7)}.of-native-overlay span{color:#67c8ef;font-size:8px;text-transform:uppercase;letter-spacing:.1em}.of-native-overlay small{color:var(--muted);font-size:9px}.of-property-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;padding:10px}.of-property-cards article{display:flex;flex-direction:column;padding:10px;border:1px solid var(--border);border-radius:10px;background:rgba(8,24,39,.54)}.of-property-cards span{color:var(--muted);font-size:9px}.of-property-cards strong{font-size:16px}.stack-mesh-property-accordions details{border-top:1px solid var(--border)}.stack-mesh-property-accordions summary{padding:11px 12px;cursor:pointer;font-weight:700}.stack-mesh-property-accordions details div{display:flex;justify-content:space-between;padding:7px 12px;color:var(--muted)}.stack-mesh-property-accordions details div strong{color:var(--text)}.of-ready{color:#9aebc2!important}.of-placeholder-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px}.of-placeholder-grid article{display:flex;flex-direction:column;gap:4px;padding:16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow)}.of-placeholder-grid article span{color:#68c8ef;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.of-placeholder-grid article small{color:var(--muted)}.of-run-panel{margin:12px}.of-results-empty{min-height:320px;display:grid;place-content:center;text-align:center;color:var(--muted)}.of-results-empty strong{color:var(--text);font-size:18px}.of-results-empty span{margin-top:6px}.openfoam-active .topbar .brand-subtitle{text-transform:uppercase}@media(max-width:1200px){.of-nemoh-layout{grid-template-columns:1fr}.of-view-card{min-height:540px}.of-view-grid{grid-template-columns:minmax(0,1fr) 240px}}@media(max-width:850px){.of-view-grid{grid-template-columns:1fr}.stack-mesh-properties{display:none}.of-placeholder-grid{grid-template-columns:1fr}}


/* Retractable STACK rail */
.stack-app-rail{transition:width .2s ease,padding .2s ease}
.stack-app-rail-header{display:grid;grid-template-columns:1fr 22px;align-items:center;min-height:27px;gap:2px}
.stack-app-rail-header .stack-app-rail-title{padding-left:22px}
.stack-app-rail-toggle{display:grid;place-items:center;width:22px;height:22px;padding:0;border:1px solid rgba(91,160,207,.22);border-radius:7px;background:rgba(11,29,47,.88);color:#86b8d6;font-size:16px;line-height:1;cursor:pointer;transition:.16s ease}
.stack-app-rail-toggle:hover{border-color:rgba(61,188,244,.46);background:rgba(31,82,118,.34);color:#e8f8ff}
.workspace.stack-app-mode.stack-rail-collapsed{grid-template-columns:46px minmax(0,1fr)}
.stack-app-rail.collapsed{padding-inline:4px}
.stack-app-rail.collapsed .stack-app-rail-header{grid-template-columns:1fr}
.stack-app-rail.collapsed .stack-app-rail-title{display:none}
.stack-app-rail.collapsed .stack-app-rail-toggle{margin-inline:auto}
.stack-app-rail.collapsed .stack-app-button{min-height:48px;padding:6px 1px;gap:0;border-radius:9px}
.stack-app-rail.collapsed .stack-app-glyph{width:30px;height:30px;border-radius:8px}
.stack-app-rail.collapsed .stack-app-button>span:last-of-type{display:none}
.stack-app-rail.collapsed .stack-app-ready{top:5px;right:4px}
.stack-app-rail.collapsed .stack-app-button.active{box-shadow:inset 2px 0 0 #45c2f3,0 6px 14px rgba(0,0,0,.14)}


/* Full STACK collapse correction */
.workspace.stack-app-mode{position:relative;transition:grid-template-columns .2s ease}
.workspace.stack-app-mode.stack-rail-collapsed{grid-template-columns:0 minmax(0,1fr)}
.stack-app-rail{overflow:hidden;transition:width .2s ease,min-width .2s ease,padding .2s ease,border-width .2s ease,opacity .14s ease,transform .2s ease}
.stack-app-rail.collapsed{width:0!important;min-width:0!important;padding:0!important;border-width:0!important;opacity:0;transform:translateX(-18px);pointer-events:none}
.stack-app-rail-reopen{position:absolute;z-index:40;left:6px;top:10px;display:none;place-items:center;width:28px;height:42px;padding:0;border:1px solid rgba(77,177,228,.42);border-radius:0 10px 10px 0;background:linear-gradient(180deg,rgba(13,51,78,.98),rgba(7,28,45,.98));color:#78d6ff;font-size:20px;line-height:1;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.28),0 0 14px rgba(34,184,240,.14)}
.stack-app-rail-reopen.visible{display:grid}
.stack-app-rail-reopen:hover{border-color:#4ac8ff;background:linear-gradient(180deg,rgba(18,72,107,.98),rgba(9,39,61,.98));color:#fff}
.workspace.stack-app-mode.stack-rail-collapsed .stack-app-content{grid-column:2;width:100%;min-width:0}


/* OpenFOAM modular sidebar: full-height cards + complete collapse */
.openfoam-workflow-shell{position:relative;transition:grid-template-columns .2s ease}
.openfoam-workflow-sidebar{overflow:hidden!important}
.openfoam-workflow-sidebar .nemoh-workflow-title{position:relative;flex:0 0 auto;padding-right:34px!important}
.of-sidebar-toggle{position:absolute;right:2px;top:2px;display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:8px;background:rgba(7,22,35,.8);color:#8ec9e8;font-size:18px;cursor:pointer}
.of-sidebar-toggle:hover{border-color:rgba(53,167,255,.55);color:#fff;background:rgba(18,72,111,.38)}
.openfoam-workflow-sidebar .nemoh-workflow-groups{display:grid;grid-template-rows:repeat(4,minmax(0,1fr));gap:9px;flex:1;min-height:0;width:100%}
.openfoam-workflow-sidebar .nemoh-workflow-group{width:100%;height:100%;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:16px;border:1px solid var(--border);border-radius:12px;background:rgba(5,18,29,.45);color:var(--text);text-align:left;cursor:pointer}
.openfoam-workflow-sidebar .nemoh-workflow-group:hover{border-color:var(--border-strong);background:rgba(15,39,61,.72)}
.openfoam-workflow-sidebar .nemoh-workflow-group.active{border-color:rgba(53,167,255,.58);background:rgba(18,72,111,.38);box-shadow:inset 3px 0 0 #35a7ff}
.openfoam-workflow-sidebar .nemoh-workflow-group strong{font-size:13px}
.openfoam-workflow-sidebar .nemoh-workflow-group small{margin-top:5px;color:var(--muted);line-height:1.35}
.openfoam-workflow-shell.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr);gap:0}
.openfoam-workflow-sidebar.collapsed{width:0;min-width:0;padding:0;border-width:0;opacity:0;transform:translateX(-18px);pointer-events:none}
.of-sidebar-reopen{position:absolute;z-index:30;left:0;top:14px;display:none;place-items:center;width:28px;height:44px;padding:0;border:1px solid rgba(77,177,228,.42);border-left:0;border-radius:0 10px 10px 0;background:linear-gradient(180deg,rgba(13,51,78,.98),rgba(7,28,45,.98));color:#78d6ff;font-size:20px;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.28)}
.of-sidebar-reopen.visible{display:grid}
.of-sidebar-reopen:hover{border-color:#4ac8ff;color:#fff}
.openfoam-workflow-shell.sidebar-collapsed>.nemoh-workflow-content{grid-column:2;min-width:0;width:100%}
@media(max-width:1000px){.openfoam-workflow-sidebar .nemoh-workflow-groups{grid-template-rows:none;grid-template-columns:repeat(2,minmax(0,1fr))}.openfoam-workflow-sidebar .nemoh-workflow-group{min-height:92px}.openfoam-workflow-shell.sidebar-collapsed{grid-template-columns:1fr}.openfoam-workflow-shell.sidebar-collapsed>.nemoh-workflow-content{grid-column:1}}


/* OpenFOAM shell correction: collapse the whole left block, no gray gutter */
.openfoam-workflow-shell{
  display:grid!important;
  grid-template-columns:264px minmax(0,1fr)!important;
  grid-template-rows:minmax(0,1fr)!important;
  gap:0!important;
  margin:0!important;
  padding:0!important;
  min-height:0!important;
  height:100%!important;
  align-items:stretch!important;
  overflow:hidden!important;
  border:1px solid var(--border);
  border-radius:16px;
  background:linear-gradient(180deg,rgba(12,31,48,.96),rgba(7,20,32,.96));
}
.openfoam-workflow-shell>.openfoam-workflow-sidebar{
  grid-column:1!important;
  grid-row:1!important;
  width:auto!important;
  min-width:0!important;
  height:100%!important;
  min-height:0!important;
  margin:0!important;
  padding:14px 12px!important;
  border:0!important;
  border-right:1px solid var(--border)!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:linear-gradient(180deg,rgba(12,31,48,.98),rgba(7,20,32,.98))!important;
  overflow:hidden!important;
}
.openfoam-workflow-shell>.nemoh-workflow-content{
  grid-column:2!important;
  grid-row:1!important;
  width:auto!important;
  min-width:0!important;
  height:100%!important;
  min-height:0!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:auto!important;
}
.openfoam-workflow-shell.sidebar-collapsed{
  grid-template-columns:0 minmax(0,1fr)!important;
}
.openfoam-workflow-shell.sidebar-collapsed>.openfoam-workflow-sidebar{
  width:0!important;
  min-width:0!important;
  height:100%!important;
  padding:0!important;
  border:0!important;
  opacity:0!important;
  transform:translateX(-100%)!important;
  pointer-events:none!important;
}
.openfoam-workflow-shell.sidebar-collapsed>.nemoh-workflow-content{
  grid-column:2!important;
  width:100%!important;
}
.openfoam-workflow-shell .of-sidebar-reopen{
  left:0!important;
  top:14px!important;
}
.openfoam-workflow-sidebar .nemoh-workflow-groups{
  height:100%!important;
  min-height:0!important;
}
@media(max-width:1000px){
  .openfoam-workflow-shell{grid-template-columns:220px minmax(0,1fr)!important}
  .openfoam-workflow-shell.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)!important}
  .openfoam-workflow-shell.sidebar-collapsed>.nemoh-workflow-content{grid-column:2!important}
}


/* Restore original compact OpenFOAM workflow cards */
.openfoam-workflow-sidebar .nemoh-workflow-groups{
  display:grid!important;
  grid-template-rows:none!important;
  grid-auto-rows:auto!important;
  gap:8px!important;
  flex:0 0 auto!important;
  height:auto!important;
  min-height:0!important;
  width:100%!important;
  margin-top:14px!important;
}
.openfoam-workflow-sidebar .nemoh-workflow-group{
  display:grid!important;
  grid-template-rows:auto auto!important;
  gap:3px!important;
  width:100%!important;
  height:auto!important;
  min-height:64px!important;
  align-items:start!important;
  justify-content:stretch!important;
  padding:13px 14px!important;
  border:1px solid var(--line-soft,#283d52)!important;
  border-radius:10px!important;
  background:rgba(9,20,33,.72)!important;
  color:var(--text-main,#e9f1f8)!important;
  text-align:left!important;
  cursor:pointer!important;
}
.openfoam-workflow-sidebar .nemoh-workflow-group:hover{
  border-color:var(--border-strong)!important;
  background:rgba(15,39,61,.72)!important;
}
.openfoam-workflow-sidebar .nemoh-workflow-group.active{
  background:rgba(25,43,65,.95)!important;
  border-color:#526c87!important;
  box-shadow:inset 3px 0 #ff922e!important;
}
.openfoam-workflow-sidebar .nemoh-workflow-group strong{
  font-size:13px!important;
  line-height:1.25!important;
}
.openfoam-workflow-sidebar .nemoh-workflow-group small{
  margin-top:0!important;
  font-size:10px!important;
  line-height:1.35!important;
  color:var(--text-muted,#8498ac)!important;
}


/* OpenFOAM 16-step guided run configuration */
.of-flow-shell{display:grid;grid-template-columns:300px minmax(0,1fr);height:100%;min-height:0;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:linear-gradient(180deg,rgba(10,27,43,.98),rgba(6,18,30,.98))}.of-flow-sidebar{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border);background:rgba(7,20,33,.95)}.of-flow-title{padding:16px 16px 12px;border-bottom:1px solid var(--border)}.of-flow-title span{display:block;color:#55c7ef;font-size:9px;letter-spacing:.12em;text-transform:uppercase}.of-flow-title strong{font-size:15px}.of-flow-steps{display:grid;gap:5px;padding:9px;overflow:auto}.of-flow-step{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:9px;min-height:54px;padding:8px 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text);text-align:left;cursor:pointer}.of-flow-step:hover{background:rgba(27,75,108,.26);border-color:var(--border)}.of-flow-step.active{background:rgba(25,72,105,.48);border-color:rgba(61,184,235,.45);box-shadow:inset 3px 0 #35b7ef}.of-flow-step>span{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:rgba(51,145,191,.15);color:#68ccef;font-size:10px;font-weight:800}.of-flow-step div{display:flex;flex-direction:column}.of-flow-step strong{font-size:11px}.of-flow-step small{color:var(--muted);font-size:8px;line-height:1.3}.of-flow-step em{font-size:7px;font-style:normal;color:#d5a758}.of-flow-step:first-child em{color:#58d99e}.of-flow-content{min-width:0;min-height:0;overflow:auto;background:rgba(7,18,29,.72)}.of-flow-content .nemoh-workflow-panel{min-height:100%}.of-step-grid{display:grid;grid-template-columns:minmax(320px,.75fr) minmax(420px,1.25fr);gap:12px;padding:12px}.of-case-tree pre{margin:0;padding:18px;color:#9fc5da;font:12px/1.7 ui-monospace,monospace}.of-view-card{min-height:470px}.of-boundary-table{margin:12px;border:1px solid var(--border);border-radius:12px;overflow:hidden}.of-boundary-table>div{display:grid;grid-template-columns:1fr 1.2fr 1.5fr 1.5fr 1.5fr;gap:8px;padding:11px 13px;border-bottom:1px solid var(--border);align-items:center}.of-boundary-table>div:last-child{border-bottom:0}.of-boundary-table .head{background:rgba(18,48,71,.72);color:#67caef;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.of-boundary-table span{color:var(--muted)}.of-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:14px}.of-checklist div{display:flex;justify-content:space-between;align-items:center;padding:13px;border:1px solid var(--border);border-radius:10px;background:rgba(8,24,39,.55)}.of-checklist em{font-style:normal;color:#d6a85e;font-size:9px}@media(max-width:1150px){.of-flow-shell{grid-template-columns:240px minmax(0,1fr)}.of-step-grid{grid-template-columns:1fr}}@media(max-width:850px){.of-flow-shell{grid-template-columns:1fr}.of-flow-sidebar{display:none}.of-boundary-table>div{grid-template-columns:1fr 1fr}.of-boundary-table .head span:nth-child(n+3),.of-boundary-table>div span:nth-child(n+3){display:none}.of-checklist{grid-template-columns:1fr}}


/* OpenFOAM live backend status */
.of-flow-step.completed{border-color:rgba(52,211,153,.28);background:rgba(18,78,61,.20)}
.of-flow-step.completed>span{background:rgba(31,183,120,.16);color:#73e2b0}
.of-flow-step.completed em{color:#66dda8!important}
.nemoh-step-status.of-status-completed{border-color:rgba(45,201,135,.35)!important;background:rgba(18,87,64,.26)!important;color:#7be4b5!important}
.of-checklist em.completed{color:#66dda8!important}.of-checklist em.warning{color:#f1b860!important}
.of-results-empty.of-results-summary{min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:16px;text-align:left}
.of-result-metric{display:flex;flex-direction:column;padding:18px;border:1px solid var(--border);border-radius:12px;background:rgba(8,27,43,.68)}
.of-result-metric span{color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.09em}.of-result-metric strong{margin-top:5px;color:var(--text);font-size:20px}
@media(max-width:900px){.of-results-empty.of-results-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* Real OpenFOAM configuration presentation */
.of-config-source{display:flex;align-items:center;gap:10px;margin:10px 12px 0;padding:8px 11px;border:1px solid rgba(66,170,218,.23);border-radius:9px;background:rgba(8,31,48,.58)}
.of-config-source span{color:#5fc7ed;font-size:8px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.of-config-source code{color:#afc7d6;font-size:10px}
.of-config-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 12px 12px}.of-config-facts article{display:flex;flex-direction:column;padding:11px;border:1px solid var(--border);border-radius:10px;background:rgba(7,24,38,.6)}.of-config-facts span{color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.08em}.of-config-facts strong{margin-top:4px;color:var(--text);font-size:12px}@media(max-width:900px){.of-config-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* Empty OpenFOAM project state */
.of-flow-content .of-unconfigured .of-config-facts{display:none!important}
.of-flow-content .of-unconfigured .of-config-source code{color:var(--muted)}
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .nemoh-section-form,
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .of-placeholder-grid,
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .of-boundary-table,
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .of-checklist,
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .nemoh-run-inline,
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .nemoh-results-view-tabs,
.of-empty-project [data-of-panel]:not([data-of-panel="case"]) .of-results-empty{display:none!important}
.of-empty-project [data-of-panel]:not([data-of-panel="case"])::after{content:"Create the OpenFOAM case in Step 01 before configuring this stage.";display:grid;place-items:center;min-height:260px;margin:14px;border:1px dashed var(--border);border-radius:12px;color:var(--muted);background:rgba(7,20,32,.42)}


/* Hide stale result/preview structures while a step is not configured */
.of-flow-content .of-unconfigured .of-placeholder-grid,
.of-flow-content .of-unconfigured .of-boundary-table,
.of-flow-content .of-unconfigured .of-config-facts,
.of-flow-content .of-unconfigured .of-view-card{display:none!important}
.of-flow-content .of-unconfigured .of-config-source{opacity:.7}

/* MoorPy stack module */
body.moorpy-active #stackNemohView,body.moorpy-active #stackWaveResponseView,body.moorpy-active #stackOpenFoamView{display:none!important}
body.moorpy-active #stackMoorPyView{display:block!important}
.stack-moorpy-view{width:100%;height:100%;min-height:0;overflow:auto}
.moorpy-workflow-shell{min-height:100%;height:auto}
.moorpy-workflow-shell .nemoh-workflow-content{overflow:auto}
.moorpy-workflow-shell fieldset{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.moorpy-save-footer{position:sticky;bottom:0;background:var(--panel,#111b2a);z-index:3}
#moorpySif{font-size:11px;overflow-wrap:anywhere}
.moorpy-viewer-card{margin-top:14px;border:1px solid #24435a;border-radius:12px;overflow:hidden;background:#081522}
.moorpy-viewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;border-bottom:1px solid #20384b;background:#0b1b29}
.moorpy-viewer-toolbar div{display:flex;flex-direction:column;gap:2px}.moorpy-viewer-toolbar small{color:#8499ab}
.moorpy-viewer{height:430px;min-height:320px;position:relative}.moorpy-viewer-canvas{display:block;width:100%;height:100%}
.moorpy-viewer-legend{display:flex;gap:18px;padding:8px 12px;border-top:1px solid #20384b;color:#9fb2c2;font-size:12px}
.moorpy-viewer-legend span{display:flex;align-items:center;gap:6px}.moorpy-viewer-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
.anchor-dot{background:#ff5d5d}.fairlead-dot{background:#65e6a3}.line-dot{background:#ffa13d}
@media(max-width:900px){.moorpy-viewer{height:340px}}

/* MoorPy: make rail, workspace and 3D card consume the full parent height. */
body.moorpy-active .workspace{
  align-items:stretch!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active .stack-app-rail,
body.moorpy-active .stack-app-workspace,
body.moorpy-active #stackMoorPyView,
body.moorpy-active .moorpy-workflow-shell,
body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-sidebar,
body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-content{
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
  box-sizing:border-box!important;
}
body.moorpy-active .stack-app-workspace,
body.moorpy-active #stackMoorPyView{
  overflow:hidden!important;
}
body.moorpy-active .moorpy-workflow-shell{
  display:grid!important;
  grid-template-columns:250px minmax(0,1fr)!important;
  align-items:stretch!important;
  margin:0!important;
  gap:14px!important;
}
body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-sidebar{
  overflow:auto!important;
}
body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-content{
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
body.moorpy-active #moorpyConfigForm{
  display:flex!important;
  flex:1 1 auto!important;
  min-height:0!important;
  flex-direction:column!important;
}
body.moorpy-active #moorpyConfigForm>[data-moorpy-panel].active{
  display:flex!important;
  flex:1 1 auto!important;
  min-height:0!important;
  flex-direction:column!important;
  overflow:auto!important;
}
body.moorpy-active #moorpyConfigForm>[data-moorpy-panel="layout"].active{
  overflow:hidden!important;
}
body.moorpy-active [data-moorpy-panel="layout"] .moorpy-viewer-card{
  display:flex!important;
  flex:1 1 auto!important;
  min-height:0!important;
  flex-direction:column!important;
}
body.moorpy-active [data-moorpy-panel="layout"] .moorpy-viewer{
  flex:1 1 auto!important;
  height:auto!important;
  min-height:280px!important;
}
body.moorpy-active .moorpy-save-footer{
  flex:0 0 auto!important;
  margin-top:10px!important;
}
@media(max-width:1000px){
  body.moorpy-active .workspace{overflow:auto!important}
  body.moorpy-active .moorpy-workflow-shell{grid-template-columns:1fr!important;height:auto!important}
  body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-sidebar,
  body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-content{height:auto!important;max-height:none!important}
  body.moorpy-active [data-moorpy-panel="layout"] .moorpy-viewer{height:420px!important}
}

/* MoorPy layout: the 3D viewer is the only visible card. */
body.moorpy-active .moorpy-workflow-shell>.nemoh-workflow-content:has([data-moorpy-panel="layout"].active){
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
body.moorpy-active #moorpyConfigForm:has([data-moorpy-panel="layout"].active){
  padding:0!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
body.moorpy-active #moorpyConfigForm:has([data-moorpy-panel="layout"].active) .moorpy-save-footer{
  display:none!important;
}
body.moorpy-active [data-moorpy-panel="layout"].active{
  padding:0!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
body.moorpy-active [data-moorpy-panel="layout"] .moorpy-viewer-card{
  margin:0!important;
  height:100%!important;
}
.moorpy-viewer-tools{display:flex;align-items:center;gap:10px}.moorpy-viewer-tools .stack-scene-toggles{display:flex;align-items:center;gap:8px}.moorpy-viewer-tools .stack-scene-toggles label{height:30px;padding:0 10px;white-space:nowrap}

/* MoorPy viewer toolbar: compact, single horizontal row. */
body.moorpy-active .moorpy-viewer-toolbar{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:16px!important;
  min-height:44px!important;
}
body.moorpy-active .moorpy-viewer-toolbar>div:first-child{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  gap:2px!important;
  min-width:0!important;
}
body.moorpy-active .moorpy-viewer-toolbar .moorpy-viewer-tools{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  flex:0 0 auto!important;
}
body.moorpy-active .moorpy-viewer-toolbar .stack-scene-toggles{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:8px!important;
}
body.moorpy-active .moorpy-viewer-toolbar .stack-scene-toggles label{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
  height:30px!important;
  padding:0 10px!important;
  margin:0!important;
  white-space:nowrap!important;
}
body.moorpy-active .moorpy-viewer-toolbar .stack-scene-toggles input{
  margin:0!important;
}
body.moorpy-active #moorpyFitView{
  height:30px!important;
  margin:0!important;
  white-space:nowrap!important;
}

/* MoorPy dynamic line/component editor */
body.moorpy-active [data-moorpy-panel="line"].active{display:flex!important;flex-direction:column!important;gap:14px!important;padding:12px!important;overflow:auto!important}
.moorpy-lines-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.moorpy-lines-header>div{display:flex;flex-direction:column;gap:3px}.moorpy-lines-header span{color:#5ec8ff;font-size:10px;letter-spacing:.12em}.moorpy-lines-header strong{font-size:16px}.moorpy-lines-header small{color:#8499ab}
.moorpy-lines-editor{display:flex;flex-direction:column;gap:14px}.moorpy-line-card{border:1px solid #24435a;border-radius:12px;background:#081522;overflow:hidden}.moorpy-line-card>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:#0b1b29;border-bottom:1px solid #20384b}.moorpy-line-title{display:flex;align-items:center;gap:10px;min-width:0}.moorpy-line-index{font-size:10px;letter-spacing:.11em;color:#5ec8ff;white-space:nowrap}.moorpy-line-name{min-width:220px;font-weight:700}.moorpy-line-actions{display:flex;align-items:center;gap:8px}.moorpy-components{display:flex;flex-direction:column;gap:10px;padding:12px}.moorpy-component-card{border:1px solid #1c3548;border-radius:10px;background:#07121e;padding:10px}.moorpy-component-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.moorpy-component-heading strong{font-size:12px;color:#b9ccda}.moorpy-component-grid{display:grid;grid-template-columns:1.25fr .8fr repeat(5,minmax(120px,1fr));gap:8px}.moorpy-component-grid label{display:flex;flex-direction:column;gap:4px}.moorpy-component-grid label span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#8195a6}.moorpy-line-card>footer{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-top:1px solid #20384b;background:#091725}.moorpy-component-count{font-size:11px;color:#8499ab}.danger-button{height:30px;padding:0 10px;border:1px solid #653541;border-radius:7px;background:#24131a;color:#ff9baa;cursor:pointer}.icon-button{width:28px;height:28px;border:1px solid #354b5e;border-radius:7px;background:#102131;color:#b6c7d4;cursor:pointer;font-size:18px}.moorpy-lines-empty{display:flex;align-items:center;justify-content:center;min-height:180px;border:1px dashed #29475e;border-radius:12px;color:#8297a8;background:#07131f}
@media(max-width:1400px){.moorpy-component-grid{grid-template-columns:repeat(4,minmax(150px,1fr))}}@media(max-width:900px){.moorpy-lines-header,.moorpy-line-card>header{align-items:flex-start;flex-direction:column}.moorpy-component-grid{grid-template-columns:1fr 1fr}.moorpy-line-actions{width:100%}.moorpy-line-name{min-width:0;width:100%}}

/* MoorPy split workspace: properties left, 3D viewer right. */
body.moorpy-active [data-moorpy-panel="layout"].active{display:flex!important;flex:1 1 auto!important;min-height:0!important;padding:0!important;overflow:hidden!important}
.moorpy-split{--moorpy-left:38%;display:grid;grid-template-columns:minmax(320px,var(--moorpy-left)) 8px minmax(420px,1fr);width:100%;height:100%;min-height:0;overflow:hidden}
.moorpy-properties-pane,.moorpy-viewer-pane{height:100%;min-height:0;overflow:hidden}.moorpy-properties-pane{display:flex;flex-direction:column;border:1px solid #24435a;border-radius:12px 0 0 12px;background:#081522}.moorpy-viewer-pane{display:flex}.moorpy-properties-pane .moorpy-lines-header{flex:0 0 auto;padding:10px 12px;border-bottom:1px solid #20384b;background:#0b1b29}.moorpy-properties-pane .moorpy-lines-editor{flex:1 1 auto;min-height:0;overflow:auto;padding:10px}.moorpy-properties-pane .moorpy-line-card{border-radius:9px}.moorpy-properties-pane .moorpy-component-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.moorpy-properties-pane .moorpy-line-title{flex:1}.moorpy-properties-pane .moorpy-line-name{min-width:0;width:100%}.moorpy-properties-pane .moorpy-line-actions{gap:5px}.moorpy-properties-pane .moorpy-line-actions button{padding:0 7px;font-size:10px}
.moorpy-splitter{position:relative;cursor:col-resize;touch-action:none;background:transparent}.moorpy-splitter::before{content:"";position:absolute;inset:0 3px;background:#24435a;transition:background .15s}.moorpy-splitter:hover::before,.moorpy-splitter.dragging::before,.moorpy-splitter:focus::before{background:#2faee7}.moorpy-splitter span{position:absolute;left:50%;top:50%;width:3px;height:42px;transform:translate(-50%,-50%);border-radius:3px;background:#6d8da3}
.moorpy-viewer-pane .moorpy-viewer-card{width:100%;height:100%!important;border-radius:0 12px 12px 0!important}.moorpy-viewer-pane .moorpy-viewer{min-height:0!important}
body.moorpy-active #moorpyConfigForm:has([data-moorpy-panel="layout"].active) .moorpy-save-footer{display:none!important}
@media(max-width:1050px){.moorpy-split{grid-template-columns:1fr;grid-template-rows:minmax(280px,42%) 8px minmax(420px,1fr);overflow:auto}.moorpy-splitter{cursor:row-resize}.moorpy-splitter::before{inset:3px 0}.moorpy-splitter span{width:42px;height:3px}.moorpy-properties-pane{border-radius:12px 12px 0 0}.moorpy-viewer-pane .moorpy-viewer-card{border-radius:0 0 12px 12px!important}}

/* MoorPy line cards: collapsible, contained, endpoint coordinates. */
.moorpy-properties-pane,.moorpy-lines-editor,.moorpy-line-card,.moorpy-line-body,.moorpy-components{min-width:0;max-width:100%;box-sizing:border-box}
.moorpy-lines-editor{overflow-x:hidden!important}
.moorpy-line-card{overflow:hidden!important}
.moorpy-line-card>header{display:grid!important;grid-template-columns:28px minmax(0,1fr) auto!important}
.moorpy-line-toggle{width:26px;height:26px;padding:0;border:1px solid #355267;border-radius:6px;background:#0d2131;color:#9fdcff;cursor:pointer;font-size:16px;line-height:1}
.moorpy-line-body{display:flex;flex-direction:column;min-height:0}
.moorpy-line-card.collapsed .moorpy-line-body{display:none!important}
.moorpy-endpoints{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;margin:10px 10px 0!important;padding:10px!important;min-width:0!important}
.moorpy-endpoint-group{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;min-width:0}.moorpy-endpoint-group strong{grid-column:1/-1;font-size:11px;color:#8fdcff}.moorpy-endpoint-group label{display:flex;flex-direction:column;gap:4px;min-width:0}.moorpy-endpoint-group label span{font-size:9px;color:#8297a8}.moorpy-endpoint-group input{width:100%;min-width:0;box-sizing:border-box}
.moorpy-component-grid{min-width:0!important}.moorpy-component-grid>*{min-width:0!important}.moorpy-component-grid input,.moorpy-component-grid select{width:100%;min-width:0;box-sizing:border-box}
@media(max-width:1250px){.moorpy-endpoints{grid-template-columns:1fr!important}}
.moorpy-footer-actions{display:flex;align-items:center;gap:8px}.moorpy-footer-actions #moorpyRunButton{min-width:78px}.moorpy-footer-actions #moorpyRunButton:disabled{opacity:.65;cursor:wait}

/* MoorPy split scrolling: keep footer outside and scroll only Line Properties. */
body.moorpy-active #moorpyConfigForm{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active #moorpyConfigForm>[data-moorpy-panel="layout"].active{
  flex:1 1 0!important;
  height:auto!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active .moorpy-split{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active .moorpy-properties-pane{
  display:flex!important;
  flex-direction:column!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active .moorpy-properties-pane .moorpy-lines-header{
  flex:0 0 auto!important;
}
body.moorpy-active .moorpy-properties-pane .moorpy-lines-editor{
  flex:1 1 0!important;
  height:0!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-bottom:24px!important;
}
body.moorpy-active .moorpy-line-card{
  flex:0 0 auto!important;
}
body.moorpy-active .moorpy-save-footer{
  position:relative!important;
  inset:auto!important;
  flex:0 0 auto!important;
  z-index:5!important;
  margin:0!important;
}
body.moorpy-active #moorpyConfigForm:has([data-moorpy-panel="layout"].active) .moorpy-save-footer{
  display:flex!important;
}

/* MoorPy: two-row form layout; workspace above, action footer always visible below. */
body.moorpy-active #moorpyConfigForm{
  display:grid!important;
  grid-template-rows:minmax(0,1fr) auto!important;
  grid-template-columns:minmax(0,1fr)!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active #moorpyConfigForm>[data-moorpy-panel]{
  grid-row:1!important;
  grid-column:1!important;
  min-height:0!important;
}
body.moorpy-active #moorpyConfigForm>[data-moorpy-panel="layout"].active{
  display:flex!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
body.moorpy-active #moorpyConfigForm>.moorpy-save-footer{
  display:flex!important;
  grid-row:2!important;
  grid-column:1!important;
  position:relative!important;
  inset:auto!important;
  min-height:48px!important;
  height:auto!important;
  margin:0!important;
  padding:8px 12px!important;
  flex:0 0 auto!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  border-top:1px solid #20384b!important;
  background:#091725!important;
  z-index:20!important;
  box-sizing:border-box!important;
}
body.moorpy-active .moorpy-split,
body.moorpy-active .moorpy-properties-pane,
body.moorpy-active .moorpy-viewer-pane,
body.moorpy-active .moorpy-viewer-card{
  height:100%!important;
  min-height:0!important;
}

/* MoorPy compact environment row above properties and 3D viewer. */
body.moorpy-active #moorpyConfigForm{
  grid-template-rows:minmax(0,1fr) auto!important;
}
body.moorpy-active [data-moorpy-panel="layout"].active{
  display:grid!important;
  grid-template-rows:auto minmax(0,1fr)!important;
  gap:8px!important;
}
.moorpy-inline-environment{
  display:grid;
  grid-template-columns:repeat(5,minmax(120px,1fr));
  gap:8px;
  padding:8px 10px;
  border:1px solid #24435a;
  border-radius:10px;
  background:#081522;
  box-sizing:border-box;
}
.moorpy-inline-environment label{display:flex;flex-direction:column;gap:4px;min-width:0}
.moorpy-inline-environment label span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#8297a8;white-space:nowrap}
.moorpy-inline-environment input{width:100%;min-width:0;height:34px;box-sizing:border-box}
body.moorpy-active .moorpy-split{min-height:0!important;height:100%!important}
@media(max-width:1200px){.moorpy-inline-environment{grid-template-columns:repeat(3,minmax(140px,1fr))}}

/* MoorPy workspace sidebar retractable ear. */
body.moorpy-active .moorpy-workflow-shell{position:relative;transition:grid-template-columns .2s ease,gap .2s ease}
body.moorpy-active .moorpy-workflow-sidebar{position:relative;overflow:hidden!important;transition:width .2s ease,min-width .2s ease,padding .2s ease,border-width .2s ease,opacity .14s ease,transform .2s ease}
body.moorpy-active .moorpy-workflow-sidebar .nemoh-workflow-title{position:relative;padding-right:38px!important}
.moorpy-sidebar-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:28px;height:34px;padding:0;border:1px solid #355267;border-radius:8px;background:#0d2131;color:#8fdcff;font-size:20px;line-height:1;cursor:pointer}
.moorpy-sidebar-toggle:hover{border-color:#4ac8ff;color:#fff;background:#12324a}
body.moorpy-active .moorpy-workflow-shell.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)!important;gap:0!important}
body.moorpy-active .moorpy-workflow-sidebar.collapsed{width:0!important;min-width:0!important;padding:0!important;border-width:0!important;opacity:0!important;transform:translateX(-18px);pointer-events:none}
.moorpy-sidebar-reopen{position:absolute;z-index:40;left:0;top:14px;display:none;place-items:center;width:28px;height:48px;padding:0;border:1px solid rgba(77,177,228,.48);border-left:0;border-radius:0 10px 10px 0;background:linear-gradient(180deg,rgba(13,51,78,.98),rgba(7,28,45,.98));color:#78d6ff;font-size:21px;line-height:1;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.28),0 0 14px rgba(34,184,240,.14)}
.moorpy-sidebar-reopen.visible{display:grid}
.moorpy-sidebar-reopen:hover{border-color:#4ac8ff;color:#fff}
body.moorpy-active .moorpy-workflow-shell.sidebar-collapsed>.nemoh-workflow-content{grid-column:2!important;min-width:0!important;width:100%!important}
@media(max-width:1000px){body.moorpy-active .moorpy-workflow-shell.sidebar-collapsed{grid-template-columns:1fr!important}body.moorpy-active .moorpy-workflow-shell.sidebar-collapsed>.nemoh-workflow-content{grid-column:1!important}}

/* MoorPy Results */
body.moorpy-active [data-moorpy-panel="results"].active{display:flex!important;flex-direction:column!important;gap:10px!important;padding:10px!important;overflow:hidden!important}
.moorpy-results-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:0 0 auto}.moorpy-results-toolbar>div{display:flex;flex-direction:column;gap:2px}.moorpy-results-toolbar span{font-size:10px;letter-spacing:.12em;color:#5ec8ff}.moorpy-results-toolbar strong{font-size:16px}.moorpy-results-toolbar small{color:#8499ab}.moorpy-results-toolbar select{min-width:220px}
.moorpy-results-empty{display:grid;place-items:center;flex:1;border:1px dashed #29475e;border-radius:12px;color:#8297a8;background:#07131f}.moorpy-results-content{flex:1;min-height:0;overflow:auto}.moorpy-results-summary{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px;margin-bottom:10px}.moorpy-results-summary article{padding:10px;border:1px solid #24435a;border-radius:10px;background:#081522}.moorpy-results-summary span{display:block;font-size:9px;text-transform:uppercase;color:#8297a8}.moorpy-results-summary strong{display:block;margin-top:4px;font-size:16px}
.moorpy-results-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.moorpy-result-card{min-width:0;border:1px solid #24435a;border-radius:10px;background:#081522;overflow:hidden}.moorpy-result-card>header{padding:9px 11px;border-bottom:1px solid #20384b;background:#0b1b29}.moorpy-result-card>header strong{font-size:12px}.moorpy-result-card>div:not(.moorpy-table-wrap){padding:10px}.moorpy-components-result,.moorpy-chart-card{grid-column:1/-1}.moorpy-table-wrap{overflow:auto}.moorpy-result-card table{width:100%;border-collapse:collapse;font-size:11px}.moorpy-result-card th,.moorpy-result-card td{padding:7px 8px;border-bottom:1px solid #173044;text-align:right;white-space:nowrap}.moorpy-result-card th:first-child,.moorpy-result-card td:first-child{text-align:left}.moorpy-result-card th{color:#7f96a8;font-size:9px;text-transform:uppercase}.moorpy-line-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.moorpy-line-facts article{padding:8px;border:1px solid #18364b;border-radius:8px}.moorpy-line-facts span{display:block;font-size:9px;color:#8297a8;text-transform:uppercase}.moorpy-line-facts strong{display:block;margin-top:3px}.moorpy-chart-grid{stroke:#1f3a4d;stroke-width:1}.moorpy-chart-axis{stroke:#6e8799;stroke-width:1.2}.moorpy-chart-line{fill:none;stroke:#ffad45;stroke-width:2.4}.moorpy-chart-label{fill:#91a6b6;font-size:11px}.moorpy-chart-point{fill:#ffd27f}
@media(max-width:1100px){.moorpy-results-grid{grid-template-columns:1fr}.moorpy-components-result,.moorpy-chart-card{grid-column:1}.moorpy-results-summary{grid-template-columns:repeat(2,minmax(130px,1fr))}}

.moorpy-results-empty{display:none!important}
.moorpy-chart-canvas-wrap{position:relative;padding:10px!important}.moorpy-chart-canvas-wrap canvas{display:block;width:100%;height:300px;border:1px solid rgba(133,175,207,.09);border-radius:9px;background:rgba(3,10,18,.55)}.moorpy-chart-canvas-wrap .nemoh-graph-tooltip{position:absolute;z-index:5;pointer-events:none;padding:7px 9px;border:1px solid rgba(100,190,235,.35);border-radius:7px;background:rgba(5,17,27,.96);color:#d7e8f3;font-size:11px;box-shadow:0 8px 22px rgba(0,0,0,.35)}
.moorpy-chart-canvas-wrap{display:none!important}.moorpy-plotly-chart{width:100%;height:420px;min-height:320px;background:#07131f}.moorpy-plotly-chart .modebar{right:8px!important;top:8px!important}.moorpy-plotly-chart .modebar-btn path{fill:#a8c0d0!important}.moorpy-plotly-chart .modebar-btn:hover path{fill:#fff!important}

/* Plotly isolation: prevent legacy SVG/chart rules from corrupting Plotly internals. */
.moorpy-plotly-chart{position:relative;width:100%;height:420px;min-height:320px;padding:0!important;overflow:hidden;background:#07131f}
.moorpy-plotly-chart .js-plotly-plot,
.moorpy-plotly-chart .plot-container,
.moorpy-plotly-chart .svg-container{width:100%!important;height:100%!important}
.moorpy-plotly-chart .modebar{z-index:10!important}
.moorpy-chart-card>header{display:flex;align-items:center;justify-content:space-between}.moorpy-plotly-modal{height:100%!important;min-height:0!important}.nemoh-graph-modal-dialog>.moorpy-plotly-modal{grid-row:2;min-height:0}.nemoh-graph-modal-dialog>.moorpy-plotly-modal .js-plotly-plot,.nemoh-graph-modal-dialog>.moorpy-plotly-modal .plot-container,.nemoh-graph-modal-dialog>.moorpy-plotly-modal .svg-container{height:100%!important}
#moorpyShapeChart{height:420px}.moorpy-results-toolbar #moorpyResultsLineSelect{min-width:240px}

/* Plotly sharp rendering: never scale its internal SVG with CSS. */
.moorpy-plotly-chart{contain:layout paint;isolation:isolate}
.moorpy-plotly-chart .js-plotly-plot,
.moorpy-plotly-chart .plot-container,
.moorpy-plotly-chart .svg-container{position:relative!important;width:100%!important;height:100%!important}
.moorpy-plotly-chart svg.main-svg{width:auto!important;height:auto!important;max-width:none!important;shape-rendering:geometricPrecision;text-rendering:geometricPrecision}
.moorpy-plotly-chart svg.main-svg text{font-weight:400!important;text-shadow:none!important;filter:none!important;-webkit-font-smoothing:antialiased}
.moorpy-plotly-chart .legendtext,
.moorpy-plotly-chart .xtick text,
.moorpy-plotly-chart .ytick text,
.moorpy-plotly-chart .gtitle,
.moorpy-plotly-chart .xtitle,
.moorpy-plotly-chart .ytitle{font-weight:400!important;text-shadow:none!important;filter:none!important}
.moorpy-plotly-chart .hovertext text{font-weight:400!important;text-shadow:none!important;filter:none!important}

/* Reset the global NEMOH svg stroke inside Plotly charts. */
.moorpy-plotly-chart svg,
.moorpy-plotly-chart svg.main-svg{
  fill:initial!important;
  stroke:none!important;
  stroke-width:0!important;
  stroke-linecap:butt!important;
  stroke-linejoin:miter!important;
}
.moorpy-plotly-chart svg text,
.moorpy-plotly-chart .xtick text,
.moorpy-plotly-chart .ytick text,
.moorpy-plotly-chart .legendtext,
.moorpy-plotly-chart .hovertext text,
.moorpy-plotly-chart .gtitle,
.moorpy-plotly-chart .xtitle,
.moorpy-plotly-chart .ytitle{
  stroke:none!important;
  stroke-width:0!important;
  paint-order:normal!important;
  text-shadow:none!important;
  filter:none!important;
  font-weight:400!important;
}
.moorpy-plotly-chart .modebar svg{
  stroke:none!important;
  stroke-width:0!important;
}
.moorpy-import-nemoh{height:30px!important;white-space:nowrap}.moorpy-import-nemoh:disabled{opacity:.68;cursor:wait}
.moorpy-component-library{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr);gap:8px;align-items:end;margin-bottom:9px;padding:8px;border:1px solid #1c3c52;border-radius:8px;background:#0a1b29}.moorpy-component-library label{display:flex;flex-direction:column;gap:4px;min-width:0}.moorpy-component-library label span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#7f9aae}.moorpy-component-library select{width:100%;min-width:0}.moorpy-component-library small{color:#7890a3;font-size:10px;line-height:1.35}.moorpy-component-library small.line-library-warning{color:#ffbf69}
@media(max-width:900px){.moorpy-component-library{grid-template-columns:1fr}}
.moorpy-cluster-card{border:1px solid #24516d;border-radius:10px;background:#081a28;overflow:hidden;margin-bottom:10px;box-shadow:0 1px 0 rgba(76,196,255,.06) inset}.moorpy-cluster-header{display:flex;align-items:center;gap:9px;padding:10px 11px;background:linear-gradient(180deg,#10293a,#0c2231);border-bottom:1px solid #21455d}.moorpy-cluster-card.collapsed .moorpy-cluster-header{border-bottom:0}.moorpy-cluster-toggle{width:28px;height:28px;border:1px solid #2c607e;border-radius:7px;background:#0b2738;color:#75d8ff;font-size:16px;cursor:pointer}.moorpy-cluster-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0;flex:1}.moorpy-cluster-title span{font-size:13px;font-weight:700;color:#e8f5fc}.moorpy-cluster-title small{font-size:10px;color:#87a5b8;text-transform:uppercase;letter-spacing:.05em}.moorpy-cluster-lines{padding:9px}.moorpy-cluster-lines>.moorpy-line-card:last-child{margin-bottom:0}.moorpy-cluster-card.collapsed{border-color:#1a3b50}
/* Stable cluster layout */
.moorpy-cluster-card{flex:0 0 auto}.moorpy-cluster-lines[hidden]{display:none!important}.moorpy-cluster-card.collapsed .moorpy-cluster-header{border-bottom:none}.moorpy-cluster-header{position:sticky;top:0;z-index:2}
.stack-coupled-view{height:100%;min-height:0;overflow:hidden}.coupled-shell{height:100%;display:flex;flex-direction:column;background:#07131e}.coupled-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 18px;border-bottom:1px solid #1c3d52;background:linear-gradient(110deg,#0c2535,#0a1926)}.coupled-hero>div:first-child{display:flex;flex-direction:column;gap:3px}.coupled-hero span{font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:#72a6c5}.coupled-hero strong{font-size:18px;color:#eef8fd}.coupled-hero small{font-size:11px;color:#89a7b9}.coupled-hero-actions{display:flex;gap:8px}.coupled-layout{display:grid;grid-template-columns:250px minmax(0,1fr);flex:1;min-height:0}.coupled-sidebar{border-right:1px solid #19384c;background:#081722;padding:14px;overflow:auto}.coupled-sidebar-title{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}.coupled-sidebar-title span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#688ba1}.coupled-sidebar-title strong{font-size:13px;color:#dcecf5}.coupled-sidebar nav{display:grid;gap:6px}.coupled-sidebar nav button{display:flex;gap:9px;text-align:left;border:1px solid #17384d;border-radius:8px;background:#0a1d2a;color:#a8bfce;padding:8px}.coupled-sidebar nav button>span{display:grid;place-items:center;width:27px;height:27px;border-radius:6px;background:#102d40;color:#6ba9cb;font-size:10px}.coupled-sidebar nav button div{display:flex;flex-direction:column;gap:2px}.coupled-sidebar nav button strong{font-size:11px}.coupled-sidebar nav button small{font-size:9px;text-transform:uppercase;color:#68879a}.coupled-sidebar nav button.in_progress{border-color:#2b759b}.coupled-sidebar nav button.in_progress>span{background:#13506e;color:#b7ecff}.coupled-main{padding:14px;overflow:auto;display:grid;gap:12px;align-content:start}.coupled-section{border:1px solid #193e55;border-radius:10px;background:#091a27;padding:13px}.coupled-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}.coupled-heading>div{display:flex;flex-direction:column;gap:2px}.coupled-heading span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#6d91a8}.coupled-heading strong{font-size:13px;color:#e2f0f7}.coupled-heading em{font-style:normal;font-size:9px;text-transform:uppercase;border:1px solid #365269;border-radius:999px;padding:4px 8px;color:#91a8b7}.coupled-heading em.ready{border-color:#2d8566;color:#71ddb1}.coupled-runtime-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.coupled-runtime-card{border:1px solid #233e51;border-radius:8px;padding:10px;background:#071722;min-width:0}.coupled-runtime-card header{display:flex;justify-content:space-between;gap:8px}.coupled-runtime-card header span{font-size:10px;text-transform:none;letter-spacing:0;color:#a7c0cf}.coupled-runtime-card header em{font-style:normal;font-size:8px;color:#e7a860}.coupled-runtime-card.ready header em{color:#61d3a6}.coupled-runtime-card>strong{display:block;margin:8px 0 4px;font-size:15px}.coupled-runtime-card small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#637f91}.coupled-runtime-card footer{margin-top:8px;font-size:9px;color:#668396}.coupled-architecture{display:grid;grid-template-columns:1fr auto 1fr auto 1.2fr;gap:9px;align-items:center}.coupled-architecture>div,.coupled-branches>div{border:1px solid #23516c;border-radius:8px;padding:10px;text-align:center;background:#0b2231}.coupled-architecture b{display:block;font-size:12px;color:#dff3fc}.coupled-architecture span{display:block;margin-top:3px;font-size:9px;text-transform:none;letter-spacing:0;color:#7598ad}.coupled-architecture>i{font-style:normal;color:#4e91b7}.coupled-master{border-color:#357ca2!important;background:#0d2b3d!important}.coupled-branches{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;border:0!important;background:transparent!important;padding:0!important;grid-column:1/-1}.coupled-project-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.coupled-project-facts>div{border:1px solid #1c3b4f;border-radius:7px;padding:9px}.coupled-project-facts span{font-size:9px;color:#6f8da0}.coupled-project-facts strong{display:block;margin-top:4px;font-size:11px;color:#cce1ec}.coupled-build-section pre{max-height:180px;overflow:auto;margin:0;padding:10px;border-radius:7px;background:#050d14;color:#8fb4c8;font-size:10px;line-height:1.45}.coupled-active .stack-coupled-view{display:block}@media(max-width:1100px){.coupled-runtime-grid{grid-template-columns:repeat(2,1fr)}.coupled-layout{grid-template-columns:210px minmax(0,1fr)}}
.coupled-registry-toolbar,.coupled-bem-grid{display:grid;grid-template-columns:160px 1fr 1.4fr auto;gap:8px}.coupled-bem-grid{grid-template-columns:1fr 1.4fr 1fr 1fr auto}.coupled-registry-toolbar input,.coupled-registry-toolbar select,.coupled-bem-grid input{min-width:0;border:1px solid #29485c;border-radius:6px;background:#06131d;color:#d9eaf3;padding:8px}.coupled-registry-list{display:grid;gap:6px;margin-top:10px}.coupled-registry-list article{display:flex;justify-content:space-between;align-items:center;border:1px solid #19384c;border-radius:7px;padding:8px;background:#071722}.coupled-registry-list article div{display:flex;flex-direction:column}.coupled-registry-list article strong{font-size:11px}.coupled-registry-list article small{font-size:9px;color:#6f8da0}.coupled-registry-list button{border:1px solid #633946;border-radius:5px;background:#27131b;color:#e6a8b5;padding:5px 8px}.coupled-warning{display:block;margin:9px 0;color:#d8a65f}.coupled-bem-grid+small+pre{max-height:180px;overflow:auto;background:#050d14;padding:10px;border-radius:7px;color:#8fb4c8;font-size:10px}@media(max-width:1100px){.coupled-registry-toolbar,.coupled-bem-grid{grid-template-columns:1fr 1fr}.coupled-registry-toolbar button,.coupled-bem-grid button{grid-column:1/-1}}
.coupled-ops-panel{margin:18px 0;padding:16px;border:1px solid rgba(148,163,184,.28);border-radius:14px;background:rgba(15,23,42,.55)}
.coupled-ops-panel>header{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.coupled-ops-panel header div{display:grid;gap:2px}.coupled-ops-panel header small{opacity:.68}.coupled-ops-controls{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.coupled-ops-controls label{display:grid;gap:4px;font-size:12px}.coupled-ops-controls input{width:110px}.coupled-job-list{display:grid;gap:8px;margin-top:12px}.coupled-job-list article{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid rgba(148,163,184,.2);border-radius:10px}.coupled-job-list article div{display:grid;gap:2px}.coupled-job-list small{opacity:.65}

/* NEMOH geometric properties · readable responsive layout */
.mesh-property-card{margin-top:12px;border:1px solid rgba(91,160,207,.25);border-radius:12px;overflow:hidden;background:linear-gradient(180deg,rgba(10,29,46,.9),rgba(6,21,35,.92))}
.mesh-property-card-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;cursor:pointer;background:rgba(14,38,58,.82);list-style:none}
.mesh-property-card-header::-webkit-details-marker{display:none}.mesh-property-card-header>div:first-child{display:grid;gap:3px;min-width:0}.mesh-property-card-header strong{font-size:14px;color:#eef8ff}.mesh-property-card-header small{font-size:10px;color:#86a0b3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mesh-property-card-meta{display:flex;align-items:center;gap:12px;white-space:nowrap;color:#91a9ba;font-size:10px}.mesh-property-card-chevron{font-size:15px;transition:transform .18s}.mesh-property-card[open] .mesh-property-card-chevron{transform:rotate(180deg)}
.mesh-property-card .capy-result-grid{display:grid!important;grid-template-columns:repeat(4,minmax(190px,1fr))!important;gap:10px!important;padding:14px!important;align-items:stretch!important}
.mesh-property-card .capy-result{display:flex!important;flex-direction:column!important;justify-content:space-between!important;gap:8px!important;min-width:0!important;min-height:88px!important;padding:13px 14px!important;border:1px solid rgba(91,160,207,.19)!important;border-radius:10px!important;background:rgba(7,24,39,.72)!important}
.mesh-property-card .capy-result>span{display:block!important;color:#79a0b8!important;font-size:10px!important;line-height:1.25!important;letter-spacing:.06em!important;text-transform:uppercase!important;white-space:normal!important}
.mesh-property-card .capy-result>strong{display:block!important;color:#eef8ff!important;font:600 15px/1.35 ui-monospace,SFMono-Regular,Consolas,monospace!important;overflow-wrap:anywhere!important;word-break:normal!important;white-space:normal!important}
.mesh-property-card .capy-result.wide{grid-column:span 2!important;min-height:96px!important}
.mesh-property-card .capy-result.wide>strong{font-size:13px!important;line-height:1.5!important}
@media(max-width:1450px){.mesh-property-card .capy-result-grid{grid-template-columns:repeat(3,minmax(200px,1fr))!important}}
@media(max-width:1080px){.mesh-property-card .capy-result-grid{grid-template-columns:repeat(2,minmax(220px,1fr))!important}.mesh-property-card .capy-result.wide{grid-column:1/-1!important}}
@media(max-width:700px){.mesh-property-card .capy-result-grid{grid-template-columns:1fr!important}.mesh-property-card .capy-result.wide{grid-column:auto!important}}
.nemoh-graphs-heading-control{display:flex;align-items:center;gap:8px;margin-left:auto}.nemoh-graphs-heading-control label{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#89a8bd}.nemoh-graphs-heading-control select{min-width:110px;padding:8px 30px 8px 10px;border:1px solid rgba(87,164,215,.38);border-radius:8px;background:#091b2b;color:#eaf7ff}

/* Wave Response · keep all 6 rigid-body DOFs on one row on desktop */
#waveDofChecks.wave-check-grid{
  display:grid!important;
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
  gap:10px!important;
}
#waveDofChecks .nemoh-switch-field{
  min-width:0!important;
  width:100%!important;
  box-sizing:border-box!important;
}
@media(max-width:1250px){
  #waveDofChecks.wave-check-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media(max-width:760px){
  #waveDofChecks.wave-check-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Wave Response · full-width, readable 6DOF cards */
#waveDofChecks.wave-check-grid{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  justify-content:stretch!important;
  align-items:stretch!important;
  grid-template-columns:repeat(6,minmax(145px,1fr))!important;
  gap:14px!important;
}
#waveDofChecks .nemoh-switch-field{
  display:flex!important;
  align-items:flex-start!important;
  gap:12px!important;
  min-width:0!important;
  min-height:86px!important;
  padding:16px!important;
  border-radius:10px!important;
}
#waveDofChecks .nemoh-switch-field input{
  flex:0 0 auto!important;
  margin-top:2px!important;
}
#waveDofChecks .nemoh-switch-field span{
  display:flex!important;
  flex-direction:column!important;
  gap:7px!important;
  min-width:0!important;
}
#waveDofChecks .nemoh-switch-field strong{
  font-size:13px!important;
  line-height:1.2!important;
  white-space:nowrap!important;
}
#waveDofChecks .nemoh-switch-field small{
  font-size:10px!important;
  line-height:1.35!important;
  white-space:normal!important;
}
@media(max-width:1180px){
  #waveDofChecks.wave-check-grid{grid-template-columns:repeat(3,minmax(180px,1fr))!important}
}
@media(max-width:720px){
  #waveDofChecks.wave-check-grid{grid-template-columns:repeat(2,minmax(150px,1fr))!important}
}
