:root{--page: #f9f9f7;--surface: #fcfcfb;--ink: #0b0b0b;--ink-2: #52514e;--muted: #898781;--grid: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--series-1: #2a78d6;--series-2: #1baf7a;--series-3: #eda100;--series-5: #4a3aa7;--status-good: #0ca30c;--status-good-text: #006300;--status-warning: #fab219;--status-serious: #ec835a;--status-critical: #d03b3b;--accent: #2a78d6;--accent-soft: rgba(42, 120, 214, .09);--radius: 10px;--radius-sm: 7px;--shadow: 0 1px 2px rgba(11, 11, 11, .04), 0 4px 16px rgba(11, 11, 11, .05);--font: system-ui, -apple-system, "Segoe UI", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Meiryo", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--page);color:var(--ink);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}button{font-family:inherit}.app{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:20px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:0 8px}.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--ink);display:grid;place-items:center;color:#fff}.brand-name{font-weight:650;font-size:14px;letter-spacing:-.01em}.brand-sub{font-size:10.5px;color:var(--muted);margin-top:-2px}.profile-switch{display:flex;flex-direction:column;gap:6px;position:relative}.switcher-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.switcher-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 6px 24px #0b0b0b24;padding:5px;display:flex;flex-direction:column;gap:2px}.profile-switch .label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:0 8px}.profile-btn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer;text-align:left;color:var(--ink-2);transition:background .12s}.profile-btn:hover{background:#0b0b0b0a}.profile-btn.active{background:var(--accent-soft);border-color:#2a78d640;color:var(--ink)}.profile-avatar{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}.profile-btn .p-name{font-weight:600;font-size:13px;line-height:1.2}.profile-btn .p-domain{font-size:11px;color:var(--muted)}.nav{display:flex;flex-direction:column;gap:2px}.nav-btn{display:flex;align-items:center;gap:10px;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;text-align:left;font-size:13px;color:var(--ink-2);font-weight:500}.nav-btn:hover{background:#0b0b0b0a}.nav-btn.active{background:#0b0b0b0f;color:var(--ink);font-weight:600}.nav-btn svg{width:16px;height:16px;opacity:.75}.sidebar-foot{font-size:11px;color:var(--muted);padding:8px 8px 0}.main{padding:28px 36px 60px;max-width:1080px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{font-size:21px;font-weight:700;letter-spacing:-.015em;margin:0}.page-head .sub{color:var(--muted);font-size:13px;margin-top:3px}.page-actions{display:flex;gap:8px;align-items:center}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:13px;font-weight:600;cursor:pointer;transition:all .12s}.btn:hover{border-color:#0b0b0b38}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:#1c5cab}.btn:disabled{opacity:.5;cursor:default}.btn.sm{padding:5px 10px;font-size:12px}select.month-select,.input{padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);font-size:13px;font-family:inherit;color:var(--ink)}.input:focus,select:focus{outline:2px solid rgba(42,120,214,.35);outline-offset:1px}.seg{display:inline-flex;background:#0b0b0b0d;border-radius:var(--radius-sm);padding:3px;gap:2px}.seg button{border:none;background:transparent;padding:5px 14px;border-radius:5px;font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer}.seg button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0b0b0b1a}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card+.card{margin-top:16px}.card h2{font-size:14.5px;font-weight:650;margin:0 0 14px;letter-spacing:-.01em}.card .card-sub{font-size:12px;color:var(--muted);margin:-10px 0 14px}.tile-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.tile .t-label{font-size:12px;color:var(--ink-2);font-weight:500}.tile .t-value{font-size:26px;font-weight:650;letter-spacing:-.02em;margin-top:4px;line-height:1.15}.tile .t-delta{font-size:12px;margin-top:5px;font-weight:600;display:flex;align-items:center;gap:4px}.t-delta.up{color:var(--status-good-text)}.t-delta.down{color:var(--status-critical)}.t-delta.flat{color:var(--muted)}.t-delta .vs{color:var(--muted);font-weight:500}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:2.5px 9px;border-radius:99px;letter-spacing:.02em;white-space:nowrap}.badge.issue{background:#d03b3b1a;color:#a32222}.badge.warning{background:#fab21929;color:#7a5200}.badge.opportunity{background:#2a78d61a;color:#1c5cab}.badge.high{background:#d03b3b1f;color:#a32222}.badge.medium{background:#ec835a29;color:#8a3d1a}.badge.low{background:#0b0b0b0f;color:var(--ink-2)}.issue-group-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;margin:22px 0 10px}.issue-group-title:first-child{margin-top:0}.issue-group-title .count{color:var(--muted);font-weight:600}.issue-row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);margin-bottom:8px;overflow:hidden}.issue-row summary{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:12px;padding:11px 14px;cursor:pointer;list-style:none}.issue-row summary::-webkit-details-marker{display:none}.issue-row summary:hover{background:#0b0b0b05}.issue-name{font-weight:600;font-size:13.5px}.issue-urls{font-size:12.5px;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}.issue-detail{padding:4px 14px 14px;border-top:1px solid var(--grid);font-size:13px;color:var(--ink-2)}.issue-detail h4{margin:12px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.issue-detail p{margin:0}.spread{height:4px;border-radius:2px;background:var(--grid);width:76px;overflow:hidden}.spread>div{height:100%;border-radius:2px}.health-wrap{display:flex;align-items:center;gap:24px}.health-meta .h-score{font-size:34px;font-weight:700;letter-spacing:-.02em;line-height:1}.health-meta .h-score span{font-size:15px;color:var(--muted);font-weight:500}.health-meta .h-qual{font-size:13px;font-weight:600;margin-top:6px}.health-meta .h-note{font-size:12px;color:var(--muted);margin-top:2px}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:6px 10px;border-bottom:1px solid var(--grid)}table.data td{padding:8px 10px;border-bottom:1px solid var(--grid);color:var(--ink-2)}table.data td:first-child{color:var(--ink)}table.data tr:last-child td{border-bottom:none}table.data td.num{text-align:right;font-variant-numeric:tabular-nums}table.data th.num{text-align:right}.freeze-l,.freeze-r{position:sticky;background:var(--surface);z-index:1}.freeze-l{left:0}.freeze-r{right:0}thead .freeze-l,thead .freeze-r{z-index:2}.freeze-l{box-shadow:7px 0 8px -7px #0b0b0b47}.freeze-r{box-shadow:-7px 0 8px -7px #0b0b0b47}.hbar-row{display:grid;grid-template-columns:130px 1fr 60px;align-items:center;gap:10px;margin-bottom:9px;font-size:12.5px}.hbar-label{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hbar-track{height:18px;display:flex;align-items:center}.hbar-fill{height:18px;border-radius:0 4px 4px 0;background:var(--series-1);min-width:2px}.hbar-val{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-2)}.empty{text-align:center;padding:48px 24px;color:var(--muted)}.empty .e-icon{font-size:30px;margin-bottom:10px}.empty .e-title{font-size:15px;font-weight:650;color:var(--ink);margin-bottom:5px}.empty .e-body{font-size:13px;max-width:420px;margin:0 auto 16px}.audit-upload{border-radius:var(--radius-sm);outline:2px dashed transparent;outline-offset:6px;transition:outline-color .15s}.audit-upload.dragging{outline-color:var(--accent)}.upload-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.upload-month{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted)}.upload-files{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12.5px}.upload-files li{display:flex;gap:10px;align-items:baseline}.link-btn{border:none;background:none;padding:0;font:inherit;font-size:12px;color:var(--accent);cursor:pointer}.link-btn:hover{text-decoration:underline}.link-btn:disabled{opacity:.5;cursor:default;text-decoration:none}.upload-conflict{margin:10px 0 0}.upload-compare{margin-top:6px;font-weight:500;display:flex;flex-direction:column;gap:2px}.upload-compare span{display:inline-block;width:58px;font-weight:650}.upload-actions{display:flex;gap:8px;margin-top:10px}.import-local{margin-top:16px;padding-top:14px;border-top:1px solid var(--grid)}.import-local>.hint{margin:0 0 8px}.import-log{background:#0b0b0b08;border-radius:var(--radius-sm);padding:10px 14px;font-size:12px;color:var(--ink-2);font-family:ui-monospace,SF Mono,monospace;max-height:120px;overflow-y:auto}.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 1.2s ease-in-out infinite;margin-right:8px}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}.report-doc{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:52px 58px;max-width:860px;margin:0 auto}.report-brand{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;border-bottom:2px solid var(--ink);margin-bottom:30px}.report-brand .r-brand-left{display:inline-flex;align-items:center;gap:12px}.report-brand .r-title{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}.report-brand .r-period{font-size:12px;color:var(--muted);font-weight:500}.report-doc h1.r-client{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:0 0 2px}.report-doc .r-subtitle{font-size:14px;color:var(--ink-2);margin-bottom:34px}.report-doc .r-section{margin-bottom:30px}.report-doc .r-section h2{font-size:15px;font-weight:700;margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--grid);letter-spacing:-.01em}.report-doc .r-section p{margin:0;font-size:13.5px;line-height:1.85;color:#2b2a28}.r-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:34px}.r-kpi{border:1px solid var(--grid);border-radius:var(--radius-sm);padding:14px 16px;text-align:center}.r-kpi .k-label{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.03em}.r-kpi .k-value{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-top:3px}.r-kpi .k-delta{font-size:11.5px;font-weight:600;margin-top:2px}.r-kpi .k-delta.up{color:var(--status-good-text)}.r-kpi .k-delta.down{color:var(--status-critical)}.r-kpi .k-delta.flat{color:var(--muted)}.r-highlights{border:1px solid rgba(42,120,214,.3);border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:var(--radius-sm);padding:16px 20px;margin-bottom:30px}.r-hl-title{font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.1em;color:#1c5cab;margin-bottom:8px}.r-highlights ul{margin:0;padding-left:18px}.r-highlights li{font-size:13.5px;font-weight:550;line-height:1.8;color:var(--ink);margin-bottom:3px}.r-highlights li::marker{color:var(--accent)}.r-preparer{float:right;font-size:12px;font-weight:600;color:var(--ink-2)}.r-rank{margin-top:12px}.r-rank td,.r-rank th{padding:7px 10px;font-size:12.5px}.r-sharebar{display:block;height:8px;background:var(--grid);border-radius:4px;overflow:hidden}.r-sharebar>span{display:block;height:100%;background:var(--series-1);border-radius:4px 0 0 4px;min-width:2px}.r-move{font-size:10px;margin-left:6px}.r-move.up{color:var(--status-good-text)}.r-move.down{color:var(--status-critical)}.r-new{display:inline-block;margin-left:7px;padding:1px 6px;border-radius:99px;font-size:9px;font-weight:750;letter-spacing:.06em;background:var(--accent-soft);color:#1c5cab;vertical-align:1px}.r-channels{margin-top:14px}.r-chan-row{display:grid;grid-template-columns:150px 1fr 120px;align-items:center;gap:12px;margin-bottom:8px;font-size:12.5px}.r-chan-label{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.r-chan-val{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}.r-chan-share{color:var(--muted);font-weight:500}@media(max-width:700px){.r-chan-row{grid-template-columns:110px 1fr 100px}}.r-health{margin-top:16px}.r-health-main{display:flex;align-items:center;gap:28px}.r-health-ring{text-align:center;flex-shrink:0}.r-health-qual{font-size:13px;font-weight:700;margin-top:6px}.r-health-ring .k-delta{font-size:11.5px;font-weight:600;margin-top:2px}.r-sev-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;flex:1}.r-sev{border-radius:var(--radius-sm);padding:14px 10px;text-align:center;border:1px solid var(--grid);border-top:3px solid var(--baseline)}.r-sev.issue{border-top-color:var(--status-critical);background:#d03b3b0d}.r-sev.warning{border-top-color:var(--status-warning);background:#fab21912}.r-sev.opportunity{border-top-color:var(--series-1);background:#2a78d60d}.r-sev-count{font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.1}.r-sev-label{font-size:12px;font-weight:650;margin-top:3px}.r-sev-sub{font-size:10.5px;color:var(--muted);margin-top:1px}.r-health-trend{margin-top:18px}.r-hl-caption{font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:6px}@media(max-width:700px){.r-health-main{flex-direction:column;gap:16px}.r-sev-tiles{width:100%}}.r-flag{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:99px;font-size:9px;font-weight:750;letter-spacing:.04em;vertical-align:1px;white-space:nowrap}.r-flag.emerging{background:#4a3aa71a;color:#4a3aa7}.r-flag.seo{background:#fab2192e;color:#7a5200}.r-standouts{margin-top:14px}.r-standouts ul{margin:0;padding-left:18px}.r-standouts li{font-size:13px;line-height:1.75;color:#2b2a28;margin-bottom:6px}.r-standouts li::marker{color:var(--accent)}.r-pairs{margin-top:14px}.r-pair{border:1px solid var(--grid);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:10px}.r-pair-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.r-pair-names{font-size:13px;font-weight:650}.r-pair-arrow{color:var(--accent);font-weight:400;margin:0 4px}.r-pair-count{font-size:11.5px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.r-pair .r-gap-body{margin-top:6px}.r-gaps{margin-top:14px}.r-gap{border:1px solid var(--grid);border-left:3px solid var(--baseline);border-radius:var(--radius-sm);padding:12px 16px;margin-bottom:10px}.r-gap:has(.badge.high){border-left-color:var(--status-critical)}.r-gap:has(.badge.medium){border-left-color:var(--status-serious)}.r-gap:has(.badge.low){border-left-color:var(--baseline)}.r-gap-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.r-gap-name{font-size:13px;font-weight:650}.r-gap-body{margin:0;font-size:12.5px;line-height:1.75;color:#2b2a28}.r-gap-fix{margin:6px 0 0;font-size:12.5px;line-height:1.7;color:var(--ink-2)}.r-gap-fix strong{color:var(--ink)}.r-lp-url{font-size:11px;color:var(--muted);margin:-2px 0 6px;word-break:break-all}.r-gap-recs{margin:4px 0 0;padding-left:18px}.r-gap-recs li{margin-top:3px}.vis-chip{display:inline-block;padding:1.5px 8px;border-radius:99px;font-size:10px;font-weight:750;letter-spacing:.03em;white-space:nowrap}.vis-chip.ahead{background:#0ca30c1f;color:#006300}.vis-chip.behind{background:#d03b3b1a;color:#a32222}.vis-chip.tie{background:#2a78d61a;color:#1c5cab}.vis-chip.notfound{background:#0b0b0b0f;color:var(--ink-2)}.r-competitive{margin-top:14px}.r-vis-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:18px}.r-vis-col{border:1px solid var(--grid);border-radius:var(--radius-sm);padding:12px 14px}.r-vis-col ul{margin:0;padding-left:16px}.r-vis-col li{font-size:12.5px;line-height:1.7;color:#2b2a28;margin-bottom:4px}.r-vis-rank{color:var(--muted);font-size:11px;white-space:nowrap}.r-vis-rank.behind{color:#a32222}.r-recs{margin:0;padding-left:0;list-style:none;counter-reset:rec}.r-recs li{counter-increment:rec;display:flex;gap:12px;font-size:13.5px;line-height:1.75;color:#2b2a28;margin-bottom:10px}.r-recs li:before{content:counter(rec);flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:11.5px;font-weight:700;display:grid;place-items:center;margin-top:3px}.r-foot{margin-top:40px;padding-top:14px;border-top:1px solid var(--grid);font-size:11px;color:var(--muted);display:flex;justify-content:space-between}.chart-legend{display:flex;gap:18px;font-size:12px;color:var(--ink-2);margin-bottom:8px}.chart-legend .key{display:inline-flex;align-items:center;gap:6px}.chart-legend .swatch{width:14px;height:3px;border-radius:2px}.tooltip{position:absolute;pointer-events:none;background:var(--ink);color:#fff;font-size:11.5px;padding:7px 10px;border-radius:6px;white-space:nowrap;transform:translate(-50%,calc(-100% - 10px));z-index:10;line-height:1.5}.tooltip .tt-month{font-weight:700;margin-bottom:2px}.form-row{margin-bottom:14px}.form-row label{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:5px}.form-row .input{width:100%}.form-row textarea.input{min-height:120px;font-family:ui-monospace,SF Mono,monospace;font-size:11.5px;resize:vertical}.hint{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.6}.ok-note{color:var(--status-good-text);font-size:12.5px;font-weight:600}.err-note{color:var(--status-critical);font-size:12.5px;font-weight:600}.export-group{display:inline-flex;align-items:center;gap:4px}.export-group .export-icon{color:var(--muted);font-size:12px;margin-right:2px}.sortable-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sortable-table th.sortable:hover,.sortable-table th.sortable.sorted{color:var(--ink)}.sort-caret{display:inline-block;margin-left:4px;font-size:9px;opacity:.35;vertical-align:middle}.sortable-table th.sorted .sort-caret{opacity:.9}.cq-cell{max-width:240px}.cq-inner{display:flex;align-items:center}.cq-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.rel-badge{display:inline-block;margin-left:6px;flex-shrink:0;padding:0 5px;font-size:10px;font-weight:700;line-height:15px;border-radius:7px;color:var(--series-1);background:color-mix(in srgb,var(--series-1) 14%,transparent);cursor:default;vertical-align:middle}.rel-badge:hover,.rel-badge:focus-visible{background:color-mix(in srgb,var(--series-1) 26%,transparent);outline:none}.rel-pop{position:fixed;z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0b0b0b29;padding:8px 10px;font-size:11.5px;color:var(--ink)}.rel-pop-head{font-weight:700;margin-bottom:2px}.rel-pop-cols{font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border);padding-bottom:4px;margin-bottom:4px}.rel-pop ul{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto}.rel-pop li{display:flex;justify-content:space-between;gap:12px;padding:2px 0}.rel-pop-q{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rel-pop-n{color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0}.rel-pop-more{margin-top:5px;color:var(--muted);font-size:10.5px}.spark-hover{display:inline-flex;align-items:center;cursor:default;border-radius:4px;outline:none}.spark-hover:hover,.spark-hover:focus-visible{background:color-mix(in srgb,var(--series-1) 12%,transparent)}.rel-pop-q .rank-dot{margin-right:6px}.rank-dot{display:inline-block;width:7px;height:7px;border-radius:50%;vertical-align:middle;flex-shrink:0}.rank-dot.live{background:var(--series-1)}.rank-dot.gsc{background:transparent;border:1.5px solid var(--series-1)}.rel-pop-legend{margin-top:6px;padding-top:5px;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:10px;color:var(--muted);font-size:10px}.rel-pop-legend span{display:inline-flex;align-items:center;gap:4px}.analyze-btn{flex-shrink:0;margin-left:8px;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--muted);cursor:pointer}.analyze-btn:hover{color:var(--series-1);border-color:var(--series-1);background:color-mix(in srgb,var(--series-1) 10%,transparent)}.analyze-btn.done{color:var(--series-3);border-color:color-mix(in srgb,var(--series-3) 50%,transparent);background:color-mix(in srgb,var(--series-3) 14%,transparent)}.analyze-btn.done:hover{color:var(--series-3);border-color:var(--series-3);background:color-mix(in srgb,var(--series-3) 22%,transparent)}.landing-cell{max-width:220px}.landing-link{display:inline-block;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;color:var(--series-1);text-decoration:none}.landing-link:hover{text-decoration:underline}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0b0b0b6b;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}.modal{background:var(--surface);border-radius:12px;box-shadow:0 20px 60px #0b0b0b4d;width:100%;max-width:620px;max-height:calc(100vh - 80px);display:flex;flex-direction:column}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 20px;border-bottom:1px solid var(--grid)}.modal-sub{color:var(--muted);font-size:13px;margin-top:2px}.modal-close{border:none;background:transparent;font-size:24px;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px}.modal-close:hover{color:var(--ink)}.modal-body{padding:16px 20px 20px;overflow-y:auto}.modal-meta{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--muted);margin-bottom:14px}.modal-meta a{color:var(--series-1);text-decoration:none}.modal-meta a:hover{text-decoration:underline}.modal-loading{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;padding:24px 0}.modal-summary{font-size:14px;line-height:1.55;margin:0 0 16px;color:var(--ink)}.rec-block{margin-bottom:16px}.rec-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}.rec-pros .rec-title{color:var(--status-good-text)}.rec-cons .rec-title{color:var(--status-critical)}.rec-recs .rec-title{color:var(--series-1)}.rec-block ul{list-style:none;margin:0;padding:0}.rec-block li{display:flex;gap:8px;font-size:13px;line-height:1.5;padding:3px 0;color:var(--ink-2)}.rec-mark{flex-shrink:0;font-weight:700}.rec-pros .rec-mark{color:var(--status-good-text)}.rec-cons .rec-mark{color:var(--status-critical)}.rec-recs .rec-mark{color:var(--series-1)}.modal-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px;padding-top:12px;border-top:1px solid var(--grid)}.warn-banner{display:flex;gap:8px;align-items:baseline;background:#fab2191f;border:1px solid rgba(250,178,25,.5);border-radius:8px;padding:10px 12px;font-size:12.5px;font-weight:600;color:#7a5200;margin:0 0 12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}@media(max-width:900px){.grid-2{grid-template-columns:1fr}.r-kpis{grid-template-columns:repeat(2,1fr)}}@media print{@page{margin:14mm 12mm 18mm;@bottom-left{content:"Generated by Report Hub - ST System, Inc.";font-family:system-ui,-apple-system,sans-serif;font-size:8.5px;color:#898781}@bottom-right{content:counter(page) " / " counter(pages);font-family:system-ui,-apple-system,sans-serif;font-size:8.5px;color:#898781}}body{background:#fff}.sidebar,.page-head,.no-print{display:none!important}.app{display:block}.main{padding:0;max-width:none}.report-doc{border:none;box-shadow:none;border-radius:0;padding:24px 8px;max-width:none}.r-section,.r-kpis,.r-highlights,.r-rank tr,.r-pair,.r-gap{break-inside:avoid}}.login-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:var(--page);padding:24px}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:34px 36px;width:100%;max-width:420px}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px}.login-card h1{margin:0 0 8px;font-size:21px;letter-spacing:-.01em}.login-sub{color:var(--ink-2);font-size:13px;margin:0 0 20px}.ms-btn{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;font-size:13.5px;font-weight:600;text-decoration:none;width:100%;justify-content:center}.dev-login{margin-top:22px;border-top:1px dashed var(--grid);padding-top:14px}.dev-login-title{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}.login-foot{color:var(--muted);font-size:12px}.profile-select-list{display:flex;flex-direction:column;gap:8px}.profile-select-list .profile-btn{border:1px solid var(--border);background:var(--surface)}.profile-select-list .profile-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.sidebar-user{margin-top:auto;border-top:1px solid var(--grid);padding-top:12px;display:flex;align-items:center;gap:8px}.sidebar-user .user-meta{flex:1;min-width:0}.sidebar-user .user-name{font-size:12.5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user .user-mail{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user .user-role{font-size:10.5px;color:var(--accent);font-weight:600}.sidebar-admin-btn{width:100%;margin-top:8px}.login-wide-btn{width:100%;justify-content:center;padding:10px 16px;font-size:13.5px;font-weight:600}.login-or{display:flex;align-items:center;gap:10px;margin:16px 0;color:var(--muted);font-size:12px}.login-or:before,.login-or:after{content:"";flex:1;border-top:1px solid var(--grid)}.turnstile-box{margin-top:10px}.turnstile-box:empty{display:none}
