:root {
    /* Earthy Green/Brown Palette */
    --bg-primary: #1e221b;        /* Soft olive dark background */
    --card-bg: #282e24;           /* Slightly lighter container fill */
    
    /* Duolingo-Style Button Colors */
    --green-main: #439404;        /* Vibrant green button top */
    --green-shadow: #234e04;      /* Darker green button depth */
    
    --brown-main: #a26a38;        /* Warm brown button top */
    --brown-shadow: #7e5027;      /* Darker brown button depth */

    --neutral-main: #8ac557;      /* Slate-gray olive top */
    --neutral-shadow: #abd88a;    /* Slate-gray olive depth */

    --text-primary: #ffffff;
    --text-secondary: #a3ac9c;
    --border-subtle: #31372b;
    --input-bg: #141712;
}

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

body {
    font-family: 'IBM Plex Sans', sans-serif;
    background-color: var(--bg-primary);
    color: var(--text-primary);
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1.5rem;
}

/* Single-Column Container */
.app-container {
    width: 100%;
    max-width: 650px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
}

.app-header {
    text-align: center;
}

.app-header h1 {
    font-size: 2.2rem;
    font-weight: 800;
    color: #f0f4ec;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

.app-header .badge {
    font-size: 0.85rem;
    background: var(--brown-main);
    color: white;
    padding: 0.2rem 0.5rem;
    border-radius: 6px;
    font-weight: 700;
}

.app-header p {
    color: var(--text-secondary);
    font-size: 0.95rem;
    margin-top: 0.2rem;
}

/* Board Wrapper */
.game-wrapper {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

.board-container {
    width: 100%;
    display: flex;
    justify-content: center;
}

/* Canvas Sizing */
canvas {
    border-radius: 12px;
    background-color: #e3d3b7; 
    display: block;
    width: 100% !important;     
    max-width: 600px;
    height: auto !important;
}


/* Bottom Controls Row */
.controls-row {
    width: 100%;
    margin-top: 2rem;
    max-width: 420px;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.api-config {
    display: flex;
    gap: 0.5rem;
    flex: 1;
}

.api-config input {
    flex: 1;
    background-color: var(--input-bg);
    border: none;
    outline: none;
    color: var(--text-primary);
    padding: 0.55rem 0.85rem;
    border-radius: 8px;
    font-family: inherit;
    font-size: 0.85rem;
}

.status-indicator {
    font-size: 0.8rem;
    color: var(--text-secondary);
    text-align: center;
}

/* ==========================================================================
   Duolingo-Style 3D Buttons (Slightly Reduced Size & Microinteractions)
   ========================================================================== */
.btn {
    border: none;
    border-radius: 8px;
    padding: 0.55rem 1rem;       /* Slightly reduced padding */
    font-family: inherit;
    font-size: 0.85rem;          /* Compact font size */
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    cursor: pointer;
    position: relative;
    transition: transform 0.08s ease-in-out, box-shadow 0.08s ease-in-out, background-color 0.1s ease;
    white-space: nowrap;
}

/* Click / Push microinteraction */
.btn:active {
    transform: translateY(3px);  /* Pushes down on click */
}

/* Neutral Grayish-Olive Button (Restart) */
.btn-neutral {
    background-color: var(--neutral-main);
    color: #f0f4ec;
    box-shadow: 0 3px 0 var(--neutral-shadow);
}

.btn-neutral:hover {
    background-color: #555d4d;
}

.btn-neutral:active {
    box-shadow: 0 0 0 var(--neutral-shadow);
}

/* Primary Green Button (Play Again in Modal) */
.btn-primary {
    background-color: var(--green-main);
    color: #ffffff;
    box-shadow: 0 3px 0 var(--green-shadow);
}

.btn-primary:hover {
    background-color: #529c1a;
}

.btn-primary:active {
    box-shadow: 0 0 0 var(--green-shadow);
}

/* Secondary Brown Button (Connect) */
.btn-secondary {
    background-color: var(--brown-main);
    color: #ffffff;
    box-shadow: 0 3px 0 var(--brown-shadow);
}

.btn-secondary:hover {
    background-color: #b57740;
}

.btn-secondary:active {
    box-shadow: 0 0 0 var(--brown-shadow);
}

/* Modal */
.modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.75);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 100;
}

.modal.hidden {
    display: none;
}

.modal-content {
    background: var(--card-bg);
    padding: 1.75rem;
    border-radius: 12px;
    text-align: center;
    max-width: 340px;
    width: 90%;
}

.modal-content h2 {
    font-size: 1.6rem;
    margin-bottom: 0.5rem;
}

.modal-content p {
    color: var(--text-secondary);
    margin-bottom: 1.25rem;
}

/* Mobile responsive fallback */
@media (max-width: 480px) {
    .controls-row {
        flex-direction: column;
        align-items: stretch;
    }
    
    .btn {
        width: 100%;
    }
}

.credits {
    margin-top: 1rem;
    font-size: 0.85rem;
    color: var(--text-secondary, #a3ac9c);
    text-align: center;
    letter-spacing: 0.3px;
}

.credits .author {
    font-weight: 700;
    color: var(--text-primary, #ffffff);
}