/* -------------------------------------------------------- */
/* VARIABLES */
/* -------------------------------------------------------- */

/* Variables are used like this: var(--text-color) */
:root {
  /* Background Colors */
  --background-color: #FFD6E4;
  --content-background-color: #fff9fb;  /* blush */
  --sidebar-background-color: #fff9fb;  /* blush */

  /* Text Colors */
  --text-color: #161B33;
  --sidebar-text-color: #161B33;
  --link-color: #474973;
  --link-color-hover: #363859;
  --heading-color: #161B33

  /* Fonts */
  --font: 'Nunito', sans-serif;
  --heading-font: 'Yeseva One', serif;
  --font-size: 16px;

  /* Spacing Scale */
  --space-1: 8px;
  --space-2: 12px;
  --space-3: 16px;
  --space-4: 24px;
  --space-5: 32px;

  /* Other */
  --margin: 16px;
  --padding: 24px;
  --border: 1px solid #e3b8c6;
  --round-borders: 18px;
  --radius-sm: 12px;
  --radius-lg: 18px;
  --sidebar-width: 200px;
}

/* -------------------------------------------------------- */
/* BASICS */
/* -------------------------------------------------------- */

* { box-sizing: border-box; }

body {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  min-height: 100vh;
  font-size: var(--font-size);
  margin: 0;
  padding: var(--space-4);
  color: var(--text-color);
  font-family: var(--font);
  line-height: 1.6;
  background: var(--background-color);
}

::selection { background: rgba(0, 0, 0, 0.2); }

mark {
  text-shadow: 1px 1px 4px var(--link-color);
  background-color: inherit;
  color: var(--text-color);
}

/* Links */
a, a:visited {
  color: var(--link-color);
  text-decoration: underline;
  text-underline-offset: 2px;
}
a:hover, a:focus {
  color: var(--link-color-hover);
  text-decoration-thickness: 2px;
}
a:focus-visible {
  outline: 3px solid rgba(75, 120, 93, 0.35); /* sage focus ring */
  outline-offset: 2px;
  border-radius: 6px;
}

/* -------------------------------------------------------- */
/* LAYOUT */
/* -------------------------------------------------------- */

.layout {
  width: 100%;                  /* full width instead of 1000px */
  max-width: 1400px;            /* optional: prevents it from getting too wide */
  margin: 0 auto;               /* center on very large screens */
  display: grid;
  grid-gap: var(--space-3);
  grid-template:
    "header header" auto
    "leftSidebar main" auto
    "footer footer" auto
    / 280px 1fr;                /* wider sidebar + main gets the rest */
}



/* Main card */
main {
  grid-area: main;
  overflow-y: auto;
  padding: var(--space-4);
  background: var(--content-background-color);
  border: var(--border);
  border-radius: var(--round-borders);
  line-height: 1.5;
  box-shadow: 0 6px 18px rgba(60, 96, 77, 0.06); /* soft sage shadow */
}

/* -------------------------------------------------------- */
/* HEADER */
/* -------------------------------------------------------- */

header {
  grid-area: header;
  font-size: 1.2em;
  border: var(--border);
  border-radius: var(--round-borders);
  background: var(--content-background-color);
  box-shadow: 0 6px 18px rgba(60, 96, 77, 0.06);
}
.header-content { padding: var(--space-4); }

.header-title {
  font-family: var(--heading-font);
  font-size: 2rem;
  font-weight: 700;
  color: var(--heading-color);
  letter-spacing: 0.2px;
}

/* -------------------------------------------------------- */
/* SIDEBARS */
/* -------------------------------------------------------- */

aside {
  grid-area: aside;
  border: var(--border);
  border-radius: var(--round-borders);
  overflow: hidden;
  background: var(--sidebar-background-color);
  padding: var(--space-4);
  color: var(--sidebar-text-color);
  box-shadow: 0 6px 18px rgba(60, 96, 77, 0.06);
}

.left-sidebar { grid-area: leftSidebar; }
.right-sidebar { grid-area: rightSidebar; }

.sidebar-title {
  font-weight: 700;
  font-size: 1.2em;
  font-family: var(--heading-font);
  color: var(--heading-color);
  letter-spacing: 0.2px;
  margin-bottom: var(--space-2);
}

.sidebar-section:not(:last-child) { margin-bottom: 3em; }
.sidebar-section ul, .sidebar-section ol { padding-left: 1.1em; }
.sidebar-section li { margin: 4px 0; }
.sidebar-section > *:not(p):not(ul):not(ol):not(blockquote) { margin-top: 10px; }

/* Sidebar Blockquote */
.sidebar-section blockquote {
  background: rgba(60, 96, 77, 0.06);
  padding: var(--space-3);
  margin: 1em 0;
  border-radius: 10px;
  overflow: hidden;
  border-left: 4px solid var(--heading-color);
}
.sidebar-section blockquote > *:first-child { margin-top: 0; }
.sidebar-section blockquote > *:last-child { margin-bottom: 0; }

/* Hide legacy toy elements if present */
marquee, .site-button { display: none !important; }

/* -------------------------------------------------------- */
/* NAVIGATION */
/* -------------------------------------------------------- */

nav { margin-bottom: 3em; }
nav .sidebar-title { margin-bottom: 0.5em; }

nav ul {
  margin: 0 -5px;
  padding: 0;
  list-style: none;
  user-select: none;
}

nav ul li { margin-bottom: 0; }

nav > ul li > a,
nav > ul li > strong { display: inline-block; }

nav > ul li > a,
nav > ul li > details summary,
nav > ul li > strong {
  padding: 6px 10px;
  border-radius: 8px;
}

nav > ul li > a.active,
nav > ul li > details.active summary { font-weight: bold; }

nav ul summary { cursor: pointer; }
nav ul ul li > a { padding-left: 30px; }

/* NAVIGATION IN HEADER */
header nav { margin-bottom: 0; }

header nav ul {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin: 0;
}

header nav ul li { position: relative; }
header nav ul li:first-child > a { padding-left: 0; }
header nav ul li:last-child > a { padding-right: 0; }

header nav ul li > a:hover { background: #fff9fb; }

/* Subnavigation (Drop-Down) */
header nav ul ul {
  background: var(--content-background-color);
  display: none;
  position: absolute;
  top: 100%;
  left: 10px;
  padding: 0.5em;
  z-index: 1;
  border: var(--border);
  min-width: 100%;
  border-radius: var(--radius-sm);
  box-shadow: 0 10px 24px rgba(60,0,0,0.10), 0 1px 5px rgba(0,0,0,0.12);
}

header nav ul li:hover ul,
header nav ul li:focus-within ul { display: block; }

header nav ul li strong {
  color: var(--link-color);
  text-decoration: underline;
  font-weight: normal;
}
header nav ul ul li a {
  display: block;
  padding-left: 0;
  padding-right: 0;
}

/* -------------------------------------------------------- */
/* CONTENT */
/* -------------------------------------------------------- */

main a, main a:visited { color: var(--link-color); }
main a:hover, main a:focus {
  color: var(--link-color-hover);
  text-decoration-style: wavy;
}

main p, main .image, main .full-width-image, main .two-columns { margin: 0.75em 0; }
main ol, main ul { margin: 0.5em 0; padding-left: 1.5em; }
main ol li, main ul li { margin-bottom: 0.2em; line-height: 1.3; }
main ol { padding-left: 2em; }

main blockquote {
  background: rgba(60, 96, 77, 0.06);
  padding: var(--space-3) var(--space-4);
  margin: 1em 0;
  border-radius: 10px;
  border-left: 4px solid var(--heading-color);
}

main pre { margin: 1em 0 1.5em; }
main code { text-transform: none; }

main center { margin: 1em 0; padding: 0 1em; }

main hr {
  border: 0;
  height: 1px;
  background: linear-gradient(90deg, rgba(227,184,198,0), rgba(227,184,198,1), rgba(227,184,198,0));
  margin: var(--space-5) 0;
}

/* Headings */
main h1, main h2, main h3, main h4, main h5, main h6 {
  font-family: var(--heading-font);
  color: var(--heading-color);
  margin-bottom: 0;
  line-height: 1.5;
  letter-spacing: 0.2px;
}

main h1:first-child,
main h2:first-child,
main h3:first-child,
main h4:first-child,
main h5:first-child,
main h6:first-child { margin-top: 0; }

main h1 { font-size: 2rem;  margin-top: var(--space-2); }
main h2 { font-size: 1.5rem; margin-top: var(--space-5); }
main h3 { font-size: 1.25rem; margin-top: var(--space-4); }
main h4 { font-size: 1.2rem; }
main h5 { font-size: 1.1rem; }
main h6 { font-size: 1rem; }

/* Code blocks */
pre, code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  background: #ffffff;
  border: 1px solid #efd2dc;   /* blush border */
  border-radius: 8px;
  padding: 0.5em 0.75em;
}

/* COLUMNS */
.two-columns { display: flex; }
.two-columns > * { flex: 1 1 0; margin: 0; }
.two-columns > *:first-child { padding-right: 0.75em; }
.two-columns > *:last-child  { padding-left: 0.75em; }

/* -------------------------------------------------------- */
/* CONTENT IMAGES */
/* -------------------------------------------------------- */

.image { display: block; width: auto; height: auto; max-width: 100%; }
.full-width-image { display: block; width: 100%; height: auto; }

.images {
  display: flex;
  width: calc(100% + 5px + 5px);
  margin-left: -5px;
  margin-right: -5px;
}
.images img {
  width: 100%;
  height: auto;
  padding: 5px;
  margin: 0;
  overflow: hidden;
}

/* -------------------------------------------------------- */
/* ACCESSIBILITY */
/* -------------------------------------------------------- */

#skip-to-content-link {
  position: fixed;
  top: 0;
  left: 0;
  display: inline-block;
  padding: 0.375rem 0.75rem;
  line-height: 1;
  font-size: 1.25rem;
  background-color: var(--content-background-color);
  color: var(--text-color);
  transform: translateY(-3rem);
  transition: transform 0.1s ease-in;
  z-index: 99999999999;
}
#skip-to-content-link:focus,
#skip-to-content-link:focus-within { transform: translateY(0); }

/* -------------------------------------------------------- */
/* MOBILE RESPONSIVE */
/* -------------------------------------------------------- */

@media (max-width: 800px) {
  body { font-size: 15px; }

  .layout {
    width: 100%;
    grid-gap: var(--space-2);
    grid-template:
      "header" auto
      "main" auto
      "footer" auto
      / 1fr;
  }

  .left-sidebar, .right-sidebar { display: none; }

  aside {
    border-bottom: 1px solid;
    padding: 9px;
    font-size: 0.9em;
  }

  nav { padding: 0; }
  nav > ul { padding-top: 0.5em; }

  nav > ul li > a,
  nav > ul li > details summary,
  nav > ul li > strong { padding: 0.5em; }

  .header-title { font-size: 1.4rem; }

  main { max-height: none; padding: var(--space-3); }

  .images { flex-wrap: wrap; }
  .images img { width: 100%; }

  #skip-to-content-link { font-size: 1rem; }
}
