@import url('general-sans.css');

:root {
	--yellow:#ffe400;
	--dgreen:#3e692d;
	--red:#c64040;
	--nav_width:400px;
	--page_max_width:min(1600px,100vw);
	--padding:clamp(1rem,5vw,3rem);
	--global_block_padding:clamp(3rem,6vw,6rem);
	--global_inline_padding:clamp(2rem,6vw,6rem);
	--global_padding:var(--global_block_padding) var(--global_inline_padding);
}

html {
	scroll-behavior: smooth;
	scrollbar-gutter:stable;
}

.group:after {
  content: "";
  display: table;
  clear: both;
}

* {
    padding:0;
    margin:0;
    box-sizing: border-box;
	font-family:inherit;
	color:inherit;
}

img {
	vertical-align:middle;
	max-width:100%;
	height:auto;
	background-repeat: no-repeat;
	background-size:cover;
	font-style: italic;
	shape-margin:1rem;
}

.no-select {
	user-select:none;
}

.wrap {
  position:relative;
  box-sizing: content-box;
  max-inline-size:min(var(--page_max_width),100%);
  padding:0 1rem;
  margin-inline:auto;
  clear:both;
}

.freckle {
	font-family: "Freckle Face", system-ui;
}

header {
	position:fixed;
	z-index:100;
	width:100%;
	max-inline-size:min(var(--page_max_width),100%);
	left: calc((100vw - var(--page_max_width))/2);
	top:0;
	color:#fff;
	padding-block:3rem;
	padding-inline:var(--global_inline_padding);
	z-index:100;
	background-color:transparent;
	box-shadow:0 10px 10px #0000;
	transition:background-color 0.5s ease-out, padding 0.5s ease-out,box-shadow 0.5s;

	display:grid;
	grid-template-columns: 300px 1fr max-content;
	gap:1rem;
	align-items: center;
	justify-self:center;

	&.smaller {
		padding-block:1rem;
		box-shadow:0 10px 10px #0001;
		background-color:var(--bg_colour);

		&::after {
			opacity:1;
		}
	}

	&::after {
        content:'';
        position:absolute;
        left:0;
        top:100%;
        height:0.25rem;
        width:100%;
        background-image:url('../img/rip.svg');
        background-repeat: repeat-x;
		background-position-x: 175px;
		opacity:0;
		transition:opacity 0.5s ease;
    }
}

.skip-nav-link {
	position:absolute;
	left:1rem;
	top:0;
	background-color:#000;
	color:#fff;
	padding:0.5rem 1.5rem;
	border-radius: 0 0 0.25rem 0.25rem;
	z-index:100;
	transform:translateY(-120%);
	transition:transform 0.325s ease-out;
}

	.skip-nav-link:focus {
		transform:translateY(0);
	}

::selection {
	background-color:#000;
	color:#fff;
}

:focus-visible {
	outline:2.5px dotted var(--yellow);
	outline-offset: 1px;
}

#burger {
  display:none;
}

body {
	background-color:var(--bg_colour);
	color:var(--body_text_colour);
	font-family: 'GeneralSans-Variable',sans-serif;
}

#logo {
	width:100%;
	& img {
		width:100%;
	}
}

header {
	clear:left;
    width:100%;

	& nav {
		& ul {
			list-style:none;
			& li {
				& a {
					text-decoration: none;
					font-size:1rem;
					padding:1rem;

					&:hover,
					&.active {
						color:var(--yellow);
					}
				}
			}
		}
	}
}


/* --- Burger Trigger (Accessible Button) --- */
#burger-trigger {
    display: none; /* Hidden on desktop */
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.5rem;
    z-index: 1100;
}

#burger-trigger img {
    width: 30px;
    filter: brightness(1000%);
}

/* --- Navigation List --- */
.nav-list {
    list-style: none;
    display: flex;
    justify-content: center;
    align-items: center;
}

.nav-list li {
    position: relative;
    display: flex;
    align-items: center;
}

.nav-list a {
    text-decoration: none;
    padding: 1rem;
    font-size: 0.9rem;
    display: block;
    transition: color 0.2s;
}

/* Submenu Toggles (Arrows) */
.submenu-toggle {
    background: none;
    border: none;
    cursor: pointer;
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s;
}

.submenu-toggle::after {
    content: '';
    width: 3.5px;
    height: 3.5px;
    border-right: 2px solid #fff;
    border-bottom: 2px solid #fff;
    transform: rotate(45deg);
    display: block;
	margin-top:-4px;
	transition:transform 0.25s ease-out, margin-top 0.25s ease-out;
}

.submenu-toggle[aria-expanded="true"]::after {
	transform:rotate(-135deg);
	margin-top:2px;
	border-color:var(--lime_green);
}

/* --- Desktop Dropdown Logic --- */
@media (min-width: 1025px) {
    .submenu {
        position: absolute;
        top: 100%;
        left: 0;
        background-color: var(--dgreen);
        min-width: 250px;
        display: none; /* Default hidden */
        box-shadow: 0 10px 15px rgba(0,0,0,0.3);
    }

    .submenu .submenu {
        left: 100%;
        top: 0;
    }

    li:hover > .submenu,
    .submenu.is-visible {
        display: block;
    }
    
    .nav-list li:has(.submenu) > a {
        padding-right: 0;
    }

	.nav-list li:has(.submenu) {
        padding-right: 1rem;
    }

	.submenu .submenu-toggle::after {
		transform: rotate(-45deg);
		margin-top:2px;
	}

	.submenu .submenu-toggle[aria-expanded="true"]::after {
		transform: rotate(135deg);
	}
}

/* --- Mobile Modal (Slide-in) --- */
@media (max-width: 1099px) {
    #burger-trigger {
        display: block;
        order: 3;
    }

    #main-navigation {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        width: var(--nav_width);
        max-width: 85vw;
        background-color: var(--dgreen);
        padding: 5rem 2rem;
        z-index: 1000;
		height:100vh;
        
        /* Slide hidden state */
        transform: translateX(100%);
        visibility: hidden;
        transition: transform var(--transition), visibility var(--transition);
        box-shadow: -10px 0 30px rgba(0,0,0,0.5);
        overflow-y: auto;
    }

    #main-navigation.is-open {
        transform: translateX(0);
        visibility: visible;
    }

    .nav-list {
        flex-direction: column;
        align-items: flex-start;
    }

    .nav-list li {
        width: 100%;
        flex-wrap: wrap;
    }

    .nav-list a {
        padding-block: 0.75rem;
        width: 100%;
        font-size: 1.1rem;
    }

    /* Mobile Submenu Expansion */
    .submenu {
        display: none;
        width: 100%;
        padding-left: 1.5rem;
        border-left: 1px solid var(--mid_green);
    }

    .submenu.is-visible {
        display: block;
    }

    .submenu-toggle {
        position: absolute;
        right: 0;
        top: 0.5rem;
        width: 44px; /* Minimum WCAG Touch Target */
        height: 44px;
    }

    .submenu-toggle[aria-expanded="true"] {
        transform: rotate(180deg);
    }
}

.fcw {
  float:left;
  clear:left;
  width:100%;
}

h1,h2,h3,h4,h5,h6 {
	margin-bottom:1lh;
	line-height:1;
	text-wrap:balance;
	color:var(--headings_colour);
	font-family: "Freckle Face", system-ui;
}

h1 {
	font-size:clamp(2.5rem,5vw,6rem);
}

h3 {
	font-size: clamp(1.3rem,2vw,1.8rem);
}

main {
	padding-top:177px;

	& :is(p,li){
		font-size:1rem;
		line-height:1.6;
		margin-bottom:1lh;
		clear:left;
		text-wrap:pretty;
	}

	& :is(ol,ul){
		margin-block:2rem;
		padding-left:1rem;

		& li {
			padding-left:1rem;
		}
	}

	& ul {
        list-style:none;

        & li::before {
            content:url('../img/bullet-black.svg');
            position: absolute;
            width: 0.7rem;
            margin-left: -1.5rem;
            margin-top: -0.1rem;
        }
    }
}


.b_theme {
    background-color:#000;
    background-image:url('../img/floor_pattern.svg');
    background-size:200px;

    & *::selection {
        background-color: var(--yellow);
        color:#000;
    }

    &::before,
    &::after {
        content:'';
        position:absolute;
        left:0;
        top:0;
        height:0.5rem;
        width:100%;
        background-image:url('../img/rip.svg');
        background-repeat: repeat-x;
    }

    &::after {
        scale:-1 -1;
        top:unset;
        bottom:0;
        background-position-x: 150px;
    }

	& ul {
		& li::before {
			content:url('../img/bullet-yellow.svg');
		}
	}

	&.no_tear {
		&::before,
		&::after {
			display:none;
		}
	}
}

.btn {
	display:inline-block;
	text-decoration: none;
	font-family: "Freckle Face", system-ui;
	font-size:clamp(1rem,2vw,1.4rem);
	padding:0.5rem 1.75rem 0.5rem 2rem;
	border-radius:100rem;
	background-color:transparent;
	outline:none;
	border:none;
	transition-property: background-color, color, border-color;
	transition-duration: 0.15s;
	transition-timing-function: ease-out;
	cursor: pointer;

	&:focus-visible {
		outline:2.5px dotted var(--yellow);
		outline-offset: 1px;
	}

	&::after {
		content:'>';
		margin-left:0.5rem;
		margin-right:0.25rem;
		transition:margin 0.25s ease-out;
	}

	&.yellow-btn {
		color:#000;
		background-color:var(--yellow);
		border:3px solid var(--yellow);
	}
	&.yellow-outline-btn {
		color:var(--yellow);
		border:3px solid var(--yellow);
	}
	&.black-btn {
		color:var(--yellow);
		background-color:#000;
		border:3px solid #000;
	}
	&.black-outline-btn {
		color:#000;
		border:3px solid #000;
	}
	&.red-btn {
		color:#fff;
		background-color:var(--red);

		&:hover {
			background-color:#ff2b2b;
		}
	}

	&.no-arrow {
		&::after,
		&::before {
			display:none;
		}
		padding-inline:2rem;
	}

	&:hover {
		&::after {
			margin-inline:0.75rem 0;
		}
		&.yellow-btn {
			background-color:#fff;
			border-color:#fff;
		}
		&.yellow-outline-btn,
		&.black-outline-btn {
			border-color:#fff;
			color:#fff;
			background-color:#fff1;
		}
		&.black-btn {
			background-color:#fff;
			border-color:#fff;
			color:#000;
		}
	}
}

.align_left {float:left;}
.align_right { float:right;}
.align_center {text-align: center;}
img.align_left {margin:0.5rem 1rem 1rem 0;}
img.align_right {margin:0.5rem 0 1rem 1rem;}
img.align_center {
	display:block;
  	margin-left:auto;
  	margin-right:auto;
}

.custom-checkbox {
	position:relative;
	& input {
		position:absolute;
		inset:0;
		opacity:0;
		width:100%;
		height:100%;
		z-index:2;
		cursor: pointer;
	}
	& img {
		filter:grayscale(100%) brightness(1000%);
	}

	&:hover,
	&:has(input:checked) {
		& img {
			filter:grayscale(0%) brightness(100%);
		}
	}
}

input,textarea,label,hr{
	display:block;
	clear:left;
	width:100%;
}

input,textarea {
	background-color:#fff;
	border:none;
	padding:0.75rem;
	font-size:1rem;
	border-radius:0.75rem;
	color:#000;
}

label {
	color:var(--headings_colour);
	font-family: "Freckle Face", system-ui;
	margin-bottom:0.5rem;
}

form button {
	
	cursor:pointer;
}

	form button:hover {
		background-color: hsl(from var(--colour1) h s 110% / 1); /* includes opacity at end */
	}

.errortext {
	color:red;
	font-weight:bold;
}
  
footer {
	width:100%;
  	clear:both;
	text-align: center;
	padding:2rem var(--global_inline_padding);

	& .bar {
		padding-inline:0.5rem;
	}

	& a {
		text-decoration: none;

		&:hover {
			color:var(--yellow);
		}
	}
}

.cookies {
	container-name: cookies-popup;
	container-type: inline-size;
	position:fixed;
	padding:1.5rem;
	color:#fff;
	text-align: center;
	z-index:9999;
	box-shadow:0 10px 15px #0003;
	background-color:#000;
	border-radius:0.5rem;

	&.b_theme {
		&::after,
		&::before {
			display:none;
		}
	}

	& .cookie-text {
		margin-bottom:1rem;
	}

	& .buttons {
		display:grid;
		grid-template-columns: 1fr 1fr;
		align-items: center;
		gap:1rem;
	}

	& h3 {
		margin-bottom:0.5rem;
	}

	& p {
		font-size:0.9rem;
	}

	&.bar-bottom {
		bottom:0;
		left:0;
		width:100%;
		display:grid;
		grid-template-columns: 1fr max-content;
		gap:1rem;

		& .cookie-text {
			text-align: left;
		}
	}

	&.box-bottomleft,
	&.box-bottomright,
	&.box-centre {
		left:1rem;
		bottom:1rem;
		width:min(400px,100%);
	}
	&.box-bottomright {
		left:unset;
		right:1rem;
	}
	&.box-center {
		inset:unset;
		width:min(400px,100%);
		left:50%;
		top:50%;
		transform:translate(-50%,-50%);
	}
}

.htmx-indicator,
.htmx-indicator-calendar {
    position:fixed;
    display:grid;
    place-content: center;
    left:0;
    top:0;
    width:100%;
    height:100%;
    z-index:6;
    text-align: center;
    pointer-events: none;

    & img {
        width:2.5rem;
        margin-inline:auto;
    }
}

.htmx-indicator-calendar {
	position:absolute;
}

.spin {
	animation: spin 3s linear infinite;
}

@keyframes spin {
	from {transform:rotate(0deg);}
	to {transform:rotate(360deg);}
}

.anim-delay {
    animation-delay: calc(var(--delay) * 0.15s);
}

.slide_from_bottom,
.slide_from_top,
.slide_from_left,
.slide_from_right,
.fade_in {
	opacity:0;
	animation-duration: 1s;
	animation-iteration-count:1;
	animation-fill-mode: forwards;
	animation-timing-function: var(--ease_out);
}

.slide_from_top.run {
	animation-name: slide_from_top;
}

.slide_from_bottom.run {
	animation-name: slide_from_bottom;
}

.slide_from_left.run {
	animation-name: slide_from_left;
}

.slide_from_right.run {
	animation-name: slide_from_right;
}

.fade_in.run {
	animation-name: fade_in;
}

@keyframes slide_from_bottom {
	0% {opacity: 0; transform: translateY(100px);}
	100%{opacity:1; transform: translateY(0);}
}
@keyframes slide_from_top {
	0% {opacity: 0; transform: translateY(-100px);}
	100%{opacity:1; transform: translateY(0);}
}
@keyframes slide_from_left {
	0% {opacity: 0; transform: translateX(-100px);}
	100%{opacity:1; transform: translateX(0);}
}
@keyframes slide_from_right {
	0% {opacity: 0; transform: translateX(100px);}
	100%{opacity:1; transform: translateX(0);}
}
@keyframes fade_in {
	0% {opacity: 0;}
	100%{opacity:1;}
}

@media screen and (max-width:900px) {
	
}