/* Snap landing page. Tokens mirror the extension DSL (ui/dsl): #6103FC purple, #17173A ink,
   #F9F9FF canvas, #E3E3EA hairlines, pill buttons and Inter. Dark values mirror ui/dsl/dark.css. */
@font-face{font-family:SnapInter;src:url(assets/fonts/Inter-Regular.ttf) format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:SnapInter;src:url(assets/fonts/Inter-Medium.ttf) format('truetype');font-weight:500;font-display:swap}

:root{
  --purple:#6103fc;--purple-edge:#4d00cb;--purple-soft:#f3f1ff;--ink:#17173a;--text:#141419;--muted:#6d6d80;
  --canvas:#f9f9ff;--surface:#fff;--edge:#e3e3ea;--edge-strong:#d2d2da;--tint:#f4f4f5;--band:#160471;--band-text:#f3f1ff;--band-muted:#c9bdf5;
  --shadow:0 1px 2px #0000000a,0 12px 32px #17173a14;--radius:16px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --purple:#7a2cff;--purple-edge:#b999ff66;--purple-soft:#b999ff1f;--ink:#f0f0f3;--text:#f0f0f3;--muted:#b5b5bf;
  --canvas:#141416;--surface:#222225;--edge:#3c3c43;--edge-strong:#4a4a52;--tint:#19191c;--band:#1d1238;--band-text:#f0f0f3;--band-muted:#b5b5bf;
  --shadow:0 1px 2px #0000004d,0 16px 40px #00000066;color-scheme:dark;
}}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{margin:0;background:var(--canvas);color:var(--text);font:400 16px/1.6 SnapInter,Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
h1,h2,h3{margin:0;color:var(--ink);font-weight:500;letter-spacing:-.02em}
p{margin:0}
kbd{display:inline-block;min-width:1.5em;margin:0 .1em;padding:0 .35em;border-radius:6px;background:var(--tint);box-shadow:inset 0 0 0 .5px var(--edge-strong);font:500 .85em/1.6 SnapInter,Inter,sans-serif;text-align:center}
code{padding:.05em .35em;border-radius:6px;background:#ffffff1f;font:500 .9em ui-monospace,SFMono-Regular,Menlo,monospace}
.icon{flex:none}
.keys{white-space:nowrap}
.wrap{width:min(1120px,100% - 32px);margin-inline:auto}
.wrap--narrow{width:min(760px,100% - 32px)}
.skip{position:absolute;left:16px;top:-48px;z-index:10;padding:8px 14px;border-radius:30px;background:var(--surface);box-shadow:var(--shadow)}
.skip:focus{top:12px}
:focus-visible{outline:2px solid var(--purple);outline-offset:3px;border-radius:6px}

/* Buttons: DSL primary (gradient over #6103FC with #4D00CB edge) and secondary (white pill). */
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border-radius:30px;font:400 15px/20px SnapInter,Inter,sans-serif;text-decoration:none;white-space:nowrap;transition:filter .16s ease,background-color .16s ease,scale .12s ease}
.button:active{scale:.97}
.button--primary{color:#fff;background:linear-gradient(180deg,#fff0,#ffffff3d),var(--purple);box-shadow:inset 0 0 0 .75px var(--purple-edge),0 1px 0 #00000005,inset 0 1px 1px #ffffff40}
.button--primary:hover{filter:brightness(1.08)}
.button--secondary{color:var(--text);background:linear-gradient(180deg,#fff0,#0000000a),var(--surface);box-shadow:inset 0 0 0 .75px var(--edge-strong),0 1px 0 #00000005,inset 0 -1px 2px #0000000d}
.button--secondary:hover{background:linear-gradient(180deg,#fff0,#0000000f),var(--tint)}
.button--small{min-height:36px;padding:6px 16px;font-size:14px}

/* Navigation: a white capsule, like the editor navbar. */
.nav{position:sticky;top:0;z-index:5;padding:12px 0;background:color-mix(in srgb,var(--canvas) 82%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px)}
.nav-inner{display:flex;align-items:center;gap:24px;padding:8px 8px 8px 16px;border-radius:40px;background:var(--surface);box-shadow:inset 0 0 0 .5px var(--edge)}
.brand{display:flex;align-items:center;gap:3px;text-decoration:none}
.brand img:first-child{margin-top:-3px}
.nav nav{display:flex;gap:4px;margin-left:auto}
.nav nav a{padding:6px 12px;border-radius:30px;color:var(--muted);font-size:14px;text-decoration:none;transition:color .16s,background-color .16s}
.nav nav a:hover{color:var(--text);background:var(--tint)}
@media (prefers-color-scheme:dark){.wordmark{filter:brightness(0) invert(.94)}}

/* Hero */
.hero{padding:72px 0 40px;overflow:hidden}
.hero-copy{text-align:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:30px;background:var(--purple-soft);color:var(--purple);font-size:13px;font-weight:500}
@media (prefers-color-scheme:dark){.eyebrow{color:#cdb8ff}}
.hero h1{margin:24px auto 0;font-size:clamp(40px,7vw,76px);line-height:1.02;letter-spacing:-.035em}
.lede{max-width:640px;margin:24px auto 0;color:var(--muted);font-size:clamp(17px,2vw,20px);line-height:1.55}
.actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:32px}
.ph-badge{display:block;width:fit-content;margin:0 auto 20px;border-radius:10px;line-height:0}
.ph-badge img{display:block;width:250px;height:54px}
.stage{position:relative;margin:64px 0 56px}
.stage-shot{width:100%;border-radius:20px;box-shadow:inset 0 0 0 .5px var(--edge),var(--shadow);outline:.5px solid var(--edge);outline-offset:-.5px}
.stage-toolbar{position:absolute;right:4%;bottom:-44px;width:min(56%,600px)}

/* Sections */
.section{padding:96px 0}
.section--tint{background:var(--surface);box-shadow:inset 0 .5px 0 var(--edge),inset 0 -.5px 0 var(--edge)}
.kicker{margin-bottom:12px;color:var(--purple);font-size:14px;font-weight:500;letter-spacing:.02em}
@media (prefers-color-scheme:dark){.kicker{color:#b999ff}}
.section h2{max-width:640px;font-size:clamp(30px,4vw,44px);line-height:1.1}

.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:48px 0 0;padding:0;list-style:none}
.step{display:flex;flex-direction:column;padding:16px 16px 28px;border-radius:24px;background:var(--surface);box-shadow:inset 0 0 0 .5px var(--edge)}
.step-media{display:grid;place-items:center;height:240px;margin-bottom:24px;overflow:hidden;border-radius:14px;background:var(--canvas);box-shadow:inset 0 0 0 .5px var(--edge)}
.step-media img{max-height:100%;width:auto}
.step-media--popup img{height:108%;max-height:none;margin-top:6%;border-radius:10px;box-shadow:var(--shadow)}
.step-media--toolbar img{width:92%;max-height:none}
.step-media--annotate{place-items:stretch}
.step-media--annotate img{width:100%;height:100%;max-height:none;object-fit:cover;object-position:center}
.step-number{color:var(--muted);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}
.step h3{margin:4px 0 8px;font-size:20px}
.step p{color:var(--muted);font-size:15px}

.features{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:48px 0 0;padding:0;list-style:none}
.feature{padding:24px;border-radius:var(--radius);background:var(--canvas);box-shadow:inset 0 0 0 .5px var(--edge)}
.feature-icon{display:grid;place-items:center;width:40px;height:40px;margin-bottom:16px;border-radius:12px;background:var(--purple-soft);color:var(--purple)}
@media (prefers-color-scheme:dark){.feature-icon{color:#b999ff}}
.feature h3{margin-bottom:6px;font-size:17px}
.feature p{color:var(--muted);font-size:15px}
.formats{display:flex;flex-wrap:wrap;gap:8px;margin:32px 0 0;padding:0;list-style:none}
.formats li{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:30px;background:var(--canvas);box-shadow:inset 0 0 0 .5px var(--edge);color:var(--muted);font-size:14px;font-weight:500}

/* Privacy band */
.privacy{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;padding:56px;border-radius:28px;background:radial-gradient(120% 140% at 0% 0%,#6103fc59 0%,transparent 55%),var(--band);color:var(--band-text)}
.privacy h2{color:var(--band-text)}
.kicker--light{color:var(--band-muted)!important}
.privacy-copy p{margin-top:16px;color:var(--band-muted);font-size:17px}
.privacy-link{display:inline-flex;align-items:center;gap:6px;margin-top:24px;color:var(--band-text);font-weight:500;text-underline-offset:4px}
.privacy-points{display:grid;gap:12px;margin:0;padding:0;list-style:none}
.privacy-points li{display:flex;gap:14px;padding:16px;border-radius:var(--radius);background:#ffffff0f;box-shadow:inset 0 0 0 .5px #ffffff26}
.privacy-points .icon{margin-top:2px;color:#cdb8ff}
.privacy-points span{color:var(--band-muted);font-size:15px}
.privacy-points strong{display:block;color:var(--band-text);font-weight:500}

/* FAQ: native disclosure, so it works without scripts and with the keyboard. */
.faq{margin-top:40px;border-radius:var(--radius);background:var(--surface);box-shadow:inset 0 0 0 .5px var(--edge)}
.faq details+details{box-shadow:inset 0 .5px 0 var(--edge)}
.faq summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;color:var(--ink);font-size:17px;font-weight:500;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'';flex:none;width:9px;height:9px;margin-right:4px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-3px) rotate(45deg);transition:transform .25s cubic-bezier(.22,1,.36,1)}
.faq details[open] summary::after{transform:translateY(2px) rotate(-135deg)}
.faq details p{padding:0 24px 22px;color:var(--muted)}

.cta{text-align:center}
.cta-inner{display:flex;flex-direction:column;align-items:center}
.cta img{margin-bottom:24px}
.cta h2{margin-inline:auto}
.cta p{margin-top:12px;color:var(--muted);font-size:18px}

.footer{padding:32px 0 40px;color:var(--muted);font-size:14px}
.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;padding-top:24px;box-shadow:inset 0 .5px 0 var(--edge)}
.footer a{text-decoration:none}
.footer a:hover{color:var(--text);text-decoration:underline;text-underline-offset:3px}
.footer nav{display:flex;gap:20px}

/* Entrance: a short staggered rise (transitions.dev "Texts reveal"), skipped for reduced motion. */
@media (prefers-reduced-motion:no-preference){
  .hero-copy>*,.stage{animation:rise .7s cubic-bezier(.22,1,.36,1) both}
  .hero-copy>:nth-child(2){animation-delay:.06s}.hero-copy>:nth-child(3){animation-delay:.12s}.hero-copy>:nth-child(4){animation-delay:.18s}.hero-copy>:nth-child(5){animation-delay:.22s}.stage{animation-delay:.26s;animation-duration:.9s}
  @keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.button,.faq summary::after,.nav nav a{transition:none}}

/* PDF export showcase: copy beside a fanned stack of three real exported pages. */
.pdf-showcase{display:grid;grid-template-columns:1fr 1.05fr;gap:56px;align-items:center}
.pdf-lede{margin-top:16px;color:var(--muted);font-size:18px}
.pdf-points{display:grid;gap:18px;margin:32px 0 0;padding:0;list-style:none}
.pdf-points li{display:grid;grid-template-columns:40px 1fr;gap:14px;align-items:start}
.pdf-points li>svg{box-sizing:content-box;width:20px;height:20px;padding:10px;border-radius:12px;background:var(--purple-soft);color:var(--purple)}
@media (prefers-color-scheme:dark){.pdf-points li>svg{color:#b999ff}}
.pdf-points strong{display:block;margin-bottom:2px;font-size:17px;font-weight:600;color:var(--text)}
.pdf-points span{color:var(--muted);font-size:15px}
.pdf-stack{position:relative;aspect-ratio:1/1;min-height:0}
.pdf-page{position:absolute;top:50%;left:50%;width:58%;height:auto;border-radius:10px;box-shadow:0 0 0 .5px #17173a1f,0 24px 60px #17173a29;transform-origin:50% 60%;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.pdf-page--1{z-index:3;transform:translate(-50%,-50%) rotate(-1deg)}
.pdf-page--2{z-index:2;transform:translate(-30%,-52%) rotate(6deg)}
.pdf-page--3{z-index:1;transform:translate(-70%,-48%) rotate(-8deg)}
.pdf-stack:hover .pdf-page--2{transform:translate(-20%,-53%) rotate(9deg)}
.pdf-stack:hover .pdf-page--3{transform:translate(-80%,-47%) rotate(-11deg)}
@media (prefers-reduced-motion:reduce){.pdf-page{transition:none}}
@media (max-width:900px){
  .steps,.features{grid-template-columns:1fr 1fr}
  .pdf-showcase{grid-template-columns:1fr;gap:32px}.pdf-stack{max-width:560px;width:100%;margin:0 auto}
  .privacy{grid-template-columns:1fr;padding:40px 32px}
}
@media (max-width:640px){
  .nav nav{display:none}
  .nav-inner{justify-content:space-between}
  .hero{padding-top:48px}
  .stage{margin:40px 0 32px}
  .stage-toolbar{position:static;width:100%;margin-top:16px}
  .section{padding:72px 0}
  .steps,.features{grid-template-columns:1fr}
  .privacy{padding:32px 20px;border-radius:24px}
  .button{width:100%}
  .actions{flex-direction:column}
  .nav .button{width:auto}
}

/* Blog and article pages share the landing page's color and type tokens. */
.blog-hero{padding:64px 0 40px}
.blog-hero h1{max-width:850px;font-size:clamp(36px,5.5vw,64px);line-height:1.08;letter-spacing:-.035em}
.blog-intro{max-width:650px;margin-top:20px;color:var(--muted);font-size:20px}
.blog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:32px 0 0;padding:0;list-style:none}
.blog-card{height:100%;overflow:hidden;border:1px solid var(--edge);border-radius:24px;background:var(--surface)}
.blog-card a{display:flex;flex-direction:column;height:100%;text-decoration:none}
.blog-card a:hover h2,.blog-card a:hover h3{text-decoration:underline;text-underline-offset:4px}
.blog-cover{display:flex;align-items:center;justify-content:center;height:215px;padding:24px;background:var(--purple-soft);overflow:hidden}
.blog-cover img{width:100%;height:100%;object-fit:contain;border-radius:8px}
.blog-card-copy{display:flex;flex-direction:column;flex:1;padding:26px}
.blog-card h2,.blog-card h3{font-size:23px;line-height:1.25}
.blog-card p{margin-top:14px;color:var(--muted);font-size:15px}
.blog-card .kicker{margin:0 0 12px;font-size:13px}
.blog-card .read-more{margin-top:auto;padding-top:24px;color:var(--ink);font-size:14px}
.blog-list{padding-bottom:80px}
.blog-meta{margin-top:24px;color:var(--muted);font-size:14px}
.breadcrumbs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px;color:var(--muted);font-size:14px}
.article-layout{display:grid;grid-template-columns:minmax(0,760px) 240px;gap:72px;align-items:start;padding-bottom:80px}
.article-body{min-width:0;font-size:18px;line-height:1.8}
.article-body>p,.article-body>ul,.article-body>ol{margin:0 0 24px}
.article-body h2{margin:48px 0 18px;font-size:29px;line-height:1.25}
.article-body li{margin-bottom:10px}
.article-body a{text-underline-offset:4px}
.article-image{margin:0 0 36px;padding:24px;border:1px solid var(--edge);border-radius:20px;background:var(--purple-soft)}
.article-image img{max-height:420px;margin:auto;object-fit:contain}
.article-aside{position:sticky;top:104px;padding:24px;border:1px solid var(--edge);border-radius:20px;background:var(--surface);font-size:14px}
.article-aside h2{font-size:16px;margin-bottom:16px}
.article-aside ol{padding-left:18px;margin:0}
.article-aside li{margin-bottom:12px}
.article-aside a{text-decoration:none;color:var(--muted)}
.article-aside a:hover{text-decoration:underline}
.article-cta{margin-top:40px;padding:28px;border-radius:20px;background:var(--purple-soft)}
.article-cta h2{margin:0 0 12px}
.article-cta p{margin-bottom:20px}
.nav nav a[aria-current="page"]{color:var(--ink);background:var(--tint)}
@media(max-width:1000px){.nav-inner{gap:10px}.nav nav a{padding-inline:8px}.article-layout{grid-template-columns:minmax(0,1fr) 210px;gap:32px}.blog-grid{gap:16px}.blog-card-copy{padding:20px}}
@media(max-width:800px){.blog-grid{grid-template-columns:1fr}.blog-cover{height:240px}.article-layout{display:flex;flex-direction:column}.article-aside{position:static;order:-1;width:100%}.article-aside ol{columns:2}}
@media(max-width:640px){.nav nav{display:flex}.nav nav a{display:none}.nav nav a.blog-nav-link{display:block}.nav-inner{gap:6px}.nav nav{margin-left:auto}.nav .button{padding-inline:12px}.blog-hero{padding-top:40px}.blog-intro{font-size:18px}.article-body{font-size:17px}.article-aside ol{columns:1}}

.hero-note{max-width:640px;margin:24px auto 0;color:var(--muted);font-size:15px;line-height:1.6}

/* PDF export walkthrough */
.pdf-demo{margin:0;min-width:0}
.pdf-demo video{display:block;width:100%;height:auto;border-radius:16px;background:#17173a;box-shadow:0 0 0 .5px #17173a1f,0 24px 60px #17173a20}
.pdf-demo figcaption{margin-top:16px;color:var(--muted);font-size:14px;line-height:1.5;text-align:center}
