:root{font-family:system-ui,-apple-system,sans-serif;color:#203444;background:#f4f7f8;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{margin:0}header{display:flex;align-items:center;gap:24px;padding:20px 5%;background:#fff;border-bottom:1px solid #dce5e9}a{color:#086b70;text-decoration:none}a:hover{text-decoration:underline}.brand{font-size:24px;color:#203444;white-space:nowrap}header>span,.muted,footer,small{color:#607581}nav{display:flex;gap:24px;margin-left:auto}header form{margin:0}main{max-width:1100px;margin:52px auto;padding:0 24px;min-height:65vh}h1{font-size:32px;line-height:1.2;margin:8px 0 16px}h2{font-size:20px;margin-top:0}.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#086b70;font-weight:700}.panel{background:white;padding:28px;border:1px solid #dce5e9;border-radius:12px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:30px 0}.cards a{display:block}.number{display:block;font-size:42px;color:#203444;margin:6px 0 20px}dl{display:grid;grid-template-columns:170px 1fr;gap:12px}dd{margin:0}dt{color:#607581}.login{max-width:440px;margin:70px auto}.editor{max-width:700px}label{display:block;font-weight:600;margin:22px 0 8px}input,select,textarea{font:inherit;display:block;width:100%;padding:11px 12px;border:1px solid #afc1ca;border-radius:6px;color:inherit;background:#fff}button,.button{display:inline-block;font:inherit;font-weight:600;padding:10px 18px;border:1px solid #086b70;border-radius:6px;background:#086b70;color:white;cursor:pointer}button:hover,.button:hover{background:#06565b;text-decoration:none}form>button{margin-top:24px}.secondary{background:white;color:#086b70}.secondary:hover{color:white}.actions{display:flex;gap:24px;align-items:center;margin-top:24px}.title{display:flex;justify-content:space-between;align-items:center;gap:20px}table{width:100%;border-collapse:collapse;text-align:left}th{font-size:12px;text-transform:uppercase;color:#607581}td,th{padding:16px 12px;border-bottom:1px solid #e6edef}small{display:block;font-size:11px;margin-top:5px}.badge{background:#edf3f4;padding:4px 9px;border-radius:12px;font-size:13px}.inline{display:inline;margin-left:16px}.inline button{margin:0}.table-wrap{overflow-x:auto}.error{color:#9c2639;background:#fff0f1;padding:12px;border-radius:6px}footer{padding:24px;text-align:center;font-size:12px}:focus-visible{outline:3px solid #ddad36;outline-offset:3px}@media(max-width:700px){header{flex-wrap:wrap;gap:12px}nav{order:3;width:100%;margin:0}.cards{grid-template-columns:1fr}main{margin:30px auto;padding:0 16px}.panel{padding:20px}.title{align-items:start}h1{font-size:27px}dl{grid-template-columns:1fr}dd{margin-bottom:8px}.login{margin:30px auto}}
.section{margin-top:24px}.periods{display:flex;gap:24px;margin:24px 0;flex-wrap:wrap}.periods [aria-current=page]{font-weight:700;text-decoration:underline}.history-chart{width:100%;height:auto;background:#f4f7f8;border-radius:6px}.history-chart polyline{fill:none;stroke:#086b70;stroke-width:2}
summary{cursor:pointer;color:#086b70;font-weight:600;padding:12px 0}nav{flex-wrap:wrap}
.check{display:flex;gap:12px;align-items:center;font-weight:400}.check input{width:auto}.search{max-width:500px}.secret{display:block;overflow-wrap:anywhere;padding:16px;background:#edf3f4}
.success{color:#166347;background:#ecfaf2;padding:12px;border-radius:6px}.onboarding{padding-left:24px}.onboarding li{margin:8px 0}code{overflow-wrap:anywhere}
header form{flex-shrink:0}header button{white-space:nowrap}.panel form{max-width:700px}

/* Raw webhook envelopes can contain long base64 fields. */
pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 32rem; overflow: auto; }
details { margin-block: 1rem; }
summary { cursor: pointer; }

/* Read-only operational overview. */
.overview-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:28px 0}
.overview-metric{display:block}.overview-metric .number{margin:4px 0 8px}
.overview-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.overview-grid>.panel,.overview-stack,.overview-metric{min-width:0}
.overview-stack{display:grid;gap:24px}.overview-details{grid-template-columns:minmax(125px,1fr) minmax(0,1.3fr)}
.overview-details dd{overflow-wrap:anywhere}.storage-total{font-size:36px;font-weight:700;margin:12px 0 24px;line-height:1.2}
.storage-total span{display:block;font-size:14px;font-weight:400;margin-top:8px}
.storage-meter-label{font-size:14px;font-weight:400;margin-top:24px}meter{width:100%;height:16px;accent-color:#086b70}
.overview-links{list-style:none;padding:0;margin:0 0 20px}.overview-links a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #e6edef}
.overview-links strong{font-size:24px}.overview-grid details{font-size:14px}
@media(max-width:850px){.overview-grid{grid-template-columns:1fr}.overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.overview-details{grid-template-columns:1fr}.overview-details dd{margin-bottom:8px}.overview-metrics{gap:12px}.overview-metric{padding:16px}}

/* TG sensor workbench: scoped components, existing admin visual language. */
.tg-note{background:#eaf2f3;border-left:3px solid #13858b;border-radius:8px;padding:16px 20px;margin:20px 0;color:#35535f}.tg-section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:20px 0}.tg-section-title h2{margin:0}.tg-device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}.tg-device-card{display:block;color:inherit}.tg-device-card:hover{border-color:#13858b;text-decoration:none}.tg-device-card h2{margin-top:16px}.tg-icon{font-size:28px;color:#13858b}.tg-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 20px}.tg-fields>*{min-width:0}.tg-fields label{font-size:14px}.tg-fields small{font-weight:400;font-size:12px}.tg-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:24px 0}.tg-facts>div{padding:16px;background:white;border:1px solid #dce5e9;border-radius:10px;min-width:0}.tg-facts span,.tg-facts strong{display:block;overflow-wrap:anywhere}.tg-facts span{font-size:12px;color:#607581}.tg-facts strong{font-size:14px;margin-top:6px}.tg-tabs{display:flex;margin:28px 0;gap:6px;border-bottom:1px solid #dce5e9;flex-wrap:wrap}.tg-tabs a{padding:12px 14px;color:#607581;border-bottom:3px solid transparent}.tg-tabs [aria-current=page]{border-color:#13858b;color:#086b70;font-weight:700}.tg-workspace{display:grid;grid-template-columns:210px minmax(0,1fr);gap:28px;align-items:start}.tg-profile-nav{display:grid;gap:8px}.tg-profile-nav a{padding:14px 16px;border:1px solid #dce5e9;border-radius:9px;background:white;color:#35535f}.tg-profile-nav span{display:block;font-size:12px;color:#607581}.tg-profile-nav [aria-current=page]{background:#e1eff0;border-color:#13858b}.tg-preset-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.tg-preset-row form{padding:14px;background:#fff;border:1px solid #dce5e9;border-radius:10px;margin:0}.tg-preset-row button{font-size:13px;margin:0;padding:8px 10px}.tg-preset-row p{font-size:12px;margin-bottom:0}.tg-frame-options{margin:24px 0;border:1px solid #dce5e9;border-radius:9px;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:16px}.tg-frame-options .check{font-size:13px;margin:0}.tg-energy{background:#e9f3ed;border:1px solid #cadfd1;border-radius:12px;padding:24px}.tg-energy-numbers{display:flex;gap:40px;margin:16px 0}.tg-energy-numbers strong{display:block;font-size:34px}.tg-energy-numbers span{display:block;font-size:13px}.tg-energy li,.tg-energy p{font-size:13px;color:#405d4e}.tg-review-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start}.tg-code{font-family:ui-monospace,monospace;font-size:13px;line-height:1.7;tab-size:2}.tg-payload{border-top:1px solid #dce5e9;padding:8px 0 16px}.tg-payload label{font-size:12px;color:#607581}.tg-payload code{display:block;background:#f4f7f8;padding:10px;border-radius:6px;font-size:12px;color:#203444;font-weight:400;word-break:break-all}.tg-command{padding:0 16px;border-top:1px solid #e6edef}.tg-command summary{font-size:15px}.tg-command .badge{font-size:11px;margin-left:12px}.tg-command form{padding-bottom:18px}.tg-tabs,.tg-profile-nav{margin-left:0}button:disabled{opacity:.5;cursor:not-allowed}fieldset legend{font-weight:600;font-size:14px}[hidden]{display:none!important}
@media(max-width:900px){.tg-workspace{grid-template-columns:1fr}.tg-profile-nav{grid-template-columns:repeat(3,1fr)}.tg-review-grid{grid-template-columns:1fr}.tg-facts{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.tg-fields{grid-template-columns:1fr}.tg-preset-row{grid-template-columns:1fr}.tg-frame-options{grid-template-columns:1fr}.tg-profile-nav{grid-template-columns:repeat(2,1fr)}.tg-tabs a{font-size:13px;padding:10px}.tg-energy-numbers{gap:20px}.tg-facts{grid-template-columns:1fr 1fr}}

@media(max-width:600px){.tg-title{flex-direction:column;align-items:flex-start;gap:8px}.tg-title>.button{margin-bottom:12px}.tg-section-title{flex-wrap:wrap}}

/* Cloud connection management shares the admin component system. */
.wl-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.wl-actions form{margin:0}.wl-actions button{margin:0}.wl-field{border-top:1px solid #dce5e9;padding:8px 0}.wl-field summary .badge{margin-left:10px}.wl-field form{max-width:650px}

.cleanup-table{overflow-x:auto}
