/* Shared stylesheet for the signed-in pages (account, catalog).
   Extracted from account.html so the catalog page cannot drift from it.
   Inline style="" attributes are still used throughout, so style-src
   keeps 'unsafe-inline' alongside 'self'. */
/* The left rail must ADD width, not steal it: at 640px the rail left the
   cards ~356px, narrower than before there was a rail at all. Only the
   vendor shell widens — the sign-in card, the loading note and the organizer
   view keep the original 640px measure. */
.wrap.wide{max-width:900px}
.wrap.wide>#v-login,.wrap.wide>#v-loading,.wrap.wide>#v-organizer{max-width:640px;margin-left:auto;margin-right:auto}
@media(max-width:900px){.wrap.wide{max-width:640px}}

/* ── Account shell ───────────────────────────────────────────────────────
   One section on screen at a time, chosen by a left rail. The ledger is the
   only thing that loads on arrival; everything else fetches the first time
   it is opened (see showSection). Below 900px the rail becomes a drawer. */
.acctwrap{display:grid;grid-template-columns:210px minmax(0,1fr);gap:34px;align-items:start}
.acctnav{position:sticky;top:22px}
.acctnav nav{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px;padding:0;text-align:left}
.navgrp{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:16px 0 6px;padding:0 10px}
.navgrp:first-child{margin-top:0}
.acctnav a{display:block;padding:7px 10px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:.94rem;line-height:1.35}
.acctnav a:hover{background:var(--line);color:var(--ink)}
.acctnav a.on{background:var(--state-fill);color:var(--state-ink)}
.acctmain>[data-sec]{display:none}
.acctmain>[data-sec].on{display:block}
/* ...but display:block silently un-flexes any section that IS a flex row.
   The day nav is the only one: .acctmain>[data-sec].on (0,3,0) beat
   .daynav (0,1,0), so the row was a block, margin-left:auto on "New charge"
   had no flex line to push against, and the button sat tight against Today
   instead of at the right edge. Restore the layout per-section rather than
   weakening the show/hide rule every section depends on. */
.acctmain>.daynav[data-sec].on{display:flex}
.navtoggle{display:none;align-items:center;gap:10px;background:none;border:1px solid var(--line);border-radius:999px;padding:9px 16px;color:var(--ink);font:inherit;font-size:.95rem;cursor:pointer;margin-bottom:16px}
.navscrim{display:none}
@media(max-width:900px){
  .acctwrap{display:block}
  .navtoggle{display:inline-flex}
  .acctnav{position:fixed;z-index:40;top:0;left:0;bottom:0;width:250px;padding:22px 14px;background:var(--surface);border-right:1px solid var(--line);overflow-y:auto;transform:translateX(-100%);transition:transform .18s ease}
  .acctnav.open{transform:none}
  .navscrim{display:block;position:fixed;z-index:39;inset:0;background:rgba(0,0,0,.5)}
  .navscrim[hidden]{display:none}
}

/* ── App theme ───────────────────────────────────────────────────────────
   Mirrors the iOS app (SugarSnapp/Core/Theme.swift): vermillion enamel,
   warm ink, monospaced numerals. The MARKETING pages (index, vendors,
   shoppers, organizers, pricing, support, terms, privacy) deliberately keep
   the older green/serif identity — do not "re-sync" the two blocks.
   ──────────────────────────────────────────────────────────────────────── */
:root{
  color-scheme:light;
  --accent:#d95421;            /* Color.vermillion */
  --ink:#2b211c;               /* Color.keyInk    */
  --muted:#6f6259; --canvas:#f2f2f7; --surface:#ffffff;
  --line:rgba(43,33,28,.12); --bad:#8a3b2e; --field:#f2f2f7;
  /* Two jobs, two colours. Vermillion means "you can act on this" — buttons,
     focus rings, carets, steppers. Green means "this is how things are" —
     the selected nav row, eyebrows, a saved confirmation, the current plan.
     When both did the same job, an eyebrow looked as pressable as a button
     and "Connected" read as a warning.
     --state matches the iOS cash rail (Color.cashBrand #1f7a3c), so green
     carries the same meaning on both platforms. --ok is the same colour under
     the older name the status dots use. */
  --state:#1f7a3c; --ok:#1f7a3c; --warn:#a86f16;
  /* Filled green pills keep the dark green in BOTH themes: white on #1f7a3c
     is 5.37:1, and a light-green fill could not carry white text at all. */
  --state-fill:#1f7a3c; --state-ink:#ffffff;
  --key-cream:#f4ead5;         /* Color.keyCream  */
  /* Fixed in EVERY theme. Theme.swift: the total window is "the one
     deliberately fixed-contrast surface besides the QR itself" — and a QR
     rendered on a dark surface simply stops scanning. */
  --total-window:#0e0d0b; --total-ink:#ffffff; --qr-surface:#ffffff;
  --font-ui:-apple-system,BlinkMacSystemFont,system-ui,'Segoe UI',Roboto,sans-serif;
  --font-mono:ui-monospace,'SF Mono',SFMono-Regular,Menlo,monospace;
}
:root[data-theme="dark"]{
  --ink:#f2efe9; --muted:#9b9089; --canvas:#000000; --surface:#1c1c1e;
  --line:rgba(255,255,255,.14); --bad:#ff6b57; --field:#2c2c2e; color-scheme:dark;
  --state:#43c463; --ok:#43c463; --warn:#d9a441;
  --state-fill:#1f7a3c; --state-ink:#ffffff;
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ink:#f2efe9; --muted:#9b9089; --canvas:#000000; --surface:#1c1c1e;
    --line:rgba(255,255,255,.14); --bad:#ff6b57; --field:#2c2c2e; color-scheme:dark;
  --state:#43c463; --ok:#43c463; --warn:#d9a441;
  --state-fill:#1f7a3c; --state-ink:#ffffff;
  }
}
*{margin:0;padding:0;box-sizing:border-box}
/* Every text-like control gets ink-on-field by default, so a rule that sets a
   background without a colour (which is how the date fields went black on
   black) can no longer produce an illegible field. Buttons are left alone:
   they carry their own palette. Placeholder opacity is forced to 1 because
   WebKit otherwise fades it on top of --muted and it vanishes in dark mode. */
input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea{
  color:var(--ink);background:var(--field);font:inherit;caret-color:var(--accent)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
input[type=checkbox],input[type=radio]{accent-color:var(--accent)}
/* The picker glyph Chrome draws inside date inputs is a black bitmap; with
   color-scheme:dark the browser inverts it, but only when the input's own
   colour is set — which the baseline above now guarantees. */
input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer}
body{font-family:var(--font-ui);background:var(--canvas);color:var(--ink);line-height:1.6}
/* Links are wayfinding, not calls to action: getsugarsnapp.com in the footer
   competed with the Charge button for the same attention. Grey with an
   underline keeps the affordance and drops the shout. Anything that ACTS
   rather than navigates (.cta, .sale .lnk) opts back into vermillion. */
a{color:var(--muted);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:from-font}
a:hover{color:var(--ink)}
/* A link whose whole content is an image or a badge has nothing to underline
   but the picture itself. */
a:has(> img:only-child),.brand,.cta-badge{text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
.wrap{max-width:640px;margin:0 auto;padding:0 20px 60px}
nav{display:flex;justify-content:space-between;align-items:center;padding:22px 0;gap:12px;position:relative}

.brand-logo{height:26px;width:auto;display:block}
:root[data-theme="dark"] .brand-logo{filter:invert(1)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .brand-logo{filter:invert(1)}}
.navside{display:flex;align-items:center;gap:14px}
.navside button{font-size:.92rem;color:var(--muted)}
.navside select{font:inherit;font-size:.92rem;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 10px;cursor:pointer}
.navside button:hover{color:var(--accent)}
/* The header is a logo and one avatar button, at every width.
   It used to lay the view toggle, theme select and Sign out inline across the
   desktop header and collapse them behind a "⋯" button below 640px — two
   layouts, one set of ids. The phone dropdown was already the better pattern,
   so it is now the only one: the controls live in the menu on a 1400px monitor
   exactly as they do on a phone, and the header stops competing with the page.
   Same DOM node, same ids, nothing duplicated. */
/* 44px: Apple's minimum comfortable tap target, and big enough for a face to
   be recognisable rather than a smudge. */
.morebtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:auto;padding:0;overflow:hidden;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.95rem;font-weight:600;line-height:1;cursor:pointer;flex:none;-webkit-tap-highlight-color:transparent}
.morebtn:active{background:var(--line)}
.morebtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.morebtn img{width:100%;height:100%;object-fit:cover;display:block}
/* A class selector beats the UA sheet's [hidden]{display:none}, so without
   this the not-yet-loaded avatar still takes its 44px and shoves the
   initials out of the circle. */
.morebtn img[hidden]{display:none}
/* The initials stand in until (or instead of) a photo. Hidden rather than
   removed so a broken avatar URL falls back without a reflow. */
.morebtn .initials{letter-spacing:.02em}
.navside{display:none}
.navside.open{display:flex;flex-direction:column;align-items:stretch;gap:12px;position:absolute;right:0;top:calc(100% - 10px);min-width:240px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:45}
.navside.open .toggle{align-self:stretch;justify-content:stretch}
.navside.open .toggle button{flex:1}
.navside.open select{width:100%}
.navside.open button#signOut{text-align:left;padding:6px 4px}
/* Who you are signed in as. The menu is the only place it appears now that the
   header is just a logo and a face, so it is not decoration. */
.navwho{display:flex;flex-direction:column;gap:2px;padding:2px 4px 10px;border-bottom:1px solid var(--line)}
.navwho b{font-size:.92rem;color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.navwho span{font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kicker{text-transform:uppercase;letter-spacing:.22em;font-size:.72rem;color:var(--state)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px 24px;margin-bottom:14px}
.note-card{text-align:center;margin:34px 0}
.note-card h2{font-size:1.35rem;margin:8px 0 10px}
.note-card h2 em{font-style:italic;color:var(--accent)}
.note-card p{color:var(--muted);font-size:.95rem;max-width:32em;margin:0 auto}
.hidden{display:none!important}
.cta{display:inline-block;padding:13px 30px;border-radius:999px;background:var(--accent);color:#fff;font-size:1rem;text-decoration:none;border:none;cursor:pointer}
.cta:disabled{background:var(--surface);color:var(--muted);border:1px solid var(--line);cursor:default}
.ghost{display:inline-block;padding:10px 20px;border-radius:999px;background:var(--surface);color:var(--ink);border:1px solid var(--line);font-size:.95rem;cursor:pointer}
.linkrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:4px}
.linkrow code{font-family:var(--font-mono);font-size:.88rem;background:var(--field);border:1px solid var(--line);border-radius:9px;padding:8px 11px;word-break:break-all;flex:1;min-width:0}
.pill{display:inline-block;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 13px;font-size:.85rem;color:var(--muted)}

/* view toggle */
.toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:var(--surface);overflow:hidden}
.toggle button{padding:7px 16px;font-size:.9rem;color:var(--muted)}
.toggle button.on{background:var(--state-fill);color:var(--state-ink)}

/* login */
.login label{display:block;font-size:.85rem;color:var(--muted);margin:14px 0 4px}
.login input{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;font:inherit;background:var(--field);color:var(--ink)}
.login input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.login .err{color:var(--bad);font-size:.9rem;margin-top:12px;display:none}
.login .cta{width:100%;margin-top:20px;text-align:center}
.obtn{display:flex;align-items:center;justify-content:center;gap:9px;border-radius:999px;min-height:46px;font-size:1rem;width:100%}
.obtn.apple{background:#000;color:#fff}
:root[data-theme="dark"] .obtn.apple{background:#fff;color:#000}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .obtn.apple{background:#fff;color:#000}}
.obtn.google{background:#fff;color:#1f1f20;border:1px solid #747775}

/* header */
.stand{display:flex;align-items:center;gap:14px;margin:4px 0 18px}
.stand img{width:52px;height:52px;border-radius:12px;border:1px solid var(--line);object-fit:cover;background:#fff}
.stand h1{font-size:1.35rem;line-height:1.2;font-weight:700}
.stand .sub{color:var(--muted);font-size:.88rem;margin-top:1px}

/* day nav */
.daynav{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.daynav button.step{width:44px;height:44px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:1.1rem;color:var(--accent);line-height:1}
/* Disabled must read as "you're on today", not vanish into the border (U-W A7). */
.daynav button.step:disabled{color:var(--accent);opacity:.35}
.daynav input[type=date]{padding:8px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:var(--field);color:var(--ink)}
.daynav .cta{margin-left:auto;padding:9px 22px;font-size:.95rem}

/* totals */
.bigtot{font-family:var(--font-mono);font-weight:700;font-size:2rem;font-variant-numeric:tabular-nums}
.bigtot .lbl{display:block;font-size:.72rem;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-weight:400}
.brk{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px;font-size:.92rem}
.brk .r{display:flex;justify-content:space-between;padding:2px 0;color:var(--muted)}
.brk .r b{color:var(--ink);font-variant-numeric:tabular-nums;font-family:var(--font-mono)}

/* sale rows */
.sale{border-top:1px solid var(--line);padding:12px 0}
.sale:first-child{border-top:none}
.sale .top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.sale .t{color:var(--muted);font-size:.85rem;white-space:nowrap}
.sale .p{flex:1}
.sale .amt{font-family:var(--font-mono);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.sale .st{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}
.sale.dead .amt,.sale.dead .p{text-decoration:line-through;color:var(--muted)}
.sale .st{white-space:nowrap;margin-right:10px}
.sale .st.refunded,.sale .st.canceled{color:var(--bad)}
.sale .st.pending,.sale .st.in_progress{color:var(--muted)}
/* Refund sits next to Email receipt on a tablet at a stall: both need a
   real 44px hit area, not a bare text line (U-W A2). */
.sale .acts{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-top:2px;font-size:.85rem}
.sale .lnk{background:none;border:none;padding:12px 2px;min-height:44px;color:var(--accent);cursor:pointer;font:inherit;font-size:.85rem;text-decoration:underline;text-underline-offset:2px}
.sale .lnk:disabled{color:var(--muted);cursor:default;text-decoration:none}
.sale .actmsg{color:var(--muted)}
.sale .actmsg.bad{color:var(--bad)}
/* The refund CONFIRM row: the destructive button gets its own line and
   distance from "Keep it" — a mis-tap here moves real money (U-W A2). */
.sale .inl{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:6px}
.sale .inl button.confirm{flex-basis:100%;max-width:240px;min-height:44px}
.sale .inl input[type=email]{padding:7px 10px;border:1px solid var(--line);border-radius:9px;font:inherit;font-size:.9rem;background:var(--field);color:var(--ink);min-width:200px}
.sale .inl .confirm{color:var(--bad)}
.danger{border-color:#e0b9b9}
.danger .cta{background:var(--bad)}
.lines{margin-top:4px;font-size:.85rem;color:var(--muted);font-family:var(--font-mono)}
.lines .ln{display:flex;justify-content:space-between;gap:8px}
.lines .ln span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.emptyday{color:var(--muted);font-style:italic;text-align:center;padding:8px 0}

/* export */
.exp{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.exp input[type=date]{padding:8px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:var(--field);color:var(--ink)}
.exp label.chk{display:inline-flex;align-items:center;gap:6px;font-size:.9rem;color:var(--muted)}
/* Setup surfaces: the stand, the money rail, and the catalog. These are new to
   the web because an Android vendor had no other way to author any of them —
   the register shipped before the things it rings up did. */
.fld{display:block;margin-top:12px}
.fld>span{display:block;font-size:.82rem;color:var(--muted);margin-bottom:5px}
.fld input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]),.fld select,.fld textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:var(--field);color:var(--ink)}
.fld input:not([type=date]):not([type=time]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]),.fld select,.fld textarea{-webkit-appearance:none;appearance:none}
.fld select{background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:36px}
.fld textarea{min-height:84px;resize:vertical;line-height:1.45}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}
.fld.row{display:flex;gap:10px;align-items:flex-end}
.saverow{display:flex;gap:10px;align-items:center;margin-top:16px;flex-wrap:wrap}
.saved{font-size:.85rem;color:var(--state);opacity:0;transition:opacity .2s}
.saved.on{opacity:1}
.itm{display:flex;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.itm:first-child{border-top:none}
.itm .nm{flex:1;min-width:0}
.itm .nm input{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font:inherit;background:var(--field);color:var(--ink)}
.itm .pr input{width:96px;box-sizing:border-box;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font:inherit;background:var(--field);color:var(--ink);text-align:right}
.itm .un input{width:88px;box-sizing:border-box;padding:8px 10px;border:1px solid var(--line);border-radius:9px;font:inherit;background:var(--field);color:var(--ink)}
.itm .rm{border:none;background:none;color:var(--muted);font-size:1.2rem;cursor:pointer;padding:12px 14px;line-height:1;min-width:44px;min-height:44px}
.itm .rm:hover{color:var(--bad)}
.itm.off .nm input,.itm.off .pr input,.itm.off .un input{opacity:.5}
.logorow{display:flex;align-items:center;gap:14px;margin-top:4px;flex-wrap:wrap}
.logorow img{width:66px;height:66px;border-radius:12px;object-fit:cover;border:1px solid var(--line);background:var(--canvas)}
.logonone{width:66px;height:66px;border-radius:12px;border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;font-size:.72rem;color:var(--muted);text-align:center}
.conn{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.dot.ok{background:var(--ok)}
.dot.warn{background:var(--warn)}
.dot.no{background:var(--line)}
.expmsg{font-size:.88rem;color:var(--muted);margin-top:8px}

/* pricing cards */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}
@media(max-width:640px){.plans{grid-template-columns:1fr}}
.plan{border:1px solid var(--line);border-radius:14px;padding:16px 16px 18px;background:var(--canvas);display:flex;flex-direction:column}
/* The one you're on is the loudest thing in the row — the whole point of the
   card layout is answering "which am I on?" before "what else is there?". */
.plan.current{border-color:var(--state);border-width:2px;background:var(--surface);padding:15px 15px 17px}
.plan .pname{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.plan.current .pname{color:var(--state)}
.plan .pprice{font-family:var(--font-mono);font-weight:700;font-size:1.7rem;font-variant-numeric:tabular-nums;line-height:1.15;margin-top:6px}
.plan .pper{font-size:.82rem;color:var(--muted);margin-bottom:10px}
.plan ul{list-style:none;margin:0 0 14px;font-size:.88rem}
.plan ul li{padding:3px 0 3px 16px;position:relative;color:var(--muted)}
.plan ul li::before{content:"\2713";position:absolute;left:0;color:var(--state)}
.plan .pbtn{margin-top:auto}
.plan .pbtn button{width:100%;text-align:center}
.plan .badge{display:inline-block;background:var(--state-fill);color:var(--state-ink);border-radius:999px;padding:2px 10px;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;margin-top:8px}
.plan .oncard{font-size:.82rem;color:var(--muted);text-align:center;padding:10px 0 2px}
.plan .save{font-size:.78rem;color:var(--state);margin-top:-6px;margin-bottom:8px}

/* organizer */
.ro-banner{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 16px;font-size:.9rem;color:var(--muted);margin-bottom:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:520px){.grid2{grid-template-columns:1fr}}
.stat .v{font-family:var(--font-mono);font-weight:700;font-size:1.4rem;font-variant-numeric:tabular-nums}
.stat .k{font-size:.75rem;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}
.stat .sub2{font-size:.85rem;color:var(--muted);margin-top:2px}
.delta-ok{color:var(--state)}
.delta-off{color:var(--bad)}
table.tal{width:100%;border-collapse:collapse;font-size:.92rem;margin-top:6px}
table.tal th{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:400;padding:4px 6px 6px 0}
table.tal td{border-top:1px solid var(--line);padding:7px 6px 7px 0}
table.tal td.n,table.tal th.n{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}
.flagged{color:var(--bad);font-size:.8rem}
.audit .ae{border-top:1px solid var(--line);padding:9px 0;font-size:.9rem}
.audit .ae:first-child{border-top:none}
.audit .ae .m{color:var(--muted);font-size:.8rem}
.audit .ae .rsn{color:var(--muted);font-style:italic}
footer{border-top:1px solid var(--line);margin-top:30px;padding-top:18px;text-align:center;color:var(--muted);font-size:.85rem}
