:root { --accent:#0ea5e9; --a4w:794px; --a4h:1123px; }
body { font-family: 'Inter', sans-serif; }

.bullets { list-style: disc; padding-left: 1.1rem; }
.sec-title { font-size: .72rem; letter-spacing: .09em; font-weight: 600; color: #475569; text-transform: uppercase; margin-bottom: .4rem; }

.stack-xs > * + * { margin-top:.35rem; }
.stack-sm > * + * { margin-top:.55rem; }
.stack-md > * + * { margin-top:.8rem; }
.stack-lg > * + * { margin-top:1rem; }
.stack-xl > * + * { margin-top:2rem; }
.stack-xxl > * + * { margin-top:3rem; }

.chip { display:inline-flex; align-items:center; padding:.20rem .60rem; border-radius:9999px; font-size:.8rem; border:1px solid #cbd5e1; color:#334155; background:#f8fafc; cursor:pointer; user-select:none; line-height:1; }
.chip-on { background:#eff6ff; color:#1d4ed8; border-color:#60a5fa; }

.btn-loading{ position:relative; opacity:.8; pointer-events:none }
.btn-loading:after{ content:'…'; position:absolute; right:1rem; top:50%; transform:translateY(-50%); animation:dots 1.2s steps(4,end) infinite }
@keyframes dots{ 0%,20%{content:'.'} 40%{content:'..'} 60%,100%{content:'...'} }

.shake { animation: sh .28s linear 0s 1; }
@keyframes sh { 0%,100%{ transform:translateX(0) } 20%{ transform:translateX(-8px) } 40%{ transform:translateX(8px) } 60%{ transform:translateX(-6px) } 80%{ transform:translateX(6px) } }

/* A4 preview frame (mêmes contraintes que ton inline style) */
#cv-preview-frame{
    width:var(--a4w); min-width:var(--a4w); max-width:var(--a4w);
    min-height:var(--a4h); max-height:var(--a4h);
    margin-inline:auto; overflow:hidden;
}
#cv-preview-frame * { overflow-wrap: break-word; word-break: break-word; }

/* Impression */
@media print {
    #form-container, #print-button-container { display: none !important; }
    #cv-preview-frame { width: 210mm; height: 297mm; }
    #cv-stage { box-shadow:none !important; }
    body { margin:0; padding:0; }
    .cv-section { break-inside: avoid; }
}
