/* ------------------------------------------------------------------
   public.css — shared look & feel for all public-facing pages
   (index / event view / ticket details / cancel ticket, etc.)
   Accent matched to the ticketsAy logo (cyan).
------------------------------------------------------------------ */
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap');

:root{
  --accent:#15b4ef;          /* logo cyan */
  --accent-dark:#0e97cc;
  --accent-soft:#e8f7fe;
  --ink:#0b1220;
  --text:#1f2937;
  --muted:#6b7280;
  --bg:#f4f6f8;
  --card:#ffffff;
  --border:#e5e9ef;
  --danger:#e05050;
  --danger-bg:#fde8e8;
  --success:#1e7e54;
  --success-bg:#e3f6ec;
  --radius:10px;
  --shadow:0 4px 14px rgba(11,18,32,.07);
}

*{box-sizing:border-box}

body{
  font-family:'Roboto',system-ui,-apple-system,sans-serif;
  margin:0;
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
}

a{color:var(--accent-dark);text-decoration:none}
a:hover{text-decoration:underline}

/* ---- Slim brand bar ---- */
.pub-bar{
  position:sticky;top:0;z-index:1000;
  display:flex;align-items:center;gap:14px;
  height:56px;padding:0 18px;
  background:var(--card);
  border-bottom:1px solid var(--border);
  box-shadow:0 1px 6px rgba(11,18,32,.05);
}
.pub-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:18px;color:var(--ink);white-space:nowrap}
.pub-brand:hover{text-decoration:none}
.pub-brand img{height:28px;width:auto}
.pub-brand b{color:var(--accent)}
.pub-actions{margin-left:auto;display:flex;align-items:center;gap:10px}
.pub-lang{
  appearance:none;-webkit-appearance:none;
  border:1px solid var(--border);border-radius:8px;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%236b7280' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E") no-repeat right 10px center;
  padding:6px 28px 6px 10px;font:inherit;font-size:14px;color:var(--text);cursor:pointer;
}
.pub-lang:hover{border-color:var(--accent)}
.pub-lock{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;color:var(--muted);font-size:16px}
.pub-lock:hover{background:var(--accent-soft);color:var(--accent-dark);text-decoration:none}

/* ---- Layout ---- */
.pub-container{max-width:1100px;margin:24px auto;padding:0 18px}
.pub-narrow{max-width:640px}
.pub-title{text-align:center;margin:22px 0 6px;color:var(--ink);font-weight:700}

/* NOTE: event card styling (.card-*) is intentionally left to each page's own
   inline CSS so the events grid keeps its original layout. Do not add .card-*
   rules here — they override and break the cards on index.php / view_event.php. */

/* ---- Buttons ---- */
.pub-btn,button[type=submit].pub-btn{
  display:inline-block;background:var(--accent);color:#fff;border:none;border-radius:8px;
  padding:11px 20px;font:inherit;font-weight:600;cursor:pointer;transition:background .25s ease;
}
.pub-btn:hover{background:var(--accent-dark);text-decoration:none;color:#fff}
.pub-btn.secondary{background:#eef1f5;color:var(--text)}
.pub-btn.secondary:hover{background:#e2e7ee}
.pub-btn.danger{background:var(--danger)}
.pub-btn.danger:hover{background:#c93f3f}

/* ---- Messages ---- */
.message{padding:12px 15px;border-radius:8px;margin:14px auto;max-width:640px}
.message.error{background:var(--danger-bg);color:#9b2c2c;border:1px solid #f3c2c2}
.message.success{background:var(--success-bg);color:var(--success);border:1px solid #b7e3ca}

/* ---- Footer ---- */
/* Sticky footer without touching body layout: sits at viewport bottom when
   content is short, flows normally when content is tall. */
.pub-foot{position:sticky;top:100vh;margin-top:48px;padding:22px 16px;text-align:center;background:var(--ink);color:#cbd5e1;font-size:.9em}
.pub-foot a{color:#fff;font-weight:600}
.pub-foot a:hover{color:var(--accent)}

/* Hide chrome cleanly in embed (nointerface) mode is handled server-side. */
