.clm{color:var(--ink);font-size:14px;line-height:1.6}
.clm [hidden]{display:none!important}
.clm-tabs{display:inline-flex;gap:3px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:16px}
.clm-tabs button{display:inline-flex;gap:7px;align-items:center;padding:7px 13px;font-size:14px;font-weight:600;color:var(--muted);border-radius:7px}
.clm-tabs button[aria-pressed=true]{background:#fff0e6;color:#a74820}
.clm-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(255px,.85fr);gap:16px;align-items:start}
.clm-left,.clm-right{display:grid;gap:14px;min-width:0}
.clm-panel{background:#fff;border:1px solid var(--border);border-radius:12px;padding:17px;min-width:0}
.clm-panel h2{font-size:17px;font-weight:600;line-height:1.55;letter-spacing:-.3px}.clm-panel h2 .ico{color:var(--accent);margin-right:4px}
.clm-panel p,.clm-small{font-size:13px;line-height:1.65;color:var(--muted);margin-top:4px}
.clm-scene{padding:0;overflow:hidden}.clm-scene header,.clm-history header{display:flex;align-items:center;justify-content:space-between;gap:10px}.clm-scene header{padding:12px 16px;border-bottom:1px solid var(--border)}
.clm-fan-status{display:inline-flex;align-items:center;gap:7px;background:#f1f2f0;color:#59645e;font-size:12px;font-weight:600;padding:3px 9px;border-radius:14px}
.clm-fan-status:before{content:"";height:7px;width:7px;border-radius:50%;background:#99a49e}
.clm[data-fan=on] .clm-fan-status{background:#e3f2e7;color:#2c714f}.clm[data-fan=on] .clm-fan-status:before{background:#379667}
.clm-room{width:100%;display:block}.clm-blades{transform-origin:0 0}.clm[data-fan=on] .clm-blades{animation:clm-fan 1s linear infinite}
@keyframes clm-fan{to{transform:rotate(360deg)}}
.clm-readings{display:grid;grid-template-columns:1fr 1fr;border-block:1px solid var(--border);background:#fdfefb}.clm-meter{padding:12px 16px}.clm-meter+.clm-meter{border-left:1px solid var(--border)}
.clm-meter>span{font-size:13px;font-weight:600}.clm-meter i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}
.clm-meter b{font:600 28px/1.35 "Space Grotesk",sans-serif}.clm-meter small{font-size:12px;color:var(--muted)}.clm-meter p{margin:0}
.clm-reason{padding:10px 16px;font-size:13px;color:#496256;background:#f6f9f4}
.clm-presets{display:flex;gap:6px;flex-wrap:wrap;margin:11px 0}.clm-presets button{background:#f6f7f5;border:1px solid var(--border);border-radius:6px;font-size:12px;padding:5px 10px;color:#4f6159}.clm-presets button:hover{background:#eaf0eb}
.clm-air-control{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1px 10px;margin-top:12px}.clm-air-control label{font-size:14px;font-weight:600}.clm-value-entry{display:flex;align-items:center;gap:5px}.clm-value-entry span{font-size:11px;color:var(--muted);min-width:32px}
.clm-panel input[type=number],.clm-panel select{border:1px solid var(--border);border-radius:6px;padding:6px 9px;background:#fff;color:var(--ink);font:inherit;min-width:0}
.clm-value-entry input{width:65px;font-size:13px!important;text-align:center}.clm-air-control input[type=range]{grid-column:1/-1;accent-color:var(--clm-channel);width:100%;margin:6px 0;cursor:pointer}
.clm-select{display:grid;gap:4px;margin-top:10px;font-size:13px;color:#495850}.clm-select select{width:100%}
.clm-limits{display:grid;grid-template-columns:1fr 1fr;gap:8px;border:1px solid var(--border);border-radius:7px;background:#f8faf7;margin:13px 0 8px;padding:7px 10px 10px;min-width:0}
.clm-limits legend{font-size:13px;font-weight:600;padding:0 3px}.clm-limits small,.clm-offset small{font-size:11px;color:var(--muted);font-weight:400}.clm-limits label{display:grid;gap:3px;font-size:12px;color:#506055}.clm-limits input{width:100%}
.clm-rules .btn{margin-top:10px}.clm-offset{display:grid;grid-template-columns:minmax(0,1fr) 73px;gap:8px;align-items:center;margin-top:10px;font-size:13px}
.clm-form-message:empty{display:none}.clm-form-message{color:#8a502c!important}.clm-history{margin-top:16px}.clm-history header{margin-bottom:8px}.clm-history table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}.clm-history th,.clm-history td{padding:7px 8px;border-bottom:1px solid var(--border);vertical-align:top}.clm-history th{color:#53645a;background:#f5f7f4;font-weight:600}.clm-table-wrap{overflow-x:auto}
.clm-follow{display:flex;flex-wrap:wrap;align-items:center;gap:9px 19px;margin-top:15px}.clm-follow a,.clm-follow button{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:#ad461f;font-weight:600;padding:4px 0}.clm-follow a:hover,.clm-follow button:hover{text-decoration:underline}
.clm-history td small{display:block;font-size:10px;color:var(--muted);white-space:nowrap}
.clm-journal-tools{display:flex;gap:6px;flex-wrap:wrap}
.clm-controllerbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:0 0 16px;padding:9px 13px;border:1px solid var(--border);border-radius:10px;background:#fff}
.clm-controllerbar>span{font-size:13px;font-weight:600}.clm-controllerbar [role=group]{display:flex;gap:3px}.clm-controllerbar button{display:flex;align-items:center;gap:5px;color:var(--muted);padding:5px 9px;border:1px solid transparent;border-radius:6px;font-size:13px;font-weight:600}.clm-controllerbar button[aria-pressed=true]{border-color:#c4d8cb;background:#eaf3ec;color:#37634b}
 .clm-program{border-top:3px solid #69927d;min-width:0}
.clm-editor-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.clm-editor-head h2{display:flex;align-items:center;gap:4px}.clm-editor-head label{display:inline-flex;gap:6px;align-items:center;color:#526457;font-size:13px}.clm-editor-head select{max-width:206px;font-size:14px}
.clm-panel .clm-editor-tip{margin:8px 0 12px;color:#435c4d;font-size:14px}
.clm-program .clm-step-note{margin:11px 0;padding:9px 11px;border-left:3px solid #639576;background:#eff6ef;color:#34573f;font-size:14px}
.clm-program .clm-step-note[data-error=true]{background:#fff2e6;border-color:#d57940;color:#804528}
.clm-program>details{border-top:1px solid var(--border);padding:7px 0;font-size:14px}.clm-program summary{cursor:pointer}
.clm-program pre{margin:7px 0;padding:9px 11px;background:#1d302c;color:#e1eee4;border-radius:6px;overflow:auto;max-height:250px;font:13px/1.6 ui-monospace,monospace}
.clm-program ol{margin:5px 0;padding-left:23px;max-height:185px;overflow:auto;color:#4c5b54}.clm-program ol li{padding:2px 0}
.clm-program [data-live-prints] b,.clm-program [data-fixed-inputs]{font-size:13px}
.clm-air>summary,.clm-offset-details>summary{cursor:pointer;font-weight:600}.clm-air>summary{font-size:16px}.clm-offset-details{margin-top:12px;padding-top:9px;border-top:1px solid var(--border)}.clm-offset-details>summary{font-size:14px}
.clm-breeze{opacity:0}.clm[data-fan=on] .clm-breeze{opacity:1}
.clm[data-controller=python] .clm-layout{grid-template-columns:minmax(0,1.19fr) minmax(0,.9fr)}
.clm[data-controller=python] .clm-left{grid-column:2;grid-row:1;position:sticky;top:9px}
.clm[data-controller=python] .clm-right{grid-column:1;grid-row:1}
.clm-offset-pair input[type=range]{accent-color:var(--clm-channel);width:100%;margin:6px 0;cursor:pointer}
@media(max-width:640px){.clm-controllerbar{gap:6px 8px}.clm-controllerbar button{min-height:36px}.clm-editor-link{font-size:12px}.clm-editor-head select{max-width:180px}}
@media(max-width:1030px){.clm-layout{grid-template-columns:minmax(0,1.3fr) minmax(215px,.8fr);gap:12px}}
@media(max-width:700px){.clm-layout{grid-template-columns:1fr}.clm-panel{padding:13px}.clm-scene{padding:0}.clm-scene header{padding:10px 13px}.clm-tabs button{font-size:13px;padding:7px 10px}.clm-meter{padding:9px 12px}.clm-history table{min-width:410px}.clm-limits input,.clm-offset input{min-height:38px}.clm-history header{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.clm[data-fan=on] .clm-blades{animation:none}}

.clm{container-type:inline-size}
.clm-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:14px}.clm-toolbar .clm-tabs,.clm-toolbar .clm-controllerbar{margin:0}
.clm-controllerbar{padding:4px 7px;border-color:transparent;background:transparent}.clm-editor-head h2{font-size:19px}.clm-program{padding:14px}
@container (max-width:680px){
  .clm[data-controller=python] .clm-layout{display:flex;flex-direction:column;align-items:stretch;gap:10px}
  .clm[data-controller=python] .clm-left{order:0;position:sticky;top:0;z-index:3;gap:0;background:var(--bg);border-radius:12px;box-shadow:0 3px 8px #263d2c12}
  .clm[data-controller=python] .clm-right{order:1}
  .clm[data-controller=python] .clm-scene{display:grid;grid-template-columns:44% 56%;border-radius:10px 10px 0 0}
  .clm[data-controller=python] .clm-scene header{grid-column:1/-1;padding:5px 10px}.clm[data-controller=python] .clm-scene h2{font-size:15px}
  .clm[data-controller=python] .clm-room{height:72px;align-self:center}
  .clm[data-controller=python] .clm-readings{border:0;background:white;align-items:center}
  .clm[data-controller=python] .clm-meter{padding:3px 6px}.clm[data-controller=python] .clm-meter>span{font-size:11px}.clm[data-controller=python] .clm-meter b{font-size:19px}.clm[data-controller=python] .clm-meter small{font-size:10px}.clm[data-controller=python] .clm-meter p{font-size:10px}
  .clm[data-controller=python] .clm-reason{grid-column:1/-1;padding:3px 10px;font-size:12px}
  .clm[data-controller=python] .clm-air{border-top:0;border-radius:0 0 10px 10px;padding:7px 10px}
  .clm[data-controller=python] .clm-air-body{max-height:34dvh;overflow-y:auto;overscroll-behavior:contain;padding:0 4px 5px}
  .clm-editor-head{align-items:flex-start}.clm-editor-head label{width:100%;justify-content:space-between}.clm-editor-head select{flex:1;max-width:100%}
}
@media(max-height:560px){
  @container (max-width:680px){
    .clm[data-controller=python] .clm-room{height:46px}
    .clm[data-controller=python] .clm-scene header{padding:2px 8px}
    .clm[data-controller=python] .clm-air-body{max-height:23dvh}
  }
}
@container (max-width:680px){.clm-toolbar{gap:4px;margin-bottom:9px}.clm-toolbar .clm-controllerbar{padding-left:0}.pm-inline input,.pm-inline button,.pm-inline select{scroll-margin-top:190px}}
