@charset "UTF-8";:root{--clr-neutral-lighter: #fcfcfc;--clr-neutral-light: #ececec;--clr-neutral-main: #acacac;--clr-neutral-dark: #6c6c6c;--clr-neutral-darker: #3c3c3c;--clr-shadow-hover: rgba(0, 0, 0, .33)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;font-family:Open Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,sans-serif}html{height:100%;font-size:100%}body{height:100%}h1{font-size:1.75rem;font-weight:600}h2{font-size:1.5rem;font-weight:600}p{line-height:1.5}#root{display:flex;justify-content:center}.page-container{max-width:1200px;padding-left:32px;padding-right:32px;display:flex;flex-direction:column;justify-content:flex-start;gap:32px}.main-content{flex:1 1 auto;display:flex;flex-direction:column;gap:48px}.row-section{display:flex;flex-direction:row}.col-section{display:flex;flex-direction:column}.header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;margin-top:24px;margin-bottom:32px}.header-container{display:flex;flex-direction:row;align-items:center;gap:16px}.navbar ul{list-style:none;display:flex;flex-direction:row;gap:16px}#intro{display:flex;flex-direction:row;padding-bottom:48px;border-bottom:1px solid #999999}#intro .intro-text{display:flex;flex-direction:column;gap:16px;padding-right:128px}#intro .intro-img{min-height:320px;min-width:320px;background-size:contain;border-radius:50%}#about{display:flex;flex-direction:row;gap:64px;justify-content:space-between;align-items:flex-start;padding-bottom:48px;border-bottom:1px solid #999999}#projects{display:flex;flex-direction:column;gap:16px;padding-bottom:48px;border-bottom:1px solid #999999}#contact{flex-direction:row;display:flex;justify-content:space-between;align-items:center}#contact .contact-text{display:flex;flex-direction:column;gap:16px}#contact .contact-link-grp{display:flex;flex-direction:row;gap:24px}#footer{padding-bottom:32px}a,.link{color:var(--primary);text-decoration:none;transition:all .2s ease;cursor:pointer}a:hover,.link:hover{color:var(--secondary)}a.link-title,.link.link-title{font-size:1.5rem;font-weight:700;letter-spacing:-.025em;color:var(--text-primary);display:inline-flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:.375rem;position:relative;transition:all .3s ease}@supports (background-clip: text) or (-webkit-background-clip: text){a.link-title,.link.link-title{background-image:linear-gradient(135deg,var(--primary),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}}a.link-title:before,.link.link-title:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background-color:var(--primary);opacity:0;transition:opacity .2s ease}a.link-title:hover,.link.link-title:hover{transform:translateY(-1px)}a.link-title:hover:before,.link.link-title:hover:before{opacity:.05}a.link-title:after,.link.link-title:after{content:".";color:var(--accent);opacity:0;transform:translate(-4px);transition:all .3s ease}a.link-title:hover:after,.link.link-title:hover:after{opacity:1;transform:translate(0)}a.link-title img,a.link-title svg,.link.link-title img,.link.link-title svg{width:1.75rem;height:1.75rem;transition:transform .3s ease}a.link-title:hover img,a.link-title:hover svg,.link.link-title:hover img,.link.link-title:hover svg{transform:rotate(-5deg)}@media (max-width: 640px){a.link-title,.link.link-title{font-size:1.25rem}a.link-title img,a.link-title svg,.link.link-title img,.link.link-title svg{width:1.5rem;height:1.5rem}}a.link-title-minimal,.link.link-title-minimal{font-size:1.5rem;font-weight:700;color:var(--text-primary);letter-spacing:-.025em;transition:color .2s ease}a.link-title-minimal:hover,.link.link-title-minimal:hover{color:var(--primary)}a.link-underline,.link.link-underline{position:relative}a.link-underline:after,.link.link-underline:after{content:"";position:absolute;bottom:-2px;left:0;width:100%;height:2px;background-color:currentColor;transform:scaleX(0);transition:transform .2s ease;transform-origin:right}a.link-underline:hover:after,.link.link-underline:hover:after{transform:scaleX(1);transform-origin:left}a.link-subtle,.link.link-subtle{color:var(--text-secondary)}a.link-subtle:hover,.link.link-subtle:hover{color:var(--text-primary)}a.link-bold,.link.link-bold{font-weight:600}a.link-bold:hover,.link.link-bold:hover{color:var(--accent)}a.link-decorated,.link.link-decorated{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem 0;font-weight:500;color:var(--text-primary)}a.link-decorated svg,.link.link-decorated svg{width:1em;height:1em;transition:transform .2s ease}a.link-decorated:hover svg,.link.link-decorated:hover svg{transform:translate(4px)}a.link-button,.link.link-button{display:inline-block;padding:.5rem 1rem;background-color:var(--text-primary);color:var(--background);border-radius:.375rem;font-weight:500}a.link-button:hover,.link.link-button:hover{background-color:var(--text-tertiary)}a.link-button:active,.link.link-button:active{transform:translateY(1px)}a.link-ghost,.link.link-ghost{display:inline-block;padding:.5rem 1rem;border:1px solid var(--border);border-radius:.375rem;color:var(--text-primary)}a.link-ghost:hover,.link.link-ghost:hover{background-color:var(--surface);border-color:var(--primary);color:var(--primary)}a.link-card,.link.link-card{display:block;padding:1rem;border-radius:.5rem;border:1px solid var(--border);background-color:var(--background)}a.link-card:hover,.link.link-card:hover{background-color:var(--surface);border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 6px #0000001a}a.link-breadcrumb,.link.link-breadcrumb{color:var(--text-secondary)}a.link-breadcrumb:hover,.link.link-breadcrumb:hover{color:var(--primary)}a.link-breadcrumb:after,.link.link-breadcrumb:after{content:"/";margin:0 .5rem;color:var(--border)}a.link-breadcrumb:last-child:after,.link.link-breadcrumb:last-child:after{display:none}a.link-nav,.link.link-nav{display:inline-block;padding:.5rem 1rem;color:var(--text-secondary);border-radius:.375rem}a.link-nav:hover,.link.link-nav:hover{color:var(--text-primary);background-color:var(--surface)}a.link-nav.active,.link.link-nav.active{color:var(--primary);background-color:var(--surface);font-weight:500}a.link-disabled,.link.link-disabled{opacity:.5;pointer-events:none;cursor:not-allowed}a:focus-visible,.link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:2px}.website-preview{position:relative;border-radius:.75rem;background-color:var(--surface);border:1px solid var(--border);overflow:hidden;text-decoration:none;transition:transform .3s ease,box-shadow .3s ease}.website-preview:hover{transform:translateY(-4px);box-shadow:0 12px 24px #0000001a}.website-preview__image-container{position:relative;width:100%;aspect-ratio:1.7777777778;background-color:var(--surface);overflow:hidden}.website-preview__image-container:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,.2) 100%);opacity:0;transition:opacity .3s ease}.website-preview:hover .website-preview__image-container:after{opacity:1}.website-preview__image{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.website-preview:hover .website-preview__image{transform:scale(1.05)}.website-preview__image--placeholder{display:flex;align-items:center;justify-content:center;background-color:var(--surface);color:var(--text-secondary)}.website-preview__image--placeholder svg{width:3rem;height:3rem;opacity:.5}.website-preview__external-link{position:absolute;bottom:1rem;right:1rem;color:#fff;opacity:0;transform:translateY(.5rem);transition:all .3s ease;z-index:2}.website-preview:hover .website-preview__external-link{opacity:1;transform:translateY(0)}.website-preview__content{padding:1.25rem}.website-preview__info{display:flex;align-items:center;gap:.5rem}.website-preview__favicon{width:1rem;height:1rem;border-radius:50%}.website-preview__favicon--placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}.website-preview__domain{font-size:.875rem;color:var(--text-primary)}.website-preview__title{margin-top:.75rem;font-size:1.125rem;font-weight:500;color:var(--text-primary);transition:color .3s ease}.website-preview:hover .website-preview__title{color:var(--primary)}.website-preview__tasks,.website-preview__description{margin-top:.5rem;font-size:.875rem;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.website-preview--loading .website-preview__image-container{display:flex;align-items:center;justify-content:center;background-color:var(--surface);animation:pulse 2s infinite}.website-preview--loading .website-preview__info,.website-preview--loading .website-preview__title,.website-preview--loading .website-preview__description{background-color:var(--surface);border-radius:.25rem;animation:pulse 2s infinite}.website-preview--loading .website-preview__info:after,.website-preview--loading .website-preview__title:after,.website-preview--loading .website-preview__description:after{content:" "}.website-preview--loading .website-preview__title{width:75%;height:1.5rem}.website-preview--loading .website-preview__description{width:100%;height:2.5rem}.preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;padding-top:1rem}@media (max-width: 640px){.preview-grid{gap:1rem;padding:1rem}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media (max-width: 640px){.website-preview__title{font-size:1rem}.website-preview__content{padding:1rem}}@keyframes floatPetal{0%{transform:translateY(-20px) rotate(0);opacity:0}10%{opacity:.6}90%{opacity:.3}to{transform:translateY(110vh) rotate(360deg);opacity:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.hero{position:relative;width:100%;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(160deg,#1a0a08,#3b1a14 40%,#5c2820,#7a3b35)}.heroBgTexture{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(ellipse at 20% 50%,rgba(201,120,99,.15) 0%,transparent 60%),radial-gradient(ellipse at 80% 20%,rgba(201,168,76,.1) 0%,transparent 50%),radial-gradient(ellipse at 60% 80%,rgba(201,120,99,.12) 0%,transparent 50%);pointer-events:none}.heroPetal{position:absolute;width:6px;height:12px;background:#c978634d;border-radius:50%/60% 60% 40% 40%;animation:floatPetal linear infinite;pointer-events:none}.heroInner{position:relative;z-index:2;text-align:center;padding:60px 20px 40px}.heroEyebrow{font-family:Montserrat,sans-serif;font-weight:300;font-size:.65rem;letter-spacing:.45em;text-transform:uppercase;color:#c9a84c;opacity:0;animation:fadeUp 1s ease .3s forwards}.heroTitle{font-family:Playfair Display,serif;font-size:clamp(3rem,10vw,7rem);font-weight:400;font-style:italic;color:#fefaf5;line-height:1.05;margin:16px 0 8px;opacity:0;animation:fadeUp 1.1s ease .6s forwards;text-shadow:0 2px 40px rgba(201,120,99,.4)}.heroYear{font-family:Playfair Display,serif;font-size:clamp(1rem,3vw,1.5rem);font-weight:400;color:#c9a84c;letter-spacing:.2em;opacity:0;animation:fadeUp 1.1s ease .9s forwards}.heroDivider{width:80px;height:1px;background:linear-gradient(90deg,transparent,#c9a84c,transparent);margin:24px auto;opacity:0;animation:fadeUp 1s ease 1.1s forwards}.heroSubtitle{font-family:Cormorant Garamond,serif;font-size:clamp(1.1rem,3vw,1.6rem);font-weight:300;font-style:italic;color:#fdf6eed9;opacity:0;animation:fadeUp 1s ease 1.3s forwards;max-width:500px;margin:0 auto;text-align:center;line-height:1.6}.sectionPhotos{padding:80px 24px;background:#fefaf5;position:relative}.sectionPhotos:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,transparent,#c97b63,#c9a84c,#c97b63,transparent)}.sectionLabel{text-align:center;font-family:Montserrat,sans-serif;font-weight:300;font-size:.6rem;letter-spacing:.5em;text-transform:uppercase;color:#c97b63;margin-bottom:12px;opacity:0;animation:fadeIn 1s ease .2s forwards}.sectionHeading{text-align:center;font-family:Playfair Display,serif;font-size:clamp(1.6rem,4vw,2.8rem);font-weight:400;font-style:italic;color:#7a3b35;margin-bottom:56px;opacity:0;animation:fadeIn 1s ease .4s forwards}.photoMosaic{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:auto;gap:14px}.photoItem{overflow:hidden;border-radius:4px;position:relative;cursor:pointer;opacity:0;transform:translateY(20px);animation:fadeUp .8s ease forwards;box-shadow:0 4px 20px #2a25201f}.photoItem:hover img{transform:scale(1.04)}.photoItem img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}.photoItem:nth-child(1){grid-column:1/6;grid-row:1;height:340px;animation-delay:.1s}.photoItem:nth-child(2){grid-column:6/10;grid-row:1;height:340px;animation-delay:.2s}.photoItem:nth-child(3){grid-column:10/13;grid-row:1;height:340px;animation-delay:.3s}.photoItem:nth-child(4){grid-column:1/5;grid-row:2;height:300px;animation-delay:.4s}.photoItem:nth-child(5){grid-column:5/9;grid-row:2;height:300px;animation-delay:.5s}.photoItem:nth-child(6){grid-column:9/13;grid-row:2;height:300px;animation-delay:.6s}.photoItem:nth-child(7){grid-column:1/7;grid-row:3;height:360px;animation-delay:.7s}.photoItem:nth-child(8){grid-column:7/13;grid-row:3;height:360px;animation-delay:.8s}.photoCaption{position:absolute;bottom:0;left:0;right:0;padding:32px 16px 14px;background:linear-gradient(transparent,#1a0a0899);color:#fdf6eee6;font-family:Cormorant Garamond,serif;font-size:.8rem;font-style:italic;letter-spacing:.05em;transform:translateY(100%);transition:transform .4s ease}.photoItem:hover .photoCaption{transform:translateY(0)}.sectionMessage{padding:100px 24px 80px;background:linear-gradient(160deg,#1a0a08,#3b1a14,#5c2820);position:relative;overflow:hidden;text-align:center}.sectionMessage:before{content:"♡";position:absolute;font-size:400px;color:#ffffff05;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;font-family:serif}.messageOrnament{color:#c9a84c;font-size:1.4rem;letter-spacing:.3em;margin-bottom:24px;display:block}.messageQuote{font-family:Playfair Display,serif;font-size:clamp(1.4rem,4vw,2.4rem);font-style:italic;font-weight:400;color:#fefaf5;line-height:1.55;max-width:700px;margin:0 auto 36px;position:relative;z-index:1}.messageQuote:before{content:"“";font-size:5rem;color:#c97b63;opacity:.4;line-height:0;vertical-align:-1.5rem;margin-right:4px}.messageBody{font-family:Cormorant Garamond,serif;font-size:clamp(1rem,2.5vw,1.35rem);font-weight:300;color:#fdf6eecc;line-height:1.9;max-width:600px;margin:0 auto 48px;position:relative;z-index:1}.messageSignature{font-family:Playfair Display,serif;font-size:1.6rem;font-style:italic;color:#c9a84c;position:relative;z-index:1}.messageDivider{width:60px;height:1px;background:linear-gradient(90deg,transparent,#c9a84c,transparent);margin:24px auto}.anniversaryFooter{padding:28px;background:#2a2520;text-align:center;font-family:Montserrat,sans-serif;font-weight:300;font-size:.6rem;letter-spacing:.4em;text-transform:uppercase;color:#c9a84c99}.protectedGate{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(160deg,#1a0a08,#3b1a14 40%,#5c2820,#7a3b35);padding:24px}.protectedForm{text-align:center;max-width:360px;width:100%}.protectedOrnament{display:block;color:#c9a84c;font-size:2rem;margin-bottom:20px}.protectedTitle{font-family:Playfair Display,serif;font-size:2rem;font-weight:400;font-style:italic;color:#fefaf5;margin-bottom:8px}.protectedSubtitle{font-family:Cormorant Garamond,serif;font-size:1rem;font-weight:300;font-style:italic;color:#fdf6ee99;margin-bottom:32px}.protectedInput{display:block;width:100%;padding:12px 16px;font-family:Montserrat,sans-serif;font-size:.85rem;font-weight:300;letter-spacing:.05em;color:#fefaf5;background:#ffffff14;border:1px solid rgba(201,168,76,.3);border-radius:4px;outline:none;transition:border-color .3s ease}.protectedInput::placeholder{color:#fdf6ee59}.protectedInput:focus{border-color:#c9a84c}.protectedError{font-family:Cormorant Garamond,serif;font-size:.85rem;font-style:italic;color:#c97b63;margin-top:12px}.protectedButton{display:inline-block;margin-top:20px;padding:10px 40px;font-family:Montserrat,sans-serif;font-size:.65rem;font-weight:400;letter-spacing:.35em;text-transform:uppercase;color:#2a2520;background:#c9a84c;border:none;border-radius:4px;cursor:pointer;transition:opacity .3s ease}.protectedButton:hover{opacity:.85}@media (max-width: 768px){.photoMosaic{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto;gap:10px}.photoItem:nth-child(1){grid-column:1/2;grid-row:1;height:200px}.photoItem:nth-child(2){grid-column:2/3;grid-row:1;height:200px}.photoItem:nth-child(3){grid-column:1/2;grid-row:2;height:200px}.photoItem:nth-child(4){grid-column:2/3;grid-row:2;height:200px}.photoItem:nth-child(5){grid-column:1/2;grid-row:3;height:200px}.photoItem:nth-child(6){grid-column:2/3;grid-row:3;height:200px}.photoItem:nth-child(7){grid-column:1/2;grid-row:4;height:200px}.photoItem:nth-child(8){grid-column:2/3;grid-row:4;height:200px}}@media (max-width: 480px){.photoMosaic{grid-template-columns:1fr}.photoItem:nth-child(1){grid-column:1;grid-row:1;height:220px}.photoItem:nth-child(2){grid-column:1;grid-row:2;height:220px}.photoItem:nth-child(3){grid-column:1;grid-row:3;height:220px}.photoItem:nth-child(4){grid-column:1;grid-row:4;height:220px}.photoItem:nth-child(5){grid-column:1;grid-row:5;height:220px}.photoItem:nth-child(6){grid-column:1;grid-row:6;height:220px}.photoItem:nth-child(7){grid-column:1;grid-row:7;height:220px}.photoItem:nth-child(8){grid-column:1;grid-row:8;height:220px}}:root{--primary: #2563eb;--primary-light: #60a5fa;--primary-dark: #1d4ed8;--secondary: #4f46e5;--accent: #f59e0b;--accent-light: #fbbf24;--accent-dark: #d97706;--accent-contrast: #ffffff;--background: #ffffff;--surface: #f3f4f6;--surface-hover: #e5e7eb;--text-primary: #111827;--text-secondary: #4b5563;--text-tertiary: #6b7280;--border: #e5e7eb;--border-light: #f3f4f6;--border-dark: #d1d5db;--success: #059669;--warning: #b45309;--error: #dc2626;--info: #0284c7;--hover: rgba(0, 0, 0, .05);--active: rgba(0, 0, 0, .1);--disabled: rgba(0, 0, 0, .2);--shadow-sm: rgba(0, 0, 0, .05);--shadow-md: rgba(0, 0, 0, .1);--shadow-lg: rgba(0, 0, 0, .15)}:root.dark{--primary: #3b82f6;--primary-light: #60a5fa;--primary-dark: #2563eb;--secondary: #6366f1;--accent: #f59e0b;--accent-light: #fbbf24;--accent-dark: #d97706;--accent-contrast: #000000;--background: #111827;--surface: #1f2937;--surface-hover: #374151;--text-primary: #f9fafb;--text-secondary: #e5e7eb;--text-tertiary: #d1d5db;--border: #374151;--border-light: #4b5563;--border-dark: #1f2937;--success: #10b981;--warning: #f59e0b;--error: #ef4444;--info: #0ea5e9;--hover: rgba(255, 255, 255, .05);--active: rgba(255, 255, 255, .1);--disabled: rgba(255, 255, 255, .2);--shadow-sm: rgba(0, 0, 0, .2);--shadow-md: rgba(0, 0, 0, .4);--shadow-lg: rgba(0, 0, 0, .6)}body{background-color:var(--background);color:var(--text-primary);transition:background-color .2s ease-in-out,color .2s ease-in-out}:root{--background: #ffffff;--text: #000000}:root.dark{--background: #1a1a1a;--text: #ffffff}.theme-switcher{padding:.5rem;border:none;border-radius:9999px;cursor:pointer;transition:background-color .2s ease}.theme-switcher.light{background-color:#f3f4f6}.theme-switcher.light:hover{background-color:#e5e7eb}.theme-switcher.light .sun-icon{transform:rotate(0);opacity:1;color:#f59e0b}.theme-switcher.light .moon-icon{transform:rotate(90deg);opacity:0}.theme-switcher.dark{background-color:#1f2937}.theme-switcher.dark:hover{background-color:#374151}.theme-switcher.dark .sun-icon{transform:rotate(-90deg);opacity:0}.theme-switcher.dark .moon-icon{transform:rotate(0);opacity:1;color:#60a5fa}.icon-container{position:relative;width:1.5rem;height:1.5rem}.sun-icon,.moon-icon{width:1.5rem;height:1.5rem;transition:all .3s ease}.sun-icon.moon-icon,.moon-icon.moon-icon{position:absolute;top:0;left:0}
