:root{--bg:#f5f6f8;--surface:#fff;--surface-2:#f1f3f5;--text:#212529;--muted:#6c757d;--border:#dee2e6;--primary:#0d6efd;--primary-hover:#0b5ed7;--danger:#dc3545;--danger-hover:#bb2d3b;--success:#28a745;--success-hover:#218838;--warn:#ffc107;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;color:var(--text);margin:0}button{cursor:pointer;background:var(--primary);color:#fff;border:none;border-radius:.4rem;padding:.5rem 1rem;font-size:.95rem;font-weight:600;transition:background .15s}button:hover{background:var(--primary-hover)}button:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:var(--surface);border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{background:var(--danger)}.btn-danger:hover{background:var(--danger-hover)}input,select,textarea{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:.4rem;padding:.5rem .7rem;font-family:inherit;font-size:.95rem}select{width:auto}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:1px}.muted{color:var(--muted)}.center{text-align:center}.centered{place-items:center;min-height:100vh;display:grid}.alert{color:#842029;background:#f8d7da;border:1px solid #f5c2c7;border-radius:.4rem;margin:.5rem 0;padding:.7rem .9rem}.alert.success{color:#0f5132;background:#d1e7dd;border-color:#badbcc}.placeholder-screen{background:linear-gradient(180deg, #fff, var(--bg));place-items:center;min-height:100vh;padding:1.5rem;display:grid}.placeholder-card{text-align:center;flex-direction:column;gap:.75rem;display:flex}.placeholder-card h1{letter-spacing:-.02em;margin:0;font-size:2.5rem}.placeholder-cta{color:var(--primary);margin-top:.5rem;font-weight:600;text-decoration:none}.placeholder-cta:hover{text-decoration:underline}.auth-screen{background:linear-gradient(180deg, #fff, var(--bg));place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:.75rem;flex-direction:column;gap:.85rem;width:100%;max-width:380px;padding:2rem;display:flex;box-shadow:0 6px 24px #0000000f}.auth-card h1{margin:0;font-size:1.6rem}.auth-card label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.checkbox-row{align-items:center;color:var(--text)!important;flex-direction:row!important;gap:.5rem!important}.checkbox-row input{width:auto}.app{min-height:100vh}.topbar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;display:flex}.brand{flex-direction:column;line-height:1.1;display:flex}.brand-title{font-weight:700}.brand-sub{color:var(--muted);font-size:.75rem}.nav{gap:.5rem;margin-right:auto;display:flex}.nav a{color:var(--muted);border-radius:.4rem;padding:.4rem .8rem;text-decoration:none}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:var(--primary);color:#fff}.user-box{align-items:center;gap:.75rem;display:flex}.content{max-width:1140px;margin:0 auto;padding:1.5rem}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.nav-group{align-items:center;gap:.5rem;display:flex}.month-title{margin:0}.calendar-grid{grid-template-rows:auto;grid-template-columns:repeat(7,1fr);grid-auto-rows:120px;gap:4px;display:grid}.weekday{text-align:center;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:.4rem 0;font-size:.8rem;font-weight:600}.day{background:var(--surface);border:1px solid var(--border);text-align:left;height:100%;color:var(--text);border-radius:4px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px;font-weight:400;display:flex;overflow:hidden}.day.empty{cursor:default;background:0 0;border:none}.day.available{background:var(--success);color:#fff;cursor:pointer}.day.available:hover{background:var(--success-hover)}.day.reserved{background:var(--danger);color:#fff;cursor:pointer}.day.reserved:hover{background:var(--danger-hover)}.day.today{outline:3px solid var(--warn);outline-offset:-3px}.day-number{font-size:1.4rem;font-weight:700;line-height:1}.holiday{color:#fff8c5;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.72rem;font-weight:700;overflow:hidden}.resv-block{flex-direction:column;gap:1px;max-width:100%;margin-top:2px;display:flex}.resv-name{color:#fff;white-space:normal;overflow-wrap:anywhere;max-width:100%;font-size:.8rem;font-weight:600}.resv-info{color:#ffe9ec;white-space:normal;overflow-wrap:anywhere;max-width:100%;font-size:.7rem}.datepicker{position:relative}.datepicker>input{cursor:pointer}.dp-popup{z-index:100;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;width:280px;padding:.6rem;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 10px 30px #0000002e}.dp-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.dp-title{font-size:.95rem;font-weight:600}.dp-nav{color:var(--text);border:1px solid var(--border);background:0 0;padding:.2rem .6rem;font-size:1rem;line-height:1}.dp-nav:hover{background:var(--surface-2)}.dp-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.dp-weekday{text-align:center;color:var(--muted);padding:.2rem 0;font-size:.7rem;font-weight:600}.dp-day{color:var(--text);background:0 0;border:none;border-radius:.35rem;justify-content:center;align-items:center;height:34px;padding:0;font-size:.85rem;font-weight:500;display:flex}.dp-day:hover{background:var(--surface-2)}.dp-day.empty{cursor:default;background:0 0}.dp-day.today{outline:2px solid var(--warn);outline-offset:-2px}.dp-day.selected{background:var(--primary);color:#fff}.dp-day.selected:hover{background:var(--primary-hover)}.modal-backdrop{z-index:50;background:#00000080;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:.6rem;flex-direction:column;gap:.75rem;width:100%;max-width:420px;padding:1.5rem;display:flex;box-shadow:0 10px 40px #00000026}.modal h3{margin:0}.modal label,.modal .field{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.modal .field-label{color:var(--muted);font-size:.85rem}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}.holiday-note{color:#664d03;background:#fff3cd;border:1px solid #ffe69c;border-radius:.4rem;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.5rem .7rem;font-size:.85rem;display:flex}.holiday-note-label{font-weight:600}.holiday-note-item{background:var(--warn);color:#3d2c00;border-radius:999px;padding:.05rem .45rem;font-weight:600}.booking-list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.booking-list li{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;display:flex}.booking-list h4{margin:0 0 .2rem}.booking-list .info{color:var(--muted);margin:.3rem 0 0;font-size:.9rem}.price-line{flex-wrap:wrap;align-items:baseline;gap:.5rem;margin:.3rem 0 0;display:flex}.price-amount{color:var(--text);font-weight:700}.price-spec{color:var(--muted);font-size:.85rem}.bookings-total{text-align:right;margin-top:1rem;font-size:1.05rem;font-weight:700}.data-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;width:100%;margin-bottom:1.5rem;overflow:hidden}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:.65rem .75rem;font-size:.92rem}.data-table th{color:var(--muted);background:var(--surface-2);font-weight:600}.badge{border-radius:999px;padding:.15rem .55rem;font-size:.75rem;font-weight:600}.badge.ok{color:#0f5132;background:#d1e7dd}.badge.pending{color:#664d03;background:#fff3cd}h2,h3{margin-top:1.5rem}@media (width<=767px){.calendar-grid{grid-auto-rows:76px;gap:2px}.day{padding:4px}.day-number{font-size:1.1rem}.holiday{font-size:.6rem}.resv-name{font-size:.68rem}.content{padding:.75rem}}
