/* GR-PROG-01 v1.7 · All programs redesign (v2.23, LOCAL BUILD 2026-11-02). Rowan 20:42 decisions via Relay.
   Layering: (1) scroll-linked book opening = existing rack/app-v2_5-v21911.js + rack-scoped.css (.scene.rk-in/.rk-open on .obook/.lid), untouched;
   (2) shelf = native scroll-snap on .ap-shelf (scrollLeft only, no transforms); (3) click-open flip = separate fixed overlay #ap-ob
   (WAAPI transform/opacity on its own nodes, never on .obook/.lid). */
:root{--ap-orange:#BF5508;--ap-orange-h:#A64508;--ap-ink:#14204A;--ap-muted:#3E4866;--ap-grey:#5A6380;--ap-line:#D6DCE8;--ap-cream:#FBF3DA;--ap-r:22px}
/* ---- approved glass (course-page value + 3D edge) ---- */
.ap-glass,.nr-rack .listing{background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #D6DCE8;border-radius:var(--ap-r);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),0 8px 24px rgba(20,32,74,.09)}
@media (max-width:1020px){.ap-glass,.nr-rack .listing{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* ---- buttons ---- */
.ap-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 20px;border-radius:999px;border:0;background:var(--ap-orange);color:#fff;font:700 15px/1.2 var(--font-d,inherit);text-decoration:none;cursor:pointer}
.ap-btn:hover,.ap-btn:focus-visible{background:var(--ap-orange-h);color:#fff}
.ap-btn.ap-grey{background:#E4E7EE;color:var(--ap-muted)}
.ap-btn.ap-grey:hover,.ap-btn.ap-grey:focus-visible{background:#D9DDE6;color:var(--ap-ink)}
.ap-btn.ap-off,.ap-btn[disabled]{background:#C9CEDB;color:#2E3650;cursor:not-allowed}
.ap-btn.ap-ghost{background:#fff;color:var(--ap-ink);border:1.5px solid var(--ap-ink)}
.ap-btn.ap-ghost:hover,.ap-btn.ap-ghost:focus-visible{background:#F1F3F8;color:var(--ap-ink)}
.ap-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ap-wrap{max-width:1240px;margin:0 auto;padding:0 32px}
@media (max-width:600px){.ap-wrap{padding:0 20px}}
.ap-note{color:var(--ap-grey);font-size:14px}
.ap-eyebrow{margin:0 0 6px;font:700 12px/1.2 var(--font,inherit);letter-spacing:.12em;text-transform:uppercase;color:#7A4A12}
/* ---- hero ---- */
.nr-rack .ap-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:32px;align-items:center;max-width:1240px;margin:0 auto;padding:48px 32px 40px}
.nr-rack .ap-hero h1{margin:0 0 12px;font:800 clamp(34px,5vw,56px)/1.06 var(--font-d,inherit);letter-spacing:-.02em;color:var(--ap-ink)}
.ap-hero .ap-lede{font-size:19px;line-height:1.5;color:var(--ap-ink);margin:0 0 8px}
.ap-hero .ap-sub{font-size:16px;color:var(--ap-muted);margin:0 0 18px}
.ap-picker{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:15px;color:var(--ap-ink);margin:0}
.ap-picker a{display:inline-flex;align-items:center;min-height:36px;border:1px solid var(--ap-ink);border-radius:999px;padding:4px 14px;color:var(--ap-ink);text-decoration:none;font-weight:600;background:#fff}
.ap-picker a:hover,.ap-picker a:focus-visible{background:#F1F3F8}
.ap-tedbox{background:#FBF8F2;border-radius:28px;display:flex;align-items:center;justify-content:center;padding:20px;min-height:320px}
.ap-tedbox img{width:300px;max-width:80%;height:auto}
@media (max-width:760px){.nr-rack .ap-hero{grid-template-columns:1fr;padding:28px 20px 24px;gap:20px}.ap-tedbox{min-height:0}.ap-tedbox img{width:220px}}
/* ---- shelf ---- */
.ap-shelfsec{background:#F6F8FC;padding:48px 0 52px}
.ap-shelfhd{display:flex;align-items:center;gap:10px;margin:0 0 14px;flex-wrap:wrap}
.ap-shelfhd h2{margin:0;font:800 28px/1.15 var(--font-d,inherit);color:var(--ap-ink)}
.ap-shelfhd .ap-hint{margin-left:auto;font-size:14px;color:var(--ap-muted)}
.ap-arr{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--ap-ink);background:#fff;color:var(--ap-ink);font:700 22px/1 var(--font-d,inherit);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:opacity .2s,background-color .2s,border-color .2s}
.ap-arr:hover:not([disabled]){background:#F1F3F8}
.ap-arr[disabled]{background:#EEF0F4;border-color:#B7BDCB;color:#8A92A6;cursor:not-allowed}
.ap-shelf{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;background:var(--ap-cream);border-radius:18px;padding:18px;scrollbar-width:thin;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.ap-shelf:focus-visible{outline:3px solid var(--ap-ink);outline-offset:3px}
.ap-book{flex:0 0 260px;scroll-snap-align:start;display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
@media (max-width:600px){.ap-book{flex-basis:78%}}
.ap-cover{position:relative;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;width:100%;aspect-ratio:3/4;border:0;padding:0;border-radius:8px 14px 14px 8px;overflow:hidden;cursor:pointer;background:var(--bk,#035670);box-shadow:inset 6px 0 0 rgba(0,0,0,.18),0 10px 22px -12px rgba(20,32,74,.45);transition:box-shadow .2s}
.ap-cover:hover{box-shadow:inset 6px 0 0 rgba(0,0,0,.18),0 16px 30px -12px rgba(20,32,74,.5)}
.ap-cover:focus-visible{outline:3px solid var(--ap-ink);outline-offset:3px}
.ap-cover img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}
.ap-cover .ap-plate{position:absolute;left:12px;right:12px;bottom:12px;background:#FBF8F2;border-radius:8px;padding:6px 10px;font:800 15px/1.2 var(--font-d,inherit);color:var(--ap-ink);text-align:left}
.ap-cover .ap-plate small{display:block;font:700 10.5px/1.3 var(--font,inherit);letter-spacing:.1em;text-transform:uppercase;color:#4A5578}
.ap-book .ap-see{font-weight:700;color:var(--ap-ink);font-size:15px}
.ap-tags{display:flex;gap:6px;flex-wrap:wrap;margin:0;padding:0;list-style:none}
.ap-tags li{font-size:12px;border:1px solid #D9CBB3;border-radius:999px;padding:2px 8px;background:#fff;color:var(--ap-ink)}
.ap-ledge{height:6px;background:#D9CBB3;border-radius:3px}
.ap-shelfnote{margin:12px 0 0}
/* ---- scenes (only additions; the scroll-linked book CSS is untouched) ---- */
.nr-rack .listing .ap-eyebrow{margin-bottom:4px}
.nr-rack .bookfig .ap-bookbtn{position:absolute;inset:-10px;z-index:5;background:transparent;border:0;border-radius:16px;cursor:pointer}
.nr-rack .bookfig .ap-bookbtn:focus-visible{outline:3px solid var(--ap-ink);outline-offset:4px}
.nr-rack .obook .pg .rk-facts li span{white-space:normal}
.nr-rack .obook .pg .ap-or{list-style:none;font:600 12px/1 var(--font,inherit);color:#3E4866;opacity:0;transition:opacity .5s}
.nr-rack .scene.rk-open .obook .pg .ap-or{opacity:1;transition-delay:calc(.9s + 1.5 * .18s)}
@media (prefers-reduced-motion:reduce){.nr-rack .obook .pg .ap-or{opacity:1}}
.ap-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0 10px}
@media (max-width:1100px){.ap-opts{grid-template-columns:1fr}}
.ap-opt{border:1.5px solid var(--ap-line);border-radius:14px;padding:12px 14px;background:#fff;display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.ap-opt.ap-sel{border-color:var(--ap-ink)}
.ap-opt .ap-oh{margin:0;font-size:16px;color:var(--ap-ink)}
.ap-opt .ap-os{margin:0;font-size:14px;line-height:1.4;color:var(--ap-muted)}
.ap-opt .ap-btn{margin-top:6px;font-size:14px;min-height:40px;padding:8px 16px}
.ap-cue{margin:4px 0 12px;font-size:14px;color:var(--ap-muted)}
.ap-cue a{color:#124A92;font-weight:600}
.ap-dev ul{margin:8px 0 12px;padding-left:18px;color:var(--ap-ink);font-size:15px;line-height:1.5}
.ap-dev .ap-btn{margin:0 10px 10px 0}
/* ---- includes / bundles / examples ---- */
.ap-band{padding:52px 0}
.ap-band.ap-alt{background:#F6F8FC}
.ap-band h2{margin:0 0 14px;font:800 28px/1.15 var(--font-d,inherit);color:var(--ap-ink)}
.ap-mini{display:grid;grid-template-columns:1fr 1px 1fr;gap:16px;align-items:stretch;margin-top:8px}
.ap-mini .ap-dv{background:var(--ap-line)}
.ap-mc{position:relative;padding:16px 18px;min-height:86px}
.ap-mc .ap-n{position:absolute;right:16px;top:8px;font:800 34px/1 var(--font-d,inherit);color:var(--ap-orange)}
.ap-mc p{margin:0;color:var(--ap-ink);font-size:15px;max-width:80%}
.ap-bonus{display:inline-flex;gap:8px;align-items:center;background:#EAF3F6;border-radius:10px;padding:8px 12px;font-size:14px;margin-top:16px;color:var(--ap-ink)}
@media (max-width:600px){.ap-mini{grid-template-columns:1fr}.ap-mini .ap-dv{height:1px}}
.ap-grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.ap-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:700px){.ap-grid2,.ap-grid3{grid-template-columns:1fr}}
.ap-bundle{padding:18px 20px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ap-bundle h3,.ap-ex h3{margin:0;font:800 18px/1.25 var(--font-d,inherit);color:var(--ap-ink)}
.ap-bundle p,.ap-ex p{margin:0;color:var(--ap-muted);font-size:15px}
.ap-bundle.ap-soon{color:var(--ap-muted)}
.ap-ex{padding:16px 18px}
.ap-ex .ap-tag{display:inline-block;font:800 11px/1 var(--font,inherit);letter-spacing:.1em;text-transform:uppercase;color:#A64508;margin-bottom:8px}
/* ---- waitlist / register-interest dialog ---- */
.ap-dlg{border:0;padding:0;background:transparent;max-width:560px;width:calc(100% - 32px)}
.ap-dlg::backdrop{background:rgba(20,32,74,.45)}
.ap-dlg .ap-panel{padding:22px;border-radius:var(--ap-r)}
.ap-dlg h2{margin:0 0 8px;font:800 22px/1.2 var(--font-d,inherit);color:var(--ap-ink)}
.ap-dlg p{margin:0 0 10px;color:var(--ap-ink);font-size:15px}
.ap-dlg label{display:block;font-size:14px;font-weight:600;margin:10px 0 4px;color:var(--ap-ink)}
.ap-dlg input[type=text],.ap-dlg input[type=email],.ap-dlg select{width:100%;box-sizing:border-box;min-height:42px;padding:8px 10px;border:1px solid #7A869F;border-radius:8px;font:inherit;background:#fff;color:var(--ap-ink)}
.ap-dlg input[readonly]{background:#F1F3F8}
.ap-dlg .ap-ck{display:flex;gap:8px;font-weight:400;align-items:flex-start}
.ap-dlg .ap-ck input{margin-top:3px;width:18px;height:18px;flex:0 0 auto}
.ap-dlg .ap-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.ap-dlg .ap-x{position:absolute;right:12px;top:10px;width:40px;height:40px;border-radius:50%;border:0;background:transparent;font-size:24px;cursor:pointer;color:var(--ap-ink)}
.ap-dlg .ap-panel{position:relative}
.ap-dlg .ap-err{color:#A1260D;font-size:14px;margin:6px 0 0}
.ap-dlg .ap-done{background:#EAF3F6;border-radius:10px;padding:12px}
@media (max-width:600px){.ap-dlg{width:100%;max-width:none;margin:auto 0 0;max-height:92vh}.ap-dlg .ap-panel{border-radius:18px 18px 0 0}}
/* ---- click-open book overlay ---- */
.ap-ob[hidden]{display:none}
.ap-ob{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px}
.ap-ob-scrim{position:absolute;inset:0;background:rgba(20,32,74,.42)}
.ap-ob-dlg{position:relative;display:flex;gap:22px;align-items:center;max-height:100%;overflow:auto;overscroll-behavior:contain;padding:8px}
.ap-ob-x{position:absolute;right:4px;top:4px;z-index:6;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--ap-ink);background:#fff;color:var(--ap-ink);font:700 22px/1 var(--font-d,inherit);cursor:pointer}
.ap-ob-book{--pw:300px;--ph:400px;position:relative;width:calc(var(--pw) * 2);height:var(--ph);perspective:2000px;flex:0 0 auto}
.ap-ob-mover{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.ap-ob-right,.ap-ob-leftbg{position:absolute;top:0;width:var(--pw);height:var(--ph);box-sizing:border-box;background:#FFFDF7;overflow:auto}
.ap-ob-leftbg{left:0;border-radius:12px 0 0 12px;background:#F4EEDF;box-shadow:inset -10px 0 18px -12px rgba(0,0,0,.25)}
.ap-ob-right{left:var(--pw);border-radius:0 12px 12px 0;padding:24px 22px;font:16px/1.55 Georgia,"Times New Roman",serif;color:var(--ap-ink);border-left:1px solid #EADFCB;box-shadow:inset 10px 0 18px -12px rgba(0,0,0,.18),0 18px 40px -18px rgba(20,32,74,.45)}
.ap-ob-right h3{margin:0 0 8px;font:800 18px/1.2 var(--font-d,inherit)}
.ap-ob-right p,.ap-ob-right li{margin:0 0 8px}
.ap-ob-right ul{padding-left:18px;margin:0}
.ap-ob-lid{position:absolute;top:0;left:var(--pw);width:var(--pw);height:var(--ph);transform-origin:0 50%;transform-style:preserve-3d;will-change:transform}
.ap-ob-face{position:absolute;inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:4px 12px 12px 4px;overflow:hidden}
.ap-ob-front{background:var(--bk,#035670);box-shadow:inset 6px 0 0 rgba(0,0,0,.2)}
.ap-ob-front img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}
.ap-ob-front .ap-plate{position:absolute;left:14px;right:14px;bottom:14px;background:#FBF8F2;border-radius:8px;padding:8px 12px;font:800 18px/1.2 var(--font-d,inherit);color:var(--ap-ink)}
.ap-ob-back{transform:rotateY(180deg);border-radius:12px 4px 4px 12px;background:var(--bk,#035670);color:#fff;padding:22px 20px;box-sizing:border-box;display:flex;flex-direction:column;gap:10px;overflow:auto}
.ap-ob-back .ap-eyebrow{color:#fff;opacity:.92}
.ap-ob-back h2{margin:0;font:800 26px/1.1 var(--font-d,inherit);color:#fff}
.ap-ob-back img{width:96px;height:96px;border-radius:10px;object-fit:cover;border:2px solid rgba(255,255,255,.6)}
.ap-ob-back .pg-stats3 .pg-st b,.ap-ob-back .pg-stats3 .pg-st span,.ap-ob-back .pg-stats3 .pg-or{color:#fff}
.ap-ob-back .pg-stats3 .pg-st b{font-size:20px}
.ap-ob-back a{color:#fff;font-weight:700}
.ap-ob-back.ap-dark-ink{color:var(--ap-ink)}
.ap-ob-back.ap-dark-ink h2,.ap-ob-back.ap-dark-ink a,.ap-ob-back.ap-dark-ink .ap-eyebrow,.ap-ob-back.ap-dark-ink .pg-stats3 .pg-st b,.ap-ob-back.ap-dark-ink .pg-stats3 .pg-st span,.ap-ob-back.ap-dark-ink .pg-stats3 .pg-or{color:var(--ap-ink)}
.ap-ob-side{width:320px;padding:20px;display:flex;flex-direction:column;gap:10px;flex:0 0 auto}
.ap-ob-side .ap-opts{grid-template-columns:1fr;margin:0}
.ap-ob-side h3{margin:0;font:800 18px/1.2 var(--font-d,inherit);color:var(--ap-ink)}
@media (max-width:1020px){.ap-ob-dlg{flex-direction:column;align-items:center}.ap-ob-side{width:min(600px,100%);box-sizing:border-box}}
@media (max-width:760px){.ap-ob{padding:10px;align-items:flex-start}.ap-ob-dlg{padding-top:56px}.ap-ob-book{--pw:calc((100vw - 40px) / 2);--ph:360px}.ap-ob-back img{display:none}.ap-ob-right{padding:14px 12px;font-size:13.5px;line-height:1.45}.ap-ob-right h3{font-size:15px}
 .ap-ob-back{padding:14px 12px;gap:6px}.ap-ob-back h2{font-size:18px}.ap-ob-back img{width:64px;height:64px}.ap-ob-back .pg-stats3{gap:4px 10px}.ap-ob-back .pg-stats3 .pg-st b{font-size:16px}.ap-ob-back .pg-stats3 .pg-st span{font-size:11px}.ap-ob-front .ap-plate{font-size:14px;left:8px;right:8px;bottom:8px;padding:6px 8px}}
.nr-rack .listing a.ap-btn,.nr-rack .listing a.ap-btn:visited,.ap-ob a.ap-btn:not(.ap-ghost){color:#fff}
.nr-rack .listing a.ap-btn.ap-ghost,.ap-ob a.ap-btn.ap-ghost{color:#14204A}
.nr-rack .listing .pg-stats3 .pg-st{max-width:160px}
@media (max-width:760px){.nr-rack .scene .obook .pg .rk-facts li span{font-size:14px!important}.nr-rack .scene .obook .pg .rk-facts li b{font-size:10px!important}.nr-rack .scene .obook .pg .rk-facts{gap:4px!important}.nr-rack .scene .obook .pg .lbl{padding:5px 7px!important}}

/* ---- stage 2 fixes (Relay 21:03) ---- */
body[data-page="programs"] .nb-bar{display:none!important}
.ap-ob-dlg{padding:60px 8px 8px;align-items:center;justify-content:center}
.ap-ob-x{top:6px;right:8px}
.ap-ob-side{align-self:center}
.ap-bonusline{margin:0;font-size:14px;line-height:1.4;color:#14204A;background:#EAF3F6;border-radius:10px;padding:8px 10px}
.ap-ob-back .pg-stats3{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:4px}
.ap-ob-back .pg-stats3 .pg-st{max-width:none}
.ap-ob-back .pg-stats3 .pg-or{align-self:stretch;text-align:center;margin:0;flex-basis:auto}
@media (min-width:1021px){.ap-ob-book{--ph:460px}.ap-ob-dlg{gap:28px}}
@media (max-width:1020px){.ap-ob-dlg{justify-content:flex-start}.ap-ob{align-items:flex-start}}
.ap-heroslot{min-height:320px}@media (max-width:760px){.ap-heroslot{display:none}}
.ap-shelf{scroll-padding-inline:18px}
.ap-ob-right .ap-acts{display:flex;flex-direction:column;gap:8px;margin:0 0 14px;font-family:var(--font,inherit)}
.ap-ob-right .ap-acts .ap-btn{min-height:42px;font-size:14px;padding:8px 14px;text-align:center}
.ap-ob a.ap-btn:not(.ap-ghost):hover{background:#A64508}
@media (max-width:760px){.ap-ob-right .ap-acts .ap-btn{font-size:12.5px;padding:6px 8px;min-height:44px}}
/* ---- hero Option A (Growth GR-PROG-01_hero_options_v1, Rowan 21:12) ---- */
.ap-loopbox{position:relative;background:#FBF8F2;border-radius:28px;min-height:320px;padding:24px 24px 90px;box-sizing:border-box;overflow:hidden;color:#14204A}
.ap-loop-h{margin:0 0 4px;font:800 20px/1.25 var(--font-d,inherit)}
.ap-loop{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.ap-st{min-height:40px;border:2px solid #14204A;border-radius:999px;padding:6px 14px;font:700 15px/1.2 var(--font-d,inherit);background:#fff;color:#14204A;cursor:pointer;transition:background-color .15s,color .15s,border-color .15s}
.ap-st[aria-pressed="true"]{background:#BF5508;border-color:#BF5508;color:#fff}
.ap-st:hover{border-color:#BF5508}
.ap-st:focus-visible{outline:3px solid #14204A;outline-offset:2px}
.ap-ar{align-self:center;color:#A64508;font-weight:800}
.ap-tip{background:#fff;border:1px solid #D6DCE8;border-radius:14px;padding:12px 14px;max-width:360px;font-size:15px;margin:0}
.ap-loop-note{font-size:13px;color:#3E4866;margin:10px 0 0}
.ap-loop-list{display:none;margin:10px 0 0;padding-left:20px;font-size:15px;line-height:1.5}
.ap-ted{position:absolute;right:16px;bottom:12px;width:72px;height:auto}
.no-js .ap-loop,.no-js .ap-tip,.no-js .ap-loop-note{display:none}.no-js .ap-loop-list{display:block}
@media (prefers-reduced-motion:reduce){.ap-loop,.ap-tip,.ap-loop-note{display:none}.ap-loop-list{display:block}}
@media (max-width:760px){.ap-heroslot.ap-loopbox{display:block;min-height:0;padding:20px 20px 86px}}
/* ---- 3D card treatment (Growth proof): 78% glass + 3px inset bottom edge + depth shadow; 4px hover lift on static cards only ---- */
.ap-glass,.nr-rack .listing{box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -3px 0 #D6DCE8,0 10px 24px rgba(20,32,74,.14)}
.ap-mc,.ap-bundle,.ap-ex{transition:transform .15s ease,box-shadow .15s ease}
.ap-mc:hover,.ap-bundle:hover,.ap-ex:hover{transform:translateY(-4px);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -3px 0 #D6DCE8,0 18px 34px rgba(20,32,74,.22)}
@media (prefers-reduced-motion:reduce){.ap-mc,.ap-bundle,.ap-ex{transition:none}.ap-mc:hover,.ap-bundle:hover,.ap-ex:hover{transform:none}}
/* hero Option A, STATIC (Relay 21:14) */
.ap-steps{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;max-width:400px;counter-reset:st}
.ap-steps li{display:grid;grid-template-columns:86px 1fr;gap:10px;align-items:baseline;font-size:15px;line-height:1.4;color:#14204A}
.ap-steps li b{display:inline-block;text-align:center;border:2px solid #14204A;border-radius:999px;padding:3px 10px;background:#fff;font:700 14px/1.2 var(--font-d,inherit)}
@media (max-width:380px){.ap-steps li{grid-template-columns:76px 1fr}}
/* ---- Rowan 21:15: one button + one text link ---- */
.ap-price{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ap-price .ap-oh{margin:0;font-size:17px;color:#14204A}
.ap-price .ap-os{margin:0;font-size:14px;line-height:1.4;color:#3E4866}
.ap-tl{margin:4px 0 0;font-size:14px;color:#3E4866}
.ap-acts{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:6px 0}
.ap-acts .ap-btn{min-height:44px}
.ap-wl{font-size:14px;font-weight:600;color:#124A92;text-decoration:underline;text-underline-offset:2px}
.ap-wl:hover{color:#0E3B75}
.ap-bonusline{font-size:13px!important;padding:6px 10px!important}
.ap-more{margin:12px 0 0;font:700 15px/1.3 var(--font-d,inherit)}
.ap-more a{color:#14204A}
.ap-ob-right .ap-more a{color:#14204A}
.nr-rack .stage .ap-under{position:absolute;left:0;right:0;bottom:6px;z-index:6;display:flex;justify-content:center}
.nr-rack .stage .ap-under .ap-acts{margin:0;background:rgba(255,255,255,.78);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #D6DCE8;border-radius:999px;padding:6px 16px 6px 6px}
.nr-rack .stage .ap-under a.ap-btn{color:#fff}
@media (max-width:1020px){.nr-rack .stage .ap-under .ap-acts{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}}
@media (max-width:760px){.nr-rack .stage .ap-under{bottom:0}}
.ap-ob-back .ap-bigcv{width:100%;height:auto;aspect-ratio:1/1;border-radius:10px;border:0;object-fit:cover;display:block}
@media (max-width:760px){.ap-ob-back img.ap-bigcv{display:block}}
/* ---- backgrounds (Rowan 21:15): soft brand gradient + subtle paper grain, CSS only ---- */
.ap-shelfsec{background:radial-gradient(rgba(20,32,74,.035) 1px,transparent 1.2px) 0 0/5px 5px,linear-gradient(180deg,#F6F8FC 0%,#FBF6EA 100%)}
.ap-shelf{background:radial-gradient(rgba(122,74,18,.05) 1px,transparent 1.2px) 0 0/4px 4px,linear-gradient(180deg,#FCF6E2,#F8EDCF)}
.ap-ob-scrim{background:radial-gradient(120% 90% at 50% 40%,rgba(20,32,74,.30),rgba(20,32,74,.55))}
.ap-ob-right{background:radial-gradient(rgba(122,74,18,.04) 1px,transparent 1.2px) 0 0/4px 4px,#FFFDF7}
.nr-rack .atmos::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(rgba(20,32,74,.03) 1px,transparent 1.2px) 0 0/5px 5px,linear-gradient(180deg,rgba(255,255,255,0) 60%,rgba(251,246,234,.55))}
/* Jank scoping (stage 2 measurement): no backdrop blur on the panels that move during the scroll-linked opening
   (.listing slides in; the parallax motif behind it repaints every scroll frame) or on the under-book pill.
   They keep the 78% white, border, edge and shadow. Blur stays on static glass (cards, pop-up panel, forms). */
.nr-rack .listing,.nr-rack .stage .ap-under .ap-acts{-webkit-backdrop-filter:none;backdrop-filter:none}
/* Relay 2 (21:23): scroll-opened book pages show the description (fed through the hidden .rk-facts source; the app and
   rack-scoped.css are unchanged). Same reveal as the old labels: hidden until .rk-open, then staggered fade-up. */
.nr-rack .scene .obook .pg .rk-facts.ap-pg,.nr-rack .obook .pg .rk-facts{gap:6px}
.nr-rack .scene .obook .pg .rk-facts li[class^="ap-pg-"]{display:block;list-style:none;margin:0;padding:0;opacity:0;transform:translateY(10px);transition:opacity .5s,transform .7s cubic-bezier(.34,1.56,.64,1);font:500 13px/1.4 var(--font,inherit);color:#14204A;text-align:left}
.nr-rack .scene.rk-open .obook .pg .rk-facts li[class^="ap-pg-"]{opacity:1;transform:none}
.nr-rack .scene.rk-open .obook .pg .rk-facts li[class^="ap-pg-"]:nth-child(1){transition-delay:.9s}
.nr-rack .scene.rk-open .obook .pg .rk-facts li[class^="ap-pg-"]:nth-child(2){transition-delay:1.05s}
.nr-rack .scene.rk-open .obook .pg .rk-facts li[class^="ap-pg-"]:nth-child(3){transition-delay:1.2s}
.nr-rack .scene.rk-open .obook .pg .rk-facts li[class^="ap-pg-"]:nth-child(4){transition-delay:1.35s}
.nr-rack .scene.rk-open .obook .pg .rk-facts li[class^="ap-pg-"]:nth-child(5){transition-delay:1.5s}
.nr-rack .scene .obook .pg .rk-facts li.ap-pg-h{font:800 16px/1.2 var(--font-d,inherit);color:#14204A;margin-bottom:2px}
.nr-rack .scene .obook .pg .rk-facts li.ap-pg-lead{font-weight:600}
.nr-rack .scene .obook .pg .rk-facts li.ap-pg-it b{display:inline;font:800 13px/1.4 var(--font,inherit)!important;color:#14204A!important;white-space:normal}
@media (max-width:760px){
 .nr-rack .scene .obook .pg .rk-facts li[class^="ap-pg-"]{font-size:10.5px;line-height:1.3}
 .nr-rack .scene .obook .pg .rk-facts li.ap-pg-h{font-size:12px}
 .nr-rack .scene .obook .pg .rk-facts li.ap-pg-it b{font-size:10.5px!important;line-height:1.3!important}
 .nr-rack .scene .obook .pg .rk-facts{gap:3px!important}
}
@media (prefers-reduced-motion:reduce){.nr-rack .scene .obook .pg .rk-facts li[class^="ap-pg-"]{opacity:1;transform:none;transition:none}}
/* Relay (a): under-book pill = Enroll now, then the Teacher-led line with the waitlist link (never side by side with Enroll now) */
.nr-rack .stage .ap-under .ap-acts-u{flex-direction:column;align-items:center;gap:6px}
.ap-acts-u .ap-tl,.ap-price .ap-tl{margin:0;font-size:13.5px;color:#4A5578}
.ap-acts-u .ap-tl .ap-wl,.ap-price .ap-tl .ap-wl{margin-left:0;font-weight:700}
/* listing beside the scroll book: same compact stats layout as the course pages at 390 (5 on top, two times with a centred "or") */
.nr-rack .listing .pg-stats.pg-stats3{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px 12px;align-items:start}
.nr-rack .listing .pg-stats3 .pg-st,.nr-rack .listing .pg-stats3 .pg-st:last-child{max-width:none}
.nr-rack .listing .pg-stats3 .pg-st:first-child{grid-column:1/-1}
.nr-rack .listing .pg-stats3 .pg-or{align-self:center;text-align:center}
.nr-rack .listing .pg-stats3 .pg-st b{white-space:normal}
@media (max-width:760px){
 .nr-rack .stage .ap-under .ap-acts-u{padding:5px 12px;gap:3px;border-radius:18px}
 .nr-rack .stage .ap-under .ap-acts-u .ap-btn{padding-top:8px;padding-bottom:8px}
 .ap-acts-u .ap-tl{font-size:12px}
}
/* 390: the listing card starts inside the 330px stage (rack layout), which hid the under-book pill. Move the listing down
   (adds space, never tightens) and seat the pill just under the book. */
@media (max-width:760px){.nr-rack .scene .stage .ap-under{bottom:-16px}.nr-rack .scene .listing{margin-top:86px}}
/* Rowan 21:32: plain small note under the Teacher-led line in the course-section card (no urgency styling) */
.ap-price .ap-tl-note{margin:2px 0 0;font-size:13px;line-height:1.4;color:#4A5578}
.ap-price .ap-tl-note a{color:#124A92;text-decoration:underline;font-weight:600}
/* ===== 3D BOOK COVERFLOW (Rowan 21:14/21:15, approved 21:28). Replaces the sideways shelf slide.
   Layer: its own elements only (.ap-cf li transforms). Never touches .nr-rack .scene / .obook / .lid. ===== */
.ap-cfwrap{position:relative;border-radius:18px;background:radial-gradient(rgba(122,74,18,.05) 1px,transparent 1.2px) 0 0/4px 4px,radial-gradient(ellipse at 50% 85%,#F3E3BF 0,transparent 60%),linear-gradient(180deg,#FCF6E2,#F4E7C8);overflow:hidden;box-shadow:inset 0 1px 0 #fff,inset 0 -3px 0 #E6D6B0}
.ap-shelf.ap-cf{display:block;position:relative;height:470px;margin:0;padding:0;overflow:hidden;background:none;border-radius:0;scroll-snap-type:none;perspective:1100px;perspective-origin:50% 40%;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.ap-shelf.ap-cf:focus-visible{outline:3px solid var(--ap-ink);outline-offset:-4px}
.ap-cf .ap-book{position:absolute;left:50%;top:34px;width:230px;margin:0 0 0 -115px;padding:0;flex:none;display:block;transform-style:preserve-3d;
  transition:transform .62s cubic-bezier(.22,1,.36,1),opacity .45s ease,filter .45s ease;will-change:transform}
.ap-cf .ap-book .ap-cover{aspect-ratio:3/4;border-radius:3px 10px 10px 3px;box-shadow:inset 9px 0 0 rgba(0,0,0,.22),inset 11px 0 0 rgba(255,255,255,.18),0 18px 30px -10px rgba(20,32,74,.45)}
/* spine + cream page edges (real-book styling) */
.ap-cf .ap-book::before{content:"";position:absolute;left:6px;right:-7px;top:5px;height:calc(230px * 4 / 3);border-radius:0 10px 10px 0;z-index:-1;
  background:repeating-linear-gradient(90deg,#FBF5E6 0 2px,#E6DCC3 2px 3px);box-shadow:0 20px 34px -12px rgba(20,32,74,.4);transform:translateZ(-2px)}
.ap-cf .ap-book .ap-see,.ap-cf .ap-book .ap-tags{opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s;pointer-events:none;justify-content:center;text-align:center}
.ap-cf .ap-book .ap-see{display:block;margin:12px 0 6px}
.ap-cf .ap-book.is-c .ap-see,.ap-cf .ap-book.is-c .ap-tags{opacity:1;transform:none;pointer-events:auto;transition-delay:.25s}
.ap-cf .ap-book .ap-ledge{display:none}
.ap-cf .ap-book:not(.is-c) .ap-cover{cursor:pointer}
.ap-cf .ap-book:not(.is-c) .ap-cover:hover{box-shadow:inset 9px 0 0 rgba(0,0,0,.22),0 22px 34px -10px rgba(20,32,74,.5)}
.ap-cf .ap-book.is-c .ap-cover:hover{box-shadow:inset 9px 0 0 rgba(0,0,0,.22),0 0 0 3px #BF5508,0 26px 40px -12px rgba(20,32,74,.5)}
/* motion echo of the open-book logo: two page arcs (navy + orange) that redraw under the centre book on each turn */
.ap-cf-arc{position:absolute;left:50%;top:372px;width:300px;height:75px;margin-left:-150px;z-index:0;pointer-events:none;overflow:visible}
.ap-cf-arc path{fill:none;stroke-width:5;stroke-linecap:round;stroke-dasharray:130;stroke-dashoffset:0}
.ap-cf-arc .ap-arc-l{stroke:#253679}.ap-cf-arc .ap-arc-r{stroke:#BF5508}
.ap-cf-arc.draw path{animation:apArc .7s cubic-bezier(.22,1,.36,1) both}
.ap-cf-arc.draw .ap-arc-r{animation-delay:.08s}
@keyframes apArc{from{stroke-dashoffset:130;opacity:.2}to{stroke-dashoffset:0;opacity:1}}
.ap-cf-status{position:absolute;left:0;right:0;bottom:10px;margin:0;text-align:center;font:600 13px/1.3 var(--font,inherit);color:#4A5578;pointer-events:none}
@media (max-width:600px){
 .ap-shelf.ap-cf{height:400px;perspective:800px}
 .ap-cf .ap-book{width:176px;margin-left:-88px;top:26px}
 .ap-cf .ap-book::before{height:calc(176px * 4 / 3)}
 .ap-cf .ap-book .ap-plate{font-size:13px;left:8px;right:8px;bottom:8px;padding:5px 8px}
 .ap-cf-arc{top:300px;width:230px;margin-left:-115px}
}
@media (prefers-reduced-motion:reduce){
 .ap-cf .ap-book{transition:opacity .2s linear}
 .ap-cf .ap-book .ap-see,.ap-cf .ap-book .ap-tags{transition:none}
 .ap-cf-arc.draw path{animation:none}
}
/* "More details" travel: a flying copy of the selected book (fixed, above the page, below the header) */
.ap-fly{position:fixed;left:0;top:0;z-index:950;pointer-events:none;border-radius:3px 10px 10px 3px;overflow:hidden;transform-origin:0 0;
  box-shadow:inset 9px 0 0 rgba(0,0,0,.22),0 24px 40px -12px rgba(20,32,74,.5),0 0 0 3px #BF5508;will-change:transform,opacity}
.ap-fly img{display:block;width:100%;height:100%;object-fit:cover}
/* Rowan 21:36: quiet group-booking link (bottom of the Teacher-led block, course sections only) + small 65% glass form */
.ap-price .ap-gb-row{margin:4px 0 0}
.ap-price a.ap-gb{font-size:12.5px;font-weight:500;color:#4A5578;text-decoration:underline;text-decoration-color:#9AA2B8;text-underline-offset:2px}
.ap-price a.ap-gb:hover{color:#14204A}
.ap-dlg.ap-dlg-group .ap-panel{max-width:400px;background:rgba(255,255,255,.65);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}
.ap-dlg.ap-dlg-group textarea{width:100%;font:inherit;font-size:15px;border:1px solid #B7BDCB;border-radius:10px;padding:8px 10px;resize:vertical;background:#fff;color:#14204A}
@media (max-width:1020px){.ap-dlg.ap-dlg-group .ap-panel{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}}
/* coverflow spacing: the logo arcs sit on the shelf floor under the tags, never behind text */
.ap-shelf.ap-cf{height:500px}
.ap-cf-arc{top:auto;bottom:34px;height:46px}
@media (max-width:600px){
 .ap-shelf.ap-cf{height:450px}
 .ap-cf-arc{top:auto;bottom:32px;height:38px}
 .ap-shelfhd h2{flex-basis:100%}
 .ap-shelfhd .ap-hint{margin-left:0;margin-right:auto}
}
/* 65% glass group form: darker text/links so contrast stays >= 4.5:1 even over the dimmed page */
.ap-dlg.ap-dlg-group .ap-panel a{color:#0B3470}
.ap-dlg.ap-dlg-group .ap-panel,.ap-dlg.ap-dlg-group .ap-panel p,.ap-dlg.ap-dlg-group .ap-panel label,.ap-dlg.ap-dlg-group .ap-panel .ap-note{color:#14204A}
.ap-ob-side .ap-price .ap-tl{color:#3E4866}
.ap-cf img{-webkit-user-drag:none;user-drag:none}
/* during the More-details travel only: drop backdrop blur page-wide (the page scrolls fast under it); restored on landing */
html.ap-flying .ap-glass,html.ap-flying .heroA3 .heroA3-card,html.ap-flying .site-header{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
/* Relay 21:52: a Self-paced format that cannot be bought (GD, local override): greyed state, Register interest only, no orange button */
.ap-price .ap-sp-off{background:#EEF0F4;border:1px solid #D6DCE8;border-radius:12px;padding:8px 10px;margin:0 0 6px}
.ap-price .ap-sp-off .ap-oh,.ap-price .ap-sp-off .ap-os{color:#3E4866}
.ap-price .ap-sp-off .ap-acts{margin-top:6px}
.ap-acts-u .ap-sp-offline{margin:0;font-size:13px;font-weight:600;color:#3E4866}
.ap-btn.ap-ghost-s{padding:7px 14px;font-size:14px}
/* Rowan 22:12: hero centre = neutral brand-tint panel (no photo, no text) */
.heroA3 .heroA3-art .ap-hero-tint{display:block;width:100%;height:100%;background:radial-gradient(circle at 35% 30%,#EAF0FB 0%,#C9D5EE 38%,#6F82B4 72%,#14204A 100%)}
/* Relay 22:12 (1): phones / ≤1020px (same breakpoint heroA3 uses for chip + sheet): no blank hero block, the page lands on the shelf */
@media (max-width:1020px){
  .nr-rack .ap-hero{grid-template-columns:1fr!important;padding-bottom:0!important;row-gap:0!important;gap:0!important;min-height:0!important}
  .ap-hero .heroA3{margin:0!important;padding:0!important;min-height:0!important}
  .ap-shelfsec{padding-top:10px!important}
}
/* chip yields (slides away) whenever it would cover the coverflow arrows, the centre book or another fixed element; JS sets the class */
.heroA3 .heroA3-chip.ap-yield{transform:translateY(140%)!important;opacity:0!important;pointer-events:none!important}
/* Relay 22:12 (1) phones: compact first screen so the whole centre book sits above the floating Ted chip at 390×844 */
@media (max-width:760px){
  .nr-rack .ap-hero{padding-top:14px!important}
  .ap-hero .ap-sub{margin-bottom:8px}
  .ap-shelfsec{padding-top:4px!important}
  .ap-shelf.ap-cf{height:384px}
  .ap-cf .ap-book{width:168px;margin-left:-84px;top:12px}
  .ap-cf .ap-book::before{height:calc(168px * 4 / 3)}
  .ap-cf-arc{top:282px}
}
/* Rowan 22:44: format boxes under the hero heading at ALL widths (old grey line removed). Medium glass like the page cards,
   tints mixed into the glass; ≤1020px glass turns solid white (page rule), tints kept. Informational only: no link, hover or pointer. */
.ap-fmtbox{display:grid;list-style:none;margin:4px 0 14px;padding:0;grid-template-columns:1fr 1fr;gap:12px;max-width:540px}
.ap-fmtbox li{margin:0;min-width:0;padding:11px 14px;border-radius:14px;display:flex;flex-direction:column;gap:2px;cursor:default;overflow-wrap:anywhere;hyphens:auto;
  border:1px solid #D6DCE8;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 1px 0 0 rgba(255,255,255,.6),inset 0 -3px 0 #D6DCE8,0 10px 24px rgba(20,32,74,.14)}
.ap-fmtbox .ap-fmtbox-sp{background:linear-gradient(rgba(37,54,121,.08),rgba(37,54,121,.08)),rgba(255,255,255,.72)}
.ap-fmtbox .ap-fmtbox-tl{background:linear-gradient(rgba(191,85,8,.09),rgba(191,85,8,.09)),rgba(255,255,255,.72)}
.ap-fmtbox .ap-fmtbox-k{font:700 15px/1.25 var(--font,inherit)}
.ap-fmtbox .ap-fmtbox-sp .ap-fmtbox-k{color:#14204A}
.ap-fmtbox .ap-fmtbox-tl .ap-fmtbox-k{color:#8A3A05}
.ap-fmtbox .ap-fmtbox-v{font:500 13px/1.35 var(--font,inherit);color:#3E4866}
@media (max-width:1020px){
  .ap-fmtbox li{-webkit-backdrop-filter:none;backdrop-filter:none}
  .ap-fmtbox .ap-fmtbox-sp{background:linear-gradient(rgba(37,54,121,.08),rgba(37,54,121,.08)),#fff}
  .ap-fmtbox .ap-fmtbox-tl{background:linear-gradient(rgba(191,85,8,.09),rgba(191,85,8,.09)),#fff}
}
html.ap-flying .ap-fmtbox li{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
@media (max-width:340px){.ap-fmtbox{gap:8px}.ap-fmtbox li{padding:9px 10px}.ap-fmtbox .ap-fmtbox-k{font-size:14px}.ap-fmtbox .ap-fmtbox-v{font-size:12.5px}}
/* keep the centre book clear of the Ted chip at 390×844 with the format boxes in place */
@media (max-width:760px){
  .nr-rack .ap-hero{padding-top:10px!important}
  .ap-hero .ap-lede{margin-bottom:6px}
  .ap-fmtbox{margin:0 0 6px}
  .ap-fmtbox li{padding-top:8px;padding-bottom:8px}
  .ap-cf .ap-book{top:8px}
}
/* Rowan 22:46 hero B: tighter hero padding (desktop); stage column */
@media (min-width:1021px){.nr-rack .ap-hero{padding:26px 32px 18px;align-items:center}}
html.ap-flying .hb-cd{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
/* Rowan 22:47: course title on the cover's coloured band (the band in the artwork: about 75%–96.5% of the square image).
   Sized with the book (container units), wraps to 2 lines, never truncated. Cream text; --bs = minimum shade for >=4.5:1. */
.ap-cover{container-type:inline-size}
.ap-cover .ap-band{position:absolute;left:0;right:0;top:75cqw;height:21.5cqw;display:flex;align-items:center;justify-content:center;padding:0 7cqw 0 9cqw;
  background:rgba(0,0,0,var(--bs,0));pointer-events:none;z-index:1}
.ap-cover .ap-band span{display:block;max-width:100%;text-align:center;color:#FBF8F2;font:800 clamp(10px,7.6cqw,22px)/1.08 var(--font-d,inherit);letter-spacing:-.01em;
  overflow-wrap:break-word;hyphens:manual;text-wrap:balance}
/* Rowan 22:54: tiny publisher's imprint = the existing site mark (/assets/favicon.png), top-right corner of every cover (spine is on the left).
   7cqw of the cover width: about 17px on the 1280 centre book, smaller on side books and phones. Decorative (alt="", aria-hidden). */
.ap-cover .ap-imprint{position:absolute;top:4cqw;right:4cqw;width:auto;height:7cqw;min-height:9px;max-height:18px;aspect-ratio:1/1;opacity:.88;pointer-events:none;z-index:2;
  filter:drop-shadow(0 0 1.5px rgba(255,255,255,.95)) drop-shadow(0 1px 1px rgba(20,32,74,.25))}
.ap-cover img.ap-imprint{object-fit:contain}
/* same mark on the open book's contents page heading (content only; rack JS/CSS untouched) */
.ap-pg-mark{display:inline-block;width:14px;height:14px;vertical-align:-2px;margin-right:6px;opacity:.88}
/* imprint position: top-left corner (spine side), on a small cream roundel so it reads over any artwork without sitting on faces/hair */
.ap-cover .ap-imprint{right:auto;left:4cqw;top:4cqw;box-sizing:content-box;padding:max(2px,.9cqw);border-radius:50%;
  background:rgba(251,248,242,.9);box-shadow:0 1px 2px rgba(20,32,74,.22);filter:none;opacity:.92}
/* <=360px: slightly smaller books and tighter side offset (JS) so side books, their titles and imprints stay inside the shelf */
@media (max-width:360px){
  .ap-cf .ap-book{width:150px;margin-left:-75px}
  .ap-cf .ap-book::before{height:calc(150px * 4 / 3)}
}
/* Relay 23:08: no duplicate title. The course name lives on the cover band only; the white label is now just the small status pill,
   centred in the cover's lower colour panel (below the band, which ends at 96.5cqw; cover is 3:4 = 133.3cqw tall). */
.ap-cover .ap-plate.ap-plate-st,.ap-cf .ap-book .ap-plate.ap-plate-st{left:50%;right:auto;transform:translateX(-50%);bottom:calc(18.4cqw - .75em);
  padding:.35em .9em;border-radius:999px;white-space:nowrap;font:700 clamp(10px,4.6cqw,11.5px)/1.25 var(--font,inherit);letter-spacing:.1em;text-transform:uppercase;
  color:#3E4866;background:#FBF8F2;box-shadow:0 1px 3px rgba(20,32,74,.18)}
/* Rowan 23:18: AI for Mathematics band keeps its own gold (no darkening) and uses navy text instead */
.ap-band.ap-band-ink{background:transparent}
.ap-band.ap-band-ink span{color:#14204A}
/* ===== Rowan 23:14 format boxes v3: clearer Apple-style glass at ALL widths (Rowan overrides the ≤1020 solid-white page rule for these two boxes),
   specular rim top+left (gradient border via masked ::before), soft inner sheen (::after), light 3D edge kept. Light blur on phones (2 small boxes). ===== */
.ap-fmtbox li{position:relative;isolation:isolate;border:1px solid rgba(214,220,232,.55);
  -webkit-backdrop-filter:blur(14px) saturate(1.5);backdrop-filter:blur(14px) saturate(1.5);
  box-shadow:inset 0 -2px 0 rgba(190,198,216,.55),0 1px 1px rgba(20,32,74,.06),0 10px 26px rgba(20,32,74,.12)}
.ap-fmtbox .ap-fmtbox-sp{background:linear-gradient(rgba(37,54,121,.07),rgba(37,54,121,.07)),rgba(255,255,255,.46)}
.ap-fmtbox .ap-fmtbox-tl{background:linear-gradient(rgba(191,85,8,.08),rgba(191,85,8,.08)),rgba(255,255,255,.46)}
.ap-fmtbox li::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;pointer-events:none;z-index:1;
  background:linear-gradient(135deg,rgba(255,255,255,1) 0%,rgba(255,255,255,.85) 18%,rgba(255,255,255,.15) 45%,rgba(255,255,255,0) 60%,rgba(255,255,255,.35) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.ap-fmtbox li::after{content:"";position:absolute;inset:1px;border-radius:13px;pointer-events:none;z-index:-1;
  background:linear-gradient(180deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,.12) 38%,rgba(255,255,255,0) 60%);
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.9),inset 0 0 12px rgba(255,255,255,.35)}
@media (max-width:1020px){
  .ap-fmtbox li{-webkit-backdrop-filter:blur(10px) saturate(1.4);backdrop-filter:blur(10px) saturate(1.4)}
  .ap-fmtbox .ap-fmtbox-sp{background:linear-gradient(rgba(37,54,121,.07),rgba(37,54,121,.07)),rgba(255,255,255,.5)}
  .ap-fmtbox .ap-fmtbox-tl{background:linear-gradient(rgba(191,85,8,.08),rgba(191,85,8,.08)),rgba(255,255,255,.5)}
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .ap-fmtbox .ap-fmtbox-sp{background:linear-gradient(rgba(37,54,121,.07),rgba(37,54,121,.07)),rgba(255,255,255,.9)}
  .ap-fmtbox .ap-fmtbox-tl{background:linear-gradient(rgba(191,85,8,.08),rgba(191,85,8,.08)),rgba(255,255,255,.9)}
}
html.ap-flying .ap-fmtbox li{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
/* phones: 'Live online, teacher‑supported' on ONE line. Both sub-lines 12px (match); TL box gets more width. ≤379: boxes stack so it still fits. */
@media (max-width:600px){
  .ap-fmtbox{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:8px}
  .ap-fmtbox li{padding:8px 10px}
  .ap-fmtbox .ap-fmtbox-v{font-size:12px}
  .ap-fmtbox .ap-fmtbox-tl .ap-fmtbox-v{white-space:nowrap}
}
@media (max-width:384px){
  .ap-fmtbox{grid-template-columns:1fr;gap:6px}
  .ap-fmtbox li{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:0 8px;padding:7px 12px}
  .ap-fmtbox .ap-fmtbox-k{font-size:14px}
  .ap-fmtbox .ap-fmtbox-v{font-size:12px}
}
/* Rowan 23:15: hero subtitle on phones, no lone 'music.' */
.ap-hero .ap-lede{text-wrap:balance}
@media (max-width:600px){.ap-hero .ap-lede{font-size:16px;line-height:1.45}}
@media (max-width:384px){.ap-hero .ap-lede{font-size:15px}}
/* Rowan 23:21: the whole front book (image, band, status label) is one button (aria-label 'Open {course}'); side books turn to the centre first */
.ap-cf .ap-book .ap-cover{cursor:pointer}
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  .ap-cf .ap-book.is-c .ap-cover{transition:translate .2s ease,box-shadow .2s ease}
  .ap-cf .ap-book.is-c .ap-cover:hover{translate:0 -4px}
}
/* Relay 23:24 (f): Contents page = left inside page of the scroll-opened book (filled by allprograms.js). Paper look, sized to the page. */
.nr-rack .scene .obook .lid .inner.ap-contents,.nr-rack .scene[class*="rk-c-"] .obook .lid .inner.ap-contents{background:linear-gradient(90deg,#F4EFE6,#FBF8F2 30%);color:#14204A;padding:7% 7% 6%;justify-content:flex-start;gap:0;container-type:inline-size;
  box-shadow:inset -18px 0 24px -16px rgba(20,32,74,.22)}
.ap-contents .ap-ct-h{margin:0 0 4cqw;font:800 clamp(10px,7.2cqw,19px)/1.1 var(--font-d,inherit);color:#14204A;display:flex;align-items:center;gap:2.5cqw}
.ap-contents .ap-ct-h .ap-pg-mark{width:clamp(9px,6cqw,16px);height:auto;margin:0}
.ap-contents .ap-ct-l{list-style:none;margin:0 0 4cqw;padding:0;display:flex;flex-direction:column;gap:1.6cqw}
.ap-contents .ap-ct-l li{display:grid;grid-template-columns:5.5cqw 1fr;gap:1.5cqw;font:600 clamp(7px,4.9cqw,13px)/1.22 var(--font,inherit);color:#14204A;border-bottom:1px dotted #B8BFD0;padding-bottom:1.2cqw}
.ap-contents .ap-ct-n{color:#A64508;font-weight:800}
.ap-contents .ap-ct-k{margin:0 0 1.5cqw;font:800 clamp(6.5px,4cqw,11px)/1.2 var(--font,inherit);letter-spacing:.08em;text-transform:uppercase;color:#3E4866}
.ap-contents .ap-ct-f{list-style:none;margin:0 0 3cqw;padding:0;font:500 clamp(7px,4.7cqw,12.5px)/1.3 var(--font,inherit);color:#14204A}
.ap-contents .ap-ct-f b{font-weight:800}
.ap-contents .ap-ct-note{margin:auto 0 0;font:500 clamp(6.5px,4.2cqw,11px)/1.25 var(--font,inherit);color:#3E4866}
/* Contents page on small books (phones): larger minimum type, tighter spacing */
@container (max-width:200px){
  .ap-contents .ap-ct-h{font-size:12px;margin-bottom:5px}
  .ap-contents .ap-ct-l{gap:2px;margin-bottom:5px}
  .ap-contents .ap-ct-l li{font-size:9px;line-height:1.18;grid-template-columns:9px 1fr;gap:3px;padding-bottom:2px}
  .ap-contents .ap-ct-k{font-size:7.5px;margin-bottom:2px}
  .ap-contents .ap-ct-f{font-size:8.5px;line-height:1.25;margin-bottom:3px}
  .ap-contents .ap-ct-note{font-size:8px}
}
/* MKT v4b fix 3: all book text ≥10px. Desktop clamps raised; on small books (phones) the 'Ways to learn' lines are dropped so the 5 lesson names fit at 10px. */
.ap-contents .ap-ct-l li{font-size:clamp(10px,4.9cqw,13px)}
.ap-contents .ap-ct-k{font-size:clamp(10px,4cqw,11px)}
.ap-contents .ap-ct-f{font-size:clamp(10px,4.7cqw,12.5px)}
@container (max-width:200px){
  .ap-contents .ap-ct-h{font-size:12px;margin-bottom:4px}
  .ap-contents .ap-ct-l{gap:2px;margin:0}
  .ap-contents .ap-ct-l li{font-size:10px;line-height:1.16;grid-template-columns:10px 1fr;gap:3px;padding-bottom:2px}
  .ap-contents .ap-ct-k,.ap-contents .ap-ct-f{display:none}
}
/* MKT v4b fix 3: small labels inside the opened books (kicker 'Online course', tab/card status labels) lifted from 8.5px to 10px on phones and tablets. Override lives here; rack files untouched (rack CSS uses !important, hence the higher-specificity !important here). */
@media (max-width:1020px){
  .nr-rack .scene .obook .inner .ik{font-size:10px!important;letter-spacing:.06em!important}
  .nr-rack .scene .obook .lbl b{font-size:10px!important}
}

/* Rowan 00:06: slim orange Enroll on the course cards (front book only, like 'See the course'), on the same row as 'See the course' so the shelf height does not change. White on #BF5508 = 4.65:1; hover #A64508 = 6.04:1. */
.ap-cf .ap-book:has(.ap-enroll){display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;column-gap:10px;row-gap:0}
.ap-cf .ap-book:has(.ap-enroll)>.ap-cover,.ap-cf .ap-book:has(.ap-enroll)>.ap-tags,.ap-cf .ap-book:has(.ap-enroll)>.ap-ledge{grid-column:1/-1}
/* the See/Enroll row may be wider than a phone book (150–176px): it overflows centred, while the cover, tags and ledge keep the book's own width (100cqw of the li) */
.ap-cf .ap-book:has(.ap-enroll){container-type:inline-size}
.ap-cf .ap-book:has(.ap-enroll)>.ap-cover,.ap-cf .ap-book:has(.ap-enroll)>.ap-ledge{width:100cqw;justify-self:center;box-sizing:border-box}
.ap-cf .ap-book:has(.ap-enroll)>.ap-tags{justify-self:center;width:max-content;max-width:calc(100cqw + 120px)}
.ap-cf .ap-book .ap-enroll{display:inline-block;margin:12px 0 6px;padding:4px 14px;min-height:26px;box-sizing:border-box;border-radius:999px;background:#BF5508;color:#fff;white-space:nowrap;
  font:700 13px/18px var(--font,inherit);text-decoration:none;letter-spacing:.01em;box-shadow:0 2px 6px rgba(191,85,8,.22);
  opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s,background-color .15s;pointer-events:none}
.ap-cf .ap-book:has(.ap-enroll)>.ap-see{white-space:nowrap}
.ap-cf .ap-book.is-c .ap-enroll{opacity:1;transform:none;pointer-events:auto;transition-delay:.25s,.25s,0s}
.ap-cf .ap-book .ap-enroll:hover{background:#A64508;color:#fff}
.ap-cf .ap-book .ap-enroll:focus-visible{outline:2px solid #14204A;outline-offset:2px}
@media (prefers-reduced-motion:reduce){.ap-cf .ap-book .ap-enroll{transition:none}}
