/* CV & cover-letter maker. Uses app.css tokens (aubergine, violet, lavender tiles, no shadows).
   Editor: full screen like study sessions (cv-editor.html). List: in the app shell (cvs.html). Approved mockups 20–24. */
[hidden]{display:none!important}
.ico{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}

/* ---- editor frame */
.cved{display:flex;flex-direction:column;height:100vh;height:100dvh}
.cvbar{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid #ece6f4;flex-shrink:0}
.cvbar .in{padding:0 24px;height:72px;display:flex;align-items:center;gap:16px}
.cvbar .exit{display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 16px;margin-left:-8px;border-radius:12px;font:600 17px/1 var(--f);white-space:nowrap}
.cvbar .exit:hover{background:var(--tile)}
.cvbar .name{font:600 17px/1 var(--f);color:var(--ink);border:0;background:transparent;height:44px;padding:0 12px;border-radius:10px;min-width:0;width:340px;max-width:30vw;text-overflow:ellipsis}
.cvbar .name:hover{background:var(--tile)}.cvbar .name:focus{background:var(--tile);outline:2px solid var(--v)}
.cvbar .save{display:inline-flex;align-items:center;gap:8px;font:var(--small);color:var(--mut);white-space:nowrap}
.cvbar .save i{width:8px;height:8px;border-radius:50%;background:#16734a;flex-shrink:0}
.cvbar .save.warn{color:#7a5200}.cvbar .save.warn i{background:#d08a00}
.cvbar .grow{flex:1}
.cvbar .switch{height:48px}
.cvbar .dl{position:relative}
.cvbar .dlb .ico{margin-right:8px}

.offerbar{display:flex;align-items:center;gap:16px;background:var(--tile);padding:0 16px 0 24px;min-height:48px;font:var(--small);color:var(--ink);flex-shrink:0}
.offerbar b{font-weight:600}
.offerbar a.go{font-weight:600;color:var(--vh);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.offerbar .x{margin-left:auto;border:0;background:transparent;width:40px;height:40px;border-radius:10px;cursor:pointer;color:var(--mut);display:grid;place-items:center;flex-shrink:0}
.offerbar .x:hover{background:#e6def2}

.cvwork{flex:1;min-height:0;display:grid;grid-template-columns:460px minmax(0,1fr) 312px}
.cvwork>*{overflow-y:auto;min-height:0}
.cvform{padding:24px 24px 48px;border-right:1px solid #ece6f4}
.cvprev{background:#f4f1f8;padding:24px 24px 48px;display:flex;flex-direction:column;align-items:center;gap:12px}
.cvrail{padding:24px;border-left:1px solid #ece6f4;display:flex;flex-direction:column;gap:16px}
.cvrail #railoffer:empty{display:none}

/* sections (one open at a time) */
.sec{border-radius:16px;background:#fff;border:1px solid #e6def2;margin-bottom:12px}
.sec>.sh{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:0 20px;border:0;background:transparent;font:600 17px/1.2 var(--f);color:var(--ink);cursor:pointer;text-align:left;border-radius:16px}
.sec>.sh:hover{background:#faf8fd}
.sec>.sh .st{margin-left:auto;font:var(--small);color:var(--mut);white-space:nowrap}
.sec>.sh .ok{width:22px;height:22px;border-radius:50%;background:#e3f3ea;color:#16734a;display:grid;place-items:center;flex-shrink:0}
.sec>.sh .ok svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4}
.sec>.sh .todo{width:22px;height:22px;border-radius:50%;border:2px solid #cfc3e0;flex-shrink:0}
.sec.open{border-color:#cdbdf0}
.sec .sb{padding:0 20px 20px;display:grid;gap:16px}
.ptitle{display:none}
.fld{display:grid;gap:6px;font:600 15px/1.2 var(--f);color:var(--ink)}
.fld input,.fld textarea,.crow input{font:400 16px/1.45 var(--f);color:var(--ink);background:#fff;border:1.5px solid #d9d0e6;border-radius:12px;padding:11px 14px;width:100%;min-width:0}
.fld input,.crow input{height:48px}
.fld input:disabled{background:#f6f3fa;color:var(--mut)}
.fld textarea{min-height:120px;resize:vertical}
.fld input:focus,.fld textarea:focus,.crow input:focus{outline:none;border-color:var(--v);box-shadow:0 0 0 3px #e5dafb}
.fld .hint{font:var(--small);color:var(--mut);font-weight:400}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.chk{display:flex;align-items:center;gap:10px;font:var(--small);color:var(--ink);cursor:pointer}
.chk input{width:20px;height:20px;accent-color:var(--v);flex-shrink:0}
.count{margin:-8px 0 0;font:var(--small);color:var(--mut)}
.entry{border-radius:12px;background:#faf8fd;border:1px solid #ece6f4;padding:16px;display:grid;gap:14px}
.entry.closed{padding:4px 4px 4px 0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px}
.entry .eh{display:flex;align-items:center;justify-content:space-between;gap:12px;font:600 15px/1.3 var(--f);border:0;background:transparent;text-align:left;padding:10px 12px 10px 16px;border-radius:10px;cursor:pointer;color:var(--ink);min-width:0}
.entry .eh:hover{background:var(--tile)}
.entry .eh b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.entry .eh span{font-weight:400;color:var(--mut);white-space:nowrap}
.entry .eh2{display:flex;align-items:center;justify-content:space-between;gap:12px;font:600 15px/1.3 var(--f);min-height:40px}
.etools{display:flex;gap:2px;flex-shrink:0}
.ibtn{width:40px;height:40px;border:0;background:transparent;border-radius:10px;display:grid;place-items:center;color:var(--mut);cursor:pointer;flex-shrink:0}
.ibtn:hover{background:var(--tile);color:var(--ink)}
.rows{display:grid;gap:8px}
.crow{display:grid;grid-template-columns:minmax(0,1fr) 92px 40px;gap:8px;align-items:center}
.addrow{display:flex;gap:12px;flex-wrap:wrap}
.btn.sm{height:40px;padding:0 16px;font-size:15px;border-radius:10px}
.linkbtn{border:0;background:transparent;color:var(--vh);font:600 15px/1 var(--f);cursor:pointer;padding:4px 0;text-decoration:underline;text-underline-offset:3px}

.tipbox{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;background:var(--tile);border-radius:12px;padding:14px 16px;font:var(--small);color:var(--ink)}
.tipbox svg{width:20px;height:20px;stroke:var(--vh);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-top:1px}
.tipbox b{font-weight:600}
.tipbox.good{background:#e9f5ee}.tipbox.good svg{stroke:#16734a}
.cvform>.tipbox{margin-bottom:12px}

/* preview */
.pagewrap{position:relative;flex-shrink:0;background:#fff;border-radius:4px;overflow:hidden}
.pagewrap .cvdoc{transform-origin:top left;position:absolute;top:0;left:0}
.pmark{position:absolute;left:0;right:0;border-top:1.5px dashed #b9abd0;pointer-events:none}
.pmark span{position:absolute;right:8px;top:4px;font:600 12px/1 var(--f);color:#8a7ba3;background:#fff;padding:2px 6px;border-radius:4px}
.prevtools{font:var(--small);color:var(--mut)}
.tplchips{display:none}

/* rail cards */
.card{border-radius:16px;padding:20px;background:var(--tile)}
.card h3{margin:0;font:600 17px/1.3 var(--f)}
.card p{margin:8px 0 0;font:var(--small);color:var(--mut)}
.card .btn{margin-top:16px;width:100%}
.card.dark{background:var(--aub);color:#fff}.card.dark p{color:#cdbfdd}
.card.dark .btn{background:#fff;color:var(--aub)}.card.dark .btn:hover{background:#efe8fb}
.card .why{display:block;margin-top:12px;font:var(--small);color:#a898ba}
.strength{display:flex;align-items:baseline;gap:8px}
.strength b{font:600 40px/1 var(--f);letter-spacing:-1.4px}
.strength span{font:var(--small);color:var(--mut)}
.bar3{height:8px;border-radius:4px;background:#ddd2ee;overflow:hidden;margin:12px 0 16px}.bar3 i{display:block;height:100%;background:var(--v)}
.checks{list-style:none;margin:0;padding:0;display:grid;gap:10px;font:var(--small)}
.checks li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;align-items:start;color:var(--mut)}
.checks li i{width:18px;height:18px;border-radius:50%;margin-top:1px;background:#16734a;display:grid;place-items:center}
.checks li i svg{width:12px;height:12px;stroke:#fff;fill:none;stroke-width:2.6}
.checks li.no{color:var(--ink)}.checks li.no i{background:transparent;border:2px solid #b8a9d1}

/* download menu */
.menu{position:absolute;right:0;top:56px;background:#fff;border:1px solid #e6def2;border-radius:14px;padding:8px;width:290px;z-index:40}
.menu button{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:center;padding:12px;border-radius:10px;border:0;background:transparent;width:100%;text-align:left;cursor:pointer;color:var(--ink)}
.menu button:hover,.menu button:focus-visible{background:var(--tile)}
.menu b{display:block;font:600 16px/1.2 var(--f)}.menu span span{font:var(--small);color:var(--mut)}
.ft{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;font:600 12px/1 var(--f);color:#fff}
.ft.pdf{background:#a8324f}.ft.doc{background:#2b579a}

.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--aub);color:#fff;border-radius:12px;padding:12px 20px;font:var(--small);z-index:120;display:flex;gap:12px;align-items:center}
.toast .linkbtn{color:#d9c9ff}
.gone{max-width:560px;margin:15vh auto;padding:0 24px}.gone h1{font:var(--head);margin:0 0 8px}.gone p{color:var(--mut);margin:0 0 24px}

/* ---- list page (app shell) */
.docs{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:24px}
.doc{display:flex;flex-direction:column;gap:12px;position:relative}
.doc .th{position:relative;aspect-ratio:210/297;border-radius:14px;background:#fff;border:1px solid #e6def2;overflow:hidden;display:block}
.doc .th .cvdoc{position:absolute;top:0;left:0;transform-origin:top left;pointer-events:none}
.doc .th:hover,.doc .th:focus-visible{border-color:var(--v)}
.doc .meta{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.doc h3{margin:0;font:600 17px/1.3 var(--f);overflow-wrap:anywhere}
.doc h3 a:hover{text-decoration:underline;text-underline-offset:3px}
.doc p{margin:4px 0 0;font:var(--small);color:var(--mut)}
.doc .more{border:0;background:transparent;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:var(--mut);cursor:pointer;flex-shrink:0}
.doc .more:hover{background:var(--tile)}
.doc .kind{position:absolute;left:12px;bottom:12px;z-index:1;font:600 14px/1 var(--f);padding:6px 10px;border-radius:8px;background:var(--aub);color:#fff}
.doc .menu{top:auto;bottom:48px;right:0;width:220px}
.doc .menu button{grid-template-columns:minmax(0,1fr);font:600 16px/1.2 var(--f)}
.doc .menu button.red{color:#a8324f}
.newtile{aspect-ratio:210/297;border-radius:14px;border:2px dashed #cdbdf0;background:#fbf9fe;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding:24px;color:var(--ink);cursor:pointer;font:inherit;width:100%}
.newtile:hover,.newtile:focus-visible{border-color:var(--v);background:var(--tile)}
.newtile .plus{width:56px;height:56px;border-radius:50%;background:var(--v);color:#fff;display:grid;place-items:center}
.newtile .plus svg{width:26px;height:26px;stroke:#fff;fill:none;stroke-width:2.2;stroke-linecap:round}
.newtile b{font:600 17px/1.2 var(--f)}.newtile span{font:var(--small);color:var(--mut)}
.subhead{grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;margin:8px 0 -8px}
.subhead h2{margin:0;font:var(--head);letter-spacing:-.6px}
.subhead span{font:var(--small);color:var(--mut)}
.strip{grid-column:1/-1;display:flex;align-items:center;gap:16px;background:var(--tile);border-radius:14px;padding:12px 12px 12px 20px;font:var(--small)}
.strip b{font-weight:600}.strip .btn{margin-left:auto}
.head .r .btn{flex-shrink:0}
.picklist{display:grid;gap:8px;margin:0 0 16px}
.picklist button{display:flex;justify-content:space-between;gap:12px;align-items:center;text-align:left;border:1.5px solid #e6def2;background:#fff;border-radius:12px;padding:14px 16px;font:600 16px/1.3 var(--f);cursor:pointer;color:var(--ink)}
.picklist button:hover,.picklist button:focus-visible{border-color:var(--v);background:#faf8fd}
.picklist button span{font:var(--small);color:var(--mut);white-space:nowrap}

/* ---- dialogs (sign-up, after download, list actions) */
.sheet{position:fixed;inset:0;z-index:100;background:rgba(36,29,45,.55);display:grid;place-items:center;padding:16px}
.sheet .box{background:#fff;border-radius:22px;width:min(520px,100%);padding:32px;max-height:calc(100vh - 32px);overflow-y:auto}
.sheet .box.wide{width:min(780px,100%)}
.sheet h2{margin:0;font:var(--head);letter-spacing:-.6px}
.sheet .lead{margin:8px 0 24px;color:var(--mut);font:var(--body)}
.sheet form{display:grid;gap:16px}
.sheet .opt-in{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;align-items:start;background:var(--tile);border-radius:12px;padding:14px 16px;font:var(--small);color:var(--ink);cursor:pointer}
.sheet .opt-in input{width:20px;height:20px;margin:1px 0 0;accent-color:var(--v)}
.sheet .legal{font:var(--small);color:var(--mut);margin:0}
.sheet .legal a,.sheet .alt a{color:var(--vh);text-decoration:underline;text-underline-offset:3px}
.sheet .alt{font:var(--small);color:var(--mut);text-align:center;margin:0}
.sheet .btn.full{width:100%}
.sheet .err{margin:0;color:#a8324f;font:var(--small)}
.sheet .acts{display:flex;gap:12px;justify-content:flex-end;margin-top:24px;flex-wrap:wrap}
.done{display:flex;gap:16px;align-items:center;margin-bottom:24px}
.done .tick{width:48px;height:48px;border-radius:50%;background:#e3f3ea;display:grid;place-items:center;flex-shrink:0}
.done .tick svg{width:24px;height:24px;stroke:#16734a;fill:none;stroke-width:2.6}
.done p{margin:4px 0 0;font:var(--small);color:var(--mut)}
.nexts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.nexts.n1{grid-template-columns:minmax(0,1fr)}.nexts.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.nexts .card{display:flex;flex-direction:column}
.nexts .card p{margin-bottom:16px}
.nexts .card .btn{margin-top:auto}
.nexts .card .btn.white{background:#fff;color:var(--ink)}
.sheet .foot{display:flex;justify-content:space-between;align-items:center;margin-top:24px;gap:16px;font:var(--small);color:var(--mut);flex-wrap:wrap}

/* ---- laptop */
@media (max-width:1280px){
  .cvwork{grid-template-columns:420px minmax(0,1fr) 280px}
  .cvbar .name{width:240px}
}
@media (max-width:1080px){
  .cvwork{grid-template-columns:420px minmax(0,1fr)}
  .cvrail{display:none}
  .cvbar .hm2{display:none}
}

/* ---- phone */
.ptabs,.steps,.pnav,.progline{display:none}
@media (max-width:760px){
  .cved{height:auto;min-height:100vh}
  .cvbar .in{height:64px;padding:0 8px 0 4px;gap:4px}
  .cvbar .exit{padding:0 10px;margin-left:0}.cvbar .exit span,.cvbar .tplw,.cvbar .save .lbl,.cvbar .lbl2{display:none}
  .cvbar .name{width:auto;flex:1;max-width:none;font-size:16px;padding:0 8px}
  .cvbar .grow{display:none}
  .cvbar .dlb{width:48px;padding:0}.cvbar .dlb .ico{margin:0}
  .cvbar .save{padding:0 6px}
  .offerbar{display:none}
  .progline{display:block;height:4px;background:#e4dcf1}.progline i{display:block;height:100%;background:var(--v);transition:width .2s}
  .ptabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--tile);border-radius:12px;padding:4px;margin:12px 16px 0}
  .ptabs button{height:40px;border:0;border-radius:9px;background:transparent;font:600 15px/1 var(--f);color:var(--mut);cursor:pointer}
  .ptabs button[aria-pressed=true]{background:#fff;color:var(--ink)}
  .steps{display:flex;gap:8px;overflow-x:auto;padding:12px 16px 4px;scrollbar-width:none}
  .steps::-webkit-scrollbar{display:none}
  .steps a{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:18px;background:var(--tile);font:600 14px/1 var(--f);color:var(--mut)}
  .steps a.on{background:var(--aub);color:#fff}.steps a.dn{color:#16734a}
  .cvwork{display:block}
  .cvwork>*{overflow:visible}
  .cvform{padding:8px 16px 112px;border:0}
  .cvprev,.cvrail{display:none}
  .show-prev .cvform,.show-prev .steps{display:none}
  .show-prev .cvprev{display:flex;padding:16px 16px 112px;align-items:stretch}
  .tplchips{display:flex;gap:8px;overflow-x:auto;margin:0 -16px;padding:0 16px;scrollbar-width:none}
  .tplchips::-webkit-scrollbar{display:none}
  .tplchips button{flex-shrink:0;height:40px;padding:0 14px;border-radius:20px;border:1.5px solid #d9d0e6;background:#fff;font:600 14px/1 var(--f);color:var(--ink);cursor:pointer}
  .tplchips button[aria-pressed=true]{background:var(--aub);border-color:var(--aub);color:#fff}
  .pagewrap{align-self:center}
  .sec{border:0;margin:0;background:transparent}
  .sec:not(.open),.sec>.sh{display:none}
  .sec .sb{padding:4px 0 16px}
  .ptitle{display:block;font:600 20px/1.2 var(--f);margin:8px 0 0}
  .crow{grid-template-columns:minmax(0,1fr) 76px 40px}
  .pnav{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #ece6f4;padding:12px 16px calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;z-index:30}
  .show-prev .pnav{grid-template-columns:1fr 1fr}
  .pnav .btn{min-width:0;overflow:hidden;text-overflow:ellipsis}
  .pcard{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;background:var(--aub);color:#fff;border-radius:14px;padding:16px;font:var(--small);margin-top:8px}
  .pcard b{display:block;font:600 16px/1.3 var(--f);margin-bottom:2px}.pcard span{color:#cdbfdd}
  .pcard .btn{height:40px;padding:0 14px;font-size:15px;background:#fff;color:var(--aub);justify-self:start}
  .menu{position:fixed;left:8px;right:8px;top:64px;width:auto}
  .toast{bottom:96px;left:16px;right:16px;transform:none}
  .docs{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
  .doc h3{font-size:16px}
  .doc .menu{position:absolute;left:auto;top:auto;width:200px}
  .strip{flex-wrap:wrap}.strip .btn{margin-left:0;width:100%}
  .head .r{flex-direction:row!important;flex-wrap:wrap}.head .r .btn{flex:1 1 auto}
  .sheet{align-items:end;padding:0}
  .sheet .box{border-radius:22px 22px 0 0;padding:24px 16px calc(24px + env(safe-area-inset-bottom));max-height:92vh}
  .nexts,.nexts.n2{grid-template-columns:1fr}
}
@media (max-width:360px){
  .row2{grid-template-columns:1fr}
  .docs{gap:12px}
}

/* ---- print: only the document, full A4 */
#printroot{display:none}
@media print{
  @page{size:A4;margin:14mm 0}
  @page:first{margin-top:0}
  html,body{height:auto;background:#fff}
  body>*:not(#printroot){display:none!important}
  #printroot{display:block}
  #printroot .cvdoc{width:210mm;min-height:0;transform:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #printroot .t-sidebar .col{min-height:0}
  #printroot .it,#printroot li,#printroot .tags{break-inside:avoid}
  #printroot h2,#printroot .ih{break-after:avoid}
}
