@import url('https://fonts.googleapis.com/css2?family=Lexend+Exa:wght@400;700;900&family=Space+Mono:wght@400;700&display=swap');

:root {
    --bg-color: #faf9f5;
    --canvas-bg: #faf9f5; /* <-- Ändra bakgrunden bakom animationen i LIGHT MODE här! */
    --text-main: #1c1c1e;
    --text-muted: #000000;
    --accent: #AC8CFF;
    --psy-glow: #AC8CFF;
    --card-bg: #ffffff; 
    --card-border: #1c1c1e;
    --noise-opacity: 0.05;
    --font-display: 'Lexend Exa', sans-serif;
    --font-mono: 'Space Mono', monospace;
}

[data-theme="dark"] {
    --bg-color: #0c0b0f;
    --canvas-bg: #140824; /* <-- Ändra bakgrunden bakom animationen i DARK MODE här! */
    --text-main: #faf9f5;
    --text-muted: #ffffff;
    --psy-glow: #AC8CFF;
    --card-bg: #141318; 
    --card-border: #AC8CFF;
    --noise-opacity: 0.05;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    background-color: var(--bg-color);
    color: var(--text-main);
    font-family: var(--font-mono);
    line-height: 1.4;
    position: relative;
    isolation: isolate; 
}

/* Brus och geometriskt rutnät återställt - Nu hårdvaruaccelererat */
body::before {
    content: "";
    position: fixed;
    top: 0; left: 0; width: 100vw; height: 100vh;
    opacity: var(--noise-opacity);
    pointer-events: none;
    z-index: 999;
    will-change: transform; 
    background-image: 
        linear-gradient(rgba(172, 140, 255, 0.1) 1px, transparent 1px),
        linear-gradient(90deg, rgba(172, 140, 255, 0.1) 1px, transparent 1px),
        url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
    background-size: 40px 40px, 40px 40px, auto;
}

@keyframes dragonFire {
    0% { transform: scale(1) rotate(0deg); opacity: 0.4; }
    50% { transform: scale(1.05) rotate(3deg); opacity: 0.7; }
    100% { transform: scale(1) rotate(0deg); opacity: 0.4; }
}

body::after {
    content: "";
    position: fixed;
    top: -10%; left: -10%; width: 120vw; height: 120vh;
    z-index: -3;
    pointer-events: none;
    background: radial-gradient(circle at 50% 50%, rgba(172, 140, 255, 0.25) 0%, transparent 60%);
    animation: dragonFire 10s ease-in-out infinite; 
    will-change: transform;
}

#psychedelic-canvas {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    opacity: 1.0;
    z-index: -1;
    mix-blend-mode: normal; 
}

header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px 5%;
    position: sticky;
    position: -webkit-sticky;
    top: 0;
    background: var(--bg-color); 
    z-index: 100;
    border-bottom: 2px solid var(--text-main);
}

.logo-link { text-decoration: none; color: var(--text-main); z-index: 102; transition: transform 0.2s ease; }
.logo-link:hover { transform: scale(1.03); }
.logo { font-family: var(--font-display); font-size: 1.4rem; font-weight: 900; letter-spacing: -1px; text-transform: lowercase; }

.menu-btn { display: none; background: none; border: none; cursor: pointer; z-index: 102; padding: 5px; }
.menu-btn .bar { display: block; width: 24px; height: 2px; margin: 6px 0; background-color: var(--text-main); transition: all 0.2s ease; }

nav ul { display: flex; list-style: none; gap: 30px; align-items: center; }
nav a { text-decoration: none; color: var(--text-main); font-weight: 700; font-size: 0.8rem; text-transform: uppercase; font-family: var(--font-display); position: relative; }
nav a:hover, nav a.active-link { color: var(--accent); }
nav a.active-link::after { content: ""; position: absolute; bottom: -6px; left: 0; width: 100%; height: 2px; background: var(--accent); }

.theme-toggle { background: none; border: 2px solid var(--text-main); color: var(--text-main); padding: 6px 14px; cursor: pointer; font-weight: 700; text-transform: uppercase; font-size: 0.7rem; font-family: var(--font-display); }
.theme-toggle:hover { background: var(--text-main); color: var(--bg-color); }

.hero { min-height: 85vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 60px 5%; position: relative; z-index: 1; }
.hero h1 { font-family: var(--font-display); font-weight: 900; font-size: clamp(2.2rem, 7.5vw, 5.5rem); line-height: 0.95; letter-spacing: -2px; text-transform: uppercase; margin-bottom: 40px; }
.hero h1 span { display: block; color: transparent; -webkit-text-stroke: 2px var(--text-main); }

.btn-cta, .btn-cta-active { font-family: var(--font-display); padding: 16px 45px; text-transform: uppercase; font-weight: 900; text-decoration: none; display: inline-block; border: 2px solid var(--text-main); transition: all 0.2s; text-align: center; font-size: 0.8rem; width: fit-content; letter-spacing: 1px; }
.btn-cta { background: var(--text-main); color: var(--bg-color); }
.btn-cta:hover { background: transparent; color: var(--text-main); box-shadow: 6px 6px 0px var(--accent); transform: translate(-3px, -3px); }
.btn-cta-active { background: transparent; color: var(--text-main); }
.btn-cta-active:hover { background: var(--text-main); color: var(--bg-color); box-shadow: 6px 6px 0px var(--accent); transform: translate(-3px, -3px); }

.section { padding: 80px 5%; max-width: 1400px; margin: 0 auto; width: 100%; overflow: hidden; position: relative; z-index: 1; }
.section-header { margin-bottom: 40px; border-bottom: 2px solid var(--text-main); padding-bottom: 10px; }
.section-header h2 { font-family: var(--font-display); font-size: 1.5rem; text-transform: uppercase; font-weight: 900; }

.plugin-list { display: flex; flex-direction: column; gap: 20px; }
.plugin-row { display: grid; grid-template-columns: 1fr 2fr 1fr; align-items: center; padding: 30px 25px; background: var(--card-bg); border: 2px solid var(--card-border); transition: all 0.2s; gap: 20px; }
.plugin-row:hover { box-shadow: 6px 6px 0px var(--accent); transform: translateY(-2px); background: #ffffff; }
[data-theme="dark"] .plugin-row:hover { background: #1a1921; }

.plugin-id { font-size: 1.1rem; color: var(--text-muted); font-weight: 700; }
.plugin-details h3 { font-family: var(--font-display); font-size: 1.4rem; text-transform: uppercase; font-weight: 900; }
.plugin-action { text-align: right; }
.plugin-action .price { font-size: 1.2rem; font-weight: 700; display: block; margin-bottom: 10px; }

.labs-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
.labs-card { background: var(--card-bg); border: 2px solid var(--text-main); padding: 30px; display: flex; flex-direction: column; justify-content: space-between; height: 220px; transition: all 0.2s; }
.labs-card:hover { box-shadow: 6px 6px 0px var(--accent); transform: translateY(-2px); background: #ffffff; }
[data-theme="dark"] .labs-card:hover { background: #1a1921; }

.labs-card h3 { font-family: var(--font-display); font-size: 1.2rem; text-transform: uppercase; font-weight: 900; }
.labs-card a { font-family: var(--font-display); font-size: 0.75rem; border-bottom: 2px solid var(--text-main); align-self: flex-start; text-decoration: none; color: inherit; font-weight: 900; text-transform: uppercase; }

.manifesto-box { max-width: 800px; border-top: 2px solid var(--text-main); padding-top: 60px; margin: 40px auto 0 auto; text-align: center; }
.manifesto-box h2 { font-family: var(--font-display); text-transform: uppercase; font-size: 1.4rem; font-weight: 900; margin-bottom: 20px; }
.manifesto-box p { color: var(--text-muted); font-size: 0.95rem; max-width: 650px; margin: 0 auto; line-height: 1.6; }

footer { text-align: center; padding: 60px 5%; font-size: 0.75rem; color: var(--text-muted); border-top: 2px solid var(--text-main); margin-top: 40px; }

@media (max-width: 900px) {
    header { padding: 12px 4%; }
    .logo { font-size: 1.15rem; }
    .menu-btn { display: block; margin-left: auto; }
    nav ul { display: none; flex-direction: column; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: var(--bg-color); justify-content: center; align-items: center; gap: 35px; z-index: 101; padding: 40px; }
    nav ul.active { display: flex; }
    nav a { font-size: 1.5rem; }
    nav a.active-link::after { display: none; }
    .theme-toggle { font-size: 1rem; padding: 8px 20px; }
    .menu-btn.active .bar:nth-child(1) { transform: translateY(8px) rotate(45deg); }
    .menu-btn.active .bar:nth-child(2) { opacity: 0; }
    .menu-btn.active .bar:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }
    .hero h1 { font-size: clamp(2rem, 9vw, 3.8rem); letter-spacing: -1px; }
    .btn-cta, .btn-cta-active { width: 100%; max-width: 300px; }
    .plugin-row { grid-template-columns: 1fr; text-align: center; padding: 25px; }
    .plugin-action { text-align: center; margin-top: 10px; }
    .labs-card { text-align: center; align-items: center; }
    .labs-card a { align-self: center; }
    .grid-2, .grid-3 { grid-template-columns: 1fr !important; gap: 20px; width: 100%; }
    .tool-container { padding: 20px 15px !important; width: 100% !important; box-sizing: border-box; }
    .pad-grid { grid-template-columns: repeat(3, 1fr) !important; }
    .section { padding: 40px 4%; }
}

.grid-2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; width: 100%; }
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 30px; width: 100%; }
.section-category-title { font-family: var(--font-display); font-size: 1.1rem; font-weight: 900; padding: 10px 5%; background: var(--text-main); color: var(--bg-color); letter-spacing: 1px; margin-top: 40px; }
.tool-id { font-size: 0.75rem; color: var(--text-muted); font-weight: 700; margin-bottom: 20px; text-transform: uppercase; letter-spacing: 1px; }
.tool-row { display: flex; align-items: center; gap: 15px; max-width: 100%; }
.text-right { text-align: right; }
.text-center { text-align: center; }

.tool-container { background: var(--card-bg); border: 2px solid var(--card-border); padding: 35px 30px; transition: all 0.2s; display: flex; flex-direction: column; justify-content: space-between; max-width: 100%; overflow: hidden; }
.tool-container:hover { box-shadow: 6px 6px 0px var(--accent); transform: translate(-2px, -2px); background: #ffffff; }
[data-theme="dark"] .tool-container:hover { background: #1a1921; }

.bpm-display { font-family: var(--font-display); font-size: clamp(3.5rem, 8vw, 5rem); font-weight: 900; line-height: 1; margin-bottom: 10px; color: var(--text-main); }
.bpm-display span { font-size: 1.2rem; color: var(--text-muted); }
.bpm-status { font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase; margin-bottom: 20px; }

.tools-table { width: 100%; border-collapse: collapse; font-size: 0.8rem; text-transform: uppercase; table-layout: fixed; }
.tools-table td { padding: 10px 0; border-bottom: 1px dashed var(--text-muted); word-break: break-all; }
.tools-table tr:last-child td { border: none; }

.pad-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 100%; }
.drum-pad { background: var(--bg-color); border: 2px solid var(--text-main); color: var(--text-main); font-family: var(--font-display); font-weight: 900; font-size: 0.75rem; padding: 15px 5px; cursor: pointer; transition: all 0.1s; }
.drum-pad span { font-family: var(--font-mono); font-size: 0.6rem; color: var(--text-muted); display: block; margin-top: 4px; }
.drum-pad:active, .drum-pad.active { background: var(--accent); transform: scale(0.95); }

select, input[type=number] { border: 2px solid var(--text-main); background: var(--bg-color); color: var(--text-main); padding: 5px; font-family: var(--font-mono); max-width: 100%; }
.name-box { font-family: var(--font-display); font-size: 1.1rem; font-weight: 900; text-transform: uppercase; background: var(--bg-color); border: 2px solid var(--text-main); padding: 20px 10px; margin-bottom: 15px; min-height: 70px; display: flex; align-items: center; justify-content: center; letter-spacing: -0.5px; word-break: break-word; }