/* ============================================================================
   foodstamp.plug — accounts + dispatch (blog). Extends styles.css tokens.
   ========================================================================== */

/* ---- nav auth slot ---- */
.authslot{display:flex;align-items:center;gap:10px}
.auth-btn{font-family:var(--black);font-weight:900;text-transform:uppercase;letter-spacing:.04em;
  font-size:12px;padding:8px 14px;border:2px solid var(--ink);background:var(--paper);box-shadow:3px 3px 0 var(--ink);
  transition:transform .12s var(--ease),box-shadow .12s var(--ease)}
.auth-btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}
.auth-btn--warn{background:var(--hi)}
.authmenu{position:relative}
.auth-ava{width:38px;height:38px;border:2px solid var(--ink);background:var(--red);color:var(--paper);
  font-family:var(--black);font-weight:900;font-size:13px;cursor:none;box-shadow:2px 2px 0 var(--ink);
  display:flex;align-items:center;justify-content:center;transition:transform .12s var(--ease)}
.auth-ava:hover{transform:translate(-1px,-1px)}
.auth-pop{position:absolute;right:0;top:48px;min-width:200px;background:var(--paper);border:2.5px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);z-index:50;padding:6px}
.auth-pop[hidden]{display:none}
.auth-pop__hd{display:flex;justify-content:space-between;align-items:center;gap:8px;font-family:var(--black);
  font-weight:900;font-size:13px;padding:8px 10px;border-bottom:2px solid var(--ink)}
.auth-role{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--red)}
.auth-pop a,.auth-pop .auth-signout{display:block;width:100%;text-align:left;padding:10px;font-size:12px;
  font-weight:700;text-transform:uppercase;letter-spacing:.03em;background:none;border:0;border-bottom:1px solid var(--ink2);
  cursor:none;font-family:var(--mono);color:inherit}
.auth-pop a:last-child,.auth-pop .auth-signout:last-child{border-bottom:0}
.auth-pop a:hover,.auth-pop .auth-signout:hover{background:var(--ink);color:var(--paper)}
.auth-signout{color:var(--red)}
@media (max-width:420px){ .auth-btn{font-size:11px;padding:7px 10px} }

/* ---- login / provider buttons ---- */
.authwrap{max-width:580px}
.provider-list{display:flex;flex-direction:column;gap:14px;margin-top:30px;max-width:440px}
.provider{display:flex;align-items:center;gap:14px;padding:16px 20px;border:2.5px solid var(--ink);
  background:var(--paper);box-shadow:5px 5px 0 var(--ink);font-family:var(--black);font-weight:900;
  text-transform:uppercase;letter-spacing:.04em;font-size:15px;
  transition:transform .12s var(--ease),box-shadow .12s var(--ease);cursor:none}
.provider:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}
.provider[aria-disabled="true"]{opacity:.45;box-shadow:none;pointer-events:none}
.provider svg{width:24px;height:24px;flex:0 0 24px}
.provider .arw{margin-left:auto;color:var(--red);font-size:18px}
.provider .soon-tag{margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink2)}
.auth-err{border:2px solid var(--red);background:var(--red-soft);color:var(--red);padding:12px 16px;
  font-weight:700;margin-top:22px;font-size:13px}
.auth-note{font-size:12px;color:var(--ink2);margin-top:20px;max-width:440px;line-height:1.6}

/* ---- forms (account) ---- */
.form-field{margin-top:22px;max-width:540px}
.form-field > label{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);margin-bottom:8px}
.input,.textarea{width:100%;font-family:var(--mono);font-size:15px;padding:12px 14px;border:2.5px solid var(--ink);
  background:var(--paper);color:var(--ink);box-shadow:3px 3px 0 var(--ink)}
.textarea{min-height:130px;line-height:1.55;resize:vertical}
.input-prefix{display:flex;align-items:stretch;border:2.5px solid var(--ink);background:var(--paper);box-shadow:3px 3px 0 var(--ink)}
.input-prefix > span{display:flex;align-items:center;padding:0 14px;background:var(--ink);color:var(--paper);
  font-family:var(--black);font-weight:900}
.input-prefix input{border:0;flex:1;background:none;font-family:var(--mono);font-size:15px;padding:12px 14px;color:var(--ink)}
.input-prefix input:focus{outline:none}
.input:focus,.textarea:focus{outline:3px solid var(--red);outline-offset:2px}
.input-prefix:focus-within{outline:3px solid var(--red);outline-offset:2px}
.hint{font-size:12px;color:var(--ink2);margin-top:8px}
.save-row{display:flex;align-items:center;gap:18px;margin-top:28px;flex-wrap:wrap}
.msg{font-weight:700;font-size:13px}
.msg--ok{color:var(--green-deep)}
.msg--err{color:var(--red)}
.signedout{max-width:520px;margin-top:28px}

/* ---- profile: operator file ---- */
.op-head{display:flex;align-items:flex-start;gap:clamp(16px,3vw,32px);flex-wrap:wrap;margin-top:clamp(24px,4vh,44px)}
.op-avatar{width:clamp(72px,10vw,112px);height:clamp(72px,10vw,112px);border:3px solid var(--ink);background:var(--red);
  color:var(--paper);display:flex;align-items:center;justify-content:center;font-family:var(--disp);
  font-size:clamp(30px,4.4vw,54px);box-shadow:5px 5px 0 var(--ink);flex:0 0 auto}
.op-id{min-width:200px}
.op-stamp{margin-left:auto}
@media (max-width:600px){ .op-stamp{margin-left:0;margin-top:14px} }

/* ---- dispatch (blog) placeholder + list ---- */
.soon-note{margin-top:30px;font-size:15px;color:var(--ink);max-width:60ch;line-height:1.6}
.dispatch-list{border-top:2px solid var(--ink);margin-top:clamp(20px,3vh,40px)}
.bulletin{border-bottom:2px solid var(--ink);padding:clamp(22px,3.4vw,38px) 0;display:block}
.bulletin__meta{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2)}
.bulletin__ttl{font-family:var(--disp);text-transform:uppercase;font-size:clamp(28px,4vw,54px);line-height:.9;margin:8px 0}
.bulletin__ex{font-size:14px;color:var(--ink);max-width:70ch;line-height:1.6}

/* ---- dispatch: status/lock tags ---- */
.st-tag{font-family:var(--black);font-weight:900;font-size:10px;letter-spacing:.06em;padding:2px 7px;border:2px solid var(--ink);margin-left:6px;display:inline-block;vertical-align:middle}
.st-draft{background:var(--hi)}
.st-hidden{background:var(--ink);color:var(--paper)}
.st-lock{background:var(--paper);color:var(--red);border-color:var(--red)}
.lock-tag{color:var(--red);font-weight:700;margin-left:6px}
.bulletin .by{color:var(--ink)}
.filters .chip[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.filters a.chip{text-decoration:none}

/* ---- rendered post body ---- */
.post-wrap{max-width:820px}
.post-title{margin-top:6px}
.post-controls{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}
.post-body{font-size:clamp(15px,1.7vw,18px);line-height:1.75}
.post-body > *{margin:0 0 1.1em}
.post-body > *:last-child{margin-bottom:0}
.post-body h2{font-family:var(--disp);text-transform:uppercase;font-size:clamp(26px,3.6vw,40px);line-height:.95;margin:1.4em 0 .5em}
.post-body h3{font-family:var(--black);font-weight:900;font-size:clamp(19px,2.4vw,26px);margin:1.3em 0 .4em}
.post-body h4,.post-body h5,.post-body h6{font-family:var(--black);font-weight:900;font-size:16px;margin:1.2em 0 .4em}
.post-body a{border-bottom:2px solid var(--red);word-break:break-word}
.post-body a:hover{background:var(--hi)}
.post-body strong{font-weight:700}
.post-body em{font-style:italic}
.post-body code{font-family:var(--mono);background:var(--paper3);padding:2px 5px;border:1px solid var(--ink2);font-size:.9em}
.post-body pre{background:var(--ink);color:var(--paper);padding:16px 18px;overflow:auto;border:2px solid var(--ink);font-size:13px;line-height:1.5}
.post-body pre code{background:none;border:0;color:inherit;padding:0}
.post-body blockquote{border-left:4px solid var(--red);padding:4px 0 4px 18px;margin-left:0;color:var(--ink2);font-style:italic}
.post-body ul,.post-body ol{padding-left:1.4em}
.post-body li{margin:.3em 0}
.post-body hr{border:0;border-top:2px dashed var(--ink);opacity:.5;margin:1.6em 0}

/* ---- members-only gate ---- */
.gate .gate-box{border:2.5px solid var(--red);background:var(--red-soft);padding:24px;margin-top:20px;text-align:center}
.gate-box p{margin-bottom:16px;font-weight:700}

/* ---- checkbox row ---- */
.check{display:flex;align-items:flex-start;gap:10px;font-size:14px;cursor:none;text-transform:none;letter-spacing:0;color:var(--ink)}
.check input{width:20px;height:20px;flex:0 0 20px;margin-top:1px;accent-color:var(--red)}

/* ---- comments ---- */
.cmt-form{margin-top:6px;max-width:700px}
.cmt-list{list-style:none;border-top:2px solid var(--ink);margin-top:8px}
.cmt{border-bottom:1px solid var(--ink2);padding:16px 0}
.cmt__hd{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.cmt__who{font-family:var(--black);font-weight:900;font-size:13px;border-bottom:2px solid var(--red)}
.cmt__meta{font-size:11px;color:var(--ink2);letter-spacing:.06em;text-transform:uppercase}
.cmt-del{margin-left:auto;background:none;border:0;color:var(--red);font-size:20px;line-height:1;cursor:none;padding:0 6px;font-weight:700}
.cmt-del:hover{color:var(--ink)}
.cmt__body{font-size:14.5px;line-height:1.6;word-break:break-word}

/* ---- moderation dashboard ---- */
.modwrap{overflow-x:auto;margin-top:8px}
.modtable{width:100%;border-collapse:collapse;font-size:13px;min-width:560px}
.modtable th{text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);padding:8px 10px;border-bottom:2px solid var(--ink)}
.modtable td{padding:12px 10px;border-bottom:1px solid var(--ink2);vertical-align:top}
.modsub{font-size:11px;color:var(--ink2);margin-top:4px}
.modlink{font-family:var(--black);font-weight:900;border-bottom:2px solid var(--red)}
.modacts{white-space:nowrap}
.modacts{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start}
.modbtn{display:inline-block;font-family:var(--black);font-weight:900;text-transform:uppercase;font-size:11px;letter-spacing:.03em;padding:6px 10px;border:2px solid var(--ink);background:var(--paper);cursor:none;box-shadow:2px 2px 0 var(--ink)}
.modbtn:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.modbtn.danger{color:var(--red);border-color:var(--red)}
.modbtn.danger:hover{background:var(--red);color:var(--paper)}

/* ---- role tags (moderation: operators) ---- */
.urole{display:inline-block;font-family:var(--black);font-weight:900;font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border:2px solid var(--ink)}
.urole-owner{background:var(--red);color:var(--paper)}
.urole-admin{background:var(--hi)}
.urole-member{background:var(--paper)}
.urole-author{background:var(--paper2)}
.urole-banned{background:var(--ink);color:var(--paper)}
