:root{--bg:#080f24;--bg-grad-1:#080f24;--bg-grad-2:#0c1735;--bg-grad-3:#080f24;--surface:#0f1f45;--surface-2:#10254f;--text:#e8eeff;--muted:#b5c0e0;--line:#1e3568;--line-soft:#172d5a;--brand:#2563eb;--brand-2:#22d3ee;--accent:#22d3ee;--card:#ffffff;--card-line:#e6ecff;--radius:16px;--shadow:0 8px 28px rgba(5,9,24,.4);--font:"Inter", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.container{max-width:1100px;margin:0 auto;padding:0 24px}.header{position:sticky;top:0;z-index:50;background:#080f24bf;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft)}.header__row{height:60px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#eaf2ff}.brand-logo{height:28px;width:auto;display:block;flex-shrink:0}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-line-main{font-weight:800;letter-spacing:.2px;font-size:17px}.brand-line-sub{font-size:10px;text-transform:uppercase;letter-spacing:.22em;color:#7a9bcc}.nav--desktop{display:flex;gap:6px;align-items:center;font-size:15px}.nav--desktop a:not(.btn),.aslink{text-decoration:none;color:#a8bfe0;background:none;border:0;padding:6px 12px;cursor:pointer;font:inherit;border-radius:8px;transition:color .15s,background .15s}.nav--desktop a:not(.btn):hover,.aslink:hover{color:#fff;background:#ffffff0f}.btn--sm{padding:7px 16px!important;font-size:13px!important;border-radius:8px!important}.nav-toggle{display:none;width:40px;height:36px;border:1px solid var(--line);background:#ffffff0d;border-radius:10px;align-items:center;justify-content:center;flex-direction:column;gap:4px;cursor:pointer}.nav-toggle .bar{display:block;width:18px;height:2px;background:#e6ecff;border-radius:2px;transition:opacity .2s}.header.is-open .nav-toggle .bar:nth-child(2){opacity:.4}.nav-mobile{display:none;background:#080e20f5;border-bottom:1px solid var(--line-soft)}.nav-mobile a,.nav-mobile .aslink{display:block;padding:14px 20px;text-decoration:none;color:#dce8ff;border-top:1px solid var(--line-soft);background:none;border:0;text-align:left;width:100%;font-size:15px;font:inherit;cursor:pointer}.nav-mobile a:hover,.nav-mobile .aslink:hover{background:#ffffff0d}@media (max-width:860px){.nav--desktop{display:none}.nav-toggle{display:inline-flex}.header.is-open .nav-mobile{display:block}.brand-logo{height:24px}}.section{padding:80px 0;scroll-margin-top:76px}.section h3{font-size:28px;font-weight:800;letter-spacing:-.3px;color:#fff;margin:0 0 8px}.section-subtitle{color:var(--muted);font-size:16px;margin:0 0 36px;line-height:1.6}.hero{position:relative;overflow:hidden;padding:80px 0 140px;min-height:60vh;display:flex;align-items:center}.hero-glow{position:absolute;top:-10%;left:50%;transform:translate(-50%);width:900px;height:600px;background:radial-gradient(ellipse at center,rgba(37,99,235,.22) 0%,rgba(34,211,238,.08) 40%,transparent 70%);pointer-events:none;animation:hero-pulse 6s ease-in-out infinite}@keyframes hero-pulse{0%,to{opacity:.8;transform:translate(-50%) scale(1)}50%{opacity:1;transform:translate(-50%) scale(1.05)}}.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 16px 6px 10px;border-radius:999px;background:#22d3ee14;border:1px solid rgba(34,211,238,.22);color:#7fedd8;font-size:13px;font-weight:600;letter-spacing:.3px;margin-bottom:24px}.hero-badge__dot{width:8px;height:8px;border-radius:50%;background:#22d3ee;box-shadow:0 0 8px #22d3eecc;animation:dot-pulse 2s ease-in-out infinite}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.hero .container{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center}.hero h1{margin:0 0 16px;font-size:58px;line-height:1.05;text-align:center;font-weight:900;letter-spacing:-.8px;color:#f0f6ff}.hero h1 .muted{color:#c8d8f8;font-weight:700}.hero h1 .accent{background:linear-gradient(100deg,#3b82f6,#22d3ee 55%,#a78bfa);-webkit-background-clip:text;background-clip:text;color:transparent}.hero>.container>p{text-align:center;color:#8aa8d4;font-size:18px;line-height:1.65;max-width:500px;margin:0 0 36px}.hero .cta{display:flex;gap:14px;justify-content:center;align-items:center;flex-wrap:wrap}.scroll-indicator{position:absolute;bottom:28px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;animation:scroll-bounce 2s ease-in-out infinite;z-index:2}.scroll-indicator__text{font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#6a8ab8}.scroll-indicator__line{width:1px;height:32px;background:linear-gradient(to bottom,#2563eb,#22d3ee);border-radius:1px}@keyframes scroll-bounce{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(6px)}}.btn{display:inline-flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-radius:12px;padding:13px 24px;font-weight:700;cursor:pointer;font-size:15px;font-family:var(--font);text-decoration:none;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;white-space:nowrap}.btn.primary{background:linear-gradient(135deg,#2563eb,#1d50c8);color:#fff;border-color:#2563eb99;box-shadow:0 4px 18px #2563eb66,inset 0 1px #ffffff1f}.btn.primary:hover{transform:translateY(-2px);box-shadow:0 8px 28px #2563eb8c,inset 0 1px #ffffff1f}.btn.secondary{background:#22d3ee12;color:#a8e8f5;border:1px solid rgba(34,211,238,.28);box-shadow:inset 0 1px #ffffff0a}.btn.secondary:hover{transform:translateY(-2px);background:#22d3ee1f;color:#e0f9ff;border-color:#22d3ee73}.about{display:grid;grid-template-columns:440px 1fr;gap:48px;align-items:center}.about .photo{width:100%;height:300px;background:#0e1b3d;border-radius:20px;overflow:hidden;box-shadow:0 20px 48px #00000080;border:1px solid var(--line-soft)}.about .photo img{width:100%;height:100%;object-fit:cover;display:block}.about h3{margin:0 0 12px}.about p{margin:10px 0;color:var(--muted);line-height:1.75;font-size:16px}.block{background:linear-gradient(180deg,#0f1f5080,#0c173a80);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.portfolio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}.card{background:var(--card);color:#0b1220;border:1px solid var(--card-line);border-radius:var(--radius);overflow:hidden;box-shadow:0 6px 24px #03061233;transition:transform .2s ease,box-shadow .2s ease;will-change:transform}.card:hover{transform:translateY(-4px);box-shadow:0 16px 40px #0306124d}.card .thumb{position:relative;height:190px;overflow:hidden;border-bottom:1px solid var(--card-line);background-size:cover;background-position:center 35%;background-repeat:no-repeat}.card .thumb:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#ffffff4d,#ffffff14 45%,#0b1430bf)}.card.wike .thumb{background-image:url(/images/portfolio/Wike-forside.jpg);background-position:center 40%}.card.stall .thumb{background-image:url(/images/portfolio/SL-forside.jpg);background-position:center 42%}.card.github .thumb{background:linear-gradient(180deg,#02243f,#0f2f4f 60%,#0e1c3e)}.card .thumb img{position:relative;z-index:1;max-width:80%;max-height:80%;object-fit:contain;display:block;margin:auto;filter:drop-shadow(0 4px 16px rgba(0,0,0,.4))}.card.wike .thumb img,.card.stall .thumb img{display:none}.card .body{background:#fff;padding:18px 18px 16px}.card .title{font-weight:800;margin:0 0 6px;letter-spacing:.1px;color:#0b1220;font-size:15px}.card .text{color:#4b5563;font-size:14px;line-height:1.55;margin:0 0 12px}.badges{display:flex;gap:6px;flex-wrap:wrap}.badge{font-size:11.5px;padding:4px 9px;border:1px solid #e6ecff;border-radius:999px;background:#f8fbff;color:#334155;font-weight:700}.badge--react{background:#e8f0ff;color:#1d4ed8;border-color:#cfe1ff}.badge--js{background:#fff6cc;color:#b45309;border-color:#fde68a}.badge--next{background:#fee7e3;color:#9a3412;border-color:#fecaca}.badge--wp{background:#e6f6ff;color:#0369a1;border-color:#bae6fd}.badge--html{background:#ffe7e1;color:#b91c1c;border-color:#fecaca}.badge--css{background:#e7f0ff;color:#1e3a8a;border-color:#bfdbfe}.card-link{display:block;color:inherit;text-decoration:none;cursor:pointer}.card-link:focus-visible{outline:2px solid #93c5fd;outline-offset:3px;border-radius:var(--radius)}.tech-section{position:relative;overflow:hidden;padding:80px 0;color:#fff;background:linear-gradient(135deg,#050d24,#0a1840,#071530)}.tech-section:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#080f24b3,#080f24cc);z-index:1;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}.tech-bg{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;filter:brightness(.5) saturate(1.3)}.techlist{display:flex;flex-wrap:wrap;gap:24px 32px;justify-content:center;padding:28px 0 8px}.techitem{width:88px;display:flex;flex-direction:column;align-items:center;gap:8px;transition:transform .2s ease}.techitem:hover{transform:translateY(-3px)}.techitem img{height:34px;width:auto;object-fit:contain;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}.techitem span{font-size:11.5px;color:#c8dcf4;text-align:center;font-weight:500}.tech-section h3{color:#fff!important;font-size:26px!important}.cert-group{margin-bottom:48px}.cert-group:last-child{margin-bottom:0}.cert-group-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin-bottom:18px;padding-bottom:10px;border-bottom:1px solid var(--line-soft)}.cert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.cert-card{background:#0f1f4599;border:1px solid var(--line-soft);border-radius:14px;padding:20px 18px;display:flex;align-items:center;gap:16px;transition:transform .18s ease,border-color .18s ease}.cert-card:hover{transform:translateY(-2px);border-color:var(--line)}.cert-card--progress{border-color:#fbbf2440;background:#fbbf240a}.cert-badge-wrap{flex-shrink:0;width:64px;height:64px}.cert-badge-img{width:64px;height:64px;object-fit:contain;border-radius:8px}.cert-badge-fallback{width:64px;height:64px;border-radius:10px;background:#2563eb26;border:1px solid rgba(37,99,235,.3);align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#93c5fd;text-align:center;line-height:1.2;padding:4px}.cert-info{flex:1;min-width:0}.cert-name{font-size:14px;font-weight:700;color:#e8eeff;line-height:1.35;margin-bottom:4px}.cert-issuer{font-size:12px;color:var(--muted);margin-bottom:6px}.cert-tags-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:2px}.cert-tags-list li{font-size:12px;color:#8aa4cc;padding-left:12px;position:relative;line-height:1.5}.cert-tags-list li:before{content:"·";position:absolute;left:2px;color:var(--accent);font-weight:700}.cert-tag{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;letter-spacing:.3px}.cert-tag--done{background:#22c55e1a;color:#86efac;border:1px solid rgba(34,197,94,.25)}.cert-tag--progress{background:#fbbf241a;color:#fde68a;border:1px solid rgba(251,191,36,.25)}@media (max-width:900px){.cert-grid{grid-template-columns:1fr 1fr}}@media (max-width:560px){.cert-grid{grid-template-columns:1fr}}.footer-hero{background:linear-gradient(180deg,#0a1428 0%,var(--bg) 100%);border-top:1px solid var(--line-soft);color:#dfe7ff}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;padding:48px 0 32px}.footer-title{font-size:19px;font-weight:800;color:#22d3ee;margin-bottom:10px;letter-spacing:-.1px}.footer-text{color:var(--muted);margin:0 0 16px;max-width:500px;line-height:1.7;font-size:15px}.footer-social{display:flex;gap:12px;align-items:center;margin-bottom:14px}.footer-social a{display:inline-flex;width:40px;height:40px;border-radius:10px;background:#ffffff0d;border:1px solid var(--line);align-items:center;justify-content:center;transition:transform .15s,background .15s}.footer-social a:hover{transform:translateY(-2px);background:#ffffff1a}.footer-social img{height:20px;width:auto}.footer-col-title{font-weight:800;color:#22d3ee;margin-bottom:12px;font-size:15px;letter-spacing:.4px;text-transform:uppercase}.footer-contact{justify-self:end}.footer-contact-row{display:flex;align-items:center;gap:10px;padding:10px 0;color:#c8d8f4;border-bottom:1px solid rgba(255,255,255,.05)}.footer-contact-row a{color:#c8d8f4;text-decoration:none;transition:color .15s}.footer-contact-row a:hover{color:#fff}.footer-bottom{border-top:1px solid var(--line-soft);color:#566a94;font-size:13px;padding:14px 0;text-align:center;letter-spacing:.2px}@media (max-width:1100px){.about{grid-template-columns:1fr}.about .photo{height:280px}}@media (max-width:980px){.portfolio-grid{grid-template-columns:1fr 1fr}.card .thumb{height:170px}.footer-grid{grid-template-columns:1fr}.footer-contact{justify-self:start}}@media (max-width:768px){.hero{padding:60px 0 110px}.hero h1{font-size:42px;letter-spacing:-.5px}.hero>.container>p{font-size:16px}.section{padding:60px 0}}@media (max-width:640px){.hero h1{font-size:34px}.section h3{font-size:22px}.container{padding:0 16px}.portfolio-grid{grid-template-columns:1fr}.card .thumb{height:155px}.techitem{width:80px}.techitem img{height:28px}}@media (max-width:400px){.hero h1{font-size:28px}.hero .cta{flex-direction:column;width:100%}.hero .cta .btn{width:100%;text-align:center}}
