@font-face{font-family:Cinzel;font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/cinzel-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:Montserrat;font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/montserrat-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/montserrat-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/montserrat-latin-700-normal.woff2') format('woff2')}

    :root { --purple:#690196; --green:#2FC900; --paper:#F7F3E8; --ink:#303030; --white:#FFFFFF; }
    * { box-sizing:border-box; }
    body { margin:0; background:var(--paper); color:var(--ink); font:400 16px/1.6 Montserrat,Arial,sans-serif; }
    header { background:white; border-top:6px solid var(--purple); border-bottom:1px solid #d5d0c5; }
    .brand { max-width:1120px; margin:auto; padding:22px 28px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
    .logo { width:210px; height:auto; display:block; max-width:100%; }
    .tagline { font-weight:700; color:var(--purple); }
    main { max-width:1120px; margin:auto; padding:42px 28px 24px; }
    .eyebrow { display:flex; align-items:center; gap:10px; font-size:.875rem; font-weight:700; color:var(--purple); }
    .dot { width:9px; height:9px; background:var(--green); border:1px solid var(--ink); border-radius:50%; }
    h1 { font:700 clamp(2rem,5vw,3.2rem)/1.2 Cinzel,Georgia,serif; color:var(--purple); margin:12px 0 16px; }
    .event-date { display:inline-block; font-size:clamp(1.125rem,3vw,1.5rem); font-weight:700; color:var(--purple); background:white; border-left:5px solid var(--green); padding:12px 16px; margin:0 0 20px; }
    h2,legend { font-size:1.25rem; font-weight:700; }
    h2 { margin:0 0 8px; }
    p { margin:8px 0 16px; }
    #introduction { max-width:720px; }
    .intro-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,320px); gap:28px; align-items:center; }
    .signup-characters { display:block; width:100%; max-width:320px; height:auto; justify-self:center; }
    .layout { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr); gap:28px; align-items:start; margin-top:30px; }
    fieldset { border:0; margin:0; padding:0; min-width:0; }
    legend { padding:0; margin-bottom:16px; }
    .cards { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
    .card { display:flex; flex-direction:column; gap:14px; align-items:stretch; background:white; border:2px solid #aaa69d; border-radius:12px; padding:16px; cursor:pointer; min-height:170px; overflow-wrap:anywhere; }
    .cover { display:block; width:100%; height:auto; max-height:300px; object-fit:contain; border-radius:6px; }
    .choice { display:flex; gap:10px; align-items:flex-start; }
    .card:has(input:checked) { border-color:var(--purple); box-shadow:inset 0 4px var(--green); }
    .card:has(input:disabled) { background:#eeece6; cursor:default; }
    .card input { flex:0 0 22px; width:22px; height:22px; margin:3px 0 0; accent-color:var(--purple); }
    .card .copy { flex:1; min-width:0; }
    .card strong { font-size:1.125rem; display:block; }
    .card p { font-size:.9375rem; margin:8px 0; }
    .card .group-schedule { font-size:1rem; font-weight:700; color:var(--purple); }
    .badge { display:inline-block; border:1px solid #aaa69d; border-radius:6px; padding:3px 8px; margin-top:10px; color:var(--purple); font-weight:700; font-size:.875rem; background:white; }
    .panel { padding:26px; background:white; border:1px solid #d5d0c5; border-radius:12px; }
    .panel label { display:block; font-weight:700; margin:20px 0 6px; }
    input[type=text],input[type=email],input[type=tel] { width:100%; min-height:48px; border:1px solid #777; border-radius:6px; padding:10px 12px; font:inherit; background:white; color:var(--ink); }
    button { font:700 1rem/1.4 Montserrat,Arial,sans-serif; min-height:48px; padding:12px 16px; border:2px solid var(--purple); border-radius:6px; background:var(--purple); color:white; cursor:pointer; }
    button:disabled { cursor:default; background:#e4e0d8; border-color:#777; color:var(--ink); }
    #submit { width:100%; margin-top:20px; }
    .secondary { background:white; color:var(--purple); }
    :focus-visible { outline:3px solid var(--purple); outline-offset:4px; }
    .card:has(input:focus-visible) { outline:3px solid var(--purple); outline-offset:4px; }
    .small { font-size:.875rem; }
    #status { margin-top:22px; padding:16px; border-left:4px solid var(--purple); background:white; overflow-wrap:anywhere; }
    #status:empty { display:none; }
    #confirmation { margin-top:24px; border-top:5px solid var(--green); }
    #registrationState { font-weight:700; }
    #refresh { margin-top:18px; }
    .flyer { margin-top:28px; background:white; border:1px solid #aaa69d; border-radius:8px; padding:0 16px; }
    .flyer summary { min-height:48px; padding:12px 0; cursor:pointer; color:var(--purple); font-weight:700; }
    .flyer img { display:block; width:100%; height:auto; max-width:640px; margin:0 auto 16px; }
    footer { max-width:1120px; margin:28px auto 0; padding:24px 28px; border-top:1px solid #d5d0c5; font-size:.875rem; }
    [hidden] { display:none !important; }
    @media(max-width:760px) { .layout,.intro-layout { grid-template-columns:1fr; } .signup-characters { max-width:240px; } main { padding-top:28px; } .panel { padding:22px; } }
    @media(max-width:480px) { .brand { padding:18px 20px; } .logo { width:168px; } .tagline { max-width:92px; font-size:.8125rem; text-align:right; } main { padding:28px 20px 20px; } .cards { grid-template-columns:1fr; } .card { min-height:120px; padding:18px; } footer { padding:22px 20px; } }
    @media(prefers-reduced-motion:reduce) { * { scroll-behavior:auto !important; } }
  