/* Design System v2 showcase styles - transplanted from the approved spec
   (docs/mockups/design-system-v2.html) and scoped under .ds2. Color values
   come from tokens.css; the few literals below are spec-demo colors. */
.ds2{--ui:var(--ed-font);--disp:var(--ed-font);
  --ed-display-30:600 30px/1.2 var(--ed-font);--ed-display-24:600 24px/1.25 var(--ed-font);
  --ed-title-18:600 18px/1.3 var(--ed-font);--ed-subtitle-15:600 15px/1.4 var(--ed-font);
  --ed-body-14:400 14px/1.5 var(--ed-font);--ed-small-12:400 12.5px/1.45 var(--ed-font);
  --ed-caption-11:600 11px/1.3 var(--ed-font);
  font:var(--ed-body-14);color:var(--ed-ink)}
.ds2 /* ============ THE PROPOSED TOKEN SHEET (this page is styled only from these) ============ */

/* ============ spec page chrome ============ */
*{box-sizing:border-box;margin:0;padding:0}.ds2{background:var(--ed-canvas);color:var(--ed-ink);font:var(--ed-body-14)}.ds2 button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}.ds2 .wrap{display:flex;min-height:100vh}.ds2 .rail{width:220px;flex:0 0 220px;background:var(--ed-navy-900);color:#dbe5f2;padding:22px 14px;position:sticky;top:0;height:100vh;overflow:auto}.ds2 .rail h1{font:var(--ed-title-18);color:#fff}.ds2 .rail .sub{font:var(--ed-small-12);color:#8ea3c4;margin:4px 0 18px}.ds2 .rail a{display:block;padding:6px 10px;border-radius:8px;color:#c3d1e6;text-decoration:none;font:var(--ed-small-12);font-weight:600}.ds2 .rail a:hover{background:#ffffff14;color:#fff}.ds2 .rail .rg{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.09em;color:#7e93b3;margin:16px 10px 4px}.ds2 .content{flex:1;padding:36px 44px 80px;max-width:1060px}.ds2 section{margin-bottom:56px}.ds2 h2{font:var(--ed-display-24);margin-bottom:4px}.ds2 .lead{color:var(--ed-muted);margin-bottom:22px;max-width:64ch}.ds2 h3{font:var(--ed-subtitle-15);margin:26px 0 10px}.ds2 .spec{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}.ds2 .tk{font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--ed-surface);border:1px solid var(--ed-border);border-radius:6px;padding:5px 8px;color:var(--ed-navy-600)}.ds2 .tk.cmp{background:var(--ed-navy-100);border-color:transparent;color:var(--ed-navy-700)}.ds2 .board{background:var(--ed-surface);border-radius:var(--ed-r-card);box-shadow:var(--ed-shadow-card);padding:var(--ed-s6)}.ds2 .board.sunk{background:var(--ed-sunken)}.ds2 .row{display:flex;gap:var(--ed-s3);align-items:center;flex-wrap:wrap}.ds2 .note{font:var(--ed-small-12);color:var(--ed-muted);margin-top:10px}.ds2 .note b{color:var(--ed-ink)}.ds2 /* swatches */
.swg{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.ds2 .sw{border:1px solid var(--ed-border);border-radius:10px;overflow:hidden;background:var(--ed-surface)}.ds2 .sw .c{height:56px}.ds2 .sw .m{padding:8px 10px}.ds2 .sw .m b{display:block;font:600 12px ui-monospace,Menlo,monospace}.ds2 .sw .m small{color:var(--ed-muted);font-size:11px}.ds2 /* type specimens */
.ts{display:flex;align-items:baseline;gap:18px;padding:10px 0;border-bottom:1px solid var(--ed-border)}.ds2 .ts:last-child{border:0}.ds2 .ts .tn{width:150px;flex:0 0 150px;font:600 11.5px ui-monospace,Menlo,monospace;color:var(--ed-navy-600)}.ds2 /* space/radius */
.sp{display:flex;align-items:flex-end;gap:14px}.ds2 .sp .b{background:var(--ed-navy-100);border:1px solid var(--ed-navy-600);border-radius:4px}.ds2 .sp .l{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.07em;color:var(--ed-faint);text-align:center;margin-top:6px}.ds2 /* ============ primitives (styled ONLY from tokens) ============ */
.btn{display:inline-flex;align-items:center;gap:7px;border-radius:var(--ed-r-pill);padding:9px 17px;font:var(--ed-body-14);font-weight:600;white-space:nowrap;transition:background var(--ed-fast)}.ds2 .btn.pri{background:var(--ed-navy-700);color:#fff}.ds2 .btn.pri:hover{background:var(--ed-navy-600)}.ds2 .btn.sec{background:var(--ed-surface);border:1px solid var(--ed-border);color:var(--ed-ink)}.ds2 .btn.gho{color:var(--ed-navy-600)}.ds2 .btn.dgr{background:var(--ed-danger);color:#fff}.ds2 .btn.sm{padding:6px 13px;font-size:13px}.ds2 .btn.icon{width:34px;height:34px;padding:0;justify-content:center;border-radius:var(--ed-r-ctl);color:var(--ed-muted)}.ds2 .btn.icon:hover{background:var(--ed-sunken);color:var(--ed-ink)}.ds2 .btn[disabled]{opacity:.45;cursor:default}.ds2 .btn.ai{background:linear-gradient(120deg,var(--ed-ai),#9d64f2);color:#fff}.ds2 .inp{border:1px solid var(--ed-border);border-radius:var(--ed-r-ctl);padding:10px 13px;font:var(--ed-body-14);background:var(--ed-surface);min-width:220px}.ds2 .inp:focus{outline:2px solid var(--ed-navy-600);outline-offset:-1px}.ds2 .inp.err{border-color:var(--ed-danger)}.ds2 .errtxt{font:var(--ed-small-12);color:var(--ed-danger);margin-top:4px}.ds2 .igroup{display:flex}.ds2 .igroup .inp{border-radius:var(--ed-r-ctl) 0 0 var(--ed-r-ctl);min-width:150px}.ds2 .igroup .add{border:1px solid var(--ed-border);border-left:0;border-radius:0 var(--ed-r-ctl) var(--ed-r-ctl) 0;padding:10px 13px;background:var(--ed-sunken);color:var(--ed-muted);font-weight:600}.ds2 .searchp{display:inline-flex;align-items:center;gap:8px;background:var(--ed-surface);border:1px solid var(--ed-border);border-radius:var(--ed-r-pill);padding:9px 15px;color:var(--ed-faint);min-width:230px}.ds2 .fdrop{display:inline-flex;align-items:center;gap:7px;background:var(--ed-surface);border:1px solid var(--ed-border);border-radius:var(--ed-r-pill);padding:9px 15px;font-weight:600}.ds2 .fdrop i{font-style:normal;color:var(--ed-faint);font-size:10px}.ds2 .lbl{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.07em;color:var(--ed-faint);display:block;margin-bottom:6px}.ds2 .flabel{font-weight:600;display:block;margin-bottom:2px}.ds2 .fhint{font:var(--ed-small-12);color:var(--ed-muted);margin-bottom:7px}.ds2 /* toggle */
.sw2{width:36px;height:20px;border-radius:var(--ed-r-pill);background:#cbd5e1;position:relative;display:inline-block;transition:background var(--ed-fast);vertical-align:middle}.ds2 .sw2::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left var(--ed-fast)}.ds2 .sw2.on{background:var(--ed-navy-700)}.ds2 .sw2.on::after{left:18px}.ds2 /* stepper */
.stp{display:inline-flex;align-items:center;gap:12px}.ds2 .stp button{width:26px;height:26px;border-radius:50%;border:1px solid var(--ed-border);color:var(--ed-muted);display:grid;place-items:center}.ds2 .stp button.add{background:var(--ed-navy-700);color:#fff;border-color:var(--ed-navy-700)}.ds2 .stp span{font-weight:700;min-width:16px;text-align:center;font-variant-numeric:tabular-nums}.ds2 /* pills */
.pill{display:inline-flex;align-items:center;gap:5px;border-radius:var(--ed-r-pill);padding:3px 10px;font:var(--ed-small-12);font-weight:700}.ds2 .pill.ok{background:var(--ed-success-soft);color:var(--ed-success)}.ds2 .pill.warn{background:var(--ed-warning-soft);color:var(--ed-warning)}.ds2 .pill.bad{background:var(--ed-danger-soft);color:var(--ed-danger)}.ds2 .pill.cat{background:var(--ed-navy-100);color:var(--ed-navy-600)}.ds2 .pill.ai{background:var(--ed-ai-soft);color:var(--ed-ai)}.ds2 .pill.count{background:var(--ed-navy-100);color:var(--ed-navy-600);padding:1px 7px;font-size:10.5px}.ds2 /* choice cards */
.choice{display:flex;gap:10px}.ds2 .choice .c{flex:1;border:1.5px solid var(--ed-border);border-radius:10px;padding:12px 14px;background:var(--ed-surface);cursor:pointer}.ds2 .choice .c b{display:block;margin-bottom:2px}.ds2 .choice .c small{font:var(--ed-small-12);color:var(--ed-muted);display:block}.ds2 .choice .c.sel{border-color:var(--ed-navy-600);background:var(--ed-navy-100)}.ds2 /* locked card */
.locked{display:flex;align-items:center;gap:12px;border:1px dashed #d4dcea;border-radius:10px;padding:12px 15px;background:var(--ed-sunken)}.ds2 .locked b{display:block}.ds2 .locked small{font:var(--ed-small-12);color:var(--ed-muted)}.ds2 .locked .en{margin-left:auto;color:var(--ed-navy-600);font-weight:700;flex:0 0 auto}.ds2 /* tabs */
.dtabs{display:flex;gap:2px;border-bottom:1px solid var(--ed-border)}.ds2 .dtabs button{padding:10px 14px;font-weight:600;color:var(--ed-muted);border-bottom:2px solid transparent}.ds2 .dtabs button.on{color:var(--ed-navy-700);border-color:var(--ed-navy-700)}.ds2 /* card anatomy */
.xcard{background:var(--ed-surface);border-radius:var(--ed-r-card);box-shadow:var(--ed-shadow-card)}.ds2 .xcard .hd{display:flex;align-items:center;gap:8px;padding:13px 18px;border-bottom:1px solid var(--ed-border);font-weight:700}.ds2 .xcard .hd .act{margin-left:auto;color:var(--ed-navy-600);font:var(--ed-small-12);font-weight:700}.ds2 .xcard .bd{padding:var(--ed-s4) 18px}.ds2 /* table */
.lt{width:100%;border-collapse:collapse}.ds2 .lt th{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.06em;color:var(--ed-faint);text-align:left;padding:12px 16px;border-bottom:1px solid var(--ed-border)}.ds2 .lt td{padding:13px 16px;border-bottom:1px solid var(--ed-border);vertical-align:middle;font-variant-numeric:tabular-nums}.ds2 .lt tr:last-child td{border-bottom:0}.ds2 .lt tr:hover td{background:var(--ed-sunken)}.ds2 .lt b{font-weight:700}.ds2 .lt small{display:block;font:var(--ed-small-12);color:var(--ed-muted)}.ds2 .thumb{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,var(--ed-navy-600),#68b7a4)}.ds2 /* empty state */
.empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px;text-align:center}.ds2 .empty .art{width:74px;height:74px;border-radius:50%;background:var(--ed-navy-100);display:grid;place-items:center;font-size:28px}.ds2 .empty b{font:var(--ed-subtitle-15)}.ds2 .empty p{font:var(--ed-small-12);color:var(--ed-muted)}.ds2 /* stat */
.stat{border:1px solid var(--ed-border);border-radius:10px;padding:14px 16px;min-width:150px}.ds2 .stat .v{font:var(--ed-display-24);font-variant-numeric:tabular-nums}.ds2 .stat .k{font:var(--ed-small-12);color:var(--ed-muted)}.ds2 .gauge{height:8px;border-radius:var(--ed-r-pill);background:var(--ed-border);overflow:hidden;margin-top:8px}.ds2 .gauge i{display:block;height:100%;width:64%;background:var(--ed-navy-600)}.ds2 /* hero */
.hero{display:flex;align-items:center;gap:16px;background:var(--ed-surface);border-radius:var(--ed-r-card);box-shadow:var(--ed-shadow-card);padding:16px 20px}.ds2 .hero .hkv{display:flex;gap:26px}.ds2 .hero .k{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.07em;color:var(--ed-faint)}.ds2 .hero .v{font-weight:700;margin-top:2px}.ds2 /* drawer/modal minis */
.mini{position:relative;height:230px;border-radius:10px;background:var(--ed-canvas);overflow:hidden;border:1px solid var(--ed-border)}.ds2 .mini .scr{position:absolute;inset:0;background:rgba(11,21,38,.32)}.ds2 .mini .drw{position:absolute;top:0;right:0;bottom:0;width:46%;background:var(--ed-surface);box-shadow:var(--ed-shadow-pop);padding:14px;display:flex;flex-direction:column}.ds2 .mini .mdl{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:60%;background:var(--ed-surface);border-radius:12px;box-shadow:var(--ed-shadow-pop);padding:16px}.ds2 .mini h4{font:var(--ed-subtitle-15)}.ds2 .mini p{font:var(--ed-small-12);color:var(--ed-muted);margin:6px 0 12px}.ds2 .mini .ft{margin-top:auto;display:flex;justify-content:flex-end;gap:8px}.ds2 /* toast */
.toast{display:flex;gap:10px;align-items:center;background:var(--ed-surface);border-radius:10px;box-shadow:var(--ed-shadow-pop);padding:12px 16px;max-width:330px}.ds2 .toast .ic{width:26px;height:26px;border-radius:50%;background:var(--ed-success-soft);color:var(--ed-success);display:grid;place-items:center;font-weight:700}.ds2 .toast b{display:block}.ds2 .toast small{font:var(--ed-small-12);color:var(--ed-muted)}.ds2 /* recipes */
.recg{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.ds2 .rec{border:1px solid var(--ed-border);border-radius:10px;background:var(--ed-surface);overflow:hidden}.ds2 .rec .art2{height:120px;background:var(--ed-canvas);position:relative;padding:8px}.ds2 .rec .m{padding:9px 12px}.ds2 .rec .m b{font:var(--ed-small-12);font-weight:700;display:block}.ds2 .rec .m small{font-size:11px;color:var(--ed-muted)}.ds2 .sk{position:absolute;background:var(--ed-surface);border:1px solid var(--ed-border);border-radius:4px}.ds2 .skn{position:absolute;background:var(--ed-navy-700);border-radius:4px}.ds2 /* rules */
.rules{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ds2 .rule{display:flex;gap:10px;background:var(--ed-surface);border-radius:10px;box-shadow:var(--ed-shadow-card);padding:12px 15px;font:var(--ed-small-12)}.ds2 .rule b{color:var(--ed-ink)}.ds2 .rule .no{color:var(--ed-danger);font-weight:800}@media (prefers-reduced-motion:reduce){.ds2 *{transition:none!important;animation:none!important}}.ds2 /* ------- added coverage: charts, .ds2 calendar, .ds2 reorder, .ds2 chat, .ds2 widget, .ds2 email ------- */
.dev{display:flex;gap:4px;background:#e2e8f2;border-radius:9px;padding:3px}.ds2 .dev button{padding:4px 12px;border-radius:7px;font-size:11.5px;font-weight:700;color:var(--ed-muted)}.ds2 .dev button.on{background:#fff;color:var(--ed-ink);box-shadow:0 1px 2px rgba(0,0,0,.1)}.ds2 .kpi{display:flex;gap:14px}.ds2 .kpi .up{color:var(--ed-success)}.ds2 .kpi .down{color:var(--ed-danger)}.ds2 .chart{display:flex;align-items:flex-end;gap:10px;height:120px;border-bottom:1px solid var(--ed-border);padding:0 6px}.ds2 .chart .cb{flex:1;display:flex;gap:3px;align-items:flex-end;height:100%}.ds2 .chart .cb i{display:block;flex:1;border-radius:4px 4px 2px 2px}.ds2 .chart .cb .cur{background:var(--ed-navy-600)}.ds2 .chart .cb .prev{background:#dbe4f0}.ds2 .axis{display:flex;gap:10px;padding:6px 6px 0}.ds2 .axis span{flex:1;text-align:center;font:var(--ed-caption-11);color:var(--ed-faint)}.ds2 .donut{width:92px;height:92px;border-radius:50%;background:conic-gradient(var(--ed-navy-700) 0 62%,var(--ed-navy-600) 62% 84%,#dbe4f0 84% 100%);display:grid;place-items:center}.ds2 .donut i{width:58px;height:58px;border-radius:50%;background:var(--ed-surface);display:grid;place-items:center;font-style:normal;font-weight:600;font-size:13px}.ds2 .legend{display:flex;flex-direction:column;gap:6px;font:var(--ed-small-12);color:var(--ed-muted)}.ds2 .legend b{color:var(--ed-ink)}.ds2 .legend .sw2c{width:9px;height:9px;border-radius:3px;display:inline-block;margin-right:6px}.ds2 .dstrip{display:flex;gap:8px}.ds2 .dstrip .dc{flex:1;border:1px solid var(--ed-border);border-radius:10px;text-align:center;padding:9px 4px;background:var(--ed-surface)}.ds2 .dstrip .dc b{font-size:15px;display:block}.ds2 .dstrip .dc small{font:var(--ed-caption-11);text-transform:uppercase;color:var(--ed-faint)}.ds2 .dstrip .dc.sel{background:var(--ed-navy-700);border-color:var(--ed-navy-700);color:#fff}.ds2 .dstrip .dc.sel small{color:#ffffffb3}.ds2 .lane{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--ed-border)}.ds2 .lane:last-child{border-bottom:0}.ds2 .lane .ln{width:120px;flex:0 0 120px;font:var(--ed-small-12)}.ds2 .lane .ln b{display:block;color:var(--ed-ink)}.ds2 .lane .track{flex:1;height:18px;border-radius:6px;background:var(--ed-sunken);position:relative;overflow:hidden}.ds2 .lane .seg{position:absolute;top:2px;bottom:2px;border-radius:4px}.ds2 .lane .seg.av{background:var(--ed-success-soft);border:1px solid #bfe3cc}.ds2 .lane .seg.bk{background:var(--ed-navy-100);border:1px solid #cfdcef}.ds2 .lane .seg.bl{background:repeating-linear-gradient(45deg,#e6ebf3 0 6px,#f3f6fa 6px 12px)}.ds2 .lane .now{position:absolute;top:0;bottom:0;width:2px;background:var(--ed-danger)}.ds2 .srow{display:flex;align-items:center;gap:10px;border:1px solid var(--ed-border);border-radius:10px;padding:9px 12px;background:var(--ed-surface)}.ds2 .srow .grip{color:var(--ed-faint);cursor:grab;font-size:14px;letter-spacing:2px}.ds2 .srow b{font-size:13px}.ds2 .srow .updn{margin-left:auto;display:flex;gap:2px}.ds2 .dropline{height:0;border-top:2px solid var(--ed-navy-600);border-radius:2px;margin:2px 6px;position:relative}.ds2 .dropline::before{content:"";position:absolute;left:-5px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--ed-navy-600)}.ds2 .pal-item{display:flex;align-items:center;gap:9px;border:1px solid var(--ed-border);border-radius:9px;padding:8px 11px;font-size:12.5px;font-weight:600;background:var(--ed-surface);cursor:grab}.ds2 .dropzone{border:1.5px dashed #b9c9de;border-radius:10px;background:var(--ed-navy-100);padding:14px;text-align:center;font:var(--ed-small-12);color:var(--ed-navy-600);font-weight:600}.ds2 .cblock{border:1.5px solid var(--ed-navy-600);border-radius:10px;padding:12px 14px;position:relative;background:var(--ed-surface)}.ds2 .cblock .btb{position:absolute;top:-13px;right:10px;display:flex;gap:2px;background:var(--ed-ink);border-radius:7px;padding:3px 5px}.ds2 .cblock .btb button{color:#fff;font-size:10px;width:20px;height:18px}.ds2 .popover{width:230px;background:var(--ed-surface);border-radius:11px;box-shadow:var(--ed-shadow-pop);padding:10px}.ds2 .popover .pr2{display:flex;align-items:center;gap:8px;padding:6px 6px;font-size:13px;border-radius:7px}.ds2 .popover .pr2:hover{background:var(--ed-sunken)}.ds2 .popover .pr2 .grip{margin-left:auto;color:var(--ed-faint)}.ds2 .bulkbar{display:flex;align-items:center;gap:12px;background:var(--ed-ink);color:#fff;border-radius:10px;padding:9px 14px;font-size:13px;font-weight:600}.ds2 .bulkbar .bb{color:#c8d4e5;font-weight:600}.ds2 .bulkbar .bx{margin-left:auto;color:#93a2b6}.ds2 .chatw{background:var(--ed-canvas);border:1px solid var(--ed-border);border-radius:12px;padding:18px;display:flex;gap:16px;min-height:340px}.ds2 .chat-main{flex:1;display:flex;flex-direction:column;gap:12px}.ds2 .msg-a{display:flex;gap:10px;max-width:85%}.ds2 .msg-a .av2{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--ed-ai),#9d64f2);color:#fff;display:grid;place-items:center;font-size:11px;flex:0 0 26px}.ds2 .msg-a p{font-size:13.5px;line-height:1.6}.ds2 .msg-u{align-self:flex-end;background:var(--ed-navy-100);border-radius:12px 12px 3px 12px;padding:9px 13px;font-size:13.5px;max-width:75%}.ds2 .toolcard{margin-left:36px;max-width:75%}.ds2 .composer{margin-top:auto;display:flex;align-items:center;gap:9px;background:var(--ed-surface);border:1px solid var(--ed-border);border-radius:999px;padding:8px 8px 8px 16px;box-shadow:var(--ed-shadow-card)}.ds2 .composer input{border:none;outline:none;flex:1;font:var(--ed-body-14);background:none;color:var(--ed-ink)}.ds2 .composer .send{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--ed-ai),#9d64f2);color:#fff;display:grid;place-items:center}.ds2 .chat-rail{width:190px;flex:0 0 190px;display:flex;flex-direction:column;gap:10px}.ds2 .chat-rail .rc{background:var(--ed-surface);border:1px solid var(--ed-border);border-radius:10px;padding:10px 12px;font:var(--ed-small-12)}.ds2 .chat-rail .rc b{display:block;font-size:12px;margin-bottom:5px}.ds2 .chat-rail .rc a{display:block;color:var(--ed-navy-600);font-weight:600;padding:3px 0;text-decoration:none}.ds2 .wgt{border:1px solid var(--ed-border);border-radius:12px;overflow:hidden;background:var(--ed-surface)}.ds2 .wgt .wh{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--ed-border)}.ds2 .wgt .wh .wl{font-weight:700;font-size:15px;color:#0d3b66}.ds2 .wgt .wh .wr{margin-left:auto;display:flex;gap:12px;font:var(--ed-small-12);color:var(--ed-muted);font-weight:600}.ds2 .wtiles{display:flex;gap:8px;padding:14px 16px}.ds2 .wtile{flex:1;border:1px solid var(--ed-border);border-radius:10px;padding:10px;text-align:center;font-size:12px;font-weight:700}.ds2 .wcards{display:flex;gap:12px;padding:0 16px 16px}.ds2 .wcard{flex:1;border:1px solid var(--ed-border);border-radius:12px;overflow:hidden}.ds2 .wcard .wi{height:74px}.ds2 .wcard .wb{padding:10px 12px}.ds2 .wcard .wb b{font-size:13px;display:block}.ds2 .wcard .wb small{color:var(--ed-muted);font-size:11.5px}.ds2 .wslots{display:flex;gap:6px;padding:0 16px 16px}.ds2 .wslot{border:1.5px solid var(--ed-border);border-radius:8px;padding:6px 10px;font-size:11.5px;font-weight:700}.ds2 .wslot.sel{border-color:#0d3b66;background:#0d3b661a;color:#0d3b66}.ds2 .wbar{display:flex;align-items:center;background:#0d3b66;color:#fff;padding:10px 16px;font-size:13px;font-weight:700}.ds2 .wbar .btnw{margin-left:auto;background:#fff;color:#0d3b66;border-radius:999px;padding:7px 14px;font-size:12px}.ds2 .em{width:390px;border:1px solid var(--ed-border);border-radius:10px;overflow:hidden;background:#fff}.ds2 .em .eh{padding:16px;text-align:center;border-bottom:1px solid var(--ed-border);font-weight:700;font-size:15px;color:#0d3b66}.ds2 .em .eb{padding:16px}.ds2 .em h5{font-size:15px;margin-bottom:8px}.ds2 .em p{font-size:12.5px;color:var(--ed-muted);line-height:1.6;margin-bottom:12px}.ds2 .em .ebtn{display:inline-block;background:var(--ed-navy-700);color:#fff;border-radius:8px;padding:9px 18px;font-size:12.5px;font-weight:700}.ds2 .em .ekv{width:100%;border-collapse:collapse;font-size:12px;margin-top:12px}.ds2 .em .ekv td{padding:6px 0;border-bottom:1px solid var(--ed-border)}.ds2 .em .ekv td:last-child{text-align:right;font-weight:700}.ds2 .em .ef{padding:12px 16px;background:var(--ed-sunken);font-size:10.5px;color:var(--ed-faint);text-align:center}.ds2 .mtag{display:inline-flex;align-items:center;gap:4px;background:var(--ed-navy-100);border:1px solid #cfdcef;color:var(--ed-navy-600);border-radius:6px;padding:2px 7px;font:600 11px ui-monospace,Menlo,monospace}.ds2 .kbdrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--ed-border);font-size:13.5px}.ds2 .kbdrow:last-child{border:0}.ds2 .kbdrow .keys{margin-left:auto;display:flex;gap:4px}.ds2 .kbdrow kbd{border:1px solid var(--ed-border);background:var(--ed-sunken);border-radius:5px;padding:2px 7px;font-weight:600;font-size:11px}.ds2 .ctable{width:100%;border-collapse:collapse;font-size:12.5px}.ds2 .ctable th{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.06em;color:var(--ed-faint);text-align:left;padding:9px 12px;border-bottom:1px solid var(--ed-border)}.ds2 .ctable td{padding:9px 12px;border-bottom:1px solid var(--ed-border);vertical-align:top;color:var(--ed-muted)}.ds2 .ctable td:first-child{font-weight:700;color:var(--ed-ink);white-space:nowrap}.ds2 .ctable tr:last-child td{border-bottom:0}.ds2 .actcell{white-space:nowrap}.ds2 .ract{color:var(--ed-muted);font-size:13px;padding:4px 5px;border-radius:6px;background:none;border:none}.ds2 .ract:hover{color:var(--ed-ink);background:var(--ed-sunken)}.ds2 .ract svg{width:14px;height:14px;display:block}.ds2 /* selects & pickers */
.sel{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ed-border);border-radius:var(--ed-r-ctl);padding:9px 12px;background:var(--ed-surface);font-size:13.5px;min-width:190px}.ds2 .sel .car2{margin-left:auto;color:var(--ed-faint);font-size:10px}.ds2 .menu2{width:210px;background:var(--ed-surface);border-radius:10px;box-shadow:var(--ed-shadow-pop);padding:6px;font-size:13px}.ds2 .menu2 .mi{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:7px}.ds2 .menu2 .mi:hover{background:var(--ed-sunken)}.ds2 .menu2 .mi.on{background:var(--ed-navy-100);color:var(--ed-navy-700);font-weight:700}.ds2 .menu2 .ms{display:flex;align-items:center;gap:7px;border-bottom:1px solid var(--ed-border);padding:5px 9px 8px;margin-bottom:4px;color:var(--ed-faint)}.ds2 .menu2 .ms input{border:none;outline:none;font:inherit;width:100%}.ds2 .menu2 .cnt2{margin-left:auto;color:var(--ed-faint);font-size:11px;font-weight:600}.ds2 .radio{display:flex;align-items:center;gap:9px;font-size:13.5px;padding:5px 0}.ds2 .radio .rd{width:17px;height:17px;border-radius:50%;border:1.5px solid #c6d0de;flex:0 0 17px}.ds2 .radio.on .rd{border:5px solid var(--ed-navy-700)}.ds2 .chk{width:15px;height:15px;border-radius:4px;border:1.5px solid #c6d0de;display:inline-grid;place-items:center;flex:0 0 15px;font-size:10px}.ds2 .chk.on{background:var(--ed-navy-700);border-color:var(--ed-navy-700);color:#fff}.ds2 .listbox{border:1px solid var(--ed-border);border-radius:10px;overflow:hidden;width:230px;font-size:13px}.ds2 .listbox .li{display:flex;align-items:center;gap:9px;padding:8px 11px;border-bottom:1px solid var(--ed-border)}.ds2 .listbox .li:last-child{border-bottom:0}.ds2 .listbox .li.on{background:var(--ed-navy-100)}.ds2 .mspill{display:inline-flex;align-items:center;gap:5px;background:var(--ed-navy-100);color:var(--ed-navy-700);border-radius:6px;padding:2px 7px;font-size:11.5px;font-weight:700}.ds2 .mspill i{font-style:normal;color:var(--ed-navy-600);opacity:.7;cursor:pointer}.ds2 /* advanced disclosure */
.adv{border-top:1px solid var(--ed-border);margin-top:6px}.ds2 .adv .advh{display:flex;align-items:center;gap:8px;padding:11px 0;font-size:13px;font-weight:700;color:var(--ed-muted);cursor:pointer}.ds2 .adv .advh .car{transition:transform var(--ed-fast)}.ds2 .adv.open .advh .car{transform:rotate(90deg)}.ds2 .adv .advb{display:none;padding:2px 0 12px}.ds2 .adv.open .advb{display:flex;flex-direction:column;gap:12px}.ds2 /* unified notifications */
.ntoast{display:flex;gap:11px;align-items:flex-start;background:var(--ed-surface);border:1px solid var(--ed-border);border-left:3px solid var(--ed-success);border-radius:11px;box-shadow:var(--ed-shadow-pop);padding:12px 14px;width:320px;position:relative;overflow:hidden}.ds2 .ntoast .ni{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:12px;font-weight:800;flex:0 0 26px}.ds2 .ntoast b{display:block;font-size:13px}.ds2 .ntoast small{font:var(--ed-small-12);color:var(--ed-muted);display:block}.ds2 .ntoast .nx{margin-left:auto;color:var(--ed-faint);font-size:12px}.ds2 .ntoast .nbar{position:absolute;left:0;bottom:0;height:2px;background:var(--ed-border);width:100%}.ds2 .ntoast .nbar i{display:block;height:100%;width:62%;background:var(--ed-success)}.ds2 .ntoast.ok{border-left-color:var(--ed-success)}.ds2 .ntoast.ok .ni{background:var(--ed-success-soft);color:var(--ed-success)}.ds2 .ntoast.err{border-left-color:var(--ed-danger)}.ds2 .ntoast.err .ni{background:var(--ed-danger-soft);color:var(--ed-danger)}.ds2 .ntoast.err .nbar{display:none}.ds2 .ntoast.warn{border-left-color:var(--ed-warning)}.ds2 .ntoast.warn .ni{background:var(--ed-warning-soft);color:var(--ed-warning)}.ds2 .ntoast .act2{color:var(--ed-navy-600);font-weight:700;font-size:12px;margin-top:3px;display:inline-block}.ds2 .saved{display:inline-flex;align-items:center;gap:7px;background:var(--ed-ink);color:#fff;border-radius:999px;padding:7px 14px;font-size:12.5px;font-weight:700;box-shadow:var(--ed-shadow-pop)}.ds2 .roster{width:100%;border-collapse:collapse;font-size:12px}.ds2 .roster th{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.05em;color:var(--ed-faint);padding:8px;border-bottom:1px solid var(--ed-border);text-align:center}.ds2 .roster th:first-child{text-align:left;width:150px}.ds2 .roster td{border:1px solid var(--ed-border);padding:4px;height:44px;vertical-align:middle;text-align:center}.ds2 .roster td:first-child{border-left:0;text-align:left;padding:6px 8px}.ds2 .roster td:last-child{border-right:0}.ds2 .roster .staff b{display:block;font-size:12.5px}.ds2 .roster .staff small{color:var(--ed-faint);font-size:10.5px}.ds2 .roster .demand{background:var(--ed-warning-soft);color:var(--ed-warning);font-weight:700;border-radius:999px;display:inline-block;padding:1px 8px;font-size:10.5px}.ds2 .roster .demand.hot{background:var(--ed-danger-soft);color:var(--ed-danger)}.ds2 .shift{display:block;border-radius:6px;padding:3px 6px;font-size:10.5px;font-weight:700;text-align:left}.ds2 .shift.pub{background:var(--ed-success-soft);color:var(--ed-success)}.ds2 .shift.unpub{background:var(--ed-warning-soft);color:var(--ed-warning);border:1px dashed #e3c79b}.ds2 .shift.open{background:var(--ed-navy-100);color:var(--ed-navy-600);border:1px dashed #cfdcef}.ds2 .roster .addc{color:var(--ed-faint);font-weight:700}.ds2 .wiz{display:flex;align-items:center;gap:8px;padding:10px 0;font-size:12px;font-weight:700}.ds2 .wiz .st{display:flex;align-items:center;gap:6px;color:var(--ed-faint)}.ds2 .wiz .st .n{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--ed-border);display:grid;place-items:center;font-size:10.5px}.ds2 .wiz .st.done{color:var(--ed-success)}.ds2 .wiz .st.done .n{background:var(--ed-success);border-color:var(--ed-success);color:#fff}.ds2 .wiz .st.cur{color:var(--ed-navy-700)}.ds2 .wiz .st.cur .n{border-color:var(--ed-navy-700);background:var(--ed-navy-100)}.ds2 .wiz .ln{flex:1;height:1.5px;background:var(--ed-border)}.ds2 .codeblk{border:1px solid var(--ed-border);border-radius:10px;overflow:hidden}.ds2 .codeblk .ch{display:flex;align-items:center;gap:8px;padding:9px 13px;background:var(--ed-sunken);border-bottom:1px solid var(--ed-border);font:var(--ed-small-12);font-weight:700}.ds2 .codeblk .ch .cp{margin-left:auto;color:var(--ed-navy-600);font-weight:700;font-size:12px}.ds2 .codeblk pre{margin:0;padding:13px 15px;background:#1d2b45;color:#cfe0f5;font:11.5px/1.6 ui-monospace,Menlo,monospace;overflow-x:auto}.ds2 .codeblk pre .tg{color:#8fd0c2}.ds2 .codeblk pre .at{color:#e8b96a}.ds2 .numstep{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13.5px;padding:12px 16px;border-bottom:1px solid var(--ed-border)}.ds2 .numstep .n{width:22px;height:22px;border-radius:50%;background:var(--ed-ink);color:#fff;display:grid;place-items:center;font-size:11px;flex:0 0 22px}.ds2 .wkv{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 16px;color:var(--ed-muted)}.ds2 .wkv b{color:var(--ed-ink)}.ds2 .setrow{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--ed-border);font-size:13px}.ds2 .setrow:last-child{border-bottom:0}.ds2 .setrow .lab{flex:1;font-weight:600}.ds2 .setrow .lab small{display:block;font-weight:400;color:var(--ed-faint);font-size:11px}.ds2 .setacc{border:1px solid var(--ed-border);border-radius:10px;overflow:hidden}.ds2 .setacc .sah{display:flex;align-items:center;gap:10px;padding:12px 16px;font-weight:700;font-size:13.5px}.ds2 .setacc .sah small{font-weight:400;color:var(--ed-muted);font-size:12px}.ds2 .setacc .sah .car{margin-left:auto;color:var(--ed-faint)}.ds2 .snav{width:190px;flex:0 0 190px;border:1px solid var(--ed-border);border-radius:10px;padding:10px;background:var(--ed-surface)}.ds2 .snav .sg{font:var(--ed-caption-11);text-transform:uppercase;letter-spacing:.08em;color:var(--ed-faint);padding:8px 8px 3px}.ds2 .snav a{display:block;padding:5px 8px;border-radius:7px;color:var(--ed-ink);font-size:12.5px;font-weight:600;text-decoration:none}.ds2 .snav a.on{background:var(--ed-navy-100);color:var(--ed-navy-700)}


/* Embedded-in-portal layout: the spec renders as a fixed layer beside the app
   sidebar with its own scrolling, so the layout's body-scroll handling cannot
   interfere. */
.ds2 { position: fixed; top: 0; right: 0; bottom: 0; left: 240px; overflow: hidden; background: var(--ed-canvas); z-index: 5; }
.ds2 .wrap { height: 100%; min-height: 0; display: flex; }
.ds2 .rail { height: 100%; overflow-y: auto; position: static; flex: 0 0 220px; }
.ds2 .content { height: 100%; overflow-y: auto; flex: 1; max-width: none; padding: 36px 44px 80px !important; }
.ds2 .content > section { max-width: 1060px; }
@media (max-width: 991px) { .ds2 { left: 0; } }

/* Bootstrap's grid .row/.col rules leak into the spec's flex rows - neutralize
   them inside .ds2 (the spec's .row is a plain flex row). */
.ds2 .row { margin: 0; --bs-gutter-x: 0; --bs-gutter-y: 0; flex-wrap: wrap; }
.ds2 .row > * { width: auto; max-width: none; margin: 0; flex-shrink: 0; }

/* Phone: the spec page itself follows the responsive contracts it documents -
   rail collapses to a top strip, content full width (#4105). */
@media (max-width: 767.98px) {
	.ds2 .wrap { flex-direction: column; }
	.ds2 .rail { flex: 0 0 auto; width: 100%; height: auto; max-height: 180px; }
	.ds2 .content { padding: 20px 14px 60px !important; }
}
