@import"https://fonts.googleapis.com/css2?family=Caveat:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800;900&family=Playfair+Display:wght@400;500;600;700&display=swap";.header{padding:var(--space-md) 0;border-bottom:1px solid var(--color-border);position:sticky;top:0;background:var(--color-bg-primary);z-index:100}.header-content{display:flex;justify-content:space-between;align-items:center}.logo{font-family:var(--font-serif);font-size:1.75rem;font-weight:400;text-decoration:none;display:flex;align-items:center;gap:0;letter-spacing:-.02em}.logo-ship{color:var(--color-text-primary)}.logo-number{color:var(--color-highlight)}.social-links{display:flex;gap:var(--space-md);align-items:center}.social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;color:var(--color-text-primary);transition:all var(--transition-fast)}.social-link:hover{color:var(--color-highlight)}@media(max-width:768px){.header{padding:var(--space-md) 0}.logo{font-size:1.5rem}}.hero{text-align:center;padding:var(--space-2xl) 0 var(--space-xl);background:radial-gradient(ellipse 120% 100% at 50% 50%,rgba(249,115,22,.25) 0%,rgba(249,115,22,.12) 35%,rgba(249,115,22,.04) 60%,transparent 85%),var(--color-bg-primary)}.hero-content{max-width:900px;margin:0 auto}.hero-headline{margin-bottom:var(--space-lg);color:var(--color-text-primary)}.hero-headline .highlight{color:var(--color-highlight);font-style:italic}.hero-subhead{font-size:1.25rem;margin-bottom:var(--space-xl);color:var(--color-text-secondary);line-height:1.8;max-width:650px;margin-left:auto;margin-right:auto}.constraint-badges{display:flex;justify-content:center;gap:var(--space-lg);flex-wrap:wrap;margin-top:var(--space-xl)}.constraint-badge{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:transparent;border:2px solid var(--color-border-dark);font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:.875rem}.constraint-icon{font-size:1.25rem;color:var(--color-highlight)}.constraint-text{color:var(--color-text-primary)}@media(max-width:768px){.hero{padding:var(--space-xl) 0}.hero-subhead{font-size:1.125rem}.constraint-badges{flex-direction:column;align-items:center}.constraint-badge{width:100%;max-width:300px;justify-content:center}}.newsletter-signup{margin-top:var(--space-lg);margin-bottom:var(--space-lg);padding:var(--space-lg);background:radial-gradient(ellipse 70% 80% at 50% 50%,rgba(59,130,246,.4) 0%,transparent 60%),linear-gradient(135deg,#1e3a5f,#2b4a73,#1e3a5f);border:none;text-align:center}.newsletter-signup h3{margin-bottom:var(--space-sm);color:#fff;font-family:var(--font-serif);font-weight:400}.newsletter-description{margin-bottom:var(--space-lg);color:#fffc}.newsletter-form{display:flex;gap:0;max-width:600px;margin:0 auto}.newsletter-input{flex:1;border:2px solid white;background:transparent;color:#fff}.newsletter-input-name{flex:.8;border-right:1px solid rgba(255,255,255,.3)}.newsletter-input-email{flex:1.2}.newsletter-input::placeholder{color:#fff9}.newsletter-submit{flex-shrink:0;background:#fff;color:var(--color-accent);border:2px solid white}.newsletter-submit:hover{background:var(--color-highlight);color:#fff;border-color:var(--color-highlight)}.newsletter-message{margin-top:var(--space-md);font-size:.875rem}.newsletter-success{color:#86efac}.newsletter-error{color:#fca5a5}@media(max-width:768px){.newsletter-form{flex-direction:column;gap:var(--space-sm)}.newsletter-input-name,.newsletter-input-email{flex:1;border-right:2px solid white}.newsletter-submit{width:100%}}.projects-section{background:var(--color-bg-primary)}.section-header{text-align:center;margin-bottom:var(--space-2xl)}.section-label{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.15em;color:var(--color-text-muted);margin-bottom:var(--space-md)}.section-subhead{font-size:1.25rem;color:var(--color-text-secondary);margin-top:var(--space-md);max-width:600px;margin-left:auto;margin-right:auto}.projects-grid{display:flex;flex-direction:column;gap:var(--space-xl)}.newsletter-break{margin:var(--space-md) 0;padding:0}.project-card{display:flex;gap:var(--space-xl);padding:var(--space-xl);background:var(--color-bg-card);border:1px solid var(--color-border);transition:all var(--transition-normal);align-items:center;text-decoration:none;color:inherit;cursor:pointer}.project-card:hover{border-color:var(--color-highlight);color:inherit}.project-card-reverse{flex-direction:row-reverse}.project-card-upcoming{opacity:.6}.project-image{flex:0 0 320px;height:220px}.project-image-placeholder{width:100%;height:100%;background:var(--color-bg-primary);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-size:4rem;font-weight:700;color:var(--color-text-muted);font-family:var(--font-serif)}.project-content{flex:1}.project-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md);flex-wrap:wrap;gap:var(--space-sm)}.project-month{font-size:.75rem;font-weight:600;color:var(--color-highlight);text-transform:uppercase;letter-spacing:.15em;transition:color var(--transition-fast);cursor:pointer}.project-month:hover{color:#ea580c}.project-title{font-family:var(--font-serif);font-size:2rem;font-weight:400;margin-bottom:var(--space-sm)}.project-description{color:var(--color-text-secondary);margin-bottom:var(--space-md);font-size:1rem;line-height:1.6}.project-placeholder{padding:var(--space-lg) 0}.project-metrics{display:flex;gap:var(--space-md);flex-wrap:wrap;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.metric{font-size:.875rem;font-weight:600;color:var(--color-text-primary);padding:.5rem 1rem;background:var(--color-bg-primary);border:1px solid var(--color-border)}@media(max-width:968px){.project-card{flex-direction:column!important;text-align:center}.project-card-reverse{flex-direction:column!important}.project-image{flex:0 0 auto;width:100%;max-width:400px;margin:0 auto}}@media(max-width:768px){.project-card{padding:var(--space-lg)}.project-image{max-width:100%}.project-header{flex-direction:column;align-items:flex-start}}.about-section.section{background:var(--color-bg-primary);padding-top:var(--space-md)}.about-content{max-width:700px;margin:0 auto;text-align:center}.letter{background:linear-gradient(135deg,#f5ebd8,#fdf8f0,#f8edd8,#fdf8f0,#f3e6d0);padding:var(--space-xl) var(--space-xl);text-align:left;position:relative;box-shadow:0 2px 8px #f9731626,0 8px 32px #f9731633,inset 0 0 60px #f9731608;border-radius:4px 12px;transform:rotate(-.5deg)}.letter:before{content:"";position:absolute;inset:-4px;background:radial-gradient(ellipse at 10% 10%,rgba(139,90,43,.08) 0%,transparent 40%),radial-gradient(ellipse at 90% 20%,rgba(139,90,43,.06) 0%,transparent 35%),radial-gradient(ellipse at 20% 90%,rgba(139,90,43,.05) 0%,transparent 40%),radial-gradient(ellipse at 85% 85%,rgba(139,90,43,.07) 0%,transparent 35%);pointer-events:none;z-index:1;border-radius:inherit}.letter:after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");opacity:.03;pointer-events:none;border-radius:inherit}.letter p{font-family:var(--font-handwriting);font-size:1.75rem;line-height:1.5;color:#2c251d;margin-bottom:var(--space-md);position:relative;z-index:2}.letter a{color:#1e3a5f;text-decoration:underline;text-decoration-style:wavy;text-underline-offset:3px}.letter a:hover{color:var(--color-highlight)}.letter-greeting{font-size:2rem;font-weight:600;margin-bottom:var(--space-lg)}.letter-signature{margin-top:var(--space-xl);padding-top:var(--space-md)}.letter-closing{margin-bottom:var(--space-xs)}.letter-name{font-size:2.75rem;font-weight:700;margin-bottom:0}.about-ctas{display:flex;gap:var(--space-md);justify-content:center;flex-wrap:wrap;margin:var(--space-xl) 0}@media(max-width:768px){.letter{padding:var(--space-lg)}.about-ctas{flex-direction:column}.about-ctas .btn{width:100%}}.footer{padding:var(--space-xl) 0;border-top:1px solid var(--color-border);margin-top:auto;background:var(--color-bg-primary)}.footer-content{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-md)}.footer-copyright{color:var(--color-text-muted);font-size:.875rem}.footer-links{display:flex;align-items:center;gap:var(--space-md)}.footer-link{color:var(--color-text-primary);font-size:.875rem;font-weight:500;transition:color var(--transition-fast)}.footer-link:hover{color:var(--color-highlight)}.footer-separator{color:var(--color-text-muted);font-size:.875rem}@media(max-width:768px){.footer-content{flex-direction:column;text-align:center}}.back-link{display:inline-flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);color:var(--color-text-primary);font-size:.875rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;transition:color var(--transition-fast)}.back-link:hover{color:var(--color-highlight)}.project-header{margin-bottom:var(--space-2xl)}.project-month-year{font-size:.75rem;font-weight:600;color:var(--color-highlight);text-transform:uppercase;letter-spacing:.15em;margin-bottom:var(--space-md)}.project-title-section h1{margin-bottom:var(--space-md)}.project-one-liner{font-size:1.25rem;color:var(--color-text-secondary);margin-bottom:var(--space-lg);max-width:700px}.metrics-section{margin:var(--space-2xl) 0}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-lg)}.metric-card{background:var(--color-bg-card);border:1px solid var(--color-border);padding:var(--space-lg);text-align:center}.metric-value{font-size:2.5rem;font-weight:700;font-family:var(--font-serif);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.metric-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.15em}.content-section,.breakdown-section,.tech-stack-section,.lessons-section,.content-links-section{margin:var(--space-2xl) 0}.content-section h2,.breakdown-section h2,.tech-stack-section h2,.lessons-section h2,.content-links-section h2{margin-bottom:var(--space-lg)}.content-body{line-height:1.8;color:var(--color-text-secondary)}.content-body p{margin-bottom:var(--space-md)}.breakdown-table{background:var(--color-bg-card);border:1px solid var(--color-border);padding:var(--space-md)}.breakdown-row{display:flex;justify-content:space-between;padding:var(--space-md);border-bottom:1px solid var(--color-border)}.breakdown-row:last-child{border-bottom:none}.breakdown-total{font-weight:700;border-top:2px solid var(--color-text-primary);margin-top:var(--space-sm);padding-top:var(--space-lg)}.breakdown-label{color:var(--color-text-secondary)}.breakdown-value{font-weight:600;color:var(--color-text-primary)}.tech-stack-tags{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.tech-tag{padding:.5rem 1rem;background:transparent;border:1px solid var(--color-border-dark);font-size:.875rem;color:var(--color-text-primary);font-weight:500}.lessons-group{margin-bottom:var(--space-xl)}.lessons-group h3{font-size:1.25rem;margin-bottom:var(--space-md)}.lessons-group ul{list-style:none;padding:0}.lessons-group li{padding:var(--space-sm) 0;padding-left:var(--space-lg);color:var(--color-text-secondary);position:relative}.lessons-group li:before{content:"—";position:absolute;left:0;color:var(--color-highlight);font-weight:700}.content-links{display:flex;flex-direction:column;gap:var(--space-md)}.content-link{display:inline-block;padding:var(--space-md) var(--space-lg);background:transparent;border:2px solid var(--color-border-dark);transition:all var(--transition-fast);font-weight:500}.content-link:hover{background:var(--color-text-primary);color:var(--color-bg-primary)}.error-state{text-align:center;padding:var(--space-2xl) 0}@media(max-width:768px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.metric-value{font-size:1.75rem}}:root{--color-bg-primary: #F8F6F3;--color-bg-secondary: #FFFFFF;--color-bg-card: #FFFFFF;--color-bg-accent: #1E3A5F;--color-text-primary: #1A1A1A;--color-text-secondary: #4A4A4A;--color-text-muted: #7A7A7A;--color-accent: #1E3A5F;--color-accent-hover: #2B4A73;--color-highlight: #F97316;--color-highlight-light: #FFF7ED;--color-success: #059669;--color-warning: #F97316;--color-error: #DC2626;--color-border: #E5E5E5;--color-border-dark: #1A1A1A;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-serif: "Playfair Display", Georgia, serif;--font-handwriting: "Caveat", cursive;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 2rem;--space-xl: 4rem;--space-2xl: 6rem;--radius-sm: 0;--radius-md: 0;--radius-lg: 0;--transition-fast: .15s ease;--transition-normal: .25s ease}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background-color:var(--color-bg-primary);color:var(--color-text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.1;color:var(--color-text-primary);letter-spacing:-.02em}h1{font-family:var(--font-serif);font-size:clamp(3rem,8vw,5.5rem);font-weight:400;line-height:1;letter-spacing:-.03em}h2{font-family:var(--font-serif);font-size:clamp(2.5rem,5vw,4rem);font-weight:400;line-height:1.1;letter-spacing:-.02em}h3{font-size:1.75rem;font-weight:600;line-height:1.2}p{font-size:1.125rem;line-height:1.7;color:var(--color-text-secondary)}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-hover)}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--space-lg)}@media(max-width:768px){.container{padding:0 var(--space-md)}}.btn{display:inline-block;padding:1rem 2rem;font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;border-radius:0;border:2px solid var(--color-border-dark);cursor:pointer;transition:all var(--transition-normal);text-align:center}.btn-primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover{background:var(--color-highlight);border-color:var(--color-highlight);color:#fff}.btn-secondary{background:transparent;color:var(--color-text-primary);border:2px solid var(--color-border-dark)}.btn-secondary:hover{background:var(--color-text-primary);color:var(--color-bg-primary)}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:0;padding:var(--space-lg);transition:all var(--transition-normal)}.card:hover{border-color:var(--color-text-primary)}.badge{display:inline-block;padding:.5rem 1rem;font-size:.75rem;font-weight:600;border-radius:0;text-transform:uppercase;letter-spacing:.1em;border:1px solid}.badge-success{background:var(--color-success);color:#fff;border-color:var(--color-success)}.badge-warning{background:var(--color-highlight);color:#fff;border-color:var(--color-highlight)}.badge-error{background:var(--color-error);color:#fff;border-color:var(--color-error)}.badge-upcoming{background:transparent;color:var(--color-text-secondary);border-color:var(--color-border)}.section{padding:var(--space-2xl) 0}@media(max-width:768px){.section{padding:var(--space-xl) 0}}.text-center{text-align:center}.text-muted{color:var(--color-text-muted)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}input,textarea{font-family:var(--font-sans);font-size:1rem;padding:1rem;border:2px solid var(--color-border-dark);border-radius:0;background:var(--color-bg-secondary);color:var(--color-text-primary);width:100%;transition:border-color var(--transition-fast)}input:focus,textarea:focus{outline:none;border-color:var(--color-highlight)}input::placeholder,textarea::placeholder{color:var(--color-text-muted)}.grid{display:grid;gap:var(--space-lg)}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}@media(max-width:768px){.grid-2{grid-template-columns:1fr}}
