:root{--bg:#f6f5f2;--panel:#fff;--panel2:#f0efeb;--fg:#17171a;--muted:#6e6c66;--line:#e3e1dc;--accent:#e63946;--accent-fg:#fff;--ok:#1f9d55;--warn:#c27c0e;--bad:#d64545;--info:#3b6fd8;--r:12px;--shadow:0 1px 2px rgba(0,0,0,.05),0 4px 16px rgba(0,0,0,.04);color-scheme:light}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e0e10;--panel:#17171a;--panel2:#1f1f23;--fg:#ecebe7;--muted:#9a978f;--line:#2a2a2f;--shadow:none;color-scheme:dark}}
:root[data-theme=dark]{--bg:#0e0e10;--panel:#17171a;--panel2:#1f1f23;--fg:#ecebe7;--muted:#9a978f;--line:#2a2a2f;--shadow:none;color-scheme:dark}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
[hidden]{display:none !important}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
.boot{display:grid;place-items:center;height:100vh;color:var(--muted)}
.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}
nav.side{border-right:1px solid var(--line);padding:20px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px}
nav.side .logo{font-weight:800;letter-spacing:.01em;margin:0 8px 18px;display:flex;align-items:center;gap:8px}
nav.side .logo i{width:10px;height:10px;border-radius:50%;background:var(--accent);display:inline-block}
nav.side a{display:flex;justify-content:space-between;align-items:center;padding:9px 10px;border-radius:9px;text-decoration:none;color:var(--muted);font-weight:500}
nav.side a.on,nav.side a:hover{background:var(--panel2);color:var(--fg)}
nav.side .grow{flex:1}
nav.side .who{font-size:13px;color:var(--muted);padding:8px 10px}
.pill{background:var(--accent);color:var(--accent-fg);border-radius:20px;font-size:12px;padding:0 7px;font-weight:700}
main{padding:24px 28px 80px;max-width:1180px;width:100%}
header.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}
h1{font-size:24px;margin:0;letter-spacing:-.01em}
h2{font-size:16px;margin:0 0 10px}
.muted{color:var(--muted)}.small{font-size:13px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
.stack{display:flex;flex-direction:column;gap:14px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;align-items:start}
.btn{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:8px 14px;cursor:pointer;font-weight:600;white-space:nowrap}
.btn:hover{background:var(--panel2)}
.btn.primary{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.danger{color:var(--bad)}
.btn.sm{padding:5px 10px;font-size:13px}
.btn:disabled{opacity:.45;cursor:default}
input[type=text],input[type=url],input[type=number],input[type=datetime-local],select,textarea{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 11px;outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--fg)}
textarea{min-height:140px;resize:vertical}
label.f{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted);font-weight:600}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--panel);border-radius:20px;padding:6px 12px;cursor:pointer;font-weight:600;display:inline-flex;align-items:center;gap:7px}
.chip .dot{width:9px;height:9px;border-radius:50%}
.chip.on{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.chan{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:9px 11px;cursor:pointer;background:var(--panel)}
.chan.on{border-color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}
.chan img,.chan .ph{width:30px;height:30px;border-radius:50%;object-fit:cover;background:var(--panel2);flex:none}
.chan .nm{flex:1;min-width:0}.chan .nm b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chans{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;border-radius:20px;padding:2px 9px;background:var(--panel2);color:var(--muted);white-space:nowrap}
.badge.draft{}.badge.pending{background:#fff3d6;color:#8a5a00}.badge.scheduled,.badge.queued,.badge.sending{background:#e3ecff;color:#2a55b8}
.badge.published{background:#dcf5e5;color:#17723f}.badge.partial{background:#fff0d9;color:#9a5b00}.badge.failed,.badge.rejected{background:#fde2e2;color:#b02a2a}.badge.cancelled{text-decoration:line-through}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .badge.pending{background:#3a2e10;color:#f2c25b}:root:not([data-theme=light]) .badge.scheduled,:root:not([data-theme=light]) .badge.queued,:root:not([data-theme=light]) .badge.sending{background:#18264a;color:#8fb0ff}:root:not([data-theme=light]) .badge.published{background:#123222;color:#6fd69a}:root:not([data-theme=light]) .badge.partial{background:#3a2a10;color:#f2b35b}:root:not([data-theme=light]) .badge.failed,:root:not([data-theme=light]) .badge.rejected{background:#3a1616;color:#ff8f8f}}
.media{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.tile{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--panel2);border:1px solid var(--line)}
.tile img{width:100%;height:100%;object-fit:cover;display:block}
.tile .lbl{position:absolute;left:6px;bottom:6px;right:6px;font-size:11px;background:rgba(0,0,0,.55);color:#fff;border-radius:6px;padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .x{position:absolute;top:5px;right:5px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;cursor:pointer}
.tile .mv{position:absolute;top:5px;left:5px;display:flex;gap:3px}.tile .mv button{width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;font-size:12px}
.tile .kind{position:absolute;top:6px;left:50%;transform:translateX(-50%);font-size:11px;background:rgba(0,0,0,.55);color:#fff;border-radius:6px;padding:1px 6px}
.tile.sel{outline:3px solid var(--accent);outline-offset:-3px}
.problems{border-left:3px solid var(--warn);padding:8px 12px;background:var(--panel2);border-radius:0 10px 10px 0;font-size:13px}
.problems li{margin:2px 0}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.cal .dow{background:var(--panel2);padding:6px 8px;font-size:12px;font-weight:700;color:var(--muted)}
.cal .day{background:var(--panel);min-height:112px;padding:6px;display:flex;flex-direction:column;gap:4px}
.cal .day.out{background:var(--panel2)}.cal .day .n{font-size:12px;color:var(--muted);font-weight:700}
.cal .day.today .n{color:var(--accent)}
.ev{display:flex;align-items:center;gap:6px;font-size:12px;border-radius:7px;padding:3px 6px;background:var(--panel2);text-decoration:none;border-left:3px solid var(--c);overflow:hidden;white-space:nowrap}
.ev span{overflow:hidden;text-overflow:ellipsis}
.list .item{display:flex;gap:12px;align-items:center;padding:12px;border-bottom:1px solid var(--line);text-decoration:none}
.list .item:last-child{border-bottom:0}
.list .thumb{width:54px;height:54px;border-radius:9px;background:var(--panel2);object-fit:cover;flex:none;border-left:4px solid var(--c)}
.list .body{flex:1;min-width:0}.list .body .cap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plat{display:inline-flex;gap:4px;flex-wrap:wrap}
.plat i{font-style:normal;font-size:11px;font-weight:700;border-radius:5px;padding:0 5px;background:var(--panel2);color:var(--muted)}
.plat i.published{color:var(--ok)}.plat i.failed{color:var(--bad)}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}
.modal .box{background:var(--panel);border-radius:16px;width:min(920px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line)}
.modal .hd{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}
.modal .bd{padding:14px 16px;overflow:auto;flex:1}
.modal .ft{padding:12px 16px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.crumbs{display:flex;gap:4px;flex-wrap:wrap;font-size:13px}.crumbs button{border:0;background:none;color:var(--muted);cursor:pointer;padding:2px 4px}.crumbs button:last-child{color:var(--fg);font-weight:700}
.folder{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:9px;cursor:pointer;border:1px solid var(--line);background:var(--panel)}
.folder:hover{background:var(--panel2)}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--fg);color:var(--bg);border-radius:12px;padding:10px 16px;z-index:60;max-width:min(560px,92vw);font-weight:600}
.toast.bad{background:var(--bad);color:#fff}
.timeline{font-size:13px;display:flex;flex-direction:column;gap:6px}
.timeline div{display:flex;gap:8px}.timeline time{color:var(--muted);min-width:92px}
.tgt{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.tgt:last-child{border-bottom:0}
.empty{padding:40px;text-align:center;color:var(--muted)}
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login .card{max-width:380px;text-align:center;padding:28px}
details.ps{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--panel)}
details.ps summary{cursor:pointer;font-weight:700}
.bottomnav{display:none}
@media (max-width:820px){
  .shell{grid-template-columns:1fr}
  nav.side{display:none}
  main{padding:16px 16px 96px}
  .grid2{grid-template-columns:1fr}
  .bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--panel);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom));z-index:40;justify-content:space-around}
  .bottomnav a{flex:1;text-align:center;text-decoration:none;color:var(--muted);font-size:12px;font-weight:600;padding:6px 0;border-radius:8px}
  .bottomnav a.on{color:var(--fg);background:var(--panel2)}
  .cal .day{min-height:70px}.ev span{display:none}
}
