/* ProjectLeKa · тема «Цитадель»
   Подключать ПОСЛЕ style.css — файл переопределяет только токены и
   несколько акцентов, вся компонентная разметка и классы остаются как есть.

   В app/templates/base.html после строки со style.css добавить:
   <link rel="stylesheet" href="{{ url_for('static', filename='css/theme-citadel.css') }}?v={{ asset_version }}">
*/

:root {
  /* авторизованная часть: тёплая архитектурная палитра */
  --bg: #f6f1e8;
  --surface: #fffdfa;
  --surface-subdued: #f1ece3;
  --border: #e9e1d5;
  --border-strong: #d7cbbb;

  --text: #302e29;
  --text-heading: #252523;
  --text-muted: #78736c;
  --text-faint: #9b948a;

  --primary: #a56d24;
  --primary-dark: #74470f;
  --primary-soft: #f6e8d0;
  --primary-soft-2: #fcf5e9;

  --success: #0a7d55;
  --success-text: #08624a;
  --success-soft: #cbf1e2;

  --warning: #e8b12b;
  --warning-text: #6b4a08;
  --warning-soft: #fbeaba;

  --danger: #c4353a;
  --danger-text: #a2262c;
  --danger-soft: #fbdcda;

  --risk: #d9601f;
  --risk-text: #93380f;
  --risk-soft: #fbdfc6;

  --radius: 14px;
  --radius-sm: 10px;

  --shadow-xs: 0 2px 8px rgb(67 53 35 / 6%);
  --shadow-s: 0 10px 30px rgb(67 53 35 / 10%);
}

.sidebar .brand { letter-spacing: .04em; }

/* Кабинет: тёмная навигация, при этом вход живёт в login.html отдельно. */
.layout .sidebar { background:#292b26; border-color:rgba(255,255,255,.1); padding:22px 14px; }
.layout .sidebar .brand, .layout .sidebar .section-label,
.layout .sidebar .sidebar-project-name, .layout .sidebar nav a { color:#f6efe4; }
.layout .sidebar .brand-row { border-color:rgba(255,255,255,.12); padding-bottom:18px; }
.layout .sidebar .brand-org { background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.1); }
.layout .sidebar nav a { min-height:42px; border-radius:10px; }
.layout .sidebar nav a:hover { background:rgba(255,255,255,.09); }
.layout .sidebar nav a.active { background:#f6e8d0; color:#74470f; font-weight:700; }
.layout .sidebar nav a.active::before { display:none; }
.layout .topbar { background:#fffdfa; border-color:var(--border); min-height:68px; padding:14px 30px; }
.layout .content { background:var(--bg); padding:28px 30px 44px; }
.layout .card, .layout .metric, .layout .project-card { border-color:var(--border); box-shadow:var(--shadow-xs); }
.layout .project-card { border-radius:16px; transition:box-shadow .16s ease-out,transform .16s ease-out; }
.layout .project-card:hover { box-shadow:var(--shadow-s); transform:translateY(-2px); }
.layout .project-card-head { background:linear-gradient(105deg,#fffdfa,#f6ecdc); border-color:var(--border); }
.layout .project-card-foot { color:var(--primary-dark); background:#fcf5e9; }
.layout .metric { padding:18px; }
.layout .metric .value { font-size:24px; color:var(--text-heading); }
.layout .tabs { border-color:var(--border); }
.layout .tabs a.active { border-bottom-width:2px; }
.layout table thead th, .layout .table-head { background:var(--surface-subdued); color:var(--text-muted); }
.layout table td { border-color:var(--border); }

/* Портфель: светлая навигация и широкие карточки объектов. */
.layout .sidebar { background:#fffdfa; border-color:var(--border); }
.layout .sidebar .brand, .layout .sidebar .section-label,
.layout .sidebar .sidebar-project-name, .layout .sidebar nav a { color:var(--text); }
.layout .sidebar .brand-row { border-color:var(--border); }
.layout .sidebar .brand-org { background:transparent; border-color:var(--border); }
.layout .sidebar nav a:hover { background:var(--surface-subdued); }
.layout .sidebar nav a.active { background:var(--primary-soft); color:var(--primary-dark); }
.layout .content { background:#f0f1f3; }
.project-cards { grid-template-columns:1fr; gap:18px; }
.project-card { border-color:var(--border); border-radius:16px; color:#111; }
.project-card-head { height:auto; min-height:92px; background:#fffdfa; color:#111; border-bottom:1px solid var(--border); }
.project-card-head h3, .project-card-address { color:#111; }
.project-card-status { background:var(--primary-soft); color:var(--primary-dark); border-color:transparent; }
.project-card-photo { height:260px; background:linear-gradient(135deg,#d9dcdf,#edf0f2); border-bottom:1px solid var(--border); }
.project-card-body { background:#f6f7f8; }
.project-card-body, .project-card-foot, .pc-chip, .pc-stat { color:#111; }
.pc-stat .v, .pc-stat .l { color:#111; }
@media(max-width:700px){.project-card-photo{height:190px}}

/* Портфель объектов: крупные сводные KPI и карта по введённым координатам. */
.portfolio-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.portfolio-kpis .metric{min-height:142px;padding:22px;border-radius:14px}.portfolio-kpis .metric .label{font-size:12px}.portfolio-kpis .metric .value{font-size:28px;margin-top:10px}.metric-note{margin-top:4px;color:var(--success-text);font-size:12px;font-weight:600}.portfolio-map-canvas{position:relative;height:360px;overflow:hidden;background:linear-gradient(155deg,#dce7ea,#f8fbfb 50%,#d6e1df)}.portfolio-map-empty{position:absolute;z-index:1;left:50%;top:50%;transform:translate(-50%,-50%);max-width:330px;text-align:center;color:var(--text-muted)}.portfolio-map-yandex{width:100%;height:70vh;max-height:640px;min-height:380px}@media(max-width:700px){.portfolio-kpis{grid-template-columns:1fr}.portfolio-map-canvas{height:280px}.portfolio-map-yandex{height:60vh;min-height:300px}}

/* Активный пункт навигации: мягкая заливка + бирюзовая метка слева */
.sidebar nav a { border-radius: 6px; }
.sidebar nav a.active::before { background: var(--primary); border-radius: 0 3px 3px 0; }

/* Верхняя панель и заголовки — плотнее по трекингу, как в документации */
.topbar h1, .topbar h2, .topbar h3 { letter-spacing: -.02em; }

/* Карточки и метрики: крупнее радиус, тоньше тень */
.card, .metric { border-radius: var(--radius); }
.metric .value { letter-spacing: -.02em; }

/* Кнопки: без подпрыгивания, спокойный ховер */
.btn { border-radius: var(--radius-sm); font-weight: 600; }
.btn:hover { transform: none; box-shadow: var(--shadow-xs); }
.btn.secondary:hover { background: var(--primary-soft-2); border-color: var(--primary); color: var(--primary-dark); }

/* Бейджи и вкладки */
.badge { border-radius: 999px; background: #eef1f8; }
.badge.primary { background: var(--primary-soft); color: var(--primary-dark); }
.tabs a.active { color: var(--primary-dark); border-bottom-color: var(--primary); }

/* Поля ввода: фокус-ринг бирюзовый */
input:focus, select:focus, textarea:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px var(--primary-soft-2), 0 0 0 1px var(--primary);
}

/* Таблицы: наведение в тон акценту */
tr:hover td { background: var(--primary-soft-2); }

/* ---------- Состав проектной документации: список ----------
   Разметка не меняется (design/overview.html: .tree-row / .tree-doc-row /
   .doc-meta). Меняется только вид: строки-полосы, разделы с подложкой,
   документы белые, выбранный — с бирюзовой меткой слева. */

/* Снизу поле есть, по бокам и сверху их дают потомки (см. ниже):
   без нижнего поля форма создания документа упиралась прямо в край
   карточки. */
.design-tree-panel.full-width .card { padding: 0 0 18px; overflow: hidden; }
/* Отступ получают ВСЕ прямые потомки карточки, а не только div: сама
   карточка тут без полей (padding: 0), и подпись «структура не создана»
   (<p>) с формой создания документа (<form>) под старое правило не
   попадали и липли к краю. Исключены шапка таблицы дерева и сам список:
   их строки тянутся во всю ширину карточки и держат отступ сами — если
   добавить поля контейнеру, строки сдвинутся и потеряют полосы. */
.design-tree-panel.full-width .card > *:not(.tree-columns-head):not(.tree-list) {
  padding-left: 20px; padding-right: 20px;
}
.design-tree-panel.full-width .card > .panel-title { padding-top: 18px; }

.tree-columns-head {
  padding: 9px 20px 9px 34px;
  background: var(--surface-subdued);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.tree-list { margin: 0; }
.tree-node { margin-bottom: 0; }

/* Строка раздела */
.tree-row {
  padding: 10px 20px;
  border-radius: 0;
  border-bottom: 1px solid var(--border);
  background: var(--surface-subdued);
  align-items: center;
}
.tree-row:hover { background: var(--primary-soft-2); }
.tree-label { font-size: 13.5px; font-weight: 600; color: var(--text-heading); }
.tree-code {
  font-family: var(--font-mono, monospace);
  font-size: 11.5px; font-weight: 500; color: var(--primary);
  min-width: 46px;
}

/* Строка документа */
.tree-doc-row {
  padding: 9px 20px 9px 44px;
  border-radius: 0;
  border-bottom: 1px solid #f0f3f9;
  background: var(--surface);
  align-items: center;
}
.tree-doc-row:hover { background: var(--primary-soft-2); }
.tree-doc-row.is-selected,
.tree-label-link.is-selected,
.tree-row.is-selected {
  background: var(--primary-soft-2);
  box-shadow: inset 2px 0 0 var(--primary);
  color: var(--primary-dark);
}

/* Вложенные разделы — отступом, без рамок */
.tree-list .tree-list { padding-left: 0; }
.tree-list .tree-list .tree-row { padding-left: 40px; background: #fcfdff; }
.tree-list .tree-list .tree-doc-row { padding-left: 64px; }

/* Счётчик открытых замечаний — капсула */
.tree-count { padding: 2px 7px; font-size: 10.5px; }

/* Служебные колонки: тонкие разделители, ровная сетка */
.doc-meta .meta-status, .doc-meta .meta-approval,
.doc-meta .meta-version, .doc-meta .meta-executor { border-left: 1px solid var(--border); }
.doc-meta .badge { font-size: 11px; }

.section-doc-row { border-radius: var(--radius-sm); }

/* График проектирования: полосы этапов */
.sched-track { border-radius: var(--radius-sm); }
.sched-bar, .sched-bar-fill { border-radius: 5px; }

/* Чат-помощник */
.chat-message { border-radius: 10px; }
.chat-message.user { background: var(--primary); }

/* Экран входа: подсветка за карточкой — эхо стеклянной стопки из макета */
.login-wrap::before {
  content: "";
  position: absolute;
  width: 720px; height: 720px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(79,216,207,.20), rgba(79,216,207,0) 62%);
  z-index: 1;
  pointer-events: none;
}
.login-card { border-radius: 12px; }
.login-card h2 { letter-spacing: -.02em; }

/* Марка кабинета: та же «Цитадель», что на главной, в синем варианте. */
.layout .sidebar .brand-logo-citadel{display:inline;width:auto;height:auto;border-radius:0;background:transparent;color:#1769c2;font-size:25px;font-weight:700;line-height:1;object-fit:initial}
.layout .sidebar .brand{color:#1769c2;font-size:15px;letter-spacing:.08em}

@media(max-width:600px){.portfolio-filter{flex:none;width:max-content}}

/* Просторная карточка объекта: фото и данные имеют одинаковые внешние отступы. */
@media(min-width:851px){
  .project-card{grid-template-columns:250px minmax(230px,1.15fr) minmax(390px,1fr);grid-template-areas:"photo heading details";min-height:220px;padding:14px;gap:14px;box-sizing:border-box}
  .project-card-photo{grid-area:photo;width:236px;height:192px;margin:0;border-radius:11px}
  .project-card-head{grid-area:heading;min-height:192px;padding:22px 20px;border-radius:11px;align-self:stretch}
  .project-card-body{grid-area:details;align-self:stretch;padding:20px;border-left:1px solid var(--border);border-radius:11px;display:flex;flex-direction:column;justify-content:center}
  .project-card-meta{margin-bottom:16px;gap:8px}
  .project-card-stats{gap:10px}
  .pc-stat{min-height:62px;padding:10px 8px;display:flex;flex-direction:column;justify-content:center}
}

@media(min-width:601px) and (max-width:850px){
  .project-card{min-height:188px;padding:12px;gap:12px;box-sizing:border-box}
  .project-card-photo{height:164px;margin:0}
  .project-card-head{min-height:164px;padding:18px}
  .project-card-body{align-self:stretch;padding:16px}
}

/* Фото не должно заходить на наименование и статус объекта. */
.project-card-photo{position:relative;z-index:0;min-width:0}
.project-card-head{position:relative;z-index:1;min-width:0}

.btn.secondary.toolbar-btn-solid{background:var(--surface);border-color:var(--border-strong);box-shadow:var(--shadow-s)}.btn.secondary.toolbar-btn-solid:hover{background:var(--primary-soft-2)}.portfolio-filter[open] summary.toolbar-btn-solid{background:var(--primary-soft)}.portfolio-tools{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:18px}.portfolio-filter summary{list-style:none;cursor:pointer}.portfolio-filter summary::-webkit-details-marker{display:none}.portfolio-filter summary span{font-size:12px;font-weight:600;color:inherit}.portfolio-filter{position:relative;flex:none}.portfolio-filter[open] summary{background:var(--primary-soft);color:var(--primary-dark);border-color:var(--primary)}.portfolio-filter form{position:absolute;z-index:5;right:0;top:38px;display:grid;min-width:180px;padding:6px;background:#fffdfa;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-s)}.portfolio-filter button{border:0;background:transparent;padding:9px;text-align:left;color:var(--text);cursor:pointer;border-radius:6px}.portfolio-filter button:hover{background:var(--primary-soft-2)}
.project-cards{grid-template-columns:1fr;gap:12px}.project-card{display:grid;grid-template-columns:128px minmax(220px,1.3fr) minmax(360px,1fr);align-items:center;min-height:192px;border-radius:14px;color:#111}.project-card-head{grid-column:2;grid-row:1;min-height:192px;height:auto;background:#fffdfa;color:#111;border:0;padding:16px}.project-card-head h3,.project-card-address{color:#111}.project-card-status{background:var(--primary-soft);color:var(--primary-dark);border-color:transparent}.project-card-photo{grid-column:1;grid-row:1;height:192px;margin-left:14px;border-radius:9px;background:linear-gradient(135deg,#d9dcdf,#edf0f2);border:0;overflow:hidden}.project-card-photo img{width:100%;height:100%;object-fit:cover}.project-card-body{grid-column:3;grid-row:1;background:#fffdfa;padding:14px 16px;border-left:1px solid var(--border)}.project-card-meta{margin-bottom:8px}.project-card-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pc-stat{padding:7px}.pc-stat .v,.pc-stat .l{color:#111}.pc-stat .v{font-size:15px}.pc-stat .v.money{font-size:12px}.pc-stat .l{font-size:9px}@media(max-width:850px){.project-card{grid-template-columns:100px minmax(190px,1fr) minmax(280px,1fr);min-height:164px}.project-card-head{min-height:164px}.project-card-photo{height:164px}.project-card-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.portfolio-tools{flex-wrap:wrap}#portfolio-map-open{flex:1 1 auto}.project-card{grid-template-columns:76px 1fr;align-items:start;min-height:0}.project-card-photo{grid-column:1;grid-row:1;margin:12px;height:64px}.project-card-head{grid-column:2;grid-row:1;min-height:88px}.project-card-body{grid-column:1/-1;grid-row:2;border-left:0;border-top:1px solid var(--border)}.project-card-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Финальная сетка широкой карточки. Этот блок намеренно ниже всех ранних
   вариантов, чтобы колонка фото всегда была шире самого изображения. */
@media(min-width:851px){
  .project-card{grid-template-columns:250px minmax(230px,1.15fr) minmax(390px,1fr);grid-template-areas:"photo heading details";min-height:220px;padding:14px;gap:14px;box-sizing:border-box}
  .project-card-photo{grid-area:photo;width:236px;height:192px;margin:0;border-radius:11px}
  .project-card-head{grid-area:heading;min-height:192px;padding:22px 20px;border-radius:11px;align-self:stretch}
  .project-card-body{grid-area:details;align-self:stretch;padding:20px;border-left:1px solid var(--border);border-radius:11px;display:flex;flex-direction:column;justify-content:center}
  .project-card-meta{margin-bottom:16px;gap:8px}
  .project-card-stats{gap:10px}
  .pc-stat{min-height:62px;padding:10px 8px;display:flex;flex-direction:column;justify-content:center}
}

/* Верхнее меню разделов проекта (см. base.html, top_nav_mode) — заменяет
   список разделов в сайдбаре на всех страницах внутри проекта. Подвкладки
   самого раздела (dashboard/_tabs.html, design/_tabs.html, PRODUCTION_TABS
   и т.п.) рисуются уже внутри .content и физически оказываются "панелью
   снизу" под этим меню — по одной на каждый раздел, ничего для этого
   менять не нужно. */
.project-top-nav{display:flex;align-items:center;gap:2px;padding:0 30px;background:var(--surface);border-bottom:1px solid var(--border);overflow-x:auto}
.project-top-nav a{padding:13px 14px;font-size:13.5px;color:var(--text-muted);border-bottom:2px solid transparent;white-space:nowrap;transition:color var(--speed-fast) var(--ease),border-color var(--speed-fast) var(--ease)}
.project-top-nav a:hover{color:var(--text);text-decoration:none}
.project-top-nav a.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}

/* Фото-баннер объекта — заменяет .topbar целиком, когда открыт объект:
   бренд/переход в портфель, блок пользователя (уведомления/задачи/аккаунт,
   через тот же макрос user_info_bar что и в обычной шапке) и погода. */
.project-hero{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:380px;padding:16px 30px 30px;background-size:cover;background-position:center;color:#fff;box-sizing:border-box}
.project-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.project-hero-left{display:flex;flex-direction:column;gap:3px}
.project-hero-brand{display:inline-flex;align-items:center;gap:8px;color:#fff;font-weight:600;font-size:15.5px}
.project-hero-msk-time{font-size:13.5px;font-weight:500;color:rgba(255,255,255,.75);padding-left:34px;font-variant-numeric:tabular-nums}
.project-hero-brand:hover{color:#fff;text-decoration:underline}
.project-hero-brand .brand-logo-citadel{color:#fff;background:rgba(255,255,255,.18);width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1}
.project-hero-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px;font-size:14.5px}
.project-hero-actions-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.project-hero-actions .notif-bell{color:#fff}
/* Кнопки "Задачи"/"Уведомления" — прозрачность фона уменьшена на 10 п.п.
   (было .14/.26 — стали более заметными на фото-баннере). */
.project-hero-actions .notif-goto-btn{background:rgba(255,255,255,.24);border-color:rgba(255,255,255,.32);color:#fff;font-size:13.5px}
.project-hero-actions .notif-goto-btn:hover{background:rgba(255,255,255,.36);color:#fff}
.project-hero-actions .user-avatar{background:rgba(255,255,255,.22);color:#fff;font-size:11px}
.project-hero-actions-row>span{color:#fff}
.project-hero-actions .badge{background:rgba(255,255,255,.22);color:#fff;font-size:13px}
.project-hero-actions-row>a:not(.btn){color:#fff}
/* Погода/местное время объекта — второй строкой под кнопками (задачи/
   уведомления/аккаунт), внутри той же панели, прижаты к правому краю. */
.project-weather{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.30);font-size:14.5px;font-weight:600;white-space:nowrap}
.project-weather[hidden]{display:none}
.project-weather-desc{font-weight:500;color:rgba(255,255,255,.85)}
.project-weather-sep{color:rgba(255,255,255,.5)}
.project-weather-time{font-weight:500;font-variant-numeric:tabular-nums}
.project-hero-bottom h1{margin:0 0 4px;font-size:30px;letter-spacing:-.01em;color:#fff;font-weight:600}
.project-hero-tagline{margin:0 0 10px;color:rgba(255,255,255,.85);font-size:13.5px}
.project-hero-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.project-hero-loc{display:inline-flex;align-items:center;gap:5px;color:rgba(255,255,255,.92);font-size:13px}
.project-hero-meta .badge{background:rgba(255,255,255,.22);color:#fff;border:1px solid rgba(255,255,255,.32)}
@media(max-width:700px){.project-hero{padding:14px 16px 18px;min-height:0}.project-hero-bottom h1{font-size:22px}}
