:root{--bg:#f7f5f2;--card:#ffffff;--ink:#18212f;--muted:#607086;--line:#d9dee7;--brand:#6775b4;--brand-soft:#eef1ff;--danger:#b74d4d;--success:#2f7a55;--warning:#af7a12}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.container{width:min(1180px,calc(100% - 32px));margin:0 auto}.page{padding:32px 0 56px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 26px rgba(24,33,47,.06)}.card-pad{padding:20px}.grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:860px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.label{display:block;font-size:14px;color:var(--muted);margin-bottom:6px}.input,.select,.textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px 14px}.textarea{min-height:110px;resize:vertical}.btn{border:0;border-radius:12px;background:var(--brand);color:#fff;padding:12px 16px;cursor:pointer;font-weight:700}.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.ghost{background:transparent;color:var(--brand)}.heading-xl{font-size:clamp(30px,5vw,48px);line-height:1.05;margin:0 0 10px}.heading-lg{font-size:28px;margin:0 0 8px}.heading-md{font-size:20px;margin:0 0 6px}.text-muted{color:var(--muted)}.stat{padding:18px}.stat h3{margin:0;font-size:14px;color:var(--muted);font-weight:600}.stat p{margin:8px 0 0;font-size:28px}.badge,.stat p{font-weight:700}.badge{display:inline-flex;gap:6px;align-items:center;border-radius:999px;padding:6px 10px;font-size:12px}.badge.confirmed{background:#eaf8f0;color:var(--success)}.badge.hold{background:#fff6e8;color:var(--warning)}.badge.cancelled{background:#fdeeee;color:var(--danger)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}td,th{padding:12px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}.hero{padding:34px;background:linear-gradient(120deg,#ffffff,#eef1ff)}.nav{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}.nav a{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.section-gap{margin-top:18px}.room-card{display:grid;grid-template-columns:280px 1fr;grid-gap:18px;gap:18px;overflow:hidden}.room-card img{width:100%;height:100%;object-fit:cover}@media (max-width:800px){.room-card{grid-template-columns:1fr}}.calendar-shell{overflow:auto}.calendar-grid{min-width:1060px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff}.calendar-header,.calendar-row{display:grid;grid-template-columns:220px repeat(14,1fr)}.calendar-header>div,.calendar-row>div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:66px;padding:8px}.calendar-room{position:-webkit-sticky;position:sticky;left:0;background:#fff;z-index:2}.calendar-date{font-size:12px;color:var(--muted)}.calendar-dropzone{position:relative;height:100%}.booking-chip{position:absolute;left:4px;right:4px;top:8px;bottom:8px;border-radius:12px;padding:8px;font-size:12px;overflow:hidden;cursor:-webkit-grab;cursor:grab;background:#edf0ff;border:1px solid #cbd3ff}.booking-chip.confirmed{background:#edf7ef;border-color:#c9e9d1}.booking-chip.hold{background:#fff4df;border-color:#f1deaf}.booking-chip.cancelled{background:#fdeeee;border-color:#f5d0d0}.sidebar{width:260px}.admin-shell{display:grid;grid-template-columns:260px 1fr;grid-gap:20px;gap:20px}@media (max-width:920px){.admin-shell{grid-template-columns:1fr}}.small{font-size:12px}.inline{display:flex;gap:10px;align-items:center;flex-wrap:wrap}