/* ==========================================================================
   Nicholas Lasagna — Portfolio CSS
   - Premium glass + soft glow, never gimmicky
   - Strong hierarchy, spacing, and readability
   - Mobile-first refinements
   - Modal bug-proof (no "Project + X" ghost UI)
   ========================================================================== */

/* -----------------------------
   Design tokens
------------------------------ */
:root{
  /* Color system */
  --bg:#0b0f19;
  --bg-elev:#0f1629;
  --bg-elev-2:#121c33;
  --text:#e7eaf0;
  --muted:#aab2c0;
  --muted-2:#7f889a;

  --border:rgba(255,255,255,0.10);
  --border-strong:rgba(255,255,255,0.16);

  --shadow:0 10px 30px rgba(0,0,0,0.35);
  --shadow-2:0 18px 60px rgba(0,0,0,0.38);

  --accent:#7aa2ff;
  --accent-2:#a0ffda;
  --accent-3:#ffb86b;

  /* Layout */
  --radius-xs:10px;
  --radius-sm:12px;
  --radius-md:16px;
  --radius-lg:18px;
  --radius-xl:24px;

  --container:1100px;

  /* Spacing scale */
  --s-1: 6px;
  --s0: 10px;
  --s1: 12px;
  --s2: 14px;
  --s3: 16px;
  --s4: 18px;
  --s5: 22px;
  --s6: 28px;
  --s7: 34px;
  --s8: 44px;
  --s9: 64px;

  /* Motion */
  --ease: cubic-bezier(.2,.8,.2,1);
  --ease-out: cubic-bezier(.2,.9,.2,1);
  --t-fast: 120ms;
  --t-med: 180ms;
  --t-slow: 280ms;

  /* Typography */
  --font: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;

  /* Background "glow" intensity */
  --glow-1: rgba(122,162,255,0.15);
  --glow-2: rgba(160,255,218,0.10);

  /* Extra polish */
  --ring: color-mix(in srgb, var(--accent) 55%, transparent);
  --glass: color-mix(in srgb, var(--bg-elev) 86%, transparent);
  --glass-2: color-mix(in srgb, var(--bg-elev) 92%, transparent);
  --hairline: color-mix(in srgb, var(--border) 70%, transparent);
  
  --gutter: clamp(14px, 4vw, 24px);
}

/* Light theme */
[data-theme="light"]{
  --bg:#f7f8fb;
  --bg-elev:#ffffff;
  --bg-elev-2:#f2f4fb;

  --text:#101322;
  --muted:#4e5668;
  --muted-2:#66708a;

  --border:rgba(16,19,34,0.12);
  --border-strong:rgba(16,19,34,0.18);

  --shadow:0 10px 30px rgba(16,19,34,0.12);
  --shadow-2:0 18px 60px rgba(16,19,34,0.14);

  --accent:#2d5bff;
  --accent-2:#0aa36b;
  --accent-3:#ff8b2c;

  --glow-1: rgba(45,91,255,0.12);
  --glow-2: rgba(10,163,107,0.10);

  --ring: color-mix(in srgb, var(--accent) 45%, transparent);
  --glass: color-mix(in srgb, var(--bg-elev) 92%, transparent);
  --glass-2: color-mix(in srgb, var(--bg-elev) 98%, transparent);
  --hairline: color-mix(in srgb, var(--border) 55%, transparent);
}

/* -----------------------------
   Base / Reset-ish
------------------------------ */

html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
}
@supports not (overflow-x: clip) {
  html, body { overflow-x: hidden; }
}

* { 
  box-sizing:border-box;
  max-width: 100%;
}

html{
  scroll-behavior:smooth;
  text-rendering: geometricPrecision;
}
body{
  margin:0;
  min-height: 100dvh;
  font-family:var(--font);
  color:var(--text);
  line-height:1.55;
  letter-spacing:-0.01em;
  overflow-x:hidden;

  /* Background with tasteful "studio lighting" */
  background:
    radial-gradient(1200px 800px at 18% 10%, var(--glow-1), transparent 60%),
    radial-gradient(900px 700px at 82% 22%, var(--glow-2), transparent 58%),
    radial-gradient(520px 400px at 65% 75%, rgba(255,184,107,0.07), transparent 60%),
    var(--bg);
}

img, svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
a:hover{ text-decoration:underline; text-underline-offset:3px; }
button, input{ font:inherit; color:inherit; }

::selection{
  background: color-mix(in srgb, var(--accent) 30%, transparent);
}

/* Subtle scrollbar polish */
@supports (scrollbar-color: auto){
  *{
    scrollbar-color: color-mix(in srgb, var(--muted-2) 45%, transparent) transparent;
    scrollbar-width: thin;
  }
}

/* Container */
.container{
  width: min(var(--container), calc(100% - (2 * var(--gutter))));
  margin: 0 auto;
  padding-left: env(safe-area-inset-left);
  padding-right: env(safe-area-inset-right);
}

/* Screen-reader only utility */
.sr-only{
  position:absolute !important;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

/* Skip link */
.skip-link{
  position:absolute;
  left:-999px;
  top:12px;
  background:var(--bg-elev);
  border:1px solid var(--border);
  padding:10px 12px;
  border-radius:var(--radius-sm);
  z-index:9999;
  box-shadow:var(--shadow);
}
.skip-link:focus{
  left:12px;
  outline:none;
}

/* Focus states */
:focus-visible{
  outline:3px solid var(--ring);
  outline-offset:3px;
  border-radius:var(--radius-sm);
}

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

/* -----------------------------
   Header / Navigation
------------------------------ */
.site-header,
header{
  position:sticky;
  top:0;
  z-index:100;

  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  background: color-mix(in srgb, var(--bg) 74%, transparent);
  border-bottom:1px solid var(--hairline);
}

.nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 0;
  gap:16px;
  min-height: 60px;
}

/* Brand */
.brand{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:200px;
  flex-shrink: 0;
}
.brand-name,
.brand strong{
  font-size:13px;
  letter-spacing:0.10em;
  text-transform:uppercase;
  opacity:0.98;
  white-space: nowrap;
}
.brand-subtitle,
.brand span{
  font-size:13px;
  color:var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Nav list */
.nav-list{
  list-style:none;
  padding:0;
  margin:0;
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  justify-content:flex-end;
}

/* Prevent flex/grid children from forcing overflow */
.nav, .hero-wrap, .grid, .contact-grid, .projects-controls {
  min-width: 0;
}

.card, .card-inner, .quick .row, .contact-item, .toplink-row {
  min-width: 0;
}

/* Prevent long URLs from pushing layout wider */
a, .value, .contact-item div, .toplink-note, .featured-sub, .subtitle, p {
  overflow-wrap: anywhere;
  word-break: break-word;
}

.nav-link{
  font-size:14px;
  color:var(--muted);
  padding:8px 10px;
  border-radius:var(--radius-sm);
  border:1px solid transparent;
  transition:
    background var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease),
    color var(--t-med) var(--ease),
    transform var(--t-fast) var(--ease-out);
}
.nav-link:hover{
  color:var(--text);
  background: color-mix(in srgb, var(--bg-elev) 82%, transparent);
  border-color: var(--hairline);
  transform: translateY(-1px);
  text-decoration:none;
}

/* Nav actions */
.nav-actions{
  display:flex;
  gap:10px;
  align-items:center;
  justify-content:flex-end;
  min-width:200px;
}

/* -----------------------------
   Buttons
------------------------------ */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:10px 12px;

  font-size:14px;
  font-weight:650;

  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background: color-mix(in srgb, var(--bg-elev) 90%, transparent);
  color:var(--text);

  cursor:pointer;
  user-select:none;
  white-space:nowrap;

  transition:
    transform var(--t-fast) var(--ease-out),
    background var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease),
    box-shadow var(--t-med) var(--ease),
    filter var(--t-med) var(--ease);
}

.btn:hover{
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--accent) 38%, var(--border));
  background: color-mix(in srgb, var(--bg-elev) 98%, transparent);
  box-shadow: 0 14px 28px rgba(0,0,0,0.16);
  text-decoration:none;
}
.btn:active{
  transform: translateY(0px);
  box-shadow: none;
}

.btn.primary{
  border-color: color-mix(in srgb, var(--accent) 44%, var(--border));
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--accent) 26%, var(--bg-elev)),
      color-mix(in srgb, var(--bg-elev) 86%, var(--accent) 8%)
    );
}
.btn.primary:hover{
  filter: saturate(1.05) brightness(1.02);
}

.btn.ghost{
  background: transparent;
}

/* Inline icon */
.icon{
  width:16px;
  height:16px;
  display:inline-block;
  opacity:0.92;
}

/* -----------------------------
   Layout / Sections
------------------------------ */
main{ padding:28px 0 64px; }
section{ padding:64px 0; }

.section-title{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin-bottom:18px;
}
.section-title h2{
  margin:0;
  font-size:22px;
  letter-spacing:-0.02em;
}
.section-title p{
  margin:0;
  color:var(--muted);
  font-size:14px;
  max-width:640px;
}

.grid{ display:grid; gap:16px; }

/* -----------------------------
   Card system (premium glass)
------------------------------ */
.card{
  position:relative;
  background: var(--glass);
  border:1px solid var(--hairline);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  overflow:hidden;
  isolation:isolate;
}

/* Subtle gradient sheen on hover */
.card::after{
  content:"";
  position:absolute;
  inset:-2px;
  background: linear-gradient(120deg,
    color-mix(in srgb, var(--accent) 22%, transparent),
    color-mix(in srgb, var(--accent-2) 14%, transparent),
    transparent 55%);
  opacity:0;
  transition: opacity var(--t-med) var(--ease);
  pointer-events:none;
  z-index:0;
}
.card:hover::after{ opacity: 1; }

.card-inner{
  position:relative;
  z-index:1;
  padding:18px;
}

/* Separator */
.sep{
  border:0;
  height:1px;
  background: var(--hairline);
  margin: 14px 0;
}

/* -----------------------------
   Hero
------------------------------ */
.hero{
  padding-top:28px;
  padding-bottom:34px;
  position:relative;
  overflow: hidden;
}

/* Spotlight for hero region */
.hero::before{
  content:"";
  position:absolute;
  inset:-140px -80px auto -80px;
  height:420px;
  pointer-events:none;
  background:
    radial-gradient(700px 360px at 20% 20%, rgba(122,162,255,0.22), transparent 55%),
    radial-gradient(560px 320px at 70% 10%, rgba(160,255,218,0.16), transparent 60%);
  filter: blur(12px);
  opacity:0.95;
}

.hero-wrap{
  display:grid;
  grid-template-columns: 1.35fr 0.65fr;
  gap:18px;
  align-items:stretch;
}

.kicker{
  margin: 0 0 10px;
  font-size: 12px;
  color: var(--muted-2);
  text-transform: uppercase;
  letter-spacing: 0.14em;
}

/* Gradient accent in headline */
.accent{
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--accent) 88%, var(--text)),
    color-mix(in srgb, var(--accent-2) 75%, var(--text))
  );
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

.hero h1{
  margin:0 0 10px;
  font-size: clamp(34px, 4.3vw, 52px);
  letter-spacing: -0.045em;
  line-height: 1.03;
}

.subtitle{
  margin:0 0 16px;
  color:var(--muted);
  font-size:16px;
  max-width: 62ch;
}

.hero-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top:18px;
}

.pill-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin: 18px 0 0;
}
.pill{
  font-size:13px;
  color:var(--muted);
  border:1px solid var(--hairline);
  border-radius:999px;
  padding:8px 10px;
  background: color-mix(in srgb, var(--bg-elev) 82%, transparent);
}

/* Stats row */
.stats{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:10px;
  margin-top: 18px;
}
.stat{
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 80%, transparent);
  border-radius: var(--radius-md);
  padding: 12px;
  transition: transform var(--t-fast) var(--ease-out), border-color var(--t-med) var(--ease);
}
.stat:hover{
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--accent) 20%, var(--hairline));
}
.stat .num{
  font-size: 14px;
  font-weight: 850;
  letter-spacing: -0.02em;
}
.stat .lbl{
  margin-top: 4px;
  font-size: 12px;
  color: var(--muted);
}

.hero-side{
  display:flex;
  flex-direction:column;
  gap:14px;
}

/* -----------------------------
   Hero headshot (NEW: premium)
------------------------------ */
.hero-photo-inner{
  display:flex;
  flex-direction:column;
  gap:12px;
}

/* The image itself */
.headshot{
  width:100%;
  height:auto;
  border-radius: var(--radius-lg);
  border: 1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 96%, transparent);

  /* subtle lift */
  box-shadow: 0 18px 48px rgba(0,0,0,0.26);
  transform: translateZ(0);
}

/* Nice soft "halo" behind photo */
.hero-photo{
  overflow:hidden;
}
.hero-photo::before{
  content:"";
  position:absolute;
  inset:auto -80px -110px -80px;
  height:260px;
  background:
    radial-gradient(240px 200px at 30% 20%, color-mix(in srgb, var(--accent) 35%, transparent), transparent 60%),
    radial-gradient(240px 200px at 70% 20%, color-mix(in srgb, var(--accent-2) 28%, transparent), transparent 62%);
  filter: blur(18px);
  opacity:0.9;
  pointer-events:none;
  z-index:0;
}

/* Caption */
.hero-photo-caption{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.hero-photo-name{
  font-weight:850;
  letter-spacing:-0.02em;
  font-size: 15px;
}
.hero-photo-role{
  color: var(--muted);
  font-size: 13px;
}
.hero-photo-cta{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  margin-top: 8px;
}

/* Mobile-only quick links row (shown on small screens) */
.hero-mobile-links{
  display:none;
  margin-top: 14px;
  gap:10px;
  flex-wrap:wrap;
}

/* Quick facts box */
.quick{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.quick .row{
  display:flex;
  gap:10px;
  align-items:center;
  padding:10px 12px;
  border-radius: var(--radius-md);
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 80%, transparent);
}
.quick .label{
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.08em;
  width:110px;
  flex:0 0 auto;
}
.quick .value{
  font-size:14px;
  color:var(--text);
  overflow-wrap:anywhere;
  word-break: break-word;
  white-space: normal;
}

/* Hero side links */
.toplink-row{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
}
.toplink-label{
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.08em;
}
.toplink-value{
  font-size:14px;
  margin-top:4px;
  font-weight:700;
}
.toplink-note{
  margin-top:8px;
  color:var(--muted);
  font-size:13px;
}

/* -----------------------------
   Featured
------------------------------ */
.featured{ padding-top: 20px; }
.featured-grid{
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.featured-card{
  border-color: color-mix(in srgb, var(--accent) 18%, var(--hairline));
  box-shadow: var(--shadow-2);
}

.badge{
  display:inline-flex;
  align-items:center;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 82%, transparent);
  font-size:12px;
  color:var(--muted);
  margin-bottom:10px;
}
.badge.alt{
  border-color: color-mix(in srgb, var(--accent-2) 24%, var(--hairline));
}

.featured-top{
  display:flex;
  gap:16px;
  justify-content:space-between;
  align-items:flex-start;
}
.featured-title{
  margin:0 0 8px;
  font-size: 18px;
  letter-spacing: -0.02em;
}
.featured-sub{
  margin:0;
  color: var(--muted);
  font-size:14px;
  max-width: 72ch;
}
.featured-actions{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  min-width: 170px;
}

.featured-metrics{
  margin-top: 14px;
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:10px;
}
.metric{
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 80%, transparent);
  border-radius: var(--radius-md);
  padding:12px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.metric .k{
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.08em;
}
.metric .v{
  font-size:13px;
  color:var(--text);
}

/* -----------------------------
   Projects
------------------------------ */
.projects-controls{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  margin-bottom:14px;
}

/* Search box */
.search{
  flex:1 1 280px;
  display:flex;
  gap:10px;
  align-items:center;
  padding:10px 12px;
  border-radius: var(--radius-md);
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 80%, transparent);
}
.search input{
  width:100%;
  border:none;
  background:transparent;
  color:var(--text);
  font-size:14px;
  outline:none;
}
.search input::placeholder{ color:var(--muted-2); }

/* Filter chips */
.chips{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
}
.chip{
  font-size:13px;
  padding:8px 10px;
  border-radius:999px;
  border:1px solid var(--hairline);
  background:transparent;
  color:var(--muted);
  cursor:pointer;
  user-select:none;

  transition:
    transform var(--t-fast) var(--ease-out),
    background var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease),
    color var(--t-med) var(--ease);
}
.chip:hover{
  transform: translateY(-1px);
  color:var(--text);
  border-color: color-mix(in srgb, var(--accent) 35%, var(--hairline));
  background: color-mix(in srgb, var(--bg-elev) 84%, transparent);
}
.chip[aria-pressed="true"]{
  color:var(--text);
  border-color: color-mix(in srgb, var(--accent) 60%, var(--hairline));
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--accent) 18%, var(--bg-elev)),
      color-mix(in srgb, var(--bg-elev) 86%, var(--accent) 6%)
    );
}

/* Grid */
.projects-grid{ grid-template-columns: repeat(12, 1fr); }
.project{
  grid-column: span 6;
  transition:
    transform var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease),
    box-shadow var(--t-med) var(--ease);
}
.project:hover{
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--accent) 22%, var(--hairline));
  box-shadow: 0 18px 70px rgba(0,0,0,0.26);
}
.project h3{
  margin:0 0 6px;
  font-size:16px;
  letter-spacing:-0.02em;
}
.project p{
  margin:0 0 12px;
  color:var(--muted);
  font-size:14px;
}

/* Impact bullets */
.impact{
  margin: 0 0 12px;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
}
.impact li{ margin: 6px 0; }

/* Tag pills */
.meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:10px 0 14px;
}
.tag{
  font-size:12px;
  color:var(--muted);
  padding:6px 8px;
  border-radius:999px;
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 76%, transparent);
}

/* Links */
.links{ display:flex; gap:10px; flex-wrap:wrap; margin-top:8px; }
.link{
  font-size:13px;
  border:1px solid var(--hairline);
  border-radius:999px;
  padding:8px 10px;
  transition: background var(--t-med) var(--ease), border-color var(--t-med) var(--ease), transform var(--t-fast) var(--ease-out);
}
.link:hover{
  text-decoration:none;
  border-color: color-mix(in srgb, var(--accent) 40%, var(--hairline));
  background: color-mix(in srgb, var(--bg-elev) 82%, transparent);
  transform: translateY(-1px);
}

/* No results */
.no-results{ margin-top:14px; color:var(--muted); font-size:14px; }

/* -----------------------------
   About + Skills
------------------------------ */
.two-col{
  grid-template-columns:1fr 1fr;
  align-items:start;
}
.about p{
  margin:0 0 12px;
  color:var(--muted);
  font-size:14px;
  max-width:70ch;
}
.about strong{
  color:var(--text);
  font-weight:780;
}

.skill-grid{
  display:grid;
  grid-template-columns: repeat(2,1fr);
  gap:12px;
}
.skill{
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 80%, transparent);
  border-radius: var(--radius-md);
  padding:14px;
  transition: transform var(--t-fast) var(--ease-out), border-color var(--t-med) var(--ease), box-shadow var(--t-med) var(--ease);
}
.skill:hover{
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--accent) 22%, var(--hairline));
  box-shadow: 0 16px 40px rgba(0,0,0,0.18);
}
.skill .k{
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.08em;
  margin-bottom:8px;
}
.skill .v{ font-size:14px; }

/* -----------------------------
   Resume
------------------------------ */
.resume-row{
  display:flex;
  gap:12px;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
}
.resume-title{ font-size:14px; font-weight:780; }
.resume-actions{ display:flex; gap:10px; flex-wrap:wrap; }

/* -----------------------------
   Contact
------------------------------ */
.contact-grid{
  grid-template-columns:1.1fr 0.9fr;
  align-items:start;
}
.contact p{
  margin:0 0 12px;
  color:var(--muted);
  font-size:14px;
  max-width:72ch;
}
.contact-list{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:8px;
}
.contact-item{
  min-width:0;
  overflow-wrap:anywhere;
  word-break: break-word;
  display:flex;
  gap:10px;
  align-items:center;
  padding:12px;
  border-radius: var(--radius-md);
  border:1px solid var(--hairline);
  background: color-mix(in srgb, var(--bg-elev) 80%, transparent);
  transition: border-color var(--t-med) var(--ease), transform var(--t-fast) var(--ease-out), box-shadow var(--t-med) var(--ease);
}
.contact-item:hover{
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--accent) 22%, var(--hairline));
  box-shadow: 0 16px 44px rgba(0,0,0,0.20);
}
.contact-item .left{
  width:110px;
  flex:0 0 auto;
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.08em;
}

/* Availability card */
.notes-title{
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.08em;
}
.notes-body{
  margin-top:10px;
  color:var(--muted);
  font-size:14px;
}
.notes-tip{
  margin-top:12px;
  color:var(--muted-2);
  font-size:13px;
}

/* -----------------------------
   MODAL
------------------------------ */

.modal{
  position:fixed;
  inset:0;
  z-index:2000;

  /* default: not visible */
  display:none;
}

/* If you use the HTML 'hidden' attribute (recommended), ensure it wins */
.modal[hidden]{ display:none !important; }

/* Show only when explicitly opened */
.modal[aria-hidden="false"]{ display:block; }

.modal-backdrop{
  position:absolute;
  inset:0;
  background: rgba(0,0,0,0.62);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.modal-panel{
  position:relative;
  width: min(760px, calc(100% - 28px));
  margin: 8vh auto 0;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-strong);
  background: var(--glass-2);
  box-shadow: var(--shadow-2);
  padding: 16px;
  animation: popIn var(--t-slow) var(--ease-out);
}

@keyframes popIn{
  from{ transform: translateY(14px) scale(0.985); opacity:0; }
  to{ transform: translateY(0) scale(1); opacity:1; }
}

.modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap: 12px;
}
.modal-kicker{
  font-size:12px;
  color:var(--muted-2);
  text-transform:uppercase;
  letter-spacing:0.10em;
}
.modal-title{
  margin: 6px 0 0;
  font-size: 18px;
  letter-spacing: -0.02em;
}
.modal-tags{
  margin-top: 10px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.modal-body{
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.65;
}
.modal-links{
  margin-top: 14px;
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}

.iconbtn{
  border:1px solid var(--hairline);
  background: transparent;
  color: var(--text);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  cursor:pointer;
  transition: background var(--t-med) var(--ease), border-color var(--t-med) var(--ease), transform var(--t-fast) var(--ease-out);
}
.iconbtn:hover{
  border-color: color-mix(in srgb, var(--accent) 35%, var(--hairline));
  background: color-mix(in srgb, var(--bg-elev) 84%, transparent);
  transform: translateY(-1px);
}

/* -----------------------------
   Footer
------------------------------ */
footer{
  border-top:1px solid var(--hairline);
  padding:22px 0;
  color:var(--muted-2);
  font-size:13px;
}
.foot{
  display:flex;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
}
.foot-links{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
}

/* -----------------------------
   Scroll reveal
------------------------------ */
.reveal{
  opacity:0;
  transform: translateY(10px);
  transition: opacity 260ms var(--ease), transform 260ms var(--ease);
}
.reveal.show{
  opacity:1;
  transform: translateY(0);
}

/* -----------------------------
   Responsive
------------------------------ */

/* Hide desktop nav on mobile, show mobile menu */
@media (max-width: 940px){
  /* Hide desktop navigation */
   .nav-primary,
   .nav-list{
     display:none !important;
   }
  
  /* Show mobile menu button */
  .nav-mobile {
    display: block !important;
  }
  
  /* Make brand more compact on mobile */
  .brand {
    min-width: 0;
    max-width: 180px;
  }
  
  .brand-subtitle {
    font-size: 11px;
  }
  
  /* Header stays sticky */
  .site-header,
  header {
    position: sticky;
    top: 0;
    z-index: 100;
  }
  
  /* Ensure nav doesn't get too tall */
  .nav {
    padding: 12px 0;
    min-height: 56px;
  }
  
  /* Hide theme button text on mobile, keep icon */
  .nav-actions .btn.ghost .icon {
    margin: 0;
  }
  
  .nav-actions .btn {
    padding: 8px 10px;
    font-size: 13px;
  }
  
  /* Make Contact button more compact */
  .nav-actions .btn.primary {
    padding: 10px 14px;
  }
  
  .hero-wrap{ grid-template-columns:1fr; }
  .projects-grid .project{ grid-column:span 12; }
  .two-col{ grid-template-columns:1fr; }
  .contact-grid{ grid-template-columns:1fr; }
  .nav-actions{ min-width:auto; }
  .featured-grid{ grid-template-columns:1fr; }
  .featured-metrics{ grid-template-columns:1fr; }
  .stats{ grid-template-columns:1fr; }

  /* Headshot: make it feel intentional on mobile */
  .hero-mobile-links{ display:flex; }
}

/* Show desktop nav on desktop, hide mobile menu */
@media (min-width: 941px){
  .nav-mobile {
    display: none !important;
  }
  
  .nav-primary {
    display: block !important;
  }
}

/* Small phones */
@media (max-width: 520px){
  .container{ width: min(var(--container), calc(100% - 28px)); }
  .nav-list{ gap: 8px; }
  .btn{ padding: 10px 10px; }
  .quick .label{ width: 92px; }

  .hero h1{ font-size: clamp(30px, 8vw, 42px); }
  
  /* More compact brand on very small screens */
  .brand {
    max-width: 140px;
  }
  
  .brand-name {
    font-size: 11px;
  }
  
  .brand-subtitle {
    font-size: 10px;
  }
  
  /* Stack nav actions vertically if needed */
  .nav-actions {
    gap: 8px;
  }
  
  .nav-actions .btn {
    font-size: 13px;
    padding: 8px 10px;
  }
}

/* -----------------------------
   Mobile nav (clean dropdown sheet)
   Assumes HTML:
   <details id="navMobile" class="nav-mobile">
     <summary class="nav-toggle btn ghost">…</summary>
     <div class="nav-panel">…</div>
   </details>
------------------------------ */

.nav-mobile{
  display:none; /* shown in @media */
  position: relative;
}

/* summary should behave like a real icon button */
.nav-mobile summary{
  list-style:none;
  -webkit-tap-highlight-color: transparent;
}
.nav-mobile summary::-webkit-details-marker{ display:none; }

.nav-toggle{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:10px 12px;
  position: relative;
  z-index: 120; /* above header blur */
}

/* Optional: if your summary contains "Menu" text, hide it on tiny screens */
@media (max-width:520px){
  .nav-toggle .label{ display:none; }
}

/* Backdrop */
.nav-mobile[open]::before{
  content:"";
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  z-index: 110;
  animation: navFadeIn var(--t-med) var(--ease);
}
@keyframes navFadeIn{
  from{ opacity:0; }
  to{ opacity:1; }
}

/* Dropdown sheet (top-right) */
.nav-panel{
  position: fixed;
  top: calc(env(safe-area-inset-top) + 68px);
  right: calc(env(safe-area-inset-right) + 14px);

  width: min(380px, calc(100vw - 28px));
  max-height: calc(100vh - 120px);
  overflow: auto;

  padding: 14px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-strong);
  background: var(--bg-elev);
  box-shadow: var(--shadow-2);
  z-index: 115;

  transform-origin: top right;
  animation: navPop var(--t-med) var(--ease-out);
}

@keyframes navPop{
  from{ opacity:0; transform: translateY(-8px) scale(0.98); }
  to{ opacity:1; transform: translateY(0) scale(1); }
}

.nav-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:12px 12px;
  border-radius: var(--radius-md);
  border:1px solid transparent;
  color: var(--text);
  text-decoration:none;
  font-weight:650;
  letter-spacing:-0.01em;
  transition:
    background var(--t-med) var(--ease),
    border-color var(--t-med) var(--ease),
    transform var(--t-fast) var(--ease-out);
}

.nav-item:hover{
  text-decoration:none;
  background: color-mix(in srgb, var(--bg-elev-2) 70%, transparent);
  border-color: var(--hairline);
  transform: translateY(-1px);
}

.nav-panel-actions{
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--hairline);
  display:flex;
  gap:10px;
  flex-wrap:wrap;
}

/* Mobile-only: show */
@media (max-width: 940px){
  .nav-mobile{ display:block; }
  .nav-actions{ display:none !important; }
}
