:root{--cream: #F4EFE5;--cream-2: #ECE5D6;--ink: #201C16;--ink-soft: #4A443B;--line: #DED5C2;--accent: #C1703B;--accent-soft: #E9DCC9;--card: #FFFFFF;--radius: 18px}html.dark{--cream: #17140F;--cream-2: #1E1A13;--ink: #F2EBDD;--ink-soft: #B8AE9B;--line: #342E22;--accent: #E08A4F;--accent-soft: #2A2318;--card: #1E1A13}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Inter,sans-serif;transition:background .4s ease,color .4s ease;-webkit-font-smoothing:antialiased}.serif{font-family:Fraunces,serif}.mono{font-family:JetBrains Mono,monospace}.wrap{max-width:1180px;margin:0 auto;padding:0 28px}a{color:inherit;text-decoration:none}nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--cream) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:20px 28px;max-width:1180px;margin:0 auto}.logo{font-family:Fraunces,serif;font-size:19px;font-weight:600;letter-spacing:-.02em}.logo span{color:var(--ink-soft);font-weight:400}.nav-links{display:flex;gap:34px;font-size:14.5px;color:var(--ink-soft)}.nav-links a{position:relative;padding:2px 0;transition:color .2s}.nav-links a:hover{color:var(--ink)}.nav-right{display:flex;align-items:center;gap:14px}.toggle-btn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .3s ease}.toggle-btn:hover{transform:rotate(20deg)}.toggle-btn svg{width:17px;height:17px;stroke:var(--ink)}.hero{padding:88px 0 60px}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}.eyebrow{font-size:15px;color:var(--ink-soft);margin-bottom:14px}.hero h1{font-family:Fraunces,serif;font-weight:600;font-size:clamp(42px,5.4vw,68px);line-height:1.02;letter-spacing:-.02em;margin:0 0 22px;border-left:3px solid var(--accent);padding-left:22px}.hero p.desc{font-size:18px;line-height:1.6;color:var(--ink-soft);max-width:430px;margin-bottom:34px}.cta-row{display:flex;align-items:center;gap:26px;margin-bottom:44px;flex-wrap:wrap}.btn-primary{background:var(--ink);color:var(--cream);padding:15px 26px;border-radius:12px;font-size:14.5px;font-weight:600;display:inline-flex;align-items:center;gap:9px;transition:transform .2s ease,opacity .2s ease;border:none;cursor:pointer}.btn-primary:hover{transform:translateY(-2px);opacity:.9}.link-underline{font-size:14.5px;font-weight:600;display:inline-flex;align-items:center;gap:7px;border-bottom:1px solid var(--accent);padding-bottom:3px}.socials{display:flex;gap:14px}.social-btn{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;transition:.2s}.social-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.social-btn svg{width:18px;height:18px}.hero-photo-wrap{position:relative}.hero-photo{width:100%;aspect-ratio:4/4.6;border-radius:22px;overflow:hidden;background:linear-gradient(155deg,var(--accent-soft),var(--cream-2));display:flex;align-items:center;justify-content:center;position:relative;border:1px solid var(--line)}.hero-photo .glyph{font-family:Fraunces,serif;font-size:120px;color:var(--accent);opacity:.35}.avail-card{position:absolute;left:-6%;bottom:-8%;width:78%;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:0 18px 40px -18px #00000040}.dot{width:7px;height:7px;border-radius:50%;background:#5fa86a;display:inline-block;margin-right:7px}.avail-top{font-size:12.5px;color:var(--ink-soft);display:flex;align-items:center;margin-bottom:8px}.avail-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.avail-row p{margin:0;font-size:14.5px;font-weight:500;line-height:1.35}.avail-arrow{width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--cream);flex:none;display:flex;align-items:center;justify-content:center}section{padding:96px 0;border-top:1px solid var(--line)}.tag{display:inline-flex;align-items:center;gap:8px;background:var(--accent-soft);color:var(--accent);font-size:12.5px;font-weight:700;letter-spacing:.06em;padding:7px 14px;border-radius:99px;margin-bottom:20px}.sec-title{font-family:Fraunces,serif;font-size:clamp(28px,3.4vw,40px);font-weight:600;letter-spacing:-.01em;margin:0 0 14px}.sec-desc{color:var(--ink-soft);font-size:16px;line-height:1.7;max-width:600px;margin-bottom:52px}.about-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:60px;align-items:start}.about-num{font-family:Fraunces,serif;font-size:64px;color:var(--accent-soft);font-weight:600}.about-grid p{font-size:17px;line-height:1.85;color:var(--ink-soft);margin-bottom:18px}.value-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.value-card{background:var(--card);padding:34px 26px;transition:background .25s}.value-card:hover{background:var(--accent-soft)}.value-mark{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--accent);margin-bottom:22px}.value-card h3{font-family:Fraunces,serif;font-size:19px;margin:0 0 10px;font-weight:600}.value-card p{font-size:14px;color:var(--ink-soft);line-height:1.6;margin:0}.proj-list{display:flex;flex-direction:column}.proj-row{display:grid;grid-template-columns:.55fr 1.45fr .8fr;gap:36px;align-items:center;padding:36px 0;border-top:1px solid var(--line);transition:padding .25s ease}.proj-row:hover{padding-left:14px}.proj-thumb{aspect-ratio:16/11;border-radius:14px;background:linear-gradient(150deg,var(--accent-soft),var(--cream-2));display:flex;align-items:center;justify-content:center;border:1px solid var(--line);overflow:hidden}.proj-thumb span{font-family:Fraunces,serif;font-size:15px;color:var(--accent);text-align:center;padding:0 10px}.proj-mid .kicker{font-size:12.5px;color:var(--accent);font-weight:600;letter-spacing:.05em;margin-bottom:8px;text-transform:uppercase}.proj-mid h3{font-family:Fraunces,serif;font-size:24px;font-weight:600;margin:0 0 10px}.proj-mid p{font-size:14.5px;color:var(--ink-soft);line-height:1.6;margin:0 0 14px;max-width:460px}.stack-row{display:flex;gap:8px;flex-wrap:wrap}.stack-chip{font-family:JetBrains Mono,monospace;font-size:11.5px;background:var(--cream-2);border:1px solid var(--line);padding:5px 10px;border-radius:7px;color:var(--ink-soft)}.proj-cta{justify-self:end;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;border-bottom:1px solid var(--accent);padding-bottom:3px;white-space:nowrap}.empty-state,.error-state{color:var(--ink-soft);font-size:15px;padding:24px 0}.error-state{color:#b4483a}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.skill-cat h4{font-family:Fraunces,serif;font-size:17px;margin:0 0 20px;color:var(--accent)}.skill-item{margin-bottom:16px}.skill-top{display:flex;justify-content:space-between;font-size:13.5px;margin-bottom:7px}.skill-top span:last-child{color:var(--ink-soft)}.bar-track{height:5px;background:var(--cream-2);border-radius:99px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:99px}.journal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.journal-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:28px;transition:transform .25s ease,box-shadow .25s ease}.journal-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px -20px #00000038}.journal-date{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink-soft);margin-bottom:14px}.journal-card h3{font-family:Fraunces,serif;font-size:19px;font-weight:600;margin:0 0 10px;line-height:1.3}.journal-card p{font-size:14px;color:var(--ink-soft);line-height:1.6;margin:0 0 18px}.journal-link{font-size:13.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:60px}.contact-info p{color:var(--ink-soft);font-size:16px;line-height:1.75;margin-bottom:28px;max-width:380px}.info-line{display:flex;align-items:center;gap:12px;font-size:14.5px;margin-bottom:14px;color:var(--ink-soft)}.info-line strong{color:var(--ink);font-weight:600}form{display:flex;flex-direction:column;gap:18px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin-bottom:8px;letter-spacing:.03em;text-transform:uppercase}.field input,.field textarea{width:100%;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:14px 16px;font-family:Inter,sans-serif;font-size:14.5px;color:var(--ink);outline:none;transition:border-color .2s}.field input:focus,.field textarea:focus{border-color:var(--accent)}.field textarea{resize:vertical;min-height:110px}.submit-btn{background:var(--ink);color:var(--cream);padding:15px 26px;border-radius:12px;border:none;font-size:14.5px;font-weight:600;cursor:pointer;width:fit-content;transition:opacity .2s,transform .2s}.submit-btn:hover{opacity:.9;transform:translateY(-2px)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.form-status{font-size:13.5px;margin-top:-6px}.form-status.success{color:#4c8557}.form-status.error{color:#b4483a}footer{border-top:1px solid var(--line);padding:40px 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px}.footer-inner p{font-size:13.5px;color:var(--ink-soft);margin:0}.footer-links{display:flex;gap:24px;font-size:13.5px;color:var(--ink-soft)}.footer-links a:hover{color:var(--accent)}.detail-header{padding:60px 0 40px}.back-link{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft);margin-bottom:28px}.back-link:hover{color:var(--accent)}.detail-title{font-family:Fraunces,serif;font-size:clamp(32px,4.5vw,48px);font-weight:600;margin:0 0 18px}.detail-body{font-size:16.5px;line-height:1.9;color:var(--ink-soft);white-space:pre-wrap}.detail-body h2{font-family:Fraunces,serif;color:var(--ink);margin-top:34px}@media (max-width:900px){.nav-links{display:none}.hero-grid,.about-grid,.contact-grid{grid-template-columns:1fr}.value-grid{grid-template-columns:repeat(2,1fr)}.skills-grid,.journal-grid,.proj-row{grid-template-columns:1fr}.proj-cta{justify-self:start}.hero{padding-top:44px}}
