*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0B1220;--surface: #111b2e;--border: #1A2438;--teal: #2FA89B;--teal-dim: #2FA89B55;--text: #E6EDF5;--text-dim: #8FA1B8;--text-bright: #E6EDF5;--mono: "DM Mono", monospace;--serif: "Jost", sans-serif}html{scroll-behavior:smooth;background-color:#0b1220}body{background:var(--bg);color:var(--text);font-family:var(--serif);font-size:18px;line-height:1.7;min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:60px 60px;opacity:.4;pointer-events:none;z-index:0}.site-wrap{position:relative;z-index:1;min-height:100vh}header{position:sticky;top:0;z-index:100;background:#0b1220eb;backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:0 clamp(1.5rem,5vw,4rem);display:flex;align-items:center;justify-content:space-between;height:64px;gap:1rem}.logo{font-family:var(--mono);font-size:1rem;font-weight:500;color:var(--teal);letter-spacing:.08em;text-decoration:none;display:flex;align-items:center;gap:10px;flex-shrink:0}.header-right{display:flex;align-items:center;gap:.5rem}nav{display:flex;gap:.25rem}nav a{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);text-decoration:none;padding:.4rem .9rem;border:1px solid transparent;border-radius:2px;transition:color .2s,border-color .2s}nav a:hover{color:var(--teal);border-color:var(--teal-dim)}.lang-switch{display:flex;align-items:center;gap:2px;margin-left:.5rem;border-left:1px solid var(--border);padding-left:.75rem}.lang-btn{font-family:var(--mono);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:.3rem .5rem;border-radius:2px;transition:color .2s}.lang-btn:hover{color:var(--teal)}.lang-btn.active{color:var(--teal);font-weight:500}.lang-sep{color:var(--border);font-family:var(--mono);font-size:.65rem}.lang-nl,.lang-en{display:none}[data-active-lang=nl] .lang-nl,[data-active-lang=en] .lang-en{display:revert}span.lang-nl,span.lang-en{display:none}[data-active-lang=nl] span.lang-nl,[data-active-lang=en] span.lang-en{display:inline}.hero{padding:clamp(5rem,12vw,10rem) clamp(1.5rem,5vw,4rem) clamp(4rem,8vw,7rem);max-width:1100px;margin:0 auto}.hero-label{font-family:var(--mono);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--teal);margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem;opacity:0;animation:fadeUp .6s .1s forwards}.hero-label:before{content:"";display:block;width:2rem;height:1px;background:var(--teal)}h1{font-family:var(--serif);font-size:clamp(3rem,8vw,6.5rem);font-weight:300;line-height:1.05;color:var(--text-bright);letter-spacing:-.02em;margin-bottom:2rem;opacity:0;animation:fadeUp .7s .2s forwards}h1 em{font-style:italic;color:var(--teal)}.hero-sub{font-size:1.15rem;font-weight:300;color:var(--text);max-width:560px;margin-bottom:3rem;opacity:0;animation:fadeUp .7s .35s forwards}.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;opacity:0;animation:fadeUp .7s .5s forwards}.btn{font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;padding:.85rem 2rem;border-radius:2px;transition:all .2s;display:inline-block}.btn-primary{background:var(--teal);color:#0a1a18;border:1px solid var(--teal);font-weight:500}.btn-primary:hover{background:transparent;color:var(--teal)}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-ghost:hover{border-color:var(--teal);color:var(--teal)}hr.divider{border:none;border-top:1px solid var(--border);margin:0;position:relative;z-index:1}section{padding:clamp(4rem,8vw,7rem) clamp(1.5rem,5vw,4rem);max-width:1100px;margin:0 auto}.section-label{font-family:var(--mono);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--teal);margin-bottom:1rem;display:flex;align-items:center;gap:.75rem}.section-label:before{content:"";display:block;width:1.5rem;height:1px;background:var(--teal)}h2{font-family:var(--serif);font-size:clamp(2rem,4vw,3rem);font-weight:300;color:var(--text-bright);line-height:1.1;margin-bottom:1.5rem}h3{font-family:var(--serif);font-size:1.5rem;font-weight:300;color:var(--text-bright);margin-bottom:.75rem}p{color:var(--text);font-weight:300;margin-bottom:1.2rem;max-width:680px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}.skills-stack{margin-top:2rem}.skills-stack h4{font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);margin-bottom:1rem}.skill-tags{display:flex;flex-wrap:wrap;gap:.5rem}.skill-tag{font-family:var(--mono);font-size:.72rem;color:var(--teal);border:1px solid var(--teal-dim);padding:.3rem .7rem;border-radius:2px}.experience-list{list-style:none;margin-top:1rem}.experience-list li{font-family:var(--mono);font-size:.8rem;color:var(--text-dim);padding:.6rem 0;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:.75rem}.experience-list li:before{content:"→";color:var(--teal)}.photo-placeholder{width:70%;aspect-ratio:3/4;background:var(--surface);border:1px solid var(--border);border-radius:3px;overflow:hidden;margin-bottom:2rem}.photo-placeholder img{width:100%;height:100%;object-fit:cover}.portfolio-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:2.5rem}.portfolio-card{background:var(--surface);border:1px solid var(--border);border-radius:3px;overflow:hidden;transition:border-color .2s,transform .2s;text-decoration:none;display:block}.portfolio-card:hover{border-color:var(--teal-dim);transform:translateY(-2px)}.portfolio-card-img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;background:var(--border)}.portfolio-card-img.portrait{aspect-ratio:unset;height:220px;object-fit:contain;background:var(--surface);padding:.5rem}.portfolio-card-body{padding:1.5rem}.portfolio-card-tag{font-family:var(--mono);font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:var(--teal);margin-bottom:.5rem}.portfolio-card h3{font-size:1.2rem;margin-bottom:.5rem}.portfolio-card p{font-size:.95rem;color:var(--text-dim);margin-bottom:0;max-width:none}.portfolio-card-link{font-family:var(--mono);font-size:.72rem;color:var(--teal);margin-top:1rem;display:inline-flex;align-items:center;gap:.3rem;letter-spacing:.08em}.portfolio-card-link:after{content:"→"}.tech-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.tech-tag{font-family:var(--mono);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);border:1px solid var(--border);padding:.2rem .5rem;border-radius:2px}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}.social-links{display:flex;gap:1rem;margin-top:1.5rem}.social-link{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);text-decoration:none;padding:.5rem 1rem;border:1px solid var(--border);border-radius:2px;transition:all .2s}.social-link:hover{color:var(--teal);border-color:var(--teal-dim)}.contact-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}label{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}input,textarea{background:var(--surface);border:1px solid var(--border);color:var(--text-bright);font-family:var(--serif);font-size:1rem;padding:.75rem 1rem;border-radius:2px;outline:none;transition:border-color .2s;width:100%}input:focus,textarea:focus{border-color:var(--teal)}textarea{resize:vertical;min-height:130px}.form-submit{display:flex;gap:1rem;margin-top:.5rem}button[type=submit]{font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;background:var(--teal);color:#0a1a18;border:1px solid var(--teal);padding:.85rem 2rem;border-radius:2px;cursor:pointer;font-weight:500;transition:all .2s}button[type=submit]:hover{background:transparent;color:var(--teal)}button[type=reset]{font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;background:transparent;color:var(--text-dim);border:1px solid var(--border);padding:.85rem 1.5rem;border-radius:2px;cursor:pointer;transition:all .2s}button[type=reset]:hover{color:var(--text);border-color:var(--text-dim)}footer{border-top:1px solid var(--border);padding:2rem clamp(1.5rem,5vw,4rem);display:flex;justify-content:space-between;align-items:center;position:relative;z-index:1}footer p{font-family:var(--mono);font-size:.7rem;color:var(--text-dim);letter-spacing:.08em;margin:0;max-width:none}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.project-hero{padding:clamp(4rem,10vw,8rem) clamp(1.5rem,5vw,4rem) clamp(3rem,6vw,5rem);max-width:1100px;margin:0 auto}.back-link{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);text-decoration:none;display:inline-flex;align-items:center;gap:.5rem;margin-bottom:3rem;transition:color .2s}.back-link:before{content:"←"}.back-link:hover{color:var(--teal)}.project-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}.project-body{display:grid;grid-template-columns:2fr 1fr;gap:4rem;align-items:start;padding:0 clamp(1.5rem,5vw,4rem);max-width:1100px;margin:0 auto;padding-bottom:clamp(4rem,8vw,7rem)}.project-body h3{font-family:var(--mono);font-size:.68rem;letter-spacing:.15em;text-transform:uppercase;color:var(--teal);margin-bottom:1rem;margin-top:2.5rem}.project-body h3:first-child{margin-top:0}.project-sidebar h4{font-family:var(--mono);font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);margin-bottom:.75rem;margin-top:2rem}.project-sidebar h4:first-child{margin-top:0}.project-image-full{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;background:var(--border)}@media(max-width:768px){nav a{padding:.4rem;font-size:.62rem}.about-grid,.contact-grid,.project-body{grid-template-columns:1fr;gap:2.5rem}.portfolio-grid,.form-row{grid-template-columns:1fr}}@media(max-width:480px){nav{display:none}.hero-actions{flex-direction:column}.btn{text-align:center}}
