:root{--bg:#f3f5f4;--card:#fff;--text:#17211f;--muted:#64726f;--line:#dde3e1;--primary:#0f766e;--primary-soft:#e3f3f0;--water:#0369a1;--water-soft:#e0f0fa;--nutrient:#a16207;--nutrient-soft:#fbf0d9;--danger:#b91c1c;--danger-soft:#fde8e8;--ok:#15803d}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;font:16px/1.5 -apple-system,BlinkMacSystemFont,PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif}h1,h2,h3,p{margin:0}h1{font-size:18px}h2{margin-bottom:10px;font-size:17px}h3{color:var(--muted);margin-bottom:8px;font-size:15px}p+p{margin-top:6px}.app{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;display:flex}.topbar{z-index:5;background:var(--primary);color:#fff;justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}.topbar .muted{color:#c9e9e4}main{flex:1;padding:12px 12px 150px}.center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:60dvh;padding:24px;display:flex}.card{background:var(--card);border-radius:14px;margin-bottom:12px;padding:14px;box-shadow:0 1px 2px #0000000f}.card.dim{opacity:.6}.card.tap{cursor:pointer}.card.error{color:var(--danger)}.card.notice{background:var(--primary-soft);color:var(--primary)}.muted{color:var(--muted)}.small{font-size:13px}.error-text{color:var(--danger);margin-top:6px;font-size:14px}.row{align-items:center;gap:8px;display:flex}.row.tight{gap:4px}.row.between{justify-content:space-between}.grow{flex:1}.btn{appearance:none;border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer;background:#fff;border-radius:10px;min-height:44px;padding:10px 14px;font-weight:600}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.ghost{color:var(--primary);background:#fff}.btn.big{width:100%;min-height:52px;font-size:17px}.btn.sm{min-height:36px;padding:6px 10px;font-size:14px}.link{appearance:none;color:var(--primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:6px 4px;font-size:14px}.input{border:1px solid var(--line);width:100%;font:inherit;min-height:44px;color:var(--text);background:#fff;border-radius:10px;padding:10px 12px}.input.num{text-align:right;width:84px;padding:8px 10px}.input.bad{border-color:var(--danger);background:var(--danger-soft)}.input:focus{outline:2px solid var(--primary);outline-offset:1px}.segment{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.segment button{appearance:none;border:2px solid var(--line);min-height:52px;font:inherit;color:var(--muted);cursor:pointer;background:#fff;border-radius:12px;font-size:17px;font-weight:700}.segment button.on.water{border-color:var(--water);background:var(--water-soft);color:var(--water)}.segment button.on.nutrient{border-color:var(--nutrient);background:var(--nutrient-soft);color:var(--nutrient)}.badge{vertical-align:middle;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-block}.badge.warn{color:#713f12;background:#fde68a}.badge.water{background:var(--water-soft);color:var(--water)}.badge.nutrient{background:var(--nutrient-soft);color:var(--nutrient)}.zone{margin-top:14px}.zone-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-bottom:2px;display:flex}.circuit{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:54px;padding:4px 6px;display:flex}.circuit.on{background:var(--primary-soft)}.circuit.off{color:var(--muted)}.circuit label{cursor:pointer;flex:1;align-items:center;gap:10px;min-height:46px;display:flex}.circuit input[type=checkbox]{width:22px;height:22px;accent-color:var(--primary)}.startbar{left:0;right:0;bottom:calc(56px + env(safe-area-inset-bottom));z-index:4;background:var(--card);border-top:1px solid var(--line);flex-direction:column;gap:8px;max-width:560px;margin:0 auto;padding:10px 12px;display:flex;position:fixed}.tabs{z-index:5;background:var(--card);border-top:1px solid var(--line);max-width:560px;padding-bottom:env(safe-area-inset-bottom);margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.tabs button{appearance:none;height:56px;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:1;font-weight:600}.tabs button.on{color:var(--primary);box-shadow:inset 0 3px 0 var(--primary)}.progress-row{padding:8px 0}.bar{background:var(--line);border-radius:999px;height:8px;margin-top:4px;overflow:hidden}.bar>div{background:var(--primary);height:100%;transition:width 1s linear}.bar>div.done{background:var(--ok)}.status{color:var(--muted);font-size:14px;font-weight:600}.status.open,.status.opening,.status.running{color:var(--primary)}.status.done,.status.completed,.status.active{color:var(--ok)}.status.failed,.status.close_failed,.status.stopped,.status.interrupted,.status.completed_with_errors,.status.disabled{color:var(--danger)}.status.pending{color:var(--nutrient)}.detail{border-collapse:collapse;width:100%;margin-top:10px;font-size:14px}.detail th,.detail td{text-align:left;border-top:1px solid var(--line);padding:6px 4px;font-weight:400}.detail th{color:var(--muted);font-size:12px}.field{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.field .unit{width:36px}.card>.btn{margin-top:10px}.user{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.overlay{z-index:20;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog{background:var(--card);width:100%;max-width:560px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}.dialog .row{margin-top:16px}
