:root{--bg:#f5f7fb;--panel:rgba(255,255,255,.78);--text:#101827;--muted:#64748b;--line:rgba(15,23,42,.1);--primary:#2563eb;--good:#16a34a;--warn:#d97706;--bad:#dc2626;--info:#0ea5e9;--shadow:0 22px 70px rgba(15,23,42,.14);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}
[data-theme=dark]{--bg:#0e1424;--panel:rgba(17,24,39,.78);--text:#e5e7eb;--muted:#9ca3af;--line:rgba(255,255,255,.12);--shadow:0 22px 70px rgba(0,0,0,.35)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top left,#dbeafe,transparent 30%),linear-gradient(135deg,#f8fafc,#eef2ff 48%,#ecfeff);color:var(--text);min-height:100vh}[data-theme=dark] body{background:radial-gradient(circle at top left,#172554,transparent 34%),linear-gradient(135deg,#0b1020,#111827 56%,#052e2b)}
a{color:inherit;text-decoration:none}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:rgba(255,255,255,.72);color:var(--text)}[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:rgba(15,23,42,.72)}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 12px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:12px;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:18px;background:var(--panel);backdrop-filter:blur(20px)}
.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{padding:22px;border-right:1px solid var(--line);background:rgba(255,255,255,.35);backdrop-filter:blur(24px);position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;font-weight:800;margin-bottom:26px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,#2563eb,#14b8a6);color:white}.sidebar nav{display:grid;gap:8px}.sidebar nav a{padding:12px 14px;border-radius:12px;color:var(--muted)}.sidebar nav a:hover{background:var(--panel);color:var(--text)}
.main{padding:24px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:24px}.topbar h1{margin:4px 0 0;font-size:clamp(24px,3vw,38px)}.top-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.eyebrow{margin:0;color:var(--primary);font-size:12px;text-transform:uppercase;font-weight:800;letter-spacing:.08em}.muted{color:var(--muted)}.glass,.card,.stat-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(20px);border-radius:18px}.card{padding:20px;margin-bottom:18px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.stat-card{padding:20px}.stat-card span{color:var(--muted);font-size:13px}.stat-card strong{display:block;font-size:32px;margin-top:8px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.btn,.icon-btn{border:0;border-radius:12px;padding:11px 15px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn.primary{background:linear-gradient(135deg,#2563eb,#0d9488);color:white}.btn.danger{background:#dc2626;color:white}.btn.ghost,.icon-btn{background:var(--panel);border:1px solid var(--line);color:var(--text)}.user-chip,.badge{padding:8px 11px;border-radius:999px;background:var(--panel);border:1px solid var(--line);font-size:13px}.badge.ok{color:var(--good)}.badge.warn,.badge.half{color:var(--warn)}.badge.bad{color:var(--bad)}.badge.info{color:var(--info)}.badge.muted{color:var(--muted)}
.form-grid{display:grid;gap:14px}.form-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}.check{display:flex;gap:10px;align-items:center}.check input{width:auto}.auth-panel{max-width:480px;margin:8vh auto;padding:28px}.toast-stack{position:fixed;right:20px;top:20px;z-index:20;display:grid;gap:10px}.toast{padding:13px 15px;border-radius:14px;background:var(--panel);box-shadow:var(--shadow);border-left:4px solid var(--primary)}.toast.error{border-color:var(--bad)}.toast.success{border-color:var(--good)}.toast.warning{border-color:var(--warn)}
.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day{min-height:70px;border:1px solid var(--line);border-radius:12px;padding:8px;background:rgba(255,255,255,.36)}.day strong{display:block}.capture video,.capture canvas,.capture img{width:100%;border-radius:16px;background:#111;aspect-ratio:4/3;object-fit:cover}.preview{border:1px solid var(--line)}.camera-status[data-state=granted],.gps-status[data-state=granted]{color:var(--good)}.camera-status[data-state=denied],.gps-status[data-state=denied]{color:var(--bad)}.camera-status[data-state=prompt],.gps-status[data-state=prompt]{color:var(--warn)}.permission-gate{display:grid;gap:10px;margin:14px 0;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(37,99,235,.08)}.permission-gate[hidden]{display:none}.permission-gate p{margin:0}.permission-gate .btn{width:100%}.permission-help{padding:10px 12px;border-left:4px solid var(--warn);background:rgba(217,119,6,.1);border-radius:10px}.action-bar{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.health{display:grid;gap:10px}.health-row{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.35)}
@media (max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative;border-right:0;border-bottom:1px solid var(--line)}.sidebar nav{grid-template-columns:repeat(3,1fr)}.stat-grid,.grid-2,.grid-3,.form-row{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.main{padding:16px}}
@media (max-width:520px){.sidebar{padding:14px}.sidebar nav{grid-template-columns:repeat(2,1fr)}th,td{padding:10px 8px}.calendar{grid-template-columns:repeat(2,1fr)}}

/* Mobile-first app frame */
.app-shell{grid-template-columns:1fr;max-width:540px;margin:0 auto;background:rgba(255,255,255,.18)}
.sidebar{height:auto;position:relative;border-right:0;border-bottom:1px solid var(--line);padding:14px}.brand{margin-bottom:14px}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.sidebar nav a{text-align:center;padding:11px 8px}
.main{padding:14px}.topbar{align-items:flex-start;flex-direction:column;margin-bottom:16px}.topbar h1{font-size:28px}.top-actions{width:100%}.user-chip{flex:1;text-align:center}.stat-grid,.grid-2,.grid-3,.form-row{grid-template-columns:1fr}.form-row.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.card{padding:16px;border-radius:14px}.glass,.card,.stat-card{box-shadow:0 12px 34px rgba(15,23,42,.12);border-radius:14px}.btn,.icon-btn{min-height:44px}.action-bar .btn{flex:1 1 100%}.day-picker{border:1px solid var(--line);border-radius:14px;padding:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.day-picker legend{font-weight:800;padding:0 6px}.day-picker .check{background:rgba(255,255,255,.35);border:1px solid var(--line);border-radius:12px;padding:10px}.table-wrap{border-radius:14px}.report-print table{min-width:900px}
@media print{body{background:white}.sidebar,.topbar,.no-print,.toast-stack{display:none!important}.app-shell{display:block;max-width:none}.main{padding:0}.table-wrap{overflow:visible;border:0}.report-print table{min-width:0;font-size:11px}.badge{border:0;padding:0}}

/* Clean mobile menu and calendar */
.mobile-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{min-width:0;margin:0}.brand span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-toggle{border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--text);font-weight:800;min-height:42px;padding:0 14px}.site-nav{display:none!important;margin-top:12px;padding:8px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.88);box-shadow:0 14px 40px rgba(15,23,42,.12);backdrop-filter:blur(18px)}[data-theme=dark] .site-nav{background:rgba(17,24,39,.92)}.site-nav[data-open=true]{display:grid!important;grid-template-columns:1fr!important;gap:6px}.site-nav a{text-align:left!important;padding:13px 14px!important;border-radius:12px;color:var(--text)!important;background:transparent}.site-nav a:hover{background:rgba(37,99,235,.1)!important;color:var(--primary)!important}.sidebar{z-index:10}
.calendar{grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:6px}.cal-head{font-size:11px;font-weight:900;text-align:center;color:var(--muted);padding:4px 0}.day{min-height:54px!important;padding:6px 3px!important;border-radius:10px!important;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;overflow:hidden}.day.empty{visibility:hidden}.day strong{font-size:14px;line-height:1}.day .badge{font-size:10px;line-height:1.05;padding:5px 6px;max-width:100%;white-space:normal;border-radius:10px}.calendar-card{overflow:hidden}
@media (min-width:720px){.menu-toggle{display:none}.site-nav{display:grid!important;grid-template-columns:1fr!important;background:transparent;box-shadow:none;border:0;padding:0}.sidebar{height:100vh;position:sticky;border-right:1px solid var(--line);border-bottom:0}.app-shell{max-width:none;grid-template-columns:260px 1fr}.main{padding:24px}.calendar{gap:8px}.day{min-height:70px!important;padding:8px!important}.day strong{font-size:16px}.day .badge{font-size:12px}}
