/* AIoT control workspace: compact instrument panels, persistent navigation. */
.control-app,.history-app{font-family:'Noto Sans TC',sans-serif;color:#20354b;background:#eef2f6;display:flex;flex-direction:column}
.control-header{height:80px;flex:0 0 80px;background:#fff;border-bottom:1px solid #dae3eb;display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:16px;z-index:10}
.control-brand{display:flex;align-items:center;gap:12px}.control-brand strong{font-size:24px;letter-spacing:-.8px}.control-brand strong span{font-weight:400}.control-brand small{display:block;font-size:10px;letter-spacing:2px;color:#5e7184;margin-top:4px}.control-brand__symbol{background:#126e82;color:white;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:36px}
.control-header__right{display:flex;align-items:center;gap:20px}.control-account{font-size:13px;color:#53697b}.control-header select{border:1px solid #ccd9e2;border-radius:8px;background:white;color:#20354b;padding:9px 12px;font:inherit}
.control-body{display:flex;flex:1;min-height:0}.control-nav{width:172px;flex-shrink:0;background:#20354b;padding:30px 12px;display:flex;flex-direction:column;gap:8px}.control-nav button{display:flex;align-items:center;gap:12px;background:transparent;color:#c5d2e0;border:0;padding:16px 12px;border-radius:8px;font:inherit;cursor:pointer;text-align:left}.control-nav button.active{background:#34546a;color:#fff;box-shadow:inset 3px 0 #65d4c0}.control-nav ion-icon{font-size:22px;flex-shrink:0}.control-content{flex:1;min-width:0;overflow:auto;padding:0 0 28px}
.control-app button:focus-visible,.control-app input:focus-visible,.control-app select:focus-visible,.history-app button:focus-visible,.history-app input:focus-visible{outline:3px solid #d78b29;outline-offset:3px}
.identity-page{max-width:1060px;margin:0 auto;padding:64px 40px;display:grid;grid-template-columns:1fr 1.05fr;gap:64px;align-items:center}.identity-kicker{font:12px 'IBM Plex Mono',monospace;color:#126e82;letter-spacing:2px}.identity-heading h1{font-size:clamp(26px,3vw,38px);line-height:1.4;letter-spacing:-1px;margin:18px 0}.identity-heading p{font-size:15px;color:#62768a;line-height:1.9;max-width:350px}.identity-card{background:white;border:1px solid #dbe4eb;border-radius:16px;padding:32px;box-shadow:0 8px 28px #20354b08;min-width:0}.identity-card h2{margin:0 0 22px;font-size:22px;overflow-wrap:anywhere}.identity-card>p{font-size:14px;color:#62768a;line-height:1.8}.identity-card label{display:block;font-size:13px;font-weight:600;margin:22px 0 9px}.identity-card input{display:block;width:100%;min-width:0;border:1px solid #bdcdd9;border-radius:8px;padding:14px;background:#f9fbfc;color:#20354b;font:inherit}.identity-password{position:relative}.identity-password input{padding-right:54px}.identity-password button{position:absolute;right:4px;top:4px;height:44px;width:44px;background:none;border:0;color:#126e82;cursor:pointer}.identity-password ion-icon{font-size:23px}.identity-primary,.identity-secondary{width:100%;min-height:48px;border-radius:8px;padding:12px 18px;font:inherit;font-weight:600;cursor:pointer;margin-top:16px}.identity-primary{background:#126e82;color:white;border:1px solid #126e82;display:flex;justify-content:center;align-items:center;gap:18px}.identity-secondary{background:white;color:#34546a;border:1px solid #bdcdd9}.identity-primary:disabled,.identity-secondary:disabled{opacity:.55;cursor:wait}.identity-avatar{height:64px;width:64px;background:#e3f2f1;border-radius:16px;display:grid;place-items:center;margin-bottom:18px;color:#126e82;font-size:30px}.identity-badge{display:inline-block;background:#e6f5ed;color:#216c4d;padding:5px 10px;border-radius:4px;font-size:12px;margin-bottom:16px}.identity-card dl{border-top:1px solid #e1e8ee;margin:26px 0;padding-top:16px;font-size:13px}.identity-card dt{color:#62768a;margin-top:12px}.identity-card dd{margin:4px 0 14px;overflow-wrap:anywhere}.identity-card .identity-notice{background:#fff3e2;color:#815011;border-left:3px solid #d78b29;padding:12px;font-size:13px}
.control-app .dashboard-shell{padding:30px;max-width:none;background:none}.control-app .dashboard-heading{margin-bottom:24px}.control-app .dashboard-heading h1{font-size:26px}.control-app .dashboard-heading__eyebrow{letter-spacing:1.5px}.control-app .device-card{border-radius:12px;box-shadow:0 3px 10px #20354b07;border:1px solid #d9e2ea}.control-app .device-card:before{height:3px;background:#126e82}.control-app .device-card__header{padding:20px 18px 12px}.control-app .device-card__section--control{margin:12px;border-radius:8px;background:#eef4f6}.control-app .device-wall{column-width:300px;column-count:auto;column-gap:18px}.control-app .dashboard-heading__tools{flex-wrap:wrap}.control-app .dashboard-tool{min-height:44px;border-radius:8px}.control-app .dashboard-tool ion-icon{font-size:21px}
.history-workspace{overflow:auto;padding:30px;flex:1}.history-back{display:flex;align-items:center;gap:10px;background:transparent;border:0;font:inherit;color:#126e82;min-height:44px;cursor:pointer}.history-back ion-icon{font-size:22px}.history-mac{font:12px 'IBM Plex Mono',monospace;color:#62768a}.history-filters{display:grid;grid-template-columns:1fr 1fr .7fr .8fr;gap:20px;background:white;border:1px solid #dae3eb;border-radius:12px;padding:24px;align-items:end}.history-filters label{font-size:13px;color:#53697b}.history-filters input,.history-filters select{display:block;width:100%;min-width:0;margin-top:8px;border:1px solid #bdcdd9;background:#f9fbfc;padding:12px;border-radius:8px;font:inherit;color:#20354b;height:48px}.history-filters button{margin:0}.history-panel{margin-top:24px;border:1px solid #dae3eb;border-radius:12px;background:#fff;padding:24px}.history-panel__heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.history-panel h1{font-size:20px;margin:0}.history-panel__heading span,.history-note{font-size:12px;color:#62768a}.history-canvas{height:clamp(280px,52vh,600px);position:relative;margin-top:24px}.history-message{padding:48px 16px;text-align:center;color:#53697b}.history-note{margin-top:24px;line-height:1.8}
@media(max-width:1000px){.control-nav{width:144px}.identity-page{grid-template-columns:1fr;gap:24px;max-width:580px;padding:36px 24px}.identity-heading h1{font-size:28px;margin:10px 0}.identity-heading p{max-width:none}.history-filters{grid-template-columns:1fr 1fr}.control-account{display:none}}
@media(max-width:640px){.control-header{height:68px;flex-basis:68px;padding:0 16px}.control-brand strong{font-size:20px}.control-brand__symbol{width:34px;height:34px}.control-brand small{font-size:9px}.control-body{flex-direction:column}.control-nav{order:2;width:100%;padding:8px 12px max(8px,env(safe-area-inset-bottom));flex-direction:row;justify-content:center;border-top:1px solid #dae3eb;background:white;gap:8px}.control-nav button{flex:1;justify-content:center;flex-direction:column;gap:4px;font-size:12px;padding:8px;color:#62768a}.control-nav button.active{background:#eaf3f4;color:#126e82;box-shadow:none}.control-content{padding-bottom:16px}.control-app .dashboard-shell{padding:24px 16px}.control-app .dashboard-heading{align-items:flex-start;gap:16px}.control-app .dashboard-heading h1{font-size:24px}.control-app .device-wall{column-count:1}.identity-page{padding:28px 16px;gap:20px}.identity-card{padding:24px}.history-workspace{padding:16px}.history-filters{grid-template-columns:1fr;padding:18px;gap:14px}.history-mac{display:none}.history-panel{padding:18px}.history-canvas{height:330px}}
@media(prefers-reduced-motion:reduce){.control-app *,.history-app *{animation:none!important;transition:none!important}}

/* Fill available width without empty multicolumn tracks. */
.control-nav{width:192px}.control-nav button{white-space:nowrap;font-size:14px}.control-nav button span{white-space:nowrap}.control-app .device-wall{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,350px),1fr));gap:18px;columns:auto;background:none;align-items:start;width:100%}.control-app .device-tile{display:block;min-width:0;width:100%;margin:0;break-inside:auto}.control-app .device-tile>ion-card{width:100%}
@media(max-width:1000px) and (min-width:641px){.control-nav{width:174px;padding-left:10px;padding-right:10px}.control-nav button{padding:14px 10px;gap:10px}}
@media(max-width:640px){.control-nav{width:100%}.control-app .device-wall{grid-template-columns:minmax(0,1fr)}}
