/*
Theme Name: Tolips Studio
Description: Editorial photo portfolio with responsive layouts and Tolips Frame integration.
Version: 0.53.45
Author: Tolips Studio
Requires at least: 6.6
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: tolips-studio
*/
:root{--ts-bg:#100d0e;--ts-text:#f3eee8;--ts-accent:#c98565;--ts-panel:#21191c;--ts-line:color-mix(in srgb,var(--ts-text) 18%,transparent);--ts-space:clamp(22px,5vw,90px)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ts-bg);color:var(--ts-text);font-family:Arial,Helvetica,sans-serif;line-height:1.65}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--ts-accent);outline-offset:5px}img{max-width:100%;height:auto}button{cursor:pointer}::selection{background:var(--ts-accent);color:var(--ts-bg)}.ts-skip{position:fixed;top:-100px;left:20px;z-index:99;background:var(--ts-text);color:var(--ts-bg);padding:12px}.ts-skip:focus{top:10px}.ts-header{position:relative;z-index:20;padding:24px var(--ts-space);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--ts-line);gap:30px}.ts-brand{font-size:22px;font-weight:700;letter-spacing:.19em;text-transform:uppercase}.ts-nav ul{display:flex;gap:28px;list-style:none;margin:0;padding:0}.ts-nav a{font-size:12px;letter-spacing:.12em;text-transform:uppercase}.ts-menu{display:none;border:1px solid var(--ts-line);background:transparent;color:inherit;padding:9px 14px}.ts-hero{position:relative;min-height:82svh;display:flex;align-items:end;padding:var(--ts-space);overflow:hidden;background:radial-gradient(ellipse at 75% 35%,var(--ts-panel),var(--ts-bg) 70%)}.ts-hero:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.7),transparent 75%);pointer-events:none}.ts-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--ts-focus,50% 50%)}.ts-hero-copy{position:relative;z-index:1;color:#fff;max-width:1100px}.ts-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.25em;color:var(--ts-accent)}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400;line-height:1.03;letter-spacing:-.04em}.ts-hero h1{font-size:clamp(52px,9vw,142px);margin:20px 0 30px;max-width:12ch}.ts-hero p{max-width:450px}.ts-link{display:inline-block;border-bottom:1px solid var(--ts-accent);padding:8px 0;font-size:12px;text-transform:uppercase;letter-spacing:.12em}.ts-section{padding:90px var(--ts-space)}.ts-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:40px}.ts-section h2{font-size:clamp(36px,5vw,72px);margin:0}.ts-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:55px 30px}.ts-card:nth-child(even){margin-top:90px}.ts-card-media{aspect-ratio:4/5;overflow:hidden;background:var(--ts-panel)}.ts-card img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.ts-card:hover img{transform:scale(1.03)}.ts-card h3{font-size:30px;margin:18px 0 4px}.ts-card small{color:var(--ts-accent);letter-spacing:.12em;text-transform:uppercase}.ts-card-empty{height:100%;display:grid;place-items:center;color:var(--ts-accent);font-family:Georgia,serif;font-size:70px}.ts-intro{display:grid;grid-template-columns:1fr 2fr;gap:50px;border-top:1px solid var(--ts-line)}.ts-intro p{font-family:Georgia,serif;font-size:clamp(24px,3vw,42px);line-height:1.4;margin:0}.ts-footer{border-top:1px solid var(--ts-line);padding:50px var(--ts-space);display:flex;justify-content:space-between;gap:30px;font-size:12px;letter-spacing:.08em}.ts-content{padding:65px var(--ts-space);max-width:1400px;margin:auto}.ts-content h1{font-size:clamp(46px,7vw,100px)}.ts-content p,.ts-content ul{max-width:75ch}.ts-project-cover{width:100%;max-height:80svh;object-fit:cover}.ts-empty{padding:35px;border:1px solid var(--ts-line)}.ts-post-nav{display:flex;justify-content:space-between;gap:25px;margin-top:70px;border-top:1px solid var(--ts-line);padding-top:25px}.ts-page-content>*{margin-bottom:30px}.ts-page-content .alignfull{max-width:none}.ts-meta{font-size:12px;text-transform:uppercase;letter-spacing:.15em;color:var(--ts-accent)}.ts-pagination{margin-top:45px}.ts-pagination .page-numbers{display:inline-block;padding:10px}.ts-pagination .current{border:1px solid var(--ts-line)}
@media(max-width:767px){.ts-header{padding:18px var(--ts-space)}.ts-brand{font-size:18px}.ts-menu{display:block}.ts-nav{display:none;position:absolute;top:100%;left:0;right:0;padding:25px;background:var(--ts-bg);border-bottom:1px solid var(--ts-line)}.ts-nav.is-open{display:block}.ts-nav ul{flex-direction:column;gap:22px}.ts-section{padding:55px var(--ts-space)}.ts-projects{gap:30px;grid-template-columns:1fr}.ts-card:nth-child(even){margin-top:0}.ts-card-media{aspect-ratio:4/5}.ts-intro{grid-template-columns:1fr;gap:25px}.ts-footer{flex-direction:column}.ts-section-heading{align-items:start;flex-direction:column}.ts-hero{min-height:80svh}.ts-content{padding:40px var(--ts-space)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}

.ts-bg-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--ts-focus,50% 50%);opacity:0;pointer-events:none}.ts-bg-ready:not(.ts-bg-still) .ts-bg-video{opacity:1}.ts-hero[data-ts-hero-background]:after{background:rgba(0,0,0,var(--ts-video-shade,.4))}.ts-bg-toggle{position:absolute;right:24px;top:24px;z-index:3;min-height:44px;padding:10px 16px;border:1px solid #888;border-radius:24px;background:rgba(0,0,0,.65);color:#fff;font-size:12px}.ts-bg-toggle[hidden]{display:none}.ts-bg-still .ts-bg-video{opacity:0}

.ts-hero.ts-hero-scrub{height:calc(100svh - 32px);min-height:420px}.ts-hero-scrub .ts-bg-toggle{display:none}.ts-hero picture{pointer-events:none}

/* One fixed media surface; all homepage content scrolls above it. */
.ts-page-background{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:var(--ts-bg)}
.ts-page-background:after{content:'';position:absolute;inset:0;background:rgba(0,0,0,var(--ts-video-shade,.4));pointer-events:none}
.ts-page-background .ts-hero-img,.ts-page-background .ts-bg-video{width:100%;height:100%;object-fit:cover}
.ts-home-overlay>.ts-hero,.ts-home-overlay>.ts-section,.ts-home-overlay>.ts-content,.ts-home-overlay>.tf-scene,.ts-home-overlay>.pin-spacer{position:relative;z-index:1}
.ts-home-overlay .ts-hero{background:transparent;overflow:visible}
.ts-home-overlay .ts-hero:after{display:none}
.ts-home-overlay>.ts-bg-toggle{position:fixed;top:auto;bottom:20px;right:20px;z-index:30}
.ts-home-overlay~.ts-footer{position:relative;z-index:1;background:transparent}
.ts-home-overlay{color:#fff;--ts-text:#fff;--ts-line:rgba(255,255,255,.25)}
.ts-home-overlay~.ts-footer{color:#fff}
.ts-home-overlay .ts-intro,.ts-home-overlay .ts-empty{background:rgba(0,0,0,.16)}

.ts-overlay-header{color:#fff}@media(max-width:767px){.ts-overlay-header .ts-nav{background:#141414;color:#fff}}

/* Portrait surface sits below every content section, navigation and footer. */
.ts-portraits{display:none;position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:var(--ts-bg)}
.ts-portraits:after{content:'';position:absolute;inset:0;background:rgba(0,0,0,var(--ts-video-shade,.4));pointer-events:none}
.ts-portrait-still,.ts-portrait-still img,.ts-portrait-next,.ts-portrait-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--ts-focus,50% 50%)}
.ts-portrait-canvas{opacity:0}.ts-portraits.is-rendered .ts-portrait-canvas{opacity:1}
.ts-portrait-toggle{position:fixed;right:20px;bottom:20px;z-index:30;border:1px solid #888;border-radius:24px;background:rgba(0,0,0,.7);color:#fff;padding:10px 16px;min-height:44px;font-size:12px}
.ts-portrait-toggle[hidden]{display:none}
@media(min-width:768px){.ts-portraits-desktop .ts-portraits{display:block}.ts-portraits-desktop>.ts-page-background{visibility:hidden}}
@media(max-width:767px){.ts-portraits-mobile .ts-portraits{display:block}.ts-portraits-mobile>.ts-page-background{visibility:hidden}}
/* Neon: continuous portrait sequence supplied by the user. */
.ts-gaze{display:none;position:fixed;inset:0;z-index:0;overflow:hidden;background:#0b0b0d;pointer-events:none}
.ts-gaze-actor{position:absolute;bottom:0;height:100svh;aspect-ratio:720/1280;left:50%;transform:translateX(-50%) scale(var(--ts-gaze-zoom,1));transform-origin:50% 100%}
.ts-gaze-actor video,.ts-gaze-actor img{position:absolute;inset:0;display:block;width:100%;height:100%}
.ts-gaze-actor video{opacity:0;object-fit:contain}
.ts-gaze-actor::after{content:"";position:absolute;inset:-1px;background:linear-gradient(to right,#0b0b0d,transparent 22%,transparent 78%,#0b0b0d),linear-gradient(to bottom,#0b0b0d,transparent 7%),linear-gradient(to top,#0b0b0d,transparent 24%)}
.ts-gaze-shade{position:absolute;inset:0;background:rgba(0,0,0,var(--ts-video-shade,.4))}
.ts-gaze-toggle{position:fixed;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:25;border:1px solid #ffffff50;border-radius:99px;padding:.65rem 1rem;color:#fff;background:#171717e6;font:inherit;cursor:pointer}
.ts-gaze-toggle[hidden]{display:none}
:is(.ts-gaze-active,.ts-volt-active)>.ts-page-background{display:none}
:is(.ts-gaze-active,.ts-volt-active) .ts-hero-copy h1,:is(.ts-gaze-active,.ts-volt-active) .ts-eyebrow,:is(.ts-gaze-active,.ts-volt-active) .ts-section-heading h2{color:#fff;mix-blend-mode:difference}
@media(min-width:768px){.ts-gaze-desktop{display:block}.ts-home-overlay:has(>.ts-gaze-desktop)>.ts-page-background{display:none}}
@media(max-width:767px){.ts-gaze-mobile{display:block}.ts-home-overlay:has(>.ts-gaze-mobile)>.ts-page-background{display:none}}

.ts-volt{background:#0c0c0e}
.ts-volt .ts-gaze-actor{aspect-ratio:512/910}
.ts-volt .ts-gaze-actor::after{background:linear-gradient(to right,#0c0c0e,transparent 18%,transparent 82%,#0c0c0e),linear-gradient(to bottom,#0c0c0e,transparent 8%),linear-gradient(to top,#0c0c0e,transparent 22%)}
/* Shortcode effects stay inside their own section, including repeated instances. */
.ts-motion-block{position:relative;isolation:isolate;overflow:hidden;width:100%;min-height:200px;padding:0;background:#0b0b0d;margin:24px 0}
.ts-motion-block>.ts-gaze,.ts-motion-block>.ts-portraits,.ts-motion-block>.ts-page-background{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.ts-motion-block .ts-gaze-actor{height:100%}
.ts-motion-block>.ts-gaze-toggle,.ts-motion-block>.ts-portrait-toggle,.ts-motion-block>.ts-bg-toggle{position:absolute;right:12px;bottom:12px;z-index:5}
.ts-motion-block>.ts-hero-copy{pointer-events:none}
.ts-motion-block .ts-page-background img,.ts-motion-block .ts-page-background video{width:100%;height:100%;object-fit:cover}

.ts-motion-block>.ts-bg-toggle{top:auto}.ts-motion-block:not(.ts-bg-ready)>.ts-page-background>.ts-bg-video{opacity:0}.ts-motion-block.ts-bg-ready>.ts-page-background>.ts-bg-video{opacity:1}
.ts-ferro{display:none;position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--ts-bg,#100d0e);color:var(--ts-text,#f3eee8);pointer-events:none}
.ts-ferro canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.ts-ferro-label{position:absolute;left:18px;bottom:22px;font-size:12px}
.ts-ferro button{position:absolute;right:18px;bottom:18px;pointer-events:auto;border:1px solid var(--ts-accent,#c98565);border-radius:30px;background:var(--ts-panel,#30191f);padding:10px 16px;color:var(--ts-text,#f3eee8);cursor:pointer}
.ts-ferro-still{display:none;position:absolute;inset:0;background:center/contain no-repeat url('assets/ferro-fallback.svg')}
.ts-ferro-fallback .ts-ferro-still{display:block}.ts-ferro-fallback canvas{display:none}
.ts-motion-block>.ts-ferro{position:absolute;inset:0}
@media(min-width:768px){.ts-ferro-desktop{display:block}.ts-home-overlay:has(>.ts-ferro-desktop)>.ts-page-background{display:none}}
@media(max-width:767px){.ts-ferro-mobile{display:block}.ts-home-overlay:has(>.ts-ferro-mobile)>.ts-page-background{display:none}}

.ts-studs{display:none;position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--ts-bg,#100d0e);color:var(--ts-text,#f3eee8);pointer-events:none}
.ts-studs canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.ts-studs button{position:absolute;right:18px;bottom:18px;pointer-events:auto;border:1px solid var(--ts-accent);border-radius:30px;background:var(--ts-panel);color:var(--ts-text);padding:10px 16px;cursor:pointer}
.ts-motion-block>.ts-studs{position:absolute;inset:0}
@media(min-width:768px){.ts-studs-desktop{display:block}.ts-home-overlay:has(>.ts-studs-desktop)>.ts-page-background{display:none}}
@media(max-width:767px){.ts-studs-mobile{display:block}.ts-home-overlay:has(>.ts-studs-mobile)>.ts-page-background{display:none}}
.ts-siden{display:none;position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--ts-bg,#100d0e);pointer-events:none}
.ts-siden canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.ts-siden button{position:absolute;right:18px;bottom:18px;pointer-events:auto;border:1px solid var(--ts-accent);border-radius:30px;background:var(--ts-panel);color:var(--ts-text);padding:10px 16px;cursor:pointer}
.ts-siden-fallback{background:var(--ts-bg) url('assets/motion-siden.svg') center/cover no-repeat}.ts-siden-fallback canvas{display:none}
.ts-motion-block>.ts-siden{position:absolute;inset:0}
@media(min-width:768px){.ts-siden-desktop{display:block}.ts-home-overlay:has(>.ts-siden-desktop)>.ts-page-background{display:none}}
@media(max-width:767px){.ts-siden-mobile{display:block}.ts-home-overlay:has(>.ts-siden-mobile)>.ts-page-background{display:none}}

.ts-assigned-effects{position:relative;z-index:1;display:grid;gap:24px;margin:24px 0}.ts-home-overlay .ts-motion-block{overflow:hidden;background:var(--ts-bg)}
/* Every selected effect starts at the viewport's top behind the page. */
.ts-effect-backdrop{position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--ts-bg)}
.ts-effect-backdrop>.ts-motion-block,.ts-effect-backdrop>[data-ts-lab],.ts-effect-backdrop>[data-ts-3d]{height:100%!important;min-height:100%;width:100%;padding:0;margin:0}
body:has(.ts-effect-backdrop)>main,body:has(.ts-effect-backdrop)>.ts-header,body:has(.ts-effect-backdrop)>.ts-footer{position:relative;z-index:1;background:transparent}
body:has(.ts-effect-backdrop)>.ts-header{z-index:20}
body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-page-background,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-portraits,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-gaze,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-ferro,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-studs,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-siden,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-bg-toggle,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-gaze-toggle,body:has(.ts-effect-backdrop) .ts-home-overlay>.ts-portrait-toggle{display:none!important}
.ts-effect-backdrop .ts-motion-block:after{display:none}

.ts-effect-backdrop.is-interactive{z-index:40}.ts-background-interact{position:fixed;right:12px;top:12px;z-index:41;border:1px solid #fff6;border-radius:20px;padding:8px 14px;background:#151515c9;color:#fff;font-size:12px}.admin-bar .ts-background-interact{top:58px}

/* Keep effect controls clear of the mobile navigation and admin bar. */
.ts-background-interact,.admin-bar .ts-background-interact{top:auto;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:12px;right:auto}

/* All effect settings belong to Studio; public backgrounds have no control panels. */
.ts-background-interact,.ts-effect-backdrop button,.ts-effect-backdrop summary,.ts-bg-toggle,.ts-portrait-toggle,.ts-gaze-toggle,[data-ferro-pause],[data-studs-pause],[data-siden-pause]{display:none!important}

.ts-sketchfab{position:relative;width:100%;height:100%;background:var(--ts-bg)}
.ts-sketchfab iframe{width:100%;height:100%;border:0;display:block}
.ts-sketchfab-status{position:absolute;top:20%;left:10%;right:10%;text-align:center;color:var(--ts-text)}
.ts-sketchfab-status[hidden]{display:none}

/* Start the introductory text below the header for every effect. */
main .ts-hero:not(.ts-motion-block){align-items:flex-start;padding-top:clamp(20px,3vw,40px)}
main .ts-hero:not(.ts-motion-block)>.ts-hero-copy{align-self:flex-start;margin-top:0}


/* 0.48.45: Portfolio uses a real ending immediately after its content.
   No ghost footer, negative margins, or extra after-footer overlay. */
body.ts-morkrum-page { background:#000; }
body.ts-morkrum-page > main.ts-content { margin-bottom:0; border-bottom:0; }

/* Section shortcodes never claim the page-wide background. Containment also
   keeps fixed surfaces inside effects (including shadow roots) in this area. */
.ts-effect-inline{position:relative;isolation:isolate;contain:layout paint;width:100%;height:var(--effect-height,600px);max-height:80svh;min-height:200px;overflow:hidden;background:var(--ts-bg,#100e0e)}
.ts-effect-inline>.ts-motion-block,.ts-effect-inline>[data-ts-lab],.ts-effect-inline>[data-ts-3d]{width:100%;height:100%!important;min-height:0;margin:0;padding:0}
.ts-effect-inline .ts-siden,.ts-effect-inline .ts-studs,.ts-effect-inline .ts-ferro{pointer-events:auto}

/* Clip animated content at the viewport without creating a horizontal scroller. */
html{overflow-x:hidden;max-width:100%}body{overflow-x:clip;max-width:100%}
@supports not (overflow:clip){html,body{overflow-x:hidden}}
