:root{
  --bg:#f7f4ee;
  --panel:#ffffff;
  --line:#e3ddd2;
  --text:#203847;
  --muted:#687b86;
  --navy:#1f3340;
  --red:#a33f3f;
  --yellow:#f4e29f;
  --blue:#dceffc;
  --green:#e4f3e8;
  --shadow:0 10px 30px rgba(31,51,64,.08);
  --radius:18px;
}
*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}
a{text-decoration:none;color:inherit}
.shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
.sidebar{background:var(--navy);color:#fff;padding:24px;position:sticky;top:0;height:100vh;max-height:100vh;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
.brand{font-size:1.4rem;font-weight:700;margin-bottom:20px}
.sidebar nav{display:grid;gap:8px}
.sidebar a{padding:12px 14px;border-radius:12px;color:#dfe8ec}
.sidebar a.active,.sidebar a:hover{background:rgba(255,255,255,.1);color:#fff}
.main{padding:28px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}
.user-chip{background:var(--panel);border:1px solid var(--line);padding:10px 14px;border-radius:999px}
.flash{padding:14px 16px;border-radius:14px;margin-bottom:18px;border:1px solid var(--line);background:var(--green)}
.flash.error{background:#fde8e8}
.grid{display:grid;gap:18px}
.kpis{grid-template-columns:repeat(5,1fr)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.kpi{background:var(--blue)}
.kpi h3{margin:0 0 8px;font-size:.92rem;color:var(--muted)}
.kpi strong{font-size:1.6rem}
.actions{display:flex;gap:10px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:11px 14px;border-radius:12px;border:1px solid var(--line);background:#fff;cursor:pointer}
.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn.red{background:var(--red);color:#fff;border-color:var(--red)}
.btn.yellow{background:var(--yellow)}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;background:var(--panel);border-radius:16px;overflow:hidden;border:1px solid var(--line)}
th,td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{background:#f4eee3}
tr:last-child td{border-bottom:none}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.form-grid .full{grid-column:1/-1}
label{display:block;font-weight:700;margin-bottom:8px}
input,select,textarea{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:#fff}
textarea{min-height:110px;resize:vertical}
.muted{color:var(--muted);font-size:.92rem}
.status{display:inline-block;padding:6px 10px;border-radius:999px;font-size:.82rem;font-weight:700}
.status.active,.status.paid{background:#e4f3e8;color:#245b31}
.status.pending,.status.partially_paid{background:#fff2cf;color:#7c5a00}
.status.cancelled,.status.unpaid{background:#fde8e8;color:#8d2f2f}
.two-col{display:grid;grid-template-columns:2fr 1fr;gap:18px}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{width:min(460px,100%);background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:28px}
.small-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (max-width:1100px){.kpis{grid-template-columns:repeat(3,1fr)}.two-col{grid-template-columns:1fr}}
@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;max-height:none;overflow:visible}.form-grid,.small-grid,.kpis{grid-template-columns:1fr}.main{padding:18px}}


body{background:radial-gradient(circle at top left,#fcfaf5 0,#f6f1e8 45%,#eef3f7 100%)}
.brand{letter-spacing:.02em}
.glass{backdrop-filter:blur(10px)}
.topbar h1{font-size:2rem;margin:0}
.card h2{font-size:1.15rem}
.kpi{position:relative;overflow:hidden}
.kpi:before{content:'';position:absolute;inset:0 auto auto 0;width:100%;height:4px;background:linear-gradient(90deg,var(--navy),#4f7490)}
.btn{transition:.18s ease}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(31,51,64,.12)}
.btn.red:hover{box-shadow:0 8px 18px rgba(163,63,63,.18)}
.login-card{background:rgba(255,255,255,.88)}
.table-wrap table tr:hover td{background:#fcfaf6}
.calendar-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.calendar-weekday{font-weight:700;color:var(--muted);padding:6px 4px}
.calendar-day{min-height:118px;border:1px solid var(--line);border-radius:16px;background:#fff;padding:10px;display:flex;flex-direction:column;gap:6px}
.calendar-day.empty{background:transparent;border-style:dashed}
.calendar-day.occupied{border-color:#d6c7ab;background:#fffaf0}
.calendar-day-num{font-weight:700;color:var(--navy)}
.calendar-pill{padding:6px 8px;border-radius:999px;font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#e8eef2;color:#224257}
.calendar-pill.cancelled{background:#fde8e8;color:#8d2f2f}
.calendar-pill.pending{background:#fff2cf;color:#7c5a00}
.calendar-pill.active{background:#e4f3e8;color:#245b31}
.calendar-more{font-size:.78rem;color:var(--muted)}
.calc-preview strong{display:block;font-size:1.35rem;margin-top:6px;color:var(--navy)}
@media (max-width:900px){.calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-weekday{display:none}.calendar-day.empty{display:none}}


.master-shell{display:grid;grid-template-columns:2.2fr 1fr;gap:18px;align-items:start}
.summary-stack{display:grid;gap:12px}
.summary-card{background:var(--yellow)}
.summary-card.blue{background:var(--blue)}
.summary-card.red{background:#fde8e8}
.summary-card h3{margin:0 0 8px;font-size:.95rem;color:var(--muted)}
.summary-card strong{font-size:1.5rem;display:block;color:var(--navy)}
.mini-list{display:grid;gap:8px;margin-top:6px}
.mini-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid rgba(0,0,0,.08)}
.mini-row:last-child{border-bottom:none}
.row-red td{background:#fff0f0}
.row-yellow td{background:#fffbe5}
.row-cancelled td{background:#fde8e8}
.right-note{font-size:.85rem;color:var(--muted)}
@media (max-width:1100px){.master-shell{grid-template-columns:1fr}}


.excel-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.excel-year-card{border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:var(--shadow);background:#fff}
.excel-year-card.yellow{background:#fff35f}
.excel-year-card.current{box-shadow:0 10px 26px rgba(244,226,159,.35)}
.excel-year-card.red-soft{background:#fde8e8}
.excel-year{font-size:1.15rem;font-weight:700;color:#9f2e2e;margin-bottom:6px}
.excel-value{font-size:1.6rem;font-weight:800;color:var(--navy)}
.excel-note{font-size:.85rem;color:var(--muted);margin-top:4px}
.excel-master-shell{grid-template-columns:minmax(0,2.45fr) minmax(320px,1fr)}
.excel-right-stack{position:sticky;top:24px}
.excel-box{border:1px solid var(--line);border-radius:16px;padding:14px 16px;box-shadow:var(--shadow);background:#fff}
.excel-box-title{font-size:.9rem;font-weight:700;color:#5b6d78;margin-bottom:6px;text-transform:uppercase;letter-spacing:.02em}
.excel-box-value{font-size:1.35rem;font-weight:800;color:var(--navy)}
.yellow-box{background:#fff35f}
.cyan-box{background:#1eb4e7;color:#fff}
.cyan-box .excel-box-title,.cyan-box .excel-box-value{color:#fff}
.blue-box{background:#dceffc}
.white-box{background:#fff}
.master-table-wrap{border-radius:18px;border:1px solid var(--line)}
.master-table th{white-space:nowrap;position:sticky;top:0;z-index:1}
.master-table td:nth-child(8),.master-table td:nth-child(9),.master-table th:nth-child(8),.master-table th:nth-child(9){text-align:right}
.source-ledger{display:grid;gap:8px}
.source-ledger-row{display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08)}
.source-ledger-row:last-child{border-bottom:none}
.source-ledger-label{font-weight:700;color:var(--text)}
.source-ledger-amount{font-weight:800;color:var(--navy)}
.source-ledger-count{grid-column:1/-1;color:var(--muted);font-size:.82rem}
.source-ledger-card{background:linear-gradient(180deg,#ffffff 0,#fcfaf6 100%)}
.master-actions .btn{min-width:140px}
.no-print{display:block}
@media (max-width:1100px){.excel-summary{grid-template-columns:1fr}.excel-right-stack{position:static}.excel-master-shell{grid-template-columns:1fr}}
@media print{
  body{background:#fff}
  .sidebar,.topbar,.actions,.no-print{display:none !important}
  .shell{display:block}
  .main{padding:0}
  .card,.excel-box,.excel-year-card{box-shadow:none;border:1px solid #ccc}
  .excel-master-shell{display:block}
  .print-stretch{margin-bottom:16px}
  .master-table th,.master-table td{padding:8px 10px;font-size:11px}
  .master-table-wrap{overflow:visible;border:none}
  .master-table th{position:static}
}


.master-top-actions{margin-bottom:18px;gap:12px}
.master-filter-card{margin-bottom:18px;padding:18px 18px 14px;background:linear-gradient(180deg,#ffffff 0%,#fbfaf7 100%);border:1px solid rgba(33,59,74,.08)}
.master-filter-card .form-grid{align-items:end}
.master-filter-card label{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:#6c7d87;font-weight:800}
.master-filter-card input,.master-filter-card select{height:48px;border-radius:14px;background:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.9)}
.excel-summary-top{margin-bottom:20px}
.refined-master-shell{gap:18px}
.master-main-card{padding:0;overflow:hidden;border:1px solid rgba(33,59,74,.08)}
.master-hero-header{padding:22px 22px 18px;background:linear-gradient(135deg,#143246 0%,#1f4359 100%);color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}
.master-kicker{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.12);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
.master-title{margin:0;font-size:1.6rem;line-height:1.15;color:#fff}
.master-subtitle{margin-top:8px;color:rgba(255,255,255,.78);font-size:.92rem;max-width:760px}
.master-badges{display:flex;gap:10px;flex-wrap:wrap}
.master-hero-header .user-chip{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.18)}
.master-table-wrap{background:#fff;padding:0 0 8px}
.master-table thead th{background:#f4f7fa;color:#1d3a4b;font-size:.84rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #d8e0e6}
.master-table tbody td{font-size:.93rem}
.master-table tbody tr td:first-child{font-weight:700;color:#5e6b74}
.master-table tbody tr td:nth-child(2){min-width:180px}
.master-table tbody tr td:nth-child(6){min-width:180px}
.master-table tbody tr td:nth-child(12){min-width:220px;max-width:320px}
.master-table tbody tr:hover td{background:#fffdf6}
.row-red td{background:#fff4f4}
.row-yellow td{background:#fffde2}
.row-cancelled td{background:#f4f4f4;color:#7a7a7a;text-decoration:none}
.row-cancelled td:nth-child(6), .row-cancelled td:nth-child(2){text-decoration:line-through}
.excel-right-stack{display:grid;gap:14px}
.excel-box{position:relative;overflow:hidden}
.excel-box:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:rgba(20,50,70,.14)}
.yellow-box:before{background:#d0b200}
.cyan-box:before{background:rgba(255,255,255,.55)}
.blue-box:before{background:#6aa7d7}
.red-soft:before{background:#cf7070}
.white-box:before{background:#c7cfd5}
.source-ledger-card .excel-box-title{margin-bottom:12px}
.source-ledger-row{padding:10px 2px}
@media (max-width:1100px){
  .master-hero-header{padding:18px}
  .master-title{font-size:1.35rem}
}


/* v2.4 master bookings polish */
.master-table tbody tr td{border-bottom:1px solid #ecdccb}
.master-table tbody tr:last-child td{border-bottom:none}
.master-table tbody td:nth-child(10){font-weight:700}
.master-table tbody td:nth-child(12){font-size:.88rem;line-height:1.35}
.master-kicker{background:rgba(255,221,87,.18);color:#fff3b8}
.master-title{letter-spacing:.01em}
.master-main-card{background:linear-gradient(180deg,#ffffff 0%,#fffdf8 100%)}
.master-filter-card .actions{margin-top:10px}
.source-chip{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;border-radius:999px;font-size:.8rem;font-weight:800;min-width:88px;border:1px solid rgba(0,0,0,.08)}
.source-chip-booking,.source-ledger-row-booking{background:#e8f1ff}
.source-chip-airbnb,.source-ledger-row-airbnb{background:#ffe8ef}
.source-chip-e-airbnb,.source-ledger-row-e-airbnb{background:#f3e8ff}
.source-chip-i-airbnb,.source-ledger-row-i-airbnb{background:#efe8ff}
.source-chip-vrbo,.source-ledger-row-vrbo{background:#fff4df}
.source-chip-kdh,.source-ledger-row-kdh{background:#e6fbf2}
.source-chip-direct,.source-ledger-row-direct{background:#eef7e9}
.source-chip-check-in,.source-ledger-row-check-in{background:#e8fbff}
.source-chip-unknown,.source-ledger-row-unknown{background:#f1f1f1}
.source-chip-booking{color:#1f4f9a}
.source-chip-airbnb{color:#b43164}
.source-chip-e-airbnb,.source-chip-i-airbnb{color:#6f3ca6}
.source-chip-vrbo{color:#a05b00}
.source-chip-kdh{color:#0f7b52}
.source-chip-direct{color:#48712e}
.source-chip-check-in{color:#11728a}
.source-chip-unknown{color:#666}
.row-source-booking td:first-child{box-shadow:inset 4px 0 0 #6b9cff}
.row-source-airbnb td:first-child{box-shadow:inset 4px 0 0 #ff6f9b}
.row-source-e-airbnb td:first-child{box-shadow:inset 4px 0 0 #ab79ff}
.row-source-i-airbnb td:first-child{box-shadow:inset 4px 0 0 #8d63f2}
.row-source-vrbo td:first-child{box-shadow:inset 4px 0 0 #f3b352}
.row-source-kdh td:first-child{box-shadow:inset 4px 0 0 #2abf88}
.row-source-direct td:first-child{box-shadow:inset 4px 0 0 #84b75d}
.row-source-check-in td:first-child{box-shadow:inset 4px 0 0 #53c7df}
.row-cancelled td{background:#f3f3f3 !important;color:#727272}
.row-yellow td{background:#fff8d9 !important}
.excel-right-stack .excel-box-value{font-size:1.5rem}
.excel-right-stack .excel-box-title{font-size:.8rem}
.source-ledger-card{border:1px solid rgba(33,59,74,.08);border-radius:18px;box-shadow:var(--shadow)}
.source-ledger-card h2{font-size:1rem;letter-spacing:.04em;text-transform:uppercase;color:#4e616d}
.source-ledger-row{border-radius:12px;padding:10px 12px;border:1px solid rgba(0,0,0,.04)}
.source-ledger-amount{font-size:1.02rem}
@media (max-width:1100px){
  .source-chip{min-width:72px;padding:6px 8px}
}


.mobile-menu-toggle{
  display:none;
  position:fixed;
  top:14px;
  left:14px;
  z-index:1401;
  width:46px;
  height:46px;
  border:none;
  border-radius:14px;
  background:var(--navy);
  color:#fff;
  font-size:26px;
  line-height:1;
  cursor:pointer;
  box-shadow:0 10px 24px rgba(31,51,64,.22);
}

.sidebar-overlay{
  display:none;
}

@media (max-width:900px){
  body.menu-open{
    overflow:hidden;
  }

  .mobile-menu-toggle{
    display:flex;
    align-items:center;
    justify-content:center;
  }

  .shell{
    display:block;
    min-height:100vh;
  }

  .sidebar{
    position:fixed;
    top:0;
    left:0;
    width:280px;
    max-width:84vw;
    height:100vh;
    z-index:1402;
    transform:translateX(-100%);
    transition:transform .24s ease;
    overflow-y:auto;
    padding-top:76px;
    box-shadow:0 18px 38px rgba(0,0,0,.24);
  }

  .sidebar.is-open{
    transform:translateX(0);
  }

  .sidebar-overlay.is-open{
    display:block;
    position:fixed;
    inset:0;
    background:rgba(16,30,38,.42);
    z-index:1400;
  }

  .main{
    padding:18px 14px 18px;
  }

  .topbar{
    padding-left:58px;
  }

  .topbar h1{
    font-size:1.45rem;
  }
}

/* PWA / mobile app refinements */
.topbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.install-app-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 13px;border-radius:999px;border:1px solid var(--navy);background:var(--navy);color:#fff;font-weight:800;cursor:pointer;box-shadow:0 8px 18px rgba(31,51,64,.14)}
.install-app-btn[hidden]{display:none!important}
@media (display-mode:standalone){.install-app-btn{display:none!important}}

@media (max-width:900px){
  html{-webkit-text-size-adjust:100%}
  body{min-width:0;overflow-x:hidden}
  .topbar{align-items:flex-start;flex-direction:column;gap:10px;margin-bottom:14px}
  .topbar-actions{width:100%;justify-content:space-between;padding-left:58px}
  .user-chip{font-size:.88rem;padding:8px 10px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .install-app-btn{padding:9px 12px;font-size:.86rem}
  .card{padding:14px;border-radius:16px}
  .actions{gap:8px}
  .btn{width:auto;min-height:44px;padding:10px 12px;border-radius:12px}
  input,select,textarea,button{font-size:16px}
  input,select,textarea{min-height:44px;padding:10px 12px}
  .table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:16px}
  .table-wrap table{min-width:760px}
  th,td{padding:10px 11px;font-size:.9rem}
  .grid{gap:14px}
  .login-wrap{padding:16px}
  .login-card{padding:22px;border-radius:22px}
  .login-card h1{font-size:1.55rem}
}

@media (max-width:520px){
  .main{padding:14px 10px 18px}
  .mobile-menu-toggle{top:10px;left:10px;width:44px;height:44px}
  .topbar{padding-left:52px}
  .topbar h1{font-size:1.25rem;line-height:1.2}
  .topbar-actions{padding-left:52px;align-items:stretch}
  .topbar-actions .user-chip{flex:1;min-width:0}
  .actions .btn{flex:1 1 auto}
  .form-grid{gap:12px}
  .calendar-grid{grid-template-columns:1fr!important}
  .calendar-day{min-height:auto}
}
