/*
 * What a visitor sees.
 *
 * The conversational capture, the offer claim form, the plugin's fallback
 * single templates, event signup and the rentals diary. Everything here is
 * drawn on a public page, so it speaks --cs-* and stays above 16px.
 *
 * Captured from the culc_*_styles() functions that used to print this
 * mid-body, by running them: they emitted four different ways and a
 * regex over the source got two of them wrong.
 *
 * Each block still names the file it came from. Edit it here; editing it
 * there does nothing now.
 */

/* --- culc_public_styles() --- */
/* A reading column, said the way the canvas says it. This was a flat 820px,
       a third opinion on width beside the canvas container and its own prose
       measure; at this type size 74ch lands in the same place and tracks the
       font if a canvas sets a different one. Capped by the container so it can
       never be wider than the site it is inside. */
    .culc-pub{max-width:min(74ch, var(--cs-max,1280px));margin:0 auto;padding:48px 22px 72px;
      font-size:17px;line-height:1.65}
    .culc-pub-head{margin:0 0 28px}
    .culc-pub-kind{margin:0 0 8px;font-size:16px;font-weight:700;letter-spacing:.12em;
      text-transform:uppercase;opacity:.6}
    .culc-pub h1{margin:0;font-size:clamp(30px,4.5vw,42px);line-height:1.12;
      letter-spacing:-.015em;text-wrap:balance}
    .culc-pub-facts{display:flex;flex-wrap:wrap;gap:12px 28px;margin:20px 0 0;padding:0}
    .culc-pub-facts div{margin:0}
    .culc-pub-facts dt{margin:0;font-size:16px;font-weight:700;letter-spacing:.09em;
      text-transform:uppercase;opacity:.55}
    .culc-pub-facts dd{margin:2px 0 0;font-size:17px;font-weight:600}
    .culc-pub-shot{margin:0 0 28px}
    .culc-pub-shot img{width:100%;height:auto;display:block;border-radius:10px}
    .culc-pub-body{margin:0 0 8px}
    .culc-pub-body > :first-child{margin-top:0}
    .culc-pub-none{opacity:.7}
    .culc-pub-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:26px}
    .culc-pub-list li{display:grid;grid-template-columns:180px 1fr;gap:22px;align-items:start}
    .culc-pub-list li:only-child,.culc-pub-list li:not(:has(.culc-pub-thumb)){grid-template-columns:1fr}
    .culc-pub-thumb img{width:100%;height:auto;display:block;border-radius:8px}
    .culc-pub-list h2{margin:0 0 6px;font-size:23px;line-height:1.2}
    .culc-pub-list h2 a{text-decoration:none;color:inherit}
    .culc-pub-list h2 a:hover{text-decoration:underline}
    .culc-pub-line{margin:0 0 6px;font-size:16px;font-weight:600;opacity:.7}
    .culc-pub-ex{margin:0;opacity:.8}
    @media (max-width:640px){ .culc-pub-list li{grid-template-columns:1fr} }

/* --- culc_chat_styles() --- */
/* A display rule beats the hidden attribute, and every bubble in here
       starts hidden, so this has to win. */
    .culc-chat [hidden] { display: none !important; }

    /* Progressive hiding only switches on once a script has claimed the box,
       so a browser running none shows every step and the form posts the lot. */
    .culc-chat.is-js [data-progressive-hidden] { display: none; }

    .culc-chat { --culc-chat-you: var(--cs-ink,#14161a); }
    .culc-chat-log { list-style: none; margin: 0 0 18px; padding: 0; display: flex; flex-direction: column; gap: 10px; }

    .culc-chat-b {
        max-width: 32rem;
        padding: 13px 18px;
        font-size: 17px;
        line-height: 1.5;
        border-radius: 18px;
    }
    .culc-chat-b.is-them {
        align-self: flex-start;
        border-bottom-left-radius: 5px;
        background: var(--cs-paper,#ffffff);
        border: 1px solid var(--cs-line, rgba(0,0,0,.12));
        color: var(--cs-ink,#14161a);
    }
    .culc-chat-b.is-you {
        align-self: flex-end;
        border-bottom-right-radius: 5px;
        background: var(--culc-chat-you);
        color: var(--cs-paper,#ffffff);
        text-align: right;
    }

    /* Each bubble arrives rather than appearing, because the log is read in
       the order things were said. */
    @keyframes culc-chat-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
    .culc-chat-b { animation: culc-chat-in .22s ease-out both; }
    @media (prefers-reduced-motion: reduce) { .culc-chat-b { animation: none; } }

    .culc-chat-typing { display: flex; gap: 5px; align-items: center; padding: 16px 18px; }
    .culc-chat-typing span {
        width: 7px; height: 7px; border-radius: 50%;
        background: var(--cs-ink-soft,#565b64);
        animation: culc-chat-dot 1.1s infinite ease-in-out;
    }
    .culc-chat-typing span:nth-child(2) { animation-delay: .16s; }
    .culc-chat-typing span:nth-child(3) { animation-delay: .32s; }
    @keyframes culc-chat-dot { 0%, 60%, 100% { opacity: .25; } 30% { opacity: 1; } }
    @media (prefers-reduced-motion: reduce) { .culc-chat-typing span { animation: none; opacity: .5; } }

    /* The composer. One row that looks like somewhere to write, not a field
       set. It sits below the log the way a message box always does. */
    .culc-chat-compose { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin: 0; }
    .culc-chat-compose input,
    .culc-chat-compose textarea {
        flex: 1 1 13rem; min-width: 0; font: inherit; font-size: 17px;
        padding: 14px 18px;
        border: 1px solid var(--cs-line, rgba(0,0,0,.18));
        border-radius: 999px;
        background: var(--cs-paper,#ffffff);
        color: var(--cs-ink,#14161a);
    }
    .culc-chat-compose textarea { border-radius: 20px; resize: vertical; }
    /* A message opener is the one thing somebody has to think about before
       they type, so it gets the width and the send sits under it. */
    .culc-chat-compose.is-open { align-items: flex-end; }
    .culc-chat-compose.is-open textarea { flex: 1 1 100%; min-height: 5.5rem; }
    .culc-chat-compose input:focus-visible,
    .culc-chat-compose textarea:focus-visible { outline: 2px solid var(--cs-accent,#2f4bf0); outline-offset: 1px; }
    .culc-chat-compose button {
        font: inherit; font-size: 17px; font-weight: 700; cursor: pointer;
        padding: 14px 26px; border: 0; border-radius: 999px;
        background: var(--cs-accent,#2f4bf0); color: #fff;
    }
    .culc-chat-compose button:hover { filter: brightness(1.1); }
    .culc-chat-compose button[disabled] { opacity: .55; cursor: default; }

    /* Step two asks for more than one thing, so it wraps to its own block and
       the send sits under it rather than squeezing everything onto one line. */
    .culc-chat-compose.is-multi { flex-direction: column; align-items: stretch; }
    .culc-chat-fields { display: flex; gap: 10px; flex-wrap: wrap; }
    .culc-chat-fields > * { flex: 1 1 12rem; }
    .culc-chat-compose.is-multi button { align-self: flex-start; }

    /* An ask is one question, so it is one row: the box, Send, and a Skip that
       is visibly the lesser of the two without being hard to find. Nothing
       after the first answer is required, and the way to say that in a
       conversation is to offer the way out next to the way on. */
    .culc-chat-ask { margin: 0; }
    .culc-chat-ask + .culc-chat-ask { margin-top: 10px; }
    .culc-chat-skip {
        background: transparent !important;
        color: var(--cs-ink-soft,#565b64) !important;
        font-weight: 600 !important;
        padding: 14px 14px !important;
        text-decoration: underline;
    }
    .culc-chat-skip:hover { filter: none; color: var(--cs-ink,#14161a) !important; }

    .culc-chat-fine { margin: 10px 0 0; font-size: 16px; opacity: .7; }
    .culc-chat-err { margin: 10px 0 0; font-size: 16px; color: #b3261e; }
    .culc-chat-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

/* --- culc_offer_claim_form_styles() --- */
.cul-claim-card{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:clamp(20px,3vw,28px);margin:0 0 18px;max-width:560px;color:inherit}
    .cul-claim-heading{margin:0 0 6px;font-size:26px;line-height:1.2}
    .cul-claim-sub{margin:0 0 16px;font-size:16px;opacity:.86}
    .cul-claim-error{background:rgba(214,54,70,.15);border:1px solid rgba(214,54,70,.6);padding:10px 14px;border-radius:10px;margin:0 0 12px;font-size:16px}
    .cul-claim-fields{display:grid;grid-template-columns:1fr;gap:10px}
    .cul-claim-form input[name="claim_name"]{animation:culClaimReveal .22s ease}
    @keyframes culClaimReveal{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
    .cul-claim-form input[type=email],.cul-claim-form input[type=text]{width:100%;padding:14px 16px;font-size:16px;line-height:1.2;border-radius:10px;border:1px solid rgba(0,0,0,.15);background:#fff;color:var(--cs-ink,#14161a)}
    .cul-claim-form input[type=email]:focus,.cul-claim-form input[type=text]:focus{outline:2px solid var(--cs-accent,#2f4bf0);outline-offset:2px}
    .cul-claim-submit{background:var(--cs-accent,#2f4bf0);color:#fff;border:0;cursor:pointer;padding:14px 22px;border-radius:10px;font-size:16px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;transition:filter .15s,transform .15s;white-space:nowrap}
    .cul-claim-submit:hover{filter:brightness(.92);transform:translateY(-1px)}
    .cul-claim-fineprint{font-size:16px;opacity:.7;margin:12px 0 0;line-height:1.5}
    .cul-claim-success{text-align:left}
    .cul-claim-eyebrow{font-family:var(--cs-display,inherit);text-transform:uppercase;letter-spacing:.18em;font-size:16px;font-weight:700;color:var(--cs-accent,#2f4bf0);margin:0 0 8px}
    .cul-claim-success-title{margin:0 0 8px;font-size:28px;line-height:1.15}
    .cul-claim-success-body{margin:0;opacity:.86}

/* --- culc_event_signup_styles() --- */
.culc-evt-signup{border:1px solid var(--cs-line,#e2e0db);border-radius:var(--cs-radius-lg,24px);background:var(--cs-surface,#f5f4f1);padding:24px}.culc-evt-signup-title{font-size:1.35rem;margin:0 0 14px}.culc-evt-signup [hidden]{display:none}.culc-evt-signup-swap{margin:16px 0 0}.culc-evt-signup-swap-btn{background:none;border:0;padding:0;font:inherit;font-size:16px;color:var(--cs-ink-soft,#565b64);text-decoration:underline;cursor:pointer;text-align:left}.culc-evt-signup-swap-btn:hover{color:var(--cs-ink,#14161a)}

/* --- culc_bookings_calendar_styles() --- */
.culc-cal-heading{margin:0 0 8px}.culc-cal-sub{margin:0 0 20px;color:var(--cs-ink-soft,#565b64)}.culc-cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.culc-cal-title{font-weight:700;font-size:19px}.culc-cal-nav{background:none;border:1px solid var(--cs-line,#e2e0db);border-radius:8px;width:40px;height:40px;font-size:22px;line-height:1;cursor:pointer;color:inherit}.culc-cal-nav:hover:not([disabled]){border-color:var(--cs-accent,#2f4bf0);color:var(--cs-accent,#2f4bf0)}.culc-cal-nav[disabled]{opacity:.3;cursor:default}.culc-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.culc-cal-dow{font-size:16px;font-weight:700;text-align:center;padding:4px 0;color:var(--cs-ink-soft,#565b64);letter-spacing:.06em;text-transform:uppercase}.culc-cal-pad{aspect-ratio:1}.culc-cal-day{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border-radius:8px;font:inherit;font-size:17px;font-weight:600;border:1px solid transparent}button.culc-cal-day{cursor:pointer}.culc-cal-day.is-open{background:var(--cs-paper,#ffffff);border-color:var(--cs-line,#e2e0db);color:inherit}.culc-cal-day.is-open:hover,.culc-cal-day.is-open:focus-visible{background:var(--cs-accent,#2f4bf0);border-color:var(--cs-accent,#2f4bf0);color:#fff}.culc-cal-day.is-open.is-picked{background:var(--cs-accent,#2f4bf0);border-color:var(--cs-accent,#2f4bf0);color:#fff}.culc-cal-day.is-taken{background:rgba(0,0,0,.05);color:rgba(0,0,0,.35);text-decoration:line-through;text-decoration-thickness:1px}.culc-cal-day.is-past{color:rgba(0,0,0,.2)}.culc-cal-key{display:flex;gap:20px;margin:16px 0 0;font-size:16px;color:var(--cs-ink-soft,#565b64)}.culc-cal-key-item{display:inline-flex;align-items:center;gap:7px}.culc-cal-key i{width:14px;height:14px;border-radius:4px;display:inline-block}.culc-cal-key i.is-open{background:var(--cs-paper,#ffffff);border:1px solid var(--cs-line,#e2e0db)}.culc-cal-key i.is-taken{background:rgba(0,0,0,.12)}.culc-cal-form{margin-top:24px;padding-top:22px;border-top:1px solid var(--cs-line,#e2e0db)}.culc-cal-form[hidden]{display:none}.culc-cal-picked{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:0 0 16px;font-size:18px}.culc-cal-change{background:none;border:0;padding:0;font:inherit;font-size:16px;text-decoration:underline;cursor:pointer;color:var(--cs-ink-soft,#565b64)}.culc-cal-change:hover{color:var(--cs-ink,#14161a)}

