/* Production dashboard shell. The report content comes from actual scans. */
.app-shell { display:grid; grid-template-columns:244px minmax(0,1fr); min-height:100dvh; }
.sidebar { position:sticky; top:0; height:100dvh; min-height:620px; padding:24px 16px 18px; background:#13243a; color:#eaf0f2; display:flex; flex-direction:column; z-index:30; }
.sidebar-brand { display:flex; align-items:center; gap:11px; padding:0 9px 24px; border-bottom:1px solid #34495d; color:#fff; text-decoration:none; }
.sidebar-brand img { width:35px; height:35px; flex:none; }
.sidebar-brand b { display:block; font:700 15px/1 Archivo,sans-serif; letter-spacing:-.045em; white-space:nowrap; }
.sidebar-brand small { display:block; margin-top:5px; color:#a7b7c4; font:500 9px "IBM Plex Mono",monospace; letter-spacing:.08em; text-transform:uppercase; }
.sidebar-label { padding:27px 10px 10px; color:#91a4b4; font:500 10px "IBM Plex Mono",monospace; letter-spacing:.14em; text-transform:uppercase; }
.side-nav { display:grid; gap:5px; }
.side-nav button { display:flex; align-items:center; gap:11px; width:100%; min-height:44px; padding:0 11px; border:0; border-radius:5px; background:transparent; color:#b8c5cf; text-align:left; font:500 13px "DM Sans",sans-serif; cursor:pointer; }
.side-nav button:hover { background:#20374f; color:#fff; }
.side-nav button[aria-current="page"] { background:#294763; color:#fff; box-shadow:inset 3px 0 #f2a164; }
.side-nav button > span { width:18px; text-align:center; font-size:17px; line-height:1; color:#aebdc8; }
.side-nav button[aria-current="page"] > span { color:#f2a164; }
.side-nav small { margin-left:auto; display:grid; place-items:center; min-width:21px; height:21px; border-radius:11px; background:#37516a; color:#fff; font:10px "IBM Plex Mono",monospace; }
.sidebar-bottom { margin-top:auto; }
.sidebar-note { margin:0 3px 18px; padding:13px; background:#1a3048; border:1px solid #2c4359; border-radius:6px; }
.sidebar-note b { color:#eef1ef; font:600 12px Archivo,sans-serif; }
.sidebar-note p { margin:7px 0 0; color:#aab9c4; font-size:11px; line-height:1.5; }
.sidebar-site { display:flex; align-items:center; gap:10px; border-top:1px solid #34495d; padding:16px 5px 2px; min-width:0; }
.sidebar-site div { min-width:0; }
.sidebar-site b { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; color:#e9eef1; }
.sidebar-site small { display:block; color:#9bacba; font-size:10px; margin-top:2px; }
.site-avatar { width:33px; height:33px; flex:none; border-radius:50%; display:grid; place-items:center; background:#e2c9aa; color:#473926; font-size:18px; }
.workspace { min-width:0; }
.workspace-bar { position:sticky; top:0; z-index:20; height:59px; padding:0 clamp(20px,4vw,54px); display:flex; align-items:center; justify-content:space-between; gap:18px; background:#fbfcfcf2; border-bottom:1px solid var(--line); backdrop-filter:blur(12px); }
.bar-left { display:flex; align-items:center; gap:10px; color:#788797; font-size:11px; }
.bar-left b { color:#263d53; font-weight:600; }
.bar-scope { color:#607386; font-size:11px; white-space:nowrap; display:flex; align-items:center; gap:7px; }
.bar-scope i { width:7px; height:7px; border-radius:50%; background:#49a180; }
.menu-toggle { display:none; width:38px; height:38px; border:1px solid var(--line); border-radius:5px; background:#fff; color:var(--ink); font-size:18px; cursor:pointer; }
.workspace main { max-width:1370px; min-height:calc(100dvh - 59px); margin:0 auto; padding:30px clamp(20px,4vw,54px) 48px; }
.page-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:23px; }
.page-heading .eyebrow { margin:0 0 10px; color:#35677e; font-size:10px; }
.page-heading h1 { margin:0; max-width:780px; color:var(--ink); font:700 clamp(28px,3vw,40px)/1.05 Archivo,sans-serif; letter-spacing:-.065em; }
.page-heading p:last-child { margin:8px 0 0; color:#607184; font-size:13px; }
.page-heading .btn { flex:none; white-space:nowrap; }
.workspace .hero { max-width:none; border-radius:6px; padding:35px clamp(22px,4vw,42px); }
.workspace .hero h1 { font-size:clamp(35px,4.2vw,55px); max-width:720px; }
.workspace .hero .lede { font-size:16px; max-width:62ch; }
.workspace #s-home .box { margin-top:18px; }
.workspace #s-home .box .row { border-top:1px solid var(--line); padding:12px 0; }
.workspace #s-home .box .row:first-of-type { border-top:0; }
.report-hero { padding:22px 25px 18px; background:#13243a; color:#f0f2f1; border-radius:7px; overflow:hidden; position:relative; }
.report-hero:before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.16; background-image:linear-gradient(#91a9ba 1px,transparent 1px),linear-gradient(90deg,#91a9ba 1px,transparent 1px); background-size:34px 34px; mask-image:linear-gradient(105deg,transparent 0%,#000 100%); }
.report-hero > * { position:relative; }
.report-head { display:flex; align-items:center; justify-content:space-between; gap:15px; padding-bottom:16px; border-bottom:1px solid #344b60; }
.report-identity { display:flex; align-items:center; gap:10px; min-width:0; }
.report-identity img { width:27px; height:27px; }
.report-identity h2 { font:600 15px Archivo,sans-serif; letter-spacing:-.02em; margin:0; color:#fff; overflow:hidden; text-overflow:ellipsis; }
.report-identity small { display:block; margin-top:3px; color:#aabac5; font:10px "IBM Plex Mono",monospace; overflow-wrap:anywhere; }
#report-date { color:#c5d1d8; font:10px "IBM Plex Mono",monospace; white-space:nowrap; }
.report-main { display:grid; grid-template-columns:minmax(260px,.9fr) minmax(330px,1.1fr); align-items:center; gap:clamp(20px,4vw,54px); padding:23px 8px; }
.report-hero .score { background:transparent; padding:0; box-shadow:none; border-radius:0; gap:21px; min-width:0; }
.report-hero .score:before { display:none; }
.report-hero .score .ring { width:125px; height:125px; }
.report-hero .score .ring svg { width:125px; height:125px; }
.report-hero .score .ring .track { stroke:#415b73; }
.report-hero .score .ring .num { font-size:44px; }
.score-label { display:inline-block; padding:4px 7px; background:#304961; color:#f8bd8f; font:500 10px "IBM Plex Mono",monospace; text-transform:uppercase; }
.report-hero .score .v { margin:9px 0 4px; font:600 18px/1.2 Archivo,sans-serif; color:#fff; }
.report-hero .score .sub { margin:0; color:#bac7d0; font-size:12px; }
.report-stats { display:grid; grid-template-columns:1fr 1fr; gap:15px 18px; }
.report-stats > div { border-left:2px solid #536c80; padding-left:11px; min-width:0; }
.report-stats > div:nth-child(2) { border-color:#f2a164; }
.report-stats > div:nth-child(3) { border-color:#83b99f; }
.report-stats span { display:block; color:#aabdc9; font:500 9px "IBM Plex Mono",monospace; text-transform:uppercase; letter-spacing:.07em; }
.report-stats strong { display:block; margin-top:5px; color:#f2f3f0; font:600 14px Archivo,sans-serif; line-height:1.3; }
.report-stats small { display:block; margin-top:3px; color:#bac6ce; font-size:10px; line-height:1.4; }
.report-scope { border-top:1px solid #344b60; padding-top:13px; color:#b4c1cb; font:10px/1.5 "IBM Plex Mono",monospace; }
.report-scope b { color:#e1e9eb; }
.dashboard-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(280px,.75fr); gap:17px; align-items:start; margin-top:18px; }
.dashboard-panel,.subview { background:#fbfcfc; border:1px solid var(--line); border-radius:6px; box-shadow:0 3px 12px #1d344508; overflow:hidden; }
.panel-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:18px 19px 14px; border-bottom:1px solid #e0e5e8; }
.panel-heading h2,.subview h2 { font:600 17px Archivo,sans-serif; letter-spacing:-.03em; margin:0; }
.panel-heading p { font-size:11px; color:#758596; margin:5px 0 0; }
.panel-foot { padding:13px 18px; background:#f3f6f6; border-top:1px solid #e0e5e8; color:#728191; font-size:11px; line-height:1.5; }
.signal { border-bottom:1px solid #e5e9eb; margin:0 17px; }
.signal:last-child { border:0; }
.signal summary { display:grid; grid-template-columns:26px minmax(0,1fr) 54px 14px; align-items:center; gap:10px; padding:13px 0; font-weight:400; }
.signal summary:hover { color:#1d4f6c; }
.signal-index { color:#8a98a5; font:10px "IBM Plex Mono",monospace; }
.signal-title { display:block; font:600 12px Archivo,sans-serif; }
.signal-desc { display:block; margin-top:3px; color:#758596; font-size:10px; font-weight:400; line-height:1.4; }
.signal-score { color:#24465b; text-align:right; font:600 14px Archivo,sans-serif; }
.signal-chevron { color:#718494; font-size:18px; }
.signal[open] .signal-chevron { transform:rotate(90deg); }
.signal-detail { margin:0 0 13px 36px; padding:12px; background:#f0f4f5; border-left:2px solid #77a2b6; color:#42586a; font-size:11px; line-height:1.5; }
.signal-detail b { display:block; margin-bottom:5px; color:#336078; font:500 10px "IBM Plex Mono",monospace; text-transform:uppercase; }
.signal-detail ul { padding-left:17px; margin:8px 0 0; }
.plan-count { white-space:nowrap; background:#f4e6d8; color:#9c512b; padding:4px 7px; font:500 9px "IBM Plex Mono",monospace; }
.priority-item { display:grid; grid-template-columns:22px minmax(0,1fr); gap:10px; padding:14px 0; margin:0 17px; border-bottom:1px solid #e5e9eb; }
.priority-item:last-child { border:0; }
.priority-item button { width:20px; height:20px; border:1px solid #aebcc4; border-radius:3px; background:#fff; color:#fff; padding:0; font-size:12px; cursor:pointer; }
.priority-item button[aria-pressed="true"] { background:#34745f; border-color:#34745f; }
.priority-item .priority-tag { display:inline-block; background:#f8eee5; color:#a65432; padding:3px 5px; font:500 9px "IBM Plex Mono",monospace; }
.priority-item h3 { margin:5px 0 4px; color:#233b4f; font:600 12px/1.35 Archivo,sans-serif; }
.priority-item p { margin:0 0 5px; color:#738292; font-size:11px; line-height:1.5; }
.priority-item small { color:#52748a; font:9px "IBM Plex Mono",monospace; }
.priority-item.is-done h3 { text-decoration:line-through; color:#8c9aa5; }
.text-button { background:transparent; color:#315e78; border:0; padding:0; cursor:pointer; font:600 12px "DM Sans",sans-serif; }
.text-button:hover { text-decoration:underline; }
.workspace #s-result > h2 { margin-top:31px; }
.workspace .qs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.workspace .q { align-content:start; font-size:14px; }
.workspace .q b { font-size:15px; }
.subview { padding:26px; }
.subview > p { color:#687a89; font-size:13px; margin:8px 0 22px; }
.subview .box { margin-top:25px; }
.subview .box p { color:var(--muted); font-size:13px; }
.subview.no-report .plan-detail,.subview.no-report .box { display:none; }
#s-action.no-report .plan-detail,#s-action.no-report .box { display:none; }
.subview .pf { border-top:1px solid var(--line); }
.subview .pf:first-child { border-top:0; }
.history-row,.profile-row { display:grid; grid-template-columns:minmax(0,1fr) 130px 95px; gap:15px; align-items:center; border-top:1px solid var(--line); padding:15px 0; font-size:12px; color:#526779; }
.history-row strong,.profile-row strong { color:#2b4357; font:600 13px Archivo,sans-serif; }
.history-row strong { overflow-wrap:anywhere; }
.history-row b { font:600 16px Archivo,sans-serif; color:#315d76; }
.profile-row { grid-template-columns:150px 1fr; }
.empty-state { padding:25px; border:1px dashed #c3d1da; background:#f3f6f7; color:#526779; font-size:13px; }
.delivery-warning { margin-top:17px; padding:13px 17px; border:1px solid #e3b794; border-left:3px solid #d65a2f; background:#fff7ef; color:#714c37; font-size:13px; }
.empty-state p { margin:0 0 13px; }
.workspace footer { display:flex; justify-content:space-between; gap:15px; max-width:none; margin-top:35px; padding:20px 0 0; font:10px "IBM Plex Mono",monospace; }
.workspace #s-gate { max-width:650px; }
.workspace #s-contact { max-width:760px; border-radius:6px; }
button:focus-visible,a:focus-visible,summary:focus-visible { outline:3px solid #f2a164; outline-offset:2px; }
@media(max-width:1050px) {
  .app-shell { grid-template-columns:214px minmax(0,1fr); }
  .sidebar { padding-inline:12px; }
  .report-main { gap:20px; }
  .dashboard-grid { grid-template-columns:minmax(0,1.1fr) minmax(255px,.9fr); }
}
@media(max-width:800px) {
  .app-shell { grid-template-columns:1fr; }
  .sidebar { position:fixed; left:0; top:0; width:260px; min-height:0; transform:translateX(-105%); transition:transform .2s ease; }
  .sidebar.open { transform:translateX(0); }
  .mobile-scrim:not(.hidden) { position:fixed; inset:0; z-index:25; background:#0e203099; }
  .menu-toggle { display:grid; place-items:center; }
  .workspace main { padding:25px 18px 40px; }
  .workspace-bar { padding:0 17px; }
  .report-main { grid-template-columns:1fr; gap:24px; }
  .dashboard-grid { grid-template-columns:1fr; }
  .page-heading { align-items:flex-start; }
}
@media(max-width:560px) {
  .workspace-bar { height:54px; }
  .bar-scope { display:none; }
  .workspace main { padding:22px 13px 34px; }
  .page-heading { display:block; }
  .page-heading h1 { font-size:29px; }
  .page-heading .btn { width:100%; margin-top:16px; }
  .report-hero { padding:17px 15px; }
  .report-head { align-items:flex-start; }
  #report-date { font-size:8px; white-space:normal; text-align:right; }
  .report-main { padding:18px 0; }
  .report-hero .score { flex-direction:row; align-items:center; gap:13px; }
  .report-hero .score .ring,.report-hero .score .ring svg { width:95px; height:95px; }
  .report-hero .score .ring .num { font-size:35px; }
  .report-hero .score .v { font-size:15px; }
  .report-stats { gap:13px; }
  .report-stats strong { font-size:12px; }
  .report-scope { font-size:9px; }
  .workspace .qs { grid-template-columns:1fr; }
  .subview { padding:18px; }
  .history-row { grid-template-columns:minmax(0,1fr) 80px; }
  .history-row span { display:none; }
  .profile-row { grid-template-columns:1fr; gap:4px; }
  .workspace footer { flex-direction:column; }
}
@media(prefers-reduced-motion:reduce) { .sidebar { transition:none; } }
@media print {
  .app-shell { display:block; }
  .sidebar,.mobile-scrim,.workspace-bar,.page-heading,.workspace footer,#s-action,#s-history,#s-profile { display:none !important; }
  .workspace main { max-width:none; padding:0; }
  .dashboard-grid { grid-template-columns:1fr 1fr; }
  .report-hero { color:#142438; background:#fff; border:1px solid #d7dfe5; }
  .report-hero .score .v,.report-identity h2,.report-stats strong { color:#142438; }
}