/* ==========================================================================
   COMPONENTS
   ========================================================================== */

/* ---- Window chrome strip (signature device #1) --------------------------
   A thin bar mimicking an editor tab, fixed above the navbar on every page.
   Shows a fake file path so the whole site reads as "one long session". */
.chrome{
  position:fixed;
  top:0;left:0;right:0;
  height:var(--chrome-h);
  z-index:60;
  background:var(--ink-950);
  border-bottom:1px solid var(--line-soft);
  display:flex;
  align-items:center;
  gap:14px;
  padding-inline:16px;
  font-family:var(--font-mono);
  font-size:var(--fs-12);
  color:var(--text-lo);
}
.chrome__dots{display:flex;gap:6px;flex-shrink:0;}
.chrome__dots span{
  width:9px;height:9px;border-radius:50%;
  background:var(--ink-600);
}
.chrome__path{
  color:var(--text-lo);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.chrome__path b{color:var(--amber);font-weight:500;}
.chrome__meta{
  margin-left:auto;
  display:flex;
  gap:16px;
  color:var(--text-lo);
}
.chrome__meta span{white-space:nowrap;}
@media (max-width:720px){
  .chrome__meta{display:none;}
}

/* ---- Navbar --------------------------------------------------------- */
.navbar{
  position:fixed;
  top:var(--chrome-h);
  left:0;right:0;
  height:var(--navbar-h);
  z-index:55;
  background:rgba(14,17,23,.86);
  backdrop-filter:blur(10px) saturate(140%);
  border-bottom:1px solid var(--line-soft);
}
.navbar__inner{
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
  height:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.brand{
  display:flex;
  align-items:baseline;
  gap:8px;
  font-family:var(--font-mono);
  font-weight:600;
  font-size:var(--fs-16);
  color:var(--text-hi);
}
.brand span{color:var(--amber);}

.navlist{
  display:flex;
  align-items:center;
  gap:2px;
  font-family:var(--font-mono);
  font-size:var(--fs-12);
}
.navlist a{
  display:flex;
  align-items:center;
  gap:6px;
  padding:8px 12px;
  border-radius:var(--radius-s);
  color:var(--text-md);
  transition:color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
}
.navlist a i{color:var(--text-lo);font-style:normal;}
.navlist a:hover{color:var(--text-hi);background:var(--ink-800);}
.navlist a.is-active{color:var(--amber);}
.navlist a.is-active i{color:var(--amber);}

.nav-cta{
  display:none;
}
@media (min-width:900px){
  .nav-cta{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-family:var(--font-mono);
    font-size:var(--fs-12);
    color:var(--ink-950);
    background:var(--amber);
    padding:8px 14px;
    border-radius:var(--radius-s);
    margin-left:10px;
    transition:background var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
  }
  .nav-cta:hover{background:var(--amber-hi);transform:translateY(-1px);}
}

.navtoggle{
  display:flex;
  flex-direction:column;
  gap:5px;
  padding:8px;
}
.navtoggle span{
  width:20px;height:2px;background:var(--text-hi);
  transition:transform var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease);
}
@media (min-width:900px){.navtoggle{display:none;}}

.navlist{display:none;}
@media (min-width:900px){
  .navlist{display:flex;}
}
.navdrawer{
  position:fixed;
  top:calc(var(--chrome-h) + var(--navbar-h));
  left:0;right:0;
  background:var(--ink-950);
  border-bottom:1px solid var(--line-soft);
  z-index:54;
  max-height:0;
  overflow:hidden;
  transition:max-height var(--dur-med) var(--ease);
}
.navdrawer.is-open{max-height:520px;}
.navdrawer .navlist{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  padding:8px var(--gutter) 18px;
  gap:2px;
}
.navdrawer .navlist a{padding:12px 8px;}
@media (min-width:900px){.navdrawer{display:none;}}

/* ---- Status bar (signature device #2) --------------------------------
   Persistent bottom strip like a code editor status bar. Live clock +
   simulated cursor position driven by statusbar.js. */
.statusbar{
  position:fixed;
  bottom:0;left:0;right:0;
  height:var(--statusbar-h);
  background:var(--amber);
  color:var(--ink-950);
  z-index:60;
  font-family:var(--font-mono);
  font-size:var(--fs-10);
  display:flex;
  align-items:center;
  gap:18px;
  padding-inline:14px;
  overflow:hidden;
  white-space:nowrap;
}
.statusbar__group{display:flex;align-items:center;gap:14px;}
.statusbar__sep{opacity:.5;}
.statusbar__right{margin-left:auto;display:flex;gap:14px;}
.statusbar b{font-weight:700;}
@media (max-width:600px){
  .statusbar__optional{display:none;}
}

/* ---- Buttons ----------------------------------------------------------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-family:var(--font-mono);
  font-size:var(--fs-14);
  padding:13px 22px;
  border-radius:var(--radius-s);
  border:1px solid var(--line);
  transition:border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
}
.btn--primary{
  background:var(--amber);
  color:var(--ink-950);
  border-color:var(--amber);
  font-weight:600;
}
.btn--primary:hover{background:var(--amber-hi);border-color:var(--amber-hi);transform:translateY(-2px);}
.btn--ghost{color:var(--text-hi);}
.btn--ghost:hover{border-color:var(--text-md);transform:translateY(-2px);}
.btn-row{display:flex;flex-wrap:wrap;gap:14px;}

/* ---- Cards --------------------------------------------------------- */
.card{
  background:var(--ink-800);
  border:1px solid var(--line-soft);
  border-radius:var(--radius-m);
  padding:26px;
  transition:border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
}
.card:hover{border-color:var(--line);}

/* ---- 3D hover-tilt (signature device #3) -------------------------------
   Applied via [data-tilt] + assets/js/tilt.js. */
[data-tilt]{
  transform-style:preserve-3d;
  will-change:transform;
  transition:transform .5s var(--ease), box-shadow .4s var(--ease);
}
[data-tilt].is-tilting{transition:box-shadow .4s var(--ease);}
[data-tilt] [data-tilt-pop]{
  transform:translateZ(24px);
}

/* ---- 3D hover-tilt (signature device #3) -------------------------------
   Applied via [data-tilt] + assets/js/tilt.js. Transform is written inline
   by JS on mousemove; the transition here only smooths the return-to-rest
   on mouseleave (JS removes .is-tilting so this rule can take over). */
[data-tilt]{
  transform-style:preserve-3d;
  will-change:transform;
  transition:transform .5s var(--ease), box-shadow .4s var(--ease);
}
[data-tilt].is-tilting{transition:box-shadow .4s var(--ease);}
[data-tilt] [data-tilt-pop]{
  transform:translateZ(24px);
}

/* ---- Terminal window device (used inline within content) -------------- */
.term{
  background:var(--ink-950);
  border:1px solid var(--line-soft);
  border-radius:var(--radius-m);
  overflow:hidden;
  box-shadow:0 30px 60px -30px rgba(0,0,0,.6);
}
.term__bar{
  display:flex;
  align-items:center;
  gap:8px;
  padding:10px 14px;
  background:var(--ink-800);
  border-bottom:1px solid var(--line-soft);
  font-family:var(--font-mono);
  font-size:var(--fs-10);
  color:var(--text-lo);
}
.term__bar span{width:9px;height:9px;border-radius:50%;background:var(--ink-600);}
.term__body{
  padding:20px;
  font-family:var(--font-mono);
  font-size:var(--fs-14);
  line-height:1.7;
  color:var(--text-md);
  overflow-x:auto;
}
.term__body .c-prompt{color:var(--teal);}
.term__body .c-str{color:var(--amber-hi);}
.term__body .c-comment{color:var(--text-lo);}
.term__body .c-out{color:var(--text-hi);}

/* ---- Tag / pill --------------------------------------------------- */
.tag{
  display:inline-flex;
  align-items:center;
  font-family:var(--font-mono);
  font-size:var(--fs-10);
  letter-spacing:.03em;
  padding:5px 9px;
  border-radius:4px;
  background:var(--ink-700);
  border:1px solid var(--line-soft);
  color:var(--text-md);
}
.tag--amber{color:var(--amber);border-color:rgba(240,169,57,.35);background:var(--amber-dim);}
.tag--teal{color:var(--teal);border-color:rgba(79,209,197,.35);background:var(--teal-dim);}

/* ---- Footer -------------------------------------------------------- */
.footer{
  border-top:1px solid var(--line-soft);
  padding-block:48px;
  margin-top:80px;
}
.footer__inner{
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
  display:flex;
  flex-wrap:wrap;
  gap:24px;
  align-items:center;
  justify-content:space-between;
}
.footer__brand{
  font-family:var(--font-mono);
  color:var(--text-md);
  font-size:var(--fs-12);
}
.footer__links{
  display:flex;
  gap:18px;
  font-family:var(--font-mono);
  font-size:var(--fs-12);
  color:var(--text-lo);
}
.footer__links a:hover{color:var(--amber);}
.footer__sig{
  font-family:var(--font-mono);
  font-size:var(--fs-10);
  color:var(--text-lo);
}

/* ---- Page load transition overlay -------------------------------------- */
.page-veil{
  position:fixed;inset:0;
  background:var(--ink-900);
  z-index:200;
  display:flex;align-items:center;justify-content:center;
  transition:opacity var(--dur-med) var(--ease), visibility var(--dur-med) var(--ease);
}
.page-veil::after{
  content:"";
  width:22px;height:22px;
  border-radius:50%;
  border:2px solid var(--line);
  border-top-color:var(--amber);
  animation:spin .8s linear infinite;
}
.page-veil.is-hidden{opacity:0;visibility:hidden;}
@keyframes spin{to{transform:rotate(360deg);}}

/* ---- Back to top / small utility link ---------------------------- */
.inline-link{
  color:var(--amber);
  border-bottom:1px solid rgba(240,169,57,.35);
  transition:border-color var(--dur-fast) var(--ease);
}
.inline-link:hover{border-color:var(--amber);}
