/* AVLU admin — design system. Plain CSS, light + dark. */
:root{
  --bg:#f5f4f1;--bg-2:#efede9;--card:#fff;--card-2:#fbfaf8;--ink:#161514;--ink-2:#3e3b38;--mute:#7a756f;--faint:#a8a29b;
  --line:#e8e5e0;--line-2:#d9d5ce;--hover:#f2f0ec;
  --side:#121110;--side-ink:#cfc9c1;--side-mute:#857f77;--side-hover:#221f1d;
  --accent:#b96a56;--accent-2:#9e5543;--accent-soft:#f6e9e4;--accent-ink:#7c3f30;
  --teal:#4e7a76;--teal-soft:#e4efed;
  --ok:#2e7d51;--ok-soft:#e3f2e9;--warn:#a5690f;--warn-soft:#fbf1dd;--bad:#b3261e;--bad-soft:#fbe7e5;--info:#2f5f9e;--info-soft:#e6eef9;
  --r:12px;--r-sm:8px;
  --shadow:0 1px 2px rgba(20,16,12,.04),0 8px 24px rgba(20,16,12,.06);
  --shadow-lg:0 24px 70px rgba(20,16,12,.22);
  --font:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Helvetica,Arial,sans-serif;
  --top:58px;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#141312;--bg-2:#1b1a18;--card:#1d1c1a;--card-2:#222120;--ink:#f1eee9;--ink-2:#d4cfc8;--mute:#9a948c;--faint:#6f6a64;
  --line:#2e2c29;--line-2:#3b3834;--hover:#262422;
  --side:#0d0c0b;--side-hover:#1e1c1a;
  --accent:#d38b7a;--accent-2:#e3a595;--accent-soft:#3a2621;--accent-ink:#f0c2b6;
  --teal-soft:#1f302e;--ok-soft:#1b2e23;--warn-soft:#33280f;--bad-soft:#3a1a18;--info-soft:#1a2638;
  --ok:#5cc28a;--warn:#e0a54a;--bad:#f07a70;--info:#7fb0f0;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root[data-theme="auto"]{
    --bg:#141312;--bg-2:#1b1a18;--card:#1d1c1a;--card-2:#222120;--ink:#f1eee9;--ink-2:#d4cfc8;--mute:#9a948c;--faint:#6f6a64;
    --line:#2e2c29;--line-2:#3b3834;--hover:#262422;
    --side:#0d0c0b;--side-hover:#1e1c1a;
    --accent:#d38b7a;--accent-2:#e3a595;--accent-soft:#3a2621;--accent-ink:#f0c2b6;
    --teal-soft:#1f302e;--ok-soft:#1b2e23;--warn-soft:#33280f;--bad-soft:#3a1a18;--info-soft:#1a2638;
    --ok:#5cc28a;--warn:#e0a54a;--bad:#f07a70;--info:#7fb0f0;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%}
body{font:14px/1.5 var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
img{max-width:100%;display:block}
h1,h2,h3,h4{margin:0;line-height:1.25;font-weight:650}
p{margin:0}
svg{flex:none}
::selection{background:var(--accent-soft);color:var(--accent-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ---------------------------------------------------------------- buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:0;border-radius:9px;padding:.5rem .9rem;cursor:pointer;
  background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2);font-weight:550;white-space:nowrap;text-decoration:none;line-height:1.3;
  transition:background .15s,box-shadow .15s,color .15s,transform .1s}
.btn:hover{background:var(--hover)}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:default;transform:none}
.btn--primary{background:var(--ink);color:var(--card);box-shadow:none}
.btn--primary:hover{background:var(--ink-2)}
.btn--accent{background:var(--accent);color:#fff;box-shadow:none}
.btn--accent:hover{background:var(--accent-2)}
.btn--ghost{background:transparent;box-shadow:none}
.btn--ghost:hover{background:var(--hover)}
.btn--danger{color:var(--bad)}
.btn--danger:hover{background:var(--bad-soft)}
.btn--sm{padding:.3rem .6rem;font-size:12.5px;border-radius:7px}
.btn--xs{padding:.18rem .45rem;font-size:11.5px;border-radius:6px}
.btn--icon{padding:.45rem;width:34px;height:34px}
.btn--icon.btn--sm{width:28px;height:28px;padding:.3rem}
.btn-group{display:inline-flex;background:var(--card);border-radius:9px;box-shadow:inset 0 0 0 1px var(--line-2);padding:3px;gap:2px}
.btn-group button{border:0;background:none;padding:.32rem .7rem;border-radius:7px;cursor:pointer;font-weight:550;color:var(--mute);white-space:nowrap}
.btn-group button:hover{color:var(--ink)}
.btn-group button.on{background:var(--ink);color:var(--card)}
.kbd{display:inline-block;min-width:1.5em;text-align:center;font:11px/1.6 ui-monospace,Menlo,monospace;padding:0 .35em;border-radius:5px;background:var(--bg-2);box-shadow:inset 0 -1px 0 var(--line-2);color:var(--mute)}

/* ----------------------------------------------------------------- layout */
.app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.side{background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:hidden;z-index:40}
.side__brand{display:flex;align-items:center;gap:.65rem;padding:1.1rem 1.15rem .9rem;text-decoration:none}
.side__brand img{height:24px;width:auto;filter:brightness(0) invert(1)}
.side__brand span{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--side-mute);margin-top:3px}
.side__search{margin:.25rem .8rem .5rem;display:flex;align-items:center;gap:.5rem;padding:.45rem .65rem;border-radius:9px;background:var(--side-hover);color:var(--side-mute);cursor:pointer;border:0;font-size:13px;text-align:left}
.side__search:hover{color:var(--side-ink)}
.side__search .kbd{margin-left:auto;background:#2b2825;box-shadow:none;color:var(--side-mute)}
.side__nav{flex:1;overflow:auto;padding:.2rem .6rem 1rem;scrollbar-width:thin}
.side__group{margin:1rem .55rem .3rem;font-size:10.5px;font-weight:650;letter-spacing:.13em;text-transform:uppercase;color:var(--side-mute)}
.side__nav a{display:flex;align-items:center;gap:.65rem;padding:.42rem .55rem;border-radius:8px;text-decoration:none;color:var(--side-ink);font-size:13.5px}
.side__nav a svg{opacity:.75}
.side__nav a:hover{background:var(--side-hover);color:#fff}
.side__nav a.on{background:#fff;color:#141312;font-weight:600}
.side__nav a.on svg{opacity:1}
.side__nav .count{margin-left:auto;background:var(--accent);color:#fff;border-radius:99px;font-size:11px;font-weight:700;padding:0 .45rem;line-height:1.55}
.side__foot{border-top:1px solid #24211f;padding:.7rem .7rem .8rem}
.me{display:flex;align-items:center;gap:.65rem;width:100%;border:0;background:none;padding:.45rem;border-radius:9px;cursor:pointer;color:var(--side-ink);text-align:left}
.me:hover{background:var(--side-hover)}
.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:12.5px;flex:none;background:var(--accent);color:#fff;text-transform:uppercase}
.avatar--sm{width:26px;height:26px;font-size:11px}
.me b{display:block;font-size:13px;font-weight:600}
.me small{display:block;font-size:11.5px;color:var(--side-mute)}
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:30;height:var(--top);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.75rem;padding:0 1.4rem}
.top__menu{display:none}
.top__title{font-size:1.05rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top__crumb{color:var(--mute);font-weight:500}
.top__spacer{flex:1}
.top__tools{display:flex;align-items:center;gap:.5rem}
.view{padding:1.4rem;flex:1;min-width:0}
.view--wide{padding:0}
.page{max-width:1200px}

.docbar{display:flex;align-items:center;gap:.45rem}
.docstate{display:inline-flex;align-items:center;gap:.4rem;font-size:12.5px;color:var(--mute);white-space:nowrap}
.docstate::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok)}
.docstate.is-draft::before{background:var(--warn)}
.docstate.is-saving::before{background:var(--info);animation:pulse 1s infinite}
.docstate.is-problem::before{background:var(--bad)}
@keyframes pulse{50%{opacity:.3}}

@media (max-width:980px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;inset:0 auto 0 0;width:270px;transform:translateX(-100%);transition:transform .25s}
  .side.open{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.4)}
  .top__menu{display:inline-flex}
  .top{padding:0 .8rem}
  .view{padding:1rem}
  .docstate span{display:none}
}

/* ------------------------------------------------------------ cards/forms */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.2rem;margin-bottom:1rem}
.card--flush{padding:0;overflow:hidden}
.card__head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.9rem;flex-wrap:wrap}
.card__head h2,.card__head h3{font-size:.98rem}
.card__sub{color:var(--mute);font-size:12.5px;margin-top:.1rem}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1.1rem}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem 1.1rem}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
@media (max-width:900px){.grid3,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.grid2,.grid3,.grid4{grid-template-columns:1fr}}
.span2{grid-column:1/-1}
.field{display:flex;flex-direction:column;gap:.32rem;margin-bottom:.9rem;min-width:0}
.grid2>.field,.grid3>.field,.grid4>.field{margin-bottom:0}
.field>label,.label{font-size:12px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:.4rem}
.field .hint{font-size:11.5px;color:var(--mute)}
.input,.field input[type=text],.field input[type=url],.field input[type=email],.field input[type=tel],.field input[type=password],.field input[type=number],
.field input[type=date],.field input[type=time],.field input[type=datetime-local],.field input[type=search],.field textarea,.field select,select.input{
  width:100%;padding:.52rem .7rem;border:1px solid var(--line-2);border-radius:9px;background:var(--card);transition:border-color .15s,box-shadow .15s;min-width:0}
.field textarea{min-height:80px;resize:vertical;line-height:1.55}
.field input:focus,.field textarea:focus,.field select:focus,.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.field input::placeholder,.field textarea::placeholder,.input::placeholder{color:var(--faint)}
.count{font-size:11px;color:var(--mute);text-align:right;margin-top:-.1rem}
.count.warn{color:var(--warn)} .count.bad{color:var(--bad)}
.switch{display:flex;align-items:center;gap:.6rem;cursor:pointer;font-size:13.5px;user-select:none}
.switch input{appearance:none;width:34px;height:20px;border-radius:99px;background:var(--line-2);position:relative;cursor:pointer;flex:none;transition:background .2s;margin:0}
.switch input::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}
.switch input:checked{background:var(--ok)}
.switch input:checked::after{transform:translateX(14px)}
.range{display:flex;align-items:center;gap:.7rem}
.range input{flex:1;accent-color:var(--accent)}
.range output{min-width:3ch;font-variant-numeric:tabular-nums;color:var(--mute);font-size:12.5px}
.note{padding:.7rem .9rem;border-radius:10px;background:var(--accent-soft);color:var(--accent-ink);font-size:13px;margin-bottom:1rem;line-height:1.5}
.note--info{background:var(--teal-soft);color:var(--ink-2)}
.note--warn{background:var(--warn-soft);color:var(--ink-2)}
.note--bad{background:var(--bad-soft);color:var(--bad)}
.note--row{display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
.muted{color:var(--mute)} .faint{color:var(--faint)} .small{font-size:12px} .tiny{font-size:11px}
.row{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}
.row--nowrap{flex-wrap:nowrap}
.stack{display:flex;flex-direction:column;gap:.5rem}
.spacer{flex:1}
.empty{padding:2.5rem 1rem;text-align:center;color:var(--mute)}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:.3rem}
.divider{height:1px;background:var(--line);margin:1rem 0}
.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}

/* ----------------------------------------------------------------- badges */
.badge{display:inline-flex;align-items:center;gap:.25rem;font-size:11px;font-weight:650;padding:.12rem .5rem;border-radius:99px;background:var(--bg-2);color:var(--mute);white-space:nowrap;line-height:1.5}
.badge--ok{background:var(--ok-soft);color:var(--ok)}
.badge--warn{background:var(--warn-soft);color:var(--warn)}
.badge--bad{background:var(--bad-soft);color:var(--bad)}
.badge--info{background:var(--info-soft);color:var(--info)}
.badge--accent{background:var(--accent-soft);color:var(--accent-ink)}
.badge--dark{background:var(--ink);color:var(--card)}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.score{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:750;font-size:12.5px;flex:none;
  background:conic-gradient(currentColor calc(var(--v)*1%),var(--line) 0);position:relative}
.score::before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--card)}
.score span{position:relative}
.score--ok{color:var(--ok)} .score--warn{color:var(--warn)} .score--bad{color:var(--bad)}

/* --------------------------------------------------------------- dashboard */
.hello{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.2rem;flex-wrap:wrap}
.hello h1{font-size:1.5rem;letter-spacing:-.01em}
.hello p{color:var(--mute);margin-top:.2rem}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem;margin-bottom:1rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.1rem;text-decoration:none;display:block;transition:border-color .15s,transform .15s}
a.stat:hover{border-color:var(--line-2);transform:translateY(-1px)}
.stat__label{font-size:12px;color:var(--mute);display:flex;align-items:center;gap:.4rem}
.stat__value{display:block;font-size:1.75rem;font-weight:700;line-height:1.15;margin-top:.3rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat__sub{font-size:12px;color:var(--mute);margin-top:.1rem}
.feed{list-style:none;margin:0;padding:0}
.feed li{display:flex;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--line);font-size:13px;align-items:flex-start}
.feed li:last-child{border:0}
.feed time{color:var(--faint);white-space:nowrap;font-size:12px;margin-left:auto;font-variant-numeric:tabular-nums}

/* ------------------------------------------------------------- list editor */
.items{display:flex;flex-direction:column;gap:.45rem}
.item{border:1px solid var(--line);border-radius:10px;background:var(--card);transition:box-shadow .15s,border-color .15s}
.item__bar{display:flex;align-items:center;gap:.65rem;padding:.45rem .55rem .45rem .35rem;cursor:pointer;min-height:50px}
.item__thumb{width:40px;height:40px;border-radius:7px;object-fit:cover;background:var(--bg-2);flex:none}
.item__text{min-width:0;flex:1}
.item__name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item__meta{font-size:12px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item__tools{display:flex;gap:1px;flex:none;opacity:.55;transition:opacity .15s}
.item:hover .item__tools,.item.open .item__tools{opacity:1}
.item__body{padding:.5rem 1rem 1rem;border-top:1px solid var(--line)}
.item.open{border-color:var(--line-2);box-shadow:var(--shadow)}
.item.open>.item__bar{background:var(--card-2);border-radius:10px 10px 0 0}
.item.is-hidden .item__name{color:var(--faint);text-decoration:line-through}
.drag{cursor:grab;color:var(--faint);display:grid;place-items:center;width:22px;height:30px;border-radius:6px;touch-action:none;flex:none}
.drag:hover{color:var(--ink);background:var(--hover)}
.dragging{opacity:.95;box-shadow:var(--shadow-lg)!important;position:relative;z-index:50;cursor:grabbing}
.drop-hint{outline:2px dashed var(--accent);outline-offset:2px}
.icon-btn{border:0;background:transparent;cursor:pointer;width:30px;height:30px;border-radius:7px;display:inline-grid;place-items:center;color:var(--mute)}
.icon-btn:hover{background:var(--hover);color:var(--ink)}
.icon-btn.danger:hover{color:var(--bad);background:var(--bad-soft)}
.icon-btn.on{color:var(--accent)}
.section-card{border-left:3px solid var(--accent)}

/* ------------------------------------------------------------ image field */
.imgfield{display:flex;gap:.8rem;align-items:center}
.imgfield__preview{width:92px;height:70px;border-radius:9px;object-fit:cover;background:var(--bg-2);border:1px solid var(--line);flex:none}
.imgfield__preview.missing{display:grid;place-items:center;color:var(--faint);font-size:11px;text-align:center}
.imglist{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:.5rem}
.imglist__tile{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;background:var(--bg-2);border:1px solid var(--line)}
.imglist__tile img{width:100%;height:100%;object-fit:cover}
.imglist__tile button{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;font-size:12px;display:grid;place-items:center}
.imglist__add{aspect-ratio:1;border-radius:8px;border:1.5px dashed var(--line-2);display:grid;place-items:center;color:var(--mute);cursor:pointer;background:none}
.imglist__add:hover{border-color:var(--accent);color:var(--accent)}

/* ------------------------------------------------------------------- SEO */
.serp{padding:.8rem 1rem;border-radius:10px;background:var(--card);border:1px dashed var(--line-2)}
.serp__url{color:var(--ink-2);font-size:12px}
.serp__t{color:#1a0dab;font-size:18px;line-height:1.3;margin:.15rem 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root[data-theme="dark"] .serp__t{color:#8ab4f8}
.serp__d{color:var(--mute);font-size:13px;line-height:1.5}
.og{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
.og img{width:100%;aspect-ratio:1.91/1;object-fit:cover;background:var(--bg-2)}
.og div{padding:.55rem .75rem}
.og small{color:var(--mute);text-transform:uppercase;font-size:10.5px;letter-spacing:.04em}
.og b{display:block;font-size:13.5px;margin:.1rem 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.og p{font-size:12px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.previews{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:1rem;margin-top:.6rem}
@media (max-width:900px){.previews{grid-template-columns:1fr}}
.issues{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.3rem}
.issues li{font-size:12.5px;display:flex;gap:.5rem;align-items:baseline}
.issues li::before{content:"";width:7px;height:7px;border-radius:50%;flex:none;transform:translateY(-1px)}
.issues .bad::before{background:var(--bad)} .issues .warn::before{background:var(--warn)} .issues .ok::before{background:var(--ok)}
.chips{display:flex;flex-wrap:wrap;gap:.35rem}

/* ----------------------------------------------------------------- tables */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);font-weight:650;padding:.6rem .75rem;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--card-2)}
.tbl td{padding:.7rem .75rem;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tbody tr.link{cursor:pointer}
.tbl tbody tr.link:hover td{background:var(--hover)}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.table-wrap{overflow-x:auto}
.toolbar{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.search{position:relative;display:flex;align-items:center}
.search svg{position:absolute;left:.65rem;color:var(--faint);pointer-events:none}
.search input{padding:.5rem .7rem .5rem 2.1rem;border:1px solid var(--line-2);border-radius:9px;background:var(--card);min-width:240px}
.search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.chip{border:0;border-radius:99px;padding:.3rem .75rem;background:var(--card);box-shadow:inset 0 0 0 1px var(--line-2);cursor:pointer;font-size:12.5px;font-weight:550;color:var(--ink-2)}
.chip:hover{background:var(--hover)}
.chip.on{background:var(--ink);color:var(--card);box-shadow:none}

/* ------------------------------------------------------------- rich text */
.rte{border:1px solid var(--line-2);border-radius:10px;background:var(--card)}
.rte__bar{display:flex;gap:2px;padding:.35rem;border-bottom:1px solid var(--line);flex-wrap:wrap;position:sticky;top:var(--top);background:var(--card);border-radius:10px 10px 0 0;z-index:2}
.rte__bar button{border:0;background:none;border-radius:6px;padding:.3rem .55rem;cursor:pointer;font-size:12.5px;font-weight:650;color:var(--ink-2)}
.rte__bar button:hover{background:var(--hover)}
.rte__area{min-height:300px;padding:1rem 1.2rem;outline:none;font-size:15px;line-height:1.7}
.rte__area h2{font-size:1.35rem;margin:1.4rem 0 .5rem}
.rte__area h3{font-size:1.1rem;margin:1.2rem 0 .4rem}
.rte__area p{margin:0 0 .9rem}
.rte__area ul,.rte__area ol{margin:0 0 .9rem;padding-left:1.4rem}
.rte__area blockquote{margin:1rem 0;padding-left:1rem;border-left:3px solid var(--accent);color:var(--ink-2)}
.rte__area a{color:var(--accent)}

/* ------------------------------------------------------------------ media */
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem}
.media{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card);display:flex;flex-direction:column}
.media img{width:100%;aspect-ratio:1;object-fit:cover;background:var(--bg-2)}
.media__info{padding:.45rem .55rem;font-size:11.5px;display:flex;flex-direction:column;gap:.15rem}
.media__info b{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.media__tools{display:flex;gap:.3rem;padding:0 .55rem .55rem}
button.media{cursor:pointer;padding:0;text-align:left;color:inherit}
button.media:hover{outline:2px solid var(--accent);outline-offset:1px}
.drop{display:block;border:2px dashed var(--line-2);border-radius:12px;padding:1.1rem;text-align:center;color:var(--mute);margin-bottom:1rem;cursor:pointer;transition:border-color .2s,background .2s}
.drop.over,.drop:hover{border-color:var(--accent);background:var(--accent-soft)}

/* ---------------------------------------------------------- page builder */
.builder{display:grid;grid-template-columns:300px minmax(340px,440px) minmax(0,1fr);height:calc(100vh - var(--top));min-height:520px}
.builder__col{overflow:auto;min-width:0;border-right:1px solid var(--line);background:var(--bg)}
.builder__col--list{background:var(--card-2);padding:1rem .8rem}
.builder__col--edit{padding:1rem 1.1rem}
.builder__col--preview{border-right:0;background:var(--bg-2);display:flex;flex-direction:column}
.blocks{display:flex;flex-direction:column;gap:.35rem}
.block{display:flex;align-items:center;gap:.45rem;padding:.4rem .45rem .4rem .25rem;border-radius:9px;background:var(--card);border:1px solid var(--line);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.block:hover{border-color:var(--line-2)}
.block.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.block.is-hidden{opacity:.55}
.block__icon{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;background:var(--bg-2);color:var(--ink-2);flex:none}
.block__text{min-width:0;flex:1}
.block__type{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:650}
.block__name{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.block .icon-btn{width:26px;height:26px;opacity:0}
.block:hover .icon-btn,.block.on .icon-btn,.block .icon-btn.on{opacity:1}
.addblock{width:100%;margin-top:.6rem;border:1.5px dashed var(--line-2);background:none;border-radius:9px;padding:.6rem;cursor:pointer;color:var(--mute);font-weight:600}
.addblock:hover{border-color:var(--accent);color:var(--accent)}
.blockgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.6rem}
.blockcard{border:1px solid var(--line);border-radius:11px;background:var(--card);padding:.8rem;text-align:left;cursor:pointer;display:flex;gap:.7rem;align-items:flex-start;color:inherit}
.blockcard:hover{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.blockcard b{display:block;font-size:13.5px}
.blockcard span{display:block;font-size:12px;color:var(--mute);margin-top:.15rem;line-height:1.4}
.pv__bar{display:flex;align-items:center;gap:.5rem;padding:.55rem .8rem;border-bottom:1px solid var(--line);background:var(--card)}
.pv__url{flex:1;min-width:0;font-size:12px;color:var(--mute);background:var(--bg-2);border-radius:7px;padding:.3rem .6rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv__stage{flex:1;display:flex;justify-content:center;overflow:auto;padding:0}
.pv__frame{width:100%;height:100%;border:0;background:#fff;transition:width .25s}
.pv__stage.is-tablet .pv__frame{width:820px;margin:1rem auto;border-radius:14px;box-shadow:var(--shadow-lg);height:calc(100% - 2rem)}
.pv__stage.is-mobile .pv__frame{width:390px;margin:1rem auto;border-radius:22px;box-shadow:var(--shadow-lg);height:calc(100% - 2rem)}
.pv__loading{position:absolute;top:.6rem;right:.8rem}
.builder__tabs{display:none}
@media (max-width:1280px){
  .builder{grid-template-columns:260px minmax(0,1fr)}
  .builder__col--preview{display:none}
  .builder.show-preview{grid-template-columns:260px minmax(0,1fr)}
  .builder.show-preview .builder__col--edit{display:none}
  .builder.show-preview .builder__col--preview{display:flex}
}
@media (max-width:760px){
  .builder{grid-template-columns:1fr;height:auto}
  .builder__col{border-right:0;border-bottom:1px solid var(--line)}
  .builder__col--list{display:none}
  .builder.show-list .builder__col--list{display:block}
  .builder.show-list .builder__col--edit{display:none}
  .builder.show-preview .builder__col--preview{height:75vh}
  .builder__tabs{display:flex;padding:.6rem .8rem;border-bottom:1px solid var(--line)}
}
.split-edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;height:calc(100vh - var(--top))}
.split-edit>.split-edit__form{overflow:auto;padding:1.4rem;border-right:1px solid var(--line)}
.split-edit>.split-edit__preview{display:flex;flex-direction:column;background:var(--bg-2);min-width:0}
@media (max-width:1100px){.split-edit{grid-template-columns:1fr;height:auto}.split-edit__preview{display:none!important}}

/* -------------------------------------------------------------------- CRM */
.crm-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem}
.datenav{display:inline-flex;align-items:center;gap:.25rem;background:var(--card);border-radius:10px;box-shadow:inset 0 0 0 1px var(--line-2);padding:3px}
.datenav button{border:0;background:none;border-radius:7px;cursor:pointer;padding:.3rem .5rem;color:var(--ink-2)}
.datenav button:hover{background:var(--hover)}
.datenav input{border:0;background:none;padding:.25rem .3rem;font-weight:600;width:auto;min-width:0}
.datenav input:focus{outline:none}
.daylabel{font-weight:650;font-size:1.05rem}
.kpis{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.5rem .85rem;display:flex;align-items:baseline;gap:.45rem}
.kpi b{font-size:1.15rem;font-variant-numeric:tabular-nums}
.kpi span{font-size:12px;color:var(--mute)}
.slot{display:grid;grid-template-columns:64px minmax(0,1fr);gap:.8rem;margin-bottom:.35rem}
.slot__time{font-weight:700;font-variant-numeric:tabular-nums;padding-top:.8rem;color:var(--ink-2);font-size:13px}
.res{display:grid;grid-template-columns:minmax(0,1.6fr) auto auto minmax(0,auto);gap:.8rem;align-items:center;padding:.65rem .8rem;border-radius:11px;background:var(--card);border:1px solid var(--line);margin-bottom:.35rem;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.res:hover{border-color:var(--line-2);box-shadow:var(--shadow)}
.res__who{min-width:0}
.res__name{font-weight:650;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.res__meta{font-size:12px;color:var(--mute);display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.1rem}
.res__party{display:flex;align-items:center;gap:.3rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-2)}
.res__actions{display:flex;gap:.3rem;justify-content:flex-end;flex-wrap:wrap}
.res.st-cancelled,.res.st-no_show{opacity:.6}
.res.st-new{border-left:3px solid var(--info)}
.res.st-confirmed{border-left:3px solid var(--ok)}
.res.st-seated{border-left:3px solid var(--teal)}
.res.st-no_show{border-left:3px solid var(--bad)}
@media (max-width:760px){.res{grid-template-columns:1fr auto}.res__actions{grid-column:1/-1;justify-content:flex-start}.slot{grid-template-columns:48px minmax(0,1fr)}}
.status{display:inline-flex;align-items:center;gap:.35rem;font-size:11.5px;font-weight:650;padding:.2rem .55rem;border-radius:99px;white-space:nowrap}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.status--new{background:var(--info-soft);color:var(--info)}
.status--confirmed{background:var(--ok-soft);color:var(--ok)}
.status--seated{background:var(--teal-soft);color:var(--teal)}
.status--cancelled{background:var(--bg-2);color:var(--mute)}
.status--no_show{background:var(--bad-soft);color:var(--bad)}
.tag{display:inline-flex;align-items:center;gap:.25rem;font-size:11px;font-weight:650;padding:.08rem .45rem;border-radius:6px;background:var(--accent-soft);color:var(--accent-ink)}
.tag--vip{background:#f7ecc9;color:#7a5a06}
:root[data-theme="dark"] .tag--vip{background:#3a3014;color:#f0d27a}
.tag--warn{background:var(--bad-soft);color:var(--bad)}
.tag--new{background:var(--info-soft);color:var(--info)}
.tag--loyal{background:var(--ok-soft);color:var(--ok)}
.tagedit{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;padding:.4rem;border:1px solid var(--line-2);border-radius:9px;background:var(--card)}
.tagedit .tag button{border:0;background:none;color:inherit;cursor:pointer;padding:0 0 0 .15rem;font-size:13px;line-height:1}
.tagedit input{border:0;outline:none;background:none;min-width:120px;flex:1;padding:.15rem .2rem}
.timeline{list-style:none;margin:0;padding:0 0 0 .9rem;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:0 0 .8rem .6rem;font-size:12.5px}
.timeline li::before{content:"";position:absolute;left:-1.24rem;top:.35rem;width:9px;height:9px;border-radius:50%;background:var(--card);border:2px solid var(--line-2)}
.timeline time{display:block;color:var(--faint);font-size:11.5px}
.profile-head{display:flex;gap:1rem;align-items:center;margin-bottom:1.2rem;flex-wrap:wrap}
.profile-head .avatar{width:56px;height:56px;font-size:20px}
.profile-head h1{font-size:1.4rem}

/* ----------------------------------------------------------------- charts */
.chart{width:100%;height:auto;display:block;overflow:visible}
.chart .bar{fill:var(--accent);transition:opacity .15s}
.chart .bar.future{fill:var(--accent);opacity:.3}
.chart .bar:hover{opacity:.75}
.chart .axis{fill:var(--faint);font-size:10px}
.chart .grid{stroke:var(--line);stroke-width:1}
.hbars{display:grid;gap:.45rem}
.hbar{display:grid;grid-template-columns:90px minmax(0,1fr) 44px;gap:.6rem;align-items:center;font-size:12.5px}
.hbar__track{height:9px;border-radius:99px;background:var(--bg-2);overflow:hidden}
.hbar__fill{height:100%;border-radius:99px;background:var(--accent)}
.hbar .num{text-align:right;font-variant-numeric:tabular-nums;color:var(--mute)}
.big{font-size:2rem;font-weight:750;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}

/* --------------------------------------------------- drawer, modal, toast */
.drawer{position:fixed;inset:0 0 0 auto;width:min(480px,100vw);background:var(--card);box-shadow:var(--shadow-lg);z-index:80;
  display:flex;flex-direction:column;transform:translateX(105%);transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.drawer.open{transform:none}
.drawer__head{display:flex;align-items:center;gap:.6rem;padding:1rem 1.2rem;border-bottom:1px solid var(--line)}
.drawer__head h2{font-size:1.05rem;flex:1;min-width:0}
.drawer__body{flex:1;overflow:auto;padding:1.1rem 1.2rem}
.drawer__foot{padding:.8rem 1.2rem;border-top:1px solid var(--line);display:flex;gap:.5rem;flex-wrap:wrap}
.scrim{position:fixed;inset:0;background:rgba(15,12,10,.35);z-index:79;opacity:0;pointer-events:none;transition:opacity .2s}
.scrim.on{opacity:1;pointer-events:auto}
.modal{border:0;border-radius:16px;padding:0;width:min(640px,94vw);max-height:88vh;box-shadow:var(--shadow-lg);background:var(--card);color:var(--ink)}
.modal--wide{width:min(980px,94vw)}
.modal::backdrop{background:rgba(15,12,10,.5);backdrop-filter:blur(2px)}
.modal__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card);z-index:1}
.modal__head h2{font-size:1.05rem}
.modal__body{padding:1.1rem 1.2rem}
.modal__foot{display:flex;justify-content:flex-end;gap:.5rem;padding:.9rem 1.2rem;border-top:1px solid var(--line);position:sticky;bottom:0;background:var(--card)}
.modal pre{white-space:pre-wrap;font-size:12px;background:var(--bg-2);padding:1rem;border-radius:9px;max-height:60vh;overflow:auto}
.toasts{position:fixed;right:1.2rem;bottom:1.2rem;display:flex;flex-direction:column;gap:.5rem;z-index:120;max-width:min(380px,92vw)}
.toast{background:var(--ink);color:var(--card);padding:.75rem 1rem;border-radius:12px;font-size:13px;box-shadow:var(--shadow-lg);display:flex;gap:.6rem;align-items:flex-start;
  animation:toast-in .25s cubic-bezier(.2,.8,.2,1)}
.toast.bad{background:var(--bad);color:#fff}
.toast.info{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.toast a{color:inherit;font-weight:650}
@keyframes toast-in{from{transform:translateY(12px);opacity:0}}

/* ------------------------------------------------------- command palette */
.palette{border:0;border-radius:16px;padding:0;width:min(640px,94vw);box-shadow:var(--shadow-lg);background:var(--card);color:var(--ink);margin-top:12vh}
.palette::backdrop{background:rgba(15,12,10,.45);backdrop-filter:blur(2px)}
.palette__input{display:flex;align-items:center;gap:.6rem;padding:.9rem 1.1rem;border-bottom:1px solid var(--line)}
.palette__input input{flex:1;border:0;outline:none;background:none;font-size:16px}
.palette__list{max-height:min(420px,60vh);overflow:auto;padding:.4rem}
.palette__group{font-size:10.5px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding:.6rem .7rem .3rem}
.palette__item{display:flex;align-items:center;gap:.7rem;padding:.55rem .7rem;border-radius:9px;cursor:pointer}
.palette__item.on{background:var(--hover)}
.palette__item small{margin-left:auto;color:var(--faint);font-size:12px}
.palette__kind{font-size:10.5px;font-weight:650;padding:.1rem .4rem;border-radius:5px;background:var(--bg-2);color:var(--mute);min-width:44px;text-align:center}
.palette__foot{display:flex;gap:1rem;padding:.55rem 1rem;border-top:1px solid var(--line);font-size:11.5px;color:var(--faint)}

/* ------------------------------------------------------------------ auth */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--card)}
.auth__art{position:relative;background:#141312 url("/assets/img/brand/avlu-wordmark-white.png") no-repeat center/180px;overflow:hidden}
.auth__art::after{content:"";position:absolute;inset:0;background:radial-gradient(80% 60% at 30% 80%,rgba(185,106,86,.45),transparent 70%)}
.auth__form{display:grid;place-items:center;padding:2rem}
.auth form{width:min(360px,100%);display:flex;flex-direction:column;gap:.75rem}
.auth h1{font-size:1.5rem;letter-spacing:-.01em}
.auth p{color:var(--mute);margin-bottom:.5rem}
.auth .btn{padding:.7rem;margin-top:.3rem}
.auth__err{color:var(--bad);font-size:13px;min-height:1.2em}
@media (max-width:800px){.auth{grid-template-columns:1fr}.auth__art{display:none}}

/* ------------------------------------------------------------- utilities */
.hide-sm{}
@media (max-width:760px){.hide-sm{display:none!important}}
.fade-in{animation:fade .25s ease}
@keyframes fade{from{opacity:0;transform:translateY(4px)}}
.skeleton{background:linear-gradient(90deg,var(--bg-2),var(--hover),var(--bg-2));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:10px}
@keyframes sk{to{background-position:-200% 0}}
