/* The Frequency Hub — clean clinical brand (from the official logo). WCAG AA checked: see build notes. */
:root{--primary:#5B2A86;--primary-dark:#4A2270;--violet:#6C63D9;--violet-soft:#C9C5F2;--gold:#B9A96B;--gold-ink:#6E5F28;--gold-soft:#F7F4EC;
--indigo:#5B2A86;--indigo2:#4A2270;--ink:#2B2B33;--muted:#6B6B78;--bg:#FFFFFF;--card:#FFFFFF;--line:#E6E6EE;--tint:#F7F6FA;--lav:#F3EEF8;
--red:#B23A3A;--red-ink:#9B2226;--red-soft:#FBEAEA;--ok:#1E6B4C;--ok-soft:#E7F4EE;--warn:#A86B00;--warn-ink:#7A4F00;--warn-soft:#FBF2DE;
--radius:8px;--shadow:0 1px 2px rgba(43,43,51,.05),0 2px 8px rgba(43,43,51,.04);
--font:"Inter","Source Sans 3","Helvetica Neue",Arial,system-ui,sans-serif;--serif:"Cormorant Garamond","Marcellus",Georgia,"Times New Roman",serif}
*{box-sizing:border-box}html,body{margin:0}
body{font-family:var(--font);color:var(--ink);background:#fff;line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased}
a{color:var(--violet);text-underline-offset:2px}a:hover{color:var(--primary)}
:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
h1,h2,h3,h4{font-family:var(--serif);color:var(--primary);font-weight:600;line-height:1.2;letter-spacing:.005em}
h1{font-size:2.3rem;margin:.2em 0 .5em}h2{font-size:1.55rem;margin:1.4em 0 .6em}h3{font-size:1.25rem;margin:.6em 0 .3em}h4{font-size:1.1rem}
.wrap{max-width:1140px;margin:0 auto;padding:0 24px}
/* header */
header.site{background:#fff;border-bottom:1px solid var(--line)}
header.site .bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0 8px}
.logo{display:inline-flex;align-items:center;text-decoration:none}
.logo img{display:block;height:58px;width:auto;max-width:62vw}
.logo .portal-tag{margin-left:12px;padding-left:12px;border-left:1px solid var(--line);font:500 .72rem var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--gold-ink)}
nav.main{display:flex;flex-wrap:wrap;gap:2px;padding:4px 0 10px}
nav.main a{color:var(--ink);text-decoration:none;font-size:.88rem;padding:6px 10px;border-radius:6px;border-bottom:2px solid transparent}
nav.main a:hover{background:var(--tint);color:var(--primary)}
nav.main a.on{color:var(--primary);font-weight:600;border-bottom-color:var(--primary);border-radius:6px 6px 0 0}
nav.main a.staff{color:var(--muted)}nav.main a.staff.on{color:var(--primary)}
.member{font-size:.88rem;display:flex;gap:10px;align-items:center;color:var(--muted)}
.navtoggle{display:none}
main{padding:32px 0 48px;min-height:60vh}
/* surfaces */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin:0 0 20px;box-shadow:var(--shadow)}
.grid{display:grid;gap:20px}.g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.g3{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
hr{border:0;border-top:1px solid var(--line);margin:20px 0}
/* buttons & forms */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--primary);border-radius:6px;padding:10px 18px;font:600 .92rem var(--font);cursor:pointer;background:var(--primary);color:#fff;text-decoration:none;transition:background .15s}
.btn:hover{background:var(--primary-dark);color:#fff}
.btn.red{background:var(--primary);border-color:var(--primary)}
.btn.danger{background:var(--red);border-color:var(--red)}
.btn.ghost{background:#fff;color:var(--primary);border:1px solid var(--violet-soft)}.btn.ghost:hover{background:var(--lav)}
.btn.sm{padding:6px 12px;font-size:.82rem}.btn:disabled{opacity:.45;cursor:not-allowed}
input,select,textarea{font:inherit;color:var(--ink);padding:9px 11px;border:1px solid #D4D4DE;border-radius:6px;background:#fff;width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--violet);outline:2px solid rgba(108,99,217,.2)}
label{font-size:.88rem;color:var(--muted);display:block;margin:8px 0 4px}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.row>*{flex:1 1 160px}
.muted{color:var(--muted)}.small{font-size:.85rem}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;background:var(--lav);color:var(--primary);margin:2px;border:1px solid transparent}
.pill.red{background:var(--red-soft);color:var(--red-ink)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn-ink)}
.pill.gold{background:var(--gold-soft);color:var(--gold-ink);border-color:var(--gold)}
.gold{color:var(--gold-ink)}
.demo-banner{background:var(--tint);color:var(--muted);text-align:center;font-size:.76rem;padding:4px 12px;border-bottom:1px solid var(--line);letter-spacing:.02em}
table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}
/* hero (white, airy) */
.hero{background:#fff;color:var(--ink);border:1px solid var(--line);border-top:3px solid var(--gold);border-radius:var(--radius);padding:44px 36px;margin-bottom:24px;box-shadow:var(--shadow)}
.hero h1{font-size:2.6rem}.hero p{max-width:640px;color:var(--muted)}
/* footer */
footer.site{background:#fff;border-top:1px solid var(--line);color:var(--muted);font-size:.84rem;padding:30px 0 36px}
footer.site .fbar{display:flex;gap:18px;align-items:flex-start}
footer.site .fbar img{width:56px;height:56px;flex:0 0 auto}
footer.site a{color:var(--violet)}
.tagline{font-family:var(--serif);color:var(--gold-ink);font-size:1.05rem}
.disclaimer{border-left:3px solid var(--gold);padding:10px 14px;background:var(--gold-soft);font-size:.84rem;color:var(--ink);border-radius:4px}
.skeleton{background:linear-gradient(90deg,#F1F1F5 25%,#F8F8FB 50%,#F1F1F5 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:6px;height:18px;margin:8px 0}@keyframes sk{to{background-position:-200% 0}}
.err{color:var(--red-ink);background:var(--red-soft);padding:8px 12px;border-radius:6px;font-size:.88rem}
.okmsg{color:var(--ok);background:var(--ok-soft);padding:8px 12px;border-radius:6px;font-size:.88rem}
/* selection panel */
.sel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:20px}
.sel h3{font-size:1.15rem}
.sel .types{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.sel .types label{display:inline-flex;align-items:center;gap:6px;margin:0;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);cursor:pointer}
.sel .types input,.sel .list input{width:auto;accent-color:var(--primary)}
.sel .list{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:6px;background:#fff;margin-top:8px}
.sel .list label{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0;padding:7px 10px;border-bottom:1px solid var(--line);color:var(--ink)}
.sel .count{font-size:.82rem;color:var(--muted)}
input[type=checkbox],input[type=radio]{accent-color:var(--primary)}
.chart{width:100%;overflow-x:auto}.chart svg{display:block}
.fp{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.fp figure{margin:0;text-align:center}.fp figcaption{font-size:.82rem;color:var(--muted)}
.tl{border-left:1px solid var(--line);margin-left:8px;padding-left:20px}.tl .ev{position:relative;margin-bottom:16px}.tl .ev:before{content:"";position:absolute;left:-26px;top:7px;width:11px;height:11px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 3px #fff}
.tl .ev.session:before{background:var(--gold)}.tl .ev.note:before{background:var(--violet)}
.badges{display:flex;flex-wrap:wrap;gap:10px}.badge{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px}
.badge .b{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--gold-soft);border:1px solid var(--gold);color:var(--gold-ink);font-weight:700}.badge.locked{opacity:.5}
.msg{padding:10px 14px;border-radius:var(--radius);margin:8px 0;max-width:78%}.msg.member{background:var(--lav);margin-left:auto}.msg.clinic{background:#fff;border:1px solid var(--line)}
/* report editor + document */
.rte-bar{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.rte-bar button{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:4px;padding:3px 9px;cursor:pointer;font:600 .8rem var(--font)}.rte-bar button:hover{background:var(--lav)}
.rte{min-height:70px;border:1px solid #D4D4DE;border-radius:6px;padding:8px 12px;background:#fff}.rte:focus{outline:2px solid rgba(108,99,217,.3);border-color:var(--violet)}
.rte[contenteditable=false]{background:var(--tint);color:var(--muted)}
.flag-high{background:var(--red-soft);border-left:3px solid var(--red);padding:6px 10px;margin:4px 0;border-radius:4px}.flag-warn{background:var(--warn-soft);border-left:3px solid var(--warn);padding:6px 10px;margin:4px 0;border-radius:4px}
.steps{display:flex;gap:6px;flex-wrap:wrap}.steps span{padding:4px 12px;border-radius:999px;background:var(--tint);border:1px solid var(--line);color:var(--muted);font-size:.8rem}.steps span.on{background:var(--primary);border-color:var(--primary);color:#fff}.steps span.done{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.report-doc{font-size:.95rem}
.report-doc .rhead{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:18px;position:relative}
.report-doc .rhead:after{content:"";position:absolute;left:0;bottom:-1px;width:90px;height:2px;background:var(--gold)}
.report-doc .rhead img{height:62px;width:auto;max-width:60%}
.report-doc h1{font-size:1.9rem}
.report-doc h2{font-size:1.3rem;border-bottom:1px solid var(--line);padding-bottom:4px}
.preview-print .report-doc{max-width:210mm;margin:0 auto;padding:15mm;box-shadow:0 0 0 1px var(--line),0 4px 18px rgba(43,43,51,.08)}
.email-preview{border:1px solid var(--line);border-radius:6px;width:100%;height:360px;background:#fff}
@media (max-width:720px){
 .wrap{padding:0 16px}h1{font-size:1.85rem}.hero{padding:28px 20px}.hero h1{font-size:2rem}
 .logo img{height:44px}.logo .portal-tag{display:none}
 header.site .bar{padding:10px 0 6px}
 .navtoggle{display:inline-flex}nav.main{display:none;flex-direction:column}nav.main.open{display:flex}nav.main a.on{border-bottom-color:transparent;border-left:3px solid var(--primary);border-radius:0}
 .card{padding:16px}table{font-size:.84rem}.card table{display:block;overflow-x:auto}
 footer.site .fbar{flex-direction:column}
}
@media print{header.site,nav,footer.site,.noprint,.sel,.demo-banner{display:none!important}body{background:#fff;font-size:11pt}.card{border:0;box-shadow:none;page-break-inside:avoid}main{padding:0}.report-page{page-break-after:always}
 *{-webkit-print-color-adjust:exact;print-color-adjust:exact}.report-doc section{page-break-inside:avoid}a{color:var(--ink)}}
@font-face{font-display:swap}

/* review fixes: mobile overflow, header, helpers */
.hscroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.swipe-hint,.show-sm{display:none}
header.site .member{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}
.mname{max-width:12ch;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:middle}
@media (max-width:720px){
 .chart{overflow:visible}.hscroll{border:1px solid var(--line);border-radius:6px;background:linear-gradient(90deg,#fff 30%,rgba(255,255,255,0)) left/24px 100% no-repeat local,linear-gradient(270deg,rgba(91,42,134,.12),rgba(91,42,134,0)) right/14px 100% no-repeat scroll}
 .swipe-hint{display:block;margin:6px 0 0}
 .hide-sm{display:none}.show-sm{display:block}
 .mname{max-width:9ch}
 table{max-width:100%}
 .row>*{min-width:0}
}
@media (max-width:380px){.mname{display:none}}
@media (max-width:480px){
 header.site .bar{gap:8px}header.site .logo{min-width:0;flex:1 1 auto}header.site .logo picture,header.site .logo img{max-width:100%;height:auto;max-height:40px}
 .mname{display:none}header.site .member{flex:0 0 auto;gap:6px}
}
.minit{display:none}
@media (max-width:480px){.minit{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#F3EEF8;color:#5B2A86;font-weight:600;font-size:.8rem}}
@media (max-width:720px){.row>div[style*="flex:0 0 auto"]{flex:1 1 100%!important;display:flex;flex-wrap:wrap;gap:6px;align-items:center}}
/* ---- dropdown menus (tap/click to open; keyboard: Enter/Space, arrows, Escape) ---- */
nav.main{display:block;padding:2px 0 8px}
nav.main .menubar{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px;align-items:stretch}
nav.main .mtop{position:relative}
nav.main .mbtn,nav.main .mlink{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 14px;border:0;border-bottom:2px solid transparent;background:none;color:var(--ink);font:500 .95rem var(--font);text-decoration:none;border-radius:6px 6px 0 0;cursor:pointer}
nav.main .mbtn:hover,nav.main .mlink:hover,nav.main .mbtn[aria-expanded="true"]{background:var(--tint);color:var(--primary)}
nav.main .mbtn.on,nav.main .mlink.on{color:var(--primary);font-weight:600;border-bottom-color:var(--primary)}
nav.main .mbtn:focus-visible,nav.main a:focus-visible{outline:3px solid var(--primary);outline-offset:2px}
nav.main .caret{font-size:.75em;transition:transform .15s}
nav.main .mbtn[aria-expanded="true"] .caret{transform:rotate(180deg)}
nav.main .sub{list-style:none;margin:0;padding:6px;position:absolute;top:100%;left:0;z-index:50;min-width:240px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(30,20,50,.14)}
nav.main .sub[hidden]{display:none}
nav.main .sub a{display:flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:6px;color:var(--ink);text-decoration:none;font-size:.93rem}
nav.main .sub a:hover,nav.main .sub a:focus{background:var(--tint);color:var(--primary)}
nav.main .sub a.on{font-weight:600;color:var(--primary);border-left:3px solid var(--primary)}
nav.main .mtop:last-child .sub{left:auto;right:0}
.viewswitch{white-space:nowrap}
@media (max-width:720px){
 nav.main{display:none}nav.main.open{display:block}
 nav.main .menubar{flex-direction:column;gap:0}
 nav.main .mbtn,nav.main .mlink{width:100%;justify-content:space-between;border-bottom:1px solid var(--line);border-radius:0}
 nav.main .mbtn.on,nav.main .mlink.on{border-left:3px solid var(--primary);border-bottom-color:var(--line)}
 nav.main .sub{position:static;box-shadow:none;border:0;border-radius:0;padding:0 0 6px 14px;min-width:0}
 .viewswitch{display:none}
}
@media (min-width:721px){.btn.navtoggle{display:none}}
/* Program Library */
.lib-disclaimer{border-left:4px solid var(--gold-ink);background:var(--gold-soft)}
.lib-tabs{display:flex;gap:8px;margin:0 0 12px}.lib-tabs .btn{min-height:44px}
.lib-az{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:2px;padding:6px;margin:0 0 12px;background:#fff;border:1px solid var(--line);border-radius:12px}
.lib-az a,.lib-az span{min-width:36px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;font-weight:600;text-decoration:none}
.lib-az a{color:var(--primary)}.lib-az a:hover,.lib-az a:focus-visible{background:var(--gold-soft)}.lib-az span{color:#bbb}
.lib-letter{scroll-margin-top:130px}.lib-letter h2{margin-top:0}
.lib-names{list-style:none;margin:0;padding:0;columns:3 260px;column-gap:24px}.lib-names li{break-inside:avoid;padding:5px 0;border-bottom:1px solid var(--line)}
.lib-hz{display:block;font-size:.82em;color:var(--muted,#666);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;line-height:1.35}.lib-db{font-size:.85em;font-weight:600;letter-spacing:.02em}.lib-more{background:none;border:0;padding:2px 4px;min-height:28px;color:var(--primary);text-decoration:underline;cursor:pointer;font:inherit}
.lib-freq .lib-names{columns:2 260px;margin-top:8px}.lib-freq summary{min-height:40px;cursor:pointer}
/* CR-0165 deep-linked entry (STD-0001): highlighted, scrolled into view; preset entry card; gap note */
.lib-hit{background:var(--gold-soft);outline:2px solid var(--gold-ink);outline-offset:2px;scroll-margin-top:140px}.lib-preset{scroll-margin-top:20px}.lib-dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;margin:6px 0}.lib-dl dt{font-weight:600;color:var(--muted,#555)}.lib-dl dd{margin:0}
.lib-plink{display:inline-flex;align-items:center;min-height:44px}.lib-note{border-left:4px solid var(--gold-ink)}.lib-gap{background:#FFF8EC}
.chip{min-height:36px;padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;margin:6px 4px 0 0}.chip.on{background:var(--primary);color:#fff;border-color:var(--primary)}
@media (max-width:720px){.lib-az a,.lib-az span{min-width:30px}.lib-names{columns:1}}
/* Retention report */
.ret-tile{display:flex;flex-direction:column;gap:2px;text-align:left;cursor:pointer;font:inherit;min-height:44px}.ret-tile.on{outline:3px solid var(--primary)}
.ret-n{font-size:2rem;font-weight:600}.ret-l{font-weight:600}
.pill.info{background:#E6F0FF;color:#1D4ED8}.pill.purple{background:#EFE7F8;color:var(--primary)}.pill.gold{background:var(--gold-soft);color:var(--gold-ink)}.pill.outline{background:#fff;border:1px solid #B42318;color:#B42318}
dialog.card::backdrop{background:rgba(20,10,40,.45)}
/* ---- Help centre, tours, onboarding ---- */
.helpbtn{min-width:44px;min-height:44px;font-weight:700;font-size:1.05rem;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:6px}
.pagehelp{text-align:right;margin:6px 0 -6px;font-size:.9rem}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.help-head #hq{font-size:1.1rem;min-height:52px;width:100%;margin:6px 0 8px}
.help-filters>div{min-width:150px}
.help-hit{display:block;text-decoration:none;color:inherit}
.help-hit:hover,.help-hit:focus{outline:2px solid var(--purple,#5B2A86);outline-offset:2px}
.help-results{display:grid;gap:12px}
.help-hit mark{background:#fde68a;padding:0 1px}
.help-area h2{margin-top:24px}
.help-article{max-width:860px}
.help-body h2{margin-top:22px}.help-body h3{margin-top:16px}
.help-body li{margin:4px 0}
.help-note{background:#f5f0fb;border-left:4px solid var(--purple,#5B2A86);padding:10px 14px;margin:10px 0;border-radius:6px}
.help-fb{border-top:1px solid #e5e5e5;margin-top:22px;padding-top:12px}
.help-fb textarea{width:100%;min-height:80px}
.help-az{columns:2;column-gap:28px;padding-left:18px}
.help-az li{break-inside:avoid;margin:3px 0}
@media (max-width:720px){.help-az{columns:1}}
.tour-ring{position:absolute;z-index:9998;border:3px solid #f59e0b;border-radius:10px;box-shadow:0 0 0 9999px rgba(20,10,40,.35);pointer-events:none;transition:all .15s}
.tour-box{position:absolute;z-index:9999;max-width:360px;width:calc(100vw - 20px);background:#fff;border-radius:12px;padding:16px 18px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.tour-box h2{margin:4px 0 6px;font-size:1.2rem}
.tour-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.ob-bar{height:14px;background:#eee;border-radius:7px;overflow:hidden}.ob-bar span{display:block;height:100%;background:var(--purple,#5B2A86);width:0;transition:width .3s}
.ob-list{list-style:none;padding:0}.ob-mod.done{opacity:.75}.ob-mod.next{border-left:4px solid #f59e0b}

/* ---- training, practice mode, How do I panel, first week (training build) ---- */
.practice-banner{background:#5b2a86;color:#fff;padding:10px 16px;text-align:center;font-size:.95rem;position:sticky;top:0;z-index:60}
.practice-banner .btn{margin-left:6px;background:#fff;color:#5b2a86;border-color:#fff}
.practice-banner .btn.ghost{background:transparent;color:#fff}
body.practice-on header{box-shadow:inset 0 -4px 0 #5b2a86}
.practicebtn[aria-pressed="true"]{background:#5b2a86;color:#fff;border-color:#5b2a86}
.howdoi-btn{position:fixed;right:16px;bottom:16px;z-index:70;min-height:48px;padding:0 18px;border-radius:24px;border:0;background:#5b2a86;color:#fff;font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.2);cursor:pointer}
.howdoi-panel{position:fixed;right:16px;bottom:74px;z-index:71;width:min(380px,calc(100vw - 32px));max-height:70vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.25);padding:16px}
.howdoi-list{padding-left:20px}.howdoi-list li{margin-bottom:12px}
.fw-card .ob-bar{margin:6px 0}
.tr-tabs{gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tr-checks{list-style:none;padding:0;margin:6px 0 0}
.quiz fieldset{border:1px solid #e3dcef;border-radius:10px;margin:10px 0;padding:10px 14px}
.quiz legend{font-weight:600;padding:0 4px}
.quiz-opt{display:flex;gap:10px;align-items:center;min-height:44px;cursor:pointer}
.quiz-opt input{width:22px;height:22px}
.okmsg{color:#1d6b3a}.errmsg{color:#a12a2a}
.pill.ok{background:#e3f4e8;color:#1d6b3a}.pill.warn{background:#fde8e8;color:#a12a2a}
.certificate{border:6px double #b8963e;border-radius:12px;padding:40px 30px;text-align:center;background:#fffdf7;max-width:760px;margin:20px auto}
.certificate h1{font-size:2rem;margin:10px 0}.cert-name{font-size:1.8rem;font-family:Georgia,serif;color:#5b2a86;margin:8px 0}
.help-video{width:100%;max-width:720px;border-radius:10px;border:1px solid #e3dcef;background:#000}
.help-updated{background:#eef7ff;border-left:4px solid #2a6db5;padding:8px 12px;border-radius:6px;margin:8px 0}
@media print{.noprint,header,nav,.howdoi-btn,.howdoi-panel,.practice-banner,.demo-banner,footer,.pagehelp{display:none!important}.certificate{border-color:#b8963e}}
@media (max-width:720px){.howdoi-btn{right:10px;bottom:10px}.howdoi-panel{right:10px;bottom:66px}}
/* My Schedule */
.sch-fixed{background:#eef2ff;color:#2b3a8c}.sch-prop{background:#f3e8ff;color:#5b2a86}.sch-buf{background:#ecfdf5;color:#065f46}.sch-brief{background:#fff7e6;color:#8a5a00}.sch-busy{background:#e5e7eb;color:#374151}
.sch-t{width:100%}.sch-t td{vertical-align:top}.sch-r-fixed td:first-child{border-left:4px solid #6366f1}.sch-r-prop td:first-child{border-left:4px solid #8b5cf6}.sch-r-busy td{color:#4b5563;background:#f9fafb}.sch-r-busy td:first-child{border-left:4px solid #9ca3af}
.sch-prio ol{margin:.2em 0 .6em 1.2em}.sch-clash{border-left:4px solid #d97706}.sch-legend .pill{margin:2px 0}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.sch-t .pill{white-space:nowrap}.sch-bar .row{flex-wrap:wrap}.sch-bar .btn{flex:0 0 auto}
/* Social */
.soc-item blockquote{margin:.4em 0;padding:.4em .8em;border-left:4px solid #c4b5fd;background:#faf5ff}.soc-focus{outline:3px solid #f59e0b}.soc-form textarea{width:100%}
/* Video proposals */
.vp-scroll{overflow-x:auto}.vp-t textarea{min-width:120px;width:100%;font-size:.9rem;padding:4px}.vp-t td{vertical-align:top;padding:4px}.vp-hist del{background:#fee2e2;text-decoration:line-through}.vp-hist ins{background:#dcfce7;text-decoration:none}
/* Bark leads */
.pill.bark-b{background:#0f766e;color:#fff}.bark-t td{vertical-align:top}.bark-reasons{font-size:.85rem;color:#555}
/* Round 3 (20 Oct 2026): M-2 practice bar "Switch off" readable on the purple bar (the brand theme sets .practice-banner .btn
   text to purple, which made the ghost button invisible); L-1 a [hidden] count pill stays hidden (.pill sets display). */
.practice-banner .btn.ghost{background:transparent!important;color:#fff!important;border:1px solid #fff!important}
.practice-banner .btn.ghost:hover,.practice-banner .btn.ghost:focus-visible{background:rgba(255,255,255,.18)!important;color:#fff!important}
[hidden]{display:none!important}
/* M-5 (round 3): Retention "Open data requests" fits its card at desktop width: action buttons wrap, the table scrolls inside the card if it must. */
.req-t{width:100%}.req-t td{vertical-align:top}.req-acts{display:flex;flex-wrap:wrap;gap:4px;min-width:150px;max-width:260px}.req-acts .btn{margin:0}
/* LAYOUT-FIX 2026-10-20: long programme names (chemical names) in the Programme Library could not wrap and pushed the page ~130px wider than a 390px phone */
.lib-names li{overflow-wrap:anywhere;min-width:0}
/* CR-0078 item 6: instant tap feedback on every button (iPad), no double-tap zoom delay, busy state while saving */
button,.btn,a.btn,input[type=submit],[role=button]{touch-action:manipulation;-webkit-tap-highlight-color:rgba(84,52,140,.18)}
button:active:not(:disabled),.btn:active,input[type=submit]:active:not(:disabled),[role=button]:active{transform:scale(.97);filter:brightness(.9);transition:transform .05s,filter .05s}
button[aria-busy=true],.btn[aria-busy=true]{opacity:.75;cursor:progress}
/* CR-0092: BFB report tap targets on scan lists (44px on iPad; the checkbox keeps its own 44px target) */
.sel .list .sel-item{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;padding:2px 10px;border-bottom:1px solid var(--line);color:var(--ink);min-height:48px}
.sel .list .sel-item label{display:inline-flex;align-items:center;margin:0;padding:0;border:0;color:var(--ink);cursor:pointer;min-height:44px}
.sel .list .sel-tick{min-width:44px;justify-content:center}
.sel .list .sel-tick input{width:22px;height:22px}
.bfb-tap{display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:0 8px;margin:0 -2px;border:0;border-radius:8px;background:transparent;color:var(--primary,#54348C);font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer;-webkit-tap-highlight-color:rgba(84,52,140,.15);touch-action:manipulation}
.bfb-tap:hover,.bfb-tap:focus-visible{background:rgba(84,52,140,.08);outline:2px solid var(--primary,#54348C);outline-offset:1px}
.bfb-plain{display:inline-flex;align-items:center;color:inherit;text-decoration:none}
.bfb-state{margin:8px 0 0}
.bfb-eg{color:var(--primary,#54348C);text-decoration:underline}
.sel .list.bfb-loading{opacity:.85}
.bfb-srl{min-height:44px;display:inline-flex;align-items:center}
@media (pointer:coarse){.sel .list{max-height:420px}}
.gc-deep{background:#fff8e6;border:1px solid #e9d8a6;padding:8px 10px;border-radius:6px}
.bfb-hist{min-height:44px}
.sym-table td{vertical-align:top}.sym-client{margin-top:12px;padding:10px 12px;border-left:4px solid var(--primary,#54348C);background:#faf7ff;border-radius:6px}.sym-client ol{padding-left:22px}.sym-client li{margin:6px 0}
.sym-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.sym-scroll .sym-table{min-width:600px}.sym-table td:nth-child(3){min-width:220px}
/* CR-0110 everything clickable (iPad first): entity links, whole-row/card taps, 44 px targets, instant feedback */
html{touch-action:manipulation;-webkit-text-size-adjust:100%}
a,[data-href],summary,label,select,input,textarea{touch-action:manipulation;-webkit-tap-highlight-color:rgba(84,52,140,.18)}
a.ent{display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:0 6px;margin:0 -6px;border-radius:8px;color:var(--primary,#54348C);text-decoration:underline;text-underline-offset:3px;-webkit-tap-highlight-color:rgba(84,52,140,.15)}
a.ent:focus-visible{outline:2px solid var(--primary,#54348C);outline-offset:1px}
a:active,a.ent:active,.bfb-tap:active{background:rgba(84,52,140,.14)}
.ent-plain{color:inherit}
tr[data-href],.card[data-href],li[data-href],div[data-href]{cursor:pointer}
tr[data-href]>td{height:44px}
tr[data-href]>td:last-child{position:relative;padding-right:30px}
tr[data-href]>td:last-child::after,.card[data-href]::after,li[data-href]::after{content:"\203A";position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:1.5rem;line-height:1;color:var(--primary,#54348C);opacity:.75;pointer-events:none}
.card[data-href],li[data-href]{position:relative;padding-right:36px}
tr[data-href]:active>td,.card[data-href]:active,li[data-href]:active{background:var(--tint,#f3effa)}
tr[data-href][aria-busy=true]>td,.card[data-href][aria-busy=true],a[aria-busy=true]{opacity:.65}
.fh-target{animation:fhTarget 2.4s ease-out 1}
tr.fh-target>td{animation:fhTarget 2.4s ease-out 1}
@keyframes fhTarget{0%,40%{background:#fff3c4;box-shadow:0 0 0 3px #e2c96b}100%{background:transparent;box-shadow:none}}
.fh-navbar{position:fixed;top:0;left:0;right:0;height:4px;z-index:9999;background:linear-gradient(90deg,transparent,var(--primary,#54348C),var(--gold,#BEAD6F),transparent);background-size:50% 100%;background-repeat:no-repeat;animation:fhNav 1s linear infinite;display:none}
html.fh-nav .fh-navbar{display:block}
@keyframes fhNav{0%{background-position:-50% 0}100%{background-position:150% 0}}
.fh-tip{position:absolute;z-index:9998;max-width:min(360px,90vw);background:#2A224D;color:#fff;font-size:.9rem;line-height:1.4;padding:8px 12px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.pill[title],abbr[title]{cursor:help}
/* Touch screens (iPad): every tap target at least 44 x 44 px; inline text links get a 44 px tall hit area without
   changing the line layout; no hover-only cues (focus/active show the same states). */
@media (pointer:coarse),(hover:none){
  button,.btn,a.btn,input[type=submit],input[type=button],select,[role=button],summary,.it-tabs a,.pagehelp a,.viewswitch,nav.main a{min-height:44px;min-width:44px}
  .btn,a.btn,.it-tabs a,.viewswitch,.pagehelp a{display:inline-flex;align-items:center;justify-content:center}
  input[type=checkbox],input[type=radio]{min-width:24px;min-height:24px}
  label:has(>input[type=checkbox]),label:has(>input[type=radio]){display:inline-flex;align-items:center;gap:8px;min-height:44px}
  td a:not(.btn):not(.ent),li>a:not(.btn):not(.ent),.card a:not(.btn):not(.ent),dd a,th a,.small a:not(.btn){display:inline-flex;align-items:center;min-height:44px;min-width:44px}
  p a:not(.btn):not(.ent),footer a{padding-block:11px}
  footer.site a{display:inline-flex;align-items:center;min-height:44px;padding-block:0}
  .bfb-tap:hover,a:hover{background:transparent}
}
/* CR-0128 menu IA: grouped menus, sub-headings, muted Owner slots, breadcrumbs, section tabs; every target at least 44px (iPad first) */
@media (min-width:721px){nav.main .sub{max-height:min(78vh,680px);overflow-y:auto;overscroll-behavior:contain}}
@media (min-width:721px){nav.main .sub.cols{column-count:2;column-gap:14px;width:min(560px,94vw);max-height:none;overflow:visible}.sub.cols>li{break-inside:avoid}}
@media (min-width:1000px){nav.main .sub.cols{column-count:3;width:min(800px,96vw)}}
.sub .mhead{padding:10px 12px 2px;font-size:.74rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.sub .mslot>span{display:flex;align-items:center;min-height:44px;padding:8px 12px;color:var(--muted);font-size:.88rem;font-style:italic;cursor:default}
.probe-wait{display:none!important}
.mbtn .mcount{font-size:.72rem;padding:1px 7px}
@media (min-width:721px) and (max-width:1180px){nav.main .menubar{gap:0}nav.main .mbtn,nav.main .mlink{padding:8px 7px;gap:3px;font-size:.86rem}}
nav.main .mbtn .ls{display:none}
@media (min-width:721px) and (max-width:900px){nav.main .mbtn .lf{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}nav.main .mbtn .ls{display:inline}nav.main .mbtn,nav.main .mlink{padding:8px 8px;font-size:.9rem}}
nav.main .mtop:nth-last-child(-n+3) .sub{left:auto;right:0}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;align-items:center;margin:0 0 4px;padding:0;font-size:.9rem;color:var(--muted)}
.crumbs li{display:flex;align-items:center}.crumbs li+li::before{content:"\203A";padding:0 6px}
.crumbs a,.crumbs span{display:inline-flex;align-items:center;min-height:44px}
.crumbs a{padding:0 6px;margin-left:-6px;color:var(--primary)}
.crumbs [aria-current]{color:var(--ink);font-weight:600}
.sectabs{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.sectabs a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:999px;color:var(--ink);text-decoration:none;font-size:.92rem;background:#fff}
.sectabs a[aria-current]{background:var(--primary);border-color:var(--primary);color:#fff}

/* CR-0136 (24 Oct 2026): 44px tap target for sliders (client check-in mood/sleep/energy) */
input[type=range]{min-height:44px}
/* CR-0140 (24 Oct 2026): practice bar buttons and the "Reset everyone's practice" dialog meet the 44px tap-target rule. */
.practice-banner .btn{min-height:44px;min-width:44px}
.pm-all-status{display:block;margin-top:6px;font-size:.9rem}.pm-all-status:empty{display:none}
.pm-dlg{max-width:30rem;border:0;border-radius:12px;padding:20px 22px}.pm-dlg::backdrop{background:rgba(0,0,0,.45)}
.pm-dlg h2{margin:0 0 8px;font-size:1.15rem}.pm-dlg .btn{min-height:44px;min-width:44px}.pm-dlg-btns{gap:8px;justify-content:flex-end}
/* CR-0142: staff header (Help, Menu, Practice, Client view, initials, Log out) wraps on phones instead of making the page ~24px wider than the screen (sideways pan, Log out half off-screen at 360-390px). Logo link keeps a 44px tap height. */
@media (max-width:480px){header.site .bar{flex-wrap:wrap}header.site .member{flex:1 1 auto;flex-wrap:wrap;justify-content:flex-end;white-space:normal;max-width:100%;min-width:0}#memberBox{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:flex-end;min-width:0;max-width:100%}header.site .logo{min-height:44px;display:flex;align-items:center}}
/* CR-0142 phone polish (390px): logo link 44px tall (beats the brand theme); practice banner collapses to one line (was ~120px:
   short labels, the explanation hidden, buttons stay 44px); the status line under "Reset everyone's practice" still wraps. */
.practice-banner .pm-short{display:none}
@media (max-width:480px){
 header.site a.logo{min-height:44px!important;display:flex!important;align-items:center}
 .practice-banner{display:flex;flex-wrap:nowrap;align-items:center;justify-content:center;gap:6px;padding:4px 8px;font-size:.85rem;white-space:nowrap;overflow-x:auto}
 .practice-banner .pm-long,.practice-banner .pm-full{display:none}.practice-banner .pm-short{display:inline}
 .practice-banner .btn{margin-left:0;flex:0 0 auto;padding:4px 12px}
 .practice-banner:has(.pm-all-status:not(:empty)){flex-wrap:wrap;white-space:normal}.practice-banner .pm-all-status{flex:1 1 100%}
}
/* CR-0163 (Vernon voice 24 Oct 2026 12:52/12:53 BST): staff header "In-clinic check-in" button, right of "Client portal". Brand purple, 44px tap
   target, in-progress badge (its own 44px hit area, same action), small picker for 2+. iPad 1024/820: full label; <=720: "Check-in"; <=380: icon + badge. */
header.site .ckhdr-wrap{position:relative;display:flex;align-items:center;flex:0 0 auto;margin-right:auto}   /* sits right after the logo; .member stays pushed right */
header.site .bar:has(.ckhdr-wrap){justify-content:flex-start}
.ckhdr{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:44px;min-width:44px;padding:0 16px;border-radius:999px;background:var(--primary);color:#fff!important;
  font:700 .95rem/1 var(--font);text-decoration:none!important;white-space:nowrap;box-shadow:0 2px 8px rgba(84,52,140,.35);border:2px solid var(--primary);flex:0 0 auto;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ckhdr:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.ckhdr:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.ckhdr:active{transform:translateY(1px)}.ckhdr.busy{opacity:.85;cursor:progress}
.ckhdr-ico{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--gold);color:#2B2B33}
.ckhdr-s{display:none}
.ckhdr-n{position:absolute;top:-9px;right:-9px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:var(--red,#B23A3A);color:#fff;border:2px solid #fff;font:700 .8rem/20px var(--font);text-align:center;box-sizing:border-box}
.ckhdr-n::after{content:"";position:absolute;inset:-10px}  /* the badge is its own 44px target (same action as the button) */
.ckhdr-n[hidden]{display:none}
.ckhdr-pick{position:absolute;top:calc(100% + 8px);right:0;z-index:60;min-width:240px;max-width:min(92vw,340px);background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px rgba(43,43,51,.18);padding:6px}
.ckhdr-pick[hidden]{display:none}.ckhdr-pick-h{margin:4px 8px 6px;font-size:.82rem;color:var(--muted)}
.ckhdr-opt{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:8px 12px;border:0;border-radius:8px;background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer}
.ckhdr-opt:hover,.ckhdr-opt:focus-visible{background:var(--lav)}.ckhdr-opt span{color:var(--muted);font-size:.88rem;white-space:nowrap}.ckhdr-new{color:var(--primary);font-weight:600;border-top:1px solid var(--line);border-radius:0 0 8px 8px}
@media (max-width:1100px){.ckhdr{padding:0 14px}}
@media (max-width:720px){.ckhdr-l{display:none}.ckhdr-s{display:inline}.ckhdr{padding:0 12px;font-size:.9rem}}
@media (max-width:720px){header.site .bar:has(.ckhdr-wrap) .logo{flex:0 1 auto}}
@media (max-width:480px){.ckhdr{padding:0 10px}.ckhdr-pick{right:auto;left:0}}
@media (max-width:380px){.ckhdr-s{display:none}.ckhdr{padding:0;width:44px;justify-content:center}}
@media print{.ckhdr,.ckhdr-pick{display:none!important}}
