/*
 * Hydari theme — forms and polls (P35, spec 5). Loaded only on pages that hold one (theme slot front.head, bundle forms.css). Logical
 * properties throughout, so the same rules serve left-to-right and right-to-left; colours are the palette's tokens, so night mode follows.
 */
.hy-form, .hy-poll { --fm-gap: 1rem; margin-block: 1rem; max-inline-size: 46rem; }
.hy-form [hidden], .hy-poll [hidden] { display: none !important; }
.hy-form { display: grid; gap: var(--fm-gap); }
.hy-form--closed { padding: 1rem 1.1rem; border: 1px dashed var(--hy-line); border-radius: var(--radius-lg, 14px); }
.hy-form__note { display: flex; align-items: center; gap: .55rem; margin: 0; color: var(--hy-muted); }
.hy-form__note .hy-icon { flex: none; }

.hy-form__step { display: grid; gap: .75rem; min-inline-size: 0; }
.hy-form__stepcount { margin: 0; color: var(--hy-muted); font-size: .85rem; }
.hy-form__steptitle { margin: 0; font-size: 1.15rem; }
.hy-form__steptext { margin: 0; color: var(--hy-muted); }
.hy-form__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--fm-gap); }
.hy-form__field--full { grid-column: 1 / -1; }
.hy-form__field--half { grid-column: span 1; }
@media (max-width: 640px) { .hy-form__fields { grid-template-columns: minmax(0, 1fr); } .hy-form__field--half { grid-column: 1 / -1; } }

.hy-form fieldset.hy-field { min-inline-size: 0; margin: 0; padding: 0; border: 0; }
.hy-form fieldset.hy-field > legend { float: none; padding: 0; margin: 0 0 .3rem; inline-size: auto; font-size: .88rem; }
.hy-form .hy-field__label { font-size: .92rem; }
.hy-form__req { color: var(--color-danger-text, var(--color-danger)); }
.hy-form__area { resize: vertical; min-block-size: 6rem; line-height: 1.55; }
.hy-form__file { padding-block: .45rem; }
.hy-form__heading { margin: .5rem 0 0; font-size: 1.1rem; }
.hy-form__paragraph { margin: 0; color: var(--hy-muted); }
.hy-form__choices { display: grid; gap: .35rem; }
.hy-form__choices .hy-check, .hy-poll__option { align-items: flex-start; }
.hy-form [aria-invalid="true"], .hy-poll [aria-invalid="true"] { border-color: var(--color-danger); }
.hy-field__error[hidden] { display: none; }

.hy-form__rating { display: flex; flex-wrap: wrap; gap: .4rem; }
.hy-form__star { position: relative; display: inline-flex; }
.hy-form__star input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.hy-form__star span { display: inline-flex; align-items: center; justify-content: center; inline-size: 2.5rem; block-size: 2.5rem; border: 1px solid var(--hy-line); border-radius: 50%; background: var(--bg-card);
    color: var(--hy-text); font-weight: 600; transition: background .15s, color .15s, border-color .15s; }
.hy-form__star input:checked + span { background: var(--color-primary); color: var(--color-on-primary); border-color: var(--color-primary); }
.hy-form__star input:focus-visible + span { outline: 3px solid var(--color-focus, var(--color-primary)); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .hy-form__star span { transition: none; } }

.hy-form__actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.hy-form__status { margin: 0; min-block-size: 1.2rem; font-size: .92rem; color: var(--hy-muted); }
.hy-form__status.is-error { color: var(--color-danger-text, var(--color-danger)); font-weight: 600; }
.hy-form__status.is-ok { color: var(--color-success-text, var(--color-success)); font-weight: 600; }
.hy-form__done { padding: 1rem 1.15rem; border: 1px solid var(--color-success, var(--hy-line)); border-radius: var(--radius-lg, 14px); background: var(--bg-card); font-weight: 600; }
.hy-form__done:focus { outline: none; }

.hy-hp { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); opacity: 0; white-space: nowrap; }
.hy-captcha { display: grid; gap: .45rem; justify-items: start; }
.hy-captcha__img { border-radius: var(--radius-md, 10px); border: 1px solid var(--hy-line); background: var(--bg-card); cursor: pointer; }
.hy-captcha__input { max-inline-size: 12rem; letter-spacing: .2em; text-transform: uppercase; }
.hy-captcha[data-loaded] [data-hy-captcha-load] { display: none; }

.hy-form-page { padding-block-end: 2rem; }
.hy-list-head__text-intro { margin: .5rem 0 0; color: var(--hy-muted); max-inline-size: 40rem; }

/* Polls */
.hy-poll { padding: 1.1rem 1.2rem; border: 1px solid var(--hy-line); border-radius: var(--radius-lg, 14px); background: var(--bg-card); }
.hy-poll__q { margin: 0 0 .75rem; font-size: 1.15rem; }
.hy-poll__form { display: grid; gap: .75rem; }
.hy-poll__options { display: grid; gap: .5rem; margin: 0; padding: 0; border: 0; min-inline-size: 0; }
.hy-poll__option { padding: .55rem .75rem; border: 1px solid var(--hy-line); border-radius: var(--radius-md, 10px); }
.hy-poll__option:hover { background: var(--bg-hover, var(--bg-sunken)); }
.hy-poll__results { margin-block-start: .75rem; }
.hy-poll__list { display: grid; gap: .65rem; margin: 0; padding: 0; list-style: none; }
.hy-poll__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .2rem .75rem; align-items: baseline; }
.hy-poll__row.is-top .hy-poll__label { font-weight: 700; }
.hy-poll__figure { font-variant-numeric: tabular-nums; font-weight: 600; }
.hy-poll__count { color: var(--hy-muted); font-weight: 400; font-size: .85rem; }
.hy-poll__bar { grid-column: 1 / -1; display: block; block-size: .6rem; border-radius: 999px; background: var(--bg-sunken, var(--hy-line)); overflow: hidden; }
.hy-poll__bar > span { display: block; block-size: 100%; border-radius: inherit; background: var(--color-primary); }
.hy-poll__total { margin: .75rem 0 0; color: var(--hy-muted); font-size: .88rem; }

/* The "report a mistake" dialog */
.hy-modal .hy-form { margin-block: 0; }

@media print { .hy-form, .hy-poll { display: none; } }
