.jw{--jw-bg:var(--paper,var(--bg,#FBF7EF));--jw-fg:var(--ink,var(--fg,#0F1E32));--jw-muted:var(--sub,var(--muted,#656D7A));--jw-card:var(--card,#FFFFFF);--jw-line:var(--line,#E9E0CC);
  --jw-sapphire:#1B4380;--jw-emerald:#0F5C47;--jw-jade:#1F6B4E;--jw-gold:#C99A2E;--jw-glow:rgba(201,154,46,.42);--jw-gold-ink:#8A6514;--jw-ok:#1F6B4E;--jw-info:#1B4380;--jw-info-bg:#E7EEF9;
  --jw-serif:var(--ff-d,"Fraunces",Georgia,serif);--jw-body:var(--ff-b,"Public Sans","Segoe UI",system-ui,sans-serif);color:var(--jw-fg);font:16px/1.5 var(--jw-body)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .jw{--jw-sapphire:#4A78C2;--jw-emerald:#2F9C7E;--jw-jade:#3DAA85;--jw-gold-ink:#E8CB7A;--jw-ok:#3DAA85;--jw-info:#8FB1F0;--jw-info-bg:#182544} }
:root[data-theme="dark"] .jw{--jw-sapphire:#4A78C2;--jw-emerald:#2F9C7E;--jw-jade:#3DAA85;--jw-gold-ink:#E8CB7A;--jw-ok:#3DAA85;--jw-info:#8FB1F0;--jw-info-bg:#182544}
.jw *{box-sizing:border-box}
.jw button{font:inherit}
.jw-bar{display:flex;gap:10px 14px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.jw-seg{display:inline-flex;align-items:center;gap:6px;background:var(--jw-card);border:1px solid var(--jw-line);border-radius:999px;padding:3px}
.jw-seg .jw-k{font:600 12px/1 var(--jw-body);color:var(--jw-muted);padding:0 6px 0 10px}
.jw-seg button,.jw-tog{border:0;background:transparent;color:var(--jw-muted);font:600 14px/1 var(--jw-body);padding:8px 14px;min-height:40px;border-radius:999px;cursor:pointer}
.jw-seg button[aria-pressed="true"]{background:var(--jw-fg);color:var(--jw-bg)}
.jw-tog{border:1px solid var(--jw-line);background:var(--jw-card);color:var(--jw-fg);min-height:44px;display:inline-flex;align-items:center;gap:8px}
.jw-tog i{width:30px;height:18px;border-radius:999px;background:var(--jw-line);position:relative;transition:background .25s;flex:none}
.jw-tog i::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .25s}
.jw-tog[aria-pressed="true"] i{background:var(--jw-ok)}
.jw-tog[aria-pressed="true"] i::after{transform:translateX(12px)}
.jw :focus-visible{outline:2px solid var(--jw-fg);outline-offset:3px}
.jw-deck{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:20px;align-items:start}
@media (max-width:900px){.jw-deck{grid-template-columns:1fr}}

/* the stage: perspective here, preserve-3d on the scene; the geometry is computed in JS */
.jw-stage{position:relative;perspective:1100px;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none;cursor:grab}
.jw-stage.jw-dragging{cursor:grabbing}
.jw-scene{position:absolute;inset:0;pointer-events:none;transform-style:preserve-3d;transition:transform .5s ease}
.jw-stage.jw-dragging .jw-scene{transition:none}
.jw-card{position:absolute;left:50%;top:0;margin:0;pointer-events:auto;background:var(--jw-card);border:1px solid var(--jw-line);border-radius:16px;padding:11px 12px;display:flex;flex-direction:column;gap:5px;text-align:left;color:var(--jw-fg);cursor:pointer;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden}
.jw-card .jw-ico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;color:#fff;background:var(--c);flex:none}
.jw-card .jw-ico svg,.jw-list button .jw-ico svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.jw-card .jw-lbl{font:600 15px/1.2 var(--jw-body)}
.jw-card .jw-sub{font-size:12px;line-height:1.3;color:var(--jw-muted)}
.jw-card .jw-team{margin-top:auto;display:flex;flex-wrap:wrap;gap:4px}
.jw-card .jw-team span{font:500 10.5px/1 var(--jw-body);padding:4px 7px;border-radius:999px;background:var(--jw-bg);border:1px solid var(--jw-line);color:var(--jw-fg)}
.jw-phone .jw-card .jw-team{display:none}
.jw-card.jw-front{border-color:var(--jw-fg)}
.jw-card.jw-sweep::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);animation:jwSweep .8s ease-out 1 forwards;pointer-events:none}
@keyframes jwSweep{to{transform:translateX(120%)}}
.jw-hub{position:absolute;left:50%;top:0;pointer-events:auto;border-radius:50%;background:var(--jw-card);border:2px solid var(--jw-gold);box-shadow:0 0 18px var(--jw-glow);display:grid;place-items:center;text-align:center;cursor:pointer;color:var(--jw-fg);padding:8px}
.jw-hub::after{content:"";position:absolute;inset:-2px;border-radius:50%;pointer-events:none}
.jw-hub b{display:block;font:700 17px/1.1 var(--jw-serif)}
.jw-hub small{display:block;font:600 10.5px/1.3 var(--jw-body);color:var(--jw-gold-ink);letter-spacing:.04em;text-transform:uppercase;margin-top:3px}
.jw-hub .jw-n{display:block;font:500 11px/1.2 var(--jw-body);color:var(--jw-muted);margin-top:4px}
.jw-phone .jw-hub b{font-size:13px}.jw-phone .jw-hub small{font-size:8.5px;margin-top:1px}.jw-phone .jw-hub .jw-n{display:none}
@keyframes jwBreathe{0%,100%{box-shadow:0 0 14px var(--jw-glow)}50%{box-shadow:0 0 30px var(--jw-glow)}}
.jw-hub.jw-breathe{animation:jwBreathe 4.5s ease-in-out 3}
@keyframes jwPing{0%{box-shadow:0 0 0 0 var(--jw-glow)}100%{box-shadow:0 0 0 22px rgba(201,154,46,0)}}
.jw-hub.jw-ping::after{animation:jwPing .7s ease-out 1}
.jw-arrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1px solid var(--jw-line);background:var(--jw-card);color:var(--jw-fg);cursor:pointer;z-index:30;display:grid;place-items:center;font-size:22px;line-height:1}
.jw-arrow.jw-prev{left:0}.jw-arrow.jw-next{right:0}
.jw-phone .jw-arrow,.jw-lowarrows .jw-arrow{top:auto;bottom:0;transform:none}
.jw-hint{font-size:13px;color:var(--jw-muted);margin:10px 0 0;text-align:center}
.jw-tick{display:flex;align-items:center;gap:10px;margin:14px 0 0;padding:8px 12px;border:1px solid var(--jw-line);border-radius:12px;background:var(--jw-card);font-size:13.5px;min-height:52px}
.jw-tick .jw-dot{width:8px;height:8px;border-radius:50%;background:var(--jw-ok);flex:none}
.jw-tick .jw-txt{flex:1;transition:opacity .3s}
.jw-tick .jw-txt.jw-fade{opacity:0}
.jw-tick .jw-k{font:600 10.5px/1 var(--jw-body);letter-spacing:.06em;text-transform:uppercase;color:var(--jw-info);background:var(--jw-info-bg);padding:5px 8px;border-radius:999px;flex:none}
.jw-deck[data-run="off"] .jw-tick .jw-dot{background:var(--jw-muted)}
.jw-deck[data-run="off"] .jw-tick .jw-k{display:none}

/* the list layout: the same eight, no motion */
.jw-list{display:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media (min-width:640px){.jw-list{grid-template-columns:repeat(4,minmax(0,1fr))}}
.jw-deck[data-layout="list"] .jw-stage,.jw-deck[data-layout="list"] .jw-hint{display:none}
.jw-deck[data-layout="list"] .jw-list{display:grid}
.jw-list button{position:relative;background:var(--jw-card);border:1px solid var(--jw-line);border-radius:14px;padding:12px;text-align:left;color:var(--jw-fg);cursor:pointer;min-height:96px;display:flex;flex-direction:column;gap:5px}
.jw-list button .jw-ico{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:#fff;background:var(--c)}
.jw-list button .jw-lbl{font:600 15px/1.2 var(--jw-body)}
.jw-list button .jw-sub{font-size:12px;color:var(--jw-muted)}
.jw-list button[aria-pressed="true"]{border-color:var(--jw-fg)}
.jw-list button[aria-pressed="true"]::after{content:"\2713";position:absolute;top:10px;right:10px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--jw-fg);color:var(--jw-bg);font:700 13px/1 var(--jw-body)}

/* the panel: the chosen area, its jobs, and what the team noticed (sample) */
.jw-panel{background:var(--jw-card);border:1px solid var(--jw-line);border-radius:18px;padding:18px 18px 16px}
.jw-ph{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.jw-panel h2{font:700 24px/1.15 var(--jw-serif);margin:2px 0 2px}
.jw-psub{color:var(--jw-muted);font-size:14px;margin:0 0 12px}
.jw-pitch{font-size:15px;margin:0 0 14px}
.jw-try{display:inline-flex;align-items:center;gap:6px;background:var(--jw-fg);color:var(--jw-bg);text-decoration:none;font:600 15px/1 var(--jw-body);padding:11px 16px;min-height:44px;border-radius:999px;white-space:nowrap}
.jw-switch{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--jw-line);background:var(--jw-bg);color:var(--jw-fg);border-radius:999px;padding:6px 10px 6px 6px;font:600 12.5px/1.2 var(--jw-body);cursor:pointer;min-height:44px;flex:none;text-align:left}
.jw-switch i{width:30px;height:18px;border-radius:999px;background:var(--jw-line);position:relative;transition:background .25s;flex:none}
.jw-switch i::after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .25s}
.jw-switch[aria-pressed="true"] i{background:var(--jw-ok)}
.jw-switch[aria-pressed="true"] i::after{transform:translateX(12px)}
.jw-ph2{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 8px}
.jw-ph2 h3{font:600 12px/1 var(--jw-body);letter-spacing:.08em;text-transform:uppercase;color:var(--jw-muted);margin:0}
.jw-sample{font:600 10.5px/1 var(--jw-body);letter-spacing:.05em;text-transform:uppercase;color:var(--jw-info);background:var(--jw-info-bg);padding:5px 8px;border-radius:999px}
.jw-roles{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.jw-role{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--jw-line);border-radius:12px;background:var(--jw-bg)}
.jw-role.jw-stack,.jw-phone-panel .jw-role{grid-template-columns:auto 1fr}
.jw-role.jw-stack .jw-side,.jw-phone-panel .jw-role .jw-side{grid-column:2;display:flex;flex-wrap:wrap;align-self:start}
@media (max-width:480px){.jw-role{grid-template-columns:auto 1fr}.jw-role .jw-side{grid-column:2;display:flex;flex-wrap:wrap;align-self:start}}
@keyframes jwIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.jw-deck[data-run="on"] .jw-role{animation:jwIn .35s ease-out both}
.jw-role .jw-st{width:10px;height:10px;border-radius:50%;margin-top:6px;background:var(--jw-muted);flex:none}
.jw-role .jw-st.jw-watch{background:var(--jw-ok)}
.jw-role .jw-st.jw-needs{background:transparent;border:2px solid var(--jw-muted)}
@keyframes jwPulse{0%,100%{box-shadow:0 0 0 0 rgba(31,107,78,.45)}60%{box-shadow:0 0 0 7px rgba(31,107,78,0)}}
.jw-deck[data-run="on"] .jw-role .jw-st.jw-watch{animation:jwPulse 2.4s ease-out 3}
.jw-role b{display:block;font:600 14.5px/1.25 var(--jw-body)}
.jw-role p{margin:2px 0 0;font-size:13px;line-height:1.4;color:var(--jw-muted)}
.jw-role .jw-w{display:block;margin-top:4px;font-size:12px;color:var(--jw-fg)}
.jw-role .jw-w::before{content:"Would watch for: ";color:var(--jw-muted)}
.jw-role .jw-w.jw-needs::before{content:"Needs: "}
.jw-deck[data-run="off"] .jw-role .jw-w:not(.jw-needs){display:none}
.jw-role .jw-side{display:grid;gap:6px;align-self:center}
.jw-go{border:1px solid var(--jw-line);background:var(--jw-card);color:var(--jw-fg);border-radius:999px;font:600 12.5px/1 var(--jw-body);padding:9px 12px;min-height:44px;display:inline-flex;align-items:center;text-decoration:none;white-space:nowrap}
.jw-notices{display:grid;gap:8px;margin-top:8px}
.jw-notice{border:1px solid var(--jw-line);border-left:4px solid var(--jw-ok);border-radius:12px;padding:10px 12px;background:var(--jw-bg);font-size:14px}
.jw-notice .jw-saw{margin:0}
.jw-notice .jw-saw em{font-style:normal;color:var(--jw-muted)}
.jw-notice .jw-would{margin:4px 0 8px}
.jw-notice .jw-acts{display:flex;gap:8px;flex-wrap:wrap}
.jw-notice button{border:1px solid var(--jw-line);background:var(--jw-card);color:var(--jw-fg);border-radius:999px;font:600 13px/1 var(--jw-body);padding:10px 14px;min-height:44px;cursor:pointer}
.jw-notice button.jw-ok{background:var(--jw-fg);color:var(--jw-bg);border-color:var(--jw-fg)}
.jw-notice .jw-done{margin:8px 0 0;font-size:13px;color:var(--jw-ok)}
.jw-notice.jw-parked{color:var(--jw-muted);border-left-color:var(--jw-muted);border-left-style:dashed}
.jw-notice.jw-parked .jw-done{color:var(--jw-muted)}
.jw-offline{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:var(--jw-bg);border:1px dashed var(--jw-line);font-size:13.5px;color:var(--jw-muted)}
.jw-deck[data-run="on"] .jw-offline{display:none}
.jw-deck[data-run="off"] .jw-notices{display:none}

/* the roster */
.jw-roster{margin-top:28px}
.jw-roster h3{font:700 20px/1.2 var(--jw-serif);margin:0 0 4px}
.jw-roster p{margin:0 0 12px;color:var(--jw-muted);font-size:14px}
.jw-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.jw-chip{display:flex;align-items:center;gap:9px;border:1px solid var(--jw-line);background:var(--jw-card);border-radius:12px;padding:10px 12px;text-align:left;color:var(--jw-fg);cursor:pointer;min-height:48px}
.jw-chip i{width:10px;height:10px;border-radius:50%;background:var(--c);flex:none}
.jw-chip b{display:block;font:600 13.5px/1.2 var(--jw-body)}
.jw-chip small{display:block;font-size:11px;color:var(--jw-muted)}
.jw-chip[aria-pressed="true"]{border-color:var(--jw-fg)}
.jw-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* motion off: one control stops every animation and transition in the block; the OS preference sets it off at load */
.jw-deck[data-motion="off"] *,.jw-deck[data-motion="off"] *::after{animation:none!important;transition:none!important}
