334 lines
6.9 KiB
CSS
334 lines
6.9 KiB
CSS
/* ===========================
|
||
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);
|
||
}
|
||
|