/* cefim.org : le registre du port (23 octobre 2026). Bleu de Méditerranée, sable, terre cuite ; pavillons des signaux maritimes. */
:root {
  --sable: #f6efe2;
  --ecume: #fffdf8;
  --mer: #1f4e9a;
  --nuit: #1d2b3a;
  --terre: #c8402d;
  --gris: #5d6672;
  --trait: #e2d7c2;
  --titre: 'Castoro', Georgia, serif;
  --texte: 'Ysabeau Office', 'Segoe UI', sans-serif;
  --mono: 'Fragment Mono', ui-monospace, monospace;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--ecume); color: var(--nuit); font: 400 18px/1.62 var(--texte); }
a { color: inherit; }
img { max-width: 100%; height: auto; display: block; }
.saut { position: absolute; left: -999px; }
.saut:focus { left: 16px; top: 16px; background: #fff; padding: 8px 12px; z-index: 9; }
.vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.pav { width: 27px; height: 18px; flex: none; border-radius: 1px; box-shadow: 0 0 0 1px rgba(29, 43, 58, .12); }
.pav--grand { width: 36px; height: 24px; }
.pav--geant { width: 84px; height: 56px; }

/* --- l'en-tête : bandeau marin */
.mer { background: var(--mer); color: #fff; background-image: repeating-linear-gradient(170deg, rgba(255,255,255,.04) 0 14px, transparent 14px 28px); }
.mer__in { max-width: 1220px; margin: 0 auto; padding: 22px 24px 0; display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 30px; }
.nom { display: flex; flex-direction: column; text-decoration: none; padding-bottom: 20px; }
.nom__c { font: 400 46px/1 var(--titre); letter-spacing: .01em; margin: 0; }
.nom__s { font: 600 13px/1 var(--mono); text-transform: uppercase; letter-spacing: .14em; color: #bcd0ee; margin-top: 8px; }
.drisse { display: flex; flex-wrap: wrap; gap: 4px; }
.drisse__p { display: flex; flex-direction: column; align-items: center; gap: 7px; padding: 12px 14px 14px; text-decoration: none; font-weight: 700; font-size: 16px; border-radius: 8px 8px 0 0; }
.drisse__p:hover { background: rgba(255, 255, 255, .1); }
.drisse__p--hisse { background: var(--ecume); color: var(--nuit); }
.drisse__p .pav { width: 33px; height: 22px; transition: transform .25s; box-shadow: 0 0 0 2px #fff; }
.drisse__p:hover .pav { transform: translateY(-3px) rotate(-3deg); }

main { max-width: 1220px; margin: 0 auto; padding: 0 24px; }

/* --- accueil : arrivages */
.arrivages { padding: 36px 0 20px; }
.arrivages__devise { font: 400 clamp(25px, 3vw, 36px)/1.22 var(--titre); margin: 0 0 26px; max-width: 900px; }
.arrivages__grille { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 34px; align-items: start; }
.arrivages__grille > * { min-width: 0; }
.carte__img { display: block; overflow: hidden; border-radius: 6px; background: var(--sable); }
.carte__img img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; transition: transform .4s; }
a:hover .carte__img img { transform: scale(1.03); }
.navire { display: flex; flex-direction: column; gap: 10px; text-decoration: none; }
.navire__t { font: 400 clamp(25px, 2.6vw, 32px)/1.2 var(--titre); }
.navire:hover .navire__t { color: var(--terre); }
.navire__d { color: var(--gris); }
.carte__r { display: flex; align-items: center; gap: 8px; font: 600 13px/1.3 var(--mono); color: var(--gris); text-transform: uppercase; letter-spacing: .06em; }
.registre { background: var(--sable); border-radius: 8px; padding: 20px 22px; }
.registre__t { font: 400 24px/1 var(--titre); margin: 0 0 12px; }
.registre table { width: 100%; border-collapse: collapse; }
.registre th { font: 600 11.5px/1 var(--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--gris); text-align: left; padding: 6px 6px 8px 0; border-bottom: 2px solid var(--nuit); }
.registre td { padding: 11px 8px 11px 0; border-bottom: 1px solid var(--trait); vertical-align: top; }
.registre td a { font-weight: 700; text-decoration: none; overflow-wrap: anywhere; }
.registre td a:hover { color: var(--terre); }
.registre__d { font: 400 12.5px/1.5 var(--mono); color: var(--gris); white-space: nowrap; }
.registre__p { width: 40px; }

/* --- les pontons */
.pontons { padding: 30px 0 10px; }
.pontons__t { font: 400 30px/1 var(--titre); margin: 0 0 20px; padding-bottom: 12px; border-bottom: 2px solid var(--nuit); }
.pontons__grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px; }
.ponton { background: #fff; border: 1px solid var(--trait); border-top: 4px solid var(--mer); border-radius: 6px; padding: 18px 20px 20px; min-width: 0; display: flex; flex-direction: column; }
.ponton h3 { margin: 0 0 6px; font: 400 26px/1.1 var(--titre); }
.ponton h3 a { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.ponton__desc { color: var(--gris); font-size: 15.5px; margin: 0 0 14px; }
.ponton__une { display: flex; flex-direction: column; gap: 8px; text-decoration: none; font-weight: 700; line-height: 1.3; margin-bottom: 10px; }
.ponton__une:hover span:last-child { color: var(--terre); }
.ponton ul { list-style: none; margin: 0 0 14px; padding: 0; }
.ponton li { padding: 8px 0; border-top: 1px dashed var(--trait); font-size: 16px; line-height: 1.35; }
.ponton li a { text-decoration: none; overflow-wrap: anywhere; }
.ponton li a:hover { color: var(--terre); }
.ponton__tous { margin-top: auto; font: 600 13px/1 var(--mono); color: var(--mer); text-transform: uppercase; letter-spacing: .05em; }

/* --- rubrique et suites */
.titre-ponton { display: flex; align-items: center; gap: 24px; padding: 40px 0 26px; border-bottom: 2px solid var(--nuit); margin-bottom: 30px; }
.titre-ponton h1 { font: 400 clamp(34px, 4vw, 48px)/1.05 var(--titre); margin: 0 0 6px; }
.titre-ponton p { margin: 0; color: var(--gris); max-width: 760px; }
.escale { padding: 10px 0 50px; }
.escale h2 { display: flex; align-items: center; gap: 12px; font: 400 26px/1.2 var(--titre); margin: 0 0 18px; }
.cartes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px 26px; }
.carte { display: flex; flex-direction: column; gap: 8px; text-decoration: none; }
.carte__t { font: 700 19px/1.3 var(--texte); overflow-wrap: anywhere; }
.carte:hover .carte__t { color: var(--terre); }
.carte__d { font: 400 12.5px/1 var(--mono); color: var(--gris); }

/* --- article : le livre de bord */
.livre { max-width: 800px; margin: 0 auto; padding: 40px 0 26px; }
.livre__pav a { display: inline-flex; align-items: center; gap: 10px; font: 600 13px/1 var(--mono); text-transform: uppercase; letter-spacing: .08em; color: var(--mer); text-decoration: none; }
.livre__tete h1 { font: 400 clamp(31px, 3.8vw, 44px)/1.15 var(--titre); margin: 14px 0 14px; overflow-wrap: anywhere; }
.livre__meta { display: flex; flex-wrap: wrap; gap: 4px 18px; font: 400 13px/1.5 var(--mono); color: var(--gris); margin: 0 0 26px; }
.livre__img { margin: 0 0 30px; }
.livre__img img { border-radius: 6px; }
.texte { overflow-wrap: anywhere; }
.texte h2 { font: 400 28px/1.25 var(--titre); margin: 1.7em 0 .5em; }
.texte h2::before { content: ''; display: block; width: 46px; height: 4px; background: var(--terre); margin-bottom: 14px; }
.texte h3 { font: 700 21px/1.3 var(--texte); margin: 1.4em 0 .4em; }
.texte a { color: var(--mer); text-underline-offset: 3px; }
.texte a:hover { color: var(--terre); }
.texte img { border-radius: 6px; margin: 1em 0; }
.texte blockquote { margin: 1.4em 0; padding: 14px 18px; background: var(--sable); border-left: 4px solid var(--mer); }
.texte table { width: 100%; border-collapse: collapse; margin: 1.4em 0; font-size: 16px; display: block; overflow-x: auto; }
.texte th, .texte td { border: 1px solid var(--trait); padding: 8px 10px; text-align: left; vertical-align: top; }
.texte th { background: var(--sable); }

/* --- formulaire */
.formulaire { margin-top: 26px; background: var(--sable); border-radius: 8px; padding: 20px 22px; }
.formulaire label { display: block; font-weight: 700; margin-bottom: 4px; }
.formulaire input, .formulaire textarea { width: 100%; font: inherit; padding: 9px 11px; border: 1px solid #cbbd9f; border-radius: 4px; background: #fff; }
.formulaire button { font: 700 17px/1 var(--texte); background: var(--mer); color: #fff; border: 0; border-radius: 4px; padding: 13px 22px; cursor: pointer; }
.formulaire button:hover { background: var(--terre); }
.formulaire__ok { background: #e1ecfa; border-left: 4px solid var(--mer); padding: 10px 14px; }
.formulaire__piege { position: absolute; left: -9999px; }

/* --- la capitainerie */
.capitainerie { margin-top: 40px; background: var(--sable); border-top: 6px solid var(--mer); }
.capitainerie__in { max-width: 1220px; margin: 0 auto; padding: 34px 24px 16px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr); gap: 32px; }
.capitainerie__nom .nom__c { font-size: 36px; }
.capitainerie__nom p:last-child { color: var(--gris); max-width: 360px; }
.capitainerie ul { list-style: none; margin: 0; padding: 0; }
.capitainerie li { margin: 0 0 9px; }
.capitainerie li a { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; }
.capitainerie li a:hover { color: var(--terre); }
.capitainerie__avis { max-width: 1220px; margin: 0 auto; padding: 14px 24px 26px; font-size: 15px; color: var(--gris); }

@media (max-width: 1000px) {
  .arrivages__grille { grid-template-columns: minmax(0, 1fr); }
  .pontons__grille, .cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .capitainerie__in { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .capitainerie__nom { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  body { font-size: 17px; }
  .mer__in, main, .capitainerie__in, .capitainerie__avis { padding-left: 16px; padding-right: 16px; }
  .nom { padding-bottom: 14px; }
  .nom__c { font-size: 40px; }
  .drisse { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; gap: 2px; }
  .drisse__p { padding: 10px 4px 12px; font-size: 14.5px; }
  .pontons__grille, .cartes { grid-template-columns: minmax(0, 1fr); }
  .registre__d { white-space: normal; }
  .titre-ponton { flex-direction: column; align-items: flex-start; gap: 12px; }
  .capitainerie__in { grid-template-columns: minmax(0, 1fr); }
}
