:root{font-family:'Segoe UI',Arial,sans-serif;color:#101f4b;background:#eef6fd;--blue:#076bfa;--muted:#60789a;--border:#dce9f6}*{box-sizing:border-box}body{margin:0;color:#101f4b;background:linear-gradient(120deg,#edf7fe,#fbfdff);font:14px 'Segoe UI',Arial,sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{border:1px solid var(--border);background:#f5faff;color:#173e77;padding:10px 15px;border-radius:8px;cursor:pointer;font-weight:600;min-height:40px}button:hover{background:#e4f0ff}button:disabled{opacity:.45;cursor:not-allowed}.primary,button.active{background:var(--blue);color:white;border-color:var(--blue)}.danger{color:#b52438;background:#fff2f3}input,select,textarea{border:1px solid #ccdaec;background:white;border-radius:7px;padding:9px;color:#132d54;min-width:0;max-width:100%}input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue)}input[type=color]{width:70px;height:40px;padding:3px}label{display:flex;flex-direction:column;gap:7px;color:#4b6489;font-size:13px}label.check{flex-direction:row;align-items:center}h1{font-size:27px;margin:0 0 8px;font-weight:700}h2{font-size:18px;margin:0 0 14px}h3{font-size:15px;margin:10px 0}p{line-height:1.6;margin:8px 0}small,.muted{color:var(--muted);font-size:12px}.top{height:66px;display:flex;align-items:center;padding:0 24px;gap:12px;background:#f7fbffeF;border-bottom:1px solid var(--border);position:fixed;inset:0 0 auto;z-index:20}.brand{display:flex;align-items:center;gap:9px;color:#111e51;text-decoration:none;font-size:25px}.brand svg{width:46px;height:40px}.spacer{flex:1}.top button{padding:7px 11px}#presence{display:flex;gap:3px}.avatar{width:31px;height:31px;border-radius:50%;background:#d4ecff;border:2px solid white;display:grid;place-items:center;color:#0862d3;font-size:11px}#sidebar{position:fixed;left:0;top:66px;bottom:0;width:205px;padding:20px 12px;display:flex;flex-direction:column;border-right:1px solid var(--border);background:#f2f8fd}nav{display:grid;gap:5px}nav button{text-align:left;background:transparent;border:0;display:flex;align-items:center;gap:13px;font-weight:500}nav .symbol{font-size:20px;width:23px}.network-stack{margin-top:auto;display:grid;gap:9px}.net-card{text-align:left;background:#ffffffc9;font-size:11px;line-height:1.7;padding:10px;white-space:normal;font-weight:400}.net-card strong{display:block;font-size:12px}.good{color:#178659}.bad{color:#be4b23}#main{margin:66px 0 0 205px;padding:25px 30px;min-height:calc(100vh - 66px)}#message{padding:10px 13px;border-radius:8px;background:#e3efff;margin-bottom:15px;empty-cells:hide}#message:empty{display:none}.login{max-width:420px;margin:70px auto}.login form{display:grid;gap:16px}.card{background:#ffffffdf;border:1px solid var(--border);border-radius:13px;padding:21px;box-shadow:0 4px 16px #81a2c30a}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(195px,1fr));gap:14px}.columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.summary-grid{display:grid;grid-template-columns:minmax(400px,1.45fr) minmax(270px,1fr);gap:18px}.stack{display:grid;gap:16px;align-content:start}.toolbar,.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row{justify-content:space-between}.toolbar{margin:15px 0}.section-title{margin-bottom:22px}.section-title p{color:var(--muted)}.metric{font-size:27px;font-weight:700;margin:9px 0}.tag{display:inline-block;border-radius:20px;background:#e7f2ff;padding:4px 9px;font-size:11px;color:#2a67b7}.empty{padding:35px;text-align:center;color:var(--muted);border:1px dashed #cfdfef;border-radius:10px}.notice{background:#edf6ff;padding:12px 16px;border-radius:9px;color:#365e91;margin:14px 0;line-height:1.6}.warning{background:#fff5df;color:#9a621d}.scroll{overflow:auto}table{width:100%;border-collapse:collapse}th{text-align:left;background:#eef6ff;color:#4f6a91;font-weight:600}th,td{padding:11px 12px;border-bottom:1px solid #e7eff8;font-size:13px}td small{display:block}.chart{width:100%;height:230px}.chart text{fill:#637b98;font-size:11px}.chart polyline{fill:none;stroke:#086df6;stroke-width:2}.chart circle{fill:#086df6}.filters{display:flex;flex-wrap:wrap;gap:12px;margin:15px 0}.filters label{border:1px solid var(--border);padding:9px;border-radius:8px}.field-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:14px 0}.stage{border:1px solid var(--border);border-radius:10px;padding:17px;margin:15px 0}.stage .field-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.chat-bubble{position:fixed;right:25px;bottom:22px;border-radius:40px;background:var(--blue);color:white;box-shadow:0 6px 25px #1d5cbf44;z-index:30;font-size:21px}.chat-panel{position:fixed;right:25px;bottom:80px;width:380px;height:580px;background:#f7fbff;border:1px solid var(--border);box-shadow:0 20px 80px #17335235;border-radius:15px;padding:17px;z-index:31;display:flex;flex-direction:column}.chat-panel h2{margin:0}.chat-panel select{width:100%;margin-top:13px}#chat-messages{overflow:auto;flex:1;margin:12px 0}.bubble{background:white;border:1px solid var(--border);border-radius:9px;padding:10px;margin:8px 20px 8px 0;white-space:pre-wrap;overflow-wrap:anywhere}.bubble.mine{background:#e3f0ff;margin:8px 0 8px 20px}.bubble small{display:block;margin-top:6px}.bubble button{font-size:11px;min-height:25px;padding:3px 6px}#chat-text{width:100%}#chat-file{width:235px;font-size:11px}dialog{border:1px solid var(--border);border-radius:15px;max-width:1100px;width:90vw;max-height:92vh;overflow:auto;padding:25px;color:#122c56;box-shadow:0 20px 90px #20456a35}dialog::backdrop{background:#122a4a55}#editor-title{margin:0}.actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.full{width:100%}.rule-extra{padding:12px;background:#f5f9fe}.reactor-card .reactorVisual{height:580px}.reactor-card{min-height:600px;overflow:hidden;padding:0;position:relative}.reactor-card .reactorModelWrap{height:580px!important}.reactor-card [class*=leader]{pointer-events:none}#warning{color:#b5710c;background:#fff2d2;border-color:#efdcae}[hidden]{display:none!important}@media(max-width:1050px){#sidebar{width:165px}#main{margin-left:165px;padding:20px}.summary-grid,.columns{grid-template-columns:1fr}.field-grid,.stage .field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.top{padding:0 10px;gap:6px}#identity{max-width:90px;overflow:hidden}.brand{font-size:19px}#sidebar{width:120px;padding:10px 5px}#main{margin-left:120px;padding:15px}nav button{padding:9px 5px;font-size:12px;gap:5px}.chat-panel{right:8px;width:calc(100vw - 16px)}.field-grid,.stage .field-grid{grid-template-columns:1fr}.reactor-card{min-width:0}.network-stack{font-size:10px}}

nav{overflow:auto;min-height:0}.network-stack{flex-shrink:0;padding-top:10px}.reactor-card .bioflo-stage{height:620px}.reactor-card .reactor-canvas{height:620px}

.phase-track{--phase-color:#8c99ab;position:relative;display:flex;align-items:center;justify-content:center;min-height:46px;margin:12px 0 5px;isolation:isolate}.phase-track:before{content:"";position:absolute;left:0;right:0;top:calc(50% - 4px);height:8px;border-radius:8px;background:var(--phase-color);z-index:-1}.phase-abbreviation{display:inline-flex;align-items:center;justify-content:center;min-width:72px;min-height:40px;padding:5px 14px;border:3px solid var(--phase-color);border-radius:22px;background:white;color:var(--phase-color);font-size:19px;font-weight:750;letter-spacing:.05em;box-shadow:0 0 0 5px #fff}.phase-state{text-align:center;font-size:11px;color:var(--muted);margin:5px 0 10px}.phase-label{font-size:17px;font-weight:650;line-height:1.4;margin-top:8px}.phase-oxic{--phase-color:#087cbb}.phase-aerobic{--phase-color:#208851}.phase-anoxic{--phase-color:#bd7516}.phase-anaerobic{--phase-color:#8652ac}.phase-microoxic{--phase-color:#148c83}.phase-low-oxygen{--phase-color:#ac712d}.phase-custom{--phase-color:#4d68a1}.hardware-health{margin-top:20px}.hardware-health-table{min-width:780px}.hardware-health-table th{white-space:nowrap}.hardware-health-table td{vertical-align:top}.hardware-health-table td:first-child{min-width:145px}.hardware-health-table td:nth-child(2){min-width:170px}.hardware-health-table small{max-width:260px;overflow-wrap:anywhere;margin-top:4px}

.identity-providers{display:grid;gap:12px;margin:20px 0}.provider-button{width:100%;background:white;min-height:46px}.identity-providers p{margin:5px 0;font-size:12px}.login-divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;margin:24px 0 17px}.login-divider:before,.login-divider:after{content:"";height:1px;flex:1;background:var(--border)}.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:15px 0 20px}.permissions-card h3{margin-top:15px}.permissions-card .field-grid{grid-template-columns:1fr 1fr}.permissions-card .check{min-height:30px}.permissions-card input:disabled{opacity:.6}body:has(#login:not([hidden])) #main{margin-left:0}@media(max-width:650px){.permission-grid{grid-template-columns:1fr 1fr}}

.calibration-status{font-size:12px;min-height:32px;padding:6px 9px;text-align:left;white-space:normal}.hardware-health-table td:nth-child(3){min-width:155px}

/* Desktop workspace: use available width; the model remains a physical illustration, never telemetry. */
#main,#content{max-width:none;min-width:0}#content{width:100%}.top{gap:14px}.overview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin:-5px 0 18px}.summary-grid{grid-template-columns:minmax(0,1fr) minmax(275px,320px);align-items:start}.summary-grid>.stack{min-width:0}.reactor-card{min-height:clamp(560px,70vh,850px)}.reactor-card .reactorVisual,.reactor-card .reactorModelWrap,.reactor-card .bioflo-stage,.reactor-card .reactor-canvas{height:clamp(560px,70vh,850px)!important}.chart{height:auto;min-height:280px;max-height:520px;display:block}.chart .phase-interval-label{fill:white;font-size:12px;font-weight:700;letter-spacing:.04em}.graph-card{padding:22px 28px}.editor-tabs{display:flex;gap:8px;position:sticky;top:-25px;background:#fff;padding:16px 0;z-index:2;border-bottom:1px solid var(--border);margin-bottom:20px}.editor-tabs [aria-selected=true]{background:var(--blue);color:#fff;border-color:var(--blue)}.editor-tabs button{flex:1;white-space:nowrap}.light-group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:15px}.light-group{padding:15px;border:1px solid var(--border);border-radius:10px;background:#f8fbff}.light-group h4{margin:0 0 12px}.light-group .field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.light-editor>label{max-width:420px}.analysis-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.analysis-choice{display:flex;flex-direction:row;align-items:center;gap:12px;padding:15px;border:1px solid var(--border);border-radius:10px;background:white;cursor:pointer}.analysis-choice:has(input:checked){border-color:#89b9ff;background:#edf5ff}.analysis-choice small{display:block;margin-top:5px}.stage-process{margin-top:16px;border-top:1px solid var(--border);padding-top:14px}.stage-process summary{cursor:pointer;color:#285890;font-weight:600}.stage-process .field-grid{grid-template-columns:repeat(4,minmax(0,1fr))}dialog:has(#scenario-form){width:min(1440px,calc(100vw - 70px));max-width:none}dialog:has(#scenario-form) .actions{position:sticky;bottom:-25px;background:#fff;padding:16px 0;margin-bottom:-10px;border-top:1px solid var(--border)}.review-banner{position:fixed;top:66px;left:0;right:0;min-height:42px;display:flex;align-items:center;gap:16px;padding:7px 24px;background:#fff3d8;border-bottom:1px solid #efdbad;color:#80591c;z-index:19;font-size:12px}.review-banner strong{white-space:nowrap}.review-banner button{margin-left:auto;min-height:28px;padding:4px 10px;font-size:12px;background:#fff9ec}.offline-review #sidebar{top:109px}.offline-review #main{margin-top:109px}.offline-review #logout{display:none!important}
@media(min-width:1650px){#sidebar{width:225px}#main{margin-left:225px;padding:30px 42px}.summary-grid{grid-template-columns:minmax(0,1fr) 350px}.card{padding:24px}.reactor-card{padding:0}.cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}}
@media(max-width:1150px){.summary-grid{grid-template-columns:1fr}.summary-grid>.stack{grid-template-columns:repeat(3,minmax(0,1fr))}.light-group-grid{grid-template-columns:1fr}.analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.editor-tabs{overflow-x:auto}.stage-process .field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:750px){.summary-grid>.stack{grid-template-columns:1fr}.analysis-grid{grid-template-columns:1fr}.review-banner{position:sticky;top:66px;padding:8px;gap:8px;font-size:10px}.review-banner span{display:none}.offline-review #sidebar{top:107px}.editor-tabs button{font-size:12px;padding:8px}.graph-card{padding:14px}dialog:has(#scenario-form){width:96vw;padding:16px}.reactor-card,.reactor-card .reactorVisual,.reactor-card .reactorModelWrap,.reactor-card .bioflo-stage,.reactor-card .reactor-canvas{min-height:430px;height:430px!important}}
/* Desktop dialogs: the frame stays centered; only its content scrolls. */
dialog{position:fixed;inset:0;margin:auto;width:min(1200px,calc(100vw - 48px));max-width:none;max-height:calc(100dvh - 48px);padding:0;overflow:hidden}dialog[open]{display:flex;flex-direction:column}dialog> .row{flex:none;padding:14px 20px;border-bottom:1px solid var(--border);background:#f7fbff}#editor-body{padding:20px;overflow:auto;min-height:0;overscroll-behavior:contain}#editor-close{padding:3px 10px;min-height:30px;font-size:22px}dialog:has(#scenario-form),dialog:has(#scenario-wizard){width:min(1440px,calc(100vw - 48px));padding:0}dialog .editor-tabs{top:-20px}dialog:has(#scenario-form) .actions{bottom:-20px}.wizard-steps,.settings-tabs{display:flex;gap:6px;border-bottom:1px solid var(--border);padding:0 0 12px;margin-bottom:18px}.wizard-steps{position:sticky;top:-20px;z-index:3;background:white;padding-top:12px}.wizard-steps button{flex:1}.wizard-steps [aria-selected=true],.settings-tabs [aria-selected=true]{background:var(--blue);color:white}.wizard-actions{position:sticky;bottom:-20px;background:white;padding:12px 0;margin-bottom:-20px;border-top:1px solid var(--border)}#wizard-status:not(:empty){background:#fff3d7;padding:10px;border-radius:7px;margin-bottom:12px}#wizard-panel{min-height:270px}.wizard-graph{width:100%;display:block}.wizard-graph text{font-size:11px;fill:#496386}.season-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.season-grid .card{padding:12px}.location-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,1fr);gap:20px}.location-layout .field-grid{grid-template-columns:1fr 1fr;margin-top:0}.location-map{height:280px;position:relative;overflow:hidden;background:#eaf1f5;cursor:crosshair}.location-map img{position:absolute;max-width:none}.location-map p{padding:25px;color:#627487}.map-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#e33245;font-size:25px;text-shadow:0 1px 3px white;pointer-events:none}#source-catalog{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}#download-progress{max-height:210px;overflow:auto}#download-progress progress{width:100%}button{min-height:32px;padding:7px 11px}input,select,textarea{padding:7px 9px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #43a6f1;outline-offset:2px}.settings-tabs+section{padding:12px 0}.settings-tabs~section button{margin-right:8px}.settings-tabs~section{background:white;border:1px solid var(--border);padding:20px;border-radius:9px}@media(max-width:850px){.location-layout,.season-grid{grid-template-columns:1fr}.wizard-steps,.settings-tabs{overflow:auto}.wizard-steps button{white-space:nowrap}dialog,dialog:has(#scenario-form),dialog:has(#scenario-wizard){width:calc(100vw - 20px);max-height:calc(100dvh - 20px);padding:0}}

.top{background:#f7fbff}.top .brand,.top .brand svg{background:transparent;border:0;box-shadow:none}.top .brand{padding:0}.chat-panel{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(520px,calc(100vw - 32px));height:min(620px,calc(100dvh - 48px))}

dialog{height:fit-content}#scenario-wizard .field-grid input,#scenario-wizard .field-grid select{width:100%}

#question-dialog{width:min(520px,calc(100vw - 32px))}#question-form{padding:20px;overflow:auto;min-height:0}#question-message{white-space:pre-wrap;overflow-wrap:anywhere}#question-dialog .row{padding:14px 20px}#question-input{width:100%}

/* BioLoop shared glass theme: desktop proportions, native data and actions unchanged. */
:root{--blue:#086bff;--muted:#536e99;--border:#cfdef1;--ink:#0b194d;--glass:rgba(248,253,255,.78);--sidebar:224px;--top:68px;--shadow:0 9px 30px rgba(41,99,161,.07),inset 0 1px 0 #fff}
html{min-height:100%;background:#d9edff}
body{color:var(--ink);background:radial-gradient(ellipse at 84% 3%,#f9feff 0,transparent 51%),radial-gradient(ellipse at 12% 76%,#c4eaff 0,transparent 60%),linear-gradient(130deg,#edf7ff,#cbe6ff 65%,#e3f3ff);background-attachment:fixed;font-size:14px;min-height:100vh;isolation:isolate}
body:before{content:"";position:fixed;inset:15% -30% 0;z-index:-1;pointer-events:none;border:80px solid #ffffff2e;border-radius:50%;transform:rotate(-18deg);animation:glass-light 30s ease-in-out infinite alternate}
@keyframes glass-light{to{transform:translateY(25px) rotate(-14deg)}}
@keyframes glass-enter{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.top{height:var(--top);inset:10px 14px auto;height:58px;padding:0 20px;background:linear-gradient(120deg,#ffffffd4,#e9f8ffc4);border:1px solid #ffffffdc;border-radius:15px;box-shadow:var(--shadow);backdrop-filter:blur(20px)}
.brand{color:var(--ink);font-size:25px;letter-spacing:-.9px}.brand svg{width:43px;height:34px;flex:none;overflow:visible}
.top button{min-height:34px;border-radius:11px;background:#ffffffb5;border-color:#ffffffd9;box-shadow:0 2px 8px #2367af0c}
.top button:hover{background:white}.top button svg{width:19px;height:19px;display:block;stroke:currentColor;fill:none;stroke-width:1.8}
#identity{font-size:12px;font-weight:600;padding-left:9px;border-left:1px solid #b7d4f1;max-width:185px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#presence{gap:0}.avatar{width:29px;height:29px;margin-left:-5px;background:linear-gradient(140deg,#fff,#c1ddfb);border:2px solid #eef8ff;box-shadow:0 2px 5px #387dca12;font-size:10px;color:#17468b}.avatar:first-child{margin-left:0}
#sidebar{inset:80px auto 12px 14px;width:calc(var(--sidebar) - 26px);padding:13px 9px;background:linear-gradient(145deg,#ffffffa6,#e6f5ff80);border:1px solid #ffffffc9;border-radius:15px;box-shadow:var(--shadow);backdrop-filter:blur(16px);overflow:hidden}
nav{gap:7px}nav button{min-height:43px;padding:10px 12px;border-radius:10px;color:#203569;letter-spacing:-.1px;transition:background .16s,box-shadow .16s;color:var(--ink)}
nav .symbol{display:inline-flex;align-items:center;justify-content:center;flex:none;width:22px;height:22px}.symbol svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
nav button.active{background:linear-gradient(180deg,#54a7ff,#0769ff);box-shadow:0 4px 11px #1c77f23b,inset 0 1px 0 #ffffff80;color:white}
nav button:not(.active):hover{background:#ffffffb5;box-shadow:0 3px 12px #2978b50a}
.network-stack{gap:9px;padding:16px 2px 0}.net-card{background:linear-gradient(140deg,#ffffffd9,#eaf8ffae);border:1px solid white;box-shadow:0 4px 14px #447fa40b;border-radius:11px;padding:10px;font-size:11px;line-height:1.65;overflow-wrap:anywhere}.net-card strong{font-size:12px;margin-bottom:3px}
#main{margin:80px 0 0 var(--sidebar);padding:20px 28px 28px 12px;min-height:calc(100vh - 80px)}
#content{animation:glass-enter .22s ease-out}.section-title{margin-bottom:18px}.section-title h1{font-size:clamp(25px,1.8vw,32px);letter-spacing:-.8px;color:var(--ink);line-height:1.25}.section-title p{font-size:13px;max-width:1000px;margin-top:7px}
.card,.settings-tabs~section{background:linear-gradient(140deg,#ffffffed,#f0f9ffe0);border:1px solid #ffffffee;border-radius:15px;box-shadow:var(--shadow);padding:22px}
.card h2{color:var(--ink);font-size:17px;letter-spacing:-.2px}.cards{gap:16px;grid-template-columns:repeat(auto-fit,minmax(225px,1fr))}
button{min-height:34px;padding:7px 13px;border:1px solid #cadff5;border-radius:9px;background:linear-gradient(#ffffffed,#edf7ff);color:#193867;box-shadow:inset 0 1px 0 #fff;transition:box-shadow .15s,background .15s,transform .15s}
button:hover:not(:disabled){background:linear-gradient(#fff,#dceeff);box-shadow:0 3px 10px #276ec216,inset 0 1px 0 #fff}button:active:not(:disabled){transform:translateY(1px)}
.primary,button.active,.editor-tabs [aria-selected=true],.wizard-steps [aria-selected=true],.settings-tabs [aria-selected=true]{background:linear-gradient(180deg,#4e9dff,#0662ed);border-color:#2681f7;color:#fff;box-shadow:0 3px 10px #086bff25,inset 0 1px 0 #ffffff70}
.primary:hover:not(:disabled),button.active:hover:not(:disabled){background:linear-gradient(180deg,#3d92ff,#0657d2);color:white}
.danger{background:linear-gradient(#fff5f6,#ffe6e9);border-color:#f5c8cf;color:#b22340}.danger:hover:not(:disabled){background:#ffe1e6}
button:disabled{opacity:.52;box-shadow:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #1e75db;outline-offset:3px}
input,select,textarea{background:#ffffffd9;border:1px solid #c6d8ed;border-radius:8px;min-height:33px;box-shadow:inset 0 1px 3px #1f578507;padding:7px 10px;color:#162f5d}input:focus,select:focus,textarea:focus{border-color:#147eff}input[type=checkbox]{min-height:0;width:16px;height:16px}label{font-size:12px;color:#435d86}
.tag{background:#e7f2ffc9;border:1px solid #ffffffa6;border-radius:8px;font-size:11px;padding:4px 8px}.metric{font-size:27px;font-variant-numeric:tabular-nums;letter-spacing:-.6px}.good{color:#0a754d}.bad{color:#b34625}
.notice,#message{background:linear-gradient(100deg,#e0efffd9,#eff9ff);border:1px solid #bcdcff;color:#204e85;border-radius:10px}.warning,#warning{background:linear-gradient(#fff9e8,#fff0d0);border-color:#f1d299;color:#955705}.empty{background:#f6fbff9e;border-color:#b9d1e9;color:#536c90;line-height:1.7;border-radius:12px}
.overview-toolbar{padding:10px 14px;border:1px solid #ffffffc9;border-radius:12px;background:#f8fcffad;margin:0 0 15px}
.summary-grid{grid-template-columns:minmax(0,1fr);gap:18px}.summary-grid>.stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.summary-grid>.stack .card{padding:18px}.summary-grid>.stack .card button{margin:5px 6px 0 0}.summary-grid>.stack .card p{font-size:13px}
.reactor-card{padding:0;min-height:clamp(540px,66vh,850px);background:linear-gradient(145deg,#f9fdffe8,#e8f5ffc9);border-radius:16px}
.reactor-card .reactorVisual,.reactor-card .reactorModelWrap,.reactor-card .bioflo-stage,.reactor-card .reactor-canvas{height:clamp(540px,66vh,850px)!important}.reactor-card .reactor-canvas{background:transparent!important}
.hardware-health{margin-top:18px}.hardware-health-table{min-width:780px}table{font-variant-numeric:tabular-nums}th{background:#eaf4ffc4;color:#3d5f8c;font-size:12px;padding:10px 13px}td{padding:11px 13px;border-color:#dceafa;font-size:13px}tbody tr:hover{background:#e9f5ff8c}.calibration-status{border-radius:7px;min-height:28px;font-size:11px;padding:4px 8px}
.graph-card{padding:24px 28px}.filters label{background:#ffffffd9;padding:7px 11px;border-color:#c9ddf3;border-radius:9px}.filters label:has(input:checked){border-color:#69aaff;background:#e9f3ff}.phase-track{margin:12px 0}.chart{max-height:560px;min-height:280px}.chart text{fill:#435f86}
.settings-tabs,.editor-tabs{gap:4px;background:#e4f1ffb3;border:1px solid #d6e8fb;border-radius:11px;padding:5px;margin-bottom:18px}.settings-tabs button,.editor-tabs button{border:0;background:transparent;box-shadow:none;padding:8px 15px;font-size:13px;min-height:34px}.settings-tabs [aria-selected=true],.editor-tabs [aria-selected=true]{background:linear-gradient(#4095ff,#0967f3);box-shadow:0 2px 7px #146adb26}.settings-tabs~section{min-height:220px}
dialog{background:linear-gradient(135deg,#fafdfff5,#edf7fff2);border:1px solid #fff;border-radius:18px;box-shadow:0 24px 90px #264e7c33,0 3px 15px #537baf1c,inset 0 1px 0 #fff;backdrop-filter:blur(24px);width:min(1240px,calc(100vw - 64px));max-height:calc(100dvh - 64px);animation:glass-enter .18s ease-out}
dialog::backdrop{background:#2b527845;backdrop-filter:blur(5px)}dialog>.row{padding:16px 24px;background:linear-gradient(110deg,#ffffffc9,#e3f2ffbf);border-bottom:1px solid #d7e6f5}dialog h2{letter-spacing:-.3px;color:var(--ink)}#editor-body{padding:24px}dialog:has(#scenario-form),dialog:has(#scenario-wizard){width:min(1520px,calc(100vw - 72px))}
.wizard-steps{top:-24px;background:#f3f9fff2;backdrop-filter:blur(12px);padding:12px 0 16px;gap:12px;border-bottom:1px solid #cde1f5}.wizard-steps button{border-radius:24px;font-size:13px;padding:9px 14px}.wizard-actions,dialog:has(#scenario-form) .actions{background:#f5fbfff2;backdrop-filter:blur(12px);padding:14px 0;bottom:-24px;margin-bottom:-24px}.location-layout{gap:24px;grid-template-columns:minmax(0,1.4fr) minmax(310px,1fr)}.location-map{height:clamp(320px,38vh,480px);border-radius:13px;border:1px solid #c6dcef}.season-grid{gap:17px}.season-grid .card{padding:18px}.stage{background:#ffffffb8;border-color:#d5e6f7;border-radius:12px}.light-group{background:#ffffffb5;border-color:#d5e6f7;border-radius:11px}.analysis-choice{background:#ffffffc7;border-color:#ccdef2;border-radius:11px;padding:15px}.analysis-choice:has(input:checked){background:linear-gradient(125deg,#e2f0ff,#f4faff);border-color:#77b3ff}
.chat-bubble{background:linear-gradient(#50a6ff,#0b69f2);border:1px solid #78b9ff;box-shadow:0 7px 24px #0064cb38,inset 0 1px 0 #ffffffb5;border-radius:18px;width:52px;height:48px;display:flex;align-items:center;justify-content:center;right:26px;bottom:22px}.chat-bubble:hover:not(:disabled){background:linear-gradient(#3b98ff,#0658de);color:white}.chat-panel{background:#f3faffed;border:1px solid #fff;border-radius:18px;backdrop-filter:blur(24px);box-shadow:0 24px 80px #1a467c38}.bubble{background:#ffffffec;border-color:#dbe8f5;border-radius:13px}.bubble.mine{background:linear-gradient(130deg,#d9edff,#e7f7ff);border-color:#bbd9f5}
.login{margin:clamp(55px,10vh,130px) auto;padding:32px;max-width:460px;backdrop-filter:blur(20px);border:1px solid white}.login h1{font-size:27px;letter-spacing:-.7px}.login form button{height:40px}.login .provider-button{background:#fff}.review-banner{top:78px;left:14px;right:14px;border-radius:10px;border:1px solid #efd79c;min-height:36px;padding:6px 17px}.offline-review #sidebar{top:126px}.offline-review #main{margin-top:126px}
@media(min-width:1800px){:root{--sidebar:242px}#main{padding:24px 34px 32px 14px}.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.card{padding:24px}.reactor-card{padding:0}.field-grid{gap:18px}}
@media(max-width:1250px){:root{--sidebar:200px}#main{padding-right:18px}.summary-grid>.stack{grid-template-columns:repeat(3,minmax(0,1fr))}.card{padding:18px}.section-title h1{font-size:25px}.location-layout{grid-template-columns:minmax(0,1fr) 300px}}
@media(max-width:900px){:root{--sidebar:175px}.top{inset:6px 8px auto;padding:0 12px}#sidebar{left:8px;width:calc(var(--sidebar) - 18px)}#main{padding:16px 12px 22px 7px}.summary-grid>.stack{grid-template-columns:1fr}.location-layout,.season-grid{grid-template-columns:1fr}.top #identity{max-width:110px}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){:root{--sidebar:125px}.top .brand{font-size:20px}.top .brand svg{width:32px}.top{gap:6px}.top #identity{display:none}nav button{font-size:11px;padding:9px 5px;gap:6px}.net-card{font-size:10px;padding:7px}.card{padding:14px}.reactor-card{padding:0}.field-grid{grid-template-columns:1fr}dialog,dialog:has(#scenario-form),dialog:has(#scenario-wizard){width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}#editor-body{padding:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(prefers-reduced-transparency:reduce){.top,#sidebar,.card,dialog,.chat-panel{backdrop-filter:none;background:#f5faff}}
@media(forced-colors:active){button,.card,dialog,.top,#sidebar{border:1px solid CanvasText;box-shadow:none}nav button.active,.primary{border:2px solid Highlight}}
/* Seasonal authoring: keyboard/mouse controls and four logical regions. */
.region-clock{display:flex;justify-content:space-between;color:#526784;font-size:12px;margin:12px 0 6px}
.region-chart{display:flex;border-radius:12px;overflow:hidden;border:1px solid #cbd9ec;min-height:74px;gap:2px}
.region-chart button{min-width:0;border:0;border-radius:0;padding:10px 3px;font-weight:600;color:#132a53}
.region-chart button small{display:block;font-size:11px;font-weight:400;margin-top:6px}
.region-chart [aria-pressed=true]{box-shadow:inset 0 0 0 3px #0869e8}
.region-chart button:focus-visible{outline:3px solid #142b4e;outline-offset:-5px}
.region-darkness{background:#d5e0fa}.region-sunrise{background:#ffe1b2}.region-daylight{background:#fff1c5}.region-sunset{background:#ffd8cd}
.region-hardware-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}
.region-hardware-grid .card{padding:14px}.region-hardware-grid .field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.region-hardware-grid input,.region-hardware-grid select{min-width:0;width:100%;box-sizing:border-box}
.region-hardware-grid [hidden]{display:none!important}.experiment-progress progress{width:100%;height:14px;accent-color:#1683e9}
.season-save-summary{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.season-save-summary span{padding:8px 12px;border-radius:8px;background:#e7f1fc}
@media(min-width:1600px){#editor:has(#scenario-wizard){width:min(1540px,94vw);max-width:94vw}.region-hardware-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.region-hardware-grid .field-grid{grid-template-columns:1fr}}
@media(max-width:850px){.region-hardware-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.region-chart button small{font-size:10px}}

.rule-pumps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.rule-pumps fieldset{border:1px solid #d5e4f3;border-radius:12px;margin:12px 0;padding:12px}.rule-pumps .field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rule-pumps [hidden]{display:none!important}.region-clock,.region-chart{margin-left:10.97561%;margin-right:6.09756%}@media(max-width:950px){.rule-pumps{grid-template-columns:1fr}}

.location-map .maplibregl-canvas{position:absolute}.location-map .maplibregl-ctrl-attrib{font-size:11px}.location-map .maplibregl-ctrl-attrib a{color:#333}.location-map .maplibregl-marker{position:absolute}

/* Login is inert until its guarded JS handler and CSRF session are ready. */
.login-fields{border:0;margin:0;padding:0;min-width:0;display:contents}
