:root{--v43-navy:#123b5d;--v43-teal:#087a70;--v43-green:#168b52;--v43-red:#dc3b35;--v43-amber:#e99a17;--v43-bg:#f2f6f8}
html,body{overscroll-behavior:none}
@media (orientation:landscape) and (max-width:900px){html,body{width:100%;max-width:none;margin:0;overflow-x:hidden;background:#f4f7f5}#dash{max-width:540px;margin:0 auto}}
.management-view{padding:16px 14px 110px;background:var(--v43-bg);min-height:70vh;color:#17324a}
.module-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 14px}.module-head h1{margin:0;font-size:27px;color:var(--v43-navy)}
.module-head small,.muted{color:#6c7d88}.module-card{background:#fff;border-radius:18px;padding:16px;margin:0 0 14px;box-shadow:0 3px 14px #17324a16}
.module-card h2,.module-card h3{margin:0 0 12px}.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.metric{background:#f5fafb;border-radius:14px;padding:13px}.metric small{display:block;color:#607682}.metric b{display:block;font-size:22px;margin-top:4px}.metric.good b{color:var(--v43-green)}.metric.warn b{color:var(--v43-amber)}.metric.danger b{color:var(--v43-red)}
.module-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.module-actions button,.primary-action,.secondary-action{border:0;border-radius:13px;padding:14px 10px;font-weight:800;font-size:16px;background:var(--v43-teal);color:#fff}.secondary-action{background:#e8f3f3;color:var(--v43-teal)}
.env-strip-v43{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:center}.env-strip-v43 div{padding:9px 3px;border-right:1px solid #dae4e8}.env-strip-v43 div:last-child{border:0}.env-strip-v43 b{display:block;font-size:20px;color:var(--v43-teal)}
.waterer-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.waterer{background:#fff;border-radius:15px;padding:12px;box-shadow:0 2px 10px #17324a12}.waterer header{display:flex;justify-content:space-between;align-items:center}.waterer header b{font-size:17px}.waterer .switch{border:0;border-radius:20px;padding:7px 10px;background:#a9b4bb;color:#fff}.waterer .switch.on{background:var(--v43-green)}.waterer dl{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:12px 0 6px}.waterer dt{font-size:10px;color:#6b7d87}.waterer dd{margin:2px 0;font-weight:800}.waterer footer{font-size:12px;color:var(--v43-teal)}
.waterer-auto{margin:6px 0 0;padding:6px 8px;border-radius:8px;background:#f3f4f2;color:#6b7d87;font-size:11px;font-weight:700}
.waterer-auto.on{background:#eaf6ee;color:#0d7c55}
.waterer-auto-edit{margin-top:6px;padding:5px 10px;border-radius:8px;background:#fff;border:1px solid #ccd9d5;color:#087a70;font-size:12px}
.light-v43-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.light-v43{background:#fff;border-radius:16px;padding:14px;text-align:center}.light-v43 span{font-size:32px}.light-v43 b{display:block;margin:5px}.light-v43 button{border:0;border-radius:18px;padding:8px 20px;background:#aeb7bd;color:#fff;font-weight:800}.light-v43 button.on{background:#0aab74}.light-v43 small{display:block;margin-top:7px;color:#087a70}
.silo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.silo-card{text-align:center}.silo{height:145px;border:3px solid #aebbc2;border-radius:32px 32px 12px 12px;position:relative;overflow:hidden;background:#f8fafb}.silo i{position:absolute;left:0;right:0;bottom:0;background:#14a083}.silo-card.danger .silo i{background:#df3e35}.silo-card b,.silo-card small{display:block;margin-top:5px}.feed-row,.ledger-row,.cow-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:11px 0;border-bottom:1px solid #e2e8eb}.feed-row:last-child,.ledger-row:last-child,.cow-row:last-child{border:0}.feed-row strong,.ledger-row strong{color:var(--v43-teal)}
.silo-list{display:flex;flex-direction:column;gap:10px}
.silo-card-row{display:flex;align-items:center;gap:12px;padding:10px;border-radius:16px;background:#f8fafb;border:1px solid #e5ebe8;position:relative}
.silo-card-row .silo-photo{width:72px;height:88px;flex:0 0 auto;border-radius:12px}
.silo-card-row.danger{border-color:#f0b3ac;background:#fff6f5}
.silo-info{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.silo-info b{font-size:16px;color:#17324a}
.silo-info span{font-size:12px;color:#6b7d87}
.silo-info strong{font-size:15px;color:#087a55}
.silo-card-row.danger .silo-info strong{color:#dc3b35}
.feed-item-list{display:flex;flex-direction:column;gap:8px}
.feed-item-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border-radius:14px;background:#f8fafb;border:1px solid #e5ebe8}
.feed-item-main{display:flex;flex-direction:column;gap:5px;min-width:0}
.feed-item-main b{font-size:16px;color:#17324a}
.feed-item-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:11px;color:#6b7d87}
.feed-item-side{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto}
.feed-item-side strong{font-size:17px;color:#087a55}
.feed-item-side small{font-size:10px;color:#8a9aa2}
.feed-item-edit{margin-top:4px;padding:5px 10px;border-radius:8px;background:#fff;border:1px solid #ccd9d5;color:#087a70;font-size:12px}
.feed-item-btns{display:flex;gap:6px;margin-top:4px}
.feed-item-use{padding:5px 10px;border-radius:8px;background:#fff;border:1px solid #f0c9a0;color:#a85f00;font-size:12px}
.feed-data-list{max-height:60vh;overflow-y:auto}
.settings-help{margin:2px 0 8px;color:#6b7d87;font-size:12px;line-height:1.5}
.feed-data-in{color:#087a55}
.feed-data-use{color:#c94a1f}
.analysis-card{border-left:6px solid var(--v43-teal)}.analysis-card.warn{border-color:var(--v43-amber)}.analysis-card.danger{border-color:var(--v43-red)}.analysis-card b{font-size:19px}.analysis-card p{margin:6px 0 0;color:#5d6e78}
.cctv-open{display:block;width:100%;font-size:22px;padding:18px}.cctv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.cctv-grid button{background:#fff;color:var(--v43-navy);border:1px solid #dce5e9;border-radius:14px;padding:18px 8px;font-size:16px;font-weight:800}
.module-dialog{width:min(92vw,520px);border:0;border-radius:18px;padding:0}.module-dialog::backdrop{background:#071c2aa8}.module-dialog form{padding:18px}.module-dialog h2{margin-top:0}.module-dialog label{display:block;margin:10px 0;font-weight:700}.module-dialog input,.module-dialog select,.module-dialog textarea{width:100%;box-sizing:border-box;padding:12px;border:1px solid #cdd9df;border-radius:10px;font-size:16px}.dialog-actions{display:flex;gap:8px;margin-top:14px}.dialog-actions button{flex:1;border:0;border-radius:11px;padding:13px;font-weight:800}.dialog-actions .save{background:var(--v43-teal);color:#fff}
.import-box{border:2px dashed #9db3bf;border-radius:14px;padding:16px;text-align:center}.import-box input{max-width:100%}.tag{display:inline-block;padding:5px 9px;border-radius:12px;background:#e7f3f0;color:#087a70;font-size:12px;font-weight:800}.warning-banner{background:#fff2ef;border:1px solid #f1b9b1;color:#b82e25;border-radius:15px;padding:14px;font-weight:800;margin-bottom:14px}
@media(max-width:390px){.env-strip-v43{grid-template-columns:repeat(2,1fr)}.waterer-grid{grid-template-columns:1fr}.module-actions{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr 1fr}}

/* 관리자 길게 누르기 이름 변경: 모바일 글자 선택 메뉴를 막고 세로 스크롤은 유지 */
.waterer [data-waterer-name]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:pan-y}
.light-v43 [data-light-name],.silo-card [data-bin-name]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:pan-y}
[data-key]:not(.sensor-ready)>em,[data-key]:not(.sensor-ready)>.dose-info{display:none!important}.end-controls{margin-top:14px}.remove-action{background:#8b98a0!important}.end-controls button:disabled{opacity:.4}.silo-photo{height:170px;position:relative;overflow:hidden;border-radius:14px;background:#edf2f3}.silo-photo img{width:100%;height:100%;object-fit:cover;object-position:center}.silo-photo i{position:absolute;left:0;right:0;bottom:0;background:#13a47d55;border-top:3px solid #0c9671}.silo-card.danger .silo-photo i{background:#dc3b3544;border-top-color:#dc3b35}
.management-view>.module-head small{display:none}.unified-folder-head{padding:14px 16px 0}.slide-from-right{animation:v44Right .24s ease-out}.slide-from-left{animation:v44Left .24s ease-out}@keyframes v44Right{from{opacity:.25;transform:translateX(34px)}to{opacity:1;transform:none}}@keyframes v44Left{from{opacity:.25;transform:translateX(-34px)}to{opacity:1;transform:none}}
.milk-total-card{display:flex;align-items:center;gap:14px;margin:0 14px 15px;padding:16px;border-radius:18px;background:linear-gradient(135deg,#e8f7f3,#fff);box-shadow:0 3px 14px #17324a16}.milk-total-card>span{font-size:40px}.milk-total-card>.cooler-scale-visual{display:block;flex:0 0 64px;width:64px;height:64px;overflow:hidden;border-radius:16px;background:#8fd3f7}.cooler-scale-visual img{display:block;width:100%;height:100%;object-fit:cover}.milk-total-card small,.milk-total-card em{display:block;color:#657983}.cooler-scale-card-body{flex:1;min-width:0}.cooler-scale-values{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.cooler-scale-values>div{min-width:0}.cooler-scale-values strong{white-space:nowrap;font-size:clamp(18px,5vw,25px)}.cooler-scale-values em{font-size:12px}.cooler-scale-status{margin-top:7px}.milk-total-card strong{display:block;color:#087a70;font-size:25px;margin:3px 0}.milk-total-card em{font-style:normal;font-size:12px}
.milk-photo-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.milk-photo-preview img{width:100%;height:90px;object-fit:cover;border-radius:8px}.cow-search{display:block;background:#fff;padding:14px;border-radius:14px;margin-bottom:10px;font-weight:800}.cow-search input{display:block;width:100%;box-sizing:border-box;margin-top:7px;padding:12px;border:1px solid #ccd9de;border-radius:10px}.cow-list-v43{display:grid;gap:8px}.cow-list-v43 button{display:grid;grid-template-columns:1fr auto;text-align:left;border:0;background:#fff;border-radius:14px;padding:14px;color:#17324a}.cow-list-v43 button b,.cow-list-v43 button small{grid-column:1}.cow-list-v43 button span{grid-column:2;grid-row:1/3;align-self:center;font-size:30px;color:#087a70}.cow-profile{display:grid;grid-template-columns:auto 1fr;gap:14px}.cow-avatar{font-size:46px}.cow-profile p{display:grid;grid-template-columns:1fr 1.2fr;margin:0;padding:8px 0;border-bottom:1px solid #e5ecef}.cow-profile p small{color:#697d87}.life-timeline{border-left:3px solid #15a27e;margin-left:8px;padding-left:16px}.life-timeline>div{position:relative;margin-bottom:16px}.life-timeline>div:before{content:'';position:absolute;left:-23px;top:4px;width:11px;height:11px;border-radius:50%;background:#15a27e}.life-timeline time{display:block;font-size:12px;color:#6b7b84}.life-timeline p{margin:3px 0}.light-setting-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.light-setting-grid label{font-weight:700}.light-setting-grid input{width:100%;box-sizing:border-box;padding:10px;border:1px solid #ccd9de;border-radius:9px}.light-settings-v44>button{width:100%;border:0;border-radius:12px;padding:13px;background:#087a70;color:#fff;font-weight:800}
.vip-visitor-fields{margin:4px 0 14px;padding:14px;border:1px solid #b9e2d5;border-radius:16px;background:#f1fbf7}.vip-visitor-fields>strong,.vip-visitor-fields>small{display:block}.vip-visitor-fields>small{margin:4px 0 10px;color:#60736c}.vip-visitor-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.vip-visitor-grid label{margin:0}.vip-consent{display:flex!important;align-items:flex-start;gap:8px;margin:12px 0 0!important;font-size:13px}.vip-consent input{width:18px;height:18px;margin:0;flex:0 0 auto}.admin-farm-head{flex-wrap:wrap}.vip-visitors-panel{min-width:min(760px,90vw)}.vip-visitor-row{display:grid;grid-template-columns:minmax(180px,1fr) 2fr auto;gap:16px;align-items:center;padding:14px;margin:10px 0;border:1px solid #d8e4df;border-radius:14px;background:#fff}.vip-visitor-row small{display:block;margin-top:5px;color:#63736d}.vip-visitor-row dl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0}.vip-visitor-row dt{font-size:12px;color:#6c7b76}.vip-visitor-row dd{margin:3px 0 0;font-size:13px}.vip-visitor-row button{background:#fff1f1;color:#a12626;border:1px solid #efcaca}@media(max-width:650px){.vip-visitor-grid{grid-template-columns:1fr}.vip-visitor-row{grid-template-columns:1fr}.vip-visitor-row dl{grid-template-columns:1fr 1fr}.vip-visitors-panel{min-width:auto}}
.vip-feedback-card{margin:22px 0 110px;padding:18px;border-radius:20px;background:#fff;box-shadow:0 3px 16px #17324a16}.vip-feedback-card>div{display:flex;align-items:center;gap:10px}.vip-feedback-card>div span{font-size:30px}.vip-feedback-card h2{margin:0}.vip-feedback-card>p{color:#63736d}.vip-feedback-card label{display:block;margin:10px 0;font-weight:700}.vip-feedback-card select,.vip-feedback-card textarea{display:block;width:100%;box-sizing:border-box;margin-top:6px;padding:12px;border:1px solid #cbdad4;border-radius:12px;font:inherit}.vip-feedback-card button{width:100%;padding:14px;border:0;border-radius:13px;background:#087a70;color:#fff;font-weight:800}.vip-feedback-card>form>small{display:block;margin-top:9px;color:#087a55}.vip-contact-request{display:flex!important;align-items:center;gap:8px;font-weight:500!important}.vip-contact-request input{width:18px;height:18px}.vip-feedback-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 4px;margin-left:4px;border-radius:12px;background:#dc3b35;color:#fff;font-size:12px}.vip-feedback-history{grid-column:1/-1;padding-top:8px;border-top:1px solid #dce6e2}.vip-feedback-history h3{margin:0 0 8px}.vip-feedback-item{padding:12px;margin:8px 0;border-radius:12px;background:#f5f8f7;border-left:4px solid #9aa9a4}.vip-feedback-item.unread{background:#fff8e8;border-left-color:#e99a17}.vip-feedback-item header{display:flex;justify-content:space-between;gap:10px}.vip-feedback-item time{font-size:12px;color:#687872}.vip-feedback-item p{white-space:pre-wrap;margin:8px 0}.vip-feedback-item small{color:#087a70!important}
.vip-visitor-fields{display:block!important;width:100%!important;box-sizing:border-box}.vip-consent{display:grid!important;grid-template-columns:20px minmax(0,1fr)!important;align-items:start!important;gap:9px!important;width:100%!important;max-width:none!important;margin:14px 0 2px!important;padding:0!important;font-size:13px!important;line-height:1.45!important;white-space:normal!important;word-break:keep-all!important}.vip-consent input{display:block!important;width:18px!important;height:18px!important;margin:1px 0 0!important;flex:none!important}.vip-consent span{display:block!important;min-width:0!important;width:auto!important;white-space:normal!important;word-break:keep-all!important}
.silo-photo{background:linear-gradient(180deg,#f8fbfa,#eef5f2)!important}.silo-photo img{object-fit:contain!important;object-position:center!important;padding:5px;box-sizing:border-box;position:relative;z-index:1}.silo-photo i{z-index:2;pointer-events:none}
.vip-consent-row{display:flex!important;flex-flow:row nowrap!important;align-items:flex-start!important;justify-content:flex-start!important;gap:9px!important;width:100%!important;max-width:100%!important;box-sizing:border-box!important;margin:14px 0 2px!important;padding:0!important}.vip-consent-row>input{display:block!important;flex:0 0 18px!important;width:18px!important;min-width:18px!important;max-width:18px!important;height:18px!important;margin:1px 0 0!important;padding:0!important}.vip-consent-row>label{display:block!important;position:static!important;float:none!important;flex:1 1 auto!important;width:auto!important;min-width:0!important;max-width:none!important;height:auto!important;margin:0!important;padding:0!important;font-size:13px!important;line-height:1.45!important;text-align:left!important;white-space:normal!important;word-break:keep-all!important;overflow-wrap:normal!important;writing-mode:horizontal-tb!important}
.admin-only-ready{text-align:center;padding:48px 20px!important}.admin-only-ready .ready-icon{font-size:54px}.admin-only-ready h2{margin:12px 0 6px;color:#123b5d}.admin-only-ready p{margin:0;color:#687b75}.silo-photo img[src*="feed-silo-illustration"]{filter:none!important}
.milk-analyze-form{max-height:88dvh;overflow-y:auto}.milk-analysis-status{padding:11px;border-radius:10px;background:#eef6f3;color:#17634e}.milk-analysis-results fieldset{margin:12px 0;padding:12px;border:1px solid #bcd6cc;border-radius:12px}.milk-analysis-results legend{font-weight:800;color:#123b5d}.milk-analysis-results label{display:grid;grid-template-columns:110px 1fr;align-items:center;gap:8px}.analysis-ok,.analysis-check{display:inline-block;margin-left:6px;padding:3px 7px;border-radius:10px;font-size:11px}.analysis-ok{background:#dff5e9;color:#087a55}.analysis-check{background:#fff0d5;color:#a65b00}.milk-photo-preview>div{position:relative}.milk-photo-preview>div small{position:absolute;z-index:2;top:4px;left:4px;padding:2px 6px;border-radius:8px;background:#123b5dcc;color:#fff}.milk-photo-preview>div img{width:100%;height:90px;object-fit:cover;border-radius:8px}
.statement-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 0}.statement-summary div{padding:10px;border-radius:10px;background:#f3f8f6}.statement-summary dt{font-size:12px;color:#65766f}.statement-summary dd{margin:4px 0 0;font-weight:800;color:#123b5d}@media(max-width:420px){.statement-summary{grid-template-columns:1fr}.statement-summary div{display:flex;justify-content:space-between;align-items:center}.statement-summary dd{margin:0}}
/* V60 device selection and per-farm menu permissions */
.item-delete-check{display:flex!important;align-items:center;justify-content:center;gap:6px;margin:9px 0 0!important;padding:7px!important;border-radius:10px;background:#fff1f0;color:#b62f2a!important;font-size:13px!important;font-weight:800}.item-delete-check input{width:20px;height:20px;accent-color:#d7352f}.menu-permission-settings{margin:0 0 22px;padding:16px;border:1px solid #c8ded7;border-radius:16px;background:#f5fbf9}.menu-permission-settings h3{margin-top:0}.menu-permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.menu-permission-grid label{display:flex;align-items:center;gap:8px;padding:11px;border:1px solid #d8e5e1;border-radius:11px;background:#fff;font-weight:800}.menu-permission-grid input{width:21px;height:21px;accent-color:#078a68}

/* V64: 전등 스위치는 공통 제어버튼의 큰 최소 높이를 사용하지 않는다. */
#lightsView .light-v43 button[data-v43-light]{display:inline-flex!important;flex-direction:row!important;align-items:center!important;justify-content:center!important;width:72px!important;min-width:72px!important;max-width:72px!important;height:38px!important;min-height:38px!important;max-height:38px!important;margin:7px auto 0!important;padding:0 10px!important;border-radius:19px!important;font-size:13px!important;line-height:1!important}
.waterer.delete-selected,.silo-card.delete-selected,.light-v43.delete-selected{outline:3px solid #d7352f;outline-offset:2px;background:#fff8f7}
.waterer .item-delete-check,.silo-card .item-delete-check,.light-v43 .item-delete-check{cursor:pointer}

/* V65: 전등 실시간 상태·저장 피드백·현재 화면 당겨서 새로고침 */
#lightsView .light-v43 button[data-light-switch][aria-pressed="true"]{background:#0aab74!important}
#lightsView .light-v43 button[data-v43-light]:disabled{opacity:.58;cursor:not-allowed}
.light-settings-status{min-height:20px;margin:9px 2px 0!important;font-size:13px;font-weight:800}.light-settings-status.saving{color:#746000}.light-settings-status.saved{color:#087a55}.light-settings-status.failed{color:#bd312b}.light-settings-v44>button:disabled{opacity:.62}

/* V66 전등 자동운전 간편 설정 */
.light-settings-simple{margin-top:14px!important;padding:18px 16px!important;border:1px solid #d7e5e1!important;border-radius:22px!important;background:#fff!important}
.light-simple-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.light-simple-head h2{margin:0 0 5px;font-size:22px;color:#17324a}
.light-simple-head p{margin:0;color:#546b73;font-size:14px;line-height:1.45}
.light-simple-head>span{flex:0 0 auto;padding:7px 10px;border-radius:999px;background:#e8f5ef;color:#087a55;font-size:12px;font-weight:900}
.light-mode-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-bottom:14px}
.light-mode-tabs label{min-width:0}
.light-mode-tabs input{position:absolute;opacity:0;pointer-events:none}
.light-mode-tabs span{display:flex;align-items:center;justify-content:center;min-height:44px;padding:4px;border:1px solid #d4dedb;border-radius:12px;background:#f5f8f7;color:#40555d;font-size:12px;font-weight:850;text-align:center}
.light-mode-tabs input:checked+span{border-color:#098b6d;background:#0b8d70;color:#fff;box-shadow:0 5px 12px rgba(11,141,112,.18)}
.light-mode-panel{display:grid;gap:9px;margin-bottom:15px}
.light-mode-panel[hidden]{display:none!important}
.light-time-row,.light-clock-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #dfe8e5;border-radius:14px;background:#f8faf9}
.light-sun-times{margin:2px 0 10px;padding:8px 12px;border-radius:10px;background:#eaf6ee;color:#0d7c55;font-size:13px;font-weight:700}
.light-time-row>div:first-child,.light-clock-row>span{display:grid;gap:2px}
.light-time-row b,.light-clock-row b{font-size:17px;color:#17324a}
.light-time-row small,.light-clock-row small{color:#72848b;font-size:12px}
.light-minute-stepper{display:grid;grid-template-columns:38px 1fr 22px 38px;align-items:center;gap:6px}
.light-minute-stepper button{width:38px;height:38px;padding:0!important;border:1px solid #ccd9d5!important;border-radius:10px!important;background:#fff!important;color:#087a70!important;font-size:22px!important;font-weight:900!important}
.light-minute-stepper input{width:100%;height:38px;box-sizing:border-box;padding:0 4px;border:1px solid #dfe8e5;border-radius:8px;background:#fff;color:#17324a;font-size:18px;font-weight:900;text-align:center;-moz-appearance:textfield}
.light-minute-stepper input::-webkit-outer-spin-button,.light-minute-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.light-minute-stepper span{font-weight:800;color:#40555d;text-align:center}
.light-clock-row input[type=time]{width:130px;box-sizing:border-box;padding:10px;border:1px solid #cbd8d4;border-radius:10px;background:#fff;color:#17324a;font-size:17px;font-weight:850}
.light-targets{margin:0 0 14px;padding:0;border:0}
.light-targets legend{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;margin-bottom:8px;color:#17324a;font-size:16px;font-weight:900}
.light-targets legend:after{content:attr(data-selection);max-width:65%;overflow:hidden;color:#087a70;font-size:11px;font-weight:800;text-align:right;text-overflow:ellipsis;white-space:nowrap}
.light-targets>div{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.light-targets label{min-width:0}
.light-targets input{position:absolute;opacity:0;pointer-events:none}
.light-targets span{display:flex;align-items:center;justify-content:center;min-height:43px;padding:4px;border:1px solid #d6e0dd;border-radius:11px;background:#f4f7f6;color:#42565d;font-size:14px;font-weight:850}
.light-targets input:checked+span{border-color:#0b9976;background:#e2f5ed;color:#087a55}
.light-targets input:checked+span:before{content:'✓';margin-right:5px;color:#07936f;font-weight:1000}
.light-targets input:disabled+span{opacity:.45}
.light-simple-save{width:100%;min-height:50px;border:0!important;border-radius:14px!important;background:#087f69!important;color:#fff!important;font-size:17px!important;font-weight:900!important}
.light-simple-save:disabled{opacity:.62}
@media(max-width:380px){.light-settings-simple{padding:15px 12px!important}.light-simple-head{display:block}.light-simple-head>span{display:inline-block;margin-top:8px}.light-mode-tabs span{font-size:11px}.light-time-row{gap:7px;padding:10px 8px}.light-minute-stepper{grid-template-columns:34px 1fr 20px 34px}.light-minute-stepper button{width:34px;height:36px!important}.light-clock-row input[type=time]{width:118px}}

/* 기기설정 팝업 체크박스 정렬 */
#moduleDialog .switch-row{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:10px!important;
  width:100%!important;
  box-sizing:border-box!important;
  margin:15px 0!important;
  padding:0!important;
  white-space:normal!important;
}

/* VIP 방문자가 별도 문의 없이 체험 계정으로 들어갈 수 있도록 로그인 카드에 고정 안내 */
.login .visitor-login-hint{
  margin:0 0 20px;
  padding:14px 16px;
  border:1px solid #b7dbc9;
  border-radius:16px;
  background:linear-gradient(135deg,#effaf5,#fff8e7);
  color:#173f31;
}
.login .visitor-login-hint>strong{
  display:block;
  margin-bottom:9px;
  color:#087a55;
  font-size:15px;
}
.login .visitor-login-hint>div{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.login .visitor-login-hint span{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:9px 10px;
  border-radius:11px;
  background:#fff;
  color:#52645d;
  font-size:13px;
}
.login .visitor-login-hint b{
  color:#12684d;
  font-size:16px;
  letter-spacing:.04em;
}
.login .visitor-login-hint>small{
  display:block;
  margin:9px 0 0;
  color:#60736c;
  font-size:12px;
  line-height:1.45;
}
#moduleDialog .switch-row input[type="checkbox"]{
  position:static!important;
  display:block!important;
  flex:0 0 22px!important;
  width:22px!important;
  height:22px!important;
  margin:0!important;
}


/* V69: 카드 역할별 색상 구분 - 조회(청색) / 입력·설정(황색) */
:root{
  --ps-view-surface:#f1f8fc;
  --ps-view-surface-strong:#e6f3fa;
  --ps-view-border:#a9d3e6;
  --ps-view-accent:#19799f;
  --ps-edit-surface:#fff9eb;
  --ps-edit-surface-strong:#fff3d5;
  --ps-edit-border:#e6bd5f;
  --ps-edit-accent:#a86408;
  --ps-card-shadow:0 5px 18px rgba(25,77,105,.10);
}

/* 현재 상태와 측정값을 보여주는 카드 */
.module-card,
.monitor-card,
.vent-status-card,
.home-status-grid article,
.home-power-card,
.waterer,
.light-v43,
.silo-card-row,
.feed-item-row,
.milk-total-card,
.mixer-discharge-wide-card{
  background:linear-gradient(145deg,#fff 0%,var(--ps-view-surface) 100%);
  border:1px solid var(--ps-view-border);
  box-shadow:var(--ps-card-shadow);
}

.metric,
.env-strip-v43,
.statement-summary div,
.mixer-discharge-wide-grid{
  background:var(--ps-view-surface-strong);
  border:1px solid #c8e2ee;
}

.module-card>h2,
.module-card>h3,
.monitor-card h2,
.vent-status-card h2{
  color:#145f80;
}

/* 값을 변경하는 설정 영역은 따뜻한 색으로 분리 */
.schedule-section,
.settings-section,
.light-settings-simple,
.menu-permission-settings,
.vip-visitor-fields,
.module-dialog form{
  background:linear-gradient(145deg,#fff 0%,var(--ps-edit-surface) 100%)!important;
  border:1px solid var(--ps-edit-border)!important;
  box-shadow:0 4px 15px rgba(157,100,12,.09);
}

.settings-grid>label,
.light-time-row,
.light-clock-row,
.mist-slot-card,
.cal-card label{
  padding:10px;
  border:1px solid #edd59a;
  border-radius:12px;
  background:var(--ps-edit-surface-strong);
  color:#67440d;
}

/* 텍스트·숫자·시간 입력칸은 조회값과 확실히 다른 흰색 필드 */
#dash input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="button"]):not([type="submit"]):not([type="hidden"]),
#dash select,
#dash textarea,
dialog input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="button"]):not([type="submit"]):not([type="hidden"]),
dialog select,
dialog textarea{
  background:#fff!important;
  border:2px solid #d9ad4e!important;
  color:#24343b!important;
  box-shadow:inset 0 1px 2px rgba(92,62,9,.07);
}

#dash input:focus,
#dash select:focus,
#dash textarea:focus,
dialog input:focus,
dialog select:focus,
dialog textarea:focus{
  border-color:#c77808!important;
  outline:3px solid rgba(232,158,34,.24)!important;
  outline-offset:1px;
}

#dash input::placeholder,
#dash textarea::placeholder,
dialog input::placeholder,
dialog textarea::placeholder{
  color:#9b835d;
}

@media(max-width:520px){
  .settings-grid>label{padding:8px}
  .module-card,.monitor-card,.vent-status-card{box-shadow:0 3px 12px rgba(25,77,105,.09)}
}

/* V71: 전등 자동운전 카드 열 정렬 및 시간 잘림 방지 */
.light-time-row,
.light-clock-row{
  display:grid!important;
  grid-template-columns:minmax(92px,1fr) minmax(0,220px)!important;
  align-items:center!important;
  gap:10px!important;
  min-height:106px;
  box-sizing:border-box;
}
.light-time-row>div:first-child,
.light-clock-row>span{
  min-width:0;
}
.light-minute-stepper{
  width:100%!important;
  min-width:0!important;
  grid-template-columns:38px minmax(52px,1fr) 22px 38px!important;
}
.light-clock-row input[type=time]{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  padding:10px 8px!important;
  font-size:16px!important;
  line-height:1.2!important;
}
@media(max-width:380px){
  .light-time-row,
  .light-clock-row{
    grid-template-columns:minmax(84px,1fr) minmax(0,190px)!important;
    gap:7px!important;
    padding:10px 8px!important;
  }
  .light-minute-stepper{
    grid-template-columns:34px minmax(46px,1fr) 20px 34px!important;
  }
  .light-clock-row input[type=time]{
    width:100%!important;
    font-size:15px!important;
    padding:10px 6px!important;
  }
}


/* V73: PSFARM 농장용 날씨 상세 */
.home-weather{position:relative;width:calc(100% - 32px);border:0;text-align:left;font:inherit;cursor:pointer}
.home-weather .home-weather-arrow{align-self:center;margin-left:4px;color:#087a70;font-size:28px;font-weight:900}
.home-weather:focus-visible{outline:3px solid #e9a51c;outline-offset:2px}
.weather-detail-view{min-height:calc(100vh - 72px);padding:0 14px 120px;background:linear-gradient(180deg,#eaf6fb 0,#f5f8f6 340px);color:#17324a}
.weather-detail-nav{display:grid;grid-template-columns:70px 1fr 70px;align-items:center;gap:8px;padding:14px 0}
.weather-detail-nav button{padding:10px;background:#fff;color:#176b78;box-shadow:0 3px 12px #164c6414}
.weather-detail-nav b{text-align:center;font-size:18px}
.weather-detail-content{display:grid;gap:13px}
.weather-detail-loading,.weather-detail-error{padding:34px 18px;border-radius:20px;background:#fff;text-align:center;color:#657680}
.weather-hero{padding:22px 18px;border:1px solid #b8dbe8;border-radius:24px;background:linear-gradient(145deg,#dff3fb,#fff);box-shadow:0 7px 22px #174f6818}
.weather-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.weather-hero small,.weather-hero span{color:#54717e}
.weather-hero h1{margin:4px 0;font-size:52px;line-height:1}
.weather-hero h2{margin:5px 0 0;font-size:22px}
.weather-hero-icon{font-size:48px}
.weather-hero-summary{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:16px;padding-top:13px;border-top:1px solid #b9d7e3;font-size:14px;font-weight:800}
.weather-section{padding:16px;border:1px solid #c8dfe7;border-radius:20px;background:#fff;box-shadow:0 4px 16px #17324a0d}
.weather-section h3{margin:0 0 12px;font-size:18px}
.weather-hourly{display:flex;gap:8px;overflow-x:auto;padding:2px 1px 8px;scroll-snap-type:x proximity}
.weather-hour-card{flex:0 0 78px;padding:11px 6px;border-radius:15px;background:#edf7fb;text-align:center;scroll-snap-align:start}
.weather-hour-card b,.weather-hour-card span,.weather-hour-card small{display:block}
.weather-hour-card i{display:block;margin:6px 0;font-style:normal;font-size:25px}
.weather-hour-card span{font-size:17px;font-weight:900}
.weather-hour-card small{margin-top:4px;color:#19799f;font-size:11px}
.weather-rain-bars{display:grid;gap:8px}
.weather-rain-row{display:grid;grid-template-columns:44px 1fr 62px;align-items:center;gap:8px;font-size:12px}
.weather-rain-track{height:9px;overflow:hidden;border-radius:9px;background:#e7eef1}
.weather-rain-track i{display:block;height:100%;border-radius:9px;background:#3c9ed0}
.weather-week-list{display:grid}
.weather-week-row{display:grid;grid-template-columns:48px 34px minmax(54px,1fr) auto;align-items:center;gap:8px;padding:11px 2px;border-top:1px solid #e3ecef}
.weather-week-row:first-child{border-top:0}
.weather-week-row i{font-style:normal;font-size:24px;text-align:center}
.weather-week-row small{color:#19799f}
.weather-week-row b{white-space:nowrap}
.weather-farm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.weather-farm-card{padding:13px;border-radius:15px;background:#f0f8fb;border-left:4px solid #52a1bc}
.weather-farm-card small,.weather-farm-card b{display:block}
.weather-farm-card small{color:#657680}
.weather-farm-card b{margin-top:5px;font-size:18px}
.weather-alert-list{display:grid;gap:8px}
.weather-alert{padding:12px;border-radius:13px;background:#fff4db;color:#744b00;font-weight:850}
.weather-alert.danger{background:#ffe6e2;color:#a42b22}
.weather-air-grid,.weather-sun-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.weather-air-card,.weather-sun-card{padding:14px;border-radius:15px;background:#f3f8f6}
.weather-air-card small,.weather-air-card b,.weather-sun-card small,.weather-sun-card b{display:block}
.weather-air-card b,.weather-sun-card b{margin-top:5px;font-size:18px}
.weather-updated{margin:0;text-align:right;color:#73838a;font-size:11px}
@media(max-width:380px){.weather-detail-view{padding-left:10px;padding-right:10px}.weather-hero h1{font-size:46px}.weather-section{padding:13px}.weather-farm-card b{font-size:16px}.weather-week-row{grid-template-columns:42px 30px minmax(48px,1fr) auto}}


/* V74: 배합기 토출 기록 값 전체 표시 */
.mixer-discharge-wide-title{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:8px!important;
}
.mixer-discharge-wide-title>small{
  min-width:0;
  font-size:13px!important;
  font-weight:850;
}
.mixer-discharge-wide-title>b{
  max-width:100%;
  font-size:clamp(12px,3.5vw,16px)!important;
  line-height:1.2;
  text-align:right;
  white-space:nowrap;
}
.mixer-discharge-wide-grid{
  grid-template-columns:minmax(48px,.72fr) minmax(76px,1.25fr) minmax(66px,1fr) minmax(76px,1.18fr)!important;
}
.mixer-discharge-wide-grid>span{
  padding:3px 5px!important;
}
.mixer-discharge-wide-grid small{
  overflow:visible!important;
  font-size:clamp(9px,2.7vw,11px)!important;
  white-space:nowrap;
}
.mixer-discharge-wide-grid b{
  overflow:visible!important;
  text-overflow:clip!important;
  font-size:clamp(11px,3.45vw,15px)!important;
  letter-spacing:-.45px;
  white-space:nowrap!important;
}
@media(max-width:380px){
  .mixer-discharge-wide-grid{
    grid-template-columns:minmax(42px,.68fr) minmax(70px,1.28fr) minmax(60px,1fr) minmax(70px,1.2fr)!important;
  }
  .mixer-discharge-wide-grid>span{padding:3px 2px!important}
  .mixer-discharge-wide-grid b{font-size:clamp(10px,3.25vw,13px)!important}
}


/* V75: 날씨 상세 전체 가로이동 방지, 시간별 예보만 가로 스크롤 */
.weather-detail-view{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  overflow-x:hidden;
}
.weather-detail-content,
.weather-detail-content>*,
.weather-section,
.weather-hero{
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}
.weather-detail-content,
.weather-section{
  overflow-x:hidden;
}
.weather-hourly{
  display:flex!important;
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto!important;
  overflow-y:hidden;
  overscroll-behavior-x:contain;
  touch-action:pan-x;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.weather-hour-card{
  flex:0 0 78px!important;
}
.weather-rain-bars,
.weather-week-list,
.weather-farm-grid,
.weather-air-grid,
.weather-sun-grid{
  min-width:0;
  max-width:100%;
}


/* V76: 7일 예보 날짜·요일 및 오전·오후 변화 */
.weather-week-row{
  display:block!important;
  padding:12px 2px!important;
}
.weather-week-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:9px;
}
.weather-week-head>b{
  font-size:16px;
}
.weather-week-head>strong{
  color:#244a5b;
  font-size:15px;
  white-space:nowrap;
}
.weather-week-periods{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
}
.weather-week-period{
  display:grid;
  grid-template-columns:auto 30px minmax(0,1fr);
  align-items:center;
  gap:5px;
  min-width:0;
  padding:8px;
  border-radius:12px;
  background:#edf7fb;
}
.weather-week-period small{
  color:#526a75;
  font-size:11px;
  font-weight:850;
}
.weather-week-period i{
  font-style:normal;
  font-size:22px;
  text-align:center;
}
.weather-week-period span{
  min-width:0;
  color:#176f91;
  font-size:12px;
  font-weight:800;
  line-height:1.25;
  word-break:keep-all;
}
@media(max-width:380px){
  .weather-week-period{
    grid-template-columns:auto 26px minmax(0,1fr);
    padding:7px 5px;
  }
  .weather-week-period span{font-size:11px}
}


/* V77: weather hourly rain time and value alignment */
.weather-rain-row{
  grid-template-columns:64px minmax(0,1fr) 64px!important;
}
.weather-rain-row>span{
  display:block;
  width:64px;
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  letter-spacing:-.3px;
}
.weather-rain-row>b{
  text-align:right;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.weather-rain-track{
  width:100%;
  min-width:0;
}
@media(max-width:380px){
  .weather-rain-row{
    grid-template-columns:60px minmax(0,1fr) 58px!important;
    gap:6px;
  }
  .weather-rain-row>span{
    width:60px;
  }
}


/* V78: all menu headers share the weather-detail home navigation */
.module-head,
.unified-folder-head{
  display:grid!important;
  grid-template-columns:70px minmax(0,1fr) 70px;
  align-items:center;
  gap:8px;
  width:100%;
  box-sizing:border-box;
  min-height:62px;
  margin:0 0 14px;
  padding:14px 0 6px;
}
.unified-folder-head{
  padding-left:16px;
  padding-right:16px;
}
.module-head>.module-home-action{
  grid-column:1;
  width:70px;
  min-height:42px;
  padding:10px 6px;
  border:0;
  border-radius:13px;
  background:#fff;
  color:#176b78;
  box-shadow:0 3px 12px #164c6414;
  font-size:14px;
  font-weight:800;
  white-space:nowrap;
}
.module-head>div,
.module-head>h1{
  grid-column:2;
  min-width:0;
  text-align:center;
}
.module-head h1{
  margin:0;
  font-size:18px;
  color:var(--v43-navy);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.module-head>div>small{
  display:block;
  margin-top:2px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.module-head>.module-head-spacer{
  grid-column:3;
  width:70px;
}
@media(max-width:380px){
  .module-head,
  .unified-folder-head{
    grid-template-columns:64px minmax(0,1fr) 64px;
    gap:6px;
  }
  .module-head>.module-home-action,
  .module-head>.module-head-spacer{
    width:64px;
  }
}


/* V79: keep every menu title on the exact header center axis */
.module-head,
.unified-folder-head{
  position:relative;
}
.module-head>div,
.module-head>h1{
  position:absolute;
  left:50%;
  top:50%;
  width:min(58%,260px);
  transform:translate(-50%,-50%);
  z-index:1;
}
.module-head>.module-home-action{
  position:relative;
  z-index:2;
}


/* V80: current-time weather ranges and external-data labels */
.weather-section-title{margin:0 0 12px}
.weather-section-title h3{margin:0 0 3px}
.weather-section-title small{display:block;color:#6b7e87;font-size:11px;font-weight:700;line-height:1.35}
.weather-rain-date{display:block;margin:8px 0 2px;padding:7px 8px;border-radius:9px;background:#edf7fb;color:#28566b;font-size:13px}
.weather-rain-date:first-child{margin-top:0}
.weather-rain-row>span{position:relative}
.weather-rain-row>span>em{display:block;color:#087a70;font-size:9px;font-style:normal;font-weight:900;line-height:1}

.weather-hour-card>em{display:block;margin-bottom:2px;color:#67808b;font-size:10px;font-style:normal;font-weight:750}
.weather-hour-card>b{min-height:31px}
.weather-current-badge{display:block!important;margin:1px 0 0!important;color:#087a70!important;font-size:9px!important;line-height:1!important}

/* V mobile settings: shared responsive device dialogs */
.module-dialog,.module-dialog *{box-sizing:border-box}
.module-dialog>form,.module-dialog>.ha-device-picker,.module-dialog>.vent-fan-schedule-dialog,.module-dialog>.inverter-manager{width:100%;max-width:100%;overflow-x:hidden}
.module-dialog input:not([type="checkbox"]):not([type="radio"]),.module-dialog select,.module-dialog textarea,.module-dialog button{max-width:100%;min-width:0}
.module-dialog .smart-schedule-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;width:100%}
.module-dialog .smart-schedule-row>*{min-width:0}
.module-dialog .smart-schedule-days{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:6px!important;width:100%!important}
.module-dialog .smart-schedule-days label{min-width:0!important;width:100%!important;margin:0!important;padding:8px 2px!important;text-align:center!important}
.module-dialog .mobile-settings-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:#fff;z-index:3}
.module-dialog .mobile-settings-head h2{min-width:0;margin:0;padding:0}
.module-dialog .mobile-settings-close{flex:0 0 44px;width:44px;height:44px;padding:0;border-radius:50%;background:#edf3f0;color:#52645d;font-size:20px}
@media(max-width:700px){
  body:has(dialog[open]) #bottomMenu{visibility:hidden!important;pointer-events:none!important}
  dialog.module-dialog[open]{position:fixed!important;inset:0!important;width:100%!important;height:100dvh!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border-radius:0!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain;z-index:10000}
  .module-dialog>form,.module-dialog>.ha-device-picker,.module-dialog>.vent-fan-schedule-dialog,.module-dialog>.inverter-manager,.module-dialog>.ha-picker-loading{width:100%!important;max-width:100%!important;min-height:100%;margin:0!important;padding:16px!important;padding-top:max(16px,env(safe-area-inset-top))!important;padding-bottom:max(20px,env(safe-area-inset-bottom))!important;border-radius:0!important;overflow-x:hidden!important}
  .module-dialog .mobile-settings-head{position:sticky;top:0;margin:-16px -16px 14px;width:calc(100% + 32px);padding:calc(10px + env(safe-area-inset-top)) 16px 10px;border-bottom:1px solid #dce7e3;box-shadow:0 3px 10px #17324a10}
  .module-dialog .dialog-actions{width:100%;flex-wrap:wrap}
  .module-dialog .dialog-actions button{flex:1 1 min(140px,100%)}
}

.smart-schedule-item>span{display:flex;gap:6px;flex:0 0 auto}.smart-schedule-save-status{min-height:20px;margin:4px 0;color:#087a55;font-weight:800}.smart-schedule-item>div{min-width:0}
.inverter-manager{align-content:start;min-width:0;padding-top:0}
.inverter-manager>h2{margin:0 0 2px;padding:0}
.inverter-manager-list{display:grid;gap:8px;min-width:0;width:100%}
.inverter-manager-item{box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;width:100%;max-width:100%;overflow:hidden}
.inverter-manager-item>div{min-width:0;overflow:hidden}
.inverter-manager-item strong,.inverter-manager-item small{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.inverter-manager-item small{margin-top:3px;color:#687872}
.inverter-manager-item>span{min-width:0;max-width:100%}
.inverter-manager-add,.inverter-manager-close,.inverter-manager-close>button{box-sizing:border-box;width:100%;max-width:100%}
.inverter-advanced-settings{min-width:0;border:1px solid #dce7e3;border-radius:14px;background:#f8fbfa;overflow:hidden}
.inverter-advanced-settings>summary{cursor:pointer;padding:13px 14px;color:#285f53;font-weight:850}
.inverter-advanced-settings>div{display:grid;gap:10px;padding:2px 12px 12px;min-width:0}
.inverter-delete-action{width:100%;margin-top:4px;background:#fff0ef!important;color:#ad3832!important}
.inverter-time-set{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px;width:100%!important;min-width:0;overflow:hidden}.inverter-time-set>.inverter-time-window-row{width:100%!important;min-width:0}.inverter-time-set label{min-width:0}.inverter-time-set input[type=time],.inverter-time-set input[type=number]{width:100%!important;min-width:0!important}.inverter-time-set .switch-row,.inverter-time-set .remove-action{width:100%;min-height:42px}.inverter-time-set .smart-schedule-days{min-width:0}.inverter-time-window-row input[type=time]{font-size:16px;min-height:44px;padding:8px 5px}
@media(max-width:430px){.inverter-manager{gap:9px!important}.inverter-manager-item{grid-template-columns:minmax(0,1fr);padding:10px}.inverter-manager-item>span{display:grid;grid-template-columns:1fr 1fr;width:100%}.inverter-manager-item>span button{width:100%;min-width:0;padding-inline:8px}}

.cctv-settings-action{display:block;margin:-8px 0 12px auto}.cctv-app-grid{display:grid;gap:12px}.cctv-app-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px}.cctv-app-card>span{font-size:34px}.cctv-app-card h2{margin:2px 0;padding:0}.cctv-app-edit-card{display:grid;gap:9px;padding:12px;border:1px solid #dbe7e3;border-radius:14px;background:#f8fbfa}.cctv-app-flags,.cctv-row-actions{display:flex;gap:8px;flex-wrap:wrap}.cctv-app-flags label{display:flex;align-items:center;gap:6px}.home-cctv-launch-card{cursor:pointer}
@media(max-width:420px){.cctv-app-card{grid-template-columns:auto minmax(0,1fr)}.cctv-app-card>button{grid-column:1/-1;width:100%}}

.cctv-check-list{display:grid;gap:9px}.cctv-check-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;border:1px solid #dbe7e3;border-radius:14px;background:#f8fbfa}.cctv-check-row>label:first-child{display:flex;align-items:center;gap:8px;min-width:0;margin:0}.cctv-check-row small{margin-left:auto;color:#667085;font-size:11px}.cctv-home-check{display:flex!important;align-items:center;gap:5px;margin:0!important;white-space:nowrap}@media(max-width:420px){.cctv-check-row{grid-template-columns:minmax(0,1fr) auto}.cctv-check-row small{display:none}}

/* CCTV modern mobile cards and picker sheet */
.cctv-modern-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:-8px 0 14px}
.cctv-modern-toolbar>button{min-height:38px;padding:8px 12px;border:1px solid #cfe0db;border-radius:999px;background:#fff;color:#176b5b;font-size:13px;box-shadow:0 2px 8px #17324a0d}
.cctv-modern-toolbar .cctv-gear{width:38px;padding:0;font-size:18px}
.cctv-modern-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.cctv-modern-card{position:relative;display:grid;grid-template-columns:48px minmax(0,1fr) 18px;align-items:center;gap:9px;min-height:112px;padding:17px 13px;border:1px solid #dfe8e5;border-radius:20px;background:#fff;box-shadow:0 5px 18px #17324a0d;cursor:pointer;overflow:hidden}
.cctv-modern-card:active{transform:scale(.985)}
.cctv-modern-card .cctv-card-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:16px;background:#edf6f3;font-size:25px}
.cctv-modern-card h2{margin:0;padding:0;color:#18364b;font-size:16px;line-height:1.25;word-break:keep-all}
.cctv-modern-card small{display:block;margin-top:5px;color:#238069;font-size:10px}
.cctv-modern-card.is-unverified small{color:#8a7563}
.cctv-more{position:absolute;top:5px;right:5px;width:32px;height:32px;padding:0;border-radius:50%;background:transparent;color:#708079;font-size:20px}
.cctv-launch-arrow{font-style:normal;color:#91a29c;font-size:24px}
.cctv-picker-sheet>p{margin:0 0 12px;color:#687872}
.cctv-picker-list{display:grid;gap:8px}
.cctv-picker-option{display:grid!important;grid-template-columns:24px 44px minmax(0,1fr) 22px;align-items:center;gap:10px;margin:0!important;padding:12px!important;border:1px solid #dce7e3;border-radius:16px;background:#fff}
.cctv-picker-option input{width:20px!important;height:20px!important;margin:0!important}
.cctv-picker-option .cctv-app-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#eff6f4}
.cctv-picker-option b,.cctv-picker-option small{display:block}
.cctv-picker-option small{margin-top:3px;color:#71817a;font-size:11px}
.cctv-picker-option i{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#d9e4e0;color:#fff;font-style:normal}
.cctv-picker-option:has(input:checked){border-color:#65b8a1;background:#f1faf7}
.cctv-picker-option:has(input:checked) i{background:#178568}
.cctv-picker-save{position:sticky;bottom:0;margin:14px -2px 0;padding:10px 2px calc(4px + env(safe-area-inset-bottom));background:linear-gradient(#ffffff00,#fff 24%)}
.cctv-picker-save button{width:100%;background:#176b5b}
.cctv-sheet-close{width:100%;margin-top:5px;background:transparent;color:#66766f}
.cctv-card-menu{display:grid;gap:8px;padding:18px}
.cctv-card-menu h2{margin:0 0 8px;padding:0}
.cctv-card-menu>button{width:100%;background:#eef5f3;color:#285f53}
.cctv-card-menu>.remove-action{background:#fff0ef!important;color:#ad3832!important}
@media(max-width:700px){
dialog.module-dialog:has(.cctv-picker-sheet)[open],dialog.module-dialog:has(.cctv-card-menu)[open]{inset:auto 0 0!important;height:auto!important;max-height:86dvh!important;border-radius:26px 26px 0 0!important;overflow-y:auto!important}
.module-dialog>.cctv-picker-sheet,.module-dialog>.cctv-card-menu{width:100%!important;max-width:none!important;min-height:0!important;padding:18px 16px calc(16px + env(safe-area-inset-bottom))!important}
.module-dialog .cctv-picker-sheet>.mobile-settings-head,.module-dialog .cctv-card-menu>.mobile-settings-head{position:sticky;top:0;margin:-18px -16px 14px;width:calc(100% + 32px);border-radius:26px 26px 0 0}
}
@media(min-width:720px){.cctv-modern-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:1100px){.cctv-modern-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* CCTV app-specific icons; independent from launch verification */
.cctv-app-icon{display:grid;place-items:center;overflow:hidden;background:#fff;color:#244b43;font-weight:900;letter-spacing:-.04em}
.cctv-app-icon img{display:block;width:100%;height:100%;object-fit:contain}
.cctv-app-icon b{display:none;font-size:14px;line-height:1}
.cctv-app-icon.is-text b{display:block}
.cctv-app-icon.is-text img{display:none}
.home-cctv-app-icon{flex:0 0 46px;width:46px;height:46px;border-radius:14px}
.cctv-picker-option .cctv-app-mark,.cctv-modern-card .cctv-card-icon{padding:0;background:#fff}


/* Common mobile safe areas for Android WebView/PWA and notched devices. */
@media (max-width:900px), (pointer:coarse){
  :root{
    --psfarm-safe-top:env(safe-area-inset-top,0px);
    --psfarm-safe-bottom:max(env(safe-area-inset-bottom,0px),16px);
  }
  #dash>header{
    position:static;
    top:auto;
    box-sizing:border-box;
    min-height:64px;
    padding-top:var(--psfarm-safe-top);
    z-index:auto;
  }
  .bottom-menu{
    padding-bottom:calc(9px + var(--psfarm-safe-bottom))!important;
  }
  body:has(#dash:not([hidden])){
    padding-bottom:calc(104px + var(--psfarm-safe-bottom))!important;
  }
  #settingsDialog>form,
  #farmAdminDialog>form,
  #vipVisitorsDialog>form,
  .module-dialog>form,
  .module-dialog>.ha-device-picker,
  .module-dialog>.vent-fan-schedule-dialog,
  .module-dialog>.inverter-manager,
  .module-dialog>.ha-picker-loading{
    padding-top:var(--psfarm-safe-top)!important;
    padding-bottom:max(20px,var(--psfarm-safe-bottom))!important;
  }
  #settingsDialog .settings-title,
  #farmAdminDialog .settings-title,
  #vipVisitorsDialog .settings-title,
  .module-dialog .mobile-settings-head{
    padding-top:calc(10px + var(--psfarm-safe-top))!important;
  }
  .module-dialog>.cctv-picker-sheet,
  .module-dialog>.cctv-card-menu{
    padding-bottom:calc(16px + var(--psfarm-safe-bottom))!important;
  }
}


/* V82: compact mobile app and module headers without content overlap */
@media (max-width:900px), (pointer:coarse){
  #dash>header{
    gap:7px!important;
    padding-right:10px!important;
    padding-left:10px!important;
  }
  #dash>header .brand{
    font-size:20px!important;
  }
  #dash>nav{
    padding:8px 10px!important;
  }
  #dash>nav button{
    padding:8px 11px!important;
    font-size:13px!important;
  }
  .module-head,
  .unified-folder-head{
    grid-template-columns:58px minmax(0,1fr) 58px!important;
    min-height:48px!important;
    margin:0 0 8px!important;
    padding:5px 10px!important;
  }
  .module-head>.module-home-action{
    width:58px!important;
    min-height:38px!important;
    padding:7px 4px!important;
    border-radius:11px!important;
    font-size:12px!important;
  }
  .module-head>.module-head-spacer{
    width:58px!important;
  }
  .module-head h1{
    font-size:17px!important;
  }
}

/* V83: waterer card headers scroll normally and bottom menu keeps its position */
.waterer>header{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  background:transparent!important;
  border:0!important;
}
.bottom-menu{
  scroll-snap-type:none!important;
}
.bottom-menu button{
  scroll-snap-align:none!important;
}

/* V86: show the remaining-feed colour only inside the bulk-bin vessel. */
.silo-card-row .silo-photo>i{
  top:auto!important;
  right:18%!important;
  bottom:28%!important;
  left:18%!important;
  max-height:100%!important;
  border-top:3px solid #0c9671!important;
  border-radius:42% 42% 0 0 / 16% 16% 0 0!important;
  background:rgba(19,164,125,.38)!important;
  clip-path:polygon(7% 0,93% 0,100% 69%,64% 100%,36% 100%,0 69%)!important;
  transform:scaleY(.64);
  transform-origin:center bottom;
}
.silo-card-row.danger .silo-photo>i{
  border-top-color:#dc3b35!important;
  background:rgba(220,59,53,.32)!important;
}

.light-v43 .light-card-schedule-summary{display:block;grid-column:1/-1;min-width:0;margin-top:6px;color:#65736d;font-size:12px;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
.light-device-schedules{display:grid;gap:10px;margin-top:14px;padding:12px;border:1px solid #d7e3dd;border-radius:14px;background:#f7faf8}.light-device-schedules h3{margin:0}.light-device-schedule-row{display:grid;gap:8px;padding:10px;border:1px solid #dfe7e3;border-radius:12px;background:#fff}.light-device-schedule-row>div{display:grid;grid-template-columns:minmax(110px,1fr) minmax(110px,1fr) auto;gap:7px}.light-device-schedule-row input,.light-device-schedule-row select{min-width:0;min-height:44px}.light-device-schedule-row fieldset{display:flex;flex-wrap:wrap;gap:5px;margin:0;padding:7px}.light-device-schedule-row fieldset label{display:flex;align-items:center;gap:3px;min-width:36px}.light-device-schedule-row fieldset input{min-height:0}
@media(max-width:430px){.light-device-schedule-row>div{grid-template-columns:1fr 1fr}.light-device-schedule-row>div button{grid-column:1/-1}.light-device-schedules{padding:9px}}
