/* Non-critical styles. Loaded after first paint; critical.css is inlined. */

/* ---------------------------------------------------------------- layout */
.section{padding:clamp(2.5rem,1.5rem + 3vw,4rem) 0}
.section-tight{padding:clamp(1.75rem,1rem + 2vw,2.75rem) 0}
.section-wash{background:var(--wash);border-block:1px solid var(--line-2)}
.prose{max-width:var(--measure)}
.section-head{max-width:var(--measure);margin-bottom:2rem}
.section-head p{color:var(--muted);margin-bottom:0}
.grid{display:grid;gap:1.25rem}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(2rem,4vw,3.5rem);align-items:start}
@media(max-width:900px){.split{grid-template-columns:1fr}}

/* ------------------------------------------------------------ typography */
.prose h2{margin-top:2.4rem}
.prose h3{margin-top:1.9rem}
.prose ul,.prose ol{padding-left:1.25rem}
.prose li{margin-bottom:.4rem}
.prose li::marker{color:var(--faint)}
.prose blockquote{margin:1.8rem 0;padding:.2rem 0 .2rem 1.3rem;border-left:3px solid var(--brand-2);color:var(--ink);font-family:var(--serif);font-size:1.1rem}
.prose blockquote p:last-child{margin-bottom:0}
.prose code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;background:var(--wash-2);padding:.12em .38em;border-radius:4px;color:var(--ink)}
.prose pre{background:#0f1c20;color:#e6eef0;padding:1.1rem 1.2rem;border-radius:var(--radius);overflow-x:auto;font-size:.88rem;line-height:1.55}
.prose pre code{background:none;padding:0;color:inherit}
.prose table{width:100%;border-collapse:collapse;margin:1.6rem 0;font-size:.95rem}
.prose th,.prose td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--line)}
.prose th{font-weight:600;color:var(--ink);background:var(--wash)}
.prose hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}
.prose img{border-radius:var(--radius);border:1px solid var(--line)}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---------------------------------------------------------------- cards */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.5rem}
.card h3{margin-top:0}
.card p:last-child{margin-bottom:0}
.card-link{text-decoration:none;color:inherit;display:block;transition:border-color .15s,box-shadow .15s,transform .15s}
.card-link:hover{border-color:#c3d5d8;box-shadow:var(--shadow);transform:translateY(-1px);color:inherit}

.step{counter-increment:step;position:relative;padding-left:3.1rem}
.steps{counter-reset:step;display:grid;gap:1.8rem}
.step::before{content:counter(step);position:absolute;left:0;top:-.1rem;display:grid;place-items:center;width:2.2rem;height:2.2rem;border-radius:50%;background:var(--brand-wash);color:var(--brand);font-family:var(--serif);font-weight:600;font-size:1rem}
.step h3{margin-bottom:.3rem}
.step p:last-child{margin-bottom:0}

.stat-row{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1.5rem;padding:0;list-style:none}
.pill{display:inline-flex;align-items:center;gap:.4rem;background:var(--wash-2);color:var(--ink-2);border-radius:100px;padding:.3rem .78rem;font-size:.85rem;font-weight:500}
.code{display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.82rem;background:var(--brand-wash);color:var(--brand);border-radius:5px;padding:.15rem .45rem;margin-right:.3rem;font-weight:600}

/* ---------------------------------------------------------------- tutors */
.tutor-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.6rem}
.tutor-card-head{display:flex;gap:1rem;align-items:center;margin-bottom:1.2rem}
.tutor-photo{width:72px;height:72px;border-radius:50%;object-fit:cover;flex:none;border:1px solid var(--line)}
.tutor-initials{display:grid;place-items:center;background:var(--brand);color:#fff;font-family:var(--serif);font-size:1.5rem;font-weight:600;border-color:var(--brand)}
.tutor-card h3{margin:0 0 .15rem;font-size:1.25rem}
.tutor-card h3 a{color:var(--ink);text-decoration:none}
.tutor-card h3 a:hover{color:var(--brand)}
.tutor-headline{margin:0;color:var(--muted);font-size:.93rem;line-height:1.45}
.tutor-facts{display:grid;gap:.55rem;margin:0 0 1.1rem;padding:1.1rem 0;border-block:1px solid var(--line-2)}
.tutor-facts>div{display:flex;gap:.7rem;font-size:.92rem}
.tutor-facts dt{color:var(--muted);flex:0 0 8.5rem}
.tutor-facts dd{margin:0;color:var(--ink);font-weight:500}
.tutor-codes{margin:0 0 1rem;line-height:2}
.tutor-link{margin:0;font-size:.93rem}
.tutor-link a{text-decoration:none;font-weight:600}
.tutor-link a:hover{text-decoration:underline}

.profile-head{display:flex;gap:1.6rem;align-items:flex-start;flex-wrap:wrap;margin-bottom:2rem}
.profile-photo{width:118px;height:118px;border-radius:var(--radius-lg);object-fit:cover;border:1px solid var(--line);flex:none}
.profile-initials{display:grid;place-items:center;background:var(--brand);color:#fff;font-family:var(--serif);font-size:2.4rem;font-weight:600}
.profile-head h1{margin-bottom:.25rem}
.profile-headline{font-size:1.1rem;color:var(--muted);margin:0}

/* ------------------------------------------------------------- syllabus */
.syllabus{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:2.25rem;background:var(--paper)}
.syllabus-head{padding:1.4rem 1.6rem;background:var(--wash);border-bottom:1px solid var(--line)}
.syllabus-head h2,.syllabus-head h3{margin:0 0 .35rem}
.syllabus-meta{display:flex;flex-wrap:wrap;gap:1.1rem;margin:0;font-size:.86rem;color:var(--muted)}
.syllabus-body{padding:1.5rem 1.6rem}
.syllabus-body>*:last-child{margin-bottom:0}
.paper-table{width:100%;border-collapse:collapse;font-size:.93rem}
.paper-table th,.paper-table td{text-align:left;padding:.75rem .8rem;border-bottom:1px solid var(--line-2);vertical-align:top}
.paper-table thead th{font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;background:var(--wash);border-bottom:1px solid var(--line)}
.paper-table tbody tr:last-child td{border-bottom:0}
.paper-name{font-weight:600;color:var(--ink);white-space:nowrap}
.paper-weight{font-weight:600;color:var(--brand);white-space:nowrap}
.topic-list{columns:2;column-gap:2rem;list-style:none;padding:0;margin:0;font-size:.93rem}
.topic-list li{break-inside:avoid;padding:.28rem 0;color:var(--ink-2)}
@media(max-width:600px){.topic-list{columns:1}}
.source-note{font-size:.84rem;color:var(--muted);margin:1.4rem 0 0;padding-top:1rem;border-top:1px solid var(--line-2)}

/* ------------------------------------------------------------- pricing */
.price-table{width:100%;border-collapse:collapse;margin:1.5rem 0}
.price-table th,.price-table td{text-align:left;padding:.9rem .8rem;border-bottom:1px solid var(--line)}
.price-table thead th{font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--wash)}
.price-amount{font-family:var(--serif);font-size:1.2rem;font-weight:600;color:var(--ink);white-space:nowrap}
.price-note{font-size:.88rem;color:var(--muted)}

/* ------------------------------------------------------------------ CTA */
.cta-band{background:var(--brand);color:#eaf4f5;border-radius:var(--radius-lg);padding:clamp(1.6rem,1rem + 2vw,2.5rem);margin:3rem 0}
.cta-inner{display:flex;gap:2rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cta-copy{max-width:46ch}
.cta-band h2{color:#fff;margin:0 0 .4rem;font-size:clamp(1.3rem,1.1rem + .7vw,1.65rem)}
.cta-band p{margin:0;color:#c5dee1;font-size:.98rem}
.cta-actions{display:flex;gap:.7rem;flex-wrap:wrap}
.cta-band .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.4)}
.cta-band .btn-ghost:hover{background:rgba(255,255,255,.12);color:#fff}

/* ------------------------------------------------------------------ FAQ */
.faq{margin:3rem 0}
.faq-list{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:1.05rem 2.2rem 1.05rem 0;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary h3{margin:0;font-size:1.05rem;font-family:var(--sans);font-weight:600;color:var(--ink);display:inline}
.faq summary::after{content:"";position:absolute;right:.4rem;top:1.45rem;width:9px;height:9px;border-right:2px solid var(--faint);border-bottom:2px solid var(--faint);transform:rotate(45deg);transition:transform .18s}
.faq details[open] summary::after{transform:rotate(-135deg)}
.faq summary:hover h3{color:var(--brand)}
.faq-answer{padding:0 2.2rem 1.25rem 0;color:var(--ink-2)}
.faq-answer p:last-child{margin-bottom:0}

/* ----------------------------------------------------------------- form */
.consult-form{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:clamp(1.4rem,1rem + 1.5vw,2rem)}
.field{margin-bottom:1.15rem}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:560px){.field-row{grid-template-columns:1fr}}
.field label{display:block;font-size:.92rem;font-weight:600;color:var(--ink);margin-bottom:.35rem}
.field input,.field select,.field textarea{width:100%;font:inherit;font-size:1rem;color:var(--ink);background:var(--paper);border:1px solid #cfd8dd;border-radius:var(--radius);padding:.65rem .8rem}
.field textarea{resize:vertical;min-height:6.5rem}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand-2);outline:2px solid rgba(18,112,127,.18);outline-offset:0}
.field input[aria-invalid],.field select[aria-invalid]{border-color:#b3261e}
.req{color:#b3261e}
.optional{font-weight:400;color:var(--faint)}
.hint{font-size:.84rem;color:var(--muted);margin:.35rem 0 0}
.form-error{color:#b3261e;font-size:.88rem;margin:.35rem 0 0}
.form-error-top{background:#fdeceb;border:1px solid #f4c7c4;border-radius:var(--radius);padding:.75rem .9rem;margin:0 0 1.25rem}
.form-note{font-size:.85rem;color:var(--muted);margin:1rem 0 0;text-align:center}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ----------------------------------------------------------------- list */
.entry-list{display:grid;gap:0;border-top:1px solid var(--line)}
.entry{padding:1.6rem 0;border-bottom:1px solid var(--line)}
.entry h2,.entry h3{margin:0 0 .4rem;font-size:1.3rem}
.entry h2 a,.entry h3 a{color:var(--ink);text-decoration:none}
.entry h2 a:hover,.entry h3 a:hover{color:var(--brand)}
.entry p{margin:0 0 .5rem;color:var(--ink-2)}
.meta{font-size:.84rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.9rem;margin:0}
.meta time{color:inherit}

.article-head{max-width:var(--measure);margin-bottom:2rem}
.article-head h1{margin-bottom:.6rem}
.toc{background:var(--wash);border:1px solid var(--line-2);border-radius:var(--radius);padding:1.1rem 1.3rem;margin:0 0 2.2rem}
.toc h2{font-family:var(--sans);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 .6rem}
.toc ol{margin:0;padding-left:1.1rem;font-size:.94rem}
.toc li{margin-bottom:.3rem}
.toc a{text-decoration:none}
.toc a:hover{text-decoration:underline}

/* Static by default, deliberately. A sticky box taller than the viewport pins
   at its top offset and its own bottom becomes unreachable, while the next box
   scrolls underneath it. That broke the home page sidebar, whose city list is
   longer than a screen. Opt in with .aside-sticky, which is capped so it cannot
   trap its content however long the list grows. */
.aside-box{background:var(--wash);border:1px solid var(--line-2);border-radius:var(--radius-lg);padding:1.4rem}
@media(min-width:901px){.aside-sticky{position:sticky;top:90px;max-height:calc(100vh - 110px);overflow-y:auto}}
.aside-box h2,.aside-box h3{font-size:1.05rem;margin-top:0}
.aside-box p:last-child,.aside-box ul:last-child{margin-bottom:0}
.aside-box ul{list-style:none;padding:0;margin:0;font-size:.94rem}
.aside-box li{padding:.4rem 0;border-bottom:1px solid var(--line-2)}
.aside-box li:last-child{border-bottom:0}
.aside-box a{text-decoration:none}
.aside-box a:hover{text-decoration:underline}

.link-list{list-style:none;padding:0;margin:0;display:grid;gap:.15rem}
.link-list a{display:block;padding:.6rem .8rem;border-radius:var(--radius);text-decoration:none;color:var(--ink-2);font-weight:500;transition:background .12s}
.link-list a:hover{background:var(--wash-2);color:var(--brand)}

.callout{border-left:3px solid var(--accent);background:#fdf6f1;border-radius:0 var(--radius) var(--radius) 0;padding:1.1rem 1.3rem;margin:1.8rem 0;font-size:.96rem}
.callout p:last-child{margin-bottom:0}
.callout strong{color:var(--ink)}

/* --------------------------------------------------------------- footer */
.site-footer{background:#0c161a;color:#9fb1b6;margin-top:4rem;padding:3rem 0 2rem;font-size:.94rem}
.footer-grid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:2.5rem;padding-bottom:2.5rem;border-bottom:1px solid #1e2c31}
@media(max-width:820px){.footer-grid{grid-template-columns:1fr 1fr;gap:2rem}.footer-about{grid-column:1/-1}}
@media(max-width:480px){.footer-grid{grid-template-columns:1fr}}
.footer-about .brand-mark{margin-bottom:1rem}
.footer-blurb{max-width:38ch;line-height:1.6}
.footer-contact a{color:#cfe0e3}
.footer-col h2{font-family:var(--sans);font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;color:#6f8489;margin:0 0 .9rem}
.footer-col ul{list-style:none;padding:0;margin:0}
.footer-col li{margin-bottom:.55rem}
.footer-col a,.site-footer a{color:#b9cbd0;text-decoration:none}
.footer-col a:hover,.site-footer a:hover{color:#fff;text-decoration:underline}
.footer-legal{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding-top:1.6rem;font-size:.87rem;color:#7d9196}
.footer-legal p{margin:0}
.footer-legal-links{display:flex;gap:1.1rem}
.footer-disclaimer{font-size:.82rem;color:#6a7e83;max-width:70ch;margin:1rem 0 0;line-height:1.55}

/* ---------------------------------------------------------------- admin */
.admin-table{width:100%;border-collapse:collapse;font-size:.86rem}
.admin-table th,.admin-table td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}
.admin-table thead th{background:var(--wash);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}

/* -------------------------------------------------------------- utility */
.center{text-align:center}
.mt-0{margin-top:0}
.mb-0{margin-bottom:0}
.narrow{max-width:var(--measure);margin-inline:auto}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media print{.site-header,.site-footer,.cta-band,.breadcrumbs{display:none}}

/* Footer locations block — grouped by country so fifteen cities stay readable. */
.footer-locations{padding:1.6rem 0 .4rem;border-bottom:1px solid #1e2c31}
.footer-locations h2{font-family:var(--sans);font-size:.76rem;letter-spacing:.09em;text-transform:uppercase;color:#6f8489;margin:0 0 .9rem}
.footer-country{margin:0 0 .6rem;font-size:.9rem;line-height:1.9}
.footer-country-name{display:inline-block;min-width:11rem;color:#6f8489;font-size:.82rem}
.footer-country a{color:#b9cbd0;text-decoration:none}
.footer-country a:hover{color:#fff;text-decoration:underline}
@media(max-width:600px){.footer-country-name{display:block;min-width:0;margin-bottom:.2rem}}
.price-usd{color:var(--muted);white-space:nowrap;font-size:.94rem}

/* ------------------------------------------------------------ responsive
   Consolidated mobile rules. The layout grids already collapse (.split at
   900, .hero-grid at 860, .footer-grid at 820/480); what was missing was
   everything *inside* those columns. Two real problems drove this block:
   wide tables that forced sideways scrolling on the pricing page, and
   fixed-width definition labels that squeezed their own values to nothing. */

/* Long unbroken strings (an email, a URL pasted into prose, a code token)
   are the classic cause of a page that scrolls sideways on a phone. */
body{overflow-wrap:break-word}
.prose a,.prose code{overflow-wrap:anywhere}

@media(max-width:760px){
  /* Fixed 8.5rem labels leave almost nothing for the value at this width. */
  .tutor-facts>div{display:block}
  .tutor-facts dt{flex:none;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase}
  .tutor-facts dd{margin-top:.1rem}
}

@media(max-width:600px){
  .wrap{padding:0 16px}

  /* Stacked tables. /pricing/ is a money page (§6) and a table you have to
     drag sideways on a phone is not "genuinely useful". Each row becomes a
     card; the header is hidden and each cell carries its own label from the
     data-label attribute, so the markup stays a real table for screen
     readers and for wide screens. */
  .table-scroll{overflow-x:visible}
  .price-table,.paper-table{border-collapse:separate;border-spacing:0;margin:1.2rem 0}
  .price-table thead,.paper-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
  .price-table tr,.paper-table tr{display:block;border:1px solid var(--line);border-radius:var(--radius);padding:.95rem 1rem;margin-bottom:.75rem;background:var(--paper)}
  .price-table th,.price-table td,
  .paper-table th,.paper-table td{display:block;border:0;padding:.18rem 0;text-align:left;white-space:normal}
  .price-table td[data-label]::before,.paper-table td[data-label]::before{
    content:attr(data-label);display:block;font-size:.72rem;letter-spacing:.06em;
    text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:.05rem}
  .price-table th[scope=row],.paper-table th[scope=row]{
    font-size:1.05rem;color:var(--ink);margin-bottom:.4rem;padding-bottom:.4rem;border-bottom:1px solid var(--line-2)}
  .price-amount{font-size:1.15rem}

  /* Nested padding (section + aside-box + card) eats the usable width. */
  .aside-box{padding:1.15rem}
  .tutor-card{padding:1.25rem}
  .syllabus-head{padding:1.15rem 1.15rem}
  .syllabus-body{padding:1.25rem 1.15rem}

  /* Full-width tap targets: two half-width buttons side by side are fiddly. */
  .hero-actions{gap:.6rem}
  .hero-actions .btn{width:100%}
}

@media(max-width:380px){
  /* Smallest common handsets. Keep the brand from crowding the toggle. */
  .brand-name{font-size:1rem}
  .wrap{padding:0 14px}
}

/* ------------------------------------------------------------ quotes ---
   Real testimonials only, and only once three exist: Gate::testimonials()
   returns an empty array below that threshold and the partial renders
   nothing. There is deliberately no placeholder or skeleton state here. */
.quote{margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.5rem}
.quote blockquote{margin:0 0 1rem;padding:0;border:0}
.quote blockquote p{margin:0;font-family:var(--serif);font-size:1.02rem;line-height:1.6;color:var(--ink)}
.quote blockquote p::before{content:"\201C"}
.quote blockquote p::after{content:"\201D"}
.quote figcaption{border-top:1px solid var(--line-2);padding-top:.9rem}
.quote-name{display:block;font-weight:600;color:var(--ink);font-size:.94rem}
.quote-meta{display:block;color:var(--muted);font-size:.86rem;margin-top:.15rem}

/* ===================================================== visual refinement ===
   The page was structurally sound and visually flat: no gradients, one shadow
   token, an accent colour defined but never used. Everything below adds depth
   and hierarchy without adding a single HTTP request, which matters because
   there is no photography on this site and no build step to add any. */

/* ---- section headings: give each one an anchor rather than plain text ---- */
.section-head{position:relative}
.section-head h2{letter-spacing:-.022em;margin-bottom:.45rem}
.section-head > p{font-size:1.05rem;line-height:1.6}
.section-head-center::after{content:"";display:block;width:2.5rem;height:3px;border-radius:3px;background:var(--accent);margin:1.1rem auto 0}

/* ---- cards: real depth, and a lift that reads as interactive ------------- */
.card{
  background:linear-gradient(180deg,var(--paper),#fcfdfd);
  border:1px solid var(--line);
  box-shadow:var(--shadow-sm);
  border-radius:var(--radius-lg);
  transition:box-shadow .18s,transform .18s,border-color .18s;
}
.card-link:hover{
  border-color:#c3d5d8;
  box-shadow:var(--shadow-lg);
  transform:translateY(-3px);
}
.card h3{letter-spacing:-.012em}

/* ---- numbered steps: the counter was a flat disc, now it has presence ---- */
.step::before{
  background:linear-gradient(145deg,var(--brand-2),var(--brand));
  color:#fff;
  box-shadow:var(--shadow-sm);
  font-size:.95rem;
}

/* ---- pills: lighter, with a hairline so they read as objects ------------- */
.pill{
  background:var(--paper);
  border:1px solid var(--line);
  box-shadow:var(--shadow-sm);
  color:var(--ink-2);
}

/* ---- sidebar boxes: lift them off the page ------------------------------ */
.aside-box{
  background:linear-gradient(180deg,var(--paper),var(--wash));
  border:1px solid var(--line);
  box-shadow:var(--shadow-sm);
  border-radius:var(--radius-lg);
}
.aside-box h2{font-size:1rem;letter-spacing:.005em}

/* ---- the CTA band was flat brand colour; give it dimension --------------- */
.cta-band{
  background:linear-gradient(135deg,#0f5761 0%,var(--brand) 55%,#0a3b43 100%);
  box-shadow:var(--shadow-lg);
  position:relative;overflow:hidden;
}
.cta-band::after{
  content:"";position:absolute;width:26rem;height:26rem;border-radius:50%;
  top:-14rem;right:-8rem;pointer-events:none;
  background:radial-gradient(circle,rgba(255,255,255,.09),transparent 65%);
}
.cta-band > *{position:relative}

/* ---- tables: soften the grid, emphasise the number ---------------------- */
.price-table thead th,.paper-table thead th{background:var(--wash-2)}
.price-amount{color:var(--brand)}

/* ---- prose: a touch more air and a clearer link affordance -------------- */
.prose h2{letter-spacing:-.018em}
.prose a{text-decoration-color:rgba(18,112,127,.35);transition:text-decoration-color .15s}
.prose a:hover{text-decoration-color:currentColor}
.prose blockquote{background:var(--wash);border-radius:0 var(--radius) var(--radius) 0;padding:1rem 1.3rem}

/* ---- entry lists: a hairline rule beats nothing between items ----------- */
.entry{border-bottom:1px solid var(--line-2);padding-bottom:1.1rem}
.entry:last-child{border-bottom:0}

/* ---- quotes, once real testimonials exist ------------------------------- */
.quote{box-shadow:var(--shadow-sm);background:linear-gradient(180deg,var(--paper),#fcfdfd)}

@media(prefers-reduced-motion:reduce){
  .card-link:hover,.btn:hover{transform:none}
}
