:root { --ink:#172421; --muted:#64736f; --paper:#f5f4ef; --card:#fff; --line:#d9ded9; --brand:#176b58; --brand-dark:#0d4c3d; --danger:#a33b37; --soft:#e6f0ec; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }
html { font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif; color:var(--ink); background:var(--paper); }
body { margin:0; min-height:100vh; }
a { color:var(--brand-dark); }
.site-header,.site-footer { max-width:1180px; margin:auto; padding:1.25rem 2rem; display:flex; align-items:center; justify-content:space-between; }
.site-header nav { display:flex; gap:1.5rem; }
.site-header nav a { text-decoration:none; font-weight:650; }
.brand { display:flex; align-items:center; gap:.65rem; color:var(--ink); text-decoration:none; font-size:1.1rem; font-weight:750; }
.brand span { display:grid; place-items:center; width:2.3rem; height:2.3rem; border-radius:.55rem; color:white; background:var(--brand); font-size:.85rem; letter-spacing:.06em; }
.page-shell { max-width:1100px; min-height:calc(100vh - 150px); margin:auto; padding:3.5rem 2rem 6rem; }
.hero { max-width:720px; margin-bottom:2.5rem; }
.hero h1,.admin-heading h1 { margin:.15rem 0 .75rem; font-family:Georgia,serif; font-size:clamp(2.5rem,6vw,4.7rem); line-height:1.03; font-weight:500; letter-spacing:-.035em; }
.hero p,.admin-heading p { color:var(--muted); font-size:1.1rem; }
.eyebrow { color:var(--brand)!important; margin:0!important; font-size:.76rem!important; font-weight:800; letter-spacing:.16em; }
.action-panel { background:var(--card); border:1px solid var(--line); border-radius:1rem; box-shadow:0 12px 30px #17352a0c; padding:1.25rem; display:flex; align-items:end; gap:1.25rem; margin-bottom:2rem; }
.find-form { flex:1; display:flex; align-items:end; gap:.75rem; }
.find-form>div { flex:1; }
.divider { color:var(--muted); padding-bottom:.8rem; }
label { display:block; font-size:.85rem; font-weight:700; margin-bottom:.4rem; }
input,select,textarea { width:100%; border:1px solid #bdc8c3; border-radius:.55rem; padding:.78rem .85rem; background:white; color:var(--ink); font:inherit; }
input[readonly],textarea[readonly],select[readonly],input:disabled,select:disabled,textarea:disabled { background:#eeeeec; border-color:#c9cfca; color:#59635f; cursor:not-allowed; opacity:1; }
input[readonly]::placeholder,textarea[readonly]::placeholder,input:disabled::placeholder,textarea:disabled::placeholder { color:#858d89; }
textarea { min-height:9rem; resize:vertical; }
input:focus,textarea:focus,select:focus { outline:3px solid #83b9aa55; border-color:var(--brand); }
.button { display:inline-flex; justify-content:center; align-items:center; min-height:2.8rem; border:1px solid var(--brand); border-radius:.55rem; padding:.72rem 1.1rem; background:var(--brand); color:white; font:inherit; font-weight:750; text-decoration:none; cursor:pointer; white-space:nowrap; }
.button:hover { background:var(--brand-dark); }
.button.secondary { background:white; color:var(--brand-dark); }
.button.danger { background:white; color:var(--danger); border-color:#d5a9a6; }
.notice { margin:1.5rem 0; padding:1rem 1.1rem; border-left:4px solid var(--brand); background:var(--soft); border-radius:.4rem; font-weight:650; }
.notice-reference { display:block; margin-top:.25rem; font-family:Georgia,serif; font-size:clamp(2.2rem,7vw,4.2rem); line-height:1; font-weight:500; color:var(--ink); }
.booking-form,.login-card { background:var(--card); border:1px solid var(--line); border-radius:1rem; padding:clamp(1.25rem,4vw,2.5rem); box-shadow:0 12px 30px #17352a0c; }
.form-heading,.admin-heading { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:1.5rem; }
.form-heading h1,.form-heading h2 { margin:.15rem 0 0; font-family:Georgia,serif; font-size:2rem; font-weight:500; }
fieldset { border:0; padding:0; margin:0 0 2.25rem; min-width:0; }
fieldset>legend { width:100%; border-bottom:1px solid var(--line); padding-bottom:.7rem; margin-bottom:1.15rem; font-family:Georgia,serif; font-size:1.35rem; }
.field-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.field-grid .wide { grid-column:span 2; }
[data-valmsg-for],.field-validation-error,.validation { display:block; color:var(--danger); font-size:.8rem; margin-top:.3rem; }
.validation ul { margin:.5rem 0 1rem; }
.service-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; margin-top:1.25rem; }
.service-card { border:1px solid var(--line); border-radius:.75rem; padding:1.25rem; display:block; }
.service-card.readonly-card { background:#f1f1ef; border-color:#cfd5d0; }
.service-card>legend { float:left; width:100%; border:0; margin:0 0 .7rem; padding:0 0 .7rem; line-height:1.1; }
.service-card>label:first-of-type { clear:both; }
.service-card label { display:flex; gap:.65rem; align-items:center; border-top:1px solid #edf0ed; padding:.8rem 0; margin:0; cursor:pointer; }
.service-card.readonly-card label { cursor:not-allowed; color:#59635f; }
.service-card.readonly-card label span { opacity:.82; }
.service-card input { width:auto; margin-top:.18rem; accent-color:var(--brand); }
.service-card span { display:grid; gap:.2rem; }
.service-card small,table small { color:var(--muted); font-weight:400; }
.form-actions { display:flex; justify-content:space-between; gap:1rem; margin-top:.5rem; }
.status { display:inline-block; padding:.35rem .65rem; border-radius:5rem; font-size:.78rem; font-weight:800; }
.status.active { color:#176142; background:#dff1e7; }.status.cancelled { color:#8a3733; background:#f6e1df; }
.site-footer { border-top:1px solid var(--line); color:var(--muted); font-size:.85rem; }
.login-card { max-width:450px; margin:4rem auto; }.login-card h1 { font-family:Georgia,serif; font-size:2.5rem; margin:.3rem 0; }.login-card form { display:grid; gap:1rem; margin-top:2rem; }
.table-wrap { overflow:auto; background:white; border:1px solid var(--line); border-radius:.8rem; }
table { width:100%; border-collapse:collapse; } th,td { text-align:left; padding:1rem; border-bottom:1px solid var(--line); vertical-align:top; } th { color:var(--muted); font-size:.75rem; letter-spacing:.05em; text-transform:uppercase; } tr:last-child td { border-bottom:0; }.empty { text-align:center; color:var(--muted); padding:3rem; }
.back-link { display:inline-block; margin-bottom:1.5rem; }.compact { margin-bottom:1rem; }.status-action { text-align:right; margin-bottom:3rem; }
.audit-section { border-top:1px solid var(--line); padding-top:2rem; }.audit-section h2 { font-family:Georgia,serif; font-weight:500; }.timeline article { position:relative; display:grid; grid-template-columns:1rem 1fr; gap:.8rem; padding-bottom:1.5rem; }.timeline article:before { content:""; position:absolute; left:.35rem; top:.7rem; bottom:-.2rem; border-left:1px solid #aac2ba; }.timeline article:last-child:before { display:none; }.timeline-dot { width:.75rem; height:.75rem; margin-top:.3rem; border-radius:50%; background:var(--brand); z-index:1; }.timeline p,.timeline time { color:var(--muted); font-size:.85rem; margin:.25rem 0; }.timeline pre { white-space:pre-wrap; background:#eaece8; border-radius:.4rem; padding:.75rem; font-size:.75rem; }
@media (max-width:760px) { .page-shell { padding:2rem 1rem 4rem; }.site-header,.site-footer { padding:1rem; }.action-panel,.find-form { align-items:stretch; flex-direction:column; }.divider { display:none; }.field-grid,.service-grid { grid-template-columns:1fr; }.field-grid .wide { grid-column:auto; }.admin-heading { align-items:flex-start; }.site-footer { gap:1rem; }.form-actions { flex-direction:column; } }
