/* Оболочка: вход, список объектов, индикатор сохранения */
html,body{margin:0}
body{min-height:100vh;padding-bottom:env(safe-area-inset-bottom,0px)}
[hidden]{display:none!important}
.login{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.loginbox{width:min(100%,420px);gap:14px}
.loginform{display:grid;gap:10px}
.loginform input{font-size:16px;padding:10px}
.loginform .btn{padding:11px 14px;font-size:15px}
.brand.big{font-size:32px}
.listmain{padding-block:20px 60px;display:grid;gap:14px}
.objlist{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr))}
.objcard{grid-template-columns:minmax(0,1fr) auto;align-items:center;padding:0;gap:0}
.objopen{all:unset;cursor:pointer;display:grid;gap:4px;padding:14px 16px;min-width:0}
.objopen:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:6px}
.objopen:hover .objname{color:var(--accent)}
.objname{font:600 18px var(--f-display);overflow-wrap:anywhere}
.objmeta{font:13px var(--f-num);color:var(--muted)}
.objmeta b{color:var(--fg)}
.objcard .btn{margin-right:8px}
.back{padding-inline:6px;color:var(--accent)}
.savestate{font-size:12px;color:var(--muted);white-space:nowrap}
.savestate.ok{color:var(--pos)}
.savestate.err{color:var(--neg);font-weight:600}
@media (max-width:640px){
  .topbar .obj{flex-basis:100%;order:5}
  .listmain .row>.row{width:100%}
  .listmain .row>.row select{flex:1}
}
