Files
HouseHub/modules/gift-list/gift-list.css
T
2026-01-26 12:22:09 +01:00

670 lines
14 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.
/* ========================================================= */
/* 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 dajout 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 daction (é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 loptique 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 dair */
.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 audessus 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;
}
}