﻿@charset "UTF-8";
/* inmediQ variables */
:root {
  /* Primary colours */
  --primary-color-1: #1C3968;
  --primary-color-2: #0076C0;
  --primary-color-3: #575757;
  --primary-color-4: #B6A310;
  --primary-color-1-light1: #465380;
  --primary-color-2-light1: #008DCE;
  --primary-color-3-light1: #878787;
  --primary-color-4-light1: #C5B348;
  --primary-color-1-light2: #71769B;
  --primary-color-2-light2: #6BA8DC;
  --primary-color-3-light2: #B2B2B2;
  --primary-color-4-light2: #D2C479;
  --primary-color-1-light3: #9FA0BB;
  --primary-color-2-light3: #A4C3E8;
  --primary-color-3-light3: #DADADA;
  --primary-color-4-light3: #E3D9A8;
  --primary-color-1-light4: #CECDDD;
  --primary-color-2-light4: #D3E1F4;
  --primary-color-3-light4: #EDEDED;
  --primary-color-4-light4: #F0EBD4;
  /* Secondary colours */
  --secondary-color-1: #E53B11;
  --secondary-color-2: #820B20;
  --secondary-color-3: #F39200;
  --secondary-color-4: #FECC00;
  --secondary-color-5: #009982;
  --secondary-color-6: #00567C;
  --secondary-color-1-light1: #EB6739;
  --secondary-color-2-light1: #9A373D;
  --secondary-color-3-light1: #F7A941;
  --secondary-color-4-light1: #FED633;
  --secondary-color-5-light1: #0AAB9A;
  --secondary-color-6-light1: #357996;
  --secondary-color-1-light2: #F19267;
  --secondary-color-2-light2: #B46563;
  --secondary-color-3-light2: #FAC075;
  --secondary-color-4-light2: #FEE066;
  --secondary-color-5-light2: #68C0B4;
  --secondary-color-6-light2: #6699AF;
  --secondary-color-1-light3: #F8B999;
  --secondary-color-2-light3: #CD9692;
  --secondary-color-3-light3: #FDD5A5;
  --secondary-color-4-light3: #FFEB9A;
  --secondary-color-5-light3: #A6D6CE;
  --secondary-color-6-light3: #99BBCB;
  --secondary-color-1-light4: #FCDECD;
  --secondary-color-2-light4: #E6C9C6;
  --secondary-color-3-light4: #FEEAD3;
  --secondary-color-4-light4: #FFFFC0;
  --secondary-color-5-light4: #D6E8E7;
  --secondary-color-6-light4: #CCDDE5;
  /* Limbs */
  --color-left-limb: #F39200;
  --color-right-limb: #02806D;
}

/* ---------------------------------
   welcome-box
   - container below the top band/topbar
   - centers grid when it fits
   - (currently overflow hidden, because wir scrollen nicht mehr)
---------------------------------- */
.welcome-box {
  /* expected from outside:
     --topband-h      : height of your fixed header/topbar
     --content-pad    : horizontal padding (left/right)
     You define those globally, e.g. in :root or MainLayout.
  */
  /* viewport minus top band */
  --content-h: calc(100vh - var(--topband-h));
  /* vertical breathing room between topbar and grid */
  --content-pad-y: 16px;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  height: var(--content-h);
  /* inner padding all around the grid */
  padding-top: var(--content-pad-y);
  padding-bottom: var(--content-pad-y);
  padding-left: var(--content-pad);
  padding-right: var(--content-pad);
  box-sizing: border-box;
  display: flex;
  align-items: flex-start; /* grid oben andocken */
  justify-content: center; /* grid zentriert horizontal */
  /* Scroll-Policy */
  overflow-x: visible; /* lass Schatten rechts/links frei rauslaufen */
  overflow-y: auto; /* wenn’s zu hoch ist → vertikal scrollen */
  -webkit-overflow-scrolling: touch; /* smoother touch scroll */
}

/* ---------------------------------
   square-tile-box
   - responsive n x m grid
   - every cell is enforced square
   - refuses to distort
---------------------------------- */
.square-tile-box {
  /* ── Tunables you can override per breakpoint ───────── */
  --tile-columns: 2;
  --tile-rows: 3;
  /* min/max size of one tile edge in px */
  --min-tile-size: 100px;
  --max-tile-size: 260px;
  /* text scaling inside tiles */
  --label-font-min: 0.1rem;
  --label-font-max: 0.9rem;
  --label-font-scale: 0.07; /* font ~= tile-size * this */
  /* corner radius scaling */
  --tile-radius-min: 0.5rem;
  --tile-radius-max: 1rem;
  --tile-radius-scale: 0.10;
  /* icon scaling (icon box edge ~= tile-size * this)
     you can still override --icon-scale per tile inline */
  --icon-scale: 0.4;
  /* hard caps for icon size (global clamp) */
  --icon-min-size: 24px;
  --icon-max-size: 96px;
  /* layout vars:
     these come from outer container / global */
  --content-pad-x: var(--content-pad);
  --fallback-pad-y: 32px;
  --effective-pad-y: var(--content-pad-y, var(--fallback-pad-y));
  /* usable inner width/height after padding & topbar */
  --inner-w: calc(100vw - 2 * var(--content-pad-x));
  --inner-h: calc(var(--content-h) - 2 * var(--effective-pad-y));
  /* ---------------------------------------------------
     Correct tile size math with gaps + inner padding.
     Let s = tile-size.

     gap between tiles      = 0.05 * s
     inner padding per side = 0.08 * s  → total vertical padding = 0.16 * s

     Total box width  =
         cols * s
       + (cols - 1) * (0.05 * s)
       + 2 * (0.08 * s)

       = s * [ cols + 0.05*(cols - 1) + 0.16 ]

     Total box height =
         rows * s
       + (rows - 1) * (0.05 * s)
       + 2 * (0.08 * s)

       = s * [ rows + 0.05*(rows - 1) + 0.16 ]

     Wir lösen nach s:
       s_w = inner-w / width-factor
       s_h = inner-h / height-factor
       s_raw = min(s_w, s_h)
  --------------------------------------------------- */
  --width-factor: calc( var(--tile-columns) + 0.05 * (var(--tile-columns) - 1) + 0.16 );
  --height-factor: calc( var(--tile-rows) + 0.05 * (var(--tile-rows) - 1) + 0.16 );
  /* candidate tile sizes, begrenzt durch verfügbare Breite/Höhe */
  --tile-size-w: calc(var(--inner-w) / var(--width-factor));
  --tile-size-h: calc(var(--inner-h) / var(--height-factor));
  /* pick the tighter axis */
  --tile-size-raw: min(var(--tile-size-w), var(--tile-size-h));
  /* final tile edge length with clamp */
  --tile-size: clamp(var(--min-tile-size), var(--tile-size-raw), var(--max-tile-size));
  /* now that --tile-size is final, derive gap/pad */
  --tile-gap: calc(var(--tile-size) * 0.05);
  --box-inner-pad: calc(var(--tile-size) * 0.08);
  /* physical pixel size of full grid box including gaps & padding */
  --box-width: calc( (var(--tile-size) * var(--tile-columns)) + (var(--tile-gap) * (var(--tile-columns) - 1)) + (2 * var(--box-inner-pad)) );
  --box-height: calc( (var(--tile-size) * var(--tile-rows)) + (var(--tile-gap) * (var(--tile-rows) - 1)) + (2 * var(--box-inner-pad)) );
  /* apply computed size */
  width: var(--box-width);
  height: var(--box-height);
  box-sizing: border-box;
  display: grid;
  grid-template-columns: repeat(var(--tile-columns), 1fr);
  grid-template-rows: repeat(var(--tile-rows), 1fr);
  gap: var(--tile-gap);
  padding: var(--box-inner-pad);
  /* Make sure flex parents can't squash this grid. */
  flex: 0 0 auto;
  flex-shrink: 0;
  min-width: max-content;
  min-height: max-content;
  /* ---------------------------------
     Each tile (NavLink.welcome-tile)
     - square cell
     - icon top-left
     - headline bottom-left
  ---------------------------------- */
}
.square-tile-box .welcome-tile {
  /* per-tile variables */
  --tile-label-width: 80%;
  /* label font size scales with tile-size */
  --label-font-size: clamp( var(--label-font-min), calc(var(--tile-size) * var(--label-font-scale)), var(--label-font-max) );
  /* corner radius also scales */
  --tile-radius: clamp( var(--tile-radius-min), calc(var(--tile-size) * var(--tile-radius-scale)), var(--tile-radius-max) );
  /* ICON SIZE PIPELINE:
     raw from tile-size * --icon-scale,
     then clamped to min/max so es nicht lächerlich groß wird.
  */
  --icon-size-raw: calc(var(--tile-size) * var(--icon-scale));
  --icon-size: clamp(var(--icon-min-size), var(--icon-size-raw), var(--icon-max-size));
  position: relative; /* anchor for absolute text */
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  width: 100%;
  height: 100%;
  /* inner padding proportional to tile-size */
  padding: calc(var(--tile-size) * 0.07);
  border-radius: var(--tile-radius);
  box-sizing: border-box;
  text-decoration: none;
  color: var(--bs-link-color, var(--DS-primary-90));
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.7) 68%, rgb(245, 246, 248) 100%), #f6f7f9;
  box-shadow: 0px 4px 6px -1px rgba(0, 0, 0, 0.1), 0px 2px 4px -2px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.2s ease;
  /* vertical gap between normal-flow children */
  gap: calc(var(--tile-size) * 0.03);
  /* ICON WRAPPER: top-left icon box, scaled */
  /* TEXT BLOCK unten links (optional mit Subtext) */
  /* Haupt-Headline (der Kacheltitel) */
  /* Subline (wenn du eine 2. Zeile willst) */
}
.square-tile-box .welcome-tile:hover, .square-tile-box .welcome-tile.active {
  box-shadow: 0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 8px 10px -6px rgba(0, 0, 0, 0.1);
}
.square-tile-box .welcome-tile .tile-icon-wrapper {
  width: var(--icon-size);
  height: var(--icon-size);
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  flex: 0 0 auto;
  min-width: 0;
  min-height: 0;
}
.square-tile-box .welcome-tile .welcome-card-img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  display: block;
  /* monochrome / dimmed look */
  filter: grayscale(0) brightness(0);
}
.square-tile-box .welcome-tile .vasiocore-img {
  filter: none;
  margin: auto;
  padding-left: 10%;
  padding-right: 10%;
}
.square-tile-box .welcome-tile .welcome-card-text {
  position: absolute;
  left: calc(var(--tile-size) * 0.1);
  bottom: calc(var(--tile-size) * 0.07);
  max-width: calc(100% - 2 * var(--tile-size) * 0.07);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  pointer-events: none;
  text-align: left;
  color: inherit;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.square-tile-box .welcome-tile .tile-headline {
  position: absolute;
  left: calc(var(--tile-size) * 0.07);
  bottom: calc(var(--tile-size) * 0.07);
  font-family: var(--app-font);
  font-weight: 300; /* feintrimmen: 200/300/400 */
  font-style: normal;
  letter-spacing: 0.03em;
  font-size: calc(1.75 * var(--label-font-size));
  line-height: 1.5;
  color: #1C3968;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.square-tile-box .welcome-tile .welcome-card-text .tile-sub {
  font-family: var(--app-font);
  font-weight: 100; /* ultra thin */
  font-style: normal;
  letter-spacing: 0.03em;
  font-size: calc(var(--label-font-size) * 0.6);
  line-height: 1.1;
  opacity: 0.75;
  color: inherit;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
