/* Installer dashboard: shared Fluxes colors and spacing, field-first controls. */
.installer-shell{--ip-brand:#7137ff;--ip-surface:#fff;--ip-canvas:#f6f7fb;--ip-border:#e7e9f1;--ip-ink:#252936;--ip-muted:#687286;background:var(--ip-canvas);color:var(--ip-ink);min-height:100dvh;padding-bottom:env(safe-area-inset-bottom,0px)}
.installer-shell *, .installer-portal *{box-sizing:border-box}
.installer-shell .ip-dashboard-header{height:76px;padding:12px max(24px,calc((100% - 1184px)/2));gap:20px;background:var(--ip-surface);border-bottom:1px solid var(--ip-border)}
.ip-dashboard-header .installer-brand{gap:18px;min-width:0;flex-shrink:0}
.ip-dashboard-header .ip-wordmark{display:block;width:126px;height:auto;flex-shrink:0}
.ip-dashboard-header .ip-brand-divider{width:1px;height:24px;background:var(--ip-border)}
.ip-dashboard-header .ip-workspace-label{display:flex;align-items:center;gap:7px;color:var(--ip-muted);font-size:12px;font-weight:600;white-space:nowrap}
.ip-dashboard-header .ip-workspace-label svg{color:#7137ff;flex-shrink:0}
.ip-dashboard-header .ip-header-account{display:flex;align-items:center;gap:12px;min-width:0}
.ip-dashboard-header .ip-account-name{display:grid;gap:4px;text-align:right;min-width:0;max-width:210px}
.ip-dashboard-header .ip-account-name strong{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ip-dashboard-header .ip-account-name span{font-size:10px;color:var(--ip-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ip-dashboard-header button{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}
.ip-dashboard-header .ip-appearance{position:relative;flex-shrink:0}.ip-appearance>summary{display:grid;place-items:center;width:44px;height:44px;list-style:none;border:1px solid var(--ip-border);border-radius:12px;color:var(--ip-muted);cursor:pointer}.ip-appearance>summary::-webkit-details-marker{display:none}.ip-appearance>summary:focus-visible{outline:3px solid #ad8aff;outline-offset:3px}.ip-appearance-panel{position:absolute;right:0;top:calc(100% + 10px);width:min(280px,calc(100vw - 84px));padding:16px;background:var(--ip-surface);border:1px solid var(--ip-border);border-radius:14px;box-shadow:0 12px 40px #21183222;z-index:100}.ip-dashboard-header .ip-appearance-panel button{min-width:0;min-height:0}.ip-appearance-panel p{white-space:normal}
.ip-dashboard-header .ip-appearance-panel .fa-appearance-menu{padding:0;min-width:0}.ip-dashboard-header .ip-appearance-panel .fa-appearance-menu>div>svg,.ip-dashboard-header .ip-appearance-panel .fa-appearance-menu>div>span{display:block}
.installer-shell .ip-dashboard-nav{display:flex;align-items:center;gap:8px;max-width:1184px;margin:0 auto;padding:18px 0 0;background:transparent;border:0}
.installer-shell .ip-dashboard-nav button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;min-height:44px;border:1px solid transparent;border-radius:11px;background:transparent;color:var(--ip-muted);font:inherit;font-size:13px;font-weight:650;cursor:pointer}
.installer-shell .ip-dashboard-nav button.active{background:#ede5ff;color:#7137ff;border-color:#e2d5ff}
.installer-shell .ip-dashboard-nav button:hover{background:#efeafb;color:#7137ff}
.installer-shell .ip-dashboard-nav .ip-create-task{margin-left:auto;border-color:var(--ip-border);background:var(--ip-surface);color:var(--ip-ink)}
.installer-shell button:focus-visible,.installer-shell a:focus-visible{outline:3px solid #ad8aff;outline-offset:3px}
.installer-portal{--ip-brand:#7137ff;max-width:1232px;padding:24px 24px 40px;color:#252936}
.installer-shell .installer-portal{padding-top:24px}
.ip-dashboard-heading{margin:0 0 22px;gap:16px}
.ip-dashboard-heading .ip-eyebrow{font-size:10px;letter-spacing:1.3px;color:#7e6c99}
.ip-dashboard-heading h1{font-size:clamp(22px,2.5vw,28px);letter-spacing:-.7px;margin:8px 0;line-height:1.25}
.ip-dashboard-heading p{font-size:13px;color:#687286}
.ip-dashboard-heading>.ip-button{min-width:44px;min-height:44px}
.ip-stats{gap:12px;margin:0 0 20px}
.ip-stats>div{padding:18px;border-radius:16px;border:1px solid #e9e1fb;box-shadow:none;background:#f0e9ff;gap:13px}
.ip-stats>div:nth-child(2){background:#e8f8ef;border-color:#d7eee1}
.ip-stats>div:nth-child(3){background:#edf3ff;border-color:#dee8fa}
.ip-stat-icon,.ip-stat-icon.green,.ip-stat-icon.amber{width:42px;height:42px;background:#ffffffa6;border-radius:12px;color:#7137ff}
.ip-stat-icon.green{color:#16a36c}.ip-stat-icon.amber{color:#4a7dde}
.ip-stats b{font-size:28px;font-weight:750;color:#342450}.ip-stats>div:nth-child(2) b{color:#216348}.ip-stats>div:nth-child(3) b{color:#305f9f}
.ip-stats div>span:not(.ip-stat-icon){display:block;margin-top:4px;color:#615d75;font-size:12px;line-height:1.35}
.ip-stats small{color:#63937e;font-size:15px}
.ip-toolbar{background:#fff;border:1px solid #e7e9f1;border-radius:16px;padding:12px;margin:0 0 20px;gap:14px}
.ip-tabs{background:#f5f6fa;border:0;padding:4px;border-radius:11px;gap:2px}
.ip-tabs button{min-height:44px;padding:10px 16px;white-space:nowrap;color:#687286}
.ip-tabs button.active{background:#7137ff;color:#fff;box-shadow:0 3px 8px #7137ff20}
.ip-date{gap:6px}.ip-date button{height:44px;min-width:44px;border-color:#e7e9f1;border-radius:10px;color:#555e70}
.ip-date input{height:44px;font-size:16px;border-color:#e7e9f1;border-radius:10px;color:#353c4e}
.installer-portal>.ip-button.primary{margin:0 0 18px;min-height:44px}
.ip-button{min-height:44px;border-radius:11px;border-color:#e4e7ef;font-size:13px!important;color:#566074}
.ip-job{border:1px solid #e7e9f1;border-radius:16px;padding:20px;box-shadow:0 3px 12px #27324804}
.ip-job-title{min-height:44px;margin:16px 0 12px}.ip-job-title h3{font-size:19px;font-weight:750;color:#252936;line-height:1.35}
.ip-job-title span,.ip-job-address{color:#687286}.ip-job-address{font-size:13px;overflow-wrap:anywhere}
.ip-tags span{background:#f3f5f9;color:#657087;font-size:11px;padding:5px 9px}
.ip-job-actions{border-top-color:#edf0f5}.ip-time{color:#586276}.ip-phase{font-size:11px;padding:7px 10px}
.ip-phase.planned{background:#f0ebff;color:#7541cf}.ip-day-heading{margin-bottom:14px}
.ip-day-heading h2{font-size:15px}.ip-day-heading>span{background:#eef0f5;color:#687286;padding:5px 9px;border-radius:8px}
.ip-week{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ip-week .ip-day-group{background:#f0f2f7;border-radius:16px;padding:12px}.ip-week .ip-day-heading{margin:0 0 12px}
.ip-week .ip-job:last-child{margin-bottom:0}.ip-week .ip-job-actions{flex-wrap:wrap}.ip-week .ip-job-actions>.ip-button{flex:1}
.ip-empty{color:#727c8f;border-color:#dce1eb;background:#fff}.ip-empty b{color:#4d586d}
.ip-card{border-color:#e7e9f1;border-radius:16px}.ip-detail .ip-heading h1{font-size:clamp(23px,3vw,30px);overflow-wrap:anywhere}
.ip-progress button{min-height:48px;color:#647087}.ip-progress button.active{color:#7137ff;background:#f1ebff;border-color:#cfbaff}
.installer-portal input,.installer-portal textarea,.installer-portal select{font-size:16px}
.installer-shell>.fl-share{max-width:1184px;margin:0 auto 24px;padding:16px 18px;border-radius:16px}
.installer-shell>.fl-share button{min-height:44px;font-size:12px}.installer-shell>.fl-share p{font-size:12px;line-height:1.55}
.installer-portal .fr-daily{border-radius:16px;border-color:#e7e9f1}.installer-portal .fr-daily button{min-height:44px}
.installer-portal [aria-label="Your earnings"]{margin-top:24px}
@media(max-width:1232px){.installer-shell .ip-dashboard-nav{margin:0 24px}.installer-shell>.fl-share{margin:0 24px 24px}}
@media(max-width:1000px){.ip-week{grid-template-columns:repeat(2,minmax(0,1fr))}.ip-toolbar{flex-wrap:wrap}.ip-tabs{flex:1}.ip-tabs button{flex:1}}
@media(max-width:640px){
 .installer-shell .ip-dashboard-header{height:68px;padding:10px 16px;gap:10px}.ip-dashboard-header .installer-brand{gap:0}.ip-dashboard-header .ip-wordmark{width:108px}.ip-dashboard-header .ip-brand-divider,.ip-dashboard-header .ip-workspace-label,.ip-dashboard-header .ip-account-name{display:none}
 .ip-dashboard-header .ip-header-account{gap:6px}.ip-dashboard-header .fx-avatar{width:32px!important;height:32px!important}.ip-dashboard-header button{padding:10px;min-width:42px;min-height:44px}
 .installer-shell .ip-dashboard-nav{margin:0;padding:12px 14px 0;gap:4px}.installer-shell .ip-dashboard-nav button{font-size:12px;padding:10px 11px;gap:6px}.installer-shell .ip-dashboard-nav .ip-create-task{padding:10px;gap:4px}
 .installer-portal,.installer-shell .installer-portal{padding:20px 14px 26px}.ip-dashboard-heading{margin-bottom:18px;align-items:center}.ip-dashboard-heading h1{font-size:22px;max-width:none;margin:7px 0}.ip-dashboard-heading p{font-size:12px;line-height:1.5}.ip-dashboard-heading .ip-eyebrow{font-size:9px}.ip-dashboard-heading>.ip-button{padding:11px;align-self:center}.ip-dashboard-heading>.ip-button span{display:none}
 .ip-stats{gap:8px;margin-bottom:16px}.ip-stats>div{padding:12px 10px;gap:9px;align-items:flex-start;border-radius:13px}.ip-stat-icon,.ip-stat-icon.green,.ip-stat-icon.amber{width:32px;height:32px;border-radius:9px}.ip-stat-icon svg{width:18px;height:18px}.ip-stats b{font-size:23px}.ip-stats small{font-size:12px}.ip-stats div>span:not(.ip-stat-icon){font-size:10px;margin-top:4px;line-height:1.4}
 .ip-toolbar{padding:10px;gap:10px;border-radius:14px;margin-bottom:16px;align-items:stretch}.ip-tabs{width:100%;flex:auto}.ip-tabs button{padding:10px 6px;font-size:12px;gap:6px}.ip-date{width:100%;justify-content:space-between}.ip-date input{min-width:0;max-width:none;width:1px;flex:1;padding:8px 5px}.ip-date button{padding:0 9px}.ip-date button:last-child{font-size:12px}
 .ip-day .ip-day-group{gap:12px}.ip-week{grid-template-columns:1fr;gap:14px}.ip-week .ip-empty.small{padding:18px 14px}.ip-job{padding:16px}.ip-job-title h3,.ip-week .ip-job-title h3{font-size:18px}.ip-job-top{flex-wrap:wrap}.ip-job-actions{gap:8px}.ip-job-actions .ip-button{padding:11px 12px}.ip-job-address{min-height:0}.ip-tags{margin:12px 0}
 .ip-card{padding:18px}.ip-progress{gap:8px}.ip-progress button{padding:12px 10px}.ip-detail-grid{gap:14px}.ip-photo-tools{gap:8px}.ip-photo-tools .ip-button{flex:1;padding:11px 9px}.installer-shell>.fl-share{margin:0 14px 20px;padding:14px}.installer-shell>.fl-share>div{min-width:0}.installer-shell>.fl-share button{width:100%;justify-content:center}.installer-shell>.fl-share small{font-size:10px}
}
@media(max-width:360px){.installer-shell .ip-dashboard-nav button{padding:10px 8px;font-size:11px}.ip-dashboard-heading h1{font-size:20px}.ip-job-actions{flex-wrap:wrap}.ip-job-actions>.ip-button{flex:1}.ip-progress{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.installer-shell *{scroll-behavior:auto!important}}
html[data-fluxes-theme="dark"] .installer-shell{--ip-surface:#211d2d;--ip-canvas:#171420;--ip-border:#393145;--ip-ink:#f1edf7;--ip-muted:#b7aec8}
html[data-fluxes-theme="dark"] .ip-dashboard-header .ip-wordmark{filter:brightness(0) invert(1)}
html[data-fluxes-theme="dark"] .ip-dashboard-header .ip-account-name strong{color:#f1edf7}
html[data-fluxes-theme="dark"] .installer-portal .ip-toolbar{background:#1d2635!important;border-color:#42445d!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-job-title h3{color:#f1edf7!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-stats b{color:#cbb2ff!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-stats>div:nth-child(2) b{color:#82dec0!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-stats>div:nth-child(3) b{color:#9cbfff!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-stats small{color:#acd9ca!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-day-heading>span{background:#323b50!important;color:#d2daec!important}
html[data-fluxes-theme="dark"] .installer-portal .ip-week .ip-day-group{background:#171f2e!important}
