/* ==================================================================
   Global shared stylesheet — styles.css
   Migrated from contact.html inline <style> block.
   Shared global styles + page-specific overrides live here.
   ================================================================== */

:root{
  --bg:#0A0A0B;
  --bg-panel:#131315;
  --bg-card:#161618;
  --text:#EDEAE3;
  --muted:#8A877E;
  --hot:#FF4B2B;
  --cool:#47E0B5;
  --border:rgba(237,234,227,0.12);
  --border-soft:rgba(237,234,227,0.06);

  /* Plyr theme — overrides Plyr defaults to match the palette */
  --plyr-color-main: var(--hot);
  --plyr-video-control-color: var(--text);
  --plyr-font-family: 'Inter', sans-serif;
  --plyr-font-size-base: 15px;
}

*{margin:0;padding:0;box-sizing:border-box;}
body{
  background:var(--bg);color:var(--text);
  font-family:'Inter',sans-serif;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none;}
::selection{background:var(--hot);color:#0A0A0B;}
:focus-visible{outline:2px solid var(--cool);outline-offset:3px;}
button{font-family:inherit;background:none;border:none;color:inherit;cursor:pointer;}

.wrap{max-width:1180px;margin:0 auto;padding:0 32px;}
.mono{font-family:'IBM Plex Mono',monospace;}

/* ---------- Icon system (SVG sprite via /assets/icons/sprite.svg) ---------- */
.icon{width:20px;height:20px;flex-shrink:0;color:inherit;fill:currentColor;
  display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;}
.icon-sml{width:16px;height:16px;}
.icon-lrg{width:24px;height:24px;}
.icon-hot{color:var(--hot);}
.icon-cool{color:var(--cool);}
.icon-muted{color:var(--muted);}

/* ---------- Navbar ---------- */
.navbar{
  position:sticky;top:0;z-index:50;
  border-bottom:1px solid var(--border);
  background:rgba(10,10,11,0.82);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.navbar .wrap{display:flex;align-items:center;justify-content:space-between;padding:18px 32px;}
.nav-logo, .nav_logo{
  display:flex;align-items:center;gap:10px;
  font-family:'Bebas Neue',sans-serif;font-size:20px;letter-spacing:0.02em;
}
.nav-logo .dot, .nav_logo .dot{width:8px;height:8px;background:var(--hot);border-radius:50%;flex-shrink:0;}
.nav-avatar{
  width:28px;height:28px;border-radius:3px;object-fit:cover;
  filter:grayscale(1) contrast(1.05);border:1px solid var(--border);
}
.nav-links{display:flex;align-items:center;gap:36px;list-style:none;}
.nav-links a{
  position:relative;font-size:13px;letter-spacing:0.05em;color:var(--muted);
  font-family:'IBM Plex Mono',monospace;padding:4px 0;transition:color 0.15s ease;
}
.nav-links a:hover{color:var(--text);}
.nav-links a.active{color:var(--text);}
.nav-links a.active::after{
  content:"";position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);
  width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;
  border-bottom:6px solid var(--hot);
}
.nav-cta{display:flex;align-items:center;gap:18px;}
.nav-btn{
  padding:9px 18px;font-size:13px;font-weight:600;
  background:var(--hot);color:#0A0A0B;border-radius:2px;
  transition:background 0.15s ease, transform 0.15s ease;
}
.nav-btn:hover{background:#ff6142;transform:translateY(-1px);}
.nav-toggle{display:none;flex-direction:column;gap:5px;padding:6px;}
.nav-toggle .icon{width:24px;height:24px;color:var(--text);}
.nav-mobile{
  display:none;flex-direction:column;border-bottom:1px solid var(--border);
  background:var(--bg);padding:8px 32px 20px;
}
.nav-mobile a{
  padding:14px 0;font-size:14px;font-family:'IBM Plex Mono',monospace;
  color:var(--muted);border-top:1px solid var(--border-soft);
}
.nav-mobile a.active{color:var(--hot);}
.nav-mobile.open{display:flex;}
@media (max-width:820px){
  .nav-links{display:none;}
  .nav-toggle{display:flex;}
  .nav-cta .nav-btn{display:none;}
}

/* ---------- Utility bar ---------- */
.utility-bar{border-bottom:1px solid var(--border);padding:16px 0;}
.utility-bar .wrap{
  display:flex;justify-content:space-between;align-items:center;
  font-size:12px;letter-spacing:0.08em;
}
.brand{color:var(--muted);font-weight:500;}
.brand strong{color:var(--text);}
.rec{display:flex;align-items:center;gap:8px;color:var(--muted);}
.rec-dot{width:7px;height:7px;border-radius:50%;background:var(--hot);animation:pulse 1.6s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(255,75,43,0.5);}50%{opacity:0.4;box-shadow:0 0 0 5px rgba(255,75,43,0);}}
#tc{color:var(--text);min-width:96px;display:inline-block;}

/* ---------- Page head ---------- */
.page-head{padding:88px 0 44px;border-bottom:1px solid var(--border);}
.page-head .wrap{display:grid;grid-template-columns:1fr auto;gap:48px;align-items:center;}
.page-head-content{align-self:start;max-width:760px;}
.eyebrow{font-size:12px;letter-spacing:0.14em;color:var(--muted);margin-bottom:22px;display:flex;align-items:center;gap:10px;}
.eyebrow::before{content:"";width:20px;height:1px;background:var(--hot);display:inline-block;}
h1{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:clamp(40px,6.5vw,76px);line-height:0.95;
}
.page-sub{margin-top:20px;max-width:560px;font-size:16px;line-height:1.6;color:var(--muted);}

/* ---------- Contact sheet ---------- */
.cs-grid{
  display:grid;grid-template-columns:1fr;
  max-width:420px;
  background:var(--border-soft);border:1px solid var(--border-soft);
}
.cs-item{background:var(--bg);padding:22px;text-align:center;}
.cs-label{
  font-size:10px;letter-spacing:0.08em;color:var(--cool);
  margin-bottom:8px;display:block;
}
.cs-value{font-size:13px;color:var(--muted);margin-bottom:8px;}
.cs-email{
  font-size:13px;color:var(--cool);font-weight:600;
  font-family:'IBM Plex Mono',monospace;letter-spacing:0.04em;
  display:block;margin-top:8px;
}
.cs-copy-btn{
  display:inline-flex;align-items:center;gap:6px;margin-top:8px;
  padding:4px 10px;font-size:10px;letter-spacing:0.05em;
  background:var(--muted);color:#0A0A0B;border-radius:2px;
  transition:background 0.15s ease;
}
.cs-copy-btn:hover{background:#b8b5ab;}
@media (max-width:520px){.cs-grid{max-width:100%;}}

/* ---------- Panels (form + booking) ---------- */
.panels-section{padding:42px 0 40px;}
.panels-grid{display:flex;flex-direction:column;gap:20px;align-items:stretch;}
.panels-divider{display:flex;align-items:center;}
.panels-divider-line{flex:1;height:0;border-top:2px dashed rgba(71,224,181,0.45);}
.panels-divider-badge{
  flex-shrink:0;width:34px;height:34px;border-radius:50%;margin:0 12px;
  border:1px solid var(--cool);background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  font-size:10px;letter-spacing:0.05em;color:var(--cool);
}
.panel{
  background:var(--bg-card);border:1px solid var(--border-soft);border-radius:6px;
  overflow:hidden;display:flex;flex-direction:column;
}
.panel-header{
  display:flex;justify-content:space-between;align-items:center;
  padding:14px 20px;border-bottom:1px solid var(--border-soft);
}
.panel-title{font-size:12px;letter-spacing:0.08em;color:var(--muted);display:flex;align-items:center;gap:8px;}
.panel-title .dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.panel-title.hot .dot{background:var(--hot);}
.panel-title.cool .dot{background:var(--cool);}
.panel-tag{font-size:10px;color:var(--muted);}
.panel-body{padding:26px 24px;flex:1;display:flex;flex-direction:column;}
#contactForm{flex:1;display:flex;flex-direction:column;}
.field{margin-bottom:18px;}
.field label{
  display:block;font-size:11px;letter-spacing:0.05em;color:var(--muted);
  margin-bottom:8px;font-family:'IBM Plex Mono',monospace;
}
.field input,
.field select,
.field textarea{
  width:100%;padding:11px 13px;background:var(--bg-panel);
  border:1px solid var(--border);border-radius:3px;color:var(--text);
  font-family:'Inter',sans-serif;font-size:14px;
  transition:border-color 0.15s ease;
}
.field select{appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238A877E'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
}
.field input:focus,
.field select:focus,
.field textarea:focus{border-color:var(--cool);outline:none;}
.field textarea{resize:vertical;font-family:'Inter',sans-serif;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media (max-width:480px){.field-row{grid-template-columns:1fr;}}
.field-grow{flex:1;display:flex;flex-direction:column;}
.field-grow textarea{flex:1;min-height:110px;}
.submit-btn{
  width:100%;padding:13px;font-size:14px;font-weight:600;border-radius:3px;
  background:var(--hot);color:#0A0A0B;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:background 0.15s ease, transform 0.15s ease;margin-top:6px;
}
.submit-btn:hover{background:#ff6142;transform:translateY(-1px);}
.form-note{font-size:12px;color:var(--muted);margin-top:14px;line-height:1.5;}
.form-status{
  margin-top:14px;padding:12px 14px;font-size:13px;line-height:1.5;border-radius:3px;
  display:none;border:1px solid;
}
.form-status.success{display:block;background:rgba(71,224,181,0.08);border-color:var(--cool);color:var(--cool);}
.form-status.error{display:block;background:rgba(255,75,43,0.08);border-color:var(--hot);color:var(--hot);}
.cal-embed-wrap{flex:1;min-height:420px;position:relative;background:var(--bg-panel);}
.cal-loading{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;color:var(--muted);font-size:12px;letter-spacing:0.05em;
}
.cal-loading .ring{
  width:28px;height:28px;border-radius:50%;
  border:2px solid var(--border);border-top-color:var(--cool);
  animation:spin 0.9s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg);}}
#my-cal-inline{width:100%;height:100%;}
.panel-footer-note{
  padding:14px 24px;border-top:1px solid var(--border-soft);
  font-size:11.5px;color:var(--muted);
}

/* ---------- Location readout (map replacement) ---------- */
.location-section{padding:40px 0 100px;}
.location-card{
  display:grid;grid-template-columns:220px 1fr;gap:0;
  border:1px solid var(--border-soft);border-radius:6px;overflow:hidden;
  background:var(--bg-card);
}
.location-visual{
  position:relative;
  background:var(--bg-panel);
  min-height:180px;
  overflow:hidden;
}
.location-visual img{
  width:100%;height:100%;object-fit:cover;display:block;
}
.location-visual::after{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(115deg, transparent, transparent 24px, rgba(237,234,227,0.03) 24px, rgba(237,234,227,0.03) 25px);
}
.location-pin{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-45deg);
  z-index:2;
  width:14px;height:14px;border-radius:50% 50% 50% 0;
  background:var(--hot);
  box-shadow:0 0 0 6px rgba(255,75,43,0.14);
}
.location-pin::after{
  content:"";position:absolute;top:3px;left:3px;width:8px;height:8px;border-radius:50%;background:var(--bg);
}
.location-body{padding:26px 28px;display:flex;flex-direction:column;justify-content:center;gap:6px;}
.location-title{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:26px;}
.location-coords{font-size:12px;color:var(--cool);letter-spacing:0.04em;}
.location-meta{font-size:13px;color:var(--muted);margin-top:4px;}
@media (max-width:640px){
  .location-card{grid-template-columns:1fr;}
  .location-visual{min-height:120px;}
}

/* ---------- Mobile: contact sheet in page head stacks ---------- */
@media (max-width:820px){
  .page-head .wrap{grid-template-columns:1fr;gap:32px;}
}

/* ---------- Footer ---------- */
footer{border-top:1px solid var(--border);padding:32px 0;}
footer .wrap{
  display:flex;justify-content:space-between;align-items:center;
  font-size:12px;color:var(--muted);letter-spacing:0.04em;flex-wrap:wrap;gap:12px;
}
footer a:hover{color:var(--cool);}
.footer-links{display:flex;gap:20px;}

/* ---------- Inline style replacements ---------- */
.nav-mobile-cta{color:var(--cool);}
.eyebrow.spaced{margin-bottom:32px;}

@media (max-width:640px){
  .wrap{padding:0 20px;}
  .page-head{padding:72px 0 32px;}
  .panel-body{padding:20px 18px;}
  .skills-grid{grid-template-columns:1fr;}
  .featured-body{padding:26px 22px;}
}

/* ===== Resume page styles ===== */

/* ---------- Page head extras ---------- */
.page-head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;}
.dl-btn{
  padding:13px 24px;font-size:14px;font-weight:600;border-radius:2px;
  background:var(--hot);color:#0A0A0B;display:inline-flex;align-items:center;gap:8px;
  transition:background 0.15s ease, transform 0.15s ease;flex-shrink:0;
}
.dl-btn:hover{background:#ff6142;transform:translateY(-2px);}

/* ---------- Center-lined timeline ---------- */
.timeline-section{padding:40px 0 100px;}
.edu-section{padding:0 0 100px;border-top:1px solid var(--border);}
.section-label{
  font-size:12px;letter-spacing:0.14em;color:var(--muted);
  margin-bottom:48px;display:flex;align-items:center;gap:10px;
}
.section-label::before{content:"";width:20px;height:1px;background:var(--cool);display:inline-block;}
.center-timeline{position:relative;}
.tl-row{
  position:relative;
  display:grid;grid-template-columns:1fr 48px 1fr;
  align-items:start;
  padding:6px 0;
}
.tl-row + .tl-row{margin-top:8px;}
.tl-connector{position:relative;align-self:stretch;}
.tl-connector::before{
  content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;
  background:var(--border);transform:translateX(-50%);
}
.tl-row:first-child .tl-connector::before{top:20px;}
.tl-row:last-child .tl-connector::before{bottom:calc(100% - 20px);}
.tl-dot{
  position:absolute;left:50%;top:20px;transform:translate(-50%,-50%);
  width:12px;height:12px;border-radius:50%;
  background:var(--bg);border:2px solid var(--hot);z-index:2;
}
.tl-row[data-accent="cool"] .tl-dot{border-color:var(--cool);}
.tl-box{
  max-width:460px;
  background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:4px;
  overflow:hidden;
  opacity:0;transition:opacity 0.6s ease, transform 0.6s ease;
}
.tl-row[data-side="left"] .tl-box{grid-column:1;justify-self:end;transform:translateX(-16px);}
.tl-row[data-side="right"] .tl-box{grid-column:3;justify-self:start;transform:translateX(16px);}
.tl-box.visible{opacity:1;transform:translateX(0);}
.tl-box-img{
  position:relative;aspect-ratio:16/10;
  background:linear-gradient(135deg, rgba(255,75,43,0.14), rgba(71,224,181,0.08));
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;
}
.tl-row[data-accent="cool"] .tl-box-img{background:linear-gradient(135deg, rgba(71,224,181,0.14), rgba(255,75,43,0.08));}
.tl-box-img::after{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(115deg, transparent, transparent 26px, rgba(237,234,227,0.03) 26px, rgba(237,234,227,0.03) 27px);
}
.tl-box-img-bg{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  z-index:0;
}
.tl-box-tag{
  position:absolute;bottom:0;left:0;right:0;z-index:1;
  display:flex;justify-content:space-between;align-items:center;
  padding:8px 10px;font-size:9.5px;letter-spacing:0.05em;
  background:linear-gradient(0deg, rgba(10,10,11,0.85), transparent);
  color:var(--muted);
}
.tl-box-body{padding:20px 22px;}
.tl-tc{
  font-size:11px;color:var(--muted);letter-spacing:0.05em;margin-bottom:10px;
  display:inline-flex;align-items:center;gap:8px;
  padding:4px 10px;border:1px solid var(--border);border-radius:2px;
}
.tl-role{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:24px;letter-spacing:0.01em;margin-bottom:2px;line-height:1.05;
}
.tl-org{font-size:13.5px;color:var(--muted);margin-bottom:12px;}
.tl-org span{color:var(--text);}
.tl-desc{font-size:14px;line-height:1.6;color:var(--muted);}
.tl-desc p{margin-bottom:10px;}
.tl-desc p:last-child{margin-bottom:0;}
@media (max-width:820px){
  .tl-row{grid-template-columns:24px 1fr;padding-left:0;}
  .tl-connector{grid-column:1;}
  .tl-connector::before{left:12px;}
  .tl-dot{left:12px;}
  .tl-row[data-side="left"] .tl-box,
  .tl-row[data-side="right"] .tl-box{
    grid-column:2;justify-self:stretch;max-width:none;
    transform:translateY(12px);
  }
  .tl-box.visible{transform:translateY(0);}
  .tl-row + .tl-row{margin-top:24px;}
}

/* ---------- Tools I Use ---------- */
.tools-section{padding:0 0 120px;border-top:1px solid var(--border);}
.tools-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--border-soft);border:1px solid var(--border-soft);
  margin-top:56px;
}
.tool-card{background:var(--bg);padding:24px 22px;}
.tool-top{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.tool-icon{
  width:40px;height:40px;flex-shrink:0;border-radius:4px;
  display:flex;align-items:center;justify-content:center;
  font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:0.02em;
  color:var(--text);
}
.tool-card:nth-child(4n+1) .tool-icon,
.tool-card:nth-child(4n+3) .tool-icon{color:var(--hot);}
.tool-card:nth-child(4n+2) .tool-icon,
.tool-card:nth-child(4n+4) .tool-icon{color:var(--cool);}
.tool-icon img{width:100%;height:100%;object-fit:contain;}
.tool-name{font-family:'Bebas Neue',sans-serif;font-weight:400;font-size:18px;line-height:1.05;}
.tool-tag{font-size:10px;letter-spacing:0.05em;color:var(--muted);margin-top:3px;display:block;}
.tool-desc{font-size:13px;line-height:1.55;color:var(--muted);}
@media (max-width:900px){.tools-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.tools-grid{grid-template-columns:1fr;}}

/* ---------- Skills ---------- */
.skills-section{padding:0 0 120px;border-top:1px solid var(--border);}
.skills-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:22px;
  margin-top:48px;
}
.skill-item{
  background:var(--bg-panel);
  border:1px solid var(--border-soft);
  border-radius:4px;padding:18px;
}
.skill-header{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:8px;
}
.skill-name{
  font-family:'Bebas Neue',sans-serif;
  font-weight:400;font-size:18px;letter-spacing:0.01em;
  color:var(--text);
}
.skill-pct{
  font-size:12px;color:var(--muted);
  font-family:'IBM Plex Mono',monospace;letter-spacing:0.04em;
}
.skill-bar{
  width:100%;height:4px;
  background:var(--border-soft);border-radius:2px;
  overflow:hidden;
}
.skill-fill{
  height:100%;border-radius:2px;
  transition:width 0.8s ease;
}
.skill-fill.hot{background:var(--hot);}
.skill-fill.cool{background:var(--cool);}

/* ---------- Skill width classes (replaces inline style="width:XX%") ---------- */
.sw-90{width:90%;}
.sw-75{width:75%;}
.sw-85{width:85%;}
.sw-70{width:70%;}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  .rec-dot{animation:none;}
  .post-card{transition:none;opacity:1;transform:none;}
  .featured-img-bg{transition:none;}
  .tl-box{transition:none;opacity:1;transform:none;}
  .playhead{animation:none;left:22%;}
  h1 .line{animation:none;opacity:1;transform:none;}
  .marquee-track{animation:none;}
  .channel{transition:none;}
  .channel-collapsed,
  .channel-expanded{transition:none;}
  .strip-dot .fill{animation:none;width:0%;}
  .hero-photo{opacity:1;}
  .project-card{transition:none;opacity:1;transform:none;}
  .pc-scrub-fill,
  .pc-play{transition:none;}
  .video-modal-live .dot{animation:none;}
}

/* ===== Index page styles ===== */

/* ---------- Hero ---------- */
.hero{padding:120px 0 64px;}
.hero-top{
  display:grid;
  grid-template-columns:minmax(0,1fr) 320px;
  grid-template-areas:"headline folder""description actions";
  column-gap:48px;
  row-gap:20px;
  align-items:start;
}
.hero-headline{grid-area:headline;}
.hero-photo{grid-area:folder;}
.hero-description{grid-area:description;}
.cta-row{grid-area:actions;}
h1 .line{
  display:block;
  opacity:0;
  transform:translateY(24px);
  animation:reveal 0.7s cubic-bezier(.2,.8,.2,1) forwards;
}
h1 .line:nth-child(1){animation-delay:0.05s;}
h1 .line:nth-child(2){animation-delay:0.18s;color:var(--hot);}
h1 .line:nth-child(3){animation-delay:0.31s;color:var(--cool);}
@keyframes reveal{to{opacity:1;transform:translateY(0);}}
.subhead{
  margin-top:32px;
  max-width:520px;
  font-size:17px;
  line-height:1.6;
  color:var(--muted);
}
.hero-photo{
  position:relative;
  width:300px;
  height:270px;
  padding-top:20px;
}
.cta-row{display:flex;gap:14px;align-self:end;}
.btn{
  padding:14px 26px;
  font-size:14px;
  font-weight:600;
  border-radius:2px;
  display:inline-flex;align-items:center;gap:8px;
  transition:transform 0.15s ease, background 0.15s ease, border-color 0.15s ease;
  cursor:pointer;
  border:1px solid transparent;
}
.btn:hover{transform:translateY(-2px);}
.btn-primary{
  background:var(--hot);color:#0A0A0B;
}
.btn-primary:hover{background:#ff6142;}
.btn-ghost{
  border-color:var(--border);color:var(--text);
}
.btn-ghost:hover{border-color:var(--cool);}

/* Hide folder/photo on mobile; collapse to single column */
@media (max-width:820px){
  .hero-photo{
    display:none;
  }
  .hero-top{
    grid-template-columns:1fr;
    grid-template-areas:"headline""description""actions";
    column-gap:0;
    row-gap:24px;
  }
  .cta-row{
    margin-top:0;
  }
  .cta-row .btn{
    padding:10px 18px;
    font-size:12px;
  }
  .cta-row .btn .icon{
    display:none;
  }
}

/* ---------- Scrubber / Timeline ---------- */
.scrubber{
  margin-top:40px;
  border:1px solid var(--border);
  border-radius:4px;
  background:var(--bg-panel);
  padding:20px 20px 14px;
}
.timeline{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.timeline-row{
  display:flex;
  height:42px;
  gap:8px;
}
.track-label{
  width:24px;
  flex:0 0 24px;
  height:42px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  font-size:10px;
  user-select:none;
}
.track-content{
  position:relative;
  flex:1;
  min-width:0;
  display:flex;
  gap:2px;
  overflow:hidden;
}
.timeline-clip{
  position:relative;
  height:42px;
  flex-shrink:0;
  display:flex;
  align-items:center;
  padding-left:9px;
  overflow:hidden;
  border-radius:2px;
}
.timeline-clip span{
  font-size:10px;
  line-height:1;
  opacity:0.75;
}
.clip-hot{
  background:var(--hot);
  color:var(--bg);
}
.v2-track .timeline-clip:nth-child(1){width:4%;}
.v2-track .timeline-clip:nth-child(2){width:9%;}
.v2-track .timeline-clip:nth-child(3){width:12%;}
.v2-track .timeline-clip:nth-child(4){width:12%;}
.v2-track .timeline-clip:nth-child(5){width:15%;}
.v2-track .timeline-clip:nth-child(6){width:10%;}
.v2-track .timeline-clip:nth-child(7){width:15%;}
.v2-track .timeline-clip:nth-child(8){width:16%;}
.v2-track .timeline-clip:nth-child(9){width:5.5%;}
.clip-raw{
  background:var(--muted);
  border:1px solid var(--border-soft);
  color:var(--bg);
}
.v1-track .timeline-clip:nth-child(1){width:18%;}
.v1-track .timeline-clip:nth-child(2){width:12%;}
.v1-track .timeline-clip:nth-child(3){width:16%;}
.v1-track .timeline-clip:nth-child(4){width:23%;}
.v1-track .timeline-clip:nth-child(5){width:22%;}
.v1-track .timeline-clip:nth-child(6){width:8%;}
.audio-row{
  margin-top:0;
}
.audio-track{
  position:relative;
  width:100%;
  height:42px;
  display:flex;
  align-items:center;
  overflow:hidden;
  border-radius:2px;
  background:var(--cool);
  color:var(--bg);
}
.audio-icon{
  position:relative;
  z-index:2;
  margin-left:9px;
  font-size:11px;
  opacity:0.8;
}
.waveform{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  gap:2px;
  padding:0 10px 0 30px;
  opacity:0.28;
}
.waveform i{
  display:block;
  flex:1;
  min-width:1px;
  max-width:3px;
  height:25%;
  background:var(--bg);
  border-radius:1px;
}
.waveform i:nth-child(2n){height:55%;}
.waveform i:nth-child(3n){height:35%;}
.waveform i:nth-child(5n){height:75%;}
.waveform i:nth-child(7n){height:45%;}
.timeline-playhead{
  position:absolute;
  z-index:10;
  top:-2px;
  bottom:-2px;
  left:0;
  width:2px;
  background:var(--text);
  box-shadow:0 0 8px rgba(237,234,227,0.6);
  pointer-events:none;
  animation:timelineScrub 7s linear infinite;
}
.timeline-playhead::before{
  content:"";position:absolute;top:-1px;left:-4px;
  width:10px;height:6px;background:var(--text);
  clip-path:polygon(0 0,100% 0,50% 100%);
}
@keyframes timelineScrub{
  0%{left:0%;}
  100%{left:calc(100% - 2px);}
}
.ruler{
  display:flex;justify-content:space-between;
  margin-top:10px;font-size:11px;color:var(--muted);
  letter-spacing:0.04em;
  padding-left:32px;
}

/* ---------- Services / tracks ---------- */
.services{padding:100px 0 140px;border-top:1px solid var(--border);}
.services-head{max-width:560px;margin-bottom:56px;}
.services-head h2{
  font-family:'Bebas Neue',sans-serif;
  font-weight:400;
  font-size:clamp(32px,4vw,44px);
  line-height:1.05;
  margin-top:14px;
}
.track{
  display:grid;
  grid-template-columns:110px 1fr;
  border-top:1px solid var(--border-soft);
  padding:28px 0;
  gap:24px;
  opacity:0;
  transform:translateY(18px);
  transition:opacity 0.6s ease, transform 0.6s ease, background 0.25s ease;
}
.track:last-child{border-bottom:1px solid var(--border-soft);}
.track.visible{opacity:1;transform:translateY(0);}
.track:hover{background:var(--border-soft);}
.track-label{
  display:flex;flex-direction:column;gap:8px;padding-top:2px;
}
.track-tag{
  font-size:12px;letter-spacing:0.06em;color:var(--muted);
}
.track-swatch{width:22px;height:3px;}
.track[data-accent="hot"] .track-swatch{background:var(--hot);}
.track[data-accent="cool"] .track-swatch{background:var(--cool);}
.track-body h3{
  font-family:'Bebas Neue',sans-serif;
  font-weight:400;
  font-size:26px;
  letter-spacing:0.01em;
  margin-bottom:8px;
}
.track-body p{
  color:var(--muted);
  font-size:15px;
  line-height:1.6;
  max-width:560px;
}

/* ---------- Testimonials / Channel Strip ---------- */
.reviews{padding:100px 0 120px;border-top:1px solid var(--border);}
.reviews-head{max-width:560px;margin-bottom:48px;}
.reviews-head h2{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:clamp(32px,4vw,44px);line-height:1.05;margin-top:14px;
}
.strip{
   display:flex;gap:12px;height:480px;justify-content:center;
}
.channel{
  position:relative;overflow:hidden;cursor:pointer;
  background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:4px;
  flex:0 0 88px;
  transition:flex-basis 0.65s cubic-bezier(.22,.8,.28,1), max-width 0.65s cubic-bezier(.22,.8,.28,1), border-color 0.2s ease;
}
.channel:hover{border-color:rgba(237,234,227,0.22);}
.channel.active{
  flex:1 1 440px;max-width:440px;border-color:rgba(237,234,227,0.18);
}
.channel-collapsed{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:space-between;
  padding:22px 0;opacity:1;transition:opacity 0.35s ease;
}
.channel-mid{
  display:flex;flex-direction:column;align-items:center;
  justify-content:flex-start;height:260px;gap:10px;
}
.channel-mid .client-img{margin-top:20px;}
.channel.active .channel-collapsed{opacity:0;pointer-events:none;}
.channel-ch{font-size:11px;color:var(--muted);letter-spacing:0.06em;}
.channel-name{
  writing-mode:vertical-rl;transform:rotate(180deg);
  font-size:13px;letter-spacing:0.04em;color:var(--text);font-weight:600;
  white-space:nowrap;
}
.channel-meter{
  width:3px;height:120px;border-radius:2px;
  background:linear-gradient(180deg, var(--muted) 0%, var(--muted) 100%);
  position:relative;overflow:hidden;
}
.channel-meter::after{
  content:"";position:absolute;bottom:0;left:0;right:0;
  background:var(--accent, var(--hot));
  height:var(--level,35%);
  transition:height 0.5s ease;
}
.channel-expanded{
  position:absolute;inset:0;padding:30px 28px;
  display:flex;flex-direction:column;justify-content:space-between;
  opacity:0;transition:opacity 0.4s ease 0.2s;
}
.channel.active .channel-expanded{opacity:1;}
.quote-icon{margin-bottom:14px;}
.channel-quote{font-size:15px;line-height:1.65;color:var(--text);}
.channel-who strong{display:block;font-size:14px;}
.channel-who span{font-size:12px;color:var(--muted);}
.client-img{border-radius:6px;object-fit:cover;flex-shrink:0;}
.channel-who{display:flex;flex-direction:column;align-items:flex-start;gap:12px;}
.strip-progress{
  display:flex;gap:8px;margin-top:20px;justify-content:center;
}
.strip-dot{
  width:24px;height:3px;background:var(--border);border-radius:2px;
  overflow:hidden;position:relative;
}
.strip-dot .fill{
  position:absolute;left:0;top:0;bottom:0;width:0%;background:var(--hot);
}
.strip-dot.active .fill{animation:fillbar 5s linear forwards;}
@keyframes fillbar{from{width:0%;}to{width:100%;}}

/* ---------- Software marquee ---------- */
.tools{padding:0 0 100px;}
.tools-label{
  font-size:12px;letter-spacing:0.14em;color:var(--muted);
  margin-bottom:24px;display:flex;align-items:center;gap:10px;
}
.tools-label::before{content:"";width:20px;height:1px;background:var(--cool);display:inline-block;}
.marquee{
  overflow:hidden;border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);
  padding:22px 0;mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.marquee-track{display:flex;gap:48px;width:max-content;animation:marquee 26s linear infinite;}
.marquee-item{
  font-size:15px;color:var(--muted);white-space:nowrap;
  display:flex;align-items:center;gap:10px;
}
.marquee-item::before{content:"";width:5px;height:5px;background:var(--border);border-radius:50%;}
@keyframes marquee{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}

/* ---------- FAQ ---------- */
.faq{padding:0 0 120px;border-top:1px solid var(--border);}
.faq-head{max-width:560px;margin:100px 0 48px;}
.faq-head h2{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:clamp(32px,4vw,44px);line-height:1.05;margin-top:14px;
}
.faq-item{border-top:1px solid var(--border-soft);}
.faq-item:last-child{border-bottom:1px solid var(--border-soft);}
.faq-item summary{
  list-style:none;cursor:pointer;padding:24px 0;
  display:flex;justify-content:space-between;align-items:center;gap:24px;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-q{display:flex;gap:20px;align-items:baseline;}
.faq-num{font-size:12px;color:var(--cool);flex-shrink:0;}
.faq-title{font-size:16px;font-weight:600;}
.faq-toggle{
  font-size:18px;color:var(--muted);flex-shrink:0;
  transition:transform 0.25s ease;
}
.faq-item[open] .faq-toggle{transform:rotate(45deg);color:var(--hot);}
.faq-body{padding:0 0 28px 32px;max-width:640px;color:var(--muted);font-size:14.5px;line-height:1.65;}

@media (max-width:820px){
  .hero-top{grid-template-columns:1fr;}
  .hero-photo{width:300px;height:270px;padding-top:20px;transform:scale(0.83);transform-origin:top left;justify-self:start;order:-1;margin-bottom:8px;}
  .strip{flex-direction:column;height:auto;gap:10px;}
  .channel{flex:0 0 60px !important;max-width:none !important;}
  .channel.active{flex:0 0 340px !important;}
  .channel-collapsed{flex-direction:row;padding:0 20px;}
  .channel-name{writing-mode:horizontal-tb;transform:none;}
  .channel-meter{width:80px;height:3px;}
   .channel-meter::after{width:var(--level,35%);height:100%;left:0;bottom:auto;}
   .channel-collapsed .client-img{display:none;}
   .channel-mid{display:inline-block;height:auto;}
}
@media (max-width:640px){
  .track{grid-template-columns:1fr;gap:10px;}
  .hero{padding:90px 0 48px;}
  .faq-body{padding-left:0;}
  .hero-photo{transform:scale(0.67);}
}

/* ---------- Channel custom-property classes (replaces inline style="--accent:...;--level:XX%") ---------- */
.channel-0{--accent:var(--hot);--level:62%;}
.channel-1{--accent:var(--cool);--level:48%;}
.channel-2{--accent:var(--hot);--level:71%;}
.channel-3{--accent:var(--cool);--level:55%;}
.channel-4{--accent:var(--hot);--level:68%;}

/* ===== Blog page styles ===== */

/* ---------- Filter tabs ---------- */
.bin{
  display:flex;gap:8px;flex-wrap:wrap;margin-top:44px;
  border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);
  padding:18px 0;
}
.bin-tab{
  padding:9px 16px;font-size:12px;letter-spacing:0.05em;
  border:1px solid var(--border);border-radius:2px;color:var(--muted);
  display:flex;align-items:center;gap:8px;transition:all 0.15s ease;
}
.bin-tab .dot{width:6px;height:6px;background:var(--muted);flex-shrink:0;}
.bin-tab:hover{color:var(--text);border-color:rgba(237,234,227,0.28);}
.bin-tab.active{color:var(--text);border-color:var(--cool);background:rgba(71,224,181,0.06);}
.bin-tab.active .dot{background:var(--cool);}

/* ---------- Featured post ---------- */
.featured{padding:56px 0 0;}
.featured-card{
  display:grid;grid-template-columns:1.1fr 1fr;gap:0;
  border:1px solid var(--border-soft);border-radius:6px;overflow:hidden;
  background:var(--bg-card);
}
.featured-img{
  position:relative;aspect-ratio:16/11;
  background:linear-gradient(135deg, rgba(255,75,43,0.16), rgba(71,224,181,0.08));
  overflow:hidden;
}
.featured-img::after{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(115deg, transparent, transparent 26px, rgba(237,234,227,0.03) 26px, rgba(237,234,227,0.03) 27px);
}
.featured-img-bg{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  z-index:1;
}
.featured-tag{
  position:absolute;top:14px;left:14px;z-index:1;
  font-size:10px;padding:4px 8px;background:rgba(10,10,11,0.7);
  border-radius:2px;color:var(--hot);letter-spacing:0.05em;
}
.featured-body{padding:36px 34px;display:flex;flex-direction:column;justify-content:center;}
.featured-meta{
  display:flex;align-items:center;gap:14px;font-size:11px;color:var(--muted);
  letter-spacing:0.05em;margin-bottom:16px;
}
.featured-meta .cat{color:var(--cool);}
.featured-title{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:clamp(26px,3vw,36px);line-height:1.05;margin-bottom:14px;
}
.featured-excerpt{font-size:14.5px;line-height:1.65;color:var(--muted);margin-bottom:22px;}
.featured-link{
  font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:8px;
  color:var(--text);transition:gap 0.2s ease;
}
.featured-link:hover{gap:12px;}
@media (max-width:820px){
  .featured-card{grid-template-columns:1fr;}
}

/* ---------- Post grid ---------- */
.posts-section{padding:64px 0 120px;}
.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
@media (max-width:900px){.post-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.post-grid{grid-template-columns:1fr;}}
.post-card{
  background:var(--bg-card);border:1px solid var(--border-soft);border-radius:4px;
  overflow:hidden;opacity:0;transform:translateY(18px);
  transition:opacity 0.6s ease, transform 0.6s ease, border-color 0.2s ease;
}
.post-card.visible{opacity:1;transform:translateY(0);}
.post-card:hover{border-color:rgba(237,234,227,0.22);}
.post-link{display:block;color:inherit;text-decoration:none;}
.post-thumb{
  position:relative;aspect-ratio:16/10;
  background:linear-gradient(135deg, rgba(255,75,43,0.10), rgba(71,224,181,0.06));
  overflow:hidden;
}
.post-thumb::after{
  content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(115deg, transparent, transparent 26px, rgba(237,234,227,0.03) 26px, rgba(237,234,227,0.03) 27px);
}
.post-thumb-bg{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
  z-index:1;
}
.post-read-tag{
  position:absolute;top:10px;right:10px;z-index:1;
  font-size:9.5px;padding:3px 6px;background:rgba(10,10,11,0.7);
  border-radius:2px;color:var(--hot);letter-spacing:0.05em;
}
.post-body{padding:18px 18px 20px;}
.post-meta{
  display:flex;align-items:center;gap:10px;font-size:10.5px;color:var(--muted);
  letter-spacing:0.05em;margin-bottom:10px;
}
.post-meta .cat{color:var(--cool);}
.post-title{font-size:16px;font-weight:600;line-height:1.35;margin-bottom:8px;}
.post-excerpt{font-size:13px;color:var(--muted);line-height:1.55;}
.empty{
  display:none;padding:80px 0;text-align:center;color:var(--muted);
  font-size:14px;grid-column:1/-1;
}

/* ===== Blog post page styles ===== */

.nav-mobile-cta{color:var(--cool);}
.muted{color:var(--muted);}

.blog-wrap{max-width:880px;margin:0 auto;padding:0 32px;}

/* Reading progress */
.progress-track{position:fixed;top:0;left:0;right:0;height:2px;background:var(--border-soft);z-index:100;}
.progress-fill{height:100%;width:0%;background:var(--hot);transition:width 0.1s linear;}

/* Article header */
.article-head{padding:56px 0 0;}
.back-link{
  font-size:12px;color:var(--muted);letter-spacing:0.05em;
  display:inline-flex;align-items:center;gap:8px;margin-bottom:32px;transition:color 0.15s ease;
}
.back-link:hover{color:var(--cool);}
.article-meta{
  display:flex;align-items:center;gap:14px;font-size:11.5px;color:var(--muted);
  letter-spacing:0.05em;margin-bottom:20px;
}
.article-meta .cat{color:var(--cool);}
.article-title{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:clamp(34px,5.2vw,58px);line-height:1.05;max-width:820px;
}
.article-excerpt{
  margin-top:20px;max-width:640px;font-size:17px;line-height:1.6;color:var(--muted);
}
.byline{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:16px;margin-top:32px;padding:16px 0;
  border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);
}
.byline-who{display:flex;align-items:center;gap:12px;}
.byline-avatar{
  width:36px;height:36px;border-radius:4px;object-fit:cover;
  filter:grayscale(1) contrast(1.05);border:1px solid var(--border);
}
.byline-name{font-size:13.5px;font-weight:600;}
.byline-role{font-size:11.5px;color:var(--muted);}
.byline-read{
  font-size:11.5px;color:var(--muted);
  display:flex;align-items:center;gap:8px;
}
.byline-read .val{color:var(--hot);}

/* Hero image */
.article-hero{padding:36px 0 0;}
.article-hero-img{
  max-width:800px;margin:0 auto;aspect-ratio:3/2;
  border-radius:6px;overflow:hidden;border:1px solid var(--border-soft);
}
.article-hero-img img{width:100%;height:100%;object-fit:cover;display:block;}

/* Article body */
.article-body{padding:44px 0 0;max-width:720px;}
.article-body p{font-size:16.5px;line-height:1.8;color:var(--text);margin-bottom:20px;}
.article-body h2{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:26px;letter-spacing:0.01em;margin:48px 0 18px;
  display:flex;align-items:center;gap:12px;
}
.article-body h2::before{
  content:"";width:20px;height:2px;background:var(--hot);
  display:inline-block;flex-shrink:0;
}
.article-body strong{font-weight:700;color:var(--text);}
.article-body a{
  color:var(--cool);text-decoration:underline;
  text-decoration-color:rgba(71,224,181,0.4);text-underline-offset:3px;
}
.article-body a:hover{text-decoration-color:var(--cool);}
.article-body ul{margin:0 0 20px;padding-left:0;list-style:none;}
.article-body ul li{
  position:relative;padding-left:22px;margin-bottom:10px;
  font-size:16.5px;line-height:1.7;color:var(--text);
}
.article-body ul li::before{
  content:"";position:absolute;left:0;top:10px;width:6px;height:6px;
  border-radius:50%;background:var(--cool);
}
.article-body blockquote{
  margin:24px 0;padding:4px 0 4px 20px;border-left:2px solid var(--hot);
  font-size:16.5px;font-style:italic;color:var(--text);
}
.code-block{margin:24px 0;border:1px solid var(--border);border-radius:4px;overflow:hidden;background:var(--bg-panel);}
.code-block-header{
  padding:9px 14px;border-bottom:1px solid var(--border-soft);
  font-size:10.5px;color:var(--muted);letter-spacing:0.06em;
  display:flex;justify-content:space-between;align-items:center;
}
.code-block pre{padding:16px 18px;overflow-x:auto;}
.code-block code{
  font-family:'IBM Plex Mono',monospace;font-size:13px;line-height:1.7;
  color:var(--muted);white-space:pre;
}
.article-body hr{border:none;border-top:1px solid var(--border-soft);margin:44px 0;}

/* Tags + share */
.article-footer{max-width:720px;padding:20px 0 56px;}
.tags-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.tag-pill{
  font-size:11px;padding:5px 11px;border:1px solid var(--border);
  border-radius:20px;color:var(--muted);
}
.share-row{
  display:flex;align-items:center;gap:14px;margin-top:28px;
  padding-top:24px;border-top:1px solid var(--border-soft);
}
.share-label{font-size:11px;color:var(--muted);letter-spacing:0.05em;}
.share-links{display:flex;gap:14px;}
.share-links a{
  font-size:12px;color:var(--muted);display:inline-flex;
  align-items:center;gap:6px;transition:color 0.15s ease;
}
.share-links a:hover{color:var(--cool);}

/* Author card */
.author-card{
  max-width:720px;margin:0 0 64px;padding:24px;border:1px solid var(--border-soft);
  border-radius:6px;background:var(--bg-card);display:flex;gap:16px;align-items:center;
}
.author-card img{
  width:56px;height:56px;border-radius:6px;object-fit:cover;
  filter:grayscale(1) contrast(1.05);border:1px solid var(--border);flex-shrink:0;
}
.author-card-name{
  font-family:'Bebas Neue',sans-serif;font-size:19px;margin-bottom:2px;
}
.author-card-role{font-size:12.5px;color:var(--muted);margin-bottom:8px;}
.author-card-bio{font-size:13px;color:var(--muted);line-height:1.5;}

/* Related posts */
.related-section{padding:8px 0 100px;border-top:1px solid var(--border);}
.related-label{
  font-size:12px;letter-spacing:0.14em;color:var(--muted);
  margin:44px 0 28px;display:flex;align-items:center;gap:10px;
}
.related-label::before{content:"";width:20px;height:1px;background:var(--cool);display:inline-block;}
.related-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
.related-card{
  background:var(--bg-card);border:1px solid var(--border-soft);border-radius:4px;
  overflow:hidden;transition:border-color 0.2s ease;
}
.related-card:hover{border-color:rgba(237,234,227,0.22);}
.related-thumb{aspect-ratio:16/10;overflow:hidden;}
.related-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.related-body{padding:14px 16px 16px;}
.related-meta{font-size:10px;color:var(--cool);letter-spacing:0.05em;margin-bottom:6px;}
.related-title{font-size:14px;font-weight:600;line-height:1.35;}

@media (max-width:640px){
  .wrap{padding:0 20px;}
  .article-head{padding:44px 0 0;}
  .related-grid{grid-template-columns:1fr;}
  .page-head{padding:72px 0 32px;}
}

body.error-404{
  display:flex;flex-direction:column;min-height:100vh;
}

/* ---------- Error stage ---------- */
.error-stage{flex:1;display:flex;align-items:center;padding:60px 0;}
.error-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;
}
@media (max-width:900px){.error-grid{grid-template-columns:1fr;gap:36px;}}

/* ---------- Offline card ---------- */
.offline-card{
  position:relative;aspect-ratio:16/10;border-radius:6px;overflow:hidden;
  border:1px solid var(--border);
  background:
    repeating-linear-gradient(
      45deg,
      rgba(255,75,43,0.10) 0px,
      rgba(255,75,43,0.10) 14px,
      rgba(71,224,181,0.06) 14px,
      rgba(71,224,181,0.06) 28px
    ),
    var(--bg-panel);
}
.offline-card::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 50% 40%, rgba(10,10,11,0.15), rgba(10,10,11,0.75) 80%);
}
.offline-badge{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;z-index:1;
}
.offline-icon{
  width:52px;height:52px;border-radius:50%;border:1px solid rgba(237,234,227,0.3);
  display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--muted);
}
.offline-label{
  font-family:'Bebas Neue',sans-serif;font-size:22px;letter-spacing:0.03em;color:var(--text);
}
.offline-code{font-size:11px;color:var(--hot);letter-spacing:0.08em;}
.offline-tag{
  position:absolute;top:12px;left:12px;z-index:2;
  font-size:10px;padding:4px 8px;background:rgba(10,10,11,0.7);
  border-radius:2px;color:var(--hot);letter-spacing:0.05em;
}
.offline-corner{
  position:absolute;bottom:12px;right:14px;z-index:2;
  font-size:10px;color:var(--muted);letter-spacing:0.04em;
}

/* ---------- Text side ---------- */
.error-title{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:clamp(44px,7vw,80px);line-height:0.95;
}
.error-title .hot{color:var(--hot);}
.error-desc{
  margin-top:20px;max-width:440px;font-size:15.5px;line-height:1.65;color:var(--muted);
}
.error-path{
  margin-top:24px;padding:12px 16px;border:1px solid var(--border);border-radius:3px;
  background:var(--bg-panel);font-size:12.5px;color:var(--muted);
  display:flex;flex-direction:column;gap:4px;max-width:440px;
}
.error-path .row{display:flex;justify-content:space-between;gap:12px;}
.error-path .row span:first-child{color:var(--muted);}
.error-path .row span:last-child{color:var(--text);}
.error-path .row.status span:last-child{color:var(--hot);}
.error-cta{margin-top:30px;display:flex;gap:14px;flex-wrap:wrap;}

@media (max-width:640px){
  .error-stage{padding:40px 0;}
}

/* ===== Projects page styles ===== */

.page-sub{
  margin-top:20px;max-width:520px;
  font-size:16px;line-height:1.6;color:var(--muted);
}

/* ---------- Bin / filter tabs ---------- */
 .bin{
   display:flex;gap:8px;flex-wrap:wrap;margin-top:44px;
   border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);
   padding:18px 0;
 }
 .bin-tab{
   padding:9px 16px;font-size:12px;letter-spacing:0.05em;border:1px solid var(--border);
   border-radius:2px;color:var(--muted);display:flex;align-items:center;gap:8px;
   transition:all 0.15s ease;
 }
 .bin-tab .dot{width:6px;height:6px;background:var(--muted);flex-shrink:0;border-radius:50%;}
 .bin-tab:hover{color:var(--text);border-color:rgba(237,234,227,0.28);}
 .bin-tab.active{
   color:var(--text);border-color:var(--cool);
   background:rgba(71,224,181,0.06);
 }
 .bin-tab.active .dot{background:var(--cool);}

/* ---------- Grid ---------- */
.project-grid-section{padding:48px 0 120px;}
.project-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));
  grid-auto-rows:1px;
  grid-auto-flow:dense;
  align-items:start;
  gap:20px;
}

/* ---------- Card ---------- */
.project-card{
  background:var(--bg-card);border:1px solid var(--border-soft);border-radius:4px;
  overflow:hidden;cursor:pointer;
  opacity:0;transform:translateY(16px);
  transition:opacity 0.5s ease, transform 0.5s ease, border-color 0.2s ease;
}
.project-card.visible{opacity:1;transform:translateY(0);}
.project-card:hover{border-color:rgba(237,234,227,0.22);}
.pc-thumb{position:relative;overflow:hidden;background:var(--bg-panel);}
.pc-thumb img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
}
.pc-scrub{position:absolute;bottom:0;left:0;right:0;height:3px;background:rgba(237,234,227,0.08);z-index:3;}
.pc-scrub-fill{height:100%;width:26%;background:var(--hot);transition:width 0.4s ease;}
.project-card:hover .pc-scrub-fill{width:80%;}
.pc-title-row{display:flex;align-items:center;gap:9px;margin-bottom:6px;}
.pc-title-row .pc-title{margin-bottom:0;}
.pc-play{
  width:22px;height:22px;flex-shrink:0;border-radius:50%;
  border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  font-size:8.5px;color:var(--text);
  transition:border-color 0.2s ease, background 0.2s ease;
}
.project-card:hover .pc-play{border-color:var(--cool);background:rgba(71,224,181,0.08);}

/* horizontal variant: image top, text block below */
.project-card.horizontal .pc-thumb{aspect-ratio:16/9;}
.pc-body{padding:14px 16px 16px;}
.pc-tag{font-size:10.5px;color:var(--cool);letter-spacing:0.05em;display:block;margin-bottom:6px;}
.pc-title{font-size:15px;font-weight:600;line-height:1.3;margin-bottom:6px;}
.pc-desc{font-size:12.5px;color:var(--muted);line-height:1.5;margin-top:6px;}

/* vertical variant: full-bleed image, text overlaid at bottom */
.project-card.vertical .pc-thumb{aspect-ratio:9/16;}
.pc-overlay{
  position:absolute;bottom:0;left:0;right:0;z-index:2;
  padding:16px 14px 14px;
  background:linear-gradient(0deg, rgba(10,10,11,0.94) 0%, rgba(10,10,11,0.6) 60%, transparent 100%);
}
.pc-overlay .pc-tag{margin-bottom:5px;}
.pc-overlay .pc-title{font-size:14px;}
.pc-overlay .pc-play{border-color:rgba(237,234,227,0.35);}

/* ---------- Video Modal Component ---------- */
.video-modal-overlay{
  position:fixed;inset:0;z-index:200;
  background:rgba(6,6,7,0.86);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;
  padding:24px;opacity:0;pointer-events:none;
  transition:opacity 0.25s ease;
}
.video-modal-overlay.open{opacity:1;pointer-events:auto;}
.video-modal{
  position:relative;width:100%;max-width:880px;
  background:var(--bg-card);border:1px solid var(--border);border-radius:6px;
  overflow:hidden;
  transform:translateY(18px) scale(0.98);
  transition:transform 0.3s cubic-bezier(.22,.8,.28,1);
}
.video-modal-overlay.open .video-modal{transform:translateY(0) scale(1);}
.video-modal-topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 16px;border-bottom:1px solid var(--border-soft);
}
.video-modal-live{
  display:flex;align-items:center;gap:8px;font-size:11px;
  color:var(--muted);letter-spacing:0.05em;
}
.video-modal-live .dot{
  width:6px;height:6px;border-radius:50%;
  background:var(--hot);
  animation:vmPulse 1.6s ease-in-out infinite;
}
@keyframes vmPulse{0%,100%{opacity:1;}50%{opacity:0.35;}}
.video-modal-close{
  width:28px;height:28px;display:flex;
  align-items:center;justify-content:center;
  border:1px solid var(--border);border-radius:2px;
  color:var(--muted);font-size:14px;cursor:pointer;
  background:none;transition:color 0.15s ease, border-color 0.15s ease;
}
.video-modal-close:hover{color:var(--text);border-color:var(--cool);}
.video-modal-stage{
  position:relative;aspect-ratio:16/9;background:#000;
  display:flex;align-items:center;justify-content:center;
}
.video-modal-stage video,
.video-modal-stage iframe{width:100%;height:100%;display:block;border:none;}
.video-modal-stage .plyr{width:100%;}
.video-modal-placeholder{
  position:absolute;inset:0;
  background:linear-gradient(135deg, rgba(255,75,43,0.12), rgba(71,224,181,0.08));
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:14px;color:var(--muted);
  font-size:12px;letter-spacing:0.05em;
}
.video-modal-placeholder .ring{
  width:56px;height:56px;border-radius:50%;
  border:1px solid rgba(237,234,227,0.3);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;color:var(--text);
}
.video-modal-meta{padding:20px 22px 24px;}
.video-modal-tag{
  font-size:11px;color:var(--cool);letter-spacing:0.06em;
  margin-bottom:8px;display:block;
}
.video-modal-title{
  font-family:'Bebas Neue',sans-serif;font-weight:400;
  font-size:26px;margin-bottom:8px;
}
.video-modal-desc{
  font-size:14px;line-height:1.6;color:var(--muted);max-width:600px;
}
.video-modal-tags{
  display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;
}
.video-modal-tag-pill{
  padding:3px 10px;font-size:10px;letter-spacing:0.04em;
  color:var(--muted);border:1px solid var(--border);
  border-radius:2px;
}
.video-modal-tag-pill .tag-icon{width:14px;height:14px;vertical-align:middle;color:var(--muted);}
@media (max-width:640px){
  .video-modal-title{font-size:22px;}
  .video-modal-overlay{padding:12px;}
}

/* ===== Folder Hover Animation (embedded in hero-photo) ===== */

/* ── FOLDER WRAPPER ── */
.folder {
    position: relative;
    width: 300px;
    height: 250px;
    perspective: 2400px;
    transform-style: preserve-3d;

    /* Default theme properties (Cool) */
    --folder-accent: #47E0B5;
    --folder-accent-bg: rgba(71, 224, 181, 0.3);
    --folder-glass-bg-start: rgba(71, 224, 181, 0.18);
    --folder-glass-bg-end: rgba(71, 224, 181, 0.08);
    --folder-glass-bg-start-front: rgba(71, 224, 181, 0.25);
    --folder-glass-bg-end-front: rgba(71, 224, 181, 0.1);
    --folder-border-color: rgba(71, 224, 181, 0.35);
    --folder-border-color-back: rgba(71, 224, 181, 0.25);
    --folder-shadow-color: rgba(71, 224, 181, 0.2);
}

/* ── THEME VARIATIONS ── */
.folder.theme-cool {
    --folder-accent: #47E0B5;
    --folder-accent-bg: rgba(71, 224, 181, 0.3);
    --folder-glass-bg-start: rgba(71, 224, 181, 0.12);
    --folder-glass-bg-end: rgba(71, 224, 181, 0.08);
    --folder-glass-bg-start-front: rgba(71, 224, 181, 0.25);
    --folder-glass-bg-end-front: rgba(71, 224, 181, 0.1);
    --folder-border-color: rgba(71, 224, 181, 0.35);
    --folder-border-color-back: rgba(71, 224, 181, 0.25);
    --folder-shadow-color: rgba(71, 224, 181, 0.2);
}

/* ── BACK FLAP (Translucent Frosted Glass) ── */
.folder .back-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 300px;
    height: 250px;
    z-index: 1;
    filter: drop-shadow(0 10px 30px var(--folder-shadow-color));
    transform-style: preserve-3d;
    transform: translateZ(0);
}

.folder .back {
    width: 100%;
    height: 100%;
    background: linear-gradient(
        135deg,
        var(--folder-glass-bg-start) 0%,
        var(--folder-glass-bg-end) 100%
    );
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    clip-path: path('M 0,226 L 0,20 A 20,20 0 0,1 20,0 L 120,0 C 138,0 138,35 155,35 L 276,35 A 24,24 0 0,1 300,59 L 300,226 A 24,24 0 0,1 276,250 L 24,250 A 24,24 0 0,1 0,226 Z');
}

.folder .back-border {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.folder .back-border path {
    fill: none;
    stroke: var(--folder-border-color-back);
    stroke-width: 1.5px;
}

/* ── FILE SHEET (Checklist Content) ── */
.folder .file {
    width: 260px;
    padding: 18px;
    height: 190px;
    position: absolute;
    background: rgba(237, 234, 227, 0.85); /* Very light gray paper texture */
    color: #ebe9e6;
    bottom: 12px;
    left: 20px;
    border-radius: 14px;
    z-index: 2;
    overflow: hidden;
    box-shadow:
        0 4px 12px rgba(0, 0, 0, 0.15),
        0 15px 35px rgba(0, 0, 0, 0.25);
    user-select: none;
    pointer-events: none; /* Passes mouse interaction down to the folder */
    transform: translateZ(20px);
}

.folder .file h5 {
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.03em;
    color: var(--hot, #FF4B2B);
    padding-bottom: 8px;
    margin-bottom: 10px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.folder .file ul {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.folder .file ul li {
    display: flex;
    align-items: center;
    gap: 8px;
}

.folder .file ul li input[type="checkbox"] {
    accent-color: var(--folder-accent);
    width: 13px;
    height: 13px;
    cursor: default;
}

.folder .file ul li p {
    font-size: 11.5px;
    font-weight: 550;
    color: #3a3a3c;
}

.folder .file span {
    font-size: 10px;
    color: #8e8e93;
    padding-top: 8px;
    margin-top: 10px;
    border-top: 1px solid rgba(0, 0, 0, 0.08);
    display: block;
}

.folder .file span b {
    color: #1c1c1e;
    background: var(--folder-accent-bg);
    border-radius: 4px;
    padding: 1px 4px;
    font-size: 9.5px;
}

/* ── POPPING ICONS CONTAINER & TILES ── */
.folder-icons {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 3; /* Layered between the File sheet and the Front flap */
    transform-style: preserve-3d;
    transform: translateZ(35px);
}

.folder-icon {
    position: absolute;
    width: 48px;
    height: 48px;
    bottom: 20px;
    left: 126px; /* Centered resting position (300px folder - 48px icon = 126px) */
    opacity: 0.5;
    transform: scale(0.9);
    transform-origin: center center;
}

/* Special centering offset for Avatar (58px wide) */
.folder-icon.icon-avatar {
    width: 58px;
    height: 58px;
    left: 121px; /* Centered resting position (300px - 58px = 121px) */
}

/* App-icon styled container tile with soft macOS shadow and edge highlight */
.folder-icon-inner {
    width: 100%;
    height: 100%;
    border-radius: 12px;
    background: rgba(18, 18, 22, 0.82);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, 0.14);
    box-shadow:
        0 6px 14px rgba(0, 0, 0, 0.4),
        0 15px 30px rgba(0, 0, 0, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 0.25);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.folder-icon.icon-avatar .folder-icon-inner {
    border-radius: 15px;
    border: 1.5px solid rgba(255, 255, 255, 0.22);
}

.folder-icon-inner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.folder-icon-inner .icon {
    width: 60%;
    height: 60%;
    color: var(--folder-accent);
    filter: drop-shadow(0 0 4px rgba(0, 0, 0, 0.3));
}

/* ── FRONT FLAP (macOS Style Frosted Glass) ── */
.folder .front {
    cursor: pointer;
    width: 300px;
    height: 172px;
    padding: 24px;
    position: absolute;
    bottom: 0;
    left: 0;
    border-radius: 24px;

    /* Strong Apple-like translucent glass recipe */
    background: linear-gradient(
        135deg,
        var(--folder-glass-bg-start-front) 0%,
        var(--folder-glass-bg-end-front) 100%
    );
    backdrop-filter: blur(28px);
    -webkit-backdrop-filter: blur(28px);
    border: 1px solid var(--folder-border-color);
    color: #EDEAE3;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    z-index: 4;

    transform-origin: bottom center;
    transform: translateZ(55px);

    /* Double layered outer shadows and crisp inner edge highlights */
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.25),
        inset 0 -1px 0 rgba(0, 0, 0, 0.2),
        0 12px 25px rgba(0, 0, 0, 0.45),
        0 25px 50px rgba(0, 0, 0, 0.35);
}

.folder .front .info {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

.folder .front .info h6 {
    font-size: 23px;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.folder .front .info span {
    font-size: 11px;
    color: rgba(237, 234, 227, 0.55);
    margin-top: 2px;
    display: block;
    font-family: "IBM Plex Mono", monospace;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.folder .front .icons {
    font-size: 20px;
    display: flex;
    gap: 8px;
    color: rgba(237, 234, 227, 0.6);
}

.folder .front .count {
    font-size: 12.5px;
    font-weight: 550;
    color: rgba(237, 234, 227, 0.75);
    letter-spacing: 0.02em;
    font-family: "IBM Plex Mono", monospace;
}
