:root{font-family:Inter,Pretendard,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#203129;background:#f2f4f0;font-synthesis:none;font-size:14px;line-height:1.42;--green:#276548;--green-dark:#194b34;--green-soft:#e8f1e9;--border:#dbe2da;--muted:#6c7971;--surface:#fff;--soft:#f5f7f4;--orange:#a76015;--red:#a84038}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px}button,input,select{font:inherit}button,.button{align-items:center;background:#fff;border:1px solid #bdc9c0;border-radius:8px;color:#294738;cursor:pointer;display:inline-flex;font-weight:680;justify-content:center;min-height:44px;padding:8px 13px;text-decoration:none}button:hover,.button:hover{background:#edf3ed;border-color:#84998c}button:disabled{cursor:not-allowed;opacity:.46}.primary{background:var(--green);border-color:var(--green);color:#fff}.primary:hover{background:var(--green-dark)}.danger-outline{border-color:#ce928b;color:#8d3b35}.text-button{background:transparent;border-color:transparent;color:#28664b;font-size:12px;min-height:34px;padding:4px 7px}a{color:#246447}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #d18b25;outline-offset:2px}.skip{background:#fff;left:10px;padding:9px;position:fixed;top:-80px;z-index:30}.skip:focus{top:8px}
.topbar{align-items:center;background:#fff;border-bottom:1px solid var(--border);display:grid;gap:16px;grid-template-columns:auto 1fr auto;height:58px;padding:7px 24px;position:sticky;top:0;z-index:10}.brand{align-items:center;color:#173d2b;display:flex;font-size:17px;font-weight:800;gap:9px;text-decoration:none;white-space:nowrap}.brand-mark{align-items:center;background:#214d38;border-radius:8px;color:#fff;display:inline-flex;font-size:12px;height:34px;justify-content:center;width:34px}.topbar nav{display:flex;gap:2px;justify-content:center;min-width:0;overflow-x:auto;scrollbar-width:none}.topbar nav button{background:transparent;border-color:transparent;color:#52625a;flex:0 0 auto;font-size:13px;min-height:38px;padding:7px 11px}.topbar nav button[aria-current=true]{background:var(--green-soft);color:#194832}.top-actions{align-items:center;display:flex;gap:5px;white-space:nowrap}.top-actions button{border-color:transparent;font-size:12px;min-height:38px;padding:6px 8px}#connection{align-items:center;color:#47715b;display:flex;font-size:10px;gap:5px;max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#connection::before{background:#2f8758;border-radius:50%;content:"";height:7px;min-width:7px;width:7px}#connection.disconnected{color:var(--orange)}#connection.disconnected::before{background:#d17a1c}#connection.signed-out-state{display:none}
.device-tabs{align-items:stretch;background:#fafbf9;border-bottom:1px solid var(--border);display:flex;height:48px;overflow-x:auto;overflow-y:hidden;padding:5px 24px;scrollbar-color:#acb9b0 transparent;white-space:nowrap}.device-tabs[hidden]{display:none}.device-tab{background:transparent;border-color:transparent;border-radius:7px;flex:0 0 auto;font-size:13px;gap:8px;min-height:36px;padding:6px 16px}.device-tab[aria-selected=true]{background:#fff;border-color:#bac9be;box-shadow:0 1px 2px #2031290d;color:#174a32}.device-tab i{align-items:center;background:#89958e;border-radius:50%;color:#fff;display:inline-flex;font-size:9px;font-style:normal;font-weight:800;height:14px;justify-content:center;width:14px}.device-tab i.warn{background:#cc7c20}.device-tab i.danger{background:#b84139}
main{margin:0 auto;max-width:1600px;min-height:calc(100vh - 106px);padding:12px 24px 20px}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.login-notice:empty{display:none}.login-notice{background:#e7f2e8;border:1px solid #cbdccc;border-radius:8px;margin:24px auto 0;max-width:550px;padding:8px 12px}.toast[hidden]{display:none}.toast{align-items:start;background:#eef3f0;border:1px solid #c9d5cd;border-radius:9px;box-shadow:0 5px 16px #243a2e24;display:grid;gap:8px;grid-template-columns:18px minmax(0,1fr) auto 30px;max-height:118px;overflow:hidden;padding:9px 8px 9px 11px;pointer-events:none;position:fixed;right:18px;top:114px;width:min(430px,calc(100vw - 28px));z-index:12}.toast.success{background:#e7f2e8;border-color:#b8d3bf;color:#235e3d}.toast.info{background:#eef4f2;border-color:#c6d8d2;color:#315e51}.toast.warning{background:#fff3e1;border-color:#dfbd88;color:#7b501b}.toast.error{background:#f9e8e4;border-color:#e0aaa3;color:#8e352f}.toast-icon{align-items:center;border:1px solid currentColor;border-radius:50%;display:inline-flex;font-size:11px;font-weight:850;height:18px;justify-content:center;line-height:1;width:18px}.toast-message{font-size:12px;line-height:1.4;margin:1px 0;overflow-wrap:anywhere}.toast-action{align-self:center;background:#fff9;border-color:currentColor;color:inherit;font-size:11px;min-height:30px;padding:4px 8px;pointer-events:auto;white-space:nowrap}.toast-close{background:transparent;border-color:transparent;color:inherit;font-size:18px;min-height:30px;padding:0;pointer-events:auto;width:30px}.toast-close:hover{background:#ffffff80;border-color:currentColor}.eyebrow,.device-kicker{color:#698074;font-size:9px;font-weight:800;letter-spacing:.15em;margin:0 0 2px;text-transform:uppercase}h1{font-size:25px;font-weight:770;letter-spacing:-.035em;margin:0}h2{font-size:15px;letter-spacing:-.01em;margin:0 0 8px}h3{font-size:14px;margin:15px 0 8px}p{margin:7px 0 11px}small,.muted{color:var(--muted);font-size:11px}small{display:block;overflow-wrap:anywhere}
.device-hmi{background:#fff;border:1px solid var(--border);border-radius:13px;display:grid;gap:8px;grid-template-areas:"head head" "control sensors" "automation sensors" "irrigation sensors" "actions actions";grid-template-columns:minmax(330px,.82fr) minmax(520px,1.18fr);grid-template-rows:44px minmax(150px,1fr) minmax(180px,1.08fr) minmax(115px,.8fr) 44px;min-height:calc(100vh - 138px);padding:11px 13px}.hmi-device-header{align-items:center;display:flex;gap:10px;grid-area:head;justify-content:space-between;padding:0 4px}.hmi-device-header>div{min-width:0}.hmi-device-header h1{font-size:23px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-warning{border-radius:999px;flex:0 0 auto;font-size:12px;font-weight:750;padding:5px 9px}.device-warning.warn{background:#fff0d8;color:#895514}.device-warning.danger{background:#f9e6e2;color:#963b34}.device-warning.neutral{background:#edf0ed;color:#647169}.hmi-section{background:var(--soft);border:1px solid #e2e7e1;border-radius:9px;min-width:0;padding:10px 12px}.control-panel{align-items:center;display:grid;gap:7px;grid-area:control;grid-template-columns:1fr 1fr}.valve-live,.flow-live{min-width:0}.valve-live>span,.flow-live>span{color:var(--muted);display:block;font-size:10px}.valve-live strong,.flow-live strong{display:block;font-size:20px;font-variant-numeric:tabular-nums;line-height:1.28;margin:2px 0}.valve-live strong.open{color:#1d7448}.valve-live strong.unknown{color:#8b5a18}.flow-live strong small{display:inline;font-size:10px}.last-received,.flow-quality{color:var(--muted);font-size:9px;min-height:13px}.flow-quality.warn{color:#8b5a18}.flow-quality.danger{color:#963b34}.control-assist{align-items:center;color:var(--muted);display:flex;font-size:10px;grid-column:1/-1;height:34px;line-height:1.4;margin:0;overflow:hidden}.control-assist.progress{color:#765019}.control-assist.danger{color:#963b34}.control-buttons{display:grid;gap:7px;grid-column:1/-1;grid-template-columns:1fr 1fr}.control-buttons .control-button{background:var(--green);border:1px solid #194b34;box-shadow:0 2px 0 #143d2b;color:#fff;flex-direction:column;font-size:15px;font-weight:800;line-height:1.15;min-height:46px;transition:background-color .12s,border-color .12s,box-shadow .12s,transform .06s}.control-buttons .control-button:not(:disabled):hover{background:var(--green-dark);border-color:#123a28;box-shadow:0 3px 0 #102f22}.control-buttons .control-button:not(:disabled):active{box-shadow:0 1px 0 #102f22;transform:translateY(1px)}.control-buttons .control-button small{color:inherit;font-size:9px;margin-top:2px}.control-buttons .control-button:disabled{background:#e4e8e4;border-color:#c7cec8;box-shadow:none;color:#7b867f;cursor:not-allowed;opacity:1}.control-buttons .control-button:disabled:hover{background:#e4e8e4;border-color:#c7cec8;box-shadow:none;color:#7b867f;transform:none}.control-buttons .control-button.is-progress:disabled{background:#fff4e3;border-color:#c47a20;color:#75470f;cursor:wait;opacity:1}.control-buttons .control-button.is-progress:disabled:hover{background:#fff4e3;border-color:#c47a20;color:#75470f}.control-buttons .control-button.is-progress::before{animation:control-spin 1s linear infinite;border:2px solid #d8b787;border-radius:50%;border-top-color:#9b5a12;content:"";height:11px;left:12px;position:absolute;top:50%;transform:translateY(-50%);width:11px}.control-buttons .control-button.is-progress{padding-left:25px;position:relative}.control-buttons .control-button.is-failure{background:#fff7f5;border-color:#b94b42;box-shadow:0 2px 0 #8f3933;color:#8f312b}.control-buttons .control-button.is-failure:not(:disabled):hover{background:#fbe9e6;border-color:#963b34;box-shadow:0 3px 0 #782e29}.control-buttons .control-button.is-failure:disabled,.control-buttons .control-button.is-failure:disabled:hover{background:#f2e8e6;border-color:#d0aaa6;box-shadow:none;color:#8d6b68}.control-unavailable{color:var(--orange);font-size:10px;grid-column:1/-1;margin:0}@keyframes control-spin{to{transform:translateY(-50%) rotate(360deg)}}
.sensor-panel{grid-area:sensors;padding:10px}.section-heading{align-items:baseline;display:flex;justify-content:space-between}.section-heading h2{margin:0 0 7px}.section-heading>span{color:var(--muted);font-size:9px}.sensor-grid{display:grid;gap:7px;grid-template-columns:repeat(3,minmax(0,1fr));height:calc(100% - 24px)}.sensor-tile{background:#fff;border:1px solid #dfe5df;border-radius:8px;display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;padding:7px 9px;position:relative}.sensor-tile>header{align-items:center;color:#586b61;display:flex;font-size:10px;gap:5px;justify-content:space-between;min-height:20px}.sensor-name{align-items:center;display:flex;font-weight:700;gap:5px;min-width:0}.sensor-icon{fill:none;flex:0 0 auto;height:17px;stroke:#527763;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65;width:17px}.sensor-reading{align-items:baseline;display:flex;font-variant-numeric:tabular-nums;line-height:1.15;margin:1px 0 3px;min-height:27px;overflow:hidden;white-space:nowrap}.sensor-reading strong{font-size:23px;font-weight:780;letter-spacing:-.025em;overflow:hidden;text-overflow:ellipsis}.sensor-reading small{display:inline;font-size:9px;font-weight:680;margin-left:2px}.sensor-aux{color:#718078;font-size:9px;margin-left:6px}.sensor-scale{margin:0 0 1px}.sensor-range{color:#839087;display:flex;font-size:7px;justify-content:space-between;line-height:1.2;margin-top:0}.sensor-thresholds{align-items:center;display:flex;gap:7px;height:14px;min-width:0;overflow:hidden;white-space:nowrap}.sensor-thresholds>span{align-items:center;color:#6d756f;display:inline-flex;font-size:7px;font-weight:700;gap:3px}.sensor-thresholds i{background:#cc7b20;border-radius:1px;display:inline-block;height:6px;width:2px}.sensor-thresholds .close i{background:#2f8758}.sensor-thresholds .safe i{background:#b94b42}.sensor-thresholds .inactive{color:#8d9690}.sensor-thresholds .inactive i{opacity:.5}.sparkline{display:grid;flex:1;grid-template-rows:minmax(38px,1fr) auto;min-height:49px}.spark-chart{min-height:38px;position:relative}.spark-guide{height:1px;left:0;position:absolute;right:0}.spark-guide::after{border-top:1px solid #dce4de;content:"";left:23px;position:absolute;right:0;top:0}.spark-guide b{color:#8c9890;font-size:7px;font-variant-numeric:tabular-nums;font-weight:550;left:0;line-height:1;position:absolute;text-align:left;top:-3px;width:21px}.spark-guide.guide-0{top:12.5%}.spark-guide.guide-1{top:50%}.spark-guide.guide-2{top:87.5%}.spark-chart svg{height:100%;left:23px;min-height:38px;position:absolute;top:0;width:calc(100% - 23px);z-index:1}.sparkline polyline{fill:none;stroke:#397d5c;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;vector-effect:non-scaling-stroke}.trend-summary{color:#707f76;font-size:8px;line-height:1.15;text-align:right}.spark-empty{align-items:center;color:#8a958e;display:flex;font-size:8px;height:100%;justify-content:center;margin-left:23px}.empty-trend{align-items:end;display:flex;justify-content:flex-end;min-height:30px}.sensor-quality{align-items:center;color:#718078;display:flex;font-size:8px;gap:3px;white-space:nowrap}.sensor-quality i{background:#8a958e;border-radius:50%;height:6px;width:6px}.sensor-tile.good .sensor-quality i{background:#2b8757}.sensor-tile.warn{border-color:#e1bd83}.sensor-tile.warn .sensor-quality{color:#8a591c}.sensor-tile.warn .sensor-quality i{background:#ca7d21}.sensor-tile.danger{border-color:#dba49e}.sensor-tile.danger .sensor-quality{color:#963b34;font-weight:750}.sensor-tile.danger .sensor-quality i{background:#ba443c}.sensor-degraded .sensor-meter,.sensor-degraded .spark-chart{filter:grayscale(.45);opacity:.42}.sensor-degraded .sensor-reading strong{color:#59665f}
.automation-panel{grid-area:automation;padding-bottom:8px;padding-top:8px}.automation-panel .section-heading{height:22px}.automation-panel .section-heading h2{margin:0}.automation-common{color:#765019;font-size:8.5px;height:14px;line-height:14px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.automation-common:not(.visible){visibility:hidden}.automation-grid{display:grid;gap:4px;grid-template-columns:repeat(2,minmax(0,1fr))}.automation-card{background:#fff;border:1px solid #dce3dd;border-radius:7px;display:grid;grid-template-rows:11px 15px minmax(24px,1fr) 5px;min-height:58px;min-width:0;padding:4px 6px;position:relative}.automation-card h3{color:#53635a;font-size:9px;line-height:11px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.automation-state{align-items:center;display:flex;font-size:9px;font-variant-numeric:tabular-nums;font-weight:760;gap:4px;height:15px;line-height:13px;margin:0;min-width:0}.automation-state strong{background:#edf0ee;border-radius:999px;display:block;max-width:100%;overflow:hidden;padding:1px 5px;text-overflow:ellipsis;white-space:nowrap}.automation-state i{background:#89938d;border-radius:50%;box-shadow:inset 0 0 0 1px #11191438;flex:0 0 auto;height:6px;width:6px}.automation-card.state-waiting .automation-state i,.automation-card.state-countdown .automation-state i{background:#2f8758}.automation-card.state-waiting .automation-state strong,.automation-card.state-countdown .automation-state strong{background:#e2f1e7;color:#216a45}.automation-card.state-processing .automation-state i{background:#cc7b20}.automation-card.state-processing .automation-state strong,.automation-card.state-blocked .automation-state strong{background:#fff0dc;color:#865413}.automation-card.state-blocked .automation-state i{background:#c17920}.automation-card.state-attention .automation-state i{background:#b94b42}.automation-card.state-attention .automation-state strong{background:#f8e7e4;color:#923d36}.automation-card.state-blocked{border-color:#dfbd88}.automation-card.state-attention{border-color:#d9a29c}.automation-card.disabled .automation-rule{color:#737d77}.automation-rule{color:#46544c;display:-webkit-box;font-size:9px;line-height:10px;margin:1px 0 0;min-height:24px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:keep-all}.automation-detail{color:#718078;display:block}.automation-value{border-radius:3px;display:inline-block;font-variant-numeric:tabular-nums;font-weight:800;line-height:1.35;padding:0 3px;white-space:nowrap}.automation-value.open{background:#fff0dc;color:#9b5810}.automation-value.close{background:#e2f1e7;color:#216a45}.automation-value.safety{background:#f8e7e4;color:#923d36}.automation-value.timer{background:#ece9f5;color:#5c507f}.automation-card.disabled .automation-value{background:#edf0ee;color:#69746d}.automation-timer-slot{height:5px}.automation-timer-slot progress{appearance:none;background:#dfe6e1;border:0;border-radius:999px;display:block;height:5px;overflow:hidden;width:100%}.automation-timer-slot progress[hidden]{display:none}.automation-timer-slot progress::-webkit-progress-bar{background:#dfe6e1;border-radius:999px}.automation-timer-slot progress::-webkit-progress-value{background:#527d66;border-radius:999px}.automation-timer-slot progress::-moz-progress-bar{background:#527d66;border-radius:999px}.automation-schedule{background:#fff;border-color:#dce3dd;border-radius:7px;display:grid;font-size:9px;grid-column:1/-1;grid-template-columns:auto minmax(0,1fr) auto;min-height:29px;padding:3px 7px;text-align:left}.automation-schedule>span{color:#627168}.automation-schedule>strong{font-size:9.5px;overflow:hidden;padding-inline:7px;text-overflow:ellipsis;white-space:nowrap}.automation-schedule>small{color:#8b5515;font-size:8px;white-space:nowrap}.automation-schedule.blocked{border-color:#dfbd88}.automation-schedule.error{border-color:#d9a29c;color:#8e3e37}.irrigation-panel{grid-area:irrigation}.irrigation-event header{align-items:center;display:flex;justify-content:space-between}.irrigation-event dl{display:grid;grid-template-columns:repeat(3,1fr);margin:5px 0 0}.irrigation-event dl>div{border-right:1px solid #dde4dd;padding:2px 7px}.irrigation-event dl>div:first-child{padding-left:0}.irrigation-event dl>div:last-child{border:0}.irrigation-event dt{color:var(--muted);font-size:9px}.irrigation-event dd{font-size:11px;font-weight:700;margin:1px 0}.device-actions{display:grid;gap:6px;grid-area:actions;grid-template-columns:repeat(5,1fr)}.device-actions button{font-size:11px;min-height:40px}.status-chip{border-radius:999px;display:inline-flex;font-size:10px;font-weight:750;line-height:1.25;padding:4px 8px;white-space:nowrap}.status-chip.good{background:#e2f2e7;color:#1e633f}.status-chip.warn{background:#fff0d6;color:#8b5515}.status-chip.danger{background:#f9e7e3;color:#963c34}.status-chip.neutral{background:#eaefec;color:#5d6962}
.global-view{margin:12px auto;max-width:1120px}.page-intro{margin-bottom:17px}.page-intro h1{font-size:28px}.page-intro p:last-child{color:var(--muted);margin:3px 0}.overview-grid{display:grid;gap:10px;grid-template-columns:repeat(3,1fr)}.overview-device{align-items:flex-start;background:#fff;display:flex;flex-direction:column;min-height:90px}.overview-device span{font-size:16px}.overview-device strong{color:#27724c;font-size:11px}.overview-device strong.warn{color:var(--orange)}.overview-device strong.danger{color:var(--red)}.farm-summary{color:var(--muted)}.card{background:#fff;border:1px solid var(--border);border-radius:11px;margin-bottom:14px;min-width:0;padding:18px}.diagnostic-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.diagnostic-grid .card:last-child{grid-column:1/-1}.facts{display:grid;gap:4px;margin:0}.facts>div{align-items:start;border-bottom:1px solid #e8ece7;display:flex;gap:14px;justify-content:space-between;padding:6px 0}.facts dt{color:var(--muted);font-size:11px}.facts dd{font-size:12px;margin:0;max-width:72%;overflow-wrap:anywhere;text-align:right}.diagnostic{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.actions{display:flex;gap:8px;margin-top:12px}.history-form{align-items:end;display:grid;gap:10px;grid-template-columns:repeat(3,1fr) auto}.history-result .sparkline{height:130px}.empty{color:var(--muted);font-size:12px;margin:0;padding:10px 0}.deadline{display:flex;justify-content:space-between}.danger{color:var(--red)}
.control-panel{contain:paint;isolation:isolate;overflow:hidden;position:relative}.control-panel>:not(.flow-water){position:relative;z-index:2}.control-panel .valve-live,.control-panel .flow-live,.control-panel .control-assist,.control-panel .control-unavailable{background:transparent;text-shadow:0 1px 1px rgba(255,255,255,.68)}.flow-water{inset:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;transition:opacity .35s ease;z-index:0}.flow-water__body{bottom:-1px;height:var(--flow-wave-height,0);left:0;position:absolute;right:0}
.flow-water__swell{height:calc(150% + 64px);left:0;position:absolute;right:0;transform-origin:50% 0;will-change:transform}
.flow-water__wave{background-position:left top;background-repeat:repeat-x;height:100%;position:absolute;top:-24px;will-change:transform}
.flow-water__swell--back{top:-18px}.flow-water__wave--back{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 1024'%3E%3Cpath d='M0 24 C15 21.382 30 19 45 19 C60 19 75 21.382 90 24 C105 26.618 120 29 135 29 C150 29 165 26.618 180 24 V1024 H0Z' fill='%23aecfd1'/%3E%3C/svg%3E");background-size:180px 1024px;left:-180px;width:calc(100% + 360px)}
.flow-water__swell--middle{top:-8px}.flow-water__wave--middle{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 1024'%3E%3Cpath d='M0 24 C20 19.288 40 15 60 15 C80 15 100 19.288 120 24 C140 28.712 160 33 180 33 C200 33 220 28.712 240 24 V1024 H0Z' fill='%2388c4ce'/%3E%3C/svg%3E");background-size:240px 1024px;left:-240px;width:calc(100% + 480px)}
.flow-water__swell--front{top:-0px}.flow-water__wave--front{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 1024'%3E%3Cpath d='M0 24 C26.667 16.67 53.333 10 80 10 C106.667 10 133.333 16.67 160 24 C186.667 31.33 213.333 38 240 38 C266.667 38 293.333 31.33 320 24 V1024 H0Z' fill='%2366b5c6'/%3E%3C/svg%3E");background-size:320px 1024px;left:-320px;width:calc(100% + 640px)}
/* One stationary, transparent-to-deep overlay below every possible trough.
   Each opaque wave already fills to the bottom; there is no separate water slab. */
.flow-water__shade{background:linear-gradient(180deg,rgba(16,81,110,0),rgba(16,81,110,.24));bottom:0;left:0;position:absolute;right:0;top:32px}
.flow-wave-active .flow-water,.flow-wave-paused .flow-water{opacity:1}.flow-wave-empty .flow-water{opacity:0;transition-delay:1s}.flow-wave-paused .flow-water{opacity:.5}.flow-wave-level-0{--flow-wave-height:0}.flow-wave-level-1{--flow-wave-height:6%}.flow-wave-level-2{--flow-wave-height:11%}.flow-wave-level-3{--flow-wave-height:17%}.flow-wave-level-4{--flow-wave-height:22%}.flow-wave-level-5{--flow-wave-height:28%}.flow-wave-level-6{--flow-wave-height:34%}.flow-wave-level-7{--flow-wave-height:39%}.flow-wave-level-8{--flow-wave-height:45%}.flow-wave-level-9{--flow-wave-height:50%}.flow-wave-level-10{--flow-wave-height:56%}.flow-wave-level-11{--flow-wave-height:62%}.flow-wave-level-12{--flow-wave-height:67%}.flow-wave-level-13{--flow-wave-height:73%}.flow-wave-level-14{--flow-wave-height:78%}.flow-wave-level-15{--flow-wave-height:calc(100% - 16px)}
form{display:grid;gap:12px}label{color:#435d4c;display:grid;font-size:11px;gap:5px}input,select{background:#fff;border:1px solid #bac7b8;border-radius:7px;color:#20372e;min-height:44px;min-width:0;padding:9px;width:100%}input[type=checkbox]{min-height:20px;width:20px}.check{align-items:center;display:flex;gap:8px}fieldset{border:1px solid var(--border);border-radius:9px;min-width:0;padding:13px}legend{font-size:12px;font-weight:700;padding:0 5px}fieldset>.check{margin-bottom:9px}.two{display:grid;gap:9px;grid-template-columns:repeat(2,minmax(0,1fr))}details{margin-top:11px}summary{cursor:pointer;padding:7px 0}.field-help{color:var(--muted);font-size:10px;line-height:1.45;margin:7px 0 0}.automation-settings-grid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.automation-advanced{border:1px solid var(--border);border-radius:9px;padding:0 13px 11px}.automation-advanced summary{font-size:12px;font-weight:700}.modal-section+.modal-section{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.modal-section>h3,.modal-section-heading h3{margin:0 0 10px}.modal-section-heading{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.modal-section-heading p{margin:0}.schedule-list{display:grid;gap:7px}.schedule-row{align-items:center;border:1px solid var(--border);border-radius:8px;display:grid;gap:9px;grid-template-columns:minmax(150px,1.35fr) minmax(80px,.75fr) minmax(88px,.75fr) auto;padding:8px 10px}.schedule-row time{color:#526159;font-size:11px;font-variant-numeric:tabular-nums}.schedule-actions,.schedule-edit-actions{display:flex;gap:6px;justify-content:flex-end}.schedule-actions button,.schedule-edit-actions button{min-height:34px;padding:4px 9px}.schedule-edit{background:var(--soft);border:1px solid #cdd8cf;border-radius:8px;padding:11px}.schedule-heading{align-items:center;display:flex;gap:10px;justify-content:space-between}.schedule-status,.action-badge,.command-result{border-radius:999px;display:inline-flex;font-size:10px;font-weight:750;justify-content:center;padding:3px 7px;white-space:nowrap}.schedule-status.waiting,.command-result.good{background:#e2f2e7;color:#1e633f}.schedule-status.processing,.command-result.processing{background:#fff0d6;color:#825014}.schedule-status.warn,.command-result.warn{background:#fff0d6;color:#825014}.schedule-status.neutral,.command-result.neutral{background:#eaefec;color:#5d6962}.action-badge{background:#e9f0eb;color:#285a43}.action-badge.open{background:#fff0dc;color:#9b5810}.action-badge.close{background:#e2f1e7;color:#216a45}.command-result.danger{background:#f9e7e3;color:#963c34}.command-table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}.command-table{border-collapse:collapse;font-size:11px;min-width:620px;width:100%}.command-table th{background:var(--soft);color:#5e6e65;font-size:10px;text-align:left}.command-table th,.command-table td{border-bottom:1px solid var(--border);padding:8px 7px;vertical-align:middle}.command-table tbody tr:hover{background:#f8faf7}.command-table .command-date,.command-table .command-time{font-variant-numeric:tabular-nums;white-space:nowrap}.command-table .command-reason{overflow-wrap:anywhere}.reading{font-size:30px;font-variant-numeric:tabular-nums;margin:6px 0}.reading small{display:inline;font-size:12px}.loadcell-summary{align-items:center;display:flex;justify-content:space-between}.loadcell-actions{display:grid;gap:7px;grid-template-columns:repeat(3,1fr);margin-top:13px}.callout{background:#f0f4f0;border-left:4px solid #82958a;border-radius:5px;padding:10px}.callout.warn{background:#fff3e1;border-color:#bd741f;color:#70491d}pre{font-size:11px;overflow-wrap:anywhere;white-space:pre-wrap}
#login{background:#fff;border:1px solid var(--border);border-radius:12px;margin:28px auto 50px;max-width:550px;padding:28px}#login[hidden]{display:none}.signed-out .device-tabs,.signed-out #logout,.signed-out #navigation,.signed-out #refresh{display:none}.signed-out main{min-height:calc(100vh - 58px)}footer{color:var(--muted);font-size:10px;padding:17px 0}body:not(.signed-out) footer{display:none}body.detail-open{overflow:hidden}dialog{border:1px solid var(--border);border-radius:12px;max-height:88vh;max-width:760px;padding:22px;width:calc(100% - 28px)}dialog::backdrop{background:#13251b99}#detail{max-width:920px;overflow:hidden;padding:0}#detail[open]{display:grid;grid-template-rows:auto minmax(0,1fr)}.dialog-header{align-items:center;border-bottom:1px solid var(--border);display:flex;gap:16px;justify-content:space-between;padding:15px 20px}.dialog-header h2{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dialog-close{flex:0 0 auto;min-height:38px}.dialog-body,.command-section{min-width:0}.dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:18px 20px}.connecting-dialog{max-width:330px;padding:28px;text-align:center}.connecting-dialog::backdrop{background:#f2f4f0cc}.connecting-dialog h2{font-size:20px;margin:10px 0}.connecting-dialog p{color:var(--muted)}.spinner{animation:spin 1s linear infinite;border:3px solid #dce5de;border-radius:50%;border-top-color:var(--green);height:34px;margin:auto;width:34px}@keyframes spin{to{transform:rotate(360deg)}}
.scale-device{grid-template-areas:"head head" "reading context" "actions actions";grid-template-columns:1fr 1fr;grid-template-rows:48px 1fr 44px}.scale-reading{grid-area:reading}.scale-context{grid-area:context}.scale-device .device-actions{grid-template-columns:repeat(2,1fr)}
@media(max-width:1050px) and (min-width:841px){.topbar{padding-inline:14px}.topbar nav button{padding-inline:8px}.device-tabs{padding-inline:14px}main{min-height:calc(100vh - 108px);padding:9px 13px}.device-hmi{gap:7px;grid-template-columns:minmax(320px,.76fr) minmax(480px,1.24fr);grid-template-rows:44px minmax(170px,.9fr) minmax(215px,1.25fr) minmax(105px,.65fr) 44px;height:calc(100vh - 126px);min-height:0;padding:9px}.sensor-reading strong{font-size:20px}.sensor-tile{padding-inline:7px}.hmi-section{padding:8px 9px}.automation-card{min-height:56px;padding-block:3px}.automation-rule{font-size:8.5px}}
@media(max-width:840px){.topbar{gap:7px;padding:7px 10px}.brand{font-size:14px}.topbar nav{justify-content:flex-start}.topbar nav button{font-size:11px;padding-inline:7px}.top-actions{gap:1px}#connection{display:none}.top-actions button{font-size:10px;padding-inline:5px}.device-tabs{padding-inline:10px}main{padding:11px 10px 24px}.device-hmi{display:grid;grid-template-areas:"head" "control" "sensors" "automation" "irrigation" "actions";grid-template-columns:1fr;grid-template-rows:auto;min-height:0;padding:10px}.sensor-grid{grid-template-columns:repeat(2,minmax(0,1fr));height:auto}.sensor-tile{min-height:118px}.device-actions{grid-template-columns:repeat(2,1fr)}.device-actions button:last-child{grid-column:1/-1}.overview-grid{grid-template-columns:repeat(2,1fr)}.diagnostic-grid{grid-template-columns:1fr}.diagnostic-grid .card:last-child{grid-column:auto}.history-form{grid-template-columns:1fr 1fr}.history-form button{grid-column:1/-1}.scale-device{grid-template-areas:"head" "reading" "context" "actions";grid-template-columns:1fr}.scale-device .device-actions{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.brand>span:last-child{display:none}.topbar{grid-template-columns:auto minmax(0,1fr) auto}.topbar nav button{font-size:10px;padding-inline:6px}#logout{font-size:0!important}#logout::after{content:"나가기";font-size:10px}.icon-button{font-size:0!important}.icon-button::after{content:"↻";font-size:17px}.device-tab{padding-inline:13px}.toast{right:10px;top:112px;width:calc(100vw - 20px)}.hmi-device-header h1{font-size:21px}.control-panel{grid-template-columns:1fr 1fr}.sensor-reading strong{font-size:21px}.sensor-tile{padding-inline:7px}.sensor-thresholds{gap:5px}.sensor-thresholds>span{font-size:6.5px}.automation-grid,.automation-settings-grid{grid-template-columns:1fr}.automation-card{min-height:62px}.irrigation-event dl{grid-template-columns:1fr}.irrigation-event dl>div{border-bottom:1px solid #dde4dd;border-right:0;padding:4px 0}.overview-grid,.two,.history-form{grid-template-columns:1fr}.loadcell-actions{grid-template-columns:1fr}.schedule-row{grid-template-columns:1fr 1fr}.schedule-row time,.schedule-actions{grid-column:1/-1}.schedule-actions{justify-content:stretch}.schedule-actions button{flex:1}.schedule-heading{align-items:flex-start;flex-direction:column}.dialog-header{padding:12px 14px}.dialog-body{padding:14px}.device-actions{grid-template-columns:1fr 1fr}.device-actions button{min-height:44px}dialog{padding:17px}#detail{padding:0}}
@media(max-width:600px){.command-table-scroll{overflow-x:visible}.command-table{display:block;min-width:0}.command-table thead{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.command-table tbody{display:grid;gap:8px;width:100%}.command-table .command-row{background:#fff;border:1px solid var(--border);border-radius:8px;column-gap:8px;display:grid;grid-template-areas:"date action actor" "time outcome reason";grid-template-columns:minmax(82px,1fr) minmax(58px,.75fr) minmax(0,1.35fr);padding:10px 11px;row-gap:7px}.command-table .command-row:hover{background:#fff}.command-table .command-row td{align-items:center;border:0;display:flex;min-width:0;padding:0;text-align:left}.command-date{grid-area:date}.command-time{grid-area:time}.command-action{grid-area:action}.command-outcome{grid-area:outcome}.command-actor{grid-area:actor}.command-reason{grid-area:reason;line-height:1.4;overflow-wrap:anywhere}}
.sensor-meter{background:#e0e6e0;border-radius:999px;height:10px;margin:4px 2px 3px;overflow:visible;position:relative}.sensor-meter progress{-webkit-appearance:none;appearance:none;background:transparent;border:0;border-radius:999px;display:block;height:10px;margin:0;padding:0;width:100%}.sensor-meter progress::-webkit-progress-bar{background:transparent;border-radius:999px}.sensor-meter .meter-value{overflow:hidden}.sensor-meter .meter-value::-webkit-progress-value{background:#397d5c;border-radius:999px}.sensor-meter .meter-value::-moz-progress-bar{background:#397d5c;border-radius:999px}.sensor-meter .threshold-marker{border-radius:0;filter:drop-shadow(1px 0 #fff) drop-shadow(-1px 0 #fff) drop-shadow(0 0 1px #24352c);height:16px;left:0;pointer-events:none;position:absolute;top:-3px;width:100%;z-index:2}.sensor-meter .threshold-marker::-webkit-progress-value{background:transparent;border-right:4px solid #c66b16;border-radius:0}.sensor-meter .threshold-marker::-moz-progress-bar{background:transparent;border-right:4px solid #c66b16;border-radius:0}.sensor-meter .threshold-marker.close::-webkit-progress-value{border-right-color:#176b43}.sensor-meter .threshold-marker.close::-moz-progress-bar{border-right-color:#176b43}.sensor-meter .threshold-marker.safe::-webkit-progress-value{border-right-color:#a93d35}.sensor-meter .threshold-marker.safe::-moz-progress-bar{border-right-color:#a93d35}.sensor-meter .threshold-marker.inactive{opacity:.68}
.advisory-zone-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.advisory-card{background:#fff;border:1px solid var(--border);border-left:5px solid #819089;border-radius:11px;min-width:0;padding:18px}.advisory-card.good{border-left-color:#2b8757}.advisory-card.warn{border-left-color:#ca7d21}.advisory-card.danger{border-left-color:#ba443c}.advisory-card>header,.advisory-comparison>header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.advisory-card h2{font-size:19px;margin:2px 0 8px}.advisory-reasons{color:#526159;font-size:12px;line-height:1.5;margin:8px 0 13px;padding-left:18px}.advisory-caution{background:#fff3e1;border-radius:7px;color:#70491d;font-size:12px;padding:9px}.advisory-current{display:grid;gap:7px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 13px}.advisory-current>div{background:var(--soft);border-radius:8px;min-width:0;padding:9px}.advisory-current dt,.advisory-output-grid h3{color:var(--muted);font-size:10px;margin:0}.advisory-current dd{margin:3px 0 0}.advisory-current strong,.advisory-current small{display:block;overflow-wrap:anywhere}.advisory-current strong{font-size:13px}.advisory-current small{color:var(--muted);font-size:9px;margin-top:3px}.advisory-output-grid{display:grid;gap:7px;grid-template-columns:repeat(2,minmax(0,1fr))}.advisory-output-grid section{border:1px solid var(--border);border-radius:8px;min-width:0;padding:9px}.advisory-output-grid p{font-size:12px;font-weight:700;margin:5px 0 0;overflow-wrap:anywhere}.advisory-output-grid small{color:var(--muted);display:block;font-size:9px;font-weight:400;line-height:1.35;margin-top:3px}.advisory-missing{color:var(--muted)}.advisory-time{color:var(--muted);display:flex;flex-wrap:wrap;font-size:9px;gap:7px 13px;margin-top:11px}.advisory-history{margin-top:14px}.advisory-history-list{display:grid;gap:9px}.advisory-history-item{border:1px solid var(--border);border-left:4px solid var(--border);border-radius:9px;min-width:0;padding:11px}.advisory-history-item.warn{border-left-color:#ca7d21}.advisory-history-item.danger{border-left-color:#ba443c}.advisory-history-item.good{border-left-color:#2b8757}.advisory-history-item>header{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.advisory-history-item p{margin:6px 0}.advisory-history-item pre{max-height:18rem;overflow:auto}.advisory-comparison-grid{display:grid;gap:9px;grid-template-columns:repeat(2,minmax(0,1fr))}.advisory-comparison{border:1px solid var(--border);border-radius:9px;min-width:0;padding:12px}.advisory-comparison header span{color:var(--muted);font-size:10px}.advisory-comparison .facts{margin-top:7px}
/* Readability floor for compact HMI support text; layout dimensions stay unchanged. */
.last-received,.flow-quality{font-size:10px;line-height:13px}.sensor-name{font-size:11px}.sensor-thresholds>span{font-size:8px}.spark-guide b{font-size:8px}.trend-summary,.spark-empty,.sensor-quality{font-size:9px}.automation-common{font-size:9.5px}.automation-card h3,.automation-state,.automation-rule{font-size:10px}.automation-rule{line-height:10.5px;min-height:25px}
@media(max-width:1050px) and (min-width:841px){.automation-rule{font-size:8.5px;line-height:10px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important;transition:none!important}}
@media(forced-colors:active){.flow-water{display:none}}

/* Automation status: configuration, activity and attention remain distinct. */
.automation-panel .automation-grid{margin-top:8px}
.automation-panel .automation-common:not(.visible){display:none}
.automation-panel .automation-card{--auto-accent:#52655e;background:linear-gradient(140deg,#f7f9f8,#edf1ef);border-color:#cbd5d0;border-radius:9px;box-shadow:inset 3px 0 #a7b5ad;grid-template-rows:16px 17px minmax(25px,1fr) 5px;padding:5px 8px}
.automation-panel .automation-card.enabled{--auto-accent:#137561;background:linear-gradient(125deg,#e0f4e9,#f2faf6 65%,#dcefe9);border-color:#86bbab;box-shadow:inset 3px 0 var(--auto-accent),0 2px 5px #163e2b0b}
.automation-panel .automation-card.enabled:is(.state-countdown,.state-processing){--auto-accent:#226b9b;background:linear-gradient(125deg,#dceefa,#f0f8fc 65%,#dceaf5);border-color:#8db8d0}
.automation-panel .automation-card.enabled:is(.state-blocked,.state-unknown){--auto-accent:#98621e;background:linear-gradient(125deg,#fff0d7,#fffaf0);border-color:#d7b079}
.automation-panel .automation-card.state-attention{--auto-accent:#a0483e;background:linear-gradient(125deg,#fbe6e1,#fff7f4);border-color:#d6a199}
.automation-panel .automation-card h3{align-items:center;color:var(--auto-accent);display:flex;gap:4px;height:16px;justify-content:space-between;line-height:16px;overflow:visible}
.automation-title{align-items:center;display:flex;gap:5px;min-width:0}.automation-title>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.automation-icon{fill:none;flex:0 0 auto;height:14px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:14px}
.automation-toggle{border:1px solid currentColor;border-radius:4px;flex:0 0 auto;font-size:8px;font-weight:800;line-height:13px;padding:0 4px}
.automation-card.enabled .automation-toggle{background:var(--auto-accent);border-color:var(--auto-accent);color:#fff}
.automation-panel .automation-state{height:17px}.automation-panel .automation-state strong{background:#ffffffb8;color:#354c42;padding:1px 5px}
.automation-panel .automation-card.enabled .automation-state strong{background:#ffffffb8;color:var(--auto-accent)}
.automation-panel .automation-card.enabled .automation-state .automation-beacon{background:var(--auto-accent)}
.automation-panel .automation-beacon{background:var(--auto-accent,#137561);border-radius:50%;box-shadow:0 0 0 3px #ffffffa6;display:inline-block;flex:0 0 auto;height:6px;width:6px}
.automation-panel .disabled .automation-beacon{background:transparent;border:1px solid #687970;box-shadow:none}
.automation-panel .disabled .automation-rule,.automation-panel .disabled .automation-detail{color:#596b61}
.automation-panel .automation-rule{line-height:12px;min-height:25px}.automation-panel .automation-detail{color:#566d60}
.automation-panel .automation-timer-slot progress::-webkit-progress-value{background:linear-gradient(90deg,#5596b5,#24729f);transition:width .8s linear}
.automation-panel .automation-timer-slot progress::-moz-progress-bar{background:#24729f}
.automation-panel .automation-schedule{background:linear-gradient(110deg,#f7f9f8,#edf1ef);border:1px solid #cbd5d0;border-radius:9px;box-shadow:inset 3px 0 #a7b5ad;min-height:32px;padding:4px 8px}
.automation-panel .automation-schedule>span{align-items:center;display:flex;gap:5px;font-weight:750}.automation-panel .automation-schedule>small{border-radius:4px;color:#586b60;font-size:8px;padding:2px 4px}
.automation-panel .automation-schedule.ready{background:linear-gradient(110deg,#def2e8,#f2faf6);border-color:#86bbab;box-shadow:inset 3px 0 #137561}
.automation-panel .automation-schedule.ready>span{color:#146b55}.automation-panel .automation-schedule.ready>small{background:#137561;color:#fff}
.automation-panel .automation-schedule:is(.blocked,.error){background:linear-gradient(110deg,#fff0d7,#fffaf0);border-color:#d7b079;box-shadow:inset 3px 0 #98621e}.automation-panel .automation-schedule:is(.blocked,.error)>small{color:#805113}
.automation-panel .automation-schedule:not(.ready) .automation-beacon{display:none}
.automation-panel .automation-schedule:hover{border-color:#5b8d79}.automation-panel .automation-schedule:focus-visible{outline:2px solid #226b9b;outline-offset:2px}
@media(max-width:1050px) and (min-width:841px){.automation-panel .automation-card{grid-template-rows:14px 15px minmax(24px,1fr) 5px;padding:3px 6px}.automation-panel .automation-card h3{height:14px;line-height:14px}.automation-panel .automation-rule{font-size:8.5px;line-height:10px}.automation-title{gap:3px}.automation-icon{height:12px;width:12px}}
@media(prefers-reduced-motion:reduce){.automation-panel .automation-timer-slot progress::-webkit-progress-value{transition:none}}
@media(forced-colors:active){.automation-panel .automation-card.enabled,.automation-panel .automation-schedule.ready{border:2px solid Highlight}.automation-panel .automation-toggle{background:Canvas!important;color:CanvasText!important}.automation-panel .automation-beacon{background:CanvasText}}
@media(max-width:840px){.advisory-zone-grid,.advisory-comparison-grid{grid-template-columns:1fr}.advisory-current{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.advisory-card{padding:14px}.advisory-current,.advisory-output-grid{grid-template-columns:1fr}.advisory-time{display:grid}}

/* Human maintenance history stays mounted during live sensor refresh. */
.maintenance{scroll-margin-top:70px;max-width:1000px;margin:0 auto;padding:1rem;overflow-wrap:anywhere}
.maintenance h2{margin-bottom:.4rem}.maintenance header p{color:var(--muted,#536576)}
.maintenance article{border:1px solid #ccd8de;border-radius:12px;padding:1rem;margin:1rem 0;background:var(--surface,#fff)}
.maintenance label{display:flex;flex-direction:column;gap:.4rem;min-width:0;margin-bottom:1rem}
.maintenance input,.maintenance textarea,.maintenance select{box-sizing:border-box;width:100%;max-width:100%;padding:.65rem;font:inherit;border:1px solid #9aacb7;border-radius:6px;background:#fff;color:#162c39}
.maintenance textarea{resize:vertical}.maintenance label span{font-size:.9rem;color:#536576}
.maintenance fieldset{border:0;padding:0;min-width:0}.maintenance form[data-record-form]{max-width:720px}
.maintenance-toolbar{display:flex;gap:.6rem;flex-wrap:wrap;margin:1rem 0}
.maintenance-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;align-items:end}
.maintenance button{white-space:normal;min-height:44px;max-width:100%;padding:.6rem .9rem}
.maintenance-text{white-space:pre-wrap}.maintenance [role=status]{white-space:pre-wrap;color:#843c14}
.maintenance details{padding:.7rem;border:1px solid #ccd8de;border-radius:6px}
@media(max-width:600px){.maintenance{padding:.7rem}.maintenance-filters{grid-template-columns:1fr}.maintenance-toolbar button{flex:1 1 140px}}

@media(min-width:841px){.device-actions.with-maintenance{grid-template-columns:repeat(6,minmax(0,1fr))}.scale-device .device-actions.with-maintenance{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:840px){.device-actions.with-maintenance button:last-child{grid-column:auto}}

.automation-panel .section-heading{height:auto;min-height:22px;align-items:center;flex-wrap:wrap;gap:4px 8px}.automation-approval{color:var(--muted);font-size:9px;margin-left:auto;white-space:nowrap}
