/* ===== v1.4: data backup, app & offline, update banner ===== */
.noscript{padding:24px;margin:24px;border:1px solid #C9A23E;border-radius:14px;background:#0F2A1D;color:#F4EFE2;font:16px/1.5 Inter,system-ui,sans-serif}
.p14 h2{margin-bottom:6px}
.p14row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}
.p14row .btn{width:auto;flex:1 1 180px;text-align:center;margin:4px 0}
.vh14{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
#p14implbl{cursor:pointer}
#p14implbl:has(+ .vh14:focus-visible),.p14row:focus-within #p14implbl:has(+ .vh14:focus-visible){outline:3px solid var(--focus,#F5D878);outline-offset:3px}
.p14ok,.p14err{margin-top:12px;padding:14px 16px;border-radius:var(--r,14px);border:1px solid var(--accent-line,rgba(201,162,62,.45));background:color-mix(in srgb,var(--surface-2,#143323) 85%,transparent)}
.p14err{border-color:color-mix(in srgb,var(--bad,#F08A7A) 70%,transparent)}
.p14ok ul{margin:8px 0 8px 18px;padding:0}.p14ok li{margin:2px 0}
#p14prog:empty{display:none}
.th14bar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(96px + env(safe-area-inset-bottom));z-index:70;display:flex;align-items:center;gap:12px;max-width:min(560px,92vw);padding:10px 10px 10px 16px;border-radius:16px;
 background:color-mix(in srgb,var(--bg-2,#0F2A1D) 94%,transparent);border:1px solid var(--accent-line,rgba(201,162,62,.5));color:var(--text,#F4EFE2);box-shadow:var(--shadow);font-size:var(--t-sm,14px);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.th14bar .btn{width:auto;margin:0;padding:8px 16px;white-space:nowrap}
.th14x{min-width:44px;min-height:44px;border:0;background:transparent;color:inherit;font-size:22px;line-height:1;cursor:pointer;border-radius:12px}
.th14x:focus-visible{outline:3px solid var(--focus,#F5D878)}
@media (min-width:1024px){.th14bar{bottom:28px}}
body.offline14 header .brand:after{content:"Offline";margin-left:10px;padding:3px 9px;border-radius:999px;font:600 11px/1.4 var(--font-sans);letter-spacing:.06em;text-transform:uppercase;color:#1E1605;background:linear-gradient(115deg,#F7E7AE,#D4AF37)}
@media print{.th14bar,.p14{display:none!important}}

/* boot message only shows when CSS failed to load (file:// with SRI) */
.boot14{display:none}
/* a11y (WCAG 2.4.11): keyboard focus never lands hidden under the sticky coach composer or the bottom nav */
html{scroll-padding-bottom:96px}
html:has(#cf){scroll-padding-bottom:170px}
