670 lines
14 KiB
CSS
670 lines
14 KiB
CSS
/* ========================================================= */
|
||
/* Styles généraux page gift list */
|
||
/* ========================================================= */
|
||
|
||
.pf-gift-list h1 {
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
.pf-gift-list p {
|
||
margin-top: 0;
|
||
margin-bottom: 12px;
|
||
font-size: 13px;
|
||
color: #4b5563;
|
||
}
|
||
|
||
/* Petit texte explicatif sous les titres */
|
||
.cl-legend {
|
||
font-size: 12px;
|
||
color: #6b7280;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
/* ========================================================= */
|
||
/* Vue par fête: mini-tableaux par enfant */
|
||
/* ========================================================= */
|
||
|
||
.cl-occasion-block {
|
||
margin-top: 2rem;
|
||
border-top: 2px solid #e5e5e5;
|
||
}
|
||
|
||
.cl-occasion-title {
|
||
font-size: 1.2rem;
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
|
||
.cl-occasion-children-tables {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, minmax(280px, 1fr));
|
||
gap: 7px;
|
||
align-items: start;
|
||
margin-top: 8px;
|
||
}
|
||
|
||
/* Désactiver la grille uniquement pour la vue Anniversary */
|
||
.pf-gift-list .cl-view-anniversary .cl-occasion-children-tables {
|
||
display: block; /* remplace la grid */
|
||
}
|
||
|
||
.pf-gift-list .cl-view-anniversary .cl-child-table {
|
||
width: 100%;
|
||
min-width: 720px; /* ajuste si nécessaire avec 6 colonnes */
|
||
margin-bottom: 12px; /* espacement entre tables */
|
||
overflow-x: auto; /* sécurité si ça déborde sur petit écran */
|
||
}
|
||
|
||
@media (max-width: 1200px) {
|
||
.cl-occasion-children-tables {
|
||
grid-template-columns: repeat(2, minmax(280px, 1fr));
|
||
}
|
||
}
|
||
@media (max-width: 780px) {
|
||
.cl-occasion-children-tables {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
}
|
||
|
||
/* ========================================================= */
|
||
/* Mini-tableau par enfant */
|
||
/* ========================================================= */
|
||
|
||
.cl-child-table {
|
||
display: table !important; /* robustesse même avec resets */
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
background: #fff;
|
||
border: 1px solid #d9e2ec;
|
||
overflow: hidden;
|
||
}
|
||
.cl-child-table thead {
|
||
display: table-header-group !important;
|
||
}
|
||
.cl-child-table tbody {
|
||
display: table-row-group !important;
|
||
}
|
||
.cl-child-table tr {
|
||
display: table-row !important;
|
||
}
|
||
.cl-child-table th,
|
||
.cl-child-table td {
|
||
display: table-cell !important;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/* Nom de l'enfant (caption) + bouton + */
|
||
.cl-child-table caption {
|
||
caption-side: top;
|
||
position: relative; /* pour positionner le + */
|
||
text-align: center;
|
||
font-weight: 700;
|
||
padding: 8px 10px;
|
||
background: #f8fafc;
|
||
border-bottom: 1px solid #e5e7eb;
|
||
font-size: 13px;
|
||
padding-right: 64px;
|
||
}
|
||
|
||
/* Bouton + dans le caption */
|
||
.cl-child-add-btn {
|
||
position: absolute;
|
||
right: 8px;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
width: 48px;
|
||
height: 48px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: #243b53;
|
||
font-size: 15px;
|
||
font-weight: 700;
|
||
line-height: 1;
|
||
background: transparent;
|
||
border: none;
|
||
cursor: pointer;
|
||
isolation: isolate;
|
||
}
|
||
|
||
.cl-child-add-btn::before {
|
||
content: "";
|
||
position: absolute;
|
||
top: 50%;
|
||
left: 50%;
|
||
transform: translate(-50%, -50%);
|
||
width: 24px;
|
||
height: 24px;
|
||
border-radius: 50%;
|
||
border: 1px solid #d9e2ec;
|
||
background: #f0f4f8;
|
||
pointer-events: none;
|
||
z-index: -1;
|
||
}
|
||
|
||
/* Hover/focus: même feedback visuel */
|
||
.cl-child-add-btn:hover::before,
|
||
.cl-child-add-btn:focus-visible::before {
|
||
background: #d9e2ec;
|
||
}
|
||
/* Accessibilité focus clavier sur le hit-area */
|
||
.cl-child-add-btn:focus-visible {
|
||
outline: 2px solid #2563eb;
|
||
outline-offset: 2px;
|
||
border-radius: 8px; /* outline carré autour du hit-area */
|
||
}
|
||
|
||
@media (pointer: coarse) {
|
||
.cl-child-add-btn {
|
||
width: 56px;
|
||
height: 56px;
|
||
font-size: 22px;
|
||
}
|
||
.cl-child-table caption {
|
||
padding-right: 72px;
|
||
}
|
||
}
|
||
|
||
/* Colonnes égales (3 adultes) via colgroup */
|
||
.cl-child-table col.cl-col {
|
||
width: 33.3333%;
|
||
}
|
||
|
||
/* En-têtes adultes: séparateurs + total à droite */
|
||
.cl-child-table thead th {
|
||
background: #f3f4f6;
|
||
font-weight: 600;
|
||
padding: 6px 8px;
|
||
border-bottom: 1px solid #e5e7eb;
|
||
font-size: 12px;
|
||
text-align: left;
|
||
vertical-align: middle;
|
||
white-space: nowrap;
|
||
border-right: 1px solid #e5e7eb;
|
||
}
|
||
.cl-child-table thead th:last-child {
|
||
border-right: none;
|
||
}
|
||
|
||
.cl-th-inner {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
.cl-th-label {
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
/* Total adulte (réutilise le style global) */
|
||
.cl-summary-adult-total {
|
||
font-size: 12px;
|
||
font-weight: 600;
|
||
color: #1d4ed8;
|
||
}
|
||
|
||
/* Corps: séparateurs + gestion des noms longs */
|
||
.cl-child-table tbody td {
|
||
vertical-align: top;
|
||
padding: 6px 4px;
|
||
border-top: 1px solid #edf2f7;
|
||
border-right: 1px solid #e5e7eb;
|
||
font-size: 12px;
|
||
line-height: 1.35;
|
||
}
|
||
.cl-child-table tbody td:last-child {
|
||
border-right: none;
|
||
}
|
||
|
||
/* Cellules vides: un “—” par adulte, centré, pleine largeur */
|
||
.cl-child-table .cl-empty {
|
||
display: inline-block;
|
||
width: 100%;
|
||
text-align: center;
|
||
color: #9ca3af;
|
||
}
|
||
|
||
.cl-gift-amount {
|
||
margin-left: auto;
|
||
text-align: right;
|
||
color: #627d98;
|
||
white-space: nowrap;
|
||
min-width: fit-content;
|
||
transition: opacity 120ms ease;
|
||
}
|
||
|
||
/* Code couleur par enfant (bordure + header/caption) */
|
||
.cl-child-table.child-pol {
|
||
border-color: #bcd3ff;
|
||
}
|
||
.cl-child-table.child-pol caption,
|
||
.cl-child-table.child-pol thead th {
|
||
background: #eaf2ff;
|
||
border-bottom-color: #bcd3ff;
|
||
}
|
||
|
||
.cl-child-table.child-pep {
|
||
border-color: #b9e3b9;
|
||
}
|
||
.cl-child-table.child-pep caption,
|
||
.cl-child-table.child-pep thead th {
|
||
background: #eaf7ea;
|
||
border-bottom-color: #b9e3b9;
|
||
}
|
||
|
||
.cl-child-table.child-elna {
|
||
border-color: #f3bfd7;
|
||
}
|
||
.cl-child-table.child-elna caption,
|
||
.cl-child-table.child-elna thead th {
|
||
background: #fdeaf3;
|
||
border-bottom-color: #f3bfd7;
|
||
}
|
||
|
||
.cl-child-table.child-bru {
|
||
border-color: #ffd0a8;
|
||
}
|
||
.cl-child-table.child-bru caption,
|
||
.cl-child-table.child-bru thead th {
|
||
background: #fff3e6;
|
||
border-bottom-color: #ffd0a8;
|
||
}
|
||
|
||
.cl-child-table.child-guim {
|
||
border-color: #d3c6ff;
|
||
}
|
||
.cl-child-table.child-guim caption,
|
||
.cl-child-table.child-guim thead th {
|
||
background: #f0eaff;
|
||
border-bottom-color: #d3c6ff;
|
||
}
|
||
|
||
/* ========================================================= */
|
||
/* Modale d’ajout de cadeau */
|
||
/* ========================================================= */
|
||
|
||
.cl-modal {
|
||
display: none;
|
||
}
|
||
.cl-modal.cl-open {
|
||
display: block;
|
||
}
|
||
|
||
.cl-modal-backdrop {
|
||
position: fixed;
|
||
inset: 0;
|
||
background: rgba(17, 24, 39, 0.35);
|
||
z-index: 999;
|
||
}
|
||
|
||
.cl-modal-dialog {
|
||
position: fixed;
|
||
z-index: 1000;
|
||
left: 50%;
|
||
top: 50%;
|
||
transform: translate(-50%, -50%);
|
||
width: min(520px, calc(100% - 24px));
|
||
background: #fff;
|
||
border: 1px solid #d9e2ec;
|
||
border-radius: 8px;
|
||
box-shadow: 0 10px 30px rgba(17, 24, 39, 0.25);
|
||
}
|
||
|
||
.cl-modal-form {
|
||
display: grid;
|
||
gap: 10px;
|
||
padding: 14px;
|
||
}
|
||
|
||
.cl-modal-form h3 {
|
||
margin: 0 0 4px;
|
||
font-size: 16px;
|
||
color: #243b53;
|
||
}
|
||
|
||
.clm-label {
|
||
display: grid;
|
||
gap: 6px;
|
||
font-size: 12px;
|
||
color: #374151;
|
||
}
|
||
|
||
.clm-label input,
|
||
.clm-label select {
|
||
font-size: 12px;
|
||
padding: 6px 8px;
|
||
border: 1px solid #d9e2ec;
|
||
border-radius: 6px;
|
||
}
|
||
|
||
.cl-modal-actions {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
gap: 8px;
|
||
margin-top: 4px;
|
||
}
|
||
|
||
.clm-cancel,
|
||
.clm-ok {
|
||
font-size: 12px;
|
||
padding: 6px 12px;
|
||
border: 1px solid #d9e2ec;
|
||
border-radius: 6px;
|
||
background: #f0f4f8;
|
||
cursor: pointer;
|
||
}
|
||
.clm-ok {
|
||
font-weight: 600;
|
||
color: #1f2933;
|
||
}
|
||
.clm-cancel {
|
||
color: #d03050;
|
||
}
|
||
.clm-cancel:hover,
|
||
.clm-ok:hover {
|
||
background: #d9e2ec;
|
||
}
|
||
|
||
/* Prix: sans spinners, largeur fixe */
|
||
#clm-amount {
|
||
width: 150px;
|
||
font-size: 11px;
|
||
padding: 2px 3px;
|
||
-moz-appearance: textfield; /* Firefox legacy */
|
||
appearance: textfield; /* Standard property (modern browsers) */
|
||
}
|
||
/* Chrome/Safari */
|
||
#clm-amount::-webkit-outer-spin-button,
|
||
#clm-amount::-webkit-inner-spin-button {
|
||
-webkit-appearance: none;
|
||
margin: 0;
|
||
}
|
||
|
||
/* Icônes d’action (éditer / supprimer) à côté du nom du cadeau */
|
||
/* Conteneur de la ligne cadeau: réserve un espace à gauche pour les icônes overlay */
|
||
.cl-gift-item {
|
||
position: relative;
|
||
padding-left: 2px;
|
||
}
|
||
/* Icônes en overlay coin haut-gauche */
|
||
.cl-gift-actions--overlay {
|
||
position: absolute;
|
||
top: 2px;
|
||
left: 2px;
|
||
display: flex;
|
||
gap: 4px;
|
||
opacity: 0.65; /* discrètes */
|
||
transition: opacity 120ms ease;
|
||
}
|
||
.cl-gift-item:hover .cl-gift-actions--overlay {
|
||
opacity: 1; /* plus visibles au survol */
|
||
}
|
||
|
||
.cl-gift-action-btn {
|
||
border: none;
|
||
background: transparent;
|
||
padding: 0;
|
||
cursor: pointer;
|
||
color: #374151;
|
||
line-height: 1;
|
||
}
|
||
.cl-gift-action-btn svg {
|
||
width: 12px;
|
||
height: 12px;
|
||
display: block;
|
||
}
|
||
.cl-gift-delete {
|
||
color: #b91c1c;
|
||
} /* poubelle rouge */
|
||
|
||
/* ========================================================= */
|
||
/* Résumé du budget et Liste détaillée */
|
||
/* ========================================================= */
|
||
|
||
.cl-budget-wrapper {
|
||
margin-top: 4px;
|
||
}
|
||
.cl-budget-wrapper .pf-table {
|
||
font-size: 11px;
|
||
}
|
||
.cl-budget-wrapper .pf-table th,
|
||
.cl-budget-wrapper .pf-table td {
|
||
padding: 4px 4px;
|
||
}
|
||
|
||
.cl-detail-wrapper .pf-table {
|
||
font-size: 11px;
|
||
}
|
||
.cl-detail-wrapper .pf-table th,
|
||
.cl-detail-wrapper .pf-table td {
|
||
padding: 4px 4px;
|
||
}
|
||
|
||
/* Icône devant le titre de fête */
|
||
.cl-occasion-title {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
.cl-occasion-icon {
|
||
width: 20px;
|
||
height: 20px;
|
||
object-fit: contain;
|
||
flex: 0 0 20px;
|
||
filter: none; /* garde les couleurs des SVG/PNG */
|
||
}
|
||
/* clarté de lecture */
|
||
.cl-debt-matrix .cl-matrix-corner {
|
||
font-size: 11px;
|
||
color: #6b7280;
|
||
text-align: left;
|
||
line-height: 1.2;
|
||
min-width: 92px;
|
||
}
|
||
|
||
.cl-debt-matrix td.cl-mtx-diag {
|
||
background-image: repeating-linear-gradient(
|
||
45deg,
|
||
#111827 0,
|
||
#111827 6px,
|
||
#1f2937 6px,
|
||
#1f2937 12px
|
||
);
|
||
color: transparent; /* masque le “—” pour un rendu propre */
|
||
}
|
||
|
||
.cl-debt-matrix td.cl-mtx-owe {
|
||
background: #fff7ed; /* léger orange */
|
||
color: #7c2d12; /* brun/orange foncé */
|
||
font-weight: 600;
|
||
}
|
||
|
||
.cl-debt-matrix td.cl-mtx-empty {
|
||
color: #9ca3af;
|
||
}
|
||
|
||
/* Ligne cadeau: gauche (nom) / droite (prix ou icônes) */
|
||
.cl-gift-line {
|
||
display: flex;
|
||
align-items: baseline;
|
||
width: 100%;
|
||
}
|
||
.cl-gift-desc,
|
||
.cl-gift-link {
|
||
flex: 1 1 auto;
|
||
min-width: 40px;
|
||
}
|
||
|
||
/* Zone droite: prix visible par défaut; icônes masquées */
|
||
.cl-gift-right {
|
||
position: relative;
|
||
min-width: 48px; /* réserve un petit espace */
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
}
|
||
|
||
/* Prix */
|
||
.cl-gift-amount {
|
||
margin-left: auto;
|
||
text-align: right;
|
||
color: #627d98;
|
||
white-space: nowrap;
|
||
transition: opacity 120ms ease;
|
||
}
|
||
|
||
/* Icônes (même zone, positionnées à droite) */
|
||
.cl-gift-actions {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 50%;
|
||
transform: translateY(-50%);
|
||
display: flex;
|
||
gap: 6px;
|
||
opacity: 0;
|
||
pointer-events: none;
|
||
transition: opacity 120ms ease;
|
||
}
|
||
|
||
/* Survol (desktop) ou état actif (mobile): cacher prix, montrer icônes */
|
||
.cl-gift-right:hover .cl-gift-amount,
|
||
.cl-gift-right.is-active .cl-gift-amount,
|
||
.cl-gift-right:focus-within .cl-gift-amount {
|
||
opacity: 0;
|
||
}
|
||
.cl-gift-right:hover .cl-gift-actions,
|
||
.cl-gift-right.is-active .cl-gift-actions,
|
||
.cl-gift-right:focus-within .cl-gift-actions {
|
||
opacity: 1;
|
||
pointer-events: auto;
|
||
}
|
||
|
||
/* Boutons icônes compacts et couleurs */
|
||
.cl-gift-action-btn {
|
||
border: none;
|
||
background: transparent;
|
||
padding: 0;
|
||
cursor: pointer;
|
||
color: #374151;
|
||
line-height: 1;
|
||
}
|
||
.cl-gift-action-btn svg {
|
||
width: 14px;
|
||
height: 14px;
|
||
display: block;
|
||
color: inherit;
|
||
fill: currentColor;
|
||
}
|
||
.cl-gift-delete {
|
||
color: #b91c1c !important;
|
||
}
|
||
.cl-gift-action-btn:focus-visible {
|
||
outline: 2px solid #2563eb;
|
||
outline-offset: 2px;
|
||
}
|
||
|
||
.cl-titlebar {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: 12px;
|
||
flex-wrap: wrap;
|
||
}
|
||
.cl-view-switch {
|
||
display: flex;
|
||
gap: 8px;
|
||
}
|
||
.cl-view-btn {
|
||
padding: 6px 10px;
|
||
border: 1px solid #ddd;
|
||
border-radius: 6px;
|
||
text-decoration: none;
|
||
color: #333;
|
||
background: #f7f7f7;
|
||
}
|
||
.cl-view-btn.is-active {
|
||
background: #333;
|
||
color: #fff;
|
||
border-color: #333;
|
||
}
|
||
|
||
/* Centrage fiable du + dans le cercle (micro-nudge du cercle) */
|
||
.cl-child-add-btn {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
line-height: 1;
|
||
}
|
||
|
||
/* On décale très légèrement le cercle vers le bas pour compenser l’optique du glyphe + */
|
||
.cl-child-add-btn::before {
|
||
transform: translate(-50%, -50%) translateY(0.5px);
|
||
}
|
||
|
||
/* Si nécessaire sur certains mobiles, augmente le nudge */
|
||
@media (pointer: coarse) {
|
||
.cl-child-add-btn::before {
|
||
transform: translate(-50%, -50%) translateY(1px);
|
||
}
|
||
}
|
||
/* === Gift List: Mobile Comfort v2 === */
|
||
@media (pointer: coarse), (max-width: 780px) {
|
||
.pf-gift-list h1 {
|
||
font-size: clamp(24px, 7vw, 30px);
|
||
margin: 10px 0 6px;
|
||
line-height: 1.2;
|
||
}
|
||
.pf-gift-list h2 {
|
||
font-size: clamp(20px, 5.6vw, 24px);
|
||
line-height: 1.25;
|
||
margin: 10px 0 6px;
|
||
}
|
||
.pf-gift-list h3 {
|
||
font-size: clamp(17px, 4.8vw, 20px);
|
||
line-height: 1.3;
|
||
margin: 8px 0 4px;
|
||
}
|
||
|
||
/* Switch de vue plus gros et confortable */
|
||
.cl-view-btn {
|
||
font-size: 18px;
|
||
padding: 12px 14px;
|
||
min-height: 48px;
|
||
border-radius: 10px;
|
||
}
|
||
|
||
/* Grille/listes: un peu plus d’air */
|
||
.cl-occasion-children-tables {
|
||
gap: 12px;
|
||
}
|
||
|
||
/* Tableaux enfant: en-têtes et cellules plus lisibles */
|
||
.cl-child-table thead th {
|
||
padding: 10px 10px;
|
||
font-size: 13.5px;
|
||
}
|
||
.cl-child-table tbody td {
|
||
padding: 10px 8px;
|
||
font-size: 13.5px;
|
||
}
|
||
.cl-summary-adult-total {
|
||
font-size: 13px;
|
||
}
|
||
|
||
/* Bouton + : nous avons déjà agrandi le hit-area; on garde les réglages précédents */
|
||
.cl-child-table caption {
|
||
padding-right: 72px;
|
||
}
|
||
|
||
/* Tables Budget/Tricount/Detail: un cran au‑dessus aussi */
|
||
.cl-budget-wrapper .pf-table,
|
||
.cl-detail-wrapper .pf-table {
|
||
font-size: 13.5px;
|
||
}
|
||
.cl-budget-wrapper .pf-table th,
|
||
.cl-budget-wrapper .pf-table td,
|
||
.cl-detail-wrapper .pf-table th,
|
||
.cl-detail-wrapper .pf-table td {
|
||
padding: 8px 8px;
|
||
}
|
||
}
|