/* =========================================================
   VED ENTERPRISES — MAIN STYLESHEET
   Layout: 01 "Blueprint"
   ========================================================= */

:root{
  --font-display:'Big Shoulders Display',sans-serif;
  --font-body:'IBM Plex Sans',sans-serif;
  --font-mono:'IBM Plex Mono',monospace;
  --radius:2px;
}

/* ============ THEME PALETTES ============ */
html[data-theme="blueprint-navy"]{
  --bg:#0F2A43; --bg-alt:#123A5C; --bg-card:#123c60; --ink:#EAF2F8; --ink-muted:#9FB8CC;
  --line:rgba(255,255,255,.16); --accent:#E8631C; --accent-ink:#14202B; --accent-2:#F2B705; --scheme:dark;
}
html[data-theme="safety-orange"]{
  --bg:#1C1917; --bg-alt:#262220; --bg-card:#262220; --ink:#F5F1EC; --ink-muted:#B7ADA3;
  --line:rgba(255,255,255,.14); --accent:#F2600C; --accent-ink:#14100D; --accent-2:#2FA88A; --scheme:dark;
}
html[data-theme="concrete-rust"]{
  --bg:#EDEAE3; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#221F1C; --ink-muted:#6B655D;
  --line:rgba(0,0,0,.12); --accent:#B5502E; --accent-ink:#FFFFFF; --accent-2:#274C5B; --scheme:light;
}
html[data-theme="charcoal-amber"]{
  --bg:#17191C; --bg-alt:#202327; --bg-card:#202327; --ink:#F1EFEA; --ink-muted:#A6ABB2;
  --line:rgba(255,255,255,.13); --accent:#D9A441; --accent-ink:#17191C; --accent-2:#4C7A8C; --scheme:dark;
}
html[data-theme="slate-teal"]{
  --bg:#10262B; --bg-alt:#163540; --bg-card:#163540; --ink:#E7F3F1; --ink-muted:#9BC1BE;
  --line:rgba(255,255,255,.15); --accent:#34A0A4; --accent-ink:#0B1B1E; --accent-2:#F2B705; --scheme:dark;
}
html[data-theme="sandstone-brick"]{
  --bg:#F2E9DA; --bg-alt:#FFFDF8; --bg-card:#FFFDF8; --ink:#2B211A; --ink-muted:#7A6C5C;
  --line:rgba(0,0,0,.1); --accent:#A63A2E; --accent-ink:#FFFFFF; --accent-2:#2E5339; --scheme:light;
}
html[data-theme="graphite-lime"]{
  --bg:#191C1A; --bg-alt:#22261F; --bg-card:#22261F; --ink:#EEF2E8; --ink-muted:#A9B29F;
  --line:rgba(255,255,255,.13); --accent:#8FBF3F; --accent-ink:#12140F; --accent-2:#E8631C; --scheme:dark;
}
html[data-theme="navy-gold"]{
  --bg:#0B1F33; --bg-alt:#10294A; --bg-card:#10294A; --ink:#F1F4F8; --ink-muted:#93A9C2;
  --line:rgba(255,255,255,.15); --accent:#D4A62B; --accent-ink:#0B1F33; --accent-2:#B5502E; --scheme:dark;
}
html[data-theme="warm-cement"]{
  --bg:#E7E1D6; --bg-alt:#FBF8F2; --bg-card:#FBF8F2; --ink:#262019; --ink-muted:#756C5E;
  --line:rgba(0,0,0,.1); --accent:#C1541C; --accent-ink:#FFFFFF; --accent-2:#2F5D50; --scheme:light;
}
html[data-theme="midnight-site"]{
  --bg:#0A0C10; --bg-alt:#14171D; --bg-card:#14171D; --ink:#E7E9EC; --ink-muted:#8B93A0;
  --line:rgba(255,255,255,.1); --accent:#F2B705; --accent-ink:#0A0C10; --accent-2:#E8631C; --scheme:dark;
}
html[data-theme="porcelain-steel"]{
  --bg:#F5F6F7; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#1D2226; --ink-muted:#6B747C;
  --line:rgba(0,0,0,.1); --accent:#2F6690; --accent-ink:#FFFFFF; --accent-2:#D4A62B; --scheme:light;
}
html[data-theme="ivory-forest"]{
  --bg:#F6F3EA; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#20261F; --ink-muted:#6E7568;
  --line:rgba(0,0,0,.1); --accent:#2F5D3A; --accent-ink:#FFFFFF; --accent-2:#B5502E; --scheme:light;
}
html[data-theme="chalk-cobalt"]{
  --bg:#F3F4F6; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#191C22; --ink-muted:#6A6F7A;
  --line:rgba(0,0,0,.09); --accent:#1E4FA3; --accent-ink:#FFFFFF; --accent-2:#E8631C; --scheme:light;
}
html[data-theme="iron-rust"]{
  --bg:#1B1D1F; --bg-alt:#282B2E; --bg-card:#282B2E; --ink:#ECEDEF; --ink-muted:#A4ADB7;
  --line:rgba(255,255,255,.13); --accent:#C15B3C; --accent-ink:#1B1D1F; --accent-2:#3E8E85; --scheme:dark;
}
html[data-theme="copper-patina"]{
  --bg:#16201E; --bg-alt:#22302D; --bg-card:#22302D; --ink:#ECEFEE; --ink-muted:#A4B7B3;
  --line:rgba(255,255,255,.13); --accent:#B87333; --accent-ink:#16201E; --accent-2:#4E8073; --scheme:dark;
}
html[data-theme="titanium-blue"]{
  --bg:#14181D; --bg-alt:#20262D; --bg-card:#20262D; --ink:#ECEDEF; --ink-muted:#A4ACB7;
  --line:rgba(255,255,255,.13); --accent:#3D8BD4; --accent-ink:#14181D; --accent-2:#C9A227; --scheme:dark;
}
html[data-theme="foundry-ember"]{
  --bg:#120E0C; --bg-alt:#221B18; --bg-card:#221B18; --ink:#EFEDEC; --ink-muted:#B7AAA4;
  --line:rgba(255,255,255,.13); --accent:#E4572E; --accent-ink:#120E0C; --accent-2:#6B6862; --scheme:dark;
}
html[data-theme="quarry-dust"]{
  --bg:#201E1B; --bg-alt:#2F2C28; --bg-card:#2F2C28; --ink:#EFEDEC; --ink-muted:#B7AFA4;
  --line:rgba(255,255,255,.13); --accent:#C08A34; --accent-ink:#201E1B; --accent-2:#5C6B73; --scheme:dark;
}
html[data-theme="shipyard-navy"]{
  --bg:#0C1B2A; --bg-alt:#222930; --bg-card:#222930; --ink:#ECEDEF; --ink-muted:#A4ADB7;
  --line:rgba(255,255,255,.13); --accent:#F2C230; --accent-ink:#0C1B2A; --accent-2:#46707D; --scheme:dark;
}
html[data-theme="refinery-steel"]{
  --bg:#191E22; --bg-alt:#252C32; --bg-card:#252C32; --ink:#ECEDEF; --ink-muted:#A4AEB7;
  --line:rgba(255,255,255,.13); --accent:#E2601C; --accent-ink:#191E22; --accent-2:#4A6C8C; --scheme:dark;
}
html[data-theme="mine-shaft"]{
  --bg:#1A1512; --bg-alt:#2B221E; --bg-card:#2B221E; --ink:#EFEDEC; --ink-muted:#B7ABA4;
  --line:rgba(255,255,255,.13); --accent:#C9972B; --accent-ink:#1A1512; --accent-2:#6E4B34; --scheme:dark;
}
html[data-theme="asphalt-night"]{
  --bg:#101214; --bg-alt:#1C2024; --bg-card:#1C2024; --ink:#ECEDEF; --ink-muted:#A4ADB7;
  --line:rgba(255,255,255,.13); --accent:#35C4C9; --accent-ink:#101214; --accent-2:#8A8F94; --scheme:dark;
}
html[data-theme="bronze-forge"]{
  --bg:#1D1611; --bg-alt:#2C241E; --bg-card:#2C241E; --ink:#EFEDEC; --ink-muted:#B7ACA4;
  --line:rgba(255,255,255,.13); --accent:#A9713B; --accent-ink:#1D1611; --accent-2:#8C2F2F; --scheme:dark;
}
html[data-theme="obsidian-copper"]{
  --bg:#0D0D0F; --bg-alt:#1A1A1E; --bg-card:#1A1A1E; --ink:#ECECEF; --ink-muted:#A4A4B7;
  --line:rgba(255,255,255,.13); --accent:#B5673A; --accent-ink:#0D0D0F; --accent-2:#4E5A63; --scheme:dark;
}
html[data-theme="storm-grey"]{
  --bg:#1C2126; --bg-alt:#282F36; --bg-card:#282F36; --ink:#ECEDEF; --ink-muted:#A4ADB7;
  --line:rgba(255,255,255,.13); --accent:#D9A441; --accent-ink:#1C2126; --accent-2:#4A5560; --scheme:dark;
}
html[data-theme="carbon-lime"]{
  --bg:#121313; --bg-alt:#202121; --bg-card:#202121; --ink:#ECEFEF; --ink-muted:#A4B7B7;
  --line:rgba(255,255,255,.13); --accent:#8FBF3F; --accent-ink:#121313; --accent-2:#565B52; --scheme:dark;
}
html[data-theme="rust-belt"]{
  --bg:#1E1512; --bg-alt:#2D231F; --bg-card:#2D231F; --ink:#EFECEC; --ink-muted:#B7A9A4;
  --line:rgba(255,255,255,.13); --accent:#B5502E; --accent-ink:#1E1512; --accent-2:#6B5D4F; --scheme:dark;
}
html[data-theme="deep-teal-industrial"]{
  --bg:#0E1F1E; --bg-alt:#1E2B2A; --bg-card:#1E2B2A; --ink:#ECEFEE; --ink-muted:#A4B7B6;
  --line:rgba(255,255,255,.13); --accent:#E8836B; --accent-ink:#0E1F1E; --accent-2:#3E7068; --scheme:dark;
}
html[data-theme="gunmetal-gold"]{
  --bg:#191B1E; --bg-alt:#26292D; --bg-card:#26292D; --ink:#ECEDEF; --ink-muted:#A4ABB7;
  --line:rgba(255,255,255,.13); --accent:#C9A227; --accent-ink:#191B1E; --accent-2:#545B61; --scheme:dark;
}
html[data-theme="limestone-clay"]{
  --bg:#EFEAE1; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7667;
  --line:rgba(0,0,0,.1); --accent:#B3592E; --accent-ink:#FFFFFF; --accent-2:#5B6B5E; --scheme:light;
}
html[data-theme="marble-graphite"]{
  --bg:#F4F3F1; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7767;
  --line:rgba(0,0,0,.1); --accent:#3A3D40; --accent-ink:#FFFFFF; --accent-2:#A67C52; --scheme:light;
}
html[data-theme="sand-brick"]{
  --bg:#F0E6D2; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7767;
  --line:rgba(0,0,0,.1); --accent:#9C3B2E; --accent-ink:#FFFFFF; --accent-2:#5E7062; --scheme:light;
}
html[data-theme="birch-moss"]{
  --bg:#F3EFE4; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29261E; --ink-muted:#7E7867;
  --line:rgba(0,0,0,.1); --accent:#55713F; --accent-ink:#FFFFFF; --accent-2:#A9673B; --scheme:light;
}
html[data-theme="cloud-denim"]{
  --bg:#EEF0F2; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#1E2429; --ink-muted:#67737E;
  --line:rgba(0,0,0,.1); --accent:#2E5C8A; --accent-ink:#FFFFFF; --accent-2:#B8763B; --scheme:light;
}
html[data-theme="parchment-teal"]{
  --bg:#F1EAD9; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29261E; --ink-muted:#7E7867;
  --line:rgba(0,0,0,.1); --accent:#2C6E68; --accent-ink:#FFFFFF; --accent-2:#A1522F; --scheme:light;
}
html[data-theme="dune-copper"]{
  --bg:#EFE3CE; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7667;
  --line:rgba(0,0,0,.1); --accent:#A65B2E; --accent-ink:#FFFFFF; --accent-2:#5B6B6A; --scheme:light;
}
html[data-theme="mist-cobalt"]{
  --bg:#EDEFF2; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#1E2329; --ink-muted:#67707E;
  --line:rgba(0,0,0,.1); --accent:#294F8C; --accent-ink:#FFFFFF; --accent-2:#B58B2E; --scheme:light;
}
html[data-theme="clay-olive"]{
  --bg:#EDE4D3; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7667;
  --line:rgba(0,0,0,.1); --accent:#6B7A3B; --accent-ink:#FFFFFF; --accent-2:#A2492E; --scheme:light;
}
html[data-theme="linen-brick"]{
  --bg:#F3ECE1; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7567;
  --line:rgba(0,0,0,.1); --accent:#A6402E; --accent-ink:#FFFFFF; --accent-2:#5F6B57; --scheme:light;
}
html[data-theme="granite-amber"]{
  --bg:#E9EAEA; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#1E2929; --ink-muted:#677E7E;
  --line:rgba(0,0,0,.1); --accent:#C08A2E; --accent-ink:#FFFFFF; --accent-2:#3F4A52; --scheme:light;
}
html[data-theme="plaster-slate"]{
  --bg:#F2F1EE; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29261E; --ink-muted:#7E7867;
  --line:rgba(0,0,0,.1); --accent:#45607A; --accent-ink:#FFFFFF; --accent-2:#B0602E; --scheme:light;
}
html[data-theme="wheat-forest"]{
  --bg:#F2EAD5; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29261E; --ink-muted:#7E7867;
  --line:rgba(0,0,0,.1); --accent:#2F5D3A; --accent-ink:#FFFFFF; --accent-2:#A65B2E; --scheme:light;
}
html[data-theme="pebble-rust"]{
  --bg:#EAE7E2; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7667;
  --line:rgba(0,0,0,.1); --accent:#A6472E; --accent-ink:#FFFFFF; --accent-2:#5A6670; --scheme:light;
}
html[data-theme="chalk-teal"]{
  --bg:#F1F2F0; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#24291E; --ink-muted:#737E67;
  --line:rgba(0,0,0,.1); --accent:#1F6E68; --accent-ink:#FFFFFF; --accent-2:#B5502E; --scheme:light;
}
html[data-theme="stone-saffron"]{
  --bg:#EFEAE0; --bg-alt:#FFFFFF; --bg-card:#FFFFFF; --ink:#29251E; --ink-muted:#7E7767;
  --line:rgba(0,0,0,.1); --accent:#D98A1E; --accent-ink:#FFFFFF; --accent-2:#4A5D5A; --scheme:light;
}

*{box-sizing:border-box;}
html,body{scroll-behavior:smooth;}
body{
  background:var(--bg); color:var(--ink); font-family:var(--font-body);
  transition:background .25s ease, color .25s ease;
}
::selection{background:var(--accent); color:var(--accent-ink);}
a{color:inherit;}
.eyebrow{
  font-family:var(--font-mono); letter-spacing:.14em; text-transform:uppercase;
  font-size:.72rem; color:var(--accent); font-weight:600;
}
h1,h2,h3,.display-font{font-family:var(--font-display); letter-spacing:.01em; text-transform:uppercase; font-weight:800;}
.text-muted-custom{color:var(--ink-muted)!important;}
.section{padding:5.5rem 0;}
.section-alt{background:var(--bg-alt);}
.divider-line{height:1px; background:var(--line); border:0;}

/* ============ NAVBAR ============ */
.navbar-ved{
  background:color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter:blur(10px); border-bottom:1px solid var(--line);
}
.navbar-brand{padding:0;}
.brand-mark{
  font-family:var(--font-display); font-weight:900; font-size:1.35rem; letter-spacing:.02em; line-height:1;
  border:2px solid var(--accent); padding:.5rem .65rem; color:var(--ink);
  display:inline-flex; align-items:center; justify-content:center; white-space:nowrap; border-radius:var(--radius);
}
.brand-tag{font-family:var(--font-mono); font-size:.62rem; color:var(--ink-muted); letter-spacing:.12em;}
.nav-link-ved{font-family:var(--font-mono); font-size:.82rem; letter-spacing:.03em; color:var(--ink)!important; text-transform:uppercase;}
.nav-link-ved:hover, .nav-link-ved.active{color:var(--accent)!important;}
.btn-accent{
  background:var(--accent); color:var(--accent-ink); border:none; font-family:var(--font-mono);
  text-transform:uppercase; letter-spacing:.06em; font-size:.8rem; font-weight:600; border-radius:var(--radius);
  padding:.6rem 1.3rem;
}
.btn-accent:hover{border: 1px solid var(--accent) !important; color:var(--accent); /*filter:brightness(1.08); color:var(--accent-ink);*/}

.btn-outline-ved{
  border:1px solid var(--line); color:var(--ink); font-family:var(--font-mono); text-transform:uppercase;
  letter-spacing:.06em; font-size:.8rem; border-radius:var(--radius); padding:.6rem 1.3rem; background:transparent;
}
.btn-outline-ved:hover{border-color:var(--accent); color:var(--accent);}

/* ============ HERO (home) ============ */
.hero{
  min-height:94vh; display:flex; align-items:center; position:relative; overflow:hidden;
  padding-top:5rem;
  background-image:
    repeating-linear-gradient(0deg, var(--line) 0px, var(--line) 1px, transparent 1px, transparent 42px),
    repeating-linear-gradient(90deg, var(--line) 0px, var(--line) 1px, transparent 1px, transparent 42px);
  background-position:center;
}
.hero::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(ellipse at 30% 20%, color-mix(in srgb, var(--bg) 10%, transparent) 0%, var(--bg) 68%);
  pointer-events:none;
}
.hero-content{position:relative; z-index:2;}
.hero h1{font-size:clamp(2.6rem, 6vw, 5rem); line-height:.98; margin:.6rem 0 1.2rem;}
.hero h1 span{color:var(--accent);}
.hero-lead{max-width:560px; font-size:1.05rem; color:var(--ink-muted); line-height:1.7;}

.dim-strip{position:relative; margin-top:3.2rem; padding-top:1.6rem;}
.dim-strip::before{content:""; position:absolute; top:0; left:0; right:0; height:1px; background:var(--line);}
.dim-strip::after{
  content:""; position:absolute; top:0; left:0; right:0; height:8px;
  background-image:repeating-linear-gradient(90deg, var(--line) 0, var(--line) 1px, transparent 1px, transparent 16.6%);
}
.dim-item{font-family:var(--font-mono);}
.dim-num{font-size:1.9rem; font-weight:600; color:var(--ink); display:block; line-height:1;}
.dim-label{font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-muted);}

/* ============ INNER PAGE HEADER (About/Services/Portfolio/Contact) ============ */
.page-header{
  /*min-height:46vh;*/ display:flex; align-items:flex-end; position:relative; overflow:hidden;
  padding:6rem 0 3rem;
  background-image:
    repeating-linear-gradient(0deg, var(--line) 0px, var(--line) 1px, transparent 1px, transparent 42px),
    repeating-linear-gradient(90deg, var(--line) 0px, var(--line) 1px, transparent 1px, transparent 42px);
}
.page-header::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(ellipse at 20% 10%, color-mix(in srgb, var(--bg) 10%, transparent) 0%, var(--bg) 72%);
  pointer-events:none;
}
.page-header-content{position:relative; z-index:2;}
.page-header h1{font-size:clamp(2.2rem, 5vw, 3.6rem); margin:.5rem 0 0;}
.breadcrumb-ved{font-family:var(--font-mono); font-size:.75rem; letter-spacing:.06em; color:var(--ink-muted); text-transform:uppercase;}
.breadcrumb-ved a{color:var(--ink-muted); text-decoration:none;}
.breadcrumb-ved a:hover{color:var(--accent);}

/* ============ CARDS ============ */
.ved-card{
  background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius);
  padding:1.9rem; height:100%; transition:transform .2s ease, border-color .2s ease;
}
.ved-card:hover{transform:translateY(-4px); border-color:var(--accent);}
.ved-icon{
  width:52px; height:52px; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:var(--radius); font-size:1.35rem; color:var(--accent); margin-bottom:1.1rem;
  background:color-mix(in srgb, var(--accent) 10%, transparent);
}

/* ============ CSQ ============ */
.csq-wrap{position:relative;}
.csq-connector{display:none;}
@media (min-width:992px){
  .csq-connector{position:absolute; top:26px; left:16.6%; right:16.6%; height:1px; background:var(--line); z-index:0; display:block;}
}
.csq-card{position:relative; z-index:1; text-align:center;}
.csq-tag{font-family:var(--font-mono); font-size:.7rem; letter-spacing:.12em; color:var(--ink-muted);}
.csq-letter{font-family:var(--font-display); font-weight:900; font-size:3.2rem; color:var(--accent); line-height:1;}

/* ============ VALUES ============ */
.value-row{display:flex; gap:1rem; align-items:flex-start; padding:1.1rem 0; border-bottom:1px solid var(--line);}
.value-row:last-child{border-bottom:none;}
.value-check{color:var(--accent); font-size:1.15rem; margin-top:.15rem;}
.hazard-bar{
  height:10px; width:100%; border-radius:var(--radius);
  background-image:repeating-linear-gradient(135deg, var(--accent-2) 0 14px, var(--bg) 14px 28px);
  opacity:.9;
}

/* ============ TEAM ROSTER ============ */
.roster-card{border:1px solid var(--line); border-radius:var(--radius); padding:1.5rem; background:var(--bg-card); height:100%;}
.roster-role{font-family:var(--font-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; color:var(--accent);}
.roster-count{
  font-family:var(--font-mono); font-size:.7rem; color:var(--ink-muted); border:1px solid var(--line);
  padding:.15rem .5rem; border-radius:var(--radius);
}

/* ============ SERVICE ICON GRID (services.html) ============ */
.service-card{text-align:center; display:flex; flex-direction:column; align-items:center;}
.service-icon-lg{
  width:64px; height:64px; flex:none; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:50%; font-size:1.6rem; line-height:1; color:var(--accent);
  margin:.75rem auto 1.2rem; background:color-mix(in srgb, var(--accent) 12%, transparent);
}
.service-icon-lg i{line-height:1;}
.service-index{
  font-family:var(--font-mono); font-size:.7rem; color:var(--ink-muted); letter-spacing:.08em; display:block;
}

/* ============ PORTFOLIO / CAROUSEL ============ */
.project-card{
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; background:var(--bg-card); height:100%;
}
.project-carousel .carousel-inner{aspect-ratio:16/10; background:var(--bg-alt);}
.photo-tile{
  width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:.6rem; position:relative;
  background-image:
    repeating-linear-gradient(45deg, color-mix(in srgb, var(--ink) 4%, transparent) 0, color-mix(in srgb, var(--ink) 4%, transparent) 2px, transparent 2px, transparent 14px);
}
.photo-tile i{font-size:2.6rem; color:var(--accent); opacity:.85;}
.photo-tile span{font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em; color:var(--ink-muted); text-transform:uppercase;}
.photo-tile{cursor:zoom-in; position:relative;}
.photo-tile::after{
  content:"🔍"; position:absolute; bottom:12px; right:12px;
  width:34px; height:34px; border-radius:50%; background:var(--bg); border:1px solid var(--line);
  color:var(--ink); display:flex; align-items:center; justify-content:center; font-size:.95rem;
  opacity:0; transition:opacity .2s ease;
}
.photo-tile:hover::after{opacity:1;}

/* Real image tiles */
.photo-tile-img{
  position:absolute; inset:0; width:100%; /*height:100%*/; object-fit:cover; display:block;
}

/* Tiles that are real links (img/icon with a 'link', or any 'youtube' entry) —
   these navigate immediately on click, so no zoom cursor/hint. */
a.photo-tile.photo-tile-link{
  cursor:pointer; text-decoration:none; color:inherit;
}
a.photo-tile.photo-tile-link::after{content:none;}
.tile-link-hint{
  position:absolute; bottom:12px; right:12px; width:34px; height:34px; border-radius:50%;
  background:var(--bg); border:1px solid var(--line); color:var(--ink); display:flex;
  align-items:center; justify-content:center; font-size:.9rem; opacity:0; transition:opacity .2s ease;
}
a.photo-tile.photo-tile-link:hover .tile-link-hint{opacity:1;}
a.photo-tile.photo-tile-link:hover{outline:1px solid var(--accent); outline-offset:-1px;}

/* YouTube thumbnail tiles */
.photo-tile-video .play-overlay{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:64px; height:64px; border-radius:50%; background:rgba(0,0,0,.55);
  border:2px solid rgba(255,255,255,.85); display:flex; align-items:center; justify-content:center;
  color:#fff; font-size:1.6rem; transition:transform .2s ease, background .2s ease;
}
.photo-tile-video:hover .play-overlay{transform:translate(-50%,-50%) scale(1.08); background:var(--accent);}
.photo-tile-video .tile-caption{
  position:absolute; left:0; right:0; bottom:0; padding:.6rem .8rem;
  background:linear-gradient(to top, rgba(0,0,0,.65), transparent);
  color:#fff; font-family:var(--font-mono); font-size:.7rem; letter-spacing:.05em; text-transform:uppercase;
}
.photo-tile-video .tile-badge{z-index:2;}

.tile-badge{z-index:2;}
.photo-tile .tile-badge{
  position:absolute; top:12px; left:12px; font-family:var(--font-mono); font-size:.65rem; letter-spacing:.06em;
  background:var(--bg); color:var(--ink-muted); border:1px solid var(--line); padding:.2rem .5rem; border-radius:var(--radius);
}
.project-carousel .carousel-control-prev,
.project-carousel .carousel-control-next{width:12%; opacity:0;}
.project-carousel:hover .carousel-control-prev,
.project-carousel:hover .carousel-control-next{opacity:1; transition:opacity .2s ease;}
.project-carousel .carousel-control-prev-icon,
.project-carousel .carousel-control-next-icon{
  background-color:var(--bg); border:1px solid var(--line); border-radius:50%; padding:14px; background-size:14px;
}
.project-carousel .carousel-indicators{margin-bottom:.4rem;}
.project-carousel .carousel-indicators [data-bs-target]{
  width:7px; height:7px; border-radius:50%; background-color:var(--ink); opacity:.4; border:none; margin:0 3px;
}
.project-carousel .carousel-indicators .active{background-color:var(--accent); opacity:1;}
.project-body{padding:1.4rem;}
.project-tag{
  display:inline-block; font-family:var(--font-mono); font-size:10px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--accent); border:1px solid var(--line); padding:.2rem .55rem; border-radius:var(--radius); margin-bottom:.6rem;
}
.filter-pill{
  font-family:var(--font-mono); font-size:.75rem; letter-spacing:.04em; text-transform:uppercase;
  border:1px solid var(--line); border-radius:20px; padding:.4rem 1rem; background:transparent; color:var(--ink);
}
.filter-pill.active, .filter-pill:hover{border-color:var(--accent); color:var(--accent);}

/* ============ LIGHTBOX ============ */
#lightboxModal .modal-content{
  background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius); color:var(--ink);
}
#lightboxModal .modal-header{border-bottom:1px solid var(--line);}
#lightboxModal .btn-close{filter:none; opacity:.8;}
html[data-theme] #lightboxModal .btn-close{
  background:none; position:relative; width:32px; height:32px; opacity:1;
}
#lightboxModal .btn-close::before, #lightboxModal .btn-close::after{
  content:""; position:absolute; top:50%; left:50%; width:18px; height:2px; background:var(--ink);
}
#lightboxModal .btn-close::before{transform:translate(-50%,-50%) rotate(45deg);}
#lightboxModal .btn-close::after{transform:translate(-50%,-50%) rotate(-135deg);}
.lightbox-stage{
  aspect-ratio:16/10; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1rem;
  background-image:repeating-linear-gradient(45deg, color-mix(in srgb, var(--ink) 4%, transparent) 0, color-mix(in srgb, var(--ink) 4%, transparent) 2px, transparent 2px, transparent 14px);
}
.lightbox-stage-wrap{position:relative;}
.lightbox-stage i{font-size:4.5rem; color:var(--accent);}
.lightbox-stage span{font-family:var(--font-mono); font-size:.85rem; letter-spacing:.06em; color:var(--ink-muted); text-transform:uppercase;}
.lightbox-img{max-width:100%; max-height:100%; width:100%; height:100%; object-fit:contain;}
.lightbox-nav{
  position:absolute; top:50%; transform:translateY(-50%); width:44px; height:44px; border-radius:50%;
  background:var(--bg); border:1px solid var(--line); color:var(--ink); display:flex; align-items:center;
  justify-content:center; font-size:1.2rem;
}
.lightbox-nav:hover{border-color:var(--accent); color:var(--accent);}
.lightbox-prev{left:16px;}
.lightbox-next{right:16px;}
.lightbox-dots{display:flex; justify-content:center; gap:.4rem; padding:1rem; border-top:1px solid var(--line);}
.lightbox-dots button{
  width:8px; height:8px; border-radius:50%; border:none; background:var(--ink); opacity:.35; padding:0;
}
.lightbox-dots button.active{background:var(--accent); opacity:1;}

/* ============ CONTACT FORM ============ */
.contact-form .form-control, .contact-form .form-select{
  background:var(--bg-alt); border:1px solid var(--line); color:var(--ink); border-radius:var(--radius); padding:.75rem 1rem;
}
.contact-form .form-control:focus, .contact-form .form-select:focus{
  background:var(--bg-alt); color:var(--ink); border-color:var(--accent); box-shadow:0 0 0 .2rem color-mix(in srgb, var(--accent) 25%, transparent);
}
.contact-form label{font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:.4rem;}
.contact-form ::placeholder{color:var(--ink-muted); opacity:.6;}
.info-row{display:flex; gap:1rem; align-items:flex-start; padding:1rem 0; border-bottom:1px solid var(--line);}
.info-row:last-child{border-bottom:none;}
.info-icon{width:40px; height:40px; flex:none; border:1px solid var(--line); border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--accent);}
.map-frame{
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; 
  min-height:280px; height:100%; width: 100%;
}
.map-frame iframe{width:100%; height:100%; min-height:280px; border:0; display:block;}
.contact-card{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius); padding:2rem;}

/* ============ CTA BAND ============ */
.cta-band{background:var(--accent); color:var(--accent-ink); border-radius:var(--radius);}
.cta-band .btn-outline-ved{border-color:var(--accent-ink); color:var(--accent-ink);}
.cta-band .btn-outline-ved:hover{background:var(--accent-ink); color:var(--accent);}

/* ============ FOOTER ============ */
.footer-ved{border-top:1px solid var(--line); padding:3.5rem 0 2rem; background:var(--bg-alt);}
.footer-heading{font-family:var(--font-mono); font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:1rem;}
.footer-link{display:block; padding:.28rem 0; color:var(--ink); text-decoration:none; font-size:.92rem;}
.footer-link:hover{color:var(--accent);}

/* ============ THEME SWITCHER ============ */
.theme-fab{
  position:fixed; bottom:22px; right:22px; z-index:1050; width:52px; height:52px; border-radius:50%;
  background:var(--accent); color:var(--accent-ink); border:none; box-shadow:0 6px 18px rgba(0,0,0,.35);
  display:flex; align-items:center; justify-content:center; font-size:1.2rem;
}
.theme-panel{
  position:fixed; bottom:84px; right:22px; z-index:1050; width:250px; background:var(--bg-card);
  border:1px solid var(--line); border-radius:6px; padding:1rem; display:none; box-shadow:0 12px 30px rgba(0,0,0,.4);
  max-height:70vh; overflow-y:auto;
}
.theme-panel.open{display:block;}
.theme-panel-title{font-family:var(--font-mono); font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-muted); margin-bottom:.7rem;}
.swatch-row{display:flex; align-items:center; gap:.6rem; padding:.35rem .3rem; border-radius:4px; cursor:pointer; font-size:.82rem;}
.swatch-row:hover{background:var(--bg-alt);}
.swatch-row.active{outline:1px solid var(--accent);}
.swatch-dot{width:16px; height:16px; border-radius:50%; border:1px solid var(--line); flex:none;}

/* ============ REVEAL ANIMATION ============ */
.reveal{opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease;}
.reveal.in{opacity:1; transform:none;}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1; transform:none; transition:none;}
  html{scroll-behavior:auto;}
}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
