/* ==========================================================================
   apps-kit.css — shared shell for everything under elvinpeters.com/apps/
   Matches the main site: navy + gold, EB Garamond display, Inter text.
   Dark by default, light via prefers-color-scheme or [data-theme].
   ========================================================================== */

:root{
  --bg:#0a1524; --bg-2:#060d18; --panel:#101d30; --panel-2:#0c1626;
  --line:#213249; --line-soft:#1a2942;
  --ink:#e9eff7; --ink-2:#b7c6d9; --muted:#7f96b1;
  --gold:#c9a250; --gold-2:#e0bd6b; --cyan:#4fb3f0;
  --good:#4ec98a; --warn:#e2a33d; --bad:#e3706b;
  --glow: rgba(201,162,80,.16);
  --shadow: 0 24px 50px -28px rgba(0,0,0,.7);
  --lift: 0 34px 60px -30px rgba(0,0,0,.8);
  --serif:'EB Garamond',Georgia,'Times New Roman',serif;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --r:14px; --r-sm:10px; --r-pill:999px;
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#e9edf2; --bg-2:#e2e7ee; --panel:#f6f8fb; --panel-2:#eef2f7;
    --line:#cdd6e2; --line-soft:#dbe2ec;
    --ink:#0e1a2b; --ink-2:#3d4d63; --muted:#6a7c93;
    --gold:#9c761f; --gold-2:#b3892f; --cyan:#1c6ea8;
    --good:#1d8c5b; --warn:#a2701a; --bad:#b8433d;
    --glow: rgba(156,118,31,.14);
    --shadow: 0 18px 40px -24px rgba(14,26,43,.45);
    --lift: 0 26px 50px -28px rgba(14,26,43,.55);
  }
}
:root[data-theme="light"]{
  --bg:#e9edf2; --bg-2:#e2e7ee; --panel:#f6f8fb; --panel-2:#eef2f7;
  --line:#cdd6e2; --line-soft:#dbe2ec;
  --ink:#0e1a2b; --ink-2:#3d4d63; --muted:#6a7c93;
  --gold:#9c761f; --gold-2:#b3892f; --cyan:#1c6ea8;
  --good:#1d8c5b; --warn:#a2701a; --bad:#b8433d;
  --glow: rgba(156,118,31,.14);
  --shadow: 0 18px 40px -24px rgba(14,26,43,.45);
  --lift: 0 26px 50px -28px rgba(14,26,43,.55);
}
:root[data-theme="dark"]{
  --bg:#0a1524; --bg-2:#060d18; --panel:#101d30; --panel-2:#0c1626;
  --line:#213249; --line-soft:#1a2942;
  --ink:#e9eff7; --ink-2:#b7c6d9; --muted:#7f96b1;
  --gold:#c9a250; --gold-2:#e0bd6b; --cyan:#4fb3f0;
  --good:#4ec98a; --warn:#e2a33d; --bad:#e3706b;
  --glow: rgba(201,162,80,.16);
  --shadow: 0 24px 50px -28px rgba(0,0,0,.7);
  --lift: 0 34px 60px -30px rgba(0,0,0,.8);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{margin:0}
body{
  background:
    radial-gradient(1100px 520px at 82% -8%, var(--glow), transparent 60%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);
  background-attachment:fixed;
  color:var(--ink); font-family:var(--sans); line-height:1.6; min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;margin:0;text-wrap:balance;letter-spacing:-.01em}
img,svg,canvas{max-width:100%}
.container{max-width:1120px;margin:0 auto;padding:0 24px}
.eyebrow{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-2);font-weight:600}
.muted{color:var(--muted)}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:40;backdrop-filter:blur(10px);
  background:color-mix(in srgb, var(--bg) 78%, transparent);border-bottom:1px solid var(--line-soft)}
.nav .container{display:flex;align-items:center;gap:20px;height:64px}
.brandmark{display:flex;align-items:center;gap:11px;font-family:var(--serif);font-size:18px;letter-spacing:.02em}
.brandmark .sig{width:32px;height:32px;border:1px solid var(--line);border-radius:9px;
  display:grid;place-items:center;background:var(--panel);box-shadow:var(--shadow);flex:0 0 auto}
.nav .links{margin-left:auto;display:flex;gap:22px;align-items:center}
.nav .links a{font-size:14px;color:var(--ink-2)}
.nav .links a:hover{color:var(--ink)}
.nav .links a.cta{border:1px solid var(--gold);color:var(--gold-2);padding:8px 15px;
  border-radius:var(--r-pill);font-weight:600}
.nav .links a.cta:hover{background:var(--gold);color:var(--bg-2)}
.themebtn{background:none;border:1px solid var(--line);color:var(--ink-2);
  width:44px;height:44px;border-radius:10px;cursor:pointer;font-size:15px;line-height:1;padding:0;
  display:inline-flex;align-items:center;justify-content:center}
.themebtn:hover{color:var(--ink);border-color:var(--gold)}
@media(max-width:820px){.nav .links a:not(.cta){display:none}}

/* ---------- panels & cards ---------- */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.card{display:flex;flex-direction:column;gap:8px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r);padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden;
  transition:transform .18s cubic-bezier(.2,.9,.3,1.2), box-shadow .18s, border-color .18s}
.card:hover{transform:translateY(-4px);box-shadow:var(--lift);border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}

/* ---------- controls ---------- */
label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
input,select,textarea,button{font-family:inherit;font-size:16px;color:var(--ink)}
input[type=text],input[type=number],input[type=date],select,textarea{
  width:100%;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:11px 13px;transition:border-color .15s, box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 22%,transparent)}
input[type=range]{width:100%;accent-color:var(--gold)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;
  border:1px solid var(--line);background:var(--panel-2);color:var(--ink);
  padding:10px 18px;min-height:44px;border-radius:var(--r-pill);font-weight:600;font-size:14px;transition:.15s}
.btn:hover{border-color:var(--gold);color:var(--gold-2)}
.btn.primary{background:var(--gold);border-color:var(--gold);color:#0a1524}
.btn.primary:hover{background:var(--gold-2);border-color:var(--gold-2);color:#0a1524}

/* ---------- misc ---------- */
.tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--gold-2);background:color-mix(in srgb,var(--gold) 14%,transparent);
  border-radius:var(--r-pill);padding:4px 10px}
.crumb{font-size:13px;color:var(--muted);padding:22px 0 0}
.crumb a:hover{color:var(--gold-2)}
.foot{border-top:1px solid var(--line-soft);margin-top:70px;padding:30px 0 50px;
  color:var(--muted);font-size:13px}
.foot a:hover{color:var(--gold-2)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- mobile drawer ------------------------------------------------
   js/site.js injects a burger + drawer on these pages, but the kit does not
   load css/site.css, so from 2026-08-04 until now that chrome rendered with
   default browser styles: an unstyled list of links dumped at the foot of the
   page. These rules are the kit's own copy, in kit tokens, at 44px targets. */
.navburger{
  display:none; align-items:center; justify-content:center;
  width:44px; height:44px; margin-left:auto;
  background:none; border:1px solid var(--line); border-radius:10px;
  color:var(--ink); cursor:pointer; font-size:18px; line-height:1; padding:0;
}
.navburger[aria-expanded="true"]{border-color:var(--gold);color:var(--gold-2)}
.navdrawer{
  display:none; position:fixed; top:64px; left:0; right:0; z-index:60;
  background:var(--panel); border-bottom:1px solid var(--line);
  box-shadow:var(--shadow); padding:16px 22px 24px;
  max-height:calc(100vh - 64px); overflow:auto;
}
.navdrawer.open{display:block}
.navdrawer a{
  display:flex; align-items:center; min-height:44px; padding:0 8px;
  font-size:18px; color:var(--ink); border-bottom:1px solid var(--line);
  text-decoration:none;
}
.navdrawer a:last-child{border-bottom:none}
.navdrawer a.cta{
  justify-content:center; margin:0 0 12px; border:1px solid var(--gold);
  border-radius:var(--r-pill); color:var(--gold-2); font-weight:600;
}
.navoverlay{display:none;position:fixed;inset:64px 0 0 0;z-index:50;background:rgba(4,10,20,.45)}
.navoverlay.open{display:block}
@media(max-width:920px){.navburger{display:inline-flex}}
@media(max-width:640px){
  /* the CTA is the drawer's first item, so free the bar for brand + burger */
  .nav .links a.cta{display:none}
  .nav .brand{white-space:nowrap}
  .navburger{flex:none}
}
