:root{--suite-navy:#071f43;--suite-navy2:#0b2c5b;--suite-orange:#f26a21;--suite-blue:#1556a8;--suite-bg:#f4f6f9;--suite-line:#dce2e9;--suite-text:#10213d;--suite-muted:#66758b;--suite-green:#138a55;--suite-red:#cc3030;--suite-amber:#d87800}
body.suite-active>header,body.suite-active>main,body.suite-active>.foot{display:none}
#suite-root{min-height:100vh;background:var(--suite-bg);color:var(--suite-text);font-family:Inter,system-ui,sans-serif}
.suite-layout{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100vh}
.suite-nav{position:sticky;top:0;height:100vh;background:var(--suite-navy);color:white;display:flex;flex-direction:column;padding:24px 14px 18px;z-index:20}
.suite-brand{display:flex;align-items:center;gap:12px;padding:0 10px 25px;border-bottom:1px solid rgba(255,255,255,.12)}
.suite-logo{width:38px;height:38px;border-radius:9px;background:var(--suite-orange);display:grid;place-items:center;font:700 20px 'Barlow Semi Condensed'}
.suite-brand strong{font:700 21px 'Barlow Semi Condensed';letter-spacing:.8px}.suite-brand small{display:block;color:#9fb3cf;font-size:10px;letter-spacing:.5px;margin-top:2px}
.suite-nav-list{display:flex;flex-direction:column;gap:5px;margin-top:22px}.suite-nav-btn{position:relative;border:0;background:transparent;color:#c5d2e4;display:flex;align-items:center;gap:12px;text-align:left;padding:11px 12px;border-radius:7px;font:600 13px Inter;cursor:pointer;width:100%}.suite-nav-btn:hover{background:rgba(255,255,255,.07);color:#fff}.suite-nav-btn.active{background:rgba(255,255,255,.1);color:#fff}.suite-nav-btn.active:before{content:"";position:absolute;left:-14px;top:7px;bottom:7px;width:3px;background:var(--suite-orange)}.suite-nav-btn svg{width:19px;height:19px;stroke-width:1.8;flex:none}.suite-nav-footer{margin-top:auto;padding:14px 11px 0;border-top:1px solid rgba(255,255,255,.12);color:#91a6c3;font-size:10.5px;line-height:1.6}
.suite-main{min-width:0}.suite-top{height:72px;background:#fff;color:var(--suite-text);border-bottom:1px solid var(--suite-line);display:flex;align-items:center;padding:0 26px;gap:18px;position:sticky;top:0;z-index:10}.suite-heading{margin-right:auto}.suite-heading h1{font:700 22px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;margin:0;color:var(--suite-text)}.suite-heading p{margin:1px 0 0;color:var(--suite-muted);font-size:11.5px}.suite-location,.suite-user{display:flex;align-items:center;gap:8px;border:1px solid var(--suite-line);border-radius:6px;background:#fff;color:var(--suite-text);padding:8px 11px;font-size:12px}.suite-user{border:0}.suite-avatar{width:31px;height:31px;border-radius:50%;display:grid;place-items:center;background:var(--suite-orange);color:white;font-weight:700}.suite-content{padding:22px 26px 40px;max-width:1500px;margin:auto}
.suite-actions{display:flex;gap:8px;align-items:center}.suite-btn{border:1px solid var(--suite-line);background:#fff;color:var(--suite-text);padding:8px 12px;border-radius:6px;font:600 12px Inter;cursor:pointer}.suite-btn:hover{border-color:#9aa9bb}.suite-btn.primary{background:var(--suite-orange);border-color:var(--suite-orange);color:#fff}.suite-btn.danger{color:var(--suite-red)}
/* auto-fit, not a fixed four. A strip is three tiles on some pages and five on
   others; a fixed count left a blank cell on the short ones and pushed the
   fifth onto a row of its own on the long ones. */
.metric-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));background:#fff;border:1px solid var(--suite-line);margin-bottom:14px}
.metric:last-child{border-right:0}.metric{min-width:0;padding:18px 20px;border-right:1px solid var(--suite-line);display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center}.metric:last-child{border:0}.metric-icon{width:42px;height:42px;border-radius:50%;background:#e8eef7;color:var(--suite-navy2);display:grid;place-items:center;font:700 16px 'IBM Plex Mono'}.metric-icon.green{background:#e3f2e9;color:var(--suite-green)}.metric-icon.orange{background:#fff0e5;color:var(--suite-orange)}.metric-label{font:600 11px 'Barlow Semi Condensed';text-transform:uppercase;color:var(--suite-muted);letter-spacing:.35px;white-space:normal}.metric-value{font:700 27px 'Barlow Semi Condensed';line-height:1.1}.metric-note{font-size:10.5px;color:var(--suite-muted);margin-top:2px}
.suite-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.7fr);gap:14px}.suite-stack{display:flex;flex-direction:column;gap:14px}.suite-panel{background:#fff;border:1px solid var(--suite-line);min-width:0}.suite-panel-head{min-height:46px;padding:11px 14px;border-bottom:1px solid var(--suite-line);display:flex;align-items:center;gap:10px}.suite-panel-head h2{font:700 14px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.35px;margin:0}.suite-panel-head .suite-actions{margin-left:auto}.suite-panel-body{padding:16px}.trend-chart{height:235px;position:relative;padding:10px 12px 28px 46px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 47px,#e7ebf0 48px)}.trend-chart:before{content:"100%\A\A 95%\A\A 90%\A\A 85%";white-space:pre;position:absolute;left:5px;top:5px;color:var(--suite-muted);font:10px/48px 'IBM Plex Mono'}.trend-svg{width:100%;height:100%;overflow:visible}.trend-labels{display:flex;justify-content:space-between;color:var(--suite-muted);font-size:10px;margin-top:3px}.goal-line{position:absolute;left:46px;right:12px;top:129px;border-top:1px dashed #8d9aac}.chart-legend{font-size:10.5px;color:var(--suite-muted);padding:0 16px 13px}
.suite-table-wrap{overflow:auto}.suite-table{width:100%;border-collapse:collapse;font-size:12px}.suite-table th{background:#f7f8fa;color:var(--suite-muted);font:600 10.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.35px;text-align:left;padding:9px 12px;border-bottom:1px solid var(--suite-line);white-space:nowrap}.suite-table td{padding:10px 12px;border-bottom:1px solid #edf0f4;white-space:nowrap}.suite-table tr:last-child td{border-bottom:0}.suite-table tbody tr:hover{background:#fafbfd}.suite-table .name{font-weight:600;color:var(--suite-text)}.suite-table .sub{font-size:10px;color:var(--suite-muted);margin-top:2px}.score{font:700 12px 'IBM Plex Mono';color:var(--suite-green)}.score.warn{color:var(--suite-amber)}.score.bad{color:var(--suite-red)}
.activity-row,.alert-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid #edf0f4}.activity-row:last-child,.alert-row:last-child{border:0}.initial{width:34px;height:34px;border:1px solid var(--suite-line);background:#f1f3f6;display:grid;place-items:center;border-radius:5px;font:600 12px 'IBM Plex Mono'}.row-title{font-size:11.5px;font-weight:600}.row-sub{font-size:10px;color:var(--suite-muted);margin-top:2px}.row-type{font:700 10.5px 'Barlow Semi Condensed';color:var(--suite-green);text-transform:uppercase}.row-type.vto{color:var(--suite-blue)}.row-type.sick{color:var(--suite-amber)}.alert-num{font:700 13px 'IBM Plex Mono';color:var(--suite-red)}
.module-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:16px}.module-hero h2{font:700 25px 'Barlow Semi Condensed';margin:0;text-transform:uppercase}.module-hero p{margin:3px 0 0;font-size:12px;color:var(--suite-muted)}.filter-row{display:flex;gap:8px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--suite-line);flex-wrap:wrap}.suite-input,.suite-select{border:1px solid var(--suite-line);border-radius:6px;padding:8px 10px;font:12px Inter;background:#fff;color:var(--suite-text)}.suite-input{min-width:220px}.filter-row .suite-input{flex:1;max-width:320px}.status{display:inline-flex;align-items:center;gap:5px;font:700 10px 'Barlow Semi Condensed';text-transform:uppercase}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--suite-green)}.status.pending:before{background:var(--suite-amber)}.status.closed:before{background:var(--suite-muted)}
.empty-module{text-align:center;padding:55px 20px;color:var(--suite-muted)}.empty-module strong{display:block;color:var(--suite-text);font:600 17px 'Barlow Semi Condensed';margin-bottom:5px}
.attendance-workflow{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}.workflow-user{margin-left:auto;color:var(--suite-muted);font-size:10.5px}.shift-fields{display:flex;align-items:flex-end;gap:12px;padding:15px}.shift-fields label{display:flex;flex-direction:column;gap:5px;color:var(--suite-muted);font-size:10px;font-weight:600;text-transform:uppercase}.shift-fields button{margin-left:auto}.workflow-sources{display:grid;grid-template-columns:1fr 1fr;gap:14px}.source-panel{padding:18px 18px 16px;position:relative}.source-step{position:absolute;right:16px;top:14px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#e8eef7;color:var(--suite-navy2);font:700 12px 'IBM Plex Mono'}.source-panel h3{font:700 16px 'Barlow Semi Condensed';text-transform:uppercase;margin:0 42px 5px 0}.source-panel p{font-size:11px;line-height:1.5;color:var(--suite-muted);max-width:520px;margin:0 0 13px}.source-panel textarea{display:block;width:100%;height:112px;resize:vertical;border:1px solid var(--suite-line);border-radius:6px;padding:9px;font:11px/1.45 'IBM Plex Mono';margin-bottom:10px}.source-loaded{margin-top:11px;padding-top:10px;border-top:1px solid var(--suite-line);color:var(--suite-green);font-size:11px}.workflow-empty{border:1px dashed #bdc7d4;background:#f8fafc;color:var(--suite-muted);padding:26px;text-align:center;font-size:12px}.result-counts{margin-left:auto;display:flex;gap:16px;font-size:10.5px;color:var(--suite-green)}.result-counts .warn{color:var(--suite-red)}.reason-input{min-width:260px;width:100%}.result-client-only{background:#fff8f7}.result-clock-only{background:#fffaf1}.result-footer{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;border-top:1px solid var(--suite-line);color:var(--suite-muted);font-size:10.5px}.attendance-history{margin-top:14px}
.suite-modal-backdrop{position:fixed;inset:0;background:rgba(5,20,43,.52);z-index:100;display:grid;place-items:center;padding:20px}.suite-modal{width:min(560px,100%);background:white;border-radius:8px;box-shadow:0 18px 55px rgba(5,20,43,.3)}.suite-modal-head{padding:16px 18px;border-bottom:1px solid var(--suite-line);display:flex;align-items:center}.suite-modal-head h3{margin:0;font:700 18px 'Barlow Semi Condensed';text-transform:uppercase}.suite-modal-head button{margin-left:auto}.suite-form{padding:18px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.suite-field{display:flex;flex-direction:column;gap:5px}.suite-field.full{grid-column:1/-1}
/* The task dialog swaps its fields when the kind changes, so they live in a
   container. `display:contents` keeps them as direct participants in the form's
   grid -- without it the whole set collapses into one grid cell and the
   two-column layout is lost the moment the kind is picked. */
.task-kind-fields{display:contents}
.task-kind-note{grid-column:1/-1;margin:-4px 0 2px;font-size:11.5px;color:var(--suite-muted);line-height:1.5}
.task-kind-note:empty{display:none}
.field-preview.full{grid-column:1/-1}.suite-field label{font-size:10.5px;font-weight:600;color:var(--suite-muted);text-transform:uppercase}.suite-field input,.suite-field select,.suite-field textarea{width:100%;border:1px solid var(--suite-line);border-radius:6px;padding:9px;font:12px Inter}.suite-modal-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;padding-top:4px}
@media(max-width:1050px){.suite-layout{grid-template-columns:78px minmax(0,1fr)}.suite-brand strong,.suite-brand small,.suite-nav-btn span,.suite-nav-footer{display:none}.suite-brand{padding-inline:5px;justify-content:center}.suite-nav-btn{justify-content:center}.suite-nav-btn.active:before{left:-14px}.suite-grid{grid-template-columns:1fr}.metric-strip{grid-template-columns:repeat(2,1fr)}.metric:nth-child(2){border-right:0}.metric:nth-child(-n+2){border-bottom:1px solid var(--suite-line)}}
@media(max-width:680px){.suite-layout{display:block}.suite-nav{position:fixed;left:0;right:0;bottom:0;top:auto;height:63px;display:block;padding:7px 4px;z-index:50}.suite-brand,.suite-nav-footer{display:none}.suite-nav-list{margin:0;display:grid;grid-template-columns:repeat(6,1fr);gap:0}.suite-nav-btn{padding:8px 2px;display:flex;justify-content:center}.suite-nav-btn span{display:none}.suite-nav-btn.active:before{left:25%;right:25%;top:auto;bottom:-7px;width:auto;height:3px}.suite-top{height:auto;min-height:64px;padding:10px 14px}.suite-location,.suite-user>span,.suite-add-label{display:none}.suite-add{width:38px;padding:0;justify-content:center;gap:0}.suite-content{padding:14px 12px 82px;min-width:0;overflow:hidden}.metric-strip{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.metric{padding:13px 11px;grid-template-columns:34px minmax(0,1fr)}.metric-icon{width:34px;height:34px}.metric-value{font-size:22px}.metric-note{font-size:9.5px}.suite-form{grid-template-columns:1fr}.suite-field.full,.suite-modal-actions{grid-column:1}.module-hero{align-items:flex-start;flex-direction:column}.suite-table{min-width:720px}.workflow-sources{grid-template-columns:1fr}.shift-fields{align-items:stretch;flex-direction:column}.shift-fields button{margin-left:0}.result-counts{display:none}.result-footer{align-items:flex-start;gap:10px;flex-direction:column}}

/* ---- reconciliation mounted inside the shell ----
   #recon-main is hidden by the rule above while parked as a direct child of
   <body>; once moved into #recon-mount it is no longer a direct child, so it
   shows. Drop its standalone page chrome -- .suite-content already pads. */
#recon-mount>main{max-width:none;margin:0;padding:0}

/* ---- roster + profile ---- */
.suite-market{max-width:220px}
.name.link{cursor:pointer;color:var(--suite-blue)}
.name.link:hover{text-decoration:underline}
.dup-flag{color:var(--suite-red)}
.warn-text{color:var(--suite-amber)}
.score.none{background:#eef1f5;color:var(--suite-muted);font-weight:500}
.standing{font-size:11px;font-weight:600;white-space:nowrap}
.standing.ok{color:var(--suite-green)}
.standing.warn{color:var(--suite-amber)}
.standing.bad{color:var(--suite-red)}
.recon-chip{display:inline-block;font-size:10.5px;font-weight:600;letter-spacing:.2px;padding:3px 8px;border-radius:20px;background:#eef1f5;color:var(--suite-muted);white-space:nowrap}
.recon-chip.ok{background:#e4f4ec;color:var(--suite-green)}
.recon-chip.warn{background:#fbeed6;color:#a2670f;cursor:help}
.row-cap{padding:10px 4px 2px;font-size:11.5px;color:var(--suite-muted)}
.warn-banner{background:#fbeed6;border:1px solid #f0d9ae;color:#8a5a10;border-radius:8px;padding:10px 14px;font-size:12.5px;margin-bottom:14px}
.warn-banner b{font-weight:700}

.profile-head{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--suite-line);border-radius:10px;padding:18px 20px;margin-bottom:16px}
.profile-avatar{width:52px;height:52px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--suite-navy);color:#fff;font:700 18px 'Barlow Semi Condensed'}
.profile-id{margin-right:auto;min-width:0}
.profile-id h2{margin:0;font:700 21px 'Barlow Semi Condensed';letter-spacing:.3px}
.profile-id p{margin:2px 0 0;font-size:12px;color:var(--suite-muted)}
.profile-id p.sub{font-style:italic}
.profile-chips{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.perf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}
.perf-stat{border:1px solid var(--suite-line);border-radius:8px;padding:11px 13px}
.perf-stat span{display:block;font-size:10.5px;letter-spacing:.4px;text-transform:uppercase;color:var(--suite-muted)}
.perf-stat b{font:600 20px Inter;color:var(--suite-text)}
.perf-note{margin:12px 0 0;font-size:12.5px;color:var(--suite-muted)}

.detail-list{display:grid;grid-template-columns:auto 1fr;gap:7px 16px;margin:0;font-size:12.5px}
.detail-list dt{color:var(--suite-muted);font-weight:600;white-space:nowrap}
.detail-list dd{margin:0;color:var(--suite-text)}
.activity-row[data-profile]{cursor:pointer}
.alert-row[data-nav]{cursor:pointer}
.cov-sources{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.cov-sources .source-panel{padding:18px}.cov-file{display:flex;flex-direction:column;gap:2px;border:1px solid var(--suite-line);border-radius:6px;background:#f8fafc;padding:9px 11px;margin-bottom:11px}.cov-file strong{font:600 12px 'IBM Plex Mono';word-break:break-all}.cov-file span{font-size:10.5px;color:var(--suite-muted)}.cov-pick{display:inline-flex;align-items:center;cursor:pointer}.cov-pick input{display:none}
.cov-controls{gap:14px}.cov-ctl{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:600;color:var(--suite-muted);text-transform:uppercase}.cov-ctl .suite-input{min-width:0;text-transform:none}.cov-num{width:66px}.cov-asof-note{margin-left:auto;font:11px 'IBM Plex Mono';color:var(--suite-muted)}
.cov-warn ul{margin:6px 0 0;padding-left:18px}.cov-warn li{margin-top:3px}
.cov-status{font:700 10px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;border:1px solid var(--suite-line);border-radius:4px;padding:3px 7px;display:inline-block;color:var(--suite-muted)}.cov-status.ok{color:var(--suite-green);border-color:#bfe3ce;background:#f2fbf6}.cov-status.warn{color:var(--suite-amber);border-color:#f2dcb4;background:#fffaf1}.cov-status.bad{color:var(--suite-red);border-color:#f0c6c6;background:#fff6f6}
.cov-row.bad td{background:#fffafa}.cov-row.warn td{background:#fffcf6}.cov-row .link{cursor:pointer;color:var(--suite-blue)}.cov-row .link:hover{text-decoration:underline}
.cov-dot{display:inline-flex;align-items:center;gap:5px;font:700 10.5px 'Barlow Semi Condensed';text-transform:uppercase}.cov-dot:before{content:"";width:7px;height:7px;border-radius:50%}.cov-dot.on{color:var(--suite-green)}.cov-dot.on:before{background:var(--suite-green)}.cov-dot.off{color:var(--suite-muted)}.cov-dot.off:before{background:#c2cbd6}
.cov-flag{font:600 9.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;color:var(--suite-muted);border:1px solid var(--suite-line);border-radius:3px;padding:1px 5px;margin-left:5px}.cov-flag.bad{color:var(--suite-red);border-color:#f0c6c6}
.cov-code{font:700 10.5px 'Barlow Semi Condensed';text-transform:uppercase;color:var(--suite-blue)}
@media(max-width:1050px){.cov-sources{grid-template-columns:1fr}.cov-asof-note{margin-left:0;width:100%}}

/* ---- coverage: documentation + saved schedule ---- */
.cov-saved{font:600 11px Inter;color:var(--suite-green);margin-bottom:12px}.cov-saved.saving{color:var(--suite-muted)}.cov-saved.held{color:var(--suite-amber)}
.cov-doc{display:flex;flex-direction:column;gap:5px;min-width:190px}
.cov-doc .suite-select,.cov-doc .suite-input{font-size:11.5px;padding:5px 7px}
.cov-occ{align-self:flex-start;font:600 10px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;color:var(--suite-amber)}
.cov-excused{font:600 10px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;color:var(--suite-green)}
.sched-week{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:7px;margin-bottom:13px}
.sched-day{border:1px solid var(--suite-line);border-radius:7px;padding:8px 9px;text-align:center}
.sched-day.today{border-color:var(--suite-orange);background:#fff6f1}
.sched-day span{display:block;font:600 10px 'IBM Plex Mono';color:var(--suite-muted)}
.sched-day b{display:block;font:600 11px Inter;margin-top:3px;line-height:1.3}
.sched-checks{display:flex;flex-wrap:wrap;gap:7px}
.sched-check{border:1px solid var(--suite-line);border-radius:7px;padding:7px 10px;min-width:96px}
.sched-check span{display:block;font:600 10px 'IBM Plex Mono';color:var(--suite-muted)}
.sched-check b{display:block;font:600 11px Inter;margin-top:2px}
.sched-check.on{border-color:#bfe3ce;background:#f2fbf6}.sched-check.on b{color:var(--suite-green)}
.sched-check.bad{border-color:#f0c6c6;background:#fff6f6}.sched-check.bad b{color:var(--suite-red)}
.sched-check.warn{border-color:#f2dcb4;background:#fffaf1}.sched-check.warn b{color:var(--suite-amber)}
.sched-doc{margin-top:12px;border-left:3px solid var(--suite-orange);background:#fff6f1;padding:9px 12px;border-radius:0 6px 6px 0;font-size:12.5px}
.export-trio{display:flex;gap:14px;align-items:center}
.export-trio span{display:flex;flex-direction:column;font:600 9.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;color:var(--suite-muted)}
.export-trio b{font:700 17px Inter;color:var(--suite-text);line-height:1.1}
.export-trio span.short b{color:var(--suite-red)}
.export-hint{margin:0 0 12px;font-size:11.5px;color:var(--suite-muted)}
.export-preview th{white-space:nowrap}
.export-preview td{font-size:12px}

/* ---- the two reports do not pair up ---- */
.cov-mismatch{background:#fff6f6;border:1px solid #f0c6c6;border-left:4px solid var(--suite-red);border-radius:8px;padding:16px 18px;margin-bottom:16px}
.cov-mismatch strong{display:block;font:700 15px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;color:var(--suite-red);margin-bottom:6px}
.cov-mismatch p{margin:0 0 10px;font-size:12.5px;color:var(--suite-text)}
.cov-mismatch p:last-child{margin-bottom:0;color:var(--suite-muted)}
.site-rows{display:flex;flex-direction:column;gap:6px;margin:0 0 12px}
.site-rows>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.site-rows span:first-child{font:600 10px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;color:var(--suite-muted);min-width:112px}
.site-tag{font:600 11px 'IBM Plex Mono';background:#fff;border:1px solid var(--suite-line);border-radius:4px;padding:2px 7px;margin-right:4px}

/* ---- shift tags ---- */
.shift-chip{display:inline-block;font:700 10.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;padding:3px 9px;border-radius:20px;background:#e8eefb;color:var(--suite-blue);cursor:pointer;white-space:nowrap}
.shift-chip:hover{background:#d8e3f7}
.shift-chip.none{background:#eef1f5;color:var(--suite-muted);font-weight:600}
.shift-tag-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 0 13px;margin-bottom:13px;border-bottom:1px solid var(--suite-line)}
.shift-tag-row>span:first-child{font:600 10px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;color:var(--suite-muted)}
.shift-tag-row b{font:600 12px Inter}
.shift-tag-row em{font-style:normal;font-size:11px;color:var(--suite-muted)}
.shift-import .perf-note{margin-top:0}
.import-report{margin-top:12px;background:#f2fbf6;border:1px solid #bfe3ce;border-left:3px solid var(--suite-green);border-radius:0 6px 6px 0;padding:10px 13px;font-size:12.5px}
.import-report.bad{background:#fff6f6;border-color:#f0c6c6;border-left-color:var(--suite-red)}
.import-report strong{display:block;margin-bottom:4px}
.import-report ul{margin:6px 0 0;padding-left:18px;color:var(--suite-muted)}
.import-report li{margin-top:3px}

/* ---- one attendance state per day ---- */
.att-state{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;border:1px solid var(--suite-line);border-left:3px solid #c2cbd6;border-radius:0 7px 7px 0;padding:10px 13px}
.att-state b{font:600 14px Inter}
.att-state span{font-size:11.5px;color:var(--suite-muted)}
.att-state.on{border-left-color:var(--suite-green);background:#f2fbf6}.att-state.on b{color:var(--suite-green)}
.att-state.bad{border-left-color:var(--suite-red);background:#fff6f6}.att-state.bad b{color:var(--suite-red)}
.att-state.warn{border-left-color:var(--suite-amber);background:#fffaf1}.att-state.warn b{color:var(--suite-amber)}
.att-timeline{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.att-timeline span{font:600 10px 'IBM Plex Mono';border:1px solid var(--suite-line);border-radius:4px;padding:2px 6px;cursor:help;color:var(--suite-muted)}
.att-timeline span.on{color:var(--suite-green);border-color:#bfe3ce;background:#f2fbf6}
.att-timeline span.off{color:var(--suite-red);border-color:#f0c6c6;background:#fff6f6}

/* ---- reviewing a stored check ---- */
.cov-review-bar{background:#f6f8fb;border:1px solid var(--suite-line);border-radius:8px;padding:10px 12px;margin-bottom:14px}
.review-banner{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;background:#eef3fb;border:1px solid #cfdcf0;border-left:3px solid var(--suite-blue);border-radius:0 8px 8px 0;padding:11px 14px;margin-bottom:14px}
.review-banner strong{font:700 13px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px;color:var(--suite-blue)}
.review-banner span{font-size:11.5px;color:var(--suite-muted)}

/* ---- time-off status pipeline + connect ---- */
.status-select{font:600 11.5px Inter;padding:5px 24px 5px 8px;min-width:150px}
.status-select.pending{color:var(--suite-amber);border-color:#f2dcb4}
.status-select.closed{color:var(--suite-muted)}
.status-select.unknown{color:var(--suite-red);border-color:#f0c6c6}
.connect-body{padding:4px 0 0}
.connect-body .perf-note{margin:0 0 10px}
#connect-results{margin-top:10px;max-height:320px;overflow:auto;display:flex;flex-direction:column;gap:4px}
.connect-hit{display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:1px solid var(--suite-line);background:#fff;border-radius:7px;padding:8px 11px;cursor:pointer;font:inherit}
.connect-hit:hover{border-color:var(--suite-blue);background:#f6f9fe}
.connect-hit .initial{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--suite-navy);color:#fff;font:700 11px 'Barlow Semi Condensed'}
.connect-hit>div:nth-child(2){flex:1;min-width:0}
.connect-hit span:last-child{color:var(--suite-muted)}
.connect-hint{padding:14px 4px;font-size:12.5px;color:var(--suite-muted)}

/* ---- the sign-in gate ----
   The whole shell, replaced. Not an overlay: an overlay leaves the page it is
   covering in the DOM, where a stopped render or a stylesheet that failed to
   load hands somebody the roster anyway. */
.gate{min-height:100vh;display:grid;place-items:center;background:var(--suite-bg,#eef1f5);padding:24px}
.gate-card{width:100%;max-width:460px;background:#fff;border:1px solid var(--suite-line);border-radius:10px;padding:28px 30px;box-shadow:0 10px 40px rgba(11,37,69,.08)}
.gate-brand{display:flex;align-items:center;gap:11px;margin-bottom:22px}
.gate-brand strong{display:block;font:700 15px 'Barlow Semi Condensed';letter-spacing:.4px}
.gate-brand small{display:block;font-size:9.5px;letter-spacing:.9px;color:var(--suite-muted)}
.gate-card h1{font:700 24px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.5px;margin:0 0 8px}
.gate-card>p{margin:0 0 20px;font-size:13px;color:var(--suite-muted);line-height:1.55}
.gate-form{max-width:none}
.gate-note{margin:18px 0 0;font-size:11.5px;color:var(--suite-muted);line-height:1.5}
.gate .warn-banner{margin-top:16px}
/* The reconciliation tool lives in the page's own markup, so the gate has to
   hide it explicitly -- innerHTML on the suite root never touches it. */
body.suite-gated>header,body.suite-gated>main,body.suite-gated>.foot{display:none}

/* ---- read-only ---- */
/* The reconciliation table is rendered by index.html's own script, which does
   not know about roles. Its two editable things are hidden here, and refused in
   the handlers as well -- CSS is presentation, never permission. */
body.suite-readonly .edit-status{display:none}
body.suite-readonly .note-input{pointer-events:none;background:#f7f8fa;color:var(--suite-muted)}
.read-only-banner{margin-bottom:14px}
.suite-user>span{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.suite-user>span b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.suite-user>span small{font-size:9.5px;color:var(--suite-muted);text-transform:uppercase;letter-spacing:.5px}
.suite-user .suite-btn.tiny{margin-left:2px}

/* ---- tasks ---- */
/* Five controls and a search box. The search takes the slack so the selects keep
   their labels readable, and each one is allowed to shrink rather than pushing
   the row into a second line at every width. */
.task-filters #suite-search{flex:1 1 220px;min-width:180px}
.task-filters .suite-select{flex:0 1 auto;min-width:0;max-width:200px}

/* ---- payroll ---- */
.payroll-tabs{gap:8px;margin-bottom:14px}
/* Free text in a table whose cells are nowrap by default.

   Two things had to be true for this to work, and neither was:

   1. SPECIFICITY. `.suite-table td` is (0,1,1) and `.detail-cell` was (0,1,0),
      so `white-space:nowrap` won no matter which came last in the file and the
      details ran straight on, sliding under the status and action columns.
      Qualifying the class with the element it sits on settles it.
   2. A REAL WRAP BOX. `width`/`max-width` on a `td` is only a hint under
      `table-layout:auto` -- the column still grows to max-content. A block
      element INSIDE the cell with a max-width is what actually caps the
      column's contribution, so the text wraps instead of widening the table.

   overflow-wrap catches a long unbroken run, e.g. a pasted reference. */
.suite-table td.detail-cell{width:320px;min-width:200px;max-width:320px;font-size:12px;line-height:1.45;white-space:normal;overflow-wrap:anywhere}
.suite-table td.detail-cell > *{white-space:normal;overflow-wrap:anywhere;max-width:320px}
.detail-text{display:block;max-width:320px;white-space:normal;overflow-wrap:anywhere}
/* Clamped to a few lines so one essay of a detail cannot make a row taller than
   the screen. The full text stays reachable on hover via the title attribute. */
.detail-text.clamp{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.delta-up{color:var(--suite-green);font-weight:600}
.delta-down{color:var(--suite-red);font-weight:600}

/* ---- live workbook refresh ---- */
.plx-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.plx-info{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}
.plx-info strong{font:700 13px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.4px}
.plx-info span{font-size:11.5px;color:var(--suite-muted)}
.plx-info .plx-note{color:var(--suite-blue);font-weight:600}
.plx-bar .suite-btn[disabled]{opacity:.6;cursor:default}

/* ---- sortable columns ---- */
.suite-table th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.suite-table th.sortable:hover{color:var(--suite-blue)}
.suite-table th.sorted{color:var(--suite-blue)}
.sort-arrow{display:inline-block;width:10px;margin-left:3px;font-size:8px;vertical-align:middle}

/* ---- settings / sign-in ---- */
.signin-form{display:flex;flex-direction:column;gap:12px;max-width:380px}
.signin-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.settings-note{font-size:12px;color:var(--suite-muted)}

/* ---- links into RC ---- */
.rc-link{font:600 10.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;color:var(--suite-blue);text-decoration:none;border:1px solid #cfdcf0;background:#f2f6fd;border-radius:20px;padding:3px 9px;white-space:nowrap}
.rc-link:hover{background:#e4edfb;text-decoration:none}

/* ---- on-premise rows with no profile ---- */
.cov-unlinked p{margin:6px 0 10px;font-size:12.5px;color:#8a5a10}
.unlinked-list{display:flex;flex-direction:column;gap:5px}
.unlinked-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid #f0d9ae;background:#fff;border-radius:7px;padding:7px 11px;cursor:pointer;font:inherit}
.unlinked-row:hover{border-color:var(--suite-amber);background:#fffaf1}
.unlinked-row .name{font:600 12.5px Inter;flex:1;min-width:0}
.unlinked-row .sub{font:600 11px 'IBM Plex Mono';color:var(--suite-muted)}
.unlinked-row>span:last-child{font:600 11px Inter;color:var(--suite-amber)}
.suite-btn.tiny{font-size:10.5px;padding:2px 7px}
a.suite-btn{display:inline-flex;align-items:center;gap:6px;text-decoration:none;white-space:nowrap}
.ext-mark{font-size:11px;opacity:.8}
.sched-source{font-size:11.5px;color:var(--suite-muted);margin:-4px 0 12px}

/* ---- tasks ---- */
.suite-add{height:38px;padding:0 16px 0 13px;border-radius:19px;border:1px solid var(--suite-navy);background:var(--suite-navy);color:#fff;font:700 13px/1 Inter;letter-spacing:.2px;cursor:pointer;position:relative;display:inline-flex;align-items:center;gap:7px;flex:none;box-shadow:0 1px 3px rgba(7,31,67,.28)}
.suite-add:hover{background:var(--suite-navy2);border-color:var(--suite-navy2);box-shadow:0 2px 7px rgba(7,31,67,.38)}
.suite-add-plus{font:700 19px/1 'Barlow Semi Condensed'}
/* The count is what is URGENT, not what is open -- a badge that always shows a
   number stops being read. */
.suite-add-count{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--suite-red);color:#fff;font:700 10px/17px 'IBM Plex Mono';box-sizing:border-box}
.task-age{display:inline-block;font:600 10.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;padding:3px 8px;border-radius:20px;background:#eef1f5;color:var(--suite-muted);white-space:nowrap}
.task-age.warn{background:#fff3e0;color:var(--suite-orange)}
.task-age.bad{background:#fdecea;color:var(--suite-red)}
.task-kind{display:inline-block;font:600 10.5px 'Barlow Semi Condensed';text-transform:uppercase;letter-spacing:.3px;padding:3px 9px;border-radius:20px;background:#e8eefb;color:var(--suite-blue);white-space:nowrap}
/* A point value that policy has cleared: shown, struck, and replaced by zero. */
.pts-void{text-decoration:line-through;color:var(--suite-muted)}
.cov-status.ok{background:#e3f2e9;color:var(--suite-green)}
/* ---- phone numbers ---- */
.phone-cell{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.phone-num{font:600 12px 'IBM Plex Mono';color:var(--suite-blue);text-decoration:none;white-space:nowrap}
.phone-num:hover{text-decoration:underline}
.phone-cell .sub{flex-basis:100%}
.req-import .req-src{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}.req-import .req-src li{font-size:11.5px;color:var(--suite-muted);border:1px solid var(--suite-line);border-radius:6px;background:#f8fafc;padding:7px 10px}.req-import .req-src b{color:var(--suite-text);font-family:'IBM Plex Mono',monospace;font-size:11px;word-break:break-all}
.req-table .req-row{cursor:pointer}.req-table .req-row:hover td{background:#f6f9fd}.req-table .req-row.open td{background:#f2f6fb;border-bottom-color:transparent}.req-caret{width:26px;color:var(--suite-muted);font-size:11px}
.req-detail td{background:#f8fafc;padding:0}.req-cands{padding:12px 14px 14px}.req-cands-head{font-size:11px;color:var(--suite-muted);margin-bottom:9px;font-weight:600}.req-cands .req-note{font-weight:400;font-style:italic}.req-cands table{background:#fff;border:1px solid var(--suite-line)}.req-cands th{background:#f2f5f9}.req-none{padding:14px;color:var(--suite-muted);font-size:11.5px;font-style:italic}
.suite-table td.mono,.req-cands .mono{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--suite-muted)}
.req-stages{display:flex;flex-wrap:wrap;gap:18px;background:#fff;border:1px solid var(--suite-line);border-top:0;padding:10px 20px;margin-bottom:14px;font-size:11px;color:var(--suite-muted)}.req-stages b{font:700 13px 'IBM Plex Mono';color:var(--suite-text);margin-right:4px}
.req-lessons{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px}.req-lessons span{border:1px solid var(--suite-line);border-radius:4px;background:#fff;padding:2px 7px;font-size:10.5px;color:var(--suite-muted)}.req-lessons b{font-family:'IBM Plex Mono',monospace;color:var(--suite-text);margin-right:4px}
.import-report p{margin:6px 0 0;font-size:11.5px;line-height:1.5}
.ok-text{color:var(--suite-green)}
.site-code{font-family:'IBM Plex Mono',monospace;font-size:13px;letter-spacing:.2px}.site-name{font-family:Inter,sans-serif;font-weight:600;font-size:11.5px;color:var(--suite-muted);margin-left:5px}
.overview-req-note{padding:10px 14px;border-bottom:1px solid var(--suite-line);font-size:11.5px;color:var(--suite-muted)}.overview-req-note b{color:var(--suite-text);font-family:'IBM Plex Mono',monospace}

/* ========================================================================== */
/* 2026 calm operations system — approved Action Rail + Operations Timeline   */
/* ========================================================================== */
:root{
  --suite-navy:#081f3f;
  --suite-navy2:#12365f;
  --suite-orange:#f47a2a;
  --suite-blue:#235b9d;
  --suite-bg:#f5f6f8;
  --suite-surface:#fff;
  --suite-soft:#f8f9fb;
  --suite-line:#dfe4ea;
  --suite-line-strong:#cbd3dd;
  --suite-text:#14243a;
  --suite-muted:#657387;
  --suite-green:#087845;
  --suite-red:#b4232c;
  --suite-amber:#9a5700;
  --suite-focus:#1976d2;
  --suite-radius:9px;
  --suite-rail:208px;
}
*,*:before,*:after{box-sizing:border-box}
html{background:var(--suite-bg)}
body.suite-active{margin:0;background:var(--suite-bg)}
#suite-root{font-size:13.5px;line-height:1.45;letter-spacing:-.005em}
.suite-layout{grid-template-columns:var(--suite-rail) minmax(0,1fr)}
.suite-main{min-height:100vh}

/* Rail */
.suite-nav{
  height:100dvh;padding:18px 12px 16px;background:var(--suite-navy);
  overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#49617f transparent
}
.suite-brand{display:grid;gap:1px;padding:0 9px 18px;border-bottom:1px solid rgba(255,255,255,.11)}
.suite-logo{display:block;width:128px;height:auto;border:0;border-radius:0;background:transparent;filter:brightness(0) invert(1)}
.suite-brand small{display:block;margin:0 0 0 36px;color:#aab9cd;font-size:9px;line-height:1;letter-spacing:.78px}
.suite-nav-list{display:block;margin-top:13px}
.suite-nav-group+.suite-nav-group{margin-top:16px}
.suite-nav-group-label{padding:0 11px 6px;color:#8da2bd;font:600 10px/1.2 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.suite-nav-btn{
  min-height:40px;margin:2px 0;padding:9px 10px;border-radius:6px;color:#cbd6e4;text-decoration:none;
  font-size:12.5px;line-height:1.22;gap:10px
}
.suite-nav-btn:hover{background:rgba(255,255,255,.065);color:#fff;text-decoration:none}
.suite-nav-btn.active{background:rgba(255,255,255,.105);color:#fff}
.suite-nav-btn.active:before{left:-12px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0}
.suite-nav-btn svg{width:17px;height:17px;stroke-width:1.8}
.suite-nav-label{display:block;min-width:0;line-height:1.22;white-space:normal}
.suite-nav-count{min-width:18px;height:18px;margin-left:auto;padding:0 5px;border-radius:9px;background:var(--suite-orange);color:var(--suite-navy);font:700 10px/18px 'IBM Plex Mono',monospace;text-align:center}
.suite-nav-footer{display:flex;flex-direction:column;gap:2px;margin-top:auto;padding:13px 10px 0;border-top-color:rgba(255,255,255,.11);color:#8fa3be;font-size:10px;line-height:1.35}
.suite-nav-footer b{color:#d5deea;font-size:10px;font-weight:600}
.source-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#38ad72;box-shadow:0 0 0 3px rgba(56,173,114,.12)}
.suite-nav-footer .source-dot{position:absolute;margin:4px 0 0 -1px}.suite-nav-footer b,.suite-nav-footer span:last-child{padding-left:14px}
.suite-nav-close,.suite-nav-backdrop,.suite-mobile-menu{display:none}

/* Header */
.suite-top{
  height:78px;padding:0 26px;gap:14px;border-bottom-color:var(--suite-line);box-shadow:none;
  background:rgba(255,255,255,.97);backdrop-filter:blur(8px)
}
.suite-heading{min-width:260px}
.suite-heading-row{display:flex;align-items:baseline;gap:22px}
.suite-heading h1{font-size:22px;line-height:1.05;letter-spacing:.025em}
.suite-heading h1:focus{outline:none}
.suite-heading p{margin-top:3px;font-size:11px;line-height:1.2}
.suite-date{padding:0;border:0;color:var(--suite-text);font-size:11.5px;font-weight:500;white-space:nowrap}
.suite-scope{display:flex;align-items:center;gap:7px;color:var(--suite-muted);font-size:10px;font-weight:600;text-transform:uppercase;white-space:nowrap}
.suite-scope .suite-market{width:176px;max-width:176px;text-transform:none}
.suite-refresh{position:relative;width:30px;height:34px;border:0;border-radius:50%;background:transparent;color:var(--suite-muted);display:grid;place-items:center;cursor:pointer}
.suite-refresh:hover{background:var(--suite-soft);color:var(--suite-text)}
.suite-refresh svg{width:15px;height:15px;stroke-width:1.8}
.suite-refresh .source-dot{position:absolute;right:-1px;bottom:1px;width:6px;height:6px;box-shadow:0 0 0 2px #fff}
.suite-refresh[aria-busy=true] svg{animation:suite-spin .9s linear infinite}
.suite-refresh-label{margin-left:-9px;padding-right:13px;border-right:1px solid var(--suite-line);color:var(--suite-muted);font-size:11px;white-space:nowrap}
@keyframes suite-spin{to{transform:rotate(360deg)}}
.suite-add{height:38px;padding:0 15px 0 13px;border:0;border-radius:5px;background:var(--suite-navy);color:#fff;box-shadow:none;font-size:12px}
.suite-add:hover{background:var(--suite-navy2);border-color:transparent;color:#fff;box-shadow:none}
.suite-add-plus{font-size:17px}
.suite-add-count{top:-7px;right:-7px;background:var(--suite-red);color:#fff}
.suite-user{position:relative;display:block;padding:0;border:0;background:transparent}
.suite-user-trigger{min-height:40px;padding:3px 6px 3px 3px;border:0;border-radius:20px;background:transparent;color:var(--suite-text);display:flex;align-items:center;gap:9px;cursor:pointer;text-align:left}
.suite-user-trigger:hover{background:var(--suite-soft)}
.suite-user-copy{display:flex;flex-direction:column;line-height:1.18}
.suite-user-trigger b{max-width:135px;overflow:hidden;text-overflow:ellipsis;font-size:11px;white-space:nowrap}
.suite-user-trigger small{color:var(--suite-muted);font-size:9.5px;letter-spacing:.02em}
.suite-avatar{width:32px;height:32px;background:var(--suite-orange);color:#fff;font-size:11px}
.suite-account-menu{position:absolute;right:0;top:45px;z-index:60;width:205px;padding:7px;border:1px solid var(--suite-line);border-radius:9px;background:#fff;box-shadow:0 16px 40px rgba(8,31,63,.16)}
.suite-account-menu[hidden]{display:none}
.suite-account-menu>div{display:flex;flex-direction:column;padding:8px 9px 10px;border-bottom:1px solid var(--suite-line)}
.suite-account-menu>div b{font-size:12px}.suite-account-menu>div span{color:var(--suite-muted);font-size:10px}
.suite-account-menu a,.suite-account-menu button{display:block;width:100%;padding:9px;border:0;border-radius:5px;background:transparent;color:var(--suite-text);font:500 11.5px Inter,sans-serif;text-align:left;text-decoration:none;cursor:pointer}
.suite-account-menu a:hover,.suite-account-menu button:hover{background:var(--suite-soft)}

/* Main scale and shared surfaces */
.suite-content{width:100%;max-width:none;margin:0;padding:36px clamp(22px,2vw,38px) 52px}
.suite-panel{border:1px solid var(--suite-line);border-radius:var(--suite-radius);background:var(--suite-surface);overflow:hidden;box-shadow:none}
.suite-panel-head{min-height:56px;padding:12px 17px;border-bottom-color:var(--suite-line)}
.suite-panel-head h2{font-size:15px;line-height:1.15;letter-spacing:.035em}
.suite-panel-head>div h2{margin-top:2px}
.suite-panel-body{padding:15px}
.eyebrow{display:block;color:var(--suite-muted);font:600 9px/1.15 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase}
.panel-context{margin-left:auto;color:var(--suite-muted);font-size:10px}
.suite-link{margin-left:auto;padding:6px 0;border:0;background:transparent;color:var(--suite-blue);font:600 11px Inter,sans-serif;cursor:pointer}
.suite-link:hover{text-decoration:underline}
.suite-grid{grid-template-columns:minmax(0,1.45fr) minmax(300px,.8fr);gap:18px;align-items:start}
.suite-stack{min-width:0;gap:18px}
.module-hero{margin-bottom:15px;align-items:center}
.module-hero h2{font-size:21px;line-height:1.1;letter-spacing:.02em}
.module-hero p{font-size:11.5px}
.metric-strip{border-radius:var(--suite-radius);overflow:hidden}
.metric{padding:14px 15px;gap:10px}.metric-icon{width:36px;height:36px;font-size:13px}.metric-value{font-size:23px}.metric-label{font-size:10.5px}.metric-note{font-size:10px}
.suite-btn{min-height:34px;padding:7px 11px;border-color:var(--suite-line-strong);border-radius:6px;font-size:11.5px}
.suite-btn.primary{border-color:var(--suite-orange);background:var(--suite-orange);color:var(--suite-navy)}
.suite-btn.primary:hover{background:#e96f21}
.suite-input,.suite-select{min-height:34px;border-color:var(--suite-line-strong);border-radius:6px;padding:7px 9px;font-size:11.5px}
.filter-row{gap:9px;padding:11px 13px;background:#fbfcfd}
.suite-table-wrap{position:relative;max-width:100%;overflow:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}
.suite-table{font-size:12px}
.suite-table th{position:sticky;top:0;z-index:2;padding:8px 11px;background:#f7f8fa;font-size:10px}
.suite-table td{padding:9px 11px}
.empty-module{padding:35px 18px}.empty-module strong{font-size:15px}
.warn-banner{border-radius:7px;font-size:11.5px}
.data-health-notice{display:flex;align-items:center;gap:16px;margin-bottom:14px;padding:11px 13px;border:1px solid #e5c488;border-left:3px solid var(--suite-amber);border-radius:7px;background:#fff9ef;color:var(--suite-text)}
.data-health-notice.error{border-color:#e7b8bc;border-left-color:var(--suite-red);background:#fff6f7}
.data-health-notice>div{display:flex;flex:1;min-width:0;flex-direction:column;gap:1px}.data-health-notice b{font-size:11.5px}.data-health-notice span{color:var(--suite-muted);font-size:10.5px}
.suite-live{position:fixed;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* Approved Overview composition */
.overview-layout{display:flex;flex-direction:column;gap:26px}
.overview-top-grid{display:grid;grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr);gap:20px;align-items:start}
.overview-priorities,.overview-workforce{align-self:start;width:100%}
.priority-list{display:flex;flex-direction:column}
.overview-priority{width:100%;min-height:76px;padding:12px 17px;border:0;border-bottom:1px solid #edf0f3;background:#fff;color:var(--suite-text);display:grid;grid-template-columns:88px 46px minmax(0,1fr) 78px;gap:12px;align-items:center;text-align:left;cursor:pointer}
.overview-priority:last-child{border-bottom:0}.overview-priority:hover{background:#fafbfc}
.priority-mark{width:7px;height:7px;border-radius:50%;background:var(--suite-amber)}
.overview-priority.critical .priority-mark{background:var(--suite-red)}.overview-priority.clear .priority-mark{background:var(--suite-green)}
.priority-level{display:flex;align-items:center;gap:8px;color:var(--suite-amber);font-size:12.5px;font-weight:600}.critical .priority-level{color:var(--suite-red)}.clear .priority-level{color:var(--suite-green)}
.priority-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.priority-copy b{font-size:14px}.priority-copy small{color:var(--suite-muted);font-size:11.25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.overview-priority strong{font:700 30px/1 'Barlow Semi Condensed',sans-serif;color:var(--suite-text)}
.overview-priority.critical strong{color:var(--suite-red)}.overview-priority.warning strong{color:var(--suite-amber)}
.priority-action{min-height:34px;padding:7px 11px;border:1px solid var(--suite-line-strong);border-radius:5px;background:#fff;color:var(--suite-text);font-size:11px;font-weight:600;text-align:center}
.overview-priority:hover .priority-action{border-color:#9aa9bb}
.action-summary-item svg{width:15px;height:15px;stroke-width:1.8;color:#8793a3}
.overview-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;border:0;border-radius:0;background:#fff}
.overview-metrics .metric,.overview-metrics .snapshot-stat{display:block;min-height:114px;padding:20px 15px;border:0;border-right:1px solid #edf0f3;border-bottom:1px solid #edf0f3}
.overview-metrics>:nth-child(3n){border-right:0}.overview-metrics>:nth-last-child(-n+3){border-bottom:0}
.overview-metrics .metric-icon{display:none}.overview-metrics .metric-label{font-size:10.5px;letter-spacing:.055em}.overview-metrics .metric-value{margin-top:6px;font-size:30px}.overview-metrics .metric-note{margin-top:4px;font-size:10.75px;line-height:1.3}
.operations-timeline{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:18px 12px 21px;list-style:none}
.operations-timeline:before{content:"";position:absolute;left:9%;right:9%;top:44px;height:2px;background:#9cabc0}
.timeline-item{position:relative;min-width:0}
.timeline-event{position:relative;display:block;width:100%;min-height:126px;padding:44px 12px 10px;border:0;border-radius:7px;background:transparent;color:var(--suite-text);font:inherit;text-align:left;cursor:pointer}
.timeline-event:hover{background:#f8fafc}
.timeline-when{color:var(--suite-blue)!important;font:600 10.5px/1.3 'IBM Plex Mono',monospace!important;white-space:nowrap}
.timeline-dot{position:absolute;z-index:1;left:50%;top:21px;width:11px;height:11px;border:3px solid #fff;border-radius:50%;background:var(--suite-navy);box-shadow:0 0 0 2px #9cabc0;transform:translateX(-50%)}.timeline-dot.blue{background:var(--suite-blue)}.timeline-dot.orange{background:var(--suite-orange)}
.timeline-copy{display:flex;min-width:0;flex-direction:column;gap:3px}.timeline-copy b{font-size:11.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-copy>span:last-child{color:var(--suite-muted);font-size:10px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.action-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.action-summary-item{min-height:72px;padding:11px 17px;border:0;border-right:1px solid #edf0f3;background:#fff;color:var(--suite-text);display:grid;grid-template-columns:auto minmax(0,1fr) 16px;gap:11px;align-items:center;text-align:left;cursor:pointer}
.action-summary-item:last-child{border-right:0}.action-summary-item:hover{background:#fafbfc}
.action-summary-item strong{font:700 25px/1 'Barlow Semi Condensed',sans-serif}.action-summary-item span{font-size:11.5px;color:var(--suite-muted)}
.action-summary-item.critical strong{color:var(--suite-red)}.action-summary-item.warning strong{color:var(--suite-amber)}

/* Metric tiles used as filters keep the same block hierarchy as static tiles. */
.action-metrics .metric>span:last-child,.action-metrics .metric-label,.action-metrics .metric-value,.action-metrics .metric-note{display:block}

/* The brand remains blue on the light sign-in card. */
.gate-brand{display:grid;gap:2px;justify-items:start}
.gate-brand .suite-logo{width:132px;filter:none}
.gate-brand small{margin-left:40px}

/* Interaction and accessibility */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid color-mix(in srgb,var(--suite-focus) 72%,white);outline-offset:2px}
.cov-pick{position:relative}.cov-pick input{display:block;position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.cov-pick:focus-within{outline:3px solid color-mix(in srgb,var(--suite-focus) 72%,white);outline-offset:2px}
.suite-modal-backdrop{padding:20px;background:rgba(5,20,43,.58)}
.suite-modal{max-height:calc(100dvh - 40px);overflow:auto;border:1px solid var(--suite-line);border-radius:10px}
.suite-modal-head h3{font-size:16px}

/* Supporting context stays compact and secondary to the work itself. */
.source-disclosure{
  margin:0 0 14px;border:1px solid var(--suite-line);border-radius:8px;background:#fff;
  overflow:hidden;color:var(--suite-text)
}
.suite-panel+.source-disclosure{margin-top:14px}
/* The connected list is settled work and can run to hundreds of rows. It
   folds away so the page opens on what still needs doing -- and its body
   holds a full panel, so it drops the tinted inset the provenance folds use. */
.connected-fold>.source-disclosure-body{padding:0;background:none;border-top:0}
.connected-fold>.source-disclosure-body>.suite-panel{border-top-left-radius:0;border-top-right-radius:0}
.source-disclosure>summary{
  min-height:48px;padding:9px 13px;display:grid;grid-template-columns:7px minmax(0,1fr) auto;
  gap:10px;align-items:center;list-style:none;cursor:pointer;user-select:none
}
.source-disclosure>summary::-webkit-details-marker{display:none}
.source-disclosure>summary::marker{content:""}
.source-disclosure>summary:hover{background:#fbfcfd}
.source-disclosure>summary:focus-visible{outline:3px solid color-mix(in srgb,var(--suite-focus) 72%,white);outline-offset:-3px}
.source-disclosure>summary>.source-dot{width:7px;height:7px;box-shadow:0 0 0 3px rgba(56,173,114,.1)}
.source-disclosure>summary>span:nth-child(2){display:flex;min-width:0;flex-direction:column;gap:1px}
.source-disclosure>summary b{font-size:11.5px;line-height:1.35}
.source-disclosure>summary small{color:var(--suite-muted);font-size:10px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.source-toggle{padding:4px 7px;border:1px solid var(--suite-line);border-radius:5px;color:var(--suite-blue);font-size:9.5px;font-weight:600}
.source-disclosure[open] .source-toggle{border-color:#c9d8eb;background:#f2f6fb}
.source-disclosure-body{padding:14px;border-top:1px solid var(--suite-line);background:var(--suite-soft)}
.source-disclosure-body>:first-child{margin-top:0}.source-disclosure-body>:last-child{margin-bottom:0}
.source-readonly{margin:0;color:var(--suite-muted);font-size:10.5px;line-height:1.45}
/* workbookNote reuses the older plx-bar hook; keep the details element itself
   block-level while allowing its disclosure body to use the PLX content styles. */
.source-disclosure.plx-bar{display:block;align-items:initial;gap:0;flex-wrap:nowrap}

.policy-note{
  display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:baseline;
  margin:0 0 14px;padding:10px 13px;border:1px solid #e5c488;border-left:3px solid var(--suite-amber);
  border-radius:7px;background:#fff9ef;color:var(--suite-text)
}
.policy-note b{color:var(--suite-amber);font-size:11.5px;line-height:1.35}
.policy-note span{color:var(--suite-muted);font-size:10.5px;line-height:1.45}
.policy-note.ok{border-color:#b9ddc9;border-left-color:var(--suite-green);background:#f3faf6}
.policy-note.ok b{color:var(--suite-green)}

/* Native elements now used as rows, chips, headings and inline links. */
button.activity-row,button.alert-row,button.shift-chip,.suite-table th.sortable button,
button.inline-control,.req-toggle,.suite-toast button{-webkit-appearance:none}
button.activity-row,button.alert-row{
  appearance:none;width:100%;margin:0;border:0;border-bottom:1px solid #edf0f4;background:transparent;
  color:inherit;font:inherit;text-align:left
}
button.activity-row:last-child,button.alert-row:last-child{border-bottom:0}
button.activity-row:hover,button.alert-row:hover{background:var(--suite-soft)}
button.shift-chip{appearance:none;margin:0;border:0;line-height:1.35}
.suite-table th.sortable{cursor:default}
.suite-table th.sortable button{
  appearance:none;min-height:24px;margin:-3px 0;padding:3px 0;border:0;background:transparent;color:inherit;
  display:inline-flex;align-items:center;font:inherit;letter-spacing:inherit;text-align:left;text-transform:inherit;cursor:pointer
}
.suite-table th.sortable button:hover{color:var(--suite-blue)}
button.inline-control{
  appearance:none;display:inline-block;margin:0;padding:0;border:0;background:transparent;color:inherit;
  font:inherit;text-align:left;cursor:pointer
}
button.inline-control.link{color:var(--suite-blue)}
.req-toggle{
  appearance:none;width:28px;height:28px;margin:-4px;padding:0;border:0;border-radius:5px;background:transparent;
  color:var(--suite-muted);font:700 12px/28px Inter,sans-serif;cursor:pointer
}
.req-toggle:hover{background:#e8eef7;color:var(--suite-blue)}

.visually-hidden{
  position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;
  overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;
  border:0!important;white-space:nowrap!important
}
.header-help{display:block;max-width:120px;margin-top:2px;color:#8793a3;font:400 8.5px/1.25 Inter,sans-serif;letter-spacing:0;text-transform:none;white-space:normal}
.status.info:before{background:var(--suite-blue)}

/* Settings use the same measured form rhythm as the compact modal fields. */
.filter-row[aria-label="Settings sections"]{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}
.filter-row[aria-label="Settings sections"] .suite-btn{flex:0 0 auto}
.signin-mode{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding:4px;border:1px solid var(--suite-line);border-radius:7px;background:var(--suite-soft)}
.signin-mode .suite-btn{min-width:0;padding-inline:6px}
.settings-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;padding:4px 15px 16px}
.settings-form .suite-field{min-width:0;gap:5px}
.settings-form .suite-field>span:first-child{color:var(--suite-text);font-size:10.5px;font-weight:600;line-height:1.35}
.settings-form .suite-field>.sub{color:var(--suite-muted);font-size:9.75px;line-height:1.4}
.settings-form .suite-input{width:100%;min-width:0}
.settings-actions{
  grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:8px;
  margin-top:2px;padding-top:12px;border-top:1px solid var(--suite-line)
}
#app-config-status{order:-1;min-height:1em;margin-right:auto;color:var(--suite-muted);font-size:10.5px;line-height:1.35}
.user-market-select{display:block;width:100%;min-width:190px;max-width:250px;height:auto;padding:3px;font-size:10.5px;line-height:1.35}
.user-market-select option{padding:4px 6px;border-radius:3px}

/* Direct page sections need air even when a view is not using suite-stack. */
.suite-content>section.suite-panel+section.suite-panel,
.suite-content>[role=tabpanel]>section.suite-panel+section.suite-panel{margin-top:14px}
.return-context{display:flex;align-items:center;gap:10px;margin:0 0 14px;padding:8px 10px;border:1px solid #c9d8eb;border-radius:7px;background:#f4f7fb}
.return-context span{color:var(--suite-muted);font-size:10.5px;line-height:1.4}
.suite-panel>.perf-note{margin:0;padding:12px 15px;font-size:11px;line-height:1.5}
.suite-panel>.perf-note+.suite-table-wrap,.suite-panel>.perf-note+.filter-row{border-top:1px solid #edf0f3}

.suite-toast{
  position:fixed;right:20px;bottom:20px;bottom:max(20px,env(safe-area-inset-bottom));z-index:120;
  width:max-content;max-width:min(440px,calc(100vw - 24px));min-height:48px;padding:8px 9px 8px 13px;
  border:1px solid var(--suite-line-strong);border-left:3px solid var(--suite-navy);border-radius:8px;
  background:#fff;color:var(--suite-text);box-shadow:0 12px 34px rgba(8,31,63,.16);
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:9px;align-items:center
}
.suite-toast>span{font-size:11px;line-height:1.4}
.suite-toast button{appearance:none;margin:0;border:0;background:transparent;color:var(--suite-blue);font:600 10.5px Inter,sans-serif;cursor:pointer}
.suite-toast [data-undo-change]{min-height:30px;padding:5px 8px;border:1px solid #c9d8eb;border-radius:5px;background:#f2f6fb}
.suite-toast [data-undo-change]:hover{background:#e7eef8}
.suite-toast [data-dismiss-toast]{width:30px;height:30px;padding:0;border-radius:50%;color:var(--suite-muted);font-size:18px;line-height:30px}
.suite-toast [data-dismiss-toast]:hover{background:var(--suite-soft);color:var(--suite-text)}

/* Compact page tools replace repeated in-content page titles. */
.module-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px;padding:9px 11px;border:1px solid var(--suite-line);border-radius:7px;background:#fbfcfd}
.module-toolbar p{min-width:0;margin:0;color:var(--suite-muted);font-size:10.75px;line-height:1.45}
.module-toolbar .suite-btn{flex:0 0 auto}

/* Filter controls keep their labels visible without growing the page vertically. */
.filter-control{display:flex;min-width:118px;flex-direction:column;gap:3px;color:var(--suite-muted);font-size:9px;font-weight:600;letter-spacing:.045em;text-transform:uppercase}
.filter-control .suite-input,.filter-control .suite-select{width:100%;text-transform:none}
.filter-search{flex:1 1 230px;min-width:190px}
.attendance-filter-row,.timeoff-filter-row,.payroll-filter-row{align-items:flex-end;flex-wrap:wrap}
.attendance-filter-row .cov-ctl,.timeoff-filter-row .cov-ctl,.payroll-filter-row .cov-ctl{min-height:34px}
.view-switch{display:flex;gap:6px;padding:11px 13px 0;background:#fff}

/* Metrics may be filters. Preserve the metric visual while making the action clear. */
button.metric{appearance:none;width:100%;margin:0;border-top:0;border-bottom:0;border-left:0;background:#fff;color:var(--suite-text);font-family:inherit;text-align:left;cursor:pointer}
button.metric:hover{background:#fafbfc}
button.metric.selected{box-shadow:inset 0 -3px 0 var(--suite-blue);background:#f5f8fc}
.record-highlight{background:#fff8e9!important;box-shadow:inset 3px 0 0 var(--suite-orange)}
.record-highlight:focus{outline-offset:-3px}

.source-progress{margin-top:8px;padding:7px 8px;border-radius:5px;background:#eef7f2;color:var(--suite-green);font-size:10px;line-height:1.4}
.source-progress.error{background:#fff1f2;color:var(--suite-red)}
.save-feedback{display:block;min-height:14px;margin-top:3px;color:var(--suite-muted);font-size:9px;line-height:1.35}
.field-preview{margin:-4px 0 2px;padding:7px 9px;border-radius:5px;background:var(--suite-soft);color:var(--suite-muted);font-size:10.5px}
.suite-form .field-preview.full{grid-column:1/-1}
/* `full` on anything inside a dialog means what it says on a field: span both
   columns. Without this the intro paragraph on every modal sat in the left
   cell and pushed the first field alongside it. */
.suite-form>.full{grid-column:1/-1}

.account-source-health{margin:0;border-bottom:1px solid var(--suite-line)}
.account-source-health summary{padding:9px;color:var(--suite-text);font-size:10.5px;font-weight:600;cursor:pointer}
.account-source-health>div{display:grid!important;gap:5px;padding:0 9px 9px!important;border:0!important}
.account-source-health>div span{display:flex;align-items:center;justify-content:space-between;gap:8px}
.account-source-health>div b{font-size:9.75px!important}.account-source-health>div small{color:var(--suite-muted);font-size:9px}

@media(max-width:1120px){
  .overview-top-grid{grid-template-columns:1fr}
  .overview-priorities,.overview-workforce{align-self:auto}
  .suite-content{padding-inline:22px}
  .suite-date{display:none}
}

@media(max-width:980px){
  .suite-layout{display:block}
  .suite-nav{position:fixed;inset:0 auto 0 0;width:min(280px,86vw);height:100dvh;padding:18px 12px 16px;transform:translateX(-103%);transition:transform .2s ease;box-shadow:12px 0 36px rgba(5,20,43,.22);z-index:90}
  .suite-nav.open{transform:translateX(0)}
  .suite-nav-backdrop{display:block;position:fixed;inset:0;z-index:80;border:0;background:rgba(5,20,43,.46);cursor:pointer}
  .suite-nav-close{display:grid;position:absolute;right:10px;top:15px;width:36px;height:36px;place-items:center;border:0;border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:22px;cursor:pointer}
  .suite-brand{justify-content:flex-start;padding-inline:9px}.suite-brand strong,.suite-brand small,.suite-nav-btn .suite-nav-label,.suite-nav-footer{display:flex}
  .suite-nav-btn{justify-content:flex-start}.suite-nav-btn.active:before{left:-12px}
  .suite-mobile-menu{display:flex;width:36px;height:36px;flex:0 0 36px;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid var(--suite-line);border-radius:7px;background:#fff;cursor:pointer}
  .suite-mobile-menu span{width:15px;height:1.5px;border-radius:2px;background:var(--suite-navy)}
  .suite-grid{grid-template-columns:1fr}
  .suite-heading{min-width:0}
  .suite-refresh-label{display:none}
}

@media(max-width:720px){
  .suite-top{min-height:60px;height:60px;padding:0 12px;gap:7px}
  .suite-heading{min-width:0;flex:1}.suite-heading h1{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-heading p{display:none}
  .suite-scope>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .suite-scope .suite-market{width:112px;max-width:112px;min-height:36px}
  .suite-user-copy{display:none}.suite-avatar{width:34px;height:34px}
  .suite-add{width:36px;height:36px;padding:0;justify-content:center}.suite-add-label{display:none}
  .suite-content{padding:16px 13px calc(40px + env(safe-area-inset-bottom))}
  .overview-layout{gap:13px}.overview-top-grid{gap:13px}
  .overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-metrics>:nth-child(n){border-right:1px solid #edf0f3;border-bottom:1px solid #edf0f3}.overview-metrics>:nth-child(2n){border-right:0}.overview-metrics>:nth-last-child(-n+2){border-bottom:0}
  .operations-timeline{grid-template-columns:1fr;padding:6px 12px}.operations-timeline:before{display:none}
  .timeline-item:nth-child(n){border-right:0;border-bottom:1px solid #edf0f3}.timeline-item:last-child{border-bottom:0}
  .timeline-event{min-height:0;padding:12px 10px 12px 34px}.timeline-dot{left:13px;top:17px;transform:none}.timeline-copy b{white-space:normal}
  .action-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.action-summary-item:nth-child(n){border-right:1px solid #edf0f3;border-bottom:1px solid #edf0f3}.action-summary-item:nth-child(2n){border-right:0}.action-summary-item:nth-last-child(-n+2){border-bottom:0}
  .module-hero{align-items:flex-start}.profile-head{align-items:flex-start;flex-wrap:wrap}.profile-id{flex:1}.profile-chips{flex-basis:100%}
  .detail-list{grid-template-columns:1fr;gap:2px}.detail-list dd{margin:0 0 8px}.detail-list dt{white-space:normal}
  .filter-row{align-items:stretch}.filter-row .suite-input,.filter-row .suite-select{width:100%;max-width:none;min-width:0;min-height:44px}
  .suite-btn,.suite-input,.suite-select{min-height:44px}
  .suite-table{min-width:680px}.suite-table-wrap{border-bottom:1px solid var(--suite-line)}
  .suite-form{padding:15px}.suite-modal-backdrop{padding:10px}.suite-modal{max-height:calc(100dvh - 20px)}
  .data-health-notice{align-items:flex-start;flex-direction:column}.data-health-notice .suite-btn{width:100%}
  .source-disclosure-body{padding:12px}
  .policy-note{grid-template-columns:1fr;gap:2px;padding:10px 12px}
  .settings-form{grid-template-columns:1fr;padding:3px 12px 14px}
  .settings-actions{grid-column:1;flex-wrap:wrap}
  #app-config-status{flex:1 1 100%;margin:0}
  .user-market-select{min-width:210px}
  .suite-toast{right:12px;bottom:12px;bottom:max(12px,env(safe-area-inset-bottom))}
  .module-toolbar{align-items:stretch;flex-direction:column}.module-toolbar .suite-btn{width:100%}
  .filter-control,.filter-search{width:100%;min-width:0;flex-basis:100%}
  .view-switch{overflow-x:auto}.view-switch .suite-btn{flex:0 0 auto}
}

@media(max-width:430px){
  .suite-refresh{display:none}.suite-scope .suite-market{width:96px;max-width:96px;padding-inline:6px}
  .suite-heading h1{font-size:15.5px}.suite-content{padding-inline:10px}
  .suite-panel-head{padding-inline:12px}.panel-context{display:none}
  .overview-priority{grid-template-columns:28px 34px minmax(0,1fr) 58px;gap:8px;padding-inline:11px}.priority-level>span:last-child{display:none}.priority-copy small{white-space:normal}.priority-action{padding-inline:7px}
  .action-summary-item{padding-inline:11px}.action-summary-item strong{font-size:20px}
  .metric-strip:not(.overview-metrics){grid-template-columns:1fr}.metric-strip:not(.overview-metrics) .metric{border-right:0;border-bottom:1px solid var(--suite-line)}
  .source-disclosure>summary{grid-template-columns:7px minmax(0,1fr);padding-inline:11px}
  .source-disclosure>summary small{white-space:normal}
  .source-toggle{grid-column:2;justify-self:start;margin-top:2px}
  .signin-mode{grid-template-columns:1fr}
  .return-context{align-items:flex-start;flex-direction:column}
  .settings-actions{align-items:stretch;flex-direction:column}
  .settings-actions .suite-btn{width:100%}
  .user-market-select{min-width:190px;max-width:none}
  .suite-toast{left:10px;right:10px;width:auto;max-width:none;grid-template-columns:minmax(0,1fr) auto}
  .suite-toast>span{grid-column:1/-1}
  .suite-toast [data-undo-change]{justify-self:start}
  .suite-toast [data-dismiss-toast]{justify-self:end}
}

/* Data exports share the existing report shell and market picker. */
.data-format{margin-left:auto;flex:none;border:1px solid var(--suite-line);border-radius:4px;padding:4px 8px;color:var(--suite-muted);font-size:11px;font-weight:600}
.data-description{margin:0;color:var(--suite-muted);font-size:13px;line-height:1.6;max-width:720px}
.data-export-controls{display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap;margin:22px 0}
.data-export-controls .suite-field{min-width:240px;max-width:100%;gap:7px}
.data-export-controls .suite-btn{margin-left:auto;min-height:38px}
.data-export-scope{display:flex;flex-direction:column;gap:7px;padding-bottom:8px;min-width:0}
.data-export-scope span{color:var(--suite-muted);font-size:10px;font-weight:600;text-transform:uppercase}
.data-export-scope b{font-size:13px;overflow-wrap:anywhere}
.data-export-totals{display:flex;gap:24px;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--suite-line);font-size:12px;color:var(--suite-muted)}
.data-export-totals b{color:var(--suite-text);font-size:18px;margin-right:4px}
.data-export-notice{margin:8px 0 0;color:var(--suite-muted);font-size:12px;line-height:1.6}
.data-export-notice a{color:var(--suite-blue)}
.data-export-feedback{margin:10px 0 0;font-size:12px;line-height:1.5;color:var(--suite-green)}
.data-export-feedback:empty{display:none}
.data-export-feedback.warn-text{color:var(--suite-red)}
.data-shift-table{min-width:540px}
.data-shift-table td:nth-child(n+3){white-space:normal;overflow-wrap:anywhere}
.data-export-footnote{padding:14px 16px;border-top:1px solid var(--suite-line);color:var(--suite-muted);font-size:11px;line-height:1.6}
.data-other-exports{margin-top:20px}
.data-export-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.data-export-links a{display:flex;flex-direction:column;gap:6px;padding:18px;color:var(--suite-text);text-decoration:none;font-size:13px}
.data-export-links a+a{border-left:1px solid var(--suite-line)}
.data-export-links a:hover{background:#f4f7fb}
.data-export-links a b{color:var(--suite-blue)}
.data-export-links a span{color:var(--suite-muted);font-size:12px;line-height:1.5}
@media(max-width:680px){.data-export-controls{gap:16px}.data-export-controls .suite-field{width:100%;min-width:0}.data-export-controls .suite-btn{width:100%;margin-left:0}.data-export-totals{gap:10px 18px}.data-export-links{grid-template-columns:1fr}.data-export-links a+a{border-left:0;border-top:1px solid var(--suite-line)}}

@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
