/* Calendar Admin (mockup) — reuses app.css tokens. Horizontal tab nav (no left rail),
   gradients for state, one locked action grammar on every card. */

.admin{background:var(--bg)}
.admin,.admin-shell{overflow-x:clip}
.state-admin .demobar{background:#efe9f6;color:var(--ink);border-bottom:1px solid var(--purple-line)}
.state-admin .demobar b{color:var(--purple-dark)}

/* ---------- Sign in ---------- */
.signin{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;
  padding:max(24px,env(safe-area-inset-top)) 24px 24px;
  background:radial-gradient(1200px 600px at 50% -10%,var(--purple-wash),var(--bg) 60%)}
.signin[hidden]{display:none}
.signin-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-lg);
  width:100%;max-width:392px;margin:auto 0;padding:34px 30px;text-align:center}
.signin-logo{height:34px;width:auto;margin:0 auto 20px}
.signin-card h1{font-family:var(--serif);font-weight:800;font-size:26px;margin:0 0 8px;color:var(--ink)}
.signin-lede{font-size:14px;color:var(--muted);line-height:1.5;margin:0 0 22px}
.signin-card form{display:flex;flex-direction:column;gap:14px;text-align:left}
.signin-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--ink)}
.signin-card input{height:46px;border:1px solid var(--field-line);border-radius:var(--r-sm);padding:0 14px;font-size:16px;font-family:var(--sans);background:#fff;color:var(--ink)}
.signin-card input:focus{outline:none;border-color:var(--purple-light);box-shadow:0 0 0 3px var(--purple-wash)}
.signin-card button{margin-top:4px;justify-content:center}
.signin-note{font-size:12px;color:var(--faint);margin:16px 0 0}

/* ---------- Shell ---------- */
/* ONE sticky wrapper for masthead + scope strip. iOS composites each sticky
   element on its OWN layer and updates them asynchronously during momentum
   scroll — two stacked stickies visibly wobble against each other (Mark's
   day-one jitter, confirmed 7/30: "these two containers bounce independently").
   A single sticky layer cannot disagree with itself. translateZ pre-promotes
   the layer so iOS never rasterizes mid-scroll. */
.admin-chrome{position:sticky;top:0;z-index:50;transform:translateZ(0)}
.admin-top{height:var(--header-h);
  padding:0 max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));
  /* box-shadow, NOT border-bottom: a border adds 1px of real height, putting the
     scope strip's top:var(--header-h) one pixel INSIDE this bar — iOS resolves
     that overlap differently at fractional scroll offsets and both bars vibrate.
     No backdrop-filter anywhere sticky: iOS re-rasterizes blur per scroll frame. */
  background:rgba(255,255,255,.98);box-shadow:0 1px 0 var(--line)}
.admin-top-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;height:100%;padding:0}
.admin-top .brand{display:flex;align-items:center;gap:10px;min-width:0;overflow:hidden}

.admin-top .brand-mark{display:none;height:32px;width:32px;border-radius:8px}
.admin-top .brand .sep{width:1px;height:24px;background:var(--purple-line)}
.admin-top .brand .statepill{background:var(--purple);color:#fff;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px}
.admin-top-act{display:flex;align-items:center;gap:8px;flex-shrink:0}
.signout-link{background:none;border:0;color:var(--muted);font:inherit;font-size:12.5px;font-weight:600;padding:8px 6px;border-radius:8px;cursor:pointer;white-space:nowrap}
.signout-link:hover{color:var(--ink);text-decoration:underline;text-underline-offset:2px}

@media(max-width:560px){
  .admin-top-inner{gap:8px}
  .admin-top .brand .sep,.admin-top .brand .statepill{display:none}
  .admin-top-act .btn-sm{padding:7px 10px;font-size:12.5px}
}
/* On phones the wide wordmark would crowd out the front-end link, so show the compact monogram and keep View calendar visible. */
@media(max-width:430px){.admin-top .brand-name{font-size:16px}}

.admin-body{padding-top:14px;padding-bottom:calc(92px + env(safe-area-inset-bottom))}

/* horizontal tab nav — no left rail */
.admin-nav{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  scroll-padding-inline:16px;border-bottom:1px solid var(--line);margin:0 0 22px;padding-bottom:0}
.admin-nav::-webkit-scrollbar{display:none}
.admin-nav button{position:relative;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;
  background:none;border:0;padding:11px 14px 13px;font-family:var(--sans);font-size:14.5px;font-weight:600;
  color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.admin-nav button:hover{color:var(--ink)}
.admin-nav button.active{color:var(--purple);border-bottom-color:var(--purple)}
.admin-nav .nv-ic{font-size:12px;opacity:.85}
.admin-nav .nv-badge{display:none;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--purple);color:#fff;font-size:11px;font-weight:800;align-items:center;justify-content:center;line-height:1}
.admin-nav .nv-badge.on{display:inline-flex}


.admin-main:focus{outline:none}
.view-head{margin:0 0 var(--space-5)}
.view-head h1{font-family:var(--serif);font-weight:800;font-size:clamp(22px,3.4vw,30px);margin:0 0 5px;line-height:1.14;color:var(--ink)}
.view-head h1:focus{outline:none}
.view-head p{margin:0;color:var(--muted);font-size:14.5px;max-width:640px;line-height:1.5}

/* ---------- Dashboard ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin:0 0 var(--space-6)}
.stat{position:relative;overflow:hidden;border-radius:var(--r-md);border:1px solid var(--line);background:#fff;padding:18px 18px 16px;box-shadow:var(--shadow)}
.stat.hot{background:linear-gradient(150deg,var(--purple-wash),#fff 70%);border-color:var(--purple-line)}
.stat .n{font-family:var(--serif);font-weight:800;font-size:34px;line-height:1;color:var(--ink)}
.stat.hot .n{color:var(--purple)}
.stat .k{font-size:13px;color:var(--muted);margin-top:6px;font-weight:600}
.stat .go{margin-top:12px;font-size:13px;font-weight:700;color:var(--purple);background:none;border:0;padding:0;cursor:pointer}
.stat .go:hover{text-decoration:underline}
.dash-nudges{display:flex;flex-direction:column;gap:var(--space-3)}
.nudge{display:flex;align-items:center;gap:12px;background:linear-gradient(150deg,var(--purple-wash),#fff 70%);border:1px solid var(--purple-line);border-radius:var(--r-sm);padding:13px 15px;font-size:14px;color:var(--ink)}
.nudge b{font-weight:700}
.nudge .n-act{margin-left:auto}

/* ---------- Shared cards / rows ---------- */
.card-list{display:flex;flex-direction:column;gap:var(--space-3)}
.ev-card{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:14px;box-shadow:var(--shadow);transition:border-color var(--t) ease,box-shadow var(--t) ease}
.ev-card:hover{border-color:var(--purple-line);box-shadow:var(--shadow-lg)}
.ev-card.pending{background:linear-gradient(150deg,var(--gold-soft),#fff 70%);border-color:var(--gold-line)}
.ev-thumb{width:84px;height:84px;flex-shrink:0;border-radius:var(--r-sm);object-fit:cover;background:linear-gradient(135deg,#ece8f2,#e2dcef)}
.ev-main{flex:1;min-width:0}
.ev-body{flex:1;min-width:0}
.ev-main h3{font-family:var(--serif);font-weight:700;font-size:17px;margin:0 0 4px;line-height:1.2;color:var(--ink);overflow-wrap:anywhere}
.ev-meta{font-size:13.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:3px 12px;margin-bottom:8px}
.ev-tags{display:flex;flex-wrap:wrap;gap:6px}
.tag{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--purple-wash);color:var(--purple);border:1px solid var(--purple-line)}
.tag.free{background:var(--live-wash);color:var(--live-text);border-color:var(--live-line)}
.tag.who{background:var(--bg);color:var(--muted);border-color:var(--line)}
.tag.promoted{background:var(--gold-soft);color:var(--gold-text);border-color:var(--gold-line)}
/* one locked action grammar on every card */
.ev-act{display:flex;flex-direction:column;gap:7px;flex-shrink:0;align-items:stretch;min-width:120px}
.a-btn{font-size:13px;font-weight:700;padding:8px 12px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap;text-align:center;transition:background var(--t) ease,border-color var(--t) ease,transform var(--t) ease}
.a-btn:hover{background:var(--bg)}
a.a-btn{text-decoration:none;display:inline-block}
.a-btn.approve{background:var(--purple);color:#fff;border-color:var(--purple)}
.a-btn.approve:hover{background:var(--purple-dark)}
.a-btn.danger:hover{background:#fbe9e7;border-color:#f0b8b4;color:#b3261e}
button.a-toggle{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--muted);cursor:pointer;user-select:none;
  padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;font-family:inherit;text-align:left;
  transition:background var(--t) ease,border-color var(--t) ease,transform var(--t) ease}
.a-toggle .sw{width:38px;height:22px;border-radius:999px;background:var(--line);box-shadow:inset 0 0 0 1px rgba(28,23,38,.25);position:relative;transition:background var(--t) ease;flex-shrink:0}
.a-toggle .sw::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform var(--t) ease}
.a-toggle.on{color:var(--gold-text);border-color:var(--gold-line);background:var(--gold-soft)}
.a-toggle.on .sw{background:var(--gold);box-shadow:none}
.a-toggle.on .sw::after{transform:translateX(16px)}
.a-btn:active,.a-toggle:active,.stat .go:active{transform:translateY(1px)}
button.a-toggle:focus-visible{outline:2px solid var(--purple-light);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.a-btn:active,.a-toggle:active,.stat .go:active{transform:none}}
/* phones: stack the card so thumb+title share the top row, actions become a full-width row */
@media(max-width:560px){
  .ev-card{flex-wrap:wrap}
  .ev-thumb{width:64px;height:64px}
  .ev-main{flex:1 1 auto}
  .ev-act{flex:1 0 100%;flex-direction:row;flex-wrap:wrap;min-width:0;margin-top:4px}
  .ev-act .a-btn{flex:1;min-width:0}
  .a-toggle{flex:1 1 100%;justify-content:space-between}
}

.empty-note{text-align:center;color:var(--muted);padding:var(--space-7) var(--space-5);background:#fff;border:1px dashed var(--line);border-radius:var(--r-md)}
.empty-note b{color:var(--ink);font-family:var(--serif);font-size:20px;display:block;margin-bottom:4px}
@media(max-width:400px){.empty-note{padding:var(--space-6) var(--space-4)}}

/* ---------- Add / edit form ---------- */
.form-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:22px;box-shadow:var(--shadow);max-width:680px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.fgrid .full{grid-column:1/-1}
@media(max-width:560px){.fgrid{grid-template-columns:1fr}}
.fld{display:flex;flex-direction:column;gap:6px}
.fld label{font-size:13px;font-weight:700;color:var(--ink)}
.fld input,.fld select,.fld textarea{border:1px solid var(--field-line);border-radius:var(--r-sm);padding:11px 13px;font-size:16px;font-family:var(--sans);background:#fff;color:var(--ink);width:100%}
.fld select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c6480' stroke-width='3'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 15px center;padding-right:40px}
.fld input[type=date],.fld input[type=time]{-webkit-appearance:none;appearance:none;min-height:46px;line-height:1.3}
.fld textarea{min-height:96px;resize:vertical}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--purple-light);box-shadow:0 0 0 3px var(--purple-wash)}
.fld input[aria-invalid="true"],.fld select[aria-invalid="true"],.fld textarea[aria-invalid="true"]{border-color:#b3261e;box-shadow:0 0 0 3px #fbe9e7}
.fld input[type=file]{border:1px dashed var(--field-line);background:var(--bg);padding:10px 12px;font-size:14px;color:var(--muted);cursor:pointer}
.fld input[type=file]::file-selector-button{font:inherit;font-weight:700;font-size:13px;color:var(--purple);background:var(--purple-wash);border:1px solid var(--purple-line);border-radius:8px;padding:8px 14px;margin-right:12px;cursor:pointer;transition:background var(--t) ease}
.fld input[type=file]::file-selector-button:hover{background:#ece1f7}
.field-error{color:#b3261e;font-size:13px;font-weight:600;margin-top:5px}
.form-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}

/* ---------- Money ---------- */
.money-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:720px){.money-grid{grid-template-columns:1fr}}
.money-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:18px;box-shadow:var(--shadow)}
.money-card.span{grid-column:1/-1}
.money-card>.a-btn{margin-top:auto}
.money-card h3{font-size:14px;font-weight:800;letter-spacing:.02em;color:var(--ink);margin:0 0 4px;display:flex;align-items:center;gap:8px}
.money-card .sub{font-size:13px;color:var(--muted);margin:0 0 14px;line-height:1.45}
.money-tag{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:var(--r-xs);background:var(--gold-soft);color:var(--gold-text);border:1px solid var(--gold-line)}
.slot{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);margin-bottom:9px}
.slot:last-child{margin-bottom:0}
.slot .s-ic{width:38px;height:38px;border-radius:var(--r-xs);background:var(--gold-soft);border:1px solid var(--gold-line);display:flex;align-items:center;justify-content:center;color:var(--gold-text);font-size:16px;flex-shrink:0}
.slot .s-txt{flex:1;min-width:0}
.slot .s-txt b{font-size:14px;color:var(--ink)}
.slot .s-txt span{display:block;font-size:12.5px;color:var(--muted)}
.slot .s-txt b,.slot .s-txt span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slot .s-price{font-weight:800;color:var(--gold-text);font-size:14px;white-space:nowrap}
.money-total{display:flex;align-items:baseline;justify-content:space-between;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.money-total .lab{font-size:13px;color:var(--muted);font-weight:600}
.money-total .amt{font-family:var(--serif);font-weight:800;font-size:24px;color:var(--ink)}
.money-note{font-size:13px;color:var(--purple-dark);background:var(--purple-wash);border:1px solid var(--purple-line);border-radius:var(--r-md);padding:13px 15px;margin:18px 0 0;line-height:1.5}

/* ---------- Toasts ---------- */
.toast-host{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:150;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.a-toast{background:var(--ink);color:#fff;font-size:14px;font-weight:600;line-height:1.4;padding:12px 16px;border-radius:12px;box-shadow:0 6px 22px rgba(28,23,38,.28);opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;width:max-content;max-width:min(460px,88vw);text-align:left}
.a-toast.show{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.a-toast{transition:opacity .2s ease;transform:none}}

@media(max-width:720px){.stat-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.stat-grid{grid-template-columns:1fr;gap:var(--space-3)}.stat{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;padding:14px 16px}.stat .k{margin-top:0}.stat .go{position:static;margin:0 0 0 auto}}

/* ---- stock-photo picker (event form) ---- */
.img-preview{position:relative;max-width:340px;border-radius:var(--r-sm);overflow:hidden;border:1px solid var(--line);margin-bottom:2px}
.img-preview img{display:block;width:100%;aspect-ratio:1200/627;object-fit:cover}
.img-remove{position:absolute;top:8px;right:8px;font:inherit;font-size:12px;font-weight:700;color:#fff;background:rgba(28,23,38,.72);border:0;border-radius:7px;padding:5px 10px;cursor:pointer}
.img-remove:hover{background:rgba(28,23,38,.9)}
.stock-open{align-self:flex-start;font:inherit;font-size:13px;font-weight:700;color:var(--purple);background:var(--purple-wash);border:1px solid var(--purple-line);border-radius:8px;padding:8px 14px;cursor:pointer;transition:background var(--t) ease}
.stock-open:hover{background:#ece1f7}
.stock-panel{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);padding:12px}
.stock-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.stock-chip{font:inherit;font-size:12px;font-weight:600;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 11px;cursor:pointer}
.stock-chip:hover{border-color:var(--purple-line);color:var(--purple)}
.stock-chip.on{color:#fff;background:var(--purple);border-color:var(--purple)}
.stock-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.stock-th{position:relative;padding:0;border:2px solid transparent;border-radius:9px;overflow:hidden;cursor:pointer;background:#eceaf1}
.stock-th img{display:block;width:100%;aspect-ratio:280/200;object-fit:cover}
.stock-th:hover{border-color:var(--purple-line)}
.stock-th.on{border-color:var(--purple)}
.stock-th.on::after{content:"\2713";position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:999px;background:var(--purple);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}
.stock-credit{margin-top:10px;font-size:11.5px;color:var(--faint)}
.stock-credit a{color:var(--purple);font-weight:600}
@media(max-width:560px){.stock-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---- stock picker live search ---- */
.stock-search-row{display:flex;gap:8px;margin-bottom:10px}
.stock-search-row input{flex:1;min-width:0;border:1px solid var(--field-line);border-radius:8px;padding:8px 12px;font:inherit;font-size:13px;background:#fff}

/* Imageless glyph thumbs + photo-workflow additions */
.ev-thumb.noimg{display:flex;align-items:center;justify-content:center;color:var(--purple);background:linear-gradient(135deg,var(--purple-wash),var(--purple-line))}
.ev-thumb.noimg svg{width:24px;height:24px}
@media(max-width:560px){.ev-thumb.noimg svg{width:20px;height:20px}}
.tag.who{background:var(--purple-wash);color:var(--purple-dark)}
.stock-sub{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--purple);margin:0 0 8px}
.stock-sub .pool{color:var(--faint);font-weight:700;letter-spacing:.03em;text-transform:none;font-size:12px}
.stock-grid.stock-suggest{margin-bottom:12px}
.series-apply{display:flex;align-items:flex-start;gap:10px;background:var(--purple-wash);border:1px solid var(--purple-line);border-radius:var(--r-sm);padding:11px 13px;font-size:13.5px;color:var(--purple-dark);line-height:1.45;cursor:pointer;margin-top:10px}
.series-apply input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--purple);flex-shrink:0}
.series-apply b{font-weight:800}
.series-apply span{min-width:0;overflow-wrap:anywhere}
.series-apply[hidden]{display:none}

/* Photos workbench: choices live on the card; one tap previews, Use commits.
   Stable-grid row: label | thumb strip (scrolls inside, never wraps) | tools. */
.wb-card{flex-direction:column;align-items:stretch}
.wb-head{display:flex;gap:14px;align-items:flex-start;min-width:0}
.wb-head .ev-main{min-width:0}
.wb-row{display:grid;grid-template-columns:132px minmax(0,1fr) auto;align-items:center;gap:10px 14px;border-top:1px solid var(--line);margin-top:12px;padding-top:12px}
.wb-lab{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--purple)}
.wb-strip{display:flex;align-items:center;gap:8px;min-width:0;min-height:54px}
.wb-strip.loading{background:linear-gradient(90deg,var(--purple-wash),transparent);border-radius:8px}
.wb-thumbs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:thin;min-width:0;padding:2px}
.wb-th{width:74px;height:50px;border-radius:8px;overflow:hidden;border:2px solid transparent;padding:0;cursor:pointer;background:var(--purple-wash);flex:none}
.wb-th img{width:100%;height:100%;object-fit:cover;display:block}
.wb-th:hover,.wb-th:focus-visible{border-color:var(--purple)}
.wb-page{display:flex;gap:6px;flex:none}
.wb-tools{display:flex;gap:8px;align-items:center;flex:none;justify-self:end}
.wb-q{height:36px;border:1px solid var(--field-line);border-radius:var(--r-sm);padding:0 12px;font-size:14px;font-family:var(--sans);width:150px}
.wb-q:focus{outline:none;border-color:var(--purple-light);box-shadow:0 0 0 3px var(--purple-wash)}
.wb-up{cursor:pointer}
.wb-found{grid-column:1/-1}
.wb-series{grid-column:1/-1}
@media(max-width:820px){.wb-row{grid-template-columns:minmax(0,1fr) auto}.wb-lab{grid-column:1/-1}.wb-tools{grid-column:1/-1;justify-self:stretch}.wb-q{flex:1;width:auto}}
/* phones: wb-head must wrap like ev-card does, or the ev-act basis-100% rule crushes the title to 1ch */
@media(max-width:560px){.wb-head{flex-wrap:wrap}}
.wb-series{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--purple-dark);width:100%;cursor:pointer;min-width:0}
.wb-series input{width:16px;height:16px;accent-color:var(--purple);flex-shrink:0}
.wb-done{background:linear-gradient(135deg,var(--live-wash),#fff 60%)}
.wb-ok{color:var(--live-deep);font-weight:700}
.wb-lab .pool{display:block;color:var(--faint);font-weight:700;letter-spacing:.02em;text-transform:none;font-size:11.5px;margin-top:2px}
.wb-arrow{padding:6px 12px;font-size:16px;line-height:1}
.wb-arrow[disabled]{opacity:.35;cursor:default}
#wb-pv{position:fixed;inset:0;z-index:200;display:none}
body.wb-pv-open #wb-pv{display:block}
.wb-pv-back{position:absolute;inset:0;background:rgba(28,23,38,.62)}
.wb-pv-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;overflow:hidden;width:min(860px,92vw);box-shadow:0 24px 80px rgba(0,0,0,.35)}
.wb-pv-stage{width:100%;aspect-ratio:16/9;max-height:62vh;background:linear-gradient(135deg,var(--purple-wash),var(--purple-line));position:relative}
.wb-pv-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .18s ease}
.wb-pv-stage img.in{opacity:1}
.wb-pv-bar{display:flex;flex-direction:column;gap:10px;padding:10px 16px 12px}
.wb-pv-credit{font-size:13px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:18px}
.wb-pv-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px}
.wb-pv-nav{display:flex;gap:6px;flex:none}
.wb-pv-acts{display:flex;gap:8px;align-items:center;justify-self:end;flex:none}
@media(max-width:560px){.wb-pv-card{width:96vw}.wb-pv-stage{max-height:48vh}}
.wb-pv-series{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--purple-dark);cursor:pointer;min-width:0}
.wb-pv-series input{width:16px;height:16px;accent-color:var(--purple);flex-shrink:0}
.wb-pv-series span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
@media(max-width:640px){.wb-pv-controls{grid-template-columns:auto minmax(0,1fr)}.wb-pv-acts{grid-column:1/-1;justify-self:stretch}.wb-pv-acts .approve{flex:1}}

/* ---- Money workbench (P1 Wave 2b) ---- */
.money-strip{display:flex;gap:12px;margin:0 0 18px}
.ms-cell{background:linear-gradient(135deg,var(--purple-wash),#fff);border:1px solid var(--purple-line);border-radius:14px;padding:14px 20px;display:flex;flex-direction:column;gap:2px;min-width:150px}
.ms-cell.pend{background:linear-gradient(135deg,#fdf6e7,#fff);border-color:#ecd9ae}
.ms-num{font-size:24px;font-weight:800;letter-spacing:-.02em}
.ms-lab{font-size:12px;color:var(--muted);font-weight:600}
.money-h{font-size:16px;margin:22px 0 10px;display:flex;align-items:center;gap:8px}
.hold-pill{background:var(--purple-wash);color:var(--purple);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}
.hold-pill.urgent{background:#fbe9e7;color:#b3261e}
.mdecide .wb-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.a-btn.danger{color:#b3261e;border-color:#e7c4c0}
.price-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--purple-line)}
.price-row label{font-weight:600;font-size:14px;display:flex;align-items:center;gap:12px;flex:1}
.price-in{display:flex;align-items:center;gap:4px;border:1.5px solid var(--purple-line);border-radius:10px;padding:6px 10px;font-weight:700}
.price-in input{width:70px;border:0;font-size:15px;font-weight:700;font-family:inherit}
.price-note{font-size:12px;color:var(--muted)}
.price-both{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;margin:12px 0}
@media(max-width:560px){.money-strip{flex-direction:column}.price-row{flex-direction:column;align-items:flex-start}}

/* ============ Phase 0 shell: Desk + bottom task bar (refactor plan §4) ============ */
/* Fix the dead brand selector (html uses .brand-name) */
.admin-top .brand-name{font-family:var(--serif);font-weight:800;font-size:18px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

/* nav buttons: shared bones for both modes */
.admin-nav button{flex-direction:row}
.admin-nav .nv-ic{display:inline-flex}
.admin-nav .nv-ic svg{width:18px;height:18px}
.admin-nav .nv-badge.gold{background:var(--gold);color:var(--gold-text)}
.admin-nav button.has-money{background:radial-gradient(120% 130% at 50% 100%,var(--gold-soft),transparent 70%)}

/* desktop ≥821px: top strip stays; Sources visible; +New becomes the trailing pill */
@media(min-width:821px){
  .admin-nav .nv-new{margin-left:auto;background:var(--purple);color:#fff;border-radius:999px;padding:9px 18px 11px;border-bottom:0;margin-bottom:6px}
  .admin-nav .nv-new:hover{background:var(--purple-dark);color:#fff}
  .admin-nav .nv-new .nv-ic svg{stroke:#fff}
}

/* phone ≤820px: fixed 5-slot bottom task bar under the thumb */
@media(max-width:820px){
  /* translateZ: same async-compositor wobble as the sticky chrome — a fixed
     element is ALSO its own layer on iOS; pre-promote it so it never lags. */
  .admin-nav{position:fixed;left:0;right:0;bottom:0;z-index:70;margin:0;border-bottom:0;border-top:1px solid var(--line);transform:translateZ(0);
    background:rgba(255,255,255,.98);
    display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;overflow:visible;
    padding:4px 6px calc(4px + env(safe-area-inset-bottom))}
  .admin-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    min-width:0;padding:7px 2px 6px;margin:0;border-bottom:0;font-size:11px;font-weight:700;position:relative}
  .admin-nav .nv-ic svg{width:22px;height:22px}
  .admin-nav .nv-lab{font-size:11px;line-height:1}
  .admin-nav button.active{color:var(--purple);border-bottom:0}
  .admin-nav button.active::before{content:"";position:absolute;top:-5px;left:22%;right:22%;height:3px;border-radius:0 0 3px 3px;background:var(--purple)}
  .admin-nav button[data-rank="secondary"]{display:none}
  .admin-nav .nv-badge{position:absolute;top:2px;left:calc(50% + 6px)}
  .admin-body{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  .toast-host{bottom:calc(78px + env(safe-area-inset-bottom))}
}
/* the old ≤560 tab-wrap rule is dead: the bar replaces it */

/* Desk */
.scope-tabs[hidden]{display:none}
.desk-sub{font-size:13px;color:var(--muted);margin:-4px 0 10px}
.desk-soft{font-size:12.5px;font-weight:600;color:var(--muted)}
.desk-more{display:flex;justify-content:center;margin-top:10px}
.pulse{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:26px;padding-top:16px;border-top:1px solid var(--line)}
.pulse-chip{font-size:12.5px;font-weight:700;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 13px;text-decoration:none}
a.pulse-chip{color:var(--purple)}
.pulse-feeds{font:inherit;font-size:12.5px;font-weight:700;color:var(--live-deep);background:var(--live-wash);border:1px solid var(--live-line);border-radius:999px;padding:7px 13px;cursor:pointer}
.pulse-feeds.bad{color:#b3261e;background:#fbe9e7;border-color:#f0b8b4}

/* scope switcher strip (R5): which paper am I running right now */
.scope-strip-wrap{background:rgba(250,249,252,.98);box-shadow:0 1px 0 var(--line)}
.scope-tabs{display:flex;gap:6px;padding:8px 0}
.scope-tabs[hidden]{display:none}
.scope-strip-wrap:has(.scope-tabs[hidden]){display:none}
.scope-chip{font:inherit;font-size:12.5px;font-weight:700;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 14px;cursor:pointer}
.scope-chip.on{background:var(--purple);border-color:var(--purple);color:#fff}

/* sync provenance on the edit form */
.sync-note{display:flex;flex-direction:column;gap:8px;background:linear-gradient(135deg,var(--purple-wash),#fff 70%);border:1px solid var(--purple-line);border-radius:var(--r-sm);padding:12px 15px;font-size:13.5px;color:var(--purple-dark);line-height:1.5;margin:0 0 16px;max-width:680px}
.sync-locked{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:600}
#draft-chip{max-width:680px}

/* Header budget (admin): the masthead never truncates — actions shorten first */
.vc-short{display:none}
@media(max-width:700px){
  .vc-long{display:none}
  .vc-short{display:inline}
  .admin-top .brand-name{font-size:16px}
}
/* Recent money rows: long event titles wrap instead of colliding with the amount */
.slot.recent-row{align-items:flex-start}
.slot.recent-row .s-txt{min-width:0}
.slot.recent-row .s-txt b{white-space:normal;overflow-wrap:anywhere;line-height:1.3;display:block}
.slot.recent-row .s-price{margin-left:auto;padding-left:10px}

/* Which paper am I posting to? (multi-paper operators) */
.dest-note{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:var(--purple-wash);border:1px solid var(--purple-line);border-radius:var(--r-sm);
  padding:10px 13px;margin:0 0 16px;font-size:13.5px;color:var(--purple-dark);max-width:680px}
.dest-both{display:inline-flex;align-items:center;gap:7px;font-weight:700;cursor:pointer}
.dest-both input{width:16px;height:16px;accent-color:var(--purple)}
/* moderator buttons wrap into a tidy 2×2 instead of squeezing four across */
.modbar-acts{grid-template-columns:repeat(auto-fit,minmax(92px,1fr))}


/* Color discipline (admin): the paper's accent marks what's ACTIONABLE and
   what's ACTIVE. Cards, tags and meta stay neutral so a red or purple admin
   still has a readable hierarchy. */
.tag{background:var(--neutral-soft);color:var(--neutral-ink);border-color:var(--neutral-line)}
.tag.who{background:var(--neutral-soft);color:var(--neutral-ink)}
.ev-meta{color:var(--muted)}
.ev-thumb.noimg{color:var(--muted);background:linear-gradient(135deg,var(--neutral-soft),var(--neutral-line))}
.money-h{color:var(--ink)}
.pulse-chip{color:var(--neutral-ink);border-color:var(--neutral-line)}
.sync-note{background:var(--neutral-soft);border-color:var(--neutral-line);color:var(--neutral-ink)}
.dest-note{background:var(--neutral-soft);border-color:var(--neutral-line);color:var(--neutral-ink)}
.wb-lab{color:var(--neutral-ink)}
.ms-cell{background:linear-gradient(135deg,var(--neutral-soft),#fff);border-color:var(--neutral-line)}
.hold-pill{background:var(--neutral-soft);color:var(--neutral-ink)}
.hold-pill.urgent{background:#fbe9e7;color:#b3261e}


/* Installed admin PWA: same status-bar overlap as the reader. */
@media (display-mode: standalone) {
  /* .admin-top is a FIXED-height box: adding padding-top squeezed its contents
     out of the box and the scope chips rode up into the masthead. Let the bar
     grow by the inset instead, and pin the row height on the inner flex. */
  .admin-top{height:auto;padding-top:env(safe-area-inset-top, 0px)}
  .admin-top-inner{height:var(--header-h)}
  .scope-strip-wrap{top:calc(var(--header-h) + env(safe-area-inset-top, 0px))}
}
.ptr{position:fixed;top:calc(env(safe-area-inset-top,0px) + 6px);left:50%;transform:translate(-50%,0);opacity:0;
  width:34px;height:34px;border-radius:50%;background:#fff;border:1px solid var(--line);
  box-shadow:0 4px 14px rgba(28,23,38,.14);display:flex;align-items:center;justify-content:center;
  z-index:180;pointer-events:none;transition:transform .18s ease,opacity .18s ease}
.ptr-spin{width:15px;height:15px;border-radius:50%;border:2px solid var(--neutral-line);border-top-color:var(--purple);transition:transform .2s ease}
.ptr.ready .ptr-spin{transform:rotate(180deg)}
.ptr.go .ptr-spin{animation:ptrspin .7s linear infinite}
@keyframes ptrspin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.ptr,.ptr-spin{transition:none}.ptr.go .ptr-spin{animation:none}}

/* ---------- Settings (comms C2): the machinery, made legible ---------------
   Reads as a document, not a control panel: a heading, plain-language rows,
   and a record of what actually happened. Inputs are full-bleed so a long
   email address never truncates on a phone. */
.set-wrap{display:flex;flex-direction:column;gap:var(--space-5);max-width:760px}
.set-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:20px;box-shadow:var(--shadow)}
.set-card h2{font-family:var(--serif);font-size:20px;margin:0 0 4px;display:flex;align-items:center;gap:9px}
.set-card h2 svg{width:19px;height:19px;color:var(--accent,var(--purple));flex:0 0 auto}
.set-intro{font-size:13px;color:var(--muted);margin:2px 0 16px;line-height:1.6}
.set-intro code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:var(--bg);
  border:1px solid var(--line);border-radius:5px;padding:1px 5px;color:var(--ink);white-space:nowrap}
.set-row{display:block;margin-top:16px}
.set-lab{display:block;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:5px}
.set-in{display:block;width:100%;font:inherit;font-size:14px;color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:9px;padding:10px 12px}
.set-in:focus{outline:2px solid var(--accent,var(--purple));outline-offset:1px;border-color:transparent}
textarea.set-in{line-height:1.6;resize:vertical;min-height:150px}
.set-hint{display:block;font-size:12.5px;color:var(--muted);margin-top:6px;line-height:1.55}

/* the two truth rows: what the system will actually do right now */
.set-truth{margin-top:20px;border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:9px}
.tr-row{display:grid;grid-template-columns:auto minmax(0,max-content) minmax(0,1fr);gap:9px;align-items:baseline;font-size:13px}
.tr-row b{font-weight:700;color:var(--ink)}
.tr-row span:last-child{color:var(--muted);min-width:0;overflow-wrap:anywhere}
.tr-dot{width:8px;height:8px;border-radius:50%;align-self:center}
.tr-dot.ok,.msg-dot.ok{background:var(--live-deep,#2e7d32)}
.tr-dot.hold,.msg-dot.hold{background:var(--gold,#c9a876)}
.msg-dot.bad{background:#b3261e}

/* templates */
.tpl{border:1px solid var(--line);border-radius:var(--r-md);padding:15px;margin-top:14px;background:var(--bg)}
.tpl header{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:2px}
.tpl header b{font-size:14px}
.tpl .tag.muted{background:transparent;color:var(--muted)}
.tpl .set-in{margin-top:10px;background:#fff}
.tpl-acts{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.a-btn.ghost{background:transparent;color:var(--muted)}
.a-btn.ghost:hover{background:#fff;color:var(--ink)}
.a-btn.primary{background:var(--accent,var(--purple));color:#fff;border-color:transparent;padding:11px 20px}
.a-btn.primary:hover{filter:brightness(.93)}
.a-btn[disabled]{opacity:.55;cursor:default}

/* the record */
.msg-log{display:flex;flex-direction:column;border-top:1px solid var(--line);margin-top:12px}
.msg-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:start;
  padding:11px 0;border-bottom:1px solid var(--line)}
.msg-dot{width:8px;height:8px;border-radius:50%;margin-top:6px}
.msg-main{min-width:0}
.msg-subj{font-size:13.5px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.msg-meta{font-size:12px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}
.msg-err{font-size:12px;color:#b3261e;margin-top:3px;overflow-wrap:anywhere}
/* a status is a short word on one line — 999px only where that stays true */
.msg-status{font-size:11.5px;font-weight:700;white-space:nowrap;border-radius:999px;padding:3px 9px;
  background:var(--bg);border:1px solid var(--line);color:var(--muted)}
.msg-status.ok{background:var(--live-wash);border-color:var(--live-line);color:var(--live-text)}
.msg-status.bad{background:#fbe9e7;border-color:#f0b8b4;color:#b3261e}

.set-save{position:sticky;bottom:0;display:flex;justify-content:flex-end;padding:12px 0;
  background:linear-gradient(to top,var(--bg) 62%,transparent)}
@media(max-width:820px){
  .set-card{padding:16px}
  .set-save{bottom:calc(84px + env(safe-area-inset-bottom));justify-content:stretch}
  .set-save .a-btn{width:100%}
  /* a status word under a cramped subject reads better on its own line */
  .msg-row{grid-template-columns:auto minmax(0,1fr)}
  .msg-status{grid-column:2;justify-self:start;margin-top:5px}
}

/* Won closes the loop (C3): the booking panel opens inside the request card,
   so the decision and the facts it needs never live on separate screens. */
.win-panel{margin-top:14px;padding:15px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.win-panel h4{font-family:var(--serif);font-size:16px;margin:0 0 4px}
.win-note{font-size:12.5px;color:var(--muted);line-height:1.55;margin:0 0 4px}
.win-panel .set-in{background:#fff}
.win-panel .set-row{margin-top:12px}
.set-lab .opt{font-weight:500;color:var(--muted)}
.win-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.win-check{display:flex;align-items:flex-start;gap:9px;margin-top:14px;font-size:13px;color:var(--ink);line-height:1.45}
.win-check input{margin-top:2px;flex:0 0 auto}
.win-panel .wb-acts{margin-top:15px}
.a-btn.primary-soft{border-color:var(--accent,var(--purple));color:var(--accent-ink,var(--purple))}
.a-btn.primary-soft:hover{background:var(--accent,var(--purple));color:#fff}
@media(max-width:560px){ .win-grid{grid-template-columns:1fr} }

/* ---------- Sources as machine room (comms C5) ---------- */
.mach-head{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 6px}
.mach-stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:13px 14px;box-shadow:var(--shadow)}
.mach-stat b{display:block;font-family:var(--serif);font-size:23px;line-height:1.15;color:var(--ink)}
.mach-stat span{display:block;font-size:12px;color:var(--muted);margin-top:3px;line-height:1.4}
.mach-stat.bad b{color:#b3261e}
.mach-note{font-size:12.5px;color:var(--muted);margin:0 0 18px}
.ev-card.mach{display:block}
.ev-card.mach.hurt{border-color:#f0b8b4;background:linear-gradient(150deg,#fdf3f2,#fff 62%)}
.mach-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:7px}
.mach-title .ev-title{margin:0}
.mach-word{font-size:12px;font-weight:700;color:var(--muted)}
.tr-dot.off{background:var(--line)}
/* six most recent runs, oldest → newest */
.run-strip{display:inline-flex;gap:3px;margin-left:auto;align-items:center}
.run-strip i{width:6px;height:15px;border-radius:2px;background:var(--live-deep,#2e7d32);display:block}
.run-strip i.bad{background:#b3261e}
.mach-err{margin-top:9px;font-size:12.5px;color:#b3261e;background:#fbe9e7;border:1px solid #f0b8b4;
  border-radius:8px;padding:8px 10px;overflow-wrap:anywhere}
.ev-card.mach .wb-acts{margin-top:12px}
.ev-card.mach .wb-acts a.a-btn{text-decoration:none;display:inline-flex;align-items:center}
@media(max-width:820px){
  .mach-head{grid-template-columns:repeat(2,minmax(0,1fr))}
  .run-strip{margin-left:0;flex-basis:100%}
}
.tr-dot.bad{background:#b3261e}

/* ---------- The trail + Activity (comms C4) --------------------------------
   The evidence lives on the card that carries the decision: collapsed, the
   trail is one line of fact; expanded, every message we wrote about that one
   thing — wearing the same status words as Settings' log. Activity is the
   flat paper trail behind them: day-grouped rows, each one a door. */
.trail-line{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12.5px;font-weight:700;
  color:var(--muted);background:none;border:0;padding:6px 0 2px;cursor:pointer}
.trail-line:hover{color:var(--ink)}
.trail{border-top:1px solid var(--line);margin-top:8px}
.trail-row{padding:10px 0;border-bottom:1px solid var(--line)}
.trail-row:last-of-type{border-bottom:0}
.trail-top{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.trail-when{font-size:12px;color:var(--muted);font-weight:600}
.trail-kind{font-size:13.5px;font-weight:700;color:var(--ink)}
.trail-foot{display:flex;gap:10px;align-items:center;margin-top:5px;flex-wrap:wrap}
.trail-read{padding:4px 9px;font-size:12px}
.trail-body{margin-top:9px;font-size:13px;color:var(--ink);line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 13px}
.trail-all{display:block;font:inherit;font-size:12.5px;font-weight:700;color:var(--neutral-ink);background:none;border:0;padding:10px 0 2px;cursor:pointer}
.trail-all:hover{color:var(--ink)}

/* Closed requests (D27): a fold, not a graveyard */
.closed-toggle{display:inline-flex;align-items:center;gap:7px;font:inherit;color:var(--ink);background:none;border:0;padding:0;cursor:pointer}
.closed-toggle:hover{color:var(--purple)}
.hold-pill.won{background:var(--live-wash);color:var(--live-text)}

/* Activity lane */
.act-day{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:20px 0 8px}
.act-list{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow);padding:0 14px}
.act-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:start;width:100%;
  padding:12px 0;border:0;border-bottom:1px solid var(--line);background:none;font:inherit;text-align:left;cursor:pointer}
.act-row:last-child{border-bottom:0}
.act-row:hover .msg-subj{color:var(--purple)}
.act-row .msg-dot{margin-top:6px}
.act-main{min-width:0}
.act-main .msg-subj,.act-main .msg-meta{display:block}
@media(max-width:820px){
  /* the long status words fold under the subject, so nothing crowds at 390px */
  .act-row{grid-template-columns:auto minmax(0,1fr)}
  .act-row .msg-status{grid-column:2;justify-self:start;margin-top:5px}
}
/* An Activity door scrolls its card into view under TWO sticky bars (masthead
   + scope strip) — without this margin the landing card's title is hidden
   under exactly the chrome that brought her here. */
.ev-card{scroll-margin-top:calc(var(--header-h, 64px) + 58px)}

/* ---------- More sheet + six-slot phone bar (nav redesign, Mark 7/30) ------ */
.nv-morebtn{display:none}
#more-sheet:empty{display:none}
.more-back{position:fixed;inset:0;z-index:80;background:rgba(28,23,38,.35)}
.more-panel{position:fixed;left:10px;right:10px;z-index:81;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-md);box-shadow:0 18px 50px rgba(28,23,38,.25);padding:8px 8px 10px;
  bottom:calc(84px + env(safe-area-inset-bottom));transform:translateZ(0)}
.more-h{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:10px 12px 4px}
.more-row{display:flex;align-items:center;gap:11px;width:100%;font:inherit;font-size:15px;font-weight:600;color:var(--ink);
  background:none;border:0;border-radius:9px;padding:12px;cursor:pointer;text-align:left}
.more-row:hover{background:var(--bg)}
.more-row svg{width:19px;height:19px;color:var(--accent,var(--purple));flex:0 0 auto}
.more-row[aria-current="true"]{background:var(--bg);font-weight:800}
.more-on{margin-left:auto;color:var(--accent,var(--purple));font-weight:800}
@media(max-width:820px){
  /* the switcher lives in More now — the sometimes-there strip retires from
     phones entirely (also: one less sticky layer to wobble) */
  .scope-strip-wrap{display:none}
  /* Sign out lives in More on phones — the masthead gets its width back
     (the paper's name was truncating against it) */
  .signout-link{display:none}
  .admin-nav{grid-template-columns:repeat(6,minmax(0,1fr))}
  .nv-morebtn{display:flex}
  .admin-nav .nv-morebtn.active{color:var(--purple)}
}
@media(min-width:821px){
  /* desktop keeps the full tab row + strip; More would be a second door to
     the same rooms */
  .nv-morebtn{display:none !important}
  #more-sheet{display:none}
}
/* photo-queue floor (A32) */
.linklike{font:inherit;font-size:inherit;font-weight:700;color:var(--accent,var(--purple));background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:2px}

.more-signout{border-top:1px solid var(--line);border-radius:0 0 9px 9px;margin-top:6px;color:var(--muted)}
