/* ============================================================
   Prosoche - site stylesheet (production)
   One sheet that styles the WHOLE site: shared chrome (nav,
   footer), the bespoke homepage, article/post pages, the
   journal & diary lists, app-detail pages, and generic pages.

   Concept: prosoche / προσοχή = "attention". Paper + ink, one
   confident blue, a single focus-dot motif, Montserrat type.

   Built on CSS variables so a dark theme is a drop-in later.
   ============================================================ */

:root{
  --paper:#f6f5f0;
  --paper-2:#efece4;
  --paper-3:#e8e4d9;
  --ink:#1b1a17;
  --ink-2:#3b3933;
  --ink-soft:#6c685e;
  --ink-faint:#9a958a;
  --line:#dcd8cd;
  --line-2:#cac5b8;
  --accent:#2b6fdb;
  --accent-press:#225bb6;
  --accent-tint:#e7eefb;
  --on-accent:#fff;
  --green:#3f8f63;
  --rust:#b5552e;

  --display:"Montserrat Alternates",ui-sans-serif,system-ui,sans-serif;
  --body:"Montserrat",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;

  --maxw:1180px;
  --measure:42rem;        /* readable column for prose */
  --gutter:40px;
  --radius:18px;
  --radius-sm:12px;

  --shadow-sm:0 1px 2px rgba(27,26,23,.05), 0 4px 14px rgba(27,26,23,.05);
  --shadow-md:0 2px 6px rgba(27,26,23,.06), 0 14px 40px rgba(27,26,23,.10);
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:17px;line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
::selection{background:var(--accent);color:#fff;}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);}
@media(max-width:680px){:root{--gutter:22px;}}

.dot{display:inline-block;width:.5em;height:.5em;border-radius:50%;background:var(--accent);vertical-align:baseline;}

/* ============================================================
   NAV (shared)
   ============================================================ */
.site-nav{
  position:sticky;top:0;z-index:50;
  background:color-mix(in srgb,var(--paper) 82%, transparent);
  backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);
  border-bottom:1px solid var(--line);
}
.site-nav__inner{display:flex;align-items:center;justify-content:space-between;height:68px;}
.brand{display:flex;align-items:center;gap:9px;font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.02em;color:var(--ink);}
.brand img{width:30px;height:30px;border-radius:50%;}
.brand .wm{display:flex;align-items:center;}
.brand .bdot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin:0 1px;position:relative;top:5px;}
.nav-links{display:flex;align-items:center;gap:30px;}
.nav-links a{font-size:15px;color:var(--ink-soft);font-weight:500;position:relative;padding:4px 0;white-space:nowrap;transition:color .18s;}
.nav-links a:hover,.nav-links a.is-active{color:var(--ink);}
.nav-links a::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:2px;background:var(--accent);transition:right .22s ease;border-radius:2px;}
.nav-links a:hover::after,.nav-links a.is-active::after{right:0;}
.nav-cta{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;flex:none;background:var(--ink);color:var(--paper);font-weight:600;font-size:14.5px;padding:10px 18px;border-radius:999px;transition:transform .15s;}
.nav-cta:hover{transform:translateY(-1px);}
.nav-cta svg{width:13px;height:13px;}
@media(max-width:880px){.nav-links,.nav-cta{display:none;}}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-family:var(--body);font-weight:600;font-size:16px;padding:13px 23px;border-radius:999px;border:1.5px solid transparent;transition:transform .15s,background .2s,border-color .2s;}
.btn svg{width:16px;height:16px;}
.btn-primary{background:var(--accent);color:var(--on-accent);}
.btn-primary:hover{background:var(--accent-press);transform:translateY(-2px);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-2);}
.btn-ghost:hover{border-color:var(--ink);transform:translateY(-2px);}

/* ============================================================
   HOMEPAGE - hero
   ============================================================ */
.hero{overflow:hidden;}
.hero-inner{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;padding:78px var(--gutter) 70px;}
.eyebrow{display:inline-flex;align-items:center;gap:10px;white-space:nowrap;max-width:100%;font-size:14px;color:var(--ink-soft);border:1px solid var(--line-2);border-radius:999px;padding:7px 16px 7px 13px;background:var(--paper-2);}
.eyebrow .grk{font-family:var(--display);font-weight:600;color:var(--ink);}
.eyebrow .sep{width:4px;height:4px;border-radius:50%;background:var(--accent);}
@media(max-width:680px){.eyebrow{white-space:normal;}}
h1.hero-h{font-family:var(--display);font-weight:600;font-size:clamp(40px,5.6vw,66px);line-height:1.03;letter-spacing:-.025em;margin:24px 0 0;text-wrap:balance;}
h1.hero-h .accent{color:var(--accent);}
.hero-sub{font-size:19px;color:var(--ink-soft);max-width:30em;margin:22px 0 0;line-height:1.55;text-wrap:pretty;}
.hero-cta{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap;align-items:center;}
.aperture-wrap{position:relative;display:grid;place-items:center;min-height:380px;}
.aperture-img{width:min(360px,84%);height:auto;aspect-ratio:1;object-fit:contain;position:relative;z-index:1;animation:breathe 6s ease-in-out infinite;transform-origin:center;}
.mark-halo{position:absolute;width:min(440px,96%);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 45%,var(--accent-tint) 0%,transparent 66%);z-index:0;}
@keyframes breathe{0%,100%{transform:scale(1);}50%{transform:scale(1.035);}}
@media(prefers-reduced-motion:reduce){.aperture-img{animation:none;}}
@media(max-width:880px){
  .hero-inner{grid-template-columns:1fr;gap:24px;padding:52px var(--gutter) 56px;}
  .aperture-wrap{min-height:0;order:-1;}
  .aperture-img{width:min(200px,54%);}.mark-halo{width:min(240px,62%);}
}

/* ============================================================
   SECTION scaffold (home)
   ============================================================ */
.section-pad{padding:84px 0;}
.section-pad-lg{padding:100px 0;}
.kicker{display:inline-flex;align-items:center;gap:9px;font-family:var(--display);font-weight:500;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);}
.kicker .dot{width:7px;height:7px;}
.section-head{max-width:42rem;margin-bottom:46px;}
h2.section-h{font-family:var(--display);font-weight:600;font-size:clamp(28px,3.6vw,40px);line-height:1.08;letter-spacing:-.02em;margin:14px 0 0;text-wrap:balance;}
.section-lead{font-size:18px;color:var(--ink-soft);margin:14px 0 0;max-width:38em;text-wrap:pretty;}

/* apps band */
.apps{background:var(--paper-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.apps-head{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end;margin-bottom:46px;}
.apps-head .section-lead{margin-top:0;}
@media(max-width:760px){.apps-head{grid-template-columns:1fr;gap:16px;}}
.apps-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
@media(max-width:760px){.apps-grid{grid-template-columns:1fr;}}
.app-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:26px;display:flex;gap:20px;align-items:flex-start;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s,border-color .2s;}
.app-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--line-2);}
.app-ico{width:62px;height:62px;border-radius:15px;flex:none;overflow:hidden;box-shadow:0 2px 8px rgba(27,26,23,.12),inset 0 0 0 1px rgba(27,26,23,.06);}
.app-ico img{width:100%;height:100%;object-fit:cover;}
.app-body{flex:1;min-width:0;}
.app-name{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.01em;display:flex;align-items:center;gap:9px;}
.app-status{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:var(--accent-tint);padding:3px 9px;border-radius:999px;}
.app-status.soon{color:var(--ink-soft);background:var(--paper-3);}
.app-plats{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;}
.app-plat{font-size:11px;font-weight:600;letter-spacing:.03em;color:var(--ink-soft);background:var(--paper-3);border:1px solid var(--line);padding:3px 9px;border-radius:999px;}
.app-desc{color:var(--ink-soft);font-size:15.5px;margin:9px 0 0;line-height:1.5;}
.app-link{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-weight:600;font-size:14.5px;color:var(--ink);}
.app-link svg{width:13px;height:13px;transition:transform .18s;}
.app-card:hover .app-link svg{transform:translate(2px,-2px);}

/* the idea */
.idea-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
@media(max-width:860px){.idea-grid{grid-template-columns:1fr;gap:32px;}}
.idea-body p{font-size:18.5px;line-height:1.65;color:var(--ink-2);margin:0 0 18px;text-wrap:pretty;}
.idea-body .term{font-family:var(--display);font-weight:600;color:var(--ink);}
.idea-link{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:var(--accent);margin-top:6px;}
.idea-link svg{width:14px;height:14px;}
.pullquote{border-left:3px solid var(--accent);padding:6px 0 6px 28px;}
.pullquote blockquote{font-family:var(--display);font-weight:500;font-size:25px;line-height:1.32;letter-spacing:-.01em;margin:0;color:var(--ink);text-wrap:balance;}
.pullquote cite{display:block;margin-top:16px;font-style:normal;font-size:15px;color:var(--ink-soft);}
.pullquote cite b{color:var(--ink);font-weight:600;}

/* writing streams */
.streams-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
@media(max-width:860px){.streams-grid{grid-template-columns:1fr;}}
.stream{border:1px solid var(--line);border-radius:var(--radius);padding:30px;background:var(--paper);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;}
.stream-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:10px;}
.stream-name{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;}
.stream-name .dot{width:9px;height:9px;}
.stream-name .dot.green{background:var(--green);}
.stream-role{font-size:12px;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-faint);font-weight:600;white-space:nowrap;}
.stream-desc{color:var(--ink-soft);font-size:15.5px;margin:4px 0 18px;line-height:1.55;}
.post-row{display:flex;gap:14px;align-items:baseline;padding:13px 0;border-top:1px solid var(--line);}
.post-row:hover .post-row__title{color:var(--accent);}
.post-row__date{font-size:13px;color:var(--ink-faint);font-variant-numeric:tabular-nums;flex:none;width:64px;}
.post-row__title{font-size:16px;font-weight:500;color:var(--ink);line-height:1.4;transition:color .18s;}
.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:18px;}
.tag{font-size:12.5px;font-weight:600;padding:5px 12px;border-radius:999px;}
.tag.dev{color:var(--accent);background:var(--accent-tint);}
.tag.personal{color:var(--green);background:color-mix(in srgb,var(--green) 13%,var(--paper));}
.tag.society{color:var(--rust);background:color-mix(in srgb,var(--rust) 13%,var(--paper));}
.stream-note{font-size:13.5px;color:var(--ink-faint);margin-top:14px;font-style:italic;line-height:1.5;border-top:1px dashed var(--line-2);padding-top:14px;}

/* maker */
.maker{background:var(--ink);color:var(--paper);}
.maker-grid{display:grid;grid-template-columns:200px 1fr;gap:48px;align-items:center;}
@media(max-width:680px){.maker-grid{grid-template-columns:1fr;gap:28px;text-align:center;justify-items:center;}}
.maker-photo{width:200px;height:200px;border-radius:24px;overflow:hidden;flex:none;box-shadow:0 14px 40px rgba(0,0,0,.3);background:var(--paper-3);}
.maker-photo img{width:100%;height:100%;object-fit:cover;}
.maker-kicker{font-family:var(--display);font-weight:500;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:9px;}
.maker-quote{font-family:var(--display);font-weight:600;font-size:clamp(24px,3vw,33px);line-height:1.18;letter-spacing:-.02em;margin:16px 0 0;text-wrap:balance;}
.maker p{color:#c9c5ba;font-size:17px;line-height:1.6;margin:18px 0 0;max-width:40em;}
.maker-links{display:flex;gap:22px;margin-top:24px;flex-wrap:wrap;}
@media(max-width:680px){.maker-links{justify-content:center;}}
.maker-links a{font-weight:600;font-size:15px;display:inline-flex;align-items:center;gap:7px;color:var(--paper);border-bottom:1.5px solid transparent;padding-bottom:2px;transition:border-color .2s;}
.maker-links a:hover{border-color:var(--accent);}

/* ============================================================
   INNER PAGE header band (article / page / list / app)
   ============================================================ */
.page-head{border-bottom:1px solid var(--line);background:var(--paper-2);}
.page-head__inner{padding:52px 0 42px;max-width:var(--measure);}
.page-head .kicker{margin-bottom:14px;}
.page-head h1{font-family:var(--display);font-weight:600;font-size:clamp(30px,4.4vw,46px);line-height:1.08;letter-spacing:-.022em;margin:0;text-wrap:balance;}
.page-head .lead{font-size:18.5px;color:var(--ink-soft);margin:16px 0 0;line-height:1.55;text-wrap:pretty;}
.page-head__lead p{font-size:18.5px;color:var(--ink-soft);margin:16px 0 0;line-height:1.55;text-wrap:pretty;}
.page-head__lead p:first-child{margin-top:14px;}
.breadcrumb{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-faint);margin-bottom:18px;}
.breadcrumb a{color:var(--ink-soft);}
.breadcrumb a:hover{color:var(--accent);}
.breadcrumb .sep{opacity:.5;}

/* article meta */
.post-meta{display:flex;align-items:center;gap:16px;font-size:14px;color:var(--ink-faint);margin-top:20px;}
.post-meta time{font-variant-numeric:tabular-nums;}
.post-meta .meta-tags{display:flex;gap:7px;flex-wrap:wrap;}

/* ============================================================
   PROSE  (articles, about, methods, foundations)
   ============================================================ */
.prose{max-width:calc(var(--measure) + 2 * var(--gutter));margin:0 auto;padding:54px var(--gutter) 40px;font-size:18px;line-height:1.72;color:var(--ink-2);}
.prose > *:first-child{margin-top:0;}
.prose p{margin:0 0 1.35em;text-wrap:pretty;}
.prose h2{font-family:var(--display);font-weight:600;font-size:1.62em;line-height:1.18;letter-spacing:-.018em;color:var(--ink);margin:2em 0 .6em;}
.prose h3{font-family:var(--display);font-weight:600;font-size:1.3em;line-height:1.22;color:var(--ink);margin:1.8em 0 .5em;}
.prose h4,.prose h5{font-family:var(--display);font-weight:600;font-size:1.06em;letter-spacing:.01em;color:var(--ink);margin:1.7em 0 .4em;}
.prose h5{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;font-size:.82em;}
.prose a{color:var(--accent);text-decoration:none;border-bottom:1.5px solid color-mix(in srgb,var(--accent) 32%,transparent);transition:border-color .18s;}
.prose a:hover{border-bottom-color:var(--accent);}
.prose strong,.prose b{font-weight:700;color:var(--ink);}
.prose em{font-style:italic;}
.prose ul,.prose ol{margin:0 0 1.35em;padding-left:1.3em;}
.prose li{margin:.4em 0;padding-left:.3em;}
.prose li::marker{color:var(--accent);}
.prose blockquote{margin:1.8em 0;padding:4px 0 4px 26px;border-left:3px solid var(--accent);font-family:var(--display);font-weight:500;font-size:1.16em;line-height:1.4;color:var(--ink);font-style:normal;}
.prose blockquote p{margin:0 0 .4em;}
.prose blockquote strong{font-weight:600;}
.prose code{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:.86em;background:var(--paper-3);padding:2px 7px;border-radius:6px;color:var(--ink);}
.prose pre{background:var(--ink);color:#eee;padding:20px 22px;border-radius:var(--radius-sm);overflow:auto;margin:1.6em 0;font-size:.84em;line-height:1.55;}
.prose pre code{background:none;padding:0;color:inherit;}
.prose img{border-radius:var(--radius-sm);margin:1.8em 0;box-shadow:var(--shadow-sm);}
.prose hr{border:0;height:1px;background:var(--line);margin:2.6em 0;}
.prose hr + p,.prose hr ~ p em{color:var(--ink-soft);}
.prose > p > em:only-child{color:var(--ink-soft);font-size:.95em;}

/* post navigation + tags footer */
.post-foot{max-width:var(--measure);margin:0 auto;padding:8px 0 0;}
.tag-link{font-size:13px;font-weight:600;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line);padding:5px 13px;border-radius:999px;transition:color .18s,border-color .18s;}
.tag-link:hover{color:var(--accent);border-color:var(--accent);}
.post-nav{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line);margin-top:40px;padding-top:24px;font-weight:600;}
.post-nav a{color:var(--ink);display:inline-flex;flex-direction:column;gap:3px;max-width:46%;}
.post-nav a:hover{color:var(--accent);}

/* methods catalog list */
.method-list{list-style:none;margin:44px 0 0;padding:0;max-width:var(--measure);}
.method-list li{border-top:1px solid var(--line);}
.method-list li:last-child{border-bottom:1px solid var(--line);}
.method-row{display:block;padding:22px 2px;font-family:var(--display);font-weight:600;font-size:1.18em;letter-spacing:-.01em;color:var(--ink);transition:color .18s,padding-left .18s;}
.method-row:hover{color:var(--accent);padding-left:10px;}
.post-nav small{font-size:12px;color:var(--ink-faint);font-weight:600;text-transform:uppercase;letter-spacing:.06em;}
.post-nav__next{text-align:right;margin-left:auto;}

/* ============================================================
   LISTS  (journal / diary / category)
   ============================================================ */
.list-wrap{max-width:var(--measure);margin:0 auto;padding:48px 0 40px;}
.cat-filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:34px;}
.cat-filter a{font-size:13.5px;font-weight:600;color:var(--ink-soft);padding:7px 15px;border-radius:999px;border:1px solid var(--line);background:var(--paper);transition:all .18s;}
.cat-filter a:hover{color:var(--ink);border-color:var(--line-2);}
.cat-filter a.is-active{background:var(--ink);color:var(--paper);border-color:var(--ink);}
.year-group{margin:0 0 30px;}
.year-group h2{font-family:var(--display);font-weight:600;font-size:15px;letter-spacing:.04em;color:var(--ink-faint);margin:0 0 6px;padding-bottom:10px;border-bottom:1px solid var(--line);}
.entry{display:flex;gap:18px;align-items:baseline;padding:18px 0;border-bottom:1px solid var(--line);}
.entry__date{flex:none;width:74px;font-size:13.5px;color:var(--ink-faint);font-variant-numeric:tabular-nums;padding-top:3px;}
.entry__body{flex:1;min-width:0;}
.entry__title{font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:-.01em;color:var(--ink);line-height:1.25;transition:color .18s;}
.entry:hover .entry__title{color:var(--accent);}
.entry__desc{color:var(--ink-soft);font-size:15.5px;margin:6px 0 0;line-height:1.5;}
.entry__tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px;}

/* ============================================================
   APP-DETAIL page
   ============================================================ */
.app-hero{border-bottom:1px solid var(--line);background:var(--paper-2);}
.app-hero__inner{display:grid;grid-template-columns:1fr 300px;gap:48px;align-items:center;padding:56px 0;}
@media(max-width:860px){.app-hero__inner{grid-template-columns:1fr;gap:30px;}}
.app-hero__icon{width:96px;height:96px;border-radius:22px;overflow:hidden;box-shadow:var(--shadow-md),inset 0 0 0 1px rgba(27,26,23,.06);margin-bottom:22px;}
.app-hero__icon img{width:100%;height:100%;object-fit:cover;}
.app-hero h1{font-family:var(--display);font-weight:600;font-size:clamp(32px,4.6vw,48px);letter-spacing:-.022em;margin:0;line-height:1.05;}
.app-hero .tagline{font-size:20px;color:var(--ink-soft);margin:12px 0 0;}
.app-hero__cta{display:flex;gap:14px;margin-top:26px;flex-wrap:wrap;align-items:center;}
.app-hero__price{font-size:14px;color:var(--ink-faint);}
.app-hero__platforms{font-size:14px;color:var(--ink-faint);margin:14px 0 0;}
.app-shot{justify-self:center;}
.app-shot img{border-radius:var(--radius);box-shadow:var(--shadow-md);max-height:520px;width:auto;}

/* image lightbox */
.app-shot img,.prose img,img[data-zoom]{cursor:zoom-in;}
.lightbox{border:0;margin:0;padding:0;width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;background:transparent;overflow:hidden;}
.lightbox[open]{display:flex;align-items:center;justify-content:center;}
.lightbox::backdrop{background:rgba(20,19,16,.88);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);}
.lightbox__img{max-width:92vw;max-height:90vh;width:auto;height:auto;border-radius:10px;box-shadow:0 30px 90px rgba(0,0,0,.55);cursor:default;}
.lightbox__close{position:fixed;top:16px;right:20px;width:46px;height:46px;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .18s;}
.lightbox__close:hover{background:rgba(255,255,255,.28);}
.lightbox__close svg{width:20px;height:20px;}
.app-screens{padding:48px 0;overflow-x:auto;}
.app-screens img{border-radius:var(--radius);box-shadow:var(--shadow-sm);width:100%;}
.app-journal{max-width:var(--measure);margin:0 auto;padding:10px 0 0;}
.app-journal h3{font-family:var(--display);font-weight:600;font-size:1.3em;color:var(--ink);margin:0 0 6px;}

/* ============================================================
   FOOTER (shared)
   ============================================================ */
.site-footer{background:var(--paper);border-top:1px solid var(--line);padding:62px 0 38px;}
.site-footer__top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;}
@media(max-width:760px){.site-footer__top{grid-template-columns:1fr 1fr;gap:30px;}}
.site-footer .brand{font-size:23px;margin-bottom:14px;}
.footer-tagline{color:var(--ink-soft);font-size:14.5px;max-width:24em;line-height:1.55;}
.footer-acro{margin-top:16px;font-size:13px;color:var(--ink-faint);line-height:1.7;}
.footer-acro b{color:var(--ink-2);font-weight:600;}
.footer-col h4{font-family:var(--display);font-weight:600;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 14px;}
.footer-col a{display:block;color:var(--ink-soft);font-size:15px;padding:5px 0;transition:color .18s;}
.footer-col a:hover{color:var(--accent);}
.site-footer__bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:52px;padding-top:26px;border-top:1px solid var(--line);}
.site-footer__bottom p{margin:0;font-size:13.5px;color:var(--ink-faint);}
.site-footer__bottom .redirect b{color:var(--ink-2);font-weight:600;}

/* ============================================================
   reveal on scroll
   ============================================================ */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);}
.reveal.in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;}}
