:root{--blue:#1677d2;--green:#159570;--red:#d9364b;--orange:#b86b00;--text:#173347;--muted:#6f8291;--line:#dbe5ed;--bg:#f4f7fb}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body{margin:0;background:var(--bg);color:var(--text);font:15px -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}.app{width:min(780px,100%);margin:auto;padding:18px 14px 90px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:4px 0 16px}.topbar h1{margin:0;font-size:28px}.topbar p,.muted{margin:5px 0;color:var(--muted);font-size:13px}.pill{display:flex;gap:7px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:99px;padding:8px 11px;color:var(--muted);white-space:nowrap}.pill i{width:9px;height:9px;border-radius:50%;background:#9aa8b2}.pill.online{color:var(--green);border-color:#8fd8c6}.pill.online i{background:var(--green)}.page{display:none}.page.active{display:block}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;margin:13px 0;box-shadow:0 5px 18px rgba(25,63,88,.06)}h2{font-size:18px;margin:0 0 13px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:16px 0 8px}.section-title h2{margin:0}.status-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.status-grid>div{background:#fff;border:1px solid var(--line);border-radius:13px;padding:12px}.status-grid span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.status-grid b{font-size:17px}.ok{color:var(--green)}.bad{color:var(--red)}button{font:inherit;border:1px solid #cbd9e3;background:#fff;color:var(--text);border-radius:10px;padding:10px 13px;font-weight:650;cursor:pointer}.primary{background:var(--blue);border-color:var(--blue);color:#fff}.success{background:var(--green);border-color:var(--green);color:#fff}.danger{background:var(--red);border-color:var(--red);color:#fff}.warn{background:#fff5e5;border-color:#e4bd71;color:#8d5400}.ghost{background:#fff}.button-row{display:flex;gap:8px;flex-wrap:wrap}.button-row button{flex:1;min-width:82px}.wide{width:100%;margin-top:12px}.range-row{display:flex;align-items:center;gap:12px;margin:16px 0}.range-row input{flex:1;accent-color:var(--blue)}.range-row strong{min-width:60px;text-align:right;color:var(--blue);font-size:22px}label{display:block;color:var(--muted);font-size:13px;margin:10px 0}input,textarea{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:10px;padding:11px;background:#fff;color:var(--text);font:inherit;-webkit-user-select:text;user-select:text}textarea{height:96px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.device-cards{display:grid;gap:10px}.device-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.device-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.device-name{font-size:17px;font-weight:700}.device-id{color:var(--muted);font-size:12px;margin-top:5px;word-break:break-all}.tag{border-radius:99px;padding:3px 8px;font-size:12px;background:#edf0f2;color:#5d6c76}.tag.online{background:#dff6dd;color:#107c10}.device-meta{font-size:13px;color:var(--muted);margin:12px 0}.device-actions{display:flex;gap:8px}.device-actions button{flex:1}.group-tabs{display:flex;gap:8px;margin:10px 0}.group-tabs button{flex:1}.group-tabs .selected{box-shadow:0 0 0 2px var(--blue) inset;color:var(--blue)}.hours{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:12px 0}.hour{padding:10px 2px}.hour.on{background:#def6ee;border-color:var(--green);color:#087858}.notice-bar{margin:0 0 12px;padding:12px 14px;border-radius:12px;background:#deecf9;color:#004578;line-height:1.55}.notice-bar strong{display:block;margin-bottom:3px}.hidden{display:none!important}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:5;display:flex;background:rgba(255,255,255,.96);border-top:1px solid var(--line);padding:max(7px,env(safe-area-inset-bottom)) 10px 7px}.nav{flex:1;border:0;background:transparent;color:var(--muted);padding:9px}.nav.active{color:var(--blue);font-weight:800}code{-webkit-user-select:text;user-select:text}@media(max-width:420px){.form-grid{grid-template-columns:1fr}.app{padding:14px 10px 85px}.topbar h1{font-size:24px}}
