/* ---------- globe deck ---------- */
.deck { position: absolute; inset: 0; pointer-events: none; }
.deck > * { pointer-events: auto; }
.deck-left { position: absolute; left: 14px; top: 14px; bottom: 54px; width: 340px; display: flex; flex-direction: column; gap: 12px; pointer-events: none; }
.deck-left > * { pointer-events: auto; }
.deck-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; font: 600 12px var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--ink2); margin-bottom: 8px; }
.deck-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; padding: 10px; }
.dk { padding: 8px 8px 6px; border-radius: 12px; }
.dk:hover { background: rgba(56, 225, 255, .06); }
.dk .v { font: 700 22px/1.1 var(--display); font-variant-numeric: tabular-nums; background: linear-gradient(180deg, #fff, #9fdcff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.dk .l { font-size: 10.5px; color: var(--ink3); line-height: 1.25; margin-top: 3px; }
.deck-states { padding: 12px 14px; }
.sbar { display: grid; grid-template-columns: 112px 1fr 44px; align-items: center; gap: 8px; width: 100%; padding: 4px 0; background: none; border: 0; color: var(--ink2); font-size: 12px; text-align: left; }
.sbar:hover { color: var(--ink); }
.sbar .n { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sbar .b { position: relative; height: 8px; border-radius: 6px; background: rgba(130, 200, 255, .08); overflow: hidden; }
.sbar .b i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 6px; background: linear-gradient(90deg, rgba(56, 225, 255, .35), rgba(139, 123, 255, .45)); transition: width 1.2s cubic-bezier(.2, .8, .2, 1); }
.sbar .b i.o { background: linear-gradient(90deg, var(--aqua), var(--teal)); box-shadow: 0 0 10px rgba(56, 225, 255, .6); }
.sbar .c { text-align: right; font-size: 11px; }
.deck-feed { padding: 12px 14px; flex: 1; min-height: 120px; overflow: hidden; display: flex; flex-direction: column; }
#feed { list-style: none; margin: 0; padding: 0; overflow: auto; flex: 1; }
#feed li { padding: 7px 0; border-bottom: 1px solid var(--line); font-size: 12px; line-height: 1.35; }
#feed li.fresh { animation: rise .5s ease, flash 3s ease; }
#feed li a { color: var(--ink); display: block; text-decoration: none; }
#feed li a:hover { color: var(--aqua); }
#feed .ft { font: 600 10px var(--mono); padding: 1px 6px; border-radius: 5px; margin-right: 4px; }
#feed .ft.n { background: rgba(54, 211, 153, .16); color: var(--green); } #feed .ft.c { background: rgba(255, 181, 71, .16); color: var(--amber); }
#feed .fm { display: block; color: var(--ink3); font-size: 11px; margin-top: 2px; }
.deck-right { position: absolute; right: 14px; top: 14px; width: 300px; max-height: calc(100% - 70px); overflow: auto; padding: 12px 14px; }
.deck-right.collapsed .lp-body { display: none; }
.lp-sec { font: 600 10px var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--aqua); margin: 14px 0 6px; }
.seg { display: inline-flex; padding: 3px; gap: 2px; border-radius: 10px; background: rgba(8, 20, 38, .9); border: 1px solid var(--line); margin-bottom: 6px; flex-wrap: wrap; }
.seg button { border: 0; background: none; color: var(--ink2); padding: 5px 10px; border-radius: 8px; font-size: 12px; }
.seg button.on { background: linear-gradient(135deg, rgba(56, 225, 255, .25), rgba(139, 123, 255, .25)); color: var(--ink); }
.seg.sm button { padding: 3px 8px; font-size: 11px; }
.tg { display: flex; align-items: center; gap: 10px; padding: 5px 0; font-size: 12.5px; color: var(--ink2); cursor: pointer; user-select: none; }
.tg input { display: none; }
.tg .sw { width: 30px; height: 17px; border-radius: 10px; background: rgba(130, 200, 255, .16); position: relative; flex: 0 0 auto; transition: background .2s; }
.tg .sw::after { content: ''; position: absolute; left: 2px; top: 2px; width: 13px; height: 13px; border-radius: 50%; background: var(--ink2); transition: transform .2s, background .2s; }
.tg input:checked + .sw { background: rgba(56, 225, 255, .45); }
.tg input:checked + .sw::after { transform: translateX(13px); background: #fff; box-shadow: 0 0 8px var(--aqua); }
.tg:hover { color: var(--ink); }
.legend { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; font-size: 11px; color: var(--ink3); }
.legend i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; box-shadow: 0 0 8px currentColor; }
.credits { font-size: 10.5px; margin-top: 10px; line-height: 1.4; }
.deck-card { position: absolute; right: 328px; top: 14px; width: 380px; max-height: calc(100% - 70px); overflow: auto; padding: 14px 16px; animation: rise .35s ease; }
.dc-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 10px; }
.dc-kpis div { padding: 8px; border-radius: 10px; background: rgba(56, 225, 255, .06); }
.dc-kpis b { display: block; font: 700 20px var(--display); } .dc-kpis span { font-size: 10px; color: var(--ink3); }
.dc-wx { display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; padding: 8px 10px; border-radius: 10px; background: rgba(47, 139, 255, .08); }
.dc-list { margin-top: 10px; display: grid; gap: 4px; }
.dc-it { display: grid; grid-template-columns: auto 1fr; gap: 4px 8px; padding: 8px; border-radius: 10px; color: var(--ink); text-decoration: none !important; font-size: 12.5px; }
.dc-it:hover { background: rgba(56, 225, 255, .07); }
.dc-it .cd { grid-column: 2; }
.deck-time { position: absolute; left: 50%; bottom: 14px; translate: -50% 0; padding: 7px 14px; font-size: 12px; color: var(--ink2); }
.deck-note { position: absolute; left: 50%; top: 40%; translate: -50% 0; max-width: 520px; }
.globe-tip { position: fixed; z-index: 70; pointer-events: none; padding: 8px 11px; border-radius: 10px; background: rgba(6, 15, 28, .94); border: 1px solid var(--line2); font-size: 12px; max-width: 340px; box-shadow: var(--shadow); }
.globe-tip span { color: var(--ink3); }
#split-h { position: fixed; z-index: 25; top: var(--top); bottom: 0; left: 50%; width: 0; }
#split-h i { position: absolute; top: 0; bottom: 0; left: -1px; width: 2px; background: var(--aqua); box-shadow: 0 0 14px var(--aqua); cursor: ew-resize; }
#split-h::before { content: '⇆'; position: absolute; top: 50%; left: -20px; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--aqua); color: #04121f; font-weight: 700; cursor: ew-resize; }
#split-h .sl, #split-h .sr { position: absolute; top: 16px; padding: 4px 10px; border-radius: 8px; background: rgba(6, 15, 28, .9); font: 600 12px var(--mono); white-space: nowrap; }
#split-h .sl { right: 12px; } #split-h .sr { left: 12px; }
#split-h button { position: absolute; top: 56px; left: -14px; width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line2); background: rgba(6, 15, 28, .9); }
@media (max-width: 1100px) { .deck-card { right: 14px; top: auto; bottom: 54px; } .deck-right { width: 260px; } }
@media (max-width: 760px) { .deck-left { width: auto; right: 14px; bottom: auto; } .deck-feed, .deck-states { display: none; } .deck-right { top: auto; bottom: 54px; max-height: 45%; } .deck-card { left: 14px; width: auto; } }

/* ---------- explorer ---------- */
.explorer { display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 18px; align-items: start; }
.filters { position: sticky; top: 12px; padding: 16px; max-height: calc(100vh - var(--top) - 40px); overflow: auto; }
.filters .fg { margin-bottom: 16px; }
.filters .fg > label { display: block; font: 600 10.5px var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--ink3); margin-bottom: 7px; }
.filters .chips { max-height: 170px; overflow: auto; }
.filters .row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.viewbar { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 4px; margin-bottom: 12px; }
.viewbar .chip { height: 32px; padding: 0 14px; font-size: 12.5px; }
.viewbar .chip b { font: 600 11px var(--mono); opacity: .8; }
.resbar { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.resbar .count { font: 600 13px var(--mono); color: var(--ink2); }
.tablewrap { border-radius: var(--r2); overflow: hidden; border: 1px solid var(--line); background: var(--glass); }
.tablewrap .tbl td.c-dead { width: 170px; } .tablewrap .tbl td.c-rel { width: 140px; } .tablewrap .tbl td.c-where { width: 160px; }
.relbar { display: flex; align-items: center; gap: 8px; }
.relbar .track { flex: 1; height: 5px; border-radius: 5px; background: rgba(130, 200, 255, .1); overflow: hidden; min-width: 50px; }
.relbar .track i { display: block; height: 100%; border-radius: 5px; }
.topic-dots { display: flex; gap: 3px; margin-top: 5px; flex-wrap: wrap; }
.topic-dots i { font-style: normal; font-size: 10.5px; padding: 0 6px; border-radius: 5px; background: rgba(130, 200, 255, .08); color: var(--ink2); border-left: 3px solid; }
@media (max-width: 1000px) { .explorer { grid-template-columns: 1fr; } .filters { position: static; max-height: none; } }

/* ---------- detail drawer ---------- */
.dt { padding: 22px 26px 60px; }
.dt-head { display: flex; gap: 12px; align-items: flex-start; }
.dt-head h2 { font: 700 22px/1.25 var(--display); margin: 8px 0 6px; }
.dt-meta { color: var(--ink3); font-size: 12.5px; }
.dt-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 6px; }
.dt-score { display: grid; grid-template-columns: 96px 1fr; gap: 16px; align-items: center; padding: 14px; border-radius: 16px; background: linear-gradient(135deg, rgba(56, 225, 255, .08), rgba(139, 123, 255, .08)); border: 1px solid var(--line); margin: 14px 0; }
.ring { width: 96px; height: 96px; position: relative; }
.ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.ring circle { fill: none; stroke-width: 9; }
.ring .bg { stroke: rgba(130, 200, 255, .1); }
.ring .fg { stroke-linecap: round; transition: stroke-dashoffset 1.4s cubic-bezier(.2, .8, .2, 1); }
.ring .lab { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; }
.ring .lab b { font: 700 26px/1 var(--display); } .ring .lab span { font-size: 10px; color: var(--ink3); }
.timeline { list-style: none; margin: 0; padding: 0 0 0 18px; border-left: 2px solid var(--line2); }
.timeline li { position: relative; padding: 0 0 14px 12px; font-size: 13px; }
.timeline li::before { content: ''; position: absolute; left: -25px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--bg); border: 2px solid var(--aqua); }
.timeline li.ext::before { border-color: var(--amber); background: var(--amber); } .timeline li.corr::before { border-color: var(--violet); }
.timeline .when { font: 600 11px var(--mono); color: var(--ink3); }
.docs { display: grid; gap: 6px; }
.doc { display: grid; grid-template-columns: 40px 1fr auto; gap: 10px; align-items: center; padding: 10px 12px; border-radius: 12px; background: rgba(14, 30, 52, .7); border: 1px solid var(--line); }
.doc .ext { font: 700 10px var(--mono); text-transform: uppercase; padding: 6px 0; text-align: center; border-radius: 8px; background: rgba(255, 107, 107, .14); color: var(--coral); }
.doc .ext.xls, .doc .ext.xlsx, .doc .ext.csv { background: rgba(54, 211, 153, .14); color: var(--green); }
.doc .ext.doc, .doc .ext.docx { background: rgba(47, 139, 255, .16); color: #7fb6ff; }
.imgcmp { position: relative; width: 100%; aspect-ratio: 1.4; border-radius: 16px; overflow: hidden; border: 1px solid var(--line2); background: #02060c; user-select: none; }
.imgcmp img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.imgcmp .top { clip-path: inset(0 50% 0 0); }
.imgcmp .bar { position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; background: var(--aqua); box-shadow: 0 0 12px var(--aqua); cursor: ew-resize; }
.imgcmp .bar::after { content: '⇆'; position: absolute; top: 50%; left: -16px; width: 32px; height: 32px; margin-top: -16px; border-radius: 50%; background: var(--aqua); color: #04121f; display: grid; place-items: center; font-weight: 700; }
.imgcmp .cap { position: absolute; bottom: 8px; padding: 3px 8px; border-radius: 6px; background: rgba(6, 15, 28, .85); font: 600 11px var(--mono); }
.imgcmp .cap.l { left: 8px; } .imgcmp .cap.r { right: 8px; }
.passes { display: grid; gap: 6px; }
.pass { display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; padding: 8px 12px; border-radius: 10px; background: rgba(255, 226, 138, .06); border: 1px solid rgba(255, 226, 138, .18); font-size: 12.5px; }
.news { display: grid; gap: 8px; }
.news a { display: grid; grid-template-columns: 64px 1fr; gap: 10px; color: var(--ink); text-decoration: none; padding: 8px; border-radius: 12px; }
.news a:hover { background: rgba(56, 225, 255, .06); }
.news img, .news .ph { width: 64px; height: 48px; object-fit: cover; border-radius: 8px; background: rgba(130, 200, 255, .08); }

/* ---------- misc views ---------- */
.src-tbl td { font-size: 12.5px; }
.st { display: inline-flex; align-items: center; gap: 6px; font: 600 11px var(--mono); }
.st i { width: 8px; height: 8px; border-radius: 50%; }
.st.ok i { background: var(--green); box-shadow: 0 0 8px var(--green); } .st.running i { background: var(--aqua); animation: pulse 1.4s infinite; } .st.error i { background: var(--coral); }
.st.blocked-robots i, .st.manual-review i { background: var(--amber); } .st.disabled i, .st.reference i, .st.pending i { background: var(--ink3); }
.progress { height: 6px; border-radius: 6px; background: rgba(130, 200, 255, .1); overflow: hidden; }
.progress i { display: block; height: 100%; background: linear-gradient(90deg, var(--aqua), var(--violet)); transition: width .8s ease; }
.code { font: 12px/1.6 var(--mono); background: rgba(2, 8, 16, .8); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; overflow: auto; white-space: pre; color: #bfe9ff; }
.about h3 { font: 600 17px var(--display); margin: 26px 0 8px; }
.about p, .about li { color: var(--ink2); line-height: 1.7; }
.hero-band { position: relative; padding: 26px; border-radius: 24px; overflow: hidden; background: radial-gradient(80% 140% at 0% 0%, rgba(56, 225, 255, .18), transparent 60%), radial-gradient(70% 120% at 100% 100%, rgba(139, 123, 255, .2), transparent 60%), var(--glass); border: 1px solid var(--line2); }
