/* Base app CSS (layout + components).
   Token values are provided by the active theme: /themes/<theme>/theme.css.

   Fallback defaults in this file are intentionally minimal.
*/

:root{
  --color-bg:#fff;
  --color-surface:#fff;
  --color-surface-2:#fafafa;
  --color-text:#111;
  --color-scheme-toggle:var(--color-text);
  --color-muted:#666;
  --color-border:#e9e9e9;
  --color-accent:#111;
  --color-accent-contrast:#fff;
  --color-qr-bg:#fff;

  --font-body:ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  --font-size-base:16px;
  --line-height-base:1.7;

  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-7:32px;
  --space-8:48px;

  --radius-1:8px;
  --radius-2:10px;
  --radius-3:14px;
  --radius-4:999px;

  --content-max-width:720px;
}

[data-color-scheme="dark"]{
  --color-bg:#0f0f10;
  --color-surface:#171719;
  --color-surface-2:#1e1e21;
  --color-text:#f2f2f0;
  --color-scheme-toggle:var(--color-text);
  --color-muted:#a5a19a;
  --color-border:rgba(242,242,240,0.12);
  --color-accent:#f2f2f0;
  --color-accent-contrast:#0f0f10;
  --color-qr-bg:#fff;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background:var(--color-bg);
  color:var(--color-text);
  font:var(--font-size-base)/var(--line-height-base) var(--font-body);
}
a{color:var(--color-accent);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{opacity:.85}
.container{max-width:var(--content-max-width);margin:0 auto;padding:0 var(--space-5)}

/* Sticky site header (#127) */
.site-header{
  position:sticky;
  top:0;
  z-index:50;
  padding:var(--space-5) 0;
  border-bottom:1px solid var(--color-border);
  background:var(--color-surface);
}

.site-header-desktop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-4);
}

.site-header-right{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:var(--space-4);
}

.site-nav-inline{
  display:flex;
  align-items:center;
  gap:var(--space-4);
}

.site-header-mobile{display:none}

.brand{
  font-weight:700;
  font-size:20px;
  letter-spacing:.2px;
  text-decoration:none;
  color:inherit;
}

.nav-link{color:var(--color-muted);text-decoration:none}
.nav-link:hover{text-decoration:underline;color:var(--color-text)}

.scheme-toggle{appearance:none;border:0;background:transparent;color:var(--color-scheme-toggle);border-radius:var(--radius-4);padding:6px;line-height:0;cursor:pointer}
.scheme-toggle:hover{opacity:.85}
.scheme-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
.scheme-toggle__svg{display:block;width:18px;height:18px;fill:none;stroke:var(--color-scheme-toggle);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Mobile menu */
.mobile-menu{margin-top:var(--space-3)}
.mobile-menu-summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;color:var(--color-muted)}
.mobile-menu-summary::-webkit-details-marker{display:none}
.hamburger{width:18px;height:2px;background:var(--color-muted);position:relative;display:inline-block;border-radius:2px}
.hamburger::before,.hamburger::after{content:"";position:absolute;left:0;width:18px;height:2px;background:var(--color-muted);border-radius:2px}
.hamburger::before{top:-6px}
.hamburger::after{top:6px}
.mobile-menu-panel{margin-top:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-2);background:var(--color-surface);padding:var(--space-3)}
.site-nav-mobile{display:flex;flex-direction:column;gap:var(--space-3)}
.mobile-menu-actions{margin-top:var(--space-3);display:flex;justify-content:center}

@media (max-width: 520px){
  .hero h1{font-size:36px}
  .container{padding:0 16px}

  .site-header{padding:var(--space-4) 0}
  .site-header-desktop{display:none}
  .site-header-mobile{display:flex;flex-direction:column;align-items:center}
  .brand{font-size:22px}
}

.hero{padding:var(--space-8) 0 var(--space-5)}
.hero h1{font-size:44px;line-height:1.05;letter-spacing:-0.02em;margin:0 0 var(--space-2);text-align:center}
.hero .muted{text-align:center;max-width:44ch;margin:0 auto}

.muted{color:var(--color-muted)}

.post-list{padding:var(--space-5) 0 60px}
.post-card{padding:var(--space-4) 0}
.post-card + .post-card{border-top:1px solid var(--color-border)}
.post-card h2{font-size:18px;margin:0;font-weight:600;line-height:1.3}
.post-card .meta{margin-top:var(--space-1)}
.meta{font-size:13px;color:var(--color-muted)}
.desc{margin:8px 0 0;color:var(--color-muted);max-width:68ch}

.post{padding:var(--space-7) 0 60px}
.post h1{font-size:36px;line-height:1.1;letter-spacing:-0.01em;margin:0 0 var(--space-3)}

.content{margin-top:var(--space-5)}
.content p{margin:0 0 var(--space-4)}
.content h2{margin:var(--space-7) 0 var(--space-3);font-size:22px;line-height:1.25}
.content h3{margin:var(--space-6) 0 var(--space-2);font-size:18px;line-height:1.3}
.content ul,.content ol{margin:0 0 var(--space-4);padding-left:1.25em}
.content li{margin:0 0 var(--space-2)}
.content blockquote{margin:0 0 var(--space-4);padding:0 0 0 var(--space-4);border-left:3px solid var(--color-border);color:var(--color-muted)}
.content hr{border:0;border-top:1px solid var(--color-border);margin:var(--space-7) 0}

.content a{color:var(--color-accent)}
.content a:hover{text-decoration:underline}

.content pre{overflow:auto;padding:14px;border:1px solid var(--color-border);border-radius:var(--radius-2);background:var(--color-surface-2)}
.content code{font-family:var(--font-mono);font-size:.95em}
.content :not(pre) > code{background:var(--color-surface-2);border:1px solid var(--color-border);padding:0 6px;border-radius:6px}

/* Paywall */
.paywall{margin-top:var(--space-8)}
.paywall-card{
  border:1px solid var(--color-border);
  border-radius:var(--radius-3);
  padding:var(--space-7) var(--space-6);
  background:var(--color-surface);
  text-align:center;
  max-width:420px;
  margin:0 auto;
}
.paywall-icon{font-size:32px;margin-bottom:var(--space-3);line-height:1}
.paywall-title{font-weight:700;font-size:18px;margin-bottom:var(--space-2)}
.paywall-price{
  display:inline-block;
  background:var(--color-surface-2);
  border:1px solid var(--color-border);
  border-radius:var(--radius-4);
  padding:4px 14px;
  font-size:14px;
  font-weight:600;
  letter-spacing:0.02em;
  margin-bottom:var(--space-4);
}
.status{margin-top:var(--space-2);color:var(--color-muted);font-size:13px;line-height:1.5}
.btn{
  appearance:none;
  border:1px solid var(--color-text);
  background:var(--color-text);
  color:var(--color-accent-contrast);
  border-radius:var(--radius-4);
  padding:10px 22px;
  font-weight:600;
  font-size:14px;
  cursor:pointer;
  transition:opacity 0.15s ease;
}
.btn:hover{opacity:.88}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-secondary{background:transparent;color:var(--color-text);border-color:var(--color-border)}
.btn-secondary:hover{border-color:var(--color-muted)}
.paywall-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:var(--space-4)}
.invoice{
  margin-top:var(--space-5);
  border-top:1px solid var(--color-border);
  padding-top:var(--space-5);
  text-align:center;
}
.invoice-row{margin-bottom:var(--space-4)}
.invoice-label{font-size:11px;text-transform:uppercase;letter-spacing:0.08em;color:var(--color-muted);margin-bottom:var(--space-2)}
.bolt11{
  display:block;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  background:var(--color-surface-2);
  border:1px solid var(--color-border);
  padding:10px 14px;
  border-radius:var(--radius-2);
  font-size:11px;
  font-family:var(--font-mono);
  color:var(--color-muted);
}
#qrcode{
  background:var(--color-qr-bg);
  display:inline-block;
  padding:14px;
  border-radius:var(--radius-3);
  border:1px solid var(--color-border);
  line-height:0;
}
.invoice-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:var(--space-3)}

.site-footer{padding:var(--space-6) 0;border-top:1px solid var(--color-border);color:var(--color-muted);font-size:13px}

@media (max-width: 520px){
  .hero h1{font-size:36px}
  .container{padding:0 16px}
}

