#pf-lab{max-width:1440px;margin:auto}.pf-header-right{padding-right:0}h1{font-size:32px;line-height:1.2;font-weight:600;margin:12px 0 18px}.eyebrow{font-size:12px;letter-spacing:.16em;color:#028bb2}.login-card{max-width:760px;margin:35px auto;padding:30px}.login-card>p{max-width:660px;color:#5b6e76}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.form-grid.four{grid-template-columns:repeat(4,1fr)}label{display:block;font-size:13px;color:#3d5965}label input,textarea{display:block;width:100%;border:1px solid #c7d8df;border-radius:7px;background:white;padding:11px;margin-top:6px;color:#18333e;font:inherit!important}input:invalid:not(:placeholder-shown){outline-color:#ab5438}button{cursor:pointer!important}button:disabled{opacity:.5;cursor:default!important}.form-error{color:#a7422b;white-space:pre-wrap}.muted{font-size:12px;color:#5b6e76}.constants-card{padding:15px 24px;font-size:13px;display:flex;gap:16px;flex-wrap:wrap;border-bottom:1px solid #dce5e9}.constants-card span{white-space:nowrap}.recipe-panel,.teacher-card{margin:20px 22px;padding:24px;background:white;border:1px solid #dce5e9;border-radius:12px}.recipe-panel p{font-size:13px;color:#526e7b}.result-card{margin-top:20px;padding:18px;background:#e6f3ef;border-radius:8px}.result-card.invalid{background:#fff0e9}.result-card h3{margin:0 0 12px}.result-metrics{display:flex;gap:24px;flex-wrap:wrap;font-size:13px}.result-score{font-size:36px;font-weight:500}.scroll{overflow:auto;max-height:320px}.teacher-card .scroll{max-height:480px}#pf-lab .teacher-card table,#pf-lab dialog table{table-layout:auto;min-width:650px}#pf-lab .teacher-card th,#pf-lab .teacher-card td,#pf-lab dialog th,#pf-lab dialog td{padding:10px 12px;text-align:left!important}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0}.chart-options{display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:11px;color:#5b6e76}.chart-options select{font-size:12px!important;border:1px solid #dce5e9;border-radius:5px;padding:4px}details{margin-top:18px;font-size:13px}summary{cursor:pointer;padding:6px 0}#notice:not(:empty){padding:12px 24px;background:#fff3da;color:#785427;font-size:13px}#notice.error{background:#fff0e9;color:#9c432b}dialog{width:min(960px,calc(100% - 24px));max-height:85vh;border:1px solid #bdcfd8;border-radius:12px;background:#fff;color:#182e37;padding:24px}dialog::backdrop{background:#132f3b66}.own-row{background:#e5f4ee}.panel-tabs{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.panel-tabs input{padding:8px;border:1px solid #c7d8df;border-radius:6px}#apply-controls{margin:16px 10px 0 0}.pf-nav button.pf-active{border-bottom:3px solid #028bb2!important}.pf-student{display:block!important}#teacher-login label{margin:20px 0}a{color:#047b9b}.history-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0;padding-bottom:10px;border-bottom:1px solid #e7eef1}#pf-lab td{overflow-wrap:anywhere}#pf-lab input{min-width:0}#pf-lab .pf-number input{width:95px}.pf-nav{gap:17px}.teacher-card details pre{white-space:pre-wrap}.chart-options label{font-size:11px}#pf-lab .login-card button{margin-bottom:5px}#control-log{max-height:140px;overflow:auto}#student-name{font-weight:600}@media(max-width:800px){.form-grid.four{grid-template-columns:1fr 1fr}}@media(max-width:480px){body{padding:6px}.login-card{margin:15px auto;padding:18px}.form-grid{grid-template-columns:1fr}.recipe-panel,.teacher-card{margin:12px;padding:16px}.form-grid.four{gap:12px}h1{font-size:27px}.constants-card{padding:12px 16px;gap:8px 16px}.chart-options{flex-wrap:wrap}.pf-nav{gap:12px}.pf-header-right{flex-wrap:wrap}.pf-header{gap:12px}.pf-live-reading>div:first-child strong{font-size:35px}dialog{padding:16px}#pf-lab .pf-number input{width:80px}.recipe-panel .form-grid.four{grid-template-columns:1fr}.scroll table{min-width:340px}}

.pf-dial-grip{transform:rotate(var(--angle,0deg));transition:transform .08s linear}

#pf-plant{height:330px}.plant-caption{margin:0 0 10px;text-align:center;font-size:11px;color:#66808c}@media(max-width:420px){#pf-plant{height:300px}.plant-caption{font-size:10px}}

.forecast-note{color:#7554af;font-size:11px;min-height:30px;margin:5px 0 10px}.compare-controls{display:flex;gap:8px;align-items:flex-end;margin:12px 0}.compare-controls label{flex:1;min-width:0}.compare-controls select{display:block;width:100%;min-width:0;padding:7px;border:1px solid #c7d8df;border-radius:6px;background:white;color:#375566;font-size:12px!important}#comparison-label{color:#a46e24;font-size:11px}#controls-note{display:inline-block;margin:8px 0}.pf-chart-detail{min-height:32px}

.reset-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:20px;padding:14px;background:#edf4f7;border:1px solid #c8dbe4;border-radius:9px}#pf-lab .reset-button{background:#e1eef4;border:1px solid #8eb5c7;color:#225366;font-weight:600;padding:12px 16px}#pf-lab .reset-button:hover{background:#cfe3ed}#controls-note.controls-success{color:#16836d;font-weight:600}#pf-lab #apply-controls:disabled{background:#e9f1ed;color:#42645a;border-color:#c6d9d0}#q1-limits{white-space:nowrap}.result-card small{display:block;color:#648075;margin-top:5px}

/* Compact experiment workspace */
.variant-details{margin:12px 22px 0;color:#526e7b;font-size:12px}.variant-details summary{cursor:pointer}.variant-details .constants-card{margin:8px 0 0;background:#edf3f5;border-radius:8px}.pf-main{align-items:start}.experiment-console{grid-column:1/-1;background:#fff;border:1px solid #dce5e9;border-radius:12px;padding:18px;display:grid;grid-template-columns:1.3fr 1fr;gap:10px 28px}.console-head{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px;align-items:center}.console-head span{font-size:12px;color:#66808c}.pf-dials{border:0;padding:0;gap:12px}.pf-dial{width:100px;height:100px;margin:8px auto}.pf-scale{mask:radial-gradient(transparent 0 43px,#000 44px 48px,transparent 49px)}.pf-dial-face{inset:13px}.pf-dial-grip{width:54px;height:54px}.pf-dial-grip span{left:24px;top:7px;width:5px;height:15px}.pf-dial-grip:after{inset:7px}#test-dials{display:grid;grid-template-columns:1fr;align-content:start}#apply-controls{margin-top:12px}#controls-note{font-size:12px;min-height:20px}.experiment-console[data-state=draft] #apply-controls{background:#f0eaf9;border-color:#bca6db;color:#684399}.experiment-console[data-state=applying] #apply-controls{background:#edf3f5;color:#526e7b}.pf-action-row{margin-top:10px}.reset-row{margin-top:14px;padding:12px}.reset-row .muted{font-size:11px}.band-distance{display:flex;flex-direction:column;gap:5px;text-align:center;font-size:11px;color:#66808c}.band-distance strong{font-size:16px;color:#244957;font-weight:500}.pf-live-reading{gap:12px;align-items:center}.pf-live-reading>div:first-child{flex-wrap:wrap;column-gap:5px}.pf-live-reading>div:first-child strong{font-size:34px}.pf-clock strong{font-size:16px;letter-spacing:0}#concentration-trend{flex-basis:100%;font-size:11px;color:#526e7b}.chart-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;margin:12px 0 6px}.legend-current{color:#138f9b}.legend-ghost{color:#8762cb}.legend-compare{color:#b47a2d}.measurement-details{border-top:1px solid #e2eaee;padding-top:14px;margin-top:12px}.measurement-details summary{cursor:pointer;font-size:13px}.measurement-details .pf-table-head{margin-top:5px;border:0}.event-highlight{outline:3px solid #8762cb;outline-offset:4px;border-radius:50%}#pf-quality[data-band=in]{color:#16836d}#pf-quality[data-band=out]{color:#a46e24}.quality-flash{animation:quality-feedback .9s ease-out}@keyframes quality-feedback{0%{background:#bde7d9;box-shadow:0 0 0 5px #bde7d9}100%{background:transparent;box-shadow:0 0 0 0 transparent}}#pf-quality[data-band=out].quality-flash{animation-name:quality-feedback-out}@keyframes quality-feedback-out{0%{background:#f6deb5;box-shadow:0 0 0 5px #f6deb5}100%{background:transparent;box-shadow:0 0 0 0 transparent}}.mobile-views{display:none}.pf-chart-detail{text-align:left;line-height:1.5}.pf-stream-labels{margin-top:18px}.pf-outflow{margin-bottom:8px}.pf-data .forecast-note{min-height:0;font-size:11px}.pf-data .compare-controls{margin:8px 0}.plant-caption{line-height:1.5}
@media(max-width:800px){.mobile-views{display:flex;gap:6px;margin:14px 18px 0;background:#e6eef2;padding:4px;border-radius:9px}.mobile-views button{flex:1}#pf-lab .mobile-views button[aria-pressed=true]{background:#123e4a;color:#fff;border-color:#123e4a}.pf-main[data-view=machine] .pf-data,.pf-main[data-view=chart] .pf-machine{display:none}.experiment-console{grid-template-columns:1fr}.console-head span{display:none}.console-head{margin-bottom:6px}.pf-main{padding-top:12px}.pf-dials{grid-template-columns:1fr 1fr}.pf-action-row{margin-top:0}.variant-details{margin-left:18px}.reset-row{margin-top:8px}.pf-live-reading>div:first-child strong{font-size:30px}.pf-clock strong{font-size:14px}.band-distance strong{font-size:14px}#pf-plant{height:300px}}
@media(prefers-reduced-motion:reduce){.quality-flash{animation:none}.pf-dial-grip{transition:none}}


/* Visualization and its controls share one experiment card. */
.pf-main{grid-template-columns:1fr 1.15fr;gap:16px}.experiment-card{background:white;border:1px solid #dce5e9;border-radius:12px;min-width:0;overflow:hidden}.experiment-card .pf-data{border:0;border-radius:0;padding-bottom:0}.experiment-card .experiment-console{border:0;border-radius:0;padding:12px 20px 16px;display:flex;flex-direction:column;gap:12px}.experiment-card #test-actions{order:0}.experiment-card #test-dials{order:1}.experiment-card .pf-action-row{margin:0;display:flex;flex-wrap:nowrap;gap:8px;justify-content:space-between}.experiment-card .reset-row{margin:0;padding:0;border:0;background:none;display:block}.experiment-card .pf-speed{gap:4px}.experiment-card .pf-primary{min-width:0!important;flex:1}.experiment-card .reset-button{padding:9px 10px!important;font-size:13px!important;white-space:nowrap}.experiment-card .pf-speed select{padding:8px 5px}.experiment-card #test-dials{border-top:1px solid #e5edf0;padding-top:12px}.experiment-card .pf-dial-control{display:grid;grid-template-columns:76px 1fr;grid-template-rows:auto auto;align-items:center;text-align:left;gap:4px 10px}.experiment-card .pf-dial-control>label{grid-column:2;grid-row:1;font-size:12px}.experiment-card .pf-dial{grid-column:1;grid-row:1/3;width:72px;height:72px;margin:0}.experiment-card .pf-number{grid-column:2;grid-row:2;justify-content:flex-start;flex-wrap:wrap;gap:3px}.experiment-card .pf-limits{grid-column:1/-1;width:auto;margin:2px 0 0;font-size:10px}.experiment-card .pf-scale{mask:radial-gradient(transparent 0 30px,#000 31px 34px,transparent 35px)}.experiment-card .pf-dial-face{inset:10px}.experiment-card .pf-dial-grip{width:38px;height:38px}.experiment-card .pf-dial-grip:after{inset:5px}.experiment-card .pf-dial-grip span{top:5px;left:17px;width:4px;height:11px}#pf-lab .experiment-card .pf-number input{width:72px;font-size:16px!important;padding:5px}.experiment-card #apply-controls{margin-top:8px;padding:9px;font-size:13px}.experiment-card #controls-note{margin:4px 0 0;font-size:11px;min-height:16px}.experiment-extras{border-top:1px solid #e2eaee;padding:12px 20px;color:#526e7b;font-size:12px}.experiment-extras>summary{cursor:pointer}.experiment-card .pf-chart-detail:empty{display:none}.experiment-card .pf-chart-detail{min-height:0;padding-top:4px}.experiment-card .chart-legend{margin:6px 0 2px}.experiment-card .pf-live-reading{margin-top:12px}.experiment-card .pf-target{margin:8px 0 4px}.experiment-card .measurement-details{margin-top:8px}.experiment-card .pf-sensor-label{font-size:10px}.experiment-card .pf-number>span{font-size:11px}
@media(max-width:800px){.pf-main{display:block;background:#fff;border:1px solid #dce5e9;border-radius:12px;margin:10px 12px;padding:12px}.experiment-card{display:contents}.pf-main .pf-machine,.experiment-card .pf-data{background:none;border:0;padding:0}.experiment-card .experiment-console{padding:10px 0 8px;gap:8px}.experiment-card .pf-action-row{gap:6px}.experiment-card .pf-speed{font-size:0}.experiment-card .pf-speed select{font-size:13px!important;min-height:40px}.experiment-card .reset-button{min-height:40px}.experiment-card .pf-primary{min-height:40px;font-size:14px!important;padding:8px!important}.experiment-card #test-dials{padding-top:8px}.experiment-card .pf-dials{gap:10px}.experiment-card .pf-dial-control{grid-template-columns:68px 1fr;gap:3px 6px}.experiment-card .pf-dial{width:64px;height:64px}.experiment-card .pf-scale{mask:radial-gradient(transparent 0 26px,#000 27px 30px,transparent 31px)}.experiment-card .pf-dial-face{inset:7px}#pf-lab .experiment-card .pf-number input{width:62px;font-size:16px!important}.experiment-card .pf-limits{font-size:9px}.experiment-extras{padding:10px 0 0;margin-top:4px}.experiment-card #pf-chart{height:200px}.experiment-card .pf-live-reading{margin-top:8px}.experiment-card .pf-live-reading>div:first-child strong{font-size:28px}.experiment-card .band-distance{font-size:10px;gap:2px}.experiment-card .band-distance strong,.experiment-card .pf-clock strong{font-size:13px}.experiment-card #concentration-trend{font-size:10px}.experiment-card .pf-target{font-size:10px;gap:4px}.pf-main #pf-plant{height:260px}.pf-stream-labels{margin-top:12px}.plant-caption{font-size:10px;margin-bottom:6px}.mobile-views{margin-top:10px}.pf-main .pf-machine .pf-outflow{margin:0}.experiment-card .pf-section-head h2{font-size:15px!important}}
@media(max-width:360px){.experiment-card .pf-dial-control{grid-template-columns:60px 1fr;gap:3px}.experiment-card .pf-dial{width:60px;height:60px}.experiment-card .pf-scale{mask:radial-gradient(transparent 0 24px,#000 25px 28px,transparent 29px)}.experiment-card .pf-dial-face{inset:5px}.experiment-card .pf-dials{gap:6px}#pf-lab .experiment-card .pf-number input{width:57px}.experiment-card .pf-number>span{font-size:10px}}

.rules-content{max-width:740px;margin:auto;line-height:1.65;font-size:14px}.rules-content section+section{border-top:1px solid #e1e9ed;margin-top:22px;padding-top:16px}.rules-content h3{font-size:17px;margin:8px 0 10px;color:#244957}.rules-content p{margin:10px 0}.rules-content ul,.rules-content ol{padding-left:22px}.rules-content li{margin:8px 0}.rules-content strong{font-weight:600}#official-form .form-grid>label{display:flex;flex-direction:column;justify-content:flex-end;line-height:1.5}.recipe-label{display:block}#official-form .recipe-label #q1-limits{display:inline}@media(max-width:480px){.rules-content{font-size:13px}.rules-content h3{font-size:16px}}

/* Small, quiet wonders; feedback keeps the sensor and controls in focus. */
body{background:#eee9df}#pf-lab{--pf-bg:#f8f5ee;--pf-panel:#fffdf8;--pf-line:#e0e3d9;--pf-ink:#244344;--pf-muted:#607171;--pf-blue:#168d9b;--pf-gold:#bd792c;--pf-green:#16836d}.pf-header{background:#fffaf0}.pf-demo{background:#eee7f5;color:#66517d}.pf-machine,.experiment-card{box-shadow:0 4px 18px #34554a08}.pf-number input{background:#fffaf1}.pf-nav .pf-active{border-bottom-color:#d79a5b}.pf-brand{gap:10px}.fern-mascot{width:56px;height:56px;object-fit:contain;border-radius:14px;flex-shrink:0;transform-origin:50% 90%;transition:transform .3s ease,filter .3s ease}.fern-mascot[data-mood=curious]{transform:rotate(-7deg) translateY(-2px);filter:drop-shadow(0 3px 2px #6c927422)}.fern-result{position:relative;display:grid;justify-items:center;margin:0 auto 14px;max-width:240px}.fern-result img{border-radius:22px;transform:rotate(-4deg)}.fern-result>span{position:absolute;left:calc(50% + 29px);top:12px;font-size:26px}.fern-result strong{color:#286451;font-size:17px;margin-top:5px}.result-card .result-score{color:#24594f}.experiment-extras{background:#fbf8f1}#pf-lab .pf-primary{background:#24594f;border-color:#24594f}#pf-lab .pf-primary:hover{background:#307567}#pf-lab button:focus-visible{outline-color:#8762cb}@media(max-width:480px){.fern-mascot{width:44px;height:44px}.pf-header{gap:8px}.pf-header-right{gap:8px}.pf-demo{font-size:10px;padding:4px 7px}}@media(prefers-reduced-motion:reduce){.fern-mascot{transition:none}.fern-mascot[data-mood=curious]{transform:none}}


.help-singlepage{font-size:14px;line-height:1.45}.help-singlepage p{margin:8px 0}.help-singlepage h3{font-size:16px;margin:14px 0 6px}.help-formula{padding:7px 10px;border-radius:8px;background:#edf2ef;color:#234b4c;font-size:13px}.help-singlepage .hint,.help-singlepage .muted{font-size:12px}

/* Parameters are editable while stopped; running controls carry a visible lock. */
#pf-lab .dial-locked{filter:grayscale(1);opacity:.48;cursor:not-allowed;touch-action:pan-y}
#pf-lab .dial-locked .pf-dial-face{box-shadow:none}
#pf-lab .dial-locked::after{content:'🔒';position:absolute;right:-2px;bottom:-2px;font-size:15px;line-height:1;background:#fffdf8;border:1px solid #c9d3ca;border-radius:50%;padding:4px;pointer-events:none}
#pf-lab .controls-locked .pf-number input{background:#eceee9;color:#65736e;border-style:dashed;cursor:not-allowed}
#pf-lab #controls-note{display:block;margin-top:8px;line-height:1.4}
#pf-lab .experiment-console[data-state=locked] #controls-note{color:#566b63}
#pf-lab .experiment-console[data-state=draft] #controls-note{color:#684399}
