body.andy-ui *{box-sizing:border-box}body.andy-ui{background:var(--andy-bg);color:var(--andy-text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px;line-height:1.5;padding:0!important}.andy-header{background:var(--andy-navy);height:68px;color:#fff;position:relative;z-index:1040}.andy-header__inner,.andy-context-bar__inner{max-width:1440px;margin:0 auto;padding:0 32px;display:flex;align-items:center}.andy-header__inner{height:68px}.andy-brand{display:flex;align-items:center;gap:10px;color:#fff!important;text-decoration:none;margin-right:44px}.andy-brand__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(145deg,#5d8df4,#2d63d4);font-size:20px;font-weight:800}.andy-brand__text{font-size:18px;font-weight:750;letter-spacing:-.3px}.andy-brand__text span{color:#9fc0ff}.andy-nav-collapse{flex:1;height:100%}.andy-nav{display:flex;align-items:center;height:100%;margin:0;list-style:none}.andy-nav>li{height:100%;position:relative}.andy-nav>li>a{display:flex;align-items:center;height:100%;padding:0 15px;color:#c9d4e5;font-weight:600;text-decoration:none;border-bottom:3px solid transparent}.andy-nav>li>a:hover,.andy-nav>li.active>a,.andy-nav>li.open>a{color:#fff;background:rgba(255,255,255,.055);border-bottom-color:#70a0ff}.andy-nav .dropdown-menu{top:60px;border:0;border-radius:10px;padding:8px;box-shadow:0 16px 35px rgba(17,35,63,.2)}.andy-nav .dropdown-menu a{padding:9px 12px;border-radius:6px}.andy-account{margin-left:auto}.andy-account__button{display:flex;align-items:center;gap:9px;color:#fff!important;text-decoration:none}.andy-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#e8f0fe;color:#2f6bd8;font-weight:750;font-size:13px}.andy-account__name{font-weight:600}.andy-context-bar{background:#fff;border-bottom:1px solid var(--andy-border)}.andy-context-bar__inner{height:60px;justify-content:space-between}.andy-context-copy{display:flex;align-items:baseline;gap:12px}.andy-context-label,.andy-eyebrow{font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#5f6b7c}.andy-context-copy strong{font-size:14px}.andy-context-dates{color:var(--andy-muted);font-size:12px}.andy-cycle-select select{margin:0;height:36px;min-width:210px;border:1px solid #d5dce7;border-radius:8px;background:#fff;color:var(--andy-text)}body.andy-ui .main-body{padding:0!important}body.andy-ui .main-body>.container-fluid{max-width:1440px;margin:0 auto;padding:28px 32px 80px}.andy-dashboard h1,.andy-dashboard h2{color:var(--andy-text);letter-spacing:-.03em}.andy-page-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px}.andy-page-heading h1{font-size:30px;line-height:1.15;margin:5px 0 7px}.andy-page-heading p{margin:0;color:var(--andy-muted);font-size:15px}.andy-heading-actions{display:flex;gap:10px}.andy-heading-actions .btn{margin:0;border-radius:8px;padding:9px 15px;font-weight:700;box-shadow:none;text-shadow:none}.andy-empty-banner{display:flex;gap:10px;padding:13px 16px;margin-bottom:18px;background:#fff8e8;border:1px solid #f2d99b;border-radius:9px;color:#6b4d12}.andy-empty-banner span{color:#8a6b2c}.andy-stat-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:16px;margin-bottom:18px}.andy-stat-card{background:var(--andy-card);border:1px solid var(--andy-border);border-radius:12px;padding:20px;box-shadow:0 1px 2px rgba(17,35,63,.02);min-height:136px;display:flex;flex-direction:column}.andy-stat-card--primary{background:linear-gradient(145deg,var(--andy-navy-2),var(--andy-navy));border-color:var(--andy-navy);color:#fff}.andy-stat-card__label{font-weight:650;color:var(--andy-muted)}.andy-stat-card--primary .andy-stat-card__label,.andy-stat-card--primary .andy-stat-card__meta{color:#c8d6ea}.andy-stat-card strong{font-size:32px;line-height:1.1;margin:14px 0 7px;letter-spacing:-.04em}.andy-stat-card__meta{margin-top:auto;color:#697385;font-size:12px}.andy-progress{display:block;height:7px;border-radius:8px;background:#e8edf4;margin-top:auto;overflow:hidden}.andy-progress i{display:block;height:100%;background:var(--andy-blue);border-radius:8px}.andy-dashboard-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(290px,1fr);gap:18px;margin-bottom:18px}.andy-panel{background:#fff;border:1px solid var(--andy-border);border-radius:12px;box-shadow:var(--andy-shadow);overflow:hidden}.andy-panel__header{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--andy-border)}.andy-panel__header h2,.andy-quick-actions h2{font-size:18px;line-height:1.25;margin:3px 0 0}.andy-panel__header>a{font-size:12px;font-weight:750;color:var(--andy-blue)}.andy-objective-row{display:grid;grid-template-columns:38px minmax(0,1fr) auto 14px;align-items:center;gap:13px;padding:15px 22px;border-bottom:1px solid #edf0f4;text-decoration:none!important;color:var(--andy-text)!important}.andy-objective-row:last-child{border:0}.andy-objective-row:hover{background:#f8faff}.andy-objective-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:var(--andy-blue-soft);color:var(--andy-blue);font-weight:800}.andy-objective-copy{display:flex;flex-direction:column;min-width:0}.andy-objective-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.andy-objective-copy small{color:var(--andy-muted);margin-top:2px}.andy-status{padding:4px 9px;border-radius:20px;font-size:11px;font-weight:800}.andy-status--good{background:#e8f6f0;color:var(--andy-green)}.andy-status--watch{background:#fff3df;color:var(--andy-amber)}.andy-status--risk{background:#ffebee;color:var(--andy-red)}.andy-status--neutral{background:#eef1f5;color:#667085}.andy-row-arrow{color:#98a2b3;font-size:22px}.andy-activity{display:flex;gap:12px;padding:16px 20px;border-bottom:1px solid #edf0f4;color:var(--andy-text)!important;text-decoration:none!important}.andy-activity>i{width:8px;height:8px;margin-top:6px;border-radius:50%;background:#cbd3df;flex:0 0 auto}.andy-activity.is-unread>i{background:var(--andy-blue);box-shadow:0 0 0 4px var(--andy-blue-soft)}.andy-activity span{display:flex;flex-direction:column}.andy-activity strong{font-size:13px;line-height:1.35}.andy-activity small{color:var(--andy-muted);margin-top:4px}.andy-panel-empty{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--andy-muted);text-align:center}.andy-panel-empty>a{font-weight:700;color:var(--andy-blue)}.andy-quick-actions{display:flex;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--andy-border);border-radius:12px;padding:20px 22px}.andy-quick-actions__links{display:flex;gap:12px}.andy-quick-actions__links>a{display:grid;grid-template-columns:32px auto;column-gap:10px;min-width:210px;color:var(--andy-text)!important;text-decoration:none!important}.andy-quick-actions__links>a>span{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--andy-blue-soft);color:var(--andy-blue);font-weight:800}.andy-quick-actions__links strong{font-size:13px}.andy-quick-actions__links small{color:var(--andy-muted)}body.andy-ui footer .navbar-fixed-bottom{position:static;margin:0;border:0}body.andy-ui footer .navbar-inner{background:transparent!important;border:0!important;box-shadow:none!important;color:#8791a1;text-align:center;padding:16px}body.andy-ui .breadcrumb{background:transparent;border:0;padding:0;margin:0 0 18px;box-shadow:none}body.andy-ui .sidebar-nav{background:#fff;border:1px solid var(--andy-border);border-radius:10px;padding:8px}body.andy-ui .sidebar-nav>ul{margin:0}body.andy-ui .sidebar-nav li a{border:0!important;border-radius:7px;color:#4b5565!important;padding:9px 10px!important}body.andy-ui .sidebar-nav li.active a,body.andy-ui .sidebar-nav li a:hover{background:var(--andy-blue-soft)!important;color:var(--andy-blue)!important}body.andy-ui .grid-view table.items{border:1px solid var(--andy-border);border-radius:10px;background:#fff}body.andy-ui .grid-view table.items th{background:#f7f9fc!important;color:#536074!important;text-shadow:none!important;border-color:var(--andy-border)!important;padding:11px 9px}body.andy-ui .grid-view table.items td{border-color:#edf0f4!important;padding:11px 9px}.andy-nav-toggle{display:none}.andy-header+.andy-context-bar+.main-body{}
@media(max-width:980px){.andy-header__inner,.andy-context-bar__inner,body.andy-ui .main-body>.container-fluid{padding-left:18px;padding-right:18px}.andy-nav-toggle{display:block;margin-left:auto;background:transparent;border:0}.andy-nav-toggle span{display:block;width:22px;height:2px;background:#fff;margin:4px}.andy-nav-collapse{position:absolute;top:68px;left:0;right:0;height:auto;background:var(--andy-navy);padding:0 18px}.andy-nav{display:block;height:auto}.andy-nav>li{height:auto}.andy-nav>li>a{height:auto;padding:12px}.andy-account__name{display:none}.andy-stat-grid{grid-template-columns:repeat(2,1fr)}.andy-dashboard-grid{grid-template-columns:1fr}.andy-quick-actions{align-items:flex-start;gap:20px}.andy-quick-actions__links{flex-direction:column}}@media(max-width:640px){.andy-context-dates{display:none}.andy-context-copy{display:none}.andy-cycle-select,.andy-cycle-select select{width:100%}.andy-page-heading{align-items:flex-start;gap:18px;flex-direction:column}.andy-stat-grid{grid-template-columns:1fr 1fr}.andy-stat-card{min-height:120px;padding:16px}.andy-dashboard-grid{display:block}.andy-panel{margin-bottom:16px}.andy-quick-actions{display:block}.andy-quick-actions__links{margin-top:18px}.andy-heading-actions{width:100%}.andy-heading-actions .btn{flex:1}.andy-objective-row{grid-template-columns:34px minmax(0,1fr) auto}.andy-row-arrow{display:none}}

/* ============================================================
   App shell with a left sidebar (design: Home / Workflow spec)
   ============================================================ */
.andy-app{display:flex;align-items:stretch;min-height:100vh;background:#f7f9fc}
.andy-sidebar{flex:0 0 284px;width:284px;background:var(--andy-navy);color:#c9d4e5;display:flex;flex-direction:column;position:sticky;top:0;height:calc(100vh - 16px);margin:8px 0 8px 8px;border-radius:14px;z-index:1040;overflow:hidden}
.andy-sidebar__brand{display:flex;align-items:center;gap:11px;height:70px;padding:0 20px;color:#fff!important;text-decoration:none!important}
.andy-sidebar__logo{width:24px;height:24px;flex:0 0 24px}
.andy-sidebar__wordmark{font-size:16.5px;font-weight:750;letter-spacing:-.2px;color:#fff}
.andy-sidebar__nav{list-style:none;margin:8px 0 0;padding:0 11px;flex:1;overflow-y:auto}
.andy-sidebar__nav>li{margin-bottom:2px}
.andy-sidebar__nav a{display:flex;align-items:center;gap:12px;padding:14px 13px;border-radius:9px;color:#b7c6dc!important;text-decoration:none!important;font-weight:600;font-size:13.8px;border:0}
.andy-sidebar__nav a:hover{background:rgba(255,255,255,.06);color:#fff!important}
.andy-sidebar__nav li.active>a{background:rgba(255,255,255,.09);color:#fff!important}
.andy-sidebar__nav .andy-icon{width:18px;height:18px;flex:0 0 18px;opacity:.9}
.andy-sidebar__sub{list-style:none;margin:2px 0 8px;padding:0 0 0 6px}
.andy-sidebar__sub a{gap:8px;padding:11px 13px 11px 24px;font-size:13px;color:#9fb2cc!important;position:relative}
.andy-sidebar__sub a .andy-icon{width:12px;height:12px;flex:0 0 12px;position:absolute;left:9px;top:50%;transform:translateY(-50%);opacity:.75}
.andy-sidebar__sub li.active a{background:#1d4f86;color:#fff!important}
.andy-sidebar__nav .dropdown-menu{position:static;float:none;margin:4px 0 6px;background:rgba(255,255,255,.06);border:0;box-shadow:none;padding:4px}
.andy-sidebar__nav .dropdown-menu a{color:#c3d0e4!important;padding:8px 10px;font-weight:500}
.andy-sidebar__nav .dropdown-menu a:hover{background:rgba(255,255,255,.1)}
.andy-sidebar__section{padding:16px 20px 6px;font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#8ea3c2}
.andy-sidebar__footer{padding:12px 18px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#8ea3c2}
.andy-app__main{flex:1;min-width:0;display:flex;flex-direction:column;background:#f7f9fc}
.andy-topbar{display:flex;align-items:center;gap:16px;height:62px;padding:0 22px;background:#fff;border-bottom:1px solid #eef1f5;position:sticky;top:0;z-index:1030}
.andy-topbar__toggle{display:none;background:transparent;border:0;padding:6px}
.andy-topbar__toggle span{display:block;width:20px;height:2px;background:var(--andy-text);margin:4px 0}
.andy-topbar__spacer{flex:1}
.andy-search{position:relative;max-width:460px;flex:1}
.andy-search input{width:100%;height:37px;margin:0;padding-left:36px;border:1px solid #e6eaf0;border-radius:10px;background:#f8fafc;font-size:12.5px;color:var(--andy-text)}
.andy-search input::placeholder{color:#9aa6b6}
.andy-search input:focus{border-color:var(--andy-blue);background:#fff;outline:0;box-shadow:0 0 0 3px var(--andy-blue-soft)}
.andy-search svg{position:absolute;left:12px;top:11px;width:15px;height:15px;color:#8b97a8}
.andy-account{display:flex;align-items:center;gap:10px}
.andy-account__meta{display:flex;flex-direction:column;line-height:1.25;text-align:left}
.andy-account__meta strong{font-size:12.5px;font-weight:750;color:var(--andy-text)}
.andy-account__meta small{color:var(--andy-muted);font-size:11px}
.andy-account .caret{margin-left:2px}
.andy-cycle-select{display:flex;align-items:center;margin:0}
.andy-cycle-select select{height:34px;margin:0;padding:0 30px 0 11px;border:1px solid #e6eaf0;border-radius:9px;background:#f8fafc;font-size:12.5px;font-weight:600;color:var(--andy-text);max-width:230px}
.andy-cycle-select select:focus{border-color:var(--andy-blue);outline:0;box-shadow:0 0 0 3px var(--andy-blue-soft)}
.andy-app__main .main-body .container-fluid{padding:22px 26px 44px;max-width:1400px;margin:0 auto}
.andy-plan-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:20px;background:var(--andy-blue-soft);color:var(--andy-blue);font-size:11.5px;font-weight:800}
.andy-plan-chip--trial{background:#fff4e2;color:#8a5a08}
@media(max-width:1080px){
.andy-sidebar{position:fixed;left:-280px;transition:left .18s ease;z-index:1040}
.andy-sidebar.is-open{left:0;box-shadow:0 18px 40px rgba(17,35,63,.3)}
.andy-sidebar__overlay{position:fixed;inset:0;z-index:1035;background:rgba(0,0,0,.35);opacity:0;pointer-events:none;transition:opacity .18s ease}
.andy-sidebar.is-open+.andy-sidebar__overlay{opacity:1;pointer-events:auto}
.andy-topbar__toggle{display:block}
.andy-search{display:none}
}
/* A phone is the first device most of our customers use, and the top bar was 47px wider than a 390px screen —
   which is a horizontal scrollbar on every page in the application. Two things caused it: the cycle selector
   is 230px at every width, and the account chip carries the person's name and role beside their face. Both are
   right on a desktop and wrong in a hand. The name is not lost — it is in the sidebar, which on a phone is one
   tap away, and the avatar still opens the same menu. */
@media(max-width:640px){
.andy-topbar{gap:8px;padding:0 12px}
.andy-cycle-select select{max-width:124px;padding-right:24px}
.andy-account__meta{display:none}
/* Tap targets. A thumb needs about 44px (Apple HIG, WCAG 2.5.8); the desktop sizes
   were 26-38px. Height is what matters most — width can stay natural so bars and
   chips still fit — so these rules raise the box without stretching labels. */
.andy-bell{width:44px;height:44px}
.andy-bell svg{width:20px;height:20px}
.andy-account__button{min-height:44px}
.andy-topbar__toggle{width:44px;height:44px}
.andy-chip{min-height:40px;display:inline-flex;align-items:center}
.andy-workflow__tabs a{min-height:44px}

.andy-cycle-select select{min-height:44px}
.andy-inline-form select{min-height:40px}
input[type=text],input[type=search],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{min-height:44px}
.andy-wiz__mark{width:38px;height:38px;flex-basis:38px}
.andy-wiz li:not(:last-child)::after{top:18px}
/* Font floor: helper text inheriting from 11-12px labels lands at 9.8-10.5px, which is
   below any readable floor on a small screen. 11px is the minimum this UI sets anywhere. */
.andy-field small,.andy-field2 small,.andy-onboard__step small,.andy-muted{font-size:11px}

}
@media(max-width:480px){
.andy-stat-grid{grid-template-columns:1fr}
.andy-stat-card{min-height:auto;padding:12px}
.andy-chart{height:180px;margin:8px 8px 0}
.andy-dashboard{overflow-x:hidden}
}
@media(prefers-reduced-motion:reduce){.andy-sidebar{transition:none}}

/* ============================================================
   Dashboard + workflow components
   ============================================================ */
.andy-ring{width:96px;height:96px;flex:0 0 96px}
.andy-ring circle{fill:none;stroke-width:9;stroke-linecap:round}
.andy-ring__track{stroke:#e6ebf2}
.andy-ring__value{stroke:var(--andy-green);transform:rotate(-90deg);transform-origin:50% 50%}
.andy-figure{display:flex;align-items:center;gap:16px}
.andy-figure__number{font-size:34px;font-weight:800;letter-spacing:-.04em;line-height:1}
.andy-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.andy-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:20px;font-size:11px;font-weight:750;background:#eef1f5;color:#4d5665}
.andy-chip--good{background:#e8f6f0;color:var(--andy-green)}
.andy-chip--watch{background:#fff3df;color:var(--andy-amber)}
.andy-chip--risk{background:#ffebee;color:var(--andy-red)}
.andy-bar-row{display:grid;grid-template-columns:130px minmax(0,1fr) 54px;align-items:center;gap:12px;padding:11px 22px;border-bottom:1px solid #edf0f4}
.andy-bar-row:last-child{border-bottom:0}
.andy-bar{height:9px;border-radius:8px;background:#eef1f5;overflow:hidden}
.andy-bar>i{display:block;height:100%;border-radius:8px;background:var(--andy-blue)}
.andy-bar>i.is-good{background:var(--andy-green)}
.andy-bar>i.is-watch{background:#e6a23c}
.andy-bar>i.is-risk{background:var(--andy-red)}
.andy-bar-row__value{text-align:right;font-weight:750;font-size:13px}
.andy-legend{display:flex;flex-wrap:wrap;gap:14px;padding:14px 22px 20px}
.andy-legend>span{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--andy-muted)}
.andy-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
.andy-donut{display:flex;align-items:center;gap:20px;padding:18px 22px 6px}
.andy-donut__ring{width:132px;height:132px;border-radius:50%;flex:0 0 132px;display:grid;place-items:center;position:relative}
.andy-donut__ring::after{content:"";position:absolute;inset:22px;border-radius:50%;background:#fff}
.andy-donut__center{position:relative;z-index:1;text-align:center}
.andy-donut__center strong{display:block;font-size:24px;font-weight:800;line-height:1}
.andy-donut__center small{color:var(--andy-muted);font-size:11.5px}
.andy-task{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center;padding:13px 20px;border-bottom:1px solid #edf0f4;text-decoration:none!important;color:var(--andy-text)!important}
.andy-task:last-child{border-bottom:0}
.andy-task:hover{background:#f8faff}
.andy-task__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--andy-blue-soft);color:var(--andy-blue)}
.andy-task__mark svg{width:17px;height:17px}
.andy-task__mark--red{background:#fdecee;color:#c0392b}
.andy-task__mark--green{background:#e6f6ee;color:#1f8a4c}
.andy-task__mark--amber{background:#fdf3e0;color:#b7791f}
.andy-task__mark--blue{background:#e8f0fe;color:#2f6bd8}
.andy-task__mark--violet{background:#f0ecfd;color:#6b46c1}
.andy-task strong{display:block;font-size:13px;font-weight:700}
.andy-task small{color:var(--andy-muted);font-size:11.5px}
.andy-task__meta{text-align:right}
.andy-task__due{font-size:11.5px;font-weight:750;color:#b7791f;white-space:nowrap}
.andy-task__due.is-urgent{color:#c0392b}
.andy-due{display:inline-block;padding:3px 8px;border-radius:20px;background:#eef1f5;color:#4d5665;font-size:11px;font-weight:750;white-space:nowrap}
.andy-due--overdue{background:#ffebee;color:var(--andy-red)}
.andy-table-wrap{overflow-x:auto}
.andy-table{width:100%;border-collapse:collapse;min-width:900px}
.andy-table th{text-align:left;padding:12px 16px;background:#f7f9fc;color:#536074;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--andy-border)}
.andy-table td{padding:14px 16px;border-bottom:1px solid #edf0f4;vertical-align:top;font-size:13.5px}
.andy-table tr:hover td{background:#f9fbff}
.andy-table td a{font-weight:650}
.andy-table td small{display:block;color:var(--andy-muted);font-size:12px;margin-top:2px}
.andy-type{display:inline-block;padding:3px 9px;border-radius:6px;background:var(--andy-blue-soft);color:var(--andy-blue);font-size:11.5px;font-weight:750}
.andy-row-link{font-weight:700;font-size:12.5px}
.andy-workflow__tabs{display:flex;gap:4px;padding:6px 10px 0;border-bottom:1px solid var(--andy-border);overflow-x:auto}
/* On a phone the filter chips were 213px too wide with the active one off-screen: let
   them wrap instead of scrolling sideways. */
@media(max-width:640px){
.andy-workflow__tabs{flex-wrap:wrap;overflow-x:visible;padding-bottom:6px}
.andy-workflow__tabs a{padding:9px 12px}
}
.andy-workflow__tabs a{display:flex;align-items:center;gap:7px;padding:12px 14px;color:var(--andy-muted)!important;text-decoration:none!important;font-weight:650;border-bottom:2px solid transparent;white-space:nowrap}
.andy-workflow__tabs a:hover{color:var(--andy-text)!important}
.andy-workflow__tabs a.is-active{color:var(--andy-blue)!important;border-bottom-color:var(--andy-blue)}
.andy-badge{display:inline-block;min-width:22px;padding:2px 7px;border-radius:20px;background:#eef1f5;color:#4d5665;font-size:11.5px;font-weight:800;text-align:center}
.andy-workflow__tabs a.is-active .andy-badge{background:#e02020;color:#fff}
.andy-workflow__tabs a.is-active{color:var(--andy-blue)!important;border-bottom-color:var(--andy-blue)}
.andy-workflow__filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:16px 20px;border-bottom:1px solid var(--andy-border);background:#fbfcfe}

.andy-steps{list-style:none;margin:0;padding:18px 22px}
.andy-steps__item{position:relative;padding:0 0 18px 26px;color:var(--andy-muted);font-size:13.5px}
.andy-steps__item:last-child{padding-bottom:0}
.andy-steps__item::before{content:"";position:absolute;left:6px;top:6px;bottom:-6px;width:2px;background:#e6ebf2}
.andy-steps__item:last-child::before{display:none}
.andy-steps__dot{position:absolute;left:0;top:3px;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid #cfd8e3}
.andy-steps__item.is-done .andy-steps__dot{background:var(--andy-green);border-color:var(--andy-green)}
.andy-steps__item.is-done{color:var(--andy-text)}
.andy-steps__item.is-current{color:var(--andy-text);font-weight:700}
.andy-steps__item.is-current .andy-steps__dot{border-color:var(--andy-blue);background:#fff;box-shadow:0 0 0 4px var(--andy-blue-soft)}
.andy-comments{padding:16px 22px}
.andy-comment{border-left:3px solid var(--andy-blue-soft);padding:2px 0 2px 14px;margin-bottom:16px}
.andy-comment header{display:flex;gap:10px;align-items:baseline}
.andy-comment p{margin:6px 0 0;font-size:13.5px}
.andy-facts{list-style:none;margin:0;padding:8px 22px 18px}
.andy-facts li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #edf0f4;font-size:13.5px}
.andy-facts li:last-child{border-bottom:0}
.andy-facts span{color:var(--andy-muted)}
.andy-panel-sub{padding:0 22px 14px;color:var(--andy-muted);font-size:12.5px}

/* keyboard focus visibility */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #7aa2f0;outline-offset:2px;border-radius:6px}

/* ============================================================
   Dashboard: card internals, trend chart, dot legends
   ============================================================ */
.andy-page-heading--plain{align-items:flex-start}
.andy-page-heading--plain h1{font-size:26px;margin:0 0 4px}
.andy-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.andy-stat-card{background:#fff;min-height:132px}
.andy-stat-card .andy-figure{margin-top:8px}
.andy-stat-card__label{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:750;color:var(--andy-text)}
.andy-stat-card__label::before{content:"";width:34px;height:34px;border-radius:10px;background:#e8f0fe;display:inline-block;flex:0 0 34px}
.andy-stat-grid>.andy-stat-card:nth-child(2) .andy-stat-card__label::before{background:#e6f6ee}
.andy-stat-grid>.andy-stat-card:nth-child(3) .andy-stat-card__label::before{background:#e8f0fe}
.andy-stat-grid>.andy-stat-card:nth-child(4) .andy-stat-card__label::before{background:#f0ecfd}
.andy-dashboard h1{font-size:28px;font-weight:650}
.andy-ring__value{stroke:var(--andy-green)}
.andy-ring__track{stroke:#e8eef4}
.andy-figure__number{font-size:32px}
.andy-delta{color:var(--andy-green)!important;font-weight:750}
.andy-delta.is-down{color:var(--andy-red)!important}
.andy-delta small{color:var(--andy-muted);font-weight:500;font-size:11.5px}
.andy-dotlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.andy-dotlist li{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--andy-text)}
.andy-dotlist li i{width:9px;height:9px;border-radius:50%;background:#cbd3df;flex:0 0 9px}
.andy-dotlist li i.is-good{background:var(--andy-green)}
.andy-dotlist li i.is-watch{background:#e6a23c}
.andy-dotlist li i.is-risk{background:var(--andy-red)}
.andy-dotlist strong{font-weight:800}
.andy-dotlist small{color:var(--andy-muted)}
.andy-dotlist--stacked{padding:6px 22px 20px}
.andy-dotlist--stacked li{justify-content:flex-start}
.andy-dotlist--stacked li strong{margin-left:auto}
.andy-dashboard-grid--trend{grid-template-columns:minmax(0,1.55fr) minmax(260px,0.85fr) minmax(260px,0.85fr)}
.andy-chart{height:250px;margin:8px 18px 0}
.andy-inline-form{margin:0}
.andy-inline-form select{height:32px;padding:0 8px;margin:0;border:1px solid #d7dde7;border-radius:8px;background:#fff;font-size:12.5px}
.andy-panel__header h2 .andy-badge{margin-left:6px;vertical-align:middle}
.andy-activity--row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:10px}
.andy-activity--row em{font-style:normal;color:var(--andy-muted);font-size:11.5px;white-space:nowrap;padding-top:2px}
.andy-table--compact{min-width:0}
.andy-table--compact th,.andy-table--compact td{padding:10px 16px}
@media(max-width:1240px){
.andy-dashboard-grid--trend{grid-template-columns:minmax(0,1fr) minmax(260px,0.8fr)}
.andy-dashboard-grid--trend>aside:last-child{grid-column:1 / -1}
}
@media(max-width:980px){
.andy-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.andy-dashboard-grid--trend{grid-template-columns:1fr}
.andy-chart{height:210px;margin:8px 12px 0}
}

/* sidebar footer help + top bar notification bell */
.andy-sidebar__help{display:flex;align-items:center;gap:10px;color:#b7c6dc!important;text-decoration:none!important;padding:6px 4px 12px;font-weight:600;font-size:12.5px}
.andy-sidebar__help:hover{color:#fff!important}
.andy-sidebar__help .andy-icon{width:17px;height:17px;flex:0 0 17px}
.andy-sidebar__upgrade{display:inline-block;margin-top:8px;color:#9dc0ff!important;font-weight:700}
.andy-bell{position:relative;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#f5f7fa;color:var(--andy-navy);text-decoration:none!important}
.andy-bell:hover{background:var(--andy-blue-soft);color:var(--andy-blue)}
.andy-bell svg{width:18px;height:18px}
.andy-bell__dot{position:absolute;top:5px;right:6px;width:8px;height:8px;border-radius:50%;background:#e02020;box-shadow:0 0 0 2px #f5f7fa}
.andy-bell__count{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;border-radius:20px;background:var(--andy-red);color:#fff;font-size:10.5px;font-weight:800;display:grid;place-items:center;padding:0 4px}

/* ============================================================
   Workflow: master-detail screen (tabs, chips, list, details)
   ============================================================ */
.andy-workflow__layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,0.30fr);gap:18px;align-items:start}
.andy-workflow__details{position:sticky;top:84px}
.andy-cycle-inline{display:flex;flex-direction:column;text-align:right;line-height:1.35;margin-right:6px}
.andy-cycle-inline small{font-size:10.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#5f6b7c}
.andy-cycle-inline strong{font-size:13.5px}
.andy-cycle-inline em{font-style:normal;color:var(--andy-muted);font-size:12px}
.andy-workflow__chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 20px;border-bottom:1px solid var(--andy-border)}
.andy-workflow__chips .andy-chip{text-decoration:none!important;padding:5px 10px;font-size:11.5px;background:#f3f5f9;color:#48505d}
.andy-workflow__chips .andy-chip:hover{background:#e9eef7}
.andy-workflow__chips .andy-chip.is-active{background:var(--andy-blue);color:#fff}
/* Work: a card whose stage does not belong to the period the cycle is in. */
.andy-wf-phase{display:block;margin-top:4px}
.andy-wf-phase .andy-badge--dot{font-size:11.5px;color:var(--as-muted)}
.andy-wf-phase-note{margin:12px 20px 0}
.andy-chip__count{color:inherit;opacity:.75;font-weight:700}
.andy-workflow__filters{margin-left:auto;display:flex;flex-wrap:nowrap;gap:8px}
.andy-workflow__chips .andy-workflow__filters{padding:0;background:transparent;border:0}
.andy-workflow__filters select{height:30px;margin:0;padding:0 4px;border:1px solid #d7dde7;border-radius:8px;background:#fff;font-size:11.5px;max-width:132px}
.andy-table--workflow{min-width:0;table-layout:fixed}
.andy-table--workflow th,.andy-table--workflow td{padding:12px}
.andy-table--workflow th:nth-child(1),.andy-table--workflow td:nth-child(1){width:84px}
.andy-table--workflow th:nth-child(2),.andy-table--workflow td:nth-child(2){width:22%}
.andy-table--workflow th:nth-child(3),.andy-table--workflow td:nth-child(3){width:17%}
.andy-table--workflow th:nth-child(4),.andy-table--workflow td:nth-child(4){width:17%}
.andy-table--workflow th:nth-child(5),.andy-table--workflow td:nth-child(5){width:11%}
.andy-table--workflow th:nth-child(6),.andy-table--workflow td:nth-child(6){width:82px}
.andy-table--workflow th:nth-child(7),.andy-table--workflow td:nth-child(7){width:74px}
.andy-table--workflow td{overflow:hidden}
.andy-table--workflow td:nth-child(6),.andy-table--workflow td:nth-child(7){white-space:nowrap;text-overflow:ellipsis}
.andy-table--workflow td:nth-child(5){font-size:12.5px;color:#4b5565;line-height:1.35}
.andy-table--workflow td:nth-child(1) a{white-space:nowrap}
.andy-wf-item a{white-space:normal!important;font-size:13px;line-height:1.4}
.andy-wf-item small{white-space:nowrap}
.andy-wf-person .andy-avatar2{width:22px;height:22px;flex:0 0 22px;font-size:10px}
.andy-wf-person .andy-person{gap:7px}
.andy-wf-person .andy-person strong{font-size:12px}
.andy-wf-person .andy-person small{font-size:10.5px}
.andy-wf-person .andy-person strong,.andy-wf-person .andy-person small{max-width:none}
.andy-wf-status .andy-state{max-width:100%}
.andy-tracker li{font-size:10px;line-height:1.25}
.andy-wf-type a{color:var(--andy-blue)!important;font-weight:650;text-decoration:none!important}
.andy-wf-type a:hover{text-decoration:underline!important}
.andy-wf-item a{display:block;font-weight:700;color:var(--andy-text)!important;text-decoration:none!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.andy-wf-item a:hover{color:var(--andy-blue)!important}
.andy-wf-item small{display:block;color:var(--andy-muted);font-size:11.5px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.andy-wf-person .andy-person>span{min-width:0}
.andy-wf-person .andy-person strong,.andy-wf-person .andy-person small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.andy-wf-due .andy-due{font-size:11px}
.andy-table--workflow tr.is-selected td{background:var(--andy-blue-soft)}
.andy-type{display:inline-block;padding:3px 9px;border-radius:6px;font-size:11px;font-weight:800}
.andy-type--obj{background:#e8f6f0;color:var(--andy-green)}
.andy-type--review{background:#eef2fb;color:#3d5b9e}
.andy-status--info{background:var(--andy-blue-soft);color:var(--andy-blue)}
.andy-workflow__item{padding:18px 22px 6px}
.andy-workflow__item h3{margin:0 0 4px;font-size:17px;color:var(--andy-blue)}
.andy-workflow__item p{margin:0 0 10px;color:var(--andy-muted);font-size:12.5px}
.andy-tracker{list-style:none;display:flex;gap:0;padding:6px 22px 18px;margin:0}
.andy-tracker li{position:relative;flex:1;min-width:0;text-align:center;font-size:11px;color:var(--andy-muted)}
/* each label keeps to its own column and wraps there, instead of running into the next one */
.andy-tracker__label{display:block;padding:0 1px;font-size:10px;line-height:1.2;overflow-wrap:normal;word-break:normal;hyphens:none}
.andy-tracker li:not(:last-child)::after{content:"";position:absolute;top:13px;left:50%;width:100%;height:2px;background:#e6ebf2;z-index:0}
.andy-tracker li.is-done:not(:last-child)::after{background:var(--andy-green)}
.andy-tracker__mark{position:relative;z-index:1;display:grid;place-items:center;width:26px;height:26px;margin:0 auto 6px;border-radius:50%;background:#eef1f5;color:#5b6472;font-weight:800;font-size:11.5px}
.andy-tracker li.is-done .andy-tracker__mark{background:var(--andy-green);color:#fff}
.andy-tracker li.is-current .andy-tracker__mark{background:#fff;border:2px solid #e6a23c;color:#8a5a08}
.andy-tracker li.is-current{color:var(--andy-text);font-weight:750}
.andy-facts--compact{padding:6px 22px 10px}
.andy-facts--compact li{padding:8px 0}
/* the actions that open the selected appraisal from the workflow rail */
.andy-facts-actions{display:flex;gap:10px;padding:12px 22px 16px;flex-wrap:wrap}
.andy-panel__header--sub{border-top:1px solid var(--andy-border);border-bottom:1px solid var(--andy-border);padding:14px 22px}
.andy-panel__header--sub h2{font-size:14px}
.andy-avatar--sm{width:30px;height:30px;font-size:12.5px;flex:0 0 30px}
.andy-conversation{padding:16px 22px 6px;display:flex;flex-direction:column;gap:16px}
.andy-conversation__message{display:grid;grid-template-columns:30px minmax(0,1fr);gap:11px}
.andy-conversation__message header{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.andy-conversation__message header small{color:var(--andy-muted);font-size:11.5px}
.andy-conversation__message header em{font-style:normal;margin-left:auto;color:var(--andy-muted);font-size:11.5px}
.andy-conversation__message p{margin:4px 0 0;font-size:13.5px}
.andy-reply{display:flex;gap:10px;align-items:flex-end;padding:14px 22px 20px}
.andy-reply textarea{flex:1;margin:0;min-height:40px;border:1px solid #d7dde7;border-radius:9px;padding:9px 11px;font-size:13.5px}
.andy-reply textarea:focus{border-color:var(--andy-blue);outline:0;box-shadow:0 0 0 3px var(--andy-blue-soft)}
.andy-reply .btn{margin:0;border-radius:8px;padding:9px 16px;font-weight:700}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1240px){.andy-workflow__layout{grid-template-columns:1fr}.andy-workflow__details{position:static}}

/* workflow details: in-place refresh state */
.andy-workflow__details{transition:opacity .15s ease}
.andy-workflow__details.is-loading{opacity:.55}
@media(prefers-reduced-motion:reduce){.andy-workflow__details{transition:none}}

/* AndyAI Assistant - conversation */
.andy-assistant__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,0.3fr);gap:16px;align-items:start}
.andy-assistant__thread{display:flex;flex-direction:column;gap:14px}
.andy-assistant__welcome{display:flex;gap:14px;align-items:flex-start;padding:20px;background:#fff;border:1px solid var(--life-line);border-radius:12px}
.andy-assistant__welcome strong{display:block;font-size:14px;font-weight:750;color:var(--life-ink);margin-bottom:4px}
.andy-assistant__welcome p{margin:0;font-size:12.5px;color:var(--life-muted)}
.andy-assistant__q{display:flex;gap:10px;align-items:flex-start;justify-content:flex-end}
.andy-assistant__q p{margin:0;padding:10px 14px;background:#eef4fd;border:1px solid #d7e3f7;border-radius:12px 12px 4px 12px;font-size:13px;color:#22364f;max-width:70%}
.andy-avatar2--ai{background:#f0ecfd;color:#6b46c1}
.andy-assistant__answer{display:flex;gap:12px;align-items:flex-start}
.andy-assistant__answer-body{flex:1;min-width:0;background:#fff;border:1px solid var(--life-line);border-radius:12px;padding:18px 20px}
/* 72 characters is the measure. The card is wide enough for about 105 at this size, which is nearly double a
   comfortable line and the main reason a long answer read as a wall: the eye loses its place coming back to
   the left. The override lines, the prose and the steps all take the same measure, so everything ends at the
   same edge rather than the prose stopping short of the list beneath it. */
.andy-assistant__text{margin:0 0 12px;font-size:13.5px;line-height:1.6;color:#22364f;max-width:72ch}
.andy-assistant__figures{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:6px}
.andy-assistant__figures a{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--life-line);border-radius:9px;text-decoration:none!important;color:var(--life-ink)!important;font-size:12.5px}
.andy-assistant__figures a:hover{border-color:#b9cdea;background:#f9fbff}
.andy-assistant__figures span{flex:1;min-width:0}
.andy-assistant__figures strong{font-weight:750}
.andy-assistant__figures svg{width:13px;height:13px;color:#a9b3c1}
.andy-assistant__sources{margin-top:14px;padding-top:14px;border-top:1px solid var(--life-line-soft)}
.andy-assistant__sources>strong{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:750;color:var(--life-ink);margin-bottom:8px}
.andy-assistant__sources svg{width:14px;height:14px;color:#2563eb}
.andy-assistant__sources ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.andy-assistant__sources a{display:block;padding:8px 10px;border-radius:8px;text-decoration:none!important;color:inherit!important;background:#f8fafc}
.andy-assistant__sources a:hover{background:#eef4fd}
.andy-assistant__source-label{display:block;font-size:12.5px;font-weight:650;color:var(--life-ink)}
.andy-assistant__source-meta{display:block;font-size:11px;color:#8b97a8;margin-top:2px}
.andy-assistant__sources small{display:block;margin-top:8px;font-size:11px;color:#8b97a8}
.andy-assistant__disclaimer{margin:14px 0 0;font-size:11.5px;color:#8b97a8;line-height:1.5}
.andy-assistant__proposal{margin:0 0 14px;padding:14px 16px;border:1px solid #f3e2bd;background:#fdf8ec;border-radius:10px}
.andy-assistant__proposal>strong{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:750;color:#8a6a17;margin-bottom:10px}
.andy-assistant__proposal svg{width:14px;height:14px}
.andy-assistant__preview{margin:10px 0 12px;font-size:12.5px;color:#5b6b7f;line-height:1.55}
.andy-assistant__confirm{display:flex;gap:10px}
.andy-assistant__compose{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fff;border:1px solid var(--life-line);border-radius:12px}
.andy-assistant__compose-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#f0ecfd;color:#6b46c1}
.andy-assistant__compose-icon svg{width:15px;height:15px}
.andy-assistant__compose input{flex:1;margin:0;border:0;font-size:13px;background:transparent;box-shadow:none}
.andy-assistant__compose input:focus{outline:0}
.andy-assistant__compose .andy-btn{padding:8px 12px}
.andy-assistant__compose svg{width:15px;height:15px}
.andy-assistant__prompts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.andy-assistant__prompts>strong{font-size:11px;font-weight:750;letter-spacing:.06em;text-transform:uppercase;color:#8b97a8;margin-right:2px}
.andy-assistant__prompts .andy-chip{text-decoration:none!important;padding:6px 11px;font-size:12px;background:#fff;border:1px solid var(--life-line);color:#3d4a5c}
.andy-assistant__prompts .andy-chip:hover{border-color:#b9cdea;color:#2563eb}
.andy-assistant__limits{padding:4px 18px 18px}
.andy-assistant__limits p{margin:0 0 10px;font-size:12.5px;line-height:1.55;color:#3d4a5c}
.andy-assistant__limits strong{color:var(--life-ink)}
@media(max-width:1100px){
.andy-assistant__grid{grid-template-columns:1fr}
}

/* Final approval decision on the appraisal screen */
.andy-decision{margin-top:16px;border-color:#cfe0f7}
.andy-decision__actions{display:flex;gap:10px;padding:4px 18px 10px;flex-wrap:wrap}
.andy-decision__note{margin:0;padding:0 18px 16px;font-size:12px;color:#5b6b7f}

/* Cycle period notice: a step that is not open yet, or a closed period */
.andy-phase{display:flex;gap:8px;align-items:flex-start;margin:0 0 16px;padding:11px 15px;border-radius:10px;font-size:12.5px;line-height:1.55}
.andy-phase strong{flex:0 0 auto}
.andy-phase--open{background:#e9f6ef;border:1px solid #cbe9d9;color:#12734a}
.andy-phase--opens{background:#eef4fd;border:1px solid #d7e3f7;color:#20456f}
.andy-phase--closed{background:#fdf3e3;border:1px solid #f3e2bd;color:#8a5a12}
.andy-phase--override{background:#f4eefc;border:1px solid #e2d5f7;color:#5b3fa0}

/* Administration & Configuration */
.andy-admin__stats{grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:16px}
.andy-admin__tabs-list ul{list-style:none;margin:0;padding:4px 18px 18px}
.andy-admin__area{display:grid;grid-template-columns:104px 190px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--life-line-soft);font-size:12.5px}
.andy-admin__area:last-child{border-bottom:0}
.andy-admin__area strong{color:var(--life-ink);font-weight:700}
.andy-admin__note{color:#5b6b7f;font-size:12px}
.andy-admin__state{display:inline-block;text-align:center;font-size:10.5px;font-weight:750;letter-spacing:.03em;text-transform:uppercase;border-radius:20px;padding:3px 9px}
.andy-admin__state--ready{background:#e6f6ee;color:#12734a}
.andy-admin__state--existing{background:#fdf3e3;color:#8a5a12}
.andy-admin__state--planned{background:#eef1f5;color:#6b7787}
.andy-admin__panel{padding-bottom:18px}
.andy-admin__ready,.andy-admin__notice{display:flex;gap:14px;align-items:flex-start;padding:14px 18px}
.andy-admin__ready strong,.andy-admin__notice strong{display:block;font-size:13px;font-weight:750;color:var(--life-ink);margin-bottom:4px}
.andy-admin__ready span,.andy-admin__notice span{font-size:12.5px;color:#3d4a5c;line-height:1.55}
.andy-admin__ready .andy-btn{margin-left:auto;flex:0 0 auto}
.andy-admin__actions{display:flex;gap:10px;padding:0 18px 6px;flex-wrap:wrap}
@media(max-width:1200px){
.andy-admin__stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.andy-admin__area{grid-template-columns:1fr;gap:4px}
}

/* My Team */
.andy-grid--team{table-layout:fixed}
.andy-grid--team th:nth-child(1),.andy-grid--team td:nth-child(1){width:19%}
.andy-grid--team th:nth-child(2),.andy-grid--team td:nth-child(2){width:15%}
.andy-grid--team th:nth-child(3),.andy-grid--team td:nth-child(3){width:14%}
.andy-grid--team th:nth-child(4),.andy-grid--team td:nth-child(4){width:16%}
.andy-grid--team th:nth-child(5),.andy-grid--team td:nth-child(5){width:64px}
.andy-grid--team th:nth-child(6),.andy-grid--team td:nth-child(6){width:12%}
.andy-grid--team th:nth-child(7),.andy-grid--team td:nth-child(7){width:12%}
.andy-grid--team td{padding:12px}
.andy-grid--team tr.is-selected{background:#f7faff}
.andy-team__person{display:flex;gap:12px;align-items:center;padding:4px 18px 14px}
.andy-team__person strong{display:block;font-size:13.5px;font-weight:750;color:var(--life-ink)}
.andy-team__person span{font-size:11.5px;color:#8b97a8}
.andy-team__scores{list-style:none;margin:0;padding:12px 18px 16px;border-top:1px solid var(--life-line-soft);display:grid;grid-template-columns:1fr 1fr;gap:12px}
.andy-team__scores strong{display:block;font-size:16px;font-weight:750;color:var(--life-ink)}
.andy-team__scores span{font-size:11px;color:#8b97a8}
.andy-team__objectives,.andy-team__activity{list-style:none;margin:0;padding:4px 18px 16px;display:flex;flex-direction:column;gap:10px}
.andy-team__objectives li{display:grid;grid-template-columns:1fr 90px 42px;align-items:center;gap:8px;font-size:12px;color:#3d4a5c}
.andy-team__objectives li>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.andy-team__objectives em{font-style:normal;font-weight:750;color:var(--life-ink);text-align:right}
.andy-team__activity li{display:flex;align-items:center;gap:9px;font-size:12px;color:#3d4a5c}
.andy-team__activity svg{width:14px;height:14px;color:#2563eb;flex:0 0 14px}
.andy-team__activity span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.andy-team__activity em{font-style:normal;color:#8b97a8;font-size:11px;white-space:nowrap}
.andy-team__actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.andy-team__actions .andy-btn{justify-content:center;font-size:12px;padding:9px 10px}
/* My Team's person selector: the tabs used to repeat the whole member table, so the
   tab you were on was never visible in the content. This is deliberately a picker,
   not a table — it chooses one person rather than reporting on all of them. */
.andy-people-picker{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.andy-person-pick{display:flex;align-items:center;gap:9px;padding:7px 13px 7px 8px;border:1px solid #e2e8f0;border-radius:24px;background:#fff;text-decoration:none!important;color:inherit!important}
.andy-person-pick:hover{border-color:#b9cdea;background:#f8faff}
.andy-person-pick.is-active{border-color:#2f6bd8;background:#eef4ff;box-shadow:0 0 0 1px #2f6bd8 inset}
.andy-person-pick>span:last-child{display:block;min-width:0}
.andy-person-pick strong{display:block;font-size:12.5px;font-weight:700;color:var(--life-ink);white-space:nowrap}
.andy-person-pick small{display:block;font-size:11px;color:#8b97a8;white-space:nowrap}

/* Subscription & Plan - Change Plan */
.andy-plan__band{display:flex;gap:12px;align-items:flex-start;padding:16px 18px;background:#eef4fd;border:1px solid #d7e3f7;border-radius:12px;margin-bottom:16px}
.andy-plan__band strong{display:block;font-size:13px;font-weight:750;color:var(--life-ink);margin-bottom:3px}
.andy-plan__band span{font-size:12.5px;color:#3d4a5c;line-height:1.55}
.andy-plan__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,0.28fr);gap:16px;align-items:start}
.andy-plan__grid .andy-card{margin:0}
.andy-plan__main{display:flex;flex-direction:column;gap:16px;min-width:0}
.andy-plan__cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.andy-plan__card{display:flex;flex-direction:column;gap:8px;padding:20px;position:relative}
.andy-plan__card.is-current{border-color:#8fc7ea;box-shadow:0 0 0 2px rgba(37,99,235,.08)}
.andy-plan__flag{position:absolute;top:14px;right:14px}
.andy-plan__card h3{margin:0;font-size:15px;font-weight:750;color:var(--life-ink)}
.andy-plan__pitch{margin:0;font-size:12px;color:#8b97a8;min-height:32px}
.andy-plan__price{display:flex;flex-direction:column;gap:2px;margin:6px 0 10px}
.andy-plan__price strong{font-size:22px;font-weight:750;color:var(--life-ink)}
.andy-plan__price span{font-size:12px;color:#8b97a8}
.andy-plan__features{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:8px}
.andy-plan__features li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:#3d4a5c}
.andy-plan__features svg{width:14px;height:14px;color:#12734a;flex:0 0 14px}
.andy-plan__card .andy-btn{margin-top:auto;justify-content:center}
/* A card with two ways to pay stacks them: the provider's own button under the primary one. */
.andy-plan__card .andy-btn+.andy-btn{margin-top:10px}

.andy-plan__card--sales{border-style:dashed}
.andy-grid--plan{table-layout:fixed}
.andy-grid--plan th:first-child,.andy-grid--plan td:first-child{width:31%}
.andy-grid--plan th,.andy-grid--plan td{text-align:center}
.andy-grid--plan th:first-child,.andy-grid--plan td:first-child{text-align:left}
.andy-plan__tick{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#e6f6ee;color:#12734a}
.andy-plan__tick svg{width:11px;height:11px}
@media(max-width:1200px){
.andy-plan__grid{grid-template-columns:1fr}
.andy-plan__cards{grid-template-columns:1fr}
}

/* Onboarding setup flow */
/* The step indicator: six circles on one rail, with the connector drawn behind them. A
   completed step's outgoing segment is the brand blue and the rest are the line colour,
   which is how the mockups show how far the flow has come. */
.andy-onboard__steps{list-style:none;margin:0 0 18px;padding:18px 10px 14px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;background:#fff;border:1px solid var(--life-line);border-radius:12px}
.andy-onboard__step{position:relative;text-align:center}
.andy-onboard__step:not(:last-child)::after{content:"";position:absolute;top:13px;left:50%;width:100%;height:2px;background:var(--life-line)}
.andy-onboard__step.is-done::after{background:var(--andy-blue)}
.andy-onboard__step a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:0 8px;text-decoration:none!important;color:inherit!important;height:100%}
.andy-onboard__mark{position:relative;z-index:1;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#fff;border:2px solid var(--life-line);color:#8b97a8;font-size:11.5px;font-weight:750;margin-bottom:8px}
.andy-onboard__mark svg{width:14px;height:14px}
.andy-onboard__step.is-done .andy-onboard__mark,.andy-onboard__step.is-current .andy-onboard__mark{background:var(--andy-blue);border-color:var(--andy-blue);color:#fff}
.andy-onboard__step strong{font-size:12.5px;font-weight:700;color:var(--life-muted)}
.andy-onboard__step small{font-size:10.5px;color:#8b97a8}
.andy-onboard__step.is-done strong{color:var(--life-ink)}
.andy-onboard__step.is-current strong{color:var(--andy-blue)}
.andy-onboard__step a:hover .andy-onboard__mark{border-color:var(--andy-blue)}
.andy-onboard__step a:hover strong{color:var(--life-ink)}
.andy-onboard__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,0.3fr);gap:16px;align-items:start}
.andy-onboard__grid .andy-card{margin:0}
.andy-onboard__panel{padding-bottom:18px}
.andy-onboard__facts{padding:6px 18px 0}
.andy-onboard__hint{margin:14px 18px 0;font-size:12.5px;color:#5b6b7f;line-height:1.55}
.andy-onboard__hint a{color:var(--life-blue);font-weight:650}
.andy-onboard__split{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:18px;padding:6px 18px 0}
.andy-onboard__form h4{margin:0 0 12px;font-size:13px;font-weight:750;color:var(--life-ink)}

.andy-onboard__form .andy-btn{width:100%;justify-content:center}
.andy-onboard__form .andy-onboard__hint{margin:10px 0 0}
.andy-onboard__tree-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}
.andy-onboard__tree-head strong{font-size:12.5px;font-weight:750;color:var(--life-ink)}
.andy-onboard__root{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#eef4fd;border:1px solid #d7e3f7;border-radius:9px;font-size:12.5px;color:var(--life-ink)}
.andy-onboard__root svg{width:16px;height:16px;color:var(--life-blue)}
.andy-onboard__root small{color:#5b6b7f}
.andy-onboard__branches{list-style:none;margin:10px 0 0 14px;padding:0 0 0 14px;border-left:2px solid #e3e8ef;display:flex;flex-direction:column;gap:12px}
.andy-onboard__node{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--life-ink)}
.andy-onboard__node svg{width:15px;height:15px;color:var(--life-blue)}
.andy-onboard__node em{font-style:normal;color:#8b97a8;font-size:11.5px}
.andy-onboard__units{list-style:none;margin:8px 0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:7px 18px}
.andy-onboard__units li{display:flex;align-items:center;gap:7px;font-size:12px;color:#3d4a5c}
.andy-onboard__units svg{width:13px;height:13px;color:#8b97a8}
.andy-onboard__units em{font-style:normal;color:#8b97a8}
.andy-onboard__checks{list-style:none;margin:0;padding:6px 18px 0;display:flex;flex-direction:column;gap:10px}
.andy-onboard__checks li{display:flex;align-items:center;gap:11px}
.andy-onboard__check-mark{display:grid;place-items:center;width:22px;height:22px;flex:0 0 22px;border-radius:50%;background:#f0f2f6;color:#8b97a8;font-weight:750;font-size:12px}
.andy-onboard__check-mark svg{width:13px;height:13px}
.andy-onboard__checks li.is-ok .andy-onboard__check-mark{background:#e6f6ee;color:#12734a}
.andy-onboard__checks li.is-issue .andy-onboard__check-mark{background:#fdf3e3;color:#a86a12}
.andy-onboard__checks strong{display:block;font-size:12.5px;font-weight:700;color:var(--life-ink)}
.andy-onboard__checks small{font-size:11.5px;color:#8b97a8}
.andy-onboard__checks li>span{flex:1;min-width:0}
.andy-onboard__done{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:26px 24px 8px}
.andy-tile--lg{width:56px;height:56px;border-radius:16px}
.andy-tile--lg svg{width:26px;height:26px}
.andy-onboard__done strong{font-size:18px;font-weight:750;color:var(--life-ink)}
.andy-onboard__done p{margin:0;font-size:13px;color:#3d4a5c;max-width:520px;line-height:1.6}
.andy-onboard__next{display:block}
.andy-onboard__next-list{list-style:none;margin:0;padding:6px 18px 16px;display:flex;flex-direction:column;gap:14px}
.andy-onboard__next-list li{display:flex;align-items:flex-start;gap:10px;font-size:12.5px}
.andy-onboard__next-list .andy-onboard__mark{width:24px;height:24px;flex:0 0 24px;margin:0;font-size:11px}
.andy-onboard__next-list .andy-onboard__mark svg{width:12px;height:12px}
.andy-onboard__next-list strong{display:block;font-size:12.5px;font-weight:700;color:var(--life-muted)}
.andy-onboard__next-list small{font-size:11.5px;color:#8b97a8;line-height:1.5}
/* In the vertical list a completed step is the mockups' green tick, while the step the
   reader is on is the brand blue — the horizontal stepper uses blue for both. */
.andy-onboard__next-list li.is-done .andy-onboard__mark{background:#e6f6ee;border-color:#cbe9d9;color:#12734a}
.andy-onboard__next-list li.is-current .andy-onboard__mark{background:var(--andy-blue);border-color:var(--andy-blue);color:#fff}
.andy-onboard__next-list li.is-done strong{color:var(--life-ink)}
.andy-onboard__next-list li.is-current strong{color:var(--andy-blue)}
.andy-onboard__help{padding:18px;text-align:center}
.andy-onboard__art{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 12px;border-radius:18px;background:#eef4fd;color:var(--life-blue)}
.andy-onboard__art svg{width:30px;height:30px}
.andy-onboard__help h3{margin:0 0 8px;font-size:13.5px;font-weight:750;color:var(--life-ink)}
.andy-onboard__help p{margin:0 0 14px;font-size:12.5px;line-height:1.6;color:#3d4a5c;text-align:left}
.andy-onboard__benefits{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;text-align:left}
.andy-onboard__benefits li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:#3d4a5c}
.andy-onboard__benefits svg{width:14px;height:14px;color:#12734a;flex:0 0 14px}
.andy-onboard__help .andy-reports__templates,.andy-onboard__side .andy-reports__templates{padding-left:10px;padding-right:10px}
.andy-onboard__footer{display:flex;justify-content:space-between;align-items:center;margin-top:16px}
/* Step bodies: the panel's own padding, so a step's content and its tabs line up. */
.andy-onboard__body{padding:6px 18px 6px}
.andy-onboard__actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.andy-onboard__hint--inline{margin:0;padding:0 0 4px}
.andy-onboard__tabs{padding:0 18px;margin-bottom:4px}
.andy-onboard__org{margin:0}
.andy-onboard__split--org{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start}
.andy-onboard__fields{padding-bottom:6px}
.andy-onboard__pitch{background:var(--andy-blue-soft,#eff6ff);border:1px solid #dbe7fb;border-radius:12px;padding:18px;text-align:center}
.andy-onboard__pitch h3{margin:0 0 8px;font-size:14px;font-weight:750;color:var(--life-ink)}
.andy-onboard__pitch p{margin:0 0 14px;font-size:12.5px;line-height:1.6;color:#3d4a5c;text-align:left}
.andy-onboard__pitch .andy-onboard__benefits li{align-items:flex-start}
.andy-onboard__pitch .andy-onboard__benefits svg{width:16px;height:16px;color:var(--andy-blue);margin-top:2px}
.andy-onboard__benefits li span{display:flex;flex-direction:column;gap:1px}
.andy-onboard__benefits li strong{font-size:12.5px;font-weight:700;color:var(--life-ink)}
.andy-onboard__benefits li small{font-size:11.5px;color:#5b6b7f}
.andy-onboard__note{display:flex;align-items:flex-start;gap:9px;margin:14px 0 0;padding:11px 13px;background:var(--andy-blue-soft,#eff6ff);border:1px solid #dbe7fb;border-radius:10px;font-size:12.5px;color:#3d4a5c;line-height:1.55}
.andy-onboard__note svg{width:15px;height:15px;color:var(--andy-blue);flex:0 0 15px;margin-top:1px}
.andy-onboard__note strong{display:block;color:var(--life-ink)}
.andy-onboard__note a{color:var(--life-blue);font-weight:650}
.andy-onboard__tree{padding-bottom:6px}
.andy-onboard__branch{background:#fff;border:1px solid var(--life-line);border-radius:10px;padding:10px 12px}
.andy-onboard__branches{margin:14px 0 0;padding:0;border:0;gap:10px}
/* The rail's own cards. */
.andy-onboard__progress{padding:16px 18px}
.andy-onboard__progress-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:9px}
.andy-onboard__progress-head strong{font-size:12.5px;font-weight:750;color:var(--life-ink)}
.andy-onboard__progress-head span{font-size:12.5px;font-weight:750;color:var(--andy-blue)}
.andy-onboard__progress .andy-progress{margin-bottom:10px}
.andy-onboard__checks--rail{padding:12px 0 0;margin-top:12px;border-top:1px solid var(--life-line-soft);gap:12px}
/* Review: one card per block, each with the way back into the step that owns it. */
.andy-onboard__review{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:6px 18px 18px}
.andy-onboard__review-card{border:1px solid var(--life-line);border-radius:10px;padding:14px}
.andy-onboard__review-head{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.andy-onboard__review-head strong{flex:1;font-size:13px;font-weight:750;color:var(--life-ink)}
.andy-onboard__review-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--andy-blue-soft,#eff6ff);color:var(--andy-blue)}
.andy-onboard__review-icon svg{width:16px;height:16px}
.andy-onboard__review-facts{margin:0;display:flex;flex-direction:column;gap:7px}
.andy-onboard__review-facts>div{display:flex;gap:12px;font-size:12px}
.andy-onboard__review-facts dt{flex:0 0 42%;color:var(--life-muted);font-weight:650}
.andy-onboard__review-facts dd{margin:0;flex:1;min-width:0;color:var(--life-ink);overflow-wrap:anywhere}
/* Setup complete band. */
.andy-onboard__complete{display:flex;align-items:center;gap:16px;margin-top:16px;padding:18px 22px;background:#fff;border:1px solid var(--life-line);border-radius:12px}
.andy-onboard__complete>span:nth-child(2){flex:1;font-size:12.5px;color:#3d4a5c;line-height:1.55}
.andy-onboard__complete strong{display:block;font-size:14px;font-weight:750;color:var(--life-ink);margin-bottom:2px}
.andy-onboard__complete .as-lockup{height:34px}
.andy-grid--onboard th:nth-child(2),.andy-grid--onboard td:nth-child(2){width:26%}
.andy-grid--onboard th:nth-child(3),.andy-grid--onboard td:nth-child(3){width:24%}
.andy-flash{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:10px 14px;border-radius:10px;font-size:12.5px}
.andy-flash svg{width:14px;height:14px}
.andy-flash--ok{background:#e6f6ee;color:#12734a;border:1px solid #cbe9d9}
.andy-flash--warn{background:#fdf3e3;color:#8a5a12;border:1px solid #f3e2bd}
@media(max-width:1100px){
.andy-onboard__steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 0}
.andy-onboard__step:not(:last-child)::after{display:none}
.andy-onboard__grid{grid-template-columns:1fr}
.andy-onboard__split,.andy-onboard__split--org{grid-template-columns:1fr}
.andy-onboard__review{grid-template-columns:1fr}
.andy-onboard__complete{flex-wrap:wrap}
}

/* Appraisal & Review */
.andy-avatar2--lg{width:44px;height:44px;font-size:16px}
.andy-review__band{display:flex;align-items:center;gap:16px;padding:18px 22px;margin-bottom:16px}
.andy-review__who strong{display:block;font-size:16px;font-weight:750;color:var(--life-ink)}
.andy-review__who span{font-size:12.5px;color:var(--life-muted)}
.andy-review__facts{list-style:none;margin:0 0 0 auto;padding:0;display:grid;grid-template-columns:repeat(4,auto);gap:6px 28px}
.andy-review__facts li{display:flex;flex-direction:column;gap:2px}
.andy-review__facts span{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#8b97a8}
.andy-review__facts strong{font-size:12.5px;color:var(--life-ink)}
.andy-review__state{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:0 0 auto}
.andy-review__bar{display:flex;align-items:center;gap:8px;width:170px}
.andy-review__bar .andy-bar{flex:1}
.andy-review__bar em{font-style:normal;font-size:11.5px;color:#8b97a8;white-space:nowrap}
.andy-stepper{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;background:#fff;border:1px solid var(--life-line);border-radius:12px;overflow:hidden}
.andy-stepper__step{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border-right:1px solid var(--life-line-soft);position:relative}
.andy-stepper__step:last-child{border-right:0}
.andy-stepper__mark{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#eef1f5;color:#8b97a8;font-size:11px;font-weight:750;margin-bottom:6px}
.andy-stepper__mark svg{width:13px;height:13px}
.andy-stepper__step.is-done .andy-stepper__mark{background:#e6f6ee;color:#12734a}
.andy-stepper__step.is-current .andy-stepper__mark{background:#e3edfd;color:var(--life-blue)}
.andy-stepper__step strong{font-size:12.5px;font-weight:700;color:var(--life-ink)}
.andy-stepper__step small{font-size:11px;color:#8b97a8}
.andy-stepper__step em{font-style:normal;font-size:11px;font-weight:700;color:#8b97a8;margin-top:2px}
.andy-stepper__step.is-done em{color:#12734a}
.andy-stepper__step.is-current em{color:var(--life-blue)}
.andy-review__main{display:flex;flex-direction:column;gap:16px;min-width:0}
.andy-review__summary{padding-bottom:16px}
.andy-review__score{display:flex;align-items:baseline;gap:12px;padding:6px 18px 0}
.andy-review__score strong{font-size:34px;font-weight:750;color:var(--life-ink);line-height:1}
.andy-review__score strong small{font-size:14px;font-weight:600;color:#8b97a8;margin-left:2px}
.andy-review__note{margin:10px 18px 14px;font-size:12.5px;line-height:1.55;color:#3d4a5c}
.andy-review__meters{list-style:none;margin:0;padding:0 18px;display:flex;flex-direction:column;gap:9px}
.andy-review__meters li{display:flex;align-items:center;gap:12px;font-size:12.5px;color:#3d4a5c}
.andy-review__meters li>span:first-child{flex:0 0 150px}
.andy-review__meters .andy-bar{flex:1}
.andy-review__meters em{font-style:normal;font-weight:750;color:var(--life-ink);min-width:34px;text-align:right}
.andy-grid--review{table-layout:fixed}
.andy-grid--review th:nth-child(2),.andy-grid--review td:nth-child(2){width:30%}
.andy-grid--review td{padding:12px}
.andy-wf{list-style:none;margin:0;padding:4px 18px 16px;display:flex;flex-direction:column;gap:12px}
.andy-wf li{display:flex;gap:10px;align-items:flex-start}
.andy-wf__mark{display:grid;place-items:center;width:20px;height:20px;flex:0 0 20px;border-radius:50%;background:#eef1f5;color:#8b97a8;margin-top:1px}
.andy-wf__mark svg{width:12px;height:12px}
.andy-wf li.is-done .andy-wf__mark{background:#e6f6ee;color:#12734a}
.andy-wf li.is-current .andy-wf__mark{background:#e3edfd;color:var(--life-blue)}
.andy-wf strong{display:block;font-size:12.5px;font-weight:700;color:var(--life-ink)}
.andy-wf small{font-size:11px;color:#8b97a8}
.andy-sa__insight-body .andy-btn{width:100%;justify-content:center}
@media(max-width:1100px){
.andy-review__band{flex-wrap:wrap}
.andy-review__facts{grid-template-columns:repeat(2,auto);margin-left:0}
.andy-stepper{grid-template-columns:1fr}
.andy-stepper__step{border-right:0;border-bottom:1px solid var(--life-line-soft)}
}

/* My Actions / Notifications / Mentions */
.andy-tab__count{font-style:normal;font-size:11px;font-weight:750;background:#eef1f5;color:#5b6b7f;border-radius:20px;padding:1px 7px;margin-left:5px}

.andy-actions__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,0.28fr);gap:16px;align-items:start}
.andy-actions__grid .andy-card{margin:0}
.andy-actions__list{padding-bottom:8px}
.andy-actions__group{padding:0 18px}
.andy-actions__group h3{font-size:12px;font-weight:750;letter-spacing:.05em;text-transform:uppercase;color:#8b97a8;margin:16px 0 8px}
.andy-actions__group ul{list-style:none;margin:0;padding:0}
.andy-actions__item{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-top:1px solid var(--life-line-soft)}
.andy-actions__group ul li:first-child{border-top:0}
.andy-actions__item.is-unread{position:relative}
.andy-actions__item.is-unread::before{content:"";position:absolute;left:-10px;top:22px;width:6px;height:6px;border-radius:50%;background:var(--life-blue)}
.andy-actions__body{flex:1;min-width:0}
.andy-actions__body strong{display:block;font-size:13px;font-weight:700;color:var(--life-ink)}
.andy-actions__context{display:block;font-size:11.5px;color:#8b97a8;margin-top:2px}
.andy-actions__body p{margin:6px 0 0;font-size:12.5px;line-height:1.55;color:#3d4a5c}
.andy-actions__meta{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:0 0 auto}
.andy-actions__meta time{font-size:11.5px;color:#8b97a8;white-space:nowrap}
.andy-actions__meta .andy-btn{padding:6px 12px;font-size:12px}
.andy-reports__templates strong{font-weight:750;color:var(--life-ink);font-size:12px}
@media(max-width:1200px){.andy-actions__grid{grid-template-columns:1fr}}

/* Reports & Analytics */
.andy-reports__actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}
.andy-reports__action{display:flex;flex-direction:column;gap:8px;padding:18px 20px;margin:0;text-decoration:none!important;color:inherit!important}
.andy-reports__action:hover{border-color:#b9cdea}
.andy-reports__action strong{font-size:13.5px;font-weight:750;color:var(--life-ink)}
.andy-reports__action span{font-size:12px;color:var(--life-muted);line-height:1.5}
.andy-reports__action em{margin-top:auto;font-style:normal;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#2563eb}
.andy-reports__action svg{width:14px;height:14px}
.andy-reports__headline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.4fr);gap:16px;margin-bottom:16px}
.andy-report-slices{display:flex;align-items:center;gap:14px;padding:11px 14px;margin:-6px 0 16px;border:1px solid var(--life-line);border-radius:10px;background:#fff}
.andy-report-slices>span{font-size:11.5px;font-weight:750;color:var(--life-muted);white-space:nowrap}
.andy-report-slices .andy-workflow__chips{display:flex;flex-wrap:wrap;gap:6px}
.andy-report-delta{color:var(--andy-green)!important;text-transform:none!important;letter-spacing:0!important;font-weight:700!important}
.andy-report-delta.is-down{color:var(--andy-red)!important}
.andy-report-dashboard{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-bottom:16px}
.andy-report-panel{grid-column:span 6;margin:0!important;padding:0 16px 16px;min-width:0}
.andy-report-panel--trend{grid-column:span 8}
.andy-report-panel--status{grid-column:span 4}
.andy-report-panel .andy-card__head{padding:14px 0 10px;margin:0;border:0}
.andy-report-panel .andy-card__head h3{font-size:13.5px}
.andy-report-empty{display:flex;align-items:center;justify-content:center;min-height:120px;padding:18px;text-align:center;font-size:12px;color:var(--life-muted);background:#f8fafc;border-radius:8px}
.andy-report-chart{display:block;width:100%;height:220px;overflow:visible}
.andy-report-chart text{font-size:9px;fill:#8995a8}
.andy-report-chart .grid{stroke:#e5eaf1;stroke-width:1}
.andy-report-chart polyline{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.5}
.andy-report-chart .current{stroke:#2563eb}.andy-report-chart .previous{stroke:#aab4c4;stroke-dasharray:5 5}
.andy-report-chart circle{fill:#2563eb;stroke:#fff;stroke-width:1.5}
.andy-report-legend{display:flex;justify-content:center;gap:18px;font-size:10.5px;color:var(--life-muted)}
.andy-report-legend span{display:flex;align-items:center;gap:6px}.andy-report-legend i{width:18px;height:2px;background:#2563eb}.andy-report-legend i.is-previous{background:#aab4c4}
.andy-report-status-wrap{display:flex;align-items:center;justify-content:center;gap:24px;min-height:220px}
.andy-report-donut{width:132px;height:132px;border-radius:50%;display:grid;place-items:center;position:relative;flex:none}
.andy-report-donut:after{content:"";position:absolute;inset:24px;background:#fff;border-radius:50%}
.andy-report-donut span{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;font-size:9px;color:var(--life-muted)}
.andy-report-donut strong{font-size:22px;color:var(--life-ink);line-height:1}
.andy-report-status-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;min-width:126px}
.andy-report-status-list li{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--life-muted)}
.andy-report-status-list li>i{width:8px;height:8px;border-radius:50%;background:#94a3b8}.andy-report-status-list li>i.is-good{background:#159b65}.andy-report-status-list li>i.is-watch{background:#f59e0b}.andy-report-status-list li>i.is-risk{background:#ef4444}
.andy-report-status-list span{flex:1}.andy-report-status-list strong{color:var(--life-ink)}
.andy-report-bars{display:flex;flex-direction:column;gap:9px}
.andy-report-bar-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(110px,1.5fr) 44px;align-items:center;gap:10px;min-height:20px;font-size:11px}
.andy-report-bar-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#40506a}
.andy-report-bar-row>i,.andy-report-ranking>li>i{display:block;height:8px;border-radius:5px;background:#e8edf4;overflow:hidden}
.andy-report-bar-row b,.andy-report-ranking b{display:block;height:100%;background:#2563eb;border-radius:5px}.andy-report-bar-row b.is-good,.andy-report-ranking b.is-good{background:#159b65}.andy-report-bar-row b.is-watch,.andy-report-ranking b.is-watch{background:#f59e0b}.andy-report-bar-row b.is-risk,.andy-report-ranking b.is-risk{background:#ef4444}
.andy-report-bar-row>strong{font-size:11px;text-align:right}.andy-report-bar-row>em{grid-column:2/4;font-size:10.5px;color:var(--life-muted);font-style:normal}
.andy-report-ranking{margin:0;padding:0 0 0 22px;display:flex;flex-direction:column;gap:0}
.andy-report-ranking li{display:grid;grid-template-columns:minmax(120px,1.5fr) minmax(90px,1fr) 44px;align-items:center;gap:10px;padding:8px 0 8px 4px;border-bottom:1px solid #edf0f4;font-size:11px;color:#7b8797}
.andy-report-ranking li:last-child{border:0}.andy-report-ranking li>span{min-width:0}.andy-report-ranking a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--life-blue);font-weight:700;text-decoration:none!important}.andy-report-ranking small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--life-muted)}.andy-report-ranking li>strong{text-align:right;color:var(--life-ink)}
.andy-reports__fig{display:flex;flex-direction:column;gap:4px;padding:16px 18px;margin:0}
.andy-reports__fig span{font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#8b97a8}
.andy-reports__fig strong{font-size:22px;font-weight:750;color:var(--life-ink)}
.andy-reports__fig--note strong{font-size:14px}
.andy-reports__fig small{font-size:11px;color:#8b97a8;line-height:1.5}
.andy-reports__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,0.28fr);gap:16px;align-items:start}
.andy-reports__grid .andy-card{margin:0}
.andy-grid--reports{table-layout:fixed}
.andy-grid--reports th:nth-child(1),.andy-grid--reports td:nth-child(1){width:24%}
.andy-grid--reports th:nth-child(2),.andy-grid--reports td:nth-child(2){width:28%}
.andy-grid--reports th:nth-child(3),.andy-grid--reports td:nth-child(3){width:9%}
.andy-grid--reports th:nth-child(4),.andy-grid--reports td:nth-child(4){width:12%}
.andy-grid--reports th:nth-child(5),.andy-grid--reports td:nth-child(5){width:12%}
.andy-grid--reports td{padding:12px}
.andy-reports__name{display:flex;align-items:center;gap:8px}
.andy-reports__name svg{width:15px;height:15px;color:#2563eb}
.andy-grid--report-data th:first-child,.andy-grid--report-data td:first-child{width:30%}
.andy-reports__link{text-decoration:none!important;color:inherit!important;display:block}
.andy-reports__link strong{display:block;font-weight:700;color:var(--life-ink)}
.andy-reports__link small{display:block;font-size:11px;color:#8b97a8}
.andy-reports__link:hover strong{color:var(--life-blue)}
.andy-reports__templates{list-style:none;margin:0;padding:4px 12px 14px;display:flex;flex-direction:column;gap:2px}
.andy-reports__templates a{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;text-decoration:none!important;color:#3d4a5c!important;font-size:12.5px}
.andy-reports__templates a:hover{background:#f1f5fa;color:var(--life-blue)!important}
.andy-reports__templates svg{width:14px;height:14px;color:#2563eb}
.andy-reports__templates span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.andy-reports__templates svg:last-child{color:#a9b3c1}
.andy-assistant__limits .andy-btn{width:100%;justify-content:center;margin-top:4px}
@media(max-width:1200px){
.andy-reports__actions{grid-template-columns:repeat(2,minmax(0,1fr))}
.andy-reports__headline{grid-template-columns:repeat(2,minmax(0,1fr))}
.andy-reports__grid{grid-template-columns:1fr}
.andy-report-panel--trend,.andy-report-panel--status,.andy-report-panel{grid-column:span 12}
}
@media(max-width:700px){
.andy-reports__actions,.andy-reports__headline{grid-template-columns:1fr}
.andy-report-status-wrap{flex-direction:column;gap:14px}.andy-report-bar-row{grid-template-columns:minmax(80px,1fr) minmax(80px,1.2fr) 40px}.andy-report-ranking li{grid-template-columns:minmax(90px,1.4fr) minmax(70px,1fr) 40px}
}

/* People & Organisation */
.andy-people__stats{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:16px}
/* Five cards on one row, which is what the design shows. `.andy-people__stats` alone did not do it:
   `.andy-sa__stats` sets four columns and sits LATER in this file, so at equal specificity the shared
   rule won and the fifth card — "Without manager" — was orphaned onto a row of its own. The screenshot
   showed it; the markup could not. The two-argument selector settles it by specificity instead of by
   order, and the media queries below put the narrow screens back the way they were, because a media
   query adds no specificity of its own. */
.andy-sa__stats.andy-people__stats{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1200px){
  .andy-sa__stats.andy-people__stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .andy-sa__stats.andy-people__stats{grid-template-columns:1fr}
}
@media(max-width:1200px){.andy-people__stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.andy-people__stats{grid-template-columns:1fr}}
.andy-people__stats .andy-sa__stat em{color:#8b97a8;font-weight:600}
.andy-grid--people{table-layout:fixed}
.andy-grid--people th:nth-child(1),.andy-grid--people td:nth-child(1){width:20%}
.andy-grid--people th:nth-child(2),.andy-grid--people td:nth-child(2){width:13%}
.andy-grid--people th:nth-child(3),.andy-grid--people td:nth-child(3){width:13%}
.andy-grid--people th:nth-child(4),.andy-grid--people td:nth-child(4){width:13%}
.andy-grid--people th:nth-child(5),.andy-grid--people td:nth-child(5){width:12%}
.andy-grid--people th:nth-child(6),.andy-grid--people td:nth-child(6),
.andy-grid--people th:nth-child(7),.andy-grid--people td:nth-child(7){width:64px}
.andy-grid--people th:nth-child(8),.andy-grid--people td:nth-child(8){width:104px}
.andy-grid--people td{padding:12px}
.andy-struct{border-top:1px solid var(--life-line);padding:16px 20px}
.andy-struct:first-of-type{border-top:0}
.andy-struct__dept{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--life-ink)}
.andy-struct__dept svg{width:15px;height:15px;color:#2563eb}
.andy-struct__dept strong{font-weight:750}
.andy-struct__units{list-style:none;margin:12px 0 0 16px;padding:0 0 0 14px;border-left:2px solid #e3e8ef;display:flex;flex-direction:column;gap:9px}
.andy-struct__units li{display:flex;align-items:center;gap:10px;font-size:12.5px;color:#3d4a5c}
.andy-struct__unit-name{font-weight:650;min-width:150px}
.andy-struct__units em{font-style:normal;color:#8b97a8;font-size:12px}
.andy-struct__units .andy-link{margin-left:auto}
.andy-people__donut{padding-bottom:16px}
.andy-donut{--andy-donut:0%;width:118px;height:118px;margin:6px auto 12px;border-radius:50%;display:grid;place-items:center;
background:conic-gradient(#12734a var(--andy-donut), #eef1f5 0);position:relative}
.andy-donut::after{content:"";position:absolute;inset:13px;border-radius:50%;background:#fff}
.andy-donut span{position:relative;z-index:1;text-align:center;line-height:1.15}
.andy-donut strong{display:block;font-size:20px;font-weight:750;color:var(--life-ink)}
.andy-donut small{font-size:10.5px;color:#8b97a8}
.andy-legend{list-style:none;margin:0;padding:0 18px;display:flex;flex-direction:column;gap:7px}
.andy-legend li{display:flex;align-items:center;gap:8px;font-size:12px;color:#3d4a5c}
.andy-legend i{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
.andy-legend i.is-good{background:#12734a}
.andy-legend i.is-risk{background:#d8842c}
.andy-legend em{margin-left:auto;font-style:normal;font-weight:700;color:var(--life-ink)}
.andy-tip svg{width:14px;height:14px;color:#2563eb;vertical-align:-2px;margin-right:4px}

/* Administration: audit log */
.andy-audit__stats{margin-bottom:16px}
.andy-audit__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,0.3fr);gap:16px;align-items:start}
.andy-audit__grid .andy-card{margin:0}
.andy-audit__filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px 18px;border-top:1px solid var(--life-line);border-bottom:1px solid var(--life-line);background:#fbfcfe}
.andy-audit__filters input[type=search],.andy-audit__filters select{height:34px;margin:0;border:1px solid #d7dde7;border-radius:9px;background:#fff;font-size:12.5px;padding:0 10px}
.andy-audit__filters input[type=search]{flex:1;min-width:200px}
.andy-audit__filters .andy-btn{padding:7px 14px}
.andy-grid--audit{table-layout:fixed}
.andy-grid--audit th:nth-child(1),.andy-grid--audit td:nth-child(1){width:104px}
.andy-grid--audit th:nth-child(2),.andy-grid--audit td:nth-child(2){width:16%}
.andy-grid--audit th:nth-child(3),.andy-grid--audit td:nth-child(3){width:11%}
.andy-grid--audit th:nth-child(4),.andy-grid--audit td:nth-child(4){width:16%}
.andy-grid--audit th:nth-child(6),.andy-grid--audit td:nth-child(6){width:110px}
.andy-grid--audit td{padding:12px}
.andy-audit__details{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Long unbroken strings (JSON payloads, URLs) in the audit trail overflowed by up to
   319px — on desktop as well as a phone. `anywhere` lets them break at any character. */
.andy-audit__details{overflow-wrap:anywhere;white-space:normal}
.andy-audit__pager{display:flex;align-items:center;gap:12px}
.andy-audit__pager svg{width:13px;height:13px;vertical-align:-2px}
/* The quick actions are the design's 2×2 grid of short destination buttons, not a vertical stack:
   stacked, four actions read as a menu down the side of the page. The padding matches the card body
   so a card whose content stops before its foot agrees with one whose content does not. */
.andy-audit__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 20px 18px}
.andy-audit__actions .andy-btn{justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1200px){
.andy-audit__grid{grid-template-columns:1fr}
}

/* Strategy & Alignment landing page */
.andy-sa svg{flex:0 0 auto;width:15px;height:15px}

.andy-card__footer-link svg{width:13px;height:13px;vertical-align:-2px}
.andy-sa__band{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:0;background:#eef4fd;border:1px solid #d7e3f7;border-radius:12px;margin-bottom:18px;overflow:hidden}
.andy-sa__vision{display:flex;gap:14px;padding:22px 24px;border-right:1px solid #d7e3f7}
.andy-sa__vision h2{font-size:15px;font-weight:750;color:var(--life-ink);margin:0 0 8px}
.andy-sa__vision p{margin:0;font-size:13px;line-height:1.6;color:#3d4a5c;max-width:560px}
.andy-sa__themes{padding:22px 24px}
.andy-sa__themes h3{font-size:13px;font-weight:750;color:var(--life-ink);margin:0 0 12px}
.andy-sa__themes ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}
.andy-sa__themes li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:#3d4a5c;font-weight:600}
.andy-sa__theme-icon{display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;border-radius:7px;background:#fff;color:#2563eb}
.andy-sa__theme-icon svg{width:14px;height:14px}
.andy-sa__themes em{margin-left:auto;font-style:normal;font-size:11px;font-weight:750;color:#5b6b7f;background:#fff;border-radius:20px;padding:2px 8px}
.andy-sa__stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}
.andy-sa__stat{display:flex;flex-direction:column;gap:6px;padding:18px 20px;margin:0;text-decoration:none!important;color:inherit!important}
.andy-sa__stat:hover{border-color:#b9cdea}
.andy-sa__stat strong{font-size:26px;font-weight:750;color:var(--life-ink);line-height:1.1;margin-top:4px}
.andy-sa__stat-label{font-size:12.5px;color:var(--life-muted);font-weight:600;line-height:1.4}
.andy-sa__stat em{margin-top:auto;font-style:normal;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#2563eb}
.andy-sa__stat em svg{width:14px;height:14px}
.andy-sa__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start;
	grid-template-areas:"health insight" "table table"}
.andy-sa__grid .andy-card{margin:0}
.andy-sa__side{display:contents}
.andy-sa__health{grid-area:health}
.andy-sa__insight{grid-area:insight}
.andy-sa__grid .andy-card--table{grid-area:table}
.andy-sa__filters{display:flex;gap:8px;align-items:center}
.andy-sa__filters select,.andy-sa__filters input[type=search]{height:34px;margin:0;border:1px solid #d7dde7;border-radius:9px;background:#fff;font-size:12.5px;padding:0 10px}
.andy-sa__filters input[type=search]{min-width:210px}
.andy-grid--sa{table-layout:fixed}
.andy-grid--sa th:nth-child(1),.andy-grid--sa td:nth-child(1){width:32px}
.andy-grid--sa th:nth-child(2),.andy-grid--sa td:nth-child(2){width:25%}
.andy-grid--sa th:nth-child(3),.andy-grid--sa td:nth-child(3){width:12%}
.andy-grid--sa th:nth-child(4),.andy-grid--sa td:nth-child(4){width:13%}
.andy-grid--sa th:nth-child(5),.andy-grid--sa td:nth-child(5){width:48px}
.andy-grid--sa th:nth-child(6),.andy-grid--sa td:nth-child(6){width:13%}
.andy-grid--sa th:nth-child(7),.andy-grid--sa td:nth-child(7){width:96px}
.andy-grid--sa th:nth-child(8),.andy-grid--sa td:nth-child(8){width:104px}
.andy-grid--sa th:nth-child(9),.andy-grid--sa td:nth-child(9){width:44px}
.andy-grid--sa th,.andy-grid--sa td{padding:12px 8px}
.andy-grid--sa thead th{padding-top:14px;padding-bottom:10px;font-size:11.5px;letter-spacing:.02em;text-transform:uppercase;color:#8b97a8;vertical-align:bottom}
.andy-grid--sa td{font-size:13px}
.andy-grid--sa th{white-space:normal;line-height:1.35}
.andy-grid--sa .andy-sa__theme,.andy-grid--sa .andy-person strong,.andy-grid--sa .andy-person small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.andy-grid--sa .andy-person>span{min-width:0}
.andy-grid--sa .andy-progress{min-width:0;gap:8px}
.andy-grid--sa .andy-progress em{min-width:34px}
.andy-sa__theme{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#3d4a5c;font-weight:600}
.andy-grid--sa .andy-sa__theme{gap:6px;font-size:12px}
.andy-grid--sa .andy-sa__theme svg{width:13px;height:13px}
.andy-grid--sa .andy-person{gap:7px}
.andy-grid--sa .andy-avatar2{width:24px;height:24px;font-size:11px}
.andy-sa__theme svg{width:15px;height:15px;color:#2563eb}
.andy-sa__more{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:7px;color:#8b97a8}
.andy-sa__more:hover{background:#f1f5fa;color:var(--life-blue)}
.andy-sa__more svg{width:16px;height:16px}
.andy-sa__health .andy-card__head h3,.andy-sa__insight .andy-card__head h3{display:flex;align-items:center;gap:8px}
.andy-sa__health svg,.andy-sa__insight svg{width:16px;height:16px;color:#2563eb}
.andy-health{list-style:none;margin:0;padding:4px 18px 8px}
.andy-health li{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--life-line-soft);font-size:12.5px;color:#3d4a5c}
.andy-health li:last-child{border-bottom:0}
.andy-health__mark{display:grid;place-items:center;width:20px;height:20px;flex:0 0 20px;border-radius:50%}
.andy-health__mark svg{width:12px;height:12px}
.andy-health li.is-ok .andy-health__mark{background:#e6f6ee;color:#12734a}
.andy-health li.is-issue .andy-health__mark{background:#fdecee;color:#b3323f}
.andy-health__label{flex:1;min-width:0}
.andy-health strong{font-weight:750;color:var(--life-ink);white-space:nowrap}
.andy-sa__insight-body{padding:4px 18px 18px}
.andy-sa__insight-body p{margin:0 0 10px;font-size:12.5px;line-height:1.55;color:#3d4a5c}
.andy-sa__insight-list{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:6px}
.andy-sa__insight-list li{font-size:12px;color:#5b6b7f;padding-left:12px;position:relative}
.andy-sa__insight-list li::before{content:"";position:absolute;left:0;top:6px;width:5px;height:5px;border-radius:50%;background:#e0a12c}
.andy-sa__insight-body .andy-btn{width:100%;justify-content:center}
.andy-sa__insight-body small{display:block;margin-top:10px;font-size:11px;color:#8b97a8}
.andy-sa__override{margin-top:12px;padding-top:10px;border-top:1px solid #d7e3f7}
.andy-sa__override-form{display:flex;flex-direction:column;gap:8px}
.andy-sa__override-fields{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.andy-sa__override-fields input[type=text]{flex:1 1 200px;min-width:160px;height:36px;padding:0 10px;border:1px solid #d7dde7;border-radius:8px;font-size:13px}
.andy-sa__override-fields .andy-btn{flex:0 0 auto}
.andy-sa__override-fields{align-items:flex-end}
.andy-sa__override-fields .andy-field{flex:1 1 220px}
/* Strategy home: the status proposal and publication controls inside an objective row. */
.andy-sa__pending{display:block}
.andy-sa__propose{margin-top:4px}
.andy-sa__status-form{min-width:240px;padding-top:6px;gap:10px}
.andy-sa__status-form .andy-form__actions{padding-top:8px}
.andy-sa__publish{margin:4px 0 0}
.andy-sa__classify{display:block;margin-top:4px;font-size:12px}
.andy-sa__override-note{font-size:11px;color:#7b8a9e;line-height:1.4}
.andy-sa__map{padding-bottom:8px}
.andy-map{border-top:1px solid var(--life-line);padding:16px 20px}
.andy-map:first-of-type{border-top:0}
.andy-map__objective{display:flex;align-items:center;gap:12px}
.andy-map__objective .andy-link{margin-left:auto}
.andy-map__empty{margin:10px 0 0;font-size:12px;color:#8b97a8}
.andy-map__branches{list-style:none;margin:14px 0 0;padding:0 0 0 14px;border-left:2px solid #e3e8ef;display:flex;flex-direction:column;gap:12px}
.andy-map__branch{display:flex;align-items:center;gap:10px;font-size:12.5px;color:#3d4a5c}
.andy-map__branch svg{width:15px;height:15px;color:#2563eb}
.andy-map__branch em{font-style:normal;font-weight:750;color:var(--life-ink)}
.andy-map__units{list-style:none;margin:8px 0 0 24px;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px}
.andy-map__units li{font-size:12px;color:#5b6b7f;display:flex;gap:6px;align-items:center}
.andy-map__units em{font-style:normal;font-weight:700;color:#8b97a8}
@media(max-width:1200px){
.andy-sa__band{grid-template-columns:1fr}
.andy-sa__vision{border-right:0;border-bottom:1px solid #d7e3f7}
.andy-sa__stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.andy-sa__grid{grid-template-columns:1fr;
	grid-template-areas:"health" "insight" "table"}
.andy-sa__side{display:contents}
}
@media(max-width:700px){
.andy-sa__stats{grid-template-columns:1fr}
.andy-sa__themes ul{grid-template-columns:1fr}
.andy-sa__filters{flex-direction:column;align-items:stretch}
}

/* ============================================================
   Performance drill-down (design: "Performance Drill-down -
   Page by Page"): ring + counts, contributing grid, overview.
   ============================================================ */
.andy-drill__id{display:flex;align-items:center;gap:14px;min-width:0}
.andy-drill__copy{min-width:0}
.andy-drill__copy h1{margin:0 0 4px}
.andy-drill__top{display:grid;grid-template-columns:250px minmax(0,1fr);gap:16px;align-items:stretch;margin-bottom:16px}
.andy-drill__ring{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;margin:0;padding:22px}
.andy-drill__caption{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#8b97a8}
.andy-drill__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}
.andy-drill__stats--kpi{grid-template-columns:repeat(3,minmax(0,1fr))}
.andy-stat3--link{text-decoration:none!important;color:inherit!important}
.andy-stat3--link:hover{border-color:#b9cdea}
.andy-stat3__copy{display:flex;flex-direction:column;gap:2px}
.andy-stat3__copy strong{font-size:22px;font-weight:750;color:var(--life-ink);line-height:1.1}
.andy-stat3__copy span{font-size:12.5px;color:var(--life-muted);font-weight:600}
.andy-stat3 strong.is-risk{color:#b3323f}
.andy-drill__note{margin:0 0 16px;font-size:12.5px;color:var(--life-muted)}
.andy-drill__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,0.32fr);gap:16px;align-items:start}
.andy-drill__grid--3{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.1fr)}
.andy-drill__grid .andy-card{margin:0}
.andy-grid--drill th:nth-child(1),.andy-grid--drill td:nth-child(1){width:34%}
.andy-drill__index{display:inline-block;min-width:18px;margin-right:8px;color:#a9b3c1;font-size:12px;font-weight:750}
.andy-grid--drill .andy-obj__copy{display:inline-block;vertical-align:middle;max-width:88%}
.andy-review-mini{padding:4px 18px 18px}
.andy-review-mini strong{display:block;font-size:24px;font-weight:750;color:#1f8a4c;line-height:1.1}
.andy-review-mini small{display:block;margin:4px 0 8px;color:var(--life-muted);font-size:11.5px}
.andy-review-mini p{margin:0;font-size:12.5px;color:#3d4a5c;line-height:1.5}
@media(max-width:1100px){
.andy-drill__top{grid-template-columns:1fr}
.andy-drill__grid,.andy-drill__grid--3{grid-template-columns:1fr}
}

/* ============================================================
   Strategy: guided "Create and Cascade Objectives" wizard
   ============================================================ */
.andy-strategy h1{font-size:25px;font-weight:750;letter-spacing:-.3px;color:var(--life-ink);margin:0 0 5px;line-height:1.22}
.andy-strategy p{margin:0;color:var(--life-muted);font-size:13px}
.andy-strategy h3{font-size:14px;font-weight:750;color:var(--life-ink);margin:0 0 6px}
.andy-wiz{list-style:none;display:flex;align-items:center;gap:0;margin:0 0 20px;padding:10px 4px 14px;border-bottom:1px solid var(--life-line);overflow-x:auto}
.andy-wiz li{display:flex;align-items:center;gap:9px;padding-right:48px;position:relative;white-space:nowrap}
.andy-wiz li:not(:last-child)::after{content:"";position:absolute;left:30px;right:14px;top:15px;height:2px;background:#e3e8ef}
.andy-wiz li.is-done:not(:last-child)::after{background:#2563eb}
.andy-wiz__mark{position:relative;z-index:1;display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:50%;border:2px solid #d5dce7;background:#fff;color:#8b97a8;font-size:12.5px;font-weight:750}
.andy-wiz li.is-active .andy-wiz__mark{border-color:#2563eb;color:#2563eb}
.andy-wiz li.is-done .andy-wiz__mark{background:#2563eb;border-color:#2563eb;color:#fff}
.andy-wiz__label{position:relative;z-index:1;background:#f7f9fc;padding:0 7px;font-size:13.5px;font-weight:650;color:#8b97a8}
.andy-wiz li.is-active .andy-wiz__label{color:#2563eb}
.andy-wiz li.is-done .andy-wiz__label{color:var(--life-ink)}
.andy-wiz__head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 16px}
.andy-wiz__actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:18px 0 0}
.andy-wiz__actions .andy-btn:only-child{margin-left:auto}

/* step 1 - type cards */
.andy-typegrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.andy-typecard{position:relative;display:flex;flex-direction:column;gap:8px;padding:22px 20px;background:#fff;border:1.5px solid var(--life-line);border-radius:12px;cursor:pointer}
.andy-typecard:hover{border-color:#b9cdea}
.andy-typecard.is-selected{border-color:#2563eb;box-shadow:0 0 0 3px #e8f0fe}
.andy-typecard input[type=radio]{position:absolute;top:14px;right:14px;opacity:0;pointer-events:none}
.andy-typecard__check{position:absolute;top:12px;right:12px;display:none;place-items:center;width:22px;height:22px;border-radius:50%;background:#2563eb;color:#fff}
.andy-typecard__check svg{width:13px;height:13px}
.andy-typecard.is-selected .andy-typecard__check{display:grid}
.andy-typecard strong{font-size:14.5px;font-weight:750;color:var(--life-ink);line-height:1.35}
.andy-typecard>small{color:var(--life-muted);font-size:12.5px;line-height:1.5}
.andy-typecard ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.andy-typecard ul li{display:flex;align-items:flex-start;gap:7px;font-size:12px;color:#4b5565}
.andy-typecard ul li svg{width:13px;height:13px;flex:0 0 13px;color:#1f8a4c;margin-top:2px}

/* step 2 - alignment */
.andy-align{padding:18px 20px}
.andy-align>p{font-size:12.5px;margin-bottom:14px}
.andy-pyramid{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:16px}
.andy-pyramid__tier{display:block;padding:9px 12px;border-radius:7px;font-size:12px;font-weight:650;text-align:center;background:#f1f5fa;color:#5b6b7f;border:1px solid #e3e8ef}
.andy-pyramid__top{width:58%}
.andy-pyramid__mid{width:72%}
.andy-pyramid__low{width:86%}
.andy-pyramid__base{width:100%}
.andy-pyramid__tier.is-current{background:#e8f0fe;color:#2563eb;border-color:#b9cdea}
.andy-align__note{display:flex;flex-direction:column;gap:3px;padding:12px 14px;background:#f7fafd;border-radius:9px}
.andy-align__note strong{font-size:12px;font-weight:750;color:var(--life-ink)}
.andy-align__note span{font-size:12px;color:var(--life-muted)}

/* steps 3-4 - editable grids */
.andy-grid--kpi-form{table-layout:fixed}
.andy-grid--kpi-form th:nth-child(1),.andy-grid--kpi-form td:nth-child(1){width:58px}
.andy-grid--kpi-form th:nth-child(2),.andy-grid--kpi-form td:nth-child(2){width:25%}
.andy-grid--kpi-form th:nth-child(3),.andy-grid--kpi-form td:nth-child(3){width:21%}
.andy-grid--kpi-form th:nth-child(4),.andy-grid--kpi-form td:nth-child(4){width:11%}
.andy-grid--kpi-form th:nth-child(5),.andy-grid--kpi-form td:nth-child(5){width:11%}
.andy-grid--kpi-form th:nth-child(6),.andy-grid--kpi-form td:nth-child(6){width:19%}
/* with the Results column (KpiAggregate): name, measure, weight, target, direction, results; owner takes the rest */
.andy-grid--kpi-combine th:nth-child(2),.andy-grid--kpi-combine td:nth-child(2){width:20%}
.andy-grid--kpi-combine th:nth-child(3),.andy-grid--kpi-combine td:nth-child(3){width:15%}
.andy-grid--kpi-combine th:nth-child(4),.andy-grid--kpi-combine td:nth-child(4),.andy-grid--kpi-combine th:nth-child(5),.andy-grid--kpi-combine td:nth-child(5){width:9%}
.andy-grid--kpi-combine th:nth-child(6),.andy-grid--kpi-combine td:nth-child(6),.andy-grid--kpi-combine th:nth-child(7),.andy-grid--kpi-combine td:nth-child(7){width:14%}
.andy-grid--cascade{table-layout:fixed}
.andy-grid--cascade th:nth-child(2),.andy-grid--cascade td:nth-child(2){width:26%}
.andy-grid--cascade th:nth-child(3),.andy-grid--cascade td:nth-child(3){width:22%}
.andy-grid--cascade th:nth-child(4),.andy-grid--cascade td:nth-child(4){width:12%}
.andy-grid--cascade th:nth-child(5),.andy-grid--cascade td:nth-child(5){width:22%}
.andy-grid--kpi-form input,.andy-grid--kpi-form select,.andy-grid--cascade input[type=number],.andy-grid--cascade select{width:100%;margin:0;border:1px solid #d7dde7;border-radius:8px;padding:8px 10px;font-size:12.5px;background:#fff;color:var(--life-ink);min-width:0}
.andy-grid--kpi-form input:focus,.andy-grid--kpi-form select:focus,.andy-grid--cascade input:focus,.andy-grid--cascade select:focus{border-color:#2563eb;outline:0;box-shadow:0 0 0 3px #e8f0fe}
.andy-grid--kpi-form td,.andy-grid--cascade td{padding:10px 12px}
.andy-grid--kpi-form th,.andy-grid--cascade th{padding:12px}
.andy-grid--kpi-form .andy-grid__num input{text-align:right}
.andy-grid__pick{width:44px;text-align:center}
.andy-grid__handle{width:58px;padding:6px 8px!important;white-space:nowrap}
.andy-drag{cursor:grab;color:#a9b3c1;font-size:16px;line-height:1;margin-right:4px;user-select:none}
.andy-kpi-row.is-dragging{opacity:.5;background:#f3f7fd}
.andy-move{display:inline-flex;flex-direction:column;vertical-align:middle}
.andy-move button{background:transparent;border:0;color:#8b97a8;font-size:8px;line-height:1;padding:1px 3px;cursor:pointer}
.andy-move button:hover{color:var(--life-blue)}
.andy-done__stamp{margin-top:10px;font-size:12px;font-weight:700;color:#12734a;background:#e6f6ee;padding:5px 12px;border-radius:20px}
.andy-grid__pick input[type=checkbox]{width:16px;height:16px;margin:0}
.andy-row-remove{background:transparent;border:0;color:#c0392b;font-size:19px;line-height:1;cursor:pointer;padding:0 4px}
.andy-row-remove:hover{color:#96291e}
.andy-total{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-top:1px solid var(--life-line);background:#fbfcfe;font-size:13px;color:var(--life-muted)}
.andy-total strong{font-size:15px;font-weight:750;color:var(--life-ink)}
.andy-total strong.is-ok{color:#12734a}
.andy-total strong.is-over{color:#b3323f}
.andy-total strong.is-under{color:#a5731a}
.andy-tip{margin:12px 2px 0;font-size:12.5px;color:var(--life-muted)}

/* step 5 - review */
.andy-ready{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:11px;background:#fdf8ec;border:1px solid #f3e2bd;margin-bottom:16px}
.andy-ready__mark{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:#fff;border:1px solid #f3e2bd;color:#a5731a}
.andy-ready__mark svg{width:19px;height:19px}
.andy-ready strong{display:block;font-size:14px;font-weight:750;color:#8a6a17}
.andy-ready span{font-size:12.5px;color:#8a6a17}
.andy-ready.is-ready{background:#f1fbf5;border-color:#bfe4cf}
.andy-ready.is-ready .andy-ready__mark{background:#1f8a4c;border-color:#1f8a4c;color:#fff}
.andy-ready.is-ready strong,.andy-ready.is-ready span{color:#12734a}
.andy-checks{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.andy-checks li{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid var(--life-line);border-radius:10px;background:#fff}
.andy-checks__mark{display:grid;place-items:center;width:20px;height:20px;flex:0 0 20px;border-radius:50%;background:#eef1f5;color:#8b97a8;font-size:12px;font-weight:750}
.andy-checks li.is-ok .andy-checks__mark{background:#e6f6ee;color:#12734a}
.andy-checks li.is-todo .andy-checks__mark{background:#fdf3e0;color:#a5731a}
.andy-checks strong{display:block;font-size:12.5px;font-weight:750;color:var(--life-ink)}
.andy-checks small{display:block;color:var(--life-muted);font-size:11.5px;margin-top:2px}

/* step 6 - activated */
.andy-done{display:flex;flex-direction:column;align-items:center;text-align:center;padding:26px 20px 30px}
.andy-done__mark{display:grid;place-items:center;width:78px;height:78px;border-radius:50%;background:#e6f6ee;color:#1f8a4c;margin-bottom:16px}
.andy-done__mark svg{width:38px;height:38px}
.andy-done h1{margin-bottom:8px}
.andy-done p{max-width:520px}
.andy-nextgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:6px}
.andy-next{display:flex;flex-direction:column;gap:8px;padding:20px;background:#fff;border:1px solid var(--life-line);border-radius:12px}
.andy-next strong{font-size:13.5px;font-weight:750;color:var(--life-ink)}
.andy-next>span:last-child{font-size:12.5px;color:var(--life-muted)}

/* strategy: responsive */
@media(max-width:1100px){
.andy-typegrid{grid-template-columns:repeat(2,minmax(0,1fr))}
.andy-checks,.andy-nextgrid{grid-template-columns:1fr}
}
@media(max-width:760px){
.andy-typegrid{grid-template-columns:1fr}
.andy-wiz li{padding-right:26px}
}
/* On a phone the six step labels cannot fit on one line — the rail was 377px wider than
   a 390px screen, pushing the current step off-screen. Collapse to numbered dots: every
   label hides except the current one, which reads as "3 · KPIs" beside its dot. The
   connector line still shows progress, so nothing is lost except the labels nobody
   could see anyway. */
@media(max-width:700px){
.andy-wiz{padding:10px 0 14px}
.andy-wiz li{padding-right:18px}
.andy-wiz__label{display:none}
.andy-wiz li.is-active .andy-wiz__label{display:inline;padding:0 4px 0 0;font-size:12.5px}
.andy-wiz li:not(:last-child)::after{left:30px;right:2px}
}

/* ============================================================
   Performance lifecycle (design: "Performance Lifecycle -
   Monitor, Update, Track"): page head, tabs, cards, grids,
   score rings, update form, evidence, review.
   ============================================================ */
.andy-life{--life-ink:#0f1e35;--life-muted:#5b6b7f;--life-line:#e6eaf0;--life-line-soft:#eef1f5;--life-blue:#2f6bd8;color:var(--life-ink)}
/* The life tokens are used by appraisals, people, My Team, Reports and Strategy &
   Alignment alike, so they cannot live only on .andy-life: on a page without that
   class every var(--life-*) resolved to nothing, which silently killed colours and
   borders (var() is invalid at computed-value time, so the declaration is dropped —
   an undefined token is not an error you can see, it is a missing line). Defining
   them on every andy page makes a shared card the same card wherever it is used. */
.andy-page{--life-ink:#0f1e35;--life-muted:#5b6b7f;--life-line:#e6eaf0;--life-line-soft:#eef1f5;--life-blue:#2f6bd8}
.andy-life h1{font-size:27px;font-weight:750;letter-spacing:-.3px;color:var(--life-ink);margin:0 0 6px;line-height:1.22}
.andy-life h3{font-size:14.5px;font-weight:750;color:var(--life-ink);margin:0}
.andy-life p{margin:0;color:var(--life-muted);font-size:14px}

/* page head + cycle meta */
.andy-page__head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:0 0 20px}
.andy-page__head>div:first-child{min-width:0}
.andy-page__head h1{margin-bottom:5px}
.andy-cycle{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:4px;flex:0 0 auto;padding-top:4px}
.andy-cycle__label{font-size:10.5px;font-weight:750;letter-spacing:.09em;text-transform:uppercase;color:#7b8798}
.andy-cycle strong{font-size:13px;font-weight:750;color:var(--life-ink)}
.andy-cycle__chip{margin-top:3px}

/* breadcrumbs */
.andy-crumbs{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--life-muted);margin:0 0 12px}
.andy-crumbs a{color:var(--life-blue)!important;text-decoration:none!important;font-weight:600}
.andy-crumbs a:hover{text-decoration:underline!important}
.andy-crumbs__sep{color:#a9b3c1}

/* toast (flash) */
.andy-toast{display:flex;align-items:center;gap:9px;padding:12px 18px;margin:0 0 16px;border:1px solid #cfe8db;background:#f2fbf6;border-radius:10px;font-size:13px}
.andy-toast strong{color:#12734a;font-weight:750}
.andy-toast span{color:#2c4a3c}

/* tabs */
/* Twelve administration areas do not fit on one line, and the strip used to scroll sideways instead —
   which hides the last tabs behind an affordance nobody looks for. It wraps now, with the row gap the
   tabs need so two rows do not read as one crowded line. */

/* a designed tab whose screen is not built yet: shown, but not a link */


/* cards */
.andy-card--table{padding:4px 0 0;overflow-x:auto}


.andy-card__footer-link{display:inline-block;margin:0 20px 18px;font-size:12.5px}
.andy-card--table>.andy-card__head{padding:18px 20px 4px}

/* data grid */
.andy-grid{width:100%;border-collapse:collapse}
.andy-grid th{text-align:left;font-size:13px;font-weight:650;color:#66748a;padding:16px 22px;border-bottom:1px solid var(--life-line);white-space:nowrap}
.andy-grid td{padding:33px 22px;border-bottom:1px solid var(--life-line-soft);font-size:15px;vertical-align:middle;color:var(--life-ink)}
.andy-grid td small{display:block;color:#8b97a8;font-size:13px;margin-top:4px;font-weight:500;line-height:1.5}
.andy-grid tbody tr:last-child td{border-bottom:0}
.andy-grid tfoot th{padding:12px 18px;border-top:1px solid var(--life-line);border-bottom:0;font-size:12.5px;color:var(--life-ink)}
.andy-grid__num{text-align:right}
.andy-grid__strong{font-weight:750;font-size:16px}
.andy-grid__dim{color:#8b97a8;font-size:12px;font-weight:500}
.andy-grid__action{text-align:right;width:1%;white-space:nowrap;padding-left:12px;min-width:100px}
.andy-sa__pub{white-space:nowrap}
.andy-pub-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600;line-height:1.4}
.andy-pub-badge i{width:7px;height:7px;border-radius:50%;display:inline-block}
.andy-pub-badge.is-published{color:#059669;background:#e2f3ec}
.andy-pub-badge.is-published i{background:#059669}
.andy-pub-badge.is-draft{color:#8b97a8;background:#f1f5fa}
.andy-pub-badge.is-draft i{background:#8b97a8}

.andy-grid--tight th,.andy-grid--tight td{padding:9px 14px}
.andy-grid--tight th:first-child,.andy-grid--tight td:first-child{padding-left:18px}
.andy-grid--tight th:last-child,.andy-grid--tight td:last-child{padding-right:18px}
.andy-grid--objectives td:first-child{width:46%}
.andy-grid--updates td:nth-child(3){width:28%}
.andy-grid__row{cursor:pointer}
.andy-grid__row:hover td,.andy-grid__row:focus-visible td{background:#f7fafd}

/* ============================================================
   Data grids on a phone.
   A desktop column set cannot fit 390px — the strategy table alone was
   102px too wide, people 46px, lifecycle 58px. The treatment is shared
   and CSS-only: drop the cell padding to something a phone can afford,
   and hide the columns whose information is the least valuable, per
   table, by position. The objective/row name always survives; counts and
   metadata do not. `table-layout:fixed` tables need their surviving
   widths re-declared or the hidden columns leave ghost tracks.
   ============================================================ */
@media(max-width:640px){
/* data grids on a phone: tables scroll within their card instead of overflowing the page */
.andy-card--table{overflow-x:auto}
.andy-grid th,.andy-grid td{padding:12px 10px;font-size:13.5px}
.andy-grid td{overflow:hidden;text-overflow:ellipsis}
.andy-grid td small{font-size:11.5px}
/* strategy home: hide #, Strategic Theme, Owner, Key KPIs (cols 1,3,4,5); name, alignment, status, public, action remain */
.andy-grid--sa th:nth-child(1),.andy-grid--sa td:nth-child(1),
.andy-grid--sa th:nth-child(3),.andy-grid--sa td:nth-child(3),
.andy-grid--sa th:nth-child(4),.andy-grid--sa td:nth-child(4),
.andy-grid--sa th:nth-child(5),.andy-grid--sa td:nth-child(5){display:none}
.andy-grid--sa th:nth-child(2),.andy-grid--sa td:nth-child(2){width:56%}
.andy-grid--sa th:nth-child(6),.andy-grid--sa td:nth-child(6){width:16%}
.andy-grid--sa th:nth-child(7),.andy-grid--sa td:nth-child(7),
.andy-grid--sa th:nth-child(8),.andy-grid--sa td:nth-child(8),
.andy-grid--sa th:nth-child(9),.andy-grid--sa td:nth-child(9){width:auto}
/* people by-role table: hide People count (col 2); role, objectives, load remain */
.andy-grid--people th:nth-child(2),.andy-grid--people td:nth-child(2){width:auto}
/* onboarding people table: hide Unit (col 4); name, email, role remain. Email wraps. */
.andy-grid--onboard th:nth-child(4),.andy-grid--onboard td:nth-child(4){display:none}
.andy-grid--onboard td{overflow-wrap:anywhere}
/* lifecycle / tight grids: drop padding further, they carry long text */
.andy-grid--tight th,.andy-grid--tight td{padding:9px 8px}
.andy-grid--tight td{overflow-wrap:anywhere}
/* people department table: hide Assigned and With objectives (cols 3,4) */
.andy-grid--people th:nth-child(3),.andy-grid--people td:nth-child(3),
.andy-grid--people th:nth-child(4),.andy-grid--people td:nth-child(4){display:none}
/* dashboard: cap figure number and ring at mobile so they don't overflow their card */
.andy-figure__number{font-size:24px}
.andy-ring{max-width:90px;max-height:90px}
}
.andy-grid tr.is-selected td{background:#f2f7ff}
.andy-chevron{display:inline-grid;place-items:center;color:#a9b3c1}
.andy-chevron svg{width:16px;height:16px}

/* objective cell */
.andy-obj{display:flex;align-items:flex-start;gap:16px}
.andy-obj__copy{min-width:0;display:block}
.andy-obj__copy strong{display:block;font-size:15px;font-weight:750;color:var(--life-ink)}
.andy-obj__copy small{display:block;color:var(--life-muted);font-size:13px;line-height:1.55;margin-top:4px}
.andy-obj--head{align-items:center}
.andy-obj--head h1{margin:0 0 3px}
.andy-tile{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:12px}
.andy-tile svg{width:22px;height:22px}
.andy-tile--green{background:#e6f6ee;color:#1f8a4c}
.andy-tile--blue{background:#e8f0fe;color:#2f6bd8}
.andy-tile--amber{background:#fdf3e0;color:#b7791f}
.andy-tile--violet{background:#f0ecfd;color:#6b46c1}
.andy-tile--red{background:#fdeaea;color:#c53030}

/* status chip */
.andy-state{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:20px;font-size:12.5px;font-weight:700;white-space:nowrap}
.andy-state i{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}
.andy-state--good{background:#e8f6ef;color:#12734a}
.andy-state--watch{background:#fdf3e0;color:#a5731a}
.andy-state--risk{background:#fdecee;color:#b3323f}
.andy-state--neutral{background:#eef1f5;color:#5b6b7f}
.andy-state--info{background:#e8f0fe;color:#2f6bd8}

/* objective score card (donut + review + current) */
.andy-scorecard{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:6px 0}
.andy-scorecard__cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:20px 24px;min-height:120px}
.andy-scorecard__cell+.andy-scorecard__cell{border-left:1px solid var(--life-line)}
.andy-scorecard__cell--text strong{font-size:22px;font-weight:750;color:var(--life-ink)}
.andy-scorecard__cell--text span{font-size:12px;font-weight:650;color:var(--life-ink)}
.andy-scorecard__cell--text small{font-size:11px;color:#8b97a8}
.andy-scorecard__cell>span{font-size:12px;font-weight:650;color:var(--life-ink)}
.andy-scorecard__cell>small{font-size:11px;color:#8b97a8;text-align:center}
.andy-score-explainer{margin:-4px 0 18px;padding:10px 14px;border:1px solid #dbe7f5;border-radius:9px;background:#f6f9fd;color:#52657d;font-size:12px;line-height:1.5}
.andy-ring2{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--andy-ring-colour) var(--andy-ring-angle), #eef1f5 0)}
.andy-ring2__hole{width:72px;height:72px;border-radius:50%;background:#fff;display:grid;place-items:center}
.andy-ring2__hole strong{font-size:19px;font-weight:750;color:var(--life-ink)}

/* The inline meter: a wrapper holding a .andy-bar and the value beside it. It is not
   the shell's own .andy-progress, which IS a 7px bar — without these rules the wrapper
   inherited display:block;height:7px;overflow:hidden from the shell and clipped its
   own value out of sight (the bar's inner <i> is a block inside an inline span, so it
   collapsed to nothing). Scoped to .andy-page, which every screen that uses the meter
   carries, and not to .andy-life, which only two of them do. */
.andy-page .andy-progress{display:flex;align-items:center;gap:10px;min-width:150px;height:auto;background:none;margin-top:0;overflow:visible}
.andy-page .andy-progress .andy-bar{flex:1;min-width:40px;height:8px}
.andy-page .andy-progress em{font-style:normal;font-size:12px;font-weight:700;color:var(--life-ink);min-width:38px;text-align:right;flex-shrink:0;white-space:nowrap}
.andy-life .andy-progress-value{font-weight:750}
.andy-progress-value--good{color:#12734a}
.andy-progress-value--watch{color:#a5731a}
.andy-progress-value--risk{color:#b3323f}
.andy-progress-value--neutral{color:#8b97a8}
.andy-bar--lg{height:10px;border-radius:8px}

/* definition lists */
.andy-defs{padding:18px 20px}
.andy-defs__list{list-style:none;margin:0;padding:0}
.andy-defs__list li{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:11px 0;border-bottom:1px solid var(--life-line-soft);font-size:12.5px}
.andy-defs__list li:last-child{border-bottom:0}
.andy-defs__list span{color:var(--life-muted)}
.andy-defs__list strong{font-weight:700;text-align:right;color:var(--life-ink)}
.andy-defs__list strong small{display:block;font-weight:500;font-size:11px;color:#8b97a8}
.andy-defs--form{padding-bottom:6px}

/* update form */
.andy-split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:18px;align-items:start}
.andy-split__side{display:flex;flex-direction:column}
.andy-form2{display:flex;flex-direction:column;gap:14px;padding:16px 0 10px;border-top:1px solid var(--life-line);margin-top:6px}

.andy-input-group{position:relative;display:flex;align-items:center}
.andy-input-group input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}
.andy-input-group>em{font-style:normal;display:grid;place-items:center;min-width:46px;align-self:stretch;border:1px solid #d7dde7;border-left:0;border-radius:0 9px 9px 0;background:#f8fafc;color:var(--life-muted);font-size:12.5px;font-weight:650}
.andy-input-group--date input{border-radius:9px!important;padding-right:38px}
.andy-input-group--date>em{position:absolute;right:10px;border:0;background:transparent;min-width:0;color:#8b97a8}
.andy-input-group--date>em svg{width:16px;height:16px}
.andy-preview{padding:16px 20px 18px}
.andy-preview h3{margin-bottom:10px}
.andy-preview>strong{display:block;font-size:30px;font-weight:750;color:#12734a;line-height:1;letter-spacing:-.5px}
.andy-preview .andy-bar{margin:12px 0 9px}
.andy-preview small{color:var(--life-muted);font-size:11.5px}
.andy-attach{padding:16px 20px 18px}
.andy-attach h3{margin-bottom:12px}
.andy-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px 16px;border:1.5px dashed #cbd6e4;border-radius:10px;background:#fbfcfe;text-align:center;cursor:pointer;color:var(--life-muted);font-size:11.5px}
.andy-drop:hover{border-color:#9fb8dd;background:#f6f9ff}
.andy-drop>svg{width:20px;height:20px;color:#8b97a8}
.andy-drop input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.andy-attach__hint{display:block;margin-top:8px;color:#8b97a8;font-size:11px}
.andy-actions2{display:flex;justify-content:flex-end;gap:10px;padding:2px 0 6px}

.andy-notice{padding:12px 16px;margin:0 0 16px;border:1px solid #f3e2bd;background:#fdf8ec;border-radius:10px;font-size:12.5px;color:#8a6a17}
.andy-empty2{display:flex;flex-direction:column;gap:3px;padding:26px 18px;text-align:center}
.andy-empty2 strong{font-size:13px;font-weight:750;color:var(--life-ink)}
.andy-empty2 span{font-size:12px;color:var(--life-muted)}
.andy-sa__blank-actions{display:flex;gap:12px;justify-content:center;padding:8px 18px 22px;flex-wrap:wrap}
.andy-sa__blank-actions form,.andy-sa__blank-actions a{flex:1 1 180px;max-width:260px}
.andy-sa__blank-actions .andy-btn{display:flex;flex-direction:column;align-items:center;gap:5px;height:auto;min-height:96px;padding:16px 14px;text-align:center;line-height:1.3;border-radius:10px}
.andy-sa__blank-actions .andy-btn small{display:block;font-weight:400;font-size:11px;color:var(--life-muted);line-height:1.35;margin-top:2px}

/* evidence files */
.andy-files{list-style:none;margin:0;padding:0}
.andy-files li{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--life-line-soft)}
.andy-files li:last-child{border-bottom:0}
.andy-files--grid{padding:4px 18px 14px}
.andy-files__copy{min-width:0;flex:1}
.andy-files__copy strong{display:block;font-size:12.5px;font-weight:700;color:var(--life-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.andy-files__copy small{display:block;color:#8b97a8;font-size:11px}
.andy-files__get{font-size:11.5px;font-weight:700;color:var(--life-blue)!important;text-decoration:none!important}
.andy-files__get svg{width:15px;height:15px;display:block}
.andy-files__delete{margin:0;display:flex}
.andy-files__delete button{background:transparent;border:0;padding:2px;cursor:pointer;color:#c0392b;display:grid;place-items:center}
.andy-files__delete button:hover{color:#96291e}
.andy-files__delete svg{width:15px;height:15px}
.andy-file-icon{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:8px}
.andy-file-icon svg{width:16px;height:16px}
.andy-file-icon--green{background:#e6f6ee;color:#1f8a4c}
.andy-file-icon--blue{background:#e8f0fe;color:#2f6bd8}
.andy-file-icon--violet{background:#f0ecfd;color:#6b46c1}
.andy-file-icon--red{background:#fdecee;color:#c0392b}

/* trend screen */
.andy-filterbar{display:flex;gap:16px;padding:14px 18px;align-items:flex-end}
.andy-filterbar .andy-field2{min-width:220px}
.andy-chart-card{padding:10px 8px 4px;position:relative}
.andy-chart-legend{display:flex;justify-content:flex-end;gap:18px;padding:8px 18px 0;font-size:11.5px;color:var(--life-muted)}
.andy-chart-legend span{display:flex;align-items:center;gap:7px}
.andy-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.andy-dot--blue{background:#3b82f6}
.andy-dot-line{width:18px;height:0;border-top:2px dashed #98a2b3;display:inline-block}
.andy-chart--tall{height:280px;margin:6px 12px 12px}
.andy-chart--mini{height:170px;margin:4px 10px 10px}

/* updates screen */
.andy-update-value{display:block;font-size:13px;font-weight:750;color:var(--life-ink)}
.andy-person{display:flex;align-items:center;gap:9px}
.andy-person>span{display:block;min-width:0}
.andy-person strong{display:block;font-size:12px;font-weight:700;color:var(--life-ink)}
.andy-person small{display:block;color:#8b97a8;font-size:11px}
.andy-avatar2{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:#e8f0fe;color:#2f6bd8;font-size:12px;font-weight:750}
.andy-avatar2--lg{width:40px;height:40px;flex:0 0 40px;font-size:15px}
.andy-link{color:var(--life-blue)!important;font-weight:700;font-size:12px;text-decoration:none!important}
.andy-link:hover{text-decoration:underline!important}
.andy-link-plain{color:var(--life-blue);font-weight:600;font-size:12.5px}
.andy-chip--info{background:#e8f0fe;color:var(--life-blue)}

/* review screen */
.andy-stats3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0 0 16px}
.andy-stat3{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--life-line);border-radius:12px;padding:18px 22px}
.andy-stat3 span{flex:1;font-size:12.5px;font-weight:650;color:var(--life-ink)}
.andy-stat3 strong{font-size:20px;font-weight:750;color:var(--life-ink)}
.andy-review-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:16px}
.andy-review-grid .andy-card{margin:0}
.andy-review-foot{display:flex;align-items:center;gap:18px;background:#fff;border:1px solid var(--life-line);border-radius:12px;padding:16px 20px}
.andy-person--lead{flex:0 0 auto}
.andy-quote{flex:1;margin:0;padding:12px 16px;background:#f7fafd;border-left:3px solid #cfe0f7;border-radius:0 8px 8px 0;font-size:12.5px;color:#3d4a5c;line-height:1.5}
.andy-review-foot .andy-btn{flex:0 0 auto}
.andy-review-submit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.andy-review-submit input{min-width:220px;height:38px;margin:0;border:1px solid var(--life-line);border-radius:8px;padding:8px 10px;font-size:12.5px;background:#fff}
.andy-review-conversation{overflow:hidden}
.andy-review-conversation .andy-card__head{margin-bottom:0}
.andy-review-conversation .andy-card__head h3 svg{color:var(--life-blue)}
.andy-conversation--review{padding:18px 22px;max-height:470px;overflow-y:auto;border-top:1px solid var(--life-line-soft);border-bottom:1px solid var(--life-line-soft)}
.andy-conversation--review .andy-conversation__message{position:relative}
.andy-conversation--review .andy-conversation__message.is-transition>div{padding:10px 12px;background:#f7fafd;border:1px solid #e4ebf5;border-radius:9px}
.andy-conversation__action{display:inline-flex;margin-top:5px;padding:3px 8px;border-radius:999px;background:#e8f0fe;color:var(--life-blue);font-size:11px;font-weight:750}
.andy-conversation-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:#dc2626;color:#fff;font-size:10.5px;font-weight:750}
.andy-conversation-flash{margin:12px 22px 0;padding:9px 11px;border-radius:8px;background:#e8f7ee;color:#247247;font-size:12.5px}
.andy-conversation-empty{border-top:1px solid var(--life-line-soft);border-bottom:1px solid var(--life-line-soft)}
.andy-review-conversation .andy-reply{padding:14px 22px 20px}
.andy-review-conversation .andy-reply .andy-btn{margin:0;flex:0 0 auto}
.andy-decision__message{display:flex;flex-direction:column;gap:6px;margin:14px 0 4px;font-size:12.5px;font-weight:700;color:var(--life-ink)}
.andy-decision__message>span{font-size:11.5px;font-weight:500;color:var(--life-muted)}
.andy-decision__message textarea{width:100%;box-sizing:border-box;margin:0;border:1px solid var(--life-line);border-radius:9px;padding:9px 11px;min-height:68px;resize:vertical;font-size:13px}
.andy-decision__message textarea:focus,.andy-review-submit input:focus{border-color:var(--life-blue);outline:0;box-shadow:0 0 0 3px rgba(47,107,216,.12)}

/* appraisal scoring form.
   Every inline icon needs an explicit box: an <svg> with only a viewBox falls back to
   the browser default (300x150), and the stylesheet only sizes icons inside the places
   it already knew about (`.andy-card__head h3 svg`, sidebar nav). These are the other
   contexts this screen puts an icon in. */
.andy-score__heading{display:flex;align-items:center;gap:8px;margin:22px 0 10px;font-size:13px;font-weight:750;color:var(--life-ink)}
.andy-score__heading svg{width:16px;height:16px;color:var(--life-blue);flex:0 0 16px}


.andy-score__line{display:flex;flex-direction:column;gap:4px;margin:6px 0 2px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#5f6b7c}
.andy-score__line input{margin:0;height:34px;border:1px solid #d7dde7;border-radius:8px;background:#fff;font-size:13px}
.andy-score__field{display:flex;flex-direction:column;gap:5px;margin:0 0 14px;font-size:12.5px;font-weight:650;color:var(--life-ink)}
.andy-score__field select,.andy-score__field input,.andy-score__field textarea{margin:0;border:1px solid #d7dde7;border-radius:8px;background:#fff;font-size:13px;padding:8px 10px}
.andy-score__field textarea{min-height:74px;resize:vertical}
.andy-score__check{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:650;color:var(--life-ink)}
.andy-score__check input{margin:0}
.andy-score .andy-grid select{margin:0;height:32px;border:1px solid #d7dde7;border-radius:7px;background:#fff;font-size:12.5px}
.andy-score .andy-wiz__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}

@media(max-width:1100px){
.andy-split{grid-template-columns:1fr}
.andy-review-grid{grid-template-columns:1fr}
.andy-stats3{grid-template-columns:1fr}
}
@media(max-width:760px){
.andy-page__head{flex-direction:column;gap:10px}
.andy-cycle{align-items:flex-start;text-align:left}
.andy-scorecard{grid-template-columns:1fr}
.andy-scorecard__cell+.andy-scorecard__cell{border-left:0;border-top:1px solid var(--life-line)}
.andy-filterbar{flex-direction:column;align-items:stretch}
.andy-grid__num{text-align:left}
.andy-review-foot{flex-direction:column;align-items:flex-start}
.andy-review-submit{width:100%;justify-content:stretch}.andy-review-submit input,.andy-review-submit .andy-btn{width:100%;box-sizing:border-box}
.andy-review-conversation .andy-reply{flex-direction:column;align-items:stretch}.andy-review-conversation .andy-reply .andy-btn{width:100%}
}

/* Cycle authoring and canonical KPI-progress review. */

.andy-progress-review-list{display:flex;flex-direction:column;gap:10px}
.andy-progress-review{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:14px;border:1px solid var(--andy-border,#dfe4ec);border-radius:10px}
.andy-progress-review>div{display:flex;flex-direction:column;gap:3px}
.andy-progress-review span{color:var(--andy-muted,#697386);font-size:12px}
.andy-progress-review p{margin:5px 0 0}
.andy-progress-review form{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:end;gap:8px}
.andy-progress-review form label{flex:1 1 220px;display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700}
.andy-progress-review form input{min-height:38px;border:1px solid var(--andy-border,#dfe4ec);border-radius:8px;padding:8px 10px}
.andy-review-note{display:block;margin-top:6px;padding:6px 10px;border-left:3px solid #d97706;background:#fff7ed;border-radius:6px;color:#7c2d12;font-size:12px;line-height:1.45}
.andy-review-note strong{font-weight:700}
.andy-workflow-decision{margin-top:14px;padding:14px}
.andy-decision-note{width:100%;min-height:58px;margin:8px 0;padding:8px 10px;border:1px solid var(--andy-border,#dfe4ec);border-radius:8px;font:inherit;font-size:13px;resize:vertical}
.andy-workflow-decision__actions{display:flex;flex-wrap:wrap;gap:8px}
.andy-workflow-decision p{color:var(--andy-muted,#697386);margin:4px 0 10px}
.andy-workflow-decision form{display:flex;flex-wrap:wrap;gap:8px}
@media(max-width:620px){..}

/* ---- KPI Library (Administration -> KPI Library) ------------------------------------------
   The detail rail's definition list, a compact pager, and a table that fits a catalogue of
   measures rather than a page of prose. The base .andy-grid gives rows a 33px padding, which is
   right for a handful of objectives and wrong for a library of hundreds. */
.andy-deflist{display:grid;grid-template-columns:minmax(112px,.62fr) minmax(0,1fr);gap:9px 14px;margin:0;padding:6px 18px 14px;font-size:12.5px}
.andy-deflist dt{color:#66748a;font-weight:600}
.andy-deflist dd{margin:0;color:var(--life-ink);font-weight:650;word-break:break-word}
.andy-pager{display:inline-flex;align-items:center;gap:14px}
.andy-pager .andy-link{display:inline-flex;align-items:center;gap:5px}
.andy-pager .andy-icon{width:13px;height:13px}
.andy-pager__now{color:#66748a;font-weight:600}
.andy-total--split{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.andy-grid--library{table-layout:fixed}
.andy-grid--library th,.andy-grid--library td{padding:13px 16px;font-size:13px}
.andy-grid--library th:nth-child(1),.andy-grid--library td:nth-child(1){width:29%}
.andy-grid--library th:nth-child(2),.andy-grid--library td:nth-child(2){width:14%}
.andy-grid--library th:nth-child(3),.andy-grid--library td:nth-child(3){width:14%}
.andy-grid--library th:nth-child(4),.andy-grid--library td:nth-child(4){width:15%}
.andy-grid--library th:nth-child(5),.andy-grid--library td:nth-child(5){width:9%}
.andy-grid--library th:nth-child(6),.andy-grid--library td:nth-child(6){width:13%}
.andy-grid--library td small{font-size:11.5px;margin-top:2px}
.andy-grid__row[data-href]{cursor:pointer}

/* Objective Templates: same catalogue shape as the KPI library, with the objective's own
   columns — measures carried, weight, owner. */
.andy-grid--objectives{table-layout:fixed}
.andy-grid--objectives th,.andy-grid--objectives td{padding:13px 16px;font-size:13px}
.andy-grid--objectives th:nth-child(1),.andy-grid--objectives td:nth-child(1){width:32%}
.andy-grid--objectives th:nth-child(2),.andy-grid--objectives td:nth-child(2){width:13%}
.andy-grid--objectives th:nth-child(3),.andy-grid--objectives td:nth-child(3){width:10%}
.andy-grid--objectives th:nth-child(4),.andy-grid--objectives td:nth-child(4){width:9%}
.andy-grid--objectives th:nth-child(5),.andy-grid--objectives td:nth-child(5){width:18%}
.andy-grid--objectives th:nth-child(6),.andy-grid--objectives td:nth-child(6){width:12%}
.andy-grid--objectives td small{font-size:11.5px;margin-top:2px}

/* Appraisal Configuration: a main column that holds two cards, and two compact tables. */
.andy-sa__main{display:flex;flex-direction:column;gap:16px;min-width:0}
.andy-grid--config th,.andy-grid--config td{padding:13px 16px;font-size:13px}
.andy-grid--config{table-layout:fixed}
.andy-grid--config th:nth-child(1),.andy-grid--config td:nth-child(1){width:38%}
.andy-grid--config th:nth-child(2),.andy-grid--config td:nth-child(2){width:20%}
.andy-grid--scale{table-layout:fixed}
.andy-grid--scale th,.andy-grid--scale td{padding:10px 16px;font-size:13px}
.andy-grid--scale th:nth-child(1),.andy-grid--scale td:nth-child(1){width:96px;text-align:center}

/* Users & Access: the accounts table carries an avatar beside the name, and a role badge. */
.andy-grid--access{table-layout:fixed}
.andy-grid--access th,.andy-grid--access td{padding:12px 14px;font-size:13px}
.andy-grid--access th:nth-child(1),.andy-grid--access td:nth-child(1){width:22%}
.andy-grid--access th:nth-child(2),.andy-grid--access td:nth-child(2){width:20%}
.andy-grid--access th:nth-child(3),.andy-grid--access td:nth-child(3){width:20%}
.andy-grid--access th:nth-child(4),.andy-grid--access td:nth-child(4){width:13%}
.andy-grid--access th:nth-child(5),.andy-grid--access td:nth-child(5){width:13%}
.andy-grid--access th:nth-child(6),.andy-grid--access td:nth-child(6){width:10%}
.andy-grid--access td small{font-size:11.5px;margin-top:2px}
.andy-avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#e8eefb;color:#2a4b86;font-size:10.5px;font-weight:800;margin-right:8px;vertical-align:middle}

/* Configuration editors: a table of inputs rather than of text. */
.andy-grid--edit th,.andy-grid--edit td{padding:8px 14px;font-size:13px;vertical-align:middle}
.andy-grid--edit input[type=text],.andy-grid--edit input[type=number],.andy-grid--edit select{padding:6px 9px;border:1px solid #d6dde8;border-radius:7px;font-size:13px;width:100%;max-width:420px}
.andy-grid--edit .andy-grid__num input[type=number]{max-width:92px;text-align:right}
.andy-grid--edit .andy-filterbar input,.andy-grid--edit .andy-filterbar select{max-width:260px}

/* The lists a staff record is built from: three groups on one card, each its own form. */
.andy-lists__group{padding:2px 18px 14px;border-top:1px solid var(--life-line-soft)}
.andy-lists__group:first-of-type{border-top:0}
.andy-lists__heading{display:flex;align-items:baseline;gap:10px;margin:14px 0 6px;font-size:13.5px;font-weight:750;color:var(--life-ink)}
.andy-lists__heading .andy-panel-sub{padding:0}
.andy-lists__group .andy-grid--edit td{padding:6px 10px}
.andy-lists__group .andy-grid--edit th{padding:8px 10px}

/* The assistant says which engine wrote its answer: a person or a model. */
.andy-assistant__engine{margin:6px 0 0;font-size:11.5px;color:#7a869a}
.andy-assistant__engine strong{color:#4d5665;font-weight:700}

/* Which register the answer is in: the reader's own records, general practice, or both. It belongs
   above the prose rather than in the fine print below it, because it is the one thing they need to
   know before they read an answer they intend to act on. */
.andy-assistant__register{margin:0 0 10px;padding:8px 11px;border-left:3px solid #8fa9c9;border-radius:0 8px 8px 0;
	background:#f4f7fb;font-size:11.5px;line-height:1.5;color:#4d5665}

/* The week's AI allowance, on the answer card: the same shape as the register line beside it, because it
   is the same kind of statement — something the reader has to know to read the answer correctly. It is a
   class of its own rather than a second use of the register's, because the register answers "is this my
   data or general practice?", and a screen that reads the registers must keep reading only that. */
.andy-assistant__budget{margin:0 0 10px;padding:8px 11px;border-left:3px solid #d8b26a;border-radius:0 8px 8px 0;
	background:#fdf9f0;font-size:11.5px;line-height:1.5;color:#5b5344}

/* The steps a mentor answer ends with, when it has any: same type as the answer itself, so they
   read as part of the reply rather than as a separate widget. */
.andy-assistant__steps{margin:8px 0 0;padding-left:18px;font-size:13.5px;line-height:1.6;color:#22364f;max-width:72ch}
.andy-assistant__steps li{margin:0 0 4px}

/* The rest of a long source list, behind a native disclosure: the records stay in the page — every
   figure above remains checkable — without the card opening as a wall of links. */
.andy-assistant__more{margin:8px 0 0}
.andy-assistant__more summary{cursor:pointer;font-size:11.5px;color:#4d5665;list-style:none}
.andy-assistant__more summary::-webkit-details-marker{display:none}
.andy-assistant__more summary::before{content:"▸ ";color:#8fa9c9}
.andy-assistant__more[open] summary::before{content:"▾ "}
.andy-assistant__more summary:hover{color:#22364f;text-decoration:underline}

/* ============================================================================================
   Shared controls and bound forms now live in andy-components.css. */

/* The administration stat rows hold four, five or six cards depending on the tab. `.andy-admin__stats`
   asked for six columns and `.andy-sa__stats` — later in this file, equal specificity — set four, so
   six cards came out as four and a short row of two. No fixed count suits every tab, so the row fills
   itself instead: as many cards as fit at a readable width, and whatever is left over grows to fill
   its row rather than leaving a hole beside it. */
.andy-sa__stats.andy-admin__stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:16px}
.andy-sa__stats.andy-admin__stats>.andy-sa__stat{flex:1 1 240px;min-width:0}
@media(max-width:700px){
  .andy-sa__stats.andy-admin__stats>.andy-sa__stat{flex:1 1 100%}
}

/* The scoped tokens, available everywhere (same values .andy-page sets). */


/* ============================================================================================
   CLASSES THE SCREENS USED AND NO STYLESHEET DEFINED

   Found by auditing every view's class attributes against every stylesheet (`.dsh/audit-css-classes.mjs`):
   68 names were used that nothing styles. Most are harmless — a single-use wrapper like `andy-reports`
   that exists only as a page-scope hook, or a Bootstrap class that Bootstrap does define and my first
   pass had not counted. The ones below are not harmless: they are the difference between a layout and
   a stack of full-width blocks, so they are defined here rather than left to the browser.
   ============================================================================================ */

/* A grid of stat cards. `.andy-grid` is the table style, so on a div the modifier has to take over
   the layout entirely — without it the cards sat one per row, the full width of the page. */
.andy-grid--cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;
  border-collapse:separate;border:0}
.andy-grid--cards>.andy-card{margin:0}

/* The KPI table on the lifecycle screen: the measure takes the room, the numbers do not. */
.andy-grid--kpis{table-layout:fixed}
.andy-grid--kpis th:nth-child(1),.andy-grid--kpis td:nth-child(1){width:38%}
.andy-grid--kpis th:nth-child(2),.andy-grid--kpis td:nth-child(2){width:11%}
.andy-grid--kpis th:nth-child(3),.andy-grid--kpis td:nth-child(3){width:13%}
.andy-grid--kpis th:nth-child(4),.andy-grid--kpis td:nth-child(4){width:13%}
.andy-grid--kpis .andy-progress{min-width:0}

/* A panel that is meant to span a two-column screen. `grid-column` is inert where the parent is not a
   grid, so this cannot disturb a layout that does not need it. */
.andy-panel--wide{grid-column:1/-1}

/* The "back to the list" line above a record, and the label/value rail inside a detail panel. */
.andy-review__back{margin:0 0 12px}
.andy-audit__detail li{padding:9px 0}
.andy-audit__detail strong{max-width:60%}

/* --- the small idioms the screens were spelling inline ------------------------------------------

   The operator screens carried sixty-odd `style="…"` attributes: a fourth grey (#7a869a) that is not
   one of the tokens, `margin:0` repeated on every paragraph, and pixel widths on inputs the field
   system already sizes. Inline styles are how a screen stops agreeing with the rest of the
   application, and they are invisible to a stylesheet audit. These are the classes those attributes
   turned into.
   ------------------------------------------------------------------------------------------------ */
.andy-flush{margin:0}
.andy-muted{color:var(--life-muted)}
.andy-note{margin:6px 0 0;color:var(--life-muted);font-size:11.5px;line-height:1.5}
.andy-tone-amber{color:var(--andy-amber)}
.andy-push{margin-left:auto}
.andy-inline{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
/* Field widths inside a table row: the field system makes every control full width, so a control that
   is meant to be small has to say so with more specificity than `.andy-field input`. */

.andy-w-full{width:100%}
.andy-mb{margin-bottom:16px}
.andy-mb-sm{margin-bottom:14px}
.andy-mt{margin-top:20px}
.andy-list{margin:0;padding-left:18px}

/* The body of a card under its head. Nine call sites were hand-padding their content with
   `padding:0 18px 14px` because the system had a card head and no card body — so every card that
   holds more than a table padded itself slightly differently. */
.andy-card__body--tight{padding:0 20px 12px}

.andy-my{margin:16px 0}
.andy-mb-xs{margin-bottom:10px}
.andy-list-plain{margin:0;padding:0;list-style:none}
/* A row of label/value lines separated by hairlines, the shape the detail rails repeat. */
.andy-rows{padding:8px 0;border-top:1px solid var(--life-line-soft)}

/* --- the report an upload shows back before anything is written ---------------------------- */
.andy-upload{display:flex;flex-direction:column;gap:14px}
.andy-upload__counts{display:flex;gap:18px;flex-wrap:wrap}
.andy-upload__count{display:flex;flex-direction:column;gap:2px;min-width:84px}
.andy-upload__count b{font-size:20px;font-weight:800;color:var(--life-ink);line-height:1.1}
.andy-upload__count span{font-size:11.5px;color:var(--life-muted)}
.andy-upload__row--refuse{background:#fff7f7}
.andy-upload__row--warn{background:#fffaf0}
.andy-upload__line{color:var(--life-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.andy-upload__message{font-weight:500;color:var(--life-muted)}

/* --- the message a screen shows after doing something --------------------------------------

   `.andy-alert` with its `--info/--success/--warning/--danger` variants is used in nine views and
   was defined in NO stylesheet, so every flash message in the redesigned screens — "Account created",
   "Refused: …", the lot — rendered as bare unstyled text on the page background. It is defined here,
   once, so those nine call sites start looking like messages.
   ------------------------------------------------------------------------------------------- */

/* Two buttons in a card header, on one line and the right way round (secondary, then primary).
   A bare pair of anchors in a flex header drifts apart as the header grows. */

/* --- the "add a row" bar under an editable table --------------------------------------------

   `.andy-filterbar` was defined twice too: once as a row (`display:flex; align-items:flex-end`), then
   again as `flex-direction:column; align-items:stretch`. The second won, so every add-row bar in the
   application rendered as a vertical stack of full-width fields with a full-width button underneath —
   on a wide screen, for a bar that holds two fields and a button. The stacked shape is the right answer
   on a phone, so that is a media query now rather than the default.
   ------------------------------------------------------------------------------------------- */
.andy-filterbar{display:flex;flex-wrap:wrap;gap:14px 16px;padding:14px 18px;align-items:flex-end}
.andy-filterbar .andy-field,.andy-filterbar .andy-field2{min-width:200px;flex:1 1 200px}
.andy-filterbar .andy-btn{flex:0 0 auto;margin-bottom:1px}
.andy-filterbar .andy-link{align-self:center}
@media (max-width:720px){
  .andy-filterbar{flex-direction:column;align-items:stretch}
  .andy-filterbar .andy-field,.andy-filterbar .andy-field2{min-width:0;flex:1 1 auto}
  .andy-filterbar .andy-btn{width:100%}
}

/* --- the workspace-setup card on the dashboard -----------------------------------------------
   Offered until the company has been through its guided setup (corporate.onboarded_at). The offer
   sits above the statistics rather than among them: it is about the workspace, not about this
   week's performance, and it disappears for good once it is answered. */
.andy-setup-card{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px;padding:17px 22px;border:1px solid var(--andy-border);border-left:3px solid var(--andy-blue);border-radius:12px;background:var(--andy-blue-soft)}
.andy-setup-card__copy{display:flex;flex-direction:column;gap:3px}
.andy-setup-card__copy strong{color:var(--andy-text);font-size:15px}
.andy-setup-card__copy span{color:var(--andy-muted);font-size:13px}
.andy-setup-card .btn{margin:0;white-space:nowrap;text-decoration:none}
@media(max-width:640px){.andy-setup-card{flex-direction:column;align-items:flex-start}.andy-setup-card .btn{width:100%;text-align:center}}

/* ── conversation scroll ──────────────────────────────────────── */
.andy-assistant__scroll {
	max-height: 55vh;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-right: 6px;
}
.andy-assistant__scroll::-webkit-scrollbar { width: 4px; }
.andy-assistant__scroll::-webkit-scrollbar-thumb { background: #d7dde7; border-radius: 3px; }
.andy-chip--new { font-weight: 700; color: var(--life-blue) !important; border-color: var(--life-blue) !important; }

/* ── thread list ──────────────────────────────────────────────── */
.andy-assistant__threads { list-style: none; margin: 0; padding: 0; }
.andy-assistant__threads li { margin: 0; }
.andy-assistant__thread-link {
	display: block; padding: 8px 12px; font-size: 12px; color: var(--life-ink);
	text-decoration: none !important; border-radius: 6px; margin: 2px 0;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.andy-assistant__thread-link:hover { background: #f0f4fe; }
.andy-assistant__thread-link.is-active { background: #e8f0fe; font-weight: 700; color: var(--life-blue); }
.andy-assistant__attach { cursor: pointer; padding: 6px 8px; color: var(--andy-muted, #889); border-radius: 6px; line-height: 1; }
.andy-assistant__attach:hover { background: #f0f4fe; color: var(--life-blue); }
.andy-assistant__doc-name { font-size: 11px; color: var(--life-blue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100px; }
.andy-assistant__action { display: flex; align-items: center; }
.andy-assistant__loading { display: none; align-items: center; gap: 4px; font-size: 12px; color: var(--andy-muted, #889); white-space: nowrap; padding: 8px 6px; }
.andy-spinner { width: 14px; height: 14px; border: 2px solid #e0e0e0; border-top-color: var(--life-blue); border-radius: 50%; animation: andy-spin 0.6s linear infinite; }
@keyframes andy-spin { to { transform: rotate(360deg); } }

/* ── initiative form polish ────────────────────────────────────── */
.andy-form2 select[multiple] {
	height: auto;
	min-height: 100px;
	padding: 4px;
	border-radius: 9px;
	background: #fff;
}
.andy-form2 select[multiple] option {
	padding: 7px 10px;
	border-radius: 6px;
	font-size: 12.5px;
	margin: 2px 0;
}
.andy-form2 select[multiple] option:checked {
	background: #2563eb linear-gradient(0deg, #2563eb, #2563eb);
	color: #fff;
}
.andy-form2 select[multiple] option:hover {
	background: #f0f4fe;
}
.andy-form2 .andy-lifecycle__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
}
.andy-panel-title {
	font-size: 13px;
	font-weight: 750;
	color: var(--life-ink);
}
/* People: a person opened from a list; two cards side by side, stacked on narrow screens. */
.andy-people__detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.andy-people__detail .andy-card{margin:0}
.andy-people__detail-actions{margin-top:16px}
@media(max-width:900px){.andy-people__detail{grid-template-columns:minmax(0,1fr)}}
.andy-people__stats.andy-people__stats--4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.andy-people__stats.andy-people__stats--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.andy-people__stats.andy-people__stats--4{grid-template-columns:1fr}}
/* People: a short stage badge with the holder on its own line. */
.andy-people__stage{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.andy-people__stage small{color:var(--as-muted);font-size:11px;line-height:1.35;overflow-wrap:anywhere}
/* People summary figures: as many per row as fit (five on a laptop, two or three on a tablet), not the
   Strategy home breakpoints, which dropped them to two per row below 1200px. */
.andy-sa__stats.andy-people__stats,.andy-people__stats.andy-people__stats--4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
