/* NTRIP Cloud — надстройка: панель объектов (рейка + список) и мелкие элементы UI. */

:root { --nc-sb-w: 340px; --nc-rail-w: 48px; }

/* ── раскладка: панель занимает своё место, карта справа ───────────── */
body.nc-sb-open { padding-left: var(--nc-sb-w) !important; }
body.nc-sb-closed { padding-left: var(--nc-rail-w) !important; }
body.nc-sb-absent { padding-left: 0 !important; }

/* встроенную панель объектов приложения не показываем */
body:not(.nc-sb-absent) aside.w-11.shrink-0,
body:not(.nc-sb-absent) aside.w-80.shrink-0,
body:not(.nc-sb-absent) aside[aria-label="Развернуть панель объектов"] { display: none !important; }

/* ── панель ────────────────────────────────────────────────────────── */
.nc-sb{position:fixed;left:0;top:0;bottom:0;z-index:40;display:flex;width:var(--nc-sb-w);
  background:rgba(10,13,18,.55);
  -webkit-backdrop-filter:none;backdrop-filter:none;
  border-right:1px solid rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07),12px 0 44px rgba(0,0,0,.38);
  border-radius:0;color:#e5e7eb;
  font:13px/1.45 -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif}
body.nc-sb-closed .nc-sb{width:var(--nc-rail-w)}
body.nc-sb-closed .nc-panel{display:none}

.nc-rail{width:var(--nc-rail-w);flex:0 0 var(--nc-rail-w);display:flex;flex-direction:column;
  align-items:center;gap:4px;padding:8px 0;border-right:1px solid rgba(255,255,255,.07);
  background:rgba(10,13,18,.35)}
.nc-rail-btn{width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:8px;
  background:transparent;color:#8b94a3;cursor:pointer}
.nc-rail-btn:hover{background:rgba(255,255,255,.06);color:#e5e7eb}
.nc-rail-btn.is-active{background:rgba(47,111,237,.18);color:#7fb0ff;box-shadow:inset 2px 0 0 #2f6fed}
.nc-rail-btn svg{width:18px;height:18px}
.nc-rail-spacer{flex:1}

.nc-panel{flex:1;min-width:0;display:flex;flex-direction:column;background:transparent}

/* шапка панели */
.nc-ph{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.07)}
.nc-ph-title{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#8b94a3}
.nc-badge{font-size:11px;color:#8b94a3;background:rgba(255,255,255,.08);border-radius:6px;padding:0 6px;
  margin-right:auto}
.nc-ic{width:26px;height:26px;border:0;border-radius:0;background:transparent;color:#c9d1dc;cursor:pointer;
  display:grid;place-items:center;font-size:16px;line-height:1}
.nc-ic:hover{background:rgba(255,255,255,.08);color:#fff}
.nc-ph .nc-ic + .nc-ic{margin-left:2px}

/* фильтр и список */
.nc-filter{display:flex;gap:6px;padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.06)}
.nc-filter input{flex:1;min-width:0;background:#0b0f15;border:1px solid rgba(255,255,255,.1);border-radius:7px;
  color:#e5e7eb;padding:5px 8px;font-size:12px;outline:none}
.nc-filter input:focus{border-color:#2f6fed}
.nc-filter select{background:#0b0f15;border:1px solid rgba(255,255,255,.1);border-radius:7px;color:#c9d1dc;
  font-size:12px;padding:5px 6px}

.nc-list{flex:1;overflow:auto;padding:6px 6px 12px}
.nc-row{display:flex;align-items:center;gap:6px;border-radius:7px;padding:4px 6px;cursor:default;user-select:none}
.nc-row:hover{background:rgba(255,255,255,.05)}
.nc-row.is-active{background:rgba(47,111,237,.18);box-shadow:inset 2px 0 0 #2f6fed}
.nc-row.nc-drop{outline:1px solid #2f6fed;outline-offset:-1px;background:rgba(47,111,237,.12)}
.nc-tw{width:14px;border:0;background:transparent;color:#8b94a3;cursor:pointer;padding:0;font-size:10px}
.nc-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nc-group .nc-name{font-weight:500;color:#e5e7eb}
.nc-item .nc-name{color:#b7c0cd}
.nc-meta{font-size:11px;color:#7d8797;flex:0 0 auto}
.nc-more{opacity:0;border:0;background:transparent;color:#8b94a3;cursor:pointer;padding:0 4px}
.nc-row:hover .nc-more{opacity:1}
.nc-empty{padding:10px 8px;color:#7d8797;font-size:12px}
.nc-sub{padding:6px 8px 2px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#6d7684}
.nc-org{cursor:pointer}
.nc-org:not(.is-active):hover{background:rgba(255,255,255,.06)}

/* индикаторы */
.nc-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:#6b7280}
.nc-dot.seen{background:#6b7280}
.nc-dot.pub{background:#3b82f6}
.nc-dot.new{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.18)}

/* подвал панели */
.nc-pf{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid rgba(255,255,255,.07);
  color:#7d8797;font-size:11px}
.nc-legend{display:flex;align-items:center;gap:12px;font-size:10px;color:#7d8797;white-space:nowrap}
.nc-legend span{display:inline-flex;align-items:center;gap:5px}
.nc-legend i{width:6px;height:6px;border-radius:50%;display:inline-block}
.nc-build{font-size:10px;color:#5c6573;margin-left:auto}

/* меню, тосты, диалоги — выше модальных окон приложения */
.nc-menu{position:fixed;z-index:130;min-width:190px;background:#161b24;border:1px solid rgba(255,255,255,.12);
  border-radius:10px;padding:4px;box-shadow:0 16px 40px rgba(0,0,0,.55)}
.nc-menu button{display:block;width:100%;text-align:left;background:transparent;border:0;color:#d7dde6;
  padding:7px 9px;border-radius:7px;cursor:pointer;font:inherit}
.nc-menu button:hover{background:rgba(255,255,255,.07)}
.nc-menu button.danger{color:#ff8b7d}
.nc-menu hr{border:0;border-top:1px solid rgba(255,255,255,.08);margin:4px 0}

.nc-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:140;background:#161b24;
  border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:8px 12px;color:#e5e7eb;font-size:12px;
  box-shadow:0 12px 30px rgba(0,0,0,.5);max-width:70vw}

.nc-modal{position:fixed;inset:0;z-index:135;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:20px}
.nc-modal-in{width:min(420px,92vw);background:#12161e;border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:14px}
.nc-modal-in h3{margin:0 0 10px;font-size:14px;font-weight:600}
.nc-modal-in input{width:100%;box-sizing:border-box;background:#0b0f15;border:1px solid rgba(255,255,255,.12);
  border-radius:8px;color:#e5e7eb;padding:8px;font-size:13px}
.nc-modal-in .nc-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
.nc-modal-in button{border-radius:8px;padding:7px 12px;font:inherit;cursor:pointer;
  border:1px solid rgba(255,255,255,.14);background:transparent;color:#d7dde6}
.nc-modal-in button.primary{background:#2f6fed;border-color:#2f6fed;color:#fff}
.nc-promise{max-height:50vh;overflow:auto;margin:4px 0 0}

/* кнопки в панели */
.nc-btn{border:1px solid rgba(255,255,255,.14);background:transparent;color:#d7dde6;border-radius:8px;
  padding:7px 12px;font:inherit;font-size:12px;cursor:pointer}
.nc-btn:hover{border-color:rgba(255,255,255,.3);color:#fff}
.nc-btn.primary{background:#2f6fed;border-color:#2f6fed;color:#fff}
.nc-btn.danger{color:#ff8b7d;border-color:rgba(255,139,125,.4)}
.nc-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}

/* ── Мобильная раскладка: панель — выдвижной ящик, карта на всю ширину ── */
@media (max-width: 1023px) {
  body.nc-sb-open, body.nc-sb-closed, body.nc-sb-absent {
    padding-left: 0 !important;
    padding-bottom: calc(56px + env(safe-area-inset-bottom)) !important;
  }
  .nc-sb {
    width: min(88vw, 340px) !important;
    transform: translateX(-105%);
    transition: transform .18s ease;
    z-index: 85;
    box-shadow: 18px 0 60px rgba(0,0,0,.55);
    background: #0f131a;
  }
  body.nc-sb-mobile-open .nc-sb { transform: none; }
  body.nc-sb-mobile-open::after {
    content: ""; position: fixed; inset: 0; z-index: 84;
    background: rgba(0,0,0,.52); backdrop-filter: blur(2px);
  }
  .nc-rail { display: none; }
  .nc-panel { display: flex !important; }
  .nc-ph { padding: 10px 12px; }
  .nc-rail-btn { width: 42px; height: 42px; }
  .nc-ic { width: 38px; height: 38px; font-size: 19px; }
  .nc-filter input, .nc-filter select { font-size: 16px; min-height: 40px; }
  .nc-row { min-height: 40px; padding: 7px 8px; }
  .nc-more { opacity: .7; padding: 0 8px; font-size: 18px; }
  .nc-btn { min-height: 40px; }
  .nc-toast { bottom: calc(66px + env(safe-area-inset-bottom)); width: min(92vw, 480px); text-align: center; }
  .nc-modal { padding: 12px; }
  .nc-modal-in { width: 100%; max-height: 86dvh; overflow: auto; }
  .nc-menu { min-width: 220px; }
  .nc-menu button { padding: 11px 12px; font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .nc-sb { transition: none; }
}
.nc-mobile-close { display: none; }
@media (max-width: 1023px) { .nc-mobile-close { display: grid; } }
