/* ============================================================
	PRO REBUILD – styles.css (refactor + vollständig kommentiert)
============================================================ */

/* ============================================================
	1) DESIGN TOKENS (CSS Variablen)
============================================================ */
:root {
	/* Farben */
	--bg-page: #f2f0ee;
	--bg-light: #f1eeec;
	--bg-dark: #272627;

	--text: #222;
	--text-on-dark: #fff;
	--muted: #e6e6e6;
	--accent: #f26a21;

	/* Layout */
	--container: 1200px;
	--pad-x: clamp(16px, 4vw, 48px);
	--pad-y: clamp(24px, 5vw, 56px);

	/* UI Basics */
	--header-h: 40px;
	--radius: 28px;
	--shadow: 0 18px 60px rgba(0, 0, 0, 0.25);

	/* Typo */
	--body-size: clamp(16px, 2.1vw, 22px);
	
	/* Showreel */
	--showreel-radius: 32px;
}

/* ============================================================
	2) FONTS (lokal)
============================================================ */
@font-face {
	font-family: "Oswald";
	src: url("../fonts/Oswald-Light.woff2") format("woff2");
	font-weight: 300;
	font-style: normal;
	font-display: block;
}

@font-face {
	font-family: "Oswald";
	src: url("../fonts/Oswald-Regular.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: block;
}

@font-face {
	font-family: "Oswald";
	src: url("../fonts/Oswald-Medium.woff2") format("woff2");
	font-weight: 500;
	font-style: normal;
	font-display: block;
}

/* ============================================================
	3) BASE / RESET
============================================================ */
* {
	box-sizing: border-box;
}

html,
body {
	margin: 0;
	padding: 0;
}
/* ============================================================
	PAGE LOAD: erst nach vollständigem Laden anzeigen
	- Default: sichtbar (für No-JS)
	- Mit JS: Body wird bis window.load ausgeblendet
============================================================ */
html.js body {
	opacity: 0;
	visibility: hidden;
}
html.js body.page-loaded {
	opacity: 1;
	visibility: visible;
	transition: opacity 0.25s ease;
}


html {
	scroll-behavior: smooth;
}

body {
	font-family: "Oswald", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
	background: var(--bg-page);
	color: var(--text);
	overflow-x: hidden;
}

img,
video {
	max-width: 100%;
	height: auto;
	display: block;
}

a {
	color: inherit;
}

a:hover {
	text-decoration: underline;
}

/* ============================================================
	4) A11Y HELPERS
============================================================ */
.sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

.skip-link {
	position: absolute;
	left: -999px;
	top: 8px;
	background: #000;
	color: #fff;
	padding: 10px 12px;
	z-index: 99999;
}

.skip-link:focus {
	left: 8px;
}

/* ============================================================
	5) LAYOUT UTILITIES
============================================================ */
.container {
	width: min(100%, var(--container));
	margin: 0 auto;
	padding-inline: var(--pad-x);
}

.full-bleed {
	width: 100vw;
	position: relative;
	left: 50%;
	right: 50%;
	margin-left: -50vw;
	margin-right: -50vw;
}

/* ============================================================
	6) SCROLL PROGRESS BAR
============================================================ */
.scroll-progress {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 4px;
	background: var(--bg-page);
	z-index: 10000;
}

.scroll-progress-bar {
	height: 100%;
	background: var(--accent);
	transform-origin: left center;
	transform: scaleX(0);
	will-change: transform;
}

/* ============================================================
	7) HEADER / NAVIGATION
============================================================ */
.site-header {
	position: sticky;
	top: 4px;
	z-index: 9999;
	height: var(--header-h);
	background: rgba(242, 240, 238, 0.92);
	backdrop-filter: saturate(180%) blur(10px);
}

.header-inner {
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding-bottom: 6px;
}

.brand {
	text-decoration: none;
	font-weight: 500;
	letter-spacing: 0.5px;
}

.nav {
	display: flex;
	align-items: center;
	gap: clamp(32px, 8vw, 120px);
}

.nav a {
	text-decoration: none;
	font-weight: 200;
	font-size: 19px;
	letter-spacing: 1px;
	position: relative;
	padding: 6px 0;
}

.nav a::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -3px;
	width: 0;
	height: 5px;
	background: var(--accent);
	transition: width 0.25s ease, left 0.25s ease;
}

.nav a:hover::after,
.nav a:focus-visible::after {
	width: 100%;
	left: 0;
}
.nav-toggle-bar {
	display: block;
	height: 3px;
	background: var(--text);
	margin: 5px 0;
}

/* ============================================================
	8) HERO
============================================================ */
.hero {
	position: relative;
}

.hero-media {
	position: relative;
	z-index: 2;
}

.hero::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 120px;
	pointer-events: none;
	background: linear-gradient(
		to bottom,
		rgba(0, 0, 0, 0.35),
		rgba(0, 0, 0, 0.15),
		rgba(0, 0, 0, 0)
	);
}

.hero-video {
	width: 100vw;
	height: auto;
	object-fit: contain;
	background: #000;
	box-shadow: 0 0 40px rgba(0, 0, 0, 0.35);
}

/* ============================================================
	9) SECTIONS
============================================================ */
.section {
	padding: var(--pad-y) 0;
	scroll-margin-top: calc(var(--header-h) + 24px);
}

.section--light {
	background: var(--bg-light);
}

.section--dark {
	background: var(--bg-dark);
	color: var(--text-on-dark);
}

.section-header {
	margin-bottom: clamp(16px, 4vw, 40px);
}

.section-header--center {
	display: flex;
	justify-content: center;
}

.prose {
	font-size: var(--body-size);
	line-height: 1.5;
	max-width: 880px;
}

.prose p {
	margin: 0;
}

/* ============================================================
	10) ABOUT
============================================================ */
#about .prose {
	font-weight: 200;
	letter-spacing: 0.02em;
}

#about.section {
	padding-top: clamp(48px, 9vw, 104px);
	padding-bottom: clamp(40px, 7vw, 80px);
}

/* ============================================================
	11) PORTFOLIO
============================================================ */
#portfolio.section {
	padding: 0;
}

.portfolio-bg {
	background-image: url("../img/Portfolio_Desktop_Hintergrund.webp");
	background-repeat: no-repeat;
	background-position: center top;
	background-size: cover;
	padding: clamp(18px, 5vw, 72px) 0;
}

.portfolio-content {
	width: 100%;
	height: auto;
}

/* ============================================================
	12) SHOWREEL
============================================================ */
.showreel {
	position: relative;
	max-width: min(100%, 1200px);
	margin: 0 auto;
}

.showreel-illu {
	width: 100%;
	height: auto;
}

.showreel-screen {
	position: absolute;
	left: 50%;
	top: 51%;
	transform: translate(-50%, -50%);
	width: clamp(60%, 20vw, 74%);
	max-width: 820px;
	border: 0;
	padding: 0;
	background: transparent;
	cursor: pointer;
}

.showreel-screen-img {
	width: 100%;
	border-radius: var(--showreel-radius);
	background: var(--bg-dark);
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);
}

.showreel-play-btn-img {
	position: absolute;
	left: 52%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 12.3%;
	pointer-events: none;
	transition: transform 0.2s ease, opacity 0.2s ease;
}

.showreel-screen:hover .showreel-play-btn-img {
	transform: translate(-50%, -50%) scale(1.06);
}

/* ============================================================
	13) MODAL
============================================================ */
.hidden {
	display: none;
}

.modal {
	position: fixed;
	inset: 0;
	background: rgba(0, 0, 0, 0.85);
	align-items: center;
	justify-content: center;
	padding: 24px;
	z-index: 11000;
	display: none;
}

.modal.is-open {
	display: flex;
}

.modal-inner {
	width: min(100%, 1000px);
	position: relative;
}

.modal-video {
	position: relative;
	width: 100%;
	padding-top: 56.25%;
	border-radius: var(--radius);
	overflow: hidden;
	background: #000;
	box-shadow: var(--shadow);
}

.modal-video video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: contain;
	background: #000;
}

.modal-close {
	position: absolute;
	top: -18px;
	right: -18px;
	width: 44px;
	height: 44px;
	border-radius: 999px;
	border: none;
	background: var(--bg-page);
	color: var(--text);
	font-size: 28px;
	cursor: pointer;
	box-shadow: 0 10px 28px rgba(0, 0, 0, 0.35);
}

/* ============================================================
	14) KONTAKT
============================================================ */
.contact-title {
	width: clamp(220px, 34vw, 360px);
}

.contact-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(6px, 1.5vw, 12px) clamp(12px, 3vw, 32px);
	align-items: center;
	justify-items: center;
	font-weight: 300;
	font-size: clamp(18px, 2.2vw, 26px);
}

.contact-item {
	margin: 0;
	text-align: center;
}

.contact-item a {
	text-decoration: none;
}

.contact-item a:hover {
	text-decoration: underline;
}

/* ============================================================
	15) FOOTER
============================================================ */
.site-footer {
	background: #000;
	color: var(--muted);
	padding: 16px 0;
}

.footer-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: clamp(16px, 4vw, 48px);
	flex-wrap: wrap;
}

.footer-nav {
	display: flex;
	justify-content: center;
	align-items: center;
	gap: clamp(14px, 4vw, 40px);
	text-align: center;
}

.footer-nav a {
	text-decoration: none;
	font-weight: 300;
	font-size: 14px;
	color: var(--muted);
}

.footer-nav a:hover {
	text-decoration: underline;
}

.footer-copy {
	font-weight: 300;
}

/* ============================================================
	16) LEGAL PAGES
============================================================ */

body.legal-page {
	background: var(--bg-page);
}

/* Abstand nach oben wegen Sticky Header + Scrollbar */
.legal-main {
	padding-top: calc(var(--header-h) + 40px);
}

/* Jede Legal-Sektion: gleiche Seitenränder & Scroll-Anker */
.legal-section {
	max-width: var(--container);
	margin: 0 auto 80px;
	padding: 0 var(--pad-x);
	scroll-margin-top: calc(var(--header-h) + 24px);
}

/* Titelbilder (Urheberrecht / Datenschutz / Impressum)
   → exakt auf Textkante ausgerichtet */
.legal-title-img {
	display: block;
	width: 100%;
	height: auto;
	max-width: 900px;	/* gleiche Breite wie .legal-inner */
	margin: 0 auto 32px;
}

/* Impressum-Titel ggf. etwas schmaler */
.legal-title-imprint {
	max-width: 900px;
}

/* Textcontainer */
.legal-inner {
	max-width: 900px;
	margin: 0 auto;
}

/* Überschriften linksbündig */
.legal-inner h2,
.legal-inner h3 {
	text-align: left;
}

/* Section-Überschrift */
.legal-inner h2 {
	margin: 28px 0 12px;
	font-size: 16px;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--text);
	font-weight: 400;
}

/* Unterüberschrift */
.legal-inner h3 {
	margin: 18px 0 8px;
	font-size: 16px;
	text-transform: uppercase;
	color: var(--text);
	font-weight: 500;
}

/* Fließtext: Blocksatz, ruhig, gut lesbar */
.legal-inner p {
	margin: 0 0 14px;
	font-size: 18px;
	line-height: 1.55;
	color: var(--text);
	font-weight: 300;

	text-align: justify;
	text-justify: inter-word;

	hyphens: auto;
	-webkit-hyphens: auto;
	-ms-hyphens: auto;
}

/* Mail- & Telefonlinks neutral halten */
.legal-inner a[href^="mailto"],
.legal-inner a[href^="tel"] {
	color: inherit;
	text-decoration: none;
	font-weight: inherit;
}

.legal-inner a[href^="mailto"]:hover {
	text-decoration: underline;
}

/* Optionaler Hinweistext (z. B. Quellenangabe) */
.legal-note {
	margin-top: 24px;
	font-size: 16px;
	opacity: 0.85;
}

/* ============================================================
	17) RESPONSIVE
============================================================ */
@media (max-width: 768px) {
	:root {
		--header-h: 30px;
	}

	.nav-toggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}

	.nav {
		position: static;
		display: flex;
		flex-direction: row;
		align-items: center;
		gap: clamp(32px, 6vw, 98px);
		padding: 0;
		background: none;
		border: 0;
	}

	.nav a {
		font-size: 14px;
	}

	.nav a::after {
		bottom: -1px;
		height: 4px;
	}

	.site-header.is-open .nav {
		display: flex;
	}

	.contact-grid {
		grid-template-columns: 1fr;
		row-gap: 8px;
		column-gap: 0;
		justify-items: center;
		text-align: center;
	}
	
	.portfolio-bg {
	background-image: url("../img/Portfolio_Mobil_Hintergrund.webp");
	}
	
}

/* ============================================================
	18) REDUCED MOTION
============================================================ */
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	.nav a::after,
	.showreel-play-btn-img {
		transition: none !important;
	}
}


