:root{--brand:#0b4f8a;--brand-d:#083a66;--bg:#f3f5f8;--card:#fff;--text:#1d2733;--muted:#6b7785;--line:#dde3ea;--ok:#1a7f37;--warn:#b26a00;--bad:#c62828;--radius:10px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:16px;line-height:1.45}
a{color:var(--brand)}
h1{font-size:1.45rem;margin:.2rem 0 .6rem}h2{font-size:1.1rem;margin:.2rem 0 .6rem}h3{font-size:1rem;margin:.8rem 0 .4rem}
.muted{color:var(--muted)}.small{font-size:.85rem}.mt{margin-top:.8rem}.warn-text{color:var(--warn)}
.topbar{position:sticky;top:0;z-index:20;background:var(--brand);color:#fff;display:flex;align-items:center;flex-wrap:wrap;padding:.55rem 1rem;gap:.5rem;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.brand{color:#fff;text-decoration:none;font-size:1.1rem;display:flex;align-items:center;gap:.5rem;margin-right:auto}
.logo{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:#fff;color:var(--brand);font-weight:800}
.logo.big{width:56px;height:56px;font-size:1.8rem;border-radius:14px;background:var(--brand);color:#fff}
.menu-btn{background:none;border:0;color:#fff;font-size:1.6rem;padding:.1rem .4rem;cursor:pointer}
.mainnav{display:none;width:100%;flex-direction:column}
.nav-open .mainnav{display:flex}
.mainnav a,.mainnav .linklike{color:#dfe9f5;text-decoration:none;padding:.6rem .4rem;border-top:1px solid rgba(255,255,255,.12);text-align:left;font-size:1rem}
.mainnav a.active{color:#fff;font-weight:600}
.mainnav form{margin:0}
@media(min-width:900px){.menu-btn{display:none}.mainnav{display:flex;flex-direction:row;width:auto;gap:.2rem}.mainnav a,.mainnav .linklike{border:0;padding:.35rem .6rem;border-radius:6px}.mainnav a.active{background:rgba(255,255,255,.15)}}
.container{max-width:1150px;margin:0 auto;padding:1rem .8rem 5rem}
.container.narrow{max-width:420px;padding-top:12vh}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:1rem;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;flex-wrap:wrap;margin-bottom:.6rem}
.page-head .actions{display:flex;gap:.5rem;flex-wrap:wrap}
.back{display:inline-block;margin-bottom:.3rem;text-decoration:none;font-size:.9rem}
.count{font-size:.9rem;color:var(--muted);font-weight:400}
.btn{display:inline-block;border:1px solid var(--line);background:#fff;color:var(--text);padding:.6rem 1rem;border-radius:8px;font-size:1rem;cursor:pointer;text-decoration:none;line-height:1.2;min-height:44px}
.btn:hover{border-color:var(--brand)}
.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn-primary:hover{background:var(--brand-d)}
.btn-lg{padding:.8rem 1.3rem;font-size:1.05rem;font-weight:600}
.btn-block{width:100%}
.btn-icon{border:0;background:#fbe9e9;color:var(--bad);border-radius:8px;width:44px;height:44px;font-size:1.1rem;cursor:pointer}
.linklike{background:none;border:0;color:var(--brand);cursor:pointer;padding:0;font:inherit}
.linklike.danger,.danger{color:var(--bad)}
.inline{display:inline}
.alert{padding:.75rem 1rem;border-radius:8px;margin-bottom:.8rem;border:1px solid}
.alert-success{background:#e8f5ec;border-color:#b7dfc3;color:#14532d}
.alert-error{background:#fdecec;border-color:#f4c2c2;color:#7f1d1d}
.badge{display:inline-block;font-size:.72rem;padding:.12rem .45rem;border-radius:20px;background:#e9eef4;color:#334;vertical-align:middle;margin-left:.2rem}
.badge.demo{background:#fff3cd;color:#7a5a00;font-weight:700}
.badge.warn{background:#fff1e0;color:var(--warn)}
.badge.ok{background:#e6f4ea;color:var(--ok)}
.state{display:inline-block;font-size:.78rem;padding:.2rem .55rem;border-radius:20px;font-weight:600;white-space:nowrap}
.state-ok{background:#e6f4ea;color:var(--ok)}.state-attention{background:#fff4dc;color:var(--warn)}
.state-repair{background:#fde7e7;color:var(--bad)}.state-stopped{background:#3b3b3b;color:#fff}.state-unknown{background:#eceff3;color:#556}
.filters{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.8rem;align-items:center}
.filters input[type=search]{flex:1 1 240px}
input,select,textarea{font:inherit;font-size:16px;padding:.6rem .7rem;border:1px solid #c9d2dc;border-radius:8px;background:#fff;width:100%;min-height:44px;color:inherit}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid #9cc3ea;border-color:var(--brand)}
.filters input,.filters select{width:auto}
.form label{display:block;font-size:.9rem;color:#3a4652;margin-bottom:.7rem}
.form label>input,.form label>select,.form label>textarea,.form label>.input-group{margin-top:.25rem}
label.check{display:flex!important;align-items:center;gap:.5rem;font-size:.95rem}
label.check input{width:22px;height:22px;min-height:0;margin:0}
.input-group{display:flex;gap:.4rem}.input-group select{width:90px;flex:none}
.grid-form{display:grid;grid-template-columns:1fr;gap:0 1rem}
@media(min-width:640px){.grid-form{grid-template-columns:1fr 1fr}.span2{grid-column:span 2}}
.grid2{display:grid;grid-template-columns:1fr;gap:0 1rem}
.grid3{display:grid;grid-template-columns:1fr;gap:0 1rem}
@media(min-width:860px){.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr 1fr 1fr}}
fieldset.card{border:1px solid var(--line)}
legend{font-weight:700;padding:0 .3rem;color:var(--brand)}
.dl{display:grid;grid-template-columns:minmax(120px,40%) 1fr;gap:.35rem .8rem;margin:0}
.dl dt{color:var(--muted);font-size:.9rem}.dl dd{margin:0}
.cards{display:grid;grid-template-columns:1fr;gap:.7rem}
@media(min-width:700px){.cards{grid-template-columns:1fr 1fr}}
@media(min-width:1100px){.cards{grid-template-columns:1fr 1fr 1fr}}
.compressor-card{display:flex;gap:.8rem;text-decoration:none;color:inherit;position:relative;margin:0;padding:.8rem}
.compressor-card:hover{border-color:var(--brand)}
.compressor-card .thumb{flex:none;width:72px;height:72px;border-radius:8px;background:#eef2f6;display:grid;place-items:center;overflow:hidden;font-size:2rem;color:#9aa8b6}
.compressor-card .thumb img{width:100%;height:100%;object-fit:cover}
.compressor-card .body{min-width:0;flex:1}
.compressor-card .title{font-weight:700;padding-right:6.5rem}
.compressor-card .state{position:absolute;top:.7rem;right:.7rem}
.stats{display:flex;gap:.8rem;flex-wrap:wrap;font-size:.85rem;margin-top:.3rem}
.stats .warn{color:var(--bad);font-weight:700}
.table-wrap{overflow-x:auto;padding:0}
.table{width:100%;border-collapse:collapse;font-size:.95rem}
.table th,.table td{padding:.55rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.table th{background:#f7f9fb;font-size:.82rem;color:var(--muted);font-weight:600}
.table .num{text-align:right}
tr.inactive{opacity:.55}
.contact{padding:.45rem 0;border-bottom:1px dashed var(--line)}
.row-link{padding:.45rem 0;border-bottom:1px solid var(--line)}
.gallery{display:flex;flex-wrap:wrap;gap:.6rem;margin:.4rem 0 .8rem}
.gallery figure{margin:0;width:120px}
.gallery img{width:120px;height:120px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.inline-form{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.inline-form input{width:auto;flex:1 1 200px}
.info-strip{background:#eef5fc;border-color:#cfe1f3}
.material-row{display:grid;grid-template-columns:1fr 90px 44px;gap:.4rem;margin-bottom:.6rem;padding-bottom:.6rem;border-bottom:1px dashed var(--line)}
.material-row .item-select{grid-column:1/-1}
.material-row .item-name{grid-column:1/-1}
.material-row .unit{grid-column:auto}
.material-row .qty{grid-column:auto}
.material-row.catalog .item-name{display:none}
@media(min-width:760px){.material-row{grid-template-columns:2fr 1.4fr 90px 90px 44px}.material-row .item-select,.material-row .item-name{grid-column:auto}.material-row.catalog .item-name{display:block;visibility:hidden}}
.file-btn{display:inline-flex!important;align-items:center;gap:.4rem;background:var(--brand);color:#fff!important;padding:.7rem 1rem;border-radius:8px;cursor:pointer;margin-right:.4rem}
.file-btn.secondary{background:#fff;color:var(--brand)!important;border:1px solid var(--brand)}
.file-btn input{display:none}
.sticky-actions{position:sticky;bottom:0;background:linear-gradient(transparent,var(--bg) 30%);padding:1rem 0 .5rem;z-index:5}
.sticky-actions .btn{width:100%}
.sig-label{font-size:.9rem;color:#3a4652;margin-bottom:.3rem}
.sig-wrap{position:relative;border:2px dashed #9fb3c8;border-radius:10px;background:#fff;height:220px;margin-bottom:.6rem;touch-action:none}
.sig-wrap canvas{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.sig-hint{position:absolute;left:1rem;bottom:.6rem;color:#b6c2ce;pointer-events:none;font-size:.9rem}
.sig-wrap.signed .sig-hint{display:none}
.sig-img{max-width:100%;height:90px;border:1px solid var(--line);border-radius:8px;background:#fff}
.login-box{padding:1.6rem}
.login-brand{text-align:center;margin-bottom:1rem}
.login-brand h1{margin:.6rem 0 .2rem}
details summary{cursor:pointer;color:var(--brand);padding:.3rem 0}
code{background:#eef2f6;padding:.05rem .3rem;border-radius:4px}
