@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap');

:root{
  --paper: #EFF2EE;
  --paper-line: #DCE2DA;
  --ink: #16211A;
  --ink-soft: #4B564E;
  --forest: #2F6F4E;
  --forest-dark: #204F37;
  --amber: #C9922B;
  --white: #FFFFFF;
  --mono: 'JetBrains Mono', monospace;
  --display: 'Space Grotesk', sans-serif;
  --body: 'Inter', sans-serif;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{ scroll-behavior:smooth; }
body{
  background: var(--paper);
  background-image:
    linear-gradient(var(--paper-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--paper-line) 1px, transparent 1px);
  background-size: 28px 28px;
  color: var(--ink);
  font-family: var(--body);
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
a{ color: var(--forest); }
.wrap{ width:min(760px, 92vw); margin:0 auto; }

/* header / nav */
header.site{
  display:flex; align-items:center; justify-content:space-between;
  padding: 22px 40px;
  flex-wrap:wrap;
  gap:12px;
}
.logo{
  font-family: var(--mono);
  font-weight:500;
  font-size:15px;
  letter-spacing:0.02em;
  display:flex; align-items:center; gap:8px;
  text-decoration:none;
  color: var(--ink);
}
.logo .dot{ color:var(--amber); }
nav.primary{ display:flex; align-items:center; gap:28px; }
nav.primary a{
  font-family: var(--mono);
  font-size:13px;
  color: var(--ink-soft);
  text-decoration:none;
  letter-spacing:0.02em;
}
nav.primary a:hover, nav.primary a.active{ color: var(--forest); }

main{ flex:1; padding: 20px 20px 80px; }

/* footer */
footer.site{
  padding: 28px 40px;
  display:flex; align-items:center; justify-content:center;
  gap:8px; flex-wrap:wrap; text-align:center;
  font-family: var(--mono);
  font-size:12px;
  color: var(--ink-soft);
  border-top:1px solid var(--paper-line);
}
footer.site a{ color: var(--forest); text-decoration:none; }
footer.site a:hover{ text-decoration:underline; }
footer.site .sep{ color: var(--paper-line); }

/* headings */
h1{ font-family: var(--display); font-weight:600; letter-spacing:-0.01em; }
h2{ font-family: var(--display); font-weight:600; letter-spacing:-0.01em; margin-top:36px; margin-bottom:12px; }
h3{ font-family: var(--display); font-weight:600; margin-top:24px; margin-bottom:8px; }
p{ line-height:1.65; color: var(--ink); margin-bottom:14px; }
.eyebrow{
  font-family: var(--mono); font-size:12px; color: var(--forest);
  letter-spacing:0.12em; text-transform:uppercase; margin-bottom:14px;
}

/* article / blog */
.article-header{ max-width:680px; margin:20px auto 30px; }
.article-header h1{ font-size: clamp(28px, 4vw, 40px); line-height:1.15; }
.article-meta{ font-family:var(--mono); font-size:12px; color:var(--ink-soft); margin-top:10px; }
.article-body{ max-width:680px; margin:0 auto; font-size:16px; }
.article-body ul, .article-body ol{ margin: 0 0 14px 22px; line-height:1.65; }
.article-body li{ margin-bottom:6px; }
.callout{
  background: var(--white); border:1px solid var(--paper-line); border-left:3px solid var(--forest);
  padding:16px 18px; border-radius:2px; margin: 20px 0; font-size:15px;
}
.faq-item{ border-top:1px solid var(--paper-line); padding:18px 0; max-width:680px; margin:0 auto; }
.faq-item h3{ margin-top:0; font-size:17px; }

/* blog list */
.post-card{
  display:block; background:var(--white); border:1px solid var(--paper-line);
  padding:20px 22px; margin-bottom:14px; text-decoration:none; color:var(--ink);
  transition: border-color .15s ease;
}
.post-card:hover{ border-color: var(--forest); }
.post-card .eyebrow{ margin-bottom:6px; }
.post-card h2{ margin:0 0 6px; font-size:20px; }
.post-card p{ margin:0; color:var(--ink-soft); font-size:14px; }

/* home hero / tool (index page specific bits) */
.hero{ text-align:center; max-width:640px; margin: 20px auto 40px; }
h1.hero-title{ font-size: clamp(32px, 5vw, 52px); line-height:1.08; text-align:center; }
h1.hero-title .cell{ color: var(--forest); }
.sub{ margin-top:16px; font-size:17px; color: var(--ink-soft); line-height:1.5; text-align:center; }

.morph{ margin: 36px auto 0; display:flex; align-items:center; justify-content:center; gap:18px; font-family: var(--mono); font-size:14px; }
.raw{ color: var(--ink-soft); white-space:nowrap; animation: fade 3.2s ease-in-out infinite; }
.arrow{ color: var(--amber); font-size:18px; }
.grid3{ display:grid; grid-template-columns: repeat(3, 44px); gap:0; }
.grid3 div{ border:1px solid var(--forest); background: var(--white); height:26px; display:flex; align-items:center; justify-content:center; font-size:12px; color: var(--ink); animation: pop 3.2s ease-in-out infinite; }
.grid3 div:nth-child(2){ animation-delay:0.08s;}
.grid3 div:nth-child(3){ animation-delay:0.16s;}
.grid3 div:nth-child(4){ animation-delay:0.24s;}
.grid3 div:nth-child(5){ animation-delay:0.32s;}
.grid3 div:nth-child(6){ animation-delay:0.4s;}
@keyframes fade{ 0%,60%{opacity:1;} 75%,100%{opacity:0.35;} }
@keyframes pop{ 0%,55%{transform:scale(1); background:var(--white);} 68%{transform:scale(1.06); background:#EAF3EC;} 82%,100%{transform:scale(1); background:var(--white);} }
@media (prefers-reduced-motion: reduce){ .raw, .grid3 div{ animation:none; } }

.drop{
  margin: 44px auto 0; width:min(560px, 90vw); border: 2px dashed var(--forest); border-radius:4px;
  background: var(--white); padding: 48px 24px; text-align:center; cursor:pointer;
  transition: border-color .15s ease, background .15s ease;
}
.drop:hover, .drop.hover{ border-color: var(--amber); background:#FDF9F0; }
.drop input{ display:none; }
.drop-label{ font-size:15px; color: var(--ink); }
.drop-label strong{ color: var(--forest); }
.drop-hint{ margin-top:8px; font-family:var(--mono); font-size:12px; color:var(--ink-soft); }
.status{ margin: 20px auto 0; width:min(560px, 90vw); font-family: var(--mono); font-size:13px; color: var(--ink-soft); min-height:20px; text-align:center; }
.preview{ margin: 20px auto 0; width:min(560px, 90vw); border:1px solid var(--paper-line); background: var(--white); max-height:220px; overflow:auto; display:none; font-family: var(--mono); font-size:12px; }
.preview table{ border-collapse:collapse; width:100%; }
.preview th, .preview td{ border:1px solid var(--paper-line); padding:6px 10px; text-align:left; white-space:nowrap; }
.preview th{ background:#F3F6F2; color: var(--forest-dark); font-weight:500; }
.download-btn{
  margin: 18px auto 0; display:none; font-family: var(--display); font-weight:600; font-size:15px;
  background: var(--forest); color: var(--white); border:none; padding:14px 28px; border-radius:4px; cursor:pointer;
  transition: background .15s ease, transform .1s ease;
}
.download-btn:hover{ background: var(--forest-dark); }
.download-btn:active{ transform: scale(0.98); }
.download-btn:focus-visible, .drop:focus-visible{ outline:3px solid var(--amber); outline-offset:2px; }
.trust{ margin-top:36px; font-size:13px; color: var(--ink-soft); text-align:center; }

.center{ text-align:center; }
