:root{
  --bg-deep:#071a1d;
  --bg-mid:#0c262a;
  --bg-glow:#123639;
  --glass-fill: rgba(198, 246, 239, 0.055);
  --glass-fill-strong: rgba(198, 246, 239, 0.09);
  --glass-border: rgba(198, 246, 239, 0.16);
  --accent:#2dd4bf;
  --accent-mint:#9df3e6;
  --accent-deep:#0f6b66;
  --ink:#041416;
  --text-primary:#eafbf8;
  --text-secondary:#8fb4b1;
  --text-tertiary:#5c7d7a;
  --danger:#f1876b;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
}

body{
  margin:0;
  min-height:100vh;
  background:
    radial-gradient(ellipse 900px 500px at 15% -10%, var(--bg-glow) 0%, transparent 60%),
    radial-gradient(ellipse 700px 500px at 90% 10%, rgba(45,212,191,0.08) 0%, transparent 55%),
    linear-gradient(180deg, var(--bg-deep) 0%, var(--bg-mid) 45%, var(--bg-deep) 100%);
  background-color: var(--bg-deep);
  background-attachment: fixed;
  color: var(--text-primary);
  font-family:'Inter', sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  position:relative;
}

h1,h2,h3{ font-family:'Space Grotesk', sans-serif; margin:0; letter-spacing:-0.01em; }
p{ margin:0; }
a{ color:inherit; text-decoration:none; }
.mono{ font-family:'IBM Plex Mono', monospace; }

.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:12px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color: var(--accent-mint);
  display:flex;
  align-items:center;
  gap:10px;
}
.eyebrow::before{
  content:"";
  width:7px; height:7px;
  background: var(--accent);
  box-shadow: 0 0 8px 1px var(--accent);
  flex-shrink:0;
}
.eyebrow--plain::before{ display:none; }

/* ---------- ambient bubbles ---------- */
.bubble-field{
  position:fixed; inset:0;
  pointer-events:none;
  z-index:0;
  overflow:hidden;
}
.bubble{
  position:absolute;
  bottom:-40px;
  width:6px; height:6px;
  background: var(--accent-mint);
  opacity:0.18;
}
@media (prefers-reduced-motion: no-preference){
  .bubble{ animation: rise linear infinite; }
}
@keyframes rise{
  0%{ transform: translateY(0) translateX(0); opacity:0; }
  10%{ opacity:0.22; }
  90%{ opacity:0.12; }
  100%{ transform: translateY(-110vh) translateX(12px); opacity:0; }
}

/* ---------- nav ---------- */
nav{
  position:fixed; top:0; left:0; right:0;
  z-index:100;
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 32px;
  background: rgba(7, 26, 29, 0.55);
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
  border-bottom:1px solid var(--glass-border);
}
.brand{ display:flex; align-items:center; gap:10px; }
.brand img{ width:30px; height:30px; }
.brand span{ font-family:'Space Grotesk', sans-serif; font-weight:600; font-size:15px; letter-spacing:0.02em; }
.navlinks{ display:flex; gap:28px; font-size:14px; color: var(--text-secondary); align-items:center; }
.navlinks a{ transition: color .2s ease; }
.navlinks a:hover{ color: var(--accent-mint); }
.nav-btn{ padding:8px 16px; font-size:13px; }

/* ---------- glass panels (gradient reveals on hover, follows the cursor) ---------- */
.glass{
  background: var(--glass-fill);
  border:1px solid var(--glass-border);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  position:relative;
  overflow:hidden;
  transition: border-color .25s ease;
}
.glass::before{
  content:"";
  position:absolute; inset:0;
  background: radial-gradient(circle at var(--mx, 50%) var(--my, 50%), rgba(157,243,230,0.22), transparent 60%);
  opacity:0;
  transition: opacity .35s ease;
  pointer-events:none;
}
.glass:hover::before{ opacity:1; }
.glass:hover{ border-color: rgba(157,243,230,0.3); }

section{ position:relative; z-index:1; padding:0 32px; }
.section-wrap{ max-width:1100px; margin:0 auto; padding:110px 0; }
.section-head{ max-width:640px; margin:0 auto 44px; text-align:center; display:flex; flex-direction:column; gap:14px; align-items:center; }
.section-head h2{ font-size:clamp(26px,3.4vw,36px); color: var(--text-primary); font-weight:600; }

/* ---------- buttons ---------- */
.btn{
  font-family:'Inter', sans-serif;
  font-weight:600;
  font-size:14.5px;
  padding:13px 26px;
  border-radius:11px;
  cursor:pointer;
  border:1px solid transparent;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
  display:inline-flex; align-items:center; gap:8px;
}
.btn-primary{
  background: linear-gradient(135deg, var(--accent), var(--accent-deep));
  color: var(--ink);
  box-shadow: 0 8px 24px -8px rgba(45,212,191,0.55);
}
.btn-primary:hover{ transform: translateY(-2px); box-shadow: 0 12px 30px -8px rgba(45,212,191,0.7); }
.btn-ghost{
  background: var(--glass-fill-strong);
  border:1px solid var(--glass-border);
  color: var(--text-primary);
}
.btn-ghost:hover{ background: rgba(198,246,239,0.13); transform: translateY(-2px); }
.btn:disabled{ opacity:0.5; cursor:not-allowed; transform:none !important; }

footer{
  position:relative; z-index:1;
  padding:40px 32px 48px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px;
  color: var(--text-tertiary);
  font-size:13px;
  font-family:'IBM Plex Mono', monospace;
}
footer img{ width:40px; height:40px; opacity:0.9; }

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline:2px solid var(--accent-mint);
  outline-offset:3px;
}

/* ---------- forms (shared: login, questionnaire) ---------- */
.form-shell{
  max-width:560px;
  margin:0 auto;
  padding:120px 24px 80px;
  position:relative; z-index:1;
}
.field{ display:flex; flex-direction:column; gap:8px; margin-bottom:22px; }
.field label{ font-size:13.5px; font-weight:600; color: var(--text-primary); }
.field .hint{ font-size:12.5px; color: var(--text-tertiary); }
.field input[type="text"],
.field input[type="email"],
.field input[type="tel"],
.field textarea{
  background: rgba(255,255,255,0.04);
  border:1px solid var(--glass-border);
  border-radius:10px;
  padding:12px 14px;
  color: var(--text-primary);
  font-family:'Inter', sans-serif;
  font-size:14.5px;
  resize:vertical;
}
.field input::placeholder, .field textarea::placeholder{ color: var(--text-tertiary); }
.field input:focus, .field textarea:focus{ border-color: var(--accent); }

.file-drop{
  border:1.5px dashed var(--glass-border);
  border-radius:12px;
  padding:22px;
  text-align:center;
  font-size:13.5px;
  color: var(--text-secondary);
  cursor:pointer;
  transition: border-color .2s ease, background .2s ease;
}
.file-drop:hover{ border-color: var(--accent); background: rgba(45,212,191,0.05); }
.file-drop img{ max-width:120px; max-height:120px; margin-top:12px; border-radius:8px; }

.status-msg{ font-size:13.5px; padding:10px 14px; border-radius:9px; margin-bottom:16px; }
.status-msg.error{ background: rgba(241,135,107,0.12); color: var(--danger); border:1px solid rgba(241,135,107,0.3); }
.status-msg.ok{ background: rgba(45,212,191,0.1); color: var(--accent-mint); border:1px solid rgba(45,212,191,0.25); }

/* ---------- hero (containerless) ---------- */
.hero{
  min-height:100vh;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  text-align:center;
  padding-top:96px;
  max-width:760px;
  margin:0 auto;
  gap:22px;
}
.fish-wrap{ width:64px; height:64px; opacity:0; }
.fish-wrap--big{ width:150px; height:150px; }
.fish-wrap img{ width:100%; height:100%; }
@media (prefers-reduced-motion: no-preference){
  .fish-wrap{ animation: swim-in 1.6s cubic-bezier(.2,.8,.2,1) 0.2s forwards; }
}
@media (prefers-reduced-motion: reduce){ .fish-wrap{ opacity:1; } }
@keyframes swim-in{
  0%{ opacity:0; transform: translateX(-160px) rotate(-8deg) scale(0.8); }
  60%{ opacity:1; }
  100%{ opacity:1; transform: translateX(0) rotate(0deg) scale(1); }
}
.fade-up{ opacity:0; transform: translateY(18px); animation: fade-up-in .7s ease forwards; }
@keyframes fade-up-in{ to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){
  .fade-up{ opacity:1; transform:none; animation:none; }
}
.type-cursor{
  color: var(--accent);
  font-weight:300;
  margin-left:2px;
  animation: cursor-blink 1s steps(1) infinite;
}
@keyframes cursor-blink{ 0%, 49%{ opacity:1; } 50%, 100%{ opacity:0; } }
@media (prefers-reduced-motion: reduce){ .type-cursor{ display:none; } }
.hero h1{ font-size:clamp(24px, 4.2vw, 42px); font-weight:600; line-height:1.12; color: var(--text-primary); }
.hero-h1{ white-space:nowrap; }
@media (max-width: 768px){
  .hero-h1{ white-space:normal; }
}
.hero h1 em{ font-style:normal; color: var(--accent); }
.hero p.sub{ font-size:17px; line-height:1.6; color: var(--text-secondary); max-width:560px; text-wrap: balance; }
.cta-row{ display:flex; gap:14px; margin-top:6px; flex-wrap:wrap; justify-content:center; }

/* ---------- services ---------- */
.services-grid{ display:grid; grid-template-columns:repeat(2, 1fr); gap:22px; }
.service-card{ border-radius:18px; padding:32px 26px; display:flex; flex-direction:column; gap:14px; transition: transform .25s ease, border-color .25s ease; }
.service-card:hover{ transform: translateY(-4px); border-color: rgba(157,243,230,0.35); }
.service-mark{ width:34px; height:34px; display:grid; grid-template-columns:repeat(2,1fr); gap:3px; }
.service-mark span{ background: var(--accent); opacity:0.85; }
.service-mark span:nth-child(2){ background: var(--accent-mint); }
.service-mark span:nth-child(3){ background: var(--accent-deep); }
.service-icon{ width:24px; height:24px; }
.service-card h3{ font-size:19px; font-weight:600; color: var(--text-primary); }
.service-card p{ font-size:14.5px; line-height:1.55; color: var(--text-secondary); }

/* ---------- quiet strips (approach / portfolio-ask) ---------- */
.quiet-strip{ max-width:700px; margin:0 auto; text-align:center; display:flex; flex-direction:column; gap:22px; align-items:center; }
.quiet-strip .rule{ width:44px; height:2px; background: var(--accent); }
.quiet-strip p{ font-size: clamp(18px, 2.2vw, 22px); line-height:1.6; color: var(--text-primary); font-family:'Space Grotesk', sans-serif; font-weight:400; }
.quiet-strip small{ font-size:13.5px; color: var(--text-tertiary); font-family:'IBM Plex Mono', monospace; letter-spacing:0.04em; }
.quiet-strip a.inline-link{ color: var(--accent-mint); font-family:'Inter', sans-serif; font-size:15.5px; font-weight:600; }
.quiet-strip a.inline-link:hover{ text-decoration:underline; }

/* ---------- contact (containerless) ---------- */
.contact-block{ max-width:560px; margin:0 auto; text-align:center; display:flex; flex-direction:column; gap:18px; align-items:center; }
.contact-block h2{ font-size:clamp(26px,3.2vw,34px); font-weight:600; }
.contact-block p{ color: var(--text-secondary); font-size:15.5px; max-width:480px; line-height:1.6; text-wrap: balance; }

@media (max-width: 860px){
  .services-grid{ grid-template-columns:1fr; }
}

/* ---------- scroll reveal ---------- */
.reveal{ opacity:0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in-view{ opacity:1; transform:none; }
.services-grid .reveal:nth-child(1){ transition-delay:0s; }
.services-grid .reveal:nth-child(2){ transition-delay:.08s; }
.services-grid .reveal:nth-child(3){ transition-delay:.16s; }
.services-grid .reveal:nth-child(4){ transition-delay:.24s; }
@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
}

/* ---------- admin ---------- */

/* shared status pill colors used on projects.html, project.html, and admin.html */
.status-pill{
  font-family:'IBM Plex Mono', monospace; font-size:11px; letter-spacing:0.06em; text-transform:uppercase;
  padding:5px 12px; border-radius:20px; white-space:nowrap; display:inline-block;
}
.status-draft{ background: rgba(255,255,255,0.08); color: var(--text-secondary); }
.status-unopened{ background: rgba(157,243,230,0.14); color: var(--accent-mint); }
.status-opened{ background: rgba(45,212,191,0.16); color: var(--accent); }
.status-responded{ background: rgba(99,179,237,0.16); color:#8fc7ff; }
.status-accepted{ background: rgba(52,211,153,0.18); color:#5eead4; }
.status-closed{ background: rgba(241,135,107,0.14); color: var(--danger); }
.admin-grid{
  display:grid;
  grid-template-columns: 340px 1fr;
  gap:0;
  min-height:calc(100vh - 68px);
}
.admin-list{
  border-right:1px solid var(--glass-border);
  overflow-y:auto;
  padding:20px;
  display:flex; flex-direction:column; gap:12px;
}
.sub-card{
  border-radius:14px;
  padding:16px 18px;
  cursor:pointer;
  transition: border-color .2s ease, background .2s ease;
}
.sub-card:hover, .sub-card.active{ border-color: var(--accent); background: rgba(45,212,191,0.07); }
.sub-card h4{ font-size:15px; font-weight:600; margin-bottom:4px; }
.sub-card p{ font-size:12.5px; color: var(--text-tertiary); }
.sub-card .badge{
  display:inline-block; margin-top:8px;
  font-family:'IBM Plex Mono', monospace; font-size:10.5px; letter-spacing:0.06em; text-transform:uppercase;
  padding:3px 8px; border-radius:5px; background: rgba(157,243,230,0.12); color: var(--accent-mint);
}
.admin-detail{ padding:36px; overflow-y:auto; }
.detail-row{ margin-bottom:22px; }
.detail-row .k{ font-family:'IBM Plex Mono', monospace; font-size:11.5px; letter-spacing:0.08em; text-transform:uppercase; color: var(--accent-mint); margin-bottom:6px; }
.detail-row .v{ font-size:15px; line-height:1.6; color: var(--text-primary); white-space:pre-wrap; }
.detail-logo{ max-width:140px; border-radius:10px; border:1px solid var(--glass-border); }
.contact-actions{ display:flex; gap:12px; flex-wrap:wrap; margin-top:8px; }

@media (max-width: 860px){
  .admin-grid{ grid-template-columns:1fr; }
  .admin-list{ border-right:none; border-bottom:1px solid var(--glass-border); max-height:280px; }
  .section-wrap{ padding:60px 0; }
}

/* ---------- responsive: nav, forms, admin — applies everywhere ---------- */
@media (max-width: 640px){
  nav{ padding:14px 16px; flex-wrap:wrap; justify-content:center; gap:8px; }
  .brand span{ font-size:13px; }
  .brand img{ width:26px; height:26px; }
  .navlinks{ gap:8px; font-size:13px; flex-wrap:wrap; justify-content:center; width:100%; }
  .navlinks .btn, .navlinks .nav-btn{ padding:7px 12px; font-size:12.5px; }

  .form-shell{ padding:100px 16px 60px; }
  .section-wrap{ padding:50px 0; }
  section{ padding:0 18px; }

  .admin-detail{ padding:22px 18px; }
  .contact-actions{ flex-direction:column; align-items:stretch; }
  .contact-actions .btn{ justify-content:center; }
  .status-controls{ flex-direction:column; }
  .status-controls button{ width:100%; }
}

@media (max-width: 400px){
  .hero h1{ font-size:24px; }
  .btn{ font-size:13.5px; padding:11px 20px; }
}
