/* Public-facing visual direction. No dashboard styles. */
.ks-landing { background:#0b0c0c!important; }
.ks-hero { position:relative; isolation:isolate; overflow:hidden; }
.ks-hero::before { content:""; pointer-events:none; position:absolute; z-index:-1; inset:-30%; background:radial-gradient(ellipse at 70% 40%,#b29a7066,transparent 38%),radial-gradient(ellipse at 20% 70%,#527b7855,transparent 32%); animation:ks-light 9s ease-in-out infinite alternate; }
.ks-hero>div { padding-block:16px!important; }
.ks-hero>div>div { padding-block:clamp(36px,6vw,84px)!important; }
.ks-hero h1 { font-size:clamp(42px,4.7vw,72px); font-weight:400; line-height:1.04; letter-spacing:-.045em; text-transform:none; text-wrap:balance; max-width:12ch; }
.ks-hero p { line-height:1.7; }
.ks-hero .ks-kicker { font-size:11px; text-transform:uppercase; letter-spacing:.19em; color:#c4b69e; }
.ks-hero .ks-proof { display:flex; gap:22px; margin-top:22px; font-size:12px; color:#bcbcb6; }
.ks-hero .ks-sample { color:#cbbda7; font-size:13px; }
.ks-motion-toggle { position:absolute; right:24px; bottom:8px; border:1px solid #ffffff25; border-radius:30px; padding:8px 12px; font-size:11px; color:#bbb; z-index:2; }
.ks-motion-paused::before,.ks-motion-paused img { animation-play-state:paused!important; }
.ks-landing #features,.ks-landing #tech-stack,.ks-landing #portfolio-ready,.ks-landing #gallery-protection { scroll-margin-top:90px; margin-top:60px; margin-bottom:60px; }
.ks-landing h2 { text-transform:none; letter-spacing:-.035em; font-weight:400; text-wrap:balance; }
.ks-landing #portfolio-ready h2 { font-size:clamp(32px,3.2vw,46px); line-height:1.12; }
.ks-sample-link { display:inline-flex; gap:16px; align-items:center; margin-top:24px; padding-bottom:7px; border-bottom:1px solid #a8997e; color:inherit; font-size:14px; }
.ks-sample-link:hover { color:#bca583; }
.ks-sample-link:focus-visible,.ks-motion-toggle:focus-visible { outline:2px solid #baa685; outline-offset:5px; }
.ks-sample-center { text-align:center; margin-top:-24px; margin-bottom:60px; }
@keyframes ks-light { from{transform:translate3d(-12%,-5%,0) rotate(-12deg);opacity:.55} to{transform:translate3d(12%,8%,0) rotate(14deg);opacity:1} }
@keyframes ks-photo { from{transform:scale(1.02) translateY(0)} to{transform:scale(1.09) translateY(-1%)} }
/* Authentication: quiet functional form + an immersive photographic panel. */
.ks-auth { color:#262620; background:#f7f6f2; }
.ks-auth-shell { min-height:100svh; display:grid; grid-template-columns:minmax(360px,.9fr) minmax(0,1.1fr); }
.ks-auth-form { display:flex; flex-direction:column; padding:32px clamp(24px,5vw,84px); }
.ks-auth-brand img { height:26px; }
.ks-auth-form>a:last-child { color:#5c6055; }
.ks-auth-form>div { flex:1; padding:40px 0!important; }
.ks-auth-form .card { padding:0!important; border:0; box-shadow:none; background:transparent; max-width:430px; }
.ks-auth-heading { font-family:Georgia,serif; font-size:clamp(36px,4vw,54px); line-height:1.1; letter-spacing:-.035em; margin-bottom:12px; }
.ks-auth-intro { font-size:14px; line-height:1.65; color:#696961; margin-bottom:28px; }
.ks-auth-form input:not([type=checkbox]) { min-height:48px; border:1px solid #d2d0c7; border-radius:8px; background:#fff9; box-shadow:none; }
.ks-auth-form input:focus-visible { outline:2px solid #8d7757; outline-offset:2px; }
.ks-auth-form label { font-size:12px; }
.ks-auth-photo { position:relative; isolation:isolate; overflow:hidden; background:#242920; min-height:100svh; color:#fff; }
.ks-auth-photo>img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; animation:ks-photo 18s ease-in-out infinite alternate; }
.ks-auth-photo::after { content:""; position:absolute; inset:0; z-index:0; background:linear-gradient(180deg,#0002 10%,#0000 40%,#000b); pointer-events:none; }
.ks-auth-photo .ks-back { position:absolute; top:32px; right:32px; z-index:2; font-size:12px; padding:10px 16px; border-radius:30px; border:1px solid #ffffff60; background:#0003; }
.ks-auth-story { position:absolute; z-index:1; left:clamp(28px,5vw,80px); right:50px; bottom:72px; }
.ks-auth-story p { font-size:11px; letter-spacing:.2em; text-transform:uppercase; margin-bottom:22px; }
.ks-auth-story h2 { font-family:Georgia,serif; font-weight:400; font-size:clamp(42px,5vw,76px); letter-spacing:-.04em; line-height:1.02; text-transform:none; max-width:11ch; }
.ks-auth-photo .ks-motion-toggle { bottom:24px; color:white; }
/* Photographer portfolio */
.ks-portfolio { background:#f5f3ed!important; color:#282920; }
.ks-portfolio nav { background:#f5f3edf0!important; box-shadow:none!important; }
.ks-portfolio .profile-hero { min-height:620px; padding:64px max(24px,calc((100vw - 1160px)/2)); display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; background:#f5f3ed; }
.ks-portfolio .profile-hero>div { margin:0; max-width:none; text-align:left; }
.ks-portfolio .profile-hero h1 { color:#282920; font-size:clamp(44px,5.6vw,80px); line-height:1.03; letter-spacing:-.035em; text-shadow:none; margin:24px 0; overflow-wrap:anywhere; }
.ks-portfolio .profile-hero p { color:#65665c; text-shadow:none; font-size:16px; line-height:1.8; }
.ks-portfolio .profile-hero .ks-portrait-initial { background:#e7e1d5; display:grid; place-items:center; font-family:Georgia,serif; font-size:clamp(100px,16vw,200px); width:100%; height:100%; position:relative; z-index:1; }
.ks-portfolio .ks-profile-kicker { text-transform:uppercase; letter-spacing:.18em; font-size:10px!important; margin-top:24px; }
.ks-profile-actions { display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-top:28px; }
.ks-profile-actions a { border:1px solid #34392e; padding:13px 22px; border-radius:2px; font-size:13px; transition:background .25s,color .25s; }
.ks-profile-actions a:first-child { background:#34392e; color:#fff; }
.ks-profile-actions a:hover { background:#565e4a; color:#fff; }
.ks-profile-art { position:relative; aspect-ratio:4/5; max-height:580px; width:100%; padding:0 24px 24px 0; }
.ks-profile-art::after { content:""; position:absolute; right:0; bottom:0; width:85%; height:85%; border:1px solid #b6ab96; z-index:0; }
.ks-profile-art img { width:100%; height:100%; object-fit:cover; position:relative; z-index:1; }
.ks-profile-art { animation:ks-arrive 1s cubic-bezier(.2,.7,.2,1) both; }
.ks-profile-actions button { box-shadow:none!important; border:1px solid #c7c4b9; background:transparent; }
.ks-profile-actions button:hover { transform:none; }
.ks-profile-actions :focus-visible { outline:2px solid #766649; outline-offset:4px; }
@keyframes ks-arrive { from { opacity:0; transform:translateY(18px) } to { opacity:1; transform:none } }
.ks-profile-art-empty { background:linear-gradient(145deg,#e5ded0,#b4b8a3); aspect-ratio:4/5; }
.ks-portfolio section#portfolio,.ks-portfolio section#specializations,.ks-portfolio section#reviews { background:#f5f3ed; }
.ks-portfolio .gallery-grid-section { background:#f5f3ed; padding-top:64px; }
.ks-portfolio .gallery-grid-section>div { max-width:1160px; }
.ks-portfolio .gallery-grid-section .grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:56px 40px; }
.ks-portfolio .gallery-card>div:first-child { border-radius:2px; box-shadow:none; }
.ks-portfolio .gallery-card .aspect-\[4\/3\] { aspect-ratio:4/5; }
.ks-portfolio .gallery-card:nth-child(even) { margin-top:72px; }
.ks-portfolio .gallery-card:hover { transform:none; }
.ks-portfolio .gallery-card h3 { font-size:28px; }
.ks-profile-contact { padding:72px 24px; text-align:center; background:#e9e6dd; }
.ks-profile-contact h2 { font-size:clamp(30px,4vw,48px); margin-bottom:20px; }
.ks-profile-contact .social-link { color:#353a2e!important; }
.ks-profile-contact>div { margin:0 auto!important; }
/* Public gallery controls and a smaller review form */
.ks-gallery-actions { gap:8px!important; margin-right:0!important; }
.ks-gallery-actions button { min-width:42px; min-height:42px; box-shadow:none!important; }
.ks-gallery-actions .ks-download { width:auto; padding:0 16px; gap:8px; border-radius:30px; }
.ks-gallery-actions button:focus-visible { outline:2px solid var(--text-primary); outline-offset:4px; }
.ks-download-label { font:500 12px/1.2 Inter,sans-serif; }
.ks-review-card { max-width:560px!important; border:1px solid #a897792b; }
.ks-review-card form { display:grid; gap:14px; }
.ks-review-card form>* { margin-block:0!important; }
.ks-review-card textarea { min-height:100px; }
.ks-review-card .gallery-modal-close { top:12px; }
@media(max-width:767px) {
 .ks-hero h1{max-width:none;font-size:44px}.ks-hero .ks-proof{justify-content:center;gap:12px}.ks-hero>div>div{padding-top:28px!important}.ks-motion-toggle{right:16px}
 .ks-auth-shell{display:flex;flex-direction:column}.ks-auth-form{padding:24px;min-height:100svh}.ks-auth-photo{display:none}.ks-auth-form>div{padding:32px 0!important}
 .ks-portfolio .profile-hero{grid-template-columns:1fr;gap:32px;padding:40px 24px;min-height:0}.ks-profile-art{max-height:480px}.ks-portfolio .gallery-grid-section .grid{grid-template-columns:1fr;gap:32px}.ks-portfolio .gallery-card:nth-child(even){margin-top:0}.ks-portfolio .gallery-card .aspect-\[4\/3\]{aspect-ratio:4/3}.ks-gallery-actions{flex-wrap:wrap}.ks-gallery-actions .ks-download{padding:0 12px}.ks-download-label{display:none}
}
@media(prefers-reduced-motion:reduce) { .ks-hero::before,.ks-auth-photo>img,.ks-profile-art{animation:none!important}.ks-portfolio *, .ks-landing *{scroll-behavior:auto!important} }

/* Ambient light stays behind the content throughout the landing page. */
.ks-landing{isolation:isolate}.ks-landing #app{position:relative;z-index:1}
.ks-landing .ks-hero::before{display:none}
.ks-ambient{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0;contain:strict}
.ks-ambient-light,.ks-ambient-line{position:absolute;inset:-40%;will-change:transform;transform-origin:center;pointer-events:none}
.ks-ambient-light{background:radial-gradient(ellipse at 30% 42%,#b9a78555 0%,#ac96762b 18%,transparent 45%),radial-gradient(ellipse at 75% 68%,#a7b8b740 0%,transparent 38%)}
.ks-ambient-line{background:repeating-conic-gradient(from 20deg at 50% 120%,transparent 0deg 13deg,#e5d9c124 16deg,#d9d2bf0d 19deg,transparent 24deg 42deg);mask-image:radial-gradient(ellipse at center,#000 10%,transparent 68%);opacity:.8}
@media(prefers-reduced-motion:reduce){.ks-ambient-light,.ks-ambient-line{will-change:auto;transform:none!important}}

/* The hero portrait always identifies the photographer, never a gallery subject. */
.ks-portfolio .profile-hero .ks-photographer-portrait{max-width:460px;justify-self:center}
.ks-photographer-portrait img{object-position:50% 30%}
@media(max-width:767px){.ks-photographer-portrait{grid-row:1;width:min(100%,300px);max-height:360px;padding:0 16px 16px 0}.ks-portfolio .profile-hero{gap:20px}.ks-portfolio .ks-profile-kicker{margin-top:0}.ks-portfolio .profile-hero h1{margin:16px 0}}

/* Tighter editorial rhythm and a neutral, scroll-driven light treatment. */
.ks-landing #features,.ks-landing #tech-stack,.ks-landing #portfolio-ready,.ks-landing #gallery-protection{margin-top:28px;margin-bottom:28px}
.ks-portfolio .gallery-grid-section{padding-top:36px;padding-bottom:36px}.ks-portfolio .photo-types-section,.ks-portfolio .reviews-section{padding-top:36px;padding-bottom:36px}.ks-portfolio .photo-types-section .mb-12{margin-bottom:24px}.ks-portfolio .gallery-card:nth-child(even){margin-top:32px}.ks-profile-contact{padding:40px 24px}
.ks-landing .ks-scroll-reveal{opacity:.65;transform:translateY(24px);transition:opacity 1.1s ease,transform 1.3s cubic-bezier(.16,1,.3,1)}.ks-landing .ks-scroll-reveal.is-visible{opacity:1;transform:none}
.ks-landing.ks-motion-paused .ks-scroll-reveal{opacity:1;transform:none;transition:none}
@media(prefers-reduced-motion:reduce){.ks-landing .ks-scroll-reveal{opacity:1;transform:none;transition:none}}

/* Give each section one vertical interval, without stacking component padding. */
.ks-landing{--ks-section-gap:64px}
.ks-landing .ks-hero{margin-bottom:0}
.ks-landing .ks-hero>div{padding-bottom:0!important}
.ks-landing .ks-hero>div>div{padding-bottom:0!important}
.ks-landing #features,.ks-landing #tech-stack,.ks-landing #portfolio-ready,.ks-landing #gallery-protection{margin-block:var(--ks-section-gap);padding-block:0}
.ks-landing #features{margin-bottom:0}
.ks-landing .ks-sample-center{margin:28px 0 0}
.ks-landing .ks-sample-center .ks-sample-link{margin-top:0}
.ks-landing #pricing{margin-top:var(--ks-section-gap)}
.ks-landing #pricing>h6{margin-top:0}
.ks-landing .pricing .ks-pricing-grid{margin-bottom:0}
.ks-landing #testimonials{margin-top:var(--ks-section-gap)}
@media(max-width:767px){.ks-landing{--ks-section-gap:44px}.ks-landing .ks-sample-center{margin-top:24px}}
