/*
Theme Name: Portfolio2
Description: Individuelles Portfolio-Theme für mei3r.de.
Version: 0.5.20
Text Domain: portfolio2
*/

/* Native blog additions; approved shared design is assets/design.css. */
.blog-cover{display:block;position:relative;overflow:hidden;isolation:isolate;min-width:0;height:230px;border-radius:19px 19px 0 0}
.blog-cover>img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;transition:transform .3s}
.blog-cover:hover>img{transform:scale(1.025)}
.blog-card h2 a:hover{color:var(--purple)}
.post-date,.post-meta{font-size:14px;color:var(--muted);margin-top:18px}
.card-excerpt{font-size:16px;line-height:1.7;margin-top:16px}
.blog-empty{padding-block:60px}
.pagination{margin-top:45px}.nav-links{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.page-numbers{display:inline-grid;place-items:center;min-width:44px;min-height:44px;padding:4px 12px;border:1px solid var(--line);border-radius:10px}.page-numbers.current{background:var(--glow);color:var(--purple)}
.journal-article>h1{font-size:clamp(44px,6vw,78px);overflow-wrap:anywhere}
.journal-article>.eyebrow{margin-bottom:22px}
.journal-article>.draft-note{margin:0 0 28px}
.article-lead{margin-top:26px}
.article-cover{margin-block:38px 44px}.article-cover img{display:block;width:100%;height:auto;border-radius:18px}
.article-cover figcaption,.entry-content figcaption{font-size:14px;line-height:1.6;color:var(--muted);margin-top:12px;text-align:left}
.entry-content{line-height:1.85;overflow-wrap:anywhere}
.entry-content p,.article-lead{color:var(--ink)}
.entry-content figcaption p{color:inherit}
.entry-content>p,.entry-content>ul,.entry-content>ol,.entry-content>blockquote,.entry-content>figure{margin-block:28px}
.entry-content h2{font-size:clamp(30px,4vw,42px);margin:52px 0 24px}.entry-content h3{font-size:26px;margin:35px 0 20px}
.entry-content li+li{margin-top:10px}.entry-content a{color:var(--blue);text-decoration:underline;text-underline-offset:4px}
.entry-content blockquote{border-left:3px solid var(--purple);padding:8px 0 8px 24px;color:var(--muted)}
.entry-content .wp-block-image img{max-width:100%;height:auto;border-radius:14px}.entry-content .wp-block-image{margin-inline:0}
.entry-content .wp-block-gallery{--wp--style--unstable-gallery-gap:18px;gap:var(--wp--style--unstable-gallery-gap)!important}.entry-content .wp-block-gallery .wp-block-image{margin:0!important;min-width:0}.entry-content .wp-block-gallery .wp-block-image img{width:100%;object-fit:cover}
.portfolio-languages a{display:inline-block;padding-block:8px;text-decoration:underline;text-underline-offset:3px}
body.admin-bar .header{top:52px}.screen-reader-text{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:850px){.blog-cover{height:auto;min-height:230px;border-radius:19px 0 0 19px}.journal-article>h1{font-size:clamp(40px,7vw,64px)}}
@media(max-width:782px){body.admin-bar .header{top:58px}}
@media(max-width:600px){.blog-cover{height:230px;border-radius:19px 19px 0 0}.entry-content .wp-block-gallery{--wp--style--unstable-gallery-gap:12px}.article-cover{margin-block:28px 34px}.post-meta{font-size:13px}}
@media(prefers-reduced-motion:reduce){.blog-cover>img{transition:none}}

.entry-content .wp-block-gallery.has-nested-images figure.wp-block-image figcaption{position:static;background:none;color:var(--muted);padding:0;max-height:none;margin-top:8px;text-shadow:none;text-align:left;overflow:visible;flex:none}
.entry-content .wp-block-gallery.has-nested-images figure.wp-block-image:has(figcaption)::before{content:none}
@media(max-width:480px){.entry-content .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image){width:100%}}

/* Native language links occupy the same control slot as the approved button. */
.header a#language{display:inline-flex;align-items:center;justify-content:center}
.legal-links a{display:inline-block;padding-block:8px;text-decoration:underline;text-underline-offset:3px}

/* Professional topics precede the personal interests and retain their own blue tone. */
.professional-chips{margin-bottom:12px}
.professional-chips>span{background:rgba(63,115,236,.13);border-color:rgba(63,115,236,.3);color:var(--blue)}
.professional-chips svg{color:var(--blue)}

/* Article images retain the full frame; card previews fill their clipped cover. */
.entry-content .wp-block-image img{height:auto!important;object-fit:contain!important}
.entry-content .wp-block-image img[style*="--p2-image-aspect"]{aspect-ratio:var(--p2-image-aspect)!important}
.entry-content .wp-block-gallery.has-nested-images{align-items:flex-start}
.entry-content .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image){display:block;flex-grow:0;align-self:flex-start;height:auto;min-height:0}
.entry-content .wp-block-gallery.has-nested-images figure.wp-block-image>a,.entry-content .wp-block-gallery.has-nested-images figure.wp-block-image>div{display:block;flex:none;height:auto}
.image-view-link{display:block;cursor:zoom-in;text-decoration:none!important;border-radius:14px}
.image-view-link:focus-visible{outline-offset:5px}
body.image-view-open{overflow:hidden}
.image-viewer{width:calc(100vw - 32px);max-width:1500px;height:calc(100dvh - 32px);max-height:none;padding:16px 22px;margin:auto;border:1px solid var(--line);border-radius:20px;background:var(--bg);color:var(--ink);overflow:auto}
.image-viewer::backdrop{background:#030611e8;backdrop-filter:blur(6px)}
.image-viewer-header,.image-viewer-controls{display:flex;align-items:center;justify-content:space-between;gap:16px}
.image-viewer-header h2{font-size:20px;letter-spacing:-.02em}
.image-viewer button{min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:12px;padding:8px 14px;background:var(--card);font-size:15px}
.image-viewer figure{margin:10px auto;min-height:0;text-align:center}
.image-viewer img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 220px);margin:auto;object-fit:contain;touch-action:pan-y pinch-zoom}
.image-viewer figcaption{font-size:14px;color:var(--muted);margin:12px auto;max-width:900px;line-height:1.5}
.image-viewer-status{font-size:14px;min-height:24px;text-align:center}
.image-viewer-controls{max-width:600px;margin:12px auto}
@media(max-width:600px){.image-viewer{width:calc(100vw - 16px);height:calc(100dvh - 16px);padding:12px;border-radius:16px}.image-viewer img{max-height:calc(100dvh - 240px)}.image-viewer-header h2{font-size:18px}}

.image-viewer[open]{display:flex;flex-direction:column}
.image-viewer figure{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%}
.image-viewer-controls{width:100%;flex-shrink:0}

/* One viewport-anchored sky keeps the same composition on every page. */
body.has-starfield{isolation:isolate}
.starfield{position:fixed;z-index:-1;pointer-events:none;inset:0 0 auto;height:100svh;overflow:hidden}
.starfield-dots{position:absolute;inset:0;background:var(--ink);mask-image:url('assets/stars.svg');mask-size:1200px 800px;mask-repeat:repeat;opacity:.48}
.starfield-dots-1{mask-size:930px 620px;mask-position:280px 110px;--star-alpha:.25;opacity:var(--star-alpha);animation:star-shimmer 9s ease-in-out -3s infinite alternate}
.starfield-dots-2{mask-size:1450px 960px;mask-position:-420px 260px;--star-alpha:.18;opacity:var(--star-alpha);animation:star-shimmer 13s ease-in-out -8s infinite alternate}
.starfield::before,.starfield::after{content:"";position:absolute;width:200px;height:160px;background:radial-gradient(ellipse,rgba(100,181,255,.08),rgba(166,147,255,.025) 40%,transparent 70%)}
.starfield::before{left:6%;top:20%}
.starfield::after{right:8%;top:72%}
:root[data-theme=light] .starfield-dots{opacity:.22}
:root[data-theme=light] .starfield-dots-1{--star-alpha:.13}
:root[data-theme=light] .starfield-dots-2{--star-alpha:.1}
:root[data-theme=light] .sky-planet{opacity:.38}
@keyframes star-shimmer{from{opacity:calc(var(--star-alpha)*.55)}to{opacity:var(--star-alpha)}}
@media(prefers-reduced-motion:reduce){.starfield-dots{animation:none}}
.sky-planet{position:absolute;display:block;opacity:.62;background:center/contain no-repeat;filter:drop-shadow(0 0 9px #91a8d01a)}
.sky-planet-moon{width:30px;height:30px;right:8%;top:37%;background-image:url('assets/planet-moon.svg')}
.sky-planet-saturn{width:76px;height:48px;left:7%;bottom:12%;background-image:url('assets/planet-saturn.svg')}
.sky-planet-banded{width:40px;height:40px;right:3%;top:62%;background-image:url('assets/planet-banded.svg')}
.article-page{max-width:980px}
.journal-article{padding:clamp(24px,4vw,52px);border:1px solid var(--line);border-radius:20px;background:var(--panel);box-shadow:0 12px 36px var(--shadow)}
@media(max-width:600px){.sky-planet-saturn{left:4%;bottom:8px}.journal-article{padding:24px 18px;border-radius:18px}.journal-article>h1{font-size:clamp(34px,9vw,48px)}}

/* Shared footer: two compact groups aligned on the same text baseline. */
.footer-bottom{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:12px 16px;line-height:1.6}
.footer-bottom>span.footer-copyright{margin:0;white-space:nowrap}
.footer-bottom>span.legal-links{width:auto;justify-self:end;text-align:right;white-space:nowrap}
@media(max-width:1288px){footer.wrap{padding-bottom:88px}}

/* Prevent hidden collapsed-header contents and decorative orbit paint from widening tablets. */
@media(max-width:850px){.header:not(.menu-open){overflow:clip}}
@media(max-width:1100px){.welcome{overflow:hidden;overflow-clip-margin:0}}
:root[data-theme="light"] .professional-chips>span{color:#075cbe}
/* Keep small hero text readable where a decorative star crosses its glyphs. */
.welcome .eyebrow>span{background:var(--bg)}
.image-viewer[data-pointer-open="true"] button:focus{outline:none}

/* Keep the mobile home masthead visible only at the beginning of the page. */
@media(max-width:850px){
 .header.home-top{width:calc(100% - var(--mobile-left) - var(--mobile-right))}
 .header.home-top:not(.menu-open) #language,.header.home-top:not(.menu-open) #theme-toggle{opacity:1;visibility:visible;pointer-events:auto;transform:none}
 .header.home-top:not(.menu-open)>.brand{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(-50%)}
 .header>nav{gap:10px;max-height:calc(100dvh - 112px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain}
 .header>nav>a{display:flex;align-items:center;flex-shrink:0;min-height:58px;padding:12px;gap:14px;margin:0;border:0;border-radius:10px;background:transparent;color:var(--ink)}
 .header>nav>a.blog-nav{border:1px solid var(--glass-border);padding:11px}
 .header>nav>a:hover{background:var(--wash)}
 .header>nav>a:is(.active,:focus-visible,.blog-nav){background:var(--glow)}
}
/* The clipped image stage provides bounded mouse/touch panning at 2.5×. */
.image-viewer-viewport{position:relative;flex:0 0 auto;min-height:0;max-width:100%;overflow:hidden;cursor:zoom-in;touch-action:pan-y pinch-zoom}
.image-viewer .image-viewer-viewport img{position:absolute;left:50%;top:50%;margin:0;translate:-50% -50%;max-width:none;max-height:none;object-fit:contain;user-select:none;touch-action:inherit}
.image-viewer-viewport.is-zoomed{cursor:grab;touch-action:none}
.image-viewer-viewport.is-zoomed:active{cursor:grabbing}
.image-viewer-viewport:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.image-viewer figcaption{flex-shrink:0}
.image-viewer[data-pointer-open="true"] .image-viewer-viewport:focus{outline:none}
