
/* ========================================================================== */
/* BroodIt Dashboard Studio + Smart Tools UI                                  */
/* ========================================================================== */
.dashboard-commandbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px;padding:10px 12px;border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--card) 92%,var(--blue) 8%),var(--card));border-radius:18px;box-shadow:var(--shadow)}
.dashboard-commandbar .dashboard-page-tabs{display:flex;align-items:center;gap:7px;flex:1;overflow:auto;scrollbar-width:none}.dashboard-page-tabs::-webkit-scrollbar{display:none}
.dashboard-page-tab{border:1px solid var(--line);background:var(--soft);color:var(--text);border-radius:999px;padding:8px 12px;font-weight:800;white-space:nowrap;cursor:pointer}.dashboard-page-tab.active{background:linear-gradient(135deg,var(--blue),var(--teal));color:white;border-color:transparent;box-shadow:0 8px 22px rgba(15,116,230,.2)}
.dashboard-tools{display:flex;gap:7px;align-items:center}.dashboard-tools .btn{min-height:36px;padding:8px 12px}.dashboard-edit-only{display:none}.dashboard-editing .dashboard-edit-only{display:inline-flex}.dashboard-editing .dashboard-normal-only{display:none}
#customDashboardGrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;align-items:stretch}.studio-widget-host{grid-column:span var(--studio-span,4);min-width:0;margin:0!important;height:auto;position:relative;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.studio-widget-host[hidden]{display:none!important}.studio-widget-host.studio-size-s{--studio-span:3}.studio-widget-host.studio-size-m{--studio-span:4}.studio-widget-host.studio-size-l{--studio-span:6}.studio-widget-host.studio-size-xl{--studio-span:12}.studio-widget-host.studio-dragging{opacity:.55;transform:scale(.985)}
.studio-original-layout{display:none!important}.studio-widget-controls{display:none;position:absolute;z-index:50;left:8px;right:8px;top:8px;align-items:center;gap:6px;padding:5px 7px;border-radius:12px;background:color-mix(in srgb,var(--card) 90%,transparent);border:1px solid color-mix(in srgb,var(--blue) 40%,var(--line));box-shadow:0 8px 24px rgba(2,12,26,.2);backdrop-filter:blur(12px)}.dashboard-editing .studio-widget-controls{display:flex}.studio-widget-controls strong{font-size:11px;text-transform:uppercase;letter-spacing:.06em;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.studio-widget-controls button{width:29px;height:29px;border-radius:9px;border:1px solid var(--line);background:var(--soft);color:var(--text);cursor:pointer;font-weight:900;display:grid;place-items:center}.studio-widget-controls button:hover{border-color:var(--blue);color:var(--blue)}.studio-drag-handle{cursor:grab!important;touch-action:none}.studio-drag-handle:active{cursor:grabbing!important}.dashboard-editing .studio-widget-host{outline:1px dashed color-mix(in srgb,var(--blue) 55%,transparent);outline-offset:2px;padding-top:48px!important}.dashboard-editing .studio-widget-host.sv-widget,.dashboard-editing .pid-adjustable{pointer-events:auto}.dashboard-editing .studio-widget-host>*:not(.studio-widget-controls){pointer-events:none}
.dashboard-empty{grid-column:1/-1;text-align:center;padding:46px 24px;border:1px dashed var(--line);border-radius:22px;background:var(--soft);color:var(--muted)}.dashboard-empty strong{display:block;color:var(--text);font-size:20px;margin-bottom:7px}
.studio-dynamic-card{padding:18px}.studio-kpi-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.studio-kpi-head span{font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.studio-live-pill{padding:4px 8px;border-radius:999px;background:rgba(26,194,151,.12);color:#19a878;font-size:10px;font-weight:900}.studio-live-pill.warn{background:rgba(245,158,11,.12);color:#d28500}.studio-big-value{font-size:34px;font-weight:900;letter-spacing:-.04em;margin:14px 0 4px}.studio-subgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.studio-subgrid>div{padding:9px;border-radius:12px;background:var(--soft);border:1px solid var(--line)}.studio-subgrid span{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;font-weight:800}.studio-subgrid b{font-size:13px}.studio-output-symbol{font-size:31px;line-height:1;margin:14px 0 8px}.studio-mini-bar{height:6px;background:var(--soft);border-radius:999px;overflow:hidden;margin-top:11px}.studio-mini-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--teal));border-radius:inherit}.studio-alert-mini{display:grid;gap:8px;margin-top:10px}.studio-alert-mini>div{padding:8px 10px;border-radius:11px;background:var(--soft);border-left:3px solid #f59e0b;font-size:12px}.studio-quick-setpoints{display:grid;gap:10px;margin-top:12px}.studio-quick-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border-radius:12px;background:var(--soft)}.studio-quick-row strong{min-width:72px;text-align:center}.studio-quick-row button{width:32px;height:32px;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--text);font-size:18px;font-weight:900;cursor:pointer}
.widget-library{display:grid;gap:14px}.widget-library-toolbar{display:flex;gap:8px;align-items:center}.widget-library-toolbar input{flex:1}.widget-library-category h4{margin:12px 0 7px}.widget-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.widget-library-item{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:14px;background:var(--soft)}.widget-library-item .wl-icon{width:34px;height:34px;border-radius:10px;background:color-mix(in srgb,var(--blue) 12%,var(--card));display:grid;place-items:center;font-size:18px}.widget-library-item div:nth-child(2){min-width:0;flex:1}.widget-library-item strong{display:block;font-size:13px}.widget-library-item small{display:block;color:var(--muted);font-size:10px}.widget-library-item button{padding:6px 9px;font-size:11px}.widget-library-item.unsupported{opacity:.55}.widget-library-item.unsupported button{pointer-events:none}
.smarttools-shell{display:grid;gap:14px}.smarttools-tabs{display:flex;gap:7px;overflow:auto;padding-bottom:2px;scrollbar-width:none}.smarttools-tabs::-webkit-scrollbar{display:none}.smart-tab{border:1px solid var(--line);background:var(--card);color:var(--text);padding:9px 13px;border-radius:999px;font-weight:850;white-space:nowrap;cursor:pointer}.smart-tab.active{background:linear-gradient(135deg,var(--blue),var(--teal));color:white;border-color:transparent}.smart-panel{display:none}.smart-panel.active{display:block}.smart-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.smart-card{grid-column:span 6}.smart-card.wide{grid-column:1/-1}.smart-card.third{grid-column:span 4}.smart-card h3{margin-top:0}.smart-card .muted{font-size:12px}.smart-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.smart-status{font-size:10px;font-weight:900;padding:5px 8px;border-radius:999px;background:rgba(26,194,151,.12);color:#168d6c}.smart-status.pending{background:rgba(245,158,11,.12);color:#c77d00}.smart-status.off{background:rgba(148,163,184,.16);color:var(--muted)}.profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.profile-tile{padding:12px;border:1px solid var(--line);border-radius:15px;background:var(--soft);cursor:pointer}.profile-tile:hover{border-color:var(--blue)}.profile-tile strong{display:block}.profile-tile span{font-size:11px;color:var(--muted)}.profile-tile button{margin-top:9px;width:100%}.stage-table{display:grid;gap:7px}.stage-row{display:grid;grid-template-columns:1fr .8fr .8fr .8fr .8fr;gap:7px;align-items:center;padding:8px;border-radius:12px;background:var(--soft)}.stage-row>span:first-child{font-weight:850}.stage-row input{min-width:0;width:100%}.feature-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.feature-form-grid label{font-size:11px}.feature-form-grid .full{grid-column:1/-1}.smart-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.smart-metric{padding:12px;border-radius:14px;background:var(--soft);border:1px solid var(--line)}.smart-metric span{display:block;font-size:10px;color:var(--muted);text-transform:uppercase;font-weight:800}.smart-metric strong{display:block;font-size:18px;margin-top:4px}.health-rail{display:grid;gap:7px}.health-row{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:12px;background:var(--soft)}.health-row i{width:10px;height:10px;border-radius:50%;background:#19b37d;box-shadow:0 0 0 4px rgba(25,179,125,.1)}.health-row.warn i{background:#f59e0b}.health-row.off i{background:#94a3b8}.health-row div{flex:1}.health-row strong,.health-row span{display:block}.health-row span{font-size:10px;color:var(--muted)}.maintenance-list{display:grid;gap:8px}.maintenance-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:9px;border-radius:12px;background:var(--soft)}.maintenance-row small{color:var(--muted)}.audit-list{display:grid;gap:7px;max-height:340px;overflow:auto}.audit-item{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:start;padding:9px;border-radius:12px;background:var(--soft)}.audit-item .audit-dot{width:9px;height:9px;border-radius:50%;background:var(--blue);margin-top:5px}.audit-item p{margin:0;font-size:12px}.audit-item time{font-size:10px;color:var(--muted)}.fleet-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.fleet-device{padding:12px;border:1px solid var(--line);border-radius:15px;background:var(--soft)}.fleet-device-head{display:flex;justify-content:space-between;gap:8px}.fleet-device .fleet-values{display:flex;gap:13px;margin-top:12px}.fleet-device .fleet-values b{font-size:18px}.farm-map{min-height:260px;border-radius:18px;border:1px solid var(--line);background:radial-gradient(circle at 30% 40%,rgba(42,203,212,.14),transparent 25%),radial-gradient(circle at 65% 58%,rgba(31,111,235,.12),transparent 27%),var(--soft);position:relative;overflow:hidden}.farm-map:before,.farm-map:after{content:"";position:absolute;inset:15% -10%;border:1px solid color-mix(in srgb,var(--blue) 20%,transparent);border-radius:45%}.farm-map:after{inset:-20% 20%;transform:rotate(25deg)}.farm-pin{position:absolute;transform:translate(-50%,-50%);z-index:2;padding:7px 9px;border-radius:999px;background:var(--card);border:1px solid var(--blue);box-shadow:0 8px 22px rgba(5,20,40,.2);font-size:11px;font-weight:850}.firmware-channel{display:flex;gap:8px;flex-wrap:wrap}.firmware-channel label{display:flex;align-items:center;gap:5px;padding:8px 10px;border-radius:12px;background:var(--soft);border:1px solid var(--line)}.compat-box{padding:13px;border-radius:14px;background:var(--soft);border:1px solid var(--line);margin-top:10px}.report-actions-pro{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.language-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-radius:14px;background:var(--soft);border:1px solid var(--line)}.kiosk-mode .sidebar,.kiosk-mode .topbar,.kiosk-mode .mobile-bottom-nav{display:none!important}.kiosk-mode .main{margin:0!important;padding:14px!important;max-width:none!important}.kiosk-mode #view-overview{display:block!important}.kiosk-exit{position:fixed;z-index:9999;right:14px;top:14px;display:none}.kiosk-mode .kiosk-exit{display:block}
@media(max-width:1100px){#customDashboardGrid{grid-template-columns:repeat(8,minmax(0,1fr))}.studio-widget-host.studio-size-s{--studio-span:4}.studio-widget-host.studio-size-m{--studio-span:4}.studio-widget-host.studio-size-l{--studio-span:8}.studio-widget-host.studio-size-xl{--studio-span:8}.smart-card,.smart-card.third{grid-column:span 6}.profile-grid,.fleet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.dashboard-commandbar{padding:8px;margin:0 0 10px;border-radius:15px}.dashboard-tools{width:100%;justify-content:flex-end}.dashboard-tools .btn{flex:1}.dashboard-page-tabs{width:100%}#customDashboardGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.studio-widget-host.studio-size-s{--studio-span:1}.studio-widget-host.studio-size-m,.studio-widget-host.studio-size-l,.studio-widget-host.studio-size-xl{--studio-span:2}.dashboard-editing .studio-widget-host{padding-top:46px!important}.widget-library-grid{grid-template-columns:1fr}.smart-grid{grid-template-columns:1fr}.smart-card,.smart-card.third,.smart-card.wide{grid-column:1/-1}.profile-grid,.fleet-grid{grid-template-columns:1fr}.stage-row{grid-template-columns:1fr 1fr}.stage-row>span:first-child{grid-column:1/-1}.feature-form-grid{grid-template-columns:1fr}.feature-form-grid .full{grid-column:auto}.smart-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.studio-big-value{font-size:28px}.studio-widget-controls{left:6px;right:6px;top:6px}.studio-widget-controls button{width:28px;height:28px}.studio-widget-controls strong{font-size:10px}}
@media print{.sidebar,.topbar,.mobile-bottom-nav,.dashboard-commandbar,.build-version,.report-actions-pro,.smarttools-tabs{display:none!important}.main{margin:0!important;padding:0!important}.view{display:none!important}#view-reports{display:block!important}.card{box-shadow:none!important;border:1px solid #bbb!important;color:#111!important;background:white!important}html,body{background:white!important;color:#111!important}}


/* === V2.9.1 / V2.11.1 Blynk-style gesture studio ========================== */
.dashboard-gesture-hint{flex:1 0 100%;padding:7px 10px;border-radius:12px;background:color-mix(in srgb,var(--blue) 8%,var(--soft));border:1px dashed color-mix(in srgb,var(--blue) 35%,var(--line));font-size:11px;color:var(--muted)}.dashboard-gesture-hint b{color:var(--text)}
.dashboard-editing .studio-widget-host{touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}.dashboard-editing .studio-widget-host:active{cursor:grabbing}.dashboard-editing .studio-widget-host>*:not(.studio-widget-controls):not(.studio-resize-corner){pointer-events:none}.dashboard-editing .studio-widget-controls,.dashboard-editing .studio-resize-corner{pointer-events:auto}
.studio-resize-corner{display:none;position:absolute;z-index:60;right:5px;bottom:5px;width:31px;height:31px;border-radius:10px 0 14px 0;align-items:center;justify-content:center;background:linear-gradient(135deg,transparent 0 36%,color-mix(in srgb,var(--blue) 76%,white) 37% 42%,transparent 43% 55%,color-mix(in srgb,var(--teal) 80%,white) 56% 62%,transparent 63%);color:var(--text);font-size:15px;cursor:nwse-resize;opacity:.85}.dashboard-editing .studio-resize-corner{display:flex}
.studio-drag-origin{opacity:.22!important;outline:2px dashed var(--teal)!important;outline-offset:4px!important;background:color-mix(in srgb,var(--teal) 6%,var(--card))!important}.studio-picked{transform:scale(.992)}.studio-drag-ghost{position:fixed!important;z-index:99999!important;margin:0!important;pointer-events:none!important;opacity:.94!important;transform:rotate(.35deg) scale(1.02)!important;box-shadow:0 26px 70px rgba(0,0,0,.42),0 0 0 2px color-mix(in srgb,var(--teal) 75%,white)!important;filter:saturate(1.05);overflow:hidden}.studio-drag-ghost>*{pointer-events:none!important}.studio-pinching{outline:2px solid var(--teal)!important;box-shadow:0 0 0 6px color-mix(in srgb,var(--teal) 10%,transparent),var(--shadow)!important;transform:scale(1.012)}.studio-pinching:after{content:'PINCH TO RESIZE';position:absolute;z-index:80;left:50%;bottom:10px;transform:translateX(-50%);padding:5px 9px;border-radius:999px;background:rgba(4,20,36,.86);border:1px solid color-mix(in srgb,var(--teal) 55%,transparent);color:#fff;font-size:9px;font-weight:900;letter-spacing:.08em;pointer-events:none}.studio-gesture-active{overscroll-behavior:none}

/* Operational button widget styles */
.control-widget-shell{display:grid;gap:10px;place-items:center;padding:7px 0}.control-widget-shell>small{font-size:10px;color:var(--muted);text-align:center}.control-style{width:100%;min-height:108px;border:0;cursor:pointer;display:grid;place-items:center;align-content:center;gap:4px;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;color:var(--text)}.control-style:not(:disabled):active{transform:scale(.975)}.control-style:disabled{cursor:not-allowed;opacity:.58}.control-icon{font-size:28px;line-height:1}.control-label{font-size:12px;font-weight:900}.control-state{font-size:10px;font-weight:900;letter-spacing:.09em}.control-style-power{max-width:132px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 26%,rgba(255,255,255,.28),transparent 23%),linear-gradient(145deg,color-mix(in srgb,var(--card) 75%,#fff 25%),var(--soft));border:1px solid var(--line);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 12px 28px rgba(0,0,0,.18)}.control-style-power.is-on{color:#fff;background:radial-gradient(circle at 35% 26%,rgba(255,255,255,.35),transparent 22%),linear-gradient(145deg,#ff7a2a,#e54422);box-shadow:0 12px 32px rgba(239,94,36,.32),inset 0 1px 0 rgba(255,255,255,.35)}
.control-style-glass{border-radius:999px;min-height:76px;padding:0 22px;background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.03)),color-mix(in srgb,var(--blue) 9%,var(--card));border:1px solid color-mix(in srgb,var(--blue) 45%,var(--line));box-shadow:inset 0 2px 2px rgba(255,255,255,.18),0 10px 25px rgba(0,0,0,.16)}.control-style-glass.is-on{background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(255,255,255,.04)),linear-gradient(135deg,var(--blue),var(--teal));color:white;box-shadow:0 12px 34px color-mix(in srgb,var(--blue) 30%,transparent)}
.control-style-neon{border-radius:19px;background:var(--soft);border:1px solid color-mix(in srgb,var(--blue) 48%,var(--line));box-shadow:inset 0 0 24px color-mix(in srgb,var(--blue) 7%,transparent)}.control-style-neon.is-on{color:#fff;background:linear-gradient(135deg,#0b47b9,#01a6c8);box-shadow:0 0 0 1px rgba(56,225,255,.3),0 0 28px rgba(21,164,236,.3),inset 0 0 20px rgba(92,231,255,.13)}
.control-style-segmented{min-height:78px;border-radius:15px;background:linear-gradient(90deg,color-mix(in srgb,var(--card) 88%,var(--blue) 12%) 0 49%,var(--soft) 49% 51%,color-mix(in srgb,var(--card) 88%,var(--teal) 12%) 51% 100%);border:1px solid var(--line)}.control-style-segmented.is-on{background:linear-gradient(90deg,color-mix(in srgb,var(--blue) 76%,#fff 24%) 0 49%,rgba(255,255,255,.28) 49% 51%,color-mix(in srgb,var(--teal) 76%,#fff 24%) 51% 100%);color:#fff}
.control-style-outline{border-radius:18px;background:transparent;border:2px solid color-mix(in srgb,var(--blue) 55%,var(--line));box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--blue) 4%,transparent)}.control-style-outline.is-on{color:var(--teal);border-color:var(--teal);box-shadow:0 0 25px color-mix(in srgb,var(--teal) 22%,transparent),inset 0 0 20px color-mix(in srgb,var(--teal) 7%,transparent)}
.control-style-orb{max-width:160px;border-radius:42% 58% 55% 45% / 55% 43% 57% 45%;background:radial-gradient(circle at 38% 30%,rgba(255,255,255,.28),transparent 20%),linear-gradient(145deg,color-mix(in srgb,var(--teal) 20%,var(--card)),var(--soft));border:1px solid color-mix(in srgb,var(--teal) 35%,var(--line));box-shadow:inset -8px -10px 20px rgba(0,0,0,.08),0 13px 28px rgba(0,0,0,.14)}.control-style-orb.is-on{color:#fff;background:radial-gradient(circle at 38% 30%,rgba(255,255,255,.35),transparent 20%),linear-gradient(145deg,#16c4c8,#0877d8)}
.mode-button-widget{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:7px;border-radius:17px;background:var(--soft);border:1px solid var(--line)}.mode-choice{min-height:54px;border:1px solid transparent;border-radius:13px;background:transparent;color:var(--muted);font-weight:950;letter-spacing:.06em;cursor:pointer}.mode-choice.active{background:linear-gradient(135deg,var(--blue),var(--teal));color:white;box-shadow:0 8px 24px color-mix(in srgb,var(--blue) 22%,transparent)}

/* Sliders */
.studio-slider-stack{display:grid;gap:13px}.studio-slider{display:grid;gap:8px;padding:11px 12px;border-radius:15px;background:var(--soft);border:1px solid var(--line)}.studio-slider.disabled{opacity:.5}.slider-head,.slider-scale{display:flex;align-items:center;justify-content:space-between;gap:10px}.slider-head b{font-size:12px}.slider-head output{font-size:14px;font-weight:950;color:var(--blue)}.slider-scale small{font-size:9px;color:var(--muted)}.studio-slider input[type=range]{width:100%;height:28px;appearance:none;-webkit-appearance:none;background:transparent;cursor:pointer}.studio-slider input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--blue) 78%,#fff),color-mix(in srgb,var(--teal) 82%,#fff));box-shadow:inset 0 1px 2px rgba(0,0,0,.22)}.studio-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:25px;height:25px;border-radius:50%;margin-top:-8.5px;background:radial-gradient(circle at 35% 28%,#fff 0 13%,#dff4ff 14% 28%,#4ea9ff 29% 62%,#126cd1 63% 100%);border:2px solid #fff;box-shadow:0 4px 12px rgba(4,70,150,.36)}.studio-slider input[type=range]::-moz-range-track{height:8px;border-radius:999px;background:linear-gradient(90deg,var(--blue),var(--teal))}.studio-slider input[type=range]::-moz-range-thumb{width:23px;height:23px;border-radius:50%;background:#38a7ff;border:2px solid #fff;box-shadow:0 4px 12px rgba(4,70,150,.36)}.slider-note{display:block;margin-top:9px;color:var(--muted);font-size:10px;line-height:1.45}
.dashboard-editing .control-style,.dashboard-editing .mode-choice,.dashboard-editing .studio-slider input{pointer-events:none!important}
@media(max-width:760px){.dashboard-gesture-hint{font-size:10px;line-height:1.35}.studio-resize-corner{display:none!important}.studio-drag-ghost{max-width:calc(100vw - 20px)!important}.control-style{min-height:94px}.control-style-power{max-width:118px}.studio-pinching:after{bottom:6px}.dashboard-editing .studio-widget-host{min-height:110px}}
/* Size steps also change vertical footprint, so pinch changes remain visible on narrow screens. */
.studio-widget-host.studio-size-s{--studio-minh:150px}.studio-widget-host.studio-size-m{--studio-minh:180px}.studio-widget-host.studio-size-l{--studio-minh:230px}.studio-widget-host.studio-size-xl{--studio-minh:280px}.studio-dynamic-card{min-height:var(--studio-minh,auto)}
@media(max-width:760px){.studio-widget-host.studio-size-s{--studio-minh:145px}.studio-widget-host.studio-size-m{--studio-minh:180px}.studio-widget-host.studio-size-l{--studio-minh:255px}.studio-widget-host.studio-size-xl{--studio-minh:330px}.studio-dynamic-card{min-height:var(--studio-minh,auto)}}

/* === V2.9.2 / V2.11.2 Free Canvas performance engine ===================== */
#customDashboardGrid{display:block!important;position:relative;min-height:540px;width:100%;overflow:visible;contain:layout style}.studio-widget-host{position:absolute!important;grid-column:auto!important;margin:0!important;min-width:0!important;min-height:0!important;max-width:none!important;box-sizing:border-box;overflow:auto;contain:layout paint style;transition:box-shadow .14s ease,opacity .14s ease!important}.studio-widget-host[hidden]{display:none!important}.dashboard-editing .studio-widget-host{padding-top:46px!important;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;outline:1px dashed color-mix(in srgb,var(--blue) 55%,transparent);outline-offset:2px;will-change:left,top,width,height}.dashboard-editing .studio-widget-host:active{cursor:grabbing}.studio-widget-controls{left:6px;right:6px;top:6px}.studio-dimension-label{font-size:9px;font-weight:900;color:var(--muted);white-space:nowrap}.studio-resize-corner{display:none!important}.studio-resize-handle{display:none;position:absolute;z-index:80;width:24px;height:24px;touch-action:none}.dashboard-editing .studio-resize-handle{display:block}.studio-resize-nw{left:-4px;top:-4px;cursor:nwse-resize}.studio-resize-ne{right:-4px;top:-4px;cursor:nesw-resize}.studio-resize-sw{left:-4px;bottom:-4px;cursor:nesw-resize}.studio-resize-se{right:-4px;bottom:-4px;cursor:nwse-resize}.studio-resize-handle:after{content:'';position:absolute;width:9px;height:9px;border:2px solid var(--teal);background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 10%,transparent)}.studio-resize-nw:after{left:2px;top:2px;border-right:0;border-bottom:0}.studio-resize-ne:after{right:2px;top:2px;border-left:0;border-bottom:0}.studio-resize-sw:after{left:2px;bottom:2px;border-right:0;border-top:0}.studio-resize-se:after{right:2px;bottom:2px;border-left:0;border-top:0}.studio-moving{z-index:1000!important;cursor:grabbing!important;opacity:.96;box-shadow:0 24px 65px rgba(0,0,0,.34),0 0 0 2px color-mix(in srgb,var(--teal) 75%,white)!important}.studio-resizing{z-index:1001!important;box-shadow:0 18px 55px rgba(0,0,0,.28),0 0 0 2px color-mix(in srgb,var(--blue) 72%,white)!important}.studio-pinching:after{content:'PINCH · CONTINUOUS RESIZE';position:absolute;z-index:90;left:50%;bottom:8px;transform:translateX(-50%);padding:5px 9px;border-radius:999px;background:rgba(4,20,36,.9);color:white;font-size:9px;font-weight:950;letter-spacing:.06em;pointer-events:none;white-space:nowrap}.dashboard-empty{position:absolute;inset:0 auto auto 0;width:100%;box-sizing:border-box}.studio-widget-host.studio-size-s,.studio-widget-host.studio-size-m,.studio-widget-host.studio-size-l,.studio-widget-host.studio-size-xl{--studio-span:auto;--studio-minh:auto}.studio-dynamic-card{min-height:0!important;height:100%;box-sizing:border-box}.dashboard-editing .control-style,.dashboard-editing .mode-choice,.dashboard-editing .studio-slider input{pointer-events:none!important}.dashboard-editing .studio-widget-host>*:not(.studio-widget-controls):not(.studio-resize-handle){pointer-events:none}.dashboard-editing .studio-widget-controls,.dashboard-editing .studio-resize-handle{pointer-events:auto}.studio-gesture-active{overscroll-behavior:none}.dashboard-gesture-hint{flex:1 0 100%}
@media(max-width:760px){#customDashboardGrid{min-height:620px}.studio-resize-handle{width:28px;height:28px}.studio-widget-controls strong{font-size:9px}.studio-dimension-label{font-size:8px}.dashboard-editing .studio-widget-host{padding-top:44px!important}.studio-pinching:after{font-size:8px}}

/* === V2.11.3 Responsive FreeCanvas (mobile-first) ========================== */
/* Continuous geometry + responsive widget internals + collision-safe drop. */
#customDashboardGrid{
  display:block!important;
  position:relative!important;
  width:100%!important;
  min-height:620px;
  overflow:visible!important;
  contain:layout style;
  isolation:isolate;
}
.studio-widget-host{
  position:absolute!important;
  box-sizing:border-box!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
  overflow:hidden!important;
  container-type:size;
  container-name:studioWidget;
  contain:layout paint style;
  transition:left .18s cubic-bezier(.2,.75,.25,1),top .18s cubic-bezier(.2,.75,.25,1),width .18s cubic-bezier(.2,.75,.25,1),height .18s cubic-bezier(.2,.75,.25,1),box-shadow .15s ease,opacity .15s ease!important;
  --studio-scale:1;
}
.studio-widget-host:not(.studio-settling){transition:box-shadow .15s ease,opacity .15s ease!important}
.studio-widget-host[hidden]{display:none!important}
.studio-widget-host.card{padding:clamp(7px,3.5cqw,15px)!important}
.studio-dynamic-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr);gap:clamp(4px,1.5cqh,10px);padding:clamp(7px,3.5cqw,16px)!important}
.studio-dynamic-content{min-width:0;min-height:0;overflow:hidden;align-self:stretch}

/* Edit mode no longer adds top padding, so content does not jump or sink. */
.dashboard-editing .studio-widget-host{
  padding-top:clamp(7px,3.5cqw,15px)!important;
  touch-action:none!important;
  user-select:none;
  -webkit-user-select:none;
  cursor:grab;
  outline:1px dashed color-mix(in srgb,var(--blue) 58%,transparent);
  outline-offset:2px;
}
.dashboard-editing .studio-widget-host>*:not(.studio-widget-controls):not(.studio-resize-handle){pointer-events:none!important}
.dashboard-editing .studio-widget-controls,.dashboard-editing .studio-resize-handle{pointer-events:auto!important}
.studio-widget-controls{
  display:none;
  position:absolute!important;
  z-index:95;
  left:5px!important;right:5px!important;top:5px!important;
  min-width:0;
  align-items:center;
  gap:4px!important;
  padding:4px 5px!important;
  border-radius:11px!important;
  background:color-mix(in srgb,var(--card) 90%,transparent)!important;
  border:1px solid color-mix(in srgb,var(--blue) 42%,var(--line))!important;
  box-shadow:0 8px 22px rgba(2,12,26,.2)!important;
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.dashboard-editing .studio-widget-controls{display:flex!important}
.studio-widget-controls strong{min-width:0;flex:1;font-size:clamp(7px,2.6cqw,10px)!important;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.studio-widget-controls button{width:26px!important;height:26px!important;min-width:26px;border-radius:8px!important;padding:0!important}
.studio-dimension-label{font-size:clamp(7px,2.25cqw,9px)!important}

/* Eight independent resize zones: width, height, or both. */
.studio-resize-handle{display:none!important;position:absolute!important;z-index:100;touch-action:none!important}
.dashboard-editing .studio-resize-handle{display:block!important}
.studio-resize-nw,.studio-resize-ne,.studio-resize-se,.studio-resize-sw{width:27px!important;height:27px!important}
.studio-resize-nw{left:-5px;top:-5px;cursor:nwse-resize}.studio-resize-ne{right:-5px;top:-5px;cursor:nesw-resize}.studio-resize-se{right:-5px;bottom:-5px;cursor:nwse-resize}.studio-resize-sw{left:-5px;bottom:-5px;cursor:nesw-resize}
.studio-resize-n,.studio-resize-s{left:31px;right:31px;height:18px!important}.studio-resize-n{top:-7px;cursor:ns-resize}.studio-resize-s{bottom:-7px;cursor:ns-resize}
.studio-resize-e,.studio-resize-w{top:31px;bottom:31px;width:18px!important}.studio-resize-e{right:-7px;cursor:ew-resize}.studio-resize-w{left:-7px;cursor:ew-resize}
.studio-resize-handle:after{content:'';position:absolute!important;background:var(--card)!important;border-color:var(--teal)!important;opacity:.95}
.studio-resize-n:after,.studio-resize-s:after{width:34px!important;height:4px!important;border:0!important;border-radius:999px;left:50%!important;top:50%!important;transform:translate(-50%,-50%);background:var(--teal)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 10%,transparent)!important}
.studio-resize-e:after,.studio-resize-w:after{width:4px!important;height:34px!important;border:0!important;border-radius:999px;left:50%!important;top:50%!important;transform:translate(-50%,-50%);background:var(--teal)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 10%,transparent)!important}

/* Lightweight gesture ghost: complex canvases/animations are not repainted while dragging. */
.studio-gesture-source{opacity:.28!important;filter:saturate(.55)}
.studio-gesture-ghost{
  position:absolute;z-index:1200;box-sizing:border-box;pointer-events:none;
  border:2px solid color-mix(in srgb,var(--teal) 82%,white);
  border-radius:14px;
  background:linear-gradient(145deg,color-mix(in srgb,var(--blue) 15%,transparent),color-mix(in srgb,var(--teal) 10%,transparent));
  box-shadow:0 18px 55px rgba(0,0,0,.26),inset 0 0 0 1px rgba(255,255,255,.13);
  backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;gap:8px;
  color:var(--text);font-weight:900;text-align:center;padding:8px;
}
.studio-gesture-ghost span{max-width:70%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}
.studio-gesture-ghost b{font-size:10px;padding:4px 7px;border-radius:999px;background:color-mix(in srgb,var(--card) 85%,transparent)}
.studio-will-shift{outline:2px solid color-mix(in srgb,var(--orange,#f59e0b) 72%,transparent)!important;outline-offset:2px!important}
.studio-will-shift:after{content:'will move';position:absolute;z-index:90;right:7px;bottom:7px;padding:3px 6px;border-radius:999px;background:#b36a00;color:#fff;font-size:8px;font-weight:900;pointer-events:none}
.studio-settling{will-change:left,top,width,height}

/* Generic responsive typography/layout. */
.studio-widget-host .card-title,.studio-widget-host .section-title,.studio-kpi-head{min-width:0;gap:clamp(4px,2cqw,10px)!important;margin-bottom:clamp(3px,1.4cqh,10px)!important}
.studio-widget-host h3{font-size:clamp(8px,3.5cqw,14px)!important;line-height:1.12!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-widget-host .eyebrow{font-size:clamp(6px,2.25cqw,10px)!important;line-height:1.1!important}
.studio-widget-host .muted{font-size:clamp(8px,2.8cqw,12px)!important;line-height:1.25}
.studio-live-pill,.mode-pill,.pill{font-size:clamp(7px,2.4cqw,10px)!important;padding:clamp(2px,.9cqw,4px) clamp(4px,1.8cqw,9px)!important}

/* Gauge widgets: arc scales to both width and height; micro state becomes value-first. */
.studio-widget-host.gauge-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto;align-items:center}
.studio-widget-host.gauge-card .card-title{align-self:start;width:100%}
.studio-widget-host.gauge-card .gauge{
  width:min(84cqw,calc((100cqh - 58px)*1.83),205px)!important;
  max-width:94%!important;
  height:auto!important;
  aspect-ratio:205/112;
  margin:auto!important;
}
.studio-widget-host.gauge-card .gauge:after{left:10%!important;right:10%!important;height:79%!important}
.studio-widget-host.gauge-card .gauge-center strong{font-size:clamp(18px,18cqw,43px)!important}
.studio-widget-host.gauge-card .gauge-center small{font-size:clamp(9px,6cqw,18px)!important}
.studio-widget-host.gauge-card .gauge-center span{font-size:clamp(7px,3.4cqw,13px)!important}
.studio-widget-host.gauge-card .gauge-scale{width:100%;font-size:clamp(7px,2.8cqw,11px)!important;gap:4px}
.studio-widget-host.gauge-card .gauge-scale b{font-size:clamp(8px,3.2cqw,13px)!important}
.studio-density-micro.gauge-card{grid-template-rows:auto minmax(0,1fr)!important}
.studio-density-micro.gauge-card .gauge{width:100%!important;height:100%!important;aspect-ratio:auto!important;overflow:visible!important;display:grid!important;place-items:center;margin:0!important}
.studio-density-micro.gauge-card .gauge:before,.studio-density-micro.gauge-card .gauge:after{display:none!important}
.studio-density-micro.gauge-card .gauge-center{position:static!important;display:flex;align-items:baseline;justify-content:center;gap:2px}
.studio-density-micro.gauge-card .gauge-center span{display:none!important}
.studio-density-micro.gauge-card .gauge-center strong{font-size:clamp(18px,24cqw,34px)!important}
.studio-density-micro.gauge-card .gauge-scale{display:none!important}

/* Backup temperature. */
.studio-widget-host.compact-kpi{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto auto;place-items:center}
.studio-widget-host.compact-kpi .card-title{width:100%;align-self:start}
.studio-widget-host.compact-kpi>strong{font-size:clamp(18px,18cqw,34px)!important;margin:auto 0!important}
.studio-widget-host.compact-kpi>.muted,.studio-widget-host.compact-kpi>.health-line{margin:2px 0!important;font-size:clamp(7px,2.7cqw,12px)!important}
.studio-density-micro.compact-kpi{grid-template-rows:auto minmax(0,1fr)!important}.studio-density-micro.compact-kpi>.muted,.studio-density-micro.compact-kpi>.health-line{display:none!important}

/* Egg turner. */
.studio-widget-host.hero-turn-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto}
.studio-widget-host.hero-turn-card .egg-turner-visual{min-height:0!important;margin:0!important;gap:clamp(2px,1.6cqw,7px)!important;align-self:center}
.studio-widget-host.hero-turn-card .egg-point-down{width:clamp(24px,18cqw,70px)!important;height:auto!important;aspect-ratio:70/96}
.studio-widget-host.hero-turn-card .turn-arrow{font-size:clamp(18px,10cqw,40px)!important}
.studio-widget-host.hero-turn-card .turn-side strong{font-size:clamp(8px,3.3cqw,14px)!important}.studio-widget-host.hero-turn-card .turn-side span{font-size:clamp(6px,2.2cqw,10px)!important}.studio-widget-host.hero-turn-card .turn-side b{font-size:clamp(7px,2.9cqw,12px)!important}
.studio-widget-host.hero-turn-card .turner-caption{font-size:clamp(7px,2.7cqw,11px)!important;margin:0!important}
.studio-density-micro.hero-turn-card .turn-side span,.studio-density-micro.hero-turn-card .turn-arrow{display:none!important}.studio-density-micro.hero-turn-card .egg-turner-visual{grid-template-columns:1fr auto 1fr!important}.studio-density-micro.hero-turn-card .turn-side b{font-size:8px!important}

/* Equipment: always converts to a compact matrix instead of overflowing vertically. */
.studio-widget-host.equipment-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr);overflow:hidden!important}
.studio-widget-host.equipment-card .section-title{min-height:0!important}
.studio-widget-host.equipment-card .equipment-grid{height:100%!important;min-height:0!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important;gap:clamp(2px,1.4cqw,8px)!important}
.studio-widget-host.equipment-card .equipment-tile{min-width:0!important;min-height:0!important;height:auto!important;padding:clamp(2px,1.4cqw,9px)!important;border-radius:clamp(6px,2cqw,10px)!important;display:grid!important;align-content:center;justify-items:center;gap:clamp(1px,.7cqh,5px);overflow:hidden!important}
.studio-widget-host.equipment-card .equipment-tile>b{min-height:0!important;font-size:clamp(6px,2.45cqw,11px)!important;line-height:1.05;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.studio-widget-host.equipment-card .equipment-icon{width:clamp(20px,9cqw,42px)!important;height:clamp(20px,9cqw,42px)!important;font-size:clamp(12px,5cqw,23px)!important;margin:0!important}
.studio-widget-host.equipment-card .output-value{font-size:clamp(6px,2cqw,10px)!important;margin:0!important}.studio-widget-host.equipment-card .mini-progress{width:100%;height:clamp(3px,1cqh,5px)!important;margin:0!important}
.studio-widget-host.equipment-card .pid-equipment-tile{display:grid!important;grid-template-rows:auto minmax(0,1fr) auto;align-items:center}
.studio-widget-host.equipment-card .pid-equipment-head{font-size:clamp(6px,2.2cqw,10px)!important;min-width:0}.studio-widget-host.equipment-card .pid-equipment-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-widget-host.equipment-card .pid-equipment-summary{font-size:clamp(6px,1.8cqw,9px)!important;margin:0!important;min-height:0;overflow:hidden}.studio-widget-host.equipment-card .pid-equipment-summary>div{padding:1px 0!important}.studio-widget-host.equipment-card .pid-equipment-hint{font-size:6px!important}
.studio-short.equipment-card .equipment-icon,.studio-density-micro.equipment-card .equipment-icon,.studio-short.equipment-card .output-value,.studio-short.equipment-card .mini-progress{display:none!important}
.studio-short.equipment-card .equipment-tile{gap:2px!important}.studio-short.equipment-card .equipment-tile>b{font-size:clamp(6px,2.3cqw,9px)!important}.studio-short.equipment-card .pid-equipment-summary,.studio-short.equipment-card .pid-equipment-progress,.studio-short.equipment-card .pid-equipment-hint{display:none!important}
.studio-density-micro.equipment-card .section-title .eyebrow{display:none!important}

/* Incubation progress. */
.studio-widget-host.progress-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto auto auto minmax(0,1fr) auto;gap:clamp(2px,1.1cqh,9px)}
.studio-widget-host.progress-card .progress-big{font-size:clamp(13px,6cqw,22px)!important;margin:0!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.studio-widget-host.progress-card .progress-line{margin:0 30px 0 0!important;height:clamp(4px,1.5cqh,8px)!important}.studio-widget-host.progress-card .progress-meta{margin:0!important;align-self:center}.studio-widget-host.progress-card .progress-meta span{font-size:clamp(6px,2.2cqw,10px)!important}.studio-widget-host.progress-card .progress-meta b{font-size:clamp(7px,2.6cqw,12px)!important;margin-top:2px!important}.studio-widget-host.progress-card .btn{padding:clamp(4px,1.5cqh,9px)!important;font-size:clamp(7px,2.8cqw,11px)!important;min-height:0}
.studio-density-micro.progress-card{grid-template-rows:auto auto auto!important}.studio-density-micro.progress-card .progress-meta,.studio-density-micro.progress-card .btn{display:none!important}
.studio-short.progress-card .progress-meta{display:none!important}

/* Climate chamber: full visual when space exists; compact values when tiny. */
.studio-widget-host.dual-climate-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(2px,1cqh,8px);overflow:hidden!important}
.studio-widget-host.dual-climate-card .dual-climate-title{margin:0!important;min-height:0}.studio-widget-host.dual-climate-card .dual-climate-badges{gap:3px!important;flex-wrap:wrap}.studio-widget-host.dual-climate-card .dual-climate-badge{font-size:clamp(6px,2cqw,9px)!important;padding:2px 4px!important}
.studio-widget-host.dual-climate-card .dual-chamber-viewport{height:100%!important;min-height:0!important;margin:0!important;overflow:hidden!important;border-radius:clamp(7px,2.2cqw,15px)!important}
.studio-widget-host.dual-climate-card .dual-climate-legend{margin:0!important;gap:clamp(3px,2cqw,12px)!important;font-size:clamp(6px,2cqw,9px)!important;flex-wrap:wrap}
.studio-widget-host.dual-climate-card .dual-climate-readout span,.studio-widget-host.dual-climate-card .dual-climate-readout small{font-size:clamp(6px,2.1cqw,10px)!important}.studio-widget-host.dual-climate-card .dual-climate-readout strong{font-size:clamp(13px,7cqw,27px)!important}
.studio-short.dual-climate-card .dual-climate-legend,.studio-density-compact.dual-climate-card .dual-climate-legend{display:none!important}.studio-short.dual-climate-card{grid-template-rows:auto minmax(0,1fr)!important}
.studio-density-micro.dual-climate-card .dual-climate-badges,.studio-density-micro.dual-climate-card .dual-climate-legend,.studio-density-micro.dual-climate-card canvas,.studio-density-micro.dual-climate-card .dual-chamber-frame,.studio-density-micro.dual-climate-card .dual-circ-fan,.studio-density-micro.dual-climate-card .climate-source{display:none!important}
.studio-density-micro.dual-climate-card .dual-chamber-viewport{background:var(--soft)!important;display:grid!important;place-items:center!important}.studio-density-micro.dual-climate-card .dual-climate-side-readouts{position:static!important;inset:auto!important;width:100%!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px!important;padding:4px!important}.studio-density-micro.dual-climate-card .dual-climate-readout{position:static!important;transform:none!important;padding:3px!important;text-align:center!important}.studio-density-micro.dual-climate-card .dual-chamber-status{display:none!important}

/* Trend charts. */
.studio-widget-host.chart-card{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr);overflow:hidden!important}
.studio-widget-host.chart-card .section-title{min-height:0!important;margin:0!important}.studio-widget-host.chart-card canvas{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important}.studio-density-micro.chart-card .chart-legend,.studio-short.chart-card .chart-legend{display:none!important}

/* Dynamic cards. */
.studio-kpi-head h3{margin:2px 0 0!important;font-size:clamp(9px,4cqw,16px)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.studio-kpi-head>div{min-width:0}.studio-kpi-head>div>span{font-size:clamp(6px,2.4cqw,10px)!important}.studio-big-value{font-size:clamp(18px,15cqw,36px)!important;margin:clamp(3px,2cqh,13px) 0 2px!important}.studio-subgrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:clamp(3px,1.5cqw,8px)!important;margin-top:clamp(3px,1.6cqh,11px)!important}.studio-subgrid>div{min-width:0;padding:clamp(4px,2cqw,9px)!important}.studio-subgrid span{font-size:clamp(6px,2.1cqw,10px)!important}.studio-subgrid b{font-size:clamp(8px,3cqw,13px)!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.studio-output-symbol{font-size:clamp(18px,14cqw,31px)!important;margin:clamp(2px,1cqh,12px) 0 2px!important}.studio-mini-bar{margin-top:clamp(2px,1.4cqh,10px)!important}.studio-alert-mini{gap:3px!important;margin-top:4px!important}.studio-alert-mini>div{padding:4px 6px!important;font-size:clamp(6px,2.5cqw,11px)!important;overflow:hidden}.studio-quick-setpoints{gap:4px!important;margin-top:4px!important}.studio-quick-row{padding:clamp(3px,1.4cqw,8px)!important;gap:3px!important}.studio-quick-row span{font-size:clamp(6px,2.5cqw,11px)!important}.studio-quick-row strong{font-size:clamp(7px,3cqw,13px)!important;min-width:0!important}.studio-quick-row button{width:clamp(23px,8cqw,32px)!important;height:clamp(23px,8cqw,32px)!important;font-size:clamp(13px,5cqw,18px)!important}
.studio-density-micro.studio-dynamic-card .studio-kpi-head>div>span,.studio-density-micro.studio-dynamic-card .studio-live-pill{display:none!important}.studio-density-micro.studio-dynamic-card .studio-subgrid>div:nth-child(n+3){display:none!important}.studio-density-micro.studio-dynamic-card .studio-alert-mini>div:nth-child(n+2){display:none!important}.studio-short.studio-dynamic-card .slider-note,.studio-short.studio-dynamic-card .slider-scale{display:none!important}

/* Control buttons and sliders always fit the current box. */
.control-widget-shell{height:100%!important;min-height:0!important;display:grid!important;place-items:center;align-content:center;gap:clamp(2px,1cqh,8px)!important;overflow:hidden}.control-widget-shell>small{font-size:clamp(6px,2.3cqw,10px)!important;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.control-style{width:min(90%,160px)!important;min-height:0!important;height:min(72cqh,110px)!important;padding:clamp(4px,2cqw,14px)!important;gap:clamp(2px,1cqh,6px)!important}.control-icon{font-size:clamp(16px,11cqw,28px)!important}.control-label{font-size:clamp(7px,3cqw,12px)!important}.control-state{font-size:clamp(6px,2.4cqw,10px)!important}.control-style-power{width:min(68cqw,68cqh,132px)!important;height:min(68cqw,68cqh,132px)!important}.studio-density-micro .control-label,.studio-density-micro .control-widget-shell>small{display:none!important}.studio-density-micro .control-style{height:78%!important}.studio-density-micro .control-style-power{width:min(58cqw,58cqh)!important;height:min(58cqw,58cqh)!important}
.mode-button-widget{height:100%!important;min-height:0!important;padding:clamp(3px,1.5cqw,7px)!important;gap:clamp(3px,1.2cqw,8px)!important}.mode-choice{min-height:0!important;height:100%!important;font-size:clamp(7px,3cqw,12px)!important;padding:3px!important}
.studio-slider-stack{gap:clamp(4px,1.8cqh,13px)!important;height:100%;min-height:0}.studio-slider{padding:clamp(4px,2cqw,11px)!important;gap:clamp(2px,1cqh,7px)!important;min-height:0}.slider-head b{font-size:clamp(7px,2.8cqw,12px)!important}.slider-head output{font-size:clamp(8px,3.2cqw,14px)!important}.studio-slider input[type=range]{height:clamp(18px,7cqh,28px)!important}.slider-scale small{font-size:clamp(6px,2cqw,9px)!important}.studio-density-micro .slider-scale,.studio-density-micro .slider-note{display:none!important}.studio-density-micro .studio-slider{padding:3px!important;gap:1px!important}.studio-density-micro .studio-slider-stack .studio-slider:nth-child(n+2){display:none!important}

/* Prevent hidden overflow from old min-height rules. */
.studio-widget-host.gauge-card,.studio-widget-host.compact-kpi,.studio-widget-host.hero-turn-card,.studio-widget-host.equipment-card,.studio-widget-host.progress-card,.studio-widget-host.dual-climate-card,.studio-widget-host.chart-card{min-height:0!important;max-height:none!important}
.studio-widget-host *{box-sizing:border-box}
.dashboard-gesture-hint{flex:1 0 100%;font-size:10px!important;line-height:1.35!important}
.studio-gesture-active{overscroll-behavior:none;touch-action:none}

/* Very small widgets intentionally prioritize primary live information instead of clipping it. */
@container studioWidget (max-width: 145px){
  .card-title .icon{font-size:11px!important}.card-title h3,.section-title h3{font-size:8px!important}.section-title .eyebrow{font-size:6px!important}
}
@container studioWidget (max-height: 105px){
  .studio-live-pill,.section-title .mode-pill{display:none!important}.card-title,.section-title{margin-bottom:1px!important}
}

/* Inline SV/PID controls also adapt when their parent widget is tiny. */
.studio-widget-host .sv-control-strip{width:calc(100% - 10px)!important;max-width:230px!important;min-width:0!important;gap:clamp(3px,2cqw,8px)!important;bottom:5px!important}
.studio-widget-host .sv-water-button{flex:0 1 auto;width:clamp(30px,18cqw,48px)!important;height:clamp(30px,18cqw,44px)!important;min-width:0!important;font-size:clamp(18px,10cqw,27px)!important}
.studio-widget-host .sv-value-pill{flex:1 1 48px!important;min-width:42px!important;max-width:88px!important;height:clamp(30px,16cqw,44px)!important;padding:2px 5px!important}.studio-widget-host .sv-value-pill strong{font-size:clamp(9px,5cqw,15px)!important}.studio-widget-host .sv-value-pill small{font-size:clamp(5px,2cqw,7px)!important}
.studio-widget-host .pid-adjust-panel{max-height:calc(100% - 34px)!important;overflow:hidden!important;padding:clamp(3px,1.5cqw,7px)!important;gap:clamp(2px,1cqh,6px)!important}
.studio-widget-host .pid-adjust-row{grid-template-columns:minmax(15px,24px) minmax(28px,1fr) minmax(42px,1.35fr) minmax(28px,1fr)!important;gap:clamp(2px,1cqw,5px)!important;min-width:0}.studio-widget-host .pid-adjust-panel .sv-water-button{width:100%!important;height:clamp(27px,12cqw,38px)!important;min-width:0!important}.studio-widget-host .pid-adjust-row .sv-value-pill{width:100%!important;min-width:0!important;height:clamp(27px,12cqw,38px)!important}
.studio-density-micro .pid-adjust-panel{position:absolute!important;inset:3px!important;z-index:80!important;margin:0!important;background:var(--card)!important;align-content:center}.studio-density-micro .pid-adjust-row>span{display:none!important}.studio-density-micro .pid-adjust-row{grid-template-columns:1fr 1.2fr 1fr!important}


/* === V2.11.4 geometry authority + collision correctness ================== */
/* The canvas engine owns the outer box. Widget-specific responsive rules may
   adapt INSIDE this box, but must never override the box dimensions. */
#customDashboardGrid > [data-studio-widget].studio-widget-host{
  position:absolute!important;
  width:var(--studio-box-w)!important;
  height:var(--studio-box-h)!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
/* Explicitly defeat earlier host-type height:100% declarations. */
#customDashboardGrid > [data-studio-widget].studio-widget-host.gauge-card,
#customDashboardGrid > [data-studio-widget].studio-widget-host.compact-kpi,
#customDashboardGrid > [data-studio-widget].studio-widget-host.hero-turn-card,
#customDashboardGrid > [data-studio-widget].studio-widget-host.equipment-card,
#customDashboardGrid > [data-studio-widget].studio-widget-host.progress-card,
#customDashboardGrid > [data-studio-widget].studio-widget-host.dual-climate-card,
#customDashboardGrid > [data-studio-widget].studio-widget-host.chart-card,
#customDashboardGrid > [data-studio-widget].studio-widget-host.studio-dynamic-card{
  width:var(--studio-box-w)!important;
  height:var(--studio-box-h)!important;
}
/* Internal content consumes the calculated box rather than growing the host. */
#customDashboardGrid > .studio-widget-host > :not(.studio-widget-controls):not(.studio-resize-handle){
  max-width:100%;
  min-width:0;
}
/* Keep the edit toolbar within tiny boxes without changing outer geometry. */
.dashboard-editing #customDashboardGrid > .studio-widget-host{overflow:visible!important}
.dashboard-editing #customDashboardGrid > .studio-widget-host > :not(.studio-widget-controls):not(.studio-resize-handle){
  overflow:hidden;
}
/* Restore clipping after edit mode. */
body:not(.dashboard-editing) #customDashboardGrid > .studio-widget-host{overflow:hidden!important}

/* === V2.11.5 move/resize persistence ====================================== */
/* Gesture persistence fix is implemented in studio.js. Keep touch targets
   above widget content and ensure the edit overlay receives direct gestures. */
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-widget-controls,
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-resize-handle{
  pointer-events:auto!important;
  touch-action:none!important;
}

/* === V2.11.6 Stable Move & Resize Canvas ================================== */
/* Keep edit controls usable at the supported minimum widget geometry. */
.studio-density-micro .studio-widget-controls strong,
.studio-density-micro .studio-dimension-label{display:none!important}
@container studioWidget (max-width:155px){
  .studio-widget-controls strong,.studio-dimension-label{display:none!important}
  .studio-widget-controls{justify-content:center!important}
}


/* === V2.11.7 Touch Interaction Reliability ================================= */
/* Toolbar always wins hit-testing. V2.11.6 corner handles overlapped the move
   button on the left and the × button on the right, intercepting taps. */
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-widget-controls{
  z-index:180!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-widget-controls button{
  position:relative;
  z-index:181!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-resize-handle{
  z-index:130!important;
}
/* Keep generous touch targets but bias corners outside the content/header. */
.dashboard-editing .studio-resize-nw,.dashboard-editing .studio-resize-ne,
.dashboard-editing .studio-resize-se,.dashboard-editing .studio-resize-sw{
  width:30px!important;height:30px!important;
}
.dashboard-editing .studio-resize-nw{left:-10px!important;top:-10px!important}
.dashboard-editing .studio-resize-ne{right:-10px!important;top:-10px!important}
.dashboard-editing .studio-resize-se{right:-10px!important;bottom:-10px!important}
.dashboard-editing .studio-resize-sw{left:-10px!important;bottom:-10px!important}
.dashboard-editing .studio-resize-n{top:-9px!important;height:17px!important}
.dashboard-editing .studio-resize-s{bottom:-9px!important;height:17px!important}
.dashboard-editing .studio-resize-e{right:-9px!important;width:17px!important}
.dashboard-editing .studio-resize-w{left:-9px!important;width:17px!important}
/* A touch should never create a text selection or delayed synthetic action in
   the edit toolbar. */
.dashboard-editing .studio-widget-controls,
.dashboard-editing .studio-widget-controls *{-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}

/* === V2.12.1 Rebuilt Canvas Controller ===================================== */
/* The widget body is no longer a gesture surface. Only explicit move/resize
   controls own touch input, which keeps normal vertical page scrolling stable
   and removes long-press/pinch ambiguity on Android PWAs. */
.dashboard-editing #customDashboardGrid > .studio-widget-host{
  touch-action:pan-y!important;
  cursor:default!important;
  overflow:hidden!important;
  user-select:none!important;
  -webkit-user-select:none!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-widget-controls{
  z-index:300!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-widget-controls button{
  z-index:301!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-drag-handle{
  touch-action:none!important;
  cursor:grab!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-resize-handle{
  z-index:250!important;
  pointer-events:auto!important;
  touch-action:none!important;
}
/* Keep every resize target INSIDE the widget box. This makes hit-testing
   deterministic and prevents a handle from stealing a neighboring widget or
   toolbar button touch. Top-corner handles live just below the edit toolbar. */
.dashboard-editing .studio-resize-nw,.dashboard-editing .studio-resize-ne,
.dashboard-editing .studio-resize-se,.dashboard-editing .studio-resize-sw{
  width:28px!important;height:28px!important;
}
.dashboard-editing .studio-resize-nw{left:2px!important;top:42px!important}
.dashboard-editing .studio-resize-ne{right:2px!important;top:42px!important}
.dashboard-editing .studio-resize-sw{left:2px!important;bottom:2px!important}
.dashboard-editing .studio-resize-se{right:2px!important;bottom:2px!important}
.dashboard-editing .studio-resize-n{left:42px!important;right:42px!important;top:40px!important;height:16px!important}
.dashboard-editing .studio-resize-s{left:42px!important;right:42px!important;bottom:0!important;height:16px!important}
.dashboard-editing .studio-resize-w{left:0!important;top:72px!important;bottom:32px!important;width:16px!important}
.dashboard-editing .studio-resize-e{right:0!important;top:72px!important;bottom:32px!important;width:16px!important}

/* Move/resize happens on the real widget in V2.12.1, so responsive contents
   reflow immediately and there is no stale ghost geometry to get out of sync. */
.studio-live-edit{
  z-index:1400!important;
  transition:none!important;
  opacity:.96!important;
  box-shadow:0 22px 58px rgba(0,0,0,.30),0 0 0 2px color-mix(in srgb,var(--teal) 74%,white)!important;
  will-change:left,top,width,height!important;
}
.studio-live-edit.studio-resizing{box-shadow:0 22px 58px rgba(0,0,0,.30),0 0 0 2px color-mix(in srgb,var(--blue) 74%,white)!important}
body.studio-gesture-active{overscroll-behavior:none!important}

/* All actual widget content is clipped to the canvas-owned box, including edit
   mode. This prevents a large child's old dimensions from visually appearing
   on top of a neighboring widget while the outer box is being resized. */
#customDashboardGrid > .studio-widget-host > :not(.studio-widget-controls):not(.studio-resize-handle){
  max-width:100%!important;
  max-height:100%!important;
  min-width:0!important;
  min-height:0!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-host > :not(.studio-widget-controls):not(.studio-resize-handle){
  overflow:hidden!important;
}
.studio-canvas-snap{transition:none!important}


/* === V2.12.1 Independent Editor Overlay ==================================== */
/* Widget internals never participate in edit hit-testing. This makes every
   widget use the exact same move/resize/remove/reset interaction surface. */
.dashboard-editing #customDashboardGrid > .studio-widget-host{
  pointer-events:none!important;
  touch-action:auto!important;
  cursor:default!important;
  outline:none!important;
  overflow:hidden!important;
}
/* Legacy in-widget controls remain for migration compatibility but are never
   interactive or visible in V2.12.1. */
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-widget-controls,
.dashboard-editing #customDashboardGrid > .studio-widget-host > .studio-resize-handle{
  display:none!important;
  pointer-events:none!important;
}
#dashboardEditorLayer.dashboard-editor-layer{
  position:absolute!important;
  inset:0 auto auto 0!important;
  width:100%!important;
  height:100%!important;
  min-height:100%!important;
  z-index:5000!important;
  pointer-events:none!important;
  overflow:visible!important;
  contain:layout style;
}
#dashboardEditorLayer[hidden]{display:none!important}
.studio-editor-overlay{
  position:absolute!important;
  box-sizing:border-box!important;
  pointer-events:none!important;
  outline:1px dashed color-mix(in srgb,var(--blue) 62%,transparent);
  outline-offset:2px;
  border-radius:inherit;
  z-index:1;
}
.studio-editor-overlay.studio-editor-active{z-index:50!important}
.studio-editor-toolbar{
  position:absolute!important;
  left:6px!important;right:6px!important;top:6px!important;
  min-height:39px;
  display:flex!important;align-items:center;gap:5px;
  padding:5px 6px!important;
  border-radius:11px!important;
  background:color-mix(in srgb,var(--card) 94%,transparent)!important;
  border:1px solid color-mix(in srgb,var(--blue) 48%,var(--line))!important;
  box-shadow:0 8px 24px rgba(2,12,26,.24)!important;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  pointer-events:auto!important;
  touch-action:manipulation!important;
  z-index:30!important;
}
.studio-editor-toolbar strong{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;text-transform:uppercase;letter-spacing:.055em}
.studio-editor-dim{font-size:9px;font-weight:900;color:var(--muted);white-space:nowrap}
.studio-editor-toolbar button{
  position:relative!important;z-index:31!important;
  width:34px!important;height:34px!important;min-width:34px!important;
  padding:0!important;border-radius:10px!important;
  border:1px solid var(--line)!important;background:var(--soft)!important;color:var(--text)!important;
  display:grid!important;place-items:center!important;font-size:18px!important;font-weight:900!important;
  pointer-events:auto!important;touch-action:none!important;-webkit-tap-highlight-color:transparent;
  user-select:none!important;-webkit-user-select:none!important;
}
.studio-editor-toolbar [data-editor-action="remove"]{font-size:21px!important}
.studio-editor-move{cursor:grab!important}.studio-editor-moving .studio-editor-move{cursor:grabbing!important}
.studio-editor-resize{
  display:block!important;position:absolute!important;z-index:20!important;
  pointer-events:auto!important;touch-action:none!important;
  -webkit-tap-highlight-color:transparent;user-select:none!important;-webkit-user-select:none!important;
}
.studio-editor-resize-nw,.studio-editor-resize-ne,.studio-editor-resize-se,.studio-editor-resize-sw{width:30px!important;height:30px!important}
.studio-editor-resize-nw{left:2px!important;top:48px!important;cursor:nwse-resize}.studio-editor-resize-ne{right:2px!important;top:48px!important;cursor:nesw-resize}
.studio-editor-resize-sw{left:2px!important;bottom:2px!important;cursor:nesw-resize}.studio-editor-resize-se{right:2px!important;bottom:2px!important;cursor:nwse-resize}
.studio-editor-resize-n,.studio-editor-resize-s{left:42px!important;right:42px!important;height:18px!important;cursor:ns-resize}
.studio-editor-resize-n{top:46px!important}.studio-editor-resize-s{bottom:0!important}
.studio-editor-resize-e,.studio-editor-resize-w{top:82px!important;bottom:34px!important;width:18px!important;cursor:ew-resize}
.studio-editor-resize-e{right:0!important}.studio-editor-resize-w{left:0!important}
.studio-editor-resize:after{content:'';position:absolute!important;background:var(--teal)!important;opacity:.95;box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 10%,transparent)!important}
.studio-editor-resize-n:after,.studio-editor-resize-s:after{width:38px;height:5px;border-radius:999px;left:50%;top:50%;transform:translate(-50%,-50%)}
.studio-editor-resize-e:after,.studio-editor-resize-w:after{width:5px;height:38px;border-radius:999px;left:50%;top:50%;transform:translate(-50%,-50%)}
.studio-editor-resize-nw:after,.studio-editor-resize-ne:after,.studio-editor-resize-se:after,.studio-editor-resize-sw:after{width:12px;height:12px;background:var(--card)!important;border:3px solid var(--teal);box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 10%,transparent)!important}
.studio-editor-resize-nw:after{left:2px;top:2px;border-right:0;border-bottom:0}.studio-editor-resize-ne:after{right:2px;top:2px;border-left:0;border-bottom:0}.studio-editor-resize-sw:after{left:2px;bottom:2px;border-right:0;border-top:0}.studio-editor-resize-se:after{right:2px;bottom:2px;border-left:0;border-top:0}
.studio-editor-active{outline-color:var(--teal)!important}
@media(max-width:430px){.studio-editor-toolbar strong,.studio-editor-dim{display:none!important}.studio-editor-toolbar{justify-content:center!important}.studio-editor-toolbar button{width:38px!important;height:38px!important;min-width:38px!important}}

/* Hidden state is authoritative. Some responsive host rules use display:grid!important;
   this selector must outrank them so × Remove actually removes the widget visually. */
#customDashboardGrid > [data-studio-widget].studio-widget-host[hidden]{
  display:none!important;
}
/* External edit overlay means widget content never needs toolbar compensation padding. */
.dashboard-editing #customDashboardGrid > [data-studio-widget].studio-widget-host.card{
  padding:clamp(7px,3.5cqw,15px)!important;
}
.dashboard-editing #customDashboardGrid > [data-studio-widget].studio-widget-host.studio-dynamic-card{
  padding:clamp(7px,3.5cqw,16px)!important;
}

/* === V2.12.2 Responsive Internal Widget Layout =============================
   The canvas owns only the outer rectangle.  These rules make each widget's
   internal presentation react to its OWN width/height instead of inheriting a
   one-size-fits-all compact threshold.  Full -> compact -> micro is selected
   by studio.js per widget type. */
#customDashboardGrid > .studio-widget-host{
  --studio-inner-gap:clamp(3px,1.6cqw,10px);
}
#customDashboardGrid > .studio-widget-host > :not(.studio-widget-controls):not(.studio-resize-handle){
  min-width:0!important;
  min-height:0!important;
}

/* Gauges ------------------------------------------------------------------ */
#customDashboardGrid > .studio-widget-host.gauge-card{
  grid-template-rows:auto minmax(0,1fr) auto!important;
  align-content:stretch!important;
}
#customDashboardGrid > .studio-widget-host.gauge-card .gauge{
  align-self:center!important;
  justify-self:center!important;
  max-height:100%!important;
}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-compact .gauge{
  width:min(76cqw,calc((100cqh - 48px)*1.83),180px)!important;
}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-compact .gauge-center strong{font-size:clamp(20px,17cqw,38px)!important}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro{
  grid-template-rows:auto minmax(0,1fr) auto!important;
}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge{
  width:100%!important;height:100%!important;aspect-ratio:auto!important;overflow:visible!important;display:grid!important;place-items:center!important;margin:0!important;
}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge:before,
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge:after{display:none!important}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge-center{position:static!important;display:flex!important;align-items:baseline!important;justify-content:center!important;gap:2px!important}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge-center span{display:none!important}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge-center strong{font-size:clamp(20px,23cqw,34px)!important}
#customDashboardGrid > .studio-widget-host.gauge-card.studio-fit-micro .gauge-scale{font-size:7px!important}

/* Incubation progress ------------------------------------------------------ */
#customDashboardGrid > .studio-widget-host.progress-card{
  overflow:hidden!important;
  align-content:stretch!important;
}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-compact{
  grid-template-rows:auto auto auto minmax(0,1fr) auto!important;
  gap:clamp(2px,1cqh,6px)!important;
}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-compact .progress-meta{display:none!important}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-compact .progress-big{font-size:clamp(14px,6.5cqw,22px)!important}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-micro{
  grid-template-rows:auto minmax(0,1fr) auto!important;
  gap:2px!important;
}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-micro .progress-meta,
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-micro .progress-line{display:none!important}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-micro .progress-big{align-self:center!important;margin:0!important;font-size:clamp(13px,8cqw,20px)!important}
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-micro .btn{padding:3px 5px!important;font-size:8px!important;min-height:24px!important}

/* Egg turner --------------------------------------------------------------- */
#customDashboardGrid > .studio-widget-host.hero-turn-card{
  overflow:hidden!important;
  align-content:stretch!important;
}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-compact .egg-turner-visual{
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;
  gap:clamp(3px,2cqw,8px)!important;
}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-compact .turn-arrow{display:none!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-compact .egg-point-down{width:min(18cqw,54px)!important;max-height:70%!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro{
  grid-template-rows:auto minmax(0,1fr) auto!important;
}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .egg-turner-visual{grid-template-columns:1fr auto 1fr!important;gap:2px!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .turn-arrow,
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .turn-side span{display:none!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .egg-point-down{width:min(17cqw,38px)!important;max-height:62%!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .turn-side strong{font-size:8px!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .turn-side b{font-size:8px!important}
#customDashboardGrid > .studio-widget-host.hero-turn-card.studio-fit-micro .turner-caption{font-size:7px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Equipment outputs -------------------------------------------------------- */
#customDashboardGrid > .studio-widget-host.equipment-card{
  overflow:hidden!important;
  grid-template-rows:auto minmax(0,1fr)!important;
}
#customDashboardGrid > .studio-widget-host.equipment-card .equipment-grid{min-height:0!important;align-self:stretch!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-compact .equipment-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  grid-template-rows:repeat(2,minmax(0,1fr))!important;
  gap:3px!important;
}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-compact .equipment-tile{padding:3px!important;gap:2px!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-compact .equipment-icon{width:clamp(21px,9cqw,34px)!important;height:clamp(21px,9cqw,34px)!important;font-size:clamp(12px,5cqw,18px)!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-compact .output-value{margin:1px 0!important;font-size:7px!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-compact .mini-progress{height:3px!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .section-title .mode-pill{display:none!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .equipment-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(3,minmax(0,1fr))!important;
  gap:2px!important;
}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .equipment-tile{padding:2px!important;gap:1px!important;align-content:center!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .equipment-icon,
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .output-value,
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .mini-progress,
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .pid-equipment-summary,
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .pid-equipment-progress,
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .pid-equipment-hint{display:none!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .equipment-tile>b,
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .pid-equipment-head>b{font-size:7px!important;line-height:1.05!important;white-space:normal!important;text-align:center!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .pid-equipment-head{display:grid!important;place-items:center!important;margin:0!important}
#customDashboardGrid > .studio-widget-host.equipment-card.studio-fit-micro .pid-equipment-head .mode-pill{font-size:6px!important;padding:1px 3px!important}

/* Heat & humidity distribution -------------------------------------------- */
#customDashboardGrid > .studio-widget-host.dual-climate-card{overflow:hidden!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact{
  grid-template-rows:auto minmax(0,1fr)!important;
}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-climate-legend{display:none!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-chamber-viewport{
  display:grid!important;place-items:center!important;position:relative!important;background:var(--soft)!important;
}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-climate-side-readouts{
  position:static!important;inset:auto!important;width:min(96%,360px)!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important;padding:5px!important;transform:none!important;z-index:10!important;
}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-climate-readout{
  position:static!important;transform:none!important;min-width:0!important;width:100%!important;padding:clamp(5px,2cqw,9px)!important;
}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact canvas,
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-chamber-frame,
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-circ-fan,
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .climate-source,
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-compact .dual-chamber-status{display:none!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-badges{display:none!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-title .eyebrow{display:none!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-side-readouts{grid-template-columns:1fr!important;gap:2px!important;padding:2px!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-readout{padding:3px!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-readout span,
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-readout small{font-size:6px!important}
#customDashboardGrid > .studio-widget-host.dual-climate-card.studio-fit-micro .dual-climate-readout strong{font-size:clamp(13px,9cqw,20px)!important}

/* Charts ------------------------------------------------------------------ */
#customDashboardGrid > .studio-widget-host.chart-card{overflow:hidden!important}
#customDashboardGrid > .studio-widget-host.chart-card canvas{min-width:0!important;min-height:0!important;width:100%!important;height:100%!important}
#customDashboardGrid > .studio-widget-host.chart-card.studio-fit-compact .chart-legend,
#customDashboardGrid > .studio-widget-host.chart-card.studio-fit-micro .chart-legend{display:none!important}
#customDashboardGrid > .studio-widget-host.chart-card.studio-fit-micro .section-title h3{font-size:8px!important}

/* Generic dynamic widgets -------------------------------------------------- */
#customDashboardGrid > .studio-widget-host.studio-dynamic-card{overflow:hidden!important;align-content:stretch!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card .studio-dynamic-content{height:100%!important;min-height:0!important;overflow:hidden!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-compact .studio-subgrid{gap:3px!important;margin-top:3px!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-kpi-head>div>span,
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-live-pill{display:none!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-big-value{font-size:clamp(17px,16cqw,28px)!important;margin:2px 0!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-subgrid{grid-template-columns:1fr!important;gap:2px!important;margin-top:2px!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-subgrid>div:nth-child(n+3){display:none!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-alert-mini>div:nth-child(n+2){display:none!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-quick-setpoints{gap:2px!important;margin:2px!important}
#customDashboardGrid > .studio-widget-host.studio-dynamic-card.studio-fit-micro .studio-quick-row{padding:2px 3px!important}

/* The independent editor overlay stays exactly as V2.12.1.  No resize/move/
   remove hit-testing is changed by this release. */
/* Compact progress has four visible children after metadata is removed; keep the
   button in its own auto-height row instead of allowing it to occupy the old
   flexible metadata row (the old behavior looked like content was sinking). */
#customDashboardGrid > .studio-widget-host.progress-card.studio-fit-compact{
  grid-template-rows:auto auto auto auto!important;
  align-content:space-between!important;
}

/* === V2.12.4 Scaled Internal Canvas + Same-Page Add ========================
   The outer free-canvas rectangle remains fully resizable. The complete real
   widget now lives inside a logical design canvas which is uniformly scaled.
   Internal layout therefore never receives a smaller-than-designed viewport,
   eliminating the previous sinking/clipping/hide-at-breakpoint behavior. */
#customDashboardGrid > .studio-widget-shell{
  position:absolute!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  overflow:hidden!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
  contain:layout paint style!important;
  container-type:normal!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-shell{
  padding:0!important;
  cursor:default!important;
  touch-action:pan-y!important;
}
#customDashboardGrid > .studio-widget-shell > .studio-scaled-content{
  position:absolute!important;
  left:0!important;
  top:0!important;
  right:auto!important;
  bottom:auto!important;
  width:var(--studio-design-w)!important;
  height:var(--studio-design-h)!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  transform:scale(var(--studio-content-scale,1))!important;
  transform-origin:0 0!important;
  box-sizing:border-box!important;
  will-change:transform!important;
  container-type:size!important;
  container-name:studioWidget!important;
}
body:not(.dashboard-editing) #customDashboardGrid > .studio-widget-shell > .studio-scaled-content{
  pointer-events:auto!important;
}
.dashboard-editing #customDashboardGrid > .studio-widget-shell > .studio-scaled-content{
  pointer-events:none!important;
  user-select:none!important;
  -webkit-user-select:none!important;
}
/* V2.12.2 density rules are intentionally not activated in this release.
   Core widget content must remain present; scaling handles small outer boxes. */
#customDashboardGrid > .studio-widget-shell .studio-fit-micro,
#customDashboardGrid > .studio-widget-shell .studio-fit-compact,
#customDashboardGrid > .studio-widget-shell .studio-density-micro,
#customDashboardGrid > .studio-widget-shell .studio-density-compact{--v2124-legacy-density-disabled:1}

/* Newly added widgets are always revealed on the SAME dashboard page. */
#customDashboardGrid > .studio-widget-shell.studio-newly-added{
  animation:studioAddedPulse 1s ease both!important;
}
@keyframes studioAddedPulse{
  0%,100%{filter:none}
  35%{filter:drop-shadow(0 0 12px color-mix(in srgb,var(--teal) 72%,transparent))}
}

/* The independent overlay remains usable even when a widget is resized very
   small; its controls compact instead of forcing a large content minimum. */
.studio-editor-overlay{container-type:inline-size;container-name:editorOverlay}
@container editorOverlay (max-width:125px){
  .studio-editor-toolbar{left:2px!important;right:2px!important;top:2px!important;gap:2px!important;padding:3px!important;min-height:32px!important}
  .studio-editor-toolbar strong,.studio-editor-dim{display:none!important}
  .studio-editor-toolbar button{width:28px!important;height:28px!important;min-width:28px!important;border-radius:8px!important;font-size:15px!important}
  .studio-editor-toolbar [data-editor-action="remove"]{font-size:18px!important}
  .studio-editor-resize-nw,.studio-editor-resize-ne{top:35px!important}
  .studio-editor-resize-n{top:34px!important}
  .studio-editor-resize-e,.studio-editor-resize-w{top:48px!important;bottom:24px!important}
}

/* Widget Library: visual miniature of the actual widget, retained from the
   requested visual-library concept but without V2.12.3's restrictive sizing. */
.widget-library-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
.widget-library-item.widget-library-visual{
  display:grid!important;
  grid-template-rows:112px auto!important;
  gap:8px!important;
  padding:9px!important;
  overflow:hidden!important;
  align-items:stretch!important;
}
.wl-preview{
  position:relative!important;
  width:100%!important;
  height:112px!important;
  overflow:hidden!important;
  border:1px solid var(--line)!important;
  border-radius:12px!important;
  background:linear-gradient(145deg,color-mix(in srgb,var(--card2) 92%,var(--blue) 8%),var(--card))!important;
  pointer-events:none!important;
}
.wl-preview-clone{
  position:absolute!important;
  left:4px!important;top:4px!important;
  margin:0!important;
  max-width:none!important;max-height:none!important;
  min-width:0!important;min-height:0!important;
  pointer-events:none!important;
  transform-origin:top left!important;
  box-sizing:border-box!important;
}
.wl-preview-clone *{pointer-events:none!important;animation-play-state:paused!important}
.wl-preview-canvas{display:block;width:100%;height:100%;object-fit:cover}
.wl-library-footer{display:flex!important;align-items:center!important;gap:8px!important;min-width:0!important}
.wl-library-footer>div{min-width:0!important;flex:1!important}
.wl-library-footer strong{display:block!important;font-size:12px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl-library-footer small{display:block!important;color:var(--muted)!important;font-size:9px!important;margin-top:2px}
.wl-library-footer .btn{flex:0 0 auto!important;padding:7px 10px!important;font-size:10px!important}
@media(max-width:760px){
  .widget-library-grid{grid-template-columns:1fr!important}
  .widget-library-item.widget-library-visual{grid-template-rows:132px auto!important}
  .wl-preview{height:132px!important}
}


/* V2.12.6 — retain the glossy output-bar depth inside scaled free-canvas equipment widgets. */
#customDashboardGrid > .studio-widget-host.equipment-card .equipment-tile .mini-progress{
  width:calc(100% + 12px)!important;
  height:clamp(6px,3cqh,10px)!important;
  margin-left:-6px!important;
  margin-right:-6px!important;
}
/* ========================================================================== */
/* BroodIt Widget Studio — Blynk-inspired configurable widgets               */
/* ========================================================================== */
.blynk-widget-card{padding:0!important;overflow:hidden!important;background:linear-gradient(145deg,rgba(14,26,44,.98),rgba(8,18,32,.98))!important;border:1px solid rgba(94,129,176,.28)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 16px 34px rgba(0,0,0,.18)!important}
.blynk-dynamic-content{position:relative;width:100%;height:100%;min-width:0;min-height:0;padding:14px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:10px;box-sizing:border-box;color:#edf5ff;--bw-color:#00a8a8}
.bw-title{font-size:13px;font-weight:800;letter-spacing:.075em;text-transform:uppercase;color:#dce8fb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;line-height:1.2}
.bw-value{font-size:clamp(28px,5.8vw,58px);font-weight:800;line-height:1;text-align:center;color:var(--bw-color);text-shadow:0 0 18px color-mix(in srgb,var(--bw-color) 52%,transparent)}
.bw-labeled{display:grid;place-items:center;gap:7px;min-height:70px}.bw-labeled span{font-size:12px;color:#8ea1bb;text-transform:uppercase;letter-spacing:.08em}.bw-labeled strong{font-size:34px;color:var(--bw-color)}
.bw-gauge{--bw-pct:0;position:relative;width:min(82%,190px);aspect-ratio:1/.63;margin:auto;overflow:hidden;display:grid;place-items:end center}.bw-gauge-arc{position:absolute;width:100%;aspect-ratio:1;border-radius:50%;background:conic-gradient(from 270deg,var(--bw-color) var(--bw-angle),#23334a 0 180deg,transparent 0);mask:radial-gradient(circle at 50% 50%,transparent 56%,#000 57%);-webkit-mask:radial-gradient(circle at 50% 50%,transparent 56%,#000 57%);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--bw-color) 42%,transparent))}.bw-gauge-value{position:relative;z-index:2;font-size:32px;font-weight:800;padding-bottom:5px}.bw-gauge>span{position:absolute;left:50%;bottom:0;transform:translateX(-50%);font-size:11px;color:#8ca0b9}
.bw-led-wrap{display:grid;place-items:center;gap:10px;flex:1}.bw-led{display:block;width:66px;height:66px;border-radius:50%;background:#151b24;border:6px solid color-mix(in srgb,var(--bw-color) 55%,#1d2734);box-shadow:inset 0 0 18px rgba(0,0,0,.8),0 2px 8px rgba(0,0,0,.35)}.bw-led.on{background:radial-gradient(circle at 35% 30%,#fff 0 3%,color-mix(in srgb,var(--bw-color) 75%,white) 10%,var(--bw-color) 42%,color-mix(in srgb,var(--bw-color) 45%,black) 100%);box-shadow:0 0 18px var(--bw-color),0 0 38px color-mix(in srgb,var(--bw-color) 55%,transparent),inset 0 0 12px rgba(255,255,255,.55)}.bw-led-wrap strong{font-size:13px;color:#d9e7f7}
.bw-level-h{height:42px;border-radius:12px;background:#0a111c;border:1px solid #253850;position:relative;overflow:hidden;box-shadow:inset 0 5px 12px rgba(0,0,0,.6),0 1px 0 rgba(255,255,255,.04)}.bw-level-h i{display:block;height:100%;background:linear-gradient(180deg,color-mix(in srgb,var(--bw-color) 62%,white),var(--bw-color) 48%,color-mix(in srgb,var(--bw-color) 72%,black));box-shadow:inset 0 3px 4px rgba(255,255,255,.35),0 0 16px var(--bw-color)}.bw-level-h b{position:absolute;inset:0;display:grid;place-items:center;font-size:14px;text-shadow:0 1px 3px #000}
.bw-level-v{width:56px;flex:1;min-height:120px;margin:auto;border-radius:14px;background:#0a111c;border:1px solid #253850;position:relative;overflow:hidden;box-shadow:inset 0 6px 14px rgba(0,0,0,.65)}.bw-level-v i{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(90deg,color-mix(in srgb,var(--bw-color) 64%,white),var(--bw-color),color-mix(in srgb,var(--bw-color) 55%,black));box-shadow:inset 3px 0 4px rgba(255,255,255,.3),0 0 18px var(--bw-color)}.bw-level-v b{position:absolute;inset:0;display:grid;place-items:center;writing-mode:vertical-rl;transform:rotate(180deg);font-size:12px;text-shadow:0 1px 3px #000}
.bw-lcd{background:linear-gradient(145deg,#0d231f,#0a1715);border:2px solid color-mix(in srgb,var(--bw-color) 60%,#233);box-shadow:inset 0 0 24px rgba(0,0,0,.8),0 0 12px color-mix(in srgb,var(--bw-color) 20%,transparent);border-radius:9px;min-height:92px;padding:14px;display:flex;flex-direction:column;justify-content:center;gap:7px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.bw-lcd span{font-size:11px;color:color-mix(in srgb,var(--bw-color) 70%,white);letter-spacing:.08em}.bw-lcd strong{font-size:28px;color:#c8ffe7;text-shadow:0 0 9px var(--bw-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bw-push,.bw-styled,.bw-master,.bw-switch,.bw-timer button,.bw-number button,.bw-step-h button,.bw-step-v button{touch-action:manipulation;-webkit-tap-highlight-color:transparent;cursor:pointer}
.bw-push{align-self:center;min-width:145px;min-height:66px;border-radius:17px;border:3px solid var(--bw-color);background:#080b10;color:#f2f5fa;font-weight:800;font-size:21px;box-shadow:inset 0 0 10px rgba(0,0,0,.75),0 0 13px color-mix(in srgb,var(--bw-color) 28%,transparent);transition:.12s}.bw-push:active,.bw-push.on{background:var(--bw-color);box-shadow:inset 0 4px 9px rgba(255,255,255,.2),0 0 20px color-mix(in srgb,var(--bw-color) 58%,transparent)}
.bw-styled{align-self:center;min-width:150px;min-height:68px;border:1px solid color-mix(in srgb,var(--bw-color) 80%,white);border-radius:18px;background:linear-gradient(145deg,#121b28,#07101b);color:var(--bw-color);display:flex;align-items:center;justify-content:center;gap:10px;font-size:16px;box-shadow:inset 0 2px 6px rgba(255,255,255,.06),0 8px 20px rgba(0,0,0,.28)}.bw-styled span{font-size:26px}.bw-styled.on{color:white;background:linear-gradient(145deg,color-mix(in srgb,var(--bw-color) 78%,white),var(--bw-color));box-shadow:inset 0 3px 6px rgba(255,255,255,.3),0 0 21px color-mix(in srgb,var(--bw-color) 50%,transparent)}
.bw-master{align-self:center;width:min(94%,230px);min-height:66px;border-radius:999px;border:6px solid color-mix(in srgb,var(--bw-color) 72%,black);background:#050505;color:#f8f8f8;font-size:22px;letter-spacing:.04em;box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 3px 12px rgba(0,0,0,.45);transition:.13s}.bw-master.on{background:var(--bw-color);border-color:var(--bw-color);box-shadow:inset 0 4px 6px rgba(255,255,255,.18),0 0 20px color-mix(in srgb,var(--bw-color) 38%,transparent)}
.bw-switch{align-self:center;width:min(94%,230px);min-height:60px;border-radius:999px;border:2px solid #27384f;background:#08111d;color:#95a5bb;display:flex;align-items:center;padding:5px 8px;gap:10px;font-weight:800}.bw-switch i{display:block;width:46px;height:46px;border-radius:50%;background:#34445b;box-shadow:0 3px 9px rgba(0,0,0,.45);transition:.15s}.bw-switch b{flex:1;text-align:center}.bw-switch.on{border-color:var(--bw-color);color:white;background:color-mix(in srgb,var(--bw-color) 18%,#08111d)}.bw-switch.on i{margin-left:calc(100% - 55px);background:var(--bw-color);box-shadow:0 0 16px var(--bw-color)}.bw-switch.on b{position:absolute;left:22px}
.bw-slider-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;flex:1}.bw-slider-row input,.bw-slider-v input{accent-color:var(--bw-color)}.bw-slider-row input{width:100%;height:34px}.bw-slider-row output,.bw-slider-v output{min-width:62px;text-align:center;font-weight:800;color:var(--bw-color);font-size:17px}
.bw-slider-v{display:flex;align-items:center;justify-content:center;gap:10px;flex:1;min-height:150px}.bw-slider-v input{width:155px;transform:rotate(-90deg)}.bw-slider-v output{writing-mode:vertical-rl;transform:rotate(180deg)}
.bw-step-h{display:grid;grid-template-columns:64px 1fr 64px;align-items:center;gap:10px;flex:1}.bw-step-h button,.bw-step-v button{border-radius:15px;border:1px solid color-mix(in srgb,var(--bw-color) 62%,white);background:linear-gradient(145deg,#172334,#08121e);color:#f7fbff;font-size:28px;font-weight:700;min-height:58px;box-shadow:inset 0 2px 5px rgba(255,255,255,.08),0 5px 12px rgba(0,0,0,.25)}.bw-step-h strong,.bw-step-v strong{font-size:23px;text-align:center;color:var(--bw-color)}.bw-step-v{display:grid;grid-template-rows:56px 1fr 56px;gap:8px;flex:1;min-height:150px}.bw-step-v button{min-height:50px}.bw-menu{width:100%;min-height:54px;border-radius:12px;border:1px solid color-mix(in srgb,var(--bw-color) 58%,#375);background:#0b1522;color:#f5f8fc;padding:0 15px;font-size:17px;font-weight:700;outline:none}.bw-number{display:grid;grid-template-columns:1fr 76px;gap:10px;align-items:center;flex:1}.bw-number input{height:54px;border-radius:12px;border:1px solid #31465f;background:#08121e;color:#fff;padding:0 14px;font-size:21px;font-weight:800;min-width:0}.bw-number button{height:54px;border:0;border-radius:12px;background:var(--bw-color);color:white;font-weight:800}
.bw-terminal{flex:1;min-height:110px;background:#020704;border:1px solid color-mix(in srgb,var(--bw-color) 50%,#143);border-radius:7px;padding:9px;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#9fffd1;box-shadow:inset 0 0 20px rgba(0,0,0,.8)}.bw-terminal div{display:grid;grid-template-columns:62px 1fr;gap:7px;font-size:11px;line-height:1.45}.bw-terminal time{color:#4e9f7a}.bw-terminal span{word-break:break-word}
.bw-timer{display:grid;grid-template-columns:1fr auto;grid-template-areas:'value button' 'hint hint';gap:7px 12px;align-items:center;flex:1}.bw-timer strong{grid-area:value;font-size:32px;color:var(--bw-color)}.bw-timer button{grid-area:button;border:0;border-radius:14px;background:var(--bw-color);color:white;font-weight:800;padding:13px 18px}.bw-timer small{grid-area:hint;color:#8ea0b8}.bw-time-input{display:grid;grid-template-columns:1fr 1fr;gap:9px;align-items:end}.bw-time-input label{display:grid;gap:4px;font-size:11px;color:#8ea0b8}.bw-time-input input[type=time]{height:45px;border-radius:10px;border:1px solid #31445d;background:#08121e;color:#fff;padding:0 9px}.bw-time-input .bw-schedule-enable{grid-column:1/-1;display:flex;align-items:center;gap:8px;color:#dce7f7;font-size:12px}.bw-time-input input[type=checkbox]{accent-color:var(--bw-color)}
.blynk-library-category{border-top:1px solid rgba(84,121,171,.16);padding-top:6px}.blynk-template-stage{display:grid!important;place-items:center!important;background:radial-gradient(circle at 50% 20%,rgba(47,75,112,.22),transparent 55%),#080c12!important}.bw-template-preview{width:100%;height:100%;display:grid;place-items:center;gap:6px;color:#e8f0fb;--bw-color:#ff3131}.bw-template-preview strong{font-size:28px;color:#66d6df}.bw-template-preview small{font-size:11px;color:#9aadbf}.bw-template-preview .bw-master{min-height:44px;width:78%;border-width:4px;font-size:15px}.bw-template-preview .bw-gauge{width:100px}.bw-template-preview .bw-gauge-value{font-size:20px}.bw-template-preview .bw-led{width:42px;height:42px;border-width:4px}.bw-preview-vertical{font-size:40px;color:#28c7c7}
.bw-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.bw-config-grid label{display:grid;gap:6px;color:#9aabc1;font-size:12px}.bw-config-grid label.full{grid-column:1/-1}.bw-config-grid input,.bw-config-grid select{min-width:0;height:46px;border:1px solid #31445d;background:#0a1523;color:#fff;border-radius:10px;padding:0 11px}.bw-color-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.bw-color-chip{width:26px;height:26px;border:2px solid rgba(255,255,255,.28);border-radius:50%;background:var(--chip);cursor:pointer;box-shadow:0 0 7px color-mix(in srgb,var(--chip) 35%,transparent)}.bw-color-row input[type=color]{width:42px;height:31px;padding:2px;border-radius:8px}
.dashboard-editor-layer [data-editor-action="config"]{color:#9ff4ff}
@media(max-width:700px){.blynk-dynamic-content{padding:10px;gap:7px}.bw-title{font-size:11px}.bw-value{font-size:34px}.bw-gauge-value{font-size:27px}.bw-step-h{grid-template-columns:54px 1fr 54px}.bw-config-grid{grid-template-columns:1fr}.bw-config-grid label.full{grid-column:auto}.blynk-template-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.bw-terminal div{grid-template-columns:48px 1fr;font-size:10px}}

/* ===== V2.12.6 — Approved BroodIt Master Toggle visual ===== */
.bw-master-wrap{display:grid;grid-template-columns:40px minmax(108px,1fr);align-items:center;gap:9px;width:100%;max-width:250px;margin:auto}
.bw-master-device-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:var(--bw-color);font-size:21px;font-weight:800;background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.15),rgba(255,255,255,.02) 34%,rgba(3,9,17,.96) 72%);border:1px solid color-mix(in srgb,var(--bw-color) 58%,#31465f);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 0 14px color-mix(in srgb,var(--bw-color) 30%,transparent)}
.bw-master{position:relative;overflow:hidden;width:100%;min-height:56px;border-radius:999px;border:3px solid var(--bw-color);background:linear-gradient(180deg,#080b10,#020305);color:#f8fbff;font-size:18px;font-weight:850;letter-spacing:.055em;text-shadow:0 1px 2px #000;box-shadow:inset 0 2px 1px rgba(255,255,255,.05),inset 0 -7px 14px rgba(0,0,0,.72),0 0 0 1px color-mix(in srgb,var(--bw-color) 28%,transparent),0 6px 16px rgba(0,0,0,.42);transition:transform .12s ease,filter .12s ease,box-shadow .12s ease,background .12s ease}
.bw-master::before{content:'';position:absolute;left:8%;right:8%;top:5px;height:35%;border-radius:999px;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0));pointer-events:none}.bw-master b{position:relative;z-index:1}
.bw-master.on{background:linear-gradient(180deg,color-mix(in srgb,var(--bw-color) 58%,white),var(--bw-color) 42%,color-mix(in srgb,var(--bw-color) 72%,black));border-color:color-mix(in srgb,var(--bw-color) 88%,white);color:white;box-shadow:inset 0 3px 4px rgba(255,255,255,.38),inset 0 -9px 15px rgba(0,0,0,.26),0 0 16px color-mix(in srgb,var(--bw-color) 58%,transparent),0 0 30px color-mix(in srgb,var(--bw-color) 28%,transparent),0 7px 18px rgba(0,0,0,.36)}
.bw-master:not(:disabled):active{transform:translateY(1px) scale(.985);filter:brightness(1.08)}.bw-master:disabled{opacity:.56;cursor:not-allowed;filter:saturate(.55)}
.blynk-widget-card .bw-title{text-align:center;color:#dfeafb;font-size:11px;letter-spacing:.08em;margin-bottom:1px}.blynk-template-stage .bw-master-wrap{grid-template-columns:30px minmax(82px,1fr);gap:6px;max-width:165px}.blynk-template-stage .bw-master-device-icon{width:28px;height:28px;font-size:16px}.blynk-template-stage .bw-master{min-height:40px;border-width:3px;font-size:13px}
