:root { --c-ink: #111; --c-bg: #fff; --c-bg-subtle: #f5f5f5; --c-bg-muted: #f7f7f7; --c-placeholder: #ccc; --c-text-faint: #aaa; --c-text-dim: #555; --font: Arial, sans-serif; --text-xs: 11px; --text-base: 15px; --text-title: 17px; --text-hero: 32px; --text-display: 60px; /* Layout */ --header-h: 60px; --subnav-h: 44px; --sidebar-w: 260px; --info-panel-w: 300px; /* Espacement */ --sp-1: 4px; /* micro : méta, pagination */ --sp-2: 6px; /* compact : icône+texte, tags */ --sp-3: 8px; /* standard : items groupés */ --sp-4: 16px; /* confortable : blocs, groupes */ --sp-5: 24px; /* large : entre sections */ --p-page: 28px; /* gutter horizontal de page */ --p-section: 32px; /* padding vertical sections */ --p-card: 12px; /* padding interne cartes */ --p-btn: 5px 14px; /* padding boutons */ --p-tag: 4px 12px; /* padding tags / pills */ /* Border-radius */ --r-pill: 100px; --r-card: 10px; --r-block: 8px; --r-sm: 6px; --r-xs: 5px; --r-mini: 3px; /* Z-index */ --z-header: 100; --z-subnav: 90; /* Raccourci bordure */ --border: 1px solid var(--c-ink); /* placeholder image */ --placeholder-bg: linear-gradient(to bottom right, transparent calc(50% - .6px), var(--c-placeholder) calc(50% - .6px), var(--c-placeholder) calc(50% + .6px), transparent calc(50% + .6px)), linear-gradient(to bottom left, transparent calc(50% - .6px), var(--c-placeholder) calc(50% - .6px), var(--c-placeholder) calc(50% + .6px), transparent calc(50% + .6px)); } /* ── Reset ──────────────────────────────────────────────── */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: var(--font); font-size: var(--text-base); color: var(--c-ink); background: var(--c-bg); } a { color: inherit; text-decoration: none; } button, select, input { font-family: inherit; font-size: inherit; } /* ════════════════════════════════════════════════════════ COMMUN — header, catégories, cartes, filtres, footer ════════════════════════════════════════════════════════ */ /* ── Header ─────────────────────────────────────────────── */ .site-header { position: sticky; top: 0; z-index: var(--z-header); background: var(--c-bg); border-bottom: var(--border); display: flex; align-items: center; justify-content: space-between; padding: 0 var(--p-page); height: var(--header-h); } .site-logo { font-size: var(--text-title); color: var(--c-ink); flex-shrink: 0; } .header-actions { display: flex; align-items: center; gap: var(--sp-3); flex-shrink: 0; } .header-nav{ flex-grow: 1; margin-left: 6ch; } .header-nav ul{ list-style: none; display: flex; font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.05rem; gap: 4ch; } .header-nav ul li{ } .search-wrap { display: flex; align-items: center; gap: var(--sp-2); border: var(--border); border-radius: var(--r-pill); padding: var(--p-btn); } .search-wrap svg { display: none; } .search-wrap input { background: none; border: none; outline: none; color: var(--c-ink); width: 160px; font-size: var(--text-xs); } .search-wrap input::placeholder { color: var(--c-ink); } .btn-account { border: var(--border); border-radius: var(--r-pill); background: none; color: var(--c-ink); padding: var(--p-btn); cursor: pointer; font-size: var(--text-xs); } .btn-account svg { display: none; } /* ── Nuage de catégories ─────────────────────────────────── */ .category-cloud { display: flex; align-items: center; gap: var(--sp-2); padding: 10px var(--p-page); border-bottom: var(--border); overflow-x: auto; scrollbar-width: none; flex-wrap: nowrap; } .category-cloud::-webkit-scrollbar { display: none; } .category-tag { font-size: var(--text-xs); color: var(--c-ink); padding: var(--p-tag); border-radius: var(--r-pill); border: var(--border); white-space: nowrap; flex-shrink: 0; } /* ── Cartes pièces ───────────────────────────────────────── */ .piece-card { border-radius: var(--r-card); border: var(--border); overflow: hidden; cursor: pointer; display: flex; flex-direction: column; } .card-image { display: block; aspect-ratio: 1; position: relative; overflow: hidden; border-bottom: var(--border); } .card-image::before { content: ''; position: absolute; inset: 0; background: var(--placeholder-bg); } .card-image svg, .card-image img { display: none; } .card-tag { position: absolute; top: 8px; left: 8px; z-index: 1; background: var(--c-bg); color: var(--c-ink); font-size: var(--text-xs); padding: 2px 8px; border-radius: var(--r-pill); border: var(--border); } .card-body { padding: var(--p-card); flex: 1; display: flex; flex-direction: column; gap: 3px; } .card-ref { font-size: var(--text-xs); color: var(--c-ink); letter-spacing: .08em; text-transform: uppercase; } .card-name { font-size: var(--text-title); color: var(--c-ink); margin-top: 2px; line-height: 1.2; } .card-meta { margin-top: var(--sp-3); display: flex; flex-wrap: wrap; gap: var(--sp-1); } .meta-pill { font-size: var(--text-xs); color: var(--c-ink); border: var(--border); border-radius: var(--r-pill); padding: 2px 9px; } /* ── Tags / filtres actifs ───────────────────────────────── */ .filter-tag { display: flex; align-items: center; gap: var(--sp-1); border: var(--border); border-radius: var(--r-pill); padding: 3px 10px 3px 12px; font-size: var(--text-xs); color: var(--c-ink); } .filter-tag button { background: none; border: none; cursor: pointer; color: var(--c-ink); line-height: 1; padding: 0; font-size: var(--text-base); } /* ── Footer ──────────────────────────────────────────────── */ .site-footer { border-top: var(--border); padding: var(--sp-5) var(--p-page); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; font-size: var(--text-xs); color: var(--c-ink); margin-top: 40px; } .footer-logo { font-size: var(--text-title); color: var(--c-ink); } .footer-links { display: flex; gap: 20px; } /* ════════════════════════════════════════════════════════ PAGE CATALOGUE — round.html ════════════════════════════════════════════════════════ */ /* ── Hero ────────────────────────────────────────────────── */ .page-hero { padding: 48px var(--p-page) 44px; display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-5); border-bottom: var(--border); } .page-hero h1 { font-size: var(--text-display); color: var(--c-ink); line-height: .95; font-weight: normal; } /* ── Sélecteur de section ────────────────────────────────── */ .section-switcher { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; padding: 14px var(--p-page); border-bottom: var(--border); } .section-tile { display: flex; flex-direction: column; gap: var(--sp-1); padding: 14px 16px 12px; color: var(--c-ink); border-radius: var(--r-block); border: var(--border); cursor: pointer; position: relative; overflow: hidden; } .tile-name { font-size: var(--text-title); color: var(--c-ink); margin-top: 6px; font-weight: normal; } .tile-items { list-style: none; margin-top: var(--sp-3); display: flex; flex-direction: column; gap: 2px; } .tile-item-sub { font-size: var(--text-xs); color: var(--c-ink); padding-left: 8px; border-left: 1px solid transparent; } .section-tile.active .tile-item-sub.active { border-color: var(--c-ink); } /* ── Layout catalogue ────────────────────────────────────── */ .catalogue-wrap { display: flex; align-items: flex-start; padding: 0 var(--p-page); gap: var(--sp-5); } /* ── Sidebar ─────────────────────────────────────────────── */ .sidebar { width: var(--sidebar-w); flex-shrink: 0; padding: 20px 0; position: sticky; top: var(--header-h); max-height: calc(100vh - var(--header-h)); overflow-y: auto; } .sidebar-title { font-size: var(--text-xs); color: var(--c-ink); letter-spacing: .05em; text-transform: uppercase; margin-bottom: 14px; padding-bottom: 10px; border-bottom: var(--border); } .filter-accordion { border: none; } .filter-accordion-title { list-style: none; display: flex; align-items: center; justify-content: space-between; font-size: var(--text-xs); color: var(--c-ink); cursor: pointer; padding: 6px 0; user-select: none; } .filter-accordion-title::-webkit-details-marker { display: none; } .filter-accordion-title::after { content: '+'; color: var(--c-ink); } .filter-accordion[open] .filter-accordion-title::after { content: '−'; } .filter-accordion-body { padding: 8px 0 4px; display: flex; flex-direction: column; gap: 7px; } .filter-subgroup-label { font-size: var(--text-xs); color: var(--c-ink); font-style: italic; margin-top: 10px; margin-bottom: 7px; } .filter-checkbox-list { list-style: none; display: flex; flex-direction: column; gap: var(--sp-1); } .filter-checkbox-list label { display: flex; align-items: center; gap: var(--sp-3); cursor: pointer; font-size: var(--text-xs); color: var(--c-ink); } .filter-checkbox-list input[type="checkbox"] { accent-color: var(--c-ink); width: 12px; height: 12px; flex-shrink: 0; } .filter-checkbox-list--sub label { padding-left: 4px; } .filter-select { width: 100%; border: var(--border); border-radius: var(--r-sm); padding: 6px 8px; background: var(--c-bg); color: var(--c-ink); font-size: var(--text-xs); outline: none; } .sidebar-divider { border: none; border-top: var(--border); margin: 10px 0; } .btn-reset { width: 100%; padding: 8px; background: none; border: var(--border); border-radius: var(--r-pill); color: var(--c-ink); cursor: pointer; font-size: var(--text-xs); } /* ── Contenu principal ───────────────────────────────────── */ .catalogue-main { flex: 1; min-width: 0; padding: 20px 0; } .catalogue-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; flex-wrap: wrap; gap: 10px; } .toolbar-section { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--text-base); color: var(--c-ink); } .toolbar-section-name { font-size: var(--text-base); } .toolbar-section svg { opacity: .35; flex-shrink: 0; } .num-results{ font-size: var(--text-xs); } .num-results span{ font-weight: bold; } .sort-wrap { display: flex; align-items: center; gap: var(--sp-3); margin-left: auto; } .sort-wrap label { font-size: var(--text-xs); color: var(--c-ink); } .sort-wrap select { border: var(--border); border-radius: var(--r-pill); padding: 5px 24px 5px 10px; background: var(--c-bg); color: var(--c-ink); font-size: var(--text-xs); outline: none; appearance: none; -webkit-appearance: none; } .active-filters { display: flex; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: 18px; min-height: 24px; } /* ── Grille pièces ───────────────────────────────────────── */ .pieces-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--sp-4); } /* ── Pagination ──────────────────────────────────────────── */ .pagination { display: flex; align-items: center; justify-content: center; gap: var(--sp-1); margin-top: var(--p-section); padding-top: 20px; border-top: var(--border); } .page-btn { min-width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border: var(--border); border-radius: var(--r-pill); background: none; color: var(--c-ink); font-size: var(--text-base); cursor: pointer; } .page-btn.active { border-width: 2px; } .page-btn.ellipsis { border: none; cursor: default; pointer-events: none; } /* ════════════════════════════════════════════════════════ PAGE FICHE OBJET — round-object.html ════════════════════════════════════════════════════════ */ /* ── Barre de retour / navigation ───────────────────────── */ .obj-nav { display: flex; align-items: center; gap: var(--sp-4); padding: 0 var(--p-page); height: var(--subnav-h); border-bottom: var(--border); position: sticky; top: var(--header-h); z-index: var(--z-subnav); background: var(--c-bg); } .obj-back { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--text-xs); color: var(--c-ink); flex-shrink: 0; border: var(--border); border-radius: var(--r-pill); padding: var(--p-tag); } .obj-back:hover { background: var(--c-bg-subtle); } .obj-nav-context { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; } .obj-nav-path { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--text-xs); color: var(--c-ink); flex-shrink: 0; } .bc-sep { opacity: .4; } .obj-nav-filters { display: flex; gap: var(--sp-1); flex-wrap: nowrap; overflow: hidden; } .result-nav-filters{ display: flex; color: var(--c-ink); opacity: .6; font-size: var(--text-xs); } .result-nav-filters .filter::after{ content: ', '; padding-right: 0.5ch; } .result-nav-filters .filter:last-of-type::after{ content: '...' } .obj-nav-arrows { display: flex; align-items: center; gap: var(--sp-2); flex-shrink: 0; margin-left: auto; } .obj-arrow { width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; border: var(--border); border-radius: var(--r-pill); background: none; color: var(--c-ink); cursor: pointer; } .obj-position { font-size: var(--text-xs); color: var(--c-ink); white-space: nowrap; } /* ── Conteneur principal ─────────────────────────────────── */ .obj-wrap { padding: 0 var(--p-page); } /* ── En-tête objet ───────────────────────────────────────── */ .obj-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-4); padding: 24px 0 20px; margin-bottom: var(--sp-5); } .obj-ref { font-size: var(--text-xs); color: var(--c-ink); letter-spacing: .1em; text-transform: uppercase; display: block; margin-bottom: var(--sp-1); } .obj-title { font-size: var(--text-hero); font-weight: normal; color: var(--c-ink); line-height: 1.1; margin-top: 0.5em; } .obj-header-actions { display: flex; gap: var(--sp-2); flex-shrink: 0; margin-top: var(--sp-1); } .btn-action { display: flex; align-items: center; gap: var(--sp-2); border: var(--border); border-radius: var(--r-pill); background: none; color: var(--c-ink); padding: var(--p-btn); cursor: pointer; font-size: var(--text-xs); } /* ── Corps : médias + panneau info ───────────────────────── */ .obj-body { display: grid; grid-template-columns: 1fr var(--info-panel-w); gap: 28px; } /* ── Section médias ──────────────────────────────────────── */ .obj-media { display: flex; flex-direction: column; min-width: 0; } .media-tabs { display: flex; border: var(--border); border-radius: var(--r-block) var(--r-block) 0 0; overflow: hidden; border-bottom: none; } .media-tab { flex: 1; display: flex; align-items: center; justify-content: center; gap: var(--sp-2); padding: 8px 10px; background: none; border: none; border-right: var(--border); font-family: inherit; font-size: var(--text-xs); color: var(--c-ink); cursor: pointer; } .media-tab:last-child { border-right: none; } .media-tab.is-active { background: var(--c-ink); color: var(--c-bg); } .media-count { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: var(--r-pill); border: 1px solid currentColor; font-size: var(--text-xs); line-height: 1; } .media-viewer { position: relative; aspect-ratio: 16 / 9; border: var(--border); overflow: hidden; } .media-viewer::before { content: ''; position: absolute; inset: 0; background: var(--placeholder-bg); } .media-viewer-inner { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--sp-2); pointer-events: none; } .media-type-label { font-size: var(--text-base); color: var(--c-ink); } .media-hint { font-size: var(--text-xs); color: var(--c-ink); opacity: .55; } .media-controls { position: absolute; bottom: 10px; right: 10px; display: flex; gap: var(--sp-1); } .ctrl-btn { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; border: var(--border); border-radius: var(--r-sm); background: var(--c-bg); color: var(--c-ink); cursor: pointer; } .ctrl-btn--sep { margin-left: var(--sp-1); } /* ── Vignettes ───────────────────────────────────────────── */ .media-thumbs { display: flex; gap: var(--sp-2); overflow-x: auto; scrollbar-width: none; padding: 10px 12px; border: var(--border); border-top: none; border-radius: 0 0 var(--r-block) var(--r-block); } .media-thumbs::-webkit-scrollbar { display: none; } .thumb { position: relative; flex-shrink: 0; height: 64px; width: 84px; border: var(--border); border-radius: var(--r-xs); overflow: hidden; cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; } .thumb::before { content: ''; position: absolute; inset: 0; background: var(--placeholder-bg); } .thumb-icon { position: relative; z-index: 1; } .thumb-label { position: relative; z-index: 1; font-size: var(--text-xs); color: var(--c-ink); text-align: center; background: rgba(255,255,255,.85); padding: 1px 5px; border-radius: var(--r-mini); } .thumb.is-active { border-width: 2px; } .thumb--portrait { width: 44px; } .thumb--pdf { width: 52px; } .thumb--3d::before { display: none; } .thumb--3d { background: var(--c-bg-subtle); } /* ── Panneau d'informations ──────────────────────────────── */ .obj-info { display: flex; flex-direction: column; border: var(--border); border-radius: var(--r-block); overflow: hidden; align-self: flex-start; position: sticky; top: calc(var(--header-h) + var(--subnav-h)); } .info-list { list-style: none; } .info-row { padding: 14px 16px; display: flex; flex-direction: column; gap: var(--sp-1); } .info-row dt { font-size: var(--text-xs); color: var(--c-ink); text-transform: uppercase; letter-spacing: .08em; } .info-row dd { font-size: var(--text-base); color: var(--c-ink); line-height: 1.5; margin: 0; } .info-sub { font-size: var(--text-xs); color: var(--c-ink); opacity: .6; } .info-divider { border: none; border-top: var(--border); margin: 0; } .btn-contact-cta { display: flex; align-items: center; justify-content: center; gap: var(--sp-2); width: 100%; padding: var(--p-card) 16px; background: none; border: none; border-top: var(--border); color: var(--c-ink); font-family: inherit; font-size: var(--text-xs); cursor: pointer; } /* ── Sections ────────────────────────────────────────────── */ .obj-section { padding: var(--p-section) 0; } .obj-section-title { font-size: var(--text-title); font-weight: normal; color: var(--c-ink); margin-bottom: var(--sp-4); } .obj-description { display: flex; flex-direction: column; gap: 12px; margin-bottom: var(--sp-4); } .obj-description p { font-size: var(--text-base); color: var(--c-ink); line-height: 1.7; max-width: 680px; } .obj-keywords { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-3); } .keyword-tag { font-size: var(--text-xs); color: var(--c-ink); border: var(--border); border-radius: var(--r-pill); padding: 3px 10px; } /* ── Formulaire de contact ───────────────────────────────── */ .contact-form { display: flex; flex-direction: column; gap: 14px; max-width: 640px; } .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } .form-group { display: flex; flex-direction: column; gap: var(--sp-2); } .form-label { font-size: var(--text-xs); color: var(--c-ink); text-transform: uppercase; letter-spacing: .06em; } .form-required { color: var(--c-ink); } .form-input { border: var(--border); border-radius: var(--r-sm); padding: 8px 10px; background: var(--c-bg); color: var(--c-ink); font-family: inherit; font-size: var(--text-base); outline: none; width: 100%; } .form-input[readonly] { background: var(--c-bg-muted); color: var(--c-text-dim); } .form-input::placeholder { color: var(--c-text-faint); } .form-textarea { resize: vertical; min-height: 100px; } .form-footer-row { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4); flex-wrap: wrap; margin-top: var(--sp-1); } .form-note { font-size: var(--text-xs); color: var(--c-ink); opacity: .6; } .btn-submit { border: var(--border); border-radius: var(--r-pill); background: var(--c-ink); color: var(--c-bg); padding: 8px 24px; font-family: inherit; font-size: var(--text-xs); cursor: pointer; } /* ── Pièces similaires ───────────────────────────────────── */ .obj-related-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }