:root {
    --primary: #009FB8;         /* UEF Turkoosi */
    --turquoise-2: #067493;     /* Tummempi turkoosi hover-efekteihin */
    --turquoise-3: #6DB7CC;     /* Vaaleampi turkoosi lisäkorostuksiin */
    --secondary: #6c757d;       /* Harmaa tukiväri */
    --success: #28a745;         /* Vihreä onnistumisille */
    --light: #f8f9fa;           /* Vaalea tausta */
    --dark: #000000;            /* Musta teksti */
    --white: #ffffff;           /* Valkoinen tausta */
    --border: #dee2e6;          /* Harmaa rajausväri */
    --radius: 12px;             /* Consistent border radius */
    --shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* Consistent shadow */
    
    /* Language selector variables */
    --bg: var(--light);
    --panel: var(--white);
    --muted: var(--secondary);
    --accent: var(--dark);
    --focus: var(--turquoise-3);
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Open Sans', sans-serif;
}

body {
    background-color: var(--light);
    color: var(--dark);
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 15px; /* Lisää marginaalia reunoille pienillä näytöillä */
}

.container {
    max-width: 100%;
    margin: 0 auto;
    padding: 2vw;
}

/* Header styles */
.header-main {
    display: flex;
    gap: 2rem;
    align-items: flex-start;
}

.header-top-row {
  display: flex;
  flex-wrap: nowrap;  /* ei rivinvaihtoa */
  margin-bottom: 1rem; /* lisää tilaa alareunaan */
}

.header-logos,
.header-controls {
  flex: 0 0 50%;         /* 50/50 jaolla isolla ruudulla */
  display: flex;
  /* flex-wrap: wrap;       /* saa mennä useammalle riville */
  gap: 0.5rem;           /* pientä väliä */
  align-items: center;
}

.header-logos {
  gap: 3rem;
}

@media (max-width: 1200px) {
  #widthSelectorWrap {
    display: none;
  }
}

@media (max-width: 600px) {
  .header-logos,
  .header-controls {
    flex-wrap: wrap;
    justify-content: center;  /* tai center jos haluat keskelle */
    gap: 0.5rem;
  }

  .controls {
    justify-content: center;   /* halutessasi keskitetään */
    gap: 0px;                  /* pienempi väli nappien välillä */
    margin-bottom: 10px;       /* pienempi marginaali */
  }
}

.header-logo {
  max-width: 120px;   /* kaikki logot enintään 120px leveitä */
  max-height: 60px;   /* tarvittaessa rajoitetaan myös korkeus */
  width: auto;        /* leveys säätyy kuvan suhteessa */
  height: auto;       /* korkeus säätyy suhteessa leveään */
  display: block;     /* poistaa mahdolliset inline-gapit */
}

.header-content {
    flex: 1;
}


.header-container {
    display: flex;
    flex-direction: column;
    background-color: var(--white);
    padding: 20px;
    border-radius: 8px;
    box-shadow: var(--shadow);
    margin-bottom: 20px;
}


.header-text h1 {
    font-size: clamp(1.5em, 5vw, 2em);
    font-weight: 800;
    margin-bottom: 10px;
    color: var(--primary);
}

.header-text p {
    font-size: 1em;
    color: var(--secondary);
    margin: 0;
}

.header-divider {
    border: 0;
    border-top: 1px solid var(--border);
    margin: 20px 0;
}

.info-card {
    background-color: var(--white);
    border-radius: var(--radius);         /* Pyöristetyt kulmat */
    padding: 20px;                        /* Sisäiset marginaalit */
    box-shadow: var(--shadow);            /* Hento varjo */
    border-left: 5px solid var(--primary);/* Korostus vasemmalla */
    margin-bottom: 20px;                  /* Väli korttien välille */
    transition: transform 0.2s ease, box-shadow 0.2s ease; /* Pieni hover-animaatio */
}

.info-card:hover {
    transform: translateY(-3px);          /* Nousee hieman hoverissa */
    box-shadow: 0 6px 15px rgba(0,0,0,0.15);
}

.info-card h3 {
    font-size: clamp(1.2em, 4vw, 1.4em);
    font-weight: 800;
    color: var(--primary);
    margin-bottom: 10px;
}

.info-card ul {
    padding-left: 1.2em; /* sisennys listalle */
    margin-bottom: 0;
}

.info-card li {
    margin-bottom: 6px;
    line-height: 1.4;
}

.info-card p {
    font-size: 1em;
    color: var(--dark);
    line-height: 1.5;
    margin-bottom: 10px;
}

/* Selector styles (shared for language and width selectors) */
.selector-wrap {
    position: relative;
    margin-left: auto;
}

.selector-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.45rem 0.7rem;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    border: 1px solid #e0e0e0;
    cursor: pointer;
    min-width: 180px;
}

.selector-btn:focus {
    outline: 3px solid #00c4b4;
}

.selector-flag {
    font-size: 1.1rem;
    line-height: 1;
    color: #666;
}

.selector-label {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.selector-name {
    font-weight: 600;
    font-size: 0.95rem;
    color: #333;
}

.selector-sub {
    font-size: 0.75rem;
    color: #666;
}

.selector-btn:hover .selector-sub,
.selector-btn:hover .selector-flag {
    color: #333;
}

.caret {
    margin-left: auto;
    font-size: 0.75rem;
    color: #666;
}

.dropdown {
    position: absolute;
    top: calc(100% + 0.55rem);
    right: 0;
    z-index: 60;
    display: none;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    background: #ffffff;
    border-radius: 8px;
    border: 1px solid #e0e0e0;
    overflow: hidden;
}

.dropdown.open {
    display: block;
}

.dropdown-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.dropdown-item {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.6rem 0.75rem;
    cursor: pointer;
    border-bottom: 1px solid #e0e0e0;
}

.dropdown-item:last-child {
    border-bottom: 0;
}

.dropdown-item:hover,
.dropdown-item[aria-selected="true"] {
    background: #e0f7fa;
}

.dropdown-item .label {
    display: flex;
    flex-direction: column;
}

.dropdown-item .short {
    font-weight: 600;
    color: #333;
}

.dropdown-item .small {
    font-size: 0.78rem;
    color: #666;
}

/* Tab styles */
.tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 20px;
}

.tab {
    padding: 10px 20px;
    cursor: pointer;
    background-color: var(--light);
    border: 1px solid var(--border);
    border-radius: 5px;
    flex: 1;
    min-width: 120px;
    text-align: center;
    color: var(--dark);
    font-weight: 600;
    min-height: 44px;
    line-height: 1.5;
}

.tab.active {
    background-color: var(--primary);
    color: var(--white);
    font-weight: 800;
}

.tab-content {
    display: none;
    background-color: var(--white);
    padding: 20px;
    border-radius: 0 0 8px 8px;
    box-shadow: var(--shadow);
    border: 1px solid var(--border);
    margin-bottom: 20px;
}

.tab-content.active {
    display: block;
}

/* Form styles */
.form-group {
    margin-bottom: 15px;
}

.form-group.label-left {
    display: flex;
    align-items: center;
    gap: 10px;
}

.form-group.label-left label {
    width: 250px;
    margin-right: 10px;
}

.form-group.label-left input[type="range"] {
    flex-grow: 1;
}

label {
    display: block;
    margin-bottom: 5px;
    font-weight: 600;
}

select, input {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--border);
    border-radius: 4px;
}

button {
    background-color: var(--primary);
    color: var(--white);
    border: none;
    padding: 10px 20px;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 600;
    margin-top: 10px;
    min-height: 44px;
    line-height: 1.5;
}

button:hover {
    background-color: var(--turquoise-2);
}

/* Time selector */
.time-selector {
    display: flex;
    justify-content: center;
    margin: 20px 0;
}

.time-btn {
    background-color: var(--light);
    color: var(--dark);
    border: 1px solid var(--border);
    padding: 8px 16px;
    margin: 0 5px;
    cursor: pointer;
    min-height: 44px;
    line-height: 1.5;
}

.time-btn.active {
    background-color: var(--primary);
    color: var(--white);
}

/* Results styles */
.results {
    margin-top: 30px;
}

.results h2 {
    color: var(--primary);
    font-weight: 800;
    margin-bottom: 15px;
}

.result-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 20px;
}

.result-card {
    background-color: var(--white);
    border-radius: 8px;
    padding: 20px;
    box-shadow: var(--shadow);
    text-align: center;
}

.result-card h3 {
    color: var(--dark);
    font-weight: 800;
    margin-bottom: 10px;
    font-size: clamp(1em, 4vw, 1.2em);
}

.result-card .value {
    font-size: clamp(1em, 4vw, 1.2em);
    font-weight: 800;
    color: var(--primary);
}

.result-card p {
    color: var(--secondary);
    margin-top: 10px;
}

/* Metrics styles */
.metrics-row {
    display: flex;
    justify-content: space-around;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.metric-box {
    flex: 1;
    background-color: transparent;
    border: none;
    border-radius: 0;
    padding: 10px;
    text-align: center;
    min-width: 120px;
}

.metric-value {
    font-size: 1.8em;
    font-weight: bold;
    margin-bottom: 5px;
}

.metric-label {
    font-size: 0.9em;
    color: var(--secondary);
    margin-top: 4px;
}

.positive .metric-value {
    color: var(--success);
}

.negative .metric-value {
    color: #dc3545;
}

/* Case example */
.case-example {
    background-color: var(--light);
    border: 1px solid var(--border);
    padding: 20px;
    border-radius: 8px;
    margin-top: 30px;
}

.case-example h3 {
    color: var(--primary);
    font-weight: 800;
    margin-bottom: 10px;
}

/* Export buttons */
.export-buttons {
    display: flex;
    gap: 10px;
    margin-top: 20px;
}

.export-btn {
    background-color: var(--success);
}

/* Footer */
.footer {
    text-align: center;
    margin-top: 40px;
    color: var(--secondary);
    font-size: 14px;
}

/* Chart styles */
.responsive-chart {
    width: 100%;
    height: auto;
    max-width: 600px;
    border: 1px solid var(--border);
    margin: 10px auto;
    display: block;
    background: var(--white);
}

.canvas-chart-container {
    width: 100%;
    max-width: 600px;
    margin: 10px auto;
    border: 1px solid var(--border);
    background: var(--white);
    display: block;
}

.canvas-chart-container canvas {
    width: 100%;
    height: auto;
    display: block;
}

.chart-container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px;
    box-sizing: border-box;
}

/* Emoji */
.metric-box .emoji {
    width: 5rem;              /* leveys */
    height: 5rem;             /* korkeus pitää määritellä maskilla */
    display: inline-block;
    background-color: var(--primary);
    -webkit-mask: var(--icon) no-repeat center;
    mask: var(--icon) no-repeat center;
    -webkit-mask-size: contain;
    mask-size: contain;
}

/* Animations */
@keyframes growBar {
    from { height: 0; }
    to { height: var(--target-height); }
}

/* Responsive styles */
@media (max-width: 768px) {
    .header-top-row {
        flex-direction: column;
        align-items: flex-start;
    }

    .header-logo {
        height: 80px;
        margin-bottom: 10px;
    }

    .header-text {
        margin-bottom: 10px;
    }

    .selector-wrap {
        margin-left: 0;
        align-self: flex-end;
    }

    .result-cards {
        grid-template-columns: 1fr;
    }

    .tabs {
        flex-direction: column;
        align-items: stretch;
    }

    .tab {
        min-width: unset;
        width: 100%;
    }

    .form-group.label-left {
        flex-direction: column;
        align-items: flex-start;
    }

    .form-group.label-left label {
        width: 100%;
        margin-right: 0;
    }

    .tab,
    button,
    .time-btn {
        padding: 8px 16px;
        font-size: 0.9em;
        min-width: 100px;
    }

    .container {
        padding: 10px;
    }

    .chart-container {
        padding: 10px;
    }
    
    .responsive-chart,
    .canvas-chart-container {
        margin: 5px auto;
        max-width: 100%;
        border-width: 1px;
    }

    .header-text h1,
    .info-card h3 {
        font-size: 1.5em;
    }

    .info-card p {
        font-size: 0.9em;
    }
}

@media (max-width: 576px) {
    .header-text h1,
    .info-card h3 {
        font-size: 1.2em;
    }

    .header-logo {
        height: 60px;
    }

    .lang-btn {
        min-width: 150px;
    }

    .tab,
    button,
    .time-btn {
        padding: 6px 12px;
        font-size: 0.8em;
        min-width: 80px;
    }
}

@media (max-width: 480px) {
    .chart-container {
        padding: 5px;
    }
    
    .responsive-chart,
    .canvas-chart-container {
        margin: 3px auto;
    }
}

/* Print styles */
@media print {
    .responsive-chart,
    .canvas-chart-container {
        max-width: 100%;
        margin: 10px 0;
        page-break-inside: avoid;
    }
}

/* High DPI displays */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
    .canvas-chart-container canvas {
        image-rendering: -webkit-optimize-contrast;
        image-rendering: crisp-edges;
    }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    * {
        transition: none !important;
    }
}

/* Korvaa nykyiset header-tyylit tällä */

/* Header styles - uusi rakenne */
.header-container {
    display: flex;
    flex-direction: column;
    background-color: var(--white);
    padding: 20px;
    border-radius: 8px;
    box-shadow: var(--shadow);
    margin-bottom: 20px;
}

/* Kontrollit oikeaan yläkulmaan */
.controls {
    display: flex;
    gap: 10px;
    justify-content: right;
    align-items: flex-start;
    margin-left: auto;
    margin-bottom: 15px;
}

/* Logo + teksti rivi */
.header-main-row {
    display: flex;
    align-items: center;
    gap: 20px;
    width: 100%;
}

.header-text {
    flex-grow: 1;
    color: var(--primary);
}

.header-text h1 {
    font-size: clamp(1.5em, 5vw, 2em);
    font-weight: 800;
    margin-bottom: 10px;
    color: var(--primary);
}

.header-text p {
    font-size: 1em;
    color: var(--secondary);
    margin: 0;
}

/* Selector styles - kompaktimmat */
.selector-wrap {
    position: relative;
    display: inline-block;
    min-width: 160px; /* Pienempi kuin aikaisemmin */
}

.selector-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.6rem;
    border-radius: 8px;
    background: #ffffff;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    border: 1px solid #e0e0e0;
    cursor: pointer;
   /*  width: 100%; */
    font-size: 0.9rem;
}

.selector-btn:focus {
    outline: 3px solid #00c4b4;
}

.selector-flag {
    font-size: 1rem;
    line-height: 1;
    color: #666;
}

.selector-label {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    /* flex-grow: 1; */
}

.selector-name {
    font-weight: 600;
    font-size: 0.85rem;
    color: #333;
}

.selector-sub {
    font-size: 0.7rem;
    color: #666;
}

.selector-btn:hover .selector-sub,
.selector-btn:hover .selector-flag {
    color: #333;
}

.caret {
    font-size: 0.7rem;
    color: #666;
    margin-left: auto;
}

/* Plots container */
.plots-container {
  display: flex;
  flex-wrap: wrap;   /* rivittyy seuraavalle riville jos tila loppuu */
  gap: 10px;         /* väli elementtien välille */
  padding: 10px;
  max-width: 100%;
  box-sizing: border-box;
}

/* Chart section styling */
.chart-section {
  margin-bottom: 40px;
}

.chart-section-title {
  margin-bottom: 20px;
  font-size: 1.5rem;
  font-weight: 600;
  color: #f9fafb;
  text-align: center;
  border-bottom: 2px solid #374151;
  padding-bottom: 10px;
}

/* Charts row - flexbox layout */
.charts-row {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  align-items: flex-start;
}

/* SVG responsiveness */
.chart-wrapper svg {
  width: 100%;
  height: auto;
  display: block;
}

/* Canvas responsiveness */
.chart-wrapper .canvas-chart-container {
  width: 100%;
}

.chart-wrapper .canvas-chart-container canvas {
  width: 100% !important;
  height: auto !important;
}

/* Responsive breakpoints */

@media (max-width: 900px) {
  .charts-row {
    gap: 15px;
  }
  
}

@media (max-width: 600px) {
  .plots-container {
    padding: 0px;
  }
  
  .charts-row {
    gap: 10px;
  }
  
  
  .chart-section-title {
    font-size: 1.25rem;
  }
}

/* Dark theme enhancements */
@media (prefers-color-scheme: dark) {
  .chart-section-title {
    color: #f9fafb;
    border-bottom-color: #4b5563;
  }
  
}

/* Responsive styles - päivitetty */
@media (max-width: 768px) {
    /* Kontrollit pysyvät ylhäällä oikealla myös mobiilissa */
    .controls {
        margin-bottom: 10px;
        gap: 8px;
    }
    
    .selector-wrap {
        min-width: 140px;
    }
    
    .selector-btn {
        padding: 0.35rem 0.5rem;
        font-size: 0.8rem;
    }

    .header-main-row {
        gap: 15px;
    }

    .header-logo {
        height: 80px;
    }

    .header-text h1 {
        font-size: 1.4em;
    }
}

@media (max-width: 576px) {
    .controls {
        flex-wrap: wrap;
        gap: 5px;
    }
    
    .selector-wrap {
        min-width: 120px;
        /*flex: 1;*/
    }

    .header-main-row {
        gap: 10px;
    }

    .header-logo {
        height: 60px;
    }

    .header-text h1 {
        font-size: 1.2em;
    }
}

/* Erittäin pienillä näytöillä - vain tällöin kontrollit menevät omalle rivilleen */
@media (max-width: 400px) {
    .controls {
        flex-direction: column;
        align-items: stretch;
    }
    
    .selector-wrap {
        min-width: unset;
    }
}

/* Lisää tämä olemassa olevan CSS:n loppuun */

/* Tumman teeman muuttujat */
[data-theme="dark"] {
    --primary: #009FB8;         /* UEF Turkoosi (sama) */
    --turquoise-2: #6DB7CC;     /* Vaaleampi turkoosi hover-efekteihin */
    --turquoise-3: #4da3ff;     /* Sinertävä turkoosi korostuksiin */
    --secondary: #9ca3af;       /* Vaaleampi harmaa tukiväri */
    --success: #34d399;         /* Vaaleampi vihreä onnistumisille */
    --light: #1f2937;           /* Tumma tausta */
    --dark: #f9fafb;            /* Vaalea teksti */
    --white: #374151;           /* Tumma "valkoinen" tausta */
    --border: #4b5563;          /* Tummempi harmaa rajausväri */
    
    /* Language selector variables tumma teema */
    --bg: #1f2937;
    --panel: #374151;
    --muted: #9ca3af;
    --accent: #f9fafb;
    --focus: #4da3ff;
}

[data-theme="dark"] .header-logo {
    filter: invert(1) brightness(1);
}

/* Selectoreiden tummalle teemalle */
[data-theme="dark"] .selector-btn {
    background: var(--panel);
    border-color: var(--border);
    color: var(--accent);
}

[data-theme="dark"] .selector-btn:focus {
    outline-color: var(--focus);
}

[data-theme="dark"] .selector-name {
    color: var(--accent);
}

[data-theme="dark"] .selector-sub,
[data-theme="dark"] .selector-flag,
[data-theme="dark"] .caret {
    color: var(--muted);
}

[data-theme="dark"] .selector-btn:hover .selector-sub,
[data-theme="dark"] .selector-btn:hover .selector-flag {
    color: var(--accent);
}

[data-theme="dark"] .dropdown {
    background: var(--panel);
    border-color: var(--border);
}

[data-theme="dark"] .dropdown-item {
    border-bottom-color: var(--border);
}

[data-theme="dark"] .dropdown-item:hover,
[data-theme="dark"] .dropdown-item[aria-selected="true"] {
    background: #4b5563;
}

[data-theme="dark"] .dropdown-item .short {
    color: var(--accent);
}

[data-theme="dark"] .dropdown-item .small {
    color: var(--muted);
}

/* Smooth transitions teemavaihdolle */
body, 
.selector-btn, 
.dropdown, 
.dropdown-item,
.header-container,
.tab,
.tab-content,
.result-card,
.case-example {
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}

@media (prefers-reduced-motion: reduce) {
    body, 
    .selector-btn, 
    .dropdown, 
    .dropdown-item,
    .header-container,
    .tab,
    .tab-content,
    .result-card,
    .case-example {
        transition: none;
    }
}

