conquiers-ta-vie-proto/css/gms.css
isUnknown ac60ea63ad Note technique : modèle de données révisé, RLS complets, décisions en suspens
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 18:11:53 +02:00

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;
}