1024 lines
25 KiB
CSS
1024 lines
25 KiB
CSS
/* ================================================================
|
|
GMS DESIGN SYSTEM — skin Conquiers ta Vie
|
|
Reprend les variables, reset, typographie et composants du GMS.
|
|
La couleur primaire (purple dans GMS) est remplacée par l'orange CTV.
|
|
================================================================ */
|
|
|
|
@font-face {
|
|
font-family: 'Danzza';
|
|
src: url('../assets/fonts/Danzza-Regular.woff2') format('woff2');
|
|
font-weight: 400;
|
|
}
|
|
@font-face {
|
|
font-family: 'Danzza';
|
|
src: url('../assets/fonts/Danzza-Medium.woff2') format('woff2');
|
|
font-weight: 500;
|
|
}
|
|
@font-face {
|
|
font-family: 'Danzza';
|
|
src: url('../assets/fonts/Danzza-Bold.woff2') format('woff2');
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* ===== VARIABLES GMS ===== */
|
|
:root {
|
|
/* === Variables natives GMS === */
|
|
--color-black: #171717;
|
|
--color-white: white;
|
|
--color-grey-dark: #282828;
|
|
--color-grey: #666666;
|
|
--color-grey-light: #c1c1c1;
|
|
--color-grey-extra-light: #efeded;
|
|
--color-grey-extra-light-transparent: #9d9d9d33;
|
|
|
|
--color-purple-dark: #2d2a60;
|
|
--color-purple: #534bac;
|
|
--color-purple-light: #c8c4ff;
|
|
--color-purple-extra-light: #edecff;
|
|
--color-purple-extra-light-transparent: #a099ff33;
|
|
|
|
--color-green-dark: #1a7c50;
|
|
--color-green: #22b476;
|
|
--color-green-light: #b2e1ca;
|
|
--color-green-extra-light: #e5fff2;
|
|
--color-green-extra-light-transparent: #66ffb233;
|
|
|
|
--color-red-dark: #c80019;
|
|
--color-red: #ff0000;
|
|
--color-red-light: #ffbcbc;
|
|
--color-red-extra-light: #ffebeb;
|
|
--color-red-extra-light-transparent: #ffebeb;
|
|
|
|
--color-orange-dark: #d55600;
|
|
--color-orange: #ff8028;
|
|
--color-orange-extra-light: #fff2df;
|
|
--color-orange-extra-light-transparent: #ffbc6a33;
|
|
|
|
--color-blue: #2884aa;
|
|
--color-blue-extra-light: #e1f6ff;
|
|
--color-blue-extra-light-transparent: #5ad4ff33;
|
|
|
|
--color-pink-dark: #9200a6;
|
|
--color-pink: #ea00ff;
|
|
--color-pink-light: #ebb8f0;
|
|
--color-pink-extra-light: #fde6ff;
|
|
--color-pink-extra-light-transparent: #f280ff33;
|
|
|
|
--size-border-s: 1px;
|
|
--size-border-m: 2px;
|
|
--radius-max: 100px;
|
|
--radius-m: 12px;
|
|
--radius-s: 8px;
|
|
--border: 1px solid var(--color-grey);
|
|
--border-light: 1px solid rgba(0, 0, 0, 0.1);
|
|
--curve: cubic-bezier(0.77, 0, 0.175, 1);
|
|
--timing-transition-duration-1: 0.15s;
|
|
--weight-text-l: 600;
|
|
|
|
--padding-element-interface-xl: 40px;
|
|
--padding-element-interface-l: 30px;
|
|
--padding-element-interface-m: 18px;
|
|
--padding-element-interface-m-fluide: 1.8ch;
|
|
--padding-element-interface-s: 13px;
|
|
--padding-element-interface-xs: 8px;
|
|
--padding-element-interface-xxs: 4px;
|
|
|
|
--gap-l: 1rem;
|
|
--gap-m: 0.8rem;
|
|
--gap-xs: 8px;
|
|
|
|
--size-element-interface-l: 50px;
|
|
--size-element-interface-m: 44px;
|
|
--size-element-interface-s: 32px;
|
|
--size-element-interface-xs: 23px;
|
|
--size-button-s-height: calc(var(--size-element-interface-s) + 5px);
|
|
|
|
--size-text-xl: 1.3rem;
|
|
--size-text-l: 1.1rem;
|
|
--size-text-m: 17px;
|
|
--size-text-s: 0.89rem;
|
|
--size-text-xs: 0.78rem;
|
|
|
|
/* === Aliases GMS → CTV (backward compat) === */
|
|
--gms-text-xl: var(--size-text-xl);
|
|
--gms-text-l: var(--size-text-l);
|
|
--gms-text-m: var(--size-text-m);
|
|
--gms-text-s: var(--size-text-s);
|
|
--gms-text-xs: var(--size-text-xs);
|
|
--gms-weight-l: var(--weight-text-l);
|
|
--gms-el-l: var(--size-element-interface-l);
|
|
--gms-el-m: var(--size-element-interface-m);
|
|
--gms-el-s: var(--size-element-interface-s);
|
|
--gms-el-xs: var(--size-element-interface-xs);
|
|
--gms-gap-xxl: 60px;
|
|
--gms-gap-l: var(--gap-l);
|
|
--gms-gap-m: var(--gap-m);
|
|
--gms-gap-xs: var(--gap-xs);
|
|
--gms-pad-xl: var(--padding-element-interface-xl);
|
|
--gms-pad-l: var(--padding-element-interface-l);
|
|
--gms-pad-m: var(--padding-element-interface-m);
|
|
--gms-pad-s: var(--padding-element-interface-s);
|
|
--gms-pad-xs: var(--padding-element-interface-xs);
|
|
--gms-pad-xxs: var(--padding-element-interface-xxs);
|
|
--gms-radius-l: var(--radius-m);
|
|
--gms-radius-m: var(--radius-s);
|
|
--gms-black: var(--color-black);
|
|
--gms-grey: var(--color-grey);
|
|
--gms-grey-light: var(--color-grey-light);
|
|
--gms-grey-xlight: var(--color-grey-extra-light);
|
|
--gms-white: var(--color-white);
|
|
--gms-bg: #f5f5f5;
|
|
--gms-border: var(--border);
|
|
--gms-border-light: var(--border-light);
|
|
--gms-curve: var(--curve);
|
|
--gms-transition: var(--timing-transition-duration-1);
|
|
|
|
/* === Couleur primaire CTV (orange) === */
|
|
--gms-primary-dark: #c47820;
|
|
--gms-primary: #e8922a;
|
|
--gms-primary-light: #f5c97a;
|
|
--gms-primary-xlight: #fff3e0;
|
|
|
|
/* Dot background */
|
|
--dot-radius: 0.1rem;
|
|
--dot-gap: 0.7rem;
|
|
}
|
|
|
|
/* ===== COLOR PALETTES (portées du GMS) ===== */
|
|
.color-palette-primary,
|
|
.saving {
|
|
--color-dark: var(--color-purple-dark);
|
|
--color-base: var(--color-purple);
|
|
--color-light: var(--color-purple-light);
|
|
--color-extra-light: var(--color-purple-extra-light);
|
|
--color-extra-light-transparent: var(--color-purple-extra-light-transparent);
|
|
}
|
|
.color-palette-valid,
|
|
.copied,
|
|
.published,
|
|
.success {
|
|
--color-dark: var(--color-green-dark);
|
|
--color-base: var(--color-green);
|
|
--color-light: var(--color-green-light);
|
|
--color-extra-light: var(--color-green-extra-light);
|
|
--color-extra-light-transparent: var(--color-green-extra-light-transparent);
|
|
}
|
|
.color-palette-warning,
|
|
.error,
|
|
.failed {
|
|
--color-dark: var(--color-red-dark);
|
|
--color-base: var(--color-red);
|
|
--color-light: var(--color-red-light);
|
|
--color-extra-light: var(--color-red-extra-light);
|
|
--color-extra-light-transparent: var(--color-red-extra-light-transparent);
|
|
}
|
|
.color-palette-caution {
|
|
--color-dark: var(--color-orange-dark);
|
|
--color-base: var(--color-orange);
|
|
--color-extra-light: var(--color-orange-extra-light);
|
|
--color-extra-light-transparent: var(--color-orange-extra-light-transparent);
|
|
}
|
|
.planned,
|
|
.ongoing {
|
|
--color-dark: #1a5c80;
|
|
--color-base: var(--color-blue);
|
|
--color-extra-light: var(--color-blue-extra-light);
|
|
--color-extra-light-transparent: var(--color-blue-extra-light-transparent);
|
|
}
|
|
.draft,
|
|
.abandoned {
|
|
--color-dark: var(--color-grey-dark);
|
|
--color-base: var(--color-grey);
|
|
--color-light: var(--color-grey-light);
|
|
--color-extra-light: var(--color-grey-extra-light);
|
|
--color-extra-light-transparent: var(--color-grey-extra-light-transparent);
|
|
}
|
|
|
|
/* CTV primary palette — orange */
|
|
.color-palette-ctv {
|
|
--color-dark: var(--gms-primary-dark);
|
|
--color-base: var(--gms-primary);
|
|
--color-light: var(--gms-primary-light);
|
|
--color-extra-light: var(--gms-primary-xlight);
|
|
--color-extra-light-transparent: rgba(232, 146, 42, 0.2);
|
|
}
|
|
|
|
/* ===== BOUTONS (portés du GMS) ===== */
|
|
.btn {
|
|
min-height: var(--height, var(--size-element-interface-m));
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding-inline: 1.7ch;
|
|
gap: 0.5em;
|
|
border: none;
|
|
background: none;
|
|
cursor: pointer;
|
|
font-family: 'Danzza', sans-serif;
|
|
font-weight: 500;
|
|
text-decoration: none;
|
|
transition: all var(--timing-transition-duration-1);
|
|
}
|
|
.btn--l {
|
|
--height: var(--size-element-interface-l);
|
|
font-size: var(--size-text-l);
|
|
border-radius: var(--radius-m);
|
|
border-width: var(--size-border-s);
|
|
padding-inline: 2.2ch;
|
|
}
|
|
.btn--m {
|
|
--height: var(--size-element-interface-m);
|
|
font-size: var(--size-text-s);
|
|
border-radius: var(--radius-s);
|
|
border-width: var(--size-border-s);
|
|
}
|
|
.btn--s {
|
|
--height: var(--size-button-s-height);
|
|
padding-inline: var(--padding-element-interface-s);
|
|
font-size: var(--size-text-xs);
|
|
border-radius: var(--radius-s);
|
|
border-width: var(--size-border-s);
|
|
}
|
|
.btn--xs {
|
|
--height: var(--size-element-interface-xs);
|
|
font-size: var(--size-text-xs);
|
|
border-radius: var(--radius-s);
|
|
border-width: var(--size-border-s);
|
|
}
|
|
.btn--square {
|
|
padding-inline: 0;
|
|
width: var(--height);
|
|
}
|
|
.btn--filled {
|
|
background: var(--color-base);
|
|
color: var(--color-white);
|
|
}
|
|
.btn--filled:hover {
|
|
background: var(--color-dark);
|
|
}
|
|
.btn--bordered {
|
|
border-style: solid;
|
|
border-color: var(--color-base);
|
|
background: var(--color-extra-light);
|
|
color: var(--color-base);
|
|
}
|
|
.btn--bordered:hover {
|
|
border-color: var(--color-dark);
|
|
background: var(--color-light, var(--color-extra-light));
|
|
color: var(--color-dark);
|
|
}
|
|
.btn--in-between {
|
|
border-style: solid;
|
|
border-color: var(--color-base);
|
|
background: var(--color-extra-light);
|
|
color: var(--color-base);
|
|
}
|
|
.btn--in-between:hover {
|
|
background: var(--color-base);
|
|
color: var(--color-white);
|
|
}
|
|
.btn:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* Legacy button classes — redéclarées après .btn pour corriger la cascade */
|
|
.btn-p {
|
|
background: var(--gms-primary);
|
|
color: #fff;
|
|
box-shadow: 0 1px 4px rgba(232, 146, 42, 0.3);
|
|
}
|
|
.btn-p:hover:not(:disabled) {
|
|
background: var(--gms-primary-dark, #d07820);
|
|
}
|
|
.btn-s {
|
|
background: #fff;
|
|
color: var(--color-black);
|
|
border: 1px solid var(--gms-grey-light);
|
|
}
|
|
.btn-s:hover:not(:disabled) {
|
|
background: var(--gms-grey-xlight, #f5f5f5);
|
|
}
|
|
.btn-d {
|
|
background: #fee2e2;
|
|
color: #991b1b;
|
|
border: 1px solid #fecaca;
|
|
}
|
|
.btn-d:hover:not(:disabled) {
|
|
background: #fecaca;
|
|
}
|
|
|
|
/* ===== DATA TABLE (portée du GMS) ===== */
|
|
.data-table {
|
|
background-color: var(--color-white);
|
|
border: var(--border);
|
|
border-radius: var(--radius-m);
|
|
max-height: 75vh;
|
|
overflow-y: auto;
|
|
}
|
|
.data-table__table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
}
|
|
.data-table__table thead {
|
|
height: var(--size-element-interface-l);
|
|
position: sticky;
|
|
top: 0;
|
|
background-color: var(--color-white);
|
|
box-shadow: 0px 1px var(--color-black);
|
|
z-index: 10;
|
|
}
|
|
.data-table__table th {
|
|
padding: 1rem;
|
|
text-align: left;
|
|
font-size: 0.875rem;
|
|
font-weight: var(--weight-text-l);
|
|
color: var(--color-black);
|
|
font-family: 'Danzza', sans-serif;
|
|
user-select: none;
|
|
}
|
|
.data-table__table td {
|
|
padding: var(--padding-element-interface-m);
|
|
font-size: var(--size-text-s);
|
|
color: var(--color-black);
|
|
font-family: 'Danzza', sans-serif;
|
|
}
|
|
.data-table__table tbody tr {
|
|
height: var(--size-element-interface-l);
|
|
border-bottom: var(--border-light);
|
|
}
|
|
.data-table__table tbody tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
.data-table__table tbody tr:hover {
|
|
background-color: rgba(0, 0, 0, 0.02);
|
|
}
|
|
.data-table__table th.actions-column {
|
|
width: 120px;
|
|
text-align: center;
|
|
}
|
|
.data-table__table td.actions-cell {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--padding-element-interface-xs);
|
|
}
|
|
|
|
/* ===== STATUS BADGE (portée du GMS) ===== */
|
|
.status-badge {
|
|
display: inline-block;
|
|
border-radius: var(--radius-max);
|
|
padding: var(--padding-element-interface-xxs)
|
|
var(--padding-element-interface-xs);
|
|
color: var(--color-base, var(--color-grey));
|
|
background-color: var(
|
|
--color-extra-light-transparent,
|
|
var(--color-grey-extra-light)
|
|
);
|
|
font-size: var(--size-text-xs);
|
|
font-family: 'Danzza', sans-serif;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ===== TABS (portées du GMS) ===== */
|
|
.tab {
|
|
min-height: var(--height, var(--size-element-interface-m));
|
|
color: var(--color-grey-light);
|
|
border-radius: var(--radius-s);
|
|
padding-inline: var(--padding-element-interface-m-fluide);
|
|
padding-block: 1ch;
|
|
background: transparent;
|
|
border: none;
|
|
cursor: pointer;
|
|
font-family: 'Danzza', sans-serif;
|
|
transition: background var(--timing-transition-duration-1),
|
|
color var(--timing-transition-duration-1);
|
|
}
|
|
.tab--l {
|
|
--height: var(--size-element-interface-m);
|
|
font-size: var(--size-text-xl);
|
|
}
|
|
.tab--m {
|
|
--height: var(--size-element-interface-m);
|
|
font-size: var(--size-text-m);
|
|
}
|
|
.tab--s {
|
|
--height: var(--size-element-interface-m);
|
|
font-size: var(--size-text-s);
|
|
}
|
|
.tab.active {
|
|
background-color: var(--color-purple);
|
|
color: var(--color-white);
|
|
pointer-events: none;
|
|
}
|
|
.tab:not(.active):hover {
|
|
background-color: var(--color-grey-dark);
|
|
}
|
|
|
|
.container__tabs {
|
|
display: flex;
|
|
align-items: center;
|
|
width: fit-content;
|
|
}
|
|
.container__tabs--l {
|
|
--height: var(--size-element-interface-l);
|
|
padding: var(--padding-element-interface-xs);
|
|
gap: var(--padding-element-interface-xs);
|
|
}
|
|
.container__tabs--s {
|
|
--height: var(--size-element-interface-s);
|
|
padding: var(--padding-element-interface-xxs);
|
|
gap: var(--padding-element-interface-xxs);
|
|
}
|
|
.container__tabs--connected {
|
|
background-color: var(--color-black);
|
|
border-radius: var(--radius-m) var(--radius-m) 0 0;
|
|
}
|
|
.container__tabs--full-width {
|
|
width: 100%;
|
|
}
|
|
|
|
/* ===== METRIC CARDS (portées du GMS) ===== */
|
|
.metric-card {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--gap-l);
|
|
padding: 1.5rem;
|
|
background-color: var(--color-white);
|
|
border: var(--border);
|
|
border-radius: var(--radius-m);
|
|
transition: all 0.2s var(--curve);
|
|
}
|
|
.metric-icon {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 3rem;
|
|
height: 3rem;
|
|
background-color: var(--color-purple-extra-light);
|
|
border-radius: 0.75rem;
|
|
flex-shrink: 0;
|
|
}
|
|
.metric-icon i {
|
|
font-size: 1.75rem;
|
|
color: var(--color-purple);
|
|
}
|
|
.metric-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.25rem;
|
|
}
|
|
.metric-value {
|
|
font-size: 2rem;
|
|
font-weight: 700;
|
|
color: var(--color-black);
|
|
line-height: 1;
|
|
font-family: 'Danzza', sans-serif;
|
|
}
|
|
.metric-label {
|
|
font-size: 0.875rem;
|
|
color: var(--color-grey);
|
|
font-weight: 500;
|
|
font-family: 'Danzza', sans-serif;
|
|
}
|
|
.overview-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: var(--gap-l);
|
|
margin-bottom: var(--gap-l);
|
|
}
|
|
|
|
/* ===== CTV THEME OVERRIDES — tabs orange au lieu de purple ===== */
|
|
.gms-page .tab.active,
|
|
.gms-une-classe-wrap .tab.active {
|
|
background-color: var(--gms-primary);
|
|
}
|
|
.gms-page .metric-icon {
|
|
background-color: var(--gms-primary-xlight);
|
|
}
|
|
.gms-page .metric-icon i {
|
|
color: var(--gms-primary);
|
|
}
|
|
|
|
/* ===== RESET PARTIEL (seulement pour les éléments de la home GMS) ===== */
|
|
.gms-page *,
|
|
.gms-header * {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* ===== LAYOUT ROUTES GMS (accueil, une-classe, mes-activites, une-activite, suivi-eleves) ===== */
|
|
/* Cache la sidebar et le header existant sur ces routes */
|
|
body.route-accueil .sb,
|
|
body.route-accueil .overlay-sb,
|
|
body.route-accueil #sbOverlay,
|
|
body.route-une-classe .sb,
|
|
body.route-une-classe .overlay-sb,
|
|
body.route-une-classe #sbOverlay,
|
|
body.route-mes-activites .sb,
|
|
body.route-mes-activites .overlay-sb,
|
|
body.route-mes-activites #sbOverlay,
|
|
body.route-une-activite .sb,
|
|
body.route-une-activite .overlay-sb,
|
|
body.route-une-activite #sbOverlay,
|
|
body.route-suivi-eleves .sb,
|
|
body.route-suivi-eleves .overlay-sb,
|
|
body.route-suivi-eleves #sbOverlay {
|
|
display: none !important;
|
|
}
|
|
body.route-accueil .main,
|
|
body.route-une-classe .main,
|
|
body.route-mes-activites .main,
|
|
body.route-une-activite .main,
|
|
body.route-suivi-eleves .main {
|
|
margin-left: 0;
|
|
}
|
|
body.route-accueil .hdr,
|
|
body.route-une-classe .hdr,
|
|
body.route-mes-activites .hdr,
|
|
body.route-une-activite .hdr,
|
|
body.route-suivi-eleves .hdr {
|
|
display: none;
|
|
}
|
|
body.route-accueil .page,
|
|
body.route-une-classe .page,
|
|
body.route-mes-activites .page,
|
|
body.route-une-activite .page,
|
|
body.route-suivi-eleves .page {
|
|
padding: 0;
|
|
}
|
|
body.route-accueil,
|
|
body.route-une-classe,
|
|
body.route-mes-activites,
|
|
body.route-une-activite,
|
|
body.route-suivi-eleves {
|
|
background-color: var(--gms-bg);
|
|
font-family: 'Danzza', sans-serif;
|
|
}
|
|
body.route-accueil #pageContent,
|
|
body.route-une-classe #pageContent,
|
|
body.route-mes-activites #pageContent,
|
|
body.route-une-activite #pageContent,
|
|
body.route-suivi-eleves #pageContent {
|
|
background-color: #000;
|
|
}
|
|
|
|
/* ===== HEADER GMS ===== */
|
|
.gms-header {
|
|
position: sticky;
|
|
top: 0;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: var(--gms-gap-m) var(--gms-gap-l);
|
|
z-index: 100;
|
|
pointer-events: none;
|
|
}
|
|
.gms-header > * {
|
|
pointer-events: all;
|
|
}
|
|
.gms-header-left,
|
|
.gms-header-right {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--gms-gap-m);
|
|
}
|
|
.gms-header-right {
|
|
font-size: var(--gms-text-xs);
|
|
font-weight: 500;
|
|
}
|
|
.gms-logo {
|
|
font-family: 'Danzza', sans-serif;
|
|
font-size: 1.25rem;
|
|
font-weight: 700;
|
|
color: var(--gms-black);
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
}
|
|
.gms-user-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
min-height: calc(var(--gms-el-s) + 5px);
|
|
padding-inline: var(--gms-pad-s);
|
|
font-size: var(--gms-text-xs);
|
|
border-radius: var(--gms-radius-m);
|
|
border: 1px solid var(--gms-primary);
|
|
background: var(--gms-primary-xlight);
|
|
color: var(--gms-primary);
|
|
cursor: pointer;
|
|
font-family: 'Danzza', sans-serif;
|
|
transition: all var(--gms-transition);
|
|
}
|
|
.gms-user-btn:hover {
|
|
border-color: var(--gms-primary-dark);
|
|
background: var(--gms-primary-light);
|
|
color: var(--gms-primary-dark);
|
|
}
|
|
|
|
/* ===== PAGE CONTAINER ===== */
|
|
.gms-page {
|
|
position: relative;
|
|
max-width: 1400px;
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
font-family: 'Danzza', sans-serif;
|
|
perspective: 1400px;
|
|
}
|
|
|
|
/* ===== NAV TABS (languettes gauche, face interface) ===== */
|
|
.gms-content-area {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
}
|
|
.gms-nav-tabs {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
padding-top: 12px;
|
|
flex-shrink: 0;
|
|
transition: transform 0.4s var(--gms-curve);
|
|
}
|
|
.gms-nav-tabs.tab-down {
|
|
transform: translateX(110%);
|
|
pointer-events: none;
|
|
}
|
|
.gms-nav-tabs.tab-gone {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
.gms-nav-tab {
|
|
padding: 10px 16px;
|
|
border-radius: 14px 0 0 14px;
|
|
background: var(--gms-white);
|
|
color: var(--gms-black);
|
|
font-family: 'Danzza', sans-serif;
|
|
font-size: var(--gms-text-s);
|
|
font-weight: 600;
|
|
white-space: nowrap;
|
|
cursor: pointer;
|
|
transform: translateX(6px);
|
|
transition: transform 0.2s var(--gms-curve), background 0.15s, color 0.15s;
|
|
user-select: none;
|
|
}
|
|
.gms-nav-tab:not(.is-active):hover {
|
|
transform: translateX(0);
|
|
background: var(--gms-grey-xlight);
|
|
}
|
|
.gms-nav-tab.is-active {
|
|
background: var(--gms-primary);
|
|
color: white;
|
|
transform: translateX(0);
|
|
}
|
|
|
|
/* ===== FLIP CARD ===== */
|
|
.gms-flip-card {
|
|
flex: 1;
|
|
min-width: 0;
|
|
display: grid;
|
|
transform-style: preserve-3d;
|
|
transition: transform 0.7s var(--gms-curve);
|
|
transform: rotateY(180deg);
|
|
}
|
|
.gms-flip-card.is-flipped {
|
|
transform: rotateY(0deg);
|
|
}
|
|
.gms-flip-front,
|
|
.gms-flip-back {
|
|
grid-area: 1 / 1;
|
|
backface-visibility: hidden;
|
|
-webkit-backface-visibility: hidden;
|
|
}
|
|
.gms-flip-front .data-table__table thead {
|
|
backface-visibility: hidden;
|
|
-webkit-backface-visibility: hidden;
|
|
transition: transform 0.7s var(--gms-curve);
|
|
}
|
|
.gms-flip-card:not(.is-flipped) .gms-flip-front .data-table__table thead {
|
|
transform: translateY(-4rem);
|
|
}
|
|
.gms-flip-back {
|
|
transform: rotateY(180deg);
|
|
}
|
|
|
|
/* ===== GUIDE (dos de la flip card) ===== */
|
|
.gms-guide-card {
|
|
background: var(--gms-white);
|
|
border: var(--gms-border);
|
|
border-radius: var(--gms-radius-l);
|
|
padding: var(--gms-pad-xl);
|
|
max-height: 75vh;
|
|
overflow-y: auto;
|
|
}
|
|
.gms-guide-layout {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--gms-gap-l);
|
|
}
|
|
.gms-guide-mood {
|
|
width: 100%;
|
|
border-radius: var(--gms-radius-l);
|
|
object-fit: cover;
|
|
display: block;
|
|
}
|
|
.gms-guide-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--gms-gap-l);
|
|
}
|
|
.gms-guide-section {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
.gms-guide-section-title {
|
|
font-size: var(--gms-text-l);
|
|
font-weight: 700;
|
|
color: var(--gms-black);
|
|
margin: 0;
|
|
}
|
|
.gms-guide-section p {
|
|
margin: 0;
|
|
color: var(--gms-grey);
|
|
font-size: var(--gms-text-s);
|
|
line-height: 1.6;
|
|
}
|
|
.gms-flip-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
margin-top: var(--gms-gap-xs);
|
|
}
|
|
|
|
/* ===== LANGUETTE GUIDE ===== */
|
|
.gms-guide-tab {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 3rem;
|
|
z-index: 0;
|
|
width: 48px;
|
|
height: 56px;
|
|
background: var(--gms-primary);
|
|
border-radius: 14px 14px 0 0;
|
|
display: flex;
|
|
padding-top: 5px;
|
|
justify-content: center;
|
|
padding-bottom: 6px;
|
|
cursor: pointer;
|
|
transition: top 0.4s var(--gms-curve);
|
|
box-shadow: 0 4px 16px rgba(232, 146, 42, 0.3);
|
|
user-select: none;
|
|
}
|
|
.gms-guide-tab:not(.tab-down):hover {
|
|
top: -0.5rem;
|
|
}
|
|
.gms-guide-tab.tab-down {
|
|
top: 2rem;
|
|
pointer-events: none;
|
|
}
|
|
.gms-guide-tab.tab-gone {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
.gms-guide-tab img {
|
|
width: 22px;
|
|
height: 22px;
|
|
display: block;
|
|
filter: brightness(0) invert(1);
|
|
}
|
|
.gms-acceder-tab {
|
|
width: auto;
|
|
padding-inline: var(--gms-pad-s);
|
|
gap: 0.4em;
|
|
font-size: var(--gms-text-s);
|
|
font-weight: 700;
|
|
color: white;
|
|
white-space: nowrap;
|
|
}
|
|
.gms-acceder-tab img {
|
|
width: 18px;
|
|
height: 18px;
|
|
display: block;
|
|
filter: brightness(0) invert(1);
|
|
}
|
|
|
|
/* ===== CLASSE ROW ===== */
|
|
.gms-class-link {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
text-decoration: none;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
transition: opacity 0.2s var(--gms-curve);
|
|
}
|
|
.gms-class-link:hover {
|
|
opacity: 0.7;
|
|
}
|
|
.gms-class-thumbnail {
|
|
width: 3rem;
|
|
height: 3rem;
|
|
border-radius: 0.5rem;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 1.1rem;
|
|
font-weight: 700;
|
|
color: white;
|
|
flex-shrink: 0;
|
|
font-family: 'Danzza', sans-serif;
|
|
background-color: var(--gms-primary);
|
|
}
|
|
.gms-class-name {
|
|
font-weight: 500;
|
|
color: var(--gms-black);
|
|
}
|
|
.gms-class-code {
|
|
font-family: monospace;
|
|
font-size: var(--gms-text-s);
|
|
font-weight: 600;
|
|
color: var(--gms-black);
|
|
background: var(--gms-grey-xlight);
|
|
border: 1px solid var(--gms-grey-light);
|
|
border-radius: var(--gms-radius-m);
|
|
padding: 2px 8px;
|
|
letter-spacing: 0.03em;
|
|
white-space: nowrap;
|
|
}
|
|
.gms-class-code-wrap {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
cursor: pointer;
|
|
}
|
|
.gms-code-copy-icon {
|
|
width: 14px;
|
|
height: 14px;
|
|
opacity: 0;
|
|
transition: opacity 0.15s;
|
|
flex-shrink: 0;
|
|
filter: opacity(0.5);
|
|
}
|
|
.gms-class-code-wrap:hover .gms-code-copy-icon {
|
|
opacity: 1;
|
|
}
|
|
.gms-muted {
|
|
color: var(--gms-grey);
|
|
font-size: var(--gms-text-s);
|
|
}
|
|
.gms-dot {
|
|
margin: 0 0.4rem;
|
|
opacity: 0.4;
|
|
}
|
|
|
|
/* ===== PAGE UNE CLASSE ===== */
|
|
/* ===== WRAPPER CONTENU VUE LISTE ===== */
|
|
.gms-page-content {
|
|
background-color: var(--gms-white);
|
|
border: var(--gms-border);
|
|
border-radius: var(--gms-radius-l);
|
|
padding: var(--gms-pad-xl);
|
|
}
|
|
/* Dans une vue liste, le scroll est celui de la page — pas du flip-card (transform-style:preserve-3d bloque overflow) */
|
|
.gms-page-content .data-table {
|
|
max-height: none;
|
|
overflow-y: visible;
|
|
}
|
|
|
|
.gms-une-classe-wrap {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
max-height: 75vh;
|
|
}
|
|
|
|
.gms-une-classe-content {
|
|
flex: 1;
|
|
background-color: var(--gms-white);
|
|
border: var(--gms-border);
|
|
border-radius: 0 var(--gms-radius-l) var(--gms-radius-l) var(--gms-radius-l);
|
|
padding: var(--gms-pad-xl);
|
|
overflow-y: auto;
|
|
min-height: 0;
|
|
}
|
|
|
|
/* ===== SECTIONS PANNEAUX (style metric-card) ===== */
|
|
.gms-sections {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.5rem;
|
|
}
|
|
.gms-section {
|
|
background-color: var(--color-white);
|
|
border: var(--border);
|
|
border-radius: var(--radius-m);
|
|
padding: 1.5rem;
|
|
}
|
|
.gms-section h2 {
|
|
font-size: var(--size-text-xl);
|
|
font-weight: var(--weight-text-l);
|
|
color: var(--color-black);
|
|
margin: 0 0 var(--padding-element-interface-m) 0;
|
|
}
|
|
.gms-section h3 {
|
|
font-size: var(--size-text-l);
|
|
font-weight: var(--weight-text-l);
|
|
color: var(--color-black);
|
|
margin: 0;
|
|
}
|
|
|
|
/* ===== CLASS TABS (languettes classes, haut gauche — même mécanique que .gms-guide-tab) ===== */
|
|
.gms-class-tabs {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 11.6rem;
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 4px;
|
|
transition: top 0.4s var(--gms-curve), opacity 0.3s;
|
|
}
|
|
.gms-class-tabs.tab-down {
|
|
top: 2rem;
|
|
pointer-events: none;
|
|
}
|
|
.gms-class-tabs.tab-gone {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
.gms-class-tab {
|
|
position: relative;
|
|
z-index: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 13px 14px;
|
|
border-radius: 14px 14px 0 0;
|
|
background: var(--gms-white);
|
|
color: var(--gms-black);
|
|
font-family: 'Danzza', sans-serif;
|
|
font-size: var(--gms-text-s);
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
user-select: none;
|
|
border: var(--border-light);
|
|
border-bottom: none;
|
|
transition: all 0.15s, color 0.15s;
|
|
z-index: 0;
|
|
}
|
|
.gms-class-tab:not(.is-active):hover {
|
|
background: var(--gms-grey-xlight);
|
|
transform: translateY(-2rem);
|
|
}
|
|
.gms-class-tab.is-active {
|
|
background: var(--gms-primary);
|
|
color: white;
|
|
box-shadow: 0 4px 16px rgba(232, 146, 42, 0.3);
|
|
transform: translateY(-2rem);
|
|
}
|
|
.gms-class-tab-code {
|
|
max-height: 0;
|
|
overflow: hidden;
|
|
opacity: 0;
|
|
margin-top: 0;
|
|
transition: max-height 0.25s ease, opacity 0.2s ease, margin-top 0.2s ease;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.gms-class-tab:hover .gms-class-tab-code,
|
|
.gms-class-tab.is-active .gms-class-tab-code {
|
|
max-height: 32px;
|
|
opacity: 1;
|
|
margin-top: 6px;
|
|
}
|
|
.gms-tab-code-wrap {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
cursor: pointer;
|
|
}
|
|
.gms-tab-code-wrap code {
|
|
font-family: monospace;
|
|
font-weight: 700;
|
|
letter-spacing: 0.05em;
|
|
font-size: var(--gms-text-xs);
|
|
background: var(--gms-grey-xlight);
|
|
border: 1px solid var(--gms-grey-light);
|
|
border-radius: var(--gms-radius-m);
|
|
padding: 1px 6px;
|
|
}
|
|
.gms-class-tab.is-active .gms-tab-code-wrap code {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
border-color: rgba(255, 255, 255, 0.3);
|
|
color: white;
|
|
}
|
|
.gms-tab-code-wrap .gms-code-copy-icon {
|
|
opacity: 0.55;
|
|
width: 14px;
|
|
height: 14px;
|
|
}
|
|
.gms-tab-code-wrap:hover .gms-code-copy-icon {
|
|
opacity: 1;
|
|
}
|
|
.gms-class-tab.is-active .gms-tab-code-wrap .gms-code-copy-icon {
|
|
filter: brightness(0) invert(1);
|
|
opacity: 0.8;
|
|
}
|