/* =====================================================================
   Ercan OPAK — Personal Site
   Concept: "Flight Log" — an aviation-systems engineer's instrument panel
   ===================================================================== */

/* Google Fonts now loaded via a <link> in home.php's <head> (parallel discovery,
   avoids the extra request-chain hop that @import creates). */

:root{
  /* --- color tokens --- */
  --bg:            #0A0F1C;
  --bg-elevated:   #0E1526;
  --panel:         #121A2E;
  --panel-border:  #212B45;
  --grid-line:     rgba(148,163,196,0.07);
  --text:          #E7EAF2;
  --text-dim:      #8A93A8;
  --text-faint:    #5B6478;
  --amber:         #FFB020;
  --amber-dim:     rgba(255,176,32,0.14);
  --cyan:          #4FD1E8;
  --cyan-dim:      rgba(79,209,232,0.14);
  --ok:            #4FD18B;

  /* --- type --- */
  --f-display: 'Space Grotesk', sans-serif;
  --f-body:    'Inter', sans-serif;
  --f-mono:    'JetBrains Mono', monospace;

  --radius: 10px;
  --nav-h: 76px;
}

/* ---------- light theme ---------- */
html[data-theme="light"]{
  --bg:            #EEF1F6;
  --bg-elevated:   #F7F9FC;
  --panel:         #FFFFFF;
  --panel-border:  #DCE1EB;
  --grid-line:     rgba(15,23,42,0.045);
  --text:          #151B2B;
  --text-dim:      #4A5468;
  --text-faint:    #7A8398;
  --amber:         #B8650A;
  --amber-dim:     rgba(184,101,10,0.10);
  --cyan:          #0B7285;
  --cyan-dim:      rgba(11,114,133,0.10);
  --ok:            #157F45;
}

/* Hero and nav intentionally stay dark in both themes — the hero has a
   photographic background and the nav is a glass-blur bar, both designed
   for dark text/accents regardless of the page theme. */
#nav-wrap{
  --bg:#0A0F1C !important; --bg-elevated:#0E1526 !important; --panel:#121A2E !important; --panel-border:#212B45 !important;
  --text:#E7EAF2 !important; --text-dim:#8A93A8 !important; --text-faint:#5B6478 !important;
  --amber:#FFB020 !important; --amber-dim:rgba(255,176,32,0.14) !important;
  --cyan:#4FD1E8 !important; --cyan-dim:rgba(79,209,232,0.14) !important; --ok:#4FD18B !important;
}

*,*::before,*::after{ box-sizing:border-box; }

.icon{
  width:1em; height:1em; display:inline-block; vertical-align:-0.125em;
  fill:currentColor; flex-shrink:0;
}
html{ scroll-behavior:smooth; }

@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; }
}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--f-body);
  font-size:16px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  transition:background-color .25s ease, color .25s ease;
}

section, .stat, .boarding-pass, .portfolio-item, .cert-card, .tmn-card,
.chip-card, .exam-card, .field input, .field textarea, .gauge-track{
  transition:background-color .25s ease, color .25s ease, border-color .25s ease;
}

/* blueprint grid backdrop, fixed across whole page */
body::before{
  content:"";
  position:fixed; inset:0;
  z-index:0;
  pointer-events:none;
  background-image:
    linear-gradient(var(--grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(ellipse 90% 60% at 50% 0%, black 40%, transparent 90%);
}

a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
ul{ list-style:none; margin:0; padding:0; }
h1,h2,h3,h4{ font-family:var(--f-display); font-weight:600; margin:0; color:var(--text); }
p{ margin:0 0 1em 0; color:var(--text-dim); }

.container{ max-width:1120px; margin:0 auto; padding:0 28px; position:relative; z-index:1; }

/* ---------- eyebrow / waypoint label ---------- */
.waypoint{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--f-mono);
  font-size:12px;
  letter-spacing:2.5px;
  text-transform:uppercase;
  color:var(--amber);
  margin-bottom:14px;
}
.waypoint::before{
  content:"";
  width:22px; height:1px;
  background:var(--amber);
  display:inline-block;
}
.section-head{ max-width:640px; margin-bottom:56px; }
.section-head h2{ font-size:34px; line-height:1.2; }
.section-head p{ margin-top:14px; font-size:16px; }

section{ position:relative; padding:110px 0; }
section.alt{ background:var(--bg-elevated); border-top:1px solid var(--panel-border); border-bottom:1px solid var(--panel-border); }

/* ---------- nav ---------- */
#nav-wrap{
  position:fixed; top:0; left:0; width:100%; z-index:200;
  height:var(--nav-h);
  display:flex; align-items:center;
  background:rgba(10,15,28,0.72);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--panel-border);
  transition:border-color .3s ease;
}
.nav-inner{
  max-width:1120px; margin:0 auto; padding:0 28px; width:100%;
  display:flex; align-items:center; justify-content:space-between;
}
.nav-controls{ display:flex; align-items:center; }
ul#nav{ display:flex; gap:2px; }
ul#nav li a{
  display:inline-block; padding:10px 16px; font-family:var(--f-mono);
  font-size:12px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-dim);
  border-radius:6px; transition:color .2s ease, background .2s ease;
  white-space:nowrap;
}
ul#nav li a:hover{ color:var(--text); background:rgba(255,255,255,0.04); }
ul#nav li.current a{ color:var(--amber); }
.nav-toggle{ display:none; }

.local-clock{
  display:flex; align-items:baseline; gap:6px;
  font-family:var(--f-mono); font-size:12px; letter-spacing:.5px;
  padding:0 4px;
}
.local-clock .clock-tz{ color:var(--amber); font-size:10px; letter-spacing:1.5px; }
.local-clock .clock-time{ color:var(--text-dim); font-variant-numeric:tabular-nums; }

.theme-toggle{
  background:none; border:1px solid var(--panel-border); color:var(--text-dim);
  width:36px; height:36px; border-radius:8px; margin-left:10px;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; font-size:13px; transition:all .2s ease;
}
.theme-toggle:hover{ color:var(--amber); border-color:var(--amber); }

@media (max-width:480px){
  .local-clock{ display:none; }
}

@media (max-width:900px){
  ul#nav{ display:none; }
  .nav-toggle{
    display:flex; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:8px;
  }
  .nav-toggle span{ width:22px; height:2px; background:var(--text); display:block; }
  #nav-wrap.open ul#nav{
    display:flex; flex-direction:column; position:absolute; top:var(--nav-h); left:0; width:100%;
    background:var(--bg-elevated); padding:12px 28px 24px; border-bottom:1px solid var(--panel-border); gap:2px;
  }
}

/* ---------- hero ---------- */
header#home{
  position:relative;
  min-height:100vh;
  display:flex; align-items:center;
  overflow:hidden;
  padding-top:var(--nav-h);
}

.hero-grid{
  display:grid; grid-template-columns:1.2fr 0.8fr; gap:60px; align-items:center;
  position:relative; z-index:1;
}
@media (max-width:900px){ .hero-grid{ grid-template-columns:1fr; } }

.hero-eyebrow{
  font-family:var(--f-mono); font-size:13px; letter-spacing:2px; color:var(--cyan);
  display:flex; align-items:center; gap:10px; margin-bottom:22px;
}
.hero-eyebrow .dot{ width:8px; height:8px; border-radius:50%; background:var(--ok); box-shadow:0 0 0 4px rgba(79,209,139,0.15); }

h1.responsive-headline{
  font-size:clamp(42px,6.2vw,72px);
  line-height:1.05;
  letter-spacing:-1.5px;
  margin-bottom:20px;
}
h1.responsive-headline .accent{ color:var(--amber); }

.hero-sub{ font-size:18px; color:var(--text-dim); max-width:540px; margin-bottom:34px; }
.hero-sub b{ color:var(--text); font-weight:600; }

.hero-cta{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom:44px; }
.btn{
  font-family:var(--f-mono); font-size:13px; letter-spacing:1px; text-transform:uppercase;
  padding:14px 24px; border-radius:8px; display:inline-flex; align-items:center; gap:10px;
  transition:all .2s ease; cursor:pointer; border:1px solid transparent;
}
.btn-primary{ background:var(--amber); color:#0A0F1C; font-weight:600; }
.btn-primary:hover{ background:#ffc350; transform:translateY(-2px); }
.btn-ghost{ border-color:var(--panel-border); color:var(--text); }
.btn-ghost:hover{ border-color:var(--cyan); color:var(--cyan); }

ul.social{ display:flex; gap:18px; font-size:20px; }
ul.social li a{ color:var(--text-dim); transition:color .2s ease, transform .2s ease; display:inline-block; }
ul.social li a:hover{ color:var(--amber); transform:translateY(-3px); }

/* flight path signature element */
.hero-map{ position:relative; height:420px; }
.hero-map svg{ width:100%; height:100%; overflow:visible; }
.flight-path{
  fill:none; stroke:var(--cyan); stroke-width:1.5; stroke-dasharray:4 6;
  stroke-linecap:round;
}
.flight-path.solid{
  stroke:var(--amber); stroke-dasharray:600; stroke-dashoffset:600;
  animation:draw 2.4s ease forwards .3s;
}
@keyframes draw{ to{ stroke-dashoffset:0; } }
.wpt{ fill:var(--bg); stroke:var(--cyan); stroke-width:2; }
.wpt-label{ font-family:var(--f-mono); font-size:10px; fill:var(--text-faint); letter-spacing:1px; }
.wpt-main{ fill:var(--amber); stroke:none; }

.scrolldown{ position:absolute; bottom:34px; left:50%; transform:translateX(-50%); z-index:1; }
.scrolldown a{
  width:38px; height:38px; border:1px solid var(--panel-border); border-radius:50%;
  display:flex; align-items:center; justify-content:center; color:var(--text-dim);
  animation:bob 2.2s ease-in-out infinite;
}
@keyframes bob{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(6px);} }

/* ---------- about ---------- */
.about-grid{ display:grid; grid-template-columns:200px 1fr; gap:56px; align-items:start; }
@media (max-width:700px){ .about-grid{ grid-template-columns:1fr; } }
.profile-pic{ width:180px; height:180px; border-radius:50%; object-fit:cover; aspect-ratio:1/1; border:3px solid var(--panel-border); }

.stat-strip{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--panel-border); margin-top:38px; border:1px solid var(--panel-border); border-radius:var(--radius); overflow:hidden; }
.stat{ background:var(--panel); padding:22px 20px; }
.stat b{ font-family:var(--f-display); font-size:26px; display:block; color:var(--amber); }
.stat span{ font-family:var(--f-mono); font-size:11px; letter-spacing:1px; text-transform:uppercase; color:var(--text-faint); }
.stat b{ font-family:var(--f-display); font-size:26px; display:block; color:var(--amber); }
.stat span{ font-family:var(--f-mono); font-size:11px; letter-spacing:1px; text-transform:uppercase; color:var(--text-faint); }

/* ---------- flight log (resume) ---------- */
.log-track{ position:relative; padding-left:34px; border-left:1px solid var(--panel-border); }
.log-entry{ position:relative; padding-bottom:44px; }
.log-entry:last-child{ padding-bottom:0; }
.log-entry::before{
  content:""; position:absolute; left:-40px; top:4px; width:11px; height:11px; border-radius:50%;
  background:var(--bg); border:2px solid var(--cyan);
}
.log-entry.now::before{ border-color:var(--amber); background:var(--amber); box-shadow:0 0 0 4px var(--amber-dim); }
.log-date{ font-family:var(--f-mono); font-size:12px; color:var(--cyan); letter-spacing:.5px; margin-bottom:6px; display:block; }
.log-entry h4{ font-size:19px; margin-bottom:4px; }
.log-org{ font-family:var(--f-mono); font-size:12px; color:var(--text-faint); text-transform:uppercase; letter-spacing:1px; margin-bottom:10px; display:block; }
.log-entry p{ font-size:15px; max-width:640px; }

.subhead{ font-family:var(--f-mono); font-size:13px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-faint); margin:70px 0 26px; }
.subhead:first-child{ margin-top:0; }

/* gauges (skills) */
.gauges{ display:grid; grid-template-columns:1fr 1fr; gap:22px 40px; }
@media (max-width:700px){ .gauges{ grid-template-columns:1fr; } }
.gauge-label{ display:flex; justify-content:space-between; font-family:var(--f-mono); font-size:12px; margin-bottom:8px; color:var(--text-dim); }
.gauge-label b{ color:var(--text); font-weight:500; }
.gauge-track{ height:6px; background:var(--panel); border:1px solid var(--panel-border); border-radius:4px; overflow:hidden; }

.gauges > div[data-detail]{ cursor:help; }
.gauge-tip{
  position:fixed; z-index:250; max-width:260px; padding:11px 14px;
  background:var(--panel); border:1px solid var(--amber); border-radius:8px;
  font-family:var(--f-mono); font-size:11.5px; line-height:1.55; color:var(--text);
  box-shadow:0 10px 26px rgba(0,0,0,.35);
  opacity:0; pointer-events:none; transform:translateY(4px);
  transition:opacity .15s ease, transform .15s ease;
}
.gauge-tip.show{ opacity:1; transform:translateY(0); }
.gauge-fill{ height:100%; background:linear-gradient(90deg,var(--cyan),var(--amber)); border-radius:4px; width:0; transition:width 1.1s cubic-bezier(.4,0,.2,1); }

/* misc cards row: languages / licences / fan / games */
.chip-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.chip-grid + .chip-grid{ margin-top:14px; }
@media (max-width:700px){ .chip-grid{ grid-template-columns:repeat(2,1fr); } }
.chip-card{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius);
  padding:20px; text-align:center; transition:border-color .2s ease, transform .2s ease;
}
.chip-card:hover{ border-color:var(--cyan); transform:translateY(-3px); }
.chip-card img{ margin:0 auto 10px; width:34px; height:34px; object-fit:contain; }
.chip-card h5{ font-family:var(--f-display); font-size:14px; color:var(--text); margin-bottom:4px; }
.chip-card span{ font-family:var(--f-mono); font-size:11px; color:var(--text-faint); letter-spacing:.5px; }

/* ---------- portfolio ---------- */
.portfolio-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:22px; }
.portfolio-item{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius);
  overflow:hidden; cursor:pointer; transition:transform .25s ease, border-color .25s ease;
  position:relative;
}
.portfolio-item:hover{ transform:translateY(-4px); border-color:var(--amber); }
.portfolio-item .thumb{ aspect-ratio:16/10; overflow:hidden; background:#0A0F1C; }
.portfolio-item .thumb img{ width:100%; height:100%; object-fit:cover; transition:transform .4s ease; }
.portfolio-item:hover .thumb img{ transform:scale(1.06); }
.portfolio-item .meta{ padding:18px 20px; }
.portfolio-item .meta h4{ font-size:16px; margin-bottom:6px; }
.portfolio-item .meta span{ font-family:var(--f-mono); font-size:11px; color:var(--amber); letter-spacing:1px; text-transform:uppercase; }

/* lightweight modal (replaces magnific-popup) */
.eo-modal{ position:fixed; inset:0; z-index:500; display:none; align-items:center; justify-content:center; padding:24px; }
.eo-modal.open{ display:flex; }
.eo-modal .backdrop{ position:absolute; inset:0; background:rgba(6,9,18,0.86); backdrop-filter:blur(4px); }
.eo-modal .box{
  position:relative; max-width:640px; width:100%; max-height:86vh; overflow:auto;
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius);
}
.eo-modal .box img{ width:100%; }
.eo-modal .box .content{ padding:24px 28px 28px; }
.eo-modal .box h3{ font-size:20px; margin-bottom:10px; }
.eo-modal .box .cats{ font-family:var(--f-mono); font-size:11px; color:var(--cyan); letter-spacing:1px; text-transform:uppercase; margin-top:14px; display:block; }
.eo-modal .close-btn{
  position:absolute; top:14px; right:14px; width:34px; height:34px; border-radius:50%;
  background:rgba(0,0,0,0.5); color:#fff; display:flex; align-items:center; justify-content:center;
  cursor:pointer; font-size:18px; z-index:2; border:1px solid rgba(255,255,255,0.15);
}

/* ---------- certificates & testimonials: scroll-snap rail ---------- */
.rail{ display:flex; gap:20px; overflow-x:auto; padding-bottom:18px; margin:0 -28px; padding-left:28px; padding-right:28px; cursor:grab; }
.rail::-webkit-scrollbar{ height:6px; }
.rail::-webkit-scrollbar-thumb{ background:var(--panel-border); border-radius:4px; }

.cert-card{
  flex:0 0 260px; background:var(--panel); border:1px solid var(--panel-border);
  border-radius:var(--radius); overflow:hidden; cursor:pointer; transition:border-color .2s ease;
}
.cert-card:hover{ border-color:var(--amber); }
.cert-card img{ aspect-ratio:4/3; object-fit:cover; width:100%; }
.cert-card p{ padding:14px 16px; font-family:var(--f-mono); font-size:12px; color:var(--text); margin:0; }

.tmn-card{
  flex:0 0 420px; background:var(--panel); border:1px solid var(--panel-border);
  border-radius:var(--radius); padding:28px;
}
.tmn-card p{ font-family:var(--f-body); font-style:italic; color:var(--text); font-size:16px; line-height:1.7; }
.tmn-card cite{ font-family:var(--f-mono); font-size:12px; color:var(--cyan); font-style:normal; letter-spacing:.5px; }

.exam-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin-top:60px; }
.exam-card{ background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius); padding:22px; }
.exam-card h5{ font-family:var(--f-mono); font-size:12px; letter-spacing:1.5px; color:var(--text-faint); text-transform:uppercase; margin-bottom:14px; }
.exam-row{ display:flex; justify-content:space-between; font-family:var(--f-mono); font-size:13px; padding:6px 0; border-top:1px dashed var(--panel-border); }
.exam-row:first-of-type{ border-top:none; }
.exam-row b{ color:var(--amber); }

/* ---------- blog ---------- */
.blog-list{ border-top:1px solid var(--panel-border); }
.blog-row{
  display:flex; justify-content:space-between; align-items:center; gap:20px;
  padding:20px 0; border-bottom:1px solid var(--panel-border); transition:padding-left .2s ease;
}
.blog-row:hover{ padding-left:8px; }
.blog-row a{ font-size:17px; color:var(--text); font-family:var(--f-display); min-width:0; flex:1; overflow-wrap:break-word; }
.blog-row a:hover{ color:var(--amber); }
.blog-row time{ font-family:var(--f-mono); font-size:12px; color:var(--text-faint); white-space:nowrap; }

/* ---------- contact ---------- */
.contact-grid{ display:grid; grid-template-columns:1fr 1fr; gap:60px; }
@media (max-width:800px){ .contact-grid{ grid-template-columns:1fr; } }

.field{ margin-bottom:20px; }
.field label{ font-family:var(--f-mono); font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-faint); display:block; margin-bottom:8px; }
.field input, .field textarea{
  width:100%; background:var(--panel); border:1px solid var(--panel-border); border-radius:8px;
  color:var(--text); padding:13px 15px; font-family:var(--f-body); font-size:15px; resize:vertical;
}
.field input:focus, .field textarea:focus{ outline:none; border-color:var(--cyan); }
.field textarea{ min-height:140px; }
.required{ color:var(--amber); }

.field-check{ display:inline-block; color:var(--panel-border); opacity:.5; font-size:12px; transition:all .25s ease; }
.field-check.checked{ color:var(--ok); opacity:1; transform:scale(1.1); }

.btn-primary.cleared{ background:var(--ok); }
.btn-primary.cleared:hover{ background:var(--ok); filter:brightness(1.1); }

#message-warning, #message-success{ display:none; padding:14px 18px; border-radius:8px; font-family:var(--f-mono); font-size:13px; margin-bottom:20px; }
#message-warning{ background:rgba(255,80,80,.1); color:#ff8080; border:1px solid rgba(255,80,80,.25); }
#message-success{ background:var(--cyan-dim); color:var(--cyan); border:1px solid rgba(79,209,232,.3); }
#image-loader{ display:none; margin-left:10px; }
#image-loader img{ width:20px; }

.contact-info dl{ margin-top:6px; }
.contact-info dt{ font-family:var(--f-mono); font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--text-faint); margin-top:20px; }
.contact-info dd{ margin:4px 0 0; font-size:16px; color:var(--text); }
.contact-info dd a:hover{ color:var(--amber); }

/* ---------- travels map (real styling for map.js / D3 country paths) ---------- */
#travel-map-container{ border:1px solid var(--panel-border); background:var(--panel); border-radius:var(--radius); }

#travel-map .country{
  fill:#25314E; stroke:var(--panel-border); stroke-width:0.5px;
  cursor:pointer; transition:fill .25s ease;
}
#travel-map .country.visited{ fill:var(--amber); stroke:var(--panel-border); }
#travel-map .country:hover{ fill:var(--cyan) !important; stroke:var(--bg); stroke-width:1px; }

/* ---------- METAR widget ---------- */
.metar-widget{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius);
  padding:16px 20px; margin-bottom:22px;
}
.metar-label{
  font-family:var(--f-mono); font-size:10.5px; letter-spacing:1.5px; text-transform:uppercase;
  color:var(--amber); margin-bottom:8px;
}
.metar-raw{
  font-family:var(--f-mono); font-size:14px; color:var(--text); letter-spacing:.3px;
  word-break:break-all; line-height:1.6;
}
.metar-plain{
  font-family:var(--f-mono); font-size:12px; color:var(--text-faint); margin-top:8px;
  line-height:1.6;
}

.radar-loading{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  display:flex; flex-direction:column; align-items:center; gap:16px;
}
.radar-sweep{
  position:relative; width:76px; height:76px; border-radius:50%;
  background:
    repeating-radial-gradient(circle, transparent 0 11px, rgba(79,209,232,.12) 11px 12px),
    radial-gradient(circle, rgba(79,209,232,.05), transparent 70%);
  border:1px solid rgba(79,209,232,.3);
}
.radar-sweep::before{
  content:""; position:absolute; inset:0; border-radius:50%;
  background:conic-gradient(from 0deg, rgba(79,209,232,.85), transparent 32%);
  animation:radar-spin 1.7s linear infinite;
}
.radar-sweep::after{
  content:""; position:absolute; top:50%; left:50%; width:5px; height:5px;
  background:var(--amber); border-radius:50%; transform:translate(-50%,-50%);
  box-shadow:0 0 8px rgba(255,176,32,.8);
}
@keyframes radar-spin{ to{ transform:rotate(360deg); } }
.radar-text{ font-family:var(--f-mono); font-size:12px; letter-spacing:1.5px; color:var(--text-faint); text-transform:uppercase; }

.flight-route{
  stroke:var(--amber); stroke-width:1.6; stroke-dasharray:5 4; fill:none;
  filter:drop-shadow(0 0 3px rgba(255,176,32,.6));
}
.home-marker{ fill:var(--cyan); }
.dest-marker{ fill:var(--amber); }
.home-marker-pulse, .dest-marker-pulse{
  fill:none; stroke:var(--cyan); stroke-width:1.5; opacity:.7;
  animation:sg-pulse 1.8s ease-out infinite;
}
.dest-marker-pulse{ stroke:var(--amber); }
@keyframes sg-pulse{
  0%{ r:4; opacity:.8; }
  100%{ r:14; opacity:0; }
}

.map-zoom-btn{
  width:36px; height:36px; border-radius:7px;
  background:var(--panel); color:var(--text); border:1px solid var(--panel-border);
  cursor:pointer; font-size:18px; font-weight:600; line-height:1;
  display:flex; align-items:center; justify-content:center;
  transition:all .2s ease; box-shadow:0 2px 6px rgba(0,0,0,.35);
}
.map-zoom-btn:hover{ background:var(--amber); color:#0A0F1C; border-color:var(--amber); }
.map-zoom-btn:active{ transform:scale(0.94); }

/* ---------- boarding pass card ---------- */
.boarding-pass{
  margin-top:32px; display:flex; width:100%;
  background:linear-gradient(135deg, var(--panel), var(--bg-elevated));
  border:1px solid var(--panel-border); border-radius:14px; overflow:visible;
  box-shadow:0 10px 30px rgba(0,0,0,.35);
  transform-style:preserve-3d; transition:transform .15s ease, box-shadow .2s ease;
  cursor:pointer; will-change:transform;
}
.boarding-pass:hover{ box-shadow:0 20px 45px rgba(0,0,0,.5); }

.bp-main{ flex:1; padding:22px 24px; min-width:0; }
.bp-top{
  display:flex; justify-content:space-between; align-items:center;
  font-family:var(--f-mono); font-size:11px; letter-spacing:1.5px; text-transform:uppercase;
  color:var(--text-faint); margin-bottom:20px; padding-bottom:14px; border-bottom:1px dashed var(--panel-border);
}
.bp-top .bp-class{ color:var(--amber); }

.bp-route{ display:flex; align-items:center; gap:14px; margin-bottom:22px; }
.bp-city{ display:flex; flex-direction:column; }
.bp-city-right{ text-align:right; align-items:flex-end; }
.bp-city .bp-code{ font-family:var(--f-display); font-size:26px; font-weight:700; color:var(--amber); line-height:1; }
.bp-city .bp-name{ font-family:var(--f-mono); font-size:10px; letter-spacing:1px; color:var(--text-faint); margin-top:5px; text-transform:uppercase; white-space:nowrap; }
.bp-plane{ flex:1; position:relative; text-align:center; color:var(--cyan); font-size:16px; }
.bp-plane::before, .bp-plane::after{ content:""; position:absolute; top:50%; width:38%; height:1px; background:var(--panel-border); }
.bp-plane::before{ left:0; }
.bp-plane::after{ right:0; }

.bp-fields{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.bp-fields div{ display:flex; flex-direction:column; gap:5px; min-width:0; }
.bp-fields span{ font-family:var(--f-mono); font-size:9px; letter-spacing:1px; color:var(--text-faint); text-transform:uppercase; }
.bp-fields b{ font-family:var(--f-mono); font-size:13px; color:var(--text); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.bp-stub{
  position:relative; width:96px; flex-shrink:0;
  background:var(--bg-elevated); border-left:2px dashed var(--panel-border);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px;
  padding:16px 10px; border-radius:0 14px 14px 0;
}
.bp-barcode{
  width:20px; height:76px;
  background:repeating-linear-gradient(90deg, var(--text) 0 2px, transparent 2px 4px, var(--text) 4px 5px, transparent 5px 8px);
  opacity:.65;
}
.bp-code-small{ writing-mode:vertical-rl; font-family:var(--f-mono); font-size:10px; letter-spacing:2px; color:var(--text-faint); }

@media (max-width:560px){
  .boarding-pass{ flex-direction:column; width:100%; }
  .bp-stub{
    width:100%; flex-direction:row; border-left:none; border-top:2px dashed var(--panel-border);
    border-radius:0 0 14px 14px;
  }
  .bp-barcode{ width:76px; height:20px; background:repeating-linear-gradient(0deg, var(--text) 0 2px, transparent 2px 4px, var(--text) 4px 5px, transparent 5px 8px); }
  .bp-code-small{ writing-mode:horizontal-tb; }
  .bp-fields{ grid-template-columns:repeat(2,1fr); row-gap:14px; }
}

/* ---------- pictures gallery ---------- */
.gallery{ display:grid; gap:16px; }
.gallery-main{
  position:relative; border:1px solid var(--panel-border); border-radius:var(--radius);
  overflow:hidden; background:var(--panel); aspect-ratio:16/9;
}
.gallery-main img{ width:100%; height:100%; object-fit:cover; display:block; }
.gallery-caption{
  position:absolute; left:0; right:0; bottom:0; margin:0; padding:16px 20px;
  background:linear-gradient(transparent, rgba(0,0,0,.78));
  color:#fff; font-family:var(--f-mono); font-size:13px; letter-spacing:.3px;
}
.gallery-nav{
  position:absolute; top:50%; transform:translateY(-50%); width:42px; height:42px; border-radius:50%;
  background:rgba(10,15,28,.55); border:1px solid rgba(255,255,255,.2); color:#fff; font-size:22px;
  display:flex; align-items:center; justify-content:center; cursor:pointer; transition:all .2s ease;
}
.gallery-nav.prev{ left:14px; }
.gallery-nav.next{ right:14px; }
.gallery-nav:hover{ background:var(--amber); color:#0A0F1C; border-color:var(--amber); }
.gallery-thumbs{
  display:flex; gap:10px; overflow-x:auto; padding-bottom:4px;
  scrollbar-width:none; -ms-overflow-style:none;
}
.gallery-thumbs::-webkit-scrollbar{ display:none; }
.gallery-thumb{
  flex:0 0 84px; border-radius:8px; overflow:hidden; border:2px solid transparent;
  padding:0; cursor:pointer; opacity:.55; transition:all .2s ease; background:none;
}
.gallery-thumb img{ width:100%; aspect-ratio:1/1; object-fit:cover; display:block; }
.gallery-thumb.active, .gallery-thumb:hover{ opacity:1; border-color:var(--amber); }

.gallery-dots{ display:flex; justify-content:center; align-items:center; gap:8px; margin-top:4px; }
.gallery-dot{
  width:8px; height:8px; padding:0; border:none; border-radius:50%;
  background:var(--panel-border); cursor:pointer; transition:all .25s ease;
}
.gallery-dot:hover{ background:var(--text-dim); }
.gallery-dot.active{ width:24px; border-radius:4px; background:var(--amber); }

/* ---------- split-flap departures board ---------- */
.board-section{
  background:var(--bg-elevated); padding:100px 0;
  border-top:1px solid var(--panel-border); border-bottom:1px solid var(--panel-border);
}
.split-flap-board{
  background:#000; border:1px solid #1B1B1E; border-radius:10px;
  padding:24px; overflow-x:auto;
  --amber:#FFB020 !important; --text-faint:#5B6478 !important;
}
.sfb-header{
  display:grid; grid-template-columns:2fr 1fr 0.6fr 1.6fr; gap:10px;
  font-family:var(--f-mono); font-size:11px; letter-spacing:2px; text-transform:uppercase;
  color:var(--text-faint); padding:0 4px 14px; border-bottom:1px solid #1B1B1E; margin-bottom:14px;
  min-width:520px;
}
.sfb-row{
  display:grid; grid-template-columns:2fr 1fr 0.6fr 1.6fr; gap:10px; align-items:center;
  padding:7px 4px; min-width:520px;
}
.sfb-cell{ display:flex; gap:3px; }
.sfb-char{
  position:relative; overflow:hidden;
  background:#0D0D0F; color:var(--amber); font-family:var(--f-mono); font-weight:600;
  width:19px; height:27px; display:flex; align-items:center; justify-content:center;
  border-radius:3px; border:1px solid #1E1E20; font-size:15px;
  box-shadow:inset 0 -3px 4px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.04);
  text-shadow:0 0 6px rgba(255,176,32,.45);
}
.sfb-char::after{
  content:""; position:absolute; left:0; right:0; top:50%; height:1px;
  background:rgba(0,0,0,.75); transform:translateY(-0.5px);
}

/* ---------- seatbelt sign micro-interaction ---------- */
.seatbelt-sign{
  position:fixed; top:92px; left:50%; z-index:300;
  display:flex; align-items:center; gap:10px;
  background:#141009; border:1px solid #3A2F18; border-radius:8px;
  padding:10px 18px; box-shadow:0 10px 28px rgba(0,0,0,.5);
  opacity:0; pointer-events:none;
  transform:translate(-50%, -8px);
  transition:opacity .6s ease, transform .6s ease;
  --amber:#FFB020;
}
.seatbelt-sign.show{ opacity:1; transform:translate(-50%, 0); }
.seatbelt-sign .sb-icon{
  width:20px; height:20px; color:var(--amber);
  animation:sb-flicker 1.3s ease-in-out 2;
}
.seatbelt-sign .sb-text{
  font-family:var(--f-mono); font-size:12px; font-weight:600; letter-spacing:2.5px;
  text-transform:uppercase; color:var(--amber);
  text-shadow:0 0 10px rgba(255,176,32,.55);
}
@keyframes sb-flicker{
  0%, 100%{ opacity:1; }
  45%{ opacity:.3; }
  55%{ opacity:1; }
}
@media (max-width:600px){
  .seatbelt-sign{ top:80px; padding:8px 14px; }
  .seatbelt-sign .sb-text{ font-size:10.5px; letter-spacing:1.8px; }
}

/* ---------- Ground Control (quick nav palette) ---------- */
.gc-trigger{
  background:none; border:1px solid var(--panel-border); color:var(--text-dim);
  width:36px; height:36px; border-radius:8px; margin-left:10px;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; font-size:13px; transition:all .2s ease;
}
.gc-trigger:hover{ color:var(--amber); border-color:var(--amber); }

.ground-control{
  position:fixed; inset:0; z-index:400;
  display:none; align-items:flex-start; justify-content:center;
  padding-top:12vh;
}
.ground-control.open{ display:flex; }
.gc-backdrop{ position:absolute; inset:0; background:rgba(6,9,18,.82); backdrop-filter:blur(4px); }
.gc-panel{
  position:relative; width:92%; max-width:560px;
  background:var(--panel); border:1px solid var(--panel-border); border-radius:12px;
  box-shadow:0 24px 60px rgba(0,0,0,.5); overflow:hidden;
}
.gc-input-row{
  display:flex; align-items:center; gap:10px; padding:16px 18px;
  border-bottom:1px solid var(--panel-border);
}
.gc-prefix{ font-family:var(--f-mono); color:var(--amber); font-size:16px; font-weight:600; }
.gc-input-row input{
  flex:1; background:none; border:none; outline:none; color:var(--text);
  font-family:var(--f-mono); font-size:15px;
}
.gc-input-row input::placeholder{ color:var(--text-faint); }
.gc-esc{
  font-family:var(--f-mono); font-size:10px; letter-spacing:1px; color:var(--text-faint);
  border:1px solid var(--panel-border); border-radius:4px; padding:2px 6px;
}
.gc-results{ max-height:50vh; overflow-y:auto; padding:8px; }
.gc-item{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:11px 12px; border-radius:8px; cursor:pointer;
  font-family:var(--f-mono); transition:background .12s ease;
}
.gc-item.active{ background:var(--amber-dim); }
.gc-item-title{ font-size:13.5px; color:var(--text); }
.gc-item-sub{ font-size:11px; color:var(--text-faint); text-transform:uppercase; letter-spacing:.5px; }
.gc-empty{ padding:24px 12px; text-align:center; font-family:var(--f-mono); font-size:13px; color:var(--text-faint); }

/* ---------- altimeter scroll gauge ---------- */
.scroll-gauge{
  position:fixed; right:22px; bottom:22px; width:64px; height:64px; z-index:150;
  cursor:pointer; filter:drop-shadow(0 6px 16px rgba(0,0,0,.45));
  opacity:0; transform:translateY(10px); pointer-events:none;
  transition:opacity .3s ease, transform .3s ease;
}
.scroll-gauge.visible{ opacity:1; transform:translateY(0); pointer-events:auto; }
.scroll-gauge svg{ width:100%; height:100%; }
.sg-track{ fill:var(--panel); stroke:var(--panel-border); stroke-width:2.5; }
.sg-tick{ stroke:var(--text-faint); stroke-width:1.4; }
.sg-progress{
  fill:none; stroke:var(--amber); stroke-width:4.5; stroke-linecap:round;
  stroke-dasharray:263.9; stroke-dashoffset:263.9;
  transform:rotate(-90deg); transform-origin:50% 50%;
  transition:stroke-dashoffset .1s linear;
}
.sg-readout{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-family:var(--f-mono); color:var(--text); pointer-events:none;
}
.sg-readout span{ font-size:15px; font-weight:600; }
.sg-readout small{ font-size:9px; color:var(--text-faint); margin-left:1px; }

@media (max-width:600px){
  .scroll-gauge{ width:50px; height:50px; right:16px; bottom:16px; }
  .sg-readout span{ font-size:12px; }
}

/* ---------- footer ---------- */
footer{ padding:60px 0 40px; text-align:center; border-top:1px solid var(--panel-border); }
footer ul.social-links{ display:flex; justify-content:center; gap:26px; font-size:22px; margin-bottom:24px; }
footer ul.social-links li a{ color:var(--text-dim); transition:color .2s ease; }
footer ul.social-links li a:hover{ color:var(--amber); }
footer ul.copyright{ display:flex; justify-content:center; gap:8px; flex-wrap:wrap; font-family:var(--f-mono); font-size:12px; color:var(--text-faint); }
footer ul.copyright li:first-child::before{ content:none; }
footer ul.copyright li::before{ content:"·"; margin-right:8px; color:var(--panel-border); }
#go-top{ margin-top:26px; }
#go-top a{
  display:inline-flex; width:44px; height:44px; border-radius:50%; align-items:center; justify-content:center;
  background:var(--panel); border:1px solid var(--panel-border); color:var(--text-dim); transition:all .2s ease;
}
#go-top a:hover{ border-color:var(--amber); color:var(--amber); transform:translateY(-3px); }

/* ---------- reveal-on-scroll ---------- */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:translateY(0); }

/* ---------- focus visibility ---------- */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline:2px solid var(--cyan); outline-offset:2px;
}

@media (max-width:600px){
  section{ padding:76px 0; }
  .section-head h2{ font-size:28px; }
}

/* ---------- mobile refinements ---------- */
@media (max-width:900px){
  .hero-map{ height:280px; margin-top:20px; }
}

@media (max-width:700px){
  .about-grid .profile-pic{ justify-self:center; }
}

@media (max-width:480px){
  .container{ padding:0 20px; }

  .stat-strip{ grid-template-columns:1fr; }
  .stat{ display:flex; align-items:center; justify-content:space-between; }

  .exam-grid{ grid-template-columns:1fr; }
  .portfolio-grid{ grid-template-columns:1fr; }
  .chip-grid{ grid-template-columns:1fr 1fr; }

  .cert-card{ flex-basis:72vw; }
  .tmn-card{ flex-basis:86vw; padding:22px; }

  .board-section{ padding:70px 0; }
  .split-flap-board{ padding:16px; }
  .sfb-char{ width:15px; height:23px; font-size:12px; }
  .sfb-header{ font-size:9.5px; }

  .hero-cta{ flex-direction:column; align-items:stretch; }
  .hero-cta .btn{ text-align:center; justify-content:center; }
}

