/* ===== Tokens (light-first) ===== */
:root{
  --bg:#f7f8fb;
  --alt:#eff2f7;
  --surface:#ffffff;
  --text:#0b0c0e;
  --text-dim:#667085;
  --border:rgba(0,0,0,.12);
  --shadow:0 12px 34px rgba(20,25,40,.08);

  /* Universe-inspired accents (pastel, not dark) */
  --blue:#4776ff;   /* primary */
  --violet:#8b5cf6; /* secondary */
  --coral:#ff6b6b;  /* experience */
  --mint:#34d399;   /* uni */

  --grad:conic-gradient(from 210deg at 30% 10%, #b9c7ff, #d2bfff, #ffc4d0, #b9f1df, #b9c7ff 95%);

  --glass-bg:rgba(255,255,255,.42);
  --glass-strong-bg:rgba(255,255,255,.60);
  --glass-stroke:rgba(0,0,0,.06);

  --radius:18px;
  --header-h:56px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ===== Base ===== */
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font:15px/1.6 -apple-system,system-ui,"Segoe UI",Roboto,Helvetica,Arial;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
.section{padding:76px 0}
.section.alt{background:var(--alt)}
.section.light{background:transparent}

/* ===== Header / Nav ===== */
.site-header{position:fixed;inset:0 0 auto 0;height:var(--header-h);z-index:60;border-bottom:1px solid var(--glass-stroke)}
.glass{background:var(--glass-bg);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px)}
.glass.mild{background:rgba(255,255,255,.36)} .glass.strong{background:var(--glass-strong-bg)}
.nav{display:flex;align-items:center;justify-content:flex-start;height:100%;gap:14px}
.brand{text-decoration:none;color:var(--text);font-weight:800;letter-spacing:.2px}
.brand-text{background:linear-gradient(90deg,var(--blue),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}
.nav-links{display:flex;gap:8px;align-items:center;margin-left:auto}
.nav-link{position:relative;display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 12px;border-radius:12px;text-decoration:none;color:var(--text-dim);border:1px solid transparent;transition:color .18s var(--ease),background .18s var(--ease),transform .18s var(--ease),box-shadow .2s var(--ease)}
.nav-link span{display:inline-flex;align-items:center}
.nav-link:hover{color:var(--text);background:rgba(255,255,255,.55);transform:translateY(-1px)}
.nav-link.active{color:var(--text)}
.nav-link::after{content:"";position:absolute;left:12px;right:12px;bottom:6px;height:2px;border-radius:999px;background:linear-gradient(90deg,var(--blue),var(--violet));transform:scaleX(0);transform-origin:left;transition:transform .28s var(--ease)}
.nav-link:hover::after,.nav-link.active::after{transform:scaleX(1)}
.nav-link:focus-visible{outline:2px solid color-mix(in oklab,var(--blue) 38%,transparent);outline-offset:2px}
.as-btn{background:none;border:none;cursor:pointer;font:inherit}
.nav-link.as-btn{gap:8px;padding:0 16px;background:linear-gradient(120deg,color-mix(in oklab,var(--blue) 65%,#fff 10%),color-mix(in oklab,var(--violet) 70%,#fff 10%));color:#fff;border-color:transparent;box-shadow:0 10px 24px rgba(104,118,255,.18),inset 0 0 0 1px rgba(255,255,255,.45);transform-origin:center;will-change:transform,box-shadow}
.nav-link.as-btn .nav-icon{width:22px;height:22px;border-radius:8px;background:rgba(255,255,255,.25);color:#fff;font-size:13px;font-weight:700;justify-content:center}
.nav-link.as-btn::after{display:none}
.nav-link.as-btn:hover{transform:translateY(-1px) scale(1.03);box-shadow:0 14px 28px rgba(104,118,255,.25),inset 0 0 0 1px rgba(255,255,255,.58)}
.nav-link.as-btn:focus-visible{outline:none;box-shadow:0 0 0 2px rgba(255,255,255,.65) inset,0 0 0 4px color-mix(in oklab,var(--blue) 45%,transparent);transform:none}
.nav-link.as-btn.info-active{box-shadow:0 0 0 2px rgba(255,255,255,.68) inset,0 0 0 6px color-mix(in oklab,var(--violet) 22%,transparent);}
.nav-link.as-btn.info-active .nav-icon{background:rgba(255,255,255,.45)}
.nav-link.as-btn.info-active:hover{transform:translateY(-1px) scale(1.03)}
.theme-toggle{width:42px;height:42px;border-radius:14px;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .18s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease);margin-left:8px;flex-shrink:0}
.theme-toggle:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(28,40,60,.16);border-color:color-mix(in oklab,var(--blue) 25%,#000 12%)}
.theme-toggle:focus-visible{outline:2px solid color-mix(in oklab,var(--blue) 45%,transparent);outline-offset:2px}
.theme-icon{font-size:18px}

/* Shared Aura Frames */
.aura-field{position:relative;border-radius:32px;padding:26px;background:linear-gradient(145deg,rgba(248,250,255,.88),rgba(232,238,255,.7));box-shadow:0 24px 52px rgba(74,94,140,.14),0 14px 32px rgba(40,48,96,.12);border:1px solid rgba(255,255,255,.55);overflow:hidden}
.aura-field::before{content:"";position:absolute;inset:-70px;border-radius:inherit;background:radial-gradient(60% 60% at 20% 20%,rgba(146,180,255,.42),transparent 70%),radial-gradient(65% 70% at 80% 10%,rgba(212,180,255,.38),transparent 72%),radial-gradient(70% 70% at 50% 90%,rgba(142,214,255,.28),transparent 78%);filter:blur(30px);opacity:.7;pointer-events:none}
.aura-panel{position:relative;border-radius:24px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.6);backdrop-filter:blur(18px);box-shadow:0 18px 36px rgba(72,90,140,.14),inset 0 1px rgba(255,255,255,.68);overflow:hidden;transition:transform .24s var(--ease),box-shadow .24s var(--ease)}
.aura-panel::before{content:"";position:absolute;inset:1px;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.74),rgba(255,255,255,.34));pointer-events:none}
.aura-panel:hover{transform:translateY(-3px);box-shadow:0 24px 52px rgba(66,82,130,.16)}

body.theme-dark .aura-field{background:linear-gradient(140deg,rgba(28,32,58,.88),rgba(18,22,40,.94));border-color:rgba(120,148,255,.32);box-shadow:0 28px 60px rgba(12,16,38,.46),0 16px 36px rgba(6,10,26,.42)}
body.theme-dark .aura-field::before{background:radial-gradient(60% 60% at 20% 20%,rgba(98,118,255,.45),transparent 70%),radial-gradient(65% 70% at 80% 10%,rgba(176,110,255,.5),transparent 72%),radial-gradient(70% 70% at 50% 90%,rgba(104,210,255,.34),transparent 80%);opacity:.55}
body.theme-dark .aura-panel{background:rgba(20,28,48,.82);border-color:rgba(114,142,255,.26);box-shadow:0 22px 44px rgba(6,10,30,.52),inset 0 1px rgba(255,255,255,.08)}
body.theme-dark .aura-panel::before{background:linear-gradient(180deg,rgba(36,44,72,.56),rgba(18,22,32,.3))}

.burger{width:40px;height:40px;border-radius:12px;background:var(--surface);border:1px solid var(--border);display:none;align-items:center;justify-content:center;gap:4px;cursor:pointer}
.burger span{display:block;width:18px;height:2px;background:#000;border-radius:2px;transition:transform .24s var(--ease),opacity .24s var(--ease)}
.burger.open span:nth-child(1){transform:translateY(4px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-4px) rotate(-45deg)}

/* ===== HERO — Universe light vibe ===== */
.hero{position:relative;overflow:hidden}
.hero-sky{
  position:absolute; inset:0; pointer-events:none; z-index:-1;
  background:
    radial-gradient(120% 90% at 50% -10%, #eef0ff 0%, #f7e8ff 30%, #fff 62%),
    radial-gradient(90% 70% at 70% 10%, rgba(135,123,255,.22), transparent 60%),
    radial-gradient(85% 65% at 20% 15%, rgba(87,192,255,.18), transparent 60%);
}
.orb{
  position:absolute;border-radius:50%;
  filter:blur(0.2px) drop-shadow(0 12px 28px rgba(120,110,255,.24));
  animation:float 8s ease-in-out infinite;
  background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.95), rgba(235,235,255,.6) 40%, rgba(150,140,255,.34) 62%, rgba(150,140,255,0) 72%);
}
.orb1{width:56px;height:56px;left:8%;top:18%;animation-delay:.2s}
.orb2{width:72px;height:72px;left:46%;top:8%;animation-delay:1s}
.orb3{width:64px;height:64px;right:10%;top:22%;animation-delay:1.8s}
.orb4{width:42px;height:42px;right:22%;top:8%;animation-delay:.6s}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}

body.theme-dark .hero-sky{
  background:
    radial-gradient(120% 90% at 50% -10%, rgba(40,54,120,.55) 0%, rgba(20,28,60,.42) 40%, rgba(10,14,28,1) 70%),
    radial-gradient(90% 70% at 70% 10%, rgba(64,118,255,.24), transparent 65%),
    radial-gradient(85% 65% at 20% 15%, rgba(120,86,255,.24), transparent 60%);
}
body.theme-dark .orb{
  background:radial-gradient(circle at 30% 30%, rgba(255,255,255,.35), rgba(180,160,255,.18) 42%, rgba(120,110,255,.05) 62%, rgba(120,110,255,0) 80%);
  filter:blur(.4px) drop-shadow(0 20px 32px rgba(20,30,70,.55));
}

.hero-inner{display:grid;grid-template-columns:1.1fr .9fr;gap:24px;align-items:center}
.display{font-weight:800;letter-spacing:-.02em;font-size:clamp(36px,6vw,60px);line-height:1.05;margin:0 0 10px}
.gradient-title{background:linear-gradient(90deg,#0e0f12,#2a2f3a);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{color:var(--text-dim);margin:0 0 22px;font-size:clamp(16px,2.1vw,18px)}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}
.hero-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;will-change:transform}
.chip{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;color:#111}
.chip-blue{border-color:color-mix(in oklab,var(--blue) 40%,#000 10%);background:color-mix(in oklab,var(--blue) 12%,#fff)}
.chip-violet{border-color:color-mix(in oklab,var(--violet) 40%,#000 10%);background:color-mix(in oklab,var(--violet) 12%,#fff)}
.chip-coral{border-color:color-mix(in oklab,var(--coral) 40%,#000 10%);background:color-mix(in oklab,var(--coral) 12%,#fff)}

.hero-media{min-height:360px;position:relative;display:flex;align-items:center;justify-content:flex-end}
.hero-coming{position:relative;width:100%;max-width:520px;margin-left:auto;will-change:transform}
.hero-coming::before{content:"";position:absolute;inset: -90px;border-radius:inherit;background:radial-gradient(70% 60% at 20% 0%,rgba(140,176,255,.3),transparent 70%),radial-gradient(70% 70% at 80% 20%,rgba(206,162,255,.28),transparent 75%);filter:blur(40px);opacity:.65;pointer-events:none}
.hero-coming .aura-panel{display:flex;flex-direction:column;align-items:center;gap:16px;padding:40px;text-align:center;background:rgba(255,255,255,.84);border:1px solid rgba(188,204,255,.4);box-shadow:0 24px 60px rgba(108,128,180,.18);color:#2a3358;position:relative}
.hero-coming .aura-panel::after{content:"";position:absolute;top:22px;left:50%;transform:translateX(-50%);width:44px;height:6px;border-radius:999px;background:linear-gradient(90deg,#7f8eff,#a06bff,.6);opacity:.3}
.come-card{display:flex;flex-direction:column;align-items:center;gap:20px;padding:48px 40px;text-align:center;background:rgba(255,255,255,.88);border-radius:26px;border:1px solid rgba(196,210,255,.42);box-shadow:0 28px 60px rgba(110,124,180,.2);color:#2a3358;position:relative}
.come-card::after{content:"";position:absolute;top:22px;left:50%;transform:translateX(-50%);width:48px;height:6px;border-radius:999px;background:linear-gradient(90deg,#7f8eff,#a06bff);opacity:.35}
.coming-icon{font-size:44px;filter:drop-shadow(0 14px 20px rgba(120,140,220,.24))}
.coming-title{margin:0;font-size:26px;font-weight:800}
.coming-text{margin:0;font-size:15px;color:rgba(42,51,88,.72);max-width:320px}
.coming-btn{padding:12px 26px;border-radius:18px;border:none;background:linear-gradient(135deg,#7f8eff,#a06bff);color:#fff;font-weight:700;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.coming-btn:hover{transform:translateY(-2px);box-shadow:0 18px 34px rgba(120,130,220,.28)}

.player-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap}
.player-headline{display:flex;flex-direction:column;gap:6px;min-width:0}
.player-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.08);color:#a9b7ff;font-size:11px;font-weight:700;letter-spacing:.32px;text-transform:uppercase;border:1px solid rgba(165,184,255,.32)}
.player-title{margin:2px 0 0;font-size:20px;font-weight:800;color:#f6f8ff}
.player-subtitle{margin:0;font-size:14px;color:rgba(212,220,255,.78)}
.player-coming{margin:4px 0 0;font-size:12px;color:rgba(210,220,255,.6);font-weight:500;letter-spacing:.2px;text-transform:uppercase}
.player-tags{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.player-tags span{padding:5px 11px;border-radius:999px;background:rgba(44,62,120,.55);border:1px solid rgba(116,148,255,.45);font-size:12px;font-weight:600;color:#f1f3ff}
.player-tags:empty{display:none}
.player-subtitle:empty{display:none}
.player-video{position:relative;border-radius:20px;overflow:hidden;background:radial-gradient(140% 140% at 20% 10%,rgba(120,160,255,.22),transparent 60%),#060c19;box-shadow:0 26px 46px rgba(6,10,24,.6)}
.player-media{width:100%;display:block;aspect-ratio:16/9;background:#01030a;border-radius:inherit}
.player-overlay-btn{position:absolute;right:16px;bottom:16px;width:52px;height:52px;border-radius:18px;border:none;background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 62%,#fff 22%));color:#fff;font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:0;box-shadow:0 16px 34px color-mix(in oklab,var(--accent) 40%,#000 28%);cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease);backdrop-filter:blur(10px)}
.player-overlay-btn:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 18px 34px color-mix(in oklab,var(--accent) 40%,#000 28%)}
.player-controls{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.player-buttons{display:flex;align-items:center;gap:10px}
.player-control{width:42px;height:42px;border-radius:14px;border:1px solid rgba(144,164,255,.32);background:rgba(255,255,255,.08);color:#ffffff;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s var(--ease);backdrop-filter:blur(8px)}
.player-control:hover{transform:translateY(-2px);box-shadow:0 12px 20px rgba(10,14,34,.28)}
.player-control.is-active{background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 70%,#fff 25%));color:#fff;border-color:color-mix(in oklab,var(--accent) 80%,#fff 20%)}
.player-control:disabled{opacity:.3;cursor:not-allowed;transform:none;box-shadow:none}
.player-control:disabled:hover{transform:none}
.player-progress{flex:1;min-width:160px;height:6px;border-radius:999px;background:rgba(255,255,255,.14);overflow:hidden;cursor:pointer;position:relative}
.player-progress-fill{height:100%;width:100%;transform-origin:left;transform:scaleX(0);background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 65%,#fff 20%));transition:transform .12s linear}
.player-time{font-size:12px;color:rgba(217,224,255,.78);min-width:44px;text-align:right}
.player-playlist{display:flex;flex-wrap:wrap;gap:12px}
.player-playlist button{padding:10px 16px;border-radius:16px;border:1px solid rgba(120,140,224,.28);background:rgba(255,255,255,.08);color:#e7ecff;font-size:12px;font-weight:600;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease),border-color .18s var(--ease);backdrop-filter:blur(10px)}
.player-playlist button:hover{transform:translateY(-1px);box-shadow:0 16px 32px rgba(10,14,34,.32)}
.player-playlist button.is-active{background:linear-gradient(135deg,var(--accent),color-mix(in oklab,var(--accent) 70%,#fff 20%));color:#fff;border-color:color-mix(in oklab,var(--accent) 80%,#fff 18%);box-shadow:0 20px 36px color-mix(in oklab,var(--accent) 45%,#000 28%)}
.player-playlist button:focus-visible{outline:2px solid color-mix(in oklab,var(--accent) 55%,#fff 20%);outline-offset:2px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border-radius:14px;border:1px solid var(--border);cursor:pointer;font-weight:700;background:var(--surface);color:var(--text);text-decoration:none;transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s var(--ease)}
.btn.primary{background:linear-gradient(90deg,var(--blue),var(--violet));color:#fff;border-color:transparent;box-shadow:0 12px 26px rgba(120,110,255,.22)}
.btn.primary:hover{transform:translateY(-1px)}
.btn.ghost{background:var(--surface)}
.btn.tiny{height:32px;padding:0 10px;border-radius:10px}

/* Section head */
.section-head{display:flex;align-items:end;justify-content:space-between;gap:10px;margin-bottom:12px}
.section-title{margin:0;font-size:18px;font-weight:800}

/* Two CV cards */
.cv-field{position:relative;margin-top:24px}
.cv-columns{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.cv-card{position:relative;overflow:hidden}
.cv-card-head{display:flex;align-items:center;justify-content:space-between;padding:12px;border-bottom:1px solid rgba(160,176,226,.22)}
.cv-card-title{margin:0;font-size:16px;font-weight:800}
.cv-pane.show{display:block}
.cv-list{list-style:none;margin:12px 0 16px;padding:0 12px 16px;display:flex;flex-direction:column;gap:14px}
.cv-item{position:relative;display:grid;grid-template-columns:minmax(118px,162px) 1fr;gap:12px;align-items:start;padding:18px 20px 18px 30px;border:1px solid rgba(16,24,40,.08);border-radius:18px;background:linear-gradient(150deg,rgba(255,255,255,.88),rgba(237,242,255,.72));box-shadow:0 14px 30px rgba(22,26,46,.1);overflow:hidden;transition:transform .22s var(--ease),box-shadow .22s var(--ease),border-color .22s var(--ease)}
.cv-item::before{content:"";position:absolute;left:12px;top:14px;bottom:14px;width:4px;border-radius:999px;background:linear-gradient(180deg,var(--blue),color-mix(in oklab,var(--blue) 18%,#fff));opacity:.6;transition:opacity .25s var(--ease)}
.cv-item[data-type="course"]::before{background:linear-gradient(180deg,var(--blue),color-mix(in oklab,var(--blue) 15%,#fff));}
.cv-item[data-type="uni"]::before{background:linear-gradient(180deg,var(--mint),color-mix(in oklab,var(--mint) 15%,#fff));}
.cv-item[data-type="experience"]::before{background:linear-gradient(180deg,var(--coral),color-mix(in oklab,var(--coral) 15%,#fff));}
.cv-item:hover{transform:translateY(-3px);box-shadow:0 18px 36px rgba(22,26,46,.12),0 10px 26px rgba(22,26,46,.08);border-color:rgba(16,24,40,.12)}
.cv-item:hover::before{opacity:1}
.cv-left{display:flex;align-items:center;gap:8px;transition:transform .25s var(--ease)}
.cv-item:hover .cv-left{transform:translateX(2px)}
.cv-body{display:flex;flex-direction:column;gap:4px;transition:transform .25s var(--ease)}
.cv-body h3{margin:0;font-size:15px;font-weight:800;transition:transform .25s var(--ease),color .25s var(--ease)}
.cv-sub{margin:0;color:var(--text-dim);transition:transform .25s var(--ease),opacity .25s var(--ease)}
.cv-item:hover .cv-body{transform:translateY(-2px)}
.cv-item:hover .cv-body h3{color:#0d1d3a}
.cv-item:hover .cv-sub{transform:translateY(-2px);opacity:.92}
.pill{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:#fff;color:var(--text-dim)}

.cv-badge{font-size:12px;padding:4px 10px;border-radius:999px;font-weight:700;border:1px solid var(--border);background:#fff}
.cv-badge.course{background:linear-gradient(180deg,color-mix(in oklab,var(--blue) 12%,#fff),#fff 64%);border-color:color-mix(in oklab,var(--blue) 35%,#000 8%);color:#0d2347}
.cv-badge.uni{background:linear-gradient(180deg,color-mix(in oklab,var(--mint) 14%,#fff),#fff 64%);border-color:color-mix(in oklab,var(--mint) 35%,#000 8%);color:#0f2a26}
.cv-badge.exp{background:linear-gradient(180deg,color-mix(in oklab,var(--coral) 10%,#fff),#fff 64%);border-color:color-mix(in oklab,var(--coral) 35%,#000 8%);color:#3d1414}

.tabs{display:flex;gap:8px;padding:4px;border-radius:12px;background:rgba(255,255,255,.6);backdrop-filter:blur(12px);border:1px solid rgba(15,25,45,.08)}
.tab-btn{height:32px;padding:0 14px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--text-dim);cursor:pointer;font-weight:600;transition:color .2s var(--ease),background .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease)}
.tab-btn:hover{color:var(--text);transform:translateY(-1px)}
.tab-btn.active{color:#0d2347;background:linear-gradient(180deg,color-mix(in oklab,var(--blue) 20%,#fff),#fff 74%);box-shadow:0 6px 16px rgba(60,96,255,.18);border-color:color-mix(in oklab,var(--blue) 32%,#fff 20%)}
.tab-btn.active:focus-visible{outline:none;box-shadow:0 0 0 2px rgba(255,255,255,.8),0 0 0 4px color-mix(in oklab,var(--blue) 45%,transparent)}

/* Projects grid — editor vibe on light */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}
.project-card{position:relative;border-radius:20px;cursor:pointer;overflow:hidden}
.project-card.aura-panel{padding:16px 0 20px}
.project-card::before{content:none}
.thumb{aspect-ratio:16/9;background:#0f0f10;display:grid;place-items:center;overflow:hidden;margin:16px 16px 0;border-radius:16px;box-shadow:0 18px 36px rgba(18,22,40,.18)}
.thumb.is-empty{background:linear-gradient(145deg,rgba(244,248,255,.95),rgba(228,236,255,.86));border:1px dashed rgba(160,176,226,.45);box-shadow:none;color:#263152;display:flex;align-items:center;justify-content:center;padding:14px;gap:6px}
.thumb-note{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;opacity:.8;text-align:center}
.thumb img,.thumb video{width:100%;height:100%;object-fit:cover;display:block}
.meta{padding:18px 16px 16px;display:flex;flex-direction:column;gap:8px}
.meta .title{font-weight:800}
.meta .desc{color:var(--text-dim);font-size:13px}
.actions{display:flex;gap:8px;margin:0 16px 18px}
.project-card.empty-state{display:flex;align-items:center;justify-content:center;min-height:180px;text-align:center;cursor:default}
.project-card.empty-state::before{display:none}
.project-card.empty-state .meta{gap:6px}
.project-card.empty-state:hover{transform:none;box-shadow:inherit}

.projects-frame{margin-top:20px}

/* Popup / Info / Zoom */
.popup{position:fixed;inset:0;display:none;z-index:70}
.popup.open{display:grid;place-items:center}
.popup-backdrop{position:absolute;inset:0;background:rgba(10,12,20,.45);backdrop-filter:blur(3px)}
.popup-card{position:relative;width:min(100% - 24px,980px);padding:26px;border-radius:28px;background:radial-gradient(160% 140% at 20% 20%,rgba(255,255,255,.82),rgba(228,236,255,.72));border:1px solid rgba(176,192,255,.4);box-shadow:0 28px 62px rgba(36,44,96,.2),0 18px 40px rgba(16,22,50,.22);backdrop-filter:blur(22px);overflow:hidden}
.popup-card::before{content:"";position:absolute;inset:-90px;border-radius:inherit;background:radial-gradient(80% 80% at 25% 20%,rgba(162,194,255,.4),transparent 72%),radial-gradient(70% 70% at 80% 15%,rgba(208,160,255,.36),transparent 75%),radial-gradient(80% 80% at 50% 90%,rgba(144,214,255,.32),transparent 78%);filter:blur(42px);opacity:.7;pointer-events:none}
.popup-card::after{content:none}
.popup-card > *{position:relative;z-index:1}
.popup-card.small{width:min(100% - 24px,640px)}
.popup.open .popup-card{animation:glassPop .28s var(--ease);}
.popup.open .popup-backdrop{animation:fadeBackdrop .24s var(--ease);}
.popup-close{
  position:absolute;right:12px;top:12px;width:20px;height:20px;border-radius:50%;
  border:none;padding:0;background:linear-gradient(145deg,#ff7a75,#ff4d4a);
  box-shadow:0 6px 14px rgba(255,90,90,.28);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:transform .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease);
}
.popup-close::before,.popup-close::after{
  content:"";position:absolute;left:50%;top:50%;width:10px;height:2px;border-radius:999px;
  background:rgba(255,255,255,0);transform-origin:center;opacity:0;transition:opacity .18s ease,background .18s ease;
}
.popup-close::before{transform:translate(-50%,-50%) rotate(45deg);}
.popup-close::after{transform:translate(-50%,-50%) rotate(-45deg);}
.popup-close:is(:hover,:focus-visible){transform:scale(1.28);box-shadow:0 10px 22px rgba(255,82,82,.35);}
.popup-close:is(:hover,:focus-visible)::before,
.popup-close:is(:hover,:focus-visible)::after{opacity:1;background:rgba(255,255,255,.95);}
.popup-close:focus-visible{outline:2px solid rgba(255,255,255,.75);outline-offset:4px;}
.popup-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:24px 6px 16px;padding-right:46px}
.tags{display:flex;gap:6px;flex-wrap:wrap}
.tag{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid rgba(148,164,230,.35);background:rgba(255,255,255,.78);box-shadow:0 8px 18px rgba(54,72,140,.15)}
.popup-stage{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;align-items:flex-start;border-radius:18px;overflow-y:auto;max-height:min(62vh,560px);background:linear-gradient(160deg,rgba(244,248,255,.88),rgba(228,236,255,.64));padding:16px;border:1px solid rgba(164,180,240,.25);backdrop-filter:blur(20px)}
.stage-item{flex:0 1 300px;text-align:center;padding:14px;border-radius:18px}
.stage-item:hover{transform:none;box-shadow:inherit}
.stage-media{width:100%;border-radius:14px;box-shadow:0 18px 36px rgba(32,46,90,.14)}
.media-caption{margin-top:6px;color:var(--text-dim);font-size:13px;text-align:center}
.desc-box{margin-top:18px;padding:18px;border-radius:18px;background:linear-gradient(150deg,rgba(255,255,255,.82),rgba(234,240,255,.7));border:1px solid rgba(160,176,226,.2);box-shadow:0 18px 36px rgba(46,62,120,.12)}
.desc-box p{margin:.2rem 0;color:var(--text)}
.desc-box ul{margin:.6rem 0 0;padding-left:20px;display:flex;flex-direction:column;gap:6px;color:var(--text)}
.callout{text-align:center;margin-top:16px}
.callout .btn{min-width:140px}

/* About/Contact */
.info-body{padding:10px;display:flex;justify-content:center;align-items:center}
.info-card{width:min(620px,100%);display:block;padding:24px;position:relative}
.info-card::after{content:none}
.info-card:hover{transform:none;box-shadow:0 22px 46px rgba(72,90,140,.15)}
.info-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px}
.info-block{display:flex;flex-direction:column;gap:12px}
.info-label{margin:0;font-size:12px;font-weight:700;letter-spacing:.32px;text-transform:uppercase;color:rgba(32,42,86,.78)}
.info-lead{margin:0;font-size:14px;line-height:1.6;color:var(--text)}
.info-chips{display:flex;flex-wrap:wrap;gap:8px}
.info-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.82);border:1px solid rgba(154,168,230,.3);box-shadow:0 10px 24px rgba(90,112,180,.14);font-size:12px;font-weight:600;color:rgba(28,38,78,.88)}
.info-list{margin:0;padding:0;display:flex;flex-direction:column;gap:10px;list-style:none;font-size:14px;color:var(--text)}
.info-icon{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:8px;background:rgba(146,168,255,.22);margin-right:8px;font-size:12px}
.info-foot{margin:4px 0 0;font-size:13px;color:var(--text-dim)}
.contact-sheet{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;align-items:flex-start;padding:8px 0}
.contact-primary,.contact-availability{display:flex;flex-direction:column;gap:16px;padding:20px 24px;border-radius:20px;background:rgba(255,255,255,.92);border:1px solid rgba(156,168,220,.24);box-shadow:0 16px 34px rgba(72,88,148,.12)}
.contact-email{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:16px;background:rgba(248,250,255,.9);border:1px solid rgba(160,172,220,.26);width:100%;flex-wrap:nowrap;justify-content:space-between}
.contact-email .email{font-size:15px;font-weight:700;letter-spacing:.08px;color:#24315a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.availability{margin:.4rem 0 .2rem;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:8px;color:var(--text)}
.availability li{display:flex;align-items:center;gap:10px;font-size:14px;padding:10px 14px;border-radius:12px;border:1px solid rgba(176,186,230,.35);background:rgba(255,255,255,.97);flex-wrap:wrap}
.availability li strong{color:#1f2854;font-weight:700}
.status-dot{display:inline-flex;width:9px;height:9px;border-radius:50%;background:linear-gradient(135deg,#8ed7ff,#7a84ff)}
.copied{display:inline-block;margin-top:6px;font-size:12px;color:var(--text-dim);opacity:0;transform:translateY(2px);transition:opacity .16s var(--ease),transform .16s var(--ease)}
.copied.show{opacity:1;transform:none}

.availability .timezone{margin-left:auto;font-size:12px;color:var(--text-dim);white-space:nowrap}

#copyEmail{height:36px;padding:0 18px 0 40px;border-radius:12px;border:none;background:linear-gradient(120deg,#7c8cff,#a07fff);color:#fff;font-weight:700;letter-spacing:.16px;position:relative;transition:transform .18s var(--ease),box-shadow .18s var(--ease);box-shadow:0 14px 28px rgba(108,108,214,.22);flex-shrink:0}
#copyEmail::before{content:"⧉";position:absolute;left:18px;font-size:14px;line-height:1;color:rgba(255,255,255,.95)}
#copyEmail:hover{transform:translateY(-1px);box-shadow:0 18px 34px rgba(108,108,214,.28)}
#copyEmail:active{transform:scale(.97)}


/* Footer */
.footer{margin:60px 0 32px;color:var(--text-dim);text-align:center}

/* Preloader */
#preloader{position:fixed;inset:0;display:grid;place-items:center;background:#fff;z-index:200}
.loader-dot{width:8px;height:8px;border-radius:50%;background:#000;animation:blink .9s infinite}
@keyframes blink{50%{opacity:.25}}

.confetti-burst{position:fixed;top:0;left:0;width:0;height:0;pointer-events:none;z-index:400;transform:translate(-50%,-50%)}
.confetti-piece{position:absolute;width:7px;height:12px;border-radius:3px;opacity:0;animation:confettiPop .6s ease-out forwards}

@keyframes confettiPop{
  0%{transform:translate(0,0) scale(.6) rotate(0deg);opacity:1}
  80%{opacity:1}
  100%{transform:translate(var(--confetti-x),var(--confetti-y)) scale(1) rotate(var(--confetti-rot));opacity:0}
}

@keyframes glassPop{
  from{opacity:0;transform:translateY(12px) scale(.96);}
  to{opacity:1;transform:translateY(0) scale(1);}
}
@keyframes fadeBackdrop{
  from{opacity:0;}
  to{opacity:1;}
}

/* Reveal */
.reveal{opacity:0;transform:translateY(10px);transition:opacity .4s var(--ease),transform .4s var(--ease)}
.reveal.is-visible{opacity:1;transform:none}

/* Responsive */
@media (prefers-reduced-motion: reduce){
  .reveal{transition:none;}
  .popup.open .popup-card,.popup.open .popup-backdrop{animation:none !important;}
  .btn{transition:none;}
}

@media (max-width:900px){
  .hero-inner{grid-template-columns:1fr;gap:14px}
  .hero-media{min-height:220px;justify-content:center}
  .player-controls{flex-direction:column;align-items:flex-start}
  .player-progress{width:100%;min-width:0}
  .player-time{text-align:left}
  .player-playlist{width:100%}
  .cv-field{padding:14px;border-radius:22px}
  .cv-columns{grid-template-columns:1fr}
}
@media (max-width:720px){
  .burger{display:flex}
  .nav-links{position:absolute;top:var(--header-h);left:0;right:0;display:none;flex-direction:column;background:rgba(255,255,255,.9);border-bottom:1px solid var(--border);padding:10px;backdrop-filter:blur(8px)}
  .nav-links.open{display:flex}
  .nav-link{width:100%;justify-content:flex-start;height:40px}
  .nav-links{margin-left:0}
  .theme-toggle{margin-left:auto}
  .player-header{flex-direction:column;align-items:flex-start}
  .player-video{margin:0 auto}
  .player-playlist{gap:8px}
  .cv-item{grid-template-columns:1fr}
  .info-body{padding:16px}
  .info-card{width:100%}
}

/* ===== Soft Light theme tweaks (already active) ===== */
body.theme-soft{
  --bg:#f3f4f6; --alt:#eceff3; --surface:#f7f8fa; --text:#0b0c0e; --text-dim:#666a73; --border:rgba(0,0,0,.12);
  --glass-bg:rgba(255,255,255,.30); --glass-strong-bg:rgba(255,255,255,.48);
}
body.theme-dark{
  --bg:#050914;
  --alt:#090f1d;
  --surface:#10192b;
  --text:#f3f6ff;
  --text-dim:#8b97bd;
  --border:rgba(255,255,255,.12);
  --glass-bg:rgba(16,24,40,.46);
  --glass-strong-bg:rgba(18,28,48,.62);
}
body.theme-dark .brand-text{background:linear-gradient(90deg,#7ca6ff,#d6b8ff);-webkit-background-clip:text;background-clip:text;color:transparent}
body.theme-dark .nav-link{color:var(--text-dim)}
body.theme-dark .nav-link:hover{color:var(--text)}
body.theme-dark .nav-link.as-btn{background:linear-gradient(120deg,color-mix(in oklab,var(--blue) 55%,#fff 18%),color-mix(in oklab,var(--violet) 60%,#fff 10%));box-shadow:0 12px 30px rgba(42,64,140,.36),inset 0 0 0 1px rgba(255,255,255,.45)}
body.theme-dark .theme-toggle{background:rgba(10,16,28,.8);border-color:rgba(255,255,255,.12);color:#f3f6ff}
body.theme-dark .theme-toggle:hover{box-shadow:0 10px 24px rgba(12,20,40,.6);border-color:rgba(124,156,255,.5)}
body.theme-dark .gradient-title{background:linear-gradient(90deg,#f7f9ff,#aebdff);-webkit-background-clip:text;background-clip:text;color:transparent}
body.theme-dark .lead{color:rgba(224,230,255,.82)}
body.theme-dark .hero-cta .btn.ghost{background:rgba(18,24,40,.92);color:#f1f4ff;border-color:rgba(120,140,220,.45)}
body.theme-dark .hero-cta .btn.ghost:hover{box-shadow:0 14px 32px rgba(46,74,150,.35)}
body.theme-dark .hero-chips .chip{background:rgba(18,24,42,.88);border-color:rgba(138,156,226,.4);color:#dfe6ff}
body.theme-dark .footer{color:var(--text-dim)}
body.theme-dark .cv-item{background:linear-gradient(160deg,rgba(20,28,48,.88),rgba(14,20,36,.9));border-color:rgba(90,110,160,.26);box-shadow:0 18px 36px rgba(8,12,28,.45)}
body.theme-dark .tabs{background:rgba(14,22,36,.72);border-color:rgba(92,110,160,.35)}
body.theme-dark .tab-btn{color:rgba(200,210,255,.72)}
body.theme-dark .tab-btn:hover{color:#f3f6ff}
body.theme-dark .tab-btn.active{
  color:#15203c;
  background:linear-gradient(135deg,rgba(230,238,255,1),rgba(188,208,255,.92));
  border-color:rgba(230,238,255,.7);
  box-shadow:0 10px 24px rgba(114,142,255,.32);
}
body.theme-dark .chip{background:rgba(18,24,40,.88);border-color:rgba(132,152,220,.42);color:#e6ebff}
body.theme-dark .project-card{background:rgba(14,20,36,.88);border-color:rgba(96,118,178,.28);box-shadow:0 16px 36px rgba(8,12,24,.55);}
body.theme-dark .project-card::before{background:linear-gradient(180deg,rgba(42,56,96,.65),rgba(24,32,60,.9));color:#b9c5ff}
body.theme-dark .project-card.empty-state{background:rgba(12,18,30,.92);border-color:rgba(94,120,180,.32)}
body.theme-dark .thumb.is-empty{background:rgba(24,32,58,.86);border-color:rgba(128,150,230,.45);color:#e3e8ff}
body.theme-dark .thumb-note{opacity:.92}
body.theme-dark .popup-card{background:linear-gradient(160deg,rgba(26,34,62,.9),rgba(12,18,32,.96));border-color:rgba(128,156,255,.28);box-shadow:0 44px 90px rgba(6,10,28,.72),0 24px 60px rgba(4,8,20,.6)}
body.theme-dark .popup-card::before{background:radial-gradient(70% 70% at 25% 18%,rgba(92,130,255,.55),transparent 74%),radial-gradient(65% 70% at 82% 12%,rgba(170,110,255,.55),transparent 76%),radial-gradient(70% 80% at 48% 90%,rgba(120,200,255,.4),transparent 82%);opacity:.55}
body.theme-dark .popup-card::after{content:none}
body.theme-dark .tag{background:rgba(20,28,48,.88);border-color:rgba(144,166,255,.35);color:#dfe6ff}
body.theme-dark .popup-stage{background:linear-gradient(160deg,rgba(22,30,52,.82),rgba(16,22,40,.9));border-color:rgba(128,152,230,.28)}
body.theme-dark .desc-box{background:linear-gradient(160deg,rgba(24,34,58,.86),rgba(16,22,40,.9));border-color:rgba(124,152,222,.28);color:#e0e7ff}
body.theme-dark .info-label{color:rgba(182,198,255,.82)}
body.theme-dark .info-lead,body.theme-dark .info-list{color:#dde4ff}
body.theme-dark .info-chip{background:rgba(26,34,62,.86);border-color:rgba(146,170,255,.4);color:#f1f4ff;box-shadow:0 16px 34px rgba(10,14,36,.55)}
body.theme-dark .hero-coming .aura-panel{
  background:linear-gradient(150deg,rgba(26,32,58,.9),rgba(18,24,48,.94));
  border-color:rgba(128,148,240,.38);
  color:#f1f4ff;
  box-shadow:0 28px 60px rgba(8,12,34,.6);
}
body.theme-dark .hero-coming .aura-panel h3,
body.theme-dark .hero-coming .aura-panel p{color:#e8ecff}
body.theme-dark .info-foot{color:rgba(188,202,255,.7)}
body.theme-dark .contact-primary,body.theme-dark .contact-availability{background:rgba(24,32,60,.9);border-color:rgba(132,150,224,.32);box-shadow:0 18px 40px rgba(4,8,24,.55)}
body.theme-dark .contact-email{background:rgba(26,34,62,.88);border-color:rgba(128,148,224,.32)}
body.theme-dark .contact-email .email{color:#e6ebff}
body.theme-dark .availability li{color:#e2e6ff;background:rgba(24,32,60,.78);border-color:rgba(130,150,228,.34)}
body.theme-dark .availability li strong{color:#f5f6ff}
body.theme-dark .status-dot{background:linear-gradient(135deg,#78c4ff,#8d91ff)}
body.theme-dark #copyEmail{background:linear-gradient(120deg,#8894ff,#b08aff);box-shadow:0 18px 32px rgba(40,40,120,.42)}
body.theme-dark .availability .timezone{color:rgba(204,212,255,.75)}

.contact-card::after{display:none}
body.theme-dark .info-card:hover{box-shadow:0 30px 60px rgba(6,10,26,.66)}
body.theme-dark .info-icon{background:rgba(118,140,255,.32)}
body.theme-dark .info-card::after{content:none}
body.theme-dark .cv-card-head{border-bottom:1px solid rgba(118,142,212,.32)}
body.theme-dark .stage-media{box-shadow:0 22px 46px rgba(6,10,26,.58)}
body.theme-dark .cv-item::before{opacity:.55}

body.theme-dark .player-coming{color:rgba(212,220,255,.58)}
