:root{--purple: #633580;--purple-dark: #4a2760;--yellow: #e6e37e;--pink: #b45a8d;--pink-dark: #8f4270;--orange: #c9822e;--orange-dark: #ad5100;--cream: #faf9f2;--text-on-purple: #e6e37e;--text-on-yellow: #4a2760;--font-gothic: "Pirata One", serif;--font-script: "Sacramento", cursive;--font-body: "Cormorant Garamond", serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font-body);background:var(--cream);color:var(--purple-dark);font-size:19px;line-height:1.5}h1,h2,h3{font-family:var(--font-gothic);font-weight:400;letter-spacing:.02em;margin:0}a{color:inherit;text-decoration:none}button{font-family:var(--font-body);cursor:pointer}img{max-width:100%;display:block}.container{max-width:1200px;margin:0 auto;padding:0 clamp(1rem,4vw,3rem)}.site-header{background:var(--purple);padding:.9rem clamp(1rem,4vw,3rem);display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.site-header .logo{display:flex;align-items:center;gap:.5rem;font-family:var(--font-gothic);color:var(--yellow);font-size:1.3rem;line-height:1}.site-header .logo .spark{color:var(--yellow);font-size:1.6rem}.site-header nav{display:flex;gap:.75rem;flex-wrap:wrap}.pill-link{font-family:var(--font-gothic);color:var(--purple);background:var(--yellow);border:2px solid var(--yellow);border-radius:999px;padding:.4rem 1.4rem;font-size:1rem;white-space:nowrap;transition:transform .15s ease,background .15s ease}.pill-link.outline{background:transparent;color:var(--yellow)}.pill-link:hover{transform:translateY(-2px)}.site-footer{background:var(--purple);padding:2.5rem clamp(1rem,4vw,3rem);display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;margin-top:4rem}.site-footer .envelope{font-size:2.2rem;color:var(--yellow);flex-shrink:0}.site-footer .cta-title{color:var(--yellow);font-size:clamp(1.4rem,3vw,2rem);line-height:1.15}.site-footer .cta-title .script{font-family:var(--font-script);font-size:1.5em;display:block}.site-footer .cta-sub{font-style:italic;color:var(--yellow);text-align:center;flex:1;min-width:200px}.hero-banner{background:var(--purple);border-radius:0 0 2rem 2rem;padding:clamp(1.5rem,5vw,3.5rem);display:flex;align-items:center;gap:clamp(1.5rem,4vw,3rem);flex-wrap:wrap}.hero-photo-frame{background:var(--yellow);border-radius:1.5rem;padding:.6rem;width:min(320px,100%);flex-shrink:0}.hero-photo-frame img{width:100%;aspect-ratio:3 / 4;object-fit:cover;border-radius:1rem;filter:sepia(.5) hue-rotate(220deg) saturate(2) brightness(.95)}.hero-photo-frame .placeholder{width:100%;aspect-ratio:3 / 4;border-radius:1rem;display:flex;align-items:center;justify-content:center;color:var(--purple);font-family:var(--font-gothic);background:repeating-linear-gradient(45deg,#d8d56f,#d8d56f 10px,#e6e37e 10px,#e6e37e 20px);text-align:center;padding:1rem}.hero-copy{flex:1;min-width:260px}.hero-copy .name-line{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;margin-bottom:.5rem}.hero-copy .script-name{font-family:var(--font-script);color:#1a1024;font-size:clamp(2.8rem,7vw,4.5rem);line-height:1}.hero-copy .gothic-name{font-family:var(--font-gothic);color:#1a1024;font-size:clamp(1.8rem,5vw,3rem)}.hero-copy .tagline{font-style:italic;color:var(--yellow);font-size:1.3rem;margin-bottom:.75rem}.hero-copy .bio{color:var(--yellow);max-width:46ch;margin-bottom:1rem}.hero-socials{display:flex;flex-direction:column;gap:.4rem}.hero-socials a{font-family:var(--font-gothic);color:var(--yellow);font-size:1.4rem}.hero-socials a:hover{text-decoration:underline}.section-title{color:var(--purple);font-size:clamp(1.5rem,3.5vw,2.2rem);display:flex;align-items:center;gap:1rem;margin:3rem 0 1.5rem}.section-title:after{content:"";flex:1;height:2px;background:var(--purple);opacity:.5}.recent-strip{background:var(--yellow);border-radius:2rem;padding:clamp(1.5rem,4vw,2.5rem);margin:2.5rem 0}.recent-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}.recent-card{display:block}.recent-card .thumb{background:var(--purple);border-radius:1.25rem;aspect-ratio:4 / 3;overflow:hidden;margin-bottom:-1.5rem;position:relative;z-index:1}.recent-card .thumb img{width:100%;height:100%;object-fit:cover}.recent-card .caption{background:var(--pink);border-radius:1.25rem;padding:2.25rem 1.25rem 1rem;color:var(--yellow);font-family:var(--font-body);font-size:1.15rem;font-style:italic}.project-banner{border-radius:2rem;padding:clamp(1.5rem,4vw,3rem);display:flex;gap:clamp(1.5rem,4vw,3rem);align-items:center;margin-bottom:2.5rem;flex-wrap:wrap}.project-banner.on-purple{background:var(--purple);color:var(--yellow)}.project-banner.on-yellow{background:var(--yellow);color:var(--purple-dark)}.project-gallery{width:min(380px,100%);flex-shrink:0;position:relative}.project-gallery .frame{border-radius:1.25rem;aspect-ratio:4 / 3;overflow:hidden;position:relative;cursor:zoom-in}.on-purple .project-gallery .frame{background:var(--yellow)}.on-yellow .project-gallery .frame{background:var(--purple)}.project-gallery .frame img{width:100%;height:100%;object-fit:cover}.project-gallery .empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--font-gothic);text-align:center;padding:1rem}.on-purple .project-gallery .empty{color:var(--purple)}.on-yellow .project-gallery .empty{color:var(--yellow)}.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:2.6rem;height:2.6rem;border-radius:50%;background:var(--orange);border:none;color:var(--orange-dark);font-size:1.1rem;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px #00000040}.gallery-nav.prev{left:-1.3rem}.gallery-nav.next{right:-1.3rem}.gallery-zoom-hint{position:absolute;bottom:.7rem;right:.7rem;font-size:1.3rem;opacity:.8}.project-copy{flex:1;min-width:260px}.project-copy .eyebrow{font-family:var(--font-gothic);font-size:1rem;opacity:.8;margin-bottom:.4rem}.project-copy h2{font-size:clamp(1.4rem,3vw,2rem);margin-bottom:.75rem}.project-copy p{white-space:pre-line}.social-banner{border-radius:2rem;padding:clamp(1.5rem,4vw,3rem);display:flex;gap:clamp(1.5rem,4vw,3rem);align-items:center;margin-bottom:2.5rem;flex-wrap:wrap}.social-banner.on-purple{background:var(--purple);color:var(--yellow)}.social-banner.on-yellow{background:var(--yellow);color:var(--purple-dark)}.social-banner .media{width:min(380px,100%);flex-shrink:0}.social-banner .media .box{border-radius:1.25rem;aspect-ratio:16 / 9;overflow:hidden;display:flex;align-items:center;justify-content:center}.on-purple .social-banner .media .box{background:var(--yellow);color:var(--purple)}.on-yellow .social-banner .media .box{background:var(--purple);color:var(--yellow)}.social-banner .media iframe,.social-banner .media img{width:100%;height:100%;object-fit:cover;border:none}.social-banner .media-label{font-family:var(--font-gothic);margin-top:.6rem}.social-banner .info{flex:1;min-width:240px}.social-banner .info h2{font-size:clamp(1.5rem,3.5vw,2.2rem);margin-bottom:.5rem}.social-banner .info .link-line{font-style:italic;margin-bottom:.75rem;display:inline-block}.social-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.social-gallery img{aspect-ratio:1;object-fit:cover;border-radius:.6rem;cursor:zoom-in}.contact-banner{background:var(--purple);border-radius:2rem;padding:clamp(1.5rem,5vw,3.5rem);display:flex;gap:clamp(1.5rem,4vw,3rem);align-items:center;flex-wrap:wrap;color:var(--yellow)}.contact-info{flex:1;min-width:260px}.contact-info h1{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:2rem}.contact-row{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;font-size:1.2rem}.contact-row .icon{font-size:1.5rem}.contact-photo{width:min(320px,100%);aspect-ratio:4 / 3;background:var(--yellow);border-radius:1.25rem;display:flex;align-items:center;justify-content:center;color:var(--purple);font-family:var(--font-gothic);overflow:hidden;flex-shrink:0}.contact-photo img{width:100%;height:100%;object-fit:cover}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14081ceb;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem}.lightbox-overlay img{max-width:100%;max-height:85vh;border-radius:.5rem}.lightbox-close{position:absolute;top:1.5rem;right:1.5rem;background:var(--yellow);color:var(--purple);border:none;border-radius:50%;width:2.5rem;height:2.5rem;font-size:1.3rem}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:var(--orange);color:var(--orange-dark);border:none;border-radius:50%;width:3rem;height:3rem;font-size:1.4rem}.lightbox-nav.prev{left:1.5rem}.lightbox-nav.next{right:1.5rem}.admin-shell{max-width:900px;margin:2rem auto;padding:0 1.5rem 4rem}.admin-login{max-width:360px;margin:4rem auto;background:var(--purple);color:var(--yellow);padding:2.5rem;border-radius:1.5rem;text-align:center}.admin-login input{width:100%;padding:.6rem .8rem;border-radius:.5rem;border:none;margin:1rem 0;font-family:var(--font-body);font-size:1rem}.admin-login button,.btn{background:var(--orange);color:#fff;border:none;padding:.6rem 1.4rem;border-radius:999px;font-weight:600}.btn.secondary{background:transparent;border:2px solid var(--purple);color:var(--purple)}.btn.danger{background:#a83244}.admin-tabs{display:flex;gap:.5rem;margin:1.5rem 0;flex-wrap:wrap}.admin-tabs button{background:var(--yellow);border:2px solid var(--purple);color:var(--purple);padding:.5rem 1.2rem;border-radius:999px;font-family:var(--font-gothic)}.admin-tabs button.active{background:var(--purple);color:var(--yellow)}.admin-card{background:#fff;border:1px solid #e2ddc8;border-radius:1rem;padding:1.25rem;margin-bottom:1.25rem}.admin-form label{display:block;font-weight:600;margin:.75rem 0 .25rem}.admin-form input[type=text],.admin-form input[type=email],.admin-form input[type=url],.admin-form textarea,.admin-form select{width:100%;padding:.55rem .7rem;border:1px solid #ccc;border-radius:.5rem;font-family:var(--font-body);font-size:1rem}.admin-form textarea{min-height:90px}.admin-thumb-row{display:flex;gap:.5rem;flex-wrap:wrap;margin:.5rem 0}.admin-thumb-row .thumb-wrap{position:relative}.admin-thumb-row img{width:70px;height:70px;object-fit:cover;border-radius:.4rem}.admin-thumb-row .remove{position:absolute;top:-6px;right:-6px;background:#a83244;color:#fff;border:none;border-radius:50%;width:20px;height:20px;font-size:.75rem;line-height:1}.admin-item-header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.admin-actions{display:flex;gap:.5rem}.error-text{color:#a83244;font-weight:600}@media (max-width: 640px){.gallery-nav.prev{left:.5rem}.gallery-nav.next{right:.5rem}}
