/* SeenAI Platform — application shell mechanics only. */
html,body.seenai-platform-v1-page{margin:0;padding:0;width:100%;height:100%;max-width:none;background:#fff}
body.seenai-platform-v1-page>header,body.seenai-platform-v1-page>footer,body.seenai-platform-v1-page>.site,body.seenai-platform-v1-page>#page{display:none}
body.seenai-platform-v1-page{font-family:var(--sa-font-family);color:var(--sa-text);overflow:hidden}
html.sa-lock{overflow:hidden}
.seenai-platform-v1{height:100dvh;min-height:0;overflow:hidden;background:#fff;color:var(--sa-text);font-size:14px;line-height:1.5;display:flex;flex-direction:column}
.seenai-platform-v1 svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* Full-width topbar + fixed shell body. */
.sa-topbar{flex:0 0 var(--sa-topbar-height);position:relative;z-index:70;display:flex;align-items:center;justify-content:space-between;gap:16px}
.sa-topbar-left,.sa-topbar-right{display:flex;align-items:center;min-width:0}
.sa-layout{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:var(--sa-global-rail-width) var(--sa-sidebar-width) minmax(0,1fr);overflow:hidden}
.sa-global-rail{width:var(--sa-global-rail-width);height:100%;position:relative;z-index:60;display:flex;flex-direction:column;overflow:visible;transition:width 100ms linear}
.sa-global-rail[data-state="expanded"]{width:var(--sa-global-rail-expanded)}
.sa-global-nav{display:flex;flex:1;min-height:0;flex-direction:column;overflow:hidden}.sa-global-nav-group{display:flex;flex-direction:column}.sa-global-nav-utility{margin-top:auto}.sa-global-nav-link{min-width:0}.sa-global-rail[data-state="expanded"] .sa-global-nav-link,.sa-global-rail[data-state="expanded"] .sa-global-control{width:calc(var(--sa-global-rail-expanded) - 12px)}
.sa-global-rail[data-state="collapsed"] .sa-global-nav-link,.sa-global-rail[data-state="collapsed"] .sa-global-control{width:36px}
.sa-global-rail-foot{flex:0 0 auto;position:relative}
.sa-sidebar{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden;z-index:40}.sa-nav{flex:1;min-height:0;overflow:auto}.sa-nav-item{width:100%;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer}.sa-nav-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sa-nav-item svg{flex:0 0 auto}
.sa-mobile-global-wrap{display:none}
.sa-main{min-width:0;min-height:0;height:100%;overflow-y:auto;overflow-x:hidden;background:#fff;scrollbar-gutter:stable}
.sa-content{min-height:100%}

/* External global layers are design-system scope only, not an app root.
   Keep fixed overlays functional without letting the wrapper consume shell height. */
.sa-external-global-layers.seenai-platform-v1{position:fixed;inset:0;width:0;height:0;min-height:0!important;background:transparent!important;overflow:visible;pointer-events:none;z-index:1000}
.sa-external-global-layers.seenai-platform-v1>.sa-layer{pointer-events:auto}

/* Layer mechanics */
.sa-layer{position:fixed;inset:0;z-index:1000;display:none}.sa-layer.open{display:block}.sa-layer-backdrop{position:absolute;inset:0;border:0;cursor:default}.sa-drawer{position:absolute;right:0;top:0;height:100%;display:flex;flex-direction:column;outline:none}.sa-drawer>header{display:flex;align-items:center;justify-content:space-between}.sa-drawer-body{overflow:auto;min-height:0}.sa-account-menu,.sa-tool-menu{position:fixed;z-index:1100;outline:none}.sa-account-identity{display:flex;align-items:center}

/* Common layout mechanics */
.sa-page-head{display:flex;align-items:flex-start;justify-content:space-between}.sa-card-head{display:flex;align-items:flex-start;justify-content:space-between}.sa-card-actions{display:flex;flex-wrap:wrap}.sa-inline-alert,.sa-inline-notice{display:flex;align-items:flex-start}.sa-status,.sa-pill{display:inline-flex;align-items:center}.sa-section-stack{display:flex;flex-direction:column;gap:14px}.sa-rich-text{grid-column:1/-1}.sa-compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sa-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.sa-state-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

/* Authentication mechanics */
.sa-auth-page{min-height:100vh}.sa-auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(440px,.82fr) minmax(520px,1.18fr);grid-template-rows:auto 1fr;background:#fff}.sa-auth-logo{grid-column:1;grid-row:1;display:inline-flex;align-items:center;width:max-content;text-decoration:none;margin:34px 0 0 clamp(34px,6vw,104px)}.sa-auth-main{grid-column:1;grid-row:2;display:flex;align-items:center;justify-content:flex-start;padding:28px clamp(34px,6vw,104px) 72px}.sa-auth-promo{grid-column:2;grid-row:1/3;display:flex;align-items:center;padding:clamp(54px,7vw,118px)}.sa-auth-links{display:flex;justify-content:space-between;flex-wrap:wrap}.sa-auth-form .sa-check{display:flex;align-items:center;gap:9px}.sa-auth-form .sa-check input{width:16px;height:16px;min-height:0}.sa-resend-form{margin-top:14px}

/* Loading/skeleton mechanics */
.sa-skeleton-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.sa-skeleton-form-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}.sa-skeleton-stack{display:grid;gap:12px}

/* External report shell uses the same fixed frame. */
.seenai-report-integrated{height:100dvh;min-height:0;overflow:hidden;display:flex;flex-direction:column}.seenai-report-integrated>.sa-layout{flex:1 1 auto;min-height:0;overflow:hidden}.seenai-report-integrated .sa-main{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden}

@media(max-width:980px){
  .sa-layout{grid-template-columns:var(--sa-global-rail-width) 210px minmax(0,1fr)}
  .sa-order-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sa-auth-shell{grid-template-columns:minmax(400px,.95fr) minmax(420px,1.05fr)}.sa-auth-logo{margin-left:44px}.sa-auth-main{padding-left:44px;padding-right:44px}.sa-auth-promo{padding:56px}
}
@media(max-width:860px){.sa-auth-shell{display:block;padding:22px 18px 38px}.sa-auth-logo{margin:0}.sa-auth-main{display:flex;justify-content:center;padding:42px 0 22px}.sa-auth-promo{display:none}}
@media(max-width:760px){
  .sa-layout{display:block}.sa-global-rail{display:none}.sa-sidebar{position:fixed;left:0;top:var(--sa-topbar-height);bottom:0;width:min(var(--sa-mobile-drawer-width),calc(100vw - 28px));height:auto;transform:translateX(-105%);transition:transform .18s ease;box-shadow:0 14px 40px rgba(15,23,42,.14);z-index:90;overflow-y:auto}.sa-sidebar.open{transform:translateX(0)}.sa-sidebar .sa-nav{overflow:visible;flex:0 0 auto}.sa-mobile-global-wrap{display:block}.sa-mobile-menu{display:grid}.sa-main{height:100%;overflow-y:auto}.sa-page-head{display:block}.sa-page-head>.sa-btn,.sa-page-head>.sa-status{margin-top:12px}.sa-overview-grid,.sa-skeleton-grid,.sa-skeleton-form-pair{grid-template-columns:1fr}.sa-rich-text{grid-column:auto}
}
/* Notification behavior: motion only; layout remains owned by the existing design system. */
@keyframes sa-notification-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes sa-notification-drawer-in{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:translateX(0)}}
#sa-layer-notifications.open .sa-layer-backdrop{animation:sa-notification-backdrop-in .18s ease both}
#sa-layer-notifications.open .sa-drawer{animation:sa-notification-drawer-in .18s ease both}
@media (prefers-reduced-motion:reduce){#sa-layer-notifications.open .sa-layer-backdrop,#sa-layer-notifications.open .sa-drawer{animation:none}}

/* 0.31.5 — requested shell-only fixes. No content/layout redesign. */

/* Notification unread indicator: the HTML hidden state must win over the badge's grid display. */
.sa-notification-badge[hidden]{display:none}

/* Desktop does not need the mobile hamburger; keep the existing mobile drawer trigger below 760px. */
.sa-icon-btn.sa-mobile-menu{display:none}
@media(max-width:760px){.sa-icon-btn.sa-mobile-menu{display:grid}}

/* SeenAI brand logo in the existing topbar home slot. */
.sa-topbar-logo-image{display:block;width:auto;height:22px;max-width:96px;object-fit:contain}

/* Internal route navigation loading feedback. The shell itself stays fixed. */
.seenai-platform-v1 [data-sa-hydrate="content"].sa-content-route-loading{
  position:relative;
  min-height:180px;
  overflow:hidden;
}
.seenai-platform-v1 [data-sa-hydrate="content"].sa-content-route-loading::before{
  content:"";
  position:absolute;
  z-index:30;
  inset:0;
  border-radius:16px;
  background:color-mix(in srgb, var(--sa-surface, #fff) 46%, transparent);
  pointer-events:none;
}
.seenai-platform-v1 [data-sa-hydrate="content"].sa-content-route-loading::after{
  content:"";
  position:absolute;
  z-index:31;
  top:0;
  left:0;
  width:34%;
  height:3px;
  border-radius:999px;
  background:var(--sa-blue, #2563eb);
  transform:translateX(-105%);
  animation:sa-content-route-progress .85s ease-in-out infinite;
  pointer-events:none;
}
@keyframes sa-content-route-progress{
  0%{transform:translateX(-105%)}
  70%{transform:translateX(205%)}
  100%{transform:translateX(310%)}
}
@media(prefers-reduced-motion:reduce){
  .seenai-platform-v1 [data-sa-hydrate="content"].sa-content-route-loading::after{animation:none;transform:none;width:100%}
}
