:root{
  --bg:#fff; --fg:#0b0b0b; --muted:#6b7280;
  --card:#fff; --border:rgba(15,23,42,.12);
  --shadow:0 10px 24px rgba(2,6,23,.08);
  --radius:16px;
}
*{ box-sizing:border-box; }
body{ margin:0; font-family:system-ui, -apple-system, Segoe UI, Roboto, Arial; background:var(--bg); color:var(--fg); }
.topbar{ position:sticky; top:0; z-index:99; display:flex; justify-content:space-between; align-items:center; padding:14px 18px; background:#fff; border-bottom:1px solid var(--border); }
.brand-title{ font-weight:900; font-size:22px; }
.brand-sub{ font-weight:800; font-size:13px; margin-top:2px; }
.brand-mini{ font-size:12px; color:var(--muted); margin-top:4px; }
.icon-btn{ text-decoration:none; border:0; background:transparent; cursor:pointer; font-size:20px; padding:10px 12px; border-radius:12px; }
.icon-btn:hover{ background:rgba(15,23,42,.06); }
.container{ max-width:1200px; margin:0 auto; padding:22px 18px 40px; }
.page-title{ margin:16px 0 18px; font-size:40px; letter-spacing:-.02em; }
.layout-3{ display:grid; grid-template-columns:320px 1fr 360px; gap:18px; align-items:start; }
@media (max-width:1100px){ .layout-3{ grid-template-columns:1fr; } .page-title{ font-size:32px; } }
.card{ background:var(--card); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); padding:16px; }
.card-title{ font-weight:900; margin:0 0 10px; }
.lbl{ display:block; font-size:12px; color:var(--muted); margin:10px 0 6px; }
.in{ width:100%; padding:10px 12px; border-radius:12px; border:1px solid var(--border); outline:none; font-size:14px; }
.in:focus{ border-color:rgba(2,132,199,.45); box-shadow:0 0 0 4px rgba(2,132,199,.12); }
.sep{ border:none; border-top:1px solid var(--border); margin:14px 0; }
.btn{ width:100%; margin-top:12px; padding:11px 14px; border-radius:12px; border:1px solid rgba(2,6,23,.15); background:#0b0b0b; color:#fff; font-weight:800; cursor:pointer; }
.btn.ghost{ background:#fff; color:#0b0b0b; }
.msg{ margin-top:10px; font-size:13px; }
.selected-box{ margin-top:12px; padding:10px 12px; border-radius:12px; border:1px dashed rgba(2,6,23,.18); background:rgba(2,6,23,.02); }
.selected-title{ font-size:12px; color:var(--muted); margin-bottom:6px; }
.locandine-grid{ display:grid; grid-template-columns:1fr; gap:10px; }
.locandina{ border:1px solid var(--border); border-radius:14px; overflow:hidden; cursor:pointer; background:#fff; }
.locandina img{ width:100%; height:240px; object-fit:cover; display:block; }
.locandina .cap{ padding:10px; font-weight:800; font-size:13px; }

/* SEATMAP */
.seatmap{ display:flex; justify-content:center; padding:10px 0; min-height:520px; }
.coach{ width:100%; max-width:420px; border:1px solid rgba(15,23,42,.14); border-radius:18px; padding:12px; background:#fff; }
.coach-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; font-size:12px; color:var(--muted); }
.grid{ display:grid; grid-auto-rows:36px; gap:8px; }
.gt-2x2-door .grid{ grid-template-columns:1fr 1fr 22px 1fr 1fr 44px; }
.aisle{ width:22px; }
.cell{ display:flex; align-items:center; justify-content:center; border-radius:10px; border:1px dashed rgba(15,23,42,.18); font-size:11px; color:var(--muted); background:rgba(2,6,23,.01); }
.blank{ border:none; background:transparent; }
.seat{ display:flex; align-items:center; justify-content:center; border-radius:10px; border:1px solid rgba(15,23,42,.18); font-weight:900; font-size:12px; cursor:pointer; background:rgba(2,6,23,.02); }
.seat:hover{ background:rgba(2,6,23,.06); }
.seat.selected{ outline:3px solid rgba(2,132,199,.35); background:rgba(2,132,199,.12); }
.seat.occupied{ background:rgba(220,38,38,.12); border-color:rgba(220,38,38,.35); cursor:not-allowed; opacity:.9; }
.legend{ display:flex; gap:10px; margin-top:10px; font-size:12px; color:var(--muted); flex-wrap:wrap; }
.dot{ width:12px; height:12px; border-radius:4px; display:inline-block; margin-right:6px; border:1px solid rgba(15,23,42,.18); background:rgba(2,6,23,.02); }
.dot.sel{ background:rgba(2,132,199,.12); outline:3px solid rgba(2,132,199,.25); border-color:rgba(2,132,199,.2); }
.dot.occ{ background:rgba(220,38,38,.12); border-color:rgba(220,38,38,.35); }
