Files
fuz-site/src/styles/modal.css

334 lines
6.9 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===========================
MODAL — FULLSCREEN OVERLAY
=========================== */
.f-modal-overlay {
@apply fixed inset-0 z-[9999] flex flex-col;
background: rgba(0, 0, 0, 0.65);
backdrop-filter: blur(6px);
animation: fadeIn 0.25s ease-out forwards;
}
.f-modal-close {
@apply absolute top-4 right-6 text-3xl font-bold cursor-pointer transition-opacity;
@apply text-[--f-text] opacity-70;
}
.f-modal-close:hover {
@apply opacity-100;
}
/* panel pełny ekran, ale treść centrowana max-w */
.f-modal-panel {
@apply w-full h-full overflow-y-auto bg-[--f-background] text-[--f-text];
@apply px-6 py-8 md:px-12 md:py-12;
}
/* wersja "kompaktowa" z mniejszym max-width (używana w dodatkach) */
.f-modal-panel.f-modal-panel--compact {
@apply flex justify-center items-start;
}
.f-modal-inner {
@apply w-full max-w-4xl mx-auto;
}
.f-modal-title {
@apply text-3xl md:text-4xl font-bold mb-8 text-center text-[--f-text];
}
.f-modal-content p {
@apply leading-relaxed text-2xl text-center;
}
.f-modal-content p img {
@apply mt-2;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
/* ===========================
TELEFON — AKORDEON
=========================== */
.f-modal-phone-list.f-accordion {
@apply flex flex-col gap-2;
}
.f-accordion-item {
@apply rounded-xl border overflow-hidden bg-[--f-background];
border-color: rgba(148, 163, 184, 0.6);
}
.f-accordion-header {
@apply w-full flex items-center justify-between gap-4 px-4 py-2 cursor-pointer;
background: rgba(148, 163, 184, 0.06);
border: none;
outline: none;
}
.f-accordion-header-left {
@apply flex items-center gap-1;
}
.f-modal-phone-name {
@apply font-medium ml-2;
}
.f-modal-phone-price {
@apply font-semibold whitespace-nowrap;
}
.f-accordion-body {
@apply px-4 pt-2 pb-3;
border-top: 1px solid rgba(148, 163, 184, 0.4);
}
/* wyróżnienie otwartego pakietu */
.f-accordion-item.is-open .f-accordion-header {
background: color-mix(in srgb, var(--fuz-accent, #2563eb) 8%, transparent);
}
/* ===========================
DODATKI — KOLUMNOWA LISTA (GRID)
checkbox: checkbox | main | price
quantity: slot | main | qty | price
=========================== */
.f-addon-list {
@apply flex flex-col gap-2;
}
/* BAZA: checkbox | main | price */
.f-addon-item {
@apply grid items-start gap-3 px-3 py-2 rounded-xl border cursor-pointer;
grid-template-columns: auto 1fr auto;
border-color: rgba(148, 163, 184, 0.5);
background: var(--f-background);
}
.f-addon-item:hover {
border-color: color-mix(
in srgb,
var(--fuz-accent, #2563eb) 70%,
rgba(148, 163, 184, 0.5) 30%
);
}
.f-addon-item input[type="checkbox"] {
@apply cursor-pointer;
}
/* kolumna 1 */
.f-addon-checkbox {
@apply flex items-center justify-center;
align-items: center;
margin-top: 0.1rem;
}
.f-addon-checkbox input[type="checkbox"] {
width: 1.05rem;
height: 1.05rem;
transform: scale(1.05);
accent-color: var(--fuz-accent, #2563eb);
cursor: pointer;
}
/* kolumna 2 */
.f-addon-main {
@apply flex flex-col gap-0.5;
min-width: 0;
}
.f-addon-name {
@apply font-medium;
}
.f-addon-desc {
@apply text-sm opacity-85;
}
/* kolumna 3 (cena) */
.f-addon-price {
@apply font-semibold whitespace-nowrap;
justify-self: end;
text-align: right;
min-width: 140px; /* stała kolumna cen */
}
/* suma pod ceną (quantity) */
.f-addon-price-total {
margin-top: 0.15rem;
font-size: 0.9em;
font-weight: 600;
opacity: 0.85;
white-space: nowrap;
color: var(--fuz-accent, #2563eb);
}
/* WARIANT: quantity -> slot | main | qty | price */
.f-addon-item--qty {
grid-template-columns: auto 1fr auto auto;
align-items: start;
}
/* “pusty” slot w kolumnie 1 (żeby wyrównać do checkboxa) */
.f-addon-item--qty .f-addon-checkbox {
visibility: hidden; /* zajmuje miejsce, ale nie widać */
width: 1.05rem;
height: 1.05rem;
transform: scale(1.05);
}
/* kolumna qty (3) bliżej prawej */
.f-addon-item--qty .f-addon-qty {
justify-self: end;
display: inline-flex;
align-items: center;
gap: 0.5rem;
margin-top: 0.05rem;
}
/* wartość qty */
.f-addon-qty-value {
min-width: 2ch;
text-align: center;
}
/* mobile: w razie ciasnoty przenosimy qty pod main, cena zostaje po prawej */
@media (max-width: 640px) {
.f-addon-item--qty {
grid-template-columns: auto 1fr auto;
grid-template-areas:
"slot main price"
"slot qty price";
}
.f-addon-item--qty .f-addon-checkbox { grid-area: slot; }
.f-addon-item--qty .f-addon-main { grid-area: main; }
.f-addon-item--qty .f-addon-qty { grid-area: qty; justify-self: start; }
.f-addon-item--qty .f-addon-price { grid-area: price; }
}
/* ===========================
PODSUMOWANIE MIESIĘCZNE
=========================== */
.f-summary {
@apply pt-2;
}
.f-summary-list {
@apply flex flex-col gap-1 mt-2 p-4 rounded-xl;
background: rgba(148, 163, 184, 0.07);
}
.f-summary-row,
.f-summary-total {
@apply flex items-center justify-between;
}
.f-summary-row span:last-child {
@apply font-medium whitespace-nowrap;
}
.f-summary-total {
@apply mt-1 pt-2;
border-top: 1px solid rgba(148, 163, 184, 0.4);
}
.f-summary-total span:last-child {
@apply font-bold;
font-size: 1.25rem;
color: var(--fuz-accent, #2563eb);
}
.f-modal-section {
@apply mb-6;
}
.f-modal-section h3 {
@apply text-xl md:text-2xl font-semibold mb-3;
}
/* opcja "bez telefonu" */
.f-accordion-item--no-phone .f-accordion-header {
background: rgba(148, 163, 184, 0.03);
}
.f-accordion-header-left input[type="radio"] {
width: 1.05rem;
height: 1.05rem;
transform: scale(1.05);
accent-color: var(--fuz-accent, #2563eb);
cursor: pointer;
}
.f-addon-checkbox input[type="checkbox"] {
width: 1.05rem;
height: 1.05rem;
transform: scale(1.05);
accent-color: var(--fuz-accent, #2563eb);
cursor: pointer;
}
.f-accordion-header-left,
.f-addon-checkbox {
align-items: center;
}
/* ===========================
FLOATING TOTAL (dymek jak czat)
=========================== */
.f-floating-total {
position: fixed;
right: 1rem;
bottom: 1rem;
z-index: 10000; /* wyżej niż overlay (9999) */
pointer-events: auto;
}
.f-floating-total-inner {
@apply flex items-center gap-3;
@apply px-4 py-3 rounded-2xl shadow-xl border;
border-color: rgba(148, 163, 184, 0.5);
background: color-mix(in srgb, var(--f-background) 92%, transparent);
backdrop-filter: blur(10px);
}
.f-floating-total-label {
@apply text-sm opacity-80;
}
.f-floating-total-value {
@apply font-bold whitespace-nowrap;
font-size: 1.1rem;
color: var(--fuz-accent, #2563eb);
}
/* na bardzo małych ekranach lekko mniejszy dymek */
@media (max-width: 420px) {
.f-floating-total-inner {
@apply px-3 py-2;
}
.f-floating-total-value {
font-size: 1rem;
}
}
.f-addon-price-total {
margin-top: 0.15rem;
font-size: 0.9em;
font-weight: 600;
opacity: 0.85;
white-space: nowrap;
color: var(--fuz-accent, #2563eb);
}