:root{--bg:#f3f5f2;--surface:#fff;--ink:#0c1520;--muted:#5e6975;--line:#d7ddd8;--navy:#07111f;--navy2:#0d2034;--blue:#5fc3ff;--green:#75f0bd;--lime:#c9ff68;--radius:24px;--shadow:0 24px 70px rgba(7,17,31,.09)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.6}button,a{font:inherit}.skip-link{position:fixed;left:1rem;top:-4rem;z-index:100;background:#fff;padding:.7rem 1rem}.skip-link:focus{top:1rem}.page-grid{position:fixed;inset:0;pointer-events:none;opacity:.24;background-image:linear-gradient(rgba(12,21,32,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(12,21,32,.045) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,#000,transparent 70%)}.shell{width:min(1180px,calc(100% - 2rem));margin-inline:auto}.site-header{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;min-height:76px;padding:0 max(1rem,calc((100vw - 1180px)/2));background:rgba(243,245,242,.88);border-bottom:1px solid rgba(12,21,32,.08);backdrop-filter:blur(18px)}.brand{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--navy);color:#fff;text-decoration:none;font-weight:900;letter-spacing:-.05em}.site-header nav{display:flex;gap:1.4rem}.site-header nav a{text-decoration:none;color:var(--ink);font-size:.9rem;font-weight:700}.header-actions{display:flex;gap:.5rem}.icon-button,.menu-button{border:1px solid var(--line);background:rgba(255,255,255,.8);border-radius:999px;padding:.65rem .9rem;cursor:pointer}.menu-button{display:none}.hero{min-height:calc(100vh - 76px);display:grid;grid-template-columns:1.2fr .8fr;gap:5rem;align-items:center;padding-block:7rem}.eyebrow,.section-label{font-size:.76rem;font-weight:900;letter-spacing:.15em;text-transform:uppercase}.eyebrow{display:flex;align-items:center;gap:.55rem;color:#27435d}.status-dot{width:9px;height:9px;border-radius:50%;background:#0fb977;box-shadow:0 0 0 7px rgba(15,185,119,.13)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(3.8rem,8vw,7.4rem);line-height:.92;letter-spacing:-.075em;margin:.9rem 0 1.7rem;max-width:980px}h1 span{color:#65717d}.hero-lead{max-width:780px;font-size:clamp(1.08rem,1.9vw,1.35rem);color:var(--muted)}.hero-actions{display:flex;flex-wrap:wrap;gap:.8rem;margin:2rem 0 3rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:.7rem;padding:.9rem 1.15rem;border-radius:999px;text-decoration:none;border:1px solid transparent;font-weight:850;cursor:pointer}.button.primary{background:var(--navy);color:#fff}.button.secondary{background:rgba(255,255,255,.6);border-color:var(--line);color:var(--ink)}.hero-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;border-top:1px solid var(--line);padding-top:1.4rem}.hero-facts div{display:flex;flex-direction:column}.hero-facts strong{font-size:1.05rem}.hero-facts span{color:var(--muted);font-size:.84rem}.ops-panel{background:linear-gradient(150deg,var(--navy2),#07111f);color:#eaf5ff;border-radius:30px;padding:1.2rem;box-shadow:0 30px 80px rgba(7,17,31,.28);transform:rotate(1deg)}.panel-title,.panel-footer{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:#97abc1}.live-pill{color:#07261c;background:var(--green);padding:.25rem .55rem;border-radius:999px;font-weight:900}.ops-row{display:grid;grid-template-columns:1fr auto 10px;align-items:center;gap:1rem;padding:1.25rem .35rem;border-bottom:1px solid rgba(255,255,255,.1)}.ops-row span{color:#8fa5ba;font-size:.86rem}.ops-row b{font-size:.9rem}.ops-row i{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 16px var(--green)}.panel-footer{padding:.9rem .35rem .1rem}.section{padding-block:7rem}.section-label{color:#52616f;margin-bottom:2rem}.section-label.light{color:#9db1c5}.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:5rem}.intro h2,.section-heading h2,.timeline-section h2{font-size:clamp(2.5rem,5vw,5rem);line-height:1;letter-spacing:-.055em}.prose{font-size:1.15rem;color:var(--muted);max-width:620px}.role-section{background:var(--navy);color:#fff}.role-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:6rem}.role-date{color:var(--green);font-weight:800}.role-heading h2{font-size:clamp(3rem,6vw,6rem);line-height:.92;letter-spacing:-.06em;margin-bottom:1rem}.role-company{color:#a6b7c8;font-size:1.3rem}.role-summary{font-size:1.25rem;color:#c4d0dc;max-width:700px}.responsibility-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.12);margin:2rem 0}.responsibility-grid article{background:var(--navy);padding:1.5rem}.responsibility-grid article span{color:var(--green);font-size:.75rem;font-weight:900}.responsibility-grid h3{margin:.5rem 0}.responsibility-grid p{color:#9db1c5;font-size:.9rem}.role-tech,.skill-tags,.modal-tech{display:flex;flex-wrap:wrap;gap:.6rem}.role-tech span,.modal-tech span{border:1px solid rgba(255,255,255,.18);padding:.5rem .75rem;border-radius:999px;color:#cbd7e2;font-size:.82rem}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:3rem;margin-bottom:3rem}.section-heading>p{max-width:430px;color:var(--muted)}.topology{position:relative;min-height:430px;border:1px solid var(--line);border-radius:30px;background:rgba(255,255,255,.65);overflow:hidden;box-shadow:var(--shadow)}.topology-lines{position:absolute;inset:20px;width:calc(100% - 40px);height:calc(100% - 40px)}.topology-lines path{fill:none;stroke:#9fb0b4;stroke-width:2;stroke-dasharray:7 8;animation:dash 20s linear infinite}.topology-lines circle{fill:var(--blue);filter:drop-shadow(0 0 8px var(--blue))}@keyframes dash{to{stroke-dashoffset:-300}}.node{position:absolute;width:155px;padding:1rem;border:1px solid var(--line);border-radius:18px;background:#fff;text-align:left;box-shadow:0 12px 30px rgba(7,17,31,.08);cursor:pointer;transition:.2s}.node:hover,.node.active{transform:translateY(-4px);border-color:#76bce6}.node b,.node span{display:block}.node span{font-size:.76rem;color:var(--muted)}.internet{left:5%;top:42%}.tunnel{left:31%;top:42%}.nginx{left:67%;top:12%}.dns{left:67%;top:42%}.vpn{left:67%;top:72%}.host{right:3%;top:42%}.node-detail{position:absolute;left:31%;bottom:1.2rem;max-width:330px;font-size:.84rem;color:var(--muted)}.projects-section{background:#e9eeeb}.filters{display:flex;gap:.5rem;flex-wrap:wrap}.filter{border:1px solid #cbd4cd;background:transparent;border-radius:999px;padding:.55rem .85rem;cursor:pointer;font-weight:800}.filter.active{background:var(--navy);color:#fff}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.project-card{min-height:310px;display:flex;flex-direction:column;padding:1.5rem;border:1px solid #d2d9d3;background:#f7f9f7;border-radius:24px;cursor:pointer;transition:.25s}.project-card:hover{transform:translateY(-7px);box-shadow:var(--shadow)}.project-card.featured{grid-column:span 2;background:var(--navy);color:#fff}.project-card.hidden{display:none}.project-top,.project-meta{display:flex;justify-content:space-between;align-items:center}.project-top{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:#738079}.featured .project-top{color:#9db1c5}.project-card h3{font-size:2rem;line-height:1.05;letter-spacing:-.04em;margin:3.5rem 0 1rem}.project-card p{color:#65716a}.featured p{color:#b7c5d3}.project-meta{margin-top:auto;font-size:.8rem;color:#738079}.featured .project-meta{color:#9db1c5}.project-meta button{width:42px;height:42px;border:0;border-radius:50%;background:#fff;color:#07111f;cursor:pointer;font-size:1.1rem}.skill-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem}.skill-card{text-align:left;padding:1.4rem;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.55);cursor:pointer}.skill-card.active{background:var(--navy);color:#fff}.skill-card span,.skill-card b,.skill-card small{display:block}.skill-card span{font-size:.72rem;color:#72808d}.skill-card b{font-size:1.1rem;margin:.7rem 0}.skill-card small{color:#77828c}.skill-card.active small{color:#a9bacb}.skill-detail{margin-top:1rem;padding:2rem;border-radius:24px;background:#fff;display:grid;grid-template-columns:.8fr 1.2fr;gap:3rem;box-shadow:var(--shadow)}.skill-detail>div>span{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:#6c7882}.skill-detail h3{font-size:2.5rem;margin:.3rem 0}.skill-detail p{color:var(--muted)}.skill-tags{align-content:start}.skill-tags span{border:1px solid var(--line);padding:.55rem .75rem;border-radius:999px;font-size:.84rem}.timeline-section{background:#fff}.timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);margin-top:3rem}.timeline article{background:#fff;padding:1.7rem;min-height:250px}.timeline article.current{background:#e8fff4}.timeline span{font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.09em;color:#61706a}.timeline h3{font-size:1.35rem;margin:3rem 0 .8rem}.timeline p{color:var(--muted);font-size:.9rem}.contact-card{background:linear-gradient(135deg,#07111f,#102941);color:#fff;border-radius:32px;padding:4rem;display:flex;justify-content:space-between;align-items:end;gap:3rem}.contact-card h2{font-size:clamp(2.6rem,5vw,5rem);line-height:1;letter-spacing:-.055em;max-width:780px}.contact-actions{display:flex;gap:.7rem;flex-wrap:wrap}.light-button{background:#fff;color:#07111f}.outline-light{border-color:rgba(255,255,255,.3);background:transparent;color:#fff}.site-footer{display:flex;justify-content:space-between;gap:1rem;padding-block:2rem;color:#68747f;font-size:.85rem}.site-footer a{color:inherit}dialog{width:min(680px,calc(100% - 2rem));border:0;border-radius:26px;padding:2rem;background:#07111f;color:#fff;box-shadow:0 40px 100px rgba(0,0,0,.4)}dialog::backdrop{background:rgba(5,10,18,.72);backdrop-filter:blur(8px)}.modal-close{position:absolute;right:1rem;top:1rem;width:42px;height:42px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:transparent;color:#fff;font-size:1.3rem;cursor:pointer}.modal-label{color:var(--green);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em}.modal-tech{margin-top:1.5rem}.reveal{animation:fadeUp .8s ease both}@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}body.dark{--bg:#07111f;--surface:#0e1c2b;--ink:#edf5fb;--muted:#9db0c1;--line:#26384a}.dark .site-header{background:rgba(7,17,31,.9)}.dark .site-header nav a{color:#edf5fb}.dark .icon-button,.dark .menu-button{background:#102335;color:#fff;border-color:#284057}.dark .page-grid{background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px)}.dark .button.secondary,.dark .topology,.dark .skill-card{background:rgba(255,255,255,.04)}.dark .node,.dark .skill-detail{background:#102131;color:#fff}.dark .projects-section{background:#0a1724}.dark .project-card{background:#102131;color:#fff;border-color:#26384a}.dark .timeline-section,.dark .timeline article{background:#0d1b29}.dark .timeline article.current{background:#13352e}
@media(max-width:950px){.hero,.role-layout,.intro-grid{grid-template-columns:1fr}.hero{gap:3rem;padding-block:5rem}.ops-panel{transform:none}.role-layout{gap:3rem}.project-grid{grid-template-columns:1fr 1fr}.skill-grid{grid-template-columns:1fr 1fr}.timeline{grid-template-columns:1fr 1fr}.topology{min-height:650px}.topology-lines{display:none}.node{position:static;margin:1rem;width:calc(50% - 2rem);display:inline-block}.node-detail{position:static;margin:1rem}.contact-card{align-items:flex-start;flex-direction:column}.site-header nav{position:absolute;left:1rem;right:1rem;top:68px;display:none;flex-direction:column;background:var(--surface);padding:1rem;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.site-header nav.open{display:flex}.menu-button{display:inline-flex}}
@media(max-width:650px){h1{font-size:3.5rem}.section{padding-block:4.5rem}.hero-facts,.responsibility-grid,.project-grid,.skill-grid,.skill-detail,.timeline{grid-template-columns:1fr}.project-card.featured{grid-column:auto}.section-heading{align-items:flex-start;flex-direction:column}.node{width:calc(100% - 2rem)}.contact-card{padding:2rem}.site-footer{flex-direction:column}.hero{min-height:auto}}


/* Contact service */
.contact-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(320px,1.1fr);gap:clamp(2rem,5vw,5rem);align-items:start}
.contact-intro p{max-width:54ch;color:rgba(255,255,255,.76);font-size:1.02rem}
.contact-route{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:1.6rem;font-family:var(--mono);font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.76)}
.contact-route span{padding:.55rem .72rem;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.06)}
.contact-route b{color:var(--accent)}
.contact-form{display:grid;gap:1rem;padding:clamp(1rem,3vw,1.5rem);border:1px solid rgba(255,255,255,.16);border-radius:22px;background:rgba(7,14,25,.36);backdrop-filter:blur(10px)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.contact-form label{display:grid;gap:.45rem}
.contact-form label>span{font-size:.78rem;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.contact-form input,.contact-form textarea{width:100%;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(4,10,20,.55);color:#fff;padding:.9rem 1rem;font:inherit;outline:none;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.contact-form textarea{resize:vertical;min-height:145px}
.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(85,231,196,.14);background:rgba(4,10,20,.8)}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:rgba(255,255,255,.4)}
.website-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.form-footer{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:.25rem}
.contact-status{margin:0;color:rgba(255,255,255,.8);font-size:.9rem;min-height:1.4em}
.contact-status.success{color:#8ff0c9}.contact-status.error{color:#ffb0b0}
#contactSubmit[disabled]{opacity:.65;cursor:wait}
@media (max-width:820px){.contact-layout{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}}


/* Privacy consent */
.footer-links{display:flex;align-items:center;gap:1.25rem}
.footer-links button{border:0;padding:0;background:transparent;color:inherit;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.consent-banner{position:fixed;z-index:1000;left:50%;bottom:1rem;transform:translateX(-50%);width:min(1120px,calc(100% - 2rem));display:flex;justify-content:space-between;align-items:center;gap:2rem;padding:1.15rem 1.25rem;border:1px solid rgba(255,255,255,.16);border-radius:20px;background:rgba(7,17,31,.96);color:#fff;box-shadow:0 24px 80px rgba(0,0,0,.38);backdrop-filter:blur(14px)}
.consent-banner[hidden]{display:none}
.consent-copy{max-width:690px}.consent-copy strong{display:block;margin-bottom:.35rem;font-size:1rem}.consent-copy p{margin:0;color:#b8c7d5;font-size:.88rem;line-height:1.55}
.consent-actions{display:flex;align-items:center;justify-content:flex-end;gap:.65rem;flex-wrap:wrap;flex-shrink:0}
.consent-actions .button,.privacy-actions .button{border:0;cursor:pointer;white-space:nowrap}
.consent-essential{background:#fff;color:#07111f}
.consent-link{border:0;background:transparent;color:#dbe8f3;font:inherit;font-weight:800;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:.7rem}
.privacy-dialog{width:min(760px,calc(100% - 2rem));max-height:min(86vh,850px);overflow:auto}
.privacy-dialog h2{margin:.2rem 0 1.5rem}.privacy-content{display:grid;gap:1rem}.privacy-content section{padding:1rem;border:1px solid rgba(255,255,255,.14);border-radius:16px;background:rgba(255,255,255,.04)}
.privacy-content h3{margin:0 0 .4rem;font-size:1rem}.privacy-content p{margin:0;color:#b7c7d6;line-height:1.65;font-size:.9rem}
.privacy-actions{display:flex;justify-content:flex-end;gap:.7rem;flex-wrap:wrap;margin-top:1.5rem}
@media(max-width:760px){.consent-banner{align-items:flex-start;flex-direction:column;gap:1rem}.consent-actions{justify-content:stretch;width:100%}.consent-actions .button{flex:1}.site-footer .footer-links{align-items:flex-start;flex-direction:column;gap:.5rem}}
