/* Open Sans, self-hosted. The vendor stylesheet used to @import eleven Google
   Font families on every page for a customizer the app does not ship; this
   is the one family the theme renders, latin and latin-ext only, served from
   /static/fonts so no page view reaches Google. */
@font-face{font-family:"Open Sans";font-style:italic;font-weight:300 800;font-display:swap;src:url(../fonts/open-sans-latin-ext-italic.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}@font-face{font-family:"Open Sans";font-style:italic;font-weight:300 800;font-display:swap;src:url(../fonts/open-sans-latin-italic.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}@font-face{font-family:"Open Sans";font-style:normal;font-weight:300 800;font-display:swap;src:url(../fonts/open-sans-latin-ext-normal.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}@font-face{font-family:"Open Sans";font-style:normal;font-weight:300 800;font-display:swap;src:url(../fonts/open-sans-latin-normal.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{--ww-navy:#132238;--ww-teal:#13a88b;--ww-surface:#f5f7fa;--ww-card:#fff;--ww-border:#e4e9f0;--ww-muted:#718096;--ww-soft:#f3faf8}html[data-bs-theme=dark]{--ww-navy:#edf4fb;--ww-teal:#63d5bf;--ww-surface:#171a22;--ww-card:#222630;--ww-border:#343b49;--ww-muted:#9aa9bc;--ww-soft:#292e39}body{color:var(--theme-body-color)}.content-page{background:var(--ww-surface)}.app-content-container{max-width:1540px}.card{border:1px solid var(--ww-border);background:var(--ww-card);box-shadow:0 4px 18px rgba(30,43,62,.045);border-radius:.8rem}.card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.15rem 1.25rem;background:var(--ww-card);border-bottom-color:var(--ww-border)}.card-title{margin:0;font-size:1rem;font-weight:700;color:var(--ww-navy)}.card-subtitle{margin:.25rem 0 0;font-size:.8rem;color:var(--theme-secondary-color)}.table th{white-space:nowrap;color:var(--ww-muted);font-size:.73rem;letter-spacing:.035em;text-transform:uppercase}.table td{padding:1rem .85rem}
.wholeworth-logo{display:flex!important;align-items:center;gap:.7rem;color:inherit;font-size:1.12rem;letter-spacing:-.02em}.wholeworth-logo>span{display:inline-grid;place-items:center;width:2rem;height:2rem;overflow:hidden;border-radius:.65rem;background:linear-gradient(135deg,#1ab394,#087f8c);color:#fff;font-size:1rem;font-weight:800;line-height:1!important;letter-spacing:0}.sidenav-menu>.logo .logo-sm{display:none!important}html[data-sidenav-size=condensed] .sidenav-menu>.logo .logo-lg{display:none!important}html[data-sidenav-size=condensed] .sidenav-menu>.logo .logo-sm{display:flex!important}.topbar-context{color:#77859a;font-size:.85rem}.topbar-user{display:flex;align-items:center;gap:.65rem;color:var(--ww-navy)}.topbar-user strong,.topbar-user small{display:block;line-height:1.2}.topbar-user strong{font-size:.83rem}.topbar-user small{margin-top:.18rem;color:#8490a2;font-size:.68rem}.topbar-avatar,.user-avatar{display:inline-grid;place-items:center;flex:0 0 auto;border-radius:50%;background:#e1f5f1;color:#0c7f73}.topbar-avatar{width:2rem;height:2rem}.user-avatar{width:2.35rem;height:2.35rem;font-weight:700}
.admin-page-header{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:1.25rem}.admin-page-header h1{margin:0;color:var(--ww-navy);font-size:clamp(1.65rem,2vw,2.15rem);font-weight:750;letter-spacing:-.035em}.admin-page-header p{max-width:48rem;margin:.4rem 0 0;color:var(--ww-muted)}.breadcrumb{font-size:.73rem;text-transform:uppercase;letter-spacing:.045em}.admin-tabs{display:flex;gap:.25rem;margin:0 0 1.5rem;padding:.3rem;overflow-x:auto;border:1px solid var(--ww-border);border-radius:.75rem;background:var(--ww-card);scrollbar-width:none}.admin-tab{padding:.55rem .8rem;border-radius:.5rem;color:var(--ww-muted);font-size:.79rem;font-weight:650;white-space:nowrap}.admin-tab:hover{color:var(--ww-teal);background:var(--ww-soft)}.admin-tab.active{color:#fff;background:#132238}
.admin-metric .card-body{display:flex;align-items:center;gap:1rem}.metric-icon{display:inline-grid;place-items:center;flex:0 0 auto;width:2.8rem;height:2.8rem;border-radius:.75rem;font-size:1rem}.admin-metric span:not(.metric-icon){display:block;color:#77859a;font-size:.76rem}.admin-metric strong{display:block;margin-top:.1rem;color:var(--ww-navy);font-size:1.55rem;line-height:1}.admin-check-list,.audit-list{display:flex;flex-direction:column}.admin-check{display:flex;align-items:center;gap:.85rem;padding:.95rem 1.25rem;color:inherit;border-bottom:1px solid var(--ww-border)}.admin-check:last-child,.audit-item:last-child{border-bottom:0}.admin-check:hover{background:#f8fbfc}.admin-check strong,.admin-check small{display:block}.admin-check small{margin-top:.1rem;color:#8490a2;font-size:.72rem}.status-icon{display:inline-grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;background:#fff3d6;color:#b7791f}.status-icon.complete{background:#dff6ef;color:#128168}.audit-item{display:flex;align-items:flex-start;gap:.8rem;padding:.95rem 1.25rem;border-bottom:1px solid var(--ww-border)}.audit-item strong,.audit-item small{display:block}.audit-item strong{font-size:.82rem}.audit-item small{margin-top:.15rem;color:#8793a5;font-size:.7rem}.audit-dot{width:.55rem;height:.55rem;margin-top:.35rem;border-radius:50%;background:#8995a5}.audit-dot.success{background:#1ab394}.audit-dot.danger{background:#e35d6a}
.admin-search{max-width:16rem}.admin-sticky{position:sticky;top:5.5rem}.callout{display:flex;gap:.75rem;margin-bottom:1.25rem;padding:.9rem;border-radius:.6rem;background:#f0f8f7;color:#4c6671;font-size:.78rem}.callout i{margin-top:.15rem;color:var(--ww-teal)}.callout p{margin:0}.status-label{display:inline-flex;align-items:center;gap:.4rem;font-size:.76rem;white-space:nowrap}.status-label i{font-size:.42rem}.status-label.active{color:#128168}.status-label.pending{color:#b7791f}
.role-card .card-body{padding:1.4rem}.role-card h2{margin:1.25rem 0 .4rem;color:var(--ww-navy);font-size:1.05rem}.role-card h3{margin:0 0 .75rem;color:#65738a;font-size:.73rem;letter-spacing:.04em;text-transform:uppercase}.role-icon,.provider-icon{display:inline-grid;place-items:center;width:3rem;height:3rem;border-radius:.8rem;font-size:1.15rem}.role-user{color:#246fba;background:#e8f2fc}.role-admin{color:#7656b5;background:#f0eafa}.role-break_glass{color:#c04a55;background:#fdebee}.role-permissions{display:grid;gap:.65rem;margin:0;padding:0;list-style:none;font-size:.8rem}.role-permissions i{margin-right:.6rem;color:var(--ww-teal)}
.setting-row{display:flex;align-items:center;gap:1rem;padding:1.15rem 1.25rem;border-bottom:1px solid var(--ww-border)}.setting-row:last-child{border-bottom:0}.setting-icon{display:inline-grid;place-items:center;flex:0 0 auto;width:2.6rem;height:2.6rem;border-radius:.65rem;background:#edf6f8;color:#187d89}.setting-row label{margin:0;color:var(--ww-navy);font-size:.85rem;font-weight:700}.setting-row p{margin:.15rem 0 0;color:#7d899b;font-size:.76rem}.security-note{display:flex;align-items:center;gap:.75rem;margin-top:1.25rem;padding:.85rem;border-radius:.6rem;background:#eef9f5;color:#147966}.security-note.danger{background:#fff0f1;color:#a53a45}.security-note i{font-size:1.3rem}.security-note strong,.security-note span{display:block}.security-note span{margin-top:.1rem;font-size:.7rem;opacity:.8}.form-actions{display:flex;justify-content:flex-end;margin-top:1rem}
.provider-heading{display:flex;align-items:center;gap:.8rem}.provider-google{color:#4285f4;background:#eef4ff}.provider-facebook{color:#1877f2;background:#eaf2ff}.provider-microsoft{color:#5e5e5e;background:#f0f0f0}.provider-apple{color:#111;background:#f1f1f1}.status-pill{display:inline-flex;align-items:center;padding:.3rem .55rem;border-radius:999px;font-size:.68rem;font-weight:700;white-space:nowrap}.status-pill.success{color:#11725e;background:#dcf5ed}.status-pill.warning{color:#875913;background:#fff1cf}.status-pill.danger{color:#a53a45;background:#fde6e9}.status-pill.neutral{color:#586477;background:#edf0f4}
.setup-progress h2{margin:.2rem 0 0;color:var(--ww-navy);font-size:1.05rem}.eyebrow{color:#7f8b9d;font-size:.68rem;letter-spacing:.05em;text-transform:uppercase}.progress{height:.55rem}.setup-list{display:grid;gap:.75rem}.setup-step{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:1rem;padding:1.15rem 1.3rem;color:inherit;border:1px solid var(--ww-border);border-radius:.8rem;background:#fff;box-shadow:0 3px 14px rgba(30,43,62,.035)}.setup-step:hover{border-color:#b5ded5;transform:translateY(-1px)}.setup-number{display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:50%;background:#fff2d3;color:#925e10;font-weight:700}.setup-number.complete{background:#dcf5ed;color:#137d67}.setup-step h2{margin:0;color:var(--ww-navy);font-size:.95rem}.setup-step p{margin:.2rem 0 0;color:#7b8799;font-size:.76rem}.settings-list{margin:0}.settings-list>div{display:flex;justify-content:space-between;gap:2rem;padding:1rem 1.25rem;border-bottom:1px solid var(--ww-border)}.settings-list>div:last-child{border:0}.settings-list dt{color:#65738a;font-weight:600}.settings-list dd{margin:0;text-align:right}
.login-logo{font-size:1.35rem;color:var(--ww-navy)}.empty-state{min-height:150px;display:grid;place-items:center;align-content:center;gap:.75rem;color:var(--theme-secondary-color);text-align:center;padding:2rem}.auth-box{background:radial-gradient(circle at 20% 15%,rgba(26,179,148,.18),transparent 34%),var(--ww-surface)}.auth-panel{min-height:570px;background:linear-gradient(145deg,rgba(17,31,56,.88),rgba(8,127,140,.82)),url('../images/auth.jpg') center/cover;display:flex;align-items:flex-end;padding:3rem;color:#fff}.auth-panel i{font-size:2.6rem;margin-bottom:1rem}.auth-panel h3{color:#fff;font-size:2rem}.auth-panel p{max-width:30rem;font-size:1.05rem;opacity:.85}.auth-theme-control{position:fixed;right:max(1.25rem,env(safe-area-inset-right));bottom:max(1.25rem,env(safe-area-inset-bottom));z-index:1050}.auth-theme-toggle{display:grid;place-items:center;width:2.85rem;height:2.85rem;border:1px solid var(--ww-border);border-radius:50%;background:color-mix(in srgb,var(--ww-card) 88%,transparent);box-shadow:0 8px 28px rgba(19,34,56,.16);color:var(--ww-navy);font-size:1rem;backdrop-filter:blur(12px);transition:transform .15s ease,background-color .15s ease,border-color .15s ease}.auth-theme-toggle:hover{background:var(--ww-card);border-color:var(--ww-teal);color:var(--ww-teal);transform:translateY(-2px)}.auth-theme-toggle:focus-visible{outline:3px solid rgba(26,179,148,.25);outline-offset:3px}.chart-grid{height:280px;display:flex;align-items:end;gap:8px;padding:1rem 0 0;border-bottom:1px solid var(--theme-border-color)}.chart-column{height:100%;flex:1;display:flex;flex-direction:column;justify-content:end;text-align:center;min-width:14px}.chart-column>div{min-height:8px;border-radius:5px 5px 0 0;background:linear-gradient(180deg,#1ab394,#087f8c)}.chart-column small{font-size:.65rem;padding-top:.35rem;color:var(--theme-secondary-color)}
@media(max-width:991.98px){.admin-sticky{position:static}.setup-step{grid-template-columns:auto 1fr auto}.setup-step>.status-pill{display:none}}@media(max-width:767.98px){.content-page .container-fluid{padding-inline:1rem}.admin-page-header{align-items:flex-start;flex-direction:column;gap:1rem}.card-header{align-items:flex-start;flex-direction:column}.admin-search{max-width:none;width:100%}.setting-row{align-items:flex-start}.setup-step{grid-template-columns:auto 1fr auto;gap:.75rem}.settings-list>div{align-items:flex-start;flex-direction:column;gap:.35rem}.settings-list dd{text-align:left}.chart-grid{height:220px}.chart-column small{display:none}}
/* Touch targets. Below the tablet breakpoint every control a finger lands on
   is at least 44px tall (WCAG 2.5.8 / Apple HIG): pagination, small buttons,
   navigation links, kind tabs, table action links and form checks. Padding
   grows, type does not. Metric cards on the dashboard sit two abreast so the
   five of them do not become a 4000px scroll. */
@media(max-width:767.98px){.page-link,.btn-sm,.btn-group-sm>.btn,.side-nav-link,.nav-pills .nav-link,.nav-tabs .nav-link,.dropdown-item{min-height:44px;display:inline-flex;align-items:center}.pagination .page-link{min-width:44px;justify-content:center}.table .btn-sm,.table a.btn{min-height:44px;min-width:44px;justify-content:center}.form-check-input{width:1.5em;height:1.5em;margin-top:.15em}.form-check{min-height:44px;display:flex;align-items:center;gap:.5rem}.form-control,.form-select{min-height:44px;font-size:1rem}.table td a:not(.btn){display:inline-block;padding:.45rem 0}.btn{min-height:44px}.dt-column-title{display:inline-block;padding:.5rem 0}.metric-card .card-body{padding:1rem .75rem}.metric-card .h2,.metric-card .h3{font-size:1.25rem}.dtr-details{padding-left:0}.dtr-details li{padding:.4rem 0}}
html[data-bs-theme=light] .sidenav-menu>.logo>.logo-dark,html[data-bs-theme=light] .logo-topbar>.logo-dark{display:none!important}html[data-bs-theme=dark] .sidenav-menu>.logo>.logo-light,html[data-bs-theme=dark] .logo-topbar>.logo-light{display:none!important}.sidenav-menu>.logo>.logo{position:absolute;inset:0;align-items:center;justify-content:center}.sidenav-menu>.logo .wholeworth-logo{height:100%;justify-content:center}.logo-topbar .logo-sm{display:none}.logo-topbar .wholeworth-logo{height:var(--topbar-height);align-items:center}.user-action-menu{width:17rem}.entitlement-editor{min-height:11rem;font-size:.76rem;line-height:1.6}.plan-card .card-header h2{color:var(--ww-navy);font-size:1.15rem}.plan-card code{font-size:.72rem}
.wholeworth-sidenav-user{background:radial-gradient(circle at 85% 20%,rgba(26,179,148,.18),transparent 35%),linear-gradient(135deg,rgba(255,255,255,.035),transparent)}.wholeworth-sidenav-user>a{min-width:0}.sidenav-avatar{display:grid;place-items:center;width:3rem;height:3rem;border-radius:50%;background:linear-gradient(135deg,#1ab394,#087f8c);color:#fff;font-size:1.1rem}.topbar-actions{gap:.2rem}.topbar-divider{height:1.6rem;margin-inline:.55rem;border-inline-start:1px solid var(--theme-topbar-search-border)}.topbar-profile{display:flex!important;align-items:center;gap:.65rem;padding-inline:.65rem!important;border:0;background:transparent;color:inherit}.topbar-profile strong,.topbar-profile small{display:block;line-height:1.2}.topbar-profile strong{font-size:.82rem}.topbar-profile small{margin-top:.18rem;color:var(--theme-secondary-color);font-size:.68rem}.sidenav-user .dropdown-menu form,.topbar-profile+.dropdown-menu form{margin:0}
.sidenav-menu>.logo{height:var(--theme-topbar-height)}html[data-sidenav-size=condensed] .sidenav-menu>.logo{display:flex;align-items:center;justify-content:center;padding:0}html[data-sidenav-size=condensed][data-bs-theme=light] .sidenav-menu>.logo>.logo-light,html[data-sidenav-size=condensed][data-bs-theme=dark] .sidenav-menu>.logo>.logo-dark{display:flex!important;align-items:center;justify-content:center;padding:0}html[data-sidenav-size=condensed][data-bs-theme=light] .sidenav-menu>.logo>.logo-dark,html[data-sidenav-size=condensed][data-bs-theme=dark] .sidenav-menu>.logo>.logo-light{display:none!important}html[data-sidenav-size=condensed] .sidenav-menu>.logo .logo-lg{display:none!important}html[data-sidenav-size=condensed] .sidenav-menu>.logo .logo-sm{display:flex!important;align-items:center;justify-content:center;width:100%;height:100%}html[data-sidenav-size=condensed] .sidenav-menu>.logo .wholeworth-logo{justify-content:center;width:100%}
html[data-bs-theme=dark] .admin-check:hover,html[data-bs-theme=dark] .setup-step:hover{background:var(--ww-soft)}html[data-bs-theme=dark] .setup-step{border-color:var(--ww-border);background:var(--ww-card)}html[data-bs-theme=dark] .callout{background:#25343a;color:#b5c7ce}html[data-bs-theme=dark] .setting-icon{background:#263a3d;color:#72d9c6}html[data-bs-theme=dark] .security-note{background:#203832;color:#76d8c4}html[data-bs-theme=dark] .security-note.danger{background:#40282d;color:#f0a1aa}html[data-bs-theme=dark] .status-pill.success{color:#76d8c4;background:#203832}html[data-bs-theme=dark] .status-pill.warning{color:#f3ca85;background:#3c3424}html[data-bs-theme=dark] .status-pill.danger{color:#f0a1aa;background:#40282d}html[data-bs-theme=dark] .status-pill.neutral{color:#b1bdcc;background:#303541}html[data-bs-theme=dark] .alert-light{--theme-alert-bg:#252a34;--theme-alert-border-color:#39404d;--theme-alert-color:#c1cad6}html[data-bs-theme=dark] .footer{background:var(--ww-card);border-color:var(--ww-border)}.content-page,.card,.card-header,.setup-step,.app-topbar{transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.wholeworth-customizer{--theme-offcanvas-width:min(420px,100vw);width:min(420px,100vw);border-inline-start:1px solid var(--ww-border);background:var(--ww-card);color:var(--theme-body-color)}.customizer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.4rem 1.25rem;color:#fff;background:radial-gradient(circle at 95% 0,rgba(255,255,255,.2),transparent 32%),linear-gradient(135deg,#087f8c,#1ab394)}.customizer-header h2{margin:.15rem 0 .25rem;color:#fff;font-size:1.15rem;font-weight:750}.customizer-header p{margin:0;max-width:20rem;font-size:.76rem;opacity:.82}.customizer-eyebrow{font-size:.65rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;opacity:.78}.customizer-close{display:grid;place-items:center;flex:0 0 auto;width:2rem;height:2rem;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.18);color:#fff}.customizer-close:hover{background:rgba(255,255,255,.28);color:#fff}.customizer-tabs{display:grid;grid-template-columns:1fr 1fr;padding:.55rem .75rem 0;border-bottom:1px solid var(--ww-border)}.customizer-tabs .nav-link{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.75rem;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ww-muted);font-size:.77rem;font-weight:700}.customizer-tabs .nav-link.active{border-bottom-color:var(--ww-teal);color:var(--ww-teal)}.customizer-content{padding-bottom:1rem}.customizer-profile{display:flex;align-items:center;gap:.8rem;margin:1rem 1.15rem;padding:1rem;border:1px solid var(--ww-border);border-radius:.75rem;background:var(--ww-soft)}.customizer-profile strong,.customizer-profile small{display:block}.customizer-profile small{margin-top:.18rem;color:var(--ww-muted);font-size:.7rem}.customizer-avatar{display:grid;place-items:center;flex:0 0 auto;width:3rem;height:3rem;border-radius:50%;background:#dff5ef;color:#11816d;font-size:1rem}.customizer-section{margin:0;padding:1.15rem;border:0;border-bottom:1px solid var(--ww-border)}.customizer-section-title{display:block;width:auto;margin:0 0 .8rem;padding:0;color:var(--ww-navy);font-size:.76rem;font-weight:750}.customizer-link-list{display:grid;gap:.55rem}.customizer-link-list>a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.85rem;border:1px solid var(--ww-border);border-radius:.65rem;color:inherit}.customizer-link-list>a:hover{border-color:color-mix(in srgb,var(--ww-teal) 45%,var(--ww-border));background:var(--ww-soft)}.customizer-link-list>a>span:nth-child(2){min-width:0}.customizer-link-list strong,.customizer-link-list small{display:block}.customizer-link-list strong{color:var(--ww-navy);font-size:.78rem}.customizer-link-list small{margin-top:.15rem;color:var(--ww-muted);font-size:.67rem}.customizer-link-list>a>i{color:var(--ww-muted);font-size:.65rem}.customizer-link-icon{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:.55rem;background:#e1f5f1;color:#11816d}.customizer-note{display:flex;align-items:flex-start;gap:.65rem;margin:1rem 1.15rem;padding:.85rem;border-radius:.65rem;background:#eef7f8;color:#54717a;font-size:.7rem}.customizer-note i{margin-top:.1rem;color:#168b84}.customizer-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.customizer-choice-grid-three{grid-template-columns:repeat(3,minmax(0,1fr))}.customizer-choice{position:relative;margin:0;cursor:pointer}.customizer-choice input{position:absolute;opacity:0;pointer-events:none}.customizer-choice span{display:flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.7rem;padding:.6rem;border:1px solid var(--ww-border);border-radius:.6rem;background:var(--ww-card);color:var(--ww-muted);font-size:.72rem;font-weight:650;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.customizer-choice input:checked+span{border-color:var(--ww-teal);background:var(--ww-soft);color:var(--ww-teal);box-shadow:0 0 0 1px var(--ww-teal)}.customizer-choice input:focus-visible+span{outline:3px solid rgba(26,179,148,.2);outline-offset:2px}.customizer-switch-row{display:flex;align-items:center;justify-content:space-between;gap:1rem}.customizer-switch-row strong,.customizer-switch-row small{display:block}.customizer-switch-row strong{color:var(--ww-navy);font-size:.78rem}.customizer-switch-row small{margin-top:.15rem;color:var(--ww-muted);font-size:.68rem}.customizer-footer{padding:1rem 1.15rem;border-top:1px solid var(--ww-border);background:var(--ww-card)}html[data-bs-theme=dark] .customizer-avatar,html[data-bs-theme=dark] .customizer-link-icon{background:#203c38;color:#76d8c4}html[data-bs-theme=dark] .customizer-note{background:#24343a;color:#b5c7ce}
.line-chart-wrap{margin-bottom:.5rem}.line-chart{display:block;width:100%;height:220px;color:#1ab394}.line-chart polyline{fill:none;stroke:currentColor;stroke-width:2.5;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}.line-chart circle{fill:currentColor}.line-chart circle:hover{r:4}.line-chart .line-chart-zero{stroke:var(--theme-border-color);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.line-chart-table{margin-top:.5rem}.line-chart-table summary{cursor:pointer;font-size:.72rem;color:var(--theme-secondary-color)}
.skip-link{position:absolute;top:-3.5rem;left:1rem;z-index:2000;padding:.65rem 1.1rem;border-radius:.4rem;background:#132238;color:#ffffff;font-weight:700;font-size:.85rem;text-decoration:none;transition:top .15s ease}.skip-link:focus{top:1rem}
.metric-card-link{transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.metric-card-link:hover,.metric-card-link:focus-visible{border-color:color-mix(in srgb,var(--ww-teal) 45%,var(--ww-border));box-shadow:0 3px 14px rgba(30,43,62,.08);transform:translateY(-1px)}.metric-card-link:focus-visible{outline:3px solid rgba(26,179,148,.25);outline-offset:2px}
.composition-bar{display:flex;height:1.85rem;border-radius:.5rem;overflow:hidden}.composition-segment{display:block;height:100%;min-width:2px;transition:opacity .15s ease}.composition-segment:hover,.composition-segment:focus-visible{opacity:.85}.composition-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;margin-top:.85rem}.composition-legend-item{display:flex;align-items:center;gap:.4rem;font-size:.78rem}.composition-legend-item:hover{text-decoration:underline!important}.composition-swatch{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;flex:0 0 auto}
.line-chart-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.5rem;font-size:.75rem;color:var(--theme-secondary-color)}.line-chart-legend-item{display:flex;align-items:center;gap:.4rem}.line-chart-legend-swatch{display:inline-block;width:.65rem;height:.65rem;border-radius:50%;background:currentColor}.line-chart-series-income{color:#1ab394}.line-chart-series-expenses{color:#e35d6a}
.holding-toggle{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .55rem;border:1px solid var(--ww-border);border-radius:999px;background:var(--ww-card);color:var(--ww-navy);font-size:.78rem;font-weight:700;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.holding-toggle:hover,.holding-toggle:focus-visible{border-color:var(--ww-teal);background:var(--ww-soft);color:var(--ww-teal)}.holding-toggle-icon{display:inline-grid;place-items:center;width:1.15rem;height:1.15rem;border-radius:50%;background:currentColor;color:var(--ww-card)!important}.holding-toggle-icon i{color:var(--ww-card);font-size:.6rem;transition:transform .2s ease}.holding-row-expanded .holding-toggle{border-color:var(--ww-teal);background:var(--ww-soft);color:var(--ww-teal)}.holding-row-expanded .holding-toggle-icon i{transform:rotate(135deg)}tr.dtr-details,.holding-child-table{background:var(--ww-soft)}.holding-child-table{margin:0;font-size:.82rem}.holding-child-table th{color:var(--ww-muted);font-weight:650;font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;border-top:0}table.dataTable{border-collapse:separate!important;border-spacing:0}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5rem}div.dataTables_wrapper div.dataTables_length select{margin:0 .4rem}
/* Sizes and colours templates used to set in style="" attributes, which the Content-Security-Policy no longer allows. */
.user-avatar.user-avatar-lg{width:72px;height:72px;font-size:1.5rem}.progress.progress-thin{height:8px}.totp-qr{max-width:220px}.allocation-cell-percentage{max-width:110px}.allocation-cell-minimum{max-width:100px}.allocation-cell-priority{max-width:90px}.customizer-swatch-grey{color:#8591a3}.import-examples-menu{max-width:22rem}

/* The vendored theme's own .btn:focus-visible rule sets
   box-shadow: 0 0 0 0 rgba(...): a zero spread radius, so it is invisible
   for every plain button regardless of colour -- confirmed by grepping the
   compiled CSS for a non-zero spread on this property and finding none, in
   any button variant. Its colour is meant to come from
   --theme-btn-focus-shadow-rgb, a per-variant custom property that turned
   out not to resolve to a plain, valid number list in every context it is
   read in (a live check found the button still had no ring after fixing
   just the spread, with the rule present in the served CSS) -- an invalid
   var() substitution invalidates the whole shorthand it appears in, so this
   uses --ww-teal instead, the same variable already proven working for the
   nav elements below. Before the more specific rules below, so a button
   this session gave its own treatment for (the sidenav toggle, topbar
   links) keeps that instead of falling back to this. */
.btn:focus-visible{box-shadow:0 0 0 .2rem var(--ww-teal)!important}

/* A live keyboard-navigation check (headless Chromium, computed-style diff
   focused vs. blurred on every property, not just outline/box-shadow) found
   the entire sidenav and topbar -- every nav link, the logo, the theme/
   fullscreen/settings/account-menu buttons -- gave a keyboard user no visible
   sign of where focus was. Traced to one rule in the compiled theme CSS,
   `a, button { outline: none !important; }`: a blanket reset every other
   focus-visible style in this app already works around by using box-shadow
   instead of outline (see .btn:focus-visible's --theme-btn-focus-box-shadow,
   or partials/customizer.html's own rule) -- these elements are exactly the
   ones nothing had done that for yet. box-shadow, not outline, for the same
   reason, and !important because a still-later theme rule could otherwise
   reintroduce this by accident with no visible failure to catch it. Two
   colours: the sidenav is dark navy in both themes (verified against the
   running app, not assumed), so its own links get a bright ring; everything
   else gets the app's teal, already used for other focus-visible states and
   readable against both the light and dark theme's own topbar. */
.sidenav-menu a:focus-visible,.sidenav-user a:focus-visible,.wholeworth-sidenav-user a:focus-visible,.wholeworth-sidenav-user button:focus-visible,a.logo:focus-visible{box-shadow:0 0 0 3px #ffffff inset!important;border-radius:.35rem}
.topbar-link:focus-visible,.topbar-profile:focus-visible,.sidenav-toggle-button:focus-visible,a.logo-light:focus-visible,a.logo-dark:focus-visible{box-shadow:0 0 0 3px var(--ww-teal)!important;border-radius:.35rem}

/* Administration's sub-menu is grouped by what each page is for -- access,
   delivery, application, evidence -- because fourteen flat links gave no
   clue which ones set policy and which only report. The label is a real
   heading each group's list points at, so the grouping is announced too,
   not just seen. */
.side-nav-section{margin:.75rem 0 .15rem;padding:0 1.5rem;font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.45)}
.side-nav-section:first-child{margin-top:.25rem}
/* Email provider setup wizard (admin/email.html) */
.wizard-progress li{color:#7b8799}.wizard-progress li.active{color:var(--ww-navy);font-weight:700}
.provider-option{cursor:pointer;transition:border-color .15s ease}.provider-option:hover{border-color:#b5ded5}.provider-option:has(input:checked){border-color:var(--ww-teal,#1aa38a);box-shadow:0 0 0 2px rgba(26,163,138,.15)}
html[data-bs-theme=dark] .provider-option:hover,html[data-bs-theme=dark] .provider-option:has(input:checked){border-color:#72d9c6}
