:root{
  --bg:#e9ebee;--ink:#0d0f13;--muted:#5d636d;--card:#f6f7f9;--chip:#dde0e5;--line:rgba(13,15,19,.1);--dock:rgba(246,247,249,.72);--panel:#13161c;
  --blue:oklch(0.55 0.22 264);--lime:oklch(0.91 0.2 122);
  --grad:linear-gradient(100deg,oklch(0.5 0.23 264),oklch(0.54 0.25 305),oklch(0.6 0.24 350));
  --hl:linear-gradient(100deg,oklch(0.92 0.2 122),oklch(0.88 0.14 175));
  --glow:.55;--grain:.18;
  --g1:oklch(0.62 0.22 264);--g2:oklch(0.9 0.2 122);--g3:oklch(0.75 0.19 345);--g4:oklch(0.8 0.13 210);
}
html[data-theme="dark"]{
  --bg:#0d0f13;--ink:#eef0f4;--muted:#949aa5;--card:#161920;--chip:#22262f;--line:rgba(238,240,244,.1);--dock:rgba(22,25,32,.72);--panel:#1c2029;
  --grad:linear-gradient(100deg,oklch(0.74 0.16 250),oklch(0.74 0.18 305),oklch(0.8 0.15 350));
  --glow:.38;--grain:.12;
}
html{scroll-behavior:smooth;background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Geist','Pretendard Variable',Pretendard,system-ui,sans-serif;-webkit-font-smoothing:antialiased;word-break:keep-all;transition:background .4s,color .4s}
a{color:inherit;text-decoration:none}
a:hover{color:var(--blue)}
a.hv-w:hover{color:#fff;filter:brightness(1.08)}
a.hv-d:hover{color:#0c0e12;filter:brightness(1.06)}
::selection{background:var(--lime);color:#0c0e12}
@keyframes driftA{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(12vw,8vh) scale(1.15)}}
@keyframes driftB{0%,100%{transform:translate(0,0) scale(1.1)}50%{transform:translate(-10vw,12vh) scale(.9)}}
@keyframes driftC{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(8vw,-10vh) scale(1.2)}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes flow{from{background-position:0 0}to{background-position:20px 0}}
@keyframes flowr{from{background-position:0 0}to{background-position:-20px 0}}
@keyframes fadeIn{from{opacity:0}to{opacity:var(--glow)}}
.aurora{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(90px);opacity:var(--glow);animation-timing-function:ease-in-out;animation-iteration-count:infinite;transition:opacity .4s}
.b1{width:55vw;height:55vw;top:-15vw;left:-10vw;background:var(--g1);animation-name:driftA;animation-duration:22s}
.b2{width:45vw;height:45vw;top:10vh;right:-12vw;background:var(--g3);animation-name:driftB;animation-duration:26s}
.b3{width:40vw;height:40vw;bottom:-12vw;left:20vw;background:var(--g2);animation-name:driftC;animation-duration:24s}
.b4{width:35vw;height:35vw;bottom:5vh;right:10vw;background:var(--g4);animation-name:driftA;animation-duration:30s;animation-direction:reverse}
.grain{position:absolute;inset:0;opacity:var(--grain);mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.js [data-reveal]{opacity:0;transform:translateY(32px) scale(.985);filter:blur(6px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1),filter .9s}
.js [data-reveal].in{opacity:1;transform:none;filter:none}
@media (max-width:819px){[data-sticky]{position:static !important}}
@media (prefers-reduced-motion:reduce){.blob{animation:none}.js [data-reveal]{opacity:1;transform:none;filter:none;transition:none}}
