:root,
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f8fbff;
  --bg-deep: #eef6ff;
  --bg-end: #ffffff;
  --text: #0f172a;
  --muted: #475569;
  --lead: #334155;
  --subtle: #64748b;
  --eyebrow: #2563eb;
  --primary: #0ea5e9;
  --primary-strong: #0284c7;
  --accent: #8b5cf6;
  --accent-strong: #6d28d9;
  --success: #059669;
  --danger: #e11d48;
  --warning: #d97706;
  --grid-line: rgba(15, 23, 42, 0.06);
  --glow-one: rgba(14, 165, 233, 0.20);
  --glow-two: rgba(124, 58, 237, 0.15);
  --header-bg: rgba(255,255,255,.86);
  --header-border: rgba(15,23,42,.09);
  --surface: rgba(255,255,255,.86);
  --surface-strong: rgba(255,255,255,.98);
  --surface-soft: rgba(15,23,42,.045);
  --surface-hover: rgba(14,165,233,.08);
  --border: rgba(15,23,42,.13);
  --border-soft: rgba(15,23,42,.10);
  --chip-bg: rgba(255,255,255,.78);
  --chip-text: #1e3a8a;
  --card-bg: linear-gradient(180deg, rgba(255,255,255,.96), rgba(255,255,255,.82)), rgba(255,255,255,.92);
  --panel-bg: radial-gradient(circle at 90% 0%, rgba(14,165,233,.13), transparent 42%), rgba(248,250,252,.92);
  --input-text: #0f172a;
  --placeholder: rgba(71,85,105,.55);
  --code-bg: rgba(226,232,240,.88);
  --code-text: #1e3a8a;
  --footer-bg: rgba(255,255,255,.72);
  --shadow-xl: 0 34px 90px rgba(15,23,42,.16);
  --shadow-card: 0 22px 58px rgba(15,23,42,.10);
  --shadow-soft: 0 12px 26px rgba(15,23,42,.09);
  --radius-lg: 30px;
  --radius-md: 20px;
  --radius-sm: 14px;
  --container: 1280px;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #07111f;
  --bg-deep: #020817;
  --bg-end: #030712;
  --text: #f8fafc;
  --muted: #a7b3c7;
  --lead: #cbd5e1;
  --subtle: #64748b;
  --eyebrow: #93c5fd;
  --primary: #38bdf8;
  --primary-strong: #0ea5e9;
  --accent: #a78bfa;
  --accent-strong: #7c3aed;
  --success: #34d399;
  --danger: #fb7185;
  --warning: #fbbf24;
  --grid-line: rgba(148,163,184,.08);
  --glow-one: rgba(56,189,248,.18);
  --glow-two: rgba(124,58,237,.22);
  --header-bg: rgba(2,8,23,.72);
  --header-border: rgba(148,163,184,.14);
  --surface: rgba(15,23,42,.78);
  --surface-strong: rgba(15,23,42,.96);
  --surface-soft: rgba(255,255,255,.06);
  --surface-hover: rgba(255,255,255,.09);
  --border: rgba(148,163,184,.22);
  --border-soft: rgba(148,163,184,.16);
  --chip-bg: rgba(255,255,255,.065);
  --chip-text: #dbeafe;
  --card-bg: linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.045)), rgba(15,23,42,.86);
  --panel-bg: radial-gradient(circle at 90% 0%, rgba(56,189,248,.14), transparent 42%), rgba(2,8,23,.62);
  --input-text: #eff6ff;
  --placeholder: rgba(203,213,225,.44);
  --code-bg: rgba(15,23,42,.82);
  --code-text: #dbeafe;
  --footer-bg: rgba(2,8,23,.5);
  --shadow-xl: 0 34px 90px rgba(2,8,23,.48);
  --shadow-card: 0 24px 70px rgba(2,8,23,.34);
  --shadow-soft: 0 12px 26px rgba(2,8,23,.16);
}
*{box-sizing:border-box}html{scroll-behavior:smooth;text-size-adjust:100%}body{margin:0;min-width:320px;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:radial-gradient(circle at top left,var(--glow-one),transparent 34rem),radial-gradient(circle at 85% 8%,var(--glow-two),transparent 34rem),linear-gradient(180deg,var(--bg),var(--bg-deep) 62%,var(--bg-end) 100%);line-height:1.6;transition:background .22s ease,color .22s ease}body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.48;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent 72%)}button,input,select{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}p,h1,h2,h3{margin-top:0}code{border:1px solid var(--border);border-radius:.55rem;padding:.1rem .4rem;background:var(--code-bg);color:var(--code-text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;font-size:.94em}.container{width:min(var(--container),calc(100% - 32px));margin-inline:auto}.container.narrow{max-width:860px}.section-pad{padding-block:clamp(54px,8vw,104px)}.section-pad.slim{padding-block:clamp(38px,6vw,78px)}.skip-link{position:absolute;top:12px;left:12px;z-index:100;transform:translateY(-140%);border-radius:999px;padding:10px 16px;background:var(--surface-strong);box-shadow:var(--shadow-soft);font-weight:800}.skip-link:focus{transform:translateY(0)}.site-header{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--header-border);background:var(--header-bg);backdrop-filter:blur(18px)}.nav{display:flex;align-items:center;gap:18px;min-height:64px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:900;letter-spacing:-.025em;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--accent));color:white;box-shadow:0 10px 24px rgba(14,165,233,.22)}.nav-links{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-links a{border:1px solid transparent;border-radius:999px;padding:8px 11px;color:var(--muted);font-size:.92rem;font-weight:800;white-space:nowrap}.nav-links a:hover,.nav-links a.active{background:var(--surface-hover);border-color:var(--border-soft);color:var(--text)}.theme-toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:999px;background:var(--surface);padding:8px 12px;font-size:.9rem;font-weight:900;box-shadow:var(--shadow-soft);cursor:pointer;white-space:nowrap}.theme-dot{display:grid;place-items:center;width:22px;height:22px;border-radius:999px;background:linear-gradient(135deg,var(--primary),var(--accent));color:white}.hero{padding:clamp(54px,8vw,110px) 0 48px}.hero-inner{display:grid;gap:28px}.hero-copy{max-width:980px}.breadcrumb{display:flex;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:.9rem;font-weight:800;margin-bottom:20px}.breadcrumb a{color:var(--eyebrow)}.eyebrow{display:block;margin-bottom:12px;color:var(--eyebrow);font-size:.78rem;text-transform:uppercase;letter-spacing:.18em;font-weight:950}.hero h1{font-size:clamp(3rem,8vw,6.9rem);line-height:.88;letter-spacing:-.075em;max-width:1040px;margin:0 0 22px}.internal-hero h1{font-size:clamp(2.6rem,6vw,5.2rem);max-width:1050px}.lead{font-size:clamp(1.05rem,2vw,1.28rem);max-width:850px;color:var(--lead);margin-bottom:22px}.chips{display:flex;gap:10px;flex-wrap:wrap}.chips span{border:1px solid var(--border);border-radius:999px;background:var(--chip-bg);color:var(--chip-text);padding:8px 12px;font-size:.86rem;font-weight:900;box-shadow:var(--shadow-soft)}.tool-card{position:relative;z-index:1;width:100%;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card-bg);box-shadow:var(--shadow-xl);padding:clamp(18px,2.5vw,30px);overflow:hidden}.tool-card::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(14,165,233,.18),rgba(139,92,246,.12),transparent 58%);pointer-events:none}.tool-card>*{position:relative}.tool-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:22px}.tool-head h2{font-size:clamp(1.8rem,3.2vw,3rem);line-height:1;letter-spacing:-.055em;margin:0 0 8px}.tool-head p{color:var(--muted);max-width:760px;margin:0}.tool-badge{border:1px solid var(--border);border-radius:999px;padding:8px 12px;background:var(--surface-soft);font-weight:950;font-size:.82rem;color:var(--eyebrow);white-space:nowrap}.calculator-layout{display:grid;grid-template-columns:minmax(320px,1.15fr) minmax(280px,.85fr) minmax(260px,.75fr);gap:16px;align-items:stretch}.calculator-layout.compact{grid-template-columns:minmax(320px,1.15fr) minmax(280px,.85fr) minmax(280px,.8fr)}.calc-form,.result-panel,.details-panel{border:1px solid var(--border-soft);border-radius:24px;background:var(--panel-bg);padding:18px;box-shadow:var(--shadow-soft);min-width:0}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.calc-form label{display:grid;gap:7px;color:var(--muted);font-weight:850;font-size:.9rem}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:14px;background:var(--surface-strong);color:var(--input-text);padding:12px 13px;outline:none;min-height:46px}input::placeholder{color:var(--placeholder)}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(14,165,233,.14)}.checkline{margin-top:14px;display:flex!important;grid-template-columns:auto 1fr!important;align-items:flex-start;gap:10px}.checkline input{width:auto;min-height:0;margin-top:5px}.form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.primary-btn,.ghost-btn{border:1px solid var(--border);border-radius:999px;padding:11px 16px;font-weight:950;cursor:pointer}.primary-btn{border-color:transparent;background:linear-gradient(135deg,var(--primary),var(--accent));color:white;box-shadow:0 16px 38px rgba(14,165,233,.20)}.ghost-btn{background:var(--surface-soft);color:var(--text)}.result-title,.mini-title{color:var(--eyebrow);text-transform:uppercase;letter-spacing:.14em;font-size:.76rem;font-weight:950}.hero-result{font-size:clamp(2rem,4.6vw,3.8rem);line-height:.95;font-weight:950;letter-spacing:-.055em;margin:16px 0 18px}.result-grid,.details-list{display:grid;gap:10px}.result-grid div,.details-list div{border:1px solid var(--border-soft);border-radius:15px;background:var(--surface-soft);padding:12px}.result-grid span,.details-list span{display:block;color:var(--muted);font-size:.82rem;font-weight:850}.result-grid strong,.details-list strong{display:block;margin-top:3px;font-size:1.05rem;line-height:1.2}.result-note,.microcopy{color:var(--muted);font-size:.9rem;margin:14px 0 0}.bar-wrap{margin-top:16px}.bar-wrap span{display:block;color:var(--muted);font-weight:850;font-size:.86rem;margin-bottom:8px}.bar{height:12px;border-radius:999px;background:var(--surface-soft);border:1px solid var(--border-soft);overflow:hidden}.bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--primary),var(--accent));transition:width .22s ease}.table-wrap{max-width:100%;overflow:auto;margin-top:14px}.mini-table{width:100%;border-collapse:collapse;min-width:420px}.mini-table th,.mini-table td{padding:9px;border-bottom:1px solid var(--border-soft);text-align:right;font-size:.88rem}.mini-table th:first-child,.mini-table td:first-child{text-align:left}.content-card,.info-band{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card-bg);box-shadow:var(--shadow-card);padding:clamp(22px,3vw,34px)}.content-card h2,.info-band h2,.section-pad h2{font-size:clamp(2rem,4vw,3.3rem);line-height:1;letter-spacing:-.06em;margin-bottom:16px}.content-card p,.info-band p{color:var(--lead);max-width:940px}.info-band{display:grid;grid-template-columns:1.3fr .7fr;gap:22px;align-items:start}.source-links{display:grid;gap:10px}.source-links a{border:1px solid var(--border);border-radius:14px;background:var(--surface-soft);padding:12px;font-weight:850;color:var(--eyebrow)}.card-grid{display:grid;gap:14px}.card-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.feature-card{display:block;border:1px solid var(--border);border-radius:20px;background:var(--card-bg);padding:20px;box-shadow:var(--shadow-soft);min-height:150px}.feature-card:hover{transform:translateY(-2px);border-color:rgba(14,165,233,.36)}.feature-card span{display:inline-block;color:var(--eyebrow);text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:950;margin-bottom:10px}.feature-card h3{letter-spacing:-.035em;line-height:1.1;margin-bottom:8px}.feature-card p{color:var(--muted);margin:0}.example-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pill-btn{border:1px solid var(--border);border-radius:999px;background:var(--surface);box-shadow:var(--shadow-soft);padding:11px 14px;font-weight:950;color:var(--chip-text);cursor:pointer}.pill-btn:hover{background:var(--surface-hover)}.faq-list{display:grid;gap:10px}.faq-list details{border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow-soft);overflow:hidden}.faq-list summary{cursor:pointer;padding:16px 18px;font-weight:950;list-style:none}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary::after{content:"+";float:right;color:var(--primary)}.faq-list details[open] summary::after{content:"−"}.faq-list p{padding:0 18px 18px;color:var(--muted);margin:0}.site-footer{border-top:1px solid var(--border-soft);background:var(--footer-bg);padding:32px 0}.footer-grid{display:grid;grid-template-columns:1.3fr repeat(3,1fr);gap:24px}.footer-grid p,.footer-grid span{color:var(--muted);margin:12px 0 0}.footer-grid div{display:grid;gap:8px;align-content:start}.footer-grid a{color:var(--muted)}.footer-grid a:hover{color:var(--text)}.footer-brand{margin-bottom:4px}.code-box{width:100%;min-height:120px;border:1px solid var(--border);border-radius:18px;background:var(--code-bg);color:var(--code-text);padding:16px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;font-size:.9rem}.test-pass{color:var(--success);font-weight:950}.test-fail{color:var(--danger);font-weight:950}.notice{border:1px solid var(--border);border-radius:20px;background:var(--surface);padding:16px;color:var(--muted)}
@media (max-width: 1180px){.calculator-layout,.calculator-layout.compact{grid-template-columns:1fr 1fr}.details-panel{grid-column:1/-1}.card-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.nav{align-items:flex-start;flex-wrap:wrap;padding-block:10px}.nav-links{order:3;width:100%;justify-content:flex-start}.theme-toggle{margin-left:auto}}
@media (max-width: 820px){.hero h1{font-size:clamp(2.7rem,14vw,4.5rem)}.calculator-layout,.calculator-layout.compact{grid-template-columns:1fr}.tool-head{display:grid}.form-grid.two,.card-grid.three,.card-grid.four,.example-grid,.info-band,.footer-grid{grid-template-columns:1fr}.tool-card{border-radius:24px;padding:16px}.calc-form,.result-panel,.details-panel{border-radius:20px}.hero{padding-top:40px}.section-pad{padding-block:48px}.container{width:min(100% - 24px,var(--container))}.nav-links a{font-size:.84rem;padding:7px 9px}}
@media (max-width: 520px){.brand span:last-child{max-width:210px;overflow:hidden;text-overflow:ellipsis}.theme-toggle span[data-theme-label]{display:none}.hero-result{font-size:2.2rem}.form-actions button{width:100%}.mini-table{min-width:360px}}

.card-grid.two-text{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px}.notice ul{margin:10px 0 0;padding-left:20px;color:var(--muted)}@media(max-width:820px){.card-grid.two-text{grid-template-columns:1fr}}

/* Sécurité responsive : aucune page ne doit créer de débordement horizontal global. */
html,body{max-width:100%;overflow-x:hidden}.tool-card,.content-card,.info-band,.result-panel,.details-panel,.calc-form{max-width:100%}.table-wrap,.code-box{max-width:100%;overflow-x:auto}
.hero-inner>*{min-width:0}.hero-copy{width:100%;min-width:0}.hero h1,.internal-hero h1,.lead,.breadcrumb,.chips{max-width:100%;overflow-wrap:anywhere}.tool-card{min-width:0}
