*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0B0E1A;--bg2: #111527;--bg3: #171C33;--bg4: #1E2440;--border: rgba(255,255,255,.07);--border2: rgba(255,255,255,.12);--blue: #3182F6;--blue-dark: #1A6FE8;--blue-glow: rgba(49,130,246,.25);--green: #4eff91;--yellow: #FFD166;--purple: #9B72FF;--text1: #FFFFFF;--text2: #A0A8C4;--text3: #5A6080;--radius: 16px}html{scroll-behavior:smooth}body{font-family:Noto Sans KR,sans-serif;background:var(--bg);color:var(--text1);line-height:1.6;overflow-x:hidden}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg3);border-radius:3px}nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:space-between;align-items:center;padding:0 6vw;height:64px;background:#0b0e1acc;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border)}.nav-logo{font-size:18px;font-weight:800;background:linear-gradient(135deg,#fff 40%,var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.5px;text-decoration:none;cursor:pointer}.nav-links{display:flex;gap:28px;list-style:none;align-items:center}.nav-links a,.nav-links button{color:var(--text2);text-decoration:none;font-size:13px;font-weight:500;transition:color .2s;background:none;border:none;cursor:pointer;font-family:inherit}.nav-links a:hover,.nav-links button:hover{color:#fff}.nav-links .nav-blog-link{color:var(--blue);font-weight:700}.nav-links .nav-blog-link:hover{color:#fff}#hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:120px 6vw 80px;position:relative;overflow:hidden}#hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(49,130,246,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(49,130,246,.05) 1px,transparent 1px);background-size:60px 60px;-webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,black,transparent);mask-image:radial-gradient(ellipse 80% 70% at 50% 50%,black,transparent)}#hero:after{content:"";position:absolute;top:-10%;left:50%;transform:translate(-50%);width:700px;height:700px;border-radius:50%;background:radial-gradient(circle,rgba(49,130,246,.12) 0%,transparent 65%);pointer-events:none}.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;border-radius:100px;border:1px solid rgba(49,130,246,.4);background:#3182f61a;font-size:13px;color:var(--blue);font-weight:600;margin-bottom:32px;animation:fadeInUp .6s ease both}.hero-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.hero-name{font-size:clamp(52px,9vw,96px);font-weight:900;letter-spacing:-3px;line-height:1.05;background:linear-gradient(135deg,#fff 30%,#fff9);-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:fadeInUp .7s .1s ease both;margin-bottom:12px}.hero-title{font-size:clamp(18px,3vw,26px);font-weight:600;color:var(--blue);letter-spacing:.5px;animation:fadeInUp .7s .2s ease both;margin-bottom:24px}.hero-desc{max-width:560px;font-size:clamp(15px,2vw,17px);color:var(--text2);line-height:1.8;animation:fadeInUp .7s .3s ease both;margin-bottom:48px}.hero-cta{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;animation:fadeInUp .7s .4s ease both}.btn-primary{padding:14px 32px;border-radius:12px;background:var(--blue);color:#fff;font-size:15px;font-weight:700;border:none;cursor:pointer;text-decoration:none;transition:transform .2s,box-shadow .2s,background .2s;box-shadow:0 8px 32px var(--blue-glow)}.btn-primary:hover{background:var(--blue-dark);transform:translateY(-2px);box-shadow:0 12px 40px var(--blue-glow)}.btn-ghost{padding:14px 32px;border-radius:12px;background:transparent;color:var(--text1);font-size:15px;font-weight:600;border:1px solid var(--border2);cursor:pointer;text-decoration:none;transition:transform .2s,background .2s}.btn-ghost:hover{background:var(--bg3);transform:translateY(-2px)}.hero-scroll{position:absolute;bottom:40px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--text3);font-size:12px;animation:fadeInUp .7s .8s ease both}.scroll-line{width:1px;height:48px;background:linear-gradient(to bottom,var(--blue),transparent);animation:scrollLine 2s ease-in-out infinite}@keyframes scrollLine{0%,to{opacity:.3}50%{opacity:1}}section{padding:100px 6vw}.section-label{font-size:12px;font-weight:700;letter-spacing:3px;color:var(--blue);text-transform:uppercase;margin-bottom:12px}.section-title{font-size:clamp(28px,4vw,42px);font-weight:800;letter-spacing:-1.5px;line-height:1.2;margin-bottom:16px}.section-sub{font-size:16px;color:var(--text2);max-width:540px;line-height:1.8;margin-bottom:56px}.divider{width:48px;height:3px;border-radius:2px;background:var(--blue);margin-bottom:40px}.inner{max-width:1100px;margin:0 auto}#about{background:var(--bg)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}.about-text p{font-size:17px;color:var(--text2);line-height:1.9;margin-bottom:20px}.about-text strong{color:var(--text1)}.about-info-list{margin-top:36px;display:flex;flex-direction:column;gap:14px}.info-row{display:flex;gap:16px;align-items:center;font-size:14px}.info-row .label{width:72px;color:var(--text3);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:1px;flex-shrink:0}.info-row a{color:var(--blue);text-decoration:none}.info-row a:hover{text-decoration:underline}.info-row .value{color:var(--text2)}.caps-grid{display:grid;grid-template-columns:1fr;gap:16px}.cap-card{padding:24px 28px;border-radius:var(--radius);background:var(--bg2);border:1px solid var(--border);transition:transform .3s,border-color .3s,box-shadow .3s}.cap-card:hover{transform:translateY(-4px);border-color:#3182f666;box-shadow:0 12px 40px #3182f61a}.cap-icon{width:44px;height:44px;border-radius:12px;background:#3182f626;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:16px}.cap-card h3{font-size:17px;font-weight:700;margin-bottom:8px}.cap-card p{font-size:14px;color:var(--text2);line-height:1.7}#experience{background:var(--bg2)}.exp-company-block{margin-bottom:64px}.exp-company-header{display:flex;align-items:center;gap:16px;margin-bottom:28px;padding:20px 24px;border-radius:var(--radius);background:var(--bg3);border:1px solid var(--border)}.exp-company-header .badge{padding:4px 12px;border-radius:100px;font-size:11px;font-weight:700;letter-spacing:1px}.badge-current{background:#4eff9126;color:var(--green);border:1px solid rgba(78,255,145,.3)}.badge-past{background:var(--bg4);color:var(--text3);border:1px solid var(--border)}.exp-company-header h3{font-size:20px;font-weight:800}.exp-company-header .meta{font-size:13px;color:var(--text3);margin-top:3px}.exp-company-header .period{margin-left:auto;font-size:13px;color:var(--blue);font-weight:700;white-space:nowrap}.proj-timeline{display:flex;flex-direction:column;gap:12px;padding-left:24px;border-left:2px solid var(--bg4)}.proj-item{padding:18px 22px;border-radius:14px;background:var(--bg);border:1px solid var(--border);transition:border-color .2s,transform .2s;position:relative}.proj-item:before{content:"";position:absolute;left:-30px;top:20px;width:10px;height:10px;border-radius:50%;background:var(--bg3);border:2px solid var(--blue)}.proj-item:hover{border-color:#3182f659;transform:translate(4px)}.proj-item-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;flex-wrap:wrap}.proj-item h4{font-size:15px;font-weight:700}.proj-item .period-tag{font-size:11px;color:var(--text3);background:var(--bg3);padding:3px 10px;border-radius:100px;white-space:nowrap;flex-shrink:0}.proj-item ul{padding-left:16px;display:flex;flex-direction:column;gap:4px}.proj-item ul li{font-size:13px;color:var(--text2);line-height:1.6}.proj-item .stack-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.s-tag{padding:3px 10px;border-radius:8px;background:var(--bg3);border:1px solid var(--border);font-size:11px;color:var(--text3);font-weight:500}.proj-item .link-row{margin-top:10px;display:flex;gap:10px;flex-wrap:wrap}.proj-link{font-size:12px;color:var(--blue);text-decoration:none;display:flex;align-items:center;gap:4px}.proj-link:hover{text-decoration:underline}#projects{background:var(--bg)}.proj-tabs{display:flex;gap:8px;margin-bottom:48px;flex-wrap:wrap}.tab-btn{padding:8px 20px;border-radius:100px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-family:inherit}.tab-btn.active{background:var(--blue);color:#fff;border-color:var(--blue)}.proj-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px}.proj-card{border-radius:20px;padding:32px;background:var(--bg2);border:1px solid var(--border);transition:transform .3s,border-color .3s,box-shadow .3s;display:flex;flex-direction:column;gap:16px}.proj-card:hover{transform:translateY(-6px);border-color:#3182f659;box-shadow:0 20px 60px #3182f61a}.proj-card.wide{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr;gap:40px}.proj-card-num{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--blue);text-transform:uppercase}.proj-card h3{font-size:20px;font-weight:800;letter-spacing:-.5px;line-height:1.3}.proj-card .org-date{font-size:12px;color:var(--text3);margin-top:2px}.proj-card p{font-size:14px;color:var(--text2);line-height:1.8}.highlights{display:flex;flex-direction:column;gap:10px}.hl{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:10px;background:#3182f60d;border:1px solid rgba(49,130,246,.1)}.hl-icon{font-size:14px;flex-shrink:0;margin-top:1px;width:26px;height:26px;background:#3182f626;border-radius:8px;display:flex;align-items:center;justify-content:center}.hl-text{font-size:13px;color:var(--text2);line-height:1.6}.hl-text strong{color:var(--green);display:block;font-size:11px;margin-bottom:2px;text-transform:uppercase;letter-spacing:.5px}.card-stack{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.card-stack .s-tag{font-size:12px}.card-links{display:flex;gap:10px;flex-wrap:wrap}.card-link{font-size:12px;color:var(--blue);text-decoration:none;display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:8px;border:1px solid rgba(49,130,246,.25);background:#3182f60f;transition:all .2s}.card-link:hover{background:#3182f626}.side-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.side-card{padding:28px;border-radius:16px;background:var(--bg2);border:1px solid var(--border);transition:transform .3s,border-color .3s}.side-card:hover{transform:translateY(-4px);border-color:#3182f64d}.side-card .s-num{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--purple);text-transform:uppercase;margin-bottom:10px}.side-card h3{font-size:17px;font-weight:800;margin-bottom:4px}.side-card .s-date{font-size:12px;color:var(--text3);margin-bottom:14px}.side-card p{font-size:13px;color:var(--text2);line-height:1.75;margin-bottom:14px}.side-card .learn-list{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.side-card .learn-item{font-size:12px;color:var(--text2);padding:7px 12px;background:var(--bg3);border-radius:8px;border:1px solid var(--border)}.side-card .learn-item b{color:var(--text1)}#skills{background:var(--bg2)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}.skill-group{padding:26px;border-radius:var(--radius);background:var(--bg3);border:1px solid var(--border)}.skill-group-title{font-size:12px;font-weight:700;color:var(--blue);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:18px}.skill-pills{display:flex;flex-wrap:wrap;gap:8px}.skill-pill{padding:5px 13px;border-radius:8px;font-size:13px;font-weight:500;border:1px solid var(--border);color:var(--text2);transition:all .2s}.skill-pill:hover{border-color:var(--blue);color:var(--blue);background:#3182f61a}.skill-pill.main{background:#3182f626;border-color:#3182f659;color:var(--blue)}#education{background:var(--bg)}.edu-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.edu-card{padding:30px;border-radius:var(--radius);background:var(--bg2);border:1px solid var(--border);transition:border-color .3s,transform .3s}.edu-card:hover{border-color:#3182f659;transform:translateY(-4px)}.edu-card .type{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--blue);text-transform:uppercase;margin-bottom:12px}.edu-card h3{font-size:18px;font-weight:800;margin-bottom:6px}.edu-card .meta{font-size:13px;color:var(--text3);margin-bottom:14px}.edu-card .detail{font-size:14px;color:var(--text2);line-height:1.7}.cert-list{display:flex;flex-direction:column;gap:10px}.cert-item{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-radius:10px;background:var(--bg3);border:1px solid var(--border);font-size:14px}.cert-item .cert-name{font-weight:600;font-size:13px}.cert-item .cert-year{color:var(--blue);font-weight:700;font-size:12px}#contact{background:var(--bg2);text-align:center;padding:120px 6vw}.contact-inner{max-width:600px;margin:0 auto}.contact-email{font-size:clamp(18px,3vw,28px);font-weight:800;color:var(--blue);text-decoration:none;display:inline-block;margin:24px 0 40px;transition:opacity .2s}.contact-email:hover{opacity:.8}.social-links{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}.social-btn{display:flex;align-items:center;gap:10px;padding:11px 22px;border-radius:12px;background:var(--bg3);border:1px solid var(--border);color:var(--text2);text-decoration:none;font-size:14px;font-weight:600;transition:all .2s}.social-btn:hover{border-color:#3182f666;color:#fff;transform:translateY(-2px)}footer{padding:28px 6vw;background:var(--bg);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--text3);flex-wrap:wrap;gap:8px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.fade-in{opacity:0;transform:translateY(30px);transition:opacity .7s ease,transform .7s ease}.fade-in.visible{opacity:1;transform:translateY(0)}.blog-page{min-height:100vh;padding:120px 6vw 80px}.blog-page .inner{max-width:900px;margin:0 auto}.blog-header{margin-bottom:60px}.blog-header .section-label,.blog-header .section-title{margin-bottom:12px}.blog-header .section-sub{margin-bottom:0}.blog-grid{display:flex;flex-direction:column;gap:20px}.blog-card{display:block;padding:32px;border-radius:20px;background:var(--bg2);border:1px solid var(--border);text-decoration:none;color:inherit;transition:transform .3s,border-color .3s,box-shadow .3s}.blog-card:hover{transform:translateY(-4px);border-color:#3182f659;box-shadow:0 16px 48px #3182f614}.blog-card-meta{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.blog-card-date{font-size:12px;color:var(--text3);font-weight:600}.blog-card-tags{display:flex;gap:6px;flex-wrap:wrap}.blog-tag{padding:3px 10px;border-radius:100px;font-size:11px;font-weight:600;background:#3182f61f;color:var(--blue);border:1px solid rgba(49,130,246,.2)}.blog-card-title{font-size:22px;font-weight:800;letter-spacing:-.5px;margin-bottom:10px;color:var(--text1)}.blog-card-summary{font-size:14px;color:var(--text2);line-height:1.75}.blog-empty{text-align:center;padding:80px 0;color:var(--text3);font-size:16px}.blog-post-page{min-height:100vh;padding:100px 6vw 80px}.blog-post-page .inner{max-width:760px;margin:0 auto}.blog-post-back{display:inline-flex;align-items:center;gap:8px;color:var(--text3);text-decoration:none;font-size:13px;font-weight:600;margin-bottom:48px;transition:color .2s;cursor:pointer;background:none;border:none;font-family:inherit}.blog-post-back:hover{color:var(--blue)}.blog-post-header{margin-bottom:48px;padding-bottom:32px;border-bottom:1px solid var(--border)}.blog-post-header .blog-card-meta{margin-bottom:16px}.blog-post-title{font-size:clamp(28px,5vw,48px);font-weight:900;letter-spacing:-1.5px;line-height:1.15;margin-bottom:16px}.blog-post-summary{font-size:17px;color:var(--text2);line-height:1.8}.blog-content{color:var(--text2);line-height:1.85;font-size:16px}.blog-content h1,.blog-content h2,.blog-content h3,.blog-content h4{color:var(--text1);font-weight:800;letter-spacing:-.5px;margin-top:48px;margin-bottom:16px;line-height:1.3}.blog-content h1{font-size:32px}.blog-content h2{font-size:24px;padding-bottom:8px;border-bottom:1px solid var(--border)}.blog-content h3{font-size:20px}.blog-content h4{font-size:17px}.blog-content p{margin-bottom:20px}.blog-content ul,.blog-content ol{padding-left:24px;margin-bottom:20px;display:flex;flex-direction:column;gap:6px}.blog-content li{font-size:15px}.blog-content strong{color:var(--text1);font-weight:700}.blog-content em{color:var(--text2);font-style:italic}.blog-content a{color:var(--blue);text-decoration:none}.blog-content a:hover{text-decoration:underline}.blog-content blockquote{margin:28px 0;padding:16px 24px;border-left:3px solid var(--blue);background:#3182f60f;border-radius:0 12px 12px 0;color:var(--text2);font-style:italic}.blog-content blockquote p{margin-bottom:0}.blog-content code{font-family:Fira Code,Consolas,monospace;font-size:13px;background:var(--bg3);border:1px solid var(--border);padding:2px 7px;border-radius:6px;color:var(--green)}.blog-content pre{margin:28px 0;border-radius:14px;overflow:hidden;border:1px solid var(--border)}.blog-content pre code{background:none;border:none;padding:0;color:inherit;font-size:14px}.blog-content table{width:100%;border-collapse:collapse;margin:28px 0;font-size:14px}.blog-content th,.blog-content td{padding:12px 16px;border:1px solid var(--border);text-align:left}.blog-content th{background:var(--bg3);color:var(--text1);font-weight:700}.blog-content td{background:var(--bg2)}.blog-content img{max-width:100%;border-radius:12px;margin:28px 0}.blog-content hr{border:none;border-top:1px solid var(--border);margin:40px 0}@media (max-width:900px){.about-grid{grid-template-columns:1fr}.proj-card.wide{grid-column:auto;grid-template-columns:1fr}.edu-grid{grid-template-columns:1fr}.nav-links{display:none}.exp-company-header{flex-wrap:wrap}.exp-company-header .period{margin-left:0}}@media (max-width:640px){.proj-cards,.skills-grid,.side-cards{grid-template-columns:1fr}section{padding:70px 5vw}.blog-page,.blog-post-page{padding:100px 5vw 60px}}
