/* Admin styling — borrows the site's palette so the two don't feel unrelated,
   but stays a dense working tool rather than a piece of design.

   Reconstructed after the file was overwritten; the palette, the three-column
   shell, the toast and the image picker are the originals. Accessibility work
   added on top: a visible focus ring on every control, hit targets that clear
   24px, `prefers-reduced-motion` honoured, and list rows that are real buttons
   with an accessible name rather than clickable divs. */
:root{
  --plum:#2E1325; --plum-700:#4A2740; --crimson:#EB1E45; --crimson-ink:#C4102F;
  --ink:#1E1016; --rag:#FBFAF8; --gallery:#F2F1EF; --mat:#E8E6E2; --line:#DAD8D4;
  --muted:#6E6B68; --muted-2:#928F8B; --white:#fff;
  --ok-green:#177245; --warn:#B45309;
  --r:10px; --side:210px; --list:320px;
  --f:"Inter",-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--gallery);color:var(--ink);font-family:var(--f);
  font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;
  display:flex;flex-direction:column;
}
button,input,select,textarea{font:inherit;color:inherit}
.muted{color:var(--muted)}
[hidden]{display:none !important}

/* One focus style everywhere. The old panel relied on the browser default,
   which the custom backgrounds made almost invisible on dark controls. */
:focus-visible{outline:2px solid var(--crimson);outline-offset:2px;border-radius:3px}
.side button:focus-visible{outline-color:#fff;outline-offset:-2px}

@media(prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important;scroll-behavior:auto !important}
}

/* skip link — the sidebar is long, and keyboard users had to tab all of it */
.skip{
  position:absolute;left:-9999px;top:8px;z-index:80;
  background:var(--ink);color:#fff;padding:9px 14px;border-radius:8px;
}
.skip:focus{left:8px}

/* ---------- top bar ---------- */
.bar{
  flex:none;height:56px;display:flex;align-items:center;gap:12px;padding:0 16px;
  background:var(--white);border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:8px;font-size:15px}
.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--crimson);flex:none}
.brand .sep{color:var(--muted-2)}
.bar-right{margin-left:auto;align-self:stretch;display:flex;align-items:center;gap:9px}

.chip{
  font:inherit;font-size:12px;padding:5px 11px;border:0;border-radius:100px;
  white-space:nowrap;
}
.chip--idle{background:var(--mat);color:var(--muted)}
.chip--dirty{background:#FDF0E3;color:var(--warn);font-weight:600;cursor:pointer}
.chip--dirty:hover{background:#F9E4CE}

/* the list of what is unsaved, opened from the chip */
.dirty-wrap{position:relative;align-self:stretch;display:flex;align-items:center}
.dirty-list{
  position:absolute;top:calc(100% + 7px);right:0;z-index:60;width:352px;
  max-height:min(72vh,560px);overflow:auto;
  background:var(--white);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 12px 34px rgba(30,16,22,.16);padding:12px;
}
.dirty-head{
  margin:0 0 10px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);
}
.dirty-groups{display:grid;gap:10px}
.dirty-group{border-top:1px solid var(--line);padding-top:9px}
.dirty-group:first-child{border-top:0;padding-top:0}

.dirty-jump{
  width:100%;display:flex;align-items:center;gap:8px;text-align:left;
  font:inherit;font-size:13.5px;color:var(--ink);
  background:none;border:0;border-radius:7px;padding:5px 7px;cursor:pointer;
}
.dirty-jump:hover{background:var(--rag)}
.dirty-jump b{font-weight:600}
.dirty-jump::after{content:'→';margin-left:auto;color:var(--muted-2)}
.dirty-n{
  font-size:11px;font-weight:600;color:var(--warn);background:#FDF0E3;
  border-radius:100px;padding:1px 7px;
}

.dirty-changes{list-style:none;margin:4px 0 0;padding:0 7px;display:grid;gap:3px}
.dirty-changes li{
  font-size:12px;line-height:1.45;color:var(--muted);
  overflow-wrap:anywhere;
}
.dirty-changes li::before{content:'\2022';color:var(--muted-2);margin-right:6px}
.dirty-changes .more{font-style:italic;color:var(--muted-2)}

.dirty-foot{margin-top:11px;padding-top:11px;border-top:1px solid var(--line)}
.dirty-foot .btn{width:100%}

.sr-only{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  min-height:34px;padding:8px 14px;border:1px solid transparent;border-radius:8px;
  background:var(--ink);color:#fff;font-size:13.5px;font-weight:500;cursor:pointer;
  white-space:nowrap;transition:background .18s,border-color .18s,color .18s;
}
.btn:hover{background:#2c1a22}
.btn--primary{background:var(--crimson)}
.btn--primary:hover{background:var(--crimson-ink)}
.btn--ghost{background:var(--white);color:var(--ink);border-color:var(--line)}
.btn--ghost:hover{background:var(--gallery);border-color:var(--muted-2)}
.btn--sm{min-height:28px;padding:5px 10px;font-size:12.5px}
.btn[disabled]{opacity:.5;cursor:default}
.btn.danger,.danger{color:var(--crimson-ink)}
.btn--ghost.danger:hover{border-color:var(--crimson);background:#FDECEF}
/* keep a disabled danger button neutral, so it does not hover-glow red */
.btn--ghost.danger[disabled]:hover{border-color:var(--line);background:var(--white)}
/* The confirming step of something that cannot be undone from the panel. The
   darker crimson keeps it apart from Publish, which is the brand crimson. */
.btn--destructive{background:var(--crimson-ink);color:#fff}
.btn--destructive:hover{background:#9E0C26}

/* ---------- shell ---------- */
.shell{flex:1;min-height:0;display:grid;grid-template-columns:var(--side) var(--list) 1fr}

.side{background:var(--plum);padding:12px 8px 20px;overflow-y:auto}
.side h6{
  margin:14px 0 6px;padding:0 10px;font-size:10.5px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);
}
.side h6:first-child{margin-top:2px}
.side button{
  width:100%;display:flex;align-items:center;gap:10px;min-height:36px;
  padding:8px 10px;border:0;border-radius:8px;background:none;cursor:pointer;
  text-align:left;font-size:13.5px;color:rgba(255,255,255,.82);
  transition:background .18s,color .18s;
}
.side button:hover{background:rgba(255,255,255,.08);color:#fff}
.side button.on{background:var(--plum-700);color:#fff;font-weight:600}
/* The label takes the room; the count sits at the right edge. */
.side .nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side .count{
  margin-left:auto;min-width:22px;text-align:center;font-size:11px;
  padding:2px 7px;border-radius:100px;background:rgba(255,255,255,.14);color:#fff;
}

/* ---------- list column ---------- */
.list{
  background:var(--white);border-right:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0;
}
.list-head{flex:none;display:flex;gap:8px;padding:12px;border-bottom:1px solid var(--line)}
.list-head input{
  flex:1;min-width:0;min-height:34px;padding:8px 11px;
  border:1px solid var(--line);border-radius:8px;background:var(--rag);
}
.list-head input:focus{outline:none;border-color:var(--crimson);box-shadow:0 0 0 3px rgba(235,30,69,.14)}
.rows{flex:1;overflow-y:auto;min-height:0}
.list-note{
  padding:11px 14px;font-size:12.5px;line-height:1.5;color:var(--muted);
  background:var(--rag);border-bottom:1px solid var(--line);
}
.linkish{
  padding:0;border:0;background:none;font:inherit;font-weight:600;
  color:var(--crimson);cursor:pointer;text-decoration:underline;text-underline-offset:2px;
}
.linkish:focus-visible{outline:2px solid var(--crimson);outline-offset:2px;border-radius:2px}
.group-label{
  position:sticky;top:0;z-index:1;
  padding:11px 14px 6px;font-size:10.5px;font-weight:600;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);background:var(--gallery);
  border-bottom:1px solid var(--line);
}
.row{
  width:100%;display:flex;align-items:center;gap:11px;
  padding:11px 14px;border:0;border-bottom:1px solid var(--line);
  background:var(--white);cursor:pointer;text-align:left;transition:background .18s;
}
.row:hover{background:var(--rag)}
.row.on{background:var(--gallery)}
.row.on b{color:var(--crimson-ink)}
.row b{display:block;font-size:13.5px;font-weight:600}
.row span{display:block;font-size:12px;color:var(--muted);line-height:1.45}
.row-txt{min-width:0;flex:1}
.row-txt b,.row-txt span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row img,.row .ph{width:34px;height:34px;flex:none;border-radius:0;object-fit:cover;background:var(--mat)}
.row .ph{display:flex;align-items:center;justify-content:center;color:var(--muted);font-weight:600}

/* ---------- editor column ---------- */
.editor{overflow-y:auto;min-height:0;padding:22px 24px 40px}
.ed-head{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.ed-head>div:first-child{flex:1;min-width:0}
.ed-head h2{margin:0;font-size:20px;line-height:1.3}
.ed-head .grp{margin-top:3px;font-size:12px;color:var(--muted)}
.empty{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:40px 26px;text-align:center;color:var(--muted);
}

/* ---------- fields ---------- */
.field{margin-bottom:16px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:6px}
.field.req>label::after{content:' *';color:var(--crimson)}
.field input[type=text],.field input[type=url],.field input[type=email],
.field input[type=number],.field input[type=tel],.field input[type=date],.field input[type=datetime-local],
.field input[type=password],.field select,.field textarea{
  width:100%;min-height:36px;padding:9px 11px;
  border:1px solid var(--line);border-radius:8px;background:var(--white);
  transition:border-color .18s,box-shadow .18s;
}
.field textarea{min-height:88px;resize:vertical;line-height:1.55}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--crimson);box-shadow:0 0 0 3px rgba(235,30,69,.14);
}
.field input.is-readonly{background:var(--gallery);color:var(--muted);cursor:default}
.field .help{margin:6px 0 0;font-size:12px;color:var(--muted);line-height:1.5}
.check{display:flex;align-items:center;gap:9px}
.check input{width:17px;height:17px;accent-color:var(--crimson)}

.pairs{display:flex;flex-direction:column;gap:8px}
.pair{display:flex;gap:8px;align-items:center}
.pair input{flex:1;min-width:0}
.tools{display:flex;gap:7px;margin-top:9px;flex-wrap:wrap}

.colorf{display:flex;gap:8px;align-items:center}
.colorf input[type=color]{
  width:38px;height:36px;padding:2px;flex:none;cursor:pointer;
  border:1px solid var(--line);border-radius:8px;background:var(--white);
}
.colorf input[type=text]{flex:1;min-width:0;font-family:var(--mono)}

.imgbox{display:flex;align-items:center;gap:13px;flex-wrap:wrap}
.imgbox img{
  width:84px;height:84px;object-fit:contain;border-radius:0;
  border:1px solid var(--line);background:var(--gallery);
}
.imgbox .none{
  width:84px;height:84px;display:flex;align-items:center;justify-content:center;
  border:1px dashed var(--line);border-radius:0;color:var(--muted);font-size:12px;
}

.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:11px}
.gal figure{margin:0;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:var(--white)}
.gal img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.gal .tools{padding:6px;margin:0;justify-content:center}

/* ---------- build panel ---------- */
.build{
  position:fixed;right:20px;bottom:20px;width:min(560px,92vw);z-index:45;
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:0 14px 44px rgba(0,0,0,.22);overflow:hidden;
}
.build-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 14px;border-bottom:1px solid var(--line);background:var(--rag);
}
.build-log{
  margin:0;padding:12px 14px;max-height:270px;overflow:auto;background:var(--gallery);
  font-family:var(--mono);font-size:11.5px;line-height:1.6;white-space:pre-wrap;
}

/* ---------- modal ---------- */
.modal{
  position:fixed;inset:0;z-index:50;background:rgba(30,16,22,.55);
  display:flex;align-items:flex-start;justify-content:center;padding:70px 18px 18px;
}
.modal-box{
  background:var(--white);border-radius:var(--r);width:min(760px,94vw);max-height:84vh;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.3);
}
.modal-head{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 18px;border-bottom:1px solid var(--line);
}
.modal-head b{font-size:15px}
.modal-actions{display:flex;gap:8px}
.modal-box>input{
  margin:12px 18px;padding:9px 12px;border:1px solid var(--line);
  border-radius:8px;background:var(--white);
}
.picker-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px;
  padding:0 18px 18px;overflow:auto;
}
.picker-grid button{
  border:1px solid var(--line);background:var(--white);border-radius:0;
  padding:4px;cursor:pointer;position:relative;
}
.picker-grid button:hover{border-color:var(--crimson)}
.picker-grid img{width:100%;aspect-ratio:1;object-fit:contain;border-radius:0;display:block;background:var(--gallery)}
.picker-grid .tag{
  position:absolute;top:9px;left:9px;background:rgba(46,19,37,.82);color:#fff;
  font-size:10px;padding:2px 6px;border-radius:4px;
}

/* ---------- publish review ---------- */
.review{max-width:660px}
.review-intro{
  margin:0;padding:12px 18px;color:var(--muted);font-size:13px;
  border-bottom:1px solid var(--line);background:var(--rag);
}
.review-list{overflow:auto;padding:6px 18px 12px}
.review-file{padding:12px 0;border-bottom:1px solid var(--line)}
.review-file:last-child{border-bottom:0}
.review-head{display:flex;align-items:center;gap:9px;cursor:pointer}
.review-head input{width:17px;height:17px;accent-color:var(--crimson)}
.review-head b{font-size:13.5px}
.review-count{margin-left:auto;font-size:11.5px;color:var(--muted)}
.review-changes{margin:8px 0 0;padding-left:26px;color:var(--muted);font-size:12.5px}
.review-changes li{margin:3px 0;word-break:break-word}
.review-changes .more{color:var(--muted-2);font-style:italic}
.review-foot{padding:14px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.review-fixed{margin-left:auto;font-size:11.5px;color:var(--muted)}

/* ---------- discard confirmation ---------- */
.modal-box.confirm{width:min(520px,94vw)}
.confirm .modal-head{border-bottom:0;padding-bottom:4px}
.confirm-msg{margin:0;padding:4px 18px 12px;font-size:14px;line-height:1.55;color:var(--ink)}
.confirm-list{overflow:auto;margin:0 18px;padding:10px 14px;border:1px solid var(--line);
  border-radius:8px;background:var(--rag);font-size:12.5px;color:var(--muted)}
.confirm-list h4{margin:8px 0 3px;font-size:11px;font-weight:600;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted-2)}
.confirm-list h4:first-child{margin-top:0}
.confirm-list ul{margin:0;padding-left:18px}
.confirm-list li{margin:2px 0;word-break:break-word}
.confirm-note{margin:0;padding:12px 18px 2px;font-size:12.5px;color:var(--muted)}

/* ---------- picture library ---------- */
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.lib-item{margin:0;border:1px solid var(--line);border-radius:0;overflow:hidden;background:var(--white)}
.lib-item img{width:100%;aspect-ratio:1;object-fit:contain;display:block;background:var(--gallery)}
.lib-item figcaption{padding:8px 10px}
.lib-item figcaption b{display:block;font-size:12px;font-weight:600;word-break:break-all;margin-bottom:5px}
.lib-tags{display:flex;gap:5px;flex-wrap:wrap}
.lib-tags .tag{font-size:10px;padding:2px 7px;border-radius:100px;background:var(--mat);color:var(--muted)}
.lib-tags .tag--on{background:#E7F3EC;color:var(--ok-green)}
.lib-tags .tag--new{background:#FDECEF;color:var(--crimson-ink)}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%);
  background:var(--ink);color:#fff;padding:11px 18px;border-radius:100px;
  z-index:60;font-size:13.5px;
}
.toast.bad{background:var(--crimson-ink)}

/* ---------- sign-in gate ---------- */
.gate-body{display:flex;align-items:center;justify-content:center;background:var(--plum);padding:24px}
.gate{
  width:100%;max-width:380px;background:var(--white);
  border-radius:14px;padding:30px 30px 24px;box-shadow:0 20px 60px rgba(0,0,0,.28);
}
.gate-brand{display:flex;align-items:center;gap:7px;font-size:13px;margin-bottom:22px}
.gate-brand .dot{width:9px;height:9px;border-radius:50%;background:var(--crimson);display:inline-block}
.gate-brand .sep{color:var(--muted-2)}
.gate-title{margin:0 0 6px;font-size:21px;letter-spacing:-.01em}
.gate-blurb{margin:0 0 20px;color:var(--muted);font-size:13.5px}
.gate-label{display:block;font-size:12.5px;color:var(--muted);margin:0 0 5px}
.gate-input{
  width:100%;padding:10px 12px;margin-bottom:14px;
  border:1px solid var(--line);border-radius:8px;background:var(--rag);
}
.gate-input:focus{outline:2px solid var(--crimson);outline-offset:1px;border-color:transparent}
.gate-btn{
  width:100%;padding:11px;border:0;border-radius:8px;cursor:pointer;
  background:var(--crimson);color:#fff;font-weight:600;
}
.gate-btn:hover{background:var(--crimson-ink)}
.gate-btn:disabled{opacity:.6;cursor:default}
.gate-error{margin:13px 0 0;padding:9px 11px;border-radius:7px;font-size:13px;background:#FDECEF;color:var(--crimson-ink)}
.gate-foot{margin:20px 0 0;font-size:11.5px;color:var(--muted-2);text-align:center}

/* ---------- SEO section ---------- */
.seo-preview{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:14px 16px;margin-bottom:16px;
}
.seo-preview h6{
  margin:0 0 10px;font-size:10.5px;font-weight:600;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);
}
.serp{font-family:arial,sans-serif;max-width:600px}
.serp .u{font-size:12.5px;color:#202124;line-height:1.4;word-break:break-all}
.serp .t{font-size:19px;color:#1a0dab;line-height:1.35;margin:2px 0 3px;overflow-wrap:anywhere}
.serp .d{font-size:13px;color:#4d5156;line-height:1.55;overflow-wrap:anywhere}
.serp .empty-hint{color:var(--muted-2);font-style:italic}
.counter{float:right;font-weight:400;font-size:11.5px;font-family:var(--mono)}
.counter.ok{color:var(--ok-green)}
.counter.warn{color:var(--warn)}
.counter.over{color:var(--crimson-ink)}

/* ---------- responsive ---------- */
@media(max-width:1100px){
  .shell{grid-template-columns:170px 270px 1fr}
}
@media(max-width:860px){
  .shell{grid-template-columns:1fr;grid-auto-rows:min-content}
  .side{max-height:190px}
  .list{border-right:0;border-bottom:1px solid var(--line);max-height:280px}
  .editor{padding:16px}
}

/* ---------- reordering ---------- */
.row.drag{cursor:grab}
.row.drag:active{cursor:grabbing}
.row.dragging{opacity:.45}
.row.over{box-shadow:inset 0 2px 0 var(--crimson)}
.row.over-below{box-shadow:inset 0 -2px 0 var(--crimson)}
.row:focus-visible{outline:2px solid var(--crimson);outline-offset:-2px}
.ord{
  flex:none;min-width:22px;text-align:right;
  font-family:var(--mono);font-size:11.5px;color:var(--muted-2);
}
.row.on .ord{color:var(--crimson-ink)}
/* Star and move-to-top sit at the end and only firm up on hover, so a long
   list stays readable rather than turning into a wall of controls. */
.star,.totop{
  flex:none;width:26px;height:26px;padding:0;border:0;border-radius:6px;
  background:none;cursor:pointer;font-size:14px;line-height:1;
  color:var(--muted-2);opacity:.5;transition:opacity .18s,color .18s,background .18s;
}
.row:hover .star,.row:hover .totop,.row.on .star,.row.on .totop{opacity:1}
.star:hover,.totop:hover{background:var(--mat);color:var(--ink)}
.star.on{opacity:1;color:#D9A400}
.star.on:hover{color:#b58600}
.totop{font-size:15px}

/* ---------- media library ---------- */
.lib-item{
  display:block;width:100%;padding:0;text-align:left;cursor:pointer;
  border:1px solid var(--line);border-radius:0;overflow:hidden;
  background:var(--white);transition:border-color .18s,box-shadow .18s;
}
.lib-item:hover{border-color:var(--crimson);box-shadow:0 6px 20px -12px rgba(0,0,0,.4)}
.lib-cap{display:block;padding:8px 10px}
.lib-cap b{display:block;font-size:12px;font-weight:600;word-break:break-all;margin-bottom:3px}
.lib-dims{
  display:block;font-family:var(--mono);font-size:10.5px;color:var(--muted-2);margin-bottom:6px;
}
.lib-tags .tag--warn{background:#FDF0E3;color:var(--warn)}

/* one image */
.media-detail{display:grid;grid-template-columns:minmax(240px,440px) 1fr;gap:26px;align-items:start}
@media(max-width:900px){.media-detail{grid-template-columns:1fr}}
.media-big{
  width:100%;border:1px solid var(--line);border-radius:0;
  background:var(--gallery);display:block;
}
.facts{
  display:grid;grid-template-columns:auto 1fr;gap:7px 16px;margin:20px 0 0;
  padding-top:16px;border-top:1px solid var(--line);font-size:13px;
}
.facts dt{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.facts dd{margin:0;font-variant-numeric:tabular-nums}

/* ---------- dashboard ---------- */
.nav-home{
  width:100%;display:flex;align-items:center;min-height:36px;
  padding:8px 10px;margin-bottom:4px;border:0;border-radius:8px;background:none;
  cursor:pointer;text-align:left;font-size:13.5px;font-weight:600;
  color:rgba(255,255,255,.9);transition:background .18s;
}
.nav-home:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-home.on{background:var(--crimson);color:#fff}
.dash-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.dash-card{background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px}
.dash-card.attention{border-left:3px solid var(--crimson)}
.dash-card h3{margin:0 0 8px;font-size:15px}
.dash-p{margin:0 0 12px;font-size:13.5px;color:var(--muted)}
.dash-list{margin:0 0 12px;padding-left:18px;font-size:13.5px}
.dash-list li{margin:4px 0}
.dash-muted{color:var(--muted);font-size:12.5px}
.dash-jump{
  border:0;background:none;padding:0;cursor:pointer;font:inherit;font-size:13.5px;
  color:var(--crimson-ink);text-decoration:underline;text-underline-offset:2px;
}
.dash-jump:hover{color:var(--crimson)}
.dash-h{margin:26px 0 12px;font-size:13px;font-weight:600;color:var(--muted);
  letter-spacing:.06em;text-transform:uppercase}
.dash-tiles{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));
  gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
}
.dash-tile{background:var(--white);padding:14px 16px}
.dash-n{display:block;font-size:24px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.dash-k{display:block;margin-top:6px;font-size:11.5px;color:var(--muted)}
.dash-jumps{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.dash-jumps .dash-jump{
  text-decoration:none;border:1px solid var(--line);border-radius:100px;
  padding:6px 13px;color:var(--ink);background:var(--white);
}
.dash-jumps .dash-jump:hover{border-color:var(--crimson);color:var(--crimson-ink)}

/* a field whose value does not match the shape it should have */
.warnline{margin:6px 0 0;font-size:12px;color:var(--warn);font-weight:500}
.field input.is-warn{border-color:var(--warn);background:#FFFDF8}

/* tracking status on the overview */
.an-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.an-tag{
  font-size:11.5px;padding:3px 9px;border-radius:100px;
  background:var(--mat);color:var(--muted);
}
.an-tag.on{background:#E7F3EC;color:var(--ok-green);font-weight:500}

/* ---------- content blocks on a made page ---------- */
.blocks{display:flex;flex-direction:column;gap:12px}
.block{border:1px solid var(--line);border-radius:var(--r);padding:12px;background:var(--rag)}
.block-bar{display:flex;align-items:center;gap:6px;margin-bottom:9px}
.block-n{
  flex:1;font-family:var(--mono);font-size:11px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted);
}
.block input{margin-bottom:8px}

/* ---------- SEO panel inside an item ---------- */
.seo-panel{
  margin-top:26px;padding-top:20px;border-top:2px solid var(--line);
}
.seo-h{
  margin:0 0 14px;font-size:12px;font-weight:600;letter-spacing:.09em;
  text-transform:uppercase;color:var(--crimson-ink);
}
.seo-panel .field{margin-bottom:14px}

/* a field that is only an explanation */
.note-only{display:none}
.field:has(> .note-only){
  background:var(--rag);border:1px solid var(--line);border-left:3px solid var(--crimson);
  border-radius:var(--r);padding:14px 16px;
}
.field:has(> .note-only) label{margin-bottom:4px;color:var(--ink)}
.field:has(> .note-only) .help{margin-top:0}


/* Which images the picker is showing. The record you came from comes first,
   because replacing a picture almost always means another of its own. */
.picker-filters{display:flex;gap:6px;flex-wrap:wrap;padding:0 14px 12px}
.picker-filter{
  display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:12.5px;
  background:var(--white);color:var(--ink);border:1px solid var(--line);
  border-radius:100px;padding:5px 12px;cursor:pointer;
}
.picker-filter:hover{background:var(--rag)}
.picker-filter.on{background:var(--plum);color:#fff;border-color:var(--plum)}
.picker-n{
  font-size:11px;opacity:.65;font-variant-numeric:tabular-nums;
}

/* ---------- SEO score ----------
   A read-only report. The band colours are semantic, separate from the studio
   accent, so "poor" reads as poor rather than as brand crimson. */
.score{border:1px solid var(--line);border-radius:10px;background:var(--white);
  padding:15px 17px;display:flex;flex-direction:column;gap:14px;margin-top:6px}
.score h6{margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}
.score-top{display:flex;align-items:center;gap:14px}
.score-n{font-size:34px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1;
  min-width:56px;text-align:center;padding:8px 0;border-radius:8px;background:var(--mat)}
.score-top b{display:block;font-size:14px}
.score-top .help{display:block}
.score.is-excellent .score-n{background:#E7F0EA;color:#2F6B4F}
.score.is-good      .score-n{background:#E7F0EA;color:#3F6B52}
.score.is-mid       .score-n{background:#FAF0DC;color:#8A5D12}
.score.is-poor      .score-n{background:#FBE7EB;color:#A00D26}
.score.is-critical  .score-n{background:#FBE7EB;color:#A00D26}

.score-dims{display:flex;flex-direction:column;gap:10px}
.score-dim-head{display:flex;align-items:baseline;gap:8px;font-size:12.5px}
.score-dim-head b{margin-left:auto;font-variant-numeric:tabular-nums}
.score-cover{font-size:10.5px;color:var(--muted-2);margin-left:0}
.score-bar{height:4px;border-radius:100px;background:var(--mat);overflow:hidden;margin-top:4px}
.score-bar span{display:block;height:100%;background:var(--plum);border-radius:100px}
.score-fails{margin:6px 0 0;padding-left:1.1em;display:flex;flex-direction:column;gap:2px}
.score-fails li{font-size:11.5px;color:var(--muted);list-style:'✗  '}
.score-skipped summary{font-size:11.5px;color:var(--muted-2);cursor:pointer}
.score-skipped ul{margin:6px 0 0;padding-left:1.1em}
.score-skipped li{font-size:11.5px;color:var(--muted-2)}

/* ============================================================
   FEATURED ARTISTS BANNER — editor
   ============================================================ */
/* a sub-item sits under the section it belongs to */
.side button.sub{padding-left:26px;font-size:12.5px;min-height:32px;position:relative}
.side button.sub::before{content:"";position:absolute;left:14px;top:0;bottom:50%;width:7px;
  border-left:1px solid rgba(255,255,255,.28);border-bottom:1px solid rgba(255,255,255,.28);border-bottom-left-radius:3px}

.fb-settings-row .ph{font-size:15px}

.fb-head{align-items:flex-start}
.fb-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.fb-status{display:inline-flex;align-items:center;gap:7px;margin-top:9px;padding:3px 10px;border-radius:999px;
  font-size:11.5px;font-weight:600}
.fb-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.fb-status--live{background:#E7F3EC;color:var(--ok-green)}
.fb-status--draft{background:#FDF0E3;color:var(--warn)}
.fb-status--dirty{background:#FDECEF;color:var(--crimson-ink)}

.fb-preview{border:1px solid var(--line);border-radius:var(--r);background:var(--white);margin-bottom:18px;overflow:hidden}
.fb-preview-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:10px 12px;border-bottom:1px solid var(--line);background:var(--rag)}
.fb-preview-note{font-size:11.5px;color:var(--muted)}
.fb-preview-note.is-bad{color:var(--crimson-ink);font-weight:600}
.fb-stage{position:relative;padding:14px;background:
  repeating-conic-gradient(#EFEDEA 0% 25%, #F6F5F3 0% 50%) 0 0/18px 18px;min-height:120px}
.fb-stage::after{content:attr(data-scale);position:absolute;right:10px;bottom:6px;font-size:10.5px;color:var(--muted-2)}
.fb-fit{margin:0 auto;overflow:hidden;box-shadow:0 1px 3px rgba(30,16,22,.18);background:var(--white)}
.fb-frame{position:relative;transform-origin:0 0}
.fb-frame iframe{position:absolute;inset:0 auto auto 0;border:0;display:block;background:var(--white);visibility:hidden}
.fb-frame iframe.is-front{visibility:visible}

.fb-seg{display:inline-flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--white)}
.fb-seg button{border:0;border-right:1px solid var(--line);background:none;padding:7px 12px;font-size:12.5px;
  color:var(--ink);cursor:pointer;min-height:32px}
.fb-seg button:last-child{border-right:0}
.fb-seg button:hover{background:var(--gallery)}
.fb-seg button.on{background:var(--plum);color:#fff;font-weight:600}
.fb-seg button:focus-visible{outline-offset:-3px}
.fb-devices{margin-bottom:14px}

.fb-problems{margin:0 0 16px;padding:12px 14px;border:1px solid #F1C4CD;border-radius:8px;background:#FDF3F5;
  font-size:13px;color:var(--crimson-ink)}
.fb-problems ul{margin:6px 0 0;padding-left:18px}

.fb-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.fb-panel-head h3{margin:4px 0 0;font-size:16px}
.fb-panel-head .field{margin:0;max-width:320px}
.fb-sec{border-top:1px solid var(--line);padding:16px 0 4px}
.fb-sec-title{margin:0 0 12px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted-2)}
.fb-label{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:6px}
.fb-mini-label{margin:14px 0 8px;font-size:12px;font-weight:600;color:var(--muted)}
.fb-sub{margin:-4px 0 12px 26px}
.fb-fixed{margin:0 0 14px}

.fb-who-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.fb-who{display:flex;align-items:center;gap:12px;min-width:0}
.fb-who img,.fb-mono{width:44px;height:44px;border-radius:0;object-fit:cover;flex:none;background:var(--mat)}
.fb-mono{display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:var(--muted)}
.fb-who b{display:block;font-size:14.5px}
.fb-who span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.fb-who--empty{font-size:13px;color:var(--warn);font-weight:600}

.fb-chooser{margin-top:12px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.fb-chooser input{width:100%;border:0;border-bottom:1px solid var(--line);padding:10px 12px;font:inherit;background:var(--rag)}
.fb-chooser input:focus{outline:none;background:var(--white)}
.fb-chooser-list{max-height:300px;overflow:auto}
.fb-choice{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:0;border-bottom:1px solid var(--line);
  background:var(--white);text-align:left;cursor:pointer;font:inherit}
.fb-choice:hover:not([disabled]){background:var(--gallery)}
.fb-choice.on{background:#F7EEF1}
.fb-choice[disabled]{cursor:not-allowed;opacity:.55}
.fb-choice img,.fb-choice .fb-mono{width:40px;height:40px;border-radius:0;object-fit:contain;background:var(--gallery)}
.fb-choice-txt b{display:block;font-size:13.5px}
.fb-choice-txt span{display:block;font-size:11.5px;color:var(--muted)}

.fb-art-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;align-items:start}
.fb-art-big{position:relative;display:flex;justify-content:center;align-items:center;padding:10px;background:var(--gallery);min-height:120px}
.fb-art-big img{display:block;max-width:100%;max-height:280px;width:auto;height:auto;background:#fff;padding:6px;
  box-shadow:0 0 0 1px rgba(30,16,22,.08)}
.fb-art-big.is-focal{cursor:crosshair}
.fb-focal{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid #fff;border-radius:50%;
  background:var(--crimson);box-shadow:0 0 0 1px rgba(0,0,0,.35);pointer-events:none}
.fb-art-big.is-focal .fb-focal{position:absolute}
.fb-art-state{margin:0 0 10px;font-size:13px;font-weight:600}
.fb-works{display:grid;grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:8px}
.fb-work{position:relative;aspect-ratio:1;padding:4px;border:1px solid var(--line);background:var(--gallery);cursor:pointer;border-radius:0}
.fb-work img{width:100%;height:100%;object-fit:contain;display:block}
.fb-work:hover{border-color:var(--muted-2)}
.fb-work.on{border-color:var(--crimson);box-shadow:0 0 0 2px var(--crimson)}
.fb-work-tag{position:absolute;left:4px;bottom:4px;padding:1px 5px;font-size:9.5px;font-weight:600;
  background:rgba(46,19,37,.82);color:#fff}

.fb-name-preview{margin:0;padding:10px 12px;border:1px dashed var(--line);background:var(--rag);
  font-family:"Roboto Slab",Rockwell,Georgia,serif;font-weight:600;font-size:20px;color:var(--ink)}
.fb-name--upper{text-transform:uppercase;letter-spacing:.05em;font-size:17px}
.fb-name--title{text-transform:capitalize}
.fb-name--smallcaps{font-variant:small-caps;letter-spacing:.02em}

.fb-count{float:right;font-weight:500;color:var(--muted-2)}
.fb-count.is-over{color:var(--warn);font-weight:600}

.fb-range{display:flex;align-items:center;gap:12px}
.fb-range input[type=range]{flex:1;accent-color:var(--crimson);min-width:0}
.fb-out{min-width:118px;font-size:12.5px;font-weight:600;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}

@media (max-width:1180px){.fb-art-row{grid-template-columns:1fr}}

/* ---------- history ---------- */
.modal-box.hist{width:min(880px,94vw)}
.hist-body{display:grid;grid-template-columns:minmax(220px,300px) 1fr;min-height:0;overflow:hidden;border-top:1px solid var(--line)}
.hist-list{list-style:none;margin:0;padding:8px;overflow:auto;max-height:52vh;border-right:1px solid var(--line)}
.hist-item{display:block;width:100%;text-align:left;padding:9px 11px;border:0;border-radius:7px;background:none;cursor:pointer}
.hist-item b{display:block;font-size:13px}
.hist-item span{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.hist-item:hover{background:var(--gallery)}
.hist-item.on{background:#F7EEF1}
.hist-item.on b{color:var(--crimson-ink)}
.hist-detail{padding:14px 18px;overflow:auto;max-height:52vh}
.hist-detail h4{margin:0 0 8px;font-size:13.5px}
@media (max-width:700px){.hist-body{grid-template-columns:1fr}.hist-list{border-right:0;border-bottom:1px solid var(--line);max-height:30vh}}

/* ---------- activity ---------- */
.act-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.act{border:1px solid var(--line);border-radius:8px;background:var(--white);padding:11px 14px}
.act.is-bad{border-color:#F1C4CD;background:#FDF3F5}
.act-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.act-head b{font-size:13.5px}
.act-head span{font-size:12.5px;color:var(--muted)}
.act-head time{margin-left:auto;font-size:11.5px;color:var(--muted-2)}
.act p{margin:6px 0 0;font-size:12.5px;color:var(--muted)}
.act ul{margin:6px 0 0;padding-left:18px;font-size:12.5px;color:var(--muted)}
.act ul .more{font-style:italic;color:var(--muted-2)}
.act-who{display:block;margin-top:6px;font-size:11px;color:var(--muted-2)}

/* where a picture is used */
.used-in{margin:0;padding-left:16px;font-size:12.5px;line-height:1.55}
.used-in li{margin:2px 0;word-break:break-word}
.used-in b{font-weight:600}

/* ---------- publish review: summary and checks ---------- */
.review-summary{margin:0;padding:10px 18px;font-size:13px;font-weight:600;color:var(--ink);border-bottom:1px solid var(--line);background:#FDFBF8}
.review-checks{border-top:1px solid var(--line);padding:12px 18px;max-height:34vh;overflow:auto}
.review-checks-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.review-checks-head .help{flex:1;min-width:200px;margin:0}
.checks{margin-top:10px;display:grid;gap:6px}
.check-row{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.45}
.check-row ul{margin:4px 0 0;padding-left:16px;font-size:12px;color:var(--muted)}
.check-row ul .more{font-style:italic}
.check-icon{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff}
.check-row.is-ok .check-icon{background:var(--ok-green)}
.check-row.is-warn .check-icon{background:var(--warn)}
.check-row.is-bad .check-icon{background:var(--crimson-ink)}
.check-bad{color:var(--crimson-ink);font-weight:600;font-size:13px}
.checks-foot{margin:6px 0 0}
.review-override{margin-right:auto;font-size:12.5px;color:var(--crimson-ink);font-weight:600}

/* search everything */
.nav-search{width:100%;margin:0 0 10px;padding:8px 10px;border:1px solid rgba(255,255,255,.18);border-radius:8px;
  background:rgba(255,255,255,.08);color:#fff;font-size:13px}
.nav-search::placeholder{color:rgba(255,255,255,.55)}
.nav-search:focus{outline:none;border-color:#fff;background:rgba(255,255,255,.14)}
.search-hit .row-txt span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* site checks on the overview: a card in the flow, not a strip in a dialog */
.dash-checks{margin-top:16px;max-height:none;background:var(--white);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}

/* ---------- status badges and warnings ---------- */
.badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.row .badges .badge,.badge{display:inline-block;font-size:10.5px;font-weight:600;line-height:1.4;letter-spacing:.02em;
  padding:1px 7px;border-radius:100px;white-space:nowrap;background:var(--mat);color:var(--muted)}
.badge.is-live{background:#E6F2EC;color:var(--ok-green)}
.badge.is-changed{background:#FDF0E3;color:var(--warn)}
.badge.is-new{background:#EAF0FB;color:#2A4F8F}
.badge.is-draft{background:var(--gallery);color:var(--ink);border:1px dashed var(--muted-2)}
.badge.is-hidden,.badge.is-archived{background:#EFECEA;color:#5E5A57}
.badge.is-scheduled{background:#F1EAF6;color:var(--plum-700)}
.row-warn{flex:none;width:20px;height:20px;border-radius:50%;background:#FDF0E3;color:var(--warn);
  font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.side .count.count--warn{background:#F5B35B;color:var(--ink);font-weight:700;margin-left:auto}
.side .count.count--warn + .count{margin-left:6px}
.nav-global{color:rgba(255,255,255,.55);font-size:11px}
.ed-head .badges{margin-top:6px}
.issues{margin:0 0 16px;border:1px solid #F3D9BC;background:#FFF9F2;border-radius:var(--r);padding:10px 14px}
.issues summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--warn)}
.issues ul{margin:8px 0 0;padding-left:18px;font-size:13px;line-height:1.6}
.issues li.is-info{color:var(--muted)}
.locked-note{margin:0 0 16px;padding:10px 14px;border-radius:var(--r);background:var(--gallery);font-size:13px;color:var(--muted)}

/* ---------- a global component ---------- */
.global-bar{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;
  margin:0 0 18px;padding:12px 14px;border-radius:var(--r);background:#F4EEF3;border:1px solid #E3D3DF;font-size:13px}
.global-bar b{color:var(--plum)}
.global-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- new field types ---------- */
.field-heading{margin:26px 0 12px;padding-top:14px;border-top:1px solid var(--line)}
.field-heading h4{margin:0;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--plum)}
.field-heading .help{margin:6px 0 0;font-size:12px;color:var(--muted)}
.inline-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.inline-tools input,.inline-tools select{flex:1;min-width:0}
.checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px 14px;padding:10px 12px;
  border:1px solid var(--line);border-radius:8px;background:var(--white)}
.checklist.is-long{max-height:260px;overflow:auto}
.checklist .check{font-size:13px;font-weight:400;color:var(--ink);margin:0}
.picklist{display:grid;gap:6px}
.pick-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--white);font-size:13px}
.pick-row.is-gone{border-style:dashed;color:var(--muted)}
.pick-n{font-size:11px;color:var(--muted);min-width:18px}
.pick-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sublist{display:grid;gap:8px}
.subitem{border:1px solid var(--line);border-radius:8px;background:var(--white);padding:0 12px}
.subitem[open]{padding-bottom:6px}
.subitem summary{display:flex;align-items:center;gap:10px;padding:9px 0;cursor:pointer;list-style:none}
.subitem summary::-webkit-details-marker{display:none}
.subitem summary::before{content:'▸';color:var(--muted)}
.subitem[open] summary::before{content:'▾'}
.sub-title{flex:1;min-width:0;font-size:13px;font-weight:600;display:flex;gap:8px;align-items:center}
.sub-tools{display:flex;gap:4px}
.subitem .field{margin-bottom:12px}
.contrast{display:grid;gap:6px}
.contrast-row{display:flex;align-items:center;gap:10px;font-size:13px;padding:6px 8px;border-radius:8px;background:var(--white);border:1px solid var(--line)}
.contrast-row .swatch{width:38px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;border:1px solid var(--line)}
.contrast-row b{margin-left:auto;font-size:12.5px}
.contrast-row.is-ok b{color:var(--ok-green)}
.contrast-row.is-bad b{color:var(--crimson-ink)}
.btn-preview{display:flex;gap:14px;flex-wrap:wrap;padding:18px;border-radius:var(--r);background:var(--rag);border:1px solid var(--line)}
.block-bar select{width:auto;min-height:30px;padding:4px 8px}
.block.is-hidden{opacity:.6}
.block-layout{margin-top:6px;border-top:1px dashed var(--line);padding-top:8px}
.block-layout summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--plum)}

/* ---------- focal point ---------- */
.focal h4{margin:0 0 4px;font-size:13px}
/* Drawn large enough to aim at, whatever size the file is. */
.focal-stage{position:relative;display:block;width:100%;max-width:460px;cursor:crosshair;margin:8px 0;line-height:0}
.focal-stage:focus-visible{outline:2px solid var(--crimson);outline-offset:3px}
.focal-stage .media-big{display:block;width:100%;height:auto;max-height:none}
.focal-dot{position:absolute;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;
  border:2px solid #fff;box-shadow:0 0 0 2px var(--crimson),0 2px 8px rgba(0,0,0,.4);pointer-events:none}
.focal-crops{display:flex;gap:10px;margin:10px 0;align-items:flex-end}
.focal-crops figure{margin:0;width:31%}
.focal-crop{overflow:hidden;background:var(--mat);border:1px solid var(--line)}
.focal-crop img{width:100%;height:100%;object-fit:cover;display:block}
.focal-crops figcaption{font-size:11px;color:var(--muted);margin-top:4px}

/* ---------- page templates ---------- */
.modal-box.tpl{max-width:760px;width:calc(100% - 40px)}
.modal-box.tpl > .help{padding:0 18px}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;padding:0 18px 18px;overflow:auto}
.tpl-card{display:flex;flex-direction:column;gap:4px;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--white);cursor:pointer;transition:border-color .18s}
.tpl-card:hover,.tpl-card:focus-visible{border-color:var(--plum)}
.tpl-card b{font-size:14px}
.tpl-card span{font-size:12px;color:var(--muted)}
.tpl-card .tpl-blocks{font-size:11px;color:var(--plum-700)}

/* ---------- accounts ---------- */
.acct-list{display:grid;gap:12px;margin:14px 0}
.acct{border:1px solid var(--line);border-radius:var(--r);background:var(--white);padding:14px 16px}
.acct--new{background:var(--rag)}
.acct h4{margin:0 0 10px;font-size:14px}
.acct-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.acct-seen{margin-left:auto}
.acct--paused{background:var(--rag)}
.acct--paused .acct-head b{color:var(--muted)}
.acct-names{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:640px){.acct-names{grid-template-columns:1fr}}
.sess-live{color:var(--ok-green)}
.sess-wrap{overflow-x:auto;margin:0 0 8px}
.sess-table{width:100%;border-collapse:collapse;font-size:13px}
.sess-table th{text-align:left;font-weight:600;font-size:12px;color:var(--muted);padding:6px 10px 6px 0;border-bottom:1px solid var(--line);white-space:nowrap}
.sess-table td{padding:8px 10px 8px 0;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}
.sess-table td .badge{margin-left:6px}
.sess-table tr.is-current td{background:var(--rag)}
.sess-table .sess-act{text-align:right;padding-right:0}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 14px;margin:6px 0 12px}
.perm-grid .check{font-size:13px}
.whoami{font-size:12.5px;color:var(--muted);white-space:nowrap}

/* ---------- scheduling ---------- */
.review-schedule{display:flex;align-items:center;gap:8px;margin-right:auto;flex-wrap:wrap}
.review-schedule input{min-height:34px;padding:6px 8px;border:1px solid var(--line);border-radius:8px}


/* ---------- print prices: the price grid ---------- */
.price-grid{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--white)}
.price-grid table{border-collapse:collapse;width:auto;min-width:100%;font-size:13px}
.price-grid th,.price-grid td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.price-grid thead th{font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--muted);white-space:nowrap;background:var(--rag)}
.price-grid tbody th{font-weight:600;color:var(--ink);min-width:190px;position:sticky;left:0;background:var(--white);z-index:1}
.price-grid thead th:first-child{position:sticky;left:0;z-index:2}
.price-grid small{display:block;font-weight:400;font-size:11px;color:var(--muted)}
.price-grid small.warn{color:var(--warn)}
.price-grid .is-off,.price-grid tr.is-off th{color:var(--muted-2)}
.price-grid tr.is-new th{color:var(--muted)}
.field .price-grid input{width:92px;min-width:92px;min-height:34px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:13px;text-align:right}
.field .price-grid input:focus{outline:2px solid var(--plum);outline-offset:-1px;border-color:var(--plum)}
.price-grid tr:last-child th,.price-grid tr:last-child td{border-bottom:0}

/* ---------- artist pages ---------- */
.device-switch{display:flex;gap:6px;flex-wrap:wrap}
.intro-preview{padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);background:var(--rag)}
.intro-p{margin:0;font-size:14px;line-height:1.65;color:var(--ink)}
.intro-rest{color:var(--muted-2)}
.spans{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.span-item{margin:0;border:1px solid var(--line);border-radius:8px;background:var(--white);padding:6px;display:grid;gap:5px}
.span-item img{width:100%;height:84px;object-fit:contain;background:var(--gallery)}
.span-item figcaption{font-size:11px;color:var(--muted)}
.span-item select{width:100%;min-height:28px;padding:3px 6px;border:1px solid var(--line);border-radius:6px;font-size:12px}

/* ============================================================
   LAYOUT COMPOSER — Layout on a section, a page, the site
   ============================================================ */
.field--composer{margin-bottom:22px}
.lc{border:1px solid var(--line);border-radius:var(--r);background:var(--white);padding:12px 14px 10px}
.lc-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lc-spacer{flex:1}
.lc-seg{display:inline-flex;flex-wrap:wrap;gap:4px}
.lc-seg button{min-height:28px;padding:4px 10px;border:1px solid var(--line);background:var(--white);border-radius:6px;font-size:12.5px;cursor:pointer;color:var(--ink)}
.lc-seg button:hover{border-color:var(--muted-2)}
.lc-seg button.on{background:var(--plum);border-color:var(--plum);color:#fff}
.lc-seg--sm button{min-height:24px;padding:2px 7px;font-size:11.5px}
.lc-mode button{font-weight:600}
.lc-devs{display:inline-flex;gap:4px;flex-wrap:wrap}
.lc-dev{min-height:28px;padding:4px 10px;border:1px solid var(--line);background:var(--white);border-radius:6px;font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--ink)}
.lc-dev.on{border-color:var(--crimson);box-shadow:inset 0 0 0 1px var(--crimson);font-weight:600}
.lc-dot{width:7px;height:7px;border-radius:50%;background:var(--crimson);display:inline-block}
.lc-mini{min-height:24px;min-width:24px;padding:2px 7px;border:1px solid var(--line);background:var(--white);border-radius:5px;font-size:12px;cursor:pointer;line-height:1.2;color:var(--ink)}
.lc-mini:hover{border-color:var(--muted-2);background:var(--gallery)}
.lc-mini[disabled]{opacity:.45;cursor:default}
.lc-devnote,.lc-intro{font-size:12.5px;color:var(--muted);margin:8px 0 10px}
.lc-help,.lc-help-inline{font-size:12px;color:var(--muted);margin:4px 0 0;line-height:1.45}
.lc-warn{font-size:12px;color:var(--warn);margin:4px 0 0;line-height:1.4}
.lc-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.lc-row select{min-height:30px;border:1px solid var(--line);border-radius:6px;padding:3px 8px;background:var(--white);max-width:100%}
.lc-check{display:inline-flex;gap:6px;align-items:center;font-size:12.5px}
.lc-presets{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0;margin-bottom:10px}
.lc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.lc-chip{min-height:28px;padding:4px 11px;border-radius:100px;border:1px solid var(--line);background:var(--rag);font-size:12.5px;cursor:pointer;color:var(--ink)}
.lc-chip:hover{background:var(--plum);border-color:var(--plum);color:#fff}
.lc-l{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:5px}
/* inside a form field, the admin's own label rule would stack these */
.lc label.lc-l,.lc div.lc-l{display:flex;color:var(--ink);font-size:12.5px;margin-bottom:5px}
.lc .lc-bool label,.lc .lc-check,.lc .lc-frow label{display:inline-flex;margin:0}
.lc .lc-frow label{display:flex}
.lc-tools{display:inline-flex;align-items:center;gap:5px;font-weight:400}
.lc-src{font-size:10.5px;letter-spacing:.02em;padding:2px 7px;border-radius:100px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.lc-src.is-own{background:#FDECEF;border-color:#F5B7C4;color:var(--crimson-ink);font-weight:600}
.lc-src.is-page{background:#EEF3FE;border-color:#C9D7FB;color:#2753c9}
.lc-src.is-global{background:#EEF7F1;border-color:#BFE0CB;color:var(--ok-green)}
.lc-src.is-design{background:var(--gallery)}
.lc-f{padding:8px 0;border-bottom:1px dashed var(--mat)}
.lc-f:last-child{border-bottom:0}
.lc-ctl{display:flex;align-items:center;gap:8px}
.lc-ctl input[type=range]{flex:1;min-width:80px;accent-color:var(--plum)}
.lc-ctl input[type=range].is-inherited{accent-color:var(--muted-2);opacity:.7}
.lc-ctl input[type=number]{width:84px;min-height:30px;border:1px solid var(--line);border-radius:6px;padding:3px 7px;background:var(--white)}
.lc-num.is-own .lc-ctl input[type=number]{border-color:#F5B7C4;background:#FFF8F9}
.lc-unit{font-size:12px;color:var(--muted);min-width:18px}
.lc-bool{display:flex;gap:8px;align-items:center;font-size:13px}
.lc-bool label{margin:0;font-weight:500;color:var(--ink)}
.lc-pair{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
@media(max-width:1400px){.lc-pair{grid-template-columns:1fr}}
.lc-group{border:1px solid var(--mat);border-radius:8px;padding:2px 12px;margin:10px 0}
.lc-group > summary{cursor:pointer;font-weight:700;font-size:13px;padding:8px 0;display:flex;gap:8px;align-items:center}
.lc-group--open{padding:4px 12px}
.lc-count{font-size:11px;font-weight:600;color:var(--crimson-ink);background:#FDECEF;border-radius:100px;padding:1px 7px}
.lc-h{margin:16px 0 2px;font-size:13px}
.lc-part{border:1px solid var(--mat);border-radius:8px;margin:8px 0;background:var(--rag)}
.lc-part.is-sel{border-color:var(--crimson);box-shadow:0 0 0 1px var(--crimson)}
.lc-part > summary{cursor:pointer;padding:8px 12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lc-part[open] > summary{border-bottom:1px solid var(--mat)}
.lc-kind{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 5px}
.lc-psum{font-size:12px;color:var(--crimson-ink);flex:1}
.lc-sub{padding:4px 12px 6px;background:var(--white)}
.lc-sub + .lc-sub{border-top:1px solid var(--mat)}
.lc-subh{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;padding-top:8px}
.lc-order ol{margin:4px 0 8px;padding-left:22px}
.lc-order li{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:13px}
.lc-order li span{flex:1}
.lc-wrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:6px}
.lc-wcol{display:inline-flex;align-items:center;gap:3px}
.lc-wcol small{color:var(--muted);font-size:10.5px}
.lc-wcol input{width:58px;min-height:28px;border:1px solid var(--line);border-radius:6px;padding:2px 6px}
.lc-frow{display:flex;gap:8px;align-items:end;flex-wrap:wrap;margin-bottom:6px}
.lc-frow label{display:flex;flex-direction:column;font-size:11px;color:var(--muted);gap:2px}
.lc-frow input{width:64px;min-height:28px;border:1px solid var(--line);border-radius:6px;padding:2px 6px}
.lc-found{margin:10px 0;padding:8px 12px;border-radius:8px;background:#FFF7ED;border:1px solid #F5D0A9;font-size:12.5px}
.lc-found ul{margin:4px 0 0;padding-left:18px}
.lc-found li.is-warn{color:#9A3412}
.lc-foot{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border-top:1px solid var(--line);margin-top:10px;padding-top:10px}

/* ============================================================
   THE VISUAL EDITOR — the page in a frame, the panel beside it
   ============================================================ */
html.ve-open body{overflow:hidden}
.ve{position:fixed;inset:0;z-index:300;background:#1b1418;display:flex;flex-direction:column}
.ve-bar{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--plum);color:#fff;flex-wrap:wrap}
.ve-bar > b{font-size:14px;margin-right:6px}
.ve-bar .lc-dev{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);color:#fff}
.ve-bar .lc-dev.on{background:#fff;color:var(--plum);border-color:#fff;box-shadow:none}
.ve-pick{min-height:28px;max-width:220px;border-radius:6px;border:0;padding:3px 8px;font-size:12.5px;color:var(--ink);background:#fff}
.ve-pick:disabled{opacity:.6}
.ve-opt{display:inline-flex;align-items:center;gap:6px;font-size:12.5px}
.ve-opt select{min-height:28px;border-radius:6px;border:0;padding:2px 6px;color:var(--ink);background:#fff}
.ve-side .lc-pair{grid-template-columns:1fr}
.ve-side .lc-l{flex-wrap:wrap}
.ve-main{flex:1;display:flex;min-height:0}
.ve-stage{flex:1;min-width:0;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:8px 16px;background:repeating-conic-gradient(#221a1f 0 25%,#1d161a 0 50%) 0 0/24px 24px}
.ve-status{color:#eee;margin:auto;font-size:14px;max-width:520px;text-align:center;line-height:1.5}
.ve-fit{position:relative;flex:none;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,.45);background:#fff}
.ve-frame{position:absolute;left:0;top:0;border:0;transform-origin:0 0;background:#fff}
.ve-side{width:440px;flex:none;overflow:auto;background:var(--gallery);border-left:1px solid #000;display:flex;flex-direction:column}
@media(max-width:1200px){.ve-side{width:380px}}
.ve-tabs{display:flex;gap:4px;padding:10px 12px 0;position:sticky;top:0;background:var(--gallery);z-index:2;border-bottom:1px solid var(--line)}
.ve-tabs button{border:1px solid var(--line);border-bottom:0;background:var(--white);padding:6px 14px;border-radius:8px 8px 0 0;font-size:13px;cursor:pointer;color:var(--ink)}
.ve-tabs button.on{background:var(--plum);color:#fff;border-color:var(--plum)}
.ve-tabs button[disabled]{opacity:.45;cursor:default}
.ve-body{padding:10px 12px}
.ve-h{margin:4px 0 10px;font-size:14px}
.ve-issues{margin:0 12px 16px;padding:10px 12px;background:var(--white);border:1px solid var(--line);border-radius:8px;font-size:12.5px}
.ve-issues-h{display:flex;justify-content:space-between;gap:8px;align-items:center}
.ve-issues-h .is-warn{color:#9A3412;font-weight:600}
.ve-issues-h .is-ok{color:var(--ok-green);font-weight:600}
.ve-issues ul{margin:6px 0 0;padding-left:18px}
.ve-issues li{cursor:pointer;padding:2px 0}
.ve-issues li.is-warn{color:#9A3412}
.ve-issues li.is-info{color:var(--muted)}

/* Before and after, side by side */
.ve-stage{gap:20px}
.ve-col{display:flex;flex-direction:column;gap:6px;flex:none}
.ve-label{color:#cfc7cb;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase}
.ve-compare button{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);color:#fff}
.ve-compare button.on{background:#fff;color:var(--plum);border-color:#fff}

/* One artist's page in the visual editor: the page large, its tabs beside it.
   Its dialogs (publish, the picture chooser) and notices open over it. */
.ap-ve .ve-bar .ap-badge{margin-top:0}
.ap-ve-ver{font-size:12px;color:#e9dfe4}
.ap-ve .ve-devs{display:flex;gap:4px}
.ap-ve-stage{align-items:flex-start}
.ap-ve-stage .ap-col{flex:1 1 100%;min-width:0;display:flex;flex-direction:column;gap:6px}
.ap-ve-stage.is-pair .ap-col{flex:1 1 50%}
.ap-ve-stage .ap-fit{border:0;box-shadow:0 10px 40px rgba(0,0,0,.45)}
.ap-ve-side .ap-tabs{flex-wrap:wrap}
html.ap-ve-open .modal{z-index:310}
html.ap-ve-open .build{z-index:305}
html.ap-ve-open .toast{z-index:320}
@media (max-width:900px){
  .ap-ve .ve-main{flex-direction:column}
  .ap-ve-side{width:auto;max-height:50vh;border-left:0;border-top:1px solid #000}
}

/* ---------- artist page management ---------- */
.ap-badge{display:inline-block;margin-top:6px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;
  background:var(--gallery);border:1px solid var(--line);color:var(--muted)}
.ap-badge.is-draft{background:#fff4e5;border-color:#f0c27a;color:#8a5a00}
.ap-badge.is-live{background:#eaf6ec;border-color:#a9d3b2;color:#1f6b32}
.ap-preview{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:16px 0 18px;background:var(--gallery)}
.ap-seg,.ap-compare{display:flex;gap:4px}
.ap-stage{display:flex;gap:14px;padding:12px;overflow:auto;background:repeating-conic-gradient(#efeae9 0 25%,#e8e2e1 0 50%) 0 0/22px 22px}
.ap-col{flex:1;min-width:0}
.ap-stage.is-pair .ap-col{flex:1 1 50%}
.ap-fit{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line)}
.ap-frame{border:0;display:block;background:#fff}
.ap-tabs{padding:0 0 0 2px}
.ap-body{padding:14px 2px 40px}
.ap-h{margin:22px 0 6px;font-size:15px}
.ap-sub{margin:18px 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.ap-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 4px}
.ap-check{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.ap-readout{margin:12px 0;padding:12px 14px;background:var(--gallery);border:1px solid var(--line);border-radius:8px}
.ap-readout p{margin:6px 0 0;font-size:13.5px;line-height:1.55;color:var(--muted)}
.ap-warn{margin:10px 0;padding:10px 12px;border-radius:8px;background:#fff4e5;border:1px solid #f0c27a;font-size:13px}
.ap-link-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.ap-link-row input[type=text]{flex:1 1 180px;min-width:0}
.ap-arts,.ap-secs{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.ap-art,.ap-sec{border:1px solid var(--line);border-radius:8px;background:var(--white)}
.ap-art.is-off,.ap-sec.is-off{opacity:.55}
.ap-art.is-feat{border-color:var(--plum)}
.ap-art.dragging,.ap-sec.dragging{opacity:.4}
.ap-art.over,.ap-sec.over{border-color:var(--plum);box-shadow:0 0 0 2px rgba(94,30,70,.15)}
.ap-art-head{display:flex;align-items:center;gap:10px;padding:8px 10px}
.ap-art-n{font-family:ui-monospace,monospace;font-size:12px;color:var(--muted)}
.ap-art-thumb{width:52px;height:52px;flex:none;background:var(--gallery);overflow:hidden}
.ap-art-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.ap-art-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.ap-art-txt b{font-size:13.5px}
.ap-art-txt span,.ap-sec-txt span{font-size:12px;color:var(--muted)}
.ap-art-acts,.ap-sec-acts{display:flex;gap:4px;flex-wrap:wrap}
.ap-art-set{padding:4px 12px 12px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0 14px}
.ap-sec{display:flex;align-items:center;gap:10px;padding:8px 10px}
.ap-sec.has-set{display:grid;grid-template-columns:18px 1fr auto}
.ap-sec.has-set .ap-art-set{grid-column:1/-1}
.ap-sec-n{font-family:ui-monospace,monospace;font-size:12px;color:var(--muted);width:18px}
.ap-sec-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.ap-sec-txt b{font-size:13.5px}
.ap-art[draggable=true] .ap-art-n,.ap-sec[draggable=true] .ap-sec-n{cursor:grab}
.ap-tools{display:flex;gap:6px;padding:8px 10px 4px}
.ap-tools select{flex:1;min-width:0;min-height:30px;border:1px solid var(--line);border-radius:6px;background:var(--white);font-size:12.5px;padding:3px 6px}
.ap-portrait-row{display:flex;gap:14px;align-items:flex-start}
.ap-portrait-thumb{width:84px;height:104px;display:grid;place-items:center;font-weight:700}
.ap-art-master{padding:0 12px 12px}
.ap-res{font-size:11.5px;color:var(--muted)}
.ap-res.is-low{color:#8a5a00}
/* the data model: status, inheritance, checks, section and artwork forms */
.ap-status{align-items:center;margin-top:6px}
.ap-status .ap-badge{margin-top:0}
.ap-ver{font-size:12px;color:var(--muted)}
.ap-badge.is-scheduled{background:#eef2ff;border-color:#b8c3f0;color:#2f3f8f}
.ap-badge.is-archived{background:#f1efee;border-color:#d6d0cd;color:#6d625d}
.ap-src{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;border:1px solid var(--line)}
.ap-src.is-inherit{background:#f2f7f3;border-color:#bcd9c3;color:#2d6a3c}
.ap-src.is-over{background:#fff4e5;border-color:#f0c27a;color:#8a5a00}
.ap-inherit{margin:10px 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--white)}
.ap-inherit.is-over{border-color:#f0c27a}
.ap-inherit-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}
.ap-inherit-head label{font-weight:600;font-size:13px}
.ap-inherit textarea,.ap-inherit input[type=text]{width:100%;box-sizing:border-box}
.ap-form{border-top:0;padding:4px 0 8px}
.ap-box{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
.ap-box input{min-width:0}
.ap-issues{margin:10px 0 0}
.ap-issues details{border-radius:8px;padding:8px 12px;font-size:13px}
.ap-issues details.is-err{background:#fdecec;border:1px solid #eeb4b4}
.ap-issues details.is-warn{background:#fff8ec;border:1px solid #f0d49a}
.ap-issues summary{cursor:pointer;font-weight:600}
.ap-issues ul{margin:8px 0 2px;padding-left:18px}
.ap-issues li{margin:3px 0}
.ap-issues li.is-err b{color:#9b1c1c}
.ap-ok{font-size:12.5px;color:#2d6a3c;padding:4px 2px}
.ap-panes{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 8px}
.ap-sec-body,.ap-art-body{grid-column:1/-1;padding:6px 12px 12px;border-top:1px solid var(--line)}
.ap-sec.has-set{align-items:start}
.ap-choose{display:flex;flex-wrap:wrap;gap:6px 14px;margin:4px 0 10px}
.ap-other{border:1px dashed var(--line);border-radius:8px;padding:6px 10px;margin:8px 0}
.ap-link .ap-sub{margin-top:10px}
.ap-soc{min-width:92px;font-size:13px}
/* fonts kept on the site itself, so their names in Design are drawn in them */
@font-face{font-family:"GFS Didot";src:url(/site/fonts/GFSDidot-Regular.ttf) format("truetype");font-weight:100 900;font-display:swap}
@font-face{font-family:"Notable";src:url(/site/fonts/Notable-Regular.ttf) format("truetype");font-weight:100 900;font-display:swap}

/* ---------- Hostinger card and settings ---------- */
.host-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px}
.host-progress{margin-top:10px}
.host-bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.host-bar span{display:block;height:100%;width:0;background:var(--crimson);transition:width .4s ease}
.host-progress-text{margin:6px 0 0}
/* the form scrolls inside the box, so Test / Cancel / Save stay in view on a short window */
.host-form{padding:16px 18px 4px;overflow:auto;min-height:0;flex:1 1 auto}
.modal-box .review-foot{flex:none;background:var(--white)}
.host-form .check{margin:0 0 12px;font-size:13px;line-height:1.4;align-items:flex-start}
.host-form .check input{flex:none;margin-top:1px}
.host-row{display:grid;grid-template-columns:1fr 110px;gap:12px}
.host-test{min-height:1.4em;margin:4px 0 12px}
.host-test.is-ok{color:var(--ok-green)}
.host-test.is-bad{color:var(--crimson-ink)}

/* ============================================================
   CALM LAYER (2026-10-12)
   The studio found the panel noisy, crowded and out of line. Nothing here
   moves or removes a control; it takes away competing colour and evens out
   sizes so the eye lands on the work:
   - one height and one quiet style for the top bar's controls; only Publish
     is filled, Discard keeps its outline
   - counts in the sidebar as small numbers, not pills; a single dot for
     "needs attention"; the ◎ marks faint; room for the longest names
   - a "Live" badge only where it is news — rows show Changed, Draft,
     Scheduled; the move-to-top arrow appears on hover
   - thin scrollbars, so four columns do not show four grey rails
   - the editor and the overview on an even rhythm of spacing
   ============================================================ */
:root{--side:236px}

/* scrollbars */
*{scrollbar-width:thin;scrollbar-color:#D3D0CC transparent}
.side{scrollbar-color:rgba(255,255,255,.16) transparent}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#D3D0CC;border-radius:8px;border:2px solid transparent;background-clip:padding-box}
.side::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);background-clip:padding-box}

/* top bar */
.bar{gap:16px;padding:0 18px}
.brand{font-size:14.5px}
.bar-right{gap:4px}
.bar .btn{height:34px;min-height:34px;padding:0 12px;font-size:13px;border-radius:8px}
.bar a.btn{text-decoration:none}
.bar .btn--ghost{background:transparent;border-color:transparent;color:var(--ink)}
.bar .btn--ghost:hover{background:var(--gallery);border-color:transparent}
.bar .btn--ghost[disabled]{color:var(--muted-2)}
#undo{margin-left:10px}
#undo,#redo{padding:0 10px}
#discard{margin-left:10px;border-color:var(--line)}
#discard:not([disabled]):hover{background:#FDECEF;border-color:var(--crimson)}
#publish{margin-left:6px;padding:0 16px;font-weight:600}
.chip--idle{background:none;color:var(--muted-2);padding:5px 8px}
.chip--dirty{padding:6px 11px}

/* sidebar */
.side{padding:14px 10px 24px}
.side h6{margin:20px 0 6px;padding:0 10px;font-size:10px;letter-spacing:.13em;color:rgba(255,255,255,.4)}
.side button{min-height:34px;padding:7px 10px;gap:8px;font-size:13.5px}
.side .count{background:none;padding:0;min-width:0;border-radius:0;font-size:11.5px;
  color:rgba(255,255,255,.38);font-variant-numeric:tabular-nums}
.side button:hover .count{color:rgba(255,255,255,.6)}
.side button.on .count{color:rgba(255,255,255,.72)}
/* "needs attention": a small amber dot before the count, not a bright badge */
.side .count.count--warn{width:7px;height:7px;min-width:7px;padding:0;border-radius:50%;
  background:#F5B35B;font-size:0;color:transparent;margin-left:auto;align-self:center}
.side .count.count--warn + .count{margin-left:8px}
.nav-global{color:rgba(255,255,255,.35);font-size:10px}
.side button.on .nav-global{color:rgba(255,255,255,.6)}
.nav-home{margin-bottom:8px}

/* list rows */
.list-head{padding:12px 14px}
.row{padding:11px 14px;gap:12px;min-height:60px}
.row img,.row .ph{width:36px;height:36px}
.row .ph{background:var(--gallery);color:var(--muted-2);font-size:12.5px}
.row b{font-size:13.5px;line-height:1.35}
.row span{font-size:12px}
.ord{min-width:16px;font-size:11px;color:#BDB9B5}
/* "Live" is the normal state, so a row only carries a badge when it is news */
.row .badges:has(> .badge.is-live:only-child){display:none}
.row .badge.is-live{display:none}
.badges{margin-top:5px}
.star,.totop{opacity:0}
.row:hover .totop,.row:focus-within .totop,.row.on .totop,
.row:hover .star,.row:focus-within .star,.row.on .star{opacity:.75}
.star.on{opacity:1}

/* editor */
.editor{padding:28px 32px 56px}
.ed-head{margin-bottom:24px;align-items:center;gap:10px 14px}
.ed-head h2{font-size:21px;letter-spacing:-.01em}
.ed-head .grp{margin-top:4px}
.ed-head .btn{height:34px;min-height:34px}
.field{margin-bottom:22px}
.field label{color:var(--ink);font-size:12.5px;margin-bottom:7px}
.field .help{color:var(--muted-2);font-size:12px;margin-top:7px}
.issues{padding:11px 16px;margin-bottom:22px}
.issues summary{font-size:12.5px}

/* overview: it has no list, so the empty middle column steps aside */
.shell:has(#editor .dash-cards),.shell:has(#editor .acct){grid-template-columns:var(--side) 1fr}
.shell:has(#editor .dash-cards) > .list,.shell:has(#editor .acct) > .list{display:none}
.dash-cards{gap:14px}
/* the number tiles fill every row, so a short last row leaves no grey block */
.dash-tiles{display:flex;flex-wrap:wrap}
.dash-tile{flex:1 1 128px}
.dash-card{padding:20px 22px}
.dash-card h3{font-size:15px;margin-bottom:10px}
.dash-checks{margin-top:14px;padding:18px 22px}
.dash-checks .review-checks-head{gap:10px 12px}
/* the title on its own line, then the explanation beside its buttons */
.dash-checks .review-checks-head b{flex-basis:100%;font-size:15px}
.dash-checks .review-checks-head .help{min-width:260px;color:var(--muted)}

/* ---------- overview: visitors (Google Analytics) ----------
   Cards on a grid in the manner of Envato Elements: white, outlined, generously
   rounded, a bold name over a big number. The one dark block is the "connect"
   panel, shown until Google Analytics is connected. */
.ga{display:grid;gap:14px;margin-top:22px}
.ga-head{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 16px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.ga-head>div:first-child{flex:1;min-width:220px}
.ga-head h3{margin:0;font-size:18px;letter-spacing:-.01em}
.ga-head .help{display:block;margin-top:2px}
.ga-pill{display:flex;align-items:center;flex-wrap:wrap;gap:4px;background:var(--white);border:1px solid var(--line);border-radius:100px;padding:4px}
.ga-pill .div{width:1px;align-self:stretch;margin:4px;background:var(--line)}
.ga-seg{border:0;background:none;border-radius:100px;padding:6px 13px;font-size:13px;cursor:pointer;color:var(--muted);white-space:nowrap;min-height:30px}
.ga-seg:hover{color:var(--ink);background:var(--gallery)}
.ga-seg[aria-pressed="true"]{background:var(--ink);color:#fff;font-weight:600}
.ga-switch{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 6px;border:0;background:none;border-radius:100px;cursor:pointer;font-size:13px;white-space:nowrap;min-height:30px}
.ga-switch .knob{width:30px;height:18px;border-radius:100px;background:var(--mat);position:relative;flex:none;transition:background .15s}
.ga-switch .knob::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.ga-switch[aria-checked="true"] .knob{background:var(--plum-700)}
.ga-switch[aria-checked="true"] .knob::after{transform:translateX(12px)}

.ga-connect{background:var(--plum);color:#fff;border-radius:16px;padding:24px 26px;display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:20px 32px;align-items:start}
.ga-eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.ga-eyebrow i{width:8px;height:8px;border-radius:50%;background:#F5B35B}
.ga-connect h3{margin:10px 0 8px;font-size:26px;line-height:1.15;letter-spacing:-.02em;text-wrap:balance;color:#fff}
.ga-connect h3 em{font-style:normal;color:#FF8FA4}
.ga-connect p{margin:0 0 16px;color:rgba(255,255,255,.75);font-size:13.5px;max-width:48ch}
.ga-acts{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.btn--light{background:#fff;color:var(--plum);border-color:#fff}
.btn--light:hover{background:#EFE7EC}
.ga-connect .ga-switch{color:#fff}
.ga-connect .ga-switch .knob{background:rgba(255,255,255,.22)}
.ga-connect .ga-switch[aria-checked="true"] .knob{background:#2E8B57}
.ga-connect .ga-switch:focus-visible,.ga-connect .btn:focus-visible{outline-color:#fff}
.ga-note{font-size:12.5px;color:rgba(255,255,255,.7)}
.ga-connect .ga-err{margin:12px 0 0;color:#FFC4CF}
.ga-steps{list-style:none;margin:0;padding:0;display:grid;gap:8px;counter-reset:s}
.ga-steps li{counter-increment:s;display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:10px 12px}
.ga-steps li::before{content:counter(s);width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:rgba(255,255,255,.14)}
.ga-steps li.done::before{content:"✓";background:#2E8B57}
.ga-steps b{display:block;font-size:13.5px}
.ga-steps span{font-size:12.5px;color:rgba(255,255,255,.66)}

.ga-example-bar{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;background:#FDF0E3;color:#7A3A06;border:1px solid #F3D9BC;border-radius:12px;padding:9px 14px;font-size:13px}
.ga-example-bar .btn{margin-left:auto}

.ga-grid{display:grid;gap:14px}
.ga-g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ga-g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ga-g32{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
.ga-card{background:var(--white);border:1px solid #CFC9CC;border-radius:16px;padding:18px 20px;min-width:0}
.ga-card h4{margin:0;font-size:15px}
.ga-card h5{margin:16px 0 8px;padding-top:14px;border-top:1px solid var(--gallery);font-size:13px}
.ga-ch{display:flex;align-items:center;gap:6px 8px;flex-wrap:wrap;margin-bottom:12px}
.ga-ch .hint{font-size:12px;color:var(--muted)}
.ga-tag{display:inline-flex;align-items:center;gap:5px;margin-left:auto;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:100px;padding:2px 8px;white-space:nowrap}
.ga-tag::before{content:"";width:6px;height:6px;border-radius:50%}
.ga-tag.ex{background:#FDF0E3;color:#8A4508}
.ga-tag.ex::before{background:#D97706}
.ga-foot{margin:10px 0 0;font-size:12px;color:var(--muted)}
.ga-problem{border-color:#F3D9BC;background:#FFF9F2}
.ga-problem p{margin:4px 0 12px;font-size:13px}

.ga-kpi{display:flex;flex-direction:column;gap:2px;padding-bottom:12px}
.ga-kpi .ga-ch{margin:0}
.ga-k{font-size:14px;font-weight:700}
.ga-n{font-size:34px;font-weight:700;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums;margin-top:6px}
.ga-d{font-size:12.5px;color:var(--muted);display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ga-delta{font-weight:600;font-variant-numeric:tabular-nums}
.ga-delta.up{color:var(--ok-green)}
.ga-delta.down{color:var(--crimson-ink)}
.ga-spark{margin-top:10px;width:100%;height:42px;display:block}
.ga-area{fill:#EFE7EC}
.ga-line{fill:none;stroke:var(--plum-700);stroke-width:1.6;stroke-linejoin:round}
.ga-line--main{stroke-width:2}
.ga-prev{fill:none;stroke:var(--muted-2);stroke-width:1.5;stroke-dasharray:4 4}
.ga-gridline{stroke:#EEECE9;stroke-width:1}
.ga-base{stroke:#CFC9CC;stroke-width:1}
.ga-axis{font-size:11px;fill:var(--muted-2);font-variant-numeric:tabular-nums}
.ga-dot{fill:var(--plum-700);stroke:#fff;stroke-width:2}
.ga-guide{stroke:var(--ink);stroke-width:1}
.ga-chart-wrap{position:relative}
.ga-chart{width:100%;height:auto;display:block;overflow:visible}
.ga-tip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;border-radius:8px;padding:7px 10px;font-size:12px;line-height:1.4;white-space:nowrap;transform:translate(-50%,-110%);box-shadow:0 6px 18px rgba(30,16,22,.25);z-index:2}
.ga-tip b{font-size:13px;font-variant-numeric:tabular-nums}
.ga-tip span{color:rgba(255,255,255,.7)}
.ga-subtabs{display:flex;gap:4px;background:var(--gallery);border-radius:100px;padding:3px}
.ga-subtabs .ga-seg{padding:4px 11px;font-size:12.5px;min-height:26px}
.ga-subtabs .ga-seg[aria-pressed="true"]{background:var(--white);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.ga-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin-top:6px}
.ga-legend i{display:inline-block;width:16px;height:0;border-top:2px solid var(--plum-700);vertical-align:middle;margin-right:6px}
.ga-legend i.prev{border-top:2px dashed var(--muted-2)}

.ga-rank{list-style:none;margin:0;padding:0;display:grid}
.ga-rank li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:4px 10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--gallery)}
.ga-rank li:last-child{border-bottom:0}
.ga-rank .i{font-size:12px;color:var(--muted-2);font-variant-numeric:tabular-nums}
.ga-rank .t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
.ga-rank .t small{color:var(--muted-2);font-size:12px;margin-left:6px}
.ga-rank .v{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.ga-rank .b{grid-column:2/4;height:4px;border-radius:0 2px 2px 0;background:#EFE7EC;overflow:hidden}
.ga-rank .b i{display:block;height:100%;background:var(--plum-700);border-radius:0 2px 2px 0}

.ga-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ga-atile{display:flex;flex-direction:column;padding:0;border:1px solid #CFC9CC;border-radius:12px;overflow:hidden;background:var(--white);text-align:left;cursor:pointer;min-width:0}
.ga-atile:hover{border-color:var(--plum-700)}
.ga-atile img,.ga-atile .ga-ph{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#EFE7EC}
.ga-meta{display:block;padding:8px 10px}
.ga-meta .nm{display:block;font-size:12.5px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ga-meta .vw{display:block;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.ga-meta .vw b{color:var(--ink)}

.ga-funnel{display:grid;gap:10px}
.ga-fstep{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr) 64px;gap:12px;align-items:center}
.ga-fstep .lab{font-size:13px}
.ga-fstep .lab small{display:block;color:var(--muted-2);font-size:11.5px}
.ga-fbar{height:26px;background:var(--gallery);border-radius:0 6px 6px 0;overflow:hidden}
.ga-fbar i{display:block;height:100%;background:var(--plum-700);border-radius:0 4px 4px 0;min-width:4px}
.ga-fstep .v{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;font-size:14px}
.ga-fdrop{margin-left:202px;font-size:12px;color:var(--muted)}
.ga-contacts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--gallery)}
.ga-contacts span{border:1px solid var(--line);border-radius:100px;padding:4px 11px;font-size:12.5px}
.ga-contacts b{font-variant-numeric:tabular-nums}
.ga-stack{display:flex;height:28px;gap:2px;border-radius:6px;overflow:hidden;margin:4px 0 8px}
.ga-stack i{display:block;height:100%}
.ga-stack-key{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--muted)}
.ga-stack-key b{color:var(--ink);font-variant-numeric:tabular-nums}
.ga-stack-key i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.ga-void{border:1.5px dashed var(--line);border-radius:12px;background:var(--rag);display:grid;place-items:center;text-align:center;padding:22px 16px;color:var(--muted);font-size:13px;min-height:110px}
.ga-void b{display:block;color:var(--ink)}

.ga-events{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:10px 16px}
.ga-events summary{cursor:pointer;font-size:13px;font-weight:600}
.ga-events .an-tags{margin:12px 0 4px;align-items:center}
.ga-events table{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.ga-events td{padding:7px 10px 7px 0;border-top:1px solid var(--gallery);vertical-align:top}
.ga-events code{font-size:12px;background:var(--gallery);padding:1px 6px;border-radius:4px;white-space:nowrap}
.host-field{display:grid;gap:5px;margin:0 0 14px;font-size:12.5px;font-weight:600}
.host-field .help{font-weight:400}

/* the overview's two-column rule above outranked the narrow-screen one, so on
   a phone the sidebar kept its place beside the cards; stack them instead */
@media(max-width:860px){.shell:has(#editor .dash-cards),.shell:has(#editor .acct){grid-template-columns:1fr}}
@media(max-width:1180px){.ga-g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:960px){.ga-connect,.ga-g2,.ga-g32{grid-template-columns:1fr}}
@media(max-width:640px){
  .ga-connect{padding:20px}
  .ga-connect h3{font-size:22px}
  .ga-n{font-size:28px}
  .ga-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ga-fstep{grid-template-columns:minmax(0,1fr) 56px}
  .ga-fstep .ga-fbar{grid-column:1/-1;grid-row:2}
  .ga-fdrop{margin-left:0}
  .ga-pill{border-radius:16px}
}
@media(max-width:420px){.ga-g4{grid-template-columns:1fr}}
