:root{
  --pf-radius: 14px;
  --pf-maxw: 1180px;
  --pf-font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Inter, Arial, sans-serif;
  --pf-shadow: 0 8px 30px rgba(0,0,0,.18);
}
/* default theme = purple */
html{
  --pf-brand-50: #f5f0ff;
  --pf-brand-100: #ede0ff;
  --pf-brand-200: #dcc7ff;
  --pf-brand-300: #c29eff;
  --pf-brand-400: #a16eff;
  --pf-brand-500: #8b42ff;
  --pf-brand-600: #7c2dff;
  --pf-brand-700: #6b1ae6;
  --pf-brand-800: #5a15c2;
  --pf-brand-900: #4a129e;
  --pf-brand-950: #2d0660;
}
html[data-theme="purple"]{
  --pf-brand-50: #f5f0ff;
  --pf-brand-100: #ede0ff;
  --pf-brand-200: #dcc7ff;
  --pf-brand-300: #c29eff;
  --pf-brand-400: #a16eff;
  --pf-brand-500: #8b42ff;
  --pf-brand-600: #7c2dff;
  --pf-brand-700: #6b1ae6;
  --pf-brand-800: #5a15c2;
  --pf-brand-900: #4a129e;
  --pf-brand-950: #2d0660;
}
html[data-theme="green"]{
  --pf-brand-50: #ecfdf5;
  --pf-brand-100: #d1fae5;
  --pf-brand-200: #a7f3d0;
  --pf-brand-300: #6ee7b7;
  --pf-brand-400: #34d399;
  --pf-brand-500: #059669;
  --pf-brand-600: #047857;
  --pf-brand-700: #065f46;
  --pf-brand-800: #064e3b;
  --pf-brand-900: #022c22;
  --pf-brand-950: #0a1f1a;
}
html[data-theme="blue"]{
  --pf-brand-50: #f0f9ff;
  --pf-brand-100: #e0f2fe;
  --pf-brand-200: #bae6fd;
  --pf-brand-300: #7dd3fc;
  --pf-brand-400: #38bdf8;
  --pf-brand-500: #0ea5e9;
  --pf-brand-600: #0284c7;
  --pf-brand-700: #0369a1;
  --pf-brand-800: #075985;
  --pf-brand-900: #0c4a6e;
  --pf-brand-950: #082f49;
}
html[data-theme="red"]{
  --pf-brand-50: #fef2f2;
  --pf-brand-100: #fee2e2;
  --pf-brand-200: #fecaca;
  --pf-brand-300: #fca5a5;
  --pf-brand-400: #f87171;
  --pf-brand-500: #dc2626;
  --pf-brand-600: #b91c1c;
  --pf-brand-700: #991b1b;
  --pf-brand-800: #7f1d1d;
  --pf-brand-900: #450a0a;
  --pf-brand-950: #2d0a0a;
}

/* ---- light/dark surfaces derived from brand scale ---- */
:root{
  --pf-bg: var(--pf-brand-950);
  --pf-bg-soft: var(--pf-brand-900);
  --pf-surface: rgba(255,255,255,.04);
  --pf-surface-2: rgba(255,255,255,.06);
  --pf-border: rgba(255,255,255,.10);
  --pf-text: #f4f1fb;
  --pf-text-muted: rgba(244,241,251,.66);
  --pf-accent: var(--pf-brand-400);
  --pf-accent-strong: var(--pf-brand-500);
}
@media (prefers-color-scheme: light){
  :root{
    --pf-bg: var(--pf-brand-50);
    --pf-bg-soft: #fff;
    --pf-surface: #ffffff;
    --pf-surface-2: var(--pf-brand-50);
    --pf-border: var(--pf-brand-200);
    --pf-text: var(--pf-brand-950);
    --pf-text-muted: color-mix(in srgb, var(--pf-brand-950) 60%, transparent);
    --pf-accent: var(--pf-brand-600);
    --pf-accent-strong: var(--pf-brand-700);
  }
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--pf-font);
  color:var(--pf-text);
  background:
    radial-gradient(1200px 600px at 50% -10%, color-mix(in srgb,var(--pf-brand-500) 22%, transparent), transparent 60%),
    var(--pf-bg);
  min-height:100dvh;line-height:1.55;-webkit-font-smoothing:antialiased;
  overflow-x:clip; /* no accidental horizontal scroll on mobile (clip keeps sticky header working) */
}
a{color:inherit;text-decoration:none}
img{max-width:100%;height:auto;display:block}
.wrap{max-width:var(--pf-maxw);margin:0 auto;padding:0 20px}

/* header */
.site-h{position:sticky;top:0;z-index:30;backdrop-filter:blur(10px);
  background:color-mix(in srgb,var(--pf-bg) 78%, transparent);border-bottom:1px solid var(--pf-border)}
.site-h .wrap{display:flex;align-items:center;gap:18px;height:62px}
.brand{font-weight:800;font-size:20px;letter-spacing:-.02em;display:flex;align-items:center;gap:9px}
.brand .dot{width:13px;height:13px;border-radius:4px;background:linear-gradient(135deg,var(--pf-brand-400),var(--pf-brand-600));box-shadow:0 0 14px color-mix(in srgb,var(--pf-brand-500) 70%,transparent)}
.nav{display:flex;gap:20px;margin-left:auto;font-size:15px;font-weight:600;color:var(--pf-text)}
.nav a{opacity:.82}
.nav a:hover{opacity:1;color:var(--pf-accent)}

/* hero */
.hero{padding:64px 0 30px;text-align:center}
.hero h1{font-size:clamp(2rem,5vw,3.6rem);line-height:1.05;font-weight:900;letter-spacing:-.03em;margin:0 0 14px}
.hero p{font-size:clamp(1rem,2vw,1.25rem);color:var(--pf-text-muted);max-width:620px;margin:0 auto}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:999px;font-weight:700;
  background:linear-gradient(135deg,var(--pf-brand-500),var(--pf-brand-700));color:#fff;
  box-shadow:0 6px 22px color-mix(in srgb,var(--pf-brand-600) 45%,transparent);border:0;cursor:pointer}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:var(--pf-surface);border:1px solid var(--pf-border);color:var(--pf-text);box-shadow:none}

/* sections */
.section{padding-top:34px;padding-bottom:34px} /* vertical only — keep .wrap's horizontal padding on .section.wrap */
.section h2{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;margin:0 0 18px}
.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;color:var(--pf-accent);font-weight:700}

/* grid + cards */
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.card{background:var(--pf-surface);border:1px solid var(--pf-border);border-radius:var(--pf-radius);overflow:hidden;
  transition:transform .15s ease, border-color .15s ease}
.card:hover{transform:translateY(-3px);border-color:var(--pf-accent)}
.card .thumb{aspect-ratio:1/1;background:var(--pf-surface-2);overflow:hidden}
.card .thumb img{width:100%;height:100%;object-fit:cover}
/* article cards: landscape 3:2 thumbs (match hero images, no square crop) + wider grid */
.grid-articles{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.card.acard .thumb{aspect-ratio:3/2}
.card .meta{padding:11px 13px 14px}
.card .meta .t{font-weight:700;font-size:.95rem;line-height:1.25;margin:0 0 4px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .meta .c{font-size:.78rem;color:var(--pf-text);opacity:.82}

/* category chips */
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{padding:8px 15px;border-radius:999px;background:var(--pf-surface);border:1px solid var(--pf-border);
  font-size:.88rem;font-weight:600}
.chip:hover{border-color:var(--pf-accent);color:var(--pf-accent)}

/* puzzle detail */
.detail{display:grid;grid-template-columns:1.1fr 1fr;gap:34px;padding:34px 0;align-items:start}
@media(max-width:780px){.detail{grid-template-columns:1fr}}
.detail .pic{border-radius:18px;overflow:hidden;border:1px solid var(--pf-border);box-shadow:var(--pf-shadow)}
.detail h1{font-size:clamp(1.6rem,4vw,2.4rem);font-weight:900;letter-spacing:-.02em;margin:.2em 0 .4em}
.detail .desc{color:var(--pf-text-muted)}
.pieces{display:flex;flex-wrap:wrap;gap:9px;margin:18px 0}
.pieces a{padding:8px 14px;border-radius:10px;background:var(--pf-surface);border:1px solid var(--pf-border);font-weight:600;font-size:.9rem}
.pieces a:hover{border-color:var(--pf-accent)}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;align-items:center}
.tags a,.tags span{font-size:.82rem;line-height:1}
.tags a{color:var(--pf-accent);font-weight:600;padding:5px 10px;border:1px solid var(--pf-border);border-radius:999px}
.tags a:hover{border-color:var(--pf-accent);background:var(--pf-surface)}
.tags span{color:var(--pf-text-muted);opacity:.5}

/* footer */
.site-f{margin-top:50px;border-top:1px solid var(--pf-border);padding:30px 0;color:var(--pf-text-muted);font-size:.85rem}
.site-f .wrap{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between}
.site-f a:hover{color:var(--pf-text)}

/* breadcrumbs */
.crumbs{padding-top:18px;font-size:.85rem;color:var(--pf-text-muted);display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.crumbs a:hover{color:var(--pf-accent)}
.crumbs .sep{opacity:.5}
.crumbs [aria-current]{color:var(--pf-text);font-weight:600;max-width:60ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* home hero (interactive) */
.hero-wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:34px;align-items:center;padding:56px 0 28px}
.hero-copy h1{font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.05;font-weight:900;letter-spacing:-.03em;margin:.1em 0 .35em}
.hero-copy p{font-size:clamp(1rem,1.8vw,1.18rem);color:var(--pf-text-muted);max-width:48ch}
#hero-puzzle{min-height:300px;touch-action:none;max-width:480px;width:100%;margin:0 auto;overflow:clip}
@media(max-width:760px){
  .hero-wrap{grid-template-columns:1fr;gap:18px;padding:34px 0 18px;text-align:center}
  .hero-copy p{margin-left:auto;margin-right:auto}
  #hero-puzzle{order:-1}
}

/* category icons (inline SVG from FA Pro) */
.cat-ic{width:1em;height:1em;vertical-align:-.13em;margin-right:.5em;color:var(--pf-accent);flex:0 0 auto}
.chip .cat-ic{margin-right:.4em}
.card .meta .t .cat-ic{color:var(--pf-accent)}
.cat-ic-lg .cat-ic{width:1.1em;height:1.1em;margin:0;color:var(--pf-accent)}
.cat-ic-lg{display:inline-flex;width:54px;height:54px;align-items:center;justify-content:center;border-radius:14px;
  background:var(--pf-surface);border:1px solid var(--pf-border);font-size:26px;flex:0 0 auto}

/* ============ /play engine (adopted from EasyPuzzle) ============ */
/* token bridge: engine CSS + getComputedStyle('--line') use these names */
:root{
  --paper: var(--pf-bg); --surface: var(--pf-surface); --surface-2: var(--pf-surface-2);
  --text: var(--pf-text); --text-2: var(--pf-text-muted);
  --line: color-mix(in srgb, var(--pf-text) 7%, transparent); --line-2: color-mix(in srgb, var(--pf-text) 36%, transparent);
  --serif: var(--pf-font); --ui: var(--pf-font);
  --sh-md: 0 6px 22px rgba(0,0,0,.18); --sh-lg: var(--pf-shadow);
  --accent: var(--pf-accent); --accent-ink:#fff;
}
body:has(.play-stage) .site-h, body:has(.play-stage) .site-f { display:none }
.play-stage{position:fixed;inset:0;background:var(--paper);overflow:hidden;touch-action:none}
#board{display:block;width:100%;height:100%;cursor:grab}
#board:active{cursor:grabbing}
.play-hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:14px 20px;z-index:2;pointer-events:none}
.play-hud>*{pointer-events:auto}
.play-hud-back{width:44px;height:44px;flex-shrink:0;border-radius:999px;background:var(--surface);color:var(--text);display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-md),inset 0 0 0 1px var(--line);transition:transform .12s,background .15s}
.play-hud-back:hover{transform:translateX(-2px)}
.play-hud-title-block{flex:1;min-width:0}
.play-hud-title{font-weight:800;font-size:17px;color:var(--text);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.play-hud-sub{font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.play-hud-actions{display:flex;gap:8px}
.play-hud-pill{display:inline-flex;align-items:center;background:var(--surface);border-radius:999px;box-shadow:var(--sh-md),inset 0 0 0 1px var(--line);padding:4px;gap:2px}
.play-hud-pill-item{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:transparent;border:none;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;font-variant-numeric:tabular-nums}
.play-hud-pill-item:hover{background:var(--surface-2)}
.play-hud-pill-item:not(button){cursor:default}
@media(max-width:767px){.play-hud-pill-item span{display:none}.play-hud-pill-item:first-child span{display:inline}.play-hud-pill-item{padding:8px 10px}}
.play-toggles{position:absolute;bottom:calc(20px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:2;display:inline-flex;gap:8px}
.play-toggle{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:999px;background:var(--surface);border:none;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--sh-md),inset 0 0 0 1px var(--line)}
.play-toggle:hover{background:var(--surface-2)}
.play-toggle.is-active{background:var(--accent);color:var(--accent-ink);box-shadow:var(--sh-md)}
.win-overlay{position:absolute;inset:0;background:color-mix(in srgb,var(--paper) 78%,transparent);backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;z-index:3}
.win-overlay.show{display:flex}
.win-card{background:var(--surface);border-radius:22px;padding:34px 38px;text-align:center;max-width:420px;box-shadow:var(--sh-lg),inset 0 0 0 1px var(--line)}
.win-kicker{margin-bottom:8px}
.win-title{font-size:1.7rem;font-weight:900;margin:0 0 12px}
.win-time{margin:0 0 22px;color:var(--text-2)}
.win-time strong{color:var(--text);font-variant-numeric:tabular-nums}
.win-actions{display:flex;flex-direction:column;gap:10px}
.win-actions .btn{width:100%;justify-content:center}

/* hero completion banner */
.hero-done{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:50}
.hero-done.show{opacity:1;pointer-events:auto}
.hero-done-card{background:var(--pf-surface);border:1px solid var(--pf-border);box-shadow:var(--pf-shadow);border-radius:16px;padding:20px 24px;text-align:center;display:flex;flex-direction:column;gap:12px;align-items:center;backdrop-filter:blur(6px)}
.hero-done-card strong{font-size:1.05rem}

/* hero banner button: keep on one line */
.hero-done-card{max-width:90%}
.hero-done-card .btn{white-space:nowrap;font-size:.95rem}

/* inline UI icons (FA Pro) keep aspect ratio */
.ic{height:1em;width:auto;vertical-align:-.13em;flex:0 0 auto}

/* brand logo */
.brand-logo{border-radius:7px;display:block}

/* store badges */
.stores{display:flex;gap:10px;flex-wrap:wrap}
.stores.center{justify-content:center}
.stores img{height:44px;width:auto;display:block}

/* rich footer */
.site-f{margin-top:60px}
.site-f .site-f-grid{display:grid;grid-template-columns:1.7fr 1fr 1fr 1.35fr;gap:30px;align-items:start}
.site-f-brand p{max-width:34ch;margin:12px 0 16px}
.site-f-col h2{font-size:.95rem;font-weight:800;color:var(--pf-text);margin:0 0 12px}
.site-f-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.site-f-col a{color:var(--pf-text-muted)}
.site-f-col a:hover{color:var(--pf-accent)}
.f-contact{display:inline-flex;align-items:center;gap:7px}
.site-f-social{display:flex;flex-wrap:wrap;gap:9px;margin-top:4px}
.site-f-social a{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;
  background:var(--pf-surface-2);border:1px solid var(--pf-border);color:var(--pf-text-muted);transition:color .15s,border-color .15s,background .15s}
.site-f-social a:hover{color:#fff;background:var(--pf-accent);border-color:var(--pf-accent)}
.site-f-social .soc-ic{width:16px;height:16px;display:block}
.site-f .site-f-bottom{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;align-items:center;border-top:1px solid var(--pf-border);margin-top:24px;padding-top:18px}
.site-f-made{display:inline-flex;align-items:center;gap:6px}
.site-f-legal{display:flex;gap:16px}
@media(max-width:860px){.site-f .site-f-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.site-f .site-f-grid{grid-template-columns:1fr}}

/* completion modal */
.btn.btn-lg{padding:15px 30px;font-size:1.05rem}
.modal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,var(--pf-bg) 68%,transparent);backdrop-filter:blur(8px)}
.modal.show{display:flex;animation:pf-fade .2s ease}
.modal-card{position:relative;background:var(--pf-bg-soft);border:1px solid var(--pf-border);box-shadow:var(--pf-shadow);border-radius:22px;padding:40px 38px;max-width:440px;text-align:center}
.modal-emoji{font-size:3rem;line-height:1;margin-bottom:6px}
.modal-card h2{font-size:1.7rem;font-weight:900;margin:0 0 10px}
.modal-card p{color:var(--pf-text-muted);margin:0 0 18px}
.modal-apps{font-size:.85rem;margin:18px 0 12px!important}
#promo-continue{margin-top:18px}
.modal-x{position:absolute;top:12px;right:14px;background:none;border:0;color:var(--pf-text-muted);font-size:26px;line-height:1;cursor:pointer}
.modal-x:hover{color:var(--pf-text)}
@keyframes pf-fade{from{opacity:0}to{opacity:1}}

/* hero app badges (replace Browse-all) */
.hero-apps-label{font-size:.8rem;color:var(--pf-text-muted);margin:18px 0 8px}
.stores.hero-stores{gap:10px}
.stores.hero-stores img{height:46px}
@media(max-width:760px){.hero-wrap .stores.hero-stores{justify-content:center}.hero-apps-label{text-align:center}}

/* win overlay app badges */
.win-apps{font-size:.85rem;color:var(--pf-text-muted);margin:20px 0 12px}
.win-card .modal-emoji{font-size:2.6rem}
.win-card .stores{margin-top:4px}

/* hero puzzle: right-aligned on desktop, centered on mobile */
/* hero puzzle stays centered & contained in its column */

/* content/article pages */
.prose{max-width:760px}
.prose h1{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:900;letter-spacing:-.02em;margin:.2em 0 .5em}
.prose h2{font-size:1.3rem;font-weight:800;margin:1.6em 0 .5em}
.prose p,.prose li{color:var(--pf-text-muted);line-height:1.7}
.prose .lead{font-size:1.15rem;color:var(--pf-text)}
.prose a{color:var(--pf-accent)}
.prose a:hover{text-decoration:underline}
.prose ul,.prose ol{padding-left:1.3em;display:flex;flex-direction:column;gap:7px;margin:.6em 0}
.prose .btn:not(.ghost){color:#fff}
.prose .btn.ghost{color:var(--pf-text)}
.prose .stores{margin:18px 0}

/* team page */
.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin:18px 0 8px}
.team-card{display:flex;gap:14px;align-items:center;background:var(--pf-surface);border:1px solid var(--pf-border);border-radius:14px;padding:14px}
.team-card img{width:72px;height:72px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.team-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.team-meta strong{font-size:1rem;color:var(--pf-text)}
.team-meta span{font-size:.85rem;color:var(--pf-text-muted)}
.team-gh{font-size:.8rem;color:var(--pf-accent);margin-top:3px}
.team-gh:hover{text-decoration:underline}
.team-socials{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}
.team-socials a{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;
  background:var(--pf-surface-2);border:1px solid var(--pf-border);color:var(--pf-text-muted);transition:color .15s,border-color .15s,background .15s}
.team-socials a:hover{color:#fff;background:var(--pf-accent);border-color:var(--pf-accent)}
.team-socials .soc-ic{width:15px;height:15px;display:block}
.values{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-top:10px}
.value{background:var(--pf-surface);border:1px solid var(--pf-border);border-radius:12px;padding:14px}
.value strong{color:var(--pf-accent)}
.value p{margin:.3em 0 0;font-size:.9rem}

/* pagination */
.pager{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;margin-top:32px}
.pager a,.pager .cur{padding:8px 13px;border-radius:10px;border:1px solid var(--pf-border);font-weight:600;font-size:.9rem;line-height:1}
.pager a{color:var(--pf-text-muted)}
.pager a:hover{border-color:var(--pf-accent);color:var(--pf-accent)}
.pager .cur{background:var(--pf-accent);color:#fff;border-color:transparent}
.pager .dots{color:var(--pf-text-muted);padding:0 2px}

/* mobile nav (hamburger) */
.nav-toggle{display:none;background:none;border:0;color:var(--pf-text);font-size:24px;line-height:1;cursor:pointer;margin-left:auto;padding:4px 8px}
@media(max-width:760px){
  .nav-toggle{display:block}
  .nav{position:absolute;top:100%;left:0;right:0;margin:0;flex-direction:column;align-items:flex-start;gap:0;
    background:var(--pf-bg-soft);border-bottom:1px solid var(--pf-border);box-shadow:var(--pf-shadow);display:none;font-size:16px}
  body.nav-open .nav{display:flex}
  .nav a{width:100%;padding:13px 22px;opacity:1;border-top:1px solid var(--pf-border)}
}

/* hero hint + animated arrow */
.hero-hint{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  color:var(--pf-accent);font-weight:700;font-size:.98rem;text-align:center;pointer-events:none;opacity:.92;transition:opacity .35s ease}
.hero-hint.gone{opacity:0}
.hero-arrow{color:var(--pf-accent);animation:hero-bounce 1.3s ease-in-out infinite}
@keyframes hero-bounce{0%,100%{transform:translateY(-4px)}50%{transform:translateY(8px)}}
@media (prefers-reduced-motion: reduce){.hero-arrow{animation:none}}

/* star ratings */
.rating{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--pf-text-muted)}
.stars{position:relative;display:inline-block;font-size:.95em;line-height:1;color:var(--pf-border);white-space:nowrap}
.stars::before{content:"★★★★★"}
.stars>span{position:absolute;left:0;top:0;overflow:hidden;color:#f5a623;white-space:nowrap}
.stars>span::before{content:"★★★★★"}
.rcount small{opacity:.7}
.card .meta .rating{margin-top:5px}
.rating-row{margin:.1em 0 .5em;min-height:1.2em}
.rating-row .rating{font-size:.95rem}
.rating-row .stars{font-size:1.25em}

/* interactive rating widget */
.rate-box{display:flex;align-items:center;gap:10px;margin:.1em 0 .6em;font-size:.9rem;color:var(--pf-text-muted)}
.rate-stars{display:inline-flex;gap:1px}
.rate-star{background:none;border:0;cursor:pointer;font-size:1.5rem;line-height:1;color:var(--pf-border);padding:0 1px;transition:color .12s}
.rate-star:hover,.rate-star.on{color:#f5a623}
.rate-box.voted .rate-star{cursor:default}

/* blog/news articles */
.article-date{color:var(--pf-text-muted);font-size:.85rem;margin:.2em 0 1em}
.article-hero{width:100%;border-radius:16px;border:1px solid var(--pf-border);box-shadow:var(--pf-shadow);margin:0 0 1.2em}
.prose img{border-radius:12px;margin:1em 0}
.prose h2{font-size:1.4rem}
.prose h3{font-size:1.15rem;font-weight:700;margin:1.3em 0 .4em}
.prose ul,.prose ol{margin:.6em 0}
.prose blockquote{border-left:3px solid var(--pf-accent);padding-left:14px;margin:1em 0;color:var(--pf-text-muted)}
.prose table{width:100%;border-collapse:collapse;margin:1em 0;font-size:.92rem}
.prose th,.prose td{border:1px solid var(--pf-border);padding:8px 10px;text-align:left}
