/*
Theme Name: SigmaDruk Theme
Theme URI: https://sigmadruk.pl
Author: SigmaDruk
Author URI: https://sigmadruk.pl
Description: Custom theme dla SigmaDruk - sklep z drukiem wielkoformatowym.
Version: 1.1.7
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: sigmadruk
Tags: woocommerce, custom-logo, custom-menu, featured-images

SigmaDruk Theme - czysty custom theme bez page builderów.
*/

/* ==========================================================================
   CSS RESET
   ========================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

* {
	margin: 0;
	padding: 0;
}

html {
	-webkit-text-size-adjust: 100%;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	scroll-behavior: smooth;
}

body {
	min-height: 100vh;
	line-height: 1.5;
	text-rendering: optimizeSpeed;
}

img,
picture,
video,
canvas,
svg {
	display: block;
	max-width: 100%;
}

input,
button,
textarea,
select {
	font: inherit;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
	overflow-wrap: break-word;
}

ul,
ol {
	list-style: none;
}

a {
	text-decoration: none;
	color: inherit;
}

a:hover {
	color: var(--mid-navy);
}

button {
	background: none;
	border: none;
	cursor: pointer;
}

/* ==========================================================================
   CSS VARIABLES (Design Tokens)
   ========================================================================== */

:root {
	/* =================================================================
	   KOLORY - Design System SigmaDruk
	   ================================================================= */

	/* Czerwone */
	--red: #DC183D;
	--red-deep: #A8122E;
	--red-intense: #FC3B3F;

	/* Żółte */
	--warning: #FEE243;

	/* Zielone */
	--green: #207D20;

	/* Niebieskie */
	--navy: #03204D;
	--mid-navy: #1F55AA;
	--lite-navy: #A1C3F9;
	--navy-sky: #D0E9F0;
	--navy-grey: #6A7C92;

	/* Szare */
	--grey: #54595F;
	--mid-grey: #969696;
	--silver-grey: #8E8E8E;
	--lite-grey: #E5E5E5;

	/* Jasne */
	--ultra-lite-grey: #F9F9F9;
	--pure-white: #FFFFFF;

	/* Ciemne */
	--deep-grey: #353535;
	--black-navy: #0E1117;
	--black: #000000;

	/* =================================================================
	   TYPOGRAFIA
	   ================================================================= */

	--f-p: "Poppins";
	--f-i: "Inter";
	--f-f-p: 'Poppins',Verdana,sans-serif;

	/* Headings */
	--h-xxl: clamp(2rem, 1.7rem + 1.5vw, 3.5rem);
	--h-xl: clamp(2rem, 1.74rem + 1.15vw, 3.125rem);
	--h-xl-lh: clamp(2rem, 1.74rem + 1.15vw, 3.125rem);
	--h-l: clamp(1.75rem, 1.577rem + 0.7692vw, 2.5rem);
	--h-l-lh: clamp(1.75rem, 1.577rem + 0.7692vw, 2.5rem);
	--h-m: clamp(1.375rem, 1.275rem + 0.5vw, 1.875rem);
	--h-m-lh: clamp(1.375rem, 1.275rem + 0.5vw, 1.875rem);
	--h-s: clamp(1.25rem, 1.225rem + 0.125vw, 1.375rem);
	--h-s-lh: clamp(1.25rem, 1.225rem + 0.125vw, 1.375rem);

	/* Body Text */
	--b-l: clamp(1rem, 0.975rem + 0.125vw, 1.125rem);
	--b-l-lh: clamp(1.5rem, 1.35rem + 0.75vw, 2.25rem);
	--b-m: clamp(0.8125rem, 0.7869rem + 0.1282vw, 0.9375rem);
	--b-m-lh: clamp(1.25rem, 1.1788rem + 0.3205vw, 1.5rem);
	--b-15: 0.9375rem;
	--b-s: 0.875rem;
	--b-12: 0.75rem;

	/* Special */
	--button-text: 0.9375em;
	--price-text: 20px;
	--badge-text: 10px;
	--letter-spacing: -0.3px;

	/* =================================================================
	   BORDER RADIUS
	   ================================================================= */

	--r-5: 5px;
	--r-10: 10px;
	--r-15: 15px;
	--r-20: 20px;
	--r-30: 30px;
}

/* ==========================================================================
   BASE STYLES
   ========================================================================== */

body {
	font-family: var(--f-f-p);
	font-size: 16px;
	line-height: 1.6;
	color: var(--black);
	background-color: var(--pure-white);
}

.container {
	width: calc(100% - 40px);
	max-width: 1200px;
	margin: 0 auto;
	padding: 0;
}

.container-wide-content {
	width: calc(100% - 40px);
	margin: 0 auto;
	padding: 0;
}

/* Responsive container width */
@media (min-width: 768px) {
	.container {
		width: calc(100% - 60px);
	}

	.container-wide-content {
		width: calc(100% - 80px);
	}
}

@media (min-width: 1024px) {
	.container {
		width: calc(100% - 300px);
	}

	.container-wide-content {
		width: calc(100% - 160px);
	}
}

@media (max-width: 1366px) {
	.container {
		width: calc(100% - 100px);
		max-width: 100%;
	}
}

@media (min-width: 1536px) {
	.container {
		width: calc(100% - 200px);
	}

	.container-wide-content {
		width: calc(100% - 200px);
	}

	.container {
		width: calc(100% - 300px);
		max-width: calc(100% - 300px);
	}
}

.seo .container-wide-content {
	margin: 0 auto;
}

/* ==========================================================================
   CUSTOM WYSIWYG FORMATS (TinyMCE)
   ========================================================================== */

/* --- Zobacz także --- */
.seo .zobacz-takze {
	margin: 2rem 0;
	padding: 1.5rem;
	background-color: var(--ultra-lite-grey);
	border-left: 4px solid var(--mid-grey);
	border-radius: var(--r-5);
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
	color: var(--mid-grey);
}

.seo .zobacz-takze h4 {
	font-size: 1.2rem;
	font-weight: 600;
	color: var(--black);
}

.seo .zobacz-takze p:first-of-type {
	margin-bottom: 0;
}

.seo .zobacz-takze p:not(:first-of-type) {
	margin-top: 20px;
}

.seo .zobacz-takze p a {
	padding-left: 25px;
	position: relative;
}

.seo .zobacz-takze p a::before {
	content: "→";
	position: absolute;
	left: -1px;
	top: -3px;
	display: block;
}

/* ==========================================================================
   BUTTONS — Globalny system przycisków
   Użycie: <a class="btn btn-red">...</a>
   Warianty: btn-red, btn-red-border, btn-black, btn-black-border,
             btn-grey-border, btn-white, btn-transparent, btn-mid-navy
   Ikona SVG wewnątrz .btn jest stylowana automatycznie (bez dodatkowej klasy)
   ========================================================================== */

.btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 15px 30px;
	font-family: var(--f-f-p);
	font-size: var(--button-text);
	font-weight: 500;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 8px;
	border: 2px solid transparent;
	transition: all 0.3s ease;
	cursor: pointer;
}

.btn:hover {
	transform: scale(1.05);
}

.btn svg {
	width: 14px;
	height: 14px;
	flex-shrink: 0;
}

/* Red — wypełniony czerwony */
.btn-red {
	background-color: var(--red);
	color: var(--pure-white);
}

.btn-red:hover {
	background-color: var(--red-deep);
	color: var(--pure-white);
}

/* Red border — czerwona ramka, transparent */
.btn-red-border {
	background-color: transparent;
	color: var(--pure-white);
	border-color: var(--red);
}

.btn-red-border:hover {
	background-color: var(--red);
	color: var(--pure-white);
}

/* Black — wypełniony czarny */
.btn-black {
	background-color: var(--black);
	color: var(--pure-white);
	border-color: var(--black);
}

.btn-black:hover {
	background-color: var(--red-deep);
	border-color: var(--red-deep);
	color: var(--pure-white);
}

/* Black border — czarna ramka, transparent */
.btn-black-border {
	background-color: transparent;
	color: var(--black);
	border-color: var(--black);
}

.btn-black-border:hover {
	background-color: var(--black);
	color: var(--pure-white);
}

/* Grey border — szara ramka, transparent */
.btn-grey-border {
	background-color: transparent;
	color: var(--black);
	border-color: var(--mid-grey);
}

.btn-grey-border:hover {
	background-color: var(--mid-grey);
	color: var(--pure-white);
}

/* White — wypełniony biały */
.btn-white {
	background-color: var(--pure-white);
	color: var(--black);
	border-color: var(--pure-white);
}

.btn-white:hover {
	background-color: var(--lite-grey);
	border-color: var(--lite-grey);
	color: var(--black);
}

/* Transparent — bez ramki, bez tła, hover: lekko szare */
.btn-transparent {
	background-color: transparent;
	color: var(--grey);
	border-color: transparent;
}

.btn-transparent:hover {
	background-color: var(--lite-grey);
	color: var(--black);
}

/* Mid Navy — wypełniony niebieski */
.btn-mid-navy {
	background-color: var(--mid-navy);
	color: var(--pure-white);
	border-color: var(--mid-navy);
}

.btn-mid-navy:hover {
	background-color: var(--navy);
	border-color: var(--navy);
	color: var(--pure-white);
}

/* Responsive buttons */
@media (max-width: 1024px) {
	.btn {
		padding: 12px 20px;
	}
}

@media (max-width: 480px) {
	.btn {
		padding: 10px 18px;
		font-size: var(--b-s);
	}
}

/* ==========================================================================
   TYPOGRAPHY
   ========================================================================== */

h1, h2, h3, h4, h5, h6 {
	font-weight: 600;
	line-height: 1.2;
	margin-bottom: 1rem;
}

h1 {
	font-size: var(--h-xl);
}

h2 {
	font-size: var(--h-l);
}

h3 {
	font-size: var(--h-m);
}

h4 {
	font-size: var(--h-s);
}

p {
	margin-bottom: 1rem;
}

/* ==========================================================================
   UTILITIES
   ========================================================================== */

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border-width: 0;
}

.skip-link {
	position: absolute;
	top: -40px;
	left: 0;
	background: var(--black);
	color: var(--pure-white);
	padding: 8px 16px;
	text-decoration: none;
	z-index: 100000;
}

.skip-link:focus {
	top: 0;
}

/* ==========================================================================
   BREADCRUMBS
   ========================================================================== */

/* Breadcrumbs w page-title-bar - wtopiony w lewy górny róg */
.page-title-bar .breadcrumbs {
	position: absolute;
	bottom: 0;
	left: 0;
	background-color: #ffffff;
	border-top-right-radius: 20px;
	padding: 0 40px 0 100px;
	height: 50px;
	display: flex;
	align-items: center;
	margin: 0;
}

/* Pseudo-elementy tworzące iluzję wycięcia w rogach */
.page-title-bar .breadcrumbs::before {
	content: "";
	position: absolute;
	top: -40px;
	left: 0;
	width: 20px;
	height: 40px;
	background-color: transparent;
	border-bottom-left-radius: 20px;
	box-shadow: 0 20px 0 0 #ffffff;
}

.page-title-bar .breadcrumbs::after {
	content: "";
	position: absolute;
	bottom: 0;
	right: -40px;
	width: 40px;
	height: 20px;
	background-color: transparent;
	border-bottom-left-radius: 20px;
	box-shadow: -20px 0 0 0 #ffffff;
}

.breadcrumbs-list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0;
	list-style: none;
	margin: 0;
	padding: 0;
}

.breadcrumbs-item {
	display: inline-flex;
	align-items: center;
	font-size: 13px;
	color: var(--grey);
}

.breadcrumbs-item a {
	color: var(--mid-grey);
	text-decoration: none;
	transition: color 0.2s ease;
}

.breadcrumbs-item a:hover {
	color: var(--mid-navy);
}

.breadcrumbs-item--current {
	color: var(--black);
	font-weight: 500;
}

/* Separator jako ::after - tylko wizualna dekoracja */
.breadcrumbs-item:not(:last-child)::after {
	content: "/";
	display: inline-block;
	margin: 0 8px;
	color: var(--mid-grey);
	font-size: 10px;
}

/* Responsive - Tablet (1024px) */
@media (max-width: 1024px) {
	.page-title-bar .breadcrumbs {
		padding: 0 35px;
		height: 48px;
	}

	.breadcrumbs-item {
		font-size: 12px;
	}

	.breadcrumbs-item:not(:last-child)::after {
		margin: 0 7px;
		font-size: 11px;
	}
}

/* Responsive - Tablet Portrait (768px) */
@media (max-width: 768px) {
	.page-title-bar .breadcrumbs {
		padding: 0 30px;
		height: 45px;
		border-top-right-radius: 15px;
	}

	.breadcrumbs-item {
		font-size: 12px;
	}

	.breadcrumbs-item:not(:last-child)::after {
		margin: 0 6px;
		font-size: 11px;
	}
}

/* Responsive - Mobile Landscape (480px) */
@media (max-width: 480px) {
	.page-title-bar .breadcrumbs {
		padding: 0 20px;
		height: 40px;
		border-top-right-radius: 15px;
	}

	.breadcrumbs-item {
		font-size: 12px;
	}

	.breadcrumbs-item:not(:last-child)::after {
		margin: 0 5px;
		font-size: 11px;
	}
}

/* Responsive - Mobile Portrait (360px) */
@media (max-width: 359px) {
	.page-title-bar .breadcrumbs {
		padding: 0 15px;
		height: 38px;
		border-top-right-radius: 15px;
	}

	.breadcrumbs-item {
		font-size: 12px;
	}

	.breadcrumbs-item:not(:last-child)::after {
		margin: 0 4px;
		font-size: 11px;
	}
}

/* ==========================================================================
   PAGE TITLE BAR (Universal for all pages)
   ========================================================================== */

.page-title-bar {
	margin: -20px 50px 0;
}

.page-title-bar-container {
	background: linear-gradient(180deg, #000000 25%, #313131 100%);
	border-radius: 0 0 20px 20px;
	padding: 30px 100px 20px 100px;
	min-height: 160px;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	position: relative;
}

.page-title-bar-content {
	display: flex;
	align-items: center;
	gap: 0 100px;
	flex-wrap: wrap;
}

.page-title-bar-title {
	font-size: var(--h-xl);
	font-weight: 600;
	color: var(--pure-white);
	margin: 0;
	line-height: 1.2;
}

.page-title-bar-description {
	font-size: var(--b-m);
	color: var(--mid-grey);
	margin: 0;
	line-height: var(--b-m-lh);
}

/* Responsive - Large Laptop (1536px) */
@media (max-width: 1536px) {
	.page-title-bar {
		margin: -20px 20px 0;
	}

	.page-title-bar-container {
		padding: 30px 30px 20px 30px;
	}

	.page-title-bar .breadcrumbs {
		padding: 0 30px 0 30px;
	}
}

/* Responsive - Tablet (1024px) */
@media (max-width: 1024px) {
	.page-title-bar-container {
		padding: 20px 30px 20px 30px;
	}

	.page-title-bar-title {
		width: 100%;
	}

	.page-title-bar-description {
		padding-bottom: 50px;
	}
}

/* Responsive - Tablet Portrait (768px) */
@media (max-width: 768px) {
	.page-title-bar {
		margin: -20px 0 0;
	}

	.page-title-bar .breadcrumbs {
		padding: 0 20px;
	}

	.page-title-bar-container {
		padding: 15px 20px 0px 20px;
		min-height: 0;
	}

	.page-title-bar-content {
		flex-direction: column;
		align-items: flex-start;
		gap: 0px;
	}

	.page-title-bar-description {
		font-size: var(--b-m);
		padding-bottom: 55px;
	}
}

/* Responsive - Mobile Landscape (480px) */
@media (max-width: 480px) {
	.page-title-bar .breadcrumbs {
		padding: 0 20px;
	}

	.page-title-bar-container {
		padding: 15px 20px 0px;
		min-height: 135px;
	}
}

/* Responsive - Mobile Portrait (360px) */
@media (max-width: 359px) {
	.page-title-bar-description {
		font-size: var(--b-m);
	}
}

/* ==========================================================================
   UTILITY CLASSES
   ========================================================================== */

.bold {
	font-weight: 600;
}

.bottom-space {
	padding-bottom: 100px;
}

/* ==========================================================================
   INTRO SECTION (globalny komponent H2 + subtitle)
   ========================================================================== */

.intro {
	padding: 50px 0;
	background: var(--ultra-lite-grey);
	margin: 50px 50px 0 50px;
	border-radius: 20px;
}

.intro .container {
	width: calc(100% - 40px);
}

.intro-inner {
	display: flex;
	align-items: flex-end;
	gap: 25px;
}

.intro-heading {
	font-size: var(--h-l);
	font-weight: 600;
	color: var(--black);
	margin: 0;
}

.intro-subtitle {
	font-size: var(--b-m);
	font-weight: 300;
	color: var(--grey);
	margin: 0;
	padding-bottom: 10px;
	line-height: var(--b-m-lh);
}

.intro-description {
	margin-top: 20px;
	max-width: 65%;
}

.intro-description p {
	font-size: var(--b-m);
	line-height: 28px;
	color: var(--grey);
	margin: 0;
}

@media (max-width: 1536px) {
	.intro {
		padding: 40px 0;
		margin: 20px 20px 0 20px;
	}

	.intro .container {
		width: 100%;
		margin: 0 30px;
	}
}

@media (max-width: 1366px) {
	.intro .container {
		width: calc(100% - 60px);
	}
}

@media (max-width: 1024px) {
	.intro {
		padding: 20px 0px;
		margin: 20px 20px 0 20px;
	}

	.intro .container {
		width: calc(100% - 0px);
	}

	.intro-inner {
		flex-direction: column;
		align-items: flex-start;
		gap: 0;
	}

	.intro-description {
		max-width: 100%;
	}
}

@media (max-width: 768px) {
	.intro {
		padding: 15px 0;
		margin: 20px 20px 0 20px;
	}

	.intro .container {
		width: 100%;
		margin-left: 20px;
	}


	.intro-subtitle {
		padding-bottom: 0;
	}
}

@media (max-width: 480px) {
	.intro {
		margin: 20px 20px 0 20px;
	}

	.container {
		width: calc(100% - 40px);
		max-width: 100%;
	}
}

@media (max-width: 359px) {
	.intro {
		margin: 10px 10px 0 10px;
	}
}

/* ==========================================================================
   PAGE DESCRIPTION (sekcja z opisem pod intro — wspólny komponent)
   ========================================================================== */

.header-description {
	padding: 70px 0;
	background: var(--pure-white);
	max-width: 1400px;
	margin: 0 auto;
}

.header-description-inner {
	font-size: var(--b-m);
	line-height: 28px;
	color: var(--grey);
	max-width: 65%;
}

.header-description-inner p {
	margin: 0;
	line-height: var(--b-l-lh);
}

@media (max-width: 1536px) {
	.header-description {
		padding: 60px 0;
	}
}

@media (max-width: 1024px) {
	.header-description {
		padding: 50px 0;
	}
}

@media (max-width: 768px) {
	.header-description {
		padding: 40px 0;
	}

	.header-description-inner {
		max-width: 100%;
	}
}

@media (max-width: 480px) {
	.header-description {
		padding: 30px 0;
	}
}

@media (max-width: 359px) {
	.header-description {
		padding: 25px 0;
	}
}
