@charset "UTF-8";

/*
Theme Name: optheme
Theme URI: https://broikos.gr/
Author: Nikos Broikos
Author URI: https://broikos.gr/
Description: A blank canvas for developers: performance first, SEO fields built in, no bloat. Neutral black and white, system sans, nothing branded. Everything visual is a custom property, so a site is dressed by overriding tokens rather than by editing this file. [year] prints the current year.
Requires at least: 5.3
Tested up to: 6.8
Requires PHP: 7.4
Version: 2.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: optheme
Tags: one-column, accessibility-ready, custom-logo, editor-style, featured-images, footer-widgets, block-patterns, translation-ready, wide-blocks

optheme, (C) Nikos Broikos, https://broikos.gr
Distributed under the terms of the GNU GPL.
Built on the normalize rules from normalize.css, MIT.
*/

/* ==========================================================================
 * TOKENS
 *
 * The whole visual surface of the theme is these values and nothing else. A
 * site is dressed by redefining them, in the Customizer's Additional CSS or a
 * child theme, rather than by editing anything below this block: override
 * --op-accent and every button, link and focus ring follows.
 *
 * The shipped set is black, white and five greys. That is a deliberate default
 * rather than an unfinished one: it reads as a decision on any site, it never
 * clashes with a brand that has not been applied yet, and it makes anything
 * left unstyled obvious instead of merely tinted.
 * ========================================================================== */

:root{
	--op-bg:#ffffff;
	--op-ink:#111111;
	--op-muted:#5f5f5f;
	--op-faint:#8a8a8a;
	--op-line:#e6e6e6;
	--op-wash:#f5f5f5;
	--op-accent:#111111;
	--op-on-accent:#ffffff;

	/* Header and overlay menu. The overlay is near black at 80 percent rather
	   than a flat colour, so it reads as a layer over the page underneath. */
	--op-header-bg:rgba(255,255,255,.85);
	--op-header-ink:#111111;
	--op-header-height:80px;
	--op-overlay-bg:rgba(0,0,0,.82);
	--op-overlay-ink:#ffffff;

	/* One sans stack, no webfont. A theme that ships a typeface makes the first
	   paint wait for a download and forces a face on every site that uses it.
	   Noto Sans Greek is named explicitly: without it a Latin only system face
	   drops Greek words through to the browser's serif default. */
	--op-font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Noto Sans Greek",sans-serif;
	--op-font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;

	--op-measure:1100px;
	--op-gutter:20px;
	--op-radius:0px;
}

*, *:focus, *:active, *:focus *, *:active * {
    outline: none !important;
	-webkit-tap-highlight-color: transparent !important;
}

img::selection {
  color: inherit;
  background: inherit;
}
img{
	display: block;
	width: 100%;
}


html *{
	box-sizing: border-box;
}
html {
	line-height: 1.3; /* 1 */
	-webkit-text-size-adjust: 100%; /* 2 */
}

body {
	margin: 0;
	font-weight: normal;
	text-align: left;
}

main {
	display: block;
}

h1 {
	font-size: 2em;
	margin: 0.67em 0;
}

pre {
	white-space: pre;
	overflow-x: auto;
	font-family: monospace; /* 1 */
	font-size: 1em; /* 2 */
}

a {
	background-color: transparent;
	text-decoration-thickness: 1px;
	cursor: pointer;
	text-underline-offset: 3px;
	text-decoration-skip-ink: all;
}

a:visited {
	color: unset;
}

b, strong {
	font-weight: 700;
}

pre, code, kbd, samp {
	font-family: monospace;
	font-size: 1em;
}

small {
	font-size: 80%;
}

sub, sup {
	font-size: 75%;
	line-height: 0;
	position: relative;
	vertical-align: baseline;
}

sub {
	bottom: -0.25em;
}

sup {
	top: -0.5em;
}

img {
	border-style: none;
}

button, input, optgroup, select, textarea {
	font-family: inherit; /* 1 */
	font-size: 100%; /* 1 */
	line-height: 1.15; /* 1 */
	margin: 0; /* 2 */
	cursor: pointer;
}

button, input { /* 1 */
	overflow: visible;
}

button, select { /* 1 */
	text-transform: none;
}

button, [type=button], [type=reset], [type=submit] {
	-webkit-appearance: button;
	cursor: pointer;
}

button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner {
	border-style: none;
	padding: 0;
}

button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring {
	outline: 1px dotted ButtonText;
}

textarea {
	overflow: auto;
	width: 100%;
}


::-webkit-file-upload-button {
	-webkit-appearance: button; /* 1 */
	font: inherit; /* 2 */
}

[hidden] {
	display: none;
}

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

.clear:before, .clear:after, .entry-content:before, .entry-content:after, .comment-content:before, .comment-content:after, .site-header:before, .site-header:after, .site-content:before, .site-content:after, .site-footer:before, .site-footer:after {
	content: "";
	display: table;
	table-layout: fixed;
}


*:disabled{
	opacity: 0.7;
}


select {
	-moz-appearance: none;
	-webkit-appearance: none;
	appearance: none;
	padding: 5px 15px 5px 5px;
	background: transparent url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='%2328303d'><polygon points='0,0 10,0 5,5'/></svg>") no-repeat;
	background-position: right 5px top 60%;
}

dfn, cite, em, i {
	font-style: italic;
}


html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

#page {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

#content {
  flex: 1;
}














/*general - start*/
body{
	padding: 0;
	background: var(--op-bg);
	color: var(--op-ink);
	font-family: var(--op-font);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
.entry-content{
	max-width: 100%;
	margin: auto;
	padding: 0;
}

a{ color: inherit; }
pre, code, kbd, samp{ font-family: var(--op-font-mono); }

/* Every interactive element gets a visible ring, and it is currentColor so it
   stays visible on a dark section as well as a light one. The reset at the top
   of this file removes the browser's own outline, which would otherwise leave
   keyboard users with nothing. */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible{
	outline: 2px solid currentColor !important;
	outline-offset: 2px;
}

/* The first thing in the tab order, hidden until it is focused. */
.skip-link{
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100000;
	padding: 12px 18px;
	background: var(--op-ink);
	color: var(--op-bg);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}
.skip-link:focus{ left: 0; }

.screen-reader-text{
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px,1px,1px,1px);
	clip-path: inset(50%);
	white-space: nowrap;
}
/*general - end*/

/*header - start*/

header#masthead{
    position: fixed;
    width: 100%;
    top: 0;
    left: 0;
	background: var(--op-header-bg);
	color: var(--op-header-ink);
	z-index:999;
	backdrop-filter: saturate(1.4) blur(6px);
}
header#masthead .woocommerce-icons a{
	display: inline-block;
	margin-right: 15px;
}
header#masthead .woocommerce-icons img, header .menu-container img{
	max-height: 24px;
	width: auto;
	vertical-align: middle;
}

.header-container{
	max-width: var(--op-measure);
	margin: auto;
	display: flex;
	justify-content: space-between;
	align-items: center;
	min-height: var(--op-header-height);
	padding: 10px var(--op-gutter);
}

.header-icons{
	display: flex;
	justify-content: space-between;
	align-items: center;
}
header#masthead .site-logo img{
	max-height: 100px;
	height: auto;
	max-width: 30vw;
	width: auto;
}


.menu-container.menu-open nav{
	display: block;
}


#site-navigation{
	position: fixed;
	top: 0;
	right: 0;
	width: 100%;
	height: 100%;
	background: var(--op-overlay-bg);
	color: var(--op-overlay-ink);
	opacity: 1;
	transition-duration: 0.5s;
}

.menu-inner-container{
	height: 100%;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	max-width: 100%;
	margin: auto;
}
#primary-menu-list{
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
}

#primary-menu-list li, #primary-menu-list ul{
	display: block;
	padding: 0;
}
.sub-menu{
	padding-left: 10px !important;
	max-height: 0;
	overflow: hidden;
	transition-duration: 0.5s;
	transition: max-height 0.5s ease-in;
}

.menu-wrapper li:hover .sub-menu, .current_page_parent .sub-menu{
	transition-duration: 0.5s;
	max-height: 500px;
	overflow: visible;
	transition: max-height 0.5s ease-out;
}

#primary-menu-list a{
	text-decoration: none;
	color: var(--op-overlay-ink);
	font-size: 22px;
	margin: 5px;
	display: block;
}

.menu-bottom-container{
	color: var(--op-overlay-ink);
}
/*header - end*/

/*footer - start*/
.footer-inner{
	max-width: var(--op-measure);
	margin: auto;
	padding: 10px var(--op-gutter);
}
.footer-columns-inner{
	display: flex;
	justify-content: space-between;
}
/*footer - end*/


/* ==========================================================================
 * Post navigation
 *
 * archive.php and search.php call optheme_the_posts_navigation(), which wraps
 * core's the_posts_navigation(). Core prints the links with no styling of its
 * own, so they get the minimum needed to read as controls.
 * ========================================================================== */
.navigation.posts-navigation{
	max-width: var(--op-measure);
	margin: 40px auto;
	padding: 0 var(--op-gutter);
}
.navigation.posts-navigation .nav-links{
	display: flex;
	justify-content: space-between;
	gap: 16px;
	border-top: 1px solid var(--op-line);
	padding-top: 20px;
}
.navigation.posts-navigation a{
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
}
.navigation.posts-navigation a:hover{ text-decoration: underline; text-underline-offset: 3px; }





/* Full Width Container */
.full-width-container {
    width: 100%;
    box-sizing: border-box;
    clear: both;
}

/* Column Styles */
.column {
    box-sizing: border-box;
    float: left; /* Or you can use Flexbox or Grid based on your preference */
    padding: 0 15px;
}

.column.one {
    width: 100%;
}

.column.one_half {
    width: 50%;
}

.column.one_third {
    width: 33.3333%;
}

.column.one_fourth {
    width: 25%;
}

/* Clearfix for floated elements */
.clearfix::after {
    content: "";
    clear: both;
    display: table;
}

/* The float based .column helpers above are kept because existing pages use
   them. Anything new should use this instead: it wraps on a phone by itself,
   which the floats never did. */
.op-grid{
	display: grid;
	gap: var(--op-gutter);
	grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
}
.op-wrap{
	max-width: var(--op-measure);
	margin-inline: auto;
	padding-inline: var(--op-gutter);
}



.menu-closed #site-navigation{
    right: -100%;
}

/* The overlay covers the whole viewport, so the page behind it must not
   scroll while it is open. The class goes on <html> rather than on <body>
   because iOS Safari ignores overflow:hidden on body alone. */
html.menu-scroll-lock, html.menu-scroll-lock body{
	overflow: hidden;
	touch-action: none;
}


/* ==========================================================================
 * Under the fixed header
 *
 * #masthead is fixed, so it is out of flow and the first section of every page
 * starts underneath it. A page that opens with a full bleed hero wants exactly
 * that; a page that opens with text does not. The offset is therefore opt in,
 * put on the body by a template or a page class rather than applied to all.
 * ========================================================================== */
body.op-offset-header #content{ padding-top: var(--op-header-height); }

@media (max-width: 782px){
	:root{ --op-header-height: 64px; --op-gutter: 16px; }
	.footer-columns-inner{ flex-direction: column; gap: 24px; }
	.navigation.posts-navigation .nav-links{ flex-direction: column; }
}

@media (prefers-reduced-motion: reduce){
	*, *::before, *::after{
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}
