/* —— Production landing shell (ported from design/workspace) —— */
body:has(.ws-app):not(.is-signed-out){margin:0;overflow:hidden;height:100dvh}
body:has(.ws-app):not(.is-signed-out) .ctop{display:none}
body:has(.ws-app):not(.is-signed-out) .ask{display:none!important}
body.is-signed-out .ws-app{display:none}
body.is-touring .ws-app{pointer-events:none}
/* Always grid so the canvas column can animate. Row 1 is the tab strip (chat column
   only), row 2 is the stage and the canvas, so the panel top aligns with the chat page
   rather than the tab strip. Closed column is minmax(0px,0fr) so it interpolates
   against the open minmax(340px,1.1fr). */
.ws-main{flex:1;min-width:0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0px,0fr);grid-template-rows:auto minmax(0,1fr);transition:grid-template-columns .3s cubic-bezier(.22,.61,.36,1)}
.ws-main.is-canvas-open{grid-template-columns:minmax(0,1fr) minmax(340px,1.1fr)}
.ws-tabs{grid-column:1 / -1;grid-row:1}
.ws-chat-col{grid-column:1;grid-row:2;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}
.ws-canvas{grid-column:2;grid-row:2;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;background:var(--card);border-left:1px solid var(--line)}
.ws-main:not(.is-canvas-open) .ws-canvas{border-left-color:transparent}.ws-canvas-hdr{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line);flex-shrink:0}
.ws-canvas-hdr h2{font-family:'Fraunces',serif;font-weight:500;font-size:16px;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-canvas-close{width:32px;height:32px;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--ink2);cursor:pointer;font-size:16px}
.ws-canvas-close:hover{color:var(--ink);border-color:var(--ink2)}
.ws-canvas-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;padding:16px}
.ws-canvas-scope{font-size:12px;color:var(--ink2);line-height:1.65;margin:0 0 12px}
.ws-canvas-sec{margin-bottom:20px}
.ws-canvas-sec h3{font-size:var(--t-micro);font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted);margin:0 0 8px}
.ws-canvas-honesty{font-size:var(--t-micro);color:var(--muted);margin:16px 0 8px;line-height:1.6}
.dreport-count{font-family:'JetBrains Mono',monospace;font-weight:600;font-size:20px;font-variant-numeric:tabular-nums;line-height:1.1;margin:4px 0}
.dreport-count-label{font-size:13px;font-weight:600;color:var(--ink2)}
.dreport-scope{font-size:12px;color:var(--ink2);margin:8px 0;line-height:1.5}
.dreport-disc{font-size:11px;color:var(--muted);margin:8px 0 0;line-height:1.55}
.dreport-disc li{margin-left:16px}
.dreport-open{margin-top:12px}
.btn{font:inherit;font-size:12px;font-weight:700;padding:8px 16px;border-radius:var(--r-card);cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--ink2)}
.btn:hover{background:var(--bg)}
.btn:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
.btn.primary{background:var(--ember);border-color:var(--ember);color:var(--card);box-shadow:none}
.btn.primary:hover{background:var(--emberL);border-color:var(--emberL);color:var(--card)}
.btn.primary:focus-visible{outline:2px solid var(--ember);outline-offset:2px}
.btn.primary.is-busy,.btn.primary[aria-busy="true"]{opacity:.85}
.btn.primary.ws-busy-primary[aria-busy="true"]::before{border-color:color-mix(in srgb,var(--card) 35%,transparent);border-top-color:var(--card)}
.btn.ghost{background:transparent;color:var(--muted)}
.btn.ghost:hover{background:var(--bg)}
.ws-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}
.ws-modal-help{font-size:12px;color:var(--ink2);line-height:1.65;margin:8px 0 12px}
.ws-modal-label{display:block;font-size:var(--t-micro);letter-spacing:0;text-transform:none;color:var(--muted);margin:10px 0 4px}
.ws-modal textarea,.ws-modal input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:14px;background:var(--bg);color:var(--ink);resize:vertical}
.ws-modal h2{font-family:'Fraunces',serif;font-weight:500;font-size:18px;margin:0}
/* Keep legacy .cmsg for fline buffer + cards; Cursor chrome for user/assistant */
.cmsg.ws-msg{display:block;gap:0;align-items:stretch}
.cmsg.ws-msg .av{display:none}
.cmsg.ws-msg-user .cbub,.cmsg.ws-msg-user .ws-user-bubble{max-width:100%;width:100%;background:color-mix(in srgb,var(--bg2) 82%,var(--card));color:var(--ink);border:1px solid var(--line);border-radius:16px;padding:12px var(--ws-text-inset,18px);font-size:15px;line-height:1.5;white-space:pre-wrap}
.cmsg.u.ws-msg-user{flex-direction:row}
/* Do not zero .ws-page padding — it must match ask placeholder inset (--ws-text-inset). */
.cmsg.ws-msg-assistant .cbub{max-width:100%;background:transparent;border:none;border-radius:0;padding:0;font-size:var(--t-md);line-height:1.65;color:var(--ink)}
.cmsg.ws-msg-assistant .ws-page{
  max-width:100%;
  background:transparent;
  border:none;
  border-radius:0;
  padding:0 var(--ws-text-inset, 18px);
  font-size:var(--t-md);
  line-height:1.65;
  color:var(--ink);
  box-sizing:border-box;
}
/* Church OS workspace — four-zone chat shell (design-spec tokens) */

body:has(.ws-app) {
  margin: 0;
  overflow: hidden;
  height: 100dvh;
}

.ws-app {
  min-height: 100dvh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  color: var(--ink);
}

/* ——— Header ——— */
.ws-hdr {
  display: flex;
  align-items: center;
  gap: var(--s-4);
  height: 48px;
  padding: 0 var(--s-5);
  border-bottom: 1px solid var(--line);
  background: var(--card);
  flex-shrink: 0;
  z-index: 30;
  box-sizing: border-box;
}

.ws-mark {
  display: none;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--ink);
  color: var(--bg);
  font-family: "Fraunces", serif;
  font-weight: 500;
  font-size: 13px;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  flex-shrink: 0;
}

.ws-hdr-brand {
  flex: none;
  min-width: 0;
}
/* PP4 FE-13a shell chrome parity (Final Home 2.2 top chrome): Home + the six rooms between the brand and the tools.
   The active room is weight 600 ink; role-locked rooms are not painted. Tokens only. */
.ws-areanav {
  flex: 0 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 2px;
  margin-left: var(--s-4);
  overflow-x: auto;
  scrollbar-width: none;
}
.ws-areanav::-webkit-scrollbar { display: none; }
.ws-areanav-item {
  display: inline-flex;
  align-items: center;
  height: 32px;
  padding: 0 10px;
  border-radius: 8px;
  font-size: var(--t-md);
  font-weight: 400;
  line-height: 1;
  color: var(--ink2);
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
}
.ws-areanav-item:hover { color: var(--ink); }
.ws-areanav-item.is-active {
  color: var(--ink);
  font-weight: 600;
  text-decoration: none;
}
/* Chrome Search: 32 × --r-card, centered between nav and the right cluster. Esc clears; no clear button (lock 8: no popover). */
.ws-hdr-search {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  height: 32px;
  padding: 0 var(--s-3);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  background: var(--card);
  flex: 1;
  max-width: 400px;
  margin: 0 auto;
  min-width: 0;
  box-sizing: border-box;
}
.ws-hdr-search-glyph { color: var(--muted); flex-shrink: 0; font-size: var(--t-md); line-height: 1; }
.ws-hdr-search input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  font: inherit;
  font-size: var(--t-md);
  font-weight: 400;
  color: var(--ink);
}
.ws-hdr-search input:focus { outline: none; }
.ws-hdr-search input::placeholder { color: var(--muted); font-size: var(--t-md); font-weight: 400; }
.ws-hdr-search input[type="search"]::-webkit-search-cancel-button,
.ws-hdr-search input[type="search"]::-webkit-search-decoration { display: none; appearance: none; }
.ws-hdr-search:focus-within {
  outline: 2px solid var(--ember);
  outline-offset: 2px;
}
.ws-hdr-search .ws-kbd {
  min-width: 20px;
  height: 20px;
  padding: 0 var(--s-1);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--card);
  flex-shrink: 0;
}
.ws-kbd {
  font-family: inherit;
  font-size: var(--t-xs);
  font-weight: 600;
  color: var(--muted);
  border: 1px solid var(--line);
  border-radius: var(--r-chip);
  padding: 0 var(--s-1);
  line-height: 20px;
  height: 20px;
  box-sizing: border-box;
}
.ws-hdr-name { font-size: var(--t-lg); font-weight: 600; line-height: 1.2; }
.ws-hdr-campus {
  position: relative;
  flex-shrink: 0;
}
.ws-hdr-campus-chip {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: var(--chip-y) var(--chip-x);
  border-radius: var(--r-chip);
  font: inherit;
  font-size: var(--t-micro);
  font-weight: 500;
  line-height: 1;
  white-space: nowrap;
  background: var(--card);
  color: var(--ink2);
  border: 1px solid var(--line);
  cursor: pointer;
}
.ws-hdr-campus-chip.is-open { background: var(--bg2); }
.ws-hdr-campus-chip[data-chip="k"] { background: var(--ink); color: var(--card); border-color: var(--ink); }
.ws-viewbar {
  display: none;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  height: 32px;
  padding: 0 var(--s-5);
  background: var(--bg2);
  color: var(--ink);
  font-size: var(--t-micro);
  box-sizing: border-box;
  flex-shrink: 0;
}
.ws-viewbar.is-on { display: flex; }
.ws-viewbar-lead { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ws-menu-home { color: var(--muted); font-weight: 500; }
.ws-menu-foot { margin: var(--s-2) var(--s-3) 0; color: var(--muted); font-size: var(--t-micro); }
.ws-campus-gate {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--ink) 35%, transparent);
}
.ws-campus-gate[hidden] { display: none; }
.ws-campus-gate-card {
  width: min(420px, calc(100vw - 32px));
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  padding: var(--s-5);
}
.ws-campus-gate-body { color: var(--ink2); font-size: var(--t-md); line-height: 1.5; margin: var(--s-3) 0 0; }
.ws-hdr-sub {
  display: block;
  font-family: "Fraunces", serif;
  font-style: italic;
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ws-hdr-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
/* Theme toggle + profile: same chip surface and hover */
.ws-hdr .tgl,
.ws-acct {
  width: 28px;
  height: 28px;
  border-radius: var(--r-chip);
  border: 0;
  background: var(--bg2);
  color: var(--ink2);
  transition: color 0.15s, background 0.15s;
}
.ws-hdr .tgl:hover,
.ws-acct:hover{
  color: var(--ink);
  border-color: var(--ink2);
  background: var(--bg2);
}
.ws-acct-wrap {
  position: relative;
}
.ws-acct {
  font-family: var(--f-ui);
  font-size: var(--t-micro);
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
}
.ws-memenu {
  position: absolute;
  top: 44px;
  right: 0;
  width: min(340px, calc(100vw - 24px));
  background: var(--d-raise);
  border: 1px solid var(--line);
  border-radius: var(--r-card);
  box-shadow: var(--shadow-popover);
  padding: 6px;
  display: none;
  z-index: 80;
}
.ws-memenu.on {
  display: block;
  animation: drop 0.22s both;
}.ws-mmhead {
  padding: 10px 12px 9px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
  margin-bottom: 4px;
}
.ws-mmhead span {
  display: block;
  font-size: 11px;
  color: var(--muted);
  font-weight: 400;
  margin-top: 2px;
  line-height: 1.45;
}
.ws-mmrow {
  display: block;
  width: 100%;
  text-align: left;
  padding: 9px 12px;
  border: none;
  border-radius: 8px;
  font: inherit;
  font-size: 12.5px;
  color: var(--ink2);
  cursor: pointer;
  background: transparent;
  transition: background 0.12s, color 0.12s;
}
.ws-mmrow:hover {
  background: var(--hover);
  color: var(--ink);
}
.ws-mmnote {
  padding: 8px 12px 7px;
  border-top: 1px solid var(--line);
  margin-top: 4px;
  font-size: 10.5px;
  color: var(--muted);
  line-height: 1.5;
}
/* PP4 FE-P1 Profile P1 popover (Profile-P1-Flow p1-d1 family): 340 wide, the Cmd-K palette surface tokens only
   (--d-raise / --d-edge), pressed ring on the avatar while open, rows in a label / line / chip grid, confirms as
   ws-twin cards inline, one hairline above the D-P22 rows, the p1-d3 surface stub, the gate card slot. Tokens only. */
.ws-memenu{width:min(340px,calc(100vw - 24px));background:var(--d-raise);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-popover)}
.ws-acct[aria-expanded="true"]{box-shadow:var(--focus-ring)}
.ws-p1{display:flex;flex-direction:column;gap:8px}
.ws-p1-id{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3) var(--s-3);margin:0}
.ws-p1-av{width:32px;height:32px;border-radius:var(--r-chip);background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-family:var(--f-display);font-size:var(--t-micro);color:var(--ink2);flex:none}
.ws-p1-idtext{display:flex;flex-direction:column;min-width:0}
.ws-p1-name{font-size:var(--t-md);font-weight:600;color:var(--ink)}
.ws-p1-line{font-size:var(--t-micro);color:var(--muted);line-height:1.45}
.ws-p1-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label chip" "line chip";align-items:center;column-gap:var(--s-2);row-gap:2px;width:100%;text-align:left;padding:8px 12px;border:none;border-top:1px solid var(--line);border-radius:0;font:inherit;color:var(--ink2);background:transparent;cursor:pointer;transition:background .12s}
.ws-p1-row:hover{background:var(--hover)}
.ws-p1-row-static,.ws-p1-row-static:hover{cursor:default;background:transparent}
.ws-p1-row-label{grid-area:label;font-size:var(--t-md);font-weight:500;color:var(--ink)}
.ws-p1-row-line{grid-area:line;font-size:var(--t-micro);color:var(--muted)}
.ws-p1-row>.ws-chip{grid-area:chip}
.ws-p1-act{grid-area:chip;font:inherit;font-size:var(--t-sm);color:var(--ink2);background:transparent;border:1px solid var(--line);border-radius:var(--r-chip);padding:var(--s-1) var(--s-3);cursor:pointer}
.ws-p1-act:hover{color:var(--ink);border-color:var(--ink2)}
.ws-p1 .ws-twin{margin:var(--s-2) 0;padding:var(--s-3) var(--s-4)}
.ws-p1 .ws-twin-title .pill{margin-left:auto}
.ws-p1 .ws-twin-acts{justify-content:flex-start;margin-top:var(--s-3)}
.ws-p1-err{color:var(--emberL)}
.ws-mmhr{border-top:1px solid var(--line);margin:var(--s-2) 0}
.ws-picker{padding:var(--s-1) var(--s-2) var(--s-2)}
.ws-picker-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}
.ws-picker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2);margin-top:var(--s-3)}
/* PP4 FE-12b picker (THEME-PACKS linen-f0-3 shape): six radio buttons, lights over darks. The chip strip and the tile
   read bg / card / ink / line / ember; with data-theme on the swatch (PP4 FE-12, D-P30) tokens.css scopes that pack's
   block to the tile, so each swatch previews its own pack from the one token vocabulary. No hex here. */
.ws-swatch{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-1);padding:var(--s-2);border:1px solid var(--line);border-radius:8px;background:var(--card);font:inherit;text-align:left;color:var(--ink2);cursor:pointer}
.ws-swatch:hover{border-color:var(--ink2)}
.ws-swatch:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.ws-swatch.is-on,.ws-swatch[aria-checked="true"]{border-color:var(--ember);box-shadow:inset 0 0 0 1px var(--ember)}
.ws-swatch[disabled]{cursor:default;opacity:.6}
.ws-swatch-chip{width:100%;height:24px;border-radius:4px;border:1px solid var(--line);border-right:8px solid var(--ember);background:linear-gradient(90deg,var(--bg) 0 50%,var(--card) 50% 75%,var(--ink) 75% 100%)}
.ws-swatch-name{font-size:var(--t-sm);color:var(--ink)}
.ws-swatch-mode{font-size:var(--t-xs);text-transform:none;letter-spacing:0;color:var(--muted)}
.ws-picker[aria-busy="true"] .ws-picker-grid{opacity:.7}
/* FE-12 verify: a held Use <pack> (current pack selected, or saving) must not read as live; the frame's Use is live only after a pick. */
.ws-picker .btn.primary[disabled]{opacity:.55;cursor:default}
.ws-picker .ws-p1-err{margin:var(--s-2) 0 0}
.ws-picker-back{font:inherit;font-size:var(--t-sm);color:var(--ink2);background:transparent;border:0;padding:var(--s-1) 0;cursor:pointer}
.ws-picker-back:hover{color:var(--ink)}
.signin-card{margin:var(--s-3) 0}
.signin-card[hidden]{display:none}
@media (max-width:767px){html[data-surface="phone"] .ws-memenu{position:fixed;top:auto;left:0;right:0;bottom:0;width:auto;max-height:80dvh;overflow:auto;border-radius:16px 16px 0 0}}
/* ——— Body grid ——— */
/* PP4 FE-13a: the left workplace-lens sidebar (.ws-sidebar / .ws-ctx-* / .ws-lens-*) left the shell; .ws-main fills the body. */
.ws-body {
  flex: 1;
  display: flex;
  min-height: 0;
}

/* Home 2.2 and the flat-slug area frames (/guests /groups /volunteers /connect /lists /people). #wsApp.is-workflow-home is the signed-in shell. */
.ws-home{grid-column:1;grid-row:1 / -1;min-width:0;min-height:0;overflow:auto;padding:var(--s-6) var(--s-5) var(--s-8);display:flex;flex-direction:column;gap:var(--s-4)}
.ws-area{grid-column:1;grid-row:1 / -1;min-width:0;min-height:0;overflow:auto;padding:var(--s-6) var(--s-6) var(--s-8)}
.ws-area[data-room="guests"],.ws-area[data-room="groups"],.ws-area[data-room="people"]{padding:var(--s-6) var(--s-5) var(--s-8)}
.ws-home[hidden],.ws-area[hidden]{display:none}
/* Ask is a rail slot in column 3. Closed = zero width and hidden; open = well fill + left hairline. The DOM does not move. */
.ws-app.is-workflow-home .ws-main{grid-template-columns:minmax(0,1fr) minmax(0px,0fr) minmax(0px,0fr)}
.ws-app.is-workflow-home .ws-main.is-canvas-open{grid-template-columns:minmax(0,1fr) minmax(340px,1.1fr) minmax(0px,0fr)}
.ws-app.is-workflow-home .ws-main{position:relative}
.ws-app.is-workflow-home.is-ask-open .ws-main{grid-template-columns:minmax(0,1fr) minmax(0px,0fr) 360px}
.ws-app.is-workflow-home.is-ask-open .ws-main.is-canvas-open{grid-template-columns:minmax(0,1fr) minmax(340px,1.1fr) 360px}
@media (max-width:1400px){
  .ws-app.is-workflow-home.is-ask-open .ws-main,
  .ws-app.is-workflow-home.is-ask-open .ws-main.is-canvas-open{grid-template-columns:minmax(0,1fr) minmax(0px,0fr) minmax(0px,0fr)}
  .ws-app.is-workflow-home.is-ask-open .ws-chat-col,
  .ws-app.is-workflow-home.is-ask-open .ws-tabs{position:absolute;right:0;width:min(360px,42vw);z-index:25;visibility:visible}
  .ws-app.is-workflow-home.is-ask-open .ws-tabs{top:0}
  .ws-app.is-workflow-home.is-ask-open .ws-chat-col{top:0;bottom:0;overflow:auto;box-shadow:var(--shadow-overlay)}
}
.ws-app.is-workflow-home .ws-tabs{grid-column:3;grid-row:1}
.ws-app.is-workflow-home .ws-chat-col{grid-column:3;grid-row:2;background:var(--d-well);border-left:1px solid var(--line)}
.ws-app.is-workflow-home:not(.is-ask-open) .ws-chat-col,.ws-app.is-workflow-home:not(.is-ask-open) .ws-tabs{visibility:hidden;overflow:hidden}
.ws-ask-btn{display:inline-flex;align-items:center;gap:6px;height:28px;box-sizing:border-box;font:inherit;font-size:var(--t-sm);font-weight:500;padding:0 var(--s-2);border-radius:var(--r-card);border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}
.ws-ask-btn[aria-pressed="true"]{background:var(--bg2);border-color:var(--bg2);color:var(--ink)}
.ws-ask-btn[aria-pressed="true"] .ws-kbd{border-color:var(--line);color:inherit}
.ws-ask-btn[hidden]{display:none}
.ws-home-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin:0}
.ws-home-lead{display:flex;flex-direction:column;gap:var(--s-1);min-width:0}
.ws-home-greet{margin:0;font-family:var(--f-display);font-weight:500;font-size:var(--t-place);color:var(--ink);line-height:1.2}
.ws-home-sub{font-size:var(--t-md);color:var(--ink2)}
.ws-home-mode{margin-left:auto}
.ws-home-mode-col{display:flex;flex-direction:column;align-items:flex-end;gap:var(--s-1)}
.ws-home-mode-cap{margin:0;font-size:var(--t-micro);color:var(--muted);line-height:1.4}
.ws-home-mode .ws-seg,.ws-guests-right .ws-seg{gap:0;padding:var(--chip-y);background:var(--d-fill);border-radius:var(--r-chip)}
.ws-home-mode .ws-seg-opt,.ws-guests-right .ws-seg-opt{height:20px;padding:0 var(--s-2);font-size:var(--t-micro);font-weight:500;color:var(--ink2);line-height:1;box-sizing:border-box}
.ws-home-mode .ws-seg-opt.is-on,.ws-guests-right .ws-seg-opt.is-on{background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1px var(--ember)}
.ws-home-strip{display:flex;gap:var(--s-2);flex-wrap:wrap}
.ws-home-strip:not(:empty){margin:0}
.ws-home-fail{display:flex;gap:var(--s-2);flex-wrap:wrap}
.ws-home-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-3)}
.ws-hcard{display:flex;flex-direction:column;justify-content:space-between;gap:var(--s-3);padding:var(--s-4);background:var(--card);border:1px solid var(--line);border-radius:var(--r-card);min-height:170px;min-width:0;box-shadow:var(--shadow-card)}
.ws-hcard-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2)}
.ws-hcard-title{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--t-lg);font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ws-hcard-meta{font-size:var(--t-micro);color:var(--muted);line-height:1.4;text-align:right;min-width:2.5em;min-height:1em}
.ws-hcard-meta.is-empty{visibility:hidden}
.ws-hcard-value{flex:1;min-height:0}
.ws-hcard-figure{display:block;font-family:var(--f-ui);font-weight:500;font-size:var(--t-place);color:var(--ink);line-height:1.2;margin:var(--s-2) 0 var(--s-1)}
.ws-hcard-micro{display:block;font-family:var(--f-ui);font-weight:400;font-size:var(--t-micro);color:var(--muted);line-height:1.4}
.ws-hcard-micro.is-empty{min-height:1em}
.ws-hcard-locked,.ws-area-locked{font-family:inherit;font-weight:400;font-size:var(--t-md);color:var(--muted)}
.ws-hcard .btn{height:36px;padding:0 var(--s-3);border-radius:var(--r-card);font-size:var(--t-md);font-weight:500;box-sizing:border-box}
.ws-hcard .btn:not(.primary){border-color:var(--d-edge);color:var(--ink);background:var(--card)}
.ws-home .btn:not(.primary):not(.ghost):hover{background:var(--bg)}
.ws-hcard.is-locked .ws-hcard-act .btn,
.ws-hcard.is-busy .ws-hcard-act .btn{opacity:.5;cursor:default}
.ws-hcard.is-busy .btn.primary.is-busy{opacity:.85}
.ws-home-sub{list-style:none}
.ws-home-sub::before,.ws-home-sub::after{content:none}
.ws-home-strip .ws-twin-busy:empty{border:0;height:0;padding:0;background:transparent}
.ws-home-deskfoot{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3)}
.ws-home-deskfoot-left{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}
.ws-home-deskfoot-line{font-size:var(--t-micro);color:var(--muted);line-height:1.4}
.ws-home-deskfoot .btn.ghost{height:28px;padding:0 var(--s-2);border-radius:var(--r-card);font-size:var(--t-sm);font-weight:500;border-color:transparent;color:var(--ink2)}
.ws-home-deskfoot-ask{display:inline-flex;align-items:center;gap:var(--s-2);margin:0;padding:0;border:0;background:transparent;font:inherit;font-size:var(--t-micro);color:var(--muted);line-height:1.4;cursor:pointer;text-align:right}
.ws-area-head{font-family:'Fraunces',serif;font-weight:500;font-size:22px;margin:0 0 var(--s-5);color:var(--ink)}
.ws-area-ghost{height:44px;border-bottom:1px solid var(--line)}
.ws-area-link{margin:var(--s-4) 0 0}
@media (max-width:880px){.ws-home-cards{grid-template-columns:minmax(0,1fr)}}
/* GATE1-ASK: two-row head (title · session · ✕ / segment alone); divider between hairlines; 7.1x rail sheet */
.ws-rail-head{display:flex;flex-direction:column;align-items:stretch;gap:var(--s-2);padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line)}
.ws-rail-head-row{display:flex;align-items:center;gap:var(--s-2)}
.ws-rail-cluster{margin-left:auto;display:flex;align-items:center;gap:var(--s-2);flex-shrink:0}
.ws-rail-head-seg{width:100%}
.ws-rail-head-seg .ws-seg{display:flex;width:100%;padding:var(--chip-y)}
.ws-rail-title{font-weight:600;font-size:var(--t-md)}
.ws-rail-session{color:var(--ink2);font-size:var(--t-xs)}
.ws-rail-head .ws-chip{margin-left:0}
.ws-rail-confirm{padding:var(--s-3) var(--s-4) 0}
.ws-sheet.ws-rail-sheet{position:relative;right:auto;bottom:auto;width:100%;max-height:none;box-shadow:none;z-index:1}
:root[data-mode="dark"] .ws-rail-confirm{box-shadow:none}
.ws-scope-divider{display:flex;align-items:center;gap:var(--s-3);margin:var(--s-3) 0;padding:0;border:0;color:var(--muted);font-size:var(--t-xs);text-align:center}
.ws-scope-divider::before,.ws-scope-divider::after{content:"";flex:1;border-top:1px solid var(--line)}
.ws-rail-foot{padding:var(--s-2) var(--s-4) var(--s-3);border-top:1px solid var(--line)}
.ws-rail-foot-acts{display:flex;gap:var(--s-4);margin:var(--s-1) 0}
a.ws-btn{text-decoration:none;color:inherit}
.draftcard-foot .btn+.btn{margin-left:var(--s-2)}
@media (max-width:767px){.ws-rail-export{display:none}}
