:root{--nav:#10212b;--accent:#e64a2e;--bg:#f5f7f8;--card:#fff;--text:#17232d;--muted:#71808b;--line:#e3e8eb;--ok:#1c9a62;--warn:#d48b12;--bad:#d83b3b}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}.app{display:flex;min-height:100vh}aside{width:250px;background:var(--nav);color:#fff;padding:22px 16px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;margin-bottom:28px}.logo{width:42px;height:42px;border-radius:11px;background:var(--accent);display:grid;place-items:center;font-weight:800}.brand b{display:block}.brand small{display:block;color:#b8c5cb;font-size:11px;margin-top:3px}nav{display:grid;gap:7px}nav button{border:0;background:transparent;color:#d7e0e4;text-align:left;padding:12px 13px;border-radius:9px;cursor:pointer}nav button:hover,nav button.active{background:#1d3541;color:#fff}.sidefoot{margin-top:auto;color:#93a5ad;font-size:11px;line-height:1.7;padding:10px 5px}main{flex:1;min-width:0}header{background:#fff;border-bottom:1px solid var(--line);padding:20px 28px;display:flex;align-items:center;justify-content:space-between}h1{margin:0 0 4px;font-size:25px}header p{margin:0;color:var(--muted);font-size:13px}.primary,.secondary,.danger{border:0;border-radius:9px;padding:10px 15px;cursor:pointer}.primary{background:var(--accent);color:#fff;font-weight:700}.secondary{background:#edf2f4;color:#24323b}.danger{background:#fdecec;color:var(--bad)}#content{padding:25px 28px}.grid{display:grid;gap:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.stats-admin{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 2px 8px #0b20290b}.stat small{color:var(--muted)}.stat strong{display:block;font-size:30px;margin-top:8px}.two{grid-template-columns:1.2fr .8fr}.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:14px}.toolbar input{max-width:360px}.input{width:100%;border:1px solid #ccd6db;border-radius:8px;padding:10px;background:#fff}.tablewrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:11px 9px;border-bottom:1px solid var(--line);font-size:13px;white-space:nowrap}.table th{color:#60717b;font-size:11px;text-transform:uppercase}.badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:700}.ok{background:#e7f7ef;color:var(--ok)}.warn{background:#fff5df;color:var(--warn)}.bad{background:#fdeaea;color:var(--bad)}.actions{display:flex;gap:6px}.empty{text-align:center;color:var(--muted);padding:35px}.formgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.field label{display:block;font-size:12px;color:#61717a;margin-bottom:5px;font-weight:700}.full{grid-column:1/-1}.modal{position:fixed;inset:0;background:#09151a99;display:grid;place-items:center;padding:20px}.hidden{display:none}.modal-card{width:min(720px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:15px;padding:25px;position:relative}.close{position:absolute;right:15px;top:10px;border:0;background:transparent;font-size:28px;cursor:pointer;color:#71808b}.modal-card h2{margin-top:0}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.checkgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.check{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);padding:9px;border-radius:8px}.check select{padding:6px;border:1px solid #ccd6db;border-radius:6px}.qrgrid{grid-template-columns:repeat(3,1fr)}.qrbox{display:grid;place-items:center;border:1px dashed #cbd5da;border-radius:10px;padding:15px;min-height:160px}.qrbox div{margin:auto}.muted{color:var(--muted)}.hero{padding:22px;border-radius:14px;background:linear-gradient(135deg,#132a35,#244957);color:#fff}.hero p{color:#c8d5da}.linkbtn{border:0;background:none;color:#cc452f;cursor:pointer;font-weight:700;padding:0}.list{display:grid;gap:9px}.listrow{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}@media(max-width:900px){aside{width:72px;padding:16px 9px}.brand>div:not(.logo),.sidefoot{display:none}nav button{font-size:0;text-align:center}nav button:first-letter{font-size:18px}.stats{grid-template-columns:repeat(2,1fr)}.two{grid-template-columns:1fr}.qrgrid{grid-template-columns:1fr 1fr}}@media(max-width:600px){header{padding:16px;align-items:flex-start;gap:10px}header .primary{padding:9px;font-size:12px}#content{padding:16px}.stats,.formgrid,.checkgrid,.qrgrid{grid-template-columns:1fr}.table th:nth-child(n+5),.table td:nth-child(n+5){display:none}}
.head-actions{display:flex;gap:8px;align-items:center}.head-actions button{white-space:nowrap}
@media(max-width:760px){.head-actions{width:100%}.head-actions button{flex:1}.app main header{align-items:stretch;flex-direction:column}}
.auth-main{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#10212b,#294b59)}.auth-card{width:min(430px,100%);background:#fff;border-radius:18px;padding:30px;box-shadow:0 18px 60px #0004}.auth-logo{width:58px;height:58px;border-radius:15px;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:900;margin-bottom:18px}.auth-card h1{margin-bottom:8px}.auth-card form{display:grid;gap:9px;margin-top:22px}.auth-card label{font-size:12px;font-weight:700;color:#61717a;margin-top:4px}.auth-card .primary{margin-top:8px}.auth-error{margin-top:15px;padding:11px;border-radius:9px;background:#fdeaea;color:var(--bad);font-size:13px}

.visit-progress{margin-top:16px}.progress{height:9px;background:#ffffff33;border-radius:99px;overflow:hidden;margin-top:8px}.progress span{display:block;height:100%;background:#fff;border-radius:99px}.visit-progress strong{font-size:22px}
.client-folder summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;font-size:16px}.client-folder summary::-webkit-details-marker{display:none}.client-folder summary>span:first-child{display:flex;flex-direction:column;gap:3px}.client-folder summary:before{content:'▸';margin-right:8px;transition:transform .15s}.client-folder[open] summary:before{transform:rotate(90deg)}.folder-content{margin-top:12px}.qr-card{height:100%;text-align:center}.qr-card .qrbox{min-height:140px;display:flex;align-items:center;justify-content:center}.qr-card .qrbox>div{display:inline-block}
