:root{font-family:Inter,Noto Sans TC,PingFang TC,system-ui,sans-serif;color:#19221d;background:#f2f4ef;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}.login{min-height:100vh;display:grid;grid-template-columns:1.2fr .8fr;background:#153d2d;color:#fff}.brand{padding:10vh 8vw;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(circle at 20% 20%,#327557 0,transparent 40%),#153d2d}.brand span,.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#176b46}.brand span,.hero .eyebrow,.weather-hero .eyebrow{color:#79dbac}.brand h1{font-size:clamp(3.4rem,7vw,7rem);line-height:.95;letter-spacing:-.06em;margin:1.5rem 0}.brand p{font-size:1.1rem;color:#c8d8cf}.login-card{align-self:center;margin:3rem;padding:3rem;background:#fff;color:#18211c;border-radius:1.3rem;box-shadow:0 2rem 5rem #071c1260}.login-card h2{font-size:1.7rem;margin-top:0}form{display:grid;gap:1rem}label{display:grid;gap:.45rem;font-size:.82rem;font-weight:600;color:#526158}input,select{width:100%;padding:.85rem 1rem;border:1px solid #ccd5ce;border-radius:.65rem;background:#fff;color:#18211c}input:focus,select:focus{outline:3px solid #07583a;outline-offset:2px;border-color:#23875b}button,.upload{border:0;border-radius:.65rem;padding:.8rem 1.1rem;background:#176b46;color:#fff;font-weight:700;transition:.15s}button:hover,.upload:hover{background:#0f5738}button:focus-visible,.upload:focus-within{outline:3px solid #fff;outline-offset:3px;box-shadow:0 0 0 6px #07583a}button:disabled{opacity:.45;cursor:not-allowed}.error,.notice{padding:.8rem 1rem;border-radius:.65rem}.error{background:#ffe8e4;color:#9d241c}.notice{background:#dff7e9;color:#155d3d}.shell{min-height:100vh;display:grid;grid-template-columns:15rem 1fr}.shell aside{background:#173426;color:#fff;padding:2rem 1rem;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.logo{font-size:1.1rem;letter-spacing:.08em;padding:0 .8rem 2rem}.logo b{color:#73d6a7}nav{display:grid;gap:.3rem}nav button,.logout{background:transparent;text-align:left;color:#bcd0c5;font-weight:500}nav button:hover,nav button.active{background:#2b513d;color:#fff}.logout{margin-top:auto}.workspace{padding:2.4rem 3vw;max-width:100rem;width:100%;margin:auto}.topbar{display:flex;align-items:end;justify-content:space-between;margin-bottom:2rem}.topbar h1{font-size:2.4rem;margin:.2rem 0;letter-spacing:-.04em}.site-picker{min-width:14rem}.hero{padding:2.5rem;background:#183f2e;color:#fff;border-radius:1.2rem;display:flex;justify-content:space-between;align-items:end;box-shadow:0 1.2rem 3rem #163b2620}.hero h2{font-size:2.6rem;margin:.7rem 0}.hero p{color:#c5d9ce}.hero button{background:#80e3b3;color:#123a28}.metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;margin-top:1rem}.metrics article,.panel{background:#fff;border:1px solid #dce2dc;border-radius:1rem;padding:1.4rem}.metrics strong{font-size:2rem;display:block}.metrics span{color:#6a776f}.panel h2{margin:.2rem 0}.panel>p{color:#6b756f}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.upload{position:relative}.upload input{position:absolute;inset:0;opacity:0;cursor:pointer}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:1rem}.cards article{display:grid;gap:.55rem;padding:1rem;border:1px solid #dce3dd;border-radius:.8rem}.cards small,.rows span,.device-list small{color:#59675f}.file-icon{height:6rem;display:grid;place-items:center;border-radius:.6rem;background:#e9f3ec;color:#197249;font-size:2rem}.split{display:grid;grid-template-columns:minmax(18rem,.7fr) minmax(22rem,1.3fr);gap:1rem}.rows,.device-list{list-style:none;margin:1rem 0 0;padding:0}.rows li{padding:1rem 0;border-bottom:1px solid #e5e9e5;display:flex;justify-content:space-between;gap:1rem}.system-stack{display:grid;gap:1rem}.inline-form{display:grid;grid-template-columns:minmax(12rem,1fr) minmax(12rem,1fr) auto auto auto;gap:.75rem}.account-rows li{display:grid;grid-template-columns:minmax(14rem,1fr) auto auto auto minmax(13rem,auto);align-items:center}.reset-form{display:flex;gap:.5rem}.secondary{background:#edf2ee;color:#294136}.device-list li{display:grid;grid-template-columns:auto 1fr auto auto;gap:1rem;align-items:center;padding:1rem 0;border-bottom:1px solid #e5e9e5}.device-list div{display:grid}.dot{width:.7rem;height:.7rem;border-radius:50%;background:#a4ada7}.dot.online{background:#22a667;box-shadow:0 0 0 4px #22a66720}.actions{display:flex!important;grid-template-columns:repeat(3,auto)!important;flex-wrap:wrap;gap:.45rem}.actions button{background:#edf2ee;color:#294136;padding:.55rem .7rem}.actions button:hover{background:#dce9e0}.command-status{align-self:center;border-radius:999px;padding:.3rem .65rem;background:#edf2ee;color:#34483d!important;font-size:.82rem;font-weight:700}.command-status.succeeded{background:#dff7e9;color:#155d3d!important}.command-status.failed{background:#ffe8e4;color:#8a2019!important}.danger{background:#c83d32}.danger:hover{background:#a72c24}hr{border:0;border-top:1px solid #e1e6e2;margin:2rem 0}.empty{text-align:center;padding:3rem!important;color:#58665e!important;background:#f6f8f5;border-radius:.8rem}table{width:100%;border-collapse:collapse;margin-top:1.5rem}th,td{text-align:left;padding:.9rem;border-bottom:1px solid #e3e7e4}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:#6c786f}.onboarding{min-height:100vh;display:grid;place-items:center;padding:2rem}.onboarding section{max-width:35rem;background:#fff;padding:3rem;border-radius:1.2rem;box-shadow:0 2rem 6rem #17392318}.onboarding h1{font-size:3rem;margin:.5rem 0}.onboarding p{color:#66736b;margin-bottom:2rem}@media(max-width:900px){.shell{grid-template-columns:1fr}.shell aside{height:auto;position:static}.shell nav{grid-template-columns:repeat(3,1fr)}.logout{margin-top:1rem}.metrics{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.inline-form,.account-rows li{grid-template-columns:1fr 1fr}.device-list li{grid-template-columns:auto 1fr}.device-list>li>span:nth-child(3),.actions{grid-column:2}.login{grid-template-columns:1fr}.brand{padding:3rem}.brand h1{font-size:3.6rem}.login-card{margin:1.5rem}.topbar{align-items:stretch;gap:1rem;flex-direction:column}.hero{align-items:start;gap:1rem;flex-direction:column}}.weather-hero{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:2rem;border-radius:1rem;background:#173f2e;color:#fff;margin-bottom:1rem}.weather-hero strong{font-size:4.5rem;display:block}.weather-hero p{color:#c8ded2}.warning-live,.warning-clear{padding:1.3rem;border-radius:.8rem;display:grid;align-content:center;gap:.5rem}.warning-live{background:#9d2c25}.warning-clear{background:#286c4d}.warning-live span,.warning-clear span{font-size:.9rem}.provenance{font-size:.78rem!important;margin-top:1.5rem}.rows small{display:block;color:#59675f;margin-top:.3rem}code{display:block;padding:1rem;background:#17251e;color:#b9e7ce;border-radius:.6rem;overflow:auto}@media(max-width:900px){.weather-hero{grid-template-columns:1fr}}@media(max-width:600px){body{overflow-x:hidden}.shell,.workspace,.panel,.split{min-width:0}.shell aside{padding:1.25rem .75rem}.logo{text-align:center;padding-bottom:1rem}.shell nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}.shell nav button{min-width:0;text-align:center;padding:.7rem .35rem;font-size:.84rem;overflow-wrap:anywhere}.logout{text-align:center}.workspace{padding:1.25rem}.topbar h1{font-size:clamp(1.8rem,10vw,2.4rem);overflow-wrap:anywhere}.site-picker{min-width:0}.panel,.metrics article{padding:1rem}.panel-title{align-items:stretch;flex-direction:column;gap:.8rem}.rows li{align-items:stretch;flex-direction:column}.inline-form,.account-rows li{grid-template-columns:minmax(0,1fr)}.reset-form{display:grid;grid-template-columns:minmax(0,1fr) auto}.actions{flex-wrap:wrap!important}.device-list li{grid-template-columns:auto minmax(0,1fr)}table{display:block;overflow-x:auto;white-space:nowrap}.weather-hero{padding:1.2rem}.weather-hero strong{font-size:3.4rem}.login-card{padding:1.5rem}.brand{padding:2rem}.brand h1{font-size:3rem}.onboarding{padding:1rem}.onboarding section{padding:1.5rem}.onboarding h1{font-size:2.2rem}}
