:root { --navy:#0c2d48; --ink:#163247; --muted:#667b87; --teal:#147c7d; }
* { box-sizing:border-box; }
html { min-width:320px; background:#10384e; }
body { margin:0; color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
button,input,select { font:inherit; }

.page-shell {
  min-height:100svh; padding:clamp(16px,4vw,52px) 12px; display:grid; place-items:start center;
  background:linear-gradient(rgba(5,31,48,.28),rgba(5,31,48,.58)),url("/background.jpg") center/cover fixed;
}
.registration-card {
  width:min(100%,760px); padding:clamp(24px,5vw,46px); border:1px solid rgba(255,255,255,.65);
  border-radius:32px; background:rgba(248,248,244,.9); box-shadow:0 28px 80px rgba(4,26,40,.32);
  backdrop-filter:blur(22px) saturate(115%); -webkit-backdrop-filter:blur(22px) saturate(115%);
}
.card-header { text-align:center; margin:0 auto 30px; }
.ferry-icon { width:62px;height:62px;margin:0 auto 15px;display:grid;place-items:center;border-radius:20px;background:var(--navy);color:#fff;font-size:32px;box-shadow:0 12px 25px rgba(12,45,72,.22); }
.eyebrow { margin:0 0 8px;color:#356078;font-size:12px;font-weight:750;letter-spacing:.16em;text-transform:uppercase; }
h1 { margin:0;color:var(--navy);font-family:Georgia,"Times New Roman",serif;font-size:clamp(34px,7vw,52px);line-height:1.05;letter-spacing:-.035em; }
.subtitle { margin:13px 0 0;color:var(--muted);font-size:17px; }
.booking-form { display:grid;gap:20px;padding:clamp(18px,4vw,30px);border:1px solid rgba(12,45,72,.1);border-radius:24px;background:rgba(255,255,255,.82);box-shadow:0 12px 34px rgba(12,45,72,.08); }
.field-grid { display:grid;gap:18px; }
.two-columns { grid-template-columns:repeat(2,minmax(0,1fr)); }
label { display:grid;gap:8px;color:var(--navy);font-weight:700;font-size:14px; }
input,select { width:100%;min-height:50px;padding:12px 14px;border:1px solid #cbd7dc;border-radius:13px;background:#fff;color:var(--ink);outline:none;font-weight:400; }
input:focus,select:focus { border-color:var(--teal);box-shadow:0 0 0 3px rgba(20,124,125,.14); }
small { color:var(--muted);font-weight:400;line-height:1.4; }
.primary-button { width:100%;min-height:52px;border:0;border-radius:14px;background:var(--navy);color:#fff;font-weight:750;cursor:pointer;box-shadow:0 10px 22px rgba(12,45,72,.18); }
.primary-button:hover { background:#123e5e; }
.primary-button:disabled { opacity:.65;cursor:wait; }
.privacy-note { margin:-7px 0 0;text-align:center;color:#7a8c95;font-size:12px; }
.form-error { margin:0;padding:12px 14px;border-radius:12px;background:#fbe8e5;color:#912f26;font-size:14px; }
.result-panel { padding:clamp(25px,5vw,42px);text-align:center;border-radius:24px;background:#fff;box-shadow:0 12px 34px rgba(12,45,72,.1); }
.result-icon { width:66px;height:66px;margin:0 auto 17px;display:grid;place-items:center;border-radius:50%;font-size:34px;font-weight:800; }
.confirmed .result-icon { color:#176c49;background:#ddf1e7; }
.waiting .result-icon { color:#8b6500;background:#fff0c9; }
.full .result-icon { color:#9b392e;background:#f9e1de; }
.result-panel h2 { margin:0;color:var(--navy);font-size:27px; }
.result-message { margin:9px auto 23px;max-width:480px;color:var(--muted);line-height:1.55; }
.booking-summary { margin:0 0 22px;padding:18px;border-radius:16px;background:#f1f6f6;text-align:left; }
.booking-summary div { display:grid;grid-template-columns:1fr auto;gap:14px;padding:8px 0; }
.booking-summary dt { color:var(--muted); }
.booking-summary dd { margin:0;text-align:right;color:var(--ink);font-weight:750; }

@media (max-width:600px) {
  .page-shell { padding:9px 7px 22px; }
  .registration-card { padding:22px 10px 16px;border-radius:25px; }
  .card-header { padding:0 10px;margin-bottom:23px; }
  .two-columns { grid-template-columns:1fr; }
  .booking-form { padding:17px 13px;border-radius:20px; }
  .booking-summary div { grid-template-columns:1fr;gap:3px; }
  .booking-summary dd { text-align:left; }
}

.admin-shell { min-height:100svh;padding:clamp(20px,4vw,48px);background:#eef3f3;color:var(--ink); }
.admin-header { max-width:1280px;margin:0 auto 25px;display:flex;align-items:end;justify-content:space-between;gap:20px; }
.admin-header h1 { font-size:clamp(34px,5vw,48px); }
.admin-header p:last-child { margin:10px 0 0;color:var(--muted); }
.admin-actions { display:flex;flex-wrap:wrap;gap:10px; }
.secondary-button,.primary-link { min-height:44px;padding:11px 15px;border-radius:12px;text-decoration:none;font-weight:700;display:inline-flex;align-items:center; }
.secondary-button { color:var(--navy);border:1px solid #c4d1d7;background:#fff; }
.primary-link { color:#fff;background:var(--navy); }
.admin-stats { max-width:1280px;margin:0 auto 22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px; }
.admin-stats article { padding:18px 20px;border:1px solid #d4dfe2;border-radius:16px;background:#fff; }
.admin-stats span { display:block;color:var(--muted);font-size:13px; }
.admin-stats strong { display:block;margin-top:7px;color:var(--navy);font-size:30px; }
.admin-content { max-width:1280px;margin:auto;padding:20px;border:1px solid #d4dfe2;border-radius:19px;background:#fff; }
.filter-row { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:20px; }
.booking-table-wrap { overflow-x:auto; }
.booking-table { width:100%;border-collapse:collapse;font-size:14px; }
.booking-table th { padding:12px;text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid #d9e2e5; }
.booking-table td { padding:14px 12px;border-bottom:1px solid #e5ebed;vertical-align:middle; }
.booking-table td small { display:block;margin-top:4px;color:var(--muted); }
.status-chip { display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:750;text-transform:capitalize; }
.status-chip.confirmed { color:#176c49;background:#ddf1e7; }.status-chip.waiting { color:#8b6500;background:#fff0c9; }.status-chip.cancelled { color:#7a4e49;background:#efe4e2; }
.cancel-button { border:0;background:transparent;color:#9b392e;font-weight:700;cursor:pointer; }
.empty-state { padding:40px;text-align:center;color:var(--muted); }
@media(max-width:760px){.admin-header{align-items:start;flex-direction:column}.admin-stats,.filter-row{grid-template-columns:1fr}.admin-shell{padding:18px 10px}.admin-content{padding:14px}}

.hidden { display:none !important; }
.login-card { width:min(100%,460px);margin:10vh auto;padding:32px;border-radius:24px;background:#fff;box-shadow:0 20px 55px rgba(4,26,40,.18); }
.login-card h1 { font-size:38px;margin-bottom:10px; }
.login-card p { color:var(--muted);line-height:1.5; }
.login-card form { display:grid;gap:16px;margin-top:22px; }
.section-note { margin-top:-4px;color:var(--muted); }
.user-form { display:grid;grid-template-columns:1.2fr 1.4fr 1fr auto;gap:12px;align-items:end;margin:20px 0; }
.user-form .primary-button { min-width:170px; }
.temporary-password { margin:16px 0;padding:16px;border:1px solid #e0c77c;border-radius:14px;background:#fff7da;color:#5e4800; }
.temporary-password code { display:block;margin:8px 0;font-size:17px;font-weight:800;word-break:break-all; }
.role-description { display:block;margin-top:4px;color:var(--muted);font-size:12px; }
.user-actions { display:flex;flex-wrap:wrap;gap:8px; }
.small-button { border:1px solid #c4d1d7;border-radius:9px;background:#fff;color:var(--navy);padding:7px 9px;font-weight:700;cursor:pointer; }
.small-button.danger { color:#9b392e; }
.archive-card { display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 0;border-bottom:1px solid #e5ebed; }
.archive-card:first-of-type { margin-top:14px; }
.archive-card strong { display:block;color:var(--navy);font-size:24px; }
.archive-card span { display:block;margin-top:5px;color:var(--muted);font-size:13px; }
.archive-actions { display:flex;flex-wrap:wrap;gap:9px;align-items:center; }
@media(max-width:900px){.user-form{grid-template-columns:1fr 1fr}.user-form .primary-button{min-width:0}}
@media(max-width:600px){.user-form{grid-template-columns:1fr}.archive-card{align-items:flex-start;flex-direction:column}.archive-actions{width:100%}.archive-actions>*{width:100%;justify-content:center}}
