/* =========================================================================
   SHAKR Cocktail Course — styles
   Built on the SHAKR UI Toolkit tokens. Plain CSS, no build step.
   ========================================================================= */

/* ---------- Fonts (self-hosted) ---------- */
@font-face { font-family: 'Space Grotesk'; font-weight: 500; font-display: swap; src: url(../fonts/space-grotesk-latin-500-normal.woff2) format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-weight: 600; font-display: swap; src: url(../fonts/space-grotesk-latin-600-normal.woff2) format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-weight: 700; font-display: swap; src: url(../fonts/space-grotesk-latin-700-normal.woff2) format('woff2'); }
@font-face { font-family: 'Space Grotesk'; font-weight: 500; font-display: swap; src: url(../fonts/space-grotesk-latin-ext-500-normal.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF; }
@font-face { font-family: 'Space Grotesk'; font-weight: 700; font-display: swap; src: url(../fonts/space-grotesk-latin-ext-700-normal.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF; }
@font-face { font-family: 'Inter'; font-weight: 400; font-display: swap; src: url(../fonts/inter-latin-400-normal.woff2) format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 500; font-display: swap; src: url(../fonts/inter-latin-500-normal.woff2) format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 600; font-display: swap; src: url(../fonts/inter-latin-600-normal.woff2) format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 700; font-display: swap; src: url(../fonts/inter-latin-700-normal.woff2) format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 400; font-display: swap; src: url(../fonts/inter-latin-ext-400-normal.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF; }
@font-face { font-family: 'Inter'; font-weight: 600; font-display: swap; src: url(../fonts/inter-latin-ext-600-normal.woff2) format('woff2'); unicode-range: U+0100-024F, U+1E00-1EFF; }
@font-face { font-family: 'Playfair Display'; font-style: italic; font-weight: 500; font-display: swap; src: url(../fonts/playfair-display-latin-500-italic.woff2) format('woff2'); }
@font-face { font-family: 'Playfair Display'; font-style: italic; font-weight: 600; font-display: swap; src: url(../fonts/playfair-display-latin-600-italic.woff2) format('woff2'); }
/* Partner styles (QR cards, landing pages): Cormorant Garamond + DM Sans, OFL — only downloaded where used */
@font-face { font-family: 'Cormorant Garamond'; font-weight: 500; font-display: swap; src: url(../fonts/cormorant-garamond-latin-500-normal.woff2) format('woff2'); }
@font-face { font-family: 'Cormorant Garamond'; font-weight: 600; font-display: swap; src: url(../fonts/cormorant-garamond-latin-600-normal.woff2) format('woff2'); }
@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 500; font-display: swap; src: url(../fonts/cormorant-garamond-latin-500-italic.woff2) format('woff2'); }
@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 600; font-display: swap; src: url(../fonts/cormorant-garamond-latin-600-italic.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-weight: 400; font-display: swap; src: url(../fonts/dm-sans-latin-400-normal.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-weight: 500; font-display: swap; src: url(../fonts/dm-sans-latin-500-normal.woff2) format('woff2'); }
@font-face { font-family: 'DM Sans'; font-weight: 600; font-display: swap; src: url(../fonts/dm-sans-latin-600-normal.woff2) format('woff2'); }

/* ---------- Tokens ---------- */
:root {
  --ink: #101916; --lime: #C9F270; --lime-d: #B5E05A; --coral: #F58A70; --sage: #A9B7AB; --paper: #F6F3EA;
  --paper2: #EFEBDF; --white: #fff; --forest: #24372D; --muted: #68766B; --outline: #DDE3D8; --subtle: #EEF0E8;
  --ok: #3B714B; --warn: #9F631C; --bad: #B3423A;
  --sg: 'Space Grotesk', Arial, sans-serif; --in: 'Inter', system-ui, -apple-system, sans-serif; --pf: 'Playfair Display', Georgia, serif;
  --r-sm: 8px; --r-md: 12px; --r-lg: 20px; --r-xl: 28px;
  --sh-sm: 0 6px 18px rgba(16,25,22,.055); --sh-lg: 0 24px 68px rgba(16,25,22,.10);
  --gutter: clamp(16px, 4vw, 40px);
  --topbar: 68px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 400 16px/1.6 var(--in); min-height: 100vh; display: flex; flex-direction: column; }
main { flex: 1; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--forest); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--ink); }
h1, h2, h3 { font-family: var(--sg); letter-spacing: -0.035em; line-height: 1.08; margin: 0 0 .4em; }
h1 { font-size: clamp(2.1rem, 5vw, 3.4rem); font-weight: 700; }
h2 { font-size: clamp(1.7rem, 3.6vw, 2.6rem); font-weight: 700; }
h3, .h3 { font-size: 1.35rem; font-weight: 600; letter-spacing: -0.02em; }
h1 em, h2 em { font-family: var(--pf); font-style: italic; font-weight: 500; letter-spacing: -0.01em; }
p { margin: 0 0 1em; }
code, .mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .88em; }
code { background: var(--subtle); padding: 1px 6px; border-radius: 6px; }
.small, small { font-size: .85rem; }
.muted { color: var(--muted); }
.right { text-align: right; }
.mt-s { margin-top: 12px; } .mt-m { margin-top: 28px; } .mt-l { margin-top: 44px; }
[x-cloak] { display: none !important; }
:focus-visible { outline: 3px solid #B7654F; outline-offset: 2px; }
.icon { flex: none; vertical-align: middle; }
.overline, .overline-sm { font: 600 12px/1 var(--sg); letter-spacing: .28em; text-transform: uppercase; color: var(--forest); display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.overline::before { content: ""; width: 40px; height: 3px; border-radius: 2px; background: var(--lime); }
.overline-sm { font-size: 11px; letter-spacing: .2em; margin-bottom: 6px; color: var(--muted); }
.lead { font-size: clamp(1.05rem, 1.6vw, 1.25rem); color: var(--muted); max-width: 640px; }
.wrap { max-width: 1240px; margin: 0 auto; padding: 0 var(--gutter); }
.wrap.narrow, .narrow { max-width: 860px; }
.page-pad { padding-top: 40px; padding-bottom: 60px; }
.back { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; text-decoration: none; font-size: .92rem; margin-bottom: 18px; }

/* ---------- Buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid transparent; border-radius: 999px;
  font: 600 15px/1.2 var(--sg); letter-spacing: .01em; padding: 12px 22px; cursor: pointer; text-decoration: none; transition: background .15s, transform .1s, box-shadow .15s; color: var(--ink); background: var(--subtle); min-height: 44px; }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn-primary { background: var(--lime); color: var(--ink); }
.btn-primary:hover { background: var(--lime-d); color: var(--ink); box-shadow: 0 6px 20px rgba(201,242,112,.45); }
.btn-ink { background: var(--ink); color: var(--paper); }
.btn-ink:hover { background: var(--forest); color: var(--paper); }
.btn-ghost { background: transparent; border-color: var(--outline); color: var(--ink); }
.btn-ghost:hover { background: var(--white); color: var(--ink); }
.btn-ghost-dark { background: transparent; border-color: rgba(246,243,234,.3); color: var(--paper); }
.btn-ghost-dark:hover { background: rgba(246,243,234,.08); color: var(--paper); }
.btn-danger { background: var(--bad); color: #fff; }
.btn-danger:hover { background: #962f28; color: #fff; }
.btn-sm { padding: 8px 14px; font-size: 14px; min-height: 38px; }
.btn-lg { padding: 16px 28px; font-size: 17px; }
.btn-block { width: 100%; }
.btn .btn-sub { display: block; width: 100%; font: 400 12px/1.3 var(--in); opacity: .75; }
.btn:has(.btn-sub) { flex-wrap: wrap; border-radius: 22px; text-align: center; }
.linklike { background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.icon-btn { display: inline-grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; border: 0; background: transparent; color: inherit; cursor: pointer; }
.icon-btn:hover:not(:disabled) { background: var(--subtle); }
.icon-btn:disabled { opacity: .35; cursor: default; }
.chip-btn { border: 1px solid var(--outline); background: var(--white); border-radius: 999px; font: 700 13px/1 var(--sg); padding: 9px 12px; cursor: pointer; min-width: 54px; }

/* ---------- Badges ---------- */
.badge { display: inline-flex; align-items: center; gap: 5px; font: 600 11px/1 var(--sg); letter-spacing: .08em; text-transform: uppercase; padding: 6px 10px; border-radius: 999px; background: var(--subtle); color: var(--forest); white-space: nowrap; }
.badge-lime { background: var(--lime); color: var(--ink); }
.badge-ink { background: var(--ink); color: var(--lime); }
.badge-coral { background: #FCE3DB; color: #8A3A26; }

/* ---------- Top bar ---------- */
.topbar { position: sticky; top: 0; z-index: 40; height: var(--topbar); background: var(--ink); color: var(--paper); display: flex; align-items: center; gap: 20px; padding: 0 var(--gutter); }
.brand img { height: 40px; width: auto; }
.nav { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.nav a, .nav .linklike { color: var(--sage); text-decoration: none; font: 500 15px/1 var(--sg); padding: 10px 12px; border-radius: 999px; display: inline-flex; align-items: center; gap: 7px; }
.nav a:hover, .nav .linklike:hover, .nav a.active { color: var(--paper); background: rgba(246,243,234,.07); }
.nav a.btn { color: var(--ink); margin-left: 6px; }
.nav a.btn:hover { background: var(--lime-d); }
.nav-form { margin: 0; }
.nav-toggle { display: none; margin-left: auto; background: none; border: 0; color: var(--paper); width: 44px; height: 44px; border-radius: 50%; cursor: pointer; }
@media (max-width: 820px) {
  .nav-toggle { display: grid; place-items: center; }
  .nav { display: none; position: absolute; top: var(--topbar); left: 0; right: 0; background: var(--ink); flex-direction: column; align-items: stretch; padding: 8px var(--gutter) 18px; border-top: 1px solid rgba(246,243,234,.1); }
  .nav.is-open { display: flex; }
  .nav a, .nav .linklike { padding: 14px 8px; width: 100%; }
  .nav a.btn { margin: 8px 0 0; justify-content: center; }
}

/* ---------- Flash & notices ---------- */
.flashes { position: fixed; z-index: 60; top: calc(var(--topbar) + 12px); right: 12px; left: 12px; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; pointer-events: none; }
.flash { pointer-events: auto; max-width: 520px; display: flex; gap: 12px; align-items: flex-start; background: var(--ink); color: var(--paper); padding: 14px 14px 14px 18px; border-radius: var(--r-md); box-shadow: var(--sh-lg); border-left: 4px solid var(--lime); }
.flash-bad { border-left-color: var(--coral); }
.flash-info { border-left-color: var(--sage); }
.flash span { flex: 1; }
.flash a { color: var(--lime); }
.flash-close { background: none; border: 0; color: var(--sage); cursor: pointer; padding: 2px; }
.notice { display: flex; gap: 10px; align-items: flex-start; background: var(--white); border: 1px solid var(--outline); border-left: 4px solid var(--sage); padding: 12px 16px; border-radius: var(--r-md); margin: 0 0 16px; }
.notice-ok { border-left-color: var(--ok); }
.notice-bad { border-left-color: var(--bad); }
.notice a { font-weight: 600; }

/* ---------- Cards, grids ---------- */
.card { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: clamp(20px, 3vw, 30px); box-shadow: var(--sh-sm); }
.card .ic, .ic { width: 52px; height: 52px; border-radius: 14px; background: var(--lime); display: grid; place-items: center; margin-bottom: 16px; color: var(--ink); }
.grid-2 { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.grid-3 { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.danger-zone { border-color: #F0C9BF; }

/* ---------- Forms ---------- */
.form { display: flex; flex-direction: column; gap: 16px; }
.form label { display: flex; flex-direction: column; gap: 6px; font: 600 14px/1.3 var(--in); }
input[type=text], input[type=email], input[type=password], input[type=search], input[type=number], input[type=url], input[type=date], input[type=datetime-local], input:not([type]), select, textarea {
  font: 400 16px/1.4 var(--in); color: var(--ink); background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-md);
  padding: 12px 14px; width: 100%; min-height: 46px; transition: border-color .15s, box-shadow .15s; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--forest); box-shadow: 0 0 0 3px rgba(201,242,112,.6); }
input:disabled { background: var(--subtle); color: var(--muted); }
.form label.check { flex-direction: row; align-items: flex-start; gap: 10px; font-weight: 400; }
.check input { width: 20px; height: 20px; accent-color: var(--forest); margin-top: 1px; flex: none; }
.field-error { color: var(--bad); font-weight: 500; font-size: .86rem; }
.pw-wrap { position: relative; display: block; }
.pw-wrap input { padding-right: 48px; }
.pw-toggle { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); background: none; border: 0; width: 40px; height: 40px; cursor: pointer; color: var(--muted); }
.row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 520px) { .row-2 { grid-template-columns: 1fr; } }
.file { flex-direction: row !important; align-items: center; flex-wrap: wrap; gap: 12px !important; }
.file input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.file .btn { cursor: pointer; }

/* ---------- Auth pages ---------- */
.auth-wrap { display: grid; place-items: start center; padding: clamp(28px, 6vw, 72px) 16px; }
.auth-card { width: 100%; max-width: 460px; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-xl); padding: clamp(24px, 5vw, 40px); box-shadow: var(--sh-lg); }
.auth-card.wide { max-width: 640px; }
.auth-card h1 { font-size: clamp(1.8rem, 4vw, 2.3rem); }
.auth-logo { margin: 0 auto 18px; }
.auth-alt { text-align: center; margin: 16px 0 0; color: var(--muted); font-size: .95rem; }
.checklist { list-style: none; padding: 0; margin: 16px 0 24px; display: grid; gap: 8px; }
.checklist li { display: flex; gap: 8px; align-items: center; }
.checklist li.ok .icon { color: var(--ok); } .checklist li.bad { color: var(--bad); }
.order { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px; background: var(--subtle); border-radius: var(--r-md); margin-bottom: 18px; }
.order-price { font: 700 24px/1 var(--sg); }

/* ---------- Landing ---------- */
.hero { background: var(--ink); color: var(--paper); padding: clamp(40px, 8vw, 96px) var(--gutter) clamp(48px, 8vw, 100px); }
.hero-inner { max-width: 1240px; margin: 0 auto; display: grid; grid-template-columns: 1.3fr .9fr; gap: clamp(28px, 6vw, 80px); align-items: center; }
.hero .overline { color: var(--sage); }
.hero h1 { font-size: clamp(3rem, 9vw, 6.2rem); line-height: .95; letter-spacing: -0.05em; }
.hero h1 em { color: var(--lime); }
.hero .lead { color: var(--sage); margin: 22px 0 30px; }
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; }
.hero-facts { list-style: none; padding: 0; margin: 36px 0 0; display: flex; gap: 28px; flex-wrap: wrap; color: var(--sage); }
.hero-facts strong { display: block; font: 700 30px/1 var(--sg); color: var(--paper); letter-spacing: -0.03em; }
.hero-media img { border-radius: var(--r-xl); width: 100%; max-width: 440px; margin-left: auto; aspect-ratio: 407/534; object-fit: cover; box-shadow: 0 30px 80px rgba(0,0,0,.4); }
@media (max-width: 860px) { .hero-inner { grid-template-columns: 1fr; } .hero-media img { max-width: 360px; margin: 0 auto; } }
.section { padding: clamp(56px, 9vw, 110px) 0; }
.section-paper2 { background: var(--paper2); }
.preview-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.preview-strip img { border-radius: var(--r-md); box-shadow: var(--sh-lg); border: 1px solid var(--outline); }
@media (max-width: 860px) { .preview-strip { grid-template-columns: 1fr 1fr; } }
.curriculum { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.curriculum li { display: flex; align-items: center; gap: 18px; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 18px 22px; }
.cur-num { font: 700 26px/1 var(--sg); color: var(--forest); width: 40px; }
.cur-title { font: 600 20px/1.2 var(--sg); flex: 1; letter-spacing: -0.02em; }
.cur-meta { color: var(--muted); font-size: .92rem; }
@media (max-width: 560px) { .cur-meta { display: none; } .curriculum li { padding: 14px 16px; gap: 12px; } }
.pricing { display: grid; grid-template-columns: 1fr 420px; gap: 40px; align-items: center; }
.lead.dark { color: var(--muted); }
@media (max-width: 860px) { .pricing { grid-template-columns: 1fr; } }
.price-card { background: var(--ink); color: var(--paper); border-radius: var(--r-xl); padding: 34px; box-shadow: var(--sh-lg); }
.price-tag { font: 700 64px/1 var(--sg); letter-spacing: -0.05em; color: var(--lime); }
.price-card .muted { color: var(--sage); }
.ticks { list-style: none; padding: 0; margin: 22px 0 26px; display: grid; gap: 10px; }
.ticks li { display: flex; gap: 10px; align-items: center; }
.ticks .icon { color: var(--lime); }
.faq { max-width: 860px; }
.faq-item { border-bottom: 1px solid var(--outline); }
.faq-item button { width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 12px; background: none; border: 0; padding: 22px 0; font: 600 19px/1.3 var(--sg); text-align: left; cursor: pointer; color: var(--ink); }
.faq-item .icon { transition: transform .2s; }
.faq-item.open .icon { transform: rotate(180deg); }
.faq-a p { color: var(--muted); max-width: 680px; }
/* FAQ page (faq.php): same look as the landing-page FAQ, built on <details> so answers open without JavaScript */
.faq-hero h1 { max-width: 760px; }
.faq-body .faq { max-width: none; }
.faq-group { margin-top: 44px; scroll-margin-top: calc(var(--topbar) + 16px); }
.faq-group > h2 { margin: 0 0 4px; }
details.faq-item { scroll-margin-top: calc(var(--topbar) + 16px); }
details.faq-item summary { list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 20px 0; cursor: pointer; color: var(--ink); }
details.faq-item summary::-webkit-details-marker { display: none; }
details.faq-item summary h3 { font: 600 18px/1.35 var(--sg); letter-spacing: -0.01em; margin: 0; }
details.faq-item summary .icon { flex: none; transition: transform .2s; }
details.faq-item[open] summary .icon { transform: rotate(180deg); }
details.faq-item summary:focus-visible { outline: 2px solid var(--forest); outline-offset: 4px; border-radius: 4px; }
details.faq-item .faq-a { padding-bottom: 20px; }
details.faq-item .faq-a p { margin: 0 0 10px; }
details.faq-item .faq-a a { color: var(--forest); font-weight: 600; }
.faq-more { font-size: .95rem; }
.faq-search { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border: 1px solid var(--outline); border-radius: var(--r-md); background: var(--white); box-shadow: var(--sh-sm); color: var(--muted); }
.faq-search:focus-within { border-color: var(--forest); }
.faq-search input { border: 0; outline: 0; background: transparent; box-shadow: none; font: inherit; color: var(--ink); width: 100%; padding: 0; margin: 0; min-height: 0; }
.faq-none { margin-top: 28px; }

/* ---------- Course overview ---------- */
.course-hero { background: var(--ink); color: var(--paper); padding: clamp(36px, 6vw, 64px) 0; }
.course-hero-inner { display: flex; justify-content: space-between; align-items: center; gap: 40px; }
.course-hero .overline { color: var(--sage); }
.course-hero .lead { color: var(--sage); margin-bottom: 26px; }
.ring { position: relative; width: 200px; height: 200px; flex: none; }
.ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ring circle { fill: none; stroke-width: 9; }
.ring-bg { stroke: rgba(246,243,234,.12); }
.ring-fg { stroke: var(--lime); stroke-linecap: round; stroke-dasharray: calc(var(--p) * 1) 100; }
.ring-label { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; }
.ring-label strong { font: 700 44px/1 var(--sg); letter-spacing: -0.04em; }
.ring-label span { color: var(--sage); font-size: .85rem; margin-top: 6px; }
@media (max-width: 720px) { .course-hero-inner { flex-direction: column-reverse; align-items: flex-start; } .ring { width: 150px; height: 150px; } .ring-label strong { font-size: 34px; } }
.paywall { margin-top: 28px; display: grid; grid-template-columns: 1fr 340px; gap: 30px; align-items: center; background: var(--white); border: 2px solid var(--lime); border-radius: var(--r-xl); padding: clamp(22px, 4vw, 36px); box-shadow: var(--sh-lg); }
.paywall-hot { background: var(--lime); }
.paywall-hot .overline::before { background: var(--ink); }
.paywall h2 { font-size: clamp(1.6rem, 3vw, 2.2rem); }
.paywall p { color: var(--forest); margin: 0; }
.paywall-cta { display: flex; flex-direction: column; gap: 10px; text-align: center; }
.paywall-hot .btn-primary { background: var(--ink); color: var(--lime); }
@media (max-width: 860px) { .paywall { grid-template-columns: 1fr; } }
.chapters { padding-top: 28px; padding-bottom: 60px; display: grid; gap: 12px; }
.chapter { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); overflow: hidden; }
.chapter-head { width: 100%; display: flex; align-items: center; gap: 16px; padding: 18px 20px; background: none; border: 0; cursor: pointer; text-align: left; color: var(--ink); flex-wrap: wrap; }
.chapter-num { font: 700 28px/1 var(--sg); color: var(--forest); width: 44px; }
.chapter-title { flex: 1; font: 600 20px/1.2 var(--sg); letter-spacing: -0.02em; min-width: 160px; }
.chapter-title small { display: block; font: 400 13px/1.4 var(--in); color: var(--muted); margin-top: 4px; letter-spacing: 0; }
.chev { transition: transform .2s; }
[aria-expanded=true] .chev { transform: rotate(180deg); }
.lessons { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; padding: 0 20px 20px; }
.lesson { display: flex; flex-direction: column; text-decoration: none; color: var(--ink); border-radius: var(--r-md); border: 1px solid var(--outline); overflow: hidden; background: var(--paper); transition: transform .15s, box-shadow .15s; position: relative; }
.lesson:hover { transform: translateY(-2px); box-shadow: var(--sh-lg); color: var(--ink); }
.lesson-thumb { position: relative; aspect-ratio: 16/9; background: var(--subtle); }
.lesson-thumb img { width: 100%; height: 100%; object-fit: cover; }
.lesson-lock { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(16,25,22,.55); color: var(--paper); }
.lesson-meta { padding: 12px 44px 14px 14px; display: flex; flex-direction: column; gap: 2px; }
.lesson-n { font: 600 11px/1 var(--sg); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.lesson-title { font: 600 15px/1.3 var(--sg); letter-spacing: -0.01em; }
.lesson-state { position: absolute; right: 12px; bottom: 14px; color: var(--forest); }
.lesson.is-done .lesson-state { color: var(--ok); }
.lesson.is-locked .lesson-title { color: var(--muted); }

/* ---------- Player ---------- */
body.learn { background: var(--paper); }
.player { display: grid; grid-template-columns: 320px 1fr; min-height: calc(100vh - var(--topbar)); }
.pl-side { background: var(--white); border-right: 1px solid var(--outline); position: sticky; top: var(--topbar); height: calc(100vh - var(--topbar)); display: flex; flex-direction: column; }
.pl-side-head { display: flex; justify-content: space-between; align-items: center; padding: 18px 18px 0; }
.pl-side-head .back { margin: 0; }
.pl-progress { padding: 14px 18px 16px; border-bottom: 1px solid var(--outline); }
.bar { height: 8px; border-radius: 99px; background: var(--subtle); overflow: hidden; margin-bottom: 8px; }
.bar span { display: block; height: 100%; background: var(--lime); border-radius: 99px; transition: width .4s; }
.pl-progress small { color: var(--muted); }
.pl-list { overflow-y: auto; flex: 1; padding: 8px 10px 30px; overscroll-behavior: contain; }
.pl-ch-title { font: 600 11px/1.3 var(--sg); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); padding: 18px 10px 8px; }
.pl-item { display: flex; gap: 10px; align-items: center; width: 100%; text-align: left; background: none; border: 0; border-radius: var(--r-md); padding: 8px 10px; cursor: pointer; font: 500 14px/1.3 var(--in); color: var(--ink); }
.pl-item:hover { background: var(--subtle); }
.pl-item.active { background: var(--ink); color: var(--paper); }
.pl-item.locked { color: var(--muted); }
.pl-dot { flex: none; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font: 600 11px/1 var(--sg); background: var(--subtle); color: var(--forest); }
.pl-item.done .pl-dot { background: var(--lime); color: var(--ink); }
.pl-item.active .pl-dot { background: var(--lime); color: var(--ink); }
.pl-main { padding: 22px clamp(14px, 3vw, 40px) 40px; max-width: 1240px; width: 100%; margin: 0 auto; min-width: 0; }
.pl-top { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.pl-crumb { flex: 1; min-width: 0; }
.pl-crumb h1 { font-size: clamp(1.25rem, 2.6vw, 1.9rem); margin: 0; }
.pl-count { font: 600 14px/1 var(--sg); color: var(--muted); white-space: nowrap; }
.stage { position: relative; border-radius: var(--r-lg); overflow: hidden; background: var(--ink); aspect-ratio: 16/9; box-shadow: var(--sh-lg); }
.stage-img { width: 100%; height: 100%; object-fit: contain; cursor: pointer; }
.stage:fullscreen { border-radius: 0; aspect-ratio: auto; display: grid; place-items: center; }
.stage:-webkit-full-screen { border-radius: 0; }
.stage-hint { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(16,25,22,.18); cursor: pointer; }
.big-play { width: 92px; height: 92px; border-radius: 50%; background: var(--lime); color: var(--ink); display: grid; place-items: center; box-shadow: 0 10px 40px rgba(0,0,0,.35); padding-left: 5px; transition: transform .15s; }
.stage-hint:hover .big-play { transform: scale(1.06); }
.stage-lock { position: absolute; inset: 0; display: grid; place-items: center; }
.stage-blur { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: blur(18px) brightness(.45); transform: scale(1.1); }
.stage-lock-card { position: relative; background: var(--white); border-radius: var(--r-lg); padding: clamp(18px, 3vw, 32px); max-width: 460px; margin: 16px; text-align: center; }
.stage-lock-card .ic { margin: 0 auto 12px; }
.stage-lock-card h2 { font-size: clamp(1.2rem, 2.4vw, 1.6rem); }
@media (max-width: 560px) { .stage-lock-card p { display: none; } .stage-lock-card .ic { display: none; } }
.controls { margin-top: 16px; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 14px 16px; box-shadow: var(--sh-sm); }
.controls.disabled { opacity: .55; }
.ctl-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ctl-row-2 { margin-top: 10px; padding-top: 12px; border-top: 1px solid var(--outline); gap: 8px; }
.play-btn { width: 58px; height: 58px; border-radius: 50%; border: 0; background: var(--lime); color: var(--ink); display: grid; place-items: center; cursor: pointer; flex: none; transition: transform .1s, background .15s; }
.play-btn:hover:not(:disabled) { background: var(--lime-d); }
.play-btn:disabled { opacity: .4; cursor: default; }
.seek { flex: 1; display: flex; align-items: center; gap: 10px; min-width: 200px; }
.time { font: 600 13px/1 var(--sg); color: var(--muted); min-width: 38px; text-align: center; font-variant-numeric: tabular-nums; }
.seek input[type=range] { flex: 1; -webkit-appearance: none; appearance: none; height: 6px; border-radius: 99px; background: linear-gradient(to right, var(--forest) var(--fill, 0%), var(--subtle) var(--fill, 0%)); cursor: pointer; }
.seek input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--ink); border: 3px solid var(--lime); }
.seek input[type=range]::-moz-range-thumb { width: 14px; height: 14px; border-radius: 50%; background: var(--ink); border: 3px solid var(--lime); }
.ctl-right { display: flex; align-items: center; gap: 8px; }
.switch { display: inline-flex; align-items: center; gap: 8px; font: 500 14px/1 var(--in); cursor: pointer; user-select: none; }
.switch input { position: absolute; opacity: 0; }
.switch span { width: 40px; height: 24px; border-radius: 99px; background: var(--outline); position: relative; transition: background .15s; }
.switch span::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .15s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.switch input:checked + span { background: var(--forest); }
.switch input:checked + span::after { transform: translateX(16px); background: var(--lime); }
.switch input:focus-visible + span { outline: 3px solid #B7654F; outline-offset: 2px; }
.no-audio { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--muted); font-size: .92rem; }
.spacer { flex: 1; }
.transcript { margin-top: 16px; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: clamp(18px, 3vw, 30px); }
.transcript p { font-size: 1.05rem; line-height: 1.75; max-width: 76ch; margin: 0; color: #2D3833; }
.kbd-hint { margin-top: 18px; color: var(--muted); font-size: .85rem; }
kbd { font: 600 12px/1 var(--sg); border: 1px solid var(--outline); border-bottom-width: 2px; border-radius: 6px; padding: 3px 6px; background: var(--white); }
.only-mobile { display: none !important; }
.pl-scrim { display: none; }
@media (max-width: 980px) {
  .player { grid-template-columns: 1fr; }
  .only-mobile { display: inline-flex !important; }
  .pl-side { position: fixed; z-index: 50; top: 0; left: 0; bottom: 0; height: 100%; width: min(340px, 88vw); transform: translateX(-100%); transition: transform .25s; box-shadow: var(--sh-lg); }
  .pl-side.is-open { transform: none; }
  .pl-scrim { display: block; position: fixed; inset: 0; z-index: 45; background: rgba(16,25,22,.5); }
  .kbd-hint { display: none; }
}
@media (max-width: 640px) {
  .pl-main { padding: 12px 10px 28px; }
  .pl-top { flex-wrap: wrap; gap: 10px; }
  .pl-crumb { order: 3; flex-basis: 100%; }
  .pl-count { margin-left: auto; }
  .stage { border-radius: var(--r-md); }
  .big-play { width: 66px; height: 66px; }
  .seek { order: 5; flex-basis: 100%; min-width: 0; }
  .ctl-right { margin-left: auto; }
  .ctl-row-2 .btn { flex: 1 1 auto; }
  .ctl-row-2 .spacer { display: none; }
}

/* ---------- Modal ---------- */
.modal { position: fixed; inset: 0; z-index: 70; background: rgba(16,25,22,.65); display: grid; place-items: center; padding: 16px; }
.modal-card { position: relative; background: var(--white); border-radius: var(--r-xl); padding: clamp(24px, 4vw, 40px); max-width: 520px; width: 100%; text-align: center; box-shadow: var(--sh-lg); }
.modal-card .overline { justify-content: center; }
.modal-card p { color: var(--muted); }
.modal-x { position: absolute; top: 10px; right: 10px; }

/* ---------- Admin ---------- */
.tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0 26px; border-bottom: 1px solid var(--outline); padding-bottom: 12px; }
.tab { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; padding: 9px 14px; border-radius: 999px; font: 600 14px/1 var(--sg); color: var(--forest); }
.tab:hover { background: var(--subtle); }
.tab.active { background: var(--ink); color: var(--lime); }
.stats { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); }
.stat { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 22px; display: flex; flex-direction: column; gap: 4px; }
.stat-n { font: 700 38px/1 var(--sg); letter-spacing: -0.04em; margin-bottom: 4px; }
.stat small { color: var(--muted); }
.stat-ink { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.stat-ink .stat-n { color: var(--lime); }
.stat-ink small { color: var(--sage); }
.table-wrap { overflow-x: auto; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); }
.table { width: 100%; border-collapse: collapse; }
.table th { text-align: left; font: 600 11px/1 var(--sg); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); padding: 14px 14px; border-bottom: 1px solid var(--outline); white-space: nowrap; }
.table td { padding: 12px 14px; border-top: 1px solid var(--outline); vertical-align: middle; }
.card .table td { padding: 10px 6px; }
.table tr.is-blocked td { opacity: .6; }
.table .group-row td { background: var(--subtle); font: 600 13px/1 var(--sg); letter-spacing: .06em; text-transform: uppercase; color: var(--forest); padding: 12px 14px; }
.toolbar { display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.toolbar-form { display: flex; gap: 8px; flex-wrap: wrap; flex: 1; }
.toolbar-form input { max-width: 320px; }
.toolbar-form select { max-width: 200px; }
.toolbar-right { display: flex; gap: 8px; }
.mini-bar { width: 90px; height: 6px; border-radius: 99px; background: var(--subtle); overflow: hidden; display: inline-block; vertical-align: middle; margin-right: 6px; }
.mini-bar.wide { width: 100%; height: 10px; }
.mini-bar span { display: block; height: 100%; background: var(--forest); }
.pager { display: flex; gap: 6px; margin-top: 18px; flex-wrap: wrap; }
.pager a { min-width: 38px; height: 38px; display: grid; place-items: center; border-radius: 50%; text-decoration: none; background: var(--white); border: 1px solid var(--outline); font: 600 14px/1 var(--sg); }
.pager a.active { background: var(--lime); border-color: var(--lime); color: var(--ink); }
.dots { display: flex; flex-wrap: wrap; gap: 6px; }
.dot { width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center; font: 600 11px/1 var(--sg); background: var(--subtle); color: var(--muted); }
.dot.on { background: var(--lime); color: var(--ink); }
.hbars { display: grid; gap: 10px; margin-bottom: 8px; }
.hbar { display: grid; grid-template-columns: 150px 1fr 34px; gap: 10px; align-items: center; font-size: .9rem; }
.hbar-t { height: 10px; background: var(--subtle); border-radius: 99px; overflow: hidden; }
.hbar-t span { display: block; height: 100%; background: var(--forest); border-radius: 99px; }
.hbar-n { text-align: right; font: 600 14px/1 var(--sg); }
.big-num { font: 700 56px/1 var(--sg); letter-spacing: -0.04em; margin: 4px 0 10px; }
.big-num span { font-size: 28px; color: var(--muted); }
.slide-cell { display: flex; gap: 14px; align-items: center; min-width: 280px; }
.slide-cell img { border-radius: 6px; border: 1px solid var(--outline); width: 128px; flex: none; }
.table-content audio { height: 36px; max-width: 260px; }
.actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.actions form { margin: 0; }
.inline-upload label { cursor: pointer; }

/* ---------- Footer ---------- */
.footer { border-top: 1px solid var(--outline); padding: 28px var(--gutter); }
.footer-inner { max-width: 1240px; margin: 0 auto; display: flex; gap: 20px; align-items: center; justify-content: space-between; flex-wrap: wrap; color: var(--muted); font-size: .88rem; }
.footer img { height: 40px; width: auto; }
.footer p { margin: 0; }
body.learn .footer { display: none; }

/* ---------- Plan picker (checkout.php) ---------- */
.plans-head { max-width: 720px; margin-bottom: 34px; }
.plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
.plan { position: relative; display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-xl); padding: 30px 26px 26px; box-shadow: var(--sh-sm); }
.plan-featured { background: var(--ink); color: var(--paper); border-color: var(--ink); box-shadow: var(--sh-lg); }
.plan-flag { position: absolute; top: -13px; left: 26px; background: var(--lime); color: var(--ink); font: 700 11px/1 var(--sg); letter-spacing: .14em; text-transform: uppercase; padding: 8px 12px; border-radius: 999px; }
.plan-name { font-size: 1.7rem; margin: 0 0 4px; }
.plan-featured .plan-name { color: var(--paper); }
.plan-tag { font-family: var(--pf); font-style: italic; color: var(--muted); margin: 0 0 18px; }
.plan-featured .plan-tag { color: var(--sage); }
.plan-price { font: 700 52px/1 var(--sg); letter-spacing: -0.05em; }
.plan-featured .plan-price { color: var(--lime); }
.plan-once { font-size: .85rem; color: var(--muted); margin-top: 6px; }
.plan-featured .plan-once { color: var(--sage); }
.plan-save { margin-top: 12px; font: 600 13px/1.35 var(--sg); color: var(--lime); }
.plan-save s { opacity: .75; }
.plan-list { list-style: none; padding: 0; margin: 22px 0 26px; display: grid; gap: 12px; flex: 1; align-content: start; }
.plan-list li { display: flex; gap: 10px; align-items: flex-start; }
.plan-list li .icon { margin-top: 2px; border-radius: 50%; padding: 2px; width: 20px; height: 20px; }
.plan-list li.yes .icon { background: var(--lime); color: var(--ink); }
.plan-list li.no .icon { background: var(--subtle); color: var(--muted); }
.plan-list strong { display: block; font: 600 15px/1.3 var(--sg); }
.plan-list small { display: block; color: var(--muted); font-size: .82rem; }
.plan-list li.no strong { color: var(--muted); font-weight: 500; text-decoration: line-through; text-decoration-color: rgba(104,118,107,.5); }
.plan-featured .plan-list small { color: var(--sage); }
.plan-featured .plan-list li.no .icon { background: rgba(246,243,234,.1); color: var(--sage); }
.plan-featured .plan-list li.no strong { color: var(--sage); }
.addons { margin-top: 28px; display: grid; grid-template-columns: 1fr minmax(0, 440px); gap: 24px; align-items: center; background: var(--white); border: 1px dashed var(--sage); border-radius: var(--r-lg); padding: 22px 26px; }
.addons h2 { margin-bottom: 4px; }
.addons p { margin: 0; }
.addons ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.addons li { display: flex; justify-content: space-between; gap: 16px; padding: 10px 14px; background: var(--paper); border-radius: var(--r-md); }
.addons li strong { font-family: var(--sg); white-space: nowrap; }
.plans-foot { margin-top: 22px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.price-from { font: 600 13px/1 var(--sg); letter-spacing: .2em; text-transform: uppercase; color: var(--sage); margin-bottom: 8px; }
@media (max-width: 980px) {
  .plans { grid-template-columns: 1fr; max-width: 520px; }
  .plan-featured { order: -1; }
  .addons { grid-template-columns: 1fr; max-width: 520px; }
}
.form-inline { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; margin-top: 8px; }
.form-inline label { display: flex; flex-direction: column; gap: 6px; font: 600 14px/1.2 var(--sg); flex: 1 1 160px; }
.plan-pitch { display: flex; gap: 10px; align-items: flex-start; margin-top: 16px; padding: 12px 14px; border-radius: var(--r-md); background: rgba(201,242,112,.12); border: 1px solid rgba(201,242,112,.35); font-size: .9rem; line-height: 1.45; color: var(--paper); }
.plan-pitch .icon { color: #E6C15A; margin-top: 1px; }
.plan:not(.plan-featured) .plan-pitch { background: var(--paper); border-color: var(--outline); color: var(--ink); }
.plan:not(.plan-featured) .plan-save { color: var(--forest); }

/* ---------- Extras store & upsell ---------- */
.have { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 4px 0 6px; }
.have-item { display: inline-flex; align-items: center; gap: 6px; font: 500 14px/1 var(--sg); padding: 8px 12px; border-radius: 999px; background: var(--subtle); color: var(--muted); }
.have-item.on { background: #E9F7CF; color: var(--ink); }
.extras { margin-top: 28px; display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.extra { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-xl); padding: 26px; box-shadow: var(--sh-sm); }
.extra p { color: var(--muted); flex: 1; }
.extra-hot { background: var(--ink); color: var(--paper); border-color: var(--ink); box-shadow: var(--sh-lg); }
.extra-hot h2 { color: var(--paper); }
.extra-hot p { color: var(--sage); }
.extra-hot .ic { background: #E6C15A; }
.extra-buy { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; margin: 6px 0 16px; }
.extra-price { font: 700 34px/1 var(--sg); letter-spacing: -0.04em; }
.extra-price small { font: 500 14px/1 var(--in); letter-spacing: 0; color: var(--muted); }
.extra-hot .extra-price { color: var(--lime); }
.extra-hot .extra-price small { color: var(--sage); }
.qty { display: flex; flex-direction: column; gap: 4px; font: 600 12px/1 var(--sg); letter-spacing: .08em; text-transform: uppercase; }
.qty select { min-width: 84px; min-height: 42px; padding: 8px 12px; }
.extra-hot .qty { color: var(--sage); }
.upsell { margin-top: 28px; display: grid; grid-template-columns: 1fr auto; gap: 30px; align-items: center; background: var(--ink); color: var(--paper); border-radius: var(--r-xl); padding: clamp(22px, 4vw, 36px); box-shadow: var(--sh-lg); }
.upsell h2 { color: var(--paper); font-size: clamp(1.6rem, 3vw, 2.2rem); }
.upsell h2 em { color: #E6C15A; }
.upsell p { color: var(--sage); margin: 0 0 14px; max-width: 640px; }
.upsell .overline { color: var(--sage); }
.upsell .overline::before { background: #E6C15A; }
.upsell-list { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.upsell-list li { font: 500 14px/1 var(--sg); padding: 9px 12px; border-radius: 999px; background: rgba(246,243,234,.08); color: var(--paper); }
.upsell-list strong { color: var(--lime); margin-left: 4px; }
@media (max-width: 860px) { .upsell { grid-template-columns: 1fr; } }
.extras:has(> .extra:only-child) { max-width: 560px; }

/* ---------- Medals ---------- */
.medal { display: inline-block; width: 14px; height: 14px; border-radius: 50%; vertical-align: -2px; background: var(--subtle); box-shadow: inset 0 0 0 2px rgba(0,0,0,.08); }
.medal-gold { background: radial-gradient(circle at 35% 30%, #F4DD8A, #C9A227 60%, #96740F); }
.medal-silver { background: radial-gradient(circle at 35% 30%, #F1F3F5, #A0A7AF 60%, #6F7780); }
.medal-bronze { background: radial-gradient(circle at 35% 30%, #EAB98F, #B8733E 60%, #7E4A22); }
.medal-none { background: var(--outline); }
.medal-big { flex: none; width: 112px; height: 112px; border-radius: 50%; display: grid; place-items: center; font: 700 44px/1 var(--sg); color: #fff; box-shadow: 0 14px 34px rgba(16,25,22,.22), inset 0 0 0 6px rgba(255,255,255,.35); text-shadow: 0 1px 2px rgba(0,0,0,.25); }
.medal-big.medal-none { color: var(--muted); text-shadow: none; box-shadow: inset 0 0 0 6px rgba(255,255,255,.6); }
.medal-scale { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 22px; }
.medal-step { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 16px; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.medal-step .medal { width: 28px; height: 28px; margin-bottom: 6px; }
.medal-step strong { font-family: var(--sg); }
.small-n { font-size: 20px !important; }

/* ---------- Exam overview & result ---------- */
.start-card { display: flex; gap: 24px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.ticks-dark { list-style: none; padding: 0; margin: 10px 0 0; display: grid; gap: 8px; }
.ticks-dark li { display: flex; gap: 8px; align-items: center; }
.ticks-dark .icon { color: var(--ok); }
.result { display: flex; gap: 28px; align-items: center; margin-top: 8px; }
.result h1 { margin-bottom: 8px; }
.result .lead { margin: 0; }
@media (max-width: 600px) { .result { flex-direction: column; align-items: flex-start; } }
.cert-card { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.cert-card > div:nth-child(2) { flex: 1; min-width: 240px; }
.cert-card p { margin: 4px 0 0; }
.cat-scores { display: grid; gap: 10px; }
.cat-row { display: grid; grid-template-columns: 160px 1fr 56px; gap: 14px; align-items: center; font-size: .95rem; }
.cat-row .mini-bar { margin: 0; }
.nowrap { white-space: nowrap; }
.center { text-align: center; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Taking the exam ---------- */
.exam-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; }
.exam-count { font: 600 18px/1.2 var(--sg); }
.exam-save { font: 500 13px/1 var(--sg); color: var(--muted); min-height: 16px; display: flex; align-items: center; gap: 4px; }
.exam-save.saved { color: var(--ok); }
.exam-save.error { color: var(--bad); }
.exam-bar { height: 8px; border-radius: 99px; background: var(--subtle); overflow: hidden; margin: 14px 0 22px; }
.exam-bar span { display: block; height: 100%; background: var(--lime); transition: width .3s; }
.exam-card { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-xl); padding: clamp(20px, 4vw, 36px); box-shadow: var(--sh-lg); }
.exam-meta { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.exam-q { font-size: clamp(1.25rem, 2.6vw, 1.7rem); line-height: 1.3; letter-spacing: -0.02em; margin-bottom: 20px; }
.exam-opts { border: 0; padding: 0; margin: 0; display: grid; gap: 10px; }
.exam-opt { display: flex; gap: 14px; align-items: flex-start; padding: 14px 16px; border: 1.5px solid var(--outline); border-radius: var(--r-md); cursor: pointer; background: var(--paper); transition: border-color .15s, background .15s; line-height: 1.45; }
.exam-opt:hover { border-color: var(--sage); }
.exam-opt.is-on { border-color: var(--ink); background: #F1FADF; }
.exam-opt input { position: absolute; opacity: 0; pointer-events: none; }
.exam-opt:focus-within { outline: 3px solid #B7654F; outline-offset: 2px; }
.opt-letter { flex: none; width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; font: 700 13px/1 var(--sg); background: var(--white); border: 1px solid var(--outline); }
.exam-opt.is-on .opt-letter { background: var(--ink); color: var(--lime); border-color: var(--ink); }
.exam-nav { display: flex; justify-content: space-between; gap: 10px; margin-top: 24px; }
.exam-dots { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 22px 0 10px; }
.exam-dot { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--outline); background: var(--white); font: 600 12px/1 var(--sg); cursor: pointer; color: var(--muted); }
.exam-dot.is-done { background: var(--lime); border-color: var(--lime); color: var(--ink); }
.exam-dot.is-cur { box-shadow: 0 0 0 2px var(--ink); color: var(--ink); }

/* ---------- Learner toolkit (exam + downloads) ---------- */
.toolkit { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.tool { display: flex; gap: 14px; align-items: center; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 16px 18px; }
.tool .ic { width: 44px; height: 44px; margin: 0; flex: none; }
.tool-exam .ic { background: #E6C15A; }
.tool-body { flex: 1; min-width: 0; }
.tool h3 { font-size: 1.05rem; margin: 0 0 2px; }
.tool p { margin: 0; font-size: .86rem; color: var(--muted); }
.tool.is-off .ic { background: var(--subtle); color: var(--muted); }
.tool-off { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.tool-off .btn:disabled { background: var(--subtle); color: var(--muted); opacity: 1; }

/* ---------- Admin: questions & exam review ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.chip { display: inline-flex; gap: 6px; align-items: center; font: 500 13px/1 var(--sg); padding: 7px 10px; border-radius: 999px; background: var(--subtle); text-decoration: none; color: var(--ink); }
.chip:hover { background: var(--lime); }
.stat-link { text-decoration: none; color: inherit; }
.stat-link:hover { border-color: var(--forest); }
.stat-n .medal { width: 24px; height: 24px; vertical-align: -3px; }
.import-box summary { cursor: pointer; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.import-box textarea { font-size: 13px; }
.bulk { position: sticky; top: calc(var(--topbar) + 8px); z-index: 5; display: flex; gap: 8px; align-items: center; background: var(--ink); color: var(--paper); padding: 10px 14px; border-radius: var(--r-md); margin-bottom: 10px; }
.bulk .btn-ghost { color: var(--paper); border-color: rgba(246,243,234,.3); }
.q-cell { min-width: 320px; }
.q-cell a { color: var(--ink); text-decoration: none; font-weight: 500; }
.q-cell a:hover { text-decoration: underline; }
.diff { letter-spacing: 1px; color: var(--forest); font-size: 11px; }
.diff span { color: var(--outline); }
.opts { border: 1px solid var(--outline); border-radius: var(--r-md); padding: 14px; display: grid; gap: 10px; }
.opts legend { font: 600 14px/1.3 var(--in); padding: 0 6px; }
.opt-row { display: flex; gap: 10px; align-items: center; }
.opt-row input:not([type=checkbox]) { flex: 1; }
.form .opt-right { flex-direction: row !important; align-items: center; gap: 6px !important; font-weight: 500; white-space: nowrap; }
.opt-right input { width: 18px; height: 18px; accent-color: var(--ok); }
.card-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.review { display: grid; gap: 12px; }
.review-q { background: var(--white); border: 1px solid var(--outline); border-left: 4px solid var(--outline); border-radius: var(--r-md); padding: 16px 18px; }
.review-q.ok { border-left-color: var(--ok); }
.review-q.bad { border-left-color: var(--bad); }
.review-head { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.review-res { margin-left: auto; display: inline-flex; gap: 4px; align-items: center; font: 600 13px/1 var(--sg); }
.review-q.ok .review-res { color: var(--ok); }
.review-q.bad .review-res { color: var(--bad); }
.review-opts { list-style: none; padding: 0; margin: 0 0 8px; display: grid; gap: 6px; }
.review-opts li { display: flex; gap: 10px; align-items: center; padding: 6px 8px; border-radius: 8px; }
.review-opts li.is-right { background: #E9F7CF; }
.review-opts li.is-picked:not(.is-right) { background: #FBE3DD; }
.review-opts small { margin-left: auto; font-weight: 600; color: var(--muted); }
.review-opts .ok-txt { color: var(--ok); margin-left: 8px; }

/* ---------- Verify page ---------- */
.verify-form { display: flex; gap: 8px; margin-bottom: 20px; }
.verify-form input { text-transform: uppercase; font-family: ui-monospace, monospace; }
.verify-ok { display: flex; gap: 22px; align-items: center; margin-bottom: 14px; }
.verify-ok .medal-big { width: 88px; height: 88px; font-size: 34px; }
.verify-ok h1 { margin: 8px 0 4px; }
.verify-ok p { margin: 0; }

/* Admin-only answer hint on the exam page */
.admin-hint { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; font: 600 12px/1 var(--sg); padding: 6px 10px; border-radius: 999px; background: #FDF0C7; color: #6B4E00; border: 1px dashed #C9A227; }
.admin-right { margin-left: auto; flex: none; display: inline-flex; align-items: center; gap: 4px; font: 600 11px/1 var(--sg); letter-spacing: .04em; text-transform: uppercase; color: #6B4E00; background: #FDF0C7; border: 1px dashed #C9A227; padding: 4px 8px; border-radius: 999px; }

/* Email confirmation reminder */
.verify-bar { display: flex; flex-wrap: wrap; gap: 6px 14px; justify-content: center; align-items: center; padding: 10px var(--gutter); background: #FDF0C7; color: #4A3A06; font-size: .92rem; border-bottom: 1px solid #EBD58A; }
.verify-bar span { display: inline-flex; gap: 6px; align-items: center; }
.verify-bar .linklike { font-weight: 600; }
.kv-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.kv-grid > div { background: var(--paper); border-radius: var(--r-md); padding: 12px 14px; display: flex; flex-direction: column; gap: 2px; }
.kv-grid small { color: var(--muted); font: 600 11px/1.2 var(--sg); letter-spacing: .12em; text-transform: uppercase; }
.kv-grid span { color: var(--muted); font-size: .85rem; }
.table.events td { vertical-align: top; }

/* Email error details in flash messages (debug mode only) */
.flash-details { margin-top: 8px; }
.flash-details summary { cursor: pointer; font: 600 13px/1.3 var(--sg); color: var(--lime); }
.flash-details pre { margin: 8px 0 6px; max-height: 280px; max-width: min(480px, 80vw); overflow: auto; white-space: pre-wrap; word-break: break-word; font: 12px/1.45 ui-monospace, Menlo, monospace; background: rgba(246,243,234,.08); color: var(--paper); padding: 10px; border-radius: 8px; }
.flash-details small { color: var(--sage); }
.flash-details code { background: rgba(246,243,234,.12); color: var(--paper); }

/* Confirm-before-payment wall */
.wall .lead { color: var(--forest); font-size: 1.05rem; }
.wall-box { display: flex; gap: 14px; align-items: flex-start; background: var(--paper); border-radius: var(--r-lg); padding: 18px; margin: 18px 0; }
.wall-box p { margin: 0 0 8px; }
.wall-ic { flex: none; width: 40px; height: 40px; border-radius: 12px; background: var(--lime); display: grid; place-items: center; }
.wall-status { display: flex; gap: 8px; align-items: center; font: 600 14px/1.3 var(--sg); color: var(--muted); margin: 0 !important; }
.wall-status.ok { color: var(--ok); }
.wall-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.dot-pulse { width: 10px; height: 10px; border-radius: 50%; background: var(--sage); animation: pulse 1.4s infinite ease-in-out; }
@keyframes pulse { 0%, 100% { opacity: .3; transform: scale(.8); } 50% { opacity: 1; transform: scale(1.1); } }
.resume-card { display: flex; flex-wrap: wrap; gap: 12px 20px; justify-content: space-between; align-items: center; background: #E9F7CF; border: 1px solid #C9E89A; border-radius: var(--r-lg); padding: 16px 20px; margin-bottom: 24px; }
.resume-card strong { display: inline-flex; gap: 6px; align-items: center; color: var(--ok); }

/* Recommend a friend */
.refer { display: grid; gap: 16px; }
.refer h2 { margin-bottom: 6px; }
.refer p { color: var(--muted); margin: 0; max-width: 680px; }
.refer-link { display: flex; flex-wrap: wrap; gap: 8px; }
.refer-link input { flex: 1 1 280px; font-family: ui-monospace, Menlo, monospace; font-size: 14px; background: var(--paper); }
.refer-friends { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.refer-friends li { display: flex; justify-content: space-between; gap: 10px; align-items: center; padding: 8px 12px; background: var(--paper); border-radius: var(--r-md); font-size: .92rem; }
.refer-compact { grid-template-columns: 1fr minmax(0, 520px); align-items: center; }
@media (max-width: 900px) { .refer-compact { grid-template-columns: 1fr; } }
.ref-banner { display: flex; gap: 10px; align-items: flex-start; background: #E9F7CF; border: 1px solid #C9E89A; border-radius: var(--r-md); padding: 12px 14px; margin-bottom: 18px; font-size: .95rem; }
.ref-banner .icon { color: var(--ok); flex: none; margin-top: 2px; }
form.inline { display: inline-block; margin: 0 0 0 4px; vertical-align: middle; }

/* Invitations */
.invite-row { display: grid; grid-template-columns: 1fr 1.4fr 44px; gap: 8px; align-items: center; }
@media (max-width: 600px) { .invite-row { grid-template-columns: 1fr 44px; } .invite-row input[type=email] { grid-column: 1; } }
.invite-plan { background: var(--paper); border-radius: var(--r-lg); padding: 16px 18px; margin: 6px 0 16px; }
.invite-plan > div { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.invite-plan .ticks-dark { margin-top: 10px; grid-template-columns: 1fr 1fr; }
@media (max-width: 520px) { .invite-plan .ticks-dark { grid-template-columns: 1fr; } }
.invite-msg { margin: 0 0 16px; padding: 8px 0 8px 14px; border-left: 3px solid var(--lime); font-family: var(--pf); font-style: italic; color: var(--forest); }
.stat-n small { font-size: 18px; color: var(--muted); }
.stat-link.stat-ink { color: var(--paper); } .stat-link.stat-ink:hover { border-color: var(--lime); }

/* Course page: breathing room between the hero, the exam & downloads bar and the "Recommend a friend" block */
.course-block { margin-top: clamp(28px, 4vw, 44px); }
.course-block-first { margin-top: clamp(32px, 5vw, 52px); }
.course-block + .wrap .upsell, .course-block + .wrap .paywall { margin-top: clamp(28px, 4vw, 44px); }
.course-block + .chapters, .course-block ~ .chapters { padding-top: clamp(32px, 4.5vw, 48px); }
.refer-compact { gap: 20px 28px; }
.course-block .card { padding: clamp(22px, 3.5vw, 34px); }

/* Question statistics */
.chip-pct { display: inline-block; font: 600 11px/1 var(--sg); padding: 3px 6px; border-radius: 999px; background: var(--subtle); color: var(--forest); margin-left: 4px; }
.chip-pct.pct-low { background: #FBE3DD; color: #8A3A26; }
.chip-pct.pct-mid { background: #FDF0C7; color: #6B4E00; }
.chip-pct.pct-high { background: #E9F7CF; color: #2F5A1A; }
.stat-alert { border-color: #F0C9BF; background: #FFF6F3; }
.stat span small { font-weight: 400; color: var(--muted); }
.hardest ol { margin: 6px 0 10px; padding-left: 20px; display: grid; gap: 6px; }
.hardest a { color: var(--ink); }
.exam-report { margin-top: 16px; font-size: .88rem; color: var(--muted); }
.exam-report .linklike { display: inline-flex; gap: 5px; align-items: center; color: var(--muted); }
.exam-report .linklike:hover { color: var(--ink); }
.exam-report span { display: inline-flex; gap: 5px; align-items: center; color: var(--ok); }
.report-reasons { border: 0; padding: 0; margin: 0; display: grid; gap: 8px; }
.report-list { display: grid; gap: 10px; }
.report { border: 1px solid var(--outline); border-radius: var(--r-md); padding: 12px 14px; background: var(--white); }
.report.is-open { border-left: 4px solid var(--coral); }
.report-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.report-head .badge { margin-left: auto; }
.report-comment { margin: 8px 0; font-style: italic; color: var(--forest); }
.report .actions { margin-top: 8px; display: flex; gap: 8px; }

/* Messages (learner ↔ team): a plain conversation, not a chat */
.thread { display: grid; gap: 12px; margin-top: 24px; }
.msg { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 16px 18px; max-width: 92%; }
.msg-mine { justify-self: end; background: #F1FADF; border-color: #D6EDB0; }
.msg-team { justify-self: start; }
.msg header { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; }
.msg header time { margin-left: auto; color: var(--muted); font-size: .82rem; }
.msg-body { line-height: 1.6; overflow-wrap: anywhere; }
.receipt { margin-top: 8px; font: 600 12px/1 var(--sg); color: var(--muted); text-align: right; }
.receipt.is-read { color: #2B6CB0; }
.nav-count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--coral); color: var(--ink); font: 700 11px/1 var(--sg); }
.seg { display: inline-flex; gap: 4px; background: var(--white); border: 1px solid var(--outline); border-radius: 999px; padding: 4px; flex-wrap: wrap; }
.seg a { text-decoration: none; color: var(--ink); font: 600 14px/1 var(--sg); padding: 9px 14px; border-radius: 999px; }
.seg a span { color: var(--muted); font-weight: 500; margin-left: 4px; }
.seg a.active { background: var(--ink); color: var(--paper); }
.seg a.active span { color: var(--sage); }
.inbox { display: grid; gap: 8px; }
.inbox-row { display: grid; grid-template-columns: 12px minmax(160px, 240px) 1fr auto; gap: 14px; align-items: center; padding: 14px 16px; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-md); text-decoration: none; color: var(--ink); }
.inbox-row:hover { border-color: var(--forest); }
.inbox-dot { width: 10px; height: 10px; border-radius: 50%; }
.inbox-row.is-unread .inbox-dot { background: var(--coral); }
.inbox-row.is-unread .inbox-last { font-weight: 600; color: var(--ink); }
.inbox-who { display: flex; flex-direction: column; min-width: 0; }
.inbox-who small { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inbox-last { color: var(--muted); font-size: .93rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inbox-last em { font-style: normal; color: var(--forest); }
.inbox-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.inbox-meta small { color: var(--muted); }
.inbox-meta .receipt { margin: 0; }
@media (max-width: 760px) { .inbox-row { grid-template-columns: 12px 1fr auto; } .inbox-last { grid-column: 2 / -1; white-space: normal; } }

/* ---------------------------------------------------------- languages */
.lang-menu { position: relative; }
.lang-menu summary { list-style: none; cursor: pointer; color: var(--sage); font: 600 13px/1 var(--sg); letter-spacing: .06em; padding: 10px 12px; border-radius: 999px; display: inline-flex; align-items: center; gap: 4px; }
.lang-menu summary::-webkit-details-marker { display: none; }
.lang-menu summary:hover, .lang-menu[open] summary { color: var(--paper); background: rgba(246,243,234,.07); }
.lang-list { position: absolute; right: 0; top: calc(100% + 8px); background: var(--white); border: 1px solid var(--outline); border-radius: 14px; padding: 6px; min-width: 170px; box-shadow: 0 12px 32px rgba(16,25,22,.18); z-index: 50; display: grid; }
.nav .lang-list a { color: var(--ink); border-radius: 10px; justify-content: space-between; }
.nav .lang-list a:hover, .nav .lang-list a.active { background: var(--paper); color: var(--ink); }
.footer-langs { display: flex; flex-wrap: wrap; gap: 4px 14px; width: 100%; }
.footer-langs a { color: var(--muted); text-decoration: none; }
.footer-langs a.active, .footer-langs a:hover { color: var(--ink); text-decoration: underline; }
@media (max-width: 820px) { .lang-list { position: static; box-shadow: none; margin-top: 6px; } }

/* -------------------------------------------------------- legal page */
.legal-main { padding: 0; }
.legal-hero { background: var(--ink); color: var(--paper); padding: 64px 0 56px; }
.legal-hero .overline { color: var(--sage); }
.legal-hero h1 { color: var(--paper); margin-bottom: 14px; }
.legal-hero h1 em { color: var(--lime); }
.legal-hero p { color: var(--sage); max-width: 640px; margin: 0; }
.legal-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px !important; }
.legal-meta span { font: 500 12px/1 var(--sg); letter-spacing: .04em; border: 1px solid rgba(246,243,234,.18); border-radius: 999px; padding: 8px 12px; color: var(--paper); }
.legal-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 48px; padding-top: 48px; padding-bottom: 80px; align-items: start; }
.legal-layout > * { min-width: 0; }
.legal-toc { position: sticky; top: calc(var(--topbar) + 24px); }
.legal-toc nav { display: grid; gap: 2px; }
.legal-toc-title { font: 600 11px/1 var(--sg); letter-spacing: .24em; text-transform: uppercase; color: var(--muted); margin: 0 0 12px 12px; }
.legal-toc a { display: flex; gap: 10px; align-items: baseline; padding: 9px 12px; border-radius: 10px; color: var(--ink); text-decoration: none; font: 500 14px/1.3 var(--sg); }
.legal-toc a span { font-size: 11px; color: var(--muted); letter-spacing: .06em; }
.legal-toc a:hover { background: var(--white); }
.legal-lang { font-size: .82rem; color: var(--muted); margin: 18px 12px 0; padding-top: 14px; border-top: 1px solid var(--outline); }
.legal-doc { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-xl); box-shadow: var(--sh-sm); padding: clamp(24px, 4vw, 56px); font-size: .94rem; line-height: 1.7; color: #2b3530; }
.legal-sec { position: relative; padding: 8px 0 36px; margin-bottom: 36px; border-bottom: 1px solid var(--outline); scroll-margin-top: calc(var(--topbar) + 20px); }
.legal-sec:last-of-type { border-bottom: 0; margin-bottom: 0; }
.legal-num { font: 500 13px/1 var(--sg); letter-spacing: .2em; color: var(--forest); display: inline-flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.legal-num::after { content: ""; width: 32px; height: 3px; border-radius: 2px; background: var(--lime); }
.legal-doc h2 { font-size: clamp(1.6rem, 3vw, 2.1rem); margin-bottom: 18px; color: var(--ink); }
.legal-doc h3 { font-size: 1.02rem; letter-spacing: -0.01em; margin: 28px 0 8px; color: var(--ink); }
.legal-doc p { margin: 0 0 12px; text-align: justify; hyphens: auto; }
.legal-dl { display: grid; grid-template-columns: 190px 1fr; gap: 0; margin: 16px 0 20px; border: 1px solid var(--outline); border-radius: var(--r-md); overflow: hidden; }
.legal-dl dt, .legal-dl dd { margin: 0; padding: 10px 16px; border-bottom: 1px solid var(--outline); }
.legal-dl dt { background: var(--paper); font: 600 13px/1.5 var(--sg); color: var(--muted); }
.legal-dl dt:nth-last-of-type(1), .legal-dl dd:last-of-type { border-bottom: 0; }
.legal-table { font-size: .86rem; margin: 6px 0 16px; }
.legal-table td { vertical-align: top; }
.legal-todo { background: #FDE3DB; color: var(--bad); border-radius: 4px; padding: 0 5px; font: 600 .85em/1.4 var(--sg); }
.legal-end { margin-top: 28px !important; padding-top: 20px; border-top: 1px solid var(--outline); color: var(--muted); text-align: left !important; }
.footer-legal { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: .85rem; }
.footer-legal a { color: var(--muted); text-decoration: none; }
.footer-legal a:hover { color: var(--ink); text-decoration: underline; }
@media (max-width: 900px) {
  .legal-layout { grid-template-columns: 1fr; gap: 20px; }
  .legal-toc { position: static; }
  .legal-toc nav { grid-template-columns: 1fr 1fr; }
  .legal-toc-title { grid-column: 1 / -1; }
  .legal-toc a { padding: 8px 6px; }
  .legal-dl { grid-template-columns: 1fr; }
  .legal-dl dt { border-bottom: 0; padding-bottom: 2px; }
  .legal-doc p { text-align: left; }
}
.legal-address { font-size: .74rem; color: var(--muted); text-align: left !important; margin-top: 18px !important; }

/* Admin → Course & media: language visibility */
.lang-visibility { display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-bottom: 20px; border-left: 4px solid var(--lime); }
.lang-visibility.is-off { border-left-color: var(--coral); background: #FFF8F5; }
.lang-visibility h2 { margin-bottom: 4px; }
.lang-visibility p { margin: 0; max-width: 760px; }
.lang-off { display: inline-flex; vertical-align: middle; opacity: .7; }

/* =========================================================================
   Blog (blog.php, landing "From the blog", Admin → Blog)
   ========================================================================= */
.blog-hero { background: var(--ink); color: var(--paper); padding: clamp(48px, 7vw, 88px) 0 clamp(40px, 6vw, 72px); }
.blog-hero .overline { color: var(--sage); }
.blog-hero h1 { color: var(--paper); font-size: clamp(2.4rem, 6vw, 4.4rem); line-height: 1; letter-spacing: -0.045em; max-width: 900px; }
.blog-hero h1 em { color: var(--lime); }
.blog-hero p { color: var(--sage); max-width: 620px; font-size: clamp(1.02rem, 1.5vw, 1.15rem); margin: 18px 0 0; }
.blog-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.blog-tags a { font: 500 14px/1 var(--sg); padding: 9px 14px; border-radius: 999px; text-decoration: none; color: var(--sage); border: 1px solid rgba(246,243,234,.18); }
.blog-tags a:hover { color: var(--paper); border-color: rgba(246,243,234,.45); }
.blog-tags a.active { background: var(--lime); border-color: var(--lime); color: var(--ink); }
.blog-tags-light a { color: var(--forest); border-color: var(--outline); background: var(--white); }
.blog-tags-light a:hover { color: var(--ink); border-color: var(--forest); }
.blog-list-section { padding-top: clamp(36px, 5vw, 64px); }

.blog-grid { display: grid; gap: clamp(18px, 2.4vw, 28px); grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); }
.blog-grid-3 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.blog-card { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--sh-sm); transition: transform .18s, box-shadow .18s; position: relative; }
.blog-card:hover { transform: translateY(-3px); box-shadow: var(--sh-lg); }
.blog-card-media { display: block; aspect-ratio: 16 / 9; background: var(--paper2); overflow: hidden; }
.blog-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.blog-card:hover .blog-card-media img { transform: scale(1.03); }
.blog-card-ph { width: 100%; height: 100%; display: grid; place-items: center; color: var(--forest); background: radial-gradient(circle at 30% 30%, #E4F7C2, var(--paper2) 70%); }
.blog-card-body { padding: 20px 22px 24px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.blog-card-title { font: 700 1.28rem/1.18 var(--sg); letter-spacing: -0.025em; margin: 0; }
.blog-card-title a { color: var(--ink); text-decoration: none; }
.blog-card-title a::after { content: ""; position: absolute; inset: 0; } /* whole card is clickable */
.blog-card-title a:focus-visible { outline: none; }
.blog-card:has(.blog-card-title a:focus-visible) { outline: 3px solid #B7654F; outline-offset: 2px; }
.blog-card-text { color: var(--muted); font-size: .95rem; margin: 0; }
.blog-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; font: 500 13px/1.3 var(--sg); color: var(--muted); }
.blog-tag { font: 600 11px/1 var(--sg); letter-spacing: .12em; text-transform: uppercase; color: var(--forest); background: #E9F7CF; padding: 6px 9px; border-radius: 999px; }
@media (min-width: 900px) {
  .blog-card-big { grid-column: 1 / -1; flex-direction: row; }
  .blog-card-big .blog-card-media { flex: 1.25; aspect-ratio: auto; min-height: 380px; }
  .blog-card-big .blog-card-body { flex: 1; padding: clamp(28px, 3.4vw, 48px); justify-content: center; gap: 14px; }
  .blog-card-big .blog-card-title { font-size: clamp(1.8rem, 2.8vw, 2.5rem); line-height: 1.06; letter-spacing: -0.04em; }
  .blog-card-big .blog-card-text { font-size: 1.05rem; }
}
.blog-pager { justify-content: center; margin-top: 40px; }
.blog-empty { text-align: center; padding: clamp(32px, 5vw, 56px); max-width: 620px; margin: 0 auto; }
.blog-bottom-cta { padding: clamp(40px, 6vw, 72px) 0; }

/* The course box */
.blog-cta { display: grid; grid-template-columns: auto 1fr auto; gap: 18px 22px; align-items: center; background: var(--ink); color: var(--paper); border-radius: var(--r-lg); padding: clamp(20px, 3vw, 30px); margin: 40px 0; }
.blog-cta-mark { width: 56px; height: 56px; border-radius: 16px; background: var(--lime); color: var(--ink); display: grid; place-items: center; }
.blog-cta-title { font: 700 1.2rem/1.2 var(--sg); letter-spacing: -0.02em; margin: 0 0 4px; color: var(--paper); }
.blog-cta-text p:last-child { margin: 0; color: var(--sage); font-size: .95rem; }
.blog-cta .btn { white-space: nowrap; }
@media (max-width: 720px) { .blog-cta { grid-template-columns: 1fr; } .blog-cta .btn { justify-self: start; } }
.blog-bottom-cta .blog-cta { margin: 0; }

/* One post */
.blog-preview-bar { background: #FDF0C7; color: #6B4E00; display: flex; gap: 10px; align-items: center; justify-content: center; flex-wrap: wrap; padding: 10px var(--gutter); font-size: .92rem; }
.blog-preview-bar a { font-weight: 600; color: inherit; }
.blog-article-head { padding: clamp(36px, 6vw, 72px) 0 clamp(20px, 3vw, 32px); }
.blog-crumbs { display: flex; gap: 10px; align-items: center; font: 600 14px/1 var(--sg); margin-bottom: 22px; color: var(--muted); }
.blog-crumbs a { display: inline-flex; gap: 6px; align-items: center; text-decoration: none; }
.blog-article-head h1 { font-size: clamp(2.1rem, 5vw, 3.5rem); line-height: 1.04; letter-spacing: -0.045em; margin-bottom: 18px; }
.blog-cover { margin: 0 auto clamp(28px, 4vw, 44px); max-width: 1100px; }
.blog-cover img { width: 100%; border-radius: var(--r-xl); aspect-ratio: 16 / 8.5; object-fit: cover; box-shadow: var(--sh-lg); }
.blog-body-wrap { max-width: 760px; padding-bottom: clamp(40px, 6vw, 72px); }
.blog-toc { background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-md); padding: 14px 20px; margin-bottom: 32px; }
.blog-toc summary { font: 600 13px/1.4 var(--sg); letter-spacing: .14em; text-transform: uppercase; color: var(--forest); cursor: pointer; }
.blog-toc ol { margin: 10px 0 2px; padding-left: 22px; }
.blog-toc li { margin: 4px 0; }
.blog-toc a { text-decoration: none; }
.blog-toc a:hover { text-decoration: underline; }
.blog-also { margin-top: 18px; }
.blog-also a { margin-left: 8px; }
.blog-related { padding: clamp(44px, 6vw, 80px) 0; }
.blog-home-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
.blog-home-head h2 { margin: 0; }

/* Article text */
.prose { font-size: 1.08rem; line-height: 1.75; color: #232d28; }
.prose > :first-child { margin-top: 0; }
.prose p { margin: 0 0 1.15em; }
.prose h2 { font-size: clamp(1.55rem, 3vw, 2rem); margin: 1.9em 0 .55em; scroll-margin-top: calc(var(--topbar) + 20px); }
.prose h3 { font-size: 1.3rem; margin: 1.6em 0 .45em; scroll-margin-top: calc(var(--topbar) + 20px); }
.prose h4 { font: 600 1.05rem/1.3 var(--sg); margin: 1.4em 0 .4em; }
.prose a { color: var(--forest); font-weight: 500; text-decoration-color: var(--lime-d); text-decoration-thickness: 2px; }
.prose a:hover { color: var(--ink); background: #E9F7CF; }
.prose ul, .prose ol { margin: 0 0 1.2em; padding-left: 1.4em; }
.prose li { margin: .35em 0; }
.prose ul li::marker { color: var(--forest); }
.prose ol li::marker { font: 700 .95em var(--sg); color: var(--forest); }
.prose blockquote { margin: 1.6em 0; padding: 4px 0 4px 22px; border-left: 4px solid var(--lime); font: italic 500 1.25rem/1.5 var(--pf); color: var(--forest); }
.prose blockquote p:last-child { margin: 0; }
.prose figure { margin: 2em 0; }
.prose img { border-radius: var(--r-md); }
.prose figcaption { font-size: .88rem; color: var(--muted); margin-top: 8px; text-align: center; }
.prose hr { border: 0; height: 1px; background: var(--outline); margin: 2.4em 0; }
.prose pre { background: var(--ink); color: var(--paper); padding: 16px 18px; border-radius: var(--r-md); overflow-x: auto; font-size: .9rem; }
.prose pre code { background: none; padding: 0; color: inherit; }
.table-scroll { overflow-x: auto; margin: 1.6em 0; border: 1px solid var(--outline); border-radius: var(--r-md); background: var(--white); }
.prose table { width: 100%; border-collapse: collapse; font-size: .96rem; line-height: 1.5; }
.prose th { font: 600 12px/1.2 var(--sg); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); text-align: left; padding: 12px 14px; background: var(--paper); border-bottom: 1px solid var(--outline); }
.prose td { padding: 10px 14px; border-top: 1px solid var(--outline); }
.prose tbody tr:first-child td { border-top: 0; }

/* Admin → Blog */
.txt-warn { color: var(--warn); font-weight: 600; }
.blog-queue { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); }
.blog-queue .stat { padding: 16px 18px; }
.blog-queue .stat-n { font-size: 30px; }
.blog-queue .stat.is-active { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.blog-queue-lang { font: 600 12px/1 var(--sg); letter-spacing: .14em; text-transform: uppercase; color: var(--forest); margin-bottom: 6px; }
.blog-cal { display: grid; gap: 8px; grid-template-columns: repeat(7, minmax(0, 1fr)); }
@media (max-width: 900px) { .blog-cal { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.blog-cal-day { min-height: 82px; border: 1px dashed var(--outline); border-radius: var(--r-md); padding: 10px; display: flex; flex-direction: column; gap: 6px; font-size: .84rem; background: var(--paper); }
.blog-cal-day.has-post { border-style: solid; background: #F4FBE6; border-color: #CFE9A1; }
.blog-cal-day.is-today { box-shadow: inset 0 0 0 2px var(--ink); }
.blog-cal-date { font: 600 12px/1 var(--sg); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.blog-cal-day a { color: var(--ink); text-decoration: none; line-height: 1.3; }
.blog-cal-day a:hover { text-decoration: underline; }
.blog-cal-add { color: var(--muted) !important; display: inline-flex; gap: 4px; align-items: center; margin-top: auto; opacity: .75; }
.blog-cal-day:hover .blog-cal-add { opacity: 1; }
.lang-pill { display: inline-block; font: 600 10px/1 var(--sg); padding: 5px 6px; border-radius: 6px; margin-right: 3px; text-decoration: none; background: var(--subtle); color: var(--forest); }
.lang-pill.is-live { background: var(--lime); color: var(--ink); }
.lang-pill.is-missing { background: transparent; color: #B9C2BA; border: 1px dashed var(--outline); padding: 4px 5px; }
.blog-admin-empty { text-align: center; padding: 48px 24px; }
.blog-admin-empty p { max-width: 560px; margin: 0 auto 18px; }

.editor-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 22px; align-items: start; }
@media (max-width: 1020px) { .editor-grid { grid-template-columns: 1fr; } }
.editor-side { position: sticky; top: calc(var(--topbar) + 16px); }
@media (max-width: 1020px) { .editor-side { position: static; } }
.input-title { font: 700 1.35rem/1.25 var(--sg) !important; letter-spacing: -0.02em; }
.slug-field { display: flex; align-items: stretch; border: 1px solid var(--outline); border-radius: var(--r-sm); overflow: hidden; background: var(--white); }
.slug-field:focus-within { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(201,242,112,.6); }
.slug-base { font: 400 13px/1 ui-monospace, Menlo, monospace; color: var(--muted); background: var(--subtle); padding: 0 10px; display: flex; align-items: center; white-space: nowrap; max-width: 55%; overflow: hidden; }
.slug-field input { border: 0 !important; box-shadow: none !important; font-family: ui-monospace, Menlo, monospace; font-size: 14px; min-width: 0; flex: 1; }
.editor-tabs { display: flex; gap: 4px; align-items: center; border-bottom: 1px solid var(--outline); margin-bottom: -6px; }
.editor-tabs button { border: 0; background: none; font: 600 14px/1 var(--sg); padding: 10px 14px; border-radius: 10px 10px 0 0; cursor: pointer; color: var(--muted); }
.editor-tabs button.active { background: var(--subtle); color: var(--ink); }
.editor-count { margin-left: auto; }
.editor-body { font: 400 15px/1.65 ui-monospace, SFMono-Regular, Menlo, monospace !important; min-height: 460px; resize: vertical; }
.editor-preview { min-height: 460px; border: 1px solid var(--outline); border-radius: var(--r-sm); padding: 20px 24px; background: var(--white); font-size: 1rem; }
.editor-under { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
.md-help summary { cursor: pointer; font-weight: 600; font-size: .9rem; color: var(--forest); }
.md-help .table { margin-top: 8px; font-weight: 400; }
.md-help .table td { padding: 6px 8px; }
.editor-img-btn { cursor: pointer; flex-direction: row !important; font: 600 14px/1.2 var(--sg) !important; }
.editor-img-btn.is-busy { opacity: .6; pointer-events: none; }
.counter { align-self: flex-end; font-weight: 500; }
.serp { border: 1px solid var(--outline); border-radius: var(--r-md); padding: 14px 16px; background: var(--white); font-family: Arial, sans-serif; }
.serp-url { font-size: 12px; color: #4d5156; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.serp-title { font-size: 19px; line-height: 1.3; color: #1a0dab; margin: 2px 0 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.serp-desc { font-size: 13px; line-height: 1.5; color: #4d5156; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cover-now { display: flex; gap: 12px; align-items: center; font-weight: 400; }
.cover-now img { width: 120px; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 8px; }
.seg-2 { display: flex; }
.seg label { flex: 1; text-align: center; cursor: pointer; font: 600 14px/1 var(--sg) !important; padding: 10px 14px; border-radius: 999px; display: block !important; color: var(--ink); }
.seg label input { position: absolute; opacity: 0; pointer-events: none; }
.seg label.active { background: var(--ink); color: var(--paper); }
.seg label:has(input:focus-visible) { outline: 3px solid #B7654F; outline-offset: 2px; }
.publish-hint { margin: 0; font-size: .9rem; color: var(--forest); font-weight: 500; }
.editor-publish .actions .btn { flex: 1; }
.seo-checks { list-style: none; padding: 0; margin: 10px 0 12px; display: flex; flex-direction: column; gap: 8px; font-size: .9rem; }
.seo-checks li { display: flex; gap: 8px; align-items: flex-start; line-height: 1.4; }
.seo-checks li .icon { margin-top: 2px; }
.seo-checks li.ok { color: var(--ok); }
.seo-checks li.todo { color: var(--warn); }
.tr-list { list-style: none; padding: 0; margin: 8px 0 12px; }
.tr-list li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-top: 1px solid var(--outline); font-size: .93rem; }
.tr-list li:first-child { border-top: 0; }
.tr-list .linklike { display: inline-flex; gap: 4px; align-items: center; font-weight: 600; color: var(--forest); text-decoration: none; }
.img-list { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 8px; }
.img-item img { aspect-ratio: 4 / 3; object-fit: cover; border-radius: 8px; width: 100%; }
.img-item .actions { margin-top: 4px; justify-content: space-between; }


/* ================= Partner portal (partner/*.php, register/checkout code field, QR cards) ================= */
.chip-on { background: var(--ink); color: var(--lime); }
.chip-on:hover { background: var(--forest); color: var(--lime); }
.h-sub { font-family: var(--pf); font-style: italic; font-weight: 500; font-size: .6em; letter-spacing: 0; }
.partner-banner { background: #F6E9E6; border-color: #E6C6C1; }
.partner-banner .icon { color: #B86568; }
.code-field { border: 1px dashed var(--outline); border-radius: var(--r-md); padding: 10px 14px; background: var(--white); }
.code-field summary { cursor: pointer; font: 600 14px/1.3 var(--in); color: var(--forest); }
.code-field[open] summary { margin-bottom: 10px; }
.code-field p { margin: 8px 0 0; }
.code-inline { max-width: 560px; margin: 0 auto 26px; }
.code-inline .toolbar-form input { text-transform: uppercase; }
.plan-was { font-size: .5em; color: var(--muted); font-weight: 500; margin-right: 4px; }
.mini-progress { width: 84px; height: 6px; border-radius: 6px; background: var(--subtle); overflow: hidden; margin-bottom: 4px; }
.mini-progress span { display: block; height: 100%; background: var(--lime-d); border-radius: 6px; }
.students td { vertical-align: top; }
.note-form input { min-width: 150px; font-size: 13px; padding: 7px 10px; }
.invite-card textarea { font-size: 14px; }
.kit-link { width: 100%; font-size: 15px; font-weight: 600; }
.code-pill { display: inline-flex; align-items: center; gap: 10px; padding: 8px 8px 8px 20px; border-radius: 999px; background: var(--ink); color: var(--lime); font: 700 24px/1 var(--sg); letter-spacing: .12em; }
.code-pill .btn { color: var(--paper); border-color: rgba(255,255,255,.25); }
.kit-qr { display: grid; gap: 28px; grid-template-columns: minmax(0, auto) minmax(260px, 1fr); align-items: start; }
.kit-qr-preview { overflow-x: auto; }
.kit-qr-preview .pcard { transform-origin: top left; box-shadow: var(--sh-lg); }
.kit-qr-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.kit-qr-actions p { margin: 0 0 12px; }
.kit-captions { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.kit-captions textarea, #kit-body { width: 100%; font-size: 14px; line-height: 1.55; }
@media (max-width: 760px) { .kit-qr { grid-template-columns: 1fr; } }

/* --- The QR card. Sizes in inches/points so it prints at the exact size. --u scales the postcard. --- */
.pcard { --u: 1pt; width: 3.5in; height: 2in; display: grid; grid-template-columns: 1fr 1.16in; gap: .12in; padding: .16in .16in .14in .2in;
  border-radius: 6px; overflow: hidden; position: relative; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.pcard-postcard { --u: 1.72pt; width: 6in; height: 4in; grid-template-columns: 1fr 2.1in; gap: .24in; padding: .38in .34in .32in .42in; }
.pcard-copy { display: flex; flex-direction: column; min-width: 0; }
.pcard-over { font: 600 calc(var(--u) * 5.2)/1.25 'DM Sans', var(--in); letter-spacing: .16em; }
.pcard-over span { font-weight: 400; }
.pcard-title { margin-top: calc(var(--u) * 7); font: 600 calc(var(--u) * 15.5)/1 'Cormorant Garamond', Georgia, serif; letter-spacing: -.005em; }
.pcard-title em { display: block; font-style: italic; }
.pcard-text { margin: calc(var(--u) * 5) 0 0; font: 400 calc(var(--u) * 6.3)/1.35 'DM Sans', var(--in); }
.pcard-code { margin-top: auto; align-self: flex-start; max-width: 100%; font: 500 calc(var(--u) * 6.2)/1.25 'DM Sans', var(--in); letter-spacing: .03em; padding: calc(var(--u) * 3.5) calc(var(--u) * 7); border-radius: calc(var(--u) * 9); }
.pcard-code strong { letter-spacing: .12em; font-weight: 600; }
.pcard-qr { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.pcard-qr-box { width: 100%; aspect-ratio: 1; padding: calc(var(--u) * 3); border-radius: 4px; background: #fff; }
.pcard-qr-box svg { display: block; width: 100%; height: 100%; }
.pcard-scan { margin-top: calc(var(--u) * 4); font: 600 calc(var(--u) * 5.4)/1.2 'DM Sans', var(--in); letter-spacing: .12em; text-transform: uppercase; }
.pcard-url { font: 400 calc(var(--u) * 5)/1.25 'DM Sans', var(--in); opacity: .8; overflow-wrap: normal; word-break: normal; }
/* light — editorial cream & rose (echoes a partner's own style) */
.pcard-editorial { background: #FAF7F2; color: #28231F; border: 1px solid #E8DFD3; }
.pcard-editorial::after { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: calc(var(--u) * 3); background: #B86568; }
.pcard-editorial .pcard-over { color: #754357; }
.pcard-editorial .pcard-title em { color: #B86568; }
.pcard-editorial .pcard-code { border: 1px solid #B86568; color: #3E2433; }
.pcard-editorial .pcard-scan { color: #754357; }
/* dark — SHAKR ink & lime */
.pcard-ink { background: #101916; color: #F6F3EA; }
.pcard-ink .pcard-over { color: #A9B7AB; }
.pcard-ink .pcard-title { font-family: 'Space Grotesk', var(--sg); font-weight: 700; letter-spacing: -.03em; font-size: calc(var(--u) * 14); }
.pcard-ink .pcard-title em { font-family: 'Playfair Display', var(--pf); font-weight: 500; color: #C9F270; letter-spacing: 0; }
.pcard-ink .pcard-code { background: #C9F270; color: #101916; }
.pcard-ink .pcard-scan { color: #C9F270; }

/* --- Print sheet (partner/qr-card.php) --- */
body.print-sheet { background: #E9E6DD; }
.print-bar { position: sticky; top: 0; z-index: 5; display: flex; gap: 14px; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 12px var(--gutter); background: var(--ink); color: var(--paper); font-size: 14px; }
.print-bar .btn-ghost { color: var(--paper); border-color: rgba(255,255,255,.3); }
.sheet { margin: 28px auto; background: #fff; box-shadow: var(--sh-lg); display: grid; justify-content: center; align-content: start; }
.sheet-card { width: 8.5in; min-height: 11in; padding: .5in 0; grid-template-columns: repeat(2, 3.5in); grid-auto-rows: 2in; }
.sheet-postcard { width: 8.5in; min-height: 11in; padding: 1in 0; grid-template-columns: 6in; grid-auto-rows: 4in; row-gap: .5in; }
.sheet .pcard { border-radius: 0; border: 0; outline: .5pt dashed #c9c4ba; outline-offset: 0; }
@media print {
  @page { size: auto; margin: 0; }
  body.print-sheet { background: #fff; }
  .print-bar { display: none; }
  .sheet { margin: 0 auto; box-shadow: none; }
}
@media screen and (max-width: 900px) { .sheet { transform: scale(.5); transform-origin: top center; margin-bottom: -5.5in; } }

/* ---------- Promo codes (checkout, account, admin) ---------- */
.promo-box { max-width: 720px; margin: 0 auto 30px; background: var(--white); border: 1px solid var(--outline); border-radius: var(--r-lg); padding: 18px 20px; box-shadow: var(--sh-sm); }
.promo-box-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; font-family: var(--sg); }
.promo-box-head .icon { color: var(--forest); }
.promo-form { margin: 0; }
.promo-form input { flex: 1; max-width: none; text-transform: uppercase; letter-spacing: .08em; }
.promo-box p { margin: 10px 0 0; }
.promo-applied { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px 12px; margin-bottom: 12px; border-radius: var(--r-md); background: #E9F7CF; border: 1px solid #C9E89A; }
.promo-chip { font: 700 14px/1 var(--sg); letter-spacing: .12em; padding: 7px 11px; border-radius: 999px; background: var(--ink); color: var(--lime); }
.promo-table td { vertical-align: top; }
.promo-edit { margin-top: 10px; text-align: left; min-width: 320px; }

/* ---------- Free plan offer: guided banner + celebration (inc/promo.php) ---------- */
.offer-bar { background: linear-gradient(90deg, #E9F7CF, #F4FBE6); border-bottom: 1px solid #C9E89A; color: var(--ink); }
.offer-bar.offer-ready { background: linear-gradient(90deg, #C9F270, #DDF79E); border-bottom-color: #B5E05A; }
.offer-inner { max-width: 1240px; margin: 0 auto; padding: 14px var(--gutter); display: grid; grid-template-columns: auto 1fr auto auto; gap: 14px 22px; align-items: center; }
.offer-gift { width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center; background: var(--white); color: var(--forest); box-shadow: var(--sh-sm); }
.offer-ready .offer-gift { background: var(--ink); color: var(--lime); animation: offer-pulse 2.2s ease-in-out infinite; }
.offer-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: .93rem; }
.offer-text strong { font: 600 1.05rem/1.25 var(--sg); letter-spacing: -.01em; }
.offer-text span { color: var(--muted); }
.offer-ready .offer-text span { color: var(--forest); }
.offer-kicker { font: 600 11px/1 var(--sg); letter-spacing: .2em; text-transform: uppercase; color: var(--forest); margin-bottom: 4px; }
.offer-ready .offer-kicker { color: var(--forest); }
.offer-steps { display: flex; gap: 6px; margin: 0; padding: 0; list-style: none; font: 600 12.5px/1 var(--sg); }
.offer-steps li { display: inline-flex; align-items: center; gap: 7px; padding: 7px 11px 7px 7px; border-radius: 999px; background: rgba(16,25,22,.06); color: var(--muted); white-space: nowrap; }
.offer-steps li span { width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; background: var(--white); color: var(--muted); font-size: 11px; }
.offer-steps li.now { background: var(--ink); color: var(--lime); }
.offer-steps li.now span { background: var(--lime); color: var(--ink); }
.offer-steps li.done { color: var(--ok); }
.offer-ready .offer-steps li { background: rgba(16,25,22,.08); color: var(--forest); }
.offer-ready .offer-steps li.done span { background: var(--ok); color: #fff; }
.offer-ready .offer-steps li.now { background: var(--ink); color: var(--lime); }
.offer-ready .offer-steps li.now span { background: var(--lime); color: var(--ink); }
.offer-action form { margin: 0; }
.offer-btn { background: var(--ink); color: var(--lime); box-shadow: 0 0 0 0 rgba(16,25,22,.45); animation: offer-glow 2.2s ease-out infinite; white-space: nowrap; }
.offer-btn:hover { background: var(--forest); color: var(--lime); }
@keyframes offer-pulse { 50% { transform: scale(1.07) rotate(-4deg); } }
@keyframes offer-glow { 0% { box-shadow: 0 0 0 0 rgba(16,25,22,.4); } 70%, 100% { box-shadow: 0 0 0 14px rgba(16,25,22,0); } }
@media (max-width: 980px) {
  .offer-inner { grid-template-columns: auto 1fr; }
  .offer-steps { grid-column: 1 / -1; flex-wrap: wrap; }
  .offer-action { grid-column: 1 / -1; }
  .offer-btn { width: 100%; }
}

.celebrate { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 16px; background: rgba(16,25,22,.62); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); overflow: hidden; }
.celebrate-card { position: relative; z-index: 1; width: min(520px, 100%); max-height: calc(100vh - 32px); overflow: auto; background: var(--white); border-radius: var(--r-xl); padding: clamp(26px, 5vw, 40px); text-align: left; box-shadow: var(--sh-lg); animation: celebrate-in .5s cubic-bezier(.2,1.4,.4,1) both; }
.celebrate-card h2 { margin-top: 4px; }
.celebrate-badge { width: 84px; height: 84px; border-radius: 50%; display: grid; place-items: center; margin-bottom: 18px; background: var(--lime); color: var(--ink); box-shadow: 0 0 0 10px rgba(201,242,112,.25); animation: offer-pulse 2.4s ease-in-out .5s infinite; }
.celebrate-list { list-style: none; margin: 4px 0 24px; padding: 0; display: grid; gap: 10px; }
.celebrate-list li { display: flex; gap: 10px; align-items: flex-start; }
.celebrate-list .icon { color: var(--ok); flex: none; margin-top: 2px; }
.celebrate-list small { display: block; }
.confetti i { position: absolute; top: -12px; left: var(--x); width: 9px; height: 14px; border-radius: 2px; background: var(--c); opacity: .95; animation: confetti-fall 2.8s cubic-bezier(.25,.6,.4,1) var(--d) both; }
.confetti i:nth-child(3n) { width: 7px; height: 7px; border-radius: 50%; }
@keyframes confetti-fall { 0% { transform: translateY(0) rotate(0); } 100% { transform: translateY(105vh) rotate(var(--r)); opacity: .9; } }
@keyframes celebrate-in { from { transform: translateY(24px) scale(.94); opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .offer-ready .offer-gift, .offer-btn, .celebrate-badge, .celebrate-card { animation: none; }
  .confetti { display: none; }
}
/* keep toasts clear of the offer banner */
body:has(.offer-bar) .flashes { top: calc(var(--topbar) + 132px); }
@media (max-width: 980px) { body:has(.offer-bar) .flashes { top: auto; bottom: 12px; } }
.promo-extras { max-width: 760px; margin: 0 auto 18px; }
.extra-price s { font-size: .6em; font-weight: 500; margin-right: 4px; }
.upsell-list s { font-weight: 400; margin-right: 3px; }

/* ---------- Admin → Write email (admin/write-email.php) ---------- */
.mail-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 20px; align-items: start; }
.mail-from { font-size: 14px; padding: 10px 12px; border-radius: var(--r-md); background: var(--subtle); }
.mail-more summary { cursor: pointer; font: 600 13px/1 var(--in); color: var(--forest); }
.mail-more[open] summary { margin-bottom: 10px; }
.mail-body { font: 15px/1.5 Aptos, Calibri, 'Segoe UI', Arial, sans-serif; min-height: 320px; }
.mail-preview { padding: 0; overflow: hidden; }
.mail-preview-head { padding: 14px 18px; border-bottom: 1px solid var(--outline); background: #FAFAF8; }
.mail-preview-meta { margin-top: 6px; }
.mail-frame { display: block; width: 100%; height: 460px; border: 0; background: #fff; }
@media (max-width: 980px) { .mail-grid { grid-template-columns: 1fr; } }

/* ---------- LinkedIn (certificates, inc/linkedin.php) ---------- */
.btn-linkedin { background: #0A66C2; color: #fff; border-color: #0A66C2; }
.btn-linkedin:hover { background: #004182; color: #fff; }
.linkedin-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 14px; }
.linkedin-actions p { flex-basis: 100%; margin: 0; }
