/* Cover Letter Studio — all rules scoped to .cls-app so the site theme is untouched. */
.cls-app{
  --cls-accent:#0F6B5C;
  --cls-ground:#EEF1F4; --cls-panel:#fff; --cls-sheet:#fff; --cls-ink:#16212B; --cls-ink-2:#4A5764; --cls-ink-3:#7A8794;
  --cls-line:#D5DCE3; --cls-line-2:#E5EAEF; --cls-field:#F7F9FB; --cls-warn:#9A5B00; --cls-warn-soft:#FFF3DE; --cls-err:#A3262A; --cls-err-soft:#FCEBEC;
  --cls-accent-soft:color-mix(in srgb,var(--cls-accent) 12%,#fff);
  --cls-letter:Georgia,"Times New Roman",serif;
  --cls-mono:ui-monospace,Menlo,Consolas,monospace;
  background:var(--cls-ground);color:var(--cls-ink);font-size:15px;line-height:1.5;
  padding:24px 16px;border-radius:12px;max-width:1240px;margin:0 auto;
  display:flex;flex-direction:column;gap:20px;text-align:left
}
.cls-app *,.cls-app *::before,.cls-app *::after{box-sizing:border-box}
.cls-app [hidden]{display:none!important}
.cls-app h2.cls-title{font-family:var(--cls-letter);font-weight:500;font-size:clamp(24px,3.2vw,32px);line-height:1.15;margin:0;color:var(--cls-ink);text-wrap:balance}
.cls-app h3{font-size:15px;font-weight:600;margin:0;color:var(--cls-ink);line-height:1.3}
.cls-app p{margin:0}
.cls-app .cls-sub{color:var(--cls-ink-2);margin-top:4px;max-width:62ch}
.cls-app .cls-top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.cls-app .cls-top-actions{display:flex;gap:8px;flex-wrap:wrap}
.cls-app .cls-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:20px;align-items:start}
@media (max-width:920px){.cls-app .cls-grid{grid-template-columns:minmax(0,1fr)}}
.cls-app .cls-panel{background:var(--cls-panel);border:1px solid var(--cls-line);border-radius:10px;overflow:hidden;margin:0}
.cls-app .cls-step{padding:18px 20px;border-top:1px solid var(--cls-line-2);display:flex;flex-direction:column;gap:12px}
.cls-app .cls-step:first-child{border-top:0}
.cls-app .cls-step-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.cls-app .cls-no{font-family:var(--cls-mono);font-size:12px;color:var(--cls-accent);font-weight:600}
.cls-app .cls-hint{margin-left:auto;font-size:12px;color:var(--cls-ink-3)}
.cls-app .cls-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:520px){.cls-app .cls-row{grid-template-columns:minmax(0,1fr)}}
.cls-app label.cls-f{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:500;color:var(--cls-ink-2);letter-spacing:.02em;margin:0}
.cls-app .cls-req{color:var(--cls-accent)}
.cls-app input[type=text],.cls-app input[type=url],.cls-app input[type=email],.cls-app textarea,.cls-app select{
  font:inherit;font-size:14px;color:var(--cls-ink);background:var(--cls-field);border:1px solid var(--cls-line);border-radius:7px;padding:9px 11px;width:100%;max-width:100%;margin:0;box-shadow:none;height:auto;line-height:1.4}
.cls-app textarea{resize:vertical;min-height:72px}
.cls-app input:focus-visible,.cls-app textarea:focus-visible,.cls-app select:focus-visible,.cls-app button:focus-visible{outline:2px solid var(--cls-accent);outline-offset:1px;border-color:var(--cls-accent)}
.cls-app .cls-help{font-size:12px;color:var(--cls-ink-3)}
.cls-app .cls-board{display:inline-flex;font-family:var(--cls-mono);font-size:12px;color:var(--cls-accent);background:var(--cls-accent-soft);padding:3px 8px;border-radius:999px;width:fit-content}
.cls-app button.cls-btn{font:inherit;font-size:13px;font-weight:500;border-radius:7px;padding:8px 14px;border:1px solid var(--cls-line);background:var(--cls-panel);color:var(--cls-ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px;line-height:1.3;text-transform:none;letter-spacing:normal;box-shadow:none;min-height:0;width:auto;margin:0}
.cls-app button.cls-btn:hover{border-color:var(--cls-ink-3);background:var(--cls-panel);color:var(--cls-ink)}
.cls-app button.cls-primary,.cls-app button.cls-primary:hover{background:var(--cls-accent);border-color:var(--cls-accent);color:#fff;font-weight:600}
.cls-app button.cls-primary:hover{filter:brightness(1.08)}
.cls-app button.cls-ghost{border-color:transparent;background:transparent;color:var(--cls-ink-2)}
.cls-app button.cls-ghost:hover{background:var(--cls-line-2);border-color:transparent}
.cls-app button.cls-btn[disabled]{opacity:.5;cursor:not-allowed}
.cls-app button.cls-small{padding:5px 10px;font-size:12px}
.cls-app .cls-fit{width:fit-content}
.cls-app .cls-xp-list{display:flex;flex-direction:column;gap:10px}
.cls-app .cls-xp{border:1px solid var(--cls-line);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:10px}
.cls-app .cls-xp-top{display:flex;align-items:center;gap:8px}
.cls-app .cls-xp-top .cls-tag{font-family:var(--cls-mono);font-size:11px;color:var(--cls-ink-3)}
.cls-app .cls-xp-top button{margin-left:auto}
.cls-app .cls-chips{display:flex;flex-wrap:wrap;gap:6px}
.cls-app button.cls-chip{font:inherit;font-size:12px;padding:5px 10px;border-radius:999px;border:1px solid var(--cls-line);background:var(--cls-field);color:var(--cls-ink-2);cursor:pointer;line-height:1.3;text-transform:none;margin:0;min-height:0}
.cls-app button.cls-chip[aria-pressed="true"]{background:var(--cls-accent-soft);border-color:var(--cls-accent);color:var(--cls-accent);font-weight:600}
.cls-app .cls-drop{border:1px dashed var(--cls-line);border-radius:8px;padding:12px;display:flex;align-items:center;gap:12px;background:var(--cls-field);flex-wrap:wrap}
.cls-app .cls-drop.cls-over{border-color:var(--cls-accent);background:var(--cls-accent-soft)}
.cls-app .cls-drop img{width:88px;height:56px;object-fit:cover;border-radius:5px;border:1px solid var(--cls-line);margin:0}
.cls-app .cls-meta{font-size:12px;color:var(--cls-ink-2);flex:1;min-width:140px}
.cls-app .cls-gen-bar{padding:16px 20px;border-top:1px solid var(--cls-line);background:var(--cls-field);display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.cls-app .cls-status{font-size:12px;color:var(--cls-ink-3);margin-left:auto}
.cls-app .cls-privacy{flex-basis:100%;font-size:11.5px;color:var(--cls-ink-3)}
.cls-app .cls-right{position:sticky;top:24px;display:flex;flex-direction:column;gap:12px}
@media (max-width:920px){.cls-app .cls-right{position:static}}
.cls-app .cls-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cls-app .cls-spacer{flex:1}
.cls-app .cls-sheet{background:var(--cls-sheet);border:1px solid var(--cls-line);border-radius:4px;box-shadow:0 1px 2px rgba(22,33,43,.06),0 8px 28px rgba(22,33,43,.08);padding:clamp(22px,5vw,52px) clamp(20px,5vw,56px);font-family:var(--cls-letter);font-size:16px;line-height:1.62;color:var(--cls-ink);min-height:420px}
.cls-app .cls-lh{display:flex;flex-direction:column;gap:2px;padding-bottom:16px;margin-bottom:20px;border-bottom:1px solid var(--cls-line)}
.cls-app .cls-nm{font-size:23px;font-weight:600}
.cls-app .cls-ct,.cls-app .cls-dt,.cls-app .cls-re{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;font-size:12.5px;color:var(--cls-ink-2)}
.cls-app .cls-dt{margin-bottom:6px}
.cls-app .cls-re{margin-bottom:18px}
.cls-app .cls-re a{color:var(--cls-accent);word-break:break-all}
.cls-app .cls-body p{margin:0 0 14px;max-width:68ch}
.cls-app .cls-body[contenteditable="true"]{outline:none}
.cls-app .cls-body[contenteditable="true"]:focus{box-shadow:inset 0 0 0 2px var(--cls-accent-soft);border-radius:4px}
.cls-app .cls-body .cls-empty{color:var(--cls-ink-3);font-family:system-ui,sans-serif;font-size:14px}
.cls-app .cls-thinking{font-family:system-ui,sans-serif;color:var(--cls-ink-3);font-size:14px;display:flex;align-items:center;gap:8px}
.cls-app .cls-dot{width:8px;height:8px;border-radius:50%;background:var(--cls-accent);animation:cls-p 1.1s ease-in-out infinite}
@keyframes cls-p{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.cls-app .cls-dot{animation:none}}
.cls-app .cls-note{font-size:13px;border-radius:7px;padding:9px 12px;background:var(--cls-err-soft);color:var(--cls-err)}
.cls-app .cls-note a{color:inherit;text-decoration:underline}
.cls-app .cls-flag{font-family:var(--cls-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--cls-warn);background:var(--cls-warn-soft);padding:3px 8px;border-radius:4px}
.cls-app .cls-refine{display:flex;gap:8px;flex-wrap:wrap}
.cls-app .cls-refine input{flex:1;min-width:200px;width:auto}
.cls-app .cls-stats{font-family:var(--cls-mono);font-size:11.5px;color:var(--cls-ink-3);font-variant-numeric:tabular-nums}
.cls-app .cls-toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--cls-ink);color:#fff;font-size:13px;padding:8px 14px;border-radius:7px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:99999}
.cls-app .cls-toast.cls-show{opacity:1}

/* ---------- Generating state ---------- */
.cls-app button.cls-gen .cls-spin{display:none;width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:cls-rot .8s linear infinite}
.cls-app.cls-busy button.cls-gen .cls-spin{display:inline-block}
.cls-app.cls-busy button.cls-gen,.cls-app.cls-busy button.cls-gen[disabled]{opacity:1;cursor:progress;position:relative;overflow:hidden;
  background:linear-gradient(100deg,var(--cls-accent) 30%,color-mix(in srgb,var(--cls-accent) 70%,#fff) 50%,var(--cls-accent) 70%);background-size:220% 100%;animation:cls-sweep 1.6s linear infinite}
.cls-app .cls-minibar{flex-basis:100%;height:4px;border-radius:4px;background:var(--cls-line-2);overflow:hidden}
.cls-app .cls-minibar span{display:block;height:100%;width:0;background:var(--cls-accent);border-radius:4px;transition:width .6s ease}
.cls-app.cls-busy [data-form] .cls-step{opacity:.6;transition:opacity .3s}

.cls-app .cls-progress{display:flex;flex-direction:column;gap:14px;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
  border:1px solid color-mix(in srgb,var(--cls-accent) 35%,transparent);background:var(--cls-accent-soft);border-radius:10px;padding:18px 18px 16px;
  animation:cls-glow 2s ease-in-out infinite}
.cls-app .cls-prog-head{display:flex;align-items:center;gap:10px;color:var(--cls-ink);font-size:15px}
.cls-app .cls-prog-head strong{font-weight:600}
.cls-app .cls-prog-time{margin-left:auto;font-family:var(--cls-mono);font-size:12px;color:var(--cls-ink-2);font-variant-numeric:tabular-nums}
.cls-app .cls-pulse{position:relative;width:12px;height:12px;border-radius:50%;background:var(--cls-accent);flex:none}
.cls-app .cls-pulse::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--cls-accent);animation:cls-ping 1.4s ease-out infinite}
.cls-app .cls-bar{height:8px;border-radius:8px;background:color-mix(in srgb,var(--cls-accent) 15%,#fff);overflow:hidden}
.cls-app .cls-bar span{display:block;height:100%;width:0;border-radius:8px;transition:width .6s ease;
  background:repeating-linear-gradient(45deg,var(--cls-accent) 0 10px,color-mix(in srgb,var(--cls-accent) 80%,#fff) 10px 20px);background-size:28px 28px;animation:cls-stripes .9s linear infinite}
.cls-app .cls-stages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cls-app .cls-stages li{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--cls-ink-3);margin:0;transition:color .3s}
.cls-app .cls-stages li::before{content:"";flex:none;width:18px;height:18px;border-radius:50%;border:2px solid var(--cls-line);background:var(--cls-panel);box-sizing:border-box;transition:all .3s}
.cls-app .cls-stages li.cls-active{color:var(--cls-ink);font-weight:600}
.cls-app .cls-stages li.cls-active::before{border-color:var(--cls-accent);border-top-color:transparent;animation:cls-rot .8s linear infinite}
.cls-app .cls-stages li.cls-done{color:var(--cls-ink-2)}
.cls-app .cls-stages li.cls-done::before{border-color:var(--cls-accent);background:var(--cls-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}
.cls-app .cls-skel{display:flex;flex-direction:column;gap:9px;padding-top:4px}
.cls-app .cls-skel i{display:block;height:10px;border-radius:5px;background:linear-gradient(90deg,color-mix(in srgb,var(--cls-accent) 18%,#fff) 25%,var(--cls-panel) 50%,color-mix(in srgb,var(--cls-accent) 18%,#fff) 75%);background-size:200% 100%;animation:cls-shimmer 1.4s linear infinite}
.cls-app .cls-skel i:nth-child(1){width:38%}.cls-app .cls-skel i:nth-child(2){width:96%}.cls-app .cls-skel i:nth-child(3){width:90%}
.cls-app .cls-skel i:nth-child(4){width:94%}.cls-app .cls-skel i:nth-child(5){width:70%}.cls-app .cls-skel i:nth-child(6){width:30%}
.cls-app .cls-prog-note{font-size:12px;color:var(--cls-ink-2)}
.cls-app .cls-body.cls-reveal p{animation:cls-in .5s ease both}
.cls-app .cls-body.cls-reveal p:nth-child(2){animation-delay:.08s}.cls-app .cls-body.cls-reveal p:nth-child(3){animation-delay:.16s}
.cls-app .cls-body.cls-reveal p:nth-child(4){animation-delay:.24s}.cls-app .cls-body.cls-reveal p:nth-child(n+5){animation-delay:.32s}

@keyframes cls-rot{to{transform:rotate(360deg)}}
@keyframes cls-sweep{from{background-position:120% 0}to{background-position:-120% 0}}
@keyframes cls-ping{0%{transform:scale(1);opacity:.6}100%{transform:scale(2.6);opacity:0}}
@keyframes cls-stripes{to{background-position:28px 0}}
@keyframes cls-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
@keyframes cls-glow{50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--cls-accent) 14%,transparent)}}
@keyframes cls-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .cls-app .cls-spin,.cls-app .cls-pulse::after,.cls-app .cls-bar span,.cls-app .cls-skel i,.cls-app .cls-progress,
  .cls-app .cls-stages li.cls-active::before,.cls-app.cls-busy button.cls-gen,.cls-app .cls-body.cls-reveal p{animation:none!important}
}
