@font-face {
    font-family: 'Abel';
    src: url('../fonts/Abel/Abel-Regular.ttf') format('truetype');
}

@font-face {
    font-family: 'Source Code Pro';
    src: url('../fonts/Source_Code_Pro/SourceCodePro-VariableFont_wght.ttf');
}

:root {
    /* 8px grid system — the fix */
    --space-1: 8px;
    --space-2: 16px;
    --space-3: 24px;
    --space-4: 32px;
    --space-5: 40px;
    --space-6: 48px;
    --space-8: 64px;
      /* 60% — dominant background */
    --color-bg: #f5f5f5;
    --color-bg-nav: #333;
    /* 30% — surfaces, cards, sidebars */
    --color-surface: #ffffff;
    --color-border: #e2e8f0;
    /* 10% — accent, used sparingly */
    --color-accent: #33b5e5;
    --color-accent-hover: #0099cc;
    --color-secondary: #800080FF;
    --color-secondary-hover: #855585FF;
    /* Text */
    --color-text-primary: #111827;
    --color-text-light: #f5f5f5f5;
    --color-text-muted: #6b7280;
    --color-input-required: #ffdddd;
    --color-input-filled: #ddffdd;
    --font-logo: 'Abel';
    --font-body: 'Source Code Pro';
}

/* GRID */
* {
  margin: 0;
  box-sizing: border-box;
}
html, body {
    height: 100%;
    margin: 0;
}

.grid-container {
    display: grid;
    min-height: 93%;
    grid-template-rows: auto 1fr auto;
    grid-template-areas:
    'header header header header header header'
    'menu main main main main right'
    'footer footer footer footer footer footer';
    gap: var(--space-1);
    background-color: var(--color-bg);
    padding: var(--space-1);
}

.grid-container > div {
  padding: var(--space-1);
  font-size: var(--space-2);
}

/* Body */
body {
  font-family: var(--font-body), sans-serif;
}
h1 {
    font-family: var(--font-logo);
}

/* NAV */
nav {
display: flex;
justify-content: space-between;
align-items: center;
background-color: var(--color-bg-nav);
padding: var(--space-1) var(--space-2);
color: var(--color-text-light);
}

.logo {
    /*font-weight: bold;*/
    font-size: var(--space-4);
    font-family: var(--font-logo);
}

.user-info {
display: flex;
align-items: center;
gap: var(--space-1);
font-size: var(--space-2);
cursor: default;
}

/* User icon SVG styling */
.user-icon {
width: var(--space-3);
height: var(--space-3);
fill: var(--color-text-light);
}

/* HEADER */
.header {
  grid-area: header;
  background-color: var(--color-secondary);
  text-align: center;
  color: var(--color-text-light);
}

.header > h1 {
    font-size: var(--space-5);
    font-family: var(--font-logo);
}

/* MENU */
.menu {
    grid-area: menu;
    font-family: var(--font-logo);
  }

.menu ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

.menu li {
  padding: var(--space-1);
  margin-bottom: var(--space-1);
  background-color: var(--color-accent);
  color: var(--color-text-light);
}
.menu li a {
  text-decoration: none;
}

.menu li:hover {
  background-color: var(--color-accent-hover);
}

/* MAIN */
.main {
  grid-area: main;
}

.main > h1 {
  font-size: var(--space-4);
  margin-bottom: var(--space-1);
}

.main > p {
  margin-bottom: var(--space-1);
}

/* RIGHT */
.right {
  grid-area: right;
  border: 2px solid var(--color-accent);
  /*background-color: var(--color-bg);*/
  padding: var(--space-2);
  color: var(--color-text-primary);
}

.right > h2 {
  font-size: var(--space-3);
  padding-bottom: var(--space-1);
}

.right li {
  padding: var(--space-1);
  margin-bottom: var(--space-1);
}

/* FOOTER */
.footer {
  grid-area: footer;
    background-color: var(--color-accent);
    color: var(--color-text-light);
    text-align: center;
    font-family: var(--font-logo);
}

@media only screen and (max-width: 600px) {
  .header {grid-area: 1 / span 6;}
  .menu {grid-area: 2 / span 6;}
  .main {grid-area: 3 / span 6;}
  .right {grid-area: 4 / span 6;}
  .footer {grid-area: 5 / span 6;}
}

@media only screen and (min-width: 600px) {
  .header {grid-area: 1 / span 6;}
  .menu {grid-area: 2 / span 1;}
  .main {grid-area: 2 / span 4;}
  .right {grid-area: 3 / span 6;}
  .footer {grid-area: 4 / span 6;}
}

@media only screen and (min-width: 768px) {
  .header {grid-area: 1 / span 6;}
  .menu {grid-area: 2 / span 1;}
  .main {grid-area: 2 / span 4;}
  .right {grid-area: 2 / span 1;}
  .footer {grid-area: 3 / span 6;}
}

button {
    cursor: pointer;
    align-self: center;
    border: 1.5px solid var(--color-border);
    border-radius: var(--space-1);
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

.btn-small {
    /*font-size: var(--space-1);*/
}
.btn-medium {
    font-size: var(--space-2);
}
.btn-large {
    font-size: var(--space-3);
}
/* Primary — one per page, unmissable */
.btn-primary {
    background: var(--color-secondary);
    color: var(--color-surface);
}
.btn-primary:hover{
    background-color: var(--color-secondary-hover);
}
/* Secondary — present but steps back */
.btn-secondary {
  background: var(--color-accent);
  color: var(--color-surface);
}
.btn-secondary:hover{
    background: var(--color-accent-hover);
}
/* Ghost — lowest priority, almost invisible */
.btn-ghost {
    background: transparent;
    color: var(--color-text-muted);
}
.btn-ghost:hover {
    background: var(--color-border);
    flex: 0 0 auto;
}

/* FORMS */
input {
  border: 1px solid var(--color-border);
  border-radius: 3px;
  font-size: 18px;
  margin-bottom: 5px;
}

input[type="number"] {
  width: 20%;
}

/* MODALS */
.modal {
    display: none;
    position: fixed;
    z-index: 10;
    left: 0; top: 0;
    width: 100%; height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.5);
}
.modal-content {
    background-color: #fefefe;
    margin: 10% auto;
    padding: var(--space-3);
    width: 50%;
}

/* TABLES */
table {
    text-align: center;
    border-spacing: var(--space-2) var(--space-1);
}

/* TILES */
.tile {
    flex: 1 0 300px;
    background-color: white;
    color: black;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    padding: 20px;
    margin: 10px;
    border-radius: 10px;
    max-width: 350px;
    transition: transform 0.3s ease-in-out;
}

.tile:hover {
    transform: scale(1.05);
    background-color: #33b5e5;
    color: white;
}