/* ============================================================
   CAPITAL ALLOCATION — APP SHELL (Stage 3)
   Desktop: persistent left sidebar. Mobile: top-left hamburger
   opening a left slide-out drawer. Token-driven, no dependencies.
   ============================================================ */

/* ---------- content offsets ---------- */
body.ca-shell{min-height:100vh;min-height:100svh}
@media(min-width:1000px){
  body.ca-shell{margin-left:248px}
  .ca-mobilebar{display:none}
}
@media(max-width:999.98px){
  body.ca-shell{padding-top:76px}
  .ca-sidebar{display:none}
}

/* ---------- skip link ---------- */
.ca-skip{position:fixed;left:12px;top:-48px;z-index:var(--ca-z-skip);background:var(--ca-accent);color:#12101F;font-family:var(--ca-font-body);font-weight:600;font-size:13px;padding:10px 16px;border-radius:10px;text-decoration:none;transition:top .15s}
.ca-skip:focus-visible{top:12px;outline:none;box-shadow:var(--ca-focus-ring)}

/* ---------- desktop sidebar ---------- */
.ca-sidebar{position:fixed;left:0;top:0;bottom:0;width:248px;background:var(--ca-sidebar);border-right:1px solid var(--ca-border-subtle);display:flex;flex-direction:column;z-index:var(--ca-z-nav);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ca-border) transparent}
.ca-brand{display:flex;align-items:center;gap:11px;padding:22px 20px 18px;text-decoration:none;flex:none}
.ca-brand__mark{flex:none;width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--ca-lavender),var(--ca-violet));display:grid;place-items:center;box-shadow:0 4px 14px -6px rgba(109,93,251,.7)}
.ca-brand__mark svg{width:16px;height:16px;fill:none;stroke:#12101F;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.ca-brand__name{font-family:var(--ca-font-display);font-weight:700;font-size:15px;color:#FFFFFF;letter-spacing:-.01em;line-height:1.15}
.ca-brand__tag{display:block;font-family:var(--ca-font-data);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:#8C91A3;margin-top:3px}
.ca-nav{flex:1;padding:4px 12px 16px;display:flex;flex-direction:column;gap:18px}
.ca-nav__group{display:flex;flex-direction:column;gap:2px}
.ca-nav__eyebrow{font-family:var(--ca-font-data);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:#5C6172;padding:0 10px;margin-bottom:6px}
.ca-nav__item{position:relative;display:flex;align-items:center;gap:11px;min-height:40px;padding:0 10px;border-radius:10px;color:#B9BDCB;font-family:var(--ca-font-body);font-size:13.5px;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s}
.ca-nav__item svg{flex:none;width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.ca-nav__item:hover{background:rgba(255,255,255,.05);color:#FFFFFF}
.ca-nav__item:focus-visible{outline:none;box-shadow:var(--ca-focus-ring)}
.ca-nav__item[aria-current="page"]{background:rgba(99,91,255,.13);color:#FFFFFF}
.ca-nav__item[aria-current="page"]::before{content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--ca-lavender)}
.ca-nav__item[aria-current="page"] svg{stroke:var(--ca-lavender);opacity:1}
.ca-nav__soon{margin-left:auto;font-family:var(--ca-font-data);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:#5C6172;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:3px 7px}
.ca-sidebar__foot{flex:none;padding:14px 20px 18px;border-top:1px solid rgba(255,255,255,.06);font-family:var(--ca-font-data);font-size:9.5px;letter-spacing:.06em;color:#5C6172;line-height:1.8}

/* ---------- mobile top bar (hamburger on the LEFT) ---------- */
.ca-mobilebar{display:none!important}
.ca-burger{flex:none;order:0;width:44px;height:44px;display:grid;place-items:center;background:transparent;border:1px solid var(--ca-border-subtle);border-radius:12px;color:#E7E9F0;cursor:pointer;transition:border-color .15s}
.ca-burger:hover{border-color:var(--ca-border)}
.ca-burger:focus-visible{outline:none;box-shadow:var(--ca-focus-ring)}
.ca-burger svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.ca-mobilebar .ca-brand{padding:0;gap:9px}
.ca-mobilebar .ca-brand__mark{width:28px;height:28px;border-radius:8px}
.ca-mobilebar .ca-brand__name{font-size:14px}
.ca-mobilebar .ca-brand__tag{display:none}

/* ---------- left drawer ---------- */
.ca-scrim{position:fixed;inset:0;z-index:var(--ca-z-scrim);background:rgba(6,7,10,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .22s}
.ca-drawer{position:fixed;top:0;bottom:0;left:0;z-index:var(--ca-z-drawer);width:min(302px,86vw);background:var(--ca-sidebar);border-right:1px solid var(--ca-border);display:flex;flex-direction:column;transform:translateX(-104%);transition:transform .26s cubic-bezier(.22,.9,.3,1);overflow-y:auto;padding-bottom:env(safe-area-inset-bottom,0px);box-shadow:var(--ca-elev-3)}
body.ca-drawer-open .ca-scrim{opacity:1;pointer-events:auto}
body.ca-drawer-open .ca-drawer{transform:none}
body.ca-drawer-open{overflow:hidden}
.ca-drawer__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 12px 8px 20px;flex:none}
.ca-drawer__head .ca-brand{padding:8px 0}
.ca-drawer__close{flex:none;width:44px;height:44px;display:grid;place-items:center;background:transparent;border:1px solid var(--ca-border-subtle);border-radius:12px;color:#B9BDCB;cursor:pointer;transition:border-color .15s,color .15s}
.ca-drawer__close:hover{border-color:var(--ca-border);color:#fff}
.ca-drawer__close:focus-visible{outline:none;box-shadow:var(--ca-focus-ring)}
.ca-drawer__close svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.ca-drawer .ca-nav{padding:6px 14px 18px}
.ca-drawer .ca-nav__item{min-height:48px;font-size:14.5px}
.ca-drawer .ca-sidebar__foot{border-top:1px solid rgba(255,255,255,.06)}
@media(min-width:1000px){.ca-drawer,.ca-scrim{display:none}}
@media(prefers-reduced-motion:reduce){.ca-drawer{transition:none}.ca-scrim{transition:none}}

/* ============================================================
   PLATFORM PAGES (Overview + module placeholders)
   ============================================================ */
.ca-main{display:block}
.ca-page{max-width:880px;margin:0 auto;padding:36px 18px 72px}
@media(max-width:999.98px){.ca-page{padding-top:12px}}
.ca-page>*+*{margin-top:16px}
.ca-page .ca-page-head{margin-bottom:22px}
.ca-status{display:inline-flex;align-items:center;gap:7px}
.ca-modgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:0}
.ca-modcard{display:flex;flex-direction:column;gap:8px;background:var(--ca-card);border:var(--ca-line);border-radius:var(--ca-r-lg);padding:18px;text-decoration:none;color:inherit;transition:border-color .15s,transform .15s}
.ca-modcard:hover{border-color:var(--ca-border);transform:translateY(-1px)}
.ca-modcard:focus-visible{outline:none;box-shadow:var(--ca-focus-ring)}
.ca-modcard__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ca-modcard__icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--ca-accent-soft);color:var(--ca-accent)}
.ca-modcard__icon svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ca-modcard h3{font-family:var(--ca-font-display);font-weight:700;font-size:15.5px;letter-spacing:-.005em}
.ca-modcard p{font-size:12.5px;color:var(--ca-text-3);line-height:1.6}
.ca-flagship{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--ca-card-elev),var(--ca-card));border:1px solid var(--ca-border);border-radius:var(--ca-r-lg);padding:24px;box-shadow:var(--ca-elev-2)}
.ca-flagship::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--ca-lavender),var(--ca-violet))}
.ca-flagship h2{font-family:var(--ca-font-display);font-weight:700;font-size:clamp(19px,3.4vw,24px);letter-spacing:-.01em;line-height:1.2;margin:10px 0 8px}
.ca-flagship p{font-size:13.5px;color:var(--ca-text-2);line-height:1.65;max-width:62ch;margin-bottom:16px}
.ca-plan-list{list-style:none;display:flex;flex-direction:column;gap:0;background:var(--ca-card);border:var(--ca-line);border-radius:var(--ca-r-lg);padding:6px 18px}
.ca-plan-list li{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-top:1px solid rgba(255,255,255,.05);font-size:13.5px;color:var(--ca-text-2);line-height:1.6}
.ca-plan-list li:first-child{border-top:none}
.ca-plan-list li::before{content:"";flex:none;width:7px;height:7px;border-radius:2px;background:var(--ca-accent);margin-top:7px;opacity:.85}
.ca-plan-list li b{color:var(--ca-text-1);font-weight:600}
.ca-truststrip{display:flex;flex-wrap:wrap;gap:8px}
.ca-truststrip .ca-badge{min-height:30px;padding:5px 13px;font-family:var(--ca-font-data);font-weight:500;letter-spacing:.05em;font-size:10.5px}
.ca-backrow{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* s151.2 — file:// guard. Warn token, never green; renders only when the site is
   opened as a local file, where storage cannot be shared between pages. */
.caFileWarn{background:rgba(201,162,39,.12);border-bottom:1px solid rgba(201,162,39,.55);color:var(--ca-text);padding:11px 18px;font-size:13px;line-height:1.55}
.caFileWarn b{color:#C9A227}
