
        :root {
            --font-heading: 'Lilita One', cursive;
            --font-body: 'Nunito', sans-serif;
            --color-bg-page: #e9e2d0; 
            --color-bg-primary: #F5F3E9; 
            --color-bg-primary-rgb: 245, 243, 233;
            --color-bg-input: #FFFFFF;
            --color-border: #D1CBB8;
            --color-border-rgb: 209, 203, 184;
            --color-accent: #55C34D; 
            --color-accent-rgb: 85, 195, 77;
            --color-accent-secondary: #2573D4;
            --color-text-primary: #4A4A4A;
            --color-text-secondary: #8a816c;
            --color-success: #55C34D;
            --color-error: #ef4444;
            --color-warning: #f59e0b; 
        }

        html, body {
            height: 100%;
            overflow: hidden; 
        }
        body {
            display: flex;
            flex-direction: column;
            background-color: var(--color-bg-page);
            color: var(--color-text-primary);
            font-family: var(--font-body);
            background-image: radial-gradient(var(--color-border) 0.5px, transparent 0.5px);
            background-size: 20px 20px;
        }
        main {
            flex-grow: 1;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        header {
            background-color: rgba(var(--color-bg-primary-rgb), 0.8);
        }
        footer {
            flex-shrink: 0; 
        }
        h1, h2, h3, h4 {
            font-family: var(--font-heading);
            letter-spacing: 0.5px;
            color: var(--color-text-primary);
        }
        
        .mfp-bg {
            background: rgba(40, 40, 40, 0.7);
            backdrop-filter: blur(4px);
            -webkit-backdrop-filter: blur(4px);
        }
        .mfp-zoom-in .mfp-content {
            opacity: 0;
            transform: scale(0.95);
            transition: all 0.3s ease-in-out;
        }
        .mfp-zoom-in.mfp-ready .mfp-content {
            opacity: 1;
            transform: scale(1);
        }
        .mfp-zoom-in.mfp-removing .mfp-content {
            opacity: 0;
            transform: scale(0.95);
        }
        #modal-container {
            background: var(--color-bg-primary);
            border: 2px solid #fff;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2), 0 0 0 2px var(--color-border);
            overflow: hidden;
            border-radius: 1.5rem;
        }
        #modal-container.is-hiding {
            opacity: 0;
        }
        
        .monopoly-btn {
            background-color: var(--color-accent);
            color: white;
            font-family: var(--font-heading);
            font-size: 1.25rem;
            padding: 0.75rem 2rem;
            border-radius: 9999px;
            text-transform: uppercase;
            border: 2px solid white;
            box-shadow: 0 5px 0 0 #3a8e34, 0 8px 15px -2px rgba(0,0,0,0.3);
            transition: all 0.15s ease-out;
        }
        .monopoly-btn:hover:not(:disabled) {
            transform: translateY(-2px);
            box-shadow: 0 7px 0 0 #3a8e34, 0 10px 20px -2px rgba(0,0,0,0.25);
        }
        .monopoly-btn:active:not(:disabled) {
            transform: translateY(2px);
            box-shadow: 0 2px 0 0 #3a8e34, 0 5px 10px -2px rgba(0,0,0,0.3);
        }
        .monopoly-btn:disabled {
            opacity: 0.6;
            cursor: not-allowed;
            box-shadow: 0 5px 0 0 #9ca3af;
        }

        .checklist-item {
            transition: color 0.4s ease-in-out;
        }
        .checklist-item.completed { color: var(--color-success); font-weight: 700; }
        #generation-progress-bar-container {
            width: 100%;
            background-color: var(--color-bg-input);
            border-radius: 9999px;
            height: 10px;
            margin-bottom: 1.5rem;
            border: 2px solid var(--color-border);
            overflow: hidden;
            padding: 2px;
        }
        #generation-progress-bar {
            width: 0%;
            height: 100%;
            background-color: var(--color-accent);
            border-radius: 9999px;
            transition: width 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
        }
        
        .resource-card {
            background-color: var(--color-bg-input);
            border: 3px solid var(--color-border);
            border-radius: 1rem;
            box-shadow: 0 4px 8px rgba(0,0,0,0.05);
            transition: border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
        }
        .resource-card:hover {
            border-color: var(--color-accent);
            transform: translateY(-4px);
            box-shadow: 0 6px 15px rgba(var(--color-accent-rgb), 0.3);
        }
        .resource-card.selected {
             border-color: var(--color-accent);
             box-shadow: 0 0 25px rgba(var(--color-accent-rgb), 0.5);
             transform: translateY(-4px) scale(1.05);
             outline: 3px solid var(--color-accent);
        }
        #username-input {
             border-radius: 0.75rem;
             border: 2px solid var(--color-border);
             transition: all 0.2s ease-in-out;
        }
        #username-input:focus {
            box-shadow: 0 0 10px rgba(var(--color-accent-rgb), 0.5);
            border-color: var(--color-accent);
        }
		#captcha-target {
            margin-left: auto;
            margin-right: auto;
        }
        #countdown-timer.urgent {
            color: var(--color-error);
            animation: pulse-urgent 1s infinite;
        }
        @keyframes pulse-urgent {
            0%, 100% { transform: scale(1); }
            50% { transform: scale(1.05); }
        }
