*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#1c1916;--bg-alt:#211e1a;--fg:#f5f0e8;--t1:#f5f0e8;--t2:#f5f0e88c;--t3:#f5f0e861;--t4:#f5f0e833;--accent:#e8633a;--muted:#8a8070;--pad:3rem;--section:10rem;--rule:#f5f0e817;--serif:"DM Serif Display", Georgia, serif;--mono:"DM Mono", monospace;--sans:"DM Sans", system-ui, sans-serif}[data-theme=light]{--bg:#f5f0e8;--bg-alt:#ece7de;--fg:#1c1916;--t1:#1c1916;--t2:#1c1916a6;--t3:#1c191680;--t4:#1c19164d;--accent:#c44d1f;--muted:#5a5040;--rule:#1c19161f}html{scroll-behavior:smooth;overflow-x:hidden}body{background:var(--bg);color:var(--fg);font-family:var(--sans);overflow-x:hidden}body,nav,section,footer{transition:background-color .3s,color .3s,border-color .3s}.cursor{background:var(--accent);pointer-events:none;z-index:9999;mix-blend-mode:difference;width:10px;height:10px;transition:transform .15s;position:fixed;top:0;left:0}.cursor.big{transform:scale(6)}body:has(.cursor){cursor:none}@media (hover:none){.cursor{display:none}body{cursor:auto}}nav{z-index:100;padding:1.5rem var(--pad);justify-content:space-between;align-items:center;transition:color .3s;display:flex;position:fixed;top:0;left:0;right:0}.nav-logo{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--fg);opacity:.7;font-size:11px;text-decoration:none;transition:opacity .2s}.nav-logo:hover{opacity:1}.nav-links{align-items:center;gap:2rem;display:flex}.nav-links a{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--fg);opacity:.45;font-size:11px;text-decoration:none;transition:opacity .2s,color .3s}.nav-links a:hover,.nav-links a.active{opacity:1}.theme-toggle{background:var(--rule);border:.5px solid var(--rule);width:52px;height:28px;cursor:inherit;flex-shrink:0;padding:0;transition:background .3s,border-color .3s;position:relative}.theme-toggle:hover{border-color:var(--fg)}.theme-toggle:before{content:"";background:var(--fg);width:20px;height:20px;transition:transform .4s cubic-bezier(.34,1.56,.64,1),background .3s;position:absolute;top:3px;left:3px}[data-theme=light] .theme-toggle:before{transform:translate(24px)}.theme-toggle .icon-sun,.theme-toggle .icon-moon{pointer-events:none;width:12px;height:12px;transition:opacity .2s;position:absolute;top:50%}.theme-toggle .icon-moon{color:var(--bg);opacity:1;left:7px;transform:translateY(-50%)}.theme-toggle .icon-sun{color:var(--fg);opacity:.4;right:7px;transform:translateY(-50%)}[data-theme=light] .theme-toggle .icon-moon{opacity:.4;color:var(--fg)}[data-theme=light] .theme-toggle .icon-sun{opacity:1;color:var(--bg)}footer{background:var(--bg);border-top:.5px solid var(--rule)}.footer-bar{padding:3rem var(--pad);flex-direction:column;gap:1rem;display:flex}.footer-location{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--t3);font-size:11px}.footer-location .accent{color:var(--accent)}.footer-contact{gap:2rem;display:flex}.footer-contact a{font-family:var(--mono);letter-spacing:.1em;color:var(--fg);opacity:.45;align-items:center;gap:3px;font-size:11px;text-decoration:none;transition:opacity .2s,color .2s;display:inline-flex}.footer-contact a:hover{opacity:1;color:var(--accent)}.footer-contact a:after{content:"↗";font-family:var(--mono);color:var(--accent);opacity:0;vertical-align:baseline;font-size:16px;line-height:1;transition:opacity .2s,transform .4s cubic-bezier(.34,1.56,.64,1);display:inline-block;transform:translate(-4px)translateY(4px)}.footer-contact a:hover:after{opacity:1;transform:translate(0)translateY(0)}.cv-download{font-family:var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--fg);opacity:.45;align-items:center;gap:3px;font-size:11px;text-decoration:none;transition:opacity .2s,color .2s;display:inline-flex}.cv-download:hover{opacity:1;color:var(--accent)}.cv-download:before{content:"";background-color:currentColor;flex-shrink:0;width:11px;height:11px;margin-right:8px;display:inline-block;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpolyline points='7 10 12 15 17 10'/%3E%3Cline x1='12' y1='15' x2='12' y2='3'/%3E%3C/svg%3E");mask-size:contain;mask-repeat:no-repeat}.cv-download:after{content:"↓";font-family:var(--mono);color:var(--accent);opacity:0;font-size:16px;line-height:1;transition:opacity .2s,transform .4s cubic-bezier(.34,1.56,.64,1);display:inline-block;transform:translateY(-4px)}.cv-download:hover:after{opacity:1;transform:translateY(0)}@media (width<=780px){:root{--pad:1.5rem}nav{padding-left:1.5rem;padding-right:1.5rem}}@media (width<=480px){:root{--pad:1.5rem}.footer-bar{flex-direction:column;gap:1rem;padding:2rem 1.5rem}.footer-contact{flex-wrap:wrap;gap:1rem}}
