:root{--bg:#f4f5f7;--surface:#fff;--border:#d9dce1;--text:#1c2430;--muted:#6b7480;--accent:#1f5fa8;--accent-contrast:#fff;--ok:#1a7f4b;--warn:#b8860b;--danger:#c0392b;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}button{font:inherit;cursor:pointer}.app-loading{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;display:flex}.login{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:min(420px,100%);padding:2rem;box-shadow:0 4px 20px #0000000f}.login-card h1{margin:0 0 .25rem;font-size:1.4rem}.login-subtitle{color:var(--muted);margin:0 0 1.25rem}.login-form{gap:.9rem;margin-bottom:1rem;display:grid}.login-field{color:var(--text);gap:.3rem;font-size:.85rem;font-weight:600;display:grid}.login-field input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:.55rem .7rem}.login-field input:focus{border-color:var(--accent);outline:none}.login-error{color:var(--danger);margin:0;font-size:.85rem}.login-note{color:var(--muted);margin:0;font-size:.8rem}.shell{flex-direction:column;min-height:100vh;display:flex}.shell-header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.shell-title{font-weight:700}.shell-header-right{align-items:center;gap:1rem;display:flex}.shell-user{font-weight:600}.link-button{color:var(--accent);background:0 0;border:none;text-decoration:underline}.shell-body{flex:1;display:flex}.shell-nav{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:.25rem;width:220px;padding:1rem .75rem;display:flex}.nav-link{color:var(--text);border-radius:6px;padding:.5rem .75rem;text-decoration:none}.nav-link:hover{background:#eef1f5}.nav-link-active{background:var(--accent);color:var(--accent-contrast)}.shell-content{flex:1;padding:1.5rem}.sync-badge{border:1px solid #0000;border-radius:999px;padding:.2rem .6rem;font-size:.75rem}.sync-online{color:var(--ok);border-color:var(--ok)}.sync-connecting{color:var(--warn);border-color:var(--warn)}.sync-offline{color:var(--muted);border-color:var(--border)}.sync-error{color:var(--danger);border-color:var(--danger)}.reload-prompt{z-index:100;background:var(--text);color:var(--surface);border-radius:8px;align-items:center;gap:.75rem;padding:.6rem 1rem;font-size:.85rem;display:flex;position:fixed;bottom:1rem;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}.reload-prompt button{color:var(--surface);font-weight:600;text-decoration:underline}.page h2{margin-top:0}.page-lead{color:var(--muted);margin-top:-.25rem}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;margin:1.5rem 0;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:10px;padding:1.25rem}.stat-value{font-size:2rem;font-weight:700}.stat-label{color:var(--muted);font-size:.85rem}.page-actions{flex-wrap:wrap;gap:.6rem;margin:1rem 0;display:flex}.primary-button{background:var(--accent);color:var(--accent-contrast);border:none;border-radius:8px;padding:.6rem 1rem;font-weight:600}.primary-button:disabled{opacity:.5;cursor:not-allowed}.primary-button:hover{filter:brightness(1.05)}.page-note{color:var(--muted);max-width:60ch;font-size:.85rem}.registry-group{margin:1.5rem 0}.registry-group h4{margin:0 0 .5rem;font-size:.95rem}.registry-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:8px;width:100%;font-size:.85rem;overflow:hidden}.registry-table th,.registry-table td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .75rem}.registry-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.75rem;font-weight:600}.registry-table tbody tr:last-child td{border-bottom:none}.doc-list{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin:0;padding:0;list-style:none;overflow:hidden}.doc-list-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem .9rem;font-size:.9rem;display:flex}.doc-list-item:last-child{border-bottom:none}.doc-actions{flex-shrink:0;align-items:center;gap:.9rem;display:flex}.doc-missing{color:var(--muted);font-size:.8rem}.doc-upload-label{cursor:pointer}.doc-upload-input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.breadcrumb{color:var(--muted);margin:0 0 .25rem;font-size:.8rem}.breadcrumb a{color:var(--muted)}.toolbar{align-items:center;gap:.75rem;margin:1rem 0;display:flex}.toolbar-input{border:1px solid var(--border);max-width:28rem;font:inherit;background:var(--surface);color:var(--text);border-radius:8px;flex:1;padding:.5rem .7rem}.toolbar-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.toolbar-count{color:var(--muted);white-space:nowrap;font-size:.8rem}.tag{background:var(--bg);color:var(--muted);border:1px solid var(--border);vertical-align:middle;border-radius:999px;padding:.1rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.tag-open{color:var(--ok);background:#e7f4ec;border-color:#bfe0cd}.detail-grid{background:var(--surface);border:1px solid var(--border);border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.6rem 1.5rem;padding:.9rem 1rem;display:grid}.detail-item{flex-direction:column;gap:.15rem;min-width:0;display:flex}.detail-label{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.72rem;font-weight:600}.detail-value{overflow-wrap:anywhere;font-size:.9rem}.inline-form{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.9rem 1rem}.inline-form-fields{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.7rem 1rem;display:grid}.inline-field{flex-direction:column;gap:.2rem;min-width:0;font-size:.8rem;display:flex}.inline-field-wide{grid-column:span 2}.inline-field>span{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.72rem;font-weight:600}.inline-field input,.inline-field select{border:1px solid var(--border);font:inherit;background:var(--surface);color:var(--text);border-radius:6px;min-width:0;padding:.45rem .6rem;font-size:.9rem}.inline-field input:focus,.inline-field select:focus{outline:2px solid var(--accent);outline-offset:-1px}.inline-field input[readonly]{background:var(--bg);color:var(--muted)}.inline-form-error{color:var(--danger);margin:.6rem 0 0;font-size:.8rem}.reading-grid-wrap{overflow-x:auto}.reading-grid{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:8px;font-size:.82rem}.reading-grid th,.reading-grid td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);text-align:right;padding:.3rem .5rem}.reading-grid th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;background:var(--bg);font-size:.7rem;font-weight:600}.reading-grid tbody tr:last-child td{border-bottom:none}.reading-grid th:last-child,.reading-grid td:last-child{border-right:none}.reading-grid-subhead th{text-align:center;font-size:.65rem}.reading-cell-td{padding:.15rem}.reading-cell{width:4.2rem;font:inherit;text-align:right;color:var(--text);background:#eef4fb;border:1px solid #0000;border-radius:4px;padding:.3rem .35rem;font-size:.82rem}.reading-cell:focus{outline:2px solid var(--accent);outline-offset:-1px;background:var(--surface)}.reading-cell-invalid{border-color:var(--danger);background:#fdd9d5}.reading-cell-override{border-color:var(--warn);background:#ffeaa8}.computed-cell{color:var(--muted);font-variant-numeric:tabular-nums}.reading-row-asfound td{background:#fbfaf4}.reading-grid-message{color:var(--danger);margin:.5rem 0 0;font-size:.8rem}.check-inline{cursor:pointer;align-items:center;gap:.4rem;font-size:.85rem;display:inline-flex}.check-inline input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--accent);cursor:pointer}.pm-list{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.35rem 1.5rem;margin:0;padding:0;list-style:none;display:grid}
