/* === ROOT PROMĚNNÉ (barvy, velikosti, mezery) ===
           Všechny barvy a základní hodnoty jsou tady na jednom místě */
        :root {
            color-scheme: dark;
            --bg: #050507;
            --card-bg: #0c0c10;
            --purple: #b14bf7;
            --purple-glow: rgba(177, 75, 247, 0.45);
            --text: #f4f4f8;
            --text-dim: #9a9aa8;
            --border: rgba(255, 255, 255, 0.08);
            --card-radius: clamp(22px, 4vw, 40px);
            --main-gap: clamp(16px, 3vw, 30px);
            --card-padding: clamp(28px, 5vw, 55px);
        }

        /* === RESET & ZÁKLADNÍ STYLY ===
           Odstraňuje výchozí okraje, nastavuje písmo a základní chování stránky */
        * { margin: 0; padding: 0; box-sizing: border-box; -webkit-font-smoothing: antialiased; }

        html {
            overflow-x: hidden;
            -webkit-text-size-adjust: 100%;
            text-size-adjust: 100%;
        }

        body {
            background-color: var(--bg);
            color: var(--text);
            font-family: 'Inter', system-ui, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100dvh;
            min-height: 100vh;
            padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
            overflow-x: hidden;
            position: relative;
            -webkit-tap-highlight-color: transparent;
        }

        /* === REAKTIVNÍ GLOW (následuje myš) ===
           Velký fialový "světelný" kruh, který se pohybuje za kurzorem */
        #mouse-glow {
            position: fixed;
            top: 0; left: 0;
            width: min(700px, 140vw);
            height: min(700px, 140vw);
            background: radial-gradient(circle, rgba(177, 75, 247, 0.22) 0%, transparent 70%);
            filter: blur(80px);
            z-index: 1;
            pointer-events: none;
            opacity: 0;
            transition: opacity 0.8s ease;
            will-change: transform;
        }

        @media (hover: none), (pointer: coarse) {
            #mouse-glow { display: none; }
        }

        /* === DASHBOARD GRID ===
           Hlavní mřížka všech karet (4 sloupce na velkých obrazovkách) */
        .grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: var(--main-gap);
            max-width: 1400px;
            width: 100%;
            position: relative;
            z-index: 2;
        }

        /* === KARTY (základní styl všech karet) ===
           Společný vzhled všech .card elementů + hover efekty */
        .card {
            background: var(--card-bg);
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100' height='100' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");
            border: 1px solid var(--border);
            border-radius: var(--card-radius);
            padding: var(--card-padding);
            position: relative;
            transition: all 0.5s cubic-bezier(0.2, 1, 0.2, 1);
            overflow: hidden;
            display: flex;
            flex-direction: column;
            justify-content: center;
            backdrop-filter: blur(10px);
            min-height: 280px;
        }

        @media (hover: hover) and (pointer: fine) {
            .card:hover {
                border-color: rgba(177, 75, 247, 0.4);
                box-shadow: 0 30px 70px rgba(0,0,0,0.8), inset 0 0 20px rgba(177, 75, 247, 0.05);
                transform: translateY(-10px);
            }
        }

        @media (hover: none) {
            .card:active {
                border-color: rgba(177, 75, 247, 0.35);
                transform: scale(0.99);
            }
        }

        /* Odlesk při hoveru (přejede přes kartu) */
        .card::after {
            content: '';
            position: absolute;
            top: 0; left: -100%;
            width: 100%; height: 100%;
            background: linear-gradient(90deg, transparent, rgba(255,255,255,0.03), transparent);
            transition: 0.8s;
            pointer-events: none;
        }
        @media (hover: hover) and (pointer: fine) {
            .card:hover::after { left: 100%; }
        }

        /* Velikosti sloupců v gridu */
        .col-2 { grid-column: span 2; }
        .col-1 { grid-column: span 1; }

        /* === UNIKÁTNÍ PORTFOLIO TRIGGER ===
           Speciální karta s odkazem na projekty (šipka + zarovnání) */
        .portfolio-trigger {
            justify-content: space-between;
            cursor: pointer;
            background: linear-gradient(135deg, var(--card-bg) 0%, #16161d 100%);
            text-decoration: none;
        }

        .trigger-arrow {
            align-self: flex-end;
            font-size: 26px;
            color: var(--purple);
            transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
        }

        @media (hover: hover) and (pointer: fine) {
            .portfolio-trigger:hover .trigger-arrow {
                transform: translateX(10px);
                filter: drop-shadow(0 0 10px var(--purple));
            }
        }

        .portfolio-trigger-title {
            font-size: 24px;
            margin-bottom: 5px;
        }

        .portfolio-trigger, .portfolio-trigger:visited {
            color: var(--text);
        }

        /* === KOPÍROVÁNÍ (Discord status overlay) ===
           Zelený overlay "Zkopírováno!" který se objeví při kliknutí na Discord kartu */
        .copy-status {
            position: absolute;
            top: 0; left: 0;
            width: 100%; height: 100%;
            background: var(--purple);
            color: white;
            display: flex;
            justify-content: center;
            align-items: center;
            font-weight: 800;
            font-size: 18px;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.3s ease;
            z-index: 10; /* vyšší než zbytek karty */
        }

        .copy-status.active {
            opacity: 1;
        }

        /* === TYPOGRAFIE ===
           Všechny textové styly – nadpisy, popisky, mono text */
        .mono {
            font-family: 'JetBrains Mono', monospace;
            color: var(--purple);
            font-size: 14px;
            font-weight: 600;
            letter-spacing: 2px;
            margin-bottom: 15px;
            display: block;
        }

        h1 {
            font-size: clamp(2.75rem, 10vw, 5.125rem);
            font-weight: 900;
            letter-spacing: clamp(-3px, -0.06em, -4px);
            line-height: 0.92;
            margin-bottom: 10px;
            text-transform: uppercase;
        }

        h1 span {
            color: var(--purple);
            animation: pulse-dot 2s infinite ease-in-out;
            display: inline-block;
        }

        @keyframes pulse-dot {
            0%, 100% { opacity: 1; filter: drop-shadow(0 0 15px var(--purple)); }
            50% { opacity: 0.4; filter: drop-shadow(0 0 0px var(--purple)); }
        }

        .role-title {
            font-size: 20px;
            font-weight: 700;
            letter-spacing: 2px;
            color: var(--text);
            opacity: 0.8;
            margin-bottom: 20px;
            text-transform: uppercase;
        }

        .desc {
            color: var(--text-dim);
            font-size: 18px;
            line-height: 1.6;
            max-width: 440px;
        }

        /* === PROJEKTY ===
           Badge, nadpisy projektů, progress bar a statistiky */
        .badge {
            display: inline-flex;
            align-items: center;
            background: rgba(177, 75, 247, 0.1);
            color: var(--purple);
            padding: 8px 18px;
            border-radius: 100px;
            font-size: 11px;
            font-weight: 800;
            text-transform: uppercase;
            letter-spacing: 1.5px;
            margin-bottom: 25px;
            align-self: flex-start;
            border: 1px solid rgba(177, 75, 247, 0.15);
        }

        .badge::before {
            content: '';
            width: 7px; height: 7px;
            background: var(--purple);
            border-radius: 50%;
            margin-right: 10px;
            box-shadow: 0 0 10px var(--purple);
        }

        h2 { font-size: clamp(22px, 4vw, 38px); font-weight: 800; margin-bottom: 15px; letter-spacing: -1.5px; }

        .progress-container { margin: 35px 0 15px; }
        .track {
            height: 10px;
            background: rgba(255,255,255,0.03);
            border-radius: 20px;
            overflow: hidden;
            margin-bottom: 12px;
        }
        .fill {
            height: 100%;
            background: linear-gradient(90deg, #8a2be2, var(--purple), #d8b4fe);
            background-size: 200% 100%;
            box-shadow: 0 0 20px var(--purple-glow);
            border-radius: 20px;
            animation: flow 3s infinite linear;
        }

        @keyframes flow {
            0% { background-position: 100% 0%; }
            100% { background-position: -100% 0%; }
        }

        .stats {
            display: flex;
            justify-content: space-between;
            font-size: 11px;
            color: var(--text-dim);
            font-family: 'JetBrains Mono', monospace;
            font-weight: 600;
        }

        /* === MALÉ KARTY (Social & Skills) ===
           Malé karty pro Instagram, Discord, CSS3, HTML5 */
        .small-card { align-items: center; text-align: center; padding: 45px; }

        .icon {
            font-size: 40px;
            margin-bottom: 15px;
            transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
            display: block;
            color: var(--purple);
            filter: drop-shadow(0 0 10px rgba(177, 75, 247, 0.3));
        }
        
        @media (hover: hover) and (pointer: fine) {
            .card:hover .icon { transform: scale(1.2) rotate(5deg); }
        }

        .card-title { font-weight: 800; font-size: 22px; }
        .card-sub { font-size: 14px; color: var(--text-dim); margin-top: 5px; }

        /* === PULS ZELENÉ TEČKY (nepoužito v aktuálním HTML, ale ponecháno pro případné budoucí použití) */
        .live-dot-pulse {
            width: 8px;
            height: 8px;
            background: #4ade80;
            border-radius: 50%;
            box-shadow: 0 0 0 rgba(74, 222, 128, 0.4);
            animation: pulse-green 2s infinite;
        }
        
                /* Styl pro tlačítko v rohu karty */
        .admin-btn {
            position: absolute;
            top: max(12px, env(safe-area-inset-top));
            right: max(12px, env(safe-area-inset-right));
            background: rgba(255, 255, 255, 0.03);
            border: 1px solid var(--border);
            min-height: 44px;
            min-width: 44px;
            padding: 8px 14px;
            border-radius: 10px;
            color: var(--text-dim);
            text-decoration: none;
            font-family: 'JetBrains Mono', monospace;
            font-size: 11px;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            transition: 0.3s;
        }
        .admin-btn:hover {
            background: rgba(137, 87, 229, 0.1);
            border-color: var(--purple);
            color: white;
        }

        @keyframes pulse-green {
            0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.7); }
            70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(74, 222, 128, 0); }
            100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); }
        }

        /* === RESPONSIVITA ===
           Přizpůsobení pro menší obrazovky (tablety + mobily) */
        @media (max-width: 1200px) {
            .grid { grid-template-columns: repeat(2, 1fr); }
            .col-2 { grid-column: span 2; }
        }

        @media (max-width: 650px) {
            body {
                align-items: flex-start;
                padding-top: max(12px, env(safe-area-inset-top));
            }
            .grid { grid-template-columns: 1fr; gap: 16px; }
            .col-2, .col-1 { grid-column: span 1; }
            .card {
                min-height: auto;
                padding: var(--card-padding);
            }
            .small-card { padding: var(--card-padding); }
            .desc { font-size: clamp(15px, 4vw, 18px); max-width: none; }
            .mono { font-size: 12px; letter-spacing: 1.5px; }
            .role-title { font-size: clamp(14px, 3.5vw, 18px); }
            h2 { font-size: clamp(22px, 6vw, 32px); }
            .portfolio-trigger-title { font-size: clamp(20px, 5vw, 24px); }
            #mouse-glow { display: none; }
        }

        /* === AMBIENT POZADÍ & „PRO“ VRSTVY === */
        .ambient {
            position: fixed;
            inset: 0;
            z-index: 0;
            pointer-events: none;
            overflow: hidden;
        }

        .ambient-vignette {
            position: absolute;
            inset: 0;
            background: radial-gradient(ellipse 85% 70% at 50% 45%, transparent 0%, var(--bg) 78%);
        }

        .ambient-orb {
            position: absolute;
            border-radius: 50%;
            filter: blur(72px);
            opacity: 0.45;
            animation: orb-drift 22s ease-in-out infinite;
        }

        .ambient-orb-a {
            width: min(520px, 80vw);
            height: min(520px, 80vw);
            top: -12%;
            left: -8%;
            background: radial-gradient(circle, rgba(177, 75, 247, 0.35) 0%, transparent 68%);
            animation-delay: 0s;
        }

        .ambient-orb-b {
            width: min(480px, 75vw);
            height: min(480px, 75vw);
            bottom: -15%;
            right: -10%;
            background: radial-gradient(circle, rgba(120, 60, 200, 0.28) 0%, rgba(60, 30, 90, 0.15) 45%, transparent 70%);
            animation-delay: -11s;
            animation-duration: 26s;
        }

        @keyframes orb-drift {
            0%, 100% { transform: translate(0, 0) scale(1); }
            33% { transform: translate(4%, 6%) scale(1.06); }
            66% { transform: translate(-3%, -4%) scale(0.96); }
        }

        .ambient-grid {
            position: absolute;
            inset: -20%;
            opacity: 0.04;
            background-image:
                linear-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px),
                linear-gradient(90deg, rgba(255, 255, 255, 0.06) 1px, transparent 1px);
            background-size: 56px 56px;
            mask-image: radial-gradient(ellipse 55% 50% at 50% 40%, black 10%, transparent 72%);
            animation: grid-pan 48s linear infinite;
        }

        @keyframes grid-pan {
            0% { transform: translate(0, 0); }
            100% { transform: translate(56px, 56px); }
        }

        /* Rotující jemný lem karty */
        .card-border-glow {
            position: absolute;
            inset: -1px;
            border-radius: inherit;
            padding: 1px;
            background: conic-gradient(from var(--spin, 0deg), transparent 0%, rgba(177, 75, 247, 0.12) 18%, transparent 35%, transparent 65%, rgba(177, 75, 247, 0.08) 82%, transparent 100%);
            -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
            mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
            -webkit-mask-composite: xor;
            mask-composite: exclude;
            pointer-events: none;
            opacity: 0.55;
            animation: border-spin 10s linear infinite;
        }

        @keyframes border-spin {
            to { --spin: 360deg; }
        }

        @property --spin {
            syntax: '<angle>';
            inherits: false;
            initial-value: 0deg;
        }

        .card-hero .card-border-glow { opacity: 0.75; }

        .card-work {
            display: flex;
            flex-direction: column;
            justify-content: space-between;
        }

        .work-title {
            font-size: clamp(20px, 4vw, 24px);
            margin-bottom: 6px;
            font-weight: 800;
            letter-spacing: -0.03em;
        }

        .work-desc {
            font-size: 13px;
            color: var(--text-dim);
        }

        .work-progress-block {
            margin-top: clamp(20px, 4vw, 30px);
        }

        .progress-track {
            width: 100%;
            height: 6px;
            background: rgba(255, 255, 255, 0.08);
            border-radius: 99px;
            overflow: hidden;
        }

        .progress-fill {
            height: 100%;
            width: 0;
            border-radius: inherit;
            background: linear-gradient(90deg, #8a3df0, var(--purple), #e0b4ff);
            background-size: 160% 100%;
            box-shadow: 0 0 18px var(--purple-glow);
            transition: width 1.15s cubic-bezier(0.22, 1, 0.36, 1);
            transition-delay: 0.25s;
        }

        html.js-motion .card.is-visible .progress-fill {
            width: var(--fill, 92%);
        }

        html:not(.js-motion) .progress-fill {
            width: var(--fill, 92%);
        }

        .progress-meta {
            display: flex;
            justify-content: space-between;
            margin-top: 10px;
            font-family: 'JetBrains Mono', monospace;
            font-size: 10px;
            color: var(--purple);
            letter-spacing: 1px;
        }

        .card-title-social { font-weight: 700; }
        .card-sub-dim { opacity: 0.65; font-size: 0.8rem; }

        .skill-label {
            color: var(--purple);
            font-size: clamp(26px, 6vw, 32px);
            font-weight: 900;
            letter-spacing: -0.04em;
        }

        .skill-card .card-border-glow { opacity: 0.35; }

        /* Scroll / vstup reveal */
        html.js-motion .reveal-on-scroll:not(.is-visible) {
            opacity: 0;
            transform: translateY(36px) scale(0.98);
            filter: blur(10px);
        }

        html.js-motion .reveal-on-scroll {
            transition:
                opacity 0.85s cubic-bezier(0.22, 1, 0.36, 1),
                transform 0.85s cubic-bezier(0.22, 1, 0.36, 1),
                filter 0.65s cubic-bezier(0.22, 1, 0.36, 1);
            transition-delay: var(--reveal-delay, 0ms);
        }

        html.js-motion .reveal-on-scroll.is-visible {
            opacity: 1;
            transform: translateY(0) scale(1);
            filter: blur(0);
        }

        .h1-shimmer {
            background: linear-gradient(
                105deg,
                #fff 0%,
                #fff 38%,
                rgba(255, 255, 255, 0.88) 44%,
                var(--purple) 50%,
                rgba(255, 255, 255, 0.92) 56%,
                #fff 62%,
                #fff 100%
            );
            background-size: 220% auto;
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            -webkit-text-fill-color: transparent;
        }

        @media (prefers-reduced-motion: no-preference) {
            html.js-motion .card-hero.is-visible .h1-shimmer,
            html:not(.js-motion) .h1-shimmer {
                animation: text-shimmer 5s ease-in-out infinite;
            }
        }

        .h1-shimmer span {
            background: linear-gradient(105deg, var(--purple), #d8b4fe, var(--purple));
            background-size: 200% auto;
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
            -webkit-text-fill-color: transparent;
            animation: pulse-dot 2s infinite ease-in-out;
        }

        @keyframes text-shimmer {
            0%, 100% { background-position: 100% center; }
            50% { background-position: 0% center; }
        }

        .mono-appear {
            opacity: 0.85;
        }

        @media (prefers-reduced-motion: no-preference) {
            html.js-motion .card.is-visible .mono-appear {
                animation: mono-pop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
                animation-delay: calc(var(--reveal-delay, 0ms) + 0.12s);
            }

            html.js-motion .card-hero.is-visible .role-scramble {
                animation: role-glide 0.7s cubic-bezier(0.22, 1, 0.36, 1) forwards;
                animation-delay: calc(var(--reveal-delay, 0ms) + 0.2s);
            }
        }

        @keyframes mono-pop {
            from { opacity: 0; transform: translateX(-8px); letter-spacing: 0.35em; }
            to { opacity: 0.85; transform: translateX(0); letter-spacing: 2px; }
        }

        .role-scramble {
            display: inline-block;
        }

        @keyframes role-glide {
            from { opacity: 0; transform: translateY(12px); filter: blur(4px); }
            to { opacity: 0.8; transform: translateY(0); filter: blur(0); }
        }

        @media (hover: hover) and (pointer: fine) {
            .portfolio-trigger:hover {
                box-shadow: 0 28px 60px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(177, 75, 247, 0.25);
            }
        }

        @media (prefers-reduced-motion: reduce) {
            *, *::before, *::after {
                animation-duration: 0.01ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: 0.01ms !important;
            }
            #mouse-glow { display: none !important; }
            .ambient-orb,
            .ambient-grid { opacity: 0.12 !important; transform: none !important; }
            .h1-shimmer {
                animation: none !important;
                background: none;
                color: var(--text);
                -webkit-text-fill-color: var(--text);
            }
            .h1-shimmer span {
                animation: pulse-dot 2s infinite ease-in-out !important;
                animation-duration: 2s !important;
                animation-iteration-count: infinite !important;
                background: none;
                color: var(--purple);
                -webkit-text-fill-color: var(--purple);
            }
            .card-border-glow { opacity: 0.2 !important; }
        }