// ============================================================ // WEYAL Éditions — LESS principal // // ============================================================ // ── Variables ──────────────────────────────────────────────── @cream: #F5F0E8; @dark: #1A1610; @warm: #C8A96E; @accent: #D4614A; @muted: #8A7E6E; @card: #FDFAF4; @border: rgba(200, 169, 110, 0.2); @font-serif: 'Playfair Display', Georgia, serif; @font-sans: 'DM Sans', system-ui, sans-serif; @radius-sm: 8px; @radius-md: 12px; @radius-lg: 20px; @radius-pill: 100px; @shadow-sm: 0 2px 8px rgba(26,22,16,0.08); @shadow-md: 0 8px 24px rgba(26,22,16,0.12); @shadow-lg: 0 20px 50px rgba(26,22,16,0.15); @transition: all 0.25s ease; // ── Reset / Base ───────────────────────────────────────────── *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; font-size: 16px; } body { font-family: @font-sans; background: @cream; color: @dark; line-height: 1.6; -webkit-font-smoothing: antialiased; } a { color: @accent; text-decoration: none; transition: @transition; } a:hover { color: darken(@accent, 10%); } img { max-width: 100%; height: auto; display: block; } // ── Typographie ─────────────────────────────────────────────── h1, h2, h3, h4, h5 { font-family: @font-serif; font-weight: 900; line-height: 1.1; letter-spacing: -0.02em; } h1 { font-size: clamp(2.2rem, 5vw, 4rem); } h2 { font-size: clamp(1.8rem, 3vw, 2.8rem); } h3 { font-size: 1.4rem; } h4 { font-size: 1.1rem; } p { margin-bottom: 1rem; } p:last-child { margin-bottom: 0; } // ── Boutons ─────────────────────────────────────────────────── .btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.75rem; border-radius: @radius-pill; font-family: @font-sans; font-size: 0.9rem; font-weight: 500; border: 2px solid transparent; cursor: pointer; transition: @transition; text-decoration: none; line-height: 1; &-primary { background: @dark; color: @cream; &:hover { background: @accent; color: #fff; transform: translateY(-2px); box-shadow: 0 8px 25px rgba(212,97,74,0.3); } } &-secondary { background: transparent; border-color: @border; color: @dark; &:hover { border-color: @warm; color: @warm; } } &-accent { background: @accent; color: #fff; &:hover { background: darken(@accent, 8%); transform: translateY(-2px); } } &-sm { padding: 0.5rem 1rem; font-size: 0.9rem; font-weight: 600; } &-danger { background: #dc3545; color: #fff; &:hover { background: darken(#dc3545, 8%); } } } // ── Badges ──────────────────────────────────────────────────── .badge { display: inline-block; padding: 0.2rem 0.65rem; border-radius: @radius-pill; font-size: 0.72rem; font-weight: 600; letter-spacing: 0.02em; &-success { background: #d1fae5; color: #065f46; } &-warning { background: #fef3c7; color: #92400e; } &-danger { background: #fee2e2; color: #991b1b; } &-secondary { background: #f3f4f6; color: #6b7280; } &-info { background: #dbeafe; color: #1e40af; } } // ── Cards ───────────────────────────────────────────────────── .card { background: @card; border: 1px solid @border; border-radius: @radius-lg; padding: 1.5rem; box-shadow: @shadow-sm; transition: @transition; &:hover { box-shadow: @shadow-md; } &__header { border-bottom: 1px solid @border; padding-bottom: 1rem; margin-bottom: 1.5rem; display: flex; align-items: center; justify-content: space-between; } &__title { font-family: @font-serif; font-size: 1.1rem; font-weight: 700; } } // ── Formulaires ─────────────────────────────────────────────── .form-group { margin-bottom: 1.25rem; label { display: block; font-size: 0.8rem; font-weight: 600; margin-bottom: 0.4rem; color: @dark; } } .form-control { width: 100%; padding: 0.75rem 1rem; border: 1px solid @border; border-radius: @radius-md; font-family: @font-sans; font-size: 0.9rem; background: #fff; color: @dark; transition: border-color 0.2s; outline: none; &:focus { border-color: @warm; box-shadow: 0 0 0 3px rgba(200,169,110,0.15); } &::placeholder { color: lighten(@muted, 20%); } &--error { border-color: @accent; } } textarea.form-control { resize: vertical; min-height: 120px; } select.form-control { cursor: pointer; } .form-error { font-size: 0.78rem; color: @accent; margin-top: 0.3rem; display: block; } // ── Alerts ──────────────────────────────────────────────────── .alert { padding: 0.9rem 1.2rem; border-radius: @radius-md; font-size: 0.875rem; margin-bottom: 1.5rem; border-left: 4px solid; &-success { background: #d1fae5; border-color: #10b981; color: #065f46; } &-error { background: #fee2e2; border-color: @accent; color: #991b1b; } &-warning { background: #fef3c7; border-color: #f59e0b; color: #92400e; } &-info { background: #dbeafe; border-color: #3b82f6; color: #1e40af; } } // ── Tables ──────────────────────────────────────────────────── .table-wrapper { overflow-x: auto; border-radius: @radius-md; border: 1px solid @border; } table.table { width: 100%; border-collapse: collapse; font-size: 0.875rem; th { background: #f5f0e8; padding: 0.75rem 1rem; text-align: left; font-weight: 600; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: @muted; white-space: nowrap; border-bottom: 1px solid @border; } td { padding: 0.85rem 1rem; border-bottom: 1px solid @border; vertical-align: middle; } tr:last-child td { border-bottom: none; } tr:hover td { background: rgba(200,169,110,0.04); } } // ── Layout Admin ────────────────────────────────────────────── .admin-wrap { display: flex; min-height: 100vh; } .sidebar { width: 240px; min-width: 240px; background: @dark; color: @cream; display: flex; flex-direction: column; padding: 1.5rem 0; position: fixed; top: 0; left: 0; height: 100vh; overflow-y: auto; z-index: 100; &__logo { padding: 0 1.5rem 1.5rem; font-family: @font-serif; font-size: 1.15rem; font-weight: 900; border-bottom: 1px solid rgba(255,255,255,0.08); margin-bottom: 1rem; span { color: @warm; } } &__section { padding: 0.75rem 1.5rem 0.25rem; font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.12em; color: rgba(245,240,232,0.35); } &__nav a { display: flex; align-items: center; gap: 0.75rem; padding: 0.65rem 1.5rem; color: rgba(245,240,232,0.65); font-size: 0.875rem; font-weight: 400; transition: @transition; border-left: 3px solid transparent; &:hover { color: @cream; background: rgba(255,255,255,0.05); } &.active { color: @cream; border-left-color: @warm; background: rgba(200,169,110,0.1); } .icon { width: 1rem; text-align: center; opacity: 0.7; } } } .admin-main { margin-left: 240px; flex: 1; display: flex; flex-direction: column; min-height: 100vh; } .admin-topbar { background: @card; border-bottom: 1px solid @border; padding: 0.9rem 2rem; display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 50; &__title { font-family: @font-serif; font-size: 1.1rem; font-weight: 700; } &__actions { display: flex; align-items: center; gap: 1rem; font-size: 0.85rem; color: @muted; } } .admin-content { padding: 2rem; flex: 1; } .admin-flash { color: red; font-weight: bold; padding: 10px 0; } // ── Stat Cards (dashboard) ──────────────────────────────────── .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.25rem; margin-bottom: 2rem; } .stat-card { background: @card; border: 1px solid @border; border-radius: @radius-lg; padding: 1.5rem; position: relative; overflow: hidden; &__value { font-family: @font-serif; font-size: 2.2rem; font-weight: 900; line-height: 1; margin-bottom: 0.3rem; } &__label { font-size: 0.8rem; color: @muted; font-weight: 500; } &__icon { position: absolute; right: 1.2rem; top: 1.2rem; font-size: 1.8rem; opacity: 0.4; } &--accent { border-top: 3px solid @accent; } &--warm { border-top: 3px solid @warm; } &--green { border-top: 3px solid #10b981; } &--blue { border-top: 3px solid #3b82f6; } } // ── Pagination ──────────────────────────────────────────────── .pagination { display: flex; gap: 0.4rem; margin-top: 1.5rem; justify-content: center; a, span { display: inline-flex; align-items: center; justify-content: center; width: 2.2rem; height: 2.2rem; border-radius: @radius-sm; font-size: 0.85rem; border: 1px solid @border; color: @dark; transition: @transition; &:hover, &.active { background: @dark; color: @cream; border-color: @dark; } &.disabled { opacity: 0.4; pointer-events: none; } } } // ── Pages légales ───────────────────────────────────────────── .legal-content { max-width: 780px; margin: 0 auto; padding-bottom: 4rem; h2 { font-family: @font-serif; font-size: 1.2rem; font-weight: 700; margin: 2.5rem 0 0.75rem; color: @dark; padding-bottom: 0.4rem; border-bottom: 1px solid @border; } p, li { font-size: 0.925rem; line-height: 1.85; color: #4a4038; margin-bottom: 0.75rem; text-align: justify; } ul { padding-left: 1.5rem; margin-bottom: 1rem; li { margin-bottom: 0.4rem; } } a { color: @warm; &:hover { text-decoration: underline; } } strong { color: @dark; } } .legal-intro { background: rgba(200,169,110,0.08); border-left: 4px solid @warm; border-radius: 0 @radius-md @radius-md 0; padding: 1.25rem 1.5rem; font-size: 0.9rem; line-height: 1.75; color: #4a4038; margin-bottom: 2rem; text-align: justify; } .legal-table { width: 100%; border-collapse: collapse; margin: 1rem 0 1.5rem; font-size: 0.85rem; th { background: @dark; color: @cream; padding: 0.65rem 1rem; text-align: left; font-weight: 600; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.05em; } td { padding: 0.65rem 1rem; border-bottom: 1px solid @border; vertical-align: top; line-height: 1.55; } tr:nth-child(even) td { background: rgba(200,169,110,0.04); } tr:last-child td { border: none; } } @import url('frontend.less?v=time()'); @import url('checkout.less'); @import url('lead_magnet.less'); @import url('lead_widget.less'); @import url('sequences.less'); // ── Responsive ──────────────────────────────────────────────── @media (max-width: 900px) { .sidebar { width: 100%; height: auto; position: relative; } .admin-wrap { flex-direction: column; } .admin-main { margin-left: 0; } .stats-grid { grid-template-columns: repeat(2, 1fr); } }