:root { --cream:#f4efe3; --ink:#1d2824; --muted:#666b66; --pine:#163f35; --red:#982b3d; --gold:#c99a35; --border:#dcc99c; }
* { box-sizing:border-box; }
html,body { max-width:100%; overflow-x:hidden; }
body { margin:0; background:var(--cream); color:var(--ink); font-family:Arial,Helvetica,sans-serif; font-size:16px; }
button,input,textarea { font:inherit; }
.hero { position:relative; overflow:hidden; background:var(--pine); color:#fff; }
.hero-pattern { position:absolute; inset:0; opacity:.13; background-image:radial-gradient(circle at 1px 1px,#fff 1px,transparent 1px); background-size:22px 22px; }
.hero-inner { position:relative; max-width:1120px; margin:auto; padding:40px 24px; display:flex; align-items:end; justify-content:space-between; gap:32px; }
.eyebrow { margin:0 0 12px; color:#e6c77a; text-transform:uppercase; letter-spacing:.18em; font-size:14px; font-weight:700; }
h1 { margin:0; font:52px/1.03 Georgia,serif; letter-spacing:-.025em; }
.progress-card { width:300px; padding:17px; border:1px solid #ffffff28; border-radius:16px; background:#ffffff14; }
.progress-label { display:flex; align-items:baseline; justify-content:space-between; font-size:14px; color:#ffffffbf; }
.progress-label strong { font-size:24px; color:white; }.progress-label small { color:#ffffff88; font-weight:400; }
.progress-track { height:8px; margin-top:10px; border-radius:8px; overflow:hidden; background:#0003; }.progress-track div { height:100%; border-radius:8px; background:#e4bd5e; transition:width .2s; }
.content { max-width:1120px; margin:auto; padding:28px 24px 48px; }.toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; }.toolbar p { max-width:560px; margin:0; color:var(--muted); line-height:1.55; font-size:15px; }
.print-actions { display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end; }.legend { display:flex; justify-content:flex-end; gap:18px; margin:18px 0; font-size:14px; }.legend span { display:flex; align-items:center; gap:8px; }.dot { width:12px; height:12px; border-radius:50%; }.dot.booked { background:var(--pine); }.dot.free { background:white; border:2px solid var(--gold); }
.calendar-grid { display:block; min-width:0; }.calendar-week { min-width:0; margin-top:28px; }.calendar-week:first-child { margin-top:0; }.calendar-week h2 { display:flex; align-items:baseline; gap:12px; margin:0 0 11px; padding-bottom:8px; border-bottom:1px solid #d9cfbb; font:22px Georgia,serif; }.calendar-week h2 span { color:var(--pine); }.calendar-week h2 small { color:var(--muted); font:600 13px Arial,Helvetica,sans-serif; letter-spacing:.03em; }.week-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:10px; min-width:0; }.day-placeholder { display:block; }
.day-card { min-width:0; max-width:100%; min-height:160px; overflow:hidden; padding:16px; border:1px solid var(--border); border-radius:16px; background:#fff; color:var(--ink); text-align:left; cursor:pointer; box-shadow:0 2px 5px #2a21100c; transition:transform .15s,box-shadow .15s; }.day-card:hover { transform:translateY(-2px); box-shadow:0 8px 18px #2a211018; }.day-card:focus-visible { outline:4px solid #c99a3566; }
.card-top { display:flex; justify-content:space-between; align-items:start; gap:6px; }.card-top span { display:flex; min-width:0; flex-direction:column; }.card-top b { color:var(--red); font-size:12px; text-transform:uppercase; letter-spacing:.16em; }.card-top em { margin-top:4px; font:normal 38px/1 Georgia,serif; }.card-top i { display:grid; place-items:center; flex:0 0 34px; width:34px; height:34px; border-radius:50%; background:var(--cream); color:var(--red); font-style:normal; font-size:20px; }.day-card>strong { display:block; margin-top:22px; overflow-wrap:anywhere; color:var(--red); font-size:16px; line-height:1.25; }.day-card>small { display:block; margin-top:7px; overflow:hidden; overflow-wrap:anywhere; color:var(--muted); line-height:1.35; }
.day-card.is-booked { background:var(--pine); border-color:var(--pine); color:#fff; }.day-card.is-booked .card-top b { color:#e8cc84; }.day-card.is-booked .card-top i { background:#ffffff1e; color:#fff; }.day-card.is-booked>strong { color:#fff; }.day-card.is-booked>small { color:#ffffffb8; }
.day-card.is-sunday:not(.is-booked) { border-color:#d8a4ab; background:#fff5f3; box-shadow:inset 0 4px 0 #b44958,0 2px 5px #2a21100c; }.day-card.is-sunday:not(.is-booked) .card-top b,.day-card.is-sunday:not(.is-booked)>strong { color:#8f2637; }.day-card.is-booked.is-sunday { border-color:#742735; background:#742735; box-shadow:inset 0 4px 0 #e4bd5e,0 2px 5px #2a21100c; }
.button { border:0; border-radius:10px; padding:10px 14px; cursor:pointer; font-weight:700; font-size:14px; }.button-secondary { border:1px solid #cbbd9e; background:#fff; color:var(--ink); }.button-secondary:hover { background:#fffaf0; }.button-primary { background:var(--red); color:#fff; }.button-danger { background:transparent; color:#a51f2e; }.button:disabled { opacity:.55; cursor:wait; }
.message,.form-error { padding:12px 14px; border:1px solid #e8aab1; border-radius:10px; background:#fff1f2; color:#8f1726; }.message { margin-bottom:16px; }
dialog { width:min(520px,calc(100% - 24px)); max-height:92vh; padding:0; border:0; border-radius:18px; background:#fffdf8; color:var(--ink); box-shadow:0 24px 80px #0005; }dialog::backdrop { background:#102820aa; backdrop-filter:blur(3px); }dialog form { padding:24px; overflow:auto; }dialog label { display:block; margin-top:17px; font-weight:700; font-size:14px; }dialog input,dialog textarea { width:100%; margin-top:7px; padding:11px 12px; border:1px solid #cfc5b4; border-radius:9px; background:#fff; color:var(--ink); font-weight:400; }dialog input:focus,dialog textarea:focus { outline:3px solid #c99a3544; border-color:var(--gold); }
.dialog-head { display:flex; align-items:center; gap:14px; }.day-badge { display:grid; place-items:center; flex:0 0 48px; height:48px; border-radius:50%; background:var(--pine); color:#fff; font:20px Georgia,serif; }.dialog-head h2 { margin:0; font:30px Georgia,serif; }.dialog-head p { margin:4px 0 0; color:var(--muted); font-size:14px; }.close-button { margin-left:auto; align-self:start; border:0; background:transparent; cursor:pointer; font-size:28px; color:#555; }.dialog-actions { display:flex; justify-content:space-between; gap:12px; margin-top:22px; }.form-error { margin:16px 0 0; font-size:14px; }
#print-sheet { display:none; }
@media (max-width:980px) { .week-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }.day-placeholder { display:none; }.toolbar { align-items:flex-start; flex-direction:column; }.print-actions { justify-content:flex-start; }.legend { justify-content:flex-start; } }
@media (max-width:620px) { .hero-inner { align-items:stretch; flex-direction:column; padding:32px 18px; }h1 { max-width:100%; font-size:clamp(36px,11.5vw,46px); overflow-wrap:anywhere; }.progress-card { width:100%; }.content { width:100%; padding:22px 14px 36px; }.week-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }.calendar-week h2 { align-items:flex-start; flex-direction:column; gap:3px; }.day-card { min-height:150px; padding:14px; }.print-actions { display:grid; width:100%; }.dialog-actions { flex-direction:column-reverse; }.dialog-actions .button { width:100%; } }
@media (max-width:350px) { .week-grid { grid-template-columns:1fr; }.day-card { min-height:138px; } }

@media print {
  @page { size:A4 landscape; margin:9mm; }
  body { background:#fff; color:#111; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  body>*:not(#print-sheet) { display:none!important; }
  #print-sheet { display:block; font:9pt/1.2 Arial,sans-serif; }
  .print-header { display:flex; justify-content:space-between; align-items:end; padding-bottom:3mm; border-bottom:2px solid #163f35; }.print-header p { margin:0 0 1mm; color:#982b3d; font-weight:700; text-transform:uppercase; letter-spacing:.12em; }.print-header h2 { margin:0; font:20pt Georgia,serif; }.print-header>span { color:#555; }
  #print-sheet table { width:100%; margin-top:3mm; border-collapse:collapse; table-layout:fixed; }#print-sheet th { padding:2mm; background:#163f35; color:white; text-align:left; }#print-sheet td { height:7.2mm; padding:1.2mm 2mm; border-bottom:1px solid #d8d3c9; vertical-align:middle; overflow-wrap:anywhere; }#print-sheet tbody tr:nth-child(even) { background:#f4efe3; }
  body[data-print-mode="internal"] #print-sheet th:nth-child(1),body[data-print-mode="internal"] #print-sheet td:nth-child(1) { width:14%; }body[data-print-mode="internal"] #print-sheet th:nth-child(2),body[data-print-mode="internal"] #print-sheet td:nth-child(2) { width:20%; }body[data-print-mode="internal"] #print-sheet th:nth-child(3),body[data-print-mode="internal"] #print-sheet td:nth-child(3) { width:22%; }body[data-print-mode="internal"] #print-sheet th:nth-child(4),body[data-print-mode="internal"] #print-sheet td:nth-child(4) { width:15%; }
  body[data-print-mode="public"] #print-sheet { max-width:240mm; margin:auto; font-size:12pt; }body[data-print-mode="public"] #print-sheet td { height:13mm; }body[data-print-mode="public"] #print-sheet th:nth-child(odd),body[data-print-mode="public"] #print-sheet td:nth-child(odd) { width:30%; }body[data-print-mode="public"] #print-sheet th:nth-child(even),body[data-print-mode="public"] #print-sheet td:nth-child(even) { width:20%; }
  .status-free { color:#17623d; font-weight:800; }.status-booked { color:#777; font-weight:700; }.print-footer { margin-top:3mm; color:#777; text-align:right; font-size:8pt; }
}
