:root{--bg:#f3f6fb;--card:#fff;--text:#142039;--muted:#6b7587;--accent:#345cf5;--accent2:#e9eeff;--line:#e1e6ef;--bad:#c62828;--good:#16803c;--header:#0f172a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 Inter,system-ui,-apple-system,Segoe UI,sans-serif;padding-bottom:0}header{height:68px;background:var(--header);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,5vw);position:sticky;top:0;z-index:20}.brand{font-size:22px;font-weight:850;color:#fff}.brand small{font-size:11px;color:#8fa2c8}nav{display:flex;gap:20px}nav a{color:#dbe4ff;text-decoration:none}.menu-btn{display:none;background:transparent;font-size:25px;padding:5px}.bottom-nav{display:none}main{max-width:1320px;margin:28px auto;padding:0 24px}h1{font-size:32px;margin:0 0 6px;line-height:1.15}h2{margin:0;font-size:21px}h3{margin:24px 0 10px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:22px}.page-head p{margin:5px 0 0;color:var(--muted)}.back{font-size:13px;color:var(--muted)}.button,button{border:0;background:var(--accent);color:#fff;font-weight:750;padding:12px 18px;border-radius:11px;cursor:pointer;text-decoration:none}button:disabled{opacity:.65}.secondary{background:var(--accent2);color:var(--accent)}.small{font-size:12px;padding:7px 10px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:21px;box-shadow:0 8px 28px rgba(17,24,39,.04)}.block{margin-bottom:20px}.grid{display:grid;gap:15px}.metrics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:20px}.metrics span,.summary-grid span{display:block;color:var(--muted);font-size:13px}.metrics b{font-size:25px}.accent-card{background:linear-gradient(135deg,#eef2ff,#fff);border-color:#cdd7ff}.split{display:grid;grid-template-columns:minmax(310px,.8fr) minmax(500px,1.4fr);gap:20px;margin-bottom:20px}.section-head{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:14px}.section-head>span,.section-head a{color:var(--muted);font-size:13px}.table-wrap{overflow:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;color:var(--muted)}td small,.item span,.engineer small,.contract-row span,.contract-card span,.task span,.stat-row span{display:block;color:var(--muted)}a{color:var(--accent);text-decoration:none}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}label{font-size:13px;color:var(--muted)}input,select,textarea{display:block;width:100%;margin-top:5px;padding:12px;border:1px solid #cbd3e0;border-radius:11px;background:#fff;color:var(--text);font-size:16px}textarea{min-height:90px}.wide{grid-column:1/-1}.pad-top{padding-top:15px}.item{padding:13px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px}.bad{color:var(--bad)!important}.good{color:var(--good)!important}.badge{background:var(--accent2);color:var(--accent);padding:8px 12px;border-radius:999px}.item-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.mini-card{border:1px solid var(--line);border-radius:14px;padding:15px}.mini-card span,.mini-card small{display:block;color:var(--muted);margin-top:4px}.mini-card strong{display:block;margin-top:9px}.contract-row,.contract-card{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px 0;border-bottom:1px solid var(--line);color:var(--text)}.pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.pills i{font-style:normal;font-size:12px;background:#f0f3f8;border-radius:99px;padding:4px 8px}.task{display:flex;justify-content:space-between;gap:15px;padding:13px 0;border-bottom:1px solid var(--line)}.task>div:last-child{display:flex;gap:10px;align-items:center}.task.done{opacity:.55}.summary-grid{grid-template-columns:repeat(4,1fr);margin-bottom:16px}.summary-grid b{font-size:19px}.engineer{padding:15px 0;border-bottom:1px solid var(--line)}.progress{height:10px;background:#edf0f5;border-radius:99px;overflow:hidden;margin:10px 0}.progress span{display:block;height:100%;background:var(--accent)}.capacity-line{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.stat-row{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.stat-row>div:last-child{text-align:right}.stat-row small{display:block;color:var(--muted)}details{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}summary{cursor:pointer;color:var(--accent);font-weight:700}.empty,.notice{padding:18px;color:var(--muted);background:#f7f9fc;border-radius:12px}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,92vw)}.alert{background:#fee2e2;color:#991b1b;padding:10px;border-radius:9px;margin-bottom:12px}
@media(max-width:850px){body{padding-bottom:76px}header{height:64px;padding:0 18px}.brand{font-size:20px}.menu-btn{display:block}header nav{display:none;position:absolute;top:64px;left:12px;right:12px;background:#17233a;border-radius:14px;padding:10px;flex-direction:column;box-shadow:0 15px 35px rgba(0,0,0,.25)}body.menu-open header nav{display:flex}header nav a{padding:11px;border-bottom:1px solid rgba(255,255,255,.08)}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;height:68px;padding-bottom:env(safe-area-inset-bottom);background:#fff;border-top:1px solid var(--line);z-index:30;justify-content:space-around;align-items:center}.bottom-nav a{color:#667085;display:flex;flex-direction:column;align-items:center;font-size:20px;min-width:58px}.bottom-nav span{font-size:10px;margin-top:2px}.bottom-nav .primary{background:var(--accent);color:#fff;width:52px;height:52px;border-radius:50%;justify-content:center;margin-top:-22px;box-shadow:0 8px 20px rgba(52,92,245,.35)}main{padding:0 14px;margin:20px auto}h1{font-size:28px}.page-head .button{display:none}.split{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.metrics{grid-template-columns:repeat(2,1fr)}.metrics .card{padding:17px}.metrics b{font-size:22px}.accent-card{grid-column:1/-1}.summary-grid{grid-template-columns:repeat(2,1fr)}.section-head{align-items:flex-start}.task{flex-direction:column}.task>div:last-child{justify-content:space-between}.capacity-line{flex-wrap:wrap;gap:6px}.card{padding:17px;border-radius:16px}.contract-row{align-items:flex-start}.contract-row strong{white-space:nowrap}.item-grid{grid-template-columns:1fr}.page-head{margin-bottom:17px}}
.status-banner{padding:16px;border-radius:14px;font-weight:800;margin:16px 0}.status-banner.danger{background:#fee2e2;color:#991b1b}.status-banner.ok{background:#dcfce7;color:#166534}.photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:16px}.photo-grid figure{margin:0;background:#f4f6fa;border-radius:12px;padding:8px}.photo-grid img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:9px}.button{display:inline-block;background:#315efb;color:#fff!important;padding:12px 18px;border-radius:10px;text-decoration:none}.green{background:#16a34a!important}.wide{grid-column:1/-1}.brand small{font-size:12px;opacity:.65}.list-row{display:flex;flex-direction:column;gap:5px;padding:14px 4px;border-bottom:1px solid #e5e7eb;color:inherit;text-decoration:none}.list-row span{color:#697386;font-size:14px}@media(max-width:720px){.brand{font-size:28px}.metrics{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.wide{grid-column:auto}main{padding-bottom:90px}.mobile-nav{display:flex}.table-wrap{overflow-x:auto}h1{font-size:36px}}

/* v1.0 navigation and QR */
.menu-overlay{display:none;position:fixed;inset:64px 0 0;background:rgba(8,15,31,.48);z-index:19}
.kv{display:grid;grid-template-columns:minmax(120px,.7fr) 1.3fr;gap:8px 14px;margin:16px 0}.kv span{color:var(--muted)}.kv b{font-weight:700}.muted{color:var(--muted)}.action-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.qr-card{text-align:center}.qr-image{width:min(260px,75vw);background:#fff;border-radius:12px}.qr-card form{margin-top:10px}.equipment-status{padding:8px 12px;border-radius:999px;background:#eef2ff;color:#315efb}.scanner-card{max-width:640px;margin:auto}.scanner-card video{display:block;width:100%;aspect-ratio:3/4;max-height:62vh;object-fit:cover;background:#101827;border-radius:16px;margin-bottom:14px}.manual-qr{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin-top:20px}.good-box{background:#dcfce7;color:#166534}
@media(max-width:850px){body.menu-open #mainNav{display:flex;position:fixed;top:64px;right:0;left:auto;width:min(86vw,360px);height:calc(100dvh - 64px);background:#17233a;border-radius:0;padding:14px;overflow:auto;z-index:40;box-shadow:-15px 0 35px rgba(0,0,0,.28);filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:1!important}body.menu-open .menu-overlay{display:block}body.menu-open #mainNav *{filter:none!important;opacity:1!important}.kv{grid-template-columns:1fr}.kv span{margin-top:6px}.manual-qr{grid-template-columns:1fr}.page-head{gap:10px}}


/* v1.0.1 — robust mobile drawer state */
@media (max-width:850px){
  header nav#mainNav{
    display:flex !important;
    position:fixed !important;
    top:64px !important;
    right:0 !important;
    left:auto !important;
    width:min(86vw,360px) !important;
    height:calc(100dvh - 64px) !important;
    margin:0 !important;
    padding:14px !important;
    border-radius:0 !important;
    background:#17233a !important;
    flex-direction:column !important;
    gap:0 !important;
    overflow-y:auto !important;
    overflow-x:hidden !important;
    white-space:normal !important;
    z-index:1001 !important;
    box-shadow:-15px 0 35px rgba(0,0,0,.28) !important;
    transform:translateX(105%) !important;
    visibility:hidden !important;
    opacity:0 !important;
    pointer-events:none !important;
    transition:transform .22s ease, opacity .18s ease, visibility 0s linear .22s !important;
    filter:none !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
  }

  body.menu-open header nav#mainNav{
    transform:translateX(0) !important;
    visibility:visible !important;
    opacity:1 !important;
    pointer-events:auto !important;
    transition:transform .22s ease, opacity .18s ease !important;
  }

  header nav#mainNav a{
    width:100%;
    padding:16px 10px !important;
    border-bottom:1px solid rgba(255,255,255,.08);
    white-space:normal !important;
  }

  .menu-overlay{
    display:block !important;
    position:fixed !important;
    inset:64px 0 0 !important;
    background:rgba(8,15,31,.48) !important;
    z-index:1000 !important;
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:none !important;
    transition:opacity .18s ease, visibility 0s linear .18s !important;
    backdrop-filter:none !important;
    -webkit-backdrop-filter:none !important;
  }

  body.menu-open .menu-overlay{
    opacity:1 !important;
    visibility:visible !important;
    pointer-events:auto !important;
    transition:opacity .18s ease !important;
  }

  body:not(.menu-open) header nav#mainNav{
    transform:translateX(105%) !important;
    visibility:hidden !important;
    opacity:0 !important;
    pointer-events:none !important;
  }

  body.menu-open{
    overflow:hidden;
  }
}

@media (min-width:851px){
  .menu-overlay{display:none !important}
}


/* v2.0.1 — menu click and stacking fix */
@media (max-width:850px){
  header{
    z-index:2000 !important;
  }

  header nav#mainNav{
    z-index:2002 !important;
    pointer-events:none !important;
  }

  body.menu-open header nav#mainNav{
    pointer-events:auto !important;
  }

  header nav#mainNav a{
    position:relative !important;
    z-index:2003 !important;
    pointer-events:auto !important;
    cursor:pointer !important;
    color:#dbe4ff !important;
  }

  .menu-overlay{
    z-index:1999 !important;
  }

  body.menu-open .menu-overlay{
    pointer-events:auto !important;
  }

  .bottom-nav{
    z-index:100 !important;
  }

  body.menu-open .bottom-nav{
    pointer-events:none !important;
  }
}

/* QR camera fallback */
.camera-fallback{
  margin-top:14px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#f7f9fc;
}
.camera-fallback input[type=file]{
  padding:10px;
  background:#fff;
}
.camera-fallback .hint{
  display:block;
  margin-top:8px;
  color:var(--muted);
  font-size:13px;
}


/* v2.1 analytics */
.button-link{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--accent,#315efb);color:#fff!important;
  padding:12px 18px;border-radius:12px;text-decoration:none;font-weight:700;
}
.button-link.secondary{background:#eef2ff;color:#294ed8!important}
.inline-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap}
.inline-form label{min-width:240px;flex:1}
.list-stack{display:flex;flex-direction:column;gap:8px}
.list-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:inherit}
.list-row span{display:flex;flex-direction:column;gap:4px}
.list-row small{color:var(--muted)}
.decision{display:flex;flex-direction:column;gap:5px;padding:18px 20px;border-radius:16px;margin-bottom:18px}
.decision.success{background:#e7f8ee;color:#12643a;border:1px solid #a7dfbd}
.decision.danger{background:#fff0f0;color:#8b1f1f;border:1px solid #efb1b1}
.decision b{font-size:20px}.danger-text{color:#c62828!important}
.breakdown{display:flex;flex-direction:column}
.breakdown>div{display:flex;justify-content:space-between;gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}
.breakdown .total{font-size:18px;border-top:2px solid var(--line);border-bottom:0;margin-top:6px;padding-top:16px}
.danger-button{background:#fff0f0;color:#a51f1f;border:1px solid #efb1b1;padding:8px 10px}
@media(max-width:720px){
  .page-head{align-items:stretch}
  .button-link{width:100%}
  .inline-form{display:grid;grid-template-columns:1fr}
  .inline-form label{min-width:0}
  .list-row{align-items:flex-start}
}


/* v3.0 executive dashboard */
.executive-metrics{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.decision-pill{display:inline-block;padding:7px 10px;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap}
.decision-pill.success{background:#e7f8ee;color:#12643a}
.decision-pill.warning{background:#fff7df;color:#7a5700}
.decision-pill.danger{background:#fff0f0;color:#9d2020}
.recommendation-card{display:grid;grid-template-columns:1fr auto;gap:12px;padding:18px 20px;border-radius:16px;margin-bottom:18px}
.recommendation-card span{display:block;font-size:13px;opacity:.75}
.recommendation-card b{display:block;font-size:24px;margin-top:3px}
.recommendation-card strong{font-size:24px}
.recommendation-card ul{grid-column:1/-1;margin:0;padding-left:20px}
.recommendation-card.success{background:#e7f8ee;color:#12643a;border:1px solid #a7dfbd}
.recommendation-card.warning{background:#fff7df;color:#7a5700;border:1px solid #efd98a}
.recommendation-card.danger{background:#fff0f0;color:#9d2020;border:1px solid #efb1b1}
@media(max-width:720px){
  .recommendation-card{grid-template-columns:1fr}
  .recommendation-card strong{grid-row:1;justify-self:end}
}


/* v3.0.1 search and QR defect workflow */
.search-box{display:block;margin:0 0 14px}
.search-box input,.select-filter{margin-top:7px}
select[id]{min-width:0}
.page-actions{display:flex;gap:10px;flex-wrap:wrap}
tr[hidden],a[hidden]{display:none!important}
@media(max-width:720px){
  .section-head{align-items:stretch}
  .section-head .button-link{width:100%}
}


/* v3.0.2 QR media picker */
.qr-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
.qr-choice-grid button{width:100%;min-height:52px}
.qr-error{display:flex;flex-direction:column;gap:6px}
.qr-error small{overflow-wrap:anywhere}
#decodeBtn:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:620px){
  .qr-choice-grid{grid-template-columns:1fr}
}


/* v3.0.3 simplified QR file picker */
.single-file-picker{display:block;margin:14px 0}
.single-file-picker input[type="file"]{display:block;width:100%;margin-top:9px}
.qr-choice-grid{display:none!important}
#cameraInput,#libraryInput{display:none!important}


/* v3.0.4 dependent defect form */
.search-suggestions{position:relative;z-index:8;margin-top:6px;border:1px solid #d9deea;border-radius:12px;background:#fff;box-shadow:0 12px 30px rgba(18,29,54,.12);overflow:hidden}
.search-suggestions:empty{display:none}
.search-suggestion{display:block;width:100%;border:0;border-bottom:1px solid #edf0f6;border-radius:0;background:#fff;color:#172238;text-align:left;padding:13px 14px}
.search-suggestion:last-child{border-bottom:0}
.search-suggestion:active{background:#eef3ff}
.field-help{display:block;margin-top:7px;color:#6f788b;line-height:1.35}
.technical-details{border:1px solid #dfe4ee;border-radius:14px;padding:12px 14px}
.technical-details summary{cursor:pointer;font-weight:700}
.technical-details label{display:block;margin-top:14px}
#defectEquipment{min-height:180px}
.checkbox-label{display:flex!important;align-items:center;gap:10px}
.checkbox-label input{width:auto}


/* v3.0.9 — скрытие служебных идентификаторов с рабочих экранов */
.service-info details{width:100%}
.service-info summary{cursor:pointer;font-weight:700}
.service-kv{margin-top:16px}

/* v3.0.10 */
.institution-title{
  font-size:clamp(30px,7vw,52px);
  line-height:1.08;
  margin:0 0 22px;
  overflow-wrap:anywhere;
}
input::placeholder,textarea::placeholder{color:#9aa4b5;opacity:1}
.help-dot{
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;margin-left:5px;padding:0;
  border:1px solid #9aa4b5;border-radius:50%;
  background:#fff;color:#3b5bdb;font-size:14px;font-weight:700;
  line-height:1;vertical-align:middle;cursor:pointer;
}
.help-modal[hidden]{display:none}
.help-modal{position:fixed;inset:0;z-index:9999}
.help-modal__backdrop{position:absolute;inset:0;background:rgba(10,18,35,.48);backdrop-filter:blur(3px)}
.help-modal__dialog{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(92vw,520px);max-height:80vh;overflow:auto;
  border-radius:22px;background:#fff;padding:26px;
  box-shadow:0 20px 60px rgba(0,0,0,.28);
}
.help-modal__dialog h3{margin:0 38px 12px 0;font-size:22px}
.help-modal__text{font-size:17px;line-height:1.45;color:#384152;white-space:pre-line}
.help-modal__close{
  position:absolute;right:14px;top:12px;width:34px;height:34px;
  border:0;border-radius:50%;background:#eef2f8;color:#182033;
  font-size:24px;cursor:pointer;
}
body.modal-open{overflow:hidden}
@media(max-width:640px){
  .institution-title{font-size:clamp(28px,8.4vw,42px)}
  .help-dot{width:24px;height:24px;font-size:15px}
  .help-modal__dialog{width:calc(100vw - 28px);padding:22px}
}

/* v3.0.11 */
th{vertical-align:top}
th .help-dot,.card span .help-dot{flex:0 0 auto}
@media(max-width:640px){th .help-dot{margin-top:5px}}

/* v3.0.12 */
.page-title{font-size:clamp(30px,6vw,48px);line-height:1.08;margin:0 0 18px;overflow-wrap:anywhere;max-width:100%}
.login-submit{display:block;width:100%;margin-top:22px;min-height:54px}
.login-card form{display:flex;flex-direction:column;gap:14px}
.standard-date,input[type="date"]{width:100%;min-height:58px;box-sizing:border-box;border:1px solid #cbd4e2;border-radius:18px;background:#fff;padding:14px 16px;font:inherit;color:inherit;-webkit-appearance:none;appearance:none}
.help-dot-inline{width:21px;height:21px;margin-left:6px;font-size:13px}
@media(max-width:640px){.page-title{font-size:clamp(28px,8vw,40px)}.login-submit{margin-top:18px}}


/* v3.0.13 — единая типографика и адаптивность */
.page-title,
.institution-title,
.contract-title{
  font-size:clamp(28px,4.2vw,40px) !important;
  line-height:1.12 !important;
  margin:0 0 18px !important;
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:normal;
}
.help-modal__close{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 !important;
  line-height:1 !important;
  text-align:center !important;
  font-family:Arial,sans-serif !important;
  font-size:0 !important;
}
.help-modal__close::before{
  content:"×";
  display:block;
  font-size:24px;
  line-height:1;
  transform:translateY(-1px);
}
.dashboard-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
  gap:18px;
}
.dashboard-head > div{min-width:0}
.dashboard-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:auto !important;
  min-width:0 !important;
  min-height:48px;
  padding:12px 18px !important;
  border-radius:16px;
  white-space:nowrap;
  font-size:16px;
  line-height:1.2;
  align-self:start;
}
@media (max-width:760px){
  .page-title,.institution-title,.contract-title{
    font-size:clamp(28px,7vw,34px) !important;
  }
  .dashboard-head{
    grid-template-columns:1fr;
    gap:12px;
  }
  .dashboard-action{
    width:100% !important;
    min-height:50px;
    padding:12px 16px !important;
    font-size:16px;
  }
}
@media (min-width:1200px){
  .page-title,.institution-title,.contract-title{font-size:40px !important}
  .dashboard-action{padding:12px 20px !important}
}


/* v3.0.14 — единая геометрия интерфейса */
html,body{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}
body{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
header{
  width:100%;
  max-width:100%;
}
main{
  width:min(100%,1320px);
  max-width:100%;
  min-width:0;
  overflow-x:clip;
}
main > *,
.card,.grid,.form-grid,.page-head,.split,.metrics,.summary-grid,
label,.table-wrap{
  min-width:0;
  max-width:100%;
}
img,video,canvas,svg{
  max-width:100%;
}
input,select,textarea,button,.button,.button-link{
  min-width:0;
  max-width:100%;
}
input,select,input[type="date"],.standard-date{
  width:100%;
  height:56px;
  min-height:56px;
  margin-top:7px;
  padding:0 14px;
  border:1px solid #cbd3e0;
  border-radius:12px;
  background:#fff;
  color:var(--text);
  font:inherit;
  font-size:16px;
  line-height:56px;
  appearance:auto;
  -webkit-appearance:auto;
  text-align:left;
}
input[type="date"]::-webkit-date-and-time-value{
  text-align:left;
  min-height:1.2em;
}
input[type="date"]::-webkit-calendar-picker-indicator{
  opacity:1;
  cursor:pointer;
}
textarea{
  width:100%;
  min-height:96px;
  padding:13px 14px;
  border-radius:12px;
}
.grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.geo-actions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.geo-actions button{
  width:100%;
  min-height:50px;
}
.bottom-nav{
  width:100%;
  max-width:100%;
  overflow:hidden;
}
.bottom-nav a{
  flex:1 1 20%;
  min-width:0 !important;
  width:auto !important;
}
.bottom-nav .primary{
  flex:0 0 58px;
  width:58px !important;
  height:58px !important;
  min-width:58px !important;
}
.page-title,.institution-title,.contract-title{
  font-size:32px !important;
  line-height:1.15 !important;
}
@media(max-width:850px){
  main{
    width:100%;
    padding-left:14px;
    padding-right:14px;
  }
  .grid,.form-grid{
    grid-template-columns:minmax(0,1fr) !important;
  }
  .wide{
    grid-column:auto;
  }
  .page-title,.institution-title,.contract-title{
    font-size:30px !important;
  }
  .card{
    width:100%;
  }
  .bottom-nav{
    left:0;
    right:0;
  }
}
@media(max-width:390px){
  main{padding-left:10px;padding-right:10px}
  .card{padding:15px}
  .page-title,.institution-title,.contract-title{font-size:28px !important}
  .geo-actions{grid-template-columns:1fr}
}


/* v3.0.15 — единые даты и компактные флажки */
input[type="date"],
.standard-date{
  width:100% !important;
  min-height:58px !important;
  height:58px !important;
  box-sizing:border-box !important;
  border:1px solid #cbd4e2 !important;
  border-radius:18px !important;
  background:#fff !important;
  padding:0 16px !important;
  font:inherit !important;
  font-size:18px !important;
  color:#182033 !important;
  line-height:58px !important;
  -webkit-appearance:none;
  appearance:none;
}

input[type="date"]::-webkit-date-and-time-value{
  text-align:left;
}

input[type="checkbox"]{
  width:22px !important;
  height:22px !important;
  min-width:22px !important;
  min-height:22px !important;
  max-width:22px !important;
  max-height:22px !important;
  margin:0 10px 0 0 !important;
  padding:0 !important;
  border-radius:6px !important;
  vertical-align:middle !important;
  accent-color:#3d5df4;
  flex:0 0 22px !important;
}

label:has(input[type="checkbox"]),
.checkbox-row,
.check-row{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  min-height:34px !important;
}

.geo-error{
  color:#8a3b3b;
  font-size:15px;
  line-height:1.4;
  margin-top:12px;
}

@media(max-width:640px){
  input[type="date"],
  .standard-date{
    min-height:56px !important;
    height:56px !important;
    line-height:56px !important;
    font-size:17px !important;
  }

  input[type="checkbox"]{
    width:20px !important;
    height:20px !important;
    min-width:20px !important;
    min-height:20px !important;
    max-width:20px !important;
    max-height:20px !important;
    flex-basis:20px !important;
  }
}


/* v3.0.16 — последовательная форма маршрута */
.geo-form select:disabled{
  background:#f3f5f9;
  color:#7a8495;
  cursor:not-allowed;
}

.geo-form .muted{
  min-height:24px;
  line-height:1.4;
}


/* v3.0.18 — упрощённая форма дефекта */
.compact-action{
  width:auto !important;
  min-height:46px;
  padding:11px 16px !important;
  white-space:nowrap;
}

#equipmentDefectsCard .list-row{
  text-decoration:none;
}

@media(max-width:760px){
  .page-head{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
  }

  .compact-action{
    width:100% !important;
  }
}


/* v3.0.19 — материалы, ЗИП и поставщики */
.hint{
  display:block;
  margin-top:6px;
  color:#778195;
  line-height:1.35;
}

.table-wrap td small{
  color:#778195;
}

@media(max-width:760px){
  .table-wrap table{
    min-width:760px;
  }
}

/* v3.0.20 */
.decision-panel,.material-picker{border:1px solid #dfe4ee;border-radius:18px;padding:16px;background:#fafbfe}
.decision-panel h3,.material-picker h3{margin:0 0 14px}
.material-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 110px auto;gap:10px;align-items:center;margin-bottom:10px}
.material-total{text-align:right;font-size:18px;margin-top:12px}
.small-button{width:auto!important;padding:9px 13px!important}
.remove-material{width:auto!important;padding:9px 12px!important}
@media(max-width:700px){.material-row{grid-template-columns:1fr 90px}.row-total{padding-left:4px}.remove-material{width:100%!important}}


/* v3.0.21 — кадровый реестр */
.employee-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:14px;
}

.employee-card{
  display:flex;
  gap:14px;
  align-items:center;
  padding:16px;
  border:1px solid #e0e5ee;
  border-radius:18px;
  background:#fff;
  text-decoration:none;
  color:inherit;
}

.employee-card__body{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:0;
}

.employee-card__body b{
  font-size:18px;
}

.employee-card__body small{
  color:#778195;
  overflow-wrap:anywhere;
}

.employee-avatar,
.employee-photo{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  border-radius:50%;
  background:#e8edff;
  color:#3150d8;
  font-weight:700;
}

.employee-avatar{
  width:62px;
  height:62px;
  font-size:24px;
}

.employee-photo{
  width:180px;
  height:180px;
  margin:0 auto 18px;
  font-size:56px;
}

.employee-avatar img,
.employee-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
}

.employee-profile{
  display:grid;
  grid-template-columns:260px minmax(0,1fr);
  gap:18px;
  align-items:start;
}

.employee-photo-card form{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.danger-zone{
  border-color:#efc8c8;
}

@media(max-width:760px){
  .employee-profile{
    grid-template-columns:1fr;
  }

  .employee-grid{
    grid-template-columns:1fr;
  }
}


/* v3.0.21.2 — документы сотрудников */
.document-list{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:18px;
}

.document-row{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  padding:15px;
  border:1px solid #e0e5ee;
  border-radius:16px;
  background:#fff;
}

.document-row>div:first-child{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:0;
}

.document-row span,
.document-row small{
  color:#778195;
  overflow-wrap:anywhere;
}

.document-actions{
  display:flex;
  gap:8px;
  align-items:center;
  flex:0 0 auto;
}

.document-actions form{
  margin:0;
}

@media(max-width:700px){
  .document-row{
    align-items:flex-start;
    flex-direction:column;
  }

  .document-actions{
    width:100%;
  }

  .document-actions a,
  .document-actions button{
    width:100%;
  }
}

/* v3.0.22 — авторизация */
.narrow-card{max-width:720px;margin-inline:auto}
.profile-lines{display:flex;flex-direction:column;gap:10px}
.account-list{display:flex;flex-direction:column;gap:12px}
.account-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px;border:1px solid #e0e5ee;border-radius:16px}
.account-row>div:first-child{display:flex;flex-direction:column;gap:4px}
.account-row span,.account-row small{color:#778195}
.account-actions{display:flex;gap:8px;flex-wrap:wrap}
.account-actions form{margin:0}
.temporary-password{font:700 22px ui-monospace,SFMono-Regular,Menlo,monospace;padding:14px;border-radius:12px;background:#eef2ff;overflow-wrap:anywhere}
@media(max-width:700px){.account-row{align-items:flex-start;flex-direction:column}.account-actions{width:100%}.account-actions form,.account-actions button{width:100%}}

/* v3.0.25 — финансовая аналитика */
.finance-filter{margin-bottom:16px}
.finance-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.metric-card{display:flex;flex-direction:column;gap:7px;padding:18px;border:1px solid #dfe5ef;border-radius:18px;background:#fff}
.metric-card span{color:#737e92}
.metric-card b{font-size:clamp(22px,2.5vw,32px);line-height:1.08}
.metric-card small{color:#7b8496}
.negative{color:#b42318!important}
.cost-chart{display:flex;flex-direction:column;gap:18px}
.cost-chart-row{display:grid;grid-template-columns:minmax(160px,220px) 1fr;gap:8px 18px;align-items:center}
.cost-values{display:flex;justify-content:space-between;gap:12px;color:#687389;font-size:14px}
.cost-bars{grid-column:2;position:relative;height:18px;border-radius:10px;background:#eef1f7;overflow:hidden}
.cost-bar{position:absolute;left:0;border-radius:10px}
.cost-bar.plan{top:2px;height:6px;background:#a9b6d4}
.cost-bar.actual{bottom:2px;height:6px;background:#365cf5}
.finance-contract-list{display:flex;flex-direction:column;gap:14px}
.finance-contract{padding:17px;border:1px solid #dfe5ef;border-left:5px solid #22a559;border-radius:18px;background:#fff}
.finance-contract.warning{border-left-color:#d99a00}
.finance-contract.loss{border-left-color:#d83a36}
.finance-contract-header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.finance-contract-header>div{display:flex;flex-direction:column;gap:4px}
.finance-contract-header span{color:#748096}
.risk-label{padding:6px 10px;border-radius:999px;background:#edf8f1;color:#1d7b42!important;font-size:13px;white-space:nowrap}
.warning .risk-label{background:#fff6dd;color:#946500!important}
.loss .risk-label{background:#ffebea;color:#a92621!important}
.finance-progress{height:7px;background:#ebeff5;border-radius:8px;margin:14px 0;overflow:hidden}
.finance-progress div{height:100%;background:#365cf5;border-radius:8px}
.finance-contract-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.finance-contract-grid>div,.finance-breakdown>div{display:flex;flex-direction:column;gap:4px}
.finance-contract-grid span,.finance-breakdown span{color:#788296;font-size:13px}
.finance-contract details{margin-top:14px}
.finance-contract summary{cursor:pointer;color:#365cf5;font-weight:700}
.finance-breakdown{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid #e5e9f0}
.finance-method p{margin:.6em 0;color:#4d586d}
@media(max-width:1050px){.finance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-contract-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-breakdown{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.finance-kpis{grid-template-columns:1fr}.cost-chart-row{grid-template-columns:1fr}.cost-bars{grid-column:1}.finance-contract-header{flex-direction:column}.finance-contract-grid,.finance-breakdown{grid-template-columns:1fr}.risk-label{white-space:normal}}


/* v3.0.25.1 — корректный отказ в доступе */
.form-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:18px;
}


/* v3.0.26.1 — склад */
.warehouse-tabs{
  display:flex;
  gap:8px;
  overflow-x:auto;
  margin:0 0 16px;
  padding-bottom:4px;
}
.warehouse-tabs a{
  flex:0 0 auto;
  padding:10px 14px;
  border:1px solid #dce2ec;
  border-radius:999px;
  text-decoration:none;
  color:#4e5a70;
  background:#fff;
}
.warehouse-tabs a.active{
  background:#365cf5;
  border-color:#365cf5;
  color:#fff;
}
.warehouse-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
  gap:14px;
}
.warehouse-card{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:16px;
  border:1px solid #dfe5ef;
  border-left:5px solid #22a559;
  border-radius:18px;
  background:#fff;
  text-decoration:none;
  color:inherit;
}
.warehouse-card.warning{border-left-color:#d99a00}
.warehouse-card.critical{border-left-color:#d83a36}
.warehouse-card-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
}
.warehouse-card-head span{
  color:#778195;
  font-size:13px;
  text-align:right;
}
.warehouse-balance{
  font-size:28px;
  font-weight:700;
}
.warehouse-prices{
  display:flex;
  flex-direction:column;
  gap:3px;
  color:#6f7a8f;
  font-size:13px;
}
.warehouse-summary{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:850px){
  .warehouse-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .warehouse-grid,.warehouse-summary{grid-template-columns:1fr}
}

/* v3.0.26.2 */
.employee-public-head{display:grid;grid-template-columns:190px minmax(0,1fr);gap:22px;align-items:start}
.employee-public-head .employee-photo{margin:0}
.equipment-create-section{border-left:5px solid #365cf5}
.equipment-registry{display:flex;flex-direction:column;gap:10px}
@media(max-width:650px){.employee-public-head{grid-template-columns:1fr}.employee-public-head .employee-photo{margin:0 auto}}


/* v3.0.26.4 — обязательный адрес оборудования */
.equipment-create-section button:disabled{
  opacity:.45;
  cursor:not-allowed;
}


/* v3.0.26.6 — управление адресами */
.address-registry{
  display:flex;
  flex-direction:column;
  gap:14px;
}
.address-card{
  padding:16px;
  border:1px solid #dfe5ef;
  border-radius:18px;
  background:#fff;
}
.address-card-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
}
.address-card-head>div{
  display:flex;
  flex-direction:column;
  gap:5px;
}
.address-card-head span{
  color:#778195;
  font-size:13px;
}
.address-geo-status{
  padding:6px 10px;
  border-radius:999px;
  background:#edf8f1;
  color:#1d7b42!important;
  white-space:nowrap;
}
.address-geo-status.warning{
  background:#fff6dd;
  color:#946500!important;
}
.address-card details{
  margin-top:14px;
}
.address-card summary{
  cursor:pointer;
  color:#365cf5;
  font-weight:700;
}
.address-edit-form{
  margin-top:12px;
}
.address-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:14px;
}
button.danger{
  background:#fff;
  color:#b42318;
  border:1px solid #efb6b2;
}
button.danger:disabled{
  opacity:.4;
  cursor:not-allowed;
}
@media(max-width:650px){
  .address-card-head{
    flex-direction:column;
  }
  .address-geo-status{
    white-space:normal;
  }
  .address-actions{
    flex-direction:column;
  }
  .address-actions form,
  .address-actions button{
    width:100%;
  }
}

/* v3.0.27.0 — редактирование цифрового паспорта */
.equipment-edit-card{border-left:5px solid #365cf5}
.equipment-edit-card .hint{margin-bottom:16px}

/* v3.0.27.1 */
.archive-badge{display:inline-flex;padding:4px 8px;margin-left:8px;border-radius:999px;background:#eef1f5;color:#5c6678;font-size:12px}
.institution-management{border-left:5px solid #6b7280}
.dependency-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 18px}
.dependency-grid>div{display:flex;flex-direction:column;gap:5px;padding:13px;border:1px solid #dfe5ef;border-radius:14px}
.dependency-grid span{color:#778195;font-size:13px}.dependency-grid b{font-size:22px}
.delete-institution{margin-top:16px;padding-top:14px;border-top:1px solid #e1e6ee}
.delete-institution summary{cursor:pointer;color:#b42318;font-weight:700}
.delete-institution form{display:flex;flex-direction:column;gap:12px;max-width:700px}
@media(max-width:850px){.dependency-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.dependency-grid{grid-template-columns:1fr}}


/* v3.0.27.2 — зависимые поля фактических работ */
.field-message{
  display:block;
  min-height:18px;
  margin-top:5px;
  color:#b42318;
  font-size:12px;
}


/* v3.0.27.4 — поиск учреждения в цифровом паспорте */
.institution-search-field{
  position:relative;
}
.institution-search-results{
  position:absolute;
  z-index:60;
  top:100%;
  left:0;
  right:0;
  max-height:280px;
  overflow-y:auto;
  margin-top:6px;
  padding:8px;
  border:1px solid #d5dce8;
  border-radius:16px;
  background:#fff;
  box-shadow:0 18px 40px rgba(24,39,75,.18);
}
.institution-search-option{
  width:100%;
  min-height:44px;
  padding:10px 12px;
  border:0;
  border-radius:10px;
  background:#fff;
  color:#14213d;
  text-align:left;
  font-size:15px;
  font-weight:500;
}
.institution-search-option:hover,
.institution-search-option:focus{
  background:#eef3ff;
  color:#244fdc;
}
.institution-search-option[hidden]{
  display:none;
}


/* v3.0.27.5 — мобильная оптимизация без изменения таблиц */

/* Заголовки больше не прилипают к верхней границе контента. */
.page-head,
main > .page-title{
  scroll-margin-top:84px;
}
@media(max-width:850px){
  main{
    margin-top:26px;
  }
  .page-head{
    padding-top:6px;
  }
}

/* Более компактная геометрия полей на телефоне. */
@media(max-width:850px){
  input:not([type="checkbox"]):not([type="radio"]),
  select,
  input[type="date"],
  .standard-date{
    height:50px !important;
    min-height:50px !important;
    line-height:50px !important;
    padding-left:13px !important;
    padding-right:13px !important;
    border-radius:12px !important;
    font-size:16px !important;
  }
  textarea{
    min-height:86px;
    padding:11px 13px;
  }
  label{
    font-size:13px;
  }
  .grid,.form-grid{
    gap:12px !important;
  }
  .card{
    padding:16px;
  }
}

/* Значки справки легче и компактнее. */
.help-dot,
.help-dot-inline{
  width:19px !important;
  height:19px !important;
  min-width:19px !important;
  min-height:19px !important;
  margin-left:4px !important;
  border-color:#b8c1d0 !important;
  color:#5570c8 !important;
  font-size:12px !important;
  font-weight:700 !important;
  opacity:.82;
}
.help-dot:hover,
.help-dot:focus{
  opacity:1;
}
@media(max-width:640px){
  .help-dot,
  .help-dot-inline{
    width:18px !important;
    height:18px !important;
    min-width:18px !important;
    min-height:18px !important;
    font-size:11px !important;
  }
}

/* Компактный реестр учреждений. */
.searchable-institution{
  gap:7px;
  padding:13px 14px;
}
.institution-row-title{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.institution-row-title b{
  line-height:1.28;
}
.institution-row-meta{
  display:flex !important;
  flex-direction:row !important;
  flex-wrap:wrap;
  gap:4px 10px !important;
  line-height:1.35;
}
.institution-row-meta > span{
  display:inline !important;
}
@media(max-width:640px){
  .searchable-institution{
    padding:12px;
  }
  .institution-row-title{
    flex-direction:column;
    gap:6px;
  }
  .archive-badge{
    margin-left:0;
  }
}

/* Компактное наименование контракта. Структура таблицы не меняется. */
.compact-contract-link{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:150px;
}
.compact-contract-link strong{
  color:var(--accent);
  font-weight:700;
  overflow-wrap:anywhere;
}
.compact-contract-link small{
  color:var(--muted);
  font-size:12px;
  font-weight:500;
}

/* Кнопки остаются удобными, но без лишней высоты. */
@media(max-width:850px){
  button,
  .button,
  .button-link{
    min-height:46px;
    padding:10px 15px;
  }
  .dashboard-action{
    min-height:48px !important;
  }
}

/* Поле помещения остаётся обычным ручным вводом. */
input[name="room"]{
  appearance:auto;
  -webkit-appearance:auto;
}
