@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600&family=Lora:wght@400;600&display=swap');

:root {
   /* Colors */
   --color-background: #f4f4f4;
   --color-white: #ffffff;
   --color-black: #000000;
   --color-button-primary: #f7d45a;
   --color-button-hover: #ffe680;
   --color-button-selected: #b8e6ff;
   --color-button-bg: #eeeeee;
   --color-green: #00ff00;

   /* Spacing */
   --spacing-xs: 4px;
   --spacing-sm: 8px;
   --spacing-md: 12px;
   --spacing-lg: 16px;
   --spacing-xl: 24px;
   --spacing-2xl: 28px;

   /* Borders */
   --border-width: 2px;
   --border-width-thick: 3px;
   --border-color: var(--color-black);

   /* Shadows */
   --shadow-button: 0 6px 0 var(--color-black);
   --shadow-button-active: 0 2px 0 var(--color-black);
   --shadow-tooltip: 4px 4px 0 var(--color-black);

   /* Classical HUD theme (in-game chrome only) */
   --hud-font-heading: "Cormorant Garamond", Georgia, serif;
   --hud-font-body: "Lora", Georgia, serif;
   --hud-color-surface: color-mix(in srgb, #eae9e9 92%, transparent);
   --hud-color-text: #201f1d;
   --hud-color-divider: color-mix(in srgb, #201f1d 16%, transparent);
   --hud-color-accent: #b68235;
   --hud-color-accent-100: #fff3e4;
   --hud-color-accent-700: #7d5411;
   --hud-color-neutral-700: #605d5d;
   --hud-radius-sm: 2px;
   --hud-radius-md: 4px;
   --hud-shadow-md: 0 3px 10px color-mix(in srgb, #2d2b2b 16%, transparent);
   --hud-shadow-lg: 0 12px 32px color-mix(in srgb, #2d2b2b 22%, transparent);
}

html,
body {
   width: 100%;
   height: 100%;
   margin: 0;
   overflow: hidden;
   overscroll-behavior: none;
}

body {
   font-family: Arial, sans-serif;
   background-color: var(--color-background);
   text-align: center;
}

#startMenu {
   width: 100vw;
   height: 100vh;
   height: 100dvh;
   display: grid;
   place-items: center;
   background-image:
      linear-gradient(rgba(0, 0, 0, 0.28), rgba(0, 0, 0, 0.45)),
      url("Sprites/Start_menu.png");
   background-size: cover;
   background-position: center;
   image-rendering: pixelated;
}

#endScreen {
   width: 100vw;
   height: 100vh;
   height: 100dvh;
   display: grid;
   place-items: center;
   background-image:
      linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.6)),
      url("Sprites/Start_menu.png");
   background-size: cover;
   background-position: center;
   image-rendering: pixelated;
}

#startContent {
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 28px;
}

#endContent {
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 12px;
}

#startContent h1 {
   margin: 0;
   color: var(--color-white);
   font-size: clamp(42px, 9vw, 96px);
   font-weight: 800;
   text-shadow: 0 4px 0 var(--color-black), 0 8px 18px rgba(0, 0, 0, 0.5);
}

#endContent h1 {
   margin: 0;
   color: var(--color-white);
   font-size: clamp(44px, 10vw, 104px);
   font-weight: 800;
   text-shadow: 0 4px 0 var(--color-black), 0 8px 18px rgba(0, 0, 0, 0.5);
}

#endContent p {
   margin: 0;
   color: var(--color-white);
   font-size: clamp(20px, 4vw, 34px);
   font-weight: 700;
   text-shadow: 0 3px 0 var(--color-black), 0 6px 14px rgba(0, 0, 0, 0.5);
}

.primary-button {
   min-width: 160px;
   padding: 14px 28px;
   border: var(--border-width-thick) solid var(--color-black);
   background-color: var(--color-button-primary);
   color: var(--color-black);
   font-size: 24px;
   font-weight: 700;
   cursor: pointer;
   box-shadow: var(--shadow-button);
}

.primary-button:hover {
   background-color: var(--color-button-hover);
}

.primary-button:active {
   transform: translateY(4px);
   box-shadow: var(--shadow-button-active);
}

body.playing #startMenu {
   display: none;
}

body:not(.game-over) #endScreen {
   display: none;
}

body.game-over #startMenu,
body.game-over #gameContainer {
   display: none;
}

body:not(.playing) #gameContainer,
body.game-over #gameContainer {
   display: none;
}

#gameContainer {
   position: relative;
   width: 100vw;
   height: 100vh;
   height: 100dvh;
   overflow: hidden;
   font-family: var(--hud-font-body);
   color: var(--hud-color-text);
}

canvas {
   position: absolute;
   inset: 0;
   display: block;
   width: 100%;
   height: 100%;
   background-color: #1c170f;
   touch-action: none;
}

canvas.delete-active {
   cursor: crosshair;
}

.hudDivider {
   flex: none;
   width: 1px;
   align-self: stretch;
   background: var(--hud-color-divider);
}

/* — top bar: day counter + resource stats — */
#hudTop {
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   z-index: 2;
   display: flex;
   align-items: center;
   gap: var(--spacing-xl);
   padding: var(--spacing-md) var(--spacing-xl);
   background: var(--hud-color-surface);
   border-bottom: 1px solid var(--hud-color-divider);
   box-shadow: var(--hud-shadow-md);
   backdrop-filter: blur(2px);
   box-sizing: border-box;
}

#dayDisplay h4 {
   margin: 0;
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 22px;
   letter-spacing: 0.01em;
}

#resourcesPanel {
   display: flex;
   align-items: center;
   gap: var(--spacing-xl);
   flex: 1;
}

.resourceStat {
   display: flex;
   align-items: center;
   gap: var(--spacing-sm);
}

.resourceIcon {
   display: block;
   width: 28px;
   height: 28px;
   flex: none;
   border-radius: var(--hud-radius-sm);
   overflow: hidden;
   border: 1px solid var(--hud-color-divider);
}

.resourceIcon img {
   width: 100%;
   height: 100%;
   object-fit: contain;
   image-rendering: pixelated;
}

.resourceLabel {
   font-size: 12px;
   letter-spacing: 0.06em;
   text-transform: uppercase;
   color: var(--hud-color-neutral-700);
}

.resourceValue {
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 19px;
   font-variant-numeric: tabular-nums;
   display: flex;
   align-items: center;
   gap: 6px;
}

.resourceGoal {
   font-size: 14px;
   font-weight: 600;
   color: var(--hud-color-neutral-700);
   opacity: 0.8;
}

.resourceDelta {
   font-size: 16px;
   font-weight: 600;
   color: #27ae60;
   opacity: 0.9;
}

.resourceDelta.negative {
   color: #e74c3c;
}

.resourceDelta::before {
   content: " / ";
   color: var(--hud-color-neutral-700);
   opacity: 0.5;
   margin: 0 2px;
}

/* — shared small icon button (collapse toggle, settings, settings-close) — */
.hudIconButton {
   flex: none;
   width: 32px;
   height: 32px;
   padding: 6px;
   border: 1px solid var(--hud-color-divider);
   border-radius: var(--hud-radius-md);
   background: transparent;
   color: var(--hud-color-text);
   cursor: pointer;
   display: flex;
   align-items: center;
   justify-content: center;
   transition: background 120ms ease, transform 200ms ease;
}

.hudIconButton:hover {
   background: color-mix(in srgb, var(--hud-color-accent) 8%, transparent);
}

.hudIconButton:active {
   background: color-mix(in srgb, var(--hud-color-accent) 12%, transparent);
}

.hudIconButton svg {
   width: 20px;
   height: 20px;
}

#tutorialButton {
   font-family: var(--hud-font-heading);
   font-size: 18px;
   font-weight: 700;
}

/* — bottom bar: building picker, detail panel, next day — */
#hudBottom {
   position: absolute;
   bottom: 0;
   left: 0;
   right: 0;
   z-index: 2;
   max-height: 124px;
   display: flex;
   align-items: stretch;
   justify-content: space-between;
   gap: var(--spacing-lg);
   padding: var(--spacing-lg) var(--spacing-xl);
   background: var(--hud-color-surface);
   border-top: 1px solid var(--hud-color-divider);
   box-shadow: var(--hud-shadow-lg);
   box-sizing: border-box;
   transition: max-height 300ms ease, padding 200ms ease, gap 200ms ease;
   overflow: hidden;
}

#hudBottom.collapsed {
   max-height: 44px;
   padding: var(--spacing-sm) var(--spacing-lg);
   gap: var(--spacing-sm);
}

#hudBottomContent {
   display: flex;
   align-items: stretch;
   justify-content: space-between;
   gap: var(--spacing-lg);
   flex: 1;
   transition: opacity 150ms ease;
   opacity: 1;
}

#hudBottom.collapsed #hudBottomContent {
   opacity: 0;
   pointer-events: none;
}

#hudBottom.collapsed .hudCollapseToggle svg {
   transform: rotate(180deg);
}

#buildingPanel {
   display: flex;
   align-items: stretch;
   gap: var(--spacing-md);
   flex: 1;
   overflow-x: auto;
}

.buildingButton {
   display: flex;
   flex-direction: column;
   gap: var(--spacing-sm);
   min-width: 130px;
   flex-shrink: 0;
   padding: var(--spacing-sm);
   border: 1px solid var(--hud-color-divider);
   border-radius: var(--hud-radius-md);
   background: transparent;
   cursor: pointer;
   font-family: var(--hud-font-body);
   color: var(--hud-color-text);
   transition: background 120ms ease, border-color 120ms ease;
}

.buildingButton:hover {
   background: color-mix(in srgb, var(--hud-color-accent) 8%, transparent);
}

.buildingButton.selected {
   border-color: var(--hud-color-accent-700);
   background: color-mix(in srgb, var(--hud-color-accent) 8%, transparent);
}

.buildingIcon {
   display: block;
   width: 100%;
   height: 56px;
   border-radius: var(--hud-radius-sm);
   overflow: hidden;
}

.buildingIcon img {
   width: 100%;
   height: 100%;
   object-fit: contain;
   image-rendering: pixelated;
}

.buildingName {
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 13px;
}

#deleteButton {
   display: flex;
   flex-direction: column;
   align-items: center;
   justify-content: center;
   gap: var(--spacing-xs);
   min-width: 84px;
   flex-shrink: 0;
   padding: var(--spacing-sm);
   border: 1px solid #b3352f;
   border-radius: var(--hud-radius-md);
   background: transparent;
   color: #b3352f;
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 13px;
   cursor: pointer;
   transition: background 120ms ease, color 120ms ease, box-shadow 120ms ease;
}

#deleteButton:hover {
   background: color-mix(in srgb, #b3352f 10%, transparent);
}

#deleteButton.active {
   background: #b3352f;
   color: #fff3e4;
   box-shadow: 0 0 0 2px color-mix(in srgb, #b3352f 35%, transparent);
}

#buildingDetail {
   width: 280px;
   flex-shrink: 0;
   display: flex;
   flex-direction: column;
   gap: var(--spacing-sm);
   text-align: left;
   font-size: 13px;
}

#buildingDetail h4 {
   margin: 0;
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 17px;
}

#buildingDetail p {
   margin: 0;
   opacity: 0.85;
   line-height: 1.5;
}

#buildingDetailEmpty {
   flex: 1;
   display: flex;
   align-items: center;
   justify-content: center;
   color: var(--hud-color-neutral-700);
   font-size: 12px;
   text-align: center;
}

.detailRow {
   display: flex;
   justify-content: space-between;
   gap: var(--spacing-sm);
}

.detailLabel {
   font-weight: 600;
}

.detailRow .positive {
   color: #27ae60;
   font-weight: 600;
}

.detailRow .negative {
   color: #e74c3c;
   font-weight: 600;
}

#nextRound {
   align-self: flex-end;
   flex: none;
   padding: 10px 20px;
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 14px;
   color: var(--hud-color-accent);
   background: transparent;
   border: 1px solid var(--hud-color-accent);
   border-radius: var(--hud-radius-md);
   cursor: pointer;
   transition: background 120ms ease;
}

#nextRound:hover {
   background: color-mix(in srgb, var(--hud-color-accent) 12%, transparent);
}

#nextRound:active {
   background: color-mix(in srgb, var(--hud-color-accent) 22%, transparent);
}

/* — settings overlay + panel — */
#settingsOverlay {
   display: none;
   position: absolute;
   inset: 0;
   z-index: 10;
   align-items: center;
   justify-content: center;
   background: rgba(20, 16, 10, 0.55);
}

#settingsOverlay.open {
   display: flex;
}

#settingsPanel {
   width: min(360px, 90vw);
   box-sizing: border-box;
   padding: var(--spacing-lg) var(--spacing-xl);
   background: var(--hud-color-surface);
   border: 1px solid var(--hud-color-divider);
   border-radius: var(--hud-radius-md);
   box-shadow: var(--hud-shadow-lg);
   backdrop-filter: blur(2px);
}

.settingsPanelHeader {
   display: flex;
   align-items: center;
   justify-content: space-between;
   gap: var(--spacing-lg);
   margin-bottom: var(--spacing-lg);
}

.settingsPanelHeader h3 {
   margin: 0;
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 20px;
}

.settingRow {
   display: flex;
   flex-direction: column;
   gap: var(--spacing-sm);
   text-align: left;
}

.settingLabel {
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 14px;
}

.settingOptions {
   display: flex;
   flex-direction: column;
   gap: var(--spacing-xs);
}

.settingOption {
   display: flex;
   align-items: center;
   gap: var(--spacing-sm);
   font-size: 13px;
   cursor: pointer;
}

.settingSlider {
   display: flex;
   align-items: center;
   gap: var(--spacing-sm);
}

.settingSlider input[type="range"] {
   flex: 1;
   accent-color: var(--hud-color-accent);
}

.settingSliderValue {
   min-width: 36px;
   text-align: right;
   font-size: 13px;
   font-variant-numeric: tabular-nums;
}

/* — tutorial overlay + panel — */
#tutorialOverlay {
   display: none;
   position: absolute;
   inset: 0;
   z-index: 15;
   align-items: center;
   justify-content: center;
   background: rgba(20, 16, 10, 0.55);
}

#tutorialOverlay.open {
   display: flex;
}

#tutorialPanel {
   width: min(360px, 90vw);
   max-height: 80vh;
   overflow-y: auto;
   box-sizing: border-box;
   padding: var(--spacing-lg) var(--spacing-xl);
   background: var(--hud-color-surface);
   border: 1px solid var(--hud-color-divider);
   border-radius: var(--hud-radius-md);
   box-shadow: var(--hud-shadow-lg);
   backdrop-filter: blur(2px);
   text-align: left;
}

.tutorialPanelHeader {
   display: flex;
   align-items: center;
   justify-content: space-between;
   gap: var(--spacing-lg);
   margin-bottom: var(--spacing-lg);
}

.tutorialPanelHeader h3 {
   margin: 0;
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 20px;
}

#tutorialBody {
   font-size: 13px;
   line-height: 1.6;
}

#tutorialBody p {
   margin: 0 0 var(--spacing-sm);
}

#tutorialBody p:last-child {
   margin-bottom: 0;
}

.tutorialFooter {
   display: flex;
   align-items: center;
   justify-content: space-between;
   gap: var(--spacing-sm);
   margin-top: var(--spacing-lg);
}

.tutorialNavButton {
   border: 1px solid var(--hud-color-divider);
   border-radius: var(--hud-radius-md);
   background: transparent;
   color: var(--hud-color-text);
   font-family: var(--hud-font-body);
   font-size: 13px;
   font-weight: 600;
   padding: 6px 14px;
   cursor: pointer;
   transition: background 120ms ease;
}

.tutorialNavButton:hover {
   background: color-mix(in srgb, var(--hud-color-accent) 8%, transparent);
}

.tutorialNavButton:disabled {
   opacity: 0.35;
   cursor: default;
   background: transparent;
}

.tutorialPageIndicator {
   font-size: 12px;
   color: var(--hud-color-neutral-700);
}

/* — victory overlay + panel — */
#victoryOverlay {
   display: none;
   position: absolute;
   inset: 0;
   z-index: 20;
   align-items: center;
   justify-content: center;
   background: rgba(20, 16, 10, 0.7);
}

#victoryOverlay.open {
   display: flex;
}

#victoryPanel {
   width: min(420px, 90vw);
   max-height: 85vh;
   overflow-y: auto;
   box-sizing: border-box;
   padding: var(--spacing-xl);
   background: var(--hud-color-surface);
   border: 1px solid var(--hud-color-divider);
   border-radius: var(--hud-radius-md);
   box-shadow: var(--hud-shadow-lg);
   text-align: center;
}

#victoryPanel h1 {
   margin: 0 0 var(--spacing-sm);
   font-family: var(--hud-font-heading);
   font-weight: 600;
   font-size: 40px;
   color: var(--hud-color-accent-700);
}

#victoryPanel > p {
   margin: 0 0 var(--spacing-lg);
   font-size: 14px;
   opacity: 0.85;
}

#victoryStats {
   display: flex;
   flex-direction: column;
   gap: var(--spacing-xs);
   margin-bottom: var(--spacing-xl);
   text-align: left;
}

.victoryStatRow {
   display: flex;
   justify-content: space-between;
   gap: var(--spacing-sm);
   padding: var(--spacing-xs) 0;
   border-bottom: 1px solid var(--hud-color-divider);
   font-size: 14px;
}

.victoryStatLabel {
   font-weight: 600;
   color: var(--hud-color-neutral-700);
}

#victoryActions {
   display: flex;
   justify-content: center;
   flex-wrap: wrap;
   gap: var(--spacing-md);
}

#victoryActions .primary-button {
   min-width: 140px;
   font-size: 16px;
   padding: 12px 20px;
}

/* Responsive breakpoints for different computer screen sizes */

/* Small desktop screens (1024px and below) */
@media (max-width: 1024px) {
   #hudTop {
      gap: var(--spacing-lg);
      padding: var(--spacing-sm) var(--spacing-lg);
   }

   #hudBottom {
      max-height: 109px;
      gap: var(--spacing-md);
      padding: var(--spacing-md) var(--spacing-lg);
   }

   #hudBottom.collapsed {
      max-height: 44px;
      padding: var(--spacing-sm) var(--spacing-lg);
   }

   #buildingDetail {
      width: 220px;
   }

   .buildingButton {
      min-width: 110px;
   }

   .resourceLabel {
      display: none;
   }

   #dayDisplay h4 {
      font-size: 18px;
   }
}

/* Very small screens (640x360-class displays, e.g. small windows/low-res monitors) */
@media (max-width: 700px), (max-height: 420px) {
   #hudTop {
      gap: var(--spacing-sm);
      padding: var(--spacing-xs) var(--spacing-sm);
   }

   #dayDisplay h4 {
      font-size: 14px;
   }

   #resourcesPanel {
      gap: var(--spacing-sm);
   }

   .resourceIcon {
      width: 18px;
      height: 18px;
   }

   .resourceValue {
      font-size: 13px;
      gap: 3px;
   }

   .resourceGoal,
   .resourceDelta {
      font-size: 11px;
   }

   .hudIconButton {
      width: 24px;
      height: 24px;
      padding: 4px;
   }

   .hudIconButton svg {
      width: 14px;
      height: 14px;
   }

   #tutorialButton {
      font-size: 12px;
   }

   #hudBottom {
      max-height: 92px;
      gap: var(--spacing-xs);
      padding: var(--spacing-xs) var(--spacing-sm);
   }

   #hudBottom.collapsed {
      max-height: 26px;
      padding: 4px var(--spacing-sm);
   }

   #hudBottomContent {
      gap: var(--spacing-xs);
   }

   .buildingButton {
      min-width: 64px;
      gap: 4px;
      padding: 4px;
   }

   .buildingIcon {
      height: 28px;
   }

   .buildingName {
      font-size: 10px;
   }

   #deleteButton {
      min-width: 48px;
      font-size: 10px;
      gap: 2px;
      padding: 4px;
   }

   #buildingDetail {
      width: 150px;
      font-size: 10px;
      gap: 4px;
      min-height: 0;
      overflow-y: auto;
   }

   #buildingDetail h4 {
      font-size: 12px;
   }

   #nextRound {
      padding: 6px 10px;
      font-size: 11px;
   }
}

/* Large screens (1440px and above) */
@media (min-width: 1440px) {
   #hudTop {
      gap: 36px;
      padding: var(--spacing-md) 32px;
   }

   #hudBottom {
      max-height: 140px;
      padding: var(--spacing-lg) 32px;
   }

   #hudBottom.collapsed {
      max-height: 48px;
      padding: var(--spacing-md) 32px;
   }

   #buildingDetail {
      width: 300px;
   }
}
