/* ===========================================
   TABLE OF CONTENTS
   -------------------------------------------
   1.  CSS Custom Properties (Variables)
   2.  Reset & Base
   3.  Background & Canvas
   4.  Layout – Header / Main / Footer
   5.  Main Containers (Left / Content / Right)
   6.  Typography & Headings
   7.  Links
   8.  Icons & Images
   9.  Buttons – Control & Rocket
   10. Buttons – Global & Color Variants
   11. Buttons – Card System (parent/child/popup)
   12. Stats
   13. Star Points
   14. Popup / Overlay (#popup-box)
   15. Sidebar
   16. Feedback Modal
   17. Animations & Keyframes
   18. Scrollbar Utility
   19. Utility Classes
   20. Accessibility
   21. Media Queries
       20a. iPad Portrait   (max-width: 64em  / 1024px)
       20b. iPad Landscape  (min-width: 48.0625em) – sidebar push
       20c. Mobile          (max-width: 48em  / 768px)
       20d. Extra Small     (max-width: 30em  / 480px)
       20e. Reduced Motion
       20f. High Contrast
       20g. Print
	22. Extra effects
   =========================================== */


/* ===========================================
   1. CSS CUSTOM PROPERTIES
   =========================================== */
:root {
    /* Colours – Dark theme (default) */
    --color-bg-primary:        #0a0a2a;
    --color-bg-secondary:      #1a1a4a;
    --color-bg-tertiary:       #252550;
    --color-text-primary:      #c0c0c0;
    --color-text-secondary:    #8a8aaa;
    --color-text-muted:        #6a6a8a;
    --color-accent-gold:       #cc9966;
    --color-accent-gold-light: #d4a573;
    --color-accent-gold-border:#ccb06a;
	--color-accent-border: rgba(192, 192, 192, 0.8);
    --color-border-subtle:     #3a3a6a;
    --color-overlay:           rgba(0, 0, 0, 0.85);
    --star-color:              255, 255, 255;   /* rgb, används av js/bgstars.js */

    /* Gradients */
    --gradient-gold: linear-gradient(to right, #ffedb3, #f7e589, #cc9966, #f7e589, #ffedb3);
--gradient-silver: linear-gradient(to right, #8f8f8f, #c0c0c0, #e6e6e6, #c0c0c0, #8f8f8f);
    --gradient-header: linear-gradient(135deg, #1a1a4a 0%, #0a0a2a 100%);
    --gradient-purple: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --gradient-sidebar: linear-gradient(135deg, rgba(20, 20, 40, 0.98), rgba(40, 40, 80, 0.95));

    /* Spacing */
    --spacing-xs:  0.25rem;
    --spacing-sm:  0.5rem;
    --spacing-md:  1rem;
    --spacing-lg:  1.5rem;
    --spacing-xl:  2rem;
    --spacing-2xl: 3rem;

    /* Typography */
    --font-primary:    'Orbitron', sans-serif;
    --font-secondary:  'Exo 2', sans-serif;
    --font-size-base:  clamp(0.875rem, 0.8rem + 0.5vw, 1rem);
    --font-size-h1:    clamp(1.5rem, 3.8vw, 3rem);
    --font-size-h2:    clamp(1.25rem, 2.5vw, 2rem);

    /* Borders & Shadows */
    --border-radius-sm: 0.375rem;
    --border-radius-md: 0.625rem;
    --border-radius-lg: 0.75rem;
    --shadow-sm:   0 2px 8px rgba(0, 0, 0, 0.2);
    --shadow-md:   0 10px 30px rgba(0, 0, 0, 0.4);
    --shadow-glow: 0 0 20px rgba(102, 126, 234, 0.2);

    /* Transitions */
    --transition-fast:   0.2s ease;
    --transition-normal: 0.3s ease;
    --transition-slow:   0.5s ease-out;

    /* Layout */
    --header-height:        4rem;
    --footer-height:        3.5rem;
    --sidebar-width:        250px;
    --sidebar-right-width:  320px;
    --container-max-width:  90%;

    /* Z-index */
    --z-canvas:  -1;
    --z-content:  1;
    --z-sidebar:  1000;
    --z-overlay:  1001;
    --z-modal:    9999;
}

/* ===========================================
   1b. BAKGRUNDSTEMAN
   ===========================================
   Väljs i högermenyn och sätts som data-theme på <html> av
   js/ks-tema.js. Valet ligger i localStorage, inte IndexedDB: det måste
   läsas synkront innan sidan ritas, annars blinkar fel bakgrund förbi
   vid varje sidladdning.

   'rymd' är standard och definieras av :root ovan.

   Guld och silver är sajtens signaturfärger och måste fungera i alla
   tre. Guldet ligger kvar oförändrat i rymd och hav; i det ljusa temat
   mörkas det ner, eftersom ljust guld mot vitt blir oläsligt.
   ─────────────────────────────────────────── */

/* ── Havsblå ──────────────────────────────────────────────────────────
   Djupt hav snarare än rymd. Mörk nog för att guld och silver ska lysa,
   men med en grönblå ton som skiljer den tydligt från rymdtemat. */
[data-theme="hav"] {
    --color-bg-primary:        #062a3d;
    --color-bg-secondary:      #0d4257;
    --color-bg-tertiary:       #135a71;
    --color-text-primary:      #dCe8ec;
    --color-text-secondary:    #93b3bf;
    --color-text-muted:        #6d8f9c;
    --color-border-subtle:     #1d6a83;
    --color-accent-border:     rgba(214, 231, 236, 0.75);
    --color-overlay:           rgba(3, 22, 32, 0.88);
    --gradient-header:         linear-gradient(135deg, #0d4257 0%, #062a3d 100%);
    --gradient-sidebar:        linear-gradient(135deg, rgba(6, 42, 61, 0.98), rgba(19, 90, 113, 0.95));
    --shadow-glow:             0 0 20px rgba(64, 164, 196, 0.25);
    /* Ljusa bubblor i stället för vita stjärnor. */
    --star-color:              196, 232, 242;
}

/* ── Ljust ────────────────────────────────────────────────────────────
   Det tidigare [data-theme="light"] täckte bara ett par variabler, så
   header, ramar och gradienter blev kvar i mörkt och texten försvann.
   Här är hela uppsättningen. */
[data-theme="ljus"] {
    --color-bg-primary:        #ffffff;
    --color-bg-secondary:      #f4f6f8;
    --color-bg-tertiary:       #e7ebef;
    --color-text-primary:      #23303a;
    --color-text-secondary:    #55636f;
    --color-text-muted:        #7d8994;
    --color-border-subtle:     #ccd5dd;
    --color-accent-border:     rgba(120, 135, 148, 0.55);
    --color-overlay:           rgba(255, 255, 255, 0.95);

    /* Guldet mörkas ner – den ljusa gradienten blir osynlig mot vitt. */
    --color-accent-gold:       #9a6b2f;
    --color-accent-gold-light: #b07f3d;
    --color-accent-gold-border:#c8a45e;
    --gradient-gold:  linear-gradient(to right, #a9762f, #8a5d22, #c8a45e, #8a5d22, #a9762f);
    --gradient-silver:linear-gradient(to right, #6f7b85, #97a3ad, #b9c3cb, #97a3ad, #6f7b85);

    --gradient-header:  linear-gradient(135deg, #f4f6f8 0%, #e7ebef 100%);
    --gradient-sidebar: linear-gradient(135deg, rgba(255,255,255,0.98), rgba(238,242,246,0.96));
    --shadow-sm:   0 2px 8px rgba(35, 48, 58, 0.10);
    --shadow-md:   0 10px 30px rgba(35, 48, 58, 0.14);
    --shadow-glow: 0 0 18px rgba(35, 48, 58, 0.10);
    /* Mörka prickar syns mot vitt; vita stjärnor skulle försvinna helt. */
    --star-color:  150, 168, 182;
}

/* ── Julröd ───────────────────────────────────────────────────────────
   Visas bara i december. js/ks-tema.js filtrerar bort valet resten av
   året och låter ett sparat 'jul' falla tillbaka på rymd – valet skrivs
   inte över, så nästa december är det tillbaka av sig självt.

   Djup granröd snarare än klarröd: guldet måste fortfarande lysa, och
   en stark röd bakgrund blir tröttsam att läsa mot en hel lektion.
   Stjärnorna blir varmvita och läser som snöfall. */
/* ── Bakgrundsanimationen ─────────────────────────────────────────────
   js/bgstars.js döljer canvasen i det ljusa temat, men gör det i
   JavaScript. Regeln här gör samma sak i CSS, så stjärnorna aldrig
   hinner synas medan skripten laddar och inte heller blir kvar om
   laddordningen ändras på någon sida. */
[data-theme="ljus"] #spaceCanvas { display: none !important; }

/* Popupens överlägg var alltid nästan svart, oavsett tema. I det ljusa
   temat blev hela skärmen mörk så fort man öppnade en kategori. */
[data-theme="ljus"] .popup-overlay,
[data-theme="ljus"] #childPopupOverlay.popup-overlay {
    background: rgba(255, 255, 255, .82);
}
[data-theme="hav"] .popup-overlay,
[data-theme="hav"] #childPopupOverlay.popup-overlay {
    background: rgba(4, 26, 38, .86);
}

/* ── Havstemat: fält, knappar och ytor ────────────────────────────────
   Temat sätter bakgrund och text men lämnade kanter och ytor i de
   blågrå toner som hör till rymdtemat. Mot havsblått ser de smutsiga
   ut. Här får de en turkos ton som hör ihop med bakgrunden. */
[data-theme="hav"] input,
[data-theme="hav"] select,
[data-theme="hav"] textarea {
    background: rgba(255, 255, 255, .07);
    border-color: rgba(154, 214, 235, .35);
    color: #dbe9f2;
}
[data-theme="hav"] input::placeholder,
[data-theme="hav"] textarea::placeholder { color: #8fb4c8; }
[data-theme="hav"] input:focus,
[data-theme="hav"] select:focus,
[data-theme="hav"] textarea:focus {
    outline-color: #6fd3e8;
    border-color: #6fd3e8;
}

[data-theme="hav"] .control-btn,
[data-theme="hav"] .btn-global,
[data-theme="hav"] .popup-btn,
[data-theme="hav"] .sidebar-button,
[data-theme="hav"] .sidebar-category-title {
    color: #dbe9f2;
}
[data-theme="hav"] .control-btn:hover,
[data-theme="hav"] .btn-global:hover,
[data-theme="hav"] .popup-btn:hover,
[data-theme="hav"] .sidebar-button:hover,
[data-theme="hav"] .sidebar-category-title:hover {
    /* Guld syns dåligt mot havsblått – ljus turkos i stället. */
    color: #8fe3f5;
    background: rgba(143, 227, 245, .12);
}
[data-theme="hav"] .sidebar-children {
    background: rgba(255, 255, 255, .04);
    border-left: 2px solid rgba(143, 227, 245, .28);
}
[data-theme="hav"] .g-gold,
[data-theme="hav"] .section-title { color: #9fe4f2; }

/* ── Ljusa temat: läsbarhet ───────────────────────────────────────────
   Sajten är byggd för mörk botten, där ljus text och genomskinliga
   ytor fungerar. Mot vitt blir samma värden bleka: knapptext i guld
   mot vitt ligger runt 2 i kontrast, och paneler med
   rgba(255,255,255,.05) syns inte alls.

   Här får de ytor och den text som är gemensam för hela sajten
   värden som fungerar mot ljus botten. */
[data-theme="ljus"] .sidebar-button,
[data-theme="ljus"] .sidebar-category-title,
[data-theme="ljus"] .sidebar-children a {
    color: #1e2b36;
}
[data-theme="ljus"] .sidebar-button:hover,
[data-theme="ljus"] .sidebar-category-title:hover,
[data-theme="ljus"] .sidebar-children a:hover {
    /* Guld mot vitt är oläsligt. Mörknad ton plus en tydlig yta. */
    color: #7a5312;
    background: rgba(0, 0, 0, .06);
}
/* Underkategorierna ska ha vit botten, inte den genomskinliga ytan
   som bara syns mot mörkt. */
[data-theme="ljus"] .sidebar-children {
    background: #ffffff;
    border-left: 2px solid rgba(0, 0, 0, .10);
}

/* Genomskinliga ytor som försvinner mot vitt. */
[data-theme="ljus"] .control-btn,
[data-theme="ljus"] .btn-global,
[data-theme="ljus"] .popup-btn {
    background: rgba(0, 0, 0, .05);
    border-color: rgba(0, 0, 0, .18);
    color: #1e2b36;
}
[data-theme="ljus"] .control-btn:hover,
[data-theme="ljus"] .btn-global:hover,
[data-theme="ljus"] .popup-btn:hover {
    background: rgba(0, 0, 0, .10);
    border-color: #7a5312;
}

/* Rubriker i guld: den ljusa guldgradienten är redan mörkad i
   temavariablerna, men ren guldfärgad text behöver samma behandling. */
[data-theme="ljus"] .g-gold,
[data-theme="ljus"] h2.g-gold,
[data-theme="ljus"] .section-title {
    color: #7a5312;
}

/* Fält och listor. */
[data-theme="ljus"] input,
[data-theme="ljus"] select,
[data-theme="ljus"] textarea {
    background: #ffffff;
    border-color: rgba(0, 0, 0, .22);
    color: #1e2b36;
}
[data-theme="ljus"] input::placeholder,
[data-theme="ljus"] textarea::placeholder { color: #5d6e7c; }

/* Ytor som är satta i mörkt rakt i koden och därför inte följer temat.
   De här klasserna återkommer på många sidor; en per sida hade blivit
   ohanterligt många ändringar. */
[data-theme="ljus"] .card,
[data-theme="ljus"] .panel,
[data-theme="ljus"] .popup-content,
[data-theme="ljus"] .start-card {
    background: #ffffff;
    color: #1e2b36;
    border-color: rgba(0, 0, 0, .14);
}
[data-theme="ljus"] .sc-header {
    background: rgba(0, 0, 0, .05);
    border-bottom-color: rgba(0, 0, 0, .12);
}
[data-theme="ljus"] .sc-row  { border-bottom-color: rgba(0, 0, 0, .08); color: #4a5c6b; }
[data-theme="ljus"] .sc-text strong,
[data-theme="ljus"] .sc-title { color: #1e2b36; }
[data-theme="ljus"] .sc-start { background: rgba(0, 0, 0, .04); color: #7a5312; }

/* Skiljelinjer som är satta i vitt syns inte mot vitt. */
[data-theme="ljus"] hr,
[data-theme="ljus"] .sidebar-category + .sidebar-category {
    border-color: rgba(0, 0, 0, .12);
}

/* ── Ytor som sidorna ritar själva ────────────────────────────────────
   534 regler runt om på sajten sätter en hårdkodad mörk bakgrund på
   kort, rutor och knappar. De skrevs för mörk botten och ser rätt ut i
   rymdtemat, men i ljust och hav blir de mörka öar mitt i en ljus sida.

   Att skriva om alla vore ogörligt och riskabelt. I stället fångas här
   de klassnamn som faktiskt delas mellan sidor. Selektorerna är
   medvetet specifika (två klasser eller main-prefix) så att de vinner
   över sidans egen regel utan !important.

   Sidegna namn – .eb-*, .key, .pit och liknande – täcks inte. De hör
   till en enskild app och behöver gås igenom var för sig. */

/* ── Ljust ───────────────────────────────────────────────────────── */
[data-theme="ljus"] main .card,
[data-theme="ljus"] main .panel,
[data-theme="ljus"] main .container,
[data-theme="ljus"] main .box,
[data-theme="ljus"] main .modal,
[data-theme="ljus"] main .popup,
[data-theme="ljus"] main section,
[data-theme="ljus"] .popup-content,
[data-theme="ljus"] .modal-content {
    background: #ffffff;
    color: #1e2b36;
    border-color: rgba(0, 0, 0, .14);
}
/* Rutor inuti rutor ska skilja sig något, annars flyter allt ihop. */
[data-theme="ljus"] main .card .card,
[data-theme="ljus"] main .panel .panel,
[data-theme="ljus"] main .card .box {
    background: #f2f5f8;
}
[data-theme="ljus"] main .btn,
[data-theme="ljus"] main button:not(.sc-start):not(.ks-tts-figur),
[data-theme="ljus"] main .btn-secondary,
[data-theme="ljus"] main .save-btn {
    background: #f0f3f6;
    color: #1e2b36;
    border-color: rgba(0, 0, 0, .2);
}
[data-theme="ljus"] main .btn:hover,
[data-theme="ljus"] main button:not(.sc-start):not(.ks-tts-figur):hover,
[data-theme="ljus"] main .btn-secondary:hover,
[data-theme="ljus"] main .save-btn:hover {
    background: #e2e8ee;
    border-color: #7a5312;
}
/* Överlagringar bakom popuprutor: ljus dimma i stället för svart. */
[data-theme="ljus"] .popup-overlay,
[data-theme="ljus"] .overlay,
[data-theme="ljus"] #popup-overlay {
    background: rgba(230, 236, 242, .88);
}

/* ── Hav ─────────────────────────────────────────────────────────────
   Här är botten redan mörk, så ytorna behöver inte bytas ut – bara få
   havets ton i stället för rymdens blålila. Annars ser korten ut som
   klistrade från ett annat tema. */
[data-theme="hav"] main .card,
[data-theme="hav"] main .panel,
[data-theme="hav"] main .container,
[data-theme="hav"] main .box,
[data-theme="hav"] main .modal,
[data-theme="hav"] main .popup,
[data-theme="hav"] main section,
[data-theme="hav"] .popup-content,
[data-theme="hav"] .modal-content {
    background: #0b3a56;
    color: #dbe9f2;
    border-color: #1c5e84;
}
[data-theme="hav"] main .card .card,
[data-theme="hav"] main .panel .panel,
[data-theme="hav"] main .card .box {
    background: #114b6d;
}
[data-theme="hav"] main .btn,
[data-theme="hav"] main button:not(.sc-start):not(.ks-tts-figur),
[data-theme="hav"] main .btn-secondary,
[data-theme="hav"] main .save-btn {
    background: #114b6d;
    color: #dbe9f2;
    border-color: #2b6f96;
}
[data-theme="hav"] main .btn:hover,
[data-theme="hav"] main button:not(.sc-start):not(.ks-tts-figur):hover,
[data-theme="hav"] main .btn-secondary:hover,
[data-theme="hav"] main .save-btn:hover {
    background: #17608a;
    border-color: #4fa3c9;
}
[data-theme="hav"] .popup-overlay,
[data-theme="hav"] .overlay,
[data-theme="hav"] #popup-overlay {
    background: rgba(3, 20, 31, .88);
}

/* Fält: samma behandling i båda temana. */
[data-theme="hav"] input,
[data-theme="hav"] select,
[data-theme="hav"] textarea {
    background: #06283d;
    border-color: #2b6f96;
    color: #dbe9f2;
}
[data-theme="hav"] input::placeholder,
[data-theme="hav"] textarea::placeholder { color: #8fb6cc; }

[data-theme="jul"] {
    --color-bg-primary:        #5c1114;
    --color-bg-secondary:      #74191d;
    --color-bg-tertiary:       #8d2328;
    --color-text-primary:      #f3e3d2;
    --color-text-secondary:    #d9b9a4;
    --color-text-muted:        #b8927c;
    --color-border-subtle:     #93353a;
    --color-accent-border:     rgba(243, 227, 210, 0.75);
    --color-overlay:           rgba(46, 8, 10, 0.88);
    --star-color:              255, 246, 235;
    --gradient-header:  linear-gradient(135deg, #74191d 0%, #5c1114 100%);
    --gradient-sidebar: linear-gradient(135deg, rgba(92, 17, 20, 0.98), rgba(141, 35, 40, 0.95));
    --shadow-glow: 0 0 20px rgba(214, 168, 96, 0.22);
}


/* Det gamla namnet "light" översätts till "ljus" av js/ks-tema.js, så
   sparade värden från tidigare fortsätter fungera. */


/* ===========================================
   2. RESET & BASE
   =========================================== */
*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    font-size: 16px;
    scroll-behavior: smooth;
    height: 100%;
    width: 100%;
}

body {
    color: var(--color-text-primary);
    font-family: var(--font-primary);
    font-size: var(--font-size-base);
    min-height: 100vh;
    width: 100vw;
    position: relative;
    display: flex;
    flex-direction: column;
    line-height: 1.6;
    background: transparent;
    margin: 0;
    padding: 0;
}

a, button, input, select, textarea {
    font-size: inherit;
}

        
        .login-container {
            background: #000;
            color: #fff;
            border-radius: 10px;
            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
            overflow: hidden;
            width: 100%;
            max-width: 250px;
        }
        
        .login-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            text-align: center;
            padding: 20px 10px;
        }
        
        .login-header h1 {
            font-size: 16px;
            margin-bottom: 5px;
        }
        
        .login-header p {
            opacity: 0.9;
            font-size: 12px;
        }
        
        .login-form {
            padding: 10px;
        }
        
        .form-group {
            margin-bottom: 10px;
        }
        
        /* FIX: dessa var tidigare globala element-selektorer (label,
           input[type=text], input[type=password]) och slog igenom pa
           HELA sajten - alla formular pa alla sidor fick width:90%,
           ljusgra ram och vit blockad label. Nu scopade till .login-form. */
        .login-form label {
            display: block;
            margin-bottom: 5px;
            font-weight: 600;
            color: #fff;
        }
        
        .login-form input[type="text"],
        .login-form input[type="password"] {
            width: 90%;
            padding: 12px;
            border: 2px solid #e1e5e9;
            border-radius: 5px;
            font-size: 16px;
            transition: border-color 0.3s ease;
        }
        
        .login-form input[type="text"]:focus,
        .login-form input[type="password"]:focus {
            outline: none;
            border-color: #667eea;
        }
        
        /* FIX: .btn-login {} var deklarerad tva ganger med identiskt innehall.
           Den harden ar borttagen - se sektion 10 (rad ~800). */
        
        /* FIX: .message och .error ar extremt generiska klassnamn och krockade
           med andra sidors meddelanderutor. Scopade till .login-container. */
        .login-container .message {
            background-color: #d4edda;
            color: #155724;
            padding: 12px;
            border-radius: 5px;
            margin-bottom: 20px;
            border: 1px solid #c3e6cb;
        }
        
        .login-container .error {
            background-color: #f8d7da;
            color: #721c24;
            padding: 12px;
            border-radius: 5px;
            margin-bottom: 20px;
            border: 1px solid #f5c6cb;
        }
        
        .forgot-password {
            text-align: center;
            margin-top: 20px;
        }
        
        .forgot-password a {
            color: #667eea;
            text-decoration: none;
            font-size: 14px;
        }
        
        .forgot-password a:hover {
            text-decoration: underline;
        }
        
        .attempts-warning {
            background-color: #fff3cd;
            color: #856404;
            padding: 10px;
            border-radius: 5px;
            margin-bottom: 15px;
            border: 1px solid #ffeaa7;
            font-size: 14px;
        }



/* ===========================================
   3. BACKGROUND & CANVAS
   =========================================== */
#spaceCanvas {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: var(--z-canvas);
    background-color: var(--color-bg-primary);
}

body:fullscreen         #spaceCanvas,
body:-webkit-full-screen #spaceCanvas,
body:-moz-full-screen   #spaceCanvas,
body:-ms-fullscreen     #spaceCanvas {
    width: 100vw;
    height: 100vh;
    top: 0;
    left: 0;
}


/* ===========================================
   4. LAYOUT – HEADER / MAIN / FOOTER
   =========================================== */
header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md);
    gap: var(--spacing-md);
    background: transparent;
    z-index: 100;
    height: var(--header-height);
    min-height: var(--header-height);
    max-width: 100vw;
    box-sizing: border-box;
}

.top-area-left   { /* default desktop – ingen extra styling nödvändig */ }
.top-area-middle { justify-self: center; }
.top-area-right  { /* default desktop */ }

main {
    position: fixed;
    top: var(--header-height);
    bottom: var(--footer-height);
    left: 0;
    right: 0;
    width: 100%;
    /* FIX: ingen explicit height. top+bottom ger redan rätt höjd och
       calc(100vh - ...) blev för hög i mobil-/surfplatte-webbläsare
       (100vh räknar med adressfältet) -> innehållet la sig över footern. */
    height: auto;
    min-height: 0;
    background: transparent;
    padding: var(--spacing-md);
    box-sizing: border-box;
    display: grid;
    /* minmax(0,1fr) hindrar att brett innehall spranger mittkolumnen */
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-rows: auto minmax(0, 1fr);
    justify-items: center;
    gap: var(--spacing-lg);
    overflow: visible;
}

footer {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: var(--spacing-md);
    padding: var(--spacing-sm);
    background: transparent;
    z-index: 100;
    /* FIX: fast hojd. Tidigare kunde footern vaxa forbi --footer-height
       (t.ex. nar texten radbrots) medan main:s bottom lag kvar pa
       --footer-height -> overlapp. */
    height: var(--footer-height);
    min-height: var(--footer-height);
    max-width: 100vw;
    box-sizing: border-box;
}
footer p { margin: 0; line-height: 1.25; }

footer #left   { justify-self: start; }
footer #middle { justify-self: center; }
footer #right  {
    justify-self: end;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}

/* Sidebar push content – desktop only (se sektion 20b) */


/* ===========================================
   5. MAIN CONTAINERS
   =========================================== */

/* ── Message container ── */
.message-container {
    grid-column: 1 / -1;
    grid-row: 1;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm);
    border-radius: var(--border-radius-md);
    min-height: 1.5rem;
    align-items: center;
    justify-content: center;
    transition: all var(--transition-fast);
}
.message-container:empty { display: none; }

/* ── Left container ── */
.left-container {
    grid-column: 1;
    grid-row: 2;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-lg);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-md), var(--shadow-glow);
    border: 2px solid var(--color-accent-border);
    overflow-y: auto;
    overflow-x: hidden;
    min-width: 250px;
    max-width: 350px;
	height: 100%;
    min-height: 0;
    box-sizing: border-box;
}
.left-container:empty,
.left-container.is-blank { display: none; }

/* ── Content container ── */
.content-container {
    grid-column: 2;
    grid-row: 2;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-lg);
    padding: var(--spacing-lg);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-md), var(--shadow-glow);
    border: 2px solid var(--color-accent-border);
    overflow-y: auto;
    overflow-x: hidden;
    width: 100%;
    /* FIX: max-width utan centrering gjorde att rutan las sig till vanster
       i grid-kolumnen pa breda skarmar. */
    justify-self: center;
    align-self: stretch;
    margin-inline: auto;
    height: 100%;
    /* FIX: min-height 300px kunde bli hogre an tillgangligt utrymme pa laga
       skarmar och tryckte ut rutan over footern. */
    min-height: 0;
    min-width: 0;
    max-width: 1200px;
    box-sizing: border-box;
}

/* ── Right container ── */
.right-container {
    grid-column: 3;
    grid-row: 2;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-md);
    padding: var(--spacing-lg);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-md), var(--shadow-glow);
    border: 2px solid var(--color-accent-border);
    overflow-y: auto;
    overflow-x: hidden;
    min-width: 250px;
    max-width: 350px;
    min-height: 0;
    box-sizing: border-box;
}
.right-container:empty,
.right-container.is-blank { display: none; }

/* FIX: :empty matchar INTE en div som bara innehaller radbrytningar/blanksteg.
   Darfor markeras verkligt tomma paneler med .is-blank via JS i header.php. */

/* ── Ad section ── */
.ad-section {
    min-width: 12.5rem;
    padding: var(--spacing-lg);
    border-radius: var(--border-radius-md);
    box-shadow: var(--shadow-md), var(--shadow-glow);
    border: 2px solid rgba(255, 215, 0, 0.3);
    position: relative;
    overflow: hidden;
    flex: 0 0 auto;
    height: 100%;
    box-sizing: border-box;
}


/* ===========================================
   6. TYPOGRAPHY & HEADINGS
   =========================================== */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-primary);
    font-weight: 700;
    line-height: 1.2;
}

.container h1,
.top-area-middle h1,
#top-area-middle h1 {
    text-transform: uppercase;
    background: var(--gradient-gold);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.4);
}
.g-gold {
    text-transform: uppercase;
    background: var(--gradient-gold);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.4);
}
.g-silver {
    text-transform: uppercase;
    background: var(--gradient-silver);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.4);
}



.gold-title {
    position: relative;
    display: inline-block;
    font-weight: 900;
    letter-spacing: 0.02em;

    /* Metallytan – hård reflexkant istället för mjuk övergång */
    background:
        linear-gradient(
            180deg,
            #fffdf0 0%,
            #fff6b8 8%,
            #ffe066 20%,
            #f5c02e 30%,
            #d18f06 40%,
            #8a5200 47%,   /* mörkt reflexband på mitten */
            #7a4600 50%,
            #b56b00 55%,
            #e8a418 66%,
            #ffd45a 78%,
            #ffeea0 88%,
            #f0b429 95%,
            #a35d00 100%   /* varm orange underkant */
        );
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;

    /* Tunn inre kant för att skärpa formen */
    -webkit-text-stroke: 0.5px rgba(90, 52, 0, 0.9);

    /* Yttre glöd som på ikonerna */
    filter: drop-shadow(0 0 6px rgba(255, 190, 40, 0.35));
}

/* Tjock mörk kontur bakom texten */
.gold-title::before {
    content: attr(data-text);
    position: absolute;
    inset: 0;
    z-index: -1;
    -webkit-text-stroke: 6px #2e1a00;
    -webkit-text-fill-color: #2e1a00;
    color: #2e1a00;
    filter:
        drop-shadow(0 2px 0 #1a0f00)
        drop-shadow(0 4px 6px rgba(0, 0, 0, 0.7));
}


/* Borstade metallinjer */
.gold-title::after {
    content: attr(data-text);

    position: absolute;
    inset: 0;

    font: inherit;
    letter-spacing: inherit;

background:
        linear-gradient(
            180deg,
            #ffefa8 0%,
            #ffe270 14%,
            #f7c62f 30%,
            #e0a512 42%,
            #7d4a00 47%,   /* tunn mörk linje – bara 4% hög */
            #b06a00 51%,
            #ffe98f 54%,   /* skarp reflex direkt under */
            #fff9d8 60%,
            #ffe066 72%,
            #f0b71f 85%,
            #e8a800 100%   /* botten stannar ljus */
        );

    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;

    pointer-events: none;
}


/* En mycket subtil ljusreflex över metallen */
.gold-title::before {
    content: attr(data-text);

    position: absolute;
    inset: 0;

    font: inherit;
    letter-spacing: inherit;

    background:
        linear-gradient(
            105deg,
            transparent 0%,
            transparent 38%,
            rgba(255,255,255,0.0) 43%,
            rgba(255,255,255,0.42) 48%,
            rgba(255,255,255,0.08) 52%,
            transparent 58%,
            transparent 100%
        );

    background-size: 250% 100%;
    background-position: -150% 0;

    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;

    pointer-events: none;
}


.container h1      { font-size: var(--font-size-h1); }
#top-area-middle h1{ font-size: var(--font-size-h2); }

.h1section { margin-block: var(--spacing-lg) var(--spacing-md); }
.h1first   { margin-top: 0; }


/* ===========================================
   7. LINKS
   =========================================== */
a {
    color: inherit;
    text-decoration: none;
    transition: color var(--transition-fast);
}

.footer-text {
    color: var(--color-text-primary);
    font-family: var(--font-primary);
    letter-spacing: 0.125rem;
    font-size: 0.875rem;
}
.footer-text:hover { color: var(--color-accent-gold); }

.footer-icon {
    height: clamp(2.5rem, 2.4vw, 5rem);
}

/* ===========================================
   8. ICONS & IMAGES
   =========================================== */

.header_icon {
    width:  clamp(2.5rem, 2.4vw, 5rem);
    height: clamp(2.5rem, 2.4vw, 5rem);	
}
.header_logo {
    height: clamp(2.8rem, 2.6vw, 6rem);
    /* FIX: bilden hade ingen breddbegränsning. headerlogo.png är en bred
       ordbild, så på smala skärmar blev den bredare än sin 50%-kolumn och
       la sig UNDER ikongrupperna till vänster och höger – rubriken såg ut
       att vara överskriven av ikoner. */
    max-width: 100%;
    width: auto;
    object-fit: contain;
    display: block;
}
.imgrocket {
    width:  clamp(2.5rem, 2.4vw, 5rem);
    height: clamp(2.5rem, 2.4vw, 5rem);
    object-fit: contain;
}

.imgstar {
    width:  clamp(1.875rem, 2vw, 3.125rem);
    height: clamp(1.875rem, 2vw, 3.125rem);
    object-fit: contain;
}

.imginfo {
    width:  clamp(2.5rem, 2.4vw, 5rem);
    height: clamp(2.5rem, 2.4vw, 5rem);
    object-fit: contain;
}

/* Star lit animation */
.star-points.lit {
    opacity: 1 !important;
    animation: starLit 0.5s ease forwards, twinkleLit 2s ease-in-out infinite !important;
    transform: scale(1.2) !important;
    filter: drop-shadow(0 0 15px rgba(255, 215, 0, 1)) !important;
}


/* ===========================================
   9. BUTTONS – CONTROL & ROCKET
   =========================================== */
.control-btn {
    background: none;
    border: none;
    cursor: pointer;
    padding: var(--spacing-xs);
    transition: transform var(--transition-slow);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.control-btn:hover        { transform: translateY(-0.25rem); }
.control-btn:focus-visible {
    outline: 2px solid var(--color-accent-gold);
    outline-offset: 2px;
    border-radius: var(--border-radius-sm);
}

.rocket-btn.launch {
    transform: rotate(-135deg) translateX(200vw);
    opacity: 0;
    transition: all var(--transition-slow);
}
.rocket-btn img {
    width:  clamp(2.5rem, 2.4vw, 5rem);
    height: clamp(2.5rem, 2.4vw, 5rem);
    object-fit: contain;
}

/* ── Emoji-ikoner i topbaren ── */
.control-btn .hdr-icon {
    font-size: 22px;
    line-height: 1;
    font-family: 'Noto Color Emoji','Apple Color Emoji','Segoe UI Emoji',sans-serif;
    display: inline-block;
}
/* ── Raket-knappen: större knapp + 3-emoji-kluster (⭐ 🚀 🏠) ── */
.control-btn.rocket-btn {
    min-width: 76px;
    height: 58px;
    padding: 6px 12px;
}
.rocket-btn .hdr-cluster {
    position: relative;
    display: inline-block;
    width: 68px;
    height: 48px;
    vertical-align: middle;
}
.rocket-btn .hdr-orbit {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
}
.rocket-btn .hdr-pos-rocket { transform: none;                                            z-index: 3; }
.rocket-btn .hdr-pos-star   { transform: translate(-25px, 5px) scale(.78) rotate(-12deg); z-index: 1; }
.rocket-btn .hdr-pos-house  { transform: translate(25px, 6px)  scale(.78) rotate(12deg);  z-index: 2; }
.rocket-btn .hdr-emoji {
    font-size: 28px;
    line-height: 1;
    font-family: 'Noto Color Emoji','Apple Color Emoji','Segoe UI Emoji',sans-serif;
    filter: drop-shadow(0 2px 4px rgba(0,0,0,.5));
}
/* Hover-våg – samma känsla som menykorten */
.rocket-btn:hover .hdr-emoji                 { animation: hdrWave .6s ease-in-out infinite alternate; }
.rocket-btn:hover .hdr-pos-star   .hdr-emoji { animation-delay: 0s; }
.rocket-btn:hover .hdr-pos-rocket .hdr-emoji { animation-delay: .12s; }
.rocket-btn:hover .hdr-pos-house  .hdr-emoji { animation-delay: .24s; }
@keyframes hdrWave { 0% { transform: translateY(0); } 100% { transform: translateY(-5px); } }

/* ── Effekt 2: klick — cirkulera i led runt samma mitt ──
   Samma princip som .kr-spin i index.php-menyn, men med mindre radie (22px)
   eftersom .hdr-cluster bara ar 68x48px. Klassen .hdr-spin laggs pa
   .hdr-cluster via JS i php/header.php. */
.rocket-btn .hdr-cluster.hdr-spin .hdr-emoji { animation: none !important; } /* pausa vagen */
.rocket-btn .hdr-cluster.hdr-spin .hdr-orbit {
    animation-duration: 1.25s;
    animation-timing-function: cubic-bezier(.45, 0, .55, 1);
    animation-fill-mode: both;
}
.rocket-btn .hdr-cluster.hdr-spin .hdr-pos-star   { animation-name: hdr-orbit-star;   }
.rocket-btn .hdr-cluster.hdr-spin .hdr-pos-rocket { animation-name: hdr-orbit-rocket; }
.rocket-btn .hdr-cluster.hdr-spin .hdr-pos-house  { animation-name: hdr-orbit-house;  }

/* 0/100% = viloplats (samma varden som .hdr-pos-* ovan, sa inget hopp),
   18-82% = ut pa cirkeln (radie 22px) ett helt varv. */
@keyframes hdr-orbit-star {
    0%   { transform: translate(-25px, 5px) scale(.78) rotate(-12deg); }
    18%  { transform: rotate(240deg) translateY(-22px) rotate(-240deg) scale(.78); }
    82%  { transform: rotate(600deg) translateY(-22px) rotate(-600deg) scale(.78); }
    100% { transform: translate(-25px, 5px) scale(.78) rotate(-12deg); }
}
@keyframes hdr-orbit-rocket {
    0%   { transform: translateY(0) scale(1); }
    18%  { transform: rotate(0deg)   translateY(-22px) rotate(0deg)    scale(1); }
    82%  { transform: rotate(360deg) translateY(-22px) rotate(-360deg) scale(1); }
    100% { transform: translateY(0) scale(1); }
}
@keyframes hdr-orbit-house {
    0%   { transform: translate(25px, 6px) scale(.78) rotate(12deg); }
    18%  { transform: rotate(120deg) translateY(-22px) rotate(-120deg) scale(.78); }
    82%  { transform: rotate(480deg) translateY(-22px) rotate(-480deg) scale(.78); }
    100% { transform: translate(25px, 6px) scale(.78) rotate(12deg); }
}

/* VIKTIGT: knappen far inte klippa ikonerna medan de snurrar ut ur rutan.

   Flera sidor (mindmap.php, multiplicationgame.php, vocabstar.php m.fl.) har
   egna <style>-block med en BAR element-selektor `button { ... }`. Den laddas
   efter style.css och satter bl.a. overflow:hidden, position:relative och ett
   button::before-skimmer pa VARENDA knapp - aven headerns.
   Reglerna nedan har hogre specificitet (0,2,0 > 0,0,1) och vinner darfor
   oavsett kallordning, sa headern ar skyddad pa alla sidor. */
header .control-btn,
header .control-btn.rocket-btn {
    position: relative;
    overflow: visible;
}
header .control-btn::before,
header .control-btn::after { content: none; }
header .rocket-btn .hdr-cluster,
header .rocket-btn .hdr-orbit { overflow: visible; }

@media (prefers-reduced-motion: reduce) {
    .rocket-btn:hover .hdr-emoji { animation: none; }
    .rocket-btn .hdr-cluster.hdr-spin .hdr-emoji,
    .rocket-btn .hdr-cluster.hdr-spin .hdr-orbit { animation: none; }
}


/* ===========================================
   10. BUTTONS – GLOBAL & COLOUR VARIANTS
   =========================================== */
.btn-global {
    background: var(--gradient-gold);
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 3rem;
    min-width: 3rem;
    padding: 0.75rem 1.5rem;
    margin: 5px;
    font-weight: 600;
    border-radius: var(--border-radius-md);
    white-space: nowrap;
    border: none;
    transition: opacity var(--transition-fast);
    cursor: pointer;
}
.btn-global:hover,
.btn-global:active      { opacity: 0.9; }
.btn-global:focus-visible {
    outline: 2px solid var(--color-accent-gold);
    outline-offset: 2px;
}

/* Login button */
.btn-login {
    width: 100%;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    border: none;
    padding: 12px;
    border-radius: 5px;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.2s ease;
}
.btn-login:hover    { transform: translateY(-2px); }
.btn-login:disabled { background: #ccc; cursor: not-allowed; transform: none; }

/* Primary / Secondary */
.btn-primary,
.btn-secondary {
    padding: 0.75rem 1.875rem;
    border: none;
    border-radius: var(--border-radius-sm);
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition-normal);
    font-family: var(--font-primary);
    letter-spacing: 0.03125rem;
    text-transform: uppercase;
}
.btn-primary {
    background: linear-gradient(135deg, var(--color-accent-gold) 0%, #b88a55 100%);
    color: var(--color-bg-primary);
    box-shadow: 0 4px 15px rgba(204, 153, 102, 0.3);
}
.btn-primary:hover:not(:disabled) {
    background: linear-gradient(135deg, var(--color-accent-gold-light) 0%, var(--color-accent-gold) 100%);
    box-shadow: 0 6px 20px rgba(204, 153, 102, 0.4);
    transform: translateY(-0.125rem);
}
.btn-primary:active:not(:disabled) { transform: translateY(0); }
.btn-primary:disabled               { opacity: 0.6; cursor: not-allowed; }

.btn-secondary {
    background-color: transparent;
    color: var(--color-text-primary);
    border: 2px solid var(--color-border-subtle);
}
.btn-secondary:hover {
    background-color: var(--color-bg-secondary);
    border-color: var(--color-accent-gold);
    color: var(--color-accent-gold);
}

/* Colour variant classes */
.bg-guld-start        { background: linear-gradient(45deg, #b8860b, #ffd700, #b8860b); }
.bg-stal-silver       { background: linear-gradient(45deg, #252838, #b0c4de, #252838); }
.bg-djup-lila         { background: linear-gradient(45deg, #2e0854, #6a5acd, #2e0854); }
.bg-gra-verktyg       { background: linear-gradient(45deg, #1f2937, #6b7280, #1f2937); }
.bg-kornblomst-bla    { background: linear-gradient(45deg, #1a1a2e, #6495ed, #1a1a2e); }
.bg-djuphavs-bla      { background: linear-gradient(45deg, #001a33, #4169e1, #001a33); }
.bg-stark-cerise      { background: linear-gradient(45deg, #33001a, #ff1493, #33001a); }
.bg-olivgron-no       { background: linear-gradient(45deg, #1a1a00, #9acd32, #1a1a00); }
.bg-antik-guld-so     { background: linear-gradient(45deg, #1a0d00, #daa520, #1a0d00); }
.bg-magenta-rosa      { background: linear-gradient(45deg, #8b008b, #ff69b4, #8b008b); }
.bg-varm-tegelrod     { background: linear-gradient(45deg, #8b3a3a, #f08080, #8b3a3a); }
.bg-turkosgron-bild   { background: linear-gradient(45deg, #004d4d, #20b2aa, #004d4d); }
.bg-stalbla-hjarnan   { background: linear-gradient(45deg, #2e3b4e, #4682b4, #2e3b4e); }
.bg-mork-rosa-vinrod  { background: linear-gradient(45deg, #640021, #c71585, #640021); }
.bg-skogsgron         { background: linear-gradient(45deg, #013220, #228b22, #013220); }
.bg-kaffe-brun        { background: linear-gradient(45deg, #4e2a2a, #a0522d, #4e2a2a); }
.bg-kakao-beige       { background: linear-gradient(45deg, #3e2f2f, #b28c6e, #3e2f2f); }
.bg-midnattsviolett   { background: linear-gradient(45deg, #1a0033, #9370db, #1a0033); }
.bg-plommon-lila      { background: linear-gradient(45deg, #330033, #ba55d3, #330033); }
.bg-mineral-turkos    { background: linear-gradient(45deg, #1a3333, #48d1cc, #1a3333); }
.bg-brinnande-orange  { background: linear-gradient(45deg, #4d1a00, #ff8c00, #4d1a00); }
.bg-vintage-koppar    { background: linear-gradient(45deg, #331a00, #cd853f, #331a00); }
.bg-djup-karmosinrod  { background: linear-gradient(45deg, #660033, #dc143c, #660033); }
.bg-slate-grabla      { background: linear-gradient(45deg, #0d2b2b, #5f9ea0, #0d2b2b); }
.bg-konjak-brun       { background: linear-gradient(45deg, #2d1a00, #d2691e, #2d1a00); }
.bg-tomat-rod         { background: linear-gradient(45deg, #4d2600, #ff6347, #4d2600); }
.bg-cyan-hav          { background: linear-gradient(45deg, #003333, #00ced1, #003333); }


/* ===========================================
   11. BUTTONS – CARD SYSTEM
   =========================================== */

/* ── Button container ── */
#button-container {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    justify-content: center;
    align-items: flex-start;
    margin: 0.5vh auto;
    max-width: 1400px;
    box-sizing: border-box;
}

/* ── Cards ── */
.button-card,
.parent-card {
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    flex: 0 0 clamp(12rem, 6vw, 5rem);
    margin: 0 !important;
    padding: 0 !important;
}

/* ── Main button ── */
.btn {
    width:     100% !important;
    max-width: clamp(240px, 16vw, 340px) !important;
    min-width: clamp(240px, 16vw, 340px) !important;
    height:    clamp(140px, 14vw, 300px) !important;
    font-size: clamp(16px, 1.4vw, 24px);
    border: none;
    border-radius: 15px;
    color: white;
    font-weight: bold;
    font-family: 'Orbitron', Arial, sans-serif;
    cursor: pointer;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    transition: transform 0.25s, box-shadow 0.25s;
    box-shadow: 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
    box-sizing: border-box;
    flex-shrink: 0 !important;
    flex-grow:   0 !important;
}
.btn:hover {
    transform: translateY(-8px) scale(1.02);
    box-shadow: 0 10px 25px rgba(0,0,0,0.8);
}

.btn-text {
    font-size: 1.2em;
    margin: 8px 0;
    z-index: 2;
    font-weight: 700;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}

.btn-img-small {
    width:     clamp(60px, 6vw, 120px) !important;
    max-width: clamp(60px, 6vw, 120px) !important;
    min-width: clamp(60px, 6vw, 120px) !important;
    height:    clamp(60px, 6vw, 120px) !important;
    object-fit: cover;
    border-radius: 8px;
    margin: 8px 0;
    z-index: 2;
}

.btn-desc {
    font-size: 0.9em;
    opacity: 0.95;
    padding: 0 10px;
    text-align: center;
    line-height: 1.3;
}

.btn-icons {
    position: absolute;
    bottom: 6px;
    right: 6px;
    display: flex;
    gap: 4px;
    z-index: 10;
}

.icon {
    background: rgba(0,0,0,0.6);
    border: 2px solid rgba(255,255,255,0.3);
    border-radius: 50%;
    padding: 5px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    min-height: 24px;
    transition: all 0.2s;
    font-size: clamp(15px, 1.3vw, 32px) !important;
}
.icon:hover {
    background: rgba(0,0,0,0.8);
    border-color: rgba(255,255,255,0.6);
    transform: scale(1.1);
}

.icon img.flag-icon {
    width: 16px;
    height: 16px;
    border-radius: 3px;
    object-fit: cover;
}

/* ── Popup – child buttons ── */
.popup-overlay {
    position: fixed;
    inset: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 999;
    backdrop-filter: blur(2px);
}

.popup-content {
    /* Följde inte temat: en fast mörk gradient gjorde att rutan med
       underkategorier på index.php blev mörk även i det ljusa temat,
       med mörk text mot mörk botten. */
    background: linear-gradient(var(--color-bg-secondary), var(--color-bg-tertiary));
    color: var(--color-text-primary);
    padding: 2.5em;
    border-radius: 20px;
    max-width: 95%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: 0 0 40px rgba(0,0,0,0.8);
    position: relative;
    border: 4px solid;
}

.popup-title {
    text-align: center;
    color: white;
    font-family: 'Orbitron', Arial, sans-serif;
    font-size: 2.2em;
    margin: 0 0 1.5em 0;
    padding: 0.6em;
    border-radius: 12px;
    text-shadow: 3px 3px 6px rgba(0,0,0,0.7);
    font-weight: 700;
}

.popup-children-container {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5em;
    justify-content: center;
    align-items: center;
    min-height: 200px;
    align-content: center;
    padding: 1em 0;
}

/* Child buttons in popup */
.popup-children-container .child-card {
    width: 180px;
    min-width: 180px;
    max-width: 180px;
    flex: 0 0 180px;
}
.popup-children-container .child-card .btn {
    width:     100%   !important;
    max-width: 180px  !important;
    min-width: 180px  !important;
    height:    130px  !important;
    font-size: 14px;
}
.popup-children-container .child-card .btn-img-small {
    width:  45px !important;
    height: 45px !important;
    margin: 6px 0 !important;
}
.popup-children-container .child-card .btn-text { font-size: 1em; }

.close-popup {
    background: rgba(0,0,0,0.9);
    color: #fff;
    border: 3px solid white;
    padding: 0;
    border-radius: 50%;
    cursor: pointer;
    position: absolute;
    top: 20px;
    right: 20px;
    font-size: 1.8em;
    line-height: 1;
    width: 50px;
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s;
    font-weight: bold;
}
.close-popup:hover {
    background: rgba(255,255,255,0.2);
    transform: rotate(90deg);
}

/* ── Small info-popups (language / translation / description) ── */
.language-popup,
.translation-popup,
.child-description-popup,
.child-translation-popup {
    position: fixed !important;
    top:  50% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
    z-index: 10001 !important;
    min-width: 350px !important;
    max-width: 600px !important;
    padding: 60px 30px 30px 30px !important;
    border-radius: 20px !important;
    box-shadow: 0 0 40px rgba(0,0,0,0.8) !important;
    background: linear-gradient(rgba(20,20,30,0.98), rgba(40,40,60,0.95)) !important;
    color: white !important;
    border: 4px solid !important;
    backdrop-filter: blur(10px) !important;
}

/* Remove pseudo arrows */
.language-popup::before,        .language-popup::after,
.translation-popup::before,     .translation-popup::after,
.child-description-popup::before,.child-description-popup::after,
.child-translation-popup::before,.child-translation-popup::after {
    display: none !important;
    content: none !important;
}

/* Text in small popups */
.language-popup .btn-desc,
.translation-popup .btn-desc,
.child-description-popup .btn-desc,
.child-translation-popup .btn-desc {
    font-size: 1.2em !important;
    line-height: 1.6 !important;
    text-align: center !important;
    font-family: 'Exo 2', Arial, sans-serif !important;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.5) !important;
    padding: 10px !important;
}

/* Icons in small popups */
.language-popup .btn-icons,
.translation-popup .btn-icons,
.child-description-popup .btn-icons,
.child-translation-popup .btn-icons {
    display: flex !important;
    justify-content: center !important;
    margin-top: 15px !important;
    gap: 10px !important;
}
.language-popup .btn-icons .icon,
.translation-popup .btn-icons .icon,
.child-description-popup .btn-icons .icon,
.child-translation-popup .btn-icons .icon {
    background: rgba(0,0,0,0.7) !important;
    border: 2px solid rgba(255,255,255,0.4) !important;
    border-radius: 50% !important;
    padding: 10px !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 35px !important;
    min-height: 35px !important;
    transition: all 0.2s !important;
    font-size: 20px !important;
}
.language-popup .btn-icons .icon:hover,
.translation-popup .btn-icons .icon:hover,
.child-description-popup .btn-icons .icon:hover,
.child-translation-popup .btn-icons .icon:hover {
    background: rgba(0,0,0,0.9) !important;
    border-color: rgba(255,255,255,0.7) !important;
    transform: scale(1.15) !important;
}

/* Close button – shared */
.popup-close-btn {
    position: absolute;
    top: 15px;
    right: 15px;
    background: rgba(0,0,0,0.9);
    color: white;
    border: 3px solid white;
    border-radius: 50%;
    width: 45px;
    height: 45px;
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    z-index: 10;
    transition: all 0.2s;
    font-weight: bold;
}
.popup-close-btn:hover {
    background: rgba(255,255,255,0.2);
    border-color: rgba(255,255,255,0.8);
    transform: rotate(90deg) scale(1.1);
}


/* ===========================================
   12. STATS
   =========================================== */
.stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 12.5rem), 1fr));
    gap: var(--spacing-lg);
    margin-bottom: var(--spacing-xl);
    width: 100%;
}

.stat-card {
    padding: var(--spacing-lg);
    background: var(--gradient-purple);
    border-radius: var(--border-radius-lg);
    text-align: center;
    transition: transform var(--transition-normal);
    max-width: clamp(140px, 5vw, 240px);
    min-width: clamp(140px, 5vw, 240px);
    height: clamp(140px, 5vw, 240px);
    font-size: clamp(10px, 1.2vw, 16px);
    border: none;
    color: white;
    font-weight: bold;
    font-family: 'Orbitron', Arial, sans-serif;
}
.stat-card:hover { transform: translateY(-0.25rem); }

.stat-number {
    font-size: clamp(10px, 3vw, 16px);
    font-weight: bold;
    margin-bottom: var(--spacing-xs);
}
.stat-label {
    font-size: clamp(0.75rem, 2vw, 0.875rem);
    opacity: 0.9;
}


/* ===========================================
   13. STAR POINTS
   =========================================== */
#star-points-area {
    flex: 1;
    display: flex;
    justify-content: space-evenly;
    align-items: center;
    gap: 5vw;
}

.star-points {
    font-size: 5rem;
    color: var(--color-accent-gold);
    transition: all var(--transition-normal);
    filter: drop-shadow(0 0 8px rgba(255,215,0,0.8));
    opacity: 0;
}
.star-points.visible  { opacity: 1; transform: scale(1.1); }
.star-points.fade-out { opacity: 0; transition: opacity 1s ease; }


/* ===========================================
   14. POPUP / OVERLAY (#popup-box)
   =========================================== */
#popup-overlay {
    position: fixed;
    inset: 0;
    background-color: var(--color-overlay);
    display: none;
    justify-content: center;
    align-items: center;
    z-index: var(--z-modal);
    backdrop-filter: blur(5px);
}

#popup-box {
    color: var(--color-text-primary);
    background: var(--gradient-header);
    padding: var(--spacing-lg);
    border-radius: var(--border-radius-md);
    max-width: 60%;
    max-height: 60vh;
    overflow-y: auto;
    position: relative;
    box-shadow: 0 0 20px rgba(0,0,0,0.3);
    border: 2px solid var(--color-accent-border);
}

.popup-header { color: var(--color-accent-gold); padding: var(--spacing-xs); margin-top: var(--spacing-lg); }
.popup-text   { color: var(--color-text-primary); padding: var(--spacing-xs); }

#close-popup-btn {
    position: absolute;
    top: 0.5rem;
    right: 0.75rem;
    color: var(--color-text-primary);
    background: none;
    border: none;
    font-size: 1.125rem;
    cursor: pointer;
    transition: color var(--transition-fast);
}
#close-popup-btn:hover { color: var(--color-accent-gold); }


/* ===========================================
   15. SIDEBAR
   =========================================== */
.sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background-color: var(--color-overlay);
    z-index: var(--z-overlay);
    backdrop-filter: blur(3px);
}
.sidebar-overlay.active { display: block; }

.sidebar {
    position: fixed;
    top: 0;
    height: 100%;
    color: var(--color-text-primary);
    padding-top: 3.75rem;
    background: var(--gradient-sidebar);
    transition: transform var(--transition-normal);
    z-index: var(--z-sidebar);
    overflow-y: auto;
    box-shadow: var(--shadow-md);
}

#sidebar-left  { left: 0;  width: var(--sidebar-width);       transform: translateX(-100%); }
#sidebar-right { right: 0; width: var(--sidebar-right-width); padding: var(--spacing-lg); transform: translateX(100%); }
#sidebar-left.open  { transform: translateX(0); }
#sidebar-right.open { transform: translateX(0); }

.close-button-sidebar {
    background: rgba(0,0,0,0.9);
    color: var(--color-text-primary);
    border: 2px solid var(--color-text-primary);
    padding: 0;
    border-radius: 50%;
    cursor: pointer;
    position: absolute;
    top: 1.25rem;
    right: 1.25rem;
    font-size: 1.8em;
    line-height: 1;
    width: 3.125rem;
    height: 3.125rem;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all var(--transition-fast);
    font-weight: bold;
    z-index: 10;
}
.close-button-sidebar:hover {
    background: rgba(255,255,255,0.2);
    transform: rotate(90deg);
    border-color: var(--color-accent-gold);
    color: var(--color-accent-gold);
}
.close-button-sidebar:focus-visible {
    outline: 2px solid var(--color-accent-gold);
    outline-offset: 2px;
}

.sidebar-content { display: flex; flex-direction: column; gap: var(--spacing-md); color: var(--color-text-primary); }

.sidebar-button {
    display: block;
    padding: var(--spacing-sm) var(--spacing-md);
    cursor: pointer;
    color: var(--color-text-primary);
    text-decoration: none;
    border-radius: var(--border-radius-sm);
    transition: all var(--transition-fast);
}
.sidebar-button:hover { color: var(--color-accent-gold); background: rgba(255,255,255,0.05); }

.sidebar-category       { margin-bottom: var(--spacing-sm); }
.sidebar-category-title {
    font-weight: bold;
    padding: var(--spacing-xs);
    border-radius: var(--border-radius-md);
    color: var(--color-text-primary);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    transition: all var(--transition-fast);
}
.sidebar-category-title:hover { color: var(--color-accent-gold); background: rgba(255,255,255,0.05); }

.sidebar-children {
    display: none;
    overflow: hidden;
    padding-left: var(--spacing-lg);
    transition: max-height var(--transition-normal) ease-out;
}
.sidebar-children.open { display: block; }
.sidebar-children a {
    display: block;
    padding: 0.375rem 0.75rem;
    margin-left: var(--spacing-sm);
    text-decoration: none;
    color: var(--color-text-secondary);
    border-left: 2px solid transparent;
    transition: all var(--transition-fast);
}
.sidebar-children a:hover {
    color: var(--color-accent-gold);
    border-left-color: var(--color-accent-gold);
    background: rgba(255,255,255,0.03);
}

.sidebar-header { padding: var(--spacing-xs) var(--spacing-sm); color: var(--color-accent-gold); font-weight: 600; font-size: 1.1em; }
.sidebar-text   { padding: var(--spacing-xs) var(--spacing-sm); color: var(--color-text-primary); }
.sidebar-link   { padding: var(--spacing-xs) var(--spacing-sm); color: var(--color-text-primary); display: inline-block; transition: color var(--transition-fast); }
.sidebar-link:hover { color: var(--color-accent-gold); }

.language-controls {
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--border-radius-md);
    padding: var(--spacing-md);
    margin-top: var(--spacing-lg);
}
.control-item { padding: var(--spacing-sm); }
.control-item label { display: block; margin-bottom: var(--spacing-xs); color: var(--color-accent-gold); font-weight: 600; }
.control-item select {
    width: 100%;
    padding: var(--spacing-sm);
    background: var(--color-bg-tertiary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--border-radius-sm);
    color: var(--color-text-primary);
    font-family: var(--font-primary);
}


/* ===========================================
   16. FEEDBACK MODAL
   =========================================== */
.feedback-modal {
    display: none;
    position: fixed;
    z-index: var(--z-modal);
    inset: 0;
    background-color: var(--color-overlay);
    backdrop-filter: blur(5px);
    animation: fadeIn 0.3s ease;
    overflow-y: auto;
}
.feedback-modal.show { display: flex; align-items: center; justify-content: center; }

.feedback-modal-content {
    background-color: var(--color-bg-primary);
    margin: var(--spacing-lg);
    border: 2px solid var(--color-accent-gold);
    border-radius: var(--border-radius-lg);
    max-width: 37.5rem;
    width: 100%;
    box-shadow: 0 10px 50px rgba(204,153,102,0.3);
    animation: slideIn 0.3s ease;
}

.feedback-modal-header {
    background: var(--gradient-header);
    padding: var(--spacing-lg) 1.5625rem;
    border-bottom: 2px solid var(--color-accent-gold);
    border-radius: calc(var(--border-radius-lg) - 2px) calc(var(--border-radius-lg) - 2px) 0 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.feedback-modal-header h2 { margin: 0; color: var(--color-accent-gold); font-size: 1.5rem; font-weight: 600; letter-spacing: 0.0625rem; }

.feedback-close {
    background: transparent;
    border: none;
    color: var(--color-text-primary);
    font-size: 2rem;
    font-weight: bold;
    cursor: pointer;
    transition: all var(--transition-normal);
    line-height: 1;
    padding: 0;
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
.feedback-close:hover { color: var(--color-accent-gold); transform: rotate(90deg); }

.feedback-modal-body { padding: 1.875rem 1.5625rem; color: var(--color-text-primary); }

.feedback-form-group { margin-bottom: var(--spacing-lg); }
.feedback-form-group label { display: block; margin-bottom: 0.5rem; color: var(--color-accent-gold); font-weight: 500; font-size: 0.875rem; letter-spacing: 0.03125rem; }

.required { color: #ff6b6b; }

.feedback-form-group input[type="text"],
.feedback-form-group input[type="email"],
.feedback-form-group select,
.feedback-form-group textarea {
    width: 100%;
    padding: 0.75rem 0.9375rem;
    background-color: var(--color-bg-secondary);
    border: 1px solid var(--color-border-subtle);
    border-radius: var(--border-radius-sm);
    color: var(--color-text-primary);
    font-size: 0.875rem;
    font-family: var(--font-primary);
    transition: all var(--transition-normal);
}
.feedback-form-group input:focus,
.feedback-form-group select:focus,
.feedback-form-group textarea:focus {
    outline: none;
    border-color: var(--color-accent-gold);
    box-shadow: 0 0 0 3px rgba(204,153,102,0.1);
    background-color: var(--color-bg-tertiary);
}
.feedback-form-group textarea { resize: vertical; min-height: 6.25rem; }
.feedback-form-group input::placeholder,
.feedback-form-group textarea::placeholder { color: var(--color-text-muted); }

.char-count { display: block; text-align: right; margin-top: 0.3125rem; font-size: 0.75rem; color: var(--color-text-secondary); }
#charCount   { color: var(--color-accent-gold); font-weight: 600; }

.feedback-checkbox { display: flex; align-items: flex-start; gap: var(--spacing-sm); }
.feedback-checkbox input[type="checkbox"] { margin-top: 0.1875rem; width: 1.125rem; height: 1.125rem; cursor: pointer; accent-color: var(--color-accent-gold); }
.feedback-checkbox label { margin: 0; flex: 1; cursor: pointer; font-size: 0.8125rem; }

.gdpr-link { color: var(--color-accent-gold); text-decoration: underline; transition: color var(--transition-normal); }
.gdpr-link:hover { color: var(--color-accent-gold-light); }

.feedback-info-box {
    background-color: var(--color-bg-secondary);
    border-left: 4px solid var(--color-accent-gold);
    padding: 0.9375rem;
    margin: var(--spacing-lg) 0;
    border-radius: var(--border-radius-sm);
    font-size: 0.8125rem;
}
.feedback-info-box strong { display: block; margin-bottom: var(--spacing-sm); color: var(--color-accent-gold); }
.feedback-info-box ul     { margin: 0.3125rem 0; padding-left: 1.25rem; }
.feedback-info-box li     { margin: 0.3125rem 0; color: var(--color-text-secondary); }

.feedback-message { padding: 0.9375rem; margin: 0.9375rem 0; border-radius: var(--border-radius-sm); font-size: 0.875rem; }
.feedback-message.success { background-color: rgba(76,175,80,0.1);  border: 1px solid #4caf50; color: #66bb6a; }
.feedback-message.error   { background-color: rgba(244,67,54,0.1);  border: 1px solid #f44336; color: #ef5350; }
.feedback-message ul      { margin: var(--spacing-sm) 0 0 1.25rem; padding: 0; }

.feedback-form-actions { display: flex; gap: 0.9375rem; margin-top: 1.5625rem; justify-content: flex-end; }

.spinner {
    display: inline-block;
    width: 0.875rem;
    height: 0.875rem;
    border: 2px solid rgba(10,10,42,0.3);
    border-top-color: var(--color-bg-primary);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}


/* ===========================================
   17. ANIMATIONS & KEYFRAMES
   =========================================== */
@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes slideIn {
    from { transform: translateY(-3.125rem); opacity: 0; }
    to   { transform: translateY(0);         opacity: 1; }
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

@keyframes starLit {
    0%   { transform: scale(1);   filter: brightness(1); }
    50%  { transform: scale(1.5) rotate(72deg); filter: brightness(2) drop-shadow(0 0 20px rgba(255,215,0,1)); }
    100% { transform: scale(1.2); filter: brightness(1.5) drop-shadow(0 0 15px rgba(255,215,0,1)); }
}

@keyframes twinkleLit {
    0%, 100% { filter: drop-shadow(0 0 15px rgba(255,215,0,1)); }
    50%       { filter: drop-shadow(0 0 25px rgba(255,215,0,1)) brightness(1.3); }
}

@keyframes twinkle {
    0%, 100% { opacity: 1; filter: drop-shadow(0 0 8px rgba(255,215,0,0.8)); transform: scale(1); }
    50%       { opacity: 0.9; filter: drop-shadow(0 0 15px rgba(255,215,0,1)); transform: scale(1.05); }
}

@keyframes shimmer {
    0%   { transform: scale(1);   filter: brightness(1); }
    50%  { transform: scale(1.8); filter: brightness(2); }
    100% { transform: scale(1);   filter: brightness(1); }
}

@keyframes sparkle {
    0%, 100% { transform: scale(1);   opacity: 1; }
    50%       { transform: scale(1.2); opacity: 0.7; }
}


/* ===========================================
   18. SCROLLBAR UTILITY
   =========================================== */
.scrollable,
.left-container,
.content-container,
.right-container {
    scrollbar-width: thin;
    scrollbar-color: var(--color-accent-gold) rgba(255,215,0,0.1);
}

.scrollable::-webkit-scrollbar,
.left-container::-webkit-scrollbar,
.content-container::-webkit-scrollbar,
.right-container::-webkit-scrollbar {
    width: 0.625rem;
}

.scrollable::-webkit-scrollbar-track,
.left-container::-webkit-scrollbar-track,
.content-container::-webkit-scrollbar-track,
.right-container::-webkit-scrollbar-track {
    background: rgba(255,255,255,0.05);
    border-radius: var(--border-radius-md);
}

.scrollable::-webkit-scrollbar-thumb,
.left-container::-webkit-scrollbar-thumb,
.content-container::-webkit-scrollbar-thumb,
.right-container::-webkit-scrollbar-thumb {
    background: var(--gradient-gold);
    border-radius: var(--border-radius-md);
}

.scrollable::-webkit-scrollbar-thumb:hover,
.left-container::-webkit-scrollbar-thumb:hover,
.content-container::-webkit-scrollbar-thumb:hover,
.right-container::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(to right, #ffedb3, #cc9966, #ffedb3);
}


/* ===========================================
   19. UTILITY CLASSES
   =========================================== */
.no-scroll  { overflow: hidden; }
.text-center{ text-align: center; }
.mt-0       { margin-top: 0; }
.mb-0       { margin-bottom: 0; }


/* ===========================================
   20. ACCESSIBILITY
   =========================================== */
*:focus-visible {
    outline: 2px solid var(--color-accent-gold);
    outline-offset: 2px;
    border-radius: var(--border-radius-sm);
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}


/* ===========================================
   21. MEDIA QUERIES
   =========================================== */

/* -------------------------------------------
   21a. SIDEBAR PUSH – DESKTOP (> 48em)
   ------------------------------------------- */
@media (min-width: 48.0625em) {
    body.sidebar-left-open  main,
    body.sidebar-left-open  header,
    body.sidebar-left-open  footer { margin-left: var(--sidebar-width); }

    body.sidebar-right-open main,
    body.sidebar-right-open header,
    body.sidebar-right-open footer { margin-right: var(--sidebar-right-width); }
}

/* -------------------------------------------
   21b. iPAD PORTRAIT & LANDSCAPE (max 64em / 1024px)
   Täcker: iPad mini, iPad Air, iPad Pro 11"
   ------------------------------------------- */
@media (max-width: 64em) {

    :root {
        --header-height:       4.5rem;
        --sidebar-width:       220px;
        --sidebar-right-width: 280px;
    }

    /* Header – behåll rad men minska gap */
    header {
        padding: var(--spacing-sm) var(--spacing-md);
        gap: var(--spacing-sm);
    }

    /* Sidopanelernas kolumner lite smalare */
    .left-container,
    .right-container {
        min-width: 200px;
        max-width: 260px;
    }

    /* Button-container – 3 per rad på iPad */
    #button-container {
        max-width: 860px;
        gap: 16px;
    }

    .btn {
        max-width: clamp(200px, 22vw, 280px) !important;
        min-width: clamp(200px, 22vw, 280px) !important;
        height: clamp(130px, 18vw, 240px) !important;
        font-size: clamp(14px, 1.6vw, 20px);
    }

    .btn-img-small {
        width:     clamp(50px, 7vw, 90px)  !important;
        max-width: clamp(50px, 7vw, 90px)  !important;
        min-width: clamp(50px, 7vw, 90px)  !important;
        height:    clamp(50px, 7vw, 90px)  !important;
    }

    /* Popup – lite smalare */
    .language-popup,
    .translation-popup,
    .child-description-popup,
    .child-translation-popup {
        min-width: 320px !important;
        max-width: 520px !important;
    }

    /* Stat cards */
    .stat-card {
        max-width: clamp(120px, 12vw, 200px);
        min-width: clamp(120px, 12vw, 200px);
        height:    clamp(120px, 12vw, 200px);
    }
}

/* iPad Pro 12.9" landscape – behåll desktop-beteende men justera storlekar */
@media (min-width: 64.0625em) and (max-width: 85.375em) {
    #button-container { max-width: 1100px; gap: 18px; }

    .btn {
        max-width: clamp(220px, 14vw, 300px) !important;
        min-width: clamp(220px, 14vw, 300px) !important;
        height:    clamp(135px, 12vw, 260px) !important;
    }
}

/* -------------------------------------------
   21c. MOBILE (max 48em / 768px)
   ------------------------------------------- */
/* Brytpunkten är både bredd och höjd. En mobil i liggande läge är bredare
   än 48em men bara ~390px hög, och där kostar den tvåradiga headern för
   mycket av skärmen – den behåller därför enradslayouten via undantaget
   längre ned i blocket. */
@media (max-width: 48em), (max-height: 30em) {

    /* Variabler */
    :root {
        --spacing-md:    0.75rem;
        --spacing-lg:    1rem;
        --header-height: 0px;   /* header är sticky, inte fixed */
        --footer-height: 0px;
    }

    /* Body */
    html, body {
        overflow-y: auto;
        overflow-x: hidden;
        height: auto;
        min-height: 100vh;
    }
    /* min-height räckte inte: utan flex hamnade footern direkt efter
       innehållet och lämnade ett stort tomrum under sig på korta sidor.
       Som flex-kolumn med main:flex:1 trycks footern ned till nederkanten
       när innehållet är kort, men följer med neråt när det är långt.
       100dvh tar hänsyn till mobilwebbläsarens adressfält. */
    body {
        display: flex;
        flex-direction: column;
        min-height: 100dvh;
    }
    body > main { flex: 1 0 auto; }
    body.sidebar-open { overflow: hidden; }

    /* ── Header – 2-rads layout ──────────────────
       Rad 1:      [top-area-middle – loggan]
       Rad 2: [top-area-left]      [top-area-right]

       Loggan får hela bredden och slipper konkurrera med ikonerna om
       utrymmet. Tidigare låg alla tre på samma rad med 25/50/25, och då
       blev mittkolumnen så smal att loggan antingen krympte till oläslig
       eller la sig under ikongrupperna.

       Radbrytningen styrs av bredderna, inte av order: middle tar 100 %,
       så left och right får inte plats bredvid och hamnar på nästa rad.
       order avgör bara inbördes ordning.
    ──────────────────────────────────────────── */
    header {
        position: sticky !important;
        top: 0 !important;
        flex-direction: row !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        /* Två rader kostar höjd – håll den vertikala luften nere så att
           spelsidorna inte tappar för mycket yta. */
        padding: var(--spacing-xs) var(--spacing-sm) !important;
        gap: 0 !important;
        background: transparent !important;
        box-shadow: none !important;
        height: auto !important;
        min-height: auto !important;
        z-index: 200 !important;
    }

    /* ── Rad 1: left + right vid sidan om, Rad 2: middle centrerat ── */

    .top-area-left,
    #top-area-left {
        flex: 0 0 50% !important;
        width: 50% !important;
        order: 2 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: flex-start !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
        padding: 0 var(--spacing-xs) !important;
    }

    .top-area-right,
    #top-area-right {
        flex: 0 0 50% !important;
        width: 50% !important;
        order: 3 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: flex-end !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
        padding: 0 var(--spacing-xs) !important;
        visibility: visible !important;
        opacity: 1 !important;
    }

    /* flex: 0 0 100% → left och right får inte plats bredvid och
       hamnar därför automatiskt på nästa rad. */
    .top-area-middle,
    #top-area-middle {
        flex: 0 0 100% !important;
        width: 100% !important;
        /* min-width: 0 krävs för att innehållet ska få krympa i en
           flex-box; utan den växer kolumnen efter bildens naturliga
           bredd. */
        min-width: 0 !important;
        overflow: hidden !important;
        order: 1 !important;
        display: flex !important;
        justify-content: center !important;
        align-items: center !important;
        /* Kortformen måste stå sist – en padding-inline före den här
           skulle nollställas. */
        padding: 0 var(--spacing-sm) var(--spacing-xs) !important;
        text-align: center !important;
    }

    /* Med hela bredden till sitt förfogande får loggan vara större än
       när den delade rad med ikonerna. Höjden begränsas ändå så den inte
       äter för mycket av skärmen på en låg mobil i liggande läge. */
    .header_logo {
        height: auto !important;
        max-height: min(2.8rem, 8vh);
        max-width: 100%;
    }

    /* ── Undantag: låg men bred skärm (mobil i liggande läge) ──
       Här finns gott om bredd men knappt någon höjd. Loggan får dela rad
       med ikonerna igen, annars äter headern en fjärdedel av skärmen. */
    @media (min-width: 48em) and (max-height: 30em) {
        .top-area-middle,
        #top-area-middle {
            flex: 1 1 auto !important;
            width: auto !important;
            order: 2 !important;
            padding: 0 var(--spacing-sm) !important;
        }
        .top-area-left,
        #top-area-left  { flex: 0 0 auto !important; width: auto !important; order: 1 !important; }
        .top-area-right,
        #top-area-right { flex: 0 0 auto !important; width: auto !important; order: 3 !important; }
        .header_logo    { max-height: min(2rem, 14vh) !important; }
        header          { flex-wrap: nowrap !important; }
    }

    /* Rubrik anpassad för mobil */
    .top-area-middle h1,
    #top-area-middle h1 {
        font-size: clamp(0.6rem, 3vw, 1.4rem);
        letter-spacing: 0.05em;
		color: #c0c0c0;
    }

    /* ── Main – inget krock med sticky header ── */
    main {
        position: static !important;
        top: auto !important;
        bottom: auto !important;
        left: auto !important;
        right: auto !important;
        display: block !important;
        padding: var(--spacing-sm) !important;
        margin-top: 0 !important;
        overflow: visible !important;
        height: auto !important;
        min-height: auto !important;
        width: 100% !important;
    }

    /* ── Containers – staplas vertikalt ── */
    .message-container,
    .content-container,
    .left-container,
    .right-container {
        display: block;
        width: 100%;
        max-width: 100%;
        min-width: 100%;
        margin-bottom: var(--spacing-lg);
        overflow: visible;
        height: auto;
        grid-column: unset;
        grid-row: unset;
        padding: var(--spacing-md);
        border-radius: var(--border-radius-md);
        box-shadow: var(--shadow-md);
        border: 2px solid var(--color-accent-border);
        box-sizing: border-box;
    }

    /* ── Footer ── */
    footer {
        position: static !important;
        display: flex !important;
        flex-direction: column !important;
        padding: var(--spacing-md) !important;
        /* --footer-height är 0 här (footern är statisk på mobil), så den
           fasta höjden från grundlayouten måste släppas – annars blir
           footern 0 px hög och texten flyter ovanpå det som följer. */
        height: auto !important;
        min-height: auto !important;
        gap: var(--spacing-md) !important;
        margin-top: auto !important;   /* trycks ned av flex-body nedan */
    }
    footer #left,
    footer #middle,
    footer #right {
        justify-self: center;
        text-align: center;
    }

    /* ── Sidebar – fullscreen på mobil ── */
    .sidebar { width: 100%; padding-top: 5rem; }
    #sidebar-left,
    #sidebar-right { left: 0; right: 0; width: 100%; }

    /* ── Button container – 1–2 per rad ── */
    #button-container {
        gap: 12px;
        padding: 0 1em;
        max-width: 100%;
    }

    .button-card,
    .parent-card {
        width: 100%;
        min-width: 0;
        max-width: 340px;
        flex: 0 0 auto;
    }

    .btn {
        width:     100% !important;
        max-width: 100% !important;
        min-width: 240px !important;
        height:    140px !important;
        font-size: 15px;
    }

    .btn-img-small {
        width:     50px !important;
        max-width: 50px !important;
        min-width: 50px !important;
        height:    50px !important;
    }

    .btn-text { font-size: 1.1em; }

    .icon { min-width: 28px; min-height: 28px; font-size: 13px; }

    /* ── Small popups ── */
    .language-popup,
    .translation-popup,
    .child-description-popup,
    .child-translation-popup {
        min-width: 90% !important;
        max-width: 90% !important;
        padding: 50px 20px 20px 20px !important;
    }
    .language-popup .btn-desc,
    .translation-popup .btn-desc,
    .child-description-popup .btn-desc,
    .child-translation-popup .btn-desc { font-size: 1em !important; }

    .popup-close-btn { width: 40px; height: 40px; font-size: 24px; top: 10px; right: 10px; }

    /* ── Feedback modal ── */
    .feedback-modal-content { margin: var(--spacing-sm); max-width: calc(100% - 1.25rem); }
    .feedback-modal-header  { padding: 0.9375rem 1.25rem; }
    .feedback-modal-header h2 { font-size: 1.25rem; }
    .feedback-modal-body    { padding: 1.25rem 0.9375rem; }
    .feedback-form-actions  { flex-direction: column; }
    .btn-primary,
    .btn-secondary          { width: 100%; }

    /* ── Stat cards ── */
    .stat-card {
        max-width: 100%;
        min-width: 0;
        height: auto;
        padding: var(--spacing-md);
    }

    .imgstar { width: 40px; height: 40px; }
}

/* -------------------------------------------
   21d. EXTRA SMALL (max 30em / 480px)
   ------------------------------------------- */
/* ── Låga skärmar: mobil i liggande läge ─────────────────────────────
   Brytpunkten ovan är rent breddbaserad, så en mobil som vrids till
   liggande (t.ex. 844x390) får antingen tvåradsheadern (om den är smal)
   eller desktoplayouten – men i båda fallen äter headern en stor andel
   av de 390 pixlarna på höjden.

   Här tvingas headern tillbaka till EN rad och krymps, oavsett bredd.
   Ligger efter mobilblocket så att den vinner på källordning.
   30em = 480px höjd. */
@media (max-height: 30em) {
    header {
        flex-wrap: nowrap !important;
        padding: 2px var(--spacing-sm) !important;
    }

    .top-area-left,  #top-area-left,
    .top-area-right, #top-area-right {
        flex: 0 0 auto !important;
        width: auto !important;
        order: 0 !important;
    }

    .top-area-middle, #top-area-middle {
        flex: 1 1 auto !important;
        width: auto !important;
        order: 0 !important;
        min-width: 0 !important;
        overflow: hidden !important;
        padding: 0 var(--spacing-sm) !important;
    }

    /* Kompakt logga – höjden är den knappa resursen här, inte bredden. */
    .header_logo {
        max-height: min(2rem, 13vh) !important;
    }

    .top-area-middle h1, #top-area-middle h1 {
        font-size: clamp(0.6rem, 2.2vw, 1rem);
    }

    /* Footern får inte heller ta för mycket. */
    footer {
        padding: 2px var(--spacing-sm) !important;
        gap: var(--spacing-sm) !important;
    }
}

@media (max-width: 30em) {
    .top-area-middle h1,
    #top-area-middle h1 {
        font-size: clamp(0.75rem, 3.5vw, 1rem);
    }

    .feedback-modal-header h2 { font-size: 1.125rem; }

    .feedback-form-group input,
    .feedback-form-group select,
    .feedback-form-group textarea { font-size: 1rem; }

    .btn {
        min-width: 200px !important;
        height: 120px !important;
        font-size: 14px;
    }
}

/* -------------------------------------------
   21e. REDUCED MOTION
   ------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration:       0.01ms !important;
        animation-iteration-count: 1     !important;
        transition-duration:      0.01ms !important;
        scroll-behavior: auto           !important;
    }
    header { transition: none; }
}

/* -------------------------------------------
   21f. HIGH CONTRAST
   ------------------------------------------- */
@media (prefers-contrast: high) {
    :root {
        --color-text-primary:  #ffffff;
        --color-bg-primary:    #000000;
        --color-border-subtle: #ffffff;
    }
}

/* -------------------------------------------
   21g. PRINT
   ------------------------------------------- */
@media print {
    .sidebar, .control-btn, footer, #spaceCanvas, .sidebar-overlay { display: none !important; }
    body { background: white; color: black; }
    .left-container, .content-container, .right-container { box-shadow: none; border: 1px solid #ccc; }
    main { padding-bottom: 0; }
}

/* -------------------------------------------
   22. Extra effects
   ------------------------------------------- */
/* EFFECT CONTAINER */
#space-effects{
position:fixed;
inset:0;
pointer-events:none;
z-index:3;
overflow:hidden;
}

/* SHOOTING STAR */
.shooting-star{
position:absolute;
width:3px;
height:3px;
background:white;
border-radius:50%;
box-shadow:0 0 10px white;
}
.shooting-star::after{
content:"";
position:absolute;
width:120px;
height:2px;
background:linear-gradient(to right, white, transparent);
left:-120px;
top:1px;
}
@keyframes shootingStar{
0%{
transform:translate(0,0);
opacity:1;
}
100%{
transform:translate(-800px,400px);
opacity:0;
}
}

/* ASTEROID */
.asteroid{
position:absolute;
font-size:28px;
animation:asteroidFly 8s linear forwards;
}
@keyframes asteroidFly{
from{
transform:translateX(-100px) rotate(0deg);
}
to{
transform:translateX(calc(100vw + 100px)) rotate(720deg);
}
}

/* SATELLITE */
.satellite{
position:absolute;
font-size:22px;
animation:satelliteFly 20s linear forwards;
}
@keyframes satelliteFly{
from{
transform:translateX(-100px);
}
to{
transform:translateX(calc(100vw + 100px));
}
}

/* UFO */
.ufo{
position:absolute;
font-size:30px;
animation:ufoFly 16s linear forwards;
}
@keyframes ufoFly{
0%{transform:translateX(-100px) translateY(0)}
25%{transform:translateX(25vw) translateY(-30px)}
50%{transform:translateX(50vw) translateY(30px)}
75%{transform:translateX(75vw) translateY(-20px)}
100%{transform:translateX(calc(100vw + 100px)) translateY(0)}
}

/* SPACESHIP */
.spaceship{
position:absolute;
font-size:28px;
animation:spaceshipFly 12s linear forwards;
}
@keyframes spaceshipFly{
from{transform:translateX(-100px)}
to{transform:translateX(calc(100vw + 100px))}
}

/* NEBULA */
.nebula{
position:absolute;
width:400px;
height:400px;
border-radius:50%;
background:radial-gradient(circle,
rgba(150,100,255,0.4),
rgba(0,0,0,0));
filter:blur(40px);
animation:nebulaFade 12s ease forwards;
}

@keyframes nebulaFade{
0%{opacity:0}
20%{opacity:1}
100%{opacity:0}
}

/* SUPERNOVA */
.supernova{
position:absolute;
width:10px;
height:10px;
background:white;
border-radius:50%;
box-shadow:0 0 20px white;
animation:supernovaExplosion 4s ease-out forwards;
}

@keyframes supernovaExplosion{
0%{
transform:scale(1);
opacity:1;
}
50%{
transform:scale(40);
opacity:0.8;
}
100%{
transform:scale(80);
opacity:0;
}





/* Auth Modal Styles */
.auth-modal {
    display: none;
    position: fixed;
    z-index: 10000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(5px);
    overflow-y: auto;
    /* Flexbox för centrering */
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.auth-modal-content {
    position: relative;
    background: linear-gradient(135deg, rgba(26, 26, 46, 0.95) 0%, rgba(22, 33, 62, 0.95) 100%);
    padding: 40px;
    border: 2px solid rgba(255, 215, 0, 0.3);
    border-radius: 20px;
    width: 90%;
    max-width: 500px;
    box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37);
    animation: slideDown 0.3s ease;
    margin: auto;
}

.auth-modal-wide {
    max-width: 700px;
}

/* När modal är öppen, använd flexbox */
.auth-modal[style*="display: block"] {
    display: flex !important;
}

@keyframes slideDown {
    from {
        transform: translateY(-50px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.auth-modal-close {
    color: #ffd700;
    float: right;
    font-size: 35px;
    font-weight: bold;
    line-height: 20px;
    cursor: pointer;
    transition: color 0.2s;
}

.auth-modal-close:hover {
    color: #fff;
}

.auth-modal h2 {
    color: #ffd700;
    text-align: center;
    margin-bottom: 30px;
    font-size: 2em;
}

.auth-message {
    padding: 15px;
    border-radius: 10px;
    margin-bottom: 20px;
    font-weight: bold;
}

.auth-message.success {
    background: rgba(40, 167, 69, 0.2);
    border: 2px solid #28a745;
    color: #90ee90;
}

.auth-message.error {
    background: rgba(220, 53, 69, 0.2);
    border: 2px solid #dc3545;
    color: #ff6b6b;
}

.auth-message ul {
    margin: 10px 0 0 20px;
    padding: 0;
}

.auth-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

@media (max-width: 768px) {
    .auth-form-row {
        grid-template-columns: 1fr;
    }
}

.auth-form-group {
    margin-bottom: 20px;
}

.auth-form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: bold;
    color: #ffd700;
}

.auth-form-group input[type="text"],
.auth-form-group input[type="email"],
.auth-form-group input[type="password"] {
    width: 100%;
    padding: 12px;
    border: 2px solid rgba(255, 215, 0, 0.3);
    border-radius: 10px;
    font-size: 16px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    transition: all 0.3s;
}

.auth-form-group input:focus {
    outline: none;
    border-color: #ffd700;
    background: rgba(255, 255, 255, 0.15);
}

.auth-form-group small {
    display: block;
    margin-top: 5px;
    color: rgba(255, 255, 255, 0.7);
    font-size: 13px;
}

.auth-required {
    color: #ff6b6b;
}

.auth-radio-group {
    display: flex;
    gap: 15px;
    margin-top: 10px;
}

.auth-radio-label {
    display: flex;
    align-items: center;
    cursor: pointer;
    color: #fff;
    font-weight: normal;
    padding: 12px 20px;
    background: rgba(255, 255, 255, 0.05);
    border: 2px solid rgba(255, 215, 0, 0.3);
    border-radius: 8px;
    transition: all 0.3s;
    flex: 1;
    justify-content: center;
}

.auth-radio-label:hover {
    background: rgba(255, 215, 0, 0.1);
    border-color: rgba(255, 215, 0, 0.6);
    transform: translateY(-2px);
}

.auth-radio-label input[type="radio"] {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.auth-radio-custom {
    width: 22px;
    height: 22px;
    border: 2px solid #ffd700;
    border-radius: 50%;
    margin-right: 10px;
    position: relative;
    transition: all 0.3s;
    flex-shrink: 0;
}

.auth-radio-label input[type="radio"]:checked + .auth-radio-custom {
    background: #ffd700;
    box-shadow: 0 0 10px rgba(255, 215, 0, 0.5);
}

.auth-radio-label input[type="radio"]:checked ~ span:not(.auth-radio-custom) {
    font-weight: bold;
}

.auth-radio-label input[type="radio"]:checked + .auth-radio-custom::after {
    content: '';
    position: absolute;
    width: 10px;
    height: 10px;
    background: #1a1a2e;
    border-radius: 50%;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* Gör hela labeln mer klickbar */
.auth-radio-label input[type="radio"]:checked ~ .auth-radio-text {
    color: #ffd700;
    font-weight: bold;
}

.auth-radio-text {
    transition: all 0.3s;
    font-size: 16px;
}

    left: 50%;
    transform: translate(-50%, -50%);
}

.auth-checkbox-label {
    display: flex;
    align-items: flex-start;
    cursor: pointer;
    color: #fff;
    font-weight: normal;
}

.auth-checkbox-label input[type="checkbox"] {
    margin-right: 10px;
    margin-top: 3px;
}

.auth-checkbox-label a {
    color: #ffd700;
    text-decoration: underline;
}

.auth-password-strength {
    margin-top: 5px;
    font-size: 14px;
    font-weight: bold;
}

.strength-weak { color: #ff6b6b; }
.strength-medium { color: #ffc107; }
.strength-strong { color: #90ee90; }

.auth-password-requirements {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.7);
    margin-top: 5px;
    padding-left: 20px;
    list-style: disc;
}

.auth-password-requirements li {
    margin: 3px 0;
}

.auth-btn {
    width: 100%;
    padding: 15px;
    background: linear-gradient(to right, #ffedb3, #cc9966);
    color: #1a1a2e;
    border: none;
    border-radius: 10px;
    font-size: 18px;
    font-weight: bold;
    cursor: pointer;
    transition: transform 0.2s;
}

.auth-btn:hover {
    transform: translateY(-2px);
}

.auth-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.auth-links {
    text-align: center;
    margin-top: 15px;
}

.auth-links a {
    color: #ffd700;
    text-decoration: none;
}

.auth-links a:hover {
    text-decoration: underline;
}

.auth-switch {
    text-align: center;
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    color: #fff;
}

.auth-switch a {
    color: #ffd700;
    text-decoration: none;
    font-weight: bold;
}

.auth-switch a:hover {
    text-decoration: underline;
}
