.bingo-generator{gap:var(--space-xl);margin:var(--space-xl) 0;padding:var(--space-lg);background-color:var(--color-surface-alt);border:1px solid var(--color-line);border-radius:var(--radius-lg);flex-direction:column;display:flex}.bingo-generator p{margin:0}.bingo-generator__fieldset{gap:var(--space-sm);border:0;flex-direction:column;min-width:0;margin:0;padding:0;display:flex}.bingo-generator__legend{margin-bottom:var(--space-sm);font-size:var(--font-size-h4);font-weight:var(--font-weight-bold)}.bingo-generator__templates,.bingo-generator__fields{gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));display:grid}.bingo-generator__template{align-items:flex-start;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);cursor:pointer;display:flex}.bingo-generator__template:has(input:checked){border-color:var(--color-primary)}.bingo-generator__template>span{gap:var(--space-xxs);flex-direction:column;display:flex}.bingo-generator__template input{margin:var(--space-xxs) 0 0;flex-shrink:0}.bingo-generator__field{justify-content:space-between;gap:var(--space-xxs);font-weight:var(--font-weight-bold);flex-direction:column;display:flex}.bingo-generator__field .input-txt{width:100%;height:2.25rem;font-size:var(--font-size-body);font-weight:var(--font-weight-regular)}.bingo-generator__hint{color:var(--color-text-muted);font-size:var(--font-size-body-sm);font-weight:var(--font-weight-regular)}.bingo-generator__option{align-items:flex-start;gap:var(--space-xs);display:flex}.bingo-generator__option[hidden]{display:none}.bingo-generator__option input{width:1.15rem;height:1.15rem;margin:var(--space-xxs) 0 0;flex-shrink:0}.bingo-generator__list[hidden]{display:none}.bingo-generator__list summary{font-weight:var(--font-weight-bold);cursor:pointer}.bingo-generator__count{margin-left:var(--space-xs)}.bingo-generator__bulk{gap:var(--space-lg);margin-top:var(--space-sm);display:flex}.bingo-generator__choices{gap:var(--space-xs) var(--space-lg);margin:var(--space-sm) 0 0;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));padding:0;list-style:none;display:grid}.bingo-generator__choices[hidden]{display:none}.bingo-generator__custom{align-items:flex-end;gap:var(--space-sm);flex-wrap:wrap;display:flex}.bingo-generator__custom .bingo-generator__field{flex:15rem}.bingo-generator__result{gap:var(--space-md);padding:var(--space-md) var(--space-lg);background-color:var(--color-surface);border:1px solid var(--color-border-strong);flex-direction:column;display:flex}.bingo-generator__status{font-weight:var(--font-weight-bold)}.bingo-generator__actions{align-items:center;gap:var(--space-sm) var(--space-xl);flex-wrap:wrap;display:flex}.bingo-generator__action{align-items:center;gap:var(--space-xs);display:inline-flex}.bingo-generator__preview{overflow-x:auto}.bingo-card{gap:var(--space-xs);max-width:36rem;padding:var(--space-md);background-color:var(--color-surface);border:1px solid var(--color-border-strong);color:var(--color-text);font-family:var(--font-body);text-align:left;flex-direction:column;display:flex}.bingo-card p{margin:0}.bingo-card__head{align-items:center;gap:var(--space-xxs);text-align:center;flex-direction:column;display:flex}.bingo-card__title{font-family:var(--font-display);font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);line-height:1.1}.bingo-card__occasion{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.bingo-card__prompt{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);text-align:center}.bingo-card__grid{grid-template-columns:repeat(var(--bingo-size), minmax(0, 1fr));border-top:1px solid var(--color-primary);border-left:1px solid var(--color-primary);flex:1;grid-auto-rows:minmax(4.5rem,1fr);display:grid}.bingo-card__cell{padding:var(--space-xxs);border-right:1px solid var(--color-primary);border-bottom:1px solid var(--color-primary);font-size:var(--font-size-2xs);text-align:center;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:anywhere;justify-content:center;align-items:center;line-height:1.25;display:flex}.bingo-card--3 .bingo-card__cell:not(.bingo-card__cell--free){font-size:var(--font-size-sm)}.bingo-card__cell--free{font-family:var(--font-display);font-size:var(--font-size-h5);font-weight:var(--font-weight-bold)}.bingo-card__rule{font-size:var(--font-size-2xs);color:var(--color-text-secondary);line-height:1.3}.bingo-card__player{padding-top:var(--space-md);border-bottom:1px solid var(--color-text-soft);line-height:1.3;font-size:var(--font-size-2xs)}.bingo-print{display:none}@media print{@page{size:A4 portrait;margin:10mm}html.is-printing-bingo{font-size:100%}html.is-printing-bingo body{font-family:var(--font-body);text-align:left;background:0 0;margin:0;padding:0}html.is-printing-bingo body>:not(.bingo-print){display:none!important}html.is-printing-bingo .bingo-print{display:block}.bingo-print__sheet{break-inside:avoid;break-after:page;width:190mm;height:274mm;display:grid;overflow:hidden}.bingo-print__sheet:last-child{break-after:auto}.bingo-print__sheet .bingo-card{break-inside:avoid;border:0;max-width:none;min-height:0;padding:6mm}.bingo-print__sheet .bingo-card__grid{grid-auto-rows:minmax(min-content,1fr)}.bingo-print__sheet--5{grid-template-rows:repeat(2,1fr)}.bingo-print__sheet--5 .bingo-card+.bingo-card{border-top:.3mm dashed var(--color-text-soft)}.bingo-print__sheet--3,.bingo-print__sheet--4{grid-template-rows:repeat(2,1fr);grid-template-columns:repeat(2,1fr)}.bingo-print__sheet--3 .bingo-card:nth-child(2n),.bingo-print__sheet--4 .bingo-card:nth-child(2n){border-left:.3mm dashed var(--color-text-soft)}.bingo-print__sheet--3 .bingo-card:nth-child(n+3),.bingo-print__sheet--4 .bingo-card:nth-child(n+3){border-top:.3mm dashed var(--color-text-soft)}.bingo-print__sheet--3 .bingo-card,.bingo-print__sheet--4 .bingo-card{padding:5mm}.bingo-print__sheet--3 .bingo-card__title,.bingo-print__sheet--4 .bingo-card__title{font-size:var(--font-size-h3)}.bingo-print__sheet--3 .bingo-card__player,.bingo-print__sheet--4 .bingo-card__player{padding-top:var(--space-xs)}}
