:root{--text:#1f2430;--text-muted:#6b7280;--bg:#f5f6f8;--surface:#fff;--border:#e2e4e9;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:#eef2ff;--danger:#dc2626;color:var(--text);background:var(--bg);font:16px/1.5 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}h1,h2,h3{color:var(--text);font-weight:600}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}.rate-limit-banner{z-index:200;color:#92400e;text-align:center;background:#fef3c7;border-bottom:1px solid #fde68a;padding:8px 16px;font-size:14px;position:fixed;top:0;left:0;right:0}.page-loading{height:100vh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.login-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-form{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:14px;width:320px;padding:32px;display:flex;box-shadow:0 4px 16px #0000000f}.login-form h1{text-align:center;margin:0 0 8px;font-size:20px}.login-form label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:14px;display:flex}.login-form input{border:1px solid var(--border);border-radius:6px;padding:8px 10px}.login-form button{background:var(--accent);color:#fff;border:none;border-radius:6px;margin-top:8px;padding:10px;font-weight:600}.login-form button:hover{background:var(--accent-hover)}.login-form button:disabled{opacity:.6;cursor:default}.form-error{color:var(--danger);margin:0;font-size:14px}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:24px;padding:12px 24px;display:flex}.app-title{font-weight:700}.app-nav{flex-wrap:wrap;flex:1;gap:16px;display:flex}.app-nav a{color:var(--text-muted);padding:6px 0;font-size:14px;text-decoration:none}.app-nav a.active{color:var(--accent);font-weight:600}.app-nav .nav-link-button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:6px 0;font-size:14px;text-decoration:none}.app-nav .nav-link-button:hover{color:var(--accent)}.app-user{align-items:center;gap:12px;font-size:14px;display:flex}.app-user button{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:6px 12px}.app-content{flex:1;padding:24px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.page-header h2{margin:0}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-bottom:16px;padding:16px}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.tabs button{color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 14px;font-size:14px}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.visit-tabs{background:var(--bg);border-bottom:none;border-radius:8px;gap:6px;padding:6px}.visit-tabs button{color:var(--text-muted);background:0 0;border:1px solid #0000;border-radius:6px;padding:10px 16px;font-size:14px;font-weight:500}.visit-tabs button:hover{background:#00000008}.visit-tabs button.active{background:var(--surface);border-color:var(--border);color:var(--accent);font-weight:700;box-shadow:0 1px 3px #00000014}.tab-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px}.tab-panel .card:last-child{margin-bottom:0}button.btn-primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 14px}button.btn-primary:hover{background:var(--accent-hover)}button.btn-secondary{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 14px}button.btn-danger{background:var(--danger);color:#fff;border:none;border-radius:6px;padding:8px 14px}button.btn-link{color:var(--accent);background:0 0;border:none;padding:4px 8px}button:disabled{opacity:.6;cursor:default}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 16px;display:grid}.form-field{flex-direction:column;gap:4px;display:flex}.form-field label{color:var(--text-muted);font-size:13px}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--border);box-sizing:border-box;border-radius:6px;width:100%;min-width:0;padding:8px 10px}.form-field.span-2{grid-column:span 2}.field-error{color:var(--danger);font-size:12px}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;padding:8px 10px;font-size:14px}.data-table th{color:var(--text-muted);font-size:13px;font-weight:600}.data-table tbody tr:hover{background:#fafafa}.data-table tbody tr.clickable{cursor:pointer}.checklist{flex-direction:column;gap:6px;display:flex}.checklist label{align-items:center;gap:8px;font-size:14px;display:flex}.modal-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:8px;width:360px;max-width:90vw;padding:20px}.modal h3{margin-top:0}.modal-wide{flex-direction:column;width:640px;max-height:85vh;display:flex}.modal-wide .modal-body{overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.modal-header h3{margin:0}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.empty-state{color:var(--text-muted);text-align:center;padding:32px}.summary-tiles{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px;display:grid}.summary-tile{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px}.summary-tile .value{font-size:22px;font-weight:700}.summary-tile .label{color:var(--text-muted);font-size:12px}.bar-chart{border-bottom:1px solid var(--baseline,#c3c2b7);align-items:flex-end;gap:6px;padding:0 4px 4px;display:flex}.bar-chart-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;min-width:0;display:flex}.bar-chart-value{color:var(--text-secondary,#52514e);font-variant-numeric:tabular-nums;white-space:nowrap;margin-bottom:2px;font-size:11px}.bar-chart-bar{background:var(--series-1,#2a78d6);border-radius:4px 4px 0 0;width:100%;max-width:24px}.bar-chart-label{color:var(--text-muted);margin-top:4px;font-size:11px}.date-input{font-variant-numeric:tabular-nums;width:110px}.date-time-input{width:160px}.autocomplete-editor{background:var(--surface);width:100%;position:relative}.autocomplete-editor input{box-sizing:border-box;border:1px solid var(--accent);width:100%;height:100%;font:inherit;border-radius:0;padding:4px 8px}.autocomplete-list{z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:0 0 6px 6px;max-height:240px;margin:0;padding:4px 0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 6px 16px #0000001f}.autocomplete-list li{cursor:pointer;padding:6px 10px;font-size:13px}.autocomplete-list li:hover,.autocomplete-list li.active{background:var(--accent-bg,#eef2ff);color:var(--accent)}.autocomplete-list li.autocomplete-create{border-top:1px solid var(--border);font-style:italic}
