/* ==========================================================================
   Hotel PMS — "Perch" theme
   Warm cream background, olive-green accent, Fraunces serif for display,
   Inter for UI. Rounded, soft, editorial.
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap');

:root {
    --bg:        #f5f1e8;
    --bg-soft:   #efe9db;
    --card:      #fdfaf2;
    --card-2:    #f8f3e5;
    --text:      #2a2a28;
    --text-soft: #6b6b65;
    --muted:     #9b9a91;
    --border:    #e2dbc7;
    --accent:    #5a7c4a;
    --accent-2:  #c9a96a;
    --accent-dk: #44613a;
    --success:   #5a7c4a;
    --warning:   #c9a96a;
    --danger:    #b14a4a;
    --info:      #6a8ca0;
    --shadow-sm: 0 1px 2px rgba(50, 40, 20, .04);
    --shadow:    0 8px 20px -10px rgba(50, 40, 20, .10),
                 0 2px 6px -2px rgba(50, 40, 20, .05);
    --shadow-lg: 0 40px 80px -30px rgba(50, 40, 20, .18),
                 0 8px 20px -10px rgba(50, 40, 20, .08);
    --radius:    14px;
    --radius-sm: 8px;
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    background: var(--bg);
    color: var(--text);
    font-size: 14.5px;
    line-height: 1.55;
}

h1, h2, h3, h4, h5, .display-font {
    font-family: 'Fraunces', Georgia, serif;
    font-weight: 500;
    letter-spacing: -0.01em;
    color: var(--text);
}
h1 { font-size: 2.4rem; letter-spacing: -0.02em; }
h2 { font-size: 1.9rem; }
h3 { font-size: 1.5rem; }
h4 { font-size: 1.25rem; }
h5 { font-size: 1.1rem; }
h6 { font-size: 0.95rem; font-weight: 600; font-family: 'Inter', sans-serif; }

.eyebrow {
    font-size: 11px;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--accent);
    font-weight: 600;
    font-family: 'Inter', sans-serif;
}

/* Cards */
.card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow-sm);
}
.card-header {
    background: transparent;
    border-bottom: 1px solid var(--border);
    padding: 1rem 1.25rem;
}
.card-body { padding: 1.25rem; }
.card-header strong { font-family: 'Fraunces', serif; font-weight: 500; font-size: 16px; }

/* Buttons */
.btn {
    border-radius: var(--radius-sm);
    font-weight: 600;
    padding: 0.45rem 0.95rem;
    font-size: 14px;
    border: 1px solid transparent;
    transition: background .15s, transform .05s, box-shadow .15s;
}
.btn:active { transform: translateY(1px); }
.btn-primary, .btn-success {
    background: var(--accent); border-color: var(--accent); color: #fff;
}
.btn-primary:hover, .btn-success:hover {
    background: var(--accent-dk); border-color: var(--accent-dk); color: #fff;
}
.btn-outline-primary, .btn-outline-success {
    color: var(--accent); border-color: var(--accent); background: transparent;
}
.btn-outline-primary:hover, .btn-outline-success:hover {
    background: var(--accent); color: #fff;
}
.btn-outline-secondary {
    color: var(--text); border-color: var(--border); background: var(--card);
}
.btn-outline-secondary:hover { background: var(--bg-soft); color: var(--text); border-color: var(--border); }
.btn-warning {
    background: var(--accent-2); border-color: var(--accent-2); color: #3a2e15;
}
.btn-warning:hover { background: #b89a5e; border-color: #b89a5e; color: #3a2e15; }
.btn-danger { background: var(--danger); border-color: var(--danger); }
.btn-outline-danger { color: var(--danger); border-color: var(--danger); background: transparent; }
.btn-outline-danger:hover { background: var(--danger); color: #fff; }
.btn-link { color: var(--accent); }
.btn-link:hover { color: var(--accent-dk); }
.btn-lg { font-size: 15px; padding: 0.6rem 1.4rem; border-radius: 10px; }
.btn-sm { font-size: 12.5px; padding: 0.3rem 0.7rem; }

/* Forms */
.form-control, .form-select {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text);
    padding: 0.5rem 0.8rem;
    font-size: 14px;
}
.form-control:focus, .form-select:focus {
    background: #fff;
    border-color: var(--accent);
    box-shadow: 0 0 0 .18rem rgba(90,124,74,.15);
    color: var(--text);
}
.form-label { font-weight: 500; font-size: 13px; color: var(--text); margin-bottom: 0.3rem; }
.form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }

/* Tables */
.table {
    color: var(--text);
    --bs-table-bg: transparent;
    --bs-table-hover-bg: var(--bg-soft);
    --bs-table-border-color: var(--border);
}
.table > thead { background: var(--bg-soft); }
.table > thead th {
    font-weight: 600; font-size: 12px; text-transform: uppercase;
    letter-spacing: 0.05em; color: var(--text-soft);
    border-bottom: 1px solid var(--border); padding: 0.75rem;
}
.table > :not(caption) > * > * { padding: 0.7rem 0.85rem; }

/* Badges */
.badge {
    font-weight: 600; padding: 0.35em 0.65em; font-size: 11px;
    border-radius: 999px; letter-spacing: 0.02em;
}
.badge.bg-success  { background-color: var(--accent) !important; }
.badge.bg-warning  { background-color: var(--accent-2) !important; color: #3a2e15 !important; }
.badge.bg-danger   { background-color: var(--danger) !important; }
.badge.bg-info     { background-color: var(--info) !important; }
.badge.bg-secondary{ background-color: var(--bg-soft) !important; color: var(--text-soft) !important; }
.badge.bg-light    { background-color: var(--card-2) !important; color: var(--text-soft) !important; }

/* Alerts */
.alert { border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 0.85rem 1rem; background: var(--card-2); color: var(--text); }
.alert-success { background: #eaf0e4; border-color: #c9dab8; color: #3e5a2f; }
.alert-warning { background: #f6ecd4; border-color: #e6d2a0; color: #5d4a1f; }
.alert-danger  { background: #f3dcdc; border-color: #e0b4b4; color: #7a2929; }
.alert-info    { background: #e3ebef; border-color: #bed0d9; color: #334a57; }

/* Admin sidebar */
.sidebar {
    background: var(--text);
    color: #e8e3d4;
    min-height: 100vh;
    padding: 20px 0;
}
.sidebar .brand {
    padding: 0 20px 18px;
    border-bottom: 1px solid rgba(255,255,255,.08);
    margin-bottom: 14px;
}
.sidebar .brand strong {
    font-family: 'Fraunces', serif;
    font-weight: 600;
    color: #fff;
    font-size: 17px;
}
.sidebar .brand small {
    color: #a8a396;
    font-size: 10.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    display: block;
    margin-top: 2px;
}
.sidebar a {
    display: block;
    padding: 10px 20px;
    color: #c9c4b3;
    text-decoration: none;
    font-size: 14px;
    font-weight: 500;
    border-left: 3px solid transparent;
    transition: background .12s, color .12s, border-color .12s;
}
.sidebar a:hover { background: rgba(255,255,255,.04); color: #fff; }
.sidebar a.active {
    background: rgba(90,124,74,.18);
    color: #fff;
    border-left-color: var(--accent);
}

/* Topbar */
.topbar {
    background: var(--card);
    padding: 14px 24px;
    border-bottom: 1px solid var(--border);
}
.topbar h5 {
    margin: 0;
    font-family: 'Fraunces', serif;
    font-weight: 500;
    font-size: 1.3rem;
}
.content { padding: 26px; }

/* Tabs */
.nav-tabs { border-bottom: 1px solid var(--border); }
.nav-tabs .nav-link {
    color: var(--text-soft);
    border: 0;
    border-bottom: 2px solid transparent;
    font-weight: 500;
    padding: 0.6rem 1rem;
}
.nav-tabs .nav-link:hover { color: var(--text); }
.nav-tabs .nav-link.active {
    color: var(--accent); background: transparent; border-bottom-color: var(--accent);
}

/* Public booking hero */
.hero-perch {
    background: var(--text);
    color: #f5f1e8;
    padding: 70px 0 100px;
}
.hero-perch h1 {
    font-family: 'Fraunces', serif; color: #f5f1e8;
    font-weight: 500; font-size: 3rem; letter-spacing: -0.02em; margin: 0;
}
.hero-perch p { opacity: .7; font-size: 1.05rem; }

.room-type-card {
    cursor: pointer;
    border: 2px solid var(--border);
    background: var(--card);
    transition: all .15s ease;
    border-radius: var(--radius);
}
.room-type-card.selected { border-color: var(--accent); background: #f1ede1; }
.room-type-card:hover    { border-color: var(--accent-2); }

/* Housekeeping */
.hk-card { min-height: 140px; border-radius: 12px; }
.hk-card.clean        { background: #e6eddc; border-color: #c9dab8; }
.hk-card.dirty        { background: #f6e9c7; border-color: #e6d2a0; }
.hk-card.inspected    { background: #dbe5eb; border-color: #bed0d9; }
.hk-card.out_of_order { background: #eec9c9; border-color: #dba7a7; }
.hk-actions .btn { min-width: 44px; min-height: 34px; }

/* Login */
body.login-page { background: var(--text); color: #f5f1e8; }

/* Mobile */
@media (max-width: 991px) {
    .sidebar { min-height: auto; padding: 8px 0; border-right: 0; border-bottom: 1px solid var(--border); }
    .sidebar .brand { display: none; }
    .sidebar a { display: inline-block; padding: 8px 14px; font-size: 13px; border-left: 0; border-bottom: 2px solid transparent; }
    .sidebar a.active { border-bottom-color: var(--accent); border-left: 0; }
    .content { padding: 16px; }
}

/* Print */
@media print {
    .sidebar, .topbar, .noprint, .btn { display: none !important; }
    .content { padding: 0 !important; }
    .card { box-shadow: none !important; border: 0 !important; }
    body { background: #fff !important; }
}

/* Utilities */
.text-muted { color: var(--text-soft) !important; }
.text-xs { font-size: 11px; }
hr { border-color: var(--border); opacity: 1; }
code {
    background: var(--card-2); color: var(--accent-dk);
    padding: 2px 6px; border-radius: 4px; font-size: 85%;
    font-family: 'JetBrains Mono', Menlo, monospace;
}
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-dk); text-decoration: underline; }

/* FullCalendar overrides */
.fc .fc-toolbar-title { font-family: 'Fraunces', serif; font-weight: 500; }
.fc .fc-button {
    background: var(--card); border: 1px solid var(--border); color: var(--text);
    border-radius: var(--radius-sm); box-shadow: none; font-weight: 500; text-transform: none;
}
.fc .fc-button:hover { background: var(--bg-soft); color: var(--text); }
.fc .fc-button-primary:not(:disabled).fc-button-active,
.fc .fc-button-primary:not(:disabled):active {
    background: var(--accent); border-color: var(--accent); color: #fff;
}
.fc-event {
    background: var(--accent); border-color: var(--accent);
    font-weight: 500; font-size: 12px; padding: 2px 4px;
}
.fc-daygrid-day.fc-day-today { background: rgba(201,169,106,.10) !important; }
