/* Questionnaires : Portrait, Ce soir, Shibari */
.t-hero{position:relative;padding:6px 0 0}
.t-hero h1{font-weight:700;font-stretch:78%;letter-spacing:-.03em;font-size:clamp(3.6rem,2rem + 8vw,6.4rem);line-height:.92;letter-spacing:-.015em}
.t-hero .lede{margin-top:.4em;max-width:24ch}
.t-hero .intro-txt{color:var(--text-2);margin-top:1em;max-width:36rem}
.t-hero .plate{margin:0 calc(-1 * var(--gutter)) 22px}
.t-hero .plate img{aspect-ratio:16/9;object-fit:cover}
.principes{list-style:none;margin:30px 0 0;border-top:1px solid var(--line)}
.principes li{padding:14px 0 15px;border-bottom:1px solid var(--line);color:var(--text-2)}
.principes li strong{display:block;color:var(--text);font-weight:500;margin-bottom:2px}
.block{margin-top:40px}
.q{font-weight:650;font-size:clamp(1.22rem,1.08rem + .6vw,1.5rem);letter-spacing:-.01em;line-height:1.15;color:var(--text);margin-bottom:12px;text-wrap:balance}
.hint{color:var(--text-2);font-size:.92rem;margin-top:-4px;margin-bottom:14px}
.legend-list{display:grid;gap:10px}
.legend-row{display:grid;grid-template-columns:108px 1fr;gap:14px;align-items:center;font-size:.92rem;color:var(--text-2)}
.legend-row .chip{pointer-events:none}
.knots-demo{display:flex;align-items:center;gap:8px 18px;margin-top:6px;flex-wrap:wrap}
.knots-demo span{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--text-2)}
.knots-demo .knot{position:static;transform:none;background:var(--envie);border-color:var(--envie)}
.role{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.role button{border:1px solid var(--line-2);padding:16px 14px 15px;text-align:left;background:var(--bg-1)}
.role button b{display:block;font-weight:700;font-size:1.2rem;line-height:1.1}
.role button small{display:block;font-size:.84rem;color:var(--text-2);margin-top:4px;line-height:1.35}
.role button[aria-pressed=true]{border-color:var(--flamme);background:rgba(214,168,90,.1)}
.role button[aria-pressed=true] b{color:var(--flamme)}
.fields{display:grid;gap:14px}
label.txt{display:block;font-size:.92rem;color:var(--text-2)}
label.txt input,textarea.area{display:block;width:100%;margin-top:6px;background:var(--bg-1);border:1px solid var(--line-2);padding:12px 13px;font-size:1rem;color:var(--text);border-radius:0}
textarea.area{min-height:100px;resize:vertical;line-height:1.45}
label.txt input:focus,textarea:focus{outline:none;border-color:var(--flamme)}

.cat-head h1,.page-head-t h1{font-weight:700;font-stretch:80%;letter-spacing:-.025em;font-size:clamp(2.4rem,1.7rem + 3.4vw,3.6rem);line-height:1;color:var(--text)}
.prompt{font-weight:600;font-size:1.18rem;line-height:1.3;color:var(--flamme);margin-top:10px}
.cat-intro{color:var(--text-2);margin-top:10px;max-width:34rem}
.gate{margin-top:32px;padding:22px 20px;border:1px solid var(--line-2);background:var(--bg-1)}
.gate p{font-weight:650;font-size:1.3rem;line-height:1.2}
.gate .sub{font-family:var(--serif);font-size:.92rem;color:var(--text-2);margin-top:6px}
.gate-btns{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.gate-btns .btn{flex:1;min-width:130px}
details.legend{margin-top:22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
details.legend summary{list-style:none;cursor:pointer;padding:12px 0;font-size:.92rem;color:var(--text-2)}
details.legend summary::-webkit-details-marker{display:none}
details.legend summary::after{content:'+';float:right;font-size:1.1rem;line-height:1;color:var(--braise)}
details.legend[open] summary::after{content:'−'}
details.legend .legend-list{padding:4px 0 16px}

.fil{margin-top:30px}
.fil-name{font-weight:650;font-size:1.02rem;color:var(--text-2);padding-left:38px;margin-bottom:2px}
.item{display:grid;grid-template-columns:28px 1fr;column-gap:10px;padding:10px 0 14px}
.thread{position:relative}
.thread::before{content:'';position:absolute;left:13.25px;top:0;bottom:0;width:1.5px;background:var(--line-2)}
.item.first .thread::before{top:23px}
.item.last .thread::before{bottom:auto;height:23px}
.item.only .thread::before{display:none}
.knot{position:absolute;left:14px;top:23px;transform:translate(-50%,-50%);border-radius:50%;background:var(--bg);border:1.5px solid var(--text-3);z-index:1;transition:background .15s,border-color .15s}
.knot.k1{width:8px;height:8px}.knot.k2{width:11px;height:11px}.knot.k3{width:14px;height:14px}.knot.k4{width:18px;height:18px}
.knot.e{background:var(--envie);border-color:var(--envie)}
.knot.c{background:var(--curio);border-color:var(--curio)}
.knot.n{background:var(--non);border-color:var(--text-3)}
.knot.j{background:var(--jamais);border-color:var(--jamais)}
.lab{display:flex;gap:10px;align-items:flex-start}
.lab-t{flex:1;font-size:1.04rem;line-height:1.5;padding-top:1px}
.risk{display:inline-block;font-size:.74rem;line-height:1.4;color:var(--jamais-t);border:1px solid rgba(220,84,70,.6);padding:0 7px;margin-left:8px;vertical-align:2px;white-space:nowrap}
.info-btn{width:24px;height:24px;border:1px solid var(--line-2);border-radius:50%;font-size:.95rem;line-height:1;color:var(--text-2);display:inline-grid;place-items:center;vertical-align:1px;margin-left:8px}
.info-btn[aria-expanded=true]{border-color:var(--flamme);color:var(--flamme)}
.info{font-size:.92rem;color:var(--text-2);margin-top:6px;max-width:34rem}
.note-btn{display:flex;align-items:center;gap:5px;font-size:.82rem;color:var(--text-3);padding:4px 0 4px 6px;white-space:nowrap}
.note-btn svg{width:14px;height:14px}
.note-btn.has{color:var(--flamme)}
.chips{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}
.chip{border:1px solid var(--line-2);padding:10px 2px 11px;font-size:.88rem;line-height:1.2;color:var(--text-2);text-align:center;transition:background .15s,color .15s,border-color .15s}
.chip.e[aria-checked=true]{background:var(--envie);border-color:var(--envie);color:#1a1208;font-weight:600}
.chip.c[aria-checked=true]{background:rgba(59,156,201,.22);border-color:var(--curio);color:var(--curio-t);font-weight:600}
.chip.n[aria-checked=true]{background:var(--non);border-color:var(--text-3);color:var(--text);font-weight:600}
.chip.j[aria-checked=true]{background:var(--jamais);border-color:var(--jamais);color:#1d0b08;font-weight:600}
@media (hover:hover){.chip:hover{border-color:var(--text-3);color:var(--text)}}
textarea.note{display:block;width:100%;margin-top:10px;background:var(--bg-1);border:1px solid var(--line-2);padding:10px 12px;font-size:.94rem;line-height:1.4;resize:vertical;color:var(--text)}
.fold{display:grid;grid-template-columns:28px 1fr;column-gap:10px;padding:2px 0 8px}
.fold .thread::before{top:0;bottom:auto;height:16px;background:none;border-left:1.5px dashed var(--text-3);width:0}
.fold p{font-size:.92rem;color:var(--text-2);padding-top:10px}
.fold button{font-size:.92rem;color:var(--flamme);padding:4px 0;text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(214,168,90,.4)}
.cat-foot{margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}
.link-btn{font-size:.92rem;color:var(--text-2);text-decoration:underline;text-underline-offset:3px;margin-top:18px;padding:4px 0}
.skipped{margin-top:32px;padding:22px 20px;border:1px dashed var(--line-2);color:var(--text-2)}
.skipped .btn{margin-top:14px}

.page-head-t p{color:var(--text-2);margin-top:12px;max-width:34rem}
.fld{margin-top:40px}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{border:1px solid var(--line-2);padding:9px 14px 10px;font-size:.94rem;line-height:1.3;color:var(--text-2);text-align:left;background:transparent}
.opt[aria-pressed=true]{border-color:var(--flamme);color:var(--text);background:rgba(214,168,90,.14)}
.opt .rk{display:inline-grid;place-items:center;width:1.35em;height:1.35em;margin-right:.45em;border-radius:50%;background:var(--flamme);color:var(--bg);font-size:.78em;font-weight:700;font-variant-numeric:lining-nums;vertical-align:1px}
.opt.warn[aria-pressed=true]{border-color:var(--jamais);background:rgba(220,84,70,.14)}
.scale{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:6px}
.scale .opt{text-align:center;padding:12px 4px;font-size:.86rem}
.scale .opt b{display:block;font-size:1.25rem;font-weight:500;line-height:1;color:var(--text);margin-bottom:4px}
@media (max-width:520px){.scale.long{grid-auto-flow:row;grid-template-columns:1fr 1fr}}
.phrase{font-weight:650;font-size:1.35rem;line-height:1.2;color:var(--flamme);min-height:1.3em}
.range-row{display:flex;align-items:center;gap:14px;margin-top:14px}
.range-row output{font-weight:700;font-size:1.5rem;width:2ch;text-align:right;color:var(--text);font-variant-numeric:lining-nums}
input[type=range]{flex:1;-webkit-appearance:none;appearance:none;height:30px;background:transparent}
input[type=range]::-webkit-slider-runnable-track{height:3px;background:linear-gradient(to right,var(--sang) var(--p,30%),var(--line-2) var(--p,30%))}
input[type=range]::-moz-range-track{height:3px;background:var(--line-2)}
input[type=range]::-moz-range-progress{height:3px;background:var(--sang)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--text);border:5px solid var(--sang);margin-top:-10.5px}
input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--text);border:5px solid var(--sang)}
.ends{display:flex;justify-content:space-between;font-size:.84rem;color:var(--text-3);margin-top:2px;padding-right:calc(2ch + 14px)}
.aside{font-size:.92rem;color:var(--text-2);margin-top:10px}
.alert{margin-top:14px;padding:12px 14px;border-left:3px solid var(--jamais);background:rgba(220,84,70,.08);font-size:.94rem;color:var(--text)}
.alert.doux{border-left-color:var(--flamme);background:rgba(214,168,90,.07)}
.checks{display:grid;gap:8px}
.check{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);background:var(--bg-1);cursor:pointer;font-size:.96rem;line-height:1.4}
.check input{appearance:none;-webkit-appearance:none;flex:none;width:20px;height:20px;border:1.5px solid var(--text-3);margin-top:1px;display:grid;place-items:center}
.check input:checked{background:var(--flamme);border-color:var(--flamme)}
.check input:checked::after{content:'';width:9px;height:5px;border-left:2px solid var(--bg);border-bottom:2px solid var(--bg);transform:rotate(-45deg) translate(1px,-1px)}
.check input:focus-visible{outline:2px solid var(--flamme);outline-offset:2px}

/* portrait */
.summary{font-weight:600;font-size:1.25rem;line-height:1.35;margin-top:16px}
.summary .e{color:var(--envie)}.summary .c{color:var(--curio-t)}.summary .j{color:var(--jamais-t)}
.radar-box{margin-top:26px}
.radar{display:block;width:100%;height:auto;overflow:visible}
.radar .ax{cursor:pointer}
.radar .ax text{font-family:var(--serif);font-size:13px;fill:var(--text-2)}
.radar .ax.on text{fill:var(--text)}
.key{display:flex;gap:20px;flex-wrap:wrap;font-size:.9rem;color:var(--text-2);margin-top:6px}
.key span{display:flex;align-items:center;gap:8px}
.sw{width:16px;height:10px;display:inline-block}
.sw.e{background:var(--envie)}
.sw.c{background:rgba(59,156,201,.3);border:1.5px dashed var(--curio)}
.axis-cap{min-height:3.2em;font-size:.94rem;color:var(--text-2);margin-top:12px;padding:12px 14px;background:var(--bg-1);border:1px solid var(--line)}
.axis-cap b{font-weight:500;color:var(--text)}
.grid-wrap{margin-top:34px}
table.grid{width:100%;border-collapse:separate;border-spacing:3px;font-size:.82rem}
table.grid th{font-weight:400;color:var(--text-2);text-align:center;padding:4px 0}
table.grid tbody th{text-align:left;color:var(--text);font-size:.88rem;padding-right:6px;white-space:nowrap}
table.grid td{height:30px;position:relative;background:rgba(192,134,40,var(--v));box-shadow:inset 0 0 0 1px rgba(58,47,37,.95)}
table.grid td.vide{background:transparent;box-shadow:none}
table.grid td.vide::after{content:'';position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:var(--line-2);transform:translate(-50%,-50%)}
table.grid td.ferme{background:repeating-linear-gradient(135deg,transparent 0 5px,rgba(84,69,58,.9) 5px 6px)}
table.grid td .x{position:absolute;top:2px;right:4px;font-size:11px;line-height:1;color:var(--jamais-t);font-weight:600}
.grid-note{font-size:.86rem;color:var(--text-2);margin-top:10px}
.lists{margin-top:40px}
.lists section{margin-top:34px}
.lists h2{font-weight:700;font-stretch:85%;font-size:1.6rem;line-height:1.15}
.lists h2 .n{font-family:var(--serif);font-size:.95rem;color:var(--text-2);margin-left:8px;font-variant-numeric:lining-nums}
.lists h3{font-weight:650;font-size:1.02rem;color:var(--text-2);margin:16px 0 4px}
.lists ul{list-style:none}
.lists li{display:flex;gap:10px;align-items:baseline;padding:4px 0;font-size:.98rem}
.lists li .dots{flex:none;display:inline-flex;gap:3px;align-items:center;width:34px}
.lists li .dots i{width:5px;height:5px;border-radius:50%;border:1px solid var(--text-3)}
.lists li .dots i.f{background:var(--envie);border-color:var(--envie)}
.lists li small{display:block;color:var(--text-2);font-size:.88rem;font-style:italic}
.lists .compact{color:var(--text-2);font-size:.95rem}
.lists .empty{color:var(--text-2);font-size:.95rem;margin-top:8px}
.export{margin-top:46px;padding:24px 20px;border:1px solid var(--line-2);border-top:3px solid var(--sang);background:var(--bg-1)}
.export h2{font-weight:700;font-stretch:85%;font-size:1.6rem}
.export p{color:var(--text-2);font-size:.94rem;margin-top:6px}
.export .fields{margin-top:16px}
.export .btns{display:grid;gap:10px;margin-top:18px}
.export .btns .btn{width:100%}
.export .sep{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.status{font-size:.94rem;color:var(--flamme);margin-top:12px;min-height:1.4em}
.closing{margin-top:34px;font-weight:500;font-size:1.1rem;line-height:1.4;color:var(--text-2)}
.danger{margin-top:30px}
.danger button{font-size:.88rem;color:var(--text-3);text-decoration:underline;text-underline-offset:3px;padding:4px 0}
.danger button.armed{color:var(--jamais-t)}
.received{margin-bottom:26px;padding:16px 18px;border:1px solid var(--line-2);border-left:3px solid var(--flamme);background:var(--bg-1);font-size:.95rem;color:var(--text-2)}
.received strong{color:var(--text);font-weight:600}

/* récapitulatif des formulaires courts */
.recap{margin-top:26px;border-top:1px solid var(--line-2)}
.recap section{padding:18px 0 4px}
.recap h2{font-weight:700;font-stretch:85%;font-size:1.4rem;line-height:1.1;margin-bottom:8px}
.recap dl{display:grid;gap:10px}
.recap dt{font-size:.84rem;color:var(--text-3)}
.recap dd{font-size:1.02rem}
.recap dd.big{font-weight:650;font-size:1.25rem;color:var(--flamme);line-height:1.2}
.recap .empty{color:var(--text-3);font-style:italic}

.steps-sheet{position:fixed;inset:0;z-index:60;background:rgba(8,6,4,.75);display:flex;justify-content:flex-end}
.steps-in{width:min(360px,88vw);height:100%;overflow:auto;background:var(--bg-1);border-left:1px solid var(--line-2);padding:16px 18px calc(24px + env(safe-area-inset-bottom))}
.steps-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.steps-top span{font-weight:700;font-size:1.15rem}
.steps{list-style:none}
.steps button{display:flex;justify-content:space-between;width:100%;gap:10px;padding:13px 4px;border-bottom:1px solid var(--line);text-align:left;font-size:1rem}
.steps button span{color:var(--text-2);font-size:.86rem;white-space:nowrap}
.steps button[aria-current=step]{color:var(--flamme)}

@media (max-width:370px){.chip{font-size:.8rem}.chips{gap:5px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* arrondis de la nouvelle direction */
.role button{border-radius:16px}
.gate,.skipped,.received,.export,.axis-cap,.check,.alert,textarea.note,label.txt input,textarea.area{border-radius:14px}
.chip{border-radius:12px}
.opt{border-radius:999px}
.scale .opt{border-radius:14px}
.t-hero .plate img{border-radius:22px}
.steps-in{border-radius:22px 0 0 22px}
.export{border-top-width:1px;border-color:var(--line-2)}
.export h2::before{content:'';display:block;width:28px;height:3px;border-radius:3px;background:var(--red);margin-bottom:12px}
details.legend summary{font-weight:600}
