/* =========================================================
   N'SO KYOTO — styles du site
   Points de rupture repris d'Elementor :
   mobile ≤ 767px · tablette ≤ 1024px · grand écran ≥ 2400px
   ========================================================= */

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
	margin: 0; background: #000; color: #fff;
	font-family: Lato, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 16px; line-height: 1.5; -webkit-font-smoothing: antialiased; overflow-x: hidden;
}
body.nso-lang-ja { font-family: Lato, "Noto Sans JP", sans-serif; }
img, video, iframe { max-width: 100%; }
img { height: auto; vertical-align: middle; border: 0; }
a { color: #4191dd; text-decoration: none; transition: color .3s; }
a:hover { color: #9dcff8; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-family: Jost, sans-serif; font-weight: 500; line-height: 1; color: inherit; }
p { margin: 0 0 .9rem; }
p:last-child { margin-bottom: 0; }
strong, b { font-weight: 700; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px,1px,1px,1px); white-space: nowrap; }
.skip-link:focus { clip: auto; width: auto; height: auto; z-index: 100000; background: #fff; color: #000; padding: 10px 16px; left: 10px; top: 10px; }
.nso-main { display: block; position: relative; }

/* Paragraphes : typographie « Paragraph English » d'Elementor (Lato 1.2em / 1.5) */
.nso-main p, .nso-main li, .nso-prose, .nso-text {
	font-size: 1.2em; line-height: 1.5;
}
.nso-main p p, .nso-main li p, .nso-main li li { font-size: 1em; }
.nso-lang-ja .nso-main p, .nso-lang-ja .nso-main li { font-family: "Noto Sans JP", Lato, sans-serif; font-size: 1.1em; }
@media (max-width: 1024px) { .nso-main p, .nso-main li { font-size: 1.1em; } }
@media (min-width: 2400px) { .nso-main p, .nso-main li { font-size: 1.5em; } }
.nso-main ul, .nso-main ol { padding-left: 1.4em; margin: 0 0 .9rem; }

/* ---------- Header ---------- */
body { padding-top: 70px; }
.nso-header {
	position: fixed; top: 0; left: 0; right: 0; z-index: 9999; height: 70px;
	background: #000; box-shadow: 0 0 10px rgba(0,0,0,.5);
	transition: transform .6s, opacity .6s;
}
.admin-bar .nso-header { top: 32px; }
.nso-header.is-hidden { transform: translateY(-110%); }
.nso-header.is-floating { backdrop-filter: blur(10px); }
.nso-header__in { height: 70px; display: flex; align-items: center; gap: 20px; padding: 10px 20px; justify-content: space-evenly; }
.nso-header__logo { flex: 0 1 20%; display: flex; align-items: center; }
.nso-header__logo img { width: auto; height: 50px; transition: transform .2s; }
.nso-header__logo:hover img { transform: scale(.9); }
.nso-nav { flex: 0 1 60%; position: relative; display: flex; justify-content: center; align-items: center; }
.nso-nav__line { position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: #fff; pointer-events: none; }
.nso-menu-list { list-style: none; margin: 0; padding: 0 10px; display: flex; justify-content: space-between; align-items: center; width: 100%; position: relative; }
.nso-menu-list > li { position: relative; }
.nso-menu-list a {
	display: inline-block; font-family: Jost, sans-serif; font-weight: 600; font-size: 1em; line-height: 20px;
	text-transform: uppercase; color: #fff; text-decoration: none; white-space: nowrap;
}
/* Les titres de menu contiennent <span class="nso-menu"> (repris de l'ancien site) ; sinon on applique le même style au lien. */
.nso-menu-list > li > a > .nso-menu,
.nso-menu-list > li > a:not(:has(span)) {
	display: inline-block; background: #000; color: #fff; border: 2px solid #fff; border-radius: 50px; padding: .2em .7em;
	transition: background .3s, color .3s;
}
.nso-menu-list > li:hover > a > .nso-menu,
.nso-menu-list > li > a:hover > .nso-menu,
.nso-menu-list > li > a:not(:has(span)):hover { background: #fff; color: #000; }
.nso-menu-list .sub-menu {
	position: absolute; top: 100%; left: 50%; transform: translateX(-50%); list-style: none; margin: 0; padding: 10px 0 0;
	display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: max-content;
	opacity: 0; visibility: hidden; transition: opacity .3s, visibility .3s;
}
.nso-menu-list li:hover > .sub-menu, .nso-menu-list li:focus-within > .sub-menu { opacity: 1; visibility: visible; }
.nso-menu-list .sub-menu a { padding: 0; font-size: 1em; }
.nso-menu-list .sub-menu a > .nso-submenu,
.nso-menu-list .sub-menu a:not(:has(span)) {
	display: inline-block; background: #000; color: #fff; border: 2px solid #fff; border-radius: 50px; padding: .2em .7em;
	transition: background .3s, color .3s;
}
.nso-menu-list .sub-menu a:hover > .nso-submenu, .nso-menu-list .sub-menu a:not(:has(span)):hover { background: #fff; color: #000; }
.nso-header__social { flex: 0 1 15%; display: flex; justify-content: center; gap: 20px; }
.nso-header__social a { display: flex; color: #fff; padding: .5em; transition: transform .2s, color .2s; }
.nso-header__social a:hover { transform: scale(.9); color: #c5c5c5; }
.nso-header__social svg { width: 20px; height: 20px; fill: currentColor; }
.nso-header__lang { flex: 0 1 10%; display: flex; justify-content: center; }
.nso-lang { list-style: none; margin: 0; padding: 0; display: flex; gap: 8px; }
.nso-lang a { display: block; width: 30px; height: 30px; border-radius: 50%; overflow: hidden; line-height: 0; }
.nso-lang svg { width: 30px; height: 30px; }
.nso-header .nso-lang a { width: 30px; height: 22.5px; border-radius: 100px; }
.nso-header .nso-lang svg { width: 30px; height: 22.5px; }
.nso-burger { display: none; background: transparent; border: 0; width: 35px; height: 30px; padding: 0; cursor: pointer; margin-left: auto; }
.nso-burger span { display: block; width: 30px; height: 4px; background: #fff; border-radius: 50px; margin: 5px auto 0; }
.nso-burger:hover span { background: #c5c5c5; }

@media (max-width: 1024px) {
	.nso-nav, .nso-header__social, .nso-header__lang { display: none; }
	.nso-header__in { justify-content: space-between; padding: 10px; }
	.nso-header__logo { flex: 0 0 auto; }
	.nso-header__logo img { height: 44px; }
	.nso-burger { display: block; }
}
@media (min-width: 2400px) { .nso-menu-list a { font-size: 1.5em; } }

/* Menu mobile (panneau blanc glissant depuis la gauche) */
.nso-mobile { position: fixed; inset: 0; z-index: 100000; }
.nso-mobile[hidden] { display: none; }
.nso-mobile__backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.6); }
.nso-mobile__panel {
	position: absolute; top: 0; bottom: 0; left: 0; width: 50vw; max-width: 100%; background: #fff; color: #000; z-index: 1;
	padding: 20px; display: flex; flex-direction: column; gap: 40px; overflow-y: auto; animation: nso-slidein .5s ease both;
}
@media (max-width: 880px) { .nso-mobile__panel { width: 70vw; } }
@media (max-width: 767px) { .nso-mobile__panel { width: 91vw; } }
@keyframes nso-slidein { from { transform: translateX(-100%); } to { transform: none; } }
.nso-mobile__close { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; border: 0; background: transparent; color: #000; cursor: pointer; padding: 4px; }
.nso-mobile__close svg { width: 100%; height: 100%; }
.nso-mobile-list, .nso-mobile-list .sub-menu { list-style: none; margin: 0; padding: 0; }
.nso-mobile-list { padding-top: 60px; display: flex; flex-direction: column; gap: 4px; }
.nso-mobile-list a { display: inline-block; color: #000; font-family: Lato, sans-serif; font-weight: 600; font-size: 17px; text-transform: uppercase; padding: 8px 0; }
.nso-mobile-list .sub-menu { padding-left: 14px; display: none; }
.nso-mobile-list li.is-open > .sub-menu { display: block; }
.nso-mobile-list .sub-menu a { font-family: Jost, sans-serif; font-weight: 500; font-size: 1.3em; padding: 4px 0; }
.nso-mobile-list .nso-mobile, .nso-mobile-list .nso-mobile-japanese,
.nso-mobile-list .nso-submenu-mobile, .nso-mobile-list .nso-submenu-mobile-japanese,
.nso-mobile-list .nso-menu, .nso-mobile-list .nso-submenu {
	background: #fff; color: #000; border: 1px solid #000; padding: .2em .5em; border-radius: 50px; transition: background .3s, color .3s;
}
.nso-mobile-list .nso-submenu-mobile, .nso-mobile-list .nso-submenu-mobile-japanese, .nso-mobile-list .nso-submenu { font-size: .9em; }
.nso-mobile-list a:hover > span, .nso-mobile-list a:hover > div { background: #000; color: #fff; }
.nso-mobile-list div { display: inline-block; }
.nso-mobile__foot { display: flex; flex-direction: column; gap: 30px; }
.nso-mobile__social { display: flex; gap: 30px; }
.nso-mobile__social a { color: #000; display: flex; }
.nso-mobile__social svg { width: 25px; height: 25px; fill: currentColor; }

/* ---------- Footer ---------- */
.nso-footer { position: relative; background: #fff; color: #000; padding: 50px; overflow: hidden; }
.nso-footer > canvas, .nso-footer .particles-js-canvas-el { position: absolute; inset: 0; z-index: 0; }
.nso-footer__row, .nso-footer__copy { position: relative; z-index: 1; }
.nso-footer__row { display: flex; gap: 20px; align-items: center; }
.nso-footer__row > * { flex: 1 1 0; min-width: 0; display: flex; justify-content: center; align-items: center; }
.nso-footer__logo img { width: 160px; max-width: 65%; height: auto; transition: opacity .3s; }
.nso-footer__logo a { display: flex; justify-content: center; }
.nso-footer__logo a:hover img { opacity: .7; }
.nso-pills { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; align-items: center; }
.nso-pills li { margin: 0; }
.nso-pills a, .nso-pill-btn {
	display: inline-block; margin: 0; padding: 4px; border: 1px solid #000; border-radius: 50px; color: #000; background: transparent;
	font-family: Lato, sans-serif; font-weight: 600; font-size: 1em; line-height: 1em; text-transform: uppercase; transition: background .3s, color .3s;
}
.nso-pills a:hover, .nso-pill-btn:hover { background: #000; color: #fff; }
.nso-footer__menu .nso-pills { gap: 0; }
.nso-footer__menu .nso-pills li + li { margin-top: 0; }
.nso-footer__menu--2 .nso-pills { gap: 0; }
.nso-footer__social { gap: 20px; }
.nso-footer__social a {
	display: flex; align-items: center; justify-content: center; width: calc(22px + .6em + 2px); height: calc(22px + .6em + 2px);
	border: 1px solid #000; border-radius: 50%; color: #000; background: #fff; transition: transform .3s, background .3s, color .3s;
}
.nso-footer__social a:hover { background: #000; color: #fff; transform: translateY(-4px); }
.nso-footer__social svg { width: 18px; height: 18px; fill: currentColor; }
.nso-footer__copy { text-align: center; font-family: Lato, sans-serif; font-weight: 500; font-size: 1em; padding-top: 20px; }
@media (max-width: 767px) {
	.nso-footer { padding: 50px 20px 30px; }
	.nso-footer__row { flex-direction: column; gap: 50px; }
	.nso-footer__logo img { max-width: 50%; }
	.nso-footer__social a { width: calc(25px + .6em + 2px); height: calc(25px + .6em + 2px); }
	.nso-footer__copy { font-size: .9em; }
}

/* ---------- Bloc Section (conteneur façon Elementor) ---------- */
/* Les réglages passent par des variables CSS ; on les remet à zéro sur chaque section pour qu'elles ne se transmettent pas aux sections imbriquées. */
.nso-section {
	--w: initial; --w-m: initial; --bw: initial; --jc: initial; --jc-m: initial; --ai: initial; --ai-m: initial; --as: initial; --wrap: initial;
	--gap: initial; --gap-m: initial; --mh: initial; --mh-m: initial; --pad: initial; --pad-m: initial; --mar: initial; --mar-m: initial;
	--bgc: initial; --radius: initial; --border: initial; --shadow: initial; --color: initial; --z: initial; --order-m: initial;
}
.nso-section {
	position: relative; display: flex; flex-direction: column;
	width: var(--w, 100%); max-width: 100%; flex: 0 1 auto; min-width: 0;
	min-height: var(--mh, auto); padding: var(--pad, 10px); margin: var(--mar, 0);
	background-color: var(--bgc, transparent); color: var(--color, inherit);
	border-radius: var(--radius, 0); border: var(--border, 0); box-shadow: var(--shadow, none);
	z-index: var(--z, auto); align-self: var(--as, auto);
}
.nso-section.has-bg { overflow: hidden; isolation: isolate; }
.nso-section > .nso-section__inner {
	position: relative; flex: 1 1 auto; width: 100%; margin: 0 auto;
	display: flex; flex-direction: column; gap: var(--gap, 20px);
	justify-content: var(--jc, flex-start); align-items: var(--ai, stretch); flex-wrap: var(--wrap, nowrap);
}
.nso-section.is-boxed > .nso-section__inner { max-width: min(100%, var(--bw, 1140px)); }
.nso-section.dir-row > .nso-section__inner { flex-direction: row; }
.nso-section > .nso-section__inner > * { margin-top: 0; margin-bottom: 0; }
.nso-section__bg, .nso-section__overlay, .nso-section__slides, .nso-bgvideo { position: absolute; inset: 0; border-radius: inherit; }
.nso-section__bg { z-index: -3; background-repeat: no-repeat; background-position: center; background-size: cover; }
.nso-section__bg.is-fixed { background-attachment: fixed; }
@media (hover: none), (max-width: 1024px) { .nso-section__bg.is-fixed { background-attachment: scroll; } }
.nso-section__overlay { z-index: -1; pointer-events: none; }
.nso-bgvideo { z-index: -2; overflow: hidden; pointer-events: none; }
.nso-bgvideo iframe { position: absolute; top: 50%; left: 50%; width: 177.78vh; height: 56.25vw; min-width: 100%; min-height: 100%; transform: translate(-50%, -50%); border: 0; }
.nso-section__slides { z-index: -3; overflow: hidden; }
.nso-slide { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: 0; transform: translateX(-100%); transition: transform 1.5s ease, opacity 0s 1.5s; }
.nso-slide.is-active { opacity: 1; transform: none; transition: transform 1.5s ease; animation: nso-kenburns 10s linear both; }
.nso-slide.is-leaving { opacity: 1; transform: translateX(100%); }
@keyframes nso-kenburns { from { scale: 1; } to { scale: 1.3; } }
.nso-shape { position: absolute; left: 0; width: 100%; height: var(--sh, 50px); z-index: 3; pointer-events: none; line-height: 0; overflow: hidden; }
.nso-shape svg { width: 100%; height: 100%; display: block; }
.nso-shape--top { top: -1px; transform: rotate(180deg); }
.nso-shape--bottom { bottom: -1px; }
.nso-shape--curve.nso-shape--bottom svg { width: 300%; margin-left: -100%; }

@media (max-width: 767px) {
	.nso-section { width: var(--w-m, var(--w, 100%)); min-height: var(--mh-m, var(--mh, auto)); padding: var(--pad-m, var(--pad, 10px)); margin: var(--mar-m, var(--mar, 0)); order: var(--order-m, 0); }
	.nso-section > .nso-section__inner { gap: var(--gap-m, var(--gap, 20px)); justify-content: var(--jc-m, var(--jc, flex-start)); align-items: var(--ai-m, var(--ai, stretch)); }
	.nso-section.dir-m-column > .nso-section__inner { flex-direction: column; }
	.nso-section.dir-m-row > .nso-section__inner { flex-direction: row; }
	.nso-section.dir-row:not(.dir-m-row) > .nso-section__inner { flex-wrap: wrap; }
	.nso-section__bg[style*="--bgm"] { background-image: var(--bgm) !important; }
}

/* Carte « verre » (page About) */
.nso-glass {
	background: radial-gradient(at bottom left, #fff 50%, rgba(255,255,255,.81) 80%);
	border: solid #c5c5c5; border-width: .5px .5px 0 0; border-radius: 16px;
	box-shadow: 0 4px 30px rgba(0,0,0,.1); backdrop-filter: blur(5.3px); -webkit-backdrop-filter: blur(5.3px);
	color: #000;
}

/* ---------- Titres, textes, boutons (classes utilisées dans les pages) ---------- */
.nso-main .wp-block-heading { line-height: 1; }
.nso-title-hero { font-family: Jost, sans-serif; font-weight: 600; font-size: 3em; text-transform: uppercase; letter-spacing: 5px; color: #fff; }
.nso-title-hero.is-large { font-size: 2.5em; }
.nso-title-hero.is-medium { font-size: 30px; line-height: 1.3; text-transform: none; letter-spacing: 0; }
.nso-title-spaced { letter-spacing: 10px; }
.nso-blend { mix-blend-mode: difference; }
@media (max-width: 767px) {
	.nso-title-hero { font-size: 2em; }
	.nso-title-hero.is-large { font-size: 1.3em; }
	.nso-title-hero.is-medium { font-size: 20px; line-height: 1.2; }
}
.nso-keywords { font-family: Jost, sans-serif; font-weight: 500; font-size: 1.2em; text-transform: uppercase; color: #fff; }
@media (max-width: 767px) { .nso-keywords { font-size: 1.1em; } }
.nso-subtitle { font-family: Jost, sans-serif; font-weight: 400; font-size: 1.6em; color: #fff; }
@media (max-width: 767px) { .nso-subtitle { font-size: 1.3em; } }
.nso-divider-title {
	display: flex; align-items: center; gap: 40px; width: 100%;
	font-family: Lato, sans-serif !important; font-weight: 600; font-size: 1.3em; letter-spacing: 5px; text-transform: uppercase; color: currentColor;
}
.nso-divider-title::before, .nso-divider-title::after { content: ""; flex: 1 1 auto; border-top: 1px solid currentColor; }
.nso-divider-title.has-text-align-left::before { flex: 0 0 0; display: none; }
@media (max-width: 767px) { .nso-divider-title { font-size: 1em; gap: 10px; } }
.nso-dropcap > p:first-of-type::first-letter { float: left; font-size: 3.3em; line-height: 1; margin: 0 10px 0 0; font-weight: 500; color: inherit; }

/* Largeurs façon Elementor (« largeur personnalisée ») */
.nso-w-90 { width: 90%; } .nso-w-80 { width: 80%; } .nso-w-70 { width: 70%; } .nso-w-62 { width: 62%; } .nso-w-60 { width: 60%; } .nso-w-50 { width: 50%; }
.nso-w-40 { width: 40%; } .nso-w-35 { width: 35%; } .nso-w-25 { width: 25%; } .nso-w-20 { width: 20%; }
.nso-self-center { align-self: center; } .nso-self-center[class*="nso-w-"] { margin-left: auto; margin-right: auto; } .nso-self-start { align-self: flex-start; } .nso-self-end { align-self: flex-end; }
@media (max-width: 767px) { [class*="nso-w-"] { width: 100%; } .nso-w-m-50 { width: 50%; } .nso-w-m-45 { width: 45%; } }

/* Boutons (pilules) */
.wp-block-buttons.nso-buttons { display: flex; justify-content: center; gap: 10px; }
.nso-main .wp-block-button__link, .nso-btn {
	display: inline-flex; align-items: center; gap: 6px; font-family: Lato, sans-serif; font-weight: 900; font-size: 1em; line-height: 1em;
	text-transform: uppercase; border: 1px solid #fff; border-radius: 50px; padding: 8px; text-decoration: none;
	transition: background .5s, color .5s, border-color .5s, transform .5s;
}
.nso-main .wp-block-button.is-style-nso-outline .wp-block-button__link, .nso-btn--outline { background: transparent; color: #fff; border-color: #fff; }
.nso-main .wp-block-button.is-style-nso-solid .wp-block-button__link, .nso-btn--solid { background: #fff; color: #171717; border-color: transparent; }
.nso-main .wp-block-button.is-style-nso-solid .wp-block-button__link:hover, .nso-btn--solid:hover { background: transparent; color: #fff; border-color: #fff; }
.nso-main .wp-block-button.is-style-nso-outline .wp-block-button__link:hover { color: #fff; }
.nso-main .wp-block-button.is-style-nso-dark .wp-block-button__link { background: #000; color: #fff; border-color: #000; }
.nso-main .wp-block-button.is-style-nso-dark .wp-block-button__link:hover { background: #fff; color: #000; }
.nso-main .wp-block-button__link:hover { animation: nso-wobble-skew .6s ease-in-out; }
.nso-main .wp-block-button.has-arrow .wp-block-button__link::after, .nso-btn.has-arrow::after {
	content: ""; width: .5em; height: 1em; background: currentColor; flex: none;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 512'%3E%3Cpath d='M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z'/%3E%3C/svg%3E") center/contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 512'%3E%3Cpath d='M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z'/%3E%3C/svg%3E") center/contain no-repeat;
}
@keyframes nso-wobble-skew { 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); } 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); } 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); } }
@media (max-width: 767px) { .nso-main .wp-block-button__link { font-size: .9em; padding: 6px; } }

/* Images */
.nso-main .wp-block-image { margin: 0; }
.nso-main .wp-block-image img { max-width: 100%; }
.nso-main .wp-block-image.aligncenter, .nso-main .wp-block-image.aligncenter img { margin-left: auto; margin-right: auto; display: block; }
.nso-main .wp-block-image.nso-img-cover img { width: 100%; height: 500px; object-fit: cover; }
@media (max-width: 767px) { .nso-main .wp-block-image.nso-img-cover img { height: 300px; } }
.nso-main .wp-block-image.nso-bob a, .nso-main .wp-block-image.nso-bob img { transition: transform .3s; }
.nso-main .wp-block-image.nso-bob a:hover img { animation: nso-bob 1s ease-in-out infinite alternate; }
@keyframes nso-bob { from { transform: translateY(-8px); } to { transform: translateY(-4px); } }
.nso-logos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: center; justify-items: center; width: 100%; }
.nso-logos.is-2 { grid-template-columns: repeat(2, 1fr); }
.nso-logos.is-1 { grid-template-columns: 1fr; }
.nso-logos.no-gap { gap: 0; }
.nso-logos > .wp-block-image { width: 100%; text-align: center; }
@media (max-width: 767px) { .nso-logos, .nso-logos.is-2 { grid-template-columns: 1fr; } }

/* Embeds */
.nso-main .wp-block-embed { margin: 0; }
.nso-main .wp-block-embed iframe { width: 100%; }
.nso-video { position: relative; width: 100%; aspect-ratio: 16/9; border-radius: 25px; overflow: hidden; }
.nso-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------- Animations d'apparition ---------- */
.nso-anim { opacity: 0; }
.nso-anim.is-in { animation: nso-fadeIn 1.25s ease both; animation-delay: var(--delay, 0s); }
.nso-anim-fadeInUp.is-in { animation-name: nso-fadeInUp; }
.nso-fadein { animation: nso-fadeIn 2s ease both; animation-delay: var(--delay, 0s); }
@keyframes nso-fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes nso-fadeInUp { from { opacity: 0; transform: translate3d(0, 60px, 0); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .nso-anim { opacity: 1 !important; animation: none !important; } [data-nso-parallax] { transform: none !important; } }
[data-nso-parallax] { will-change: transform; }

/* ---------- Pastilles du logo ---------- */
.nso-bars { display: flex; justify-content: center; align-items: flex-start; gap: 20px; width: 100%; }
.nso-bars--home { transform: scale(.8); padding: 30px 0; }
.nso-bars--home .nso-bar { padding-top: var(--off, 0); }
.nso-bars--home .nso-bar span { display: block; width: 45px; height: 230px; border-radius: 50px; background: #fff; }
.nso-bars--about { gap: 50px; overflow: hidden; padding-top: 0; }
.nso-bars--about .nso-bar { display: flex; flex-direction: column; align-items: center; padding-top: var(--off, 0); }
.nso-bars--about .nso-bar span { width: 30px; height: 130px; border-radius: 70px; background: #fff; }
.nso-bars--about .nso-bar i { width: 2px; height: 300px; background: #fff; }
@media (max-width: 767px) {
	.nso-bars { gap: 0; }
	.nso-bars--home .nso-bar span { width: 30px; height: 150px; }
	.nso-bars--about { gap: 30px; }
	.nso-bars--about .nso-bar span { width: 20px; height: 90px; }
}
.nso-bars-wrap { background: linear-gradient(0deg, #fff 10%, #000 10%); }

/* ---------- Listings (cartes) ---------- */
.nso-listing { width: 100%; }
.nso-listing.is-grid { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: var(--lgap, 25px); }
@media (max-width: 767px) { .nso-listing.is-grid { grid-template-columns: 1fr; } }
.nso-card { position: relative; display: flex; overflow: hidden; color: #fff; text-decoration: none; isolation: isolate; }
.nso-card:hover { color: #fff; }
.nso-card__bg { position: absolute; inset: 0; background-size: cover; background-position: center; z-index: -2; transition: filter 1s; }
.nso-card__bg::after { content: ""; position: absolute; inset: 0; background: #000; opacity: .65; transition: opacity 1s, background 1s; }
.nso-card__body { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 20px; width: 100%; text-align: center; padding: 50px; }
.nso-card__title, .nso-card__sub { transition: transform 1.7s; }
.nso-card:hover .nso-card__title, .nso-card:hover .nso-card__sub { transform: translateY(-30px) scale(1.2); }
.nso-card:hover .nso-card__bg { filter: saturate(0); }
.nso-card:hover .nso-card__bg::after { opacity: .7; background: linear-gradient(180deg, #000, #8e8e8e); }
/* Performances */
.nso-card--project { min-height: 300px; }
.nso-card--project .nso-card__title { font-family: Jost, sans-serif; font-weight: 700; font-size: 1.5em; letter-spacing: 4px; line-height: 1em; }
.nso-card--project .nso-card__sub { font-family: Lato, sans-serif; font-weight: 500; font-size: 1.1em; line-height: 1.1em; }
@media (max-width: 767px) { .nso-card--project .nso-card__body { padding: 30px; } }
/* Consciousness */
.nso-card--consciousness { min-height: 400px; }
.nso-card--consciousness .nso-card__bg::after { opacity: .52; }
.nso-card--consciousness .nso-card__title { font-family: "AB-babywalk", Jost, sans-serif; font-weight: 700; font-size: 1.5em; letter-spacing: 4px; text-transform: uppercase; }
@media (max-width: 767px) { .nso-card--consciousness { min-height: 420px; } .nso-card--consciousness .nso-card__title { font-family: Jost, sans-serif; font-weight: 500; } }
/* Membres (carte à bascule) */
.nso-card--member { height: 400px; border-radius: 15px; }
.nso-card--member .nso-card__bg::after { background: rgba(40,38,38,.35); opacity: 1; }
.nso-card--member .nso-card__body { justify-content: flex-end; gap: 5px; padding: 35px 20px; transition: opacity .6s; }
.nso-card--member .nso-card__title { font-family: Jost, sans-serif; font-weight: 700; font-size: 1.5em; text-transform: uppercase; letter-spacing: 2px; line-height: 1em; }
.nso-card--member .nso-card__sub { font-family: Lato, sans-serif; font-size: 1.1em; line-height: 1.3; }
.nso-card--member:hover .nso-card__title, .nso-card--member:hover .nso-card__sub { transform: none; }
.nso-card--member:hover .nso-card__bg { filter: none; }
.nso-card--member:hover .nso-card__bg::after { background: rgba(0,0,0,.6); opacity: 1; }
.nso-card__back { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .6s; }
.nso-card--member:hover .nso-card__body { opacity: 0; }
.nso-card--member:hover .nso-card__back { opacity: 1; }
.nso-card__btn { font-family: Lato, sans-serif; font-weight: 700; text-transform: uppercase; border: 2px solid #fff; border-radius: 50px; padding: 8px 16px; }

/* Carrousels */
.nso-listing.is-carousel, .nso-gallery { position: relative; }
.nso-car__track {
	display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - (var(--cols, 3) - 1) * var(--lgap, 50px)) / var(--cols, 3));
	gap: var(--lgap, 50px); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; scroll-behavior: smooth;
}
.nso-car__track::-webkit-scrollbar { display: none; }
.nso-car__track > * { scroll-snap-align: start; }
@media (max-width: 767px) { .nso-car__track { grid-auto-columns: 100%; } }
.nso-car__prev, .nso-car__next {
	position: absolute; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border: 0; background: transparent; color: #fff; cursor: pointer; padding: 4px; z-index: 3; opacity: .8;
}
.nso-car__prev { left: -36px; } .nso-car__next { right: -36px; }
.nso-car__prev svg { transform: scaleX(-1); }
.nso-car__prev svg, .nso-car__next svg { width: 100%; height: 100%; fill: currentColor; }
.nso-car__prev:hover, .nso-car__next:hover { opacity: 1; }
.nso-car__prev[disabled], .nso-car__next[disabled] { opacity: .2; cursor: default; }
@media (max-width: 1240px) { .nso-car__prev { left: 0; } .nso-car__next { right: 0; } }
.nso-gallery { --cols: 3; --lgap: 50px; width: 100%; }
.nso-gallery__item { display: block; aspect-ratio: 1; overflow: hidden; border-radius: 5px; }
.nso-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.nso-gallery__item:hover img { transform: scale(1.04); }
.nso-gallery .nso-car__prev, .nso-gallery .nso-car__next { display: none; }

/* Visionneuse */
.nso-lightbox { position: fixed; inset: 0; z-index: 100001; background: rgba(0,0,0,.92); display: flex; align-items: center; justify-content: center; }
.nso-lightbox img { max-width: 92vw; max-height: 88vh; object-fit: contain; }
.nso-lightbox button { position: absolute; background: transparent; border: 0; color: #fff; cursor: pointer; width: 44px; height: 44px; padding: 8px; }
.nso-lightbox button svg { width: 100%; height: 100%; fill: currentColor; }
.nso-lightbox .lb-close { top: 16px; right: 16px; }
.nso-lightbox .lb-prev { left: 12px; top: 50%; transform: translateY(-50%) scaleX(-1); }
.nso-lightbox .lb-next { right: 12px; top: 50%; transform: translateY(-50%); }

/* Titre « pastille » + trait de progression */
.nso-pillhead { display: flex; align-items: center; width: 100%; }
.nso-pill {
	flex: none; font-family: Lato, sans-serif; font-weight: 600; font-size: 1.2em; line-height: .7em; text-transform: uppercase;
	color: #fff; border: 2px solid #fff; border-radius: 50px; padding: 8px; margin: 0;
}
.nso-progress { flex: 1 1 auto; height: 2px; position: relative; }
.nso-progress i { position: absolute; left: 0; top: 0; bottom: 0; width: var(--p, 0%); background: #fff; }
@media (max-width: 767px) { .nso-pillhead { justify-content: center; } .nso-progress { display: none; } .nso-pill { font-size: 1.1em; line-height: .8em; padding: 7px; } }

/* ---------- Accordéon d'images ---------- */
.nso-accordion { display: flex; gap: 20px; height: var(--acc-h, 500px); width: 100%; }
.nso-acc__item { position: relative; flex: 1 1 0; border-radius: 10px; overflow: hidden; background: #fff; cursor: pointer; transition: flex-grow .6s ease; outline: none; }
.nso-acc__item.is-active { flex-grow: 5; }
.nso-acc__img { position: absolute; inset: 0; background-size: cover; background-position: center; }
.nso-acc__cover { position: absolute; inset: 0; background: rgba(23,23,23,.27); transition: background .6s; }
.nso-acc__content { position: absolute; left: 0; right: 0; bottom: 0; padding: 20px; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; opacity: 0; transform: translateY(20px); transition: opacity .4s, transform .4s; pointer-events: none; }
.nso-acc__item.is-active .nso-acc__content { opacity: 1; transform: none; transition-delay: .3s; pointer-events: auto; }
.nso-acc__item.is-active .nso-acc__cover { background: linear-gradient(180deg, rgba(0,0,0,0) 30%, rgba(0,0,0,.75)); }
.nso-acc__title { font-family: Jost, sans-serif; font-weight: 600; font-size: 1.5em; text-transform: uppercase; letter-spacing: 2px; color: #fff; line-height: 1.2; padding: 10px 10px 0; }
.nso-acc__desc { color: #fff; font-family: Lato, sans-serif; font-size: 1.1em; line-height: 1.5; padding: 0 10px; }
.nso-acc__btn { display: inline-block; margin: 10px; padding: 2px 12px; border-radius: 50px; background: #fff; color: #000; font-family: Lato, sans-serif; font-weight: 900; font-size: .8em; text-transform: uppercase; }
.nso-acc__btn:hover { background: #000; color: #fff; }
@media (max-width: 767px) {
	.nso-accordion { flex-direction: column; height: auto; }
	.nso-acc__item { flex: none; height: 80px; }
	.nso-acc__item.is-active { height: 420px; }
	.nso-acc__title { font-size: 1.4em; }
}

/* ---------- Formulaire de contact ---------- */
.nso-form { display: flex; flex-wrap: wrap; gap: 40px 30px; width: 100%; border: 2px solid #c5c5c5; padding: 50px; color: #fff; }
.nso-field { flex: 1 1 100%; display: flex; flex-direction: column; gap: 10px; }
.nso-field--50 { flex: 1 1 calc(50% - 15px); }
.nso-field label { font-family: Lato, sans-serif; font-weight: 300; font-size: 1.1em; color: #c5c5c5; }
.nso-req { color: #c5c5c5; }
.nso-field input, .nso-field textarea, .nso-field select {
	width: 100%; background: transparent; border: 0; border-bottom: 1px solid #c5c5c5; border-radius: 0; color: #fff;
	font-family: Lato, sans-serif; font-size: 1em; padding: 8px; outline: none;
}
.nso-field input:focus, .nso-field textarea:focus, .nso-field select:focus { border-bottom-color: #fff; }
.nso-field textarea { min-height: 70px; resize: vertical; }
.nso-select { position: relative; }
.nso-select select { appearance: none; -webkit-appearance: none; font-weight: 600; cursor: pointer; }
.nso-select select option { color: #000; }
.nso-select::after { content: ""; position: absolute; right: 8px; top: 50%; border: 5px solid transparent; border-top-color: #fff; margin-top: -2px; pointer-events: none; }
.nso-form__actions { flex: 1 1 100%; display: flex; justify-content: center; }
.nso-form__send { background: #fff; color: #000; border: 1px solid #fff; border-radius: 50px; font-family: Lato, sans-serif; font-weight: 600; font-size: .9em; padding: 6px 18px; cursor: pointer; transition: background .3s, color .3s; }
.nso-form__send:hover { background: transparent; color: #fff; }
.nso-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.nso-form__msg { flex: 1 1 100%; padding: 12px 16px; border-radius: 4px; font-family: Lato, sans-serif; }
.nso-form__msg.is-ok { background: #1f6f3b; } .nso-form__msg.is-err { background: #8a2020; }
@media (max-width: 767px) { .nso-form { padding: 30px 20px; gap: 30px; } .nso-field--50 { flex-basis: 100%; } }

/* ---------- Haut de page des contenus ---------- */
.nso-hero { position: relative; overflow: hidden; isolation: isolate; display: flex; flex-direction: column; justify-content: center; }
.nso-hero__in { position: relative; width: 100%; max-width: 1140px; margin: 0 auto; padding: 10px; display: flex; flex-direction: column; gap: 20px; }
.nso-hero__title { color: #fff; mix-blend-mode: difference; }
.nso-hero--project { min-height: 80vh; }
.nso-hero--project .nso-hero__in { align-items: center; text-align: center; }
.nso-hero--project .nso-hero__title { font-family: Jost, sans-serif; font-size: 3em; font-weight: 500; letter-spacing: .5em; }
.nso-hero__sub { color: #fff; mix-blend-mode: difference; font-family: Jost, sans-serif; font-weight: 600; font-size: 1.5em; line-height: 1; margin: 0; }
.nso-hero--member { min-height: 90vh; }
.nso-hero--member .nso-hero__title { font-family: Jost, sans-serif; font-size: 3em; font-weight: 600; text-transform: uppercase; letter-spacing: 10px; }
.nso-hero__pos { align-self: flex-start; margin: 0; padding: 10px; border: 1px solid #fff; border-radius: 50px; font-family: Lato, sans-serif; font-weight: 600; font-size: 1em; line-height: 1; text-transform: uppercase; letter-spacing: 3px; color: #fff; }
.nso-hero--consciousness { min-height: 70vh; }
.nso-hero--consciousness .nso-hero__in { align-items: center; text-align: center; }
.nso-hero--consciousness .nso-hero__title { font-family: "AB-babywalk", Jost, sans-serif; font-size: 3em; font-weight: 300; text-transform: uppercase; }
.nso-hero--about-consciousness { min-height: 88vh; justify-content: space-around; }
.nso-hero--about-consciousness .nso-hero__in { align-items: center; }
.nso-hero__titleimg { width: 60%; }
.nso-hero__sub--jp { font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 500; font-size: 1.6em; }
.nso-hero--about-consciousness .nso-hero__sub { font-weight: 400; font-size: 1.6em; }
@media (max-width: 767px) {
	.nso-hero__in { padding: 30px; }
	.nso-hero--project .nso-hero__title, .nso-hero--member .nso-hero__title { font-size: 2em; }
	.nso-hero--member { min-height: 40vh; }
	.nso-hero--member .nso-hero__title { text-align: center; }
	.nso-hero--consciousness .nso-hero__title { font-family: Jost, sans-serif; font-weight: 500; font-size: 1.5em; }
	.nso-hero--about-consciousness { min-height: 93vh; }
	.nso-hero__titleimg { width: 100%; }
	.nso-hero--about-consciousness .nso-hero__sub, .nso-hero__sub--jp { font-size: 1.3em; }
}
.nso-single__content { position: relative; z-index: 3; margin-top: -50px; padding: 10px; background: #000; }
.nso-single__content--page { margin-top: 0; padding: 50px 10px; background: transparent; }
.nso-single__inner { max-width: 1140px; margin: 0 auto; }
.nso-single__inner > * { width: 90%; margin-left: auto; margin-right: auto; }
.nso-single__inner > .alignfull, .nso-single__inner > .alignwide { width: 100%; }
.nso-single__block { max-width: 1140px; margin: 0 auto; padding: 50px 0; display: flex; flex-direction: column; gap: 50px; }
.nso-member__bio { max-width: 1140px; margin: 0 auto; padding: 50px; }
.nso-member__more { gap: 50px; }
.nso-postnav { display: flex; justify-content: space-between; gap: 20px; }
.nso-postnav a { display: flex; flex-direction: column; gap: 6px; color: #fff; }
.nso-postnav a:hover { color: #b7b7b7; }
.nso-postnav__next { text-align: right; margin-left: auto; }
.nso-postnav__label { font-family: Jost, sans-serif; font-weight: 400; font-size: 1.3em; text-transform: uppercase; }
.nso-postnav__title { font-family: Lato, sans-serif; font-weight: 600; font-size: 1.4em; letter-spacing: 1.5px; }
.nso-consc-list { max-width: 1140px; padding: 50px; }
@media (max-width: 767px) {
	.nso-single__inner > * { width: 100%; }
	.nso-single__content { padding: 30px; }
	.nso-single__block { padding: 30px; }
	.nso-member__bio { padding: 30px; }
	.nso-postnav__label { font-size: 1em; } .nso-postnav__title { font-size: 1em; letter-spacing: 1px; }
	.nso-consc-list { padding: 30px; }
}

/* Contenu Gutenberg des performances / Consciousness (comme Hello Elementor) */
.nso-single__inner p, .nso-single__inner li { color: #fff; }
.nso-single__inner .wp-block-heading { line-height: 1.2; margin: 1em auto .5em; font-family: Lato, sans-serif; font-weight: 500; }
.nso-single__inner h2.wp-block-heading { font-size: 1.6em; } .nso-single__inner h3.wp-block-heading { font-size: 1.3em; } .nso-single__inner h4.wp-block-heading { font-size: 1.1em; }
.nso-single__inner .wp-block-image { margin: 1.5em auto; }
.nso-single__inner .wp-block-image img { height: auto; }
.nso-single__inner .wp-block-buttons { margin: 1.5em auto; }
.nso-single__inner .wp-block-button__link { background: transparent; color: #fff; border: 1px solid #fff; border-radius: 50px; padding: 8px 20px; font-weight: 400; text-transform: none; font-size: 1.1em; }
.nso-single__inner .wp-block-columns { gap: 2em; }
.nso-single__inner .wp-block-gallery { gap: 1em; }
.nso-single__inner .wp-block-embed, .nso-single__inner .wp-block-video { margin: 1.5em auto; }
.nso-single__inner .wp-block-separator { border: 0; border-top: 1px solid #555; margin: 2em auto; }

/* Page simple (contenu non construit en sections) */
.nso-prose { max-width: 1140px; margin: 0 auto; padding: 50px 20px; }
.nso-prose h1, .nso-prose h2, .nso-prose h3 { margin: 1em 0 .5em; line-height: 1.2; }

/* Archives */
.nso-archive { background: #fff; color: #333; max-width: 100%; padding: 20px max(10px, calc((100% - 1140px) / 2)) 60px; }
.nso-archive__title { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 2rem; font-weight: 500; margin: 0 0 .5rem; }
.nso-archive__item h2 { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 1.5rem; font-weight: 500; margin: .5rem 0; }
.nso-archive__item img { width: 100%; height: auto; display: block; }
.nso-archive__item p { font-size: .9rem; margin: .3rem 0 0; }

/* 404 */
.nso-404 { min-height: 100vh; display: flex; align-items: center; justify-content: center; gap: 20px; padding: 10px; }
.nso-404 > * { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 40px; }
.nso-404__logo img { width: 40%; }
.nso-404__face { font-family: Lato, sans-serif !important; font-size: 70px !important; font-weight: 600; margin: 0; }
.nso-404__msg { font-family: Lato, sans-serif !important; font-size: 20px !important; font-weight: 600; line-height: 30px !important; text-align: center; }
.nso-404 .nso-btn { font-size: 17px; font-weight: 600; padding: 12px 24px; border: 1px solid #fff; }
.nso-404 .nso-btn:hover { background: #000; color: #fff; }
@media (max-width: 767px) { .nso-404 { flex-direction: column; } .nso-404__logo img { width: 50%; } .nso-404__msg { font-size: 15px !important; line-height: 22px !important; } }

/* ---------- Intro (accueil) ---------- */
.nso-intro { position: fixed; inset: 0; z-index: 100002; background: #000; display: flex; align-items: center; justify-content: center; animation: nso-intro-out .8s ease 4.5s forwards; }
.nso-intro.is-done { display: none; }
.nso-intro__logo { position: relative; width: 735px; height: 300px; z-index: 2; }
.nso-intro__col { position: absolute; display: flex; flex-direction: column; align-items: center; }
.nso-intro__col .r { display: block; background: #fff; transform: rotateY(90deg); animation: nso-flip 5s forwards; }
.nso-intro__col .l { display: block; background: #fff; margin: 0 auto; animation: nso-grow 1.5s ease both; overflow: hidden; }
@keyframes nso-flip { from { transform: rotateY(90deg); } to { transform: rotateY(180deg); } }
@keyframes nso-grow { from { max-height: 0; } to { max-height: 300px; } }
@keyframes nso-intro-out { to { opacity: 0; visibility: hidden; } }
@media (max-width: 767px) { .nso-intro__logo { transform: scale(.41); } }
@media (max-width: 1024px) and (min-width: 768px) { .nso-intro__logo { transform: scale(.8); } }

/* Instagram (Smash Balloon) : pas de marges parasites */
.nso-main #sb_instagram { padding-bottom: 0 !important; }

/* Visibilité par appareil (reprise d'Elementor) */
@media (min-width: 1025px) { .nso-hide-d { display: none !important; } }
@media (min-width: 768px) and (max-width: 1024px) { .nso-hide-t { display: none !important; } }
@media (max-width: 767px) { .nso-hide-m { display: none !important; } }

/* Grilles (conteneurs « grille » d'Elementor, ex. logos des partenaires) */
.nso-section.nso-grid > .nso-section__inner { display: grid; grid-template-columns: repeat(var(--gcols, 3), minmax(0, 1fr)); align-items: center; justify-items: center; }
.nso-grid-1 { --gcols: 1; } .nso-grid-2 { --gcols: 2; } .nso-grid-3 { --gcols: 3; } .nso-grid-4 { --gcols: 4; }
.nso-section.nso-grid-nogap > .nso-section__inner { gap: 0; }
.nso-section.nso-grid > .nso-section__inner > * { width: 100%; }
@media (max-width: 767px) { .nso-section.nso-grid > .nso-section__inner { grid-template-columns: 1fr; gap: 20px; } }
