/* Otoolia — Créateur de stories et posts (styles limités à .so / .so-*) */
.so-head h1 { font-size: clamp(1.6rem, 4vw, 2.3rem); margin-bottom: .2em; }
.so h2 { font-size: 1.08rem; margin: 0 0 10px; }
.so-steps { display: flex; flex-wrap: wrap; gap: 6px; margin: 14px 0; }
.so-steps span { font-size: .82rem; font-weight: 600; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--ot-border); color: var(--ot-text-soft); background: var(--ot-surface); }
.so-steps span.is-on { background: color-mix(in srgb, var(--ot-success) 14%, var(--ot-surface)); border-color: var(--ot-success); color: var(--ot-text); }
.so-steps span.is-on::before { content: "✓ "; color: var(--ot-success); }
.so-main { display: grid; gap: var(--ot-space); grid-template-columns: minmax(0, 1fr); align-items: start; }
@media (min-width: 1040px) { .so-main { grid-template-columns: minmax(330px, 420px) minmax(0, 1fr); } }
.so-side, .so-work { display: grid; gap: var(--ot-space); min-width: 0; }
.so-side > *, .so-work > * { min-width: 0; }
.so-f { display: flex; flex-direction: column; gap: 4px; font-size: .8rem; font-weight: 600; color: var(--ot-text-soft); margin: 8px 0 0; min-width: 0; }
.so-f .ot-input, .so-f .ot-select { width: 100%; }
.so-f textarea { resize: vertical; }
.so-row { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; }
.so-row .so-f { flex: 1 1 120px; }
.so-grow { flex: 2 1 180px !important; }
.so-ck { display: flex; gap: 7px; align-items: center; font-size: .88rem; cursor: pointer; margin-top: 8px; }
.so-note { font-size: .83rem; color: var(--ot-text-soft); margin: 8px 0 0; line-height: 1.45; }
.so-sm { min-height: 32px; padding: 4px 11px; font-size: .84rem; }
.so-col { width: 100%; height: 38px; padding: 2px; border: 1px solid var(--ot-border); border-radius: 8px; background: var(--ot-surface); cursor: pointer; }
.so-drop { margin-top: 12px; border: 2px dashed var(--ot-border); border-radius: var(--ot-radius-s); padding: 18px 14px; text-align: center; cursor: pointer; font-weight: 600; font-size: .9rem; background: var(--ot-surface-2); }
.so-drop:hover, .so-drop.is-over, .so-drop:focus-visible { border-color: var(--ot-brand); background: color-mix(in srgb, var(--ot-brand) 8%, var(--ot-surface)); }
.so-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.so-chip { border: 1px solid var(--ot-border); background: var(--ot-surface); color: var(--ot-text); font: inherit; font-size: .84rem; padding: 5px 12px; border-radius: 999px; cursor: pointer; }
.so-chip:hover { border-color: var(--ot-brand); }
.so-grads { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.so-grad { width: 36px; height: 36px; border-radius: 10px; border: 2px solid transparent; cursor: pointer; }
.so-grad.is-on { border-color: var(--ot-text); box-shadow: 0 0 0 2px var(--ot-surface) inset; }
.so-nets { display: grid; gap: 8px; }
.so-net { border: 1px solid var(--ot-border); border-radius: var(--ot-radius-s); padding: 8px 10px; display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; }
.so-net > b { flex: 1 1 100%; font-size: .9rem; }
.so-fmtck { display: inline-flex; gap: 5px; align-items: center; font-size: .84rem; padding: 3px 9px; border: 1px solid var(--ot-border); border-radius: 999px; cursor: pointer; background: var(--ot-surface); }
.so-fmtck small { color: var(--ot-text-soft); font-size: .72rem; }
.so-fmtck.is-on { background: color-mix(in srgb, var(--ot-brand) 12%, var(--ot-surface)); border-color: var(--ot-brand); font-weight: 600; }
.so-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px; }
.so-cards { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); align-items: start; margin-top: 10px; }
.so-card { border: 2px solid var(--ot-border); border-radius: var(--ot-radius); padding: 8px; background: var(--ot-surface); transition: border-color .2s; }
.so-card.is-ok { border-color: var(--ot-success); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ot-success) 20%, transparent); }
.so-ctop { font-size: .8rem; margin-bottom: 6px; } .so-ctop span { color: var(--ot-text-soft); }
.so-cv { width: 100%; max-height: 520px; display: flex; justify-content: center; background: repeating-conic-gradient(#e9ebf1 0 25%, #f6f7fa 0 50%) 0 0 / 16px 16px; border-radius: 8px; overflow: hidden; cursor: grab; touch-action: none; margin: 0 auto; }
.so-cv:active { cursor: grabbing; }
.so-cv canvas { width: 100%; height: 100%; display: block; }
.so-ctl { display: flex; gap: 8px; margin-top: 6px; }
.so-mini { display: flex; flex-direction: column; font-size: .72rem; font-weight: 600; color: var(--ot-text-soft); flex: 1; min-width: 0; }
.so-mini select { font: inherit; font-size: .8rem; padding: 3px; border-radius: 6px; border: 1px solid var(--ot-border); background: var(--ot-surface); color: var(--ot-text); }
.so-cacts { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.so-ok { flex: 1; display: flex; gap: 6px; align-items: center; font-weight: 700; font-size: .9rem; cursor: pointer; padding: 6px 8px; border-radius: 8px; background: var(--ot-surface-2); }
.so-card.is-ok .so-ok { background: color-mix(in srgb, var(--ot-success) 16%, var(--ot-surface)); color: var(--ot-success); }
.so-caps { display: grid; gap: 6px; margin: 10px 0; }
.so-cap { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; border: 1px solid var(--ot-border); border-radius: var(--ot-radius-s); padding: 6px 10px; }
.so-cap b { flex: 1 1 140px; font-size: .9rem; }
.so-len { font-size: .8rem; color: var(--ot-text-soft); font-variant-numeric: tabular-nums; }
.so-cap.is-over { border-color: var(--ot-danger); } .so-cap.is-over .so-len { color: var(--ot-danger); font-weight: 700; }
.so-acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.so-acts .ot-btn:disabled { opacity: .5; cursor: not-allowed; }
.so-about { margin-top: calc(var(--ot-space) * 2); }
.so-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); background: var(--ot-text); color: var(--ot-bg); padding: 10px 18px; border-radius: 999px; font-size: .9rem; z-index: 50; max-width: calc(100vw - 32px); text-align: center; }
