/*
Theme Name: Florent C. Darras
Theme URI: https://example.com/
Author: Studio
Description: A typographic portfolio theme for a composer and sound artist.
Version: 2.2.0
Text Domain: florent-darras
*/

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,500;0,600;0,700;0,800;1,700&family=Inter:wght@500;600;700&display=swap');

:root {
  --ink: #14031f;
  --paper: #f5f1ed;
  --muted-paper: rgba(245, 241, 237, .88);
  --nav: 'Inter', Arial, sans-serif;
  --display: 'Barlow Condensed', Impact, sans-serif;
}

* { box-sizing: border-box; }
html { background: var(--ink); }
body { margin: 0; background: var(--ink); color: var(--paper); font-family: var(--nav); }
a { color: inherit; text-decoration: none; }

.site-shell { min-height: 100svh; position: relative; overflow: hidden; isolation: isolate; }
.site-shell::before { content: ''; position: absolute; z-index: -2; inset: 0; background: #14031f; }
.ambient-canvas { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; opacity: .45; pointer-events: none; }
.site-header, .site-footer { position: fixed; left: 0; z-index: 5; display: flex; width: 100%; padding: 21px 23px; font-size: 20px; font-weight: 700; line-height: 1; letter-spacing: -.06em; }
.site-header { top: 0; align-items: flex-start; justify-content: space-between; }
.site-footer { bottom: 0; justify-content: center; gap: 12px; }
.identity { width: 275px; }
.primary-nav { display: flex; gap: 16px; }
.utility-nav { display: flex; width: 275px; justify-content: flex-end; gap: 14px; }
.menu, .menu ul { display: flex; list-style: none; margin: 0; padding: 0; gap: 16px; }
.menu-item-has-children { position: relative; }
.menu-item-has-children > .sub-menu { display: none; position: absolute; top: calc(100% + 12px); left: -9px; min-width: 160px; flex-direction: column; gap: 8px; padding: 11px 10px; background: var(--paper); color: var(--ink); border-radius: 3px; letter-spacing: -.04em; }
.menu-item-has-children:hover > .sub-menu, .menu-item-has-children:focus-within > .sub-menu { display: flex; }
.primary-nav a, .utility-nav a, .site-footer a { transition: opacity .2s ease; }
.primary-nav a:hover, .utility-nav a:hover, .site-footer a:hover { opacity: .55; }

.home-intro { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr); min-height: 100svh; place-items: center; padding: 90px 7vw; }
.home-title { position: absolute; top: 50%; right: auto; left: 0; display: grid; justify-items: start; width: min(900px, 100%); min-width: 0; margin: 0; color: #100016; font-family: var(--display); font-size: clamp(85px, 10.7vw, 205px); font-weight: 800; line-height: .50; letter-spacing: -.035em; text-align: left; text-transform: lowercase; transform: translateY(-50%) scaleX(.84) scaleY(2.25); transform-origin: left center; -webkit-text-stroke: 1px transparent; animation: none; }
.home-title span { display: block; justify-self: start; }
.home-title span:first-child { white-space: nowrap; }
.home-title .ampersand { font-size: .88em; }
@keyframes iridescent-title {
  0%, 66%, 83%, 100% { color: #100016; -webkit-text-fill-color: #100016; -webkit-text-stroke-color: transparent; text-shadow: none; }
  68.2% { color: rgba(16,0,22,.82); -webkit-text-fill-color: rgba(16,0,22,.82); -webkit-text-stroke-color: rgba(255,90,171,.03); text-shadow: none; }
  69.4% { color: #100016; -webkit-text-fill-color: #100016; -webkit-text-stroke-color: transparent; text-shadow: none; }
  70.3% { color: rgba(16,0,22,.28); -webkit-text-fill-color: rgba(16,0,22,.28); -webkit-text-stroke-color: rgba(255,90,171,.12); text-shadow: none; }
  71.1% { color: rgba(16,0,22,.9); -webkit-text-fill-color: rgba(16,0,22,.9); -webkit-text-stroke-color: rgba(255,90,171,.02); text-shadow: none; }
  72.3% { color: transparent; -webkit-text-fill-color: transparent; -webkit-text-stroke-color: rgba(128,255,165,.16); text-shadow: none; }
  73% { color: rgba(16,0,22,.55); -webkit-text-fill-color: rgba(16,0,22,.55); -webkit-text-stroke-color: rgba(128,255,165,.07); text-shadow: none; }
  74.2% { color: transparent; -webkit-text-fill-color: transparent; -webkit-text-stroke-color: rgba(255,126,62,.38); text-shadow: none; }
  75.1% { color: rgba(16,0,22,.2); -webkit-text-fill-color: rgba(16,0,22,.2); -webkit-text-stroke-color: rgba(255,126,62,.18); text-shadow: none; }
  76.6% { color: transparent; -webkit-text-fill-color: transparent; -webkit-text-stroke-color: rgba(128,255,165,.52); text-shadow: none; }
  78.2% { color: rgba(16,0,22,.46); -webkit-text-fill-color: rgba(16,0,22,.46); -webkit-text-stroke-color: rgba(128,255,165,.12); text-shadow: none; }
  80.2% { color: #100016; -webkit-text-fill-color: #100016; -webkit-text-stroke-color: rgba(128,255,165,.02); text-shadow: none; }
}
@media (prefers-reduced-motion: reduce) { .home-title { animation: none; } }

.overlay { position: fixed; z-index: 10; inset: 0; display: grid; place-items: center; padding: 84px 8vw 66px; background: rgba(22,0,29,.12); opacity: 0; pointer-events: none; transition: opacity .28s ease; }
.overlay.is-open { opacity: 1; pointer-events: auto; }
.overlay-panel { position: relative; width: min(980px, 100%); max-height: 100%; overflow: auto; padding: clamp(28px,5vw,75px); background: var(--muted-paper); color: var(--ink); box-shadow: 0 18px 60px rgba(0,0,0,.32); transform: translateY(18px) scale(.98); transition: transform .32s cubic-bezier(.2,.8,.2,1); }
.overlay.is-open .overlay-panel { transform: translateY(0) scale(1); }
.overlay-close { position: absolute; top: 17px; right: 19px; padding: 0; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-family: var(--display); font-size: 39px; line-height: .7; }
.overlay-kicker { margin: 0 0 18px; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.overlay-content h1, .overlay-content h2 { max-width: 700px; margin: 0 0 28px; font-family: var(--display); font-size: clamp(60px, 9vw, 125px); font-weight: 800; letter-spacing: -.06em; line-height: .78; text-transform: lowercase; }
.overlay-content p, .overlay-content li { max-width: 620px; font-size: clamp(16px, 1.7vw, 21px); line-height: 1.45; }
.overlay-content a { text-decoration: underline; text-underline-offset: .15em; }
.overlay-loading { font-family: var(--display); font-size: 58px; font-weight: 800; letter-spacing: -.05em; }

@media (max-width: 760px) {
  .site-header, .site-footer { padding: 17px; font-size: 15px; }
  .identity, .utility-nav { width: auto; }
  .primary-nav { position: fixed; top: 58px; right: 17px; flex-wrap: wrap; justify-content: flex-end; max-width: 260px; gap: 8px 11px; font-size: 14px; }
  .site-footer { justify-content: flex-start; }
  .home-title { font-size: clamp(85px, 23vw, 155px); line-height: .72; }
  .overlay { padding: 75px 17px 55px; }
  .overlay-panel { padding: 45px 25px 32px; }
}
.menu-sheet, .detail-sheet { height: auto; max-height: calc(100svh - var(--sheet-top,82px) - 22px); background: transparent; color: var(--paper); }.menu-sheet button, .detail-sheet button { color: var(--paper); border-bottom-color: rgba(245,241,237,.8); }.menu-sheet button:hover, .detail-sheet button:hover { color: rgba(245,241,237,.58); }
@media (max-width: 760px) {
  .home-title { width: 100%; font-size: clamp(51px, 14.5vw, 78px); line-height: .55; transform: translateY(-50%) scaleX(.84) scaleY(1.85); }
}
@media (min-width: 761px) and (max-height: 650px) {
  .home-title { font-size: clamp(58px, 9vw, 145px); transform: translateY(-50%) scaleX(.84) scaleY(1.65); }
}

/* Test WordPress : navigation en cascade compacte. */
.site-header { z-index: 6; display: block; padding: 0; pointer-events: none; }
.identity, .primary-nav, .utility-nav { pointer-events: auto; }
.identity { position: fixed; top: 21px; left: 23px; width: auto; color: var(--paper); }
.utility-nav { position: fixed; top: 21px; right: 23px; width: auto; font-size: 16px; }
.primary-nav { position: fixed; top: 82px; left: 23px; display: flex; flex-direction: column; gap: 3px; font-size: 22px; }
.primary-nav button { padding: 0; border: 0; background: transparent; color: var(--paper); font: inherit; cursor: pointer; letter-spacing: -.055em; }
.primary-nav button:hover { color: rgba(245,241,237,.55); }
.overlay { z-index: 4; inset: 0; display: block; padding: 0; background: transparent; transition: none; }
.overlay-panel { position: absolute; top: var(--sheet-top,82px); bottom: auto; height: min(68svh, 610px); max-height: none; overflow: auto; border-radius: 0; box-shadow: none; color: var(--ink); opacity: 0; pointer-events: none; transform: none; transition: none; }
.menu-sheet { top: var(--sheet-top,82px); left: 190px; width: 158px; padding: 0 13px 17px; background: rgba(255,255,253,.94); }
.detail-sheet { left: 348px; width: 158px; padding: 17px 13px; background: rgba(255,255,253,.94); }
.content-sheet { left: 506px; width: min(310px,calc(100vw - 529px)); padding: 28px 30px; background: rgba(255,255,253,.95); }
.overlay.level-2 .menu-sheet, .overlay.level-3 .menu-sheet, .overlay.level-3 .detail-sheet, .overlay.content-open .menu-sheet, .overlay.content-open .detail-sheet, .overlay.content-open .content-sheet { opacity: 1; pointer-events: auto; transform: none; }
.overlay.direct-open .content-sheet { left: 190px; width: min(480px,calc(100vw - 213px)); opacity: 1; pointer-events: auto; }.overlay.direct-open .menu-sheet, .overlay.direct-open .detail-sheet { display: none; }
.overlay.content-open .detail-sheet { display: none; }.overlay.content-open .content-sheet { left: 348px; width: min(480px,calc(100vw - 371px)); }
.content-sheet { top: var(--content-top,var(--sheet-top,82px)); }
@media (min-width: 761px) {
  .primary-nav { left: auto; right: 23px; align-items: flex-end; }.primary-nav button { text-align: right; }
  .menu-sheet { left: auto; right: 190px; }.detail-sheet { left: auto; right: 348px; }.content-sheet { left: auto; right: 348px; }
  .overlay.direct-open .content-sheet { left: auto; right: 190px; }.overlay.content-open .content-sheet { left: auto; right: 348px; }
}
@media (max-width: 760px) {
  .primary-nav { left: auto; right: 17px; align-items: flex-end; }.primary-nav button { text-align: right; }
}
.primary-nav { top: 16svh; left: 23px; right: auto; align-items: flex-start; }.primary-nav button { text-align: left; }
.primary-nav button { font-weight: 500; }
@media (min-width: 761px) {
  .menu-sheet { left: 190px; right: auto; }.detail-sheet { left: 348px; right: auto; }.content-sheet { left: 348px; right: auto; }
  .overlay.direct-open .content-sheet { left: 190px; right: auto; }.overlay.content-open .content-sheet { left: 348px; right: auto; }
}
@media (max-width: 760px) { .primary-nav { top: 31svh; left: 17px; right: auto; align-items: flex-start; }.primary-nav button { text-align: left; } }
.home-title { left: 50%; right: auto; display: flex; flex-direction: column; align-items: center; row-gap: .045em; width: 100%; text-align: center; transform: translate(-50%,-50%) scaleX(.84) scaleY(2.25); transform-origin: center center; }
.home-title span { align-self: center; }
@media (max-width: 760px) { .home-title { transform: translate(-50%,-50%) scaleX(.84) scaleY(1.85); } }
@media (min-width: 761px) and (max-height: 650px) { .home-title { transform: translate(-50%,-50%) scaleX(.84) scaleY(1.65); } }
.menu-sheet button.active, .detail-sheet button.active { color: var(--paper); }.menu-sheet:has(button.active) button:not(.active), .detail-sheet:has(button.active) button:not(.active) { opacity: .42; }.menu-sheet button:focus-visible, .detail-sheet button:focus-visible { outline: 1px solid var(--paper); outline-offset: 2px; }
.menu-sheet h2, .detail-sheet h2 { margin: 0 0 14px; font-family: var(--nav); font-size: 18px; line-height: 1; letter-spacing: -.05em; }
.menu-sheet button, .detail-sheet button { display: block; width: 100%; padding: 5px 0; border: 0; border-bottom: 1px solid var(--ink); background: transparent; color: var(--ink); text-align: left; font: 18px/1 var(--nav); letter-spacing: -.045em; cursor: pointer; }
.content-sheet h2 { margin: 0 0 18px; font-size: clamp(47px,5vw,78px); }
.content-sheet p { margin: 0; font-size: 16px; line-height: 1.42; }
.overlay-close { top: 12px; right: 14px; font-size: 28px; }
.contact-trigger { padding: 0; border: 0; background: transparent; color: #FFD6FC; font: inherit; font-weight: 700; letter-spacing: -.06em; cursor: pointer; }
.contact-form { display: grid; gap: 14px; max-width: 300px; }.contact-form label { display: grid; gap: 5px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }.contact-form input, .contact-form textarea { width: 100%; border: 1px solid rgba(20,3,31,.45); border-radius: 0; padding: 9px; background: rgba(255,255,255,.32); color: var(--ink); font: 16px var(--nav); resize: vertical; }.contact-form button { justify-self: start; padding: 9px 13px; border: 1px solid var(--ink); border-radius: 0; background: var(--ink); color: var(--paper); font: 600 14px var(--nav); cursor: pointer; }
.primary-nav button.active { color: var(--paper); font-weight: 500; text-shadow: none; }.primary-nav:has(button.active) button:not(.active) { opacity: .42; }.instagram { color: #FFCB8F; }
.language-nav { position: fixed; z-index: 6; bottom: 21px; left: 23px; display: flex; gap: 9px; }.language-nav button { padding: 0; border: 0; background: transparent; color: rgba(245,241,237,.55); font: 700 16px var(--nav); letter-spacing: -.05em; cursor: pointer; }.language-nav button.active { color: #42FFC3; }.language-nav button:hover { color: var(--paper); }
.goodies { position: fixed; z-index: 7; right: 23px; bottom: 21px; display: grid; justify-items: end; gap: 9px; }.goodies-trigger { padding: 0; border: 0; background: transparent; color: rgba(245,241,237,.72); font: 700 16px var(--nav); letter-spacing: -.06em; cursor: pointer; }.goodies-trigger:hover { color: #FFD6FC; }.goodies-panel { display: none; align-items: center; gap: 10px; color: rgba(245,241,237,.9); }.goodies.open .goodies-panel { display: flex; }.goodies-play { width: 25px; height: 25px; padding: 0; border: 1px solid currentColor; border-radius: 50%; background: transparent; color: inherit; font-size: 11px; line-height: 1; }.goodies-panel input { width: 76px; accent-color: #42FFC3; }
/* Halo du titre : 2 s d'apparition, 2 s d'extinction, puis 15 s de repos. */
.home-title { animation: title-halo 30s ease-in-out infinite; }
@keyframes title-halo {
  0%, 13.33%, 100% { -webkit-text-stroke-color: transparent; text-shadow: none; }
  6.67% { -webkit-text-stroke-color: rgba(47,4,48,.72); text-shadow: 0 0 5px rgba(47,4,48,.25); }
}
@media (max-width: 760px) {
  .identity { top: 17px; left: 17px; font-size: 16px; }.utility-nav { top: 17px; right: 17px; font-size: 14px; }.primary-nav { top: 61px; left: 17px; font-size: 19px; }
  .overlay-panel { top: 61px; height: min(72svh,560px); }.menu-sheet { left: 95px; width: 125px; }.detail-sheet { left: 220px; width: 125px; }.content-sheet { left: 345px; width: calc(100vw - 362px); padding: 22px 18px; }.menu-sheet button, .detail-sheet button { font-size: 15px; }
  .overlay.direct-open .content-sheet { left: 17px; width: calc(100vw - 34px); }
  .overlay.content-open .content-sheet { left: 220px; width: calc(100vw - 237px); }
}
/* Content pages scale with the viewport; navigation columns keep their compact size. */
.content-sheet { height: min(76svh,calc(100svh - var(--content-top,var(--sheet-top,82px)) - 24px)); max-height: calc(100svh - var(--content-top,var(--sheet-top,82px)) - 24px); overflow: auto; }
.content-sheet img, .content-sheet video { max-width: 100%; height: auto; }
@media (min-width: 761px) {
  .overlay.content-open .content-sheet { width: min(62vw,calc(100vw - 380px),920px); }
  .overlay.direct-open .content-sheet { width: min(62vw,calc(100vw - 222px),920px); }
}
@media (max-width: 760px) {
  .overlay.content-open, .overlay.direct-open { z-index: 8; }
  .overlay.content-open .menu-sheet { display: none; }
  .overlay.content-open .content-sheet, .overlay.direct-open .content-sheet { top: 61px; left: 17px; right: 17px; width: calc(100vw - 34px); height: calc(100svh - 78px); max-height: calc(100svh - 78px); padding: 28px 23px; }
}
/* Prevent accidental text highlighting on the title and navigation. */
.home-title, .site-header, .menu-sheet button, .detail-sheet button, .goodies-trigger, .goodies-play { -webkit-user-select: none; user-select: none; }
.primary-nav button, .menu-sheet button, .detail-sheet button { text-transform: lowercase; }
/* Third menu level uses the same cascading sheets, aligned to the clicked item. */
.detail-sheet { top: var(--detail-top,var(--sheet-top,82px)); height: auto; max-height: calc(100svh - var(--detail-top,var(--sheet-top,82px)) - 22px); padding-top: 0; }
.overlay.level-3-content-open .menu-sheet, .overlay.level-3-content-open .detail-sheet, .overlay.level-3-content-open .content-sheet { opacity: 1; pointer-events: auto; transform: none; }
.overlay.level-3-content-open .content-sheet { left: 506px; width: min(54vw,calc(100vw - 530px),920px); }
.menu-sheet, .detail-sheet { height: auto; background: transparent; box-shadow: none; color: var(--paper); }
.menu-sheet button, .detail-sheet button { color: var(--paper); border-bottom-color: rgba(245,241,237,.8); }
.menu-sheet button:hover, .detail-sheet button:hover { color: rgba(245,241,237,.58); }
.overlay-content { overflow-wrap: anywhere; }
.overlay-content iframe, .overlay-content embed, .overlay-content object { max-width: 100%; }
/* WordPress' administrator bar must not cover the site identity while editing. */
body.admin-bar .identity, body.admin-bar .utility-nav { top: 53px; }
@media (max-width: 760px) {
  body.admin-bar .identity, body.admin-bar .utility-nav { top: 63px; }
  .overlay.level-3-content-open { z-index: 8; }
  .overlay.level-3-content-open .menu-sheet, .overlay.level-3-content-open .detail-sheet { display: none; }
  .overlay.level-3-content-open .content-sheet { top: 61px; left: 17px; right: 17px; width: calc(100vw - 34px); height: calc(100svh - 78px); max-height: calc(100svh - 78px); padding: 28px 23px; }
}
