<!-- Header -->
<!DOCTYPE html>
<html lang="de">

<head>
	<!-- CMS and Theme by IO200 (https://www.io200.com) -->
	<!-- Meta -->
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
	<meta name="mobile-web-app-capable" content="yes">
	<!-- Meta (SEO) -->
	<title> | Schauspieler & Charakter Porträts</title><meta name="description" content="Dreamy, enduring headshots in Hamburg for actors, dancers, musicians & professionals. One session per day, zero pressure. €500 flat rate for 15–20 images. No per-photo fees. Book your session to reveal your character.">	<meta name="robots" content="all">
	<!-- CSS -->
	<link rel="preload" href="/res/style/_base.css?v=2.23.1a" as="style"><link rel="stylesheet" href="/res/style/_base.css?v=2.23.1a" type="text/css" media="screen"><link rel="preload" href="/res/style/layout-fullwidthframed.css?v=2.23.1a" as="style"><link rel="stylesheet" href="/res/style/layout-fullwidthframed.css?v=2.23.1a" type="text/css" media="screen"><link rel="stylesheet" href="/res/style/font-karlabold.css?v=2.23.1a" type="text/css" media="screen"><link rel="stylesheet" href="/res/style/_flavors.css?v=2.23.1a" type="text/css" media="screen">			<style>.time-field {
    margin-bottom: 1.5rem;
    max-width: 600px; /* Keeps it aligned with the date row */
}

.time-field label {
    display: block;
    font-size: 0.9em;
    margin-bottom: 0.4rem;
    font-weight: 500;
}

.time-field select {
    width: 100%;
    padding: 0.6rem;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 1rem;
    background-color: #fff;
    cursor: pointer;
    font-family: 'Poppins', sans-serif;
}

.time-field small {
    display: block;
    margin-top: 0.5rem;
    color: #666;
    font-size: 0.85em;
    line-height: 1.4;
}

/* Layout for the 3 date pickers */
.date-row {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap; /* Stacks on mobile */
}

.date-field {
    flex: 1; /* Each takes equal width */
    min-width: 200px; /* Prevents them from getting too squished */
    display: flex;
    flex-direction: column;
}

.date-field label {
    font-size: 0.9em;
    margin-bottom: 0.4rem;
    font-weight: 500;
}

.date-field input[type="date"] {
    padding: 0.6rem;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-family: inherit;
    font-size: 1rem;
    background-color: #fff;
    cursor: pointer;
}

/* Mobile adjustment: stack them if screen is very narrow */
@media (max-width: 600px) {
    .date-row {
        flex-direction: column;
        gap: 1rem;
    }
    .date-field {
        min-width: 100%;
    }
}

main h1 + h2, main h2 + h3, main h3 + h4, main h4 + h5 {
    margin-top: -0.5em;
}

/* Hide site title on landing page only */
body:has(main.frontpage) header span.website-title {
    display: none !important;
}

@media (min-width: 1000px) {
    body:has(main.frontpage) header span.website-title {
        display: none !important;
    }
}

@media (max-width: 768px) {
    br.h2-break {
        display: none;
    }
}

@media (min-width: 1000px) {
    main h1 {
  font-size: 1.65em;
        font-weight: 400;
        text-transform: none;
letter-spacing: 0.01em;
margin-top: 2.5em;
    }
}

@media (max-width: 999px) {
    main h1 {
        font-size: 1.5em;
        text-transform: none;
        font-weight: 400;
letter-spacing: 0.01em;
margin-top: 2.5em;
        text-align: left;
    }
}


header {
    background-color: rgba(255, 255, 255, 0.85) !important;
    backdrop-filter: blur(5px);
}

footer {
    background-color: rgba(255, 255, 255, 0.85) !important;
    backdrop-filter: blur(5px);
}

@media (max-width: 999px) {
    main h4 {
        text-transform: none;
        font-weight: 400;
    font-size: 1.1em;
letter-spacing: 0.01em;
    }
}

@media (max-width: 999px) {
    main h2 {
        font-size: 1.5em;
        text-transform: none;
        font-weight: 400;
letter-spacing: 0.01em;
    }
}

@media (min-width: 1000px) {
main ul, main ol {
    line-height: 1.6;
}
}

@media (max-width: 999px) {
main ul, main ol {
    line-height: 1.5;
}
}

@media (min-width: 1000px) {
    main h2 {
        font-size: 1.65em;
        font-weight: 400;
        text-transform: none;
letter-spacing: 0.01em;
    }
}

main h4 {
    font-size: 1.25em;
    font-weight: 400;
letter-spacing: 0.01em;
        text-transform: none;
}

@media (min-width: 1000px) {
    div.action-bar-container:not(.active) button.button-primary:not(:hover) {
        background: #fff;
        border-color: black;
    }
}

@media (min-width: 1000px)  {
    div.action-bar-container:not(.active) button.button-primary {
        box-shadow: none;
    }
}

.button-primary {
    color: black !important;
    background: white !important;
    border: 1px solid black;
    font-weight: 500;
}

@media (max-width: 999px) {
body.glightbox-mobile .ginner-container .gslide-image {
    margin: 0rem 1.2rem 0 1.2rem;
}
}

body:not(.glightbox-mobile) .ginner-container .gslide-image {
    margin: 5rem 1.2rem 0 1.2rem;
}

body:not(.glightbox-mobile) .ginner-container:has(.gslide-image) .gslide-description .gdesc-inner {
    padding-bottom: 5rem;
}

body:not(.glightbox-mobile) .gslide-description .gdesc-inner {
    padding-top: 0px !important;
}

body.glightbox-mobile .gslide-title{display:none;}
body.glightbox-mobile .gslide-description{display:none;}

body.glightbox-mobile button.gclose, body.glightbox-mobile button.glightbox-custombutton {
    background-color: white !important;
}

.glightbox-clean .gclose path, .glightbox-clean .gnext path, .glightbox-clean .gprev path {
    fill: black !important;
}

.glightbox-mobile .goverlay {
    background: white !important;
}

.glightbox-mobile .glightbox-container .gslide-description {
    background: transparent !important; 
}


.gslide-image img.zoomable {
pointer-events: none;
}

footer ul.secondary li a, footer ul.secondary li span {
    color: black;
    font-size: 0.85em;
letter-spacing: 0.06em;
}

body.layout-sidebar header nav ul li .nav-item-title, footer nav ul li .nav-item-title {
    text-transform: none !important;
}

span.website-title a {
    font-weight: 400;
    letter-spacing: 0.02em;
    text-transform: none;
}

body.templatelayout-standard {
    @media (min-width: 1000px) {
        header span.website-title a {
            font-size: 0.7em !important;
        }
    }
}

@media (max-width: 999px) {
    header span.website-title a {
        font-size: 0.85em;
    }
}


article.style-card .content p.excerpt {
    display: none;
}



body.templatelayout-standard {
    @media (max-width: 999px) {
        header nav > ul li > .nav-item-title {
            font-weight: 400;
        
        }
    }
}


article .article-image div.photo-wrapper{aspect-ratio:inherit!important;}
@media (max-width:720px){article .article-image div.photo-wrapper{aspect-ratio:inherit!important;}}

body.templatelayout-standard {
    @media (min-width: 1000px) {
        header span.website-title a {
            font-size: 0.7em;


        }
    }
}


body.layout-sidebar header nav ul li .nav-item-title, footer nav ul li .nav-item-title {
        font-size: 0.85em;
        letter-spacing: 0.06em;
text-transform: lowercase;
font-weight: 400;
    }
}


@font-face {
  font-family: 'Poppins';
src: url('/sites/hamburgheadshot.com/res/fonts/Poppins-regular.woff2') format('woff2'),
url('/sites/hamburgheadshot.com/res/fonts/Poppins-regular.woff') format('woff'),
font-weight: normal;
  font-style: normal;
}

body {
  font-family: 'Poppins', sans-serif;
font-size: 0.95em;
letter-spacing: 0.1px;
color: black;
}

a {
    text-decoration: none !important;
}

main p, main blockquote {
    line-height: 1.4em;
letter-spacing: 0.5px;
text-align: left;
}
 

@media (max-width: 999px) {
main {
text-transform: none;
font-weight: 400 !important;
  }
}

#container ul.gallery.layout-mosaic li:hover a img,
#container ul.gallery.layout-wall li:hover a img,
#container ul.gallery.gallery-album.layout-masonry li:hover a img {
transform:none;
}

/* Force action bar visible on mobile */
@media (max-width: 999px) {
  div.action-bar,
  div.action-bar.js-invisible {
    transform: translateY(0) !important;
    position: fixed !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    z-index: 10 !important;
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
  }

  div.action-bar-container {
    display: flex !important;
    flex-wrap: nowrap;
  }

  div.action-bar:has(div.action-bar-container.active)
    div.action-bar-container:not(.active) {
    display: none !important; /* keep this one — only show active */
  }

  /* If no container has .active, force the first one visible */
  div.action-bar:not(:has(div.action-bar-container.active))
    div.action-bar-container:first-child {
    display: flex !important;
  }
}

/* Fix the typos globally */
div.action-bar { flex-wrap: wrap; }
div.action-bar-container { flex-wrap: nowrap; }

div.button-container {
display: none;
}

:root{--website-mainspacing:1.5rem;}

/*----------STICKY FOOTER FIX FOR IO200 STRUCTURE---------------------------*/

/* 1. Reset body to be a simple block, letting #container handle the layout */
body {
  display: block !important; /* Remove any flex from body */
  margin: 0;
  padding: 0;
  min-height: 100vh;
}

/* 2. Turn #container into the flex column */
#container {
  display: flex !important;
  flex-direction: column !important;
  min-height: 100vh !important; /* Force it to be at least full screen */
  width: 100%;
}

/* 3. Make the content area (main) grow to fill space */
#container > main {
  flex: 1 1 auto !important;
  width: 100%;
}

/* 4. Ensure footer stays at bottom */
#container > footer {
  flex-shrink: 0 !important;
  width: 100%;
}

/* 5. Mobile Override (Max-width 999px) */
/* This ensures the mobile media query doesn't break the flex chain */
@media (max-width: 999px) {
  body {
    min-height: 100vh !important;
  }

  #container {
    min-height: 100vh !important;
    /* Ensure it doesn't have min-height: 100dvh which causes double height */
    height: auto !important; 
  }

  /* Force main to grow */
  #container > main {
    flex: 1 1 auto !important;
    min-height: 0 !important; /* Critical for flex overflow fix */
  }

  /* Keep your existing footer styling but ensure it doesn't break flex */
  footer, footer * {
    /* Your existing centering rules */
    justify-content: center;
    text-align: center;
  }
  
  /* iOS Safari fix */
  html {
    height: -webkit-fill-available;
  }
  body {
    min-height: -webkit-fill-available;
  }
}</style>		<!-- JS -->
	<script src="/res/script/MyApp.js?v=2.23.1a"></script>
                <script src="/res/lib/glightbox/glightbox.min.js?v=2.23.1a" defer></script>
                <link href="/res/lib/glightbox/glightbox.min.css?v=2.23.1a" type="text/css" rel="stylesheet">	<meta name="robots" content="noindex">	<!-- Further -->
		<link rel="icon" href="/storage/custom/favicon.png?t=034613" type="image/png">
            <meta property="og:logo" content="/storage/custom/favicon.png?t=034613" />	<link rel="sitemap" href="/de/sitemap.xml" type="application/xml">	<!-- Code Injection -->
	<script>
  var noindexPages = ['/en/imprint', '/en/privacy-policy', '/en/terms-and-conditions', '/de/agb', '/de/impressum', '/de/datenschutz'];
  if (noindexPages.indexOf(window.location.pathname) !== -1) {
    const meta = document.createElement('meta');
    meta.name = 'robots';
    meta.content = 'noindex, nofollow';
    document.head.appendChild(meta);
  }
</script>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var mainElement = document.querySelector('main');
    
    // Fix website title in header (always)
    var siteTitle = document.querySelector('span.website-title a');
    if (siteTitle) {
        siteTitle.innerText = 'Hamburg Headshot';
    }
    
    // Fix H1 and Title tag on non-frontpage pages
    if (mainElement && !mainElement.classList.contains('frontpage')) {
        var h1 = document.querySelector('h1');
        var title = document.querySelector('title');
        
        if (h1) {
            var parts = h1.innerText.split('|');
            if (parts.length > 1) {
                h1.innerText = parts[0].trim() + ' | Hamburg Headshot';
            }
        }
        
        if (title) {
            var titleParts = title.innerText.split('|');
            if (titleParts.length > 1) {
                title.innerText = titleParts[0].trim() + ' | Hamburg Headshot';
            }
        }
    }
});
</script>

<script>
(function() {
    const baseUrl = 'https://hamburgheadshot.com';
    
    // 1. Decode the path (fixes the Ü problem)
    let currentPath = decodeURIComponent(window.location.pathname);

    // 2. Handle Root Redirect
    if (currentPath === '/' || currentPath === '') {
        const browserLang = (navigator.language || navigator.userLanguage || 'en').toLowerCase();
        const targetLang = browserLang.startsWith('de') ? 'de' : 'en';
        window.location.replace(baseUrl + '/' + targetLang);
        return;
    }

    // 3. Define Page Pairs (Using the decoded characters now)
    const pagePairs = {
        '/en': '/de',
        '/de': '/en',
        '/en/booking': '/de/buchen',
        '/de/buchen': '/en/booking',
        '/en/about': '/de/Über-mich',  // Now this matches the decoded path
        '/de/Über-mich': '/en/about',
        '/en/contact': '/de/kontakt',
        '/de/kontakt': '/en/contact',
        '/en/faq': '/de/faq',
        '/de/faq': '/en/faq',
        '/en/terms-and-conditions': '/de/agb',
        '/de/agb': '/en/terms-and-conditions',
        '/en/imprint': '/de/impressum',
        '/de/impressum': '/en/imprint',
        '/en/privacy-policy': '/de/datenschutz',
        '/de/datenschutz': '/en/privacy-policy'
    };

    const alternatePath = pagePairs[currentPath];

    if (!alternatePath) return;

    const isEnglish = currentPath.startsWith('/en');
    const isGerman = currentPath.startsWith('/de');

    // 4. Helper to inject tags
    function injectTag(rel, hreflang, href) {
        let selector = `link[rel="${rel}"]`;
        if (hreflang) selector += `[hreflang="${hreflang}"]`;
        
        let existing = document.querySelector(selector);
        
        if (!existing) {
            existing = document.createElement('link');
            existing.setAttribute('rel', rel);
            if (hreflang) existing.setAttribute('hreflang', hreflang);
            document.head.appendChild(existing);
        }
        existing.setAttribute('href', href);
    }

    // 5. Execute Injection
    injectTag('canonical', null, baseUrl + currentPath);
    
    const enUrl = isEnglish ? currentPath : '/en' + currentPath.replace(/^\/de/, '');
    injectTag('alternate', 'en', baseUrl + enUrl);
    
    const deUrl = isGerman ? currentPath : '/de' + currentPath.replace(/^\/en/, '');
    injectTag('alternate', 'de', baseUrl + deUrl);
    
    injectTag('alternate', 'x-default', baseUrl + '/en');
    
})();
</script></head>

<body class="language-de template-_password templatelayout-standard layout-fullwidthframed mode-light font-karlabold flavors-roundedborders flavors-slideeffect">

	<a href="#top" onclick="document.getElementById('top')?.focus()" class="skip-link">Springe zum Inhalt</a>

	<div id="container">
			<!-- Header -->
			<header>
				<div class="title-container">
					<span class="website-title"><a href="https://hamburgheadshot.com/de" title="Schauspieler & Charakter Porträts" class="website-title-link">Schauspieler & Charakter Porträts</a></span>
									</div>
				<nav>
										<ul class="primary level-0"><li class="linktemplate-page"><a href="/de/buchen" class="nav-item-title" title="Jetzt Session Buchen">Jetzt Session Buchen</a></li><li class="linktemplate-page"><a href="/de/Über-mich" class="nav-item-title" title="Über mich">Über mich</a></li><li class="linktemplate-page"><a href="/de/kontakt" class="nav-item-title" title="Kontakt">Kontakt</a></li><li class="linktemplate-bookingrequest"><a href="/de/buchungsanfrage" class="nav-item-title" title="Buchungsanfrage">Buchungsanfrage</a></li></ul>				</nav>
			</header>

			<!-- Content -->
			<main id="top" class="template-_password" tabindex="-1">

<h1 class="desktop mobile">Passwort erforderlich</h1>
<form class="form-inline" method="post">
    <input type="password" name="password" placeholder="Passwort eingeben" autocomplete="new-password">
    <button type="submit" class="button button-primary" name="path_protection">Abschicken</button>

    </form>

<!-- Footer -->
</main>

<!-- Footer -->
<footer>
							<nav>
				<ul class="secondary level-0"><li class="linktemplate-page"><a href="/de/agb" class="nav-item-title" title="AGB">AGB</a></li><li class="linktemplate-page"><a href="/de/impressum" class="nav-item-title" title="Impressum">Impressum</a></li><li class="linktemplate-page"><a href="/de/datenschutz" class="nav-item-title" title="Datenschutzerklärung">Datenschutzerklärung</a></li><li class="linktemplate-page"><a href="/de/faq" class="nav-item-title" title="FAQ">FAQ</a></li><li><a href="/en" class="linktemplate- languageswitchlink">English</a></li></ul>			</nav>
						</footer>

</div>

<!-- CMS and Theme by IO200 (https://www.io200.com) -->
<script>
                        window.MyApp.settings.mounts.push('basket')
                        window.MyApp.settings.basket = {
                                displayHeaderIconOnMobile: false,
                                displayActionButtonsOnAlbums: false,
                                displayActionButtonOnPhotoSite: true,
                                displayNavigationLinkIfEmpty: true,
                                displayActionBarButton: false,
                                actionBarButtonTarget: `self`,
                                counterNavigationLink: `x`,
                                counterActionBarButton: ``,
                                iconActionBarButton: `send`,
                                iconBasket: `favorite`,
                                iconAdd: `favorite`,
                                iconRemove: `close`,
                                basketLink: `/de/auswahl`,                                
                            }                    
                        window.MyApp.lang.basket = {
                                textAdd: `Zum Auswahl hinzufügen`,
                                textRemove: `Aus Auswahl entfernen`,
                                textSubmitPhotoSelection: `Fotoauswahl Einreichen`,
                            }
                    </script><script>
                    window.MyApp.settings.lightboxZoomable = false
                    window.MyApp.lang.general = { textClose: `Schließen` }
                    window.MyApp.lang.pathaccess = { textLogout: `Abmelden` }
                    
                    document.addEventListener('DOMContentLoaded', () => { window.MyApp.init() })
        	    </script>
</body>

</html>