/* AuraEstate — clean light ERP theme. --brand comes from Organization settings. */
:root { --brand: #0284c7; --ink: #0f172a; --muted: #64748b; --line: #e2e8f0; --bg: #f1f5f9; --side: #0f172a; --side2: #1e293b; }
body { font-family: Inter, system-ui, sans-serif; background: var(--bg); color: var(--ink); font-size: .92rem; }
a { color: var(--brand); }
.text-secondary { color: var(--muted) !important; }
.btn-brand { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.btn-brand:hover, .btn-brand:focus { background: color-mix(in srgb, var(--brand) 85%, #000); border-color: transparent; color: #fff; }
.text-brand { color: var(--brand) !important; }
.bg-brand { background: var(--brand) !important; }
.brand-mark { width: 38px; height: 38px; border-radius: 10px; display: grid; place-items: center; flex: none; background: linear-gradient(135deg, var(--brand), color-mix(in srgb, var(--brand) 55%, #22d3ee)); color: #fff; font-size: 1.1rem; }
.card { border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 1px 2px rgba(15,23,42,.04); }
.card-title-sm { font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.form-control:focus, .form-select:focus { border-color: var(--brand); box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--brand) 20%, transparent); }
.form-label { font-weight: 600; font-size: .8rem; color: #334155; }
.table { --bs-table-hover-bg: #f8fafc; margin-bottom: 0; }
.table th { color: var(--muted); font-weight: 600; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; background: #f8fafc !important; }
.table td { vertical-align: middle; }
.pagination .page-item.active .page-link { background: var(--brand); border-color: var(--brand); }
.nav-tabs .nav-link.active { color: var(--brand); font-weight: 600; }
.nav-pills .nav-link.active { background: var(--brand); }

/* status pills */
.pill { display: inline-block; padding: .18rem .55rem; border-radius: 999px; font-size: .72rem; font-weight: 600; white-space: nowrap; border: 1px solid transparent; }
.pill-success { background: #dcfce7; color: #166534; } .pill-info { background: #e0f2fe; color: #075985; } .pill-warning { background: #fef3c7; color: #92400e; }
.pill-danger { background: #fee2e2; color: #991b1b; } .pill-secondary { background: #f1f5f9; color: #475569; border-color: #e2e8f0; } .pill-primary { background: #dbeafe; color: #1e40af; }
.pill-orange { background: #ffedd5; color: #9a3412; } .pill-indigo { background: #e0e7ff; color: #3730a3; } .pill-purple { background: #f3e8ff; color: #6b21a8; }
.pill-teal { background: #ccfbf1; color: #115e59; } .pill-dark { background: #1e293b; color: #fff; }

/* shell */
.app-shell { display: flex; min-height: 100vh; }
.sidebar { width: 252px; flex: none; background: var(--side) !important; /* beats .offcanvas-lg transparent */ color: #cbd5e1; display: flex; flex-direction: column; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 0; height: 100vh; } }
#sideNav { min-height: 0; overscroll-behavior: contain; } /* the menu scrolls on its own, not the page */
@media (max-width: 991.98px) { .sidebar { background: var(--side); } .content { padding-bottom: 90px !important; } }
.sidebar-head { border-bottom: 1px solid var(--side2); }
.sidebar-muted { color: #94a3b8; }
.nav-group { font-size: .66rem; text-transform: uppercase; letter-spacing: .08em; color: #64748b; padding: .9rem 1.25rem .3rem; font-weight: 700; }
.nav-item { display: flex; align-items: center; gap: .7rem; padding: .42rem 1.25rem; color: #cbd5e1; text-decoration: none; font-size: .87rem; border-left: 3px solid transparent; }
.nav-item:hover { background: var(--side2); color: #fff; }
.nav-item.active { background: color-mix(in srgb, var(--brand) 22%, var(--side)); border-left-color: var(--brand); color: #fff; font-weight: 600; }
.nav-item i { width: 18px; color: #94a3b8; } .nav-item.active i { color: #fff; }
.main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.topbar { display: flex; align-items: center; gap: .75rem; padding: .7rem 1.5rem; background: #fff; border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 10; }
.topbar h1 { min-width: 0; }
.search-box { width: 360px; }
.content { padding: 1.5rem; }
@media (max-width: 575.98px) { .content { padding: 1rem; } .topbar { padding: .6rem 1rem; } }
.bottom-nav { position: fixed; bottom: 0; left: 0; right: 0; display: flex; background: #fff; border-top: 1px solid var(--line); z-index: 20; }
.bottom-nav a { flex: 1; text-align: center; padding: .45rem 0 .55rem; font-size: .68rem; color: var(--muted); text-decoration: none; display: flex; flex-direction: column; }
.bottom-nav a i { font-size: 1.15rem; }
.avatar { width: 36px; height: 36px; flex: none; border-radius: 50%; display: inline-grid; place-items: center; background: color-mix(in srgb, var(--brand) 15%, #fff); color: var(--brand); font-weight: 700; }
.avatar.sm { width: 24px; height: 24px; font-size: .75rem; }

/* KPI */
.kpi { padding: 1rem 1.1rem; height: 100%; position: relative; }
.kpi .kpi-label, .kpi .kpi-value { padding-right: 42px; }
.kpi .kpi-label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.kpi .kpi-value { font-size: 1.55rem; font-weight: 800; line-height: 1.2; margin-top: .2rem; }
.kpi .kpi-sub { font-size: .78rem; color: var(--muted); }
.kpi .kpi-icon { position: absolute; top: 1rem; right: 1rem; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; background: color-mix(in srgb, var(--brand) 12%, #fff); color: var(--brand); }
a.kpi { color: inherit; text-decoration: none; } a.kpi:hover { background: #f8fafc; }
.bar { height: 8px; border-radius: 99px; background: #e2e8f0; overflow: hidden; display: flex; }
.bar > span { display: block; height: 100%; }
.list-row { display: flex; gap: .75rem; align-items: center; padding: .6rem 0; border-bottom: 1px solid var(--line); color: inherit; text-decoration: none; }
.list-row:last-child { border-bottom: 0; } a.list-row:hover { background: #f8fafc; }
.date-chip { width: 46px; flex: none; text-align: center; border-radius: 10px; background: color-mix(in srgb, var(--brand) 10%, #fff); font-size: .66rem; text-transform: uppercase; padding: .3rem 0; color: var(--brand); font-weight: 700; }
.date-chip span { display: block; font-size: 1.1rem; color: var(--ink); line-height: 1.1; }
.dl-grid { display: grid; grid-template-columns: max-content 1fr; gap: .35rem 1rem; font-size: .88rem; }
.dl-grid dt { color: var(--muted); font-weight: 500; } .dl-grid dd { margin: 0; font-weight: 600; min-width: 0; overflow-wrap: anywhere; }

/* visual inventory */
.legend span { display: inline-flex; align-items: center; gap: .35rem; margin-right: .9rem; font-size: .78rem; }
.legend i { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.floor-row { display: flex; align-items: stretch; gap: .5rem; margin-bottom: .5rem; }
.floor-label { width: 52px; flex: none; display: grid; place-items: center; font-size: .72rem; font-weight: 700; color: var(--muted); background: #f8fafc; border-radius: 8px; border: 1px solid var(--line); }
.floor-units { display: flex; flex-wrap: wrap; gap: .5rem; flex: 1; }
.unit-tile { width: 118px; border-radius: 10px; padding: .5rem .6rem; font-size: .74rem; border: 1px solid transparent; cursor: pointer; text-align: left; line-height: 1.3; transition: transform .1s; }
.unit-tile:hover { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(15,23,42,.12); }
.unit-tile b { font-size: .86rem; display: block; }
.u-Available { background: #dcfce7; border-color: #86efac; color: #14532d; } .u-Enquiry { background: #e0f2fe; border-color: #7dd3fc; color: #0c4a6e; }
.u-Hold { background: #fef3c7; border-color: #fcd34d; color: #78350f; } .u-Blocked { background: #e2e8f0; border-color: #94a3b8; color: #1e293b; }
.u-Negotiation { background: #ffedd5; border-color: #fdba74; color: #7c2d12; } .u-Booked { background: #dbeafe; border-color: #93c5fd; color: #1e3a8a; }
.u-Agreement { background: #e0e7ff; border-color: #a5b4fc; color: #312e81; } .u-Registered { background: #f3e8ff; border-color: #d8b4fe; color: #581c87; }
.u-Sold { background: #334155; border-color: #1e293b; color: #fff; } .u-Possession, .u-Handover { background: #ccfbf1; border-color: #5eead4; color: #134e4a; }

/* timeline */
.timeline { position: relative; padding-left: 1.4rem; }
.timeline::before { content: ''; position: absolute; left: .45rem; top: .3rem; bottom: .3rem; width: 2px; background: var(--line); }
.tl-item { position: relative; padding-bottom: 1rem; }
.tl-item::before { content: ''; position: absolute; left: -1.2rem; top: .3rem; width: 12px; height: 12px; border-radius: 50%; background: #fff; border: 3px solid var(--brand); }
.steps { display: flex; gap: .5rem; flex-wrap: wrap; }
.step { flex: 1; min-width: 160px; border: 1px solid var(--line); border-radius: 10px; padding: .6rem .8rem; background: #fff; }
.step.done { border-color: #86efac; background: #f0fdf4; } .step.current { border-color: #fcd34d; background: #fffbeb; } .step.rejected { border-color: #fca5a5; background: #fef2f2; }

.auth-bg { background: radial-gradient(800px 400px at 50% -10%, color-mix(in srgb, var(--brand) 25%, transparent), transparent 70%), var(--bg); }

/* public site */
.site-hero { background: linear-gradient(135deg, #0f172a, color-mix(in srgb, var(--brand) 55%, #0f172a)); color: #fff; }
.site-hero .lead { color: #cbd5e1; }
.public-site .project-card { overflow: hidden; }
.project-cover { height: 140px; background: linear-gradient(135deg, color-mix(in srgb, var(--brand) 80%, #0f172a), #0f172a); color: #fff; display: flex; align-items: flex-end; padding: 1rem; }

/* printables */
.print-page { background: #e2e8f0; }
.paper { max-width: 820px; background: #fff; color: #111; padding: 2.5rem; margin: 1rem auto; border-radius: 6px; box-shadow: 0 2px 10px rgba(0,0,0,.08); }
.paper h1 { font-size: 1.35rem; }
.paper .table th { background: #f8fafc !important; }
@media print {
  .no-print { display: none !important; }
  .print-page { background: #fff; } .paper { box-shadow: none; margin: 0; max-width: none; padding: 0; }
  @page { margin: 12mm; }
}

/* ---------- marketing landing page ---------- */
.landing { background: #fff; }
.landing .brand-mark.sm { width: 32px; height: 32px; font-size: .95rem; }
.lp-nav { background: #0b1220; padding: .7rem 0; }
.lp-nav .navbar-brand, .lp-nav .nav-link { color: #e2e8f0; }
.lp-nav .nav-link:hover, .lp-nav .navbar-brand:hover { color: #fff; }
.lp-nav .navbar-toggler { color: #fff; border-color: rgba(255,255,255,.25); }
.lp-hero { background: radial-gradient(900px 500px at 85% 10%, color-mix(in srgb, var(--brand) 40%, transparent), transparent 70%), linear-gradient(160deg, #0b1220 0%, #0f172a 55%, color-mix(in srgb, var(--brand) 35%, #0f172a) 100%); color: #fff; padding: 3.5rem 0 4rem; overflow: hidden; }
.lp-eyebrow { display: inline-flex; gap: .4rem; align-items: center; font-size: .8rem; font-weight: 600; color: #bae6fd; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.14); padding: .35rem .8rem; border-radius: 999px; }
.lp-title { font-size: clamp(2rem, 3.6vw, 3.1rem); font-weight: 800; line-height: 1.12; margin: 1.1rem 0 1rem; letter-spacing: -.02em; }
.text-gradient { background: linear-gradient(90deg, #7dd3fc, color-mix(in srgb, var(--brand) 40%, #a5f3fc)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.lp-lead { color: #cbd5e1; font-size: 1.08rem; }
.lp-muted { color: #94a3b8; }
.lp-checks { list-style: none; padding: 0; margin: 1.2rem 0 0; color: #e2e8f0; }
.lp-checks li { display: flex; gap: .6rem; margin-bottom: .55rem; }
.lp-checks i { color: #4ade80; }
.lp-browser { background: #1e293b; border-radius: 14px; padding: 0 0 6px; box-shadow: 0 30px 80px rgba(2,6,23,.55), 0 0 0 1px rgba(255,255,255,.08); transform: perspective(1600px) rotateY(-4deg); transition: transform .4s; }
.lp-browser:hover { transform: none; }
.lp-browser-bar { display: flex; align-items: center; gap: 6px; padding: 10px 12px; }
.lp-browser-bar > span { width: 11px; height: 11px; border-radius: 50%; background: #ef4444; } .lp-browser-bar > span:nth-child(2) { background: #f59e0b; } .lp-browser-bar > span:nth-child(3) { background: #22c55e; }
.lp-url { flex: 1; margin-left: 10px; background: #0f172a; color: #94a3b8; border-radius: 6px; font-size: .75rem; padding: 4px 10px; }
.lp-browser .carousel { margin: 0 6px; border-radius: 8px; overflow: hidden; background: #f1f5f9; }
.lp-browser .carousel-item img { height: auto; aspect-ratio: 16 / 10; object-fit: cover; object-position: top left; } /* height:auto overrides the img height attribute so the slide matches the text column */
.lp-arrow { width: 36px; height: 36px; border-radius: 50%; background: rgba(15,23,42,.65); display: grid; place-items: center; color: #fff; }
.carousel-control-prev, .carousel-control-next { width: 12%; opacity: 0; transition: opacity .2s; }
.lp-browser:hover .carousel-control-prev, .lp-browser:hover .carousel-control-next { opacity: 1; }
.lp-caption { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between; margin-top: 1.1rem; font-size: .92rem; min-height: 2.6rem; }
.lp-dots { display: flex; gap: 6px; }
.lp-dots button { width: 10px; height: 10px; border-radius: 99px; border: 0; padding: 0; background: rgba(255,255,255,.3); transition: width .25s, background .25s; }
.lp-dots button.active { width: 28px; background: var(--brand); }
.lp-stats { background: #0b1220; color: #fff; padding: 1.8rem 0; border-top: 1px solid rgba(255,255,255,.06); }
.lp-stat-n { font-size: 2rem; font-weight: 800; color: #7dd3fc; } .lp-stat-l { color: #94a3b8; font-size: .85rem; }
.lp-section { padding: 5rem 0; } .lp-alt { background: #f8fafc; }
.lp-kicker { text-transform: uppercase; letter-spacing: .12em; font-size: .75rem; font-weight: 700; color: var(--brand); }
.lp-h2 { font-weight: 800; font-size: clamp(1.6rem, 2.6vw, 2.2rem); letter-spacing: -.01em; margin-top: .4rem; }
.lp-feature, .lp-role { border: 1px solid var(--line); border-radius: 14px; padding: 1.5rem; background: #fff; transition: transform .2s, box-shadow .2s; }
.lp-feature:hover, .lp-role:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(15,23,42,.08); }
.lp-icon { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-size: 1.25rem; background: color-mix(in srgb, var(--brand) 12%, #fff); color: var(--brand); }
.lp-steps { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; position: relative; }
.lp-steps::before { content: ''; position: absolute; top: 28px; left: 10%; right: 10%; height: 2px; background: linear-gradient(90deg, var(--brand), #22c55e); opacity: .35; }
.lp-step { text-align: center; position: relative; }
.lp-step-n { width: 56px; height: 56px; border-radius: 50%; margin: 0 auto .8rem; display: grid; place-items: center; font-size: 1.3rem; color: #fff; background: var(--brand); box-shadow: 0 0 0 6px #f8fafc; }
@media (max-width: 767.98px) { .lp-steps { grid-template-columns: 1fr 1fr; } .lp-steps::before { display: none; } .lp-browser { transform: none; } .lp-hero { padding: 2.5rem 0 3rem; } }
.lp-cta { background: linear-gradient(135deg, var(--brand), color-mix(in srgb, var(--brand) 40%, #0f172a)); color: #fff; padding: 4.5rem 0; }
.lp-footer { background: #0b1220; color: #cbd5e1; padding: 1.6rem 0; }
.lp-footer a { color: #cbd5e1; text-decoration: none; } .lp-footer a:hover { color: #fff; }

/* ---------- customer & partner portals ---------- */
.portal { background: var(--bg); padding-bottom: 80px; }
.portal-top { background: #0f172a; color: #fff; position: sticky; top: 0; z-index: 20; }
.portal-muted { color: #94a3b8; }
.portal-link { color: #cbd5e1; text-decoration: none; padding: .45rem .75rem; border-radius: 8px; font-size: .88rem; }
.portal-link:hover, .portal-link.active { background: rgba(255,255,255,.1); color: #fff; }
.portal-main { max-width: 1100px; }
.portal-hero { background: linear-gradient(135deg, #0f172a, color-mix(in srgb, var(--brand) 60%, #0f172a)); color: #fff; border: 0; }
.portal-unit { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; background: rgba(255,255,255,.12); font-size: 1.5rem; }
.bottom-nav a.active { color: var(--brand); font-weight: 600; }
@media (min-width: 768px) { .portal { padding-bottom: 0; } }

/* ---------- v2: shared widgets ---------- */
.kanban { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(250px, 1fr); gap: .75rem; overflow-x: auto; padding-bottom: .5rem; }
.kanban-col { background: #e2e8f0; border-radius: 12px; padding: .6rem; min-height: 200px; }
.kanban-card { background: #fff; border-radius: 10px; padding: .6rem .7rem; margin-bottom: .5rem; box-shadow: 0 1px 2px rgba(15,23,42,.06); font-size: .82rem; }
.kanban-card a { color: inherit; text-decoration: none; }
.rag { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
.rag-success { background: #22c55e; } .rag-warning { background: #f59e0b; } .rag-danger { background: #ef4444; } .rag-info { background: #38bdf8; } .rag-secondary { background: #94a3b8; }
.bell-dot { position: absolute; top: 2px; right: 2px; min-width: 18px; height: 18px; border-radius: 9px; background: #ef4444; color: #fff; font-size: .65rem; display: grid; place-items: center; padding: 0 4px; }
.alert-row { display: flex; gap: .75rem; align-items: flex-start; padding: .65rem .8rem; border-left: 4px solid; border-radius: 8px; background: #fff; margin-bottom: .5rem; text-decoration: none; color: inherit; }
.alert-row.red { border-color: #ef4444; } .alert-row.amber { border-color: #f59e0b; } .alert-row.green { border-color: #22c55e; }
.chat-q { background: color-mix(in srgb, var(--brand) 10%, #fff); border-radius: 12px 12px 4px 12px; padding: .6rem .8rem; margin-left: auto; max-width: 85%; }
.chat-a { background: #fff; border: 1px solid var(--line); border-radius: 12px 12px 12px 4px; padding: .8rem; max-width: 100%; }

/* Mobile: turn wide tables into stacked cards (cells carry data-label). */
@media (max-width: 767.98px) {
  .table-cards thead { display: none; }
  .table-cards tr { display: block; border-bottom: 1px solid var(--line); padding: .5rem .75rem; }
  .table-cards td { display: flex; justify-content: space-between; gap: 1rem; border: 0; padding: .2rem 0; text-align: right; }
  .table-cards td::before { content: attr(data-label); color: var(--muted); font-size: .75rem; font-weight: 600; text-align: left; }
  .table-cards td.text-nowrap { justify-content: flex-end; }
  .table-cards td.text-nowrap::before { content: none; }
  .btn-sm { padding: .4rem .65rem; }
}

/* v2 polish */
.lp-title-sub { display: block; font-size: .42em; font-weight: 600; letter-spacing: 0; margin-top: .9rem; color: rgba(255,255,255,.75); }
@media (max-width: 575.98px) {
  .kpi .kpi-value { font-size: 1.25rem; white-space: nowrap; }
  .kpi .kpi-label { font-size: .66rem; }
}

/* ================= v3 phone design (matches the mobile demo; desktop unchanged) ================= */
.m-tiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: .55rem; }
.m-tile { background: #fff; border: 1px solid #e4e9f0; border-radius: 16px; padding: .7rem .25rem .6rem; display: flex; flex-direction: column; align-items: center; gap: .4rem; text-align: center; text-decoration: none; color: var(--ink, #0f172a); box-shadow: 0 4px 14px rgba(15,23,42,.05); transition: transform .12s, border-color .12s; }
.m-tile:active { transform: scale(.95); border-color: var(--brand); }
.m-tile span { width: 42px; height: 42px; border-radius: 13px; display: grid; place-items: center; font-size: 1.15rem; color: var(--brand); background: color-mix(in srgb, var(--brand) 12%, #fff); }
.m-tile span.all { background: linear-gradient(135deg, var(--brand), #38bdf8); color: #fff; }
.m-tile span.out { background: #fee2e2; color: #b91c1c; }
.m-tile b { font-size: .7rem; font-weight: 700; line-height: 1.15; }
.m-section { display: flex; align-items: center; justify-content: space-between; margin: .2rem .1rem .55rem; }
.m-section span { font-size: .78rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #64748b; }
.m-section a { font-size: .8rem; font-weight: 700; text-decoration: none; color: var(--brand); }
.m-group { margin-bottom: 1.1rem; }
.m-group-title { font-size: .74rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; color: #64748b; margin: 0 .15rem .5rem; }
.m-search { position: relative; }
.m-search i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: #94a3b8; }
.m-search input { width: 100%; border: 1px solid #e4e9f0; border-radius: 14px; padding: .7rem .9rem .7rem 2.4rem; font-size: .95rem; box-shadow: 0 4px 14px rgba(15,23,42,.04); outline: none; }
.m-search input:focus { border-color: var(--brand); }
.m-hero { position: relative; overflow: hidden; border-radius: 22px; padding: 1.1rem 1.1rem 1rem; margin-bottom: 1.1rem; color: #fff;
  background: radial-gradient(420px 260px at 100% 0%, rgba(56,189,248,.35), transparent 60%), linear-gradient(150deg, #0b1220, #0f2744 60%, #0c4a6e); box-shadow: 0 16px 34px rgba(11,18,32,.28); }
.m-hero-top { display: flex; justify-content: space-between; align-items: flex-start; }
.m-hello { font-size: .8rem; color: #9fb3cf; } .m-name { font-size: 1.35rem; font-weight: 800; letter-spacing: -.02em; }
.m-date { font-size: .72rem; font-weight: 700; color: #bae6fd; background: rgba(255,255,255,.1); padding: .3rem .6rem; border-radius: 999px; }
.m-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; margin: .95rem 0 .85rem; }
.m-stats a { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12); border-radius: 14px; padding: .55rem .6rem; color: #fff; text-decoration: none; display: flex; flex-direction: column; min-width: 0; }
.m-stats small { font-size: .66rem; color: #9fb3cf; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.m-stats b { font-size: 1.05rem; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.m-stats em { font-style: normal; font-size: .66rem; color: #7f93b0; }
.m-actions { display: flex; gap: .5rem; }
.m-actions a { flex: 1; text-align: center; font-size: .8rem; font-weight: 700; color: #fff; text-decoration: none; padding: .55rem .3rem; border-radius: 12px; background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.14); }
.m-actions a.hi { background: linear-gradient(135deg, var(--brand), #38bdf8); border: 0; box-shadow: 0 8px 18px rgba(2,132,199,.4); }

@media (max-width: 991.98px) {
  body { background: linear-gradient(180deg, #f6f9fc 0%, #eaf1f8 100%) fixed; }
  .topbar { background: rgba(11,18,32,.94); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 0; color: #fff; }
  .topbar h1 { color: #fff; font-size: 1.05rem !important; }
  .topbar .btn-light { background: rgba(255,255,255,.1); border: 0; color: #fff; }
  .topbar .btn-light .avatar { background: rgba(255,255,255,.18); color: #fff; }
  .content .card { border-radius: 16px; border-color: #e4e9f0; box-shadow: 0 4px 14px rgba(15,23,42,.05); }
  .content > .alert { font-size: .82rem; padding: .55rem 2.4rem .55rem .8rem; border-radius: 12px; }
  .content > .alert .btn-close { padding: .8rem; }
  .kpi { padding: .8rem .85rem; } .kpi .kpi-icon { display: none; } .kpi .kpi-label, .kpi .kpi-value { padding-right: 0; }
  .kpi .kpi-label { font-size: .64rem; } .kpi .kpi-value { font-size: 1.2rem !important; white-space: nowrap; } .kpi .kpi-sub { font-size: .7rem; line-height: 1.3; }
  .bottom-nav { left: 10px; right: 10px; bottom: 10px; border: 1px solid #e4e9f0; border-radius: 20px; box-shadow: 0 10px 30px rgba(15,23,42,.16); padding: .15rem .2rem calc(.15rem + env(safe-area-inset-bottom, 0px)); overflow: visible; }
  .bottom-nav a { position: relative; font-weight: 600; border-radius: 14px; }
  .bottom-nav a.active { color: var(--brand); }
  .bottom-nav a.active i { transform: translateY(-1px); }
  .bottom-nav a em { position: absolute; top: 2px; left: 54%; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: #ef4444; color: #fff; font-size: .6rem; font-style: normal; font-weight: 700; display: grid; place-items: center; }
  .bottom-nav a.bn-menu span { width: 50px; height: 50px; margin: -22px auto 2px; border-radius: 16px; display: grid; place-items: center; color: #fff; font-size: 1.3rem;
    background: linear-gradient(135deg, var(--brand), #38bdf8); box-shadow: 0 10px 20px rgba(2,132,199,.4); border: 3px solid #fff; }
  .bottom-nav a.bn-menu span i { font-size: 1.2rem; }
  .content { padding-bottom: 110px !important; }
}
@media (min-width: 576px) and (max-width: 991.98px) { .m-tiles { grid-template-columns: repeat(6, 1fr); } }

/* landing hero: balanced type scale so text and screenshot sit side by side */
.lp-hero { padding: 2.6rem 0 3rem; }
.lp-hero .row { align-items: center !important; }
.lp-title { font-size: clamp(1.75rem, 2.55vw, 2.45rem); line-height: 1.16; margin: .9rem 0 .75rem; letter-spacing: -.025em; }
.lp-title-sub { font-size: .5em; margin-top: .65rem; font-weight: 600; color: #cbd5e1; }
.lp-lead { font-size: .98rem; line-height: 1.55; margin-bottom: .2rem; }
.lp-checks { margin-top: .9rem; font-size: .9rem; }
.lp-checks li { margin-bottom: .35rem; align-items: flex-start; }
.lp-checks i { margin-top: .15rem; }
.lp-hero .btn-lg { padding: .6rem 1.1rem; font-size: 1rem; }
.lp-hero .lp-muted.small { font-size: .8rem; }
@media (min-width: 992px) { .lp-browser { margin-top: 0; } }
@media (max-width: 991.98px) { .lp-title { font-size: clamp(1.7rem, 6.4vw, 2.2rem); } }

/* ================= HR ================= */
.att { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 4px; border-radius: 6px; font-size: .7rem; font-weight: 800; }
.att-success { background: #dcfce7; color: #166534; } .att-warning { background: #fef3c7; color: #92400e; } .att-danger { background: #fee2e2; color: #991b1b; }
.att-info { background: #e0f2fe; color: #075985; } .att-primary { background: #dbeafe; color: #1e40af; } .att-orange { background: #ffedd5; color: #9a3412; }
.att-purple { background: #f3e8ff; color: #6b21a8; } .att-secondary { background: #f1f5f9; color: #64748b; }
.cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.cal-h { text-align: center; font-size: .72rem; font-weight: 700; color: #64748b; text-transform: uppercase; }
.cal-d { border: 1px solid #e4e9f0; border-radius: 10px; padding: 6px; min-height: 58px; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; background: #fff; }
.cal-d span { font-size: .78rem; font-weight: 700; color: #475569; }
.cal-d.st-off, .cal-d.st-na, .cal-d.st-none { background: #f8fafc; } .cal-d.st-holiday { background: #faf5ff; } .cal-d.st-absent, .cal-d.st-lop { background: #fff7f7; }
.att-grid th, .att-grid td { padding: .3rem .25rem !important; font-size: .78rem; white-space: nowrap; }
.att-grid th.wo { background: #f1f5f9; }
.att-grid .sticky-col { position: sticky; left: 0; background: #fff; z-index: 1; min-width: 150px; box-shadow: 1px 0 0 #e2e8f0; }
.sticky-save { position: sticky; bottom: 12px; z-index: 5; display: flex; justify-content: flex-end; }
.sticky-save .btn { box-shadow: 0 8px 20px rgba(2,132,199,.35); }
@media (max-width: 991.98px) { .sticky-save { bottom: 96px; } .cal-d { min-height: 46px; padding: 4px; } .cal { gap: 4px; } }
