/* fmaspoof dashboard styles. Loaded by index.html; post.html (the phone app) keeps its own. */
  :root{
    --bg:#0a0c11; --panel:#11141b; --panel-2:#161a23; --line:#222836; --line-soft:#1a1f2a;
    --text:#e9ebf1; --dim:#8b93a7; --faint:#5a627a;
    --accent:#3b82f6; --accent-hi:#5b9bff; --accent-dim:rgba(59,130,246,.12);
    --ok:#34d399; --warn:#fbbf24; --err:#f87171; --run:#60a5fa; --purple:#a78bfa;
    --r:10px; --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px -14px rgba(0,0,0,.7);
    --nav:232px;
  }
  *{box-sizing:border-box}
  html,body{height:100%}
  body{margin:0;background:var(--bg);color:var(--text);
    font:14.5px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
  a{color:var(--accent-hi);text-decoration:none} a:hover{text-decoration:underline}

  /* ---------------- shell ---------------- */
  #app{display:none}
  .shell{display:flex;min-height:100vh}
  nav.side{width:var(--nav);flex:none;background:var(--panel);border-right:1px solid var(--line);
    display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
  .brand{display:flex;align-items:center;gap:10px;padding:18px 18px 16px;border-bottom:1px solid var(--line-soft)}
  .brand .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--purple));
    display:grid;place-items:center;font-size:15px}
  .brand b{font-size:14.5px;letter-spacing:-.01em;display:block;line-height:1.2}
  .brand small{color:var(--faint);font-size:11.5px}
  .navlist{padding:10px 10px;flex:1;overflow-y:auto}
  .navlist button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;
    border:none;color:var(--dim);padding:9px 11px;border-radius:8px;font:inherit;font-size:13.5px;cursor:pointer;margin-bottom:2px}
  .navlist button:hover{background:var(--panel-2);color:var(--text)}
  .navlist button.on{background:var(--accent-dim);color:var(--accent-hi);font-weight:500}
  .navlist button .ic{width:17px;text-align:center;flex:none;font-size:14px}
  .navlist button .badge{margin-left:auto;font-size:11px;background:var(--panel-2);color:var(--dim);
    border-radius:20px;padding:1px 7px;min-width:20px;text-align:center}
  .navlist button.on .badge{background:rgba(59,130,246,.2);color:var(--accent-hi)}
  .navfoot{padding:12px;border-top:1px solid var(--line-soft)}

  .status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dim);
    background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:8px 11px;margin-bottom:9px}
  .status .led{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:none}
  .status.live .led{background:var(--ok);box-shadow:0 0 0 3px rgba(52,211,153,.15)}
  .status.busy .led{background:var(--run);box-shadow:0 0 0 3px rgba(96,165,250,.15);animation:pulse 1.4s infinite}
  .status.bad  .led{background:var(--err);box-shadow:0 0 0 3px rgba(248,113,113,.15)}
  @keyframes pulse{50%{opacity:.35}}

  main{flex:1;min-width:0;padding:26px 30px 70px;max-width:1180px}
  .head{margin-bottom:22px;max-width:720px}
  .head h1{font-size:22px;margin:0 0 6px;letter-spacing:-.02em;font-weight:650}
  .head p{margin:0;color:var(--dim);font-size:13.5px;line-height:1.5}
  section{display:none} section.on{display:block}

  /* ---------------- cards ---------------- */
  .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:18px}
  .card>.hd{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
  .card>.hd h2{font-size:14px;margin:0;font-weight:600}
  .card>.hd .sub{color:var(--faint);font-size:12.5px}
  .card>.bd{padding:18px} .card>.bd.flush{padding:0}

  .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
  .stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:15px 17px}
  .stat .k{color:var(--faint);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:7px;display:flex;align-items:center;gap:5px}
  .stat .v{font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:1}
  .stat .n{color:var(--faint);font-size:11.5px;margin-top:6px}
  .stat.ok .v{color:var(--ok)} .stat.warn .v{color:var(--warn)} .stat.err .v{color:var(--err)} .stat.run .v{color:var(--run)}

  /* ---------------- form ---------------- */
  .grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
  .field label{display:block;font-size:12px;color:var(--dim);margin-bottom:6px;font-weight:500}
  .field .hint{font-size:11.5px;color:var(--faint);margin-top:5px;line-height:1.45}
  input,select,textarea,button{font:inherit;color:var(--text);border-radius:8px;background:var(--bg);
    border:1px solid var(--line);padding:9px 11px;width:100%}
  input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,.16)}
  textarea{min-height:74px;resize:vertical;font-size:13px}
  select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);
    background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:32px}
  .toggles{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
  .toggle{display:flex;align-items:center;gap:9px;background:var(--bg);border:1px solid var(--line);border-radius:8px;
    padding:9px 13px;cursor:pointer;user-select:none;font-size:13px}
  .toggle:hover{border-color:#2d3546}
  .toggle input{width:15px;height:15px;accent-color:var(--accent);margin:0;padding:0;flex:none}
  .toggle .t-sub{color:var(--faint);font-size:11.5px}
  button{width:auto;cursor:pointer;font-weight:500;border-color:var(--accent);background:var(--accent);padding:9px 18px}
  button:hover{background:var(--accent-hi);border-color:var(--accent-hi)}
  button:disabled{opacity:.55;cursor:not-allowed}
  button.ghost{background:transparent;border-color:var(--line);color:var(--dim)}
  button.ghost:hover{background:var(--panel-2);color:var(--text);border-color:#2d3546}
  button.sm{padding:5px 11px;font-size:12.5px}
  button.danger:hover{background:rgba(248,113,113,.12);border-color:var(--err);color:var(--err)}
  .actions{display:flex;align-items:center;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line-soft);flex-wrap:wrap}

  /* numbered steps: who it's for -> where it goes -> what to make. Reads top to bottom instead of
     as one flat wall of fields where client and accounts were buried under the expert controls. */
  ol.steps{list-style:none;margin:0;padding:0}
  ol.steps>li{position:relative;padding:0 0 20px 38px;border-left:1px solid var(--line-soft);margin-left:11px}
  ol.steps>li:last-child{border-left-color:transparent;padding-bottom:4px}
  ol.steps .sn{position:absolute;left:-11px;top:0;width:22px;height:22px;border-radius:50%;
    background:var(--panel-2);border:1px solid var(--line);color:var(--dim);
    display:grid;place-items:center;font-size:11.5px;font-weight:600}
  details.adv{margin-top:6px;border-top:1px solid var(--line-soft);padding-top:12px}
  details.adv>summary{color:var(--dim);font-size:12.5px}
  details.adv[open]>summary{margin-bottom:2px}

  .callout{display:flex;gap:11px;background:var(--panel-2);border:1px solid var(--line);border-radius:8px;
    padding:12px 14px;font-size:13px;margin-top:14px}
  .callout .ic{color:var(--accent);flex:none} .callout .p{color:var(--faint);font-size:11.5px;margin-top:3px}

  /* ---------------- tables ---------------- */
  .scroll{overflow-x:auto}
  table{width:100%;border-collapse:collapse;font-size:13px}
  th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
  th{color:var(--faint);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
    background:var(--panel-2);white-space:nowrap}
  tbody tr:last-child td{border-bottom:none}
  tbody tr:hover{background:rgba(255,255,255,.016)}
  td.num{font-variant-numeric:tabular-nums;color:var(--dim)}
  .empty{padding:40px 18px;text-align:center;color:var(--faint)}
  .empty .big{font-size:26px;margin-bottom:9px;opacity:.5}

  .pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;padding:3px 9px;
    border-radius:999px;border:1px solid transparent;white-space:nowrap}
  .pill .d{width:5px;height:5px;border-radius:50%;background:currentColor}
  .p-queued{color:var(--warn);background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.22)}
  .p-running{color:var(--run);background:rgba(96,165,250,.1);border-color:rgba(96,165,250,.22)}
  .p-done{color:var(--ok);background:rgba(52,211,153,.1);border-color:rgba(52,211,153,.22)}
  .p-error{color:var(--err);background:rgba(248,113,113,.1);border-color:rgba(248,113,113,.22)}
  .p-cancelled{color:var(--dim);background:var(--panel-2);border-color:var(--line)}
  .tag{display:inline-block;font-size:11.5px;color:var(--dim);background:var(--panel-2);border:1px solid var(--line);
    border-radius:5px;padding:2px 7px;white-space:nowrap}
  .src{color:var(--dim);max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}
  details summary{cursor:pointer;color:var(--dim);font-size:12.5px;list-style:none}
  details summary::-webkit-details-marker{display:none}
  details summary:before{content:"▸ ";color:var(--faint)} details[open] summary:before{content:"▾ "}
  pre{white-space:pre-wrap;word-break:break-word;font-size:11.5px;color:var(--dim);background:var(--bg);
    border:1px solid var(--line-soft);border-radius:7px;padding:10px;max-height:230px;overflow:auto;margin:8px 0 0}
  td input,td select{width:82px;padding:5px 8px;font-size:12.5px}
  td input.w{width:118px}
  code{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px;color:var(--dim)}

  .kv{display:grid;grid-template-columns:220px 1fr;gap:0}
  .kv>div{padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
  .kv>div:nth-child(odd){color:var(--dim)}
  .kv>div:nth-last-child(-n+2){border-bottom:none}

  /* ---------------- auth ---------------- */
  .auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
  .auth{width:100%;max-width:365px}
  .auth .logo{text-align:center;margin-bottom:22px}
  .auth .logo .mark{width:46px;height:46px;border-radius:12px;margin:0 auto 12px;
    background:linear-gradient(135deg,var(--accent),var(--purple));display:grid;place-items:center;font-size:22px}
  .auth .logo h1{font-size:19px;margin:0 0 4px;letter-spacing:-.02em}
  .auth .logo p{color:var(--faint);font-size:13px;margin:0}
  .auth .field{margin-bottom:13px}
  .auth button{width:100%;margin-top:6px;padding:10px}
  .err{color:var(--err);font-size:12.5px;margin-top:11px;min-height:17px;text-align:center}

  #toasts{position:fixed;right:18px;bottom:18px;z-index:80;display:flex;flex-direction:column;gap:9px}
  .toast{background:var(--panel-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;
    padding:11px 15px;font-size:13px;box-shadow:var(--shadow);animation:slide .18s ease-out;max-width:370px}
  .toast.ok{border-left-color:var(--ok)} .toast.bad{border-left-color:var(--err)}
  @keyframes slide{from{opacity:0;transform:translateY(6px)}}

  /* ---------------- icons (inline SVG, no emoji) ---------------- */
  .i{width:1em;height:1em;vertical-align:-.15em;flex:none}
  .brand .mark .i,.auth .mark .i{color:#fff}
  :focus-visible{outline:2px solid var(--accent-hi);outline-offset:2px}
  @media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

  /* ---------------- client cards ----------------
     one card per creator: the master folder we watch, and the @account folders we deliver into */
  .clients{display:grid;grid-template-columns:repeat(auto-fill,minmax(370px,1fr));gap:18px}
  .client{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
    display:flex;flex-direction:column;transition:border-color .15s}
  .client:hover{border-color:#2d3546}
  .client>header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line-soft)}
  .client .av{width:34px;height:34px;border-radius:9px;background:var(--accent-dim);color:var(--accent-hi);
    display:grid;place-items:center;font-weight:600;font-size:15px;flex:none;text-transform:uppercase}
  .client h3{margin:0;font-size:14.5px;letter-spacing:-.01em;font-weight:600}
  .client .meta{color:var(--faint);font-size:11.5px}
  .client>header .pill{margin-left:auto}
  .client .master{padding:12px 16px 14px;border-bottom:1px solid var(--line-soft)}
  .client .master:last-of-type{border-bottom:none}
  .srcrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
  .srcrow .ico{color:var(--warn);display:inline-flex}
  .srcrow a{color:var(--text);font-weight:500;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .srcrow .acts{margin-left:auto;display:flex;gap:6px}
  .srcnote{color:var(--faint);font-size:11.5px;margin:4px 0 0 24px}
  .subs{list-style:none;margin:8px 0 0 7px;padding:0 0 0 10px;border-left:1px solid var(--line)}
  .subs li{display:flex;align-items:center;gap:8px;padding:6px 0 6px 10px;font-size:13px;position:relative}
  .subs li:before{content:"";position:absolute;left:-1px;top:50%;width:10px;border-top:1px solid var(--line)}
  .subs .ico{color:var(--accent-hi);display:inline-flex}
  .subs a{color:var(--text)} .subs a.unknown{color:var(--dim)}
  .subs .cnt{margin-left:auto;color:var(--faint);font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
  .subs .cnt b{font-weight:600;color:var(--dim)} .subs .cnt b.hot{color:var(--accent-hi)}
  .client h3{font-size:15.5px}
  .subs .none{color:var(--faint);font-style:italic}
  .client .foot{display:flex;align-items:center;gap:8px;padding:10px 16px;font-size:12px;color:var(--faint);
    background:var(--panel-2);border-top:1px solid var(--line-soft);border-radius:0 0 var(--r) var(--r);margin-top:auto;flex-wrap:wrap}
  .client .foot .pill{font-size:11px;padding:2px 8px}
  dialog.edit{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:var(--r);
    box-shadow:var(--shadow);padding:0;width:min(520px,calc(100vw - 32px))}
  dialog.edit::backdrop{background:rgba(0,0,0,.55)}
  dialog.edit .hd{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line-soft)}
  dialog.edit .hd h2{font-size:13.5px;margin:0;font-weight:600}
  dialog.edit .bd{padding:18px} dialog.edit .field{margin-bottom:13px}
  .toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap}
  .toolbar .sub{color:var(--faint);font-size:12.5px}
  .toolbar .right{margin-left:auto;display:flex;gap:8px}

  @media(max-width:860px){
    :root{--nav:100%}
    .shell{flex-direction:column}
    /* a bottom tab bar: within thumb reach, every label visible, only the everyday pages */
    nav.side{position:fixed;left:0;right:0;bottom:0;top:auto;width:100%;height:auto;z-index:40;flex-direction:row;
      border-right:none;border-top:1px solid var(--line);padding:0 0 env(safe-area-inset-bottom);box-shadow:0 -8px 24px rgba(0,0,0,.35)}
    .brand,.navfoot{display:none}
    .navlist{display:flex;gap:0;padding:4px 2px;flex:1;overflow:visible}
    .navlist button{display:none;flex:1;flex-direction:column;align-items:center;gap:3px;padding:8px 2px;margin:0;border-radius:8px;font-size:10.5px;min-height:52px}
    .navlist button.phone{display:flex}
    .navlist button .ic{width:auto;font-size:18px} .navlist button .lbl{display:inline;white-space:nowrap}
    .navlist button .badge{position:absolute;margin:0;transform:translate(14px,-4px);font-size:10px;padding:0 5px;min-width:16px}
    .navlist button{position:relative}
    main{padding:16px 14px calc(90px + env(safe-area-inset-bottom))}
    .head h1{font-size:20px}
    .stats{grid-template-columns:1fr 1fr;gap:10px}
    .toolbar .right{margin-left:0;width:100%} .toolbar .right button{flex:1}
    .kv{grid-template-columns:1fr} .kv>div:nth-child(odd){padding-bottom:0;border:none;color:var(--faint);font-size:11.5px}
    .clients{grid-template-columns:1fr}
  }

/* account picker on the Logins card: one row per client, its accounts as tickable chips */
.pick{border:1px solid var(--line);border-radius:8px;background:var(--bg);max-height:340px;overflow:auto}
.pick .all{display:flex;align-items:center;gap:9px;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;font-weight:500;position:sticky;top:0;background:var(--bg)}
.pick .cl{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-soft)}
.pick .cl:last-child{border-bottom:none}
.pick .cl>label{display:flex;align-items:center;gap:8px;min-width:120px;font-weight:500;font-size:13px;cursor:pointer;padding-top:3px}
.pick .accts{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.pick .chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;padding:4px 9px;border:1px solid var(--line);
  border-radius:999px;background:var(--panel);cursor:pointer;user-select:none;color:var(--dim)}
.pick .chip input{width:13px;height:13px;margin:0;accent-color:var(--accent)}
.pick .chip.on{border-color:rgba(59,130,246,.45);background:var(--accent-dim);color:var(--accent-hi)}
.pick input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);margin:0;padding:0;flex:none}
.pick .empty{padding:18px}

/* settings: every card folds. Click its header; the state is remembered per card. */
#s-settings .card>.hd{cursor:pointer;user-select:none}
#s-settings .card>.hd:after{content:"";width:8px;height:8px;border-right:2px solid var(--faint);border-bottom:2px solid var(--faint);
  transform:rotate(45deg);margin-left:auto;flex:none;transition:transform .15s}
#s-settings .card.folded>.hd:after{transform:rotate(-45deg)}
#s-settings .card.folded>.hd{border-bottom:none}
#s-settings .card.folded>.bd{display:none}
