/* Shared layout contract for every system. Loaded after module styles. */
:root{--page-width:1600px;--page-gutter:28px}
.app-header{width:100%;max-width:var(--page-width);min-height:104px;height:auto;margin:0 auto;padding:10px var(--page-gutter);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;background:#0b1412;border-bottom:1px solid #2b4035;box-sizing:border-box}
.app-header .brand-logo{width:240px;max-width:100%;height:80px;object-fit:contain;border-radius:6px}.app-header .brand,.app-header>a:first-child{min-width:0;flex-shrink:1}.app-header .button-row,.app-header .account{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin:0}.app-header .secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin:0;padding:10px 16px;font-size:14px;line-height:1.4;white-space:nowrap}.app-header .account>div{overflow-wrap:anywhere;min-width:0}.app-header .account strong{font-size:13px}.app-header .account #account-email{font-size:12px}
.app-content{width:100%;max-width:var(--page-width);margin:0 auto;padding:28px var(--page-gutter) 48px;box-sizing:border-box;min-width:0}.app-content>header,.module-heading{margin:0 0 24px}.app-content>header h1,.module-heading h1,.page-heading h1{font-size:clamp(26px,3vw,34px);font-weight:650;letter-spacing:-.6px;line-height:1.25;margin:8px 0 12px}.app-content>header p,.module-heading>p{font-size:15px;color:#adbbb2;line-height:1.6;margin:0}.app-content .eyebrow{color:#a7e68b;font-size:11px;letter-spacing:1.5px}.app-content>header>div{min-width:0}.module-heading>p{max-width:800px}
.tracking-shell form{max-width:none}.tracking-shell label{font-size:14px}.tracking-shell select,dialog select{background:#0b1412;color:#edf3ef;border:1px solid #3b5145;padding:10px 12px;border-radius:9px;font:inherit;min-height:44px;max-width:100%}.tracking-shell input:not([type=checkbox]):not([type=range]){font-size:15px;min-height:44px}.tracking-toolbar .primary{width:auto}.tracking-toolbar .search-label{min-width:0;flex:1 1 300px}.tracking-toolbar button{flex-shrink:0}.tracking-shell #tracker-tabs{gap:8px;margin:20px 0;flex-wrap:wrap}.tracking-shell #tracker-tabs button[aria-pressed=true]{background:#83df60;color:#0b1412;border-color:#83df60}.tracking-shell #planning-form,.tracking-shell #zone-form,.tracking-shell #address-form{max-width:none;width:100%;gap:16px}.tracking-shell #planning-form label,.tracking-shell #zone-form label{flex:1 1 220px;max-width:360px}.tracking-shell .map-card{background:#111e18;border-color:#2b4035;border-radius:16px}.tracking-shell .map-heading{padding:18px 20px;gap:16px}.tracking-shell .map-heading h2{font-size:20px}.tracking-shell .map-heading p{font-size:13px;line-height:1.5}.tracking-shell .map-heading label{margin:0}.tracking-shell .map-note{font-size:13px;padding:0 20px 14px}.tracking-shell .tracker-details{background:#15271d;border-color:#2b4035}.tracking-shell .tracking-table{border-color:#2b4035}.tracking-shell .tracking-table th{background:#1b2e23;color:#b8c9be;font-size:12px;letter-spacing:.4px}.tracking-shell .tracking-table td{font-size:14px;border-color:#2b4035}.tracking-shell .tracking-table tbody tr:nth-child(even){background:#14231b}.tracking-shell .learning-totals>div{background:#13221c;border-color:#2b4035}.tracking-shell .trip-list{padding:4px 20px 22px}.tracking-shell #address-form label{min-width:min(240px,100%)}.tracking-shell .playback-timeline{min-width:min(220px,100%)}
.energy-page .inverter-card{background:#13221c;border-color:#2b4035;border-radius:16px}.energy-page .inverter-card>p,.weather-summary{font-size:14px;line-height:1.6}.energy-page .range-label{font-size:14px}.energy-page .inverter-overview{gap:24px}.energy-page .energy-graph{max-width:100%}.wide-dialog label,dialog label{font-size:14px}dialog input,dialog textarea{font-size:15px}dialog form{max-width:none}dialog .button-row{gap:10px}.fleet .record-editor>summary{scroll-margin-top:20px}.fleet section{scroll-margin-top:20px}.fleet .record-info{min-width:0}.fleet .cards>div{min-width:0}.fleet .record-info span,.fleet .record-info strong{overflow-wrap:anywhere}
@media(max-width:800px){.app-header .account{max-width:100%}.app-header .account #account-email{max-width:240px}.app-content>header{align-items:flex-start}.app-header .button-row{justify-content:flex-start}.app-header .brand-logo{width:220px;height:74px}}
@media(max-width:600px){:root{--page-gutter:16px}.app-header{gap:8px;padding-top:8px;padding-bottom:12px}.app-header .brand-logo{width:210px;height:70px}.app-header .button-row,.app-header .account{flex-basis:100%;justify-content:flex-start}.app-header .secondary{font-size:13px;min-height:42px;padding:9px 12px}.app-content{padding-top:22px}.app-content>header h1,.module-heading h1{font-size:27px}.tracking-shell .map-heading{padding:16px}.tracking-shell .map-heading .button-row{width:100%}.tracking-shell .map-note{padding-left:16px;padding-right:16px}.tracking-shell .search-label{min-width:0}.tracking-shell .playback-controls{padding:0 16px 18px}.tracking-shell #planning-form label,.tracking-shell #zone-form label{max-width:none;flex-basis:100%}.tracking-shell .learning-totals{grid-template-columns:1fr 1fr;gap:10px}.tracking-shell .learning-totals>div{padding:14px}.tracking-shell .learning-totals strong{font-size:22px}.tracking-shell .learning-totals #latest-sample{font-size:15px}.energy-page .inverter-overview{grid-template-columns:1fr}.energy-page .inverter-card{padding:16px}.page-heading{flex-wrap:wrap}.portal-actions{gap:10px}.wide-dialog{padding:24px 16px}.system-brand>a.secondary{margin-left:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.energy-page{background:#0b1412}.app-header .brand-logo{mix-blend-mode:lighten}

@media(max-width:720px){#auth{grid-template-rows:auto 1fr}.intro{padding:10px 16px}.intro .brand-logo{width:240px;height:80px;object-fit:contain}.auth-panel{min-height:0;align-items:start;padding:32px 20px}.app-header .account>div{display:block}}

/* Common visual tokens for every application; module rules stay scoped. */
:root{--app-bg:#0b1412;--app-surface:#111e18;--app-surface-alt:#1b2e23;--app-border:#2b4035;--app-input-border:#3b5145;--app-text:#edf3ef;--app-muted:#adbbb2;--app-accent:#83df60;--app-accent-soft:#203b28;--app-danger:#ffaaa3;--app-font:Inter,"Segoe UI",Arial,sans-serif}

/* Consistent, accessible finishing across portal applications. */
.app-content,.app-header{font-family:var(--app-font,Inter,"Segoe UI",Arial,sans-serif)}
.app-content button,.app-content input,.app-content select,.app-content textarea,.app-header button{font-family:inherit}
.app-content button,.app-header button,.app-header a.secondary{line-height:1.4}
.app-content h1,.app-content h2,.app-content h3{overflow-wrap:break-word}
.app-content p,.app-content label{line-height:1.6}
.app-content :is(button,a,input,select,textarea):focus-visible,.app-header :is(button,a,select):focus-visible{outline:2px solid var(--app-accent,#83df60);outline-offset:3px}
@media(max-width:600px){.app-content dialog{max-width:calc(100vw - 24px)}}
