/* FunnyHub V1.2 — tool-first design system.
   One dark surface, one accent (lime), one radius scale, one motion scale. */

:root{
  color-scheme:dark;
  --bg:#101018;
  --panel:#171722;
  --panel-2:#1d1d29;
  --panel-3:#252533;
  --canvas-bg:#0b0b12;
  --ink:#f6f5fb;
  --muted:#b4b3c1;
  --hint:#9a99a9;
  --line:rgba(255,255,255,.12);
  --line-strong:rgba(255,255,255,.22);
  --lime:#d8ff62;
  --lime-ink:#15151b;
  --danger:#ff9bb2;
  --radius:16px;
  --radius-md:12px;
  --radius-sm:10px;
  --shadow:0 18px 48px rgba(0,0,0,.38);
  /* shared scales: every page picks from these, no per-page values */
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;
  --text-xs:11px;--text-sm:13px;--text-base:15px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--text-3xl:36px;
  --measure:62ch;--maxw:1200px;
  --shadow-soft:0 10px 30px rgba(0,0,0,.28);
  --shadow-card:0 26px 70px rgba(0,0,0,.5);
  --font:'DM Sans',system-ui,-apple-system,"Segoe UI",sans-serif;
  --display:'Space Grotesk','DM Sans',system-ui,sans-serif;
  --ease:cubic-bezier(.2,.7,.3,1);
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100vh;
  background:var(--bg);
  color:var(--ink);
  font:15px/1.5 var(--font);
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button{font:inherit}
:focus-visible{outline:2px solid var(--lime);outline-offset:2px}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.skip-link{
  position:absolute;left:12px;top:-60px;z-index:100;
  display:inline-flex;align-items:center;min-height:44px;padding:0 14px;
  border-radius:10px;background:var(--lime);color:var(--lime-ink);
  font-weight:700;font-size:13px;transition:top .15s var(--ease);
}
.skip-link:focus{top:10px}

/* ---------- app bar ---------- */
.appbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;gap:18px;
  min-height:58px;padding:0 max(18px,calc((100vw - 1200px)/2 + 20px));
  background:rgba(16,16,24,.92);
  border-bottom:1px solid var(--line);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
}
.brand{display:flex;align-items:center;gap:9px;min-height:44px;font:700 18px/1 var(--display);letter-spacing:-.6px;flex:0 0 auto}
.brand-mark{
  display:grid;place-items:center;width:30px;height:30px;border-radius:9px;
  background:var(--lime);color:var(--lime-ink);font-weight:800;font-size:15px;
}
.brand-logo{display:block;width:30px;height:30px;border-radius:9px;object-fit:contain;flex:0 0 auto}
.brand-accent{color:var(--lime)}
.tagline{margin:0;min-width:0;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- tool layout ---------- */
.tool{
  display:grid;grid-template-columns:minmax(0,1fr) 392px;gap:18px;
  max-width:1200px;margin:0 auto;padding:18px 20px 24px;align-items:start;
}

/* ---------- stage / canvas ---------- */
.stage{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;min-width:0;
}
.stage-top{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:0 2px 10px;font-size:10px;letter-spacing:1.1px;font-weight:800;
}
.stage-title{color:var(--muted)}
.status-dot{color:var(--lime);font-size:10px}
.status-dot::before{content:"●";margin-right:5px}
.status-dot[data-state="error"]{color:var(--danger)}
.status-dot[data-state="busy"]{color:var(--ink)}
.canvas-shell{
  position:relative;display:grid;place-items:center;
  background:var(--canvas-bg);border:1px solid var(--line);border-radius:var(--radius-md);
  padding:8px;
}
#memeCanvas{
  display:block;width:100%;height:auto;aspect-ratio:1/1;max-width:100%;
  border-radius:8px;background:#262632;touch-action:none;cursor:crosshair;
}
#memeCanvas:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
.canvas-empty{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  margin:0;padding:10px 14px;border-radius:10px;
  background:rgba(16,16,24,.82);border:1px solid var(--line-strong);
  color:var(--muted);font-size:12.5px;text-align:center;pointer-events:none;
  max-width:80%;
}
.canvas-tip{margin:10px 2px 12px;min-height:16px;color:var(--hint);font-size:11px;letter-spacing:.2px}

/* ---------- action dock ---------- */
.dock{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px}
.dock-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:46px;padding:0 10px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--panel-3);color:var(--ink);
  font:700 12px/1 var(--font);letter-spacing:.2px;cursor:pointer;
  transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease);
}
.dock-btn:hover{border-color:var(--line-strong);background:#2b2b3b}
.dock-btn:disabled{opacity:.42;cursor:not-allowed}
.dock-primary{background:var(--lime);border-color:var(--lime);color:var(--lime-ink);font-weight:800}
.dock-primary:hover{background:#e3ff8a;border-color:#e3ff8a}
.dock-gif{border-color:rgba(216,255,98,.55);background:transparent;color:var(--lime)}
.dock-gif:hover{background:rgba(216,255,98,.12);border-color:var(--lime);color:var(--lime)}
.dock-gif:disabled{opacity:.42;cursor:not-allowed}
.dock-label-short{display:none}
.dock-icon{font-size:14px;line-height:1}

/* ---------- editor panel ---------- */
.panel{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px;min-width:0;
}
.panel-scroll{display:flex;flex-direction:column;gap:14px}
.group{
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-md);
  padding:14px;display:flex;flex-direction:column;gap:8px;
}
.group h2,.tpl-panel h2{
  margin:0 0 2px;color:var(--muted);font:800 10.5px/1.2 var(--font);
  letter-spacing:1.3px;text-transform:uppercase;
}
.group-last{gap:6px}

.field-label{color:var(--muted);font-size:10px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;margin-top:4px}

.panel input:not([type=range]):not([type=color]):not([type=file]),
.panel select{
  width:100%;min-height:44px;padding:10px 12px;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);
  color:var(--ink);font:14px var(--font);
  transition:border-color .15s var(--ease);
}
.panel input::placeholder{color:#7d7c8b}
.panel input:not([type=range]):not([type=color]):not([type=file]):hover,
.panel select:hover{border-color:var(--line-strong)}
.panel input:not([type=range]):not([type=color]):not([type=file]):focus,
.panel select:focus{border-color:var(--lime)}
.panel input:disabled{opacity:.55;cursor:not-allowed}
.panel select{cursor:pointer}

.panel input[type=file]{
  width:100%;min-height:44px;padding:7px;font-size:11px;color:var(--hint);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);
}
.panel input[type=file]::file-selector-button{
  margin-right:10px;padding:8px 12px;border-radius:8px;
  border:1px solid var(--line);background:var(--panel-3);color:var(--lime);
  font:700 11px var(--font);cursor:pointer;
}
.panel input[type=range]{width:100%;height:44px;padding:0;border:0;background:transparent;accent-color:var(--lime);cursor:pointer}
.color-input{
  width:44px;height:44px;padding:2px;border:2px solid var(--line);border-radius:50%;
  background:var(--bg);cursor:pointer;flex:0 0 auto;
}
.color-input.wide-input{width:100%;height:44px;border-radius:var(--radius-sm);border-width:1px}
.color-input:hover{border-color:var(--line-strong)}

.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.field{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase}
.field span{color:var(--lime);font-size:11px;letter-spacing:0}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:4px}
.row-between .field-label{margin:0}

.color-row{display:flex;align-items:center;gap:2px;padding:2px 0}
.swatch{
  position:relative;width:44px;height:44px;padding:0;border:0;border-radius:50%;
  background:transparent;cursor:pointer;flex:0 0 auto;
}
.swatch::before{
  content:"";position:absolute;left:50%;top:50%;width:28px;height:28px;
  transform:translate(-50%,-50%);border-radius:50%;
  background:var(--swatch,#fff);border:2px solid transparent;
}
.swatch[data-color="#ffffff"]{--swatch:#fff}
.swatch[data-color="#ffe66d"]{--swatch:#ffe66d}
.swatch[data-color="#ff8fab"]{--swatch:#ff8fab}
.swatch[data-color="#111111"]{--swatch:#111}
.swatch.active::before{outline:2px solid var(--lime);outline-offset:3px}
.swatch:hover::before{outline:1px solid var(--line-strong);outline-offset:3px}

.mode-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mode-btn{
  min-height:44px;padding:6px 4px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--bg);color:var(--muted);
  font:700 11px/1.2 var(--font);cursor:pointer;
  transition:background-color .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease);
}
.mode-btn:hover{border-color:var(--line-strong);color:var(--ink)}
.mode-btn.active{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.preset-row{grid-template-columns:repeat(4,1fr)}
.motion-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.combo-row{display:flex;flex-wrap:wrap;gap:8px}
.combo-row .chip-btn{min-height:44px;padding-inline:12px}
.combo-btn.active{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}

/* GIF encoding progress: a native progress element so strict CSP never needs
   inline style attributes. */
.export-progress{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.export-progress progress{
  width:100%;height:8px;border:0;border-radius:999px;overflow:hidden;
  background:var(--bg);color:var(--lime);
  -webkit-appearance:none;appearance:none;
}
.export-progress progress::-webkit-progress-bar{background:var(--bg);border-radius:999px}
.export-progress progress::-webkit-progress-value{background:var(--lime);border-radius:999px}
.export-progress progress::-moz-progress-bar{background:var(--lime);border-radius:999px}
.export-progress .hint{font-size:11px}

.chip-btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:0 14px;border-radius:999px;
  border:1px solid var(--line);background:var(--panel-3);color:var(--lime);
  font:700 11px/1 var(--font);letter-spacing:.2px;cursor:pointer;white-space:nowrap;
  transition:background-color .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease);
}
.chip-btn:hover{border-color:var(--line-strong);background:#2e2e3f}
.ghost-btn{
  width:100%;min-height:44px;padding:0 12px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:transparent;color:var(--muted);
  font:700 12px/1 var(--font);cursor:pointer;
  transition:border-color .15s var(--ease),color .15s var(--ease),background-color .15s var(--ease);
}
.ghost-btn:hover{border-color:var(--line-strong);color:var(--ink);background:var(--panel-3)}
.ghost-btn:disabled{opacity:.42;cursor:not-allowed}
.ghost-btn:disabled:hover{border-color:var(--line);color:var(--muted);background:transparent}

.hint{margin:0;color:var(--hint);font-size:11.5px;line-height:1.5}
.hint.warn{color:var(--danger)}
.file-label{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  min-height:44px;padding:0 12px;border:1px dashed var(--line-strong);border-radius:var(--radius-sm);
  color:var(--ink);font-size:12.5px;font-weight:700;cursor:pointer;
  transition:border-color .15s var(--ease),background-color .15s var(--ease);
}
.file-label:hover{border-color:var(--lime);background:rgba(216,255,98,.04)}
.file-meta{color:var(--hint);font-size:10.5px;font-weight:700;letter-spacing:.4px}

/* ---------- template strip ---------- */
.tpl-panel{display:flex;flex-direction:column;gap:10px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.panel-head h2{margin:0}
.head-actions{display:flex;gap:8px}
.sheet-only{display:none}

.filter-row{
  display:flex;gap:8px;flex-wrap:wrap;
  padding-bottom:2px;
}
.filter-row::-webkit-scrollbar{height:6px}
.filter-row::-webkit-scrollbar-thumb{background:#3a3a4a;border-radius:999px}
.filter{
  flex:0 0 auto;min-height:44px;padding:0 14px;border-radius:999px;
  border:1px solid var(--line);background:transparent;color:var(--muted);
  font:700 11.5px/1 var(--font);cursor:pointer;
  transition:background-color .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease);
}
.filter:hover{border-color:var(--line-strong);color:var(--ink)}
.filter.active{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}

.meme-grid{
  display:flex;gap:10px;overflow-x:auto;padding:2px 2px 6px;
  scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:#3a3a4a transparent;
  -webkit-overflow-scrolling:touch;
}
.meme-tile{
  flex:0 0 100px;min-width:0;scroll-snap-align:start;
  padding:0;border:0;border-radius:var(--radius-md);background:none;
  color:inherit;text-align:left;cursor:pointer;
}
.tile-art{
  position:relative;display:block;aspect-ratio:1/1;border-radius:var(--radius-md);
  overflow:hidden;border:1px solid var(--line);background:var(--canvas-bg);
  transition:border-color .15s var(--ease),transform .15s var(--ease);
}
.tile-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.tile-art span,.tile-art strong,.tile-art small{display:none}
.tile-meta{display:block;padding:6px 2px 0}
.tile-meta b{display:block;font:700 11px/1.3 var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile-meta small{display:block;color:var(--hint);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meme-tile:hover .tile-art,.meme-tile:focus-visible .tile-art{border-color:var(--lime)}
.meme-tile:focus-visible{outline:none}
.meme-tile:focus-visible .tile-art{box-shadow:0 0 0 2px var(--lime)}
.meme-tile[aria-current="true"] .tile-art{border-color:var(--lime);box-shadow:0 0 0 2px rgba(216,255,98,.3)}
.meme-tile[aria-current="true"] .tile-art::after{
  content:"✓";position:absolute;right:6px;top:6px;width:20px;height:20px;border-radius:50%;
  background:var(--lime);color:var(--lime-ink);font:800 12px/20px var(--font);text-align:center;
  box-shadow:0 2px 6px rgba(0,0,0,.35);
}
.meme-tile[aria-current="true"] .tile-meta b{color:var(--lime)}
.meme-tile[hidden]{display:none}

/* ---------- mobile template sheet ---------- */
.sheet-backdrop{position:fixed;inset:0;z-index:65;background:rgba(6,6,10,.62)}
.sheet-open .tpl-panel{transform:translateY(0)}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:88px;transform:translateX(-50%);z-index:80;
  display:flex;align-items:center;gap:12px;max-width:calc(100vw - 24px);
  padding:10px 10px 10px 14px;border-radius:var(--radius-md);
  background:var(--panel-3);border:1px solid var(--line-strong);box-shadow:var(--shadow);
  color:var(--ink);font-size:12px;pointer-events:none;
}
.toast .chip-btn{pointer-events:auto;min-height:44px;color:var(--ink);background:var(--panel-2)}

/* ---------- 404 ---------- */
.error-page{
  display:grid;justify-items:center;align-content:center;text-align:center;
  max-width:600px;min-height:calc(100vh - 130px);
  margin:0 auto;padding:48px 20px 56px;
}
.error-mark{
  margin:0;font:800 clamp(64px,14vw,120px)/1 var(--display);
  letter-spacing:-4px;color:var(--lime);
}
.error-title{margin:10px 0 0;font:700 clamp(22px,3vw,30px)/1.2 var(--display);letter-spacing:-.4px}
.error-copy{margin:12px 0 24px;max-width:46ch;color:var(--muted);font-size:15px}
.error-action{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:48px;padding:0 22px;border-radius:var(--radius-md);
  background:var(--lime);color:var(--lime-ink);font-weight:800;font-size:14px;
  transition:filter .15s var(--ease);
}
.error-action:hover{filter:brightness(1.06)}

/* ---------- footer ---------- */
.site-foot{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  max-width:1200px;margin:0 auto;padding:14px 20px 22px;
  border-top:1px solid var(--line);color:var(--hint);font-size:11px;
}
.site-foot nav{display:flex;gap:18px}
/* Transparent padding keeps the links visually inline but gives them a 44px target. */
.site-foot a{
  display:inline-flex;align-items:center;min-height:44px;padding:10px 0;color:var(--muted);
}
.site-foot a:hover{color:var(--lime)}

/* ---------- wide desktop: canvas first, panel scrolls independently ---------- */
@media (min-width:1120px){
  .canvas-shell{width:min(100%,calc(100vh - 262px));margin:0 auto}
  .canvas-tip{text-align:center}
  .dock{width:min(100%,520px);margin:0 auto}
  .panel{position:sticky;top:76px;max-height:calc(100vh - 94px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#3a3a4a transparent}
  #openTemplates{display:none}
  .toast{top:70px;bottom:auto}
}

/* ---------- tablet + phone: single column, fixed thumb dock, sheet templates ---------- */
@media (max-width:1119px){
  .tool{display:block;padding:12px 12px 90px}
  .stage{padding:12px}
  /* Keep the square canvas fully above the fixed thumb dock on short viewports
     (e.g. 1024×768) instead of letting the dock cover its bottom edge. */
  .canvas-shell{width:min(100%,calc(100vh - 190px));margin:0 auto}
  .panel{margin-top:14px}
  #openTemplates{display:inline-flex}

  .dock{
    position:fixed;left:0;right:0;bottom:0;z-index:60;
    grid-auto-flow:row;grid-template-columns:1.05fr .8fr .8fr 1.2fr 1.2fr;
    gap:8px;padding:9px 12px calc(9px + env(safe-area-inset-bottom));
    background:rgba(16,16,24,.96);border-top:1px solid var(--line-strong);
    -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  }
  .dock-btn{min-height:48px;font-size:11.5px;padding:0 8px}

  .tpl-panel{
    position:fixed;left:0;right:0;bottom:0;z-index:70;
    display:block;max-height:min(74vh,600px);overflow-y:auto;
    padding:14px 14px calc(14px + env(safe-area-inset-bottom));
    border-radius:18px 18px 0 0;border:1px solid var(--line-strong);border-bottom:0;
    box-shadow:0 -24px 60px rgba(0,0,0,.5);
    transform:translateY(105%);transition:transform .22s var(--ease);
  }
  .sheet-only{display:inline-flex}
  .tpl-panel::before{content:"";display:block;width:36px;height:4px;border-radius:999px;background:var(--line-strong);margin:0 auto 10px}
  .panel-head{margin-bottom:10px}
  .filter-row{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#3a3a4a transparent}
  .meme-grid{gap:10px}
  .meme-tile{flex-basis:106px}

  .field-label,.field{font-size:11px}
  .panel input:not([type=range]):not([type=color]):not([type=file]),
  .panel select{font-size:16px}
  .file-label,.ghost-btn,.mode-btn{font-size:12.5px}
  .chip-btn,.filter{font-size:12.5px;min-height:44px}
  .file-meta{font-size:10.5px}
  .panel input[type=file]{font-size:12px}
  .panel input[type=range]{height:44px}
  .color-input{width:44px;height:44px}
  .color-input.wide-input{height:46px}
  .hint{font-size:12.5px}
  .panel input,.panel select,.panel button{scroll-margin-block:100px}
  body.sheet-open{overflow:hidden}
  .site-foot{padding-bottom:14px}
}

/* tablet: centred single column, two control columns, canvas fully in view */
@media (min-width:700px) and (max-width:1119px){
  .stage{max-width:720px;margin:0 auto}
  .panel-scroll{display:grid;grid-template-columns:1fr 1fr;align-items:start}
  .tpl-panel{display:block}
}

@media (max-width:640px){
  .appbar{flex-wrap:wrap;gap:4px 12px;padding-block:9px}
  .tagline{flex-basis:100%;font-size:11px;white-space:normal;line-height:1.35}
  .brand{font-size:17px}
}
@media (max-width:420px){
  .tool{padding:10px 10px 88px}
  .stage{padding:10px}
  .dock{padding-inline:10px;gap:7px;grid-template-columns:1fr .78fr .78fr 1fr 1fr}
  .dock-btn{font-size:10.5px;padding:0 4px}
  .dock-label{display:none}
  .dock-label-short{display:inline}
  .dock-icon{display:none}
  .site-foot{padding-inline:12px;flex-wrap:wrap;gap:8px}
}
@media (max-width:340px){
  .dock-btn{font-size:10px;letter-spacing:0}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important;animation-iteration-count:1 !important}
}

/* ============================================================
   Landing page (/)
   Same tokens as the editor: one accent, one radius scale, one
   spacing and type scale. No page-local colour values.
   ============================================================ */
.landing{overflow-x:clip}
.landing .appbar{flex-wrap:nowrap;gap:var(--space-4)}
#templates,#why,#faq{scroll-margin-top:76px}

.appbar-nav{display:flex;align-items:center;gap:2px;margin-left:auto}
.nav-link{
  display:inline-flex;align-items:center;min-height:44px;padding:0 var(--space-3);
  border-radius:999px;color:var(--muted);font-size:var(--text-sm);font-weight:700;
  letter-spacing:.2px;transition:color .15s var(--ease),background-color .15s var(--ease);
}
.nav-link:hover{color:var(--ink);background:rgba(255,255,255,.06)}
.appbar-cta{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:0 var(--space-4);border-radius:999px;
  background:var(--lime);color:var(--lime-ink);font-size:var(--text-sm);font-weight:800;
  white-space:nowrap;transition:transform .15s var(--ease),filter .15s var(--ease);
}
.appbar-cta:hover{filter:brightness(1.06);transform:translateY(-1px)}

.nav-toggle{
  display:none;align-items:center;justify-content:center;
  width:44px;height:44px;padding:0;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;
}
.nav-toggle:hover{border-color:var(--line-strong);background:rgba(255,255,255,.06)}
.nav-toggle-bar,.nav-toggle-bar::before,.nav-toggle-bar::after{
  display:block;width:18px;height:2px;border-radius:2px;background:currentColor;
  transition:transform .2s var(--ease),opacity .15s var(--ease);
}
.nav-toggle-bar{position:relative}
.nav-toggle-bar::before,.nav-toggle-bar::after{content:"";position:absolute;left:0}
.nav-toggle-bar::before{top:-6px}
.nav-toggle-bar::after{top:6px}
body.nav-open .nav-toggle-bar{background:transparent}
body.nav-open .nav-toggle-bar::before{transform:translateY(6px) rotate(45deg)}
body.nav-open .nav-toggle-bar::after{transform:translateY(-6px) rotate(-45deg)}

/* ---------- hero ---------- */
.hero{
  position:relative;display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);
  align-items:center;gap:clamp(32px,5vw,72px);
  max-width:var(--maxw);margin:0 auto;
  padding:clamp(40px,7vw,92px) 20px clamp(40px,6vw,76px);
}
.hero::before{
  content:"";position:absolute;right:0;top:-14%;width:62%;height:78%;
  background:radial-gradient(circle at 60% 40%,rgba(216,255,98,.13),transparent 66%);
  pointer-events:none;z-index:0;
}
.hero-copy,.hero-preview{position:relative;z-index:1}
.eyebrow{
  margin:0 0 var(--space-3);color:var(--lime);
  font:800 var(--text-xs)/1.2 var(--font);letter-spacing:1.6px;text-transform:uppercase;
}
.hero-title{
  margin:0;font:700 clamp(40px,6.4vw,82px)/.98 var(--display);
  letter-spacing:-.035em;text-wrap:balance;
}
.hero-title-accent{color:var(--lime)}
.hero-sub{
  margin:var(--space-5) 0 0;max-width:var(--measure);
  color:var(--muted);font-size:clamp(15px,1.25vw,17px);line-height:1.6;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6)}
.btn-primary,.btn-secondary{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:52px;padding:0 var(--space-5);border-radius:999px;
  font-size:var(--text-base);font-weight:800;letter-spacing:.1px;
  transition:transform .15s var(--ease),filter .15s var(--ease),border-color .15s var(--ease),background-color .15s var(--ease),color .15s var(--ease);
}
.btn-primary{background:var(--lime);color:var(--lime-ink);box-shadow:0 14px 34px rgba(216,255,98,.16)}
.btn-primary:hover{filter:brightness(1.05);transform:translateY(-2px)}
.btn-primary:active{transform:translateY(0)}
.btn-secondary{border:1px solid var(--line-strong);background:rgba(255,255,255,.03);color:var(--ink)}
.btn-secondary:hover{border-color:var(--lime);background:rgba(216,255,98,.06);color:var(--lime);transform:translateY(-2px)}
.btn-secondary:active{transform:translateY(0)}
.hero-note{margin:var(--space-4) 0 0;color:var(--hint);font-size:var(--text-sm)}

.hero-preview{margin:0;width:min(100%,520px);justify-self:end}
.preview-frame{
  position:relative;aspect-ratio:1/1;overflow:hidden;
  border:1px solid var(--line-strong);border-radius:calc(var(--radius) + 6px);
  background:var(--canvas-bg);box-shadow:var(--shadow-card);
}
.preview-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.preview-caption{
  position:absolute;left:50%;transform:translateX(-50%);
  width:88%;text-align:center;text-transform:uppercase;
  font:800 clamp(17px,2.1vw,29px)/1.06 var(--display);letter-spacing:.02em;color:#fff;
  text-shadow:
    -2px 0 0 #111,2px 0 0 #111,0 -2px 0 #111,0 2px 0 #111,
    -2px -2px 0 #111,2px 2px 0 #111,-2px 2px 0 #111,2px -2px 0 #111,
    0 6px 16px rgba(0,0,0,.55);
}
.preview-top{top:5.5%}
.preview-bottom{bottom:5.5%}
.preview-badge{
  position:absolute;right:-10px;top:-12px;z-index:2;
  padding:6px 12px;border-radius:999px;background:var(--lime);color:var(--lime-ink);
  font:800 var(--text-xs)/1 var(--font);letter-spacing:1.1px;
  box-shadow:0 8px 20px rgba(0,0,0,.45);
}
.preview-caption-note{margin:var(--space-3) 0 0;color:var(--hint);font-size:var(--text-xs)}

/* ---------- template wall ---------- */
.wall,.features,.faq{max-width:var(--maxw);margin:0 auto;padding:clamp(44px,6vw,72px) 20px;border-top:1px solid var(--line)}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}
.section-title{
  margin:0;font:700 clamp(26px,3.4vw,40px)/1.08 var(--display);letter-spacing:-.025em;
}
.wall-count{margin:0;color:var(--hint);font-size:var(--text-sm);font-variant-numeric:tabular-nums}
.wall-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:var(--space-6) 0 var(--space-5)}
.landing .filter{
  min-height:44px;padding:0 var(--space-4);border-radius:999px;
  background:var(--panel-2);font-size:var(--text-sm);
}
.landing .filter:hover{border-color:var(--line-strong);color:var(--ink);background:var(--panel-3)}
.landing .filter.active{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.wall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:var(--space-4)}
.wall-card{display:block;min-width:0;border-radius:var(--radius-md);transition:transform .2s var(--ease)}
.wall-hit{display:block;min-width:0;color:inherit}
.wall-guide{
  display:block;width:max-content;max-width:100%;margin-left:auto;min-height:44px;padding:0 2px;
  color:var(--hint);font:600 var(--text-xs)/44px var(--font);
  text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.28);
  transition:color .15s var(--ease),text-decoration-color .15s var(--ease);
}
.wall-guide::after{content:"→";margin-left:5px;font-weight:700}
.wall-guide:hover{color:var(--lime);text-decoration-color:var(--lime)}
.wall-art{
  display:block;position:relative;aspect-ratio:1/1;overflow:hidden;
  border:1px solid var(--line);border-radius:var(--radius-md);background:var(--canvas-bg);
  transition:border-color .2s var(--ease),box-shadow .2s var(--ease),filter .2s var(--ease);
}
.wall-art img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s var(--ease)}
.wall-card:hover{transform:translateY(-3px)}
.wall-card:hover .wall-art{
  border-color:rgba(216,255,98,.7);filter:brightness(1.06);
  box-shadow:0 18px 40px rgba(0,0,0,.45),0 0 0 1px rgba(216,255,98,.3);
}
.wall-card:hover .wall-art img{transform:scale(1.035)}
.wall-card:focus-visible,.wall-hit:focus-visible{outline:none}
.wall-card:focus-visible .wall-art,.wall-hit:focus-visible .wall-art{box-shadow:0 0 0 3px var(--lime)}
.wall-card:active{transform:translateY(-1px)}
.wall-meta{display:block;padding:10px 2px 0;min-width:0}
.wall-meta b{display:block;font:700 var(--text-sm)/1.3 var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wall-meta small{display:block;margin-top:2px;color:var(--hint);font-size:var(--text-xs)}

/* ---------- feature cards ---------- */
.feature-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);margin-top:var(--space-6)}
.feature-card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:var(--space-5);
  transition:transform .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease);
}
.feature-card:hover{transform:translateY(-2px);border-color:var(--line-strong);box-shadow:var(--shadow-soft)}
.feature-icon{
  display:grid;place-items:center;width:40px;height:40px;margin-bottom:var(--space-4);
  border-radius:var(--radius-md);background:rgba(216,255,98,.12);color:var(--lime);
}
.feature-card h3{margin:0 0 var(--space-2);font:700 var(--text-lg)/1.25 var(--display);letter-spacing:-.01em}
.feature-card p{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:1.65}

/* ---------- FAQ ---------- */
.faq{padding-bottom:clamp(56px,8vw,96px)}
.faq-list{display:grid;gap:var(--space-2);max-width:820px;margin-top:var(--space-6)}
.faq-item{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);
  padding:0 var(--space-5);transition:border-color .15s var(--ease);
}
.faq-item:hover{border-color:var(--line-strong)}
.faq-item summary{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  min-height:56px;cursor:pointer;list-style:none;
  font-size:var(--text-base);font-weight:700;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{
  content:"+";color:var(--lime);font:400 22px/1 var(--font);
  transition:transform .2s var(--ease);
}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item p{margin:0 0 var(--space-4);max-width:var(--measure);color:var(--muted);font-size:var(--text-sm);line-height:1.65}

.landing .site-foot{padding-top:var(--space-5)}

/* ---------- landing responsive ---------- */
@media (max-width:1023px){
  .hero{grid-template-columns:minmax(0,1fr);gap:var(--space-7)}
  .hero-preview{justify-self:start;width:min(100%,460px)}
  .feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wall-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
}

@media (max-width:820px){
  .landing .appbar{flex-wrap:wrap;row-gap:0}
  .landing .nav-toggle{display:inline-flex;order:3;margin-left:var(--space-2)}
  .landing .appbar-cta{order:2;margin-left:auto}
  .landing .appbar-nav{
    display:none;order:4;flex-basis:100%;flex-direction:column;align-items:stretch;
    gap:2px;margin:0;padding:var(--space-2) 0 var(--space-3);
    border-top:1px solid var(--line);margin-top:var(--space-3);
  }
  body.nav-open .appbar-nav{display:flex}
  .landing .appbar-nav .nav-link{min-height:48px;padding:0 var(--space-3);border-radius:var(--radius-sm)}
  .hero{padding-top:var(--space-6)}
}

@media (max-width:640px){
  body:not(.landing) .tagline{display:none}
  .landing .appbar{padding-block:10px}
  /* Vertically compact hero: title, copy and preview scale with viewport height
     so the finished preview stays above the fold on short phones. */
  .hero{padding:var(--space-4) 16px var(--space-5);gap:var(--space-5)}
  .hero-title{font-size:clamp(32px,10.4vw,52px);font-size:clamp(32px,min(10.4vw,6.6svh),52px)}
  .hero-sub{margin-top:var(--space-3);font-size:var(--text-sm);line-height:1.55}
  .hero-actions{gap:var(--space-2);margin-top:var(--space-4)}
  .hero-note{margin-top:var(--space-2);font-size:var(--text-xs)}
  .btn-primary,.btn-secondary{flex:1 1 auto;min-height:48px;padding:0 var(--space-4);font-size:var(--text-sm)}
  .hero-preview{width:min(100%,340px);width:min(100%,40svh,340px);justify-self:center}
  .wall,.features,.faq{padding-left:16px;padding-right:16px}
  .wall-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}
  .feature-grid{grid-template-columns:minmax(0,1fr)}
  .section-head{align-items:flex-start}
  .landing .site-foot{padding-inline:16px}
}

@media (max-width:420px){
  .appbar-cta{display:none}
  .landing .nav-toggle{margin-left:auto}
  .hero-title{font-size:clamp(30px,10.6vw,40px);font-size:clamp(30px,min(10.6vw,6.4svh),40px)}
  .hero-preview{width:min(100%,300px);width:min(100%,40svh,300px)}
  .wall-filters{gap:6px}
  .landing .filter{min-height:44px;padding:0 13px;font-size:var(--text-xs)}
  .wall-meta b{font-size:var(--text-xs)}
}

/* Short phone screens (320×568, 375×667): trim vertical rhythm further and drop
   the tagline so the whole preview, caption included, lands above the fold.
   Tall phones and desktop never match this query. */
@media (max-width:640px) and (max-height:700px){
  .landing .appbar{padding-block:8px}
  .landing .tagline{display:none}
  .hero{padding:10px 16px 12px;gap:14px}
  .hero .eyebrow{margin-bottom:8px}
  .hero-title{font-size:clamp(30px,6.2svh,40px)}
  .hero-sub{margin-top:8px;font-size:12.5px;line-height:1.5}
  .hero-actions{margin-top:12px}
  .btn-primary,.btn-secondary{min-height:46px}
  .hero-note{display:none}
  .hero-preview{width:min(100%,38svh,320px)}
  .preview-caption-note{margin-top:8px}
}

/* Very short phones (320×568): the two hero buttons only need to stack because
   of 16px side padding, which alone pushes the preview caption below the fold.
   Tighter padding keeps them on one row, so the preview card ends above it. */
@media (max-width:640px) and (max-height:600px){
  .hero{padding:8px 16px 10px}
  .btn-primary,.btn-secondary{padding:0 12px;font-size:12.5px}
  .hero-preview{width:min(100%,37svh,320px)}
  .preview-caption-note{margin-top:6px;line-height:1.45}
}

@media (prefers-reduced-motion:reduce){
  .wall-card:hover,.wall-card:active,.feature-card:hover,
  .btn-primary:hover,.btn-secondary:hover,.appbar-cta:hover{transform:none}
  .wall-card:hover .wall-art img{transform:none}
}

/* ============================================================
   Template guides (/templates/<id>)
   Same tokens, same components as the landing page — no new
   colours, radii or type scales.
   ============================================================ */
.tpl{overflow-x:clip}
.tpl .appbar{flex-wrap:nowrap;gap:var(--space-3)}
.tpl-main{max-width:var(--maxw);margin:0 auto;padding:var(--space-2) 20px var(--space-8)}
.crumbs{
  display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;
  margin:var(--space-1) 0 var(--space-4);font-size:var(--text-xs);color:var(--hint);
}
.crumbs a{display:inline-flex;align-items:center;min-height:44px;padding:0 2px;color:var(--muted);font-weight:700}
.crumbs a:hover{color:var(--lime)}
.crumbs [aria-current]{color:var(--ink)}

.tpl-hero{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(20px,4vw,48px);align-items:center}
.tpl-art{margin:0;min-width:0}
.tpl-title{margin:var(--space-2) 0 0;font:800 clamp(30px,4.6vw,50px)/1.03 var(--display);letter-spacing:-.03em;text-wrap:balance}
.tpl-lede{margin:var(--space-3) 0 0;max-width:var(--measure);color:var(--muted);font-size:var(--text-lg);line-height:1.6}
.tpl-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5)}

.tpl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);margin-top:clamp(32px,5vw,56px)}
.tpl-card{min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-5)}
.tpl-card h2{
  margin:0 0 var(--space-4);color:var(--muted);
  font:800 var(--text-xs)/1.2 var(--font);letter-spacing:1.3px;text-transform:uppercase;
}
.tpl-steps,.tpl-ideas{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-3);counter-reset:step}
.tpl-steps li{position:relative;padding-left:36px;color:var(--muted);font-size:var(--text-sm);line-height:1.65;counter-increment:step}
.tpl-steps li::before{
  content:counter(step);position:absolute;left:0;top:0;
  display:grid;place-items:center;width:24px;height:24px;border-radius:50%;
  background:rgba(216,255,98,.14);color:var(--lime);font:800 11px/1 var(--font);
}
.tpl-ideas li{color:var(--ink);font:700 var(--text-sm)/1.5 var(--font)}
.tpl-ideas li::before{content:"“";color:var(--hint)}
.tpl-ideas li::after{content:"”";color:var(--hint)}
.tpl-hint{margin:var(--space-4) 0 0;color:var(--hint);font-size:var(--text-xs);line-height:1.6}
.tpl-hint a{color:var(--muted);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-strong)}
.tpl-hint a:hover{color:var(--lime);text-decoration-color:var(--lime)}

.tpl-related{margin-top:clamp(36px,5vw,64px)}
.tpl-related .section-title{margin:0 0 var(--space-5)}
.tpl-related-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-4)}

.tpl-index{margin-top:clamp(36px,5vw,64px);padding-top:var(--space-5);border-top:1px solid var(--line)}
.tpl-index h2{
  margin:0 0 var(--space-2);color:var(--muted);
  font:800 var(--text-xs)/1.2 var(--font);letter-spacing:1.3px;text-transform:uppercase;
}
.tpl-index ul{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:0 var(--space-4)}
.tpl-index a{display:flex;align-items:center;min-height:44px;color:var(--muted);font-size:var(--text-sm)}
.tpl-index a:hover{color:var(--lime)}

@media (max-width:900px){
  .tpl-hero{grid-template-columns:minmax(0,1fr);gap:var(--space-5)}
  /* Single column: name and the editor button come first so the primary action
     is above the fold on short phones; the artwork follows immediately. */
  .tpl-copy{order:-1}
  .tpl-art{width:100%;max-width:420px;justify-self:center}
  .tpl-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .tpl .appbar-cta{display:none}
  .tpl .appbar-nav{margin-left:auto}
  .tpl-main{padding-inline:16px}
  .tpl-title{font-size:clamp(28px,8.6vw,38px)}
  .tpl-lede{font-size:var(--text-base)}
  .tpl-related-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:400px){
  /* Two short nav links must stay on one line at 320 px. */
  .tpl .appbar{gap:var(--space-2);padding-inline:14px}
  .tpl .nav-link{padding:0 8px;font-size:12px;white-space:nowrap}
}

/* Guide pages: three short nav links stay on one line at 320 px, with the
   store link always reachable. */
.nav-link-store{display:flex}
.tpl .appbar-nav{margin-left:auto;gap:var(--space-2)}
.tpl .nav-link{white-space:nowrap}
@media (max-width:640px){
  .tpl .appbar{gap:var(--space-2);padding-inline:14px}
  .tpl .nav-link{padding:0 5px;font-size:11.5px}
  .tpl .appbar-nav{gap:0}
  .tpl .brand{gap:6px;font-size:16px;letter-spacing:-.5px}
}

/* ============================================================
   V1.3 — Free / Pro export panel, activation, pricing
   Reuses the same tokens, chips and panel surfaces as the rest of the site.
   ============================================================ */
.export-group{gap:var(--space-3)}
.export-plan{display:flex;flex-direction:column;gap:var(--space-2)}
.plan-badge{
  display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;
  min-height:26px;padding:0 10px;border-radius:999px;
  border:1px solid var(--line-strong);color:var(--muted);
  font:800 10.5px/1 var(--font);letter-spacing:1.2px;text-transform:uppercase;
}
.plan-badge.is-pro{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}
.export-facts{font-size:var(--text-xs);line-height:1.55}
.export-upsell{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);
  min-height:44px;padding:0 12px;border-radius:var(--radius-sm);
  border:1px solid rgba(216,255,98,.32);background:rgba(216,255,98,.05);
  color:var(--lime);font-size:var(--text-xs);font-weight:700;line-height:1.45;
  transition:background-color .15s var(--ease),border-color .15s var(--ease);
}
.export-upsell:hover{border-color:rgba(216,255,98,.65);background:rgba(216,255,98,.1)}
.license-box{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg)}
.license-box summary{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);
  min-height:44px;padding:10px 12px;border-radius:var(--radius-sm);
  color:var(--muted);font-size:var(--text-xs);font-weight:700;cursor:pointer;
  list-style-position:inside;
}
.license-box summary:hover{color:var(--ink);background:rgba(255,255,255,.03)}
.license-box[open] summary{border-bottom:1px solid var(--line);border-radius:var(--radius-sm) var(--radius-sm) 0 0}
.license-box.is-pro summary{color:var(--lime)}
.license-form{display:flex;flex-direction:column;gap:var(--space-2);padding:12px}
.license-form textarea{
  width:100%;min-height:56px;padding:10px 12px;resize:vertical;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);
  color:var(--ink);font:12px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;
}
.license-form textarea:focus{border-color:var(--lime)}
.license-form textarea::placeholder{color:#8a8999}
.license-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.license-activate{min-width:104px}
#licenseFeedback{font-size:var(--text-xs);line-height:1.55;overflow-wrap:anywhere}

/* ---------- pricing page ---------- */
.pricing{overflow-x:clip}
.pricing .appbar{flex-wrap:nowrap;gap:var(--space-3)}
.pricing .appbar-nav{margin-left:auto}
.pricing-main{max-width:var(--maxw);margin:0 auto;padding:clamp(28px,5vw,56px) 20px var(--space-7)}
.pricing-head{max-width:64ch;margin:0 0 var(--space-6)}
.pricing-title{margin:var(--space-3) 0 var(--space-3);font:700 clamp(32px,4.6vw,48px)/1.06 var(--display);letter-spacing:-.035em}
.pricing-lede{margin:0;color:var(--muted);font-size:var(--text-lg);line-height:1.55;max-width:var(--measure)}
.plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);align-items:stretch}
.plan-card{
  display:flex;flex-direction:column;gap:var(--space-4);
  padding:clamp(20px,3vw,30px);border:1px solid var(--line);
  border-radius:var(--radius);background:var(--panel);min-width:0;
}
.plan-card.is-pro{border-color:rgba(216,255,98,.4);background:linear-gradient(180deg,rgba(216,255,98,.05),rgba(216,255,98,0) 46%),var(--panel)}
.plan-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}
.plan-name{margin:0;font:700 var(--text-xl)/1.2 var(--display);letter-spacing:-.02em}
.plan-flag{
  display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;
  border:1px solid var(--line-strong);color:var(--muted);font:700 11px/1 var(--font);letter-spacing:.6px;
}
.plan-card.is-pro .plan-flag{border-color:rgba(216,255,98,.45);color:var(--lime)}
.plan-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0}
.plan-amount{font:700 clamp(34px,4vw,44px)/1 var(--display);letter-spacing:-.03em;color:var(--ink)}
.plan-terms{color:var(--hint);font-size:var(--text-sm)}
.plan-tagline{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:1.55}
.plan-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-2);flex:1}
.plan-list li{
  position:relative;padding-left:22px;color:var(--ink);font-size:var(--text-sm);line-height:1.5;
}
.plan-list li::before{content:"";position:absolute;left:0;top:9px;width:7px;height:7px;border-radius:50%;background:var(--lime)}
.plan-list li.is-limited{color:var(--muted)}
.plan-list li.is-limited::before{background:var(--hint)}
.plan-note{margin:0;color:var(--hint);font-size:var(--text-xs);line-height:1.55}
.plan-card .btn-primary,.plan-card .btn-secondary{justify-content:center;width:100%;text-align:center}
.checkout-pending{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);
  min-height:52px;padding:12px;border:1px dashed var(--line-strong);border-radius:var(--radius-sm);
  color:var(--muted);font-size:var(--text-sm);font-weight:700;text-align:center;
}
.checkout-pending a{display:inline-flex;align-items:center;min-height:44px;color:var(--lime);font-size:var(--text-sm);text-decoration:underline;text-underline-offset:3px}
.checkout-pending a:hover{color:var(--ink)}
.white-label{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;
  margin-top:var(--space-6);padding:var(--space-5) clamp(16px,3vw,24px);
  border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);
}
.white-label p{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:1.6;max-width:var(--measure)}
.white-label strong{color:var(--ink);font-weight:700}
.white-label a{flex:0 0 auto}
.pricing-footnote{margin:var(--space-5) 0 0;color:var(--hint);font-size:var(--text-xs);line-height:1.65;max-width:var(--measure)}
@media (max-width:900px){
  .plan-grid{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .pricing .appbar-cta{display:none}
  .pricing-main{padding-inline:16px}
  .pricing-lede{font-size:var(--text-base)}
}
@media (max-width:400px){
  .pricing .appbar{gap:var(--space-2);padding-inline:14px}
  .pricing .brand{gap:6px;font-size:16px;letter-spacing:-.5px}
  .pricing .appbar-nav{gap:0}
  .pricing .nav-link{padding:0 5px;font-size:11.5px;white-space:nowrap}
}

/* ============================================================
   Editorial guides (/guides, /guides/<slug>)
   Long-form reading column built from the same tokens as the
   template guides, so no new colours or type scales appear.
   ============================================================ */
.guide{overflow-x:clip}
.guide .appbar{flex-wrap:nowrap;gap:var(--space-3)}
.guide .appbar-nav{margin-left:auto;gap:var(--space-2)}
.guide .nav-link{white-space:nowrap}
.guide-main{max-width:820px;margin:0 auto;padding:var(--space-2) 20px var(--space-8)}
.guide-head{margin:0 0 clamp(28px,4vw,44px)}
.guide-title{margin:var(--space-2) 0 0;font:800 clamp(30px,4.4vw,46px)/1.05 var(--display);letter-spacing:-.03em;text-wrap:balance}
.guide-lede{margin:var(--space-3) 0 0;color:var(--muted);font-size:var(--text-lg);line-height:1.6;max-width:var(--measure)}
.guide-section{margin:0 0 clamp(28px,4vw,40px)}
.guide-section h2{margin:0 0 var(--space-3);font:700 clamp(21px,2.4vw,26px)/1.2 var(--display);letter-spacing:-.015em}
.guide-body p{margin:0 0 var(--space-4);max-width:var(--measure);color:var(--muted);font-size:var(--text-base);line-height:1.75}
.guide-steps{margin:0 0 var(--space-4);padding:0;list-style:none;display:grid;gap:var(--space-3);counter-reset:step;max-width:var(--measure)}
.guide-steps li{position:relative;padding-left:36px;color:var(--muted);font-size:var(--text-sm);line-height:1.7;counter-increment:step}
.guide-steps li::before{
  content:counter(step);position:absolute;left:0;top:0;
  display:grid;place-items:center;width:24px;height:24px;border-radius:50%;
  background:rgba(216,255,98,.14);color:var(--lime);font:800 11px/1 var(--font);
}
.guide-list{margin:0 0 var(--space-4);padding:0;list-style:none;display:grid;gap:var(--space-2);max-width:var(--measure)}
.guide-list li{
  padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:var(--panel);color:var(--ink);
}
.guide-list code{font:700 var(--text-sm)/1.5 var(--font);white-space:normal}
.guide-table-wrap{overflow-x:auto;margin:var(--space-4) 0;border:1px solid var(--line);border-radius:var(--radius-md)}
.guide-table{width:100%;min-width:460px;border-collapse:collapse;font-size:var(--text-sm)}
.guide-table th,.guide-table td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.guide-table th{color:var(--muted);font:800 var(--text-xs)/1.2 var(--font);letter-spacing:1.1px;text-transform:uppercase;background:var(--panel-2)}
.guide-table tr:last-child td{border-bottom:0}
.guide-table td{color:var(--muted);line-height:1.55}
.guide-table td:first-child{color:var(--ink);font-weight:700}
.guide-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4);margin-top:var(--space-6)}
.guide-card{
  display:flex;flex-direction:column;gap:var(--space-2);min-width:0;
  padding:var(--space-5);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  transition:transform .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease);
}
.guide-card:hover{transform:translateY(-2px);border-color:var(--line-strong);box-shadow:var(--shadow-soft)}
.guide-card-label{color:var(--lime);font:800 var(--text-xs)/1.2 var(--font);letter-spacing:1.1px;text-transform:uppercase}
.guide-card-title{font:700 var(--text-lg)/1.25 var(--display);letter-spacing:-.01em}
.guide-card-desc{color:var(--muted);font-size:var(--text-sm);line-height:1.6}
.guide-cta{margin-top:clamp(36px,5vw,56px)}
.guide-cta p{margin:0 0 var(--space-4);max-width:var(--measure);color:var(--muted);font-size:var(--text-sm);line-height:1.65}
.guide-cta .tpl-related-grid{margin:0 0 var(--space-5)}
.guide .site-foot{padding-inline:20px}
@media (max-width:640px){
  .guide .appbar-cta{display:none}
  .guide-main{padding-inline:16px}
  .guide-title{font-size:clamp(27px,8vw,36px)}
  .guide-lede{font-size:var(--text-base)}
  .guide .site-foot{padding-inline:16px}
}
@media (max-width:400px){
  .guide .appbar{gap:var(--space-2);padding-inline:14px}
  .guide .brand{gap:6px;font-size:16px;letter-spacing:-.5px}
  .guide .appbar-nav{gap:0}
  .guide .nav-link{padding:0 5px;font-size:11.5px;white-space:nowrap}
}
