/* Kwiki base: reset, tokens, buttons, feedback. Venue colours arrive as --primary/--secondary/--accent. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;font-family:Poppins,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);line-height:1.45;-webkit-font-smoothing:antialiased}
:root{
  --ink:#141414;--ink-2:#4b4b4b;--muted:#7a7a7a;--line:#ececec;--bg:#f6f5f2;--card:#fff;
  --yellow:#F5B800;--success:#15803d;--warn:#b45309;--danger:#b91c1c;--info:#1d4ed8;
  --radius:18px;--radius-sm:12px;--shadow:0 6px 24px rgba(0,0,0,.08);--shadow-lg:0 16px 48px rgba(0,0,0,.18);
  --safe-b:env(safe-area-inset-bottom,0px);
}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:3px solid var(--secondary,#F5B800);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--muted)}
.small{font-size:.85rem}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;padding:.7rem 1.3rem;border-radius:999px;border:0;font-weight:600;text-decoration:none;transition:transform .12s ease,opacity .2s}
.btn:active{transform:scale(.98)}
.btn[disabled],.btn.is-busy{opacity:.55;pointer-events:none}
.btn-block{width:100%}
.btn-yellow{background:var(--yellow);color:#111}
.btn-primary{background:var(--primary);color:var(--on-primary)}
.btn-accent{background:var(--accent);color:#fff}
.btn-outline{background:transparent;border:2px solid currentColor}
.btn-ghost{background:transparent;color:var(--ink-2)}
.btn-danger{background:var(--danger);color:#fff}
.btn-sm{min-height:36px;padding:.35rem .9rem;font-size:.85rem}

.spinner{width:36px;height:36px;border-radius:50%;border:4px solid rgba(0,0,0,.1);border-top-color:var(--secondary,#F5B800);animation:spin .8s linear infinite;margin:0 auto}
@keyframes spin{to{transform:rotate(360deg)}}

.toast{position:fixed;left:50%;bottom:calc(96px + var(--safe-b));transform:translateX(-50%);background:#111;color:#fff;padding:.75rem 1.1rem;border-radius:14px;box-shadow:var(--shadow-lg);z-index:1000;max-width:min(92vw,440px);font-size:.92rem;animation:toastIn .25s ease}
.toast.error{background:var(--danger)}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,10px)}}
.offline{position:fixed;top:0;left:0;right:0;background:#7c2d12;color:#fff;font-size:.85rem;text-align:center;padding:.45rem 1rem;z-index:1100}

.form-error{color:var(--danger);font-size:.9rem;margin:.25rem 0}
label{display:block;font-size:.85rem;font-weight:500;color:var(--ink-2);margin:.6rem 0}
input,select,textarea{display:block;width:100%;margin-top:.3rem;padding:.75rem .9rem;border:1.5px solid var(--line);border-radius:12px;background:#fff;font-size:1rem;min-height:46px}
input:focus,select:focus,textarea:focus{border-color:var(--ink);outline:none}
input[type=checkbox],input[type=radio]{width:auto;min-height:0;display:inline-block;margin:0}

/* Splash / error / landing */
.splash{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(160deg,#fff 0%,var(--tint,#fdf6e3) 100%)}
.splash.dark{background:radial-gradient(120% 80% at 50% 0%,#262626 0%,#0b0b0b 70%);color:#fff}
.splash-card{width:100%;max-width:420px;text-align:center}
.splash-card h1{font-size:1.5rem;margin:1rem 0 .4rem}
.splash-card p{color:var(--ink-2)}
.splash.dark .splash-card p,.splash.dark .muted{color:#bdbdbd}
.splash-icon svg{width:72px;height:72px;fill:none;stroke:var(--ink);stroke-width:1.6;margin:1.2rem auto 0}
.kw-brand{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;font-weight:800;font-size:1.3rem}
.kw-brand svg{width:36px;height:36px}
.kw-logo{display:block;width:150px;height:auto;background:#fff;border-radius:14px;padding:4px 8px}
.code-form{text-align:left;margin-top:1.2rem}
.code-form input{text-transform:uppercase;letter-spacing:.2em;text-align:center;font-weight:600}
.code-form .btn{width:100%;margin-top:.8rem}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
