:root{--ink: #1f2933;--muted: #52606d;--line: #cbd2d9;--card: #ffffff;--bg: #f5f7fa;--accent: #0b6e4f;--accent-ink: #ffffff;--danger: #b42318;--ok-bg: #e3f6ec;--ok-ink: #0b6e4f}*{box-sizing:border-box}body{margin:0;font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,system-ui,-apple-system,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}.page{max-width:960px;margin:0 auto;padding:32px 24px 48px}.brand{text-align:center;margin-bottom:24px}.brand h1{margin:0;font-size:28px;letter-spacing:.5px}.brand .tagline{margin:6px 0 0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:24px;max-width:560px;margin:0 auto}.field{margin-bottom:16px}.field label{display:block;font-weight:600;margin-bottom:4px}.field input,.field textarea{width:100%;padding:8px 10px;font:inherit;border:1px solid var(--line);border-radius:6px;background:#fff}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:var(--danger)}.field-error{margin:4px 0 0;color:var(--danger);font-size:14px}.banner-error{background:#fde8e6;border:1px solid var(--danger);color:var(--danger);border-radius:6px;padding:8px 12px;margin-bottom:16px}button.primary{display:block;width:100%;padding:10px 16px;font:inherit;font-weight:600;color:var(--accent-ink);background:var(--accent);border:none;border-radius:6px;cursor:pointer}button.primary:hover{filter:brightness(1.08)}button.primary:disabled{opacity:.6;cursor:default}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(360deg)}}.site-footer{margin-top:32px;text-align:center;font-size:13px}.site-footer a{color:var(--muted)}.confirmation{text-align:center}.confirmation .check{width:56px;height:56px;margin:0 auto 8px;border-radius:50%;background:var(--ok-bg);color:var(--ok-ink);font-size:30px;line-height:56px}.confirmation-title{margin:0 0 16px}.echo{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;text-align:left;margin:0 auto 16px;max-width:420px}.echo dt{color:var(--muted)}.echo dd{margin:0;word-break:break-word}.reassurance{color:var(--muted);margin-bottom:20px}.signin h2{margin:0 0 16px;text-align:center}.admin{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:24px}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.admin-header h2{margin:0}.table-wrap{overflow-x:auto}table.bookings{width:100%;border-collapse:collapse;font-size:14px}table.bookings th,table.bookings td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}table.bookings th{color:var(--muted);white-space:nowrap}.cell-problem{max-width:320px;word-break:break-word}.badge{display:inline-block;padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:#eef1f4;color:var(--muted);white-space:nowrap}.badge-ok{background:var(--ok-bg);border-color:var(--ok-ink);color:var(--ok-ink)}button.mark-button{font:inherit;padding:4px 12px;border:1px solid var(--accent);border-radius:6px;background:#fff;color:var(--accent);cursor:pointer;white-space:nowrap}button.mark-button:disabled,button.link-button:disabled{opacity:.5;cursor:default}button.link-button{font:inherit;border:none;background:none;color:var(--muted);text-decoration:underline;cursor:pointer;padding:4px 6px}.empty,.loading{color:var(--muted);text-align:center;padding:24px 0}.toast-error{background:#fde8e6;border:1px solid var(--danger);color:var(--danger);border-radius:6px;padding:8px 12px;margin-bottom:12px}@media(max-width:640px){.page{padding:16px 12px 32px}.card,.admin{padding:16px}.echo{grid-template-columns:1fr}.cell-problem{max-width:200px}}
