@font-face{font-family:Libre Caslon Text;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/libre-caslon-text-latin-ext-400-normal.ce304790.woff2) format("woff2"),url(/_next/static/media/libre-caslon-text-latin-ext-400-normal.9518081a.woff) format("woff");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:Libre Caslon Text;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/libre-caslon-text-latin-400-normal.27a07b8d.woff2) format("woff2"),url(/_next/static/media/libre-caslon-text-latin-400-normal.bb71b3ee.woff) format("woff");unicode-range:u+00??,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:Libre Caslon Text;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/libre-caslon-text-latin-ext-400-italic.1e28461d.woff2) format("woff2"),url(/_next/static/media/libre-caslon-text-latin-ext-400-italic.2479fbde.woff) format("woff");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:Libre Caslon Text;font-style:italic;font-display:swap;font-weight:400;src:url(/_next/static/media/libre-caslon-text-latin-400-italic.fcdd1bcb.woff2) format("woff2"),url(/_next/static/media/libre-caslon-text-latin-400-italic.c7ce6c53.woff) format("woff");unicode-range:u+00??,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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/public-sans-vietnamese-wght-normal.7b0fa855.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/public-sans-latin-ext-wght-normal.0afa0ba4.woff2) format("woff2-variations");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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/public-sans-latin-wght-normal.035c7fe4.woff2) format("woff2-variations");unicode-range:u+00??,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{--ink:#15171c;--ink-2:#1f2228;--ink-3:#2c3038;--paper:#ffffff;--stone:#efefec;--line:#d9d9d4;--line-soft:#e8e8e4;--grey:#5c5f66;--grey-light:#a3a6ad;--red:#8e1b12;--red-dark:#6f140d;--ok:#3f5a3a;--danger:#a3271c;--f-display:"Libre Caslon Text",Georgia,"Times New Roman",serif;--f-body:"Public Sans Variable","Public Sans",system-ui,sans-serif;--t-sm:0.875rem;--t-base:1.0625rem;--t-md:1.3rem;--t-lg:1.6rem;--t-xl:2rem;--t-2xl:clamp(1.9rem,3.6vw,2.75rem);--t-3xl:clamp(2.5rem,5.6vw,4.6rem);--wrap:1200px;--gutter:clamp(16px,4vw,40px);--r:2px}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--f-body);font-size:var(--t-base);line-height:1.6;color:var(--ink);background:var(--paper)}img{max-width:100%;display:block}a{color:inherit}h1,h2,h3,h4{margin:0;font-weight:400}p{margin:0}:focus-visible{outline:2px solid var(--red);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}.measure{max-width:60ch}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.display{font-family:var(--f-display);font-weight:400;line-height:1.08;letter-spacing:-.012em}.h1{font-size:var(--t-3xl)}.h2{font-size:var(--t-2xl)}.h3{font-size:var(--t-md);line-height:1.25}.lede{font-size:1.2rem;line-height:1.6}.on-navy{background:var(--ink);color:#fff}.on-navy-2{background:var(--ink-2);color:#fff}.on-ivory{background:var(--stone);color:var(--ink)}.on-paper{background:var(--paper);color:var(--ink)}.muted{color:var(--grey)}.on-navy .muted,.on-navy-2 .muted{color:var(--grey-light)}.section{padding:clamp(64px,9vw,128px) 0}.section-tight{padding:clamp(40px,6vw,72px) 0}.rule{width:48px;height:2px;background:var(--red);border:0;margin:22px 0 26px}.btn{display:inline-flex;align-items:center;justify-content:center;font:600 .95rem/1 var(--f-body);padding:15px 24px;border-radius:var(--r);text-decoration:none;cursor:pointer;border:1px solid transparent;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.btn-gold{background:var(--red);color:#fff}.btn-gold:hover{background:var(--red-dark)}.btn-navy{background:var(--ink);color:#fff}.btn-navy:hover{background:var(--ink-3)}.btn-line{border-color:var(--ink);color:var(--ink);background:transparent}.btn-line:hover{background:var(--ink);color:#fff}.btn-ghost{border-color:rgba(255,255,255,.4);color:#fff;background:transparent}.btn-ghost:hover{border-color:#fff}.btn-sm{padding:10px 16px;font-size:var(--t-sm)}.btn[disabled]{opacity:.55;cursor:progress}.link{color:var(--red);font-weight:600;text-underline-offset:3px;text-decoration-thickness:1px}.on-navy .link,.on-navy-2 .link{color:#fff}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.site-header .wrap{display:flex;align-items:center;gap:24px;height:72px}.brand img{height:48px;width:auto}.nav{display:flex;gap:26px;margin-left:auto;align-items:center}.nav a{text-decoration:none;font-size:.95rem;font-weight:500;padding:6px 0;border-bottom:1px solid transparent}.nav a:hover,.nav a[aria-current=page]{border-bottom-color:var(--ink)}.nav a.btn{padding:10px 16px;border:1px solid var(--ink)}.nav a.btn:hover{background:var(--ink);color:#fff}.menu-toggle{display:none;margin-left:auto;background:none;border:1px solid var(--line);padding:9px 12px;border-radius:var(--r);font:500 .9rem var(--f-body);color:var(--ink)}@media (max-width:1080px){.menu-toggle{display:block}.nav{display:none;position:absolute;top:72px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:#fff;border-bottom:1px solid var(--line);padding:8px var(--gutter) 20px}.nav.open{display:flex}.nav a{padding:14px 0;border-bottom:1px solid var(--line-soft)}.nav a.btn{margin-top:14px;padding:14px 16px}}.hero{position:relative;overflow:hidden;background:#fff;border-bottom:1px solid var(--line)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:end;min-height:min(78vh,760px)}.hero-copy{padding:clamp(56px,8vw,110px) 0 clamp(48px,6vw,88px)}.hero h1{max-width:14ch}.hero .lede{color:var(--grey);max-width:44ch;margin-top:28px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:36px}.hero-art{align-self:stretch;position:relative;margin-right:calc(-1 * (max(0px, (100vw - var(--wrap)) / 2) + var(--gutter)))}.hero-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:30% 20%;mix-blend-mode:multiply}@media (max-width:860px){.hero-grid{grid-template-columns:1fr;min-height:0}.hero-art{height:420px;margin:0 calc(var(--gutter) * -1)}.hero-art img{object-position:20% 25%}}.creds-strip{margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}.creds-strip li{list-style:none;padding:28px 24px 30px 0;font-size:.95rem;line-height:1.45;color:var(--grey)}.creds-strip li+li{padding-left:24px;border-left:1px solid var(--line)}.creds-strip strong{display:block;font-family:var(--f-display);font-weight:400;font-size:1.25rem;line-height:1.25;color:var(--ink);margin-bottom:6px}.creds-strip ul{margin:0;padding:0;display:contents}@media (max-width:860px){.creds-strip{grid-template-columns:1fr 1fr}.creds-strip li:nth-child(3){padding-left:0;border-left:0}.creds-strip li:nth-child(n+3){border-top:1px solid var(--line)}}.pathway{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:0;gap:0;margin:48px 0 0;padding:0;list-style:none;border-top:1px solid var(--ink)}.pathway li{padding:28px 28px 8px 0}.pathway li+li{padding-left:28px;border-left:1px solid var(--line)}.pathway .step{font-size:2.6rem;line-height:1;color:var(--red)}.pathway .step,.pathway h3{font-family:var(--f-display)}.pathway h3{font-size:var(--t-lg);margin:18px 0 10px}.pathway p{color:var(--grey);max-width:34ch}@media (max-width:860px){.pathway{grid-template-columns:1fr}.pathway li+li{padding-left:0;border-left:0;border-top:1px solid var(--line)}}.programmes{display:grid;grid-template-columns:1fr 1fr;grid-gap:0;gap:0;border-top:1px solid var(--ink)}.programme{padding:36px 36px 8px 0;display:flex;flex-direction:column;gap:14px}.programme+.programme{padding-left:36px;border-left:1px solid var(--line)}.programme ul{margin:6px 0 8px;padding:0;list-style:none}.programme li{padding:12px 0;border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:16px;font-size:.97rem}.programme li span:last-child{font-weight:600;white-space:nowrap}.programme .btn{align-self:flex-start;margin-top:auto}@media (max-width:760px){.programmes{grid-template-columns:1fr}.programme+.programme{padding-left:0;border-left:0;border-top:1px solid var(--line);margin-top:24px}}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-gap:clamp(32px,6vw,88px);gap:clamp(32px,6vw,88px);align-items:center}@media (max-width:860px){.split{grid-template-columns:1fr}}.steps{list-style:none;counter-reset:s;margin:28px 0 0;padding:0}.steps li{counter-increment:s;display:grid;grid-template-columns:40px 1fr;grid-gap:12px;gap:12px;padding:16px 0;border-top:1px solid var(--ink-3)}.steps li:before{content:counter(s);font-family:var(--f-display);color:#fff;font-size:var(--t-md);line-height:1.3}.steps strong{color:#fff;font-weight:600}.mock{background:#fff;color:var(--ink);border-radius:4px;overflow:hidden;box-shadow:0 40px 80px -30px rgba(0,0,0,.6)}.mock-bar{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:14px 20px;font-size:var(--t-sm);color:var(--grey)}.mock-bar img{height:24px;width:auto}.mock-body{padding:20px 20px 8px}.mock-body h4{font-family:var(--f-display);font-size:1.25rem;margin-bottom:8px}.lessons{list-style:none;margin:0;padding:0}.lesson{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:16px;gap:16px;align-items:center;padding:14px 0;border-top:1px solid var(--line-soft);font-size:.97rem}.lesson .meta{color:var(--grey)}.lesson .go,.lesson .meta{font-size:var(--t-sm);white-space:nowrap}.lesson .go{font-weight:600;color:var(--red)}.lesson.locked{color:var(--grey)}a.lesson{text-decoration:none;color:inherit}a.lesson:hover .title{text-decoration:underline;text-underline-offset:3px}@media (max-width:640px){.lesson{grid-template-columns:1fr;row-gap:4px}}.shelf{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:clamp(16px,3vw,36px);gap:clamp(16px,3vw,36px)}.shelf.full{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));row-gap:48px}@media (max-width:760px){.shelf{grid-template-columns:repeat(2,minmax(0,1fr))}}.book{display:flex;flex-direction:column;gap:10px;text-decoration:none;color:inherit}.book .cover{aspect-ratio:3/4;background:var(--stone);overflow:hidden}.book .cover img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.book:hover .cover img{transform:scale(1.02)}.book h3{font-family:var(--f-body);font-weight:600;font-size:.97rem;line-height:1.4}.book .row{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--t-sm)}.book .fmt{color:var(--grey)}.book .price{font-weight:700}.recognition{position:relative;color:#fff;background:var(--ink) url(/images/justice-dark.jpg) center /cover no-repeat}.recognition:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(21,23,28,.92),rgba(21,23,28,.75) 55%,rgba(21,23,28,.35))}.recognition .wrap{position:relative}.recognition-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-gap:clamp(32px,6vw,80px);gap:clamp(32px,6vw,80px);align-items:center}.recognition figure{margin:0}.recognition figure img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:42% 30%;filter:grayscale(1) contrast(1.05)}.recognition figcaption{font-size:var(--t-sm);color:var(--grey-light);margin-top:10px}.awards{list-style:none;margin:28px 0 0;padding:0}.awards li{padding:16px 0;border-top:1px solid rgba(255,255,255,.18)}.awards strong{display:block;font-family:var(--f-display);font-weight:400;font-size:1.2rem}.awards span{color:var(--grey-light);font-size:.95rem}@media (max-width:860px){.recognition-grid{grid-template-columns:1fr}.recognition figure img{aspect-ratio:4/3}}.quote{font-family:var(--f-display);font-size:clamp(1.7rem,3.4vw,2.6rem);line-height:1.2;max-width:22ch}.creds{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px;padding:0;list-style:none}.creds li{border:1px solid var(--line);padding:6px 12px;font-size:var(--t-sm)}.page-head{padding:clamp(48px,7vw,96px) 0 clamp(36px,5vw,56px);border-bottom:1px solid var(--line);background:#fff;color:var(--ink)}.page-head .lede{margin-top:18px;max-width:56ch}.crumbs,.page-head .lede,.page-head .muted{color:var(--grey)}.crumbs{font-size:var(--t-sm);margin-bottom:18px}.crumbs a{color:var(--grey)}.packages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:0;gap:0;border:1px solid var(--line);background:#fff}.package{padding:32px 28px;display:flex;flex-direction:column;gap:14px}.package+.package{border-left:1px solid var(--line)}.package.featured{background:var(--ink);color:#fff}.package.featured .muted{color:var(--grey-light)}.package .amount{font-family:var(--f-display);font-size:var(--t-xl)}.package ul{margin:0;padding:0;list-style:none;flex:1 1}.package li{padding:10px 0;font-size:.95rem;border-top:1px solid rgba(160,160,160,.3)}.package .tag{font-size:var(--t-sm);color:#fff;background:var(--red);align-self:flex-start;padding:4px 10px;font-weight:600}@media (max-width:860px){.packages{grid-template-columns:1fr}.package+.package{border-left:0;border-top:1px solid var(--line)}}.table{width:100%;border-collapse:collapse;font-size:.97rem}.table th{text-align:left;font-weight:600;font-size:var(--t-sm);color:var(--grey);padding:10px 12px 10px 0;border-bottom:1px solid var(--ink)}.table td{padding:16px 12px 16px 0;border-bottom:1px solid var(--line-soft);vertical-align:middle}.table td.num{white-space:nowrap;font-weight:600}.table td.act{text-align:right;padding-right:0}@media (max-width:640px){.table thead{display:none}.table tr{display:grid;grid-template-columns:1fr auto;grid-gap:4px 12px;gap:4px 12px;padding:14px 0;border-bottom:1px solid var(--line-soft)}.table td{border:0;padding:0}.table td:first-child{grid-column:1/-1;font-weight:600}.table td.act{grid-column:2;grid-row:2/span 2;align-self:center}}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:18px}.field label{font-size:var(--t-sm);font-weight:600}.field .hint{font-size:var(--t-sm);color:var(--grey)}.input,select.input,textarea.input{font:400 1rem var(--f-body);padding:13px 14px;border:1px solid #c4c4be;border-radius:var(--r);background:#fff;color:var(--ink);width:100%}.input:focus{outline:2px solid var(--ink);outline-offset:0}.notice{padding:14px 16px;font-size:.95rem;border-left:3px solid var(--ink);background:var(--stone)}.notice.error{border-left-color:var(--danger);background:#f8ebe9}.notice.ok{border-left-color:var(--ok);background:#edf1eb}.auth{min-height:calc(100vh - 72px);display:grid;grid-template-columns:1fr 1fr}.auth-side{position:relative;background:#fff url(/images/justice-print.jpg) 35% 20%/cover no-repeat;border-right:1px solid var(--line)}.auth-side .auth-copy{position:absolute;left:0;right:0;bottom:0;padding:clamp(28px,4vw,48px);background:linear-gradient(0deg,rgba(255,255,255,1) 55%,rgba(255,255,255,0))}.auth-form{padding:clamp(40px,6vw,80px);display:flex;flex-direction:column;justify-content:center;max-width:520px;width:100%}@media (max-width:860px){.auth{grid-template-columns:1fr}.auth-side{min-height:320px}}.portal-head{padding:44px 0 36px}.portal-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-gap:56px;gap:56px;padding-top:48px;padding-bottom:96px}@media (max-width:960px){.portal-grid{grid-template-columns:1fr}}.course-block+.course-block{margin-top:56px}.progress{font-size:var(--t-sm);color:var(--grey);margin:6px 0 14px}.aside-card{border-top:1px solid var(--ink);padding:20px 0 8px}.aside-card+.aside-card{margin-top:20px}.aside-card h3{font-family:var(--f-display);font-size:1.15rem;margin-bottom:8px}.empty{border:1px solid var(--line);padding:32px;background:#fff}.player-wrap{position:relative;padding-top:56.25%;background:#000;overflow:hidden}.player-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.watch-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:40px;gap:40px;padding-top:32px;padding-bottom:96px}@media (max-width:960px){.watch-grid{grid-template-columns:1fr}}.playlist a{display:block;padding:12px 14px;border-left:2px solid var(--line);text-decoration:none;font-size:.95rem}.playlist a[aria-current=true]{border-left-color:var(--red);background:var(--stone);font-weight:600}.playlist a:hover{background:var(--stone)}.playlist small{display:block;color:var(--grey);font-weight:400}.zoom-card{background:var(--ink);color:#fff;padding:clamp(28px,4vw,44px)}.passcode{font:600 1.05rem var(--f-body);background:var(--ink-3);padding:3px 10px;letter-spacing:.04em;-webkit-user-select:all;-moz-user-select:all;user-select:all}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:24px;gap:24px}@media (max-width:960px){.admin-grid{grid-template-columns:1fr}}.admin-card{background:#fff;border:1px solid var(--line);padding:24px}.admin-card h2{font-size:var(--t-md);margin-bottom:16px;font-family:var(--f-body);font-weight:600}.pill{display:inline-block;font-size:12px;font-weight:600;padding:3px 9px;background:var(--stone)}.pill.warn{background:var(--red);color:#fff}.site-footer{background:var(--ink);color:var(--grey-light);padding:64px 0 40px;font-size:.95rem}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;grid-gap:32px;gap:32px}.footer-grid h4{font-family:var(--f-display);color:#fff;font-size:1.05rem;margin-bottom:14px}.footer-grid ul{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.footer-grid a{color:var(--grey-light);text-decoration:none}.footer-grid a:hover{color:#fff}.footer-base{margin-top:48px;padding-top:20px;border-top:1px solid var(--ink-3);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:var(--t-sm)}@media (max-width:760px){.footer-grid{grid-template-columns:1fr 1fr}.footer-grid>:first-child{grid-column:1/-1}}.center{text-align:center}.stack-sm>*+*{margin-top:12px}.stack>*+*{margin-top:20px}.row-between{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap}.wa-float{position:fixed;z-index:40;right:calc(16px + env(safe-area-inset-right, 0px));bottom:calc(16px + env(safe-area-inset-bottom, 0px));background:#1f7a4d;color:#fff;text-decoration:none;font:600 .95rem/1 var(--f-body);padding:14px 20px;border-radius:999px;box-shadow:0 10px 24px -8px rgba(0,0,0,.45)}.wa-float:hover{background:#18633e}@media print{.wa-float{display:none}}.next-class{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;background:var(--ink);color:#fff;padding:clamp(24px,4vw,40px)}.next-class .muted{color:var(--grey-light)}.next-class.quiet{background:var(--stone);color:var(--ink)}.next-class.quiet .muted,.next-class.quiet .next-label{color:var(--grey)}.next-label{font-size:var(--t-sm);font-weight:600;color:var(--grey-light);margin-bottom:6px}.next-when{font-size:1.1rem;margin-top:8px}.btn-big{padding:18px 28px;font-size:1.05rem}.notices{display:grid;grid-gap:12px;gap:12px;margin-top:20px}.notices .notice.pinned{border-left-color:var(--red)}.recs{list-style:none;margin:0;padding:0}.recs li{display:grid;grid-gap:4px;gap:4px;padding:14px 0;border-top:1px solid var(--line-soft);font-size:.95rem}.recs .rec-row{display:flex;justify-content:space-between;gap:12px;margin-top:4px}.recs .price{font-weight:700}.pdf-pages{display:grid;grid-gap:16px;gap:16px;justify-items:center;-moz-user-select:none;user-select:none;-webkit-user-select:none}.pdf-page{box-shadow:0 2px 12px rgba(0,0,0,.12);background:#fff;max-width:100%}.pdf-page canvas{display:block;max-width:100%;height:auto}.code-input{font-size:1.6rem;letter-spacing:.4em;text-align:center;max-width:260px}.text-button{background:none;border:0;padding:0;color:var(--red);font:600 .95rem var(--f-body);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.check{display:flex;gap:10px;align-items:flex-start;font-size:.95rem}.check input{margin-top:4px;width:18px;height:18px}.admin-nav{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.admin-nav a{color:#fff;text-decoration:none;font-size:var(--t-sm);padding:8px 12px;border:1px solid var(--ink-3)}.admin-nav a:hover{border-color:#fff}.admin-h{font-family:var(--f-display);font-size:var(--t-xl);margin:48px 0 16px;scroll-margin-top:90px}.admin-h:first-of-type{margin-top:8px}.admin-card h3{font-size:var(--t-md);margin-bottom:16px;font-weight:600}.admin-row{justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line-soft);font-size:.95rem}.admin-row,.inline-form{display:flex;align-items:center;flex-wrap:wrap}.inline-form{gap:8px}.inline-form .input{width:auto;flex:1 1 160px;padding:9px 10px;font-size:.9rem}.wall{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:28px;gap:28px}.wall-card{display:flex;flex-direction:column;gap:14px}.wall-card img,.wall-initials{width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--stone);filter:grayscale(1)}.wall-initials{display:grid;place-items:center;font-family:var(--f-display);font-size:3rem;color:var(--grey);filter:none}.wall-body{display:grid;grid-gap:4px;gap:4px}.wall-body strong{font-family:var(--f-display);font-weight:400;font-size:1.25rem}.wall-body span{color:var(--red);font-size:var(--t-sm);font-weight:600}.wall-body p{color:var(--grey);font-size:.95rem;margin-top:6px}.portal-bar{position:-webkit-sticky;position:sticky;top:72px;z-index:20}.portal-bar-inner{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:14px;padding-bottom:10px}.portal-bar-inner p{font-size:.95rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}.portal-tabs::-webkit-scrollbar{display:none}.portal-tabs a{position:relative;flex:none;color:var(--grey-light);text-decoration:none;font-weight:600;font-size:1rem;padding:14px 18px;border-bottom:3px solid transparent}.portal-tabs a:hover{color:#fff}.portal-tabs a[aria-current=page]{color:#fff;border-bottom-color:var(--red)}.tab-dot{position:absolute;top:10px;right:6px;width:9px;height:9px;border-radius:50%;background:#e0483a}.portal-body{min-height:60vh}.portal-page{padding-top:32px;padding-bottom:96px}.section-title{font-size:var(--t-lg);margin-bottom:12px}.home-grid{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:20px;gap:20px}.home-grid>.tile:nth-child(3){grid-column:2}.home-grid>.tile-dark{grid-row:span 2}.tile{background:#fff;border:1px solid var(--line);padding:clamp(20px,3vw,32px);display:flex;flex-direction:column;gap:10px}.tile-dark{background:var(--ink);color:#fff;border-color:var(--ink)}.tile-dark .muted{color:var(--grey-light)}.tile-live{outline:3px solid var(--red)}.tile-alert{border-color:var(--danger);border-width:2px}.tile-alert .tile-label{color:var(--danger)}.tile-label{font-size:var(--t-sm);font-weight:700;color:var(--grey)}.tile-dark .tile-label{color:var(--grey-light)}.tile-title{font-family:var(--f-display);font-size:clamp(1.5rem,3vw,2.1rem);line-height:1.15}.tile-when{font-size:1.05rem}.btn-block{width:100%;margin-top:8px}.count{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0}.count-unit{display:flex;flex-direction:column;align-items:center;min-width:76px;padding:10px 8px;background:var(--stone);color:var(--ink)}.tile-dark .count-unit{background:var(--ink-3);color:#fff}.count-unit b{font-family:var(--f-display);font-weight:400;font-size:2.2rem;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.count-unit span{font-size:var(--t-sm);margin-top:4px}.count-done{font-weight:700;font-size:1.2rem}.quick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px;margin-top:32px}.quick-card{display:grid;grid-gap:4px;gap:4px;padding:20px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--ink)}.quick-card:hover{border-color:var(--ink)}.quick-card strong{font-size:1.1rem}.quick-card span{color:var(--grey);font-size:.95rem}.class-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.class-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink);font-size:1.02rem}a.class-row:hover{border-color:var(--ink)}.class-row.locked{background:transparent;color:var(--grey)}.class-row .go{font-weight:700;color:var(--red);white-space:nowrap}.pay-list{list-style:none;margin:16px 0 0;padding:0;display:grid;grid-gap:12px;gap:12px}.pay-row{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:20px;background:#fff;border:1px solid var(--line)}.pay-row>div{display:grid;grid-gap:4px;gap:4px}.pay-row strong{font-family:var(--f-display);font-weight:400;font-size:1.6rem}.pay-row.overdue{border:2px solid var(--danger)}.pay-row.overdue .pay-when{color:var(--danger);font-weight:700}.pay-row.paid{opacity:.7}.pay-when{font-weight:600}.passcode.on-light{background:var(--stone);color:var(--ink)}.rec-grid{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:16px;gap:16px}@media (max-width:960px){.home-grid{grid-template-columns:1fr 1fr}.home-grid>.tile-dark{grid-column:1/-1;grid-row:auto}.home-grid>.tile:nth-child(3){grid-column:auto}}@media (max-width:640px){.portal-bar{position:static}.portal-tabs{position:fixed;z-index:45;left:0;right:0;bottom:0;gap:0;background:var(--ink);border-top:1px solid var(--ink-3);padding:0 env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}.portal-tabs a{flex:1 1;text-align:center;font-size:.8rem;padding:14px 2px 12px;border-bottom:0;border-top:3px solid transparent}.portal-tabs a[aria-current=page]{border-top-color:var(--red)}.portal-body{padding-bottom:72px}body:has(.portal) .site-footer{display:none}body:has(.portal) .wa-float{bottom:calc(80px + env(safe-area-inset-bottom, 0px))}.home-grid,.quick{grid-template-columns:1fr}.count-unit{min-width:0;flex:1 1}.count-unit b{font-size:1.8rem}.portal-page{padding-top:20px}}.pop-buttons{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}.events{list-style:none;margin:0;padding:0;display:grid;grid-gap:0;gap:0}.event{display:grid;grid-template-columns:88px minmax(0,1fr);grid-gap:20px;gap:20px;padding:22px 0;border-top:1px solid var(--line)}.event-date{text-align:center;border:1px solid var(--ink);padding:10px 6px;align-self:start}.event-date span{display:block;font-family:var(--f-display);font-size:2rem;line-height:1}.event-date small{display:block;font-size:12px;margin-top:4px}.event h3{font-family:var(--f-display);font-weight:400;font-size:1.35rem}.event.past{opacity:.7}.event.past .event-date{border-color:var(--line)}.book-box{background:var(--stone);padding:28px;display:grid;grid-gap:10px;gap:10px}.admin-tabs{display:flex;gap:4px;overflow-x:auto;margin-top:22px;scrollbar-width:none}.admin-tabs a{flex:none;color:var(--grey-light);text-decoration:none;font-weight:600;padding:12px 16px;border-bottom:3px solid transparent}.admin-tabs a:hover{color:#fff}.admin-tabs a[aria-current=page]{color:#fff;border-bottom-color:var(--red)}.was{color:var(--grey);font-weight:400;margin-right:4px}.site-banner{background:var(--red);color:#fff;text-align:center;font-size:.95rem;font-weight:600;padding:10px var(--gutter)}.site-banner a{color:#fff}