/* Travian Layout */

@import url("/assets/frappe/css/fonts/fontawesome/font-awesome.min.css");
@layer base,
layout,
components,
utilities;
@layer base {
     :root {
        --travian-bg: #f8fafc;
        --travian-primary: #2563eb;
        --travian-sidebar-bg: #0f172a;
        --travian-sidebar-text: #f8fafc;
        --travian-sidebar-link: #e2e8f0;
        --travian-text: #0f172a;
        --travian-muted: #64748b;
        --travian-border: #e2e8f0;
        --travian-radius: 12px;
        --travian-radius-sm: 8px;
        --travian-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
        --travian-shadow-lg: 0 12px 22px rgba(15, 23, 42, 0.12);
        --travian-focus-ring: rgba(37, 99, 235, 0.15);
        --travian-overlay: rgba(15, 23, 42, 0.45);
        --travian-danger: #f87171;
    }
    .fas {
        display: inline-block;
        font: normal normal normal 14px/1 FontAwesome;
        font-size: inherit;
        text-rendering: auto;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
    }
}

@layer layout {
    .travian-layout {
        display: flex;
        min-height: 100vh;
        background: var(--travian-bg);
    }
    body.travian-web nav.navbar.navbar-light.navbar-expand-lg,
    body.travian-web footer.web-footer {
        display: none;
    }
    .travian-sidebar {
        width: 240px;
        background: var(--travian-sidebar-bg);
        color: var(--travian-sidebar-text);
        display: flex;
        flex-direction: column;
        padding: 20px 16px;
        position: sticky;
        top: 0;
        min-height: 100vh;
        height: 100%;
    }
    .travian-sidebar-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 24px;
    }
    .travian-sidebar-logo {
        font-size: 18px;
        font-weight: 700;
        letter-spacing: 0.3px;
    }
    .travian-sidebar-close {
        background: transparent;
        border: none;
        color: #94a3b8;
        font-size: 18px;
        cursor: pointer;
        display: none;
    }
    .travian-sidebar-nav {
        display: flex;
        flex-direction: column;
        gap: 8px;
        align-items: stretch;
        text-align: left;
    }
    .travian-sidebar-link {
        text-align: left;
        padding: 10px 12px;
        border-radius: 10px;
        color: var(--travian-sidebar-link);
        text-decoration: none;
        font-weight: 600;
        transition: background 0.2s ease, color 0.2s ease;
    }
    .travian-sidebar-link:hover {
        background: rgba(255, 255, 255, 0.08);
        color: #fff;
    }
    .travian-sidebar-link.is-active {
        background: var(--travian-primary);
        color: #fff;
    }
    .travian-sidebar-footer {
        margin-top: auto;
        padding-top: 16px;
        border-top: 1px solid rgba(148, 163, 184, 0.2);
    }
    .travian-sidebar-identity {
        padding: 12px 16px;
        display: flex;
        flex-direction: column;
        gap: 6px;
    }
    .travian-sidebar-identity label {
        font-size: 12px;
        text-transform: uppercase;
        letter-spacing: 0.5px;
        color: var(--travian-text-muted, #94a3b8);
    }
    .travian-sidebar-link.is-logout {
        color: var(--travian-danger);
    }
    .travian-content {
        flex: 1;
        padding: 24px 32px;
    }
    .travian-content-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 24px;
    }
    .travian-sidebar-toggle {
        display: none;
        background: var(--travian-primary);
        color: #fff;
        border: none;
        border-radius: 8px;
        padding: 8px 12px;
        cursor: pointer;
    }
    .travian-content-user {
        color: var(--travian-muted);
        font-size: 14px;
    }
    @media (max-width: 960px) {
        .travian-layout {
            flex-direction: column;
        }
        body.travian-web.sidebar-open::before {
            content: "";
            position: fixed;
            inset: 0;
            background: var(--travian-overlay);
            z-index: 900;
        }
        body.travian-web.sidebar-open {
            overflow: hidden;
        }
        .travian-sidebar {
            position: fixed;
            left: 0;
            top: 0;
            transform: translateX(-100%);
            transition: transform 0.25s ease;
            z-index: 1000;
        }
        .travian-sidebar.open {
            transform: translateX(0);
        }
        .travian-sidebar-close {
            display: block;
        }
        .travian-sidebar-toggle {
            display: inline-flex;
        }
        .travian-content {
            padding: 20px;
        }
    }
}

@layer components {
    .travian-dashboard-header h2 {
        margin-bottom: 4px;
    }
    .travian-dashboard-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 16px;
        margin-top: 20px;
    }
    .travian-dashboard-card {
        background: #ffffff;
        border-radius: var(--travian-radius);
        padding: 18px;
        border: 1px solid var(--travian-border);
        text-decoration: none;
        color: var(--travian-text);
        box-shadow: var(--travian-shadow);
        transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    .travian-dashboard-card:hover {
        transform: translateY(-2px);
        box-shadow: var(--travian-shadow-lg);
    }
    .travian-dashboard-card h4 {
        margin-bottom: 6px;
    }
    .travian-link-field {
        position: relative;
        width: 100%;
    }
    .travian-link-input {
        width: 100%;
        padding: 12px 16px;
        border: 2px solid var(--travian-border);
        border-radius: var(--travian-radius-sm);
        font-size: 14px;
        background: #ffffff;
        color: #2d3748;
        transition: all 0.3s ease;
    }
    .travian-link-input:focus {
        border-color: var(--travian-primary);
        outline: 0;
        box-shadow: 0 0 0 3px var(--travian-focus-ring);
        transform: translateY(-1px);
    }
    .travian-link-dropdown {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        background: #ffffff;
        border: 2px solid var(--travian-primary);
        border-top: none;
        border-radius: 0 0 var(--travian-radius-sm) var(--travian-radius-sm);
        box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
        z-index: 1000;
        max-height: 250px;
        overflow-y: auto;
        display: none;
    }
    .travian-link-option {
        padding: 12px 16px;
        cursor: pointer;
        border-bottom: 1px solid #f7fafc;
        transition: all 0.2s ease;
        font-size: 14px;
        color: #2d3748;
    }
    .travian-link-option:hover {
        background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
        transform: translateX(4px);
    }
    .travian-link-option.is-selected {
        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
        color: #ffffff;
    }
    .travian-link-option.is-disabled {
        cursor: default;
        color: #94a3b8;
    }
    #farm-list-container {
        min-height: 400px;
    }
}

@layer utilities {
    body.travian-web .travian-skip-link {
        position: absolute;
        left: -999px;
        top: auto;
        width: 1px;
        height: 1px;
        overflow: hidden;
        background: var(--travian-primary);
        color: #ffffff;
        padding: 8px 12px;
        border-radius: 8px;
        z-index: 2000;
        text-decoration: none;
    }
    body.travian-web .travian-skip-link:focus {
        left: 16px;
        top: 16px;
        width: auto;
        height: auto;
    }
    body.travian-web .travian-sidebar-link:focus-visible,
    body.travian-web .travian-sidebar-toggle:focus-visible,
    body.travian-web .travian-sidebar-close:focus-visible,
    body.travian-web .travian-dashboard-card:focus-visible,
    body.travian-web button:focus-visible,
    body.travian-web input:focus-visible,
    body.travian-web select:focus-visible,
    body.travian-web textarea:focus-visible {
        outline: 2px solid var(--travian-primary);
        outline-offset: 2px;
    }
    body.travian-web .container {
        max-width: 100%;
        width: 100%;
        padding-left: 0;
        padding-right: 0;
    }
    body.travian-web {
        overflow-x: hidden;
    }
    body.travian-web .travian-content-body {
        padding: 16px 24px;
    }
}


/* Unlayered sidebar color overrides to beat external styles */

body.travian-web .travian-sidebar {
    color: var(--travian-sidebar-text);
}

body.travian-web .travian-sidebar-logo {
    color: var(--travian-sidebar-text);
}

body.travian-web .travian-sidebar-link {
    color: var(--travian-sidebar-link);
}

body.travian-web .travian-sidebar-link.is-active {
    color: #ffffff;
}

body.travian-web .travian-sidebar-link.is-logout {
    color: var(--travian-danger);
}

body.travian-web .travian-sidebar-nav {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

body.travian-web .travian-sidebar-link {
    display: block;
    width: 100%;
    text-align: left;
}