:root{--primary:#176b45;--primary-dark:#0d5133;--primary-soft:#eaf6ef;--accent:#d6a62d;--ink:#172033;--muted:#667085;--line:#e3e8ef;--surface:#fff;--canvas:#f4f7fa;--danger:#c93636;--warning:#b66800;--info:#1769aa;--shadow:0 14px 38px rgba(20,36,30,.08);--radius:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--canvas);color:var(--ink);font-family:Inter,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}img{max-width:100%}.muted{color:var(--muted)}.text-danger{color:var(--danger)}.text-success{color:var(--primary)}.nowrap{white-space:nowrap}
.app-shell{min-height:100vh}.sidebar{position:fixed;z-index:50;inset:0 auto 0 0;width:260px;background:linear-gradient(180deg,#124e34 0%,#0c3f2a 100%);color:#fff;padding:22px 16px;display:flex;flex-direction:column;overflow:auto}.brand{display:flex;align-items:center;gap:12px;padding:4px 8px 24px}.brand-mark{width:44px;height:44px;border-radius:13px;background:#fff;display:grid;place-items:center;color:var(--primary);font-size:18px;font-weight:900;overflow:hidden}.brand-mark img{width:100%;height:100%;object-fit:contain;padding:4px}.brand-copy strong{display:block;font-size:16px;line-height:1.2}.brand-copy span{font-size:11px;opacity:.72}.nav-label{padding:14px 12px 6px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;opacity:.54;font-weight:800}.nav-link{display:flex;align-items:center;gap:11px;padding:11px 12px;margin:3px 0;border-radius:11px;color:#eaf6ef;transition:.18s}.nav-link:hover,.nav-link.active{background:#ffffff18;color:#fff}.nav-link.active{box-shadow:inset 3px 0 var(--accent)}.nav-icon{width:22px;text-align:center;font-size:17px}.sidebar-foot{margin-top:auto;border-top:1px solid #ffffff18;padding:16px 8px 0}.sidebar-foot small{display:block;opacity:.65}.sidebar-foot strong{display:block;margin:3px 0}.logout-button{border:0;background:transparent;color:#fff;padding:7px 0;opacity:.75;cursor:pointer}.main{margin-left:260px;min-height:100vh}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:15px;padding:0 30px;position:sticky;top:0;z-index:40}.menu-toggle{display:none;border:0;background:var(--primary-soft);color:var(--primary);width:40px;height:40px;border-radius:11px;font-size:20px}.page-heading{flex:1}.page-heading h1{font-size:20px;margin:0}.page-heading p{font-size:12px;color:var(--muted);margin:0}.top-user{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:#fff;font-weight:800}.content{padding:28px;max-width:1500px;margin:auto}
.flash{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:13px 16px;border-radius:12px;margin-bottom:18px;border:1px solid}.flash-success{background:#effaf3;border-color:#bfe7cd;color:#155f3d}.flash-danger{background:#fff2f2;border-color:#f0c0c0;color:#9d2828}.flash-warning{background:#fff9eb;border-color:#f0dda2;color:#805500}.flash button{border:0;background:transparent;cursor:pointer;color:inherit}
.grid{display:grid;gap:20px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.span-2{grid-column:span 2}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 7px rgba(20,36,30,.025)}.card-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;justify-content:space-between}.card-head h2,.card-head h3{margin:0;font-size:16px}.card-body{padding:20px}.stat-card{padding:20px;position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;right:-25px;bottom:-25px;width:85px;height:85px;border-radius:50%;background:var(--primary-soft)}.stat-label{color:var(--muted);font-weight:650}.stat-value{font-size:30px;line-height:1.2;font-weight:850;margin-top:9px}.stat-note{font-size:12px;color:var(--muted);margin-top:4px}.stat-icon{position:absolute;right:18px;top:18px;width:38px;height:38px;border-radius:11px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-size:19px;z-index:1}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:10px;padding:10px 14px;font-weight:750;cursor:pointer;transition:.18s;line-height:1}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-light{background:#fff;border-color:var(--line);color:var(--ink)}.btn-soft{background:var(--primary-soft);color:var(--primary)}.btn-danger{background:#fff0f0;color:var(--danger)}.btn-sm{padding:7px 10px;font-size:12px}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.page-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.page-actions h2{margin:0;font-size:20px}.page-actions p{margin:2px 0 0;color:var(--muted)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.form-group{min-width:0}.form-group.full{grid-column:1/-1}.form-group label{display:block;font-weight:750;margin-bottom:7px}.required:after{content:" *";color:var(--danger)}.form-control{width:100%;border:1px solid #d7dee7;background:#fff;border-radius:10px;padding:11px 12px;color:var(--ink);transition:.15s}.form-control:focus{outline:3px solid color-mix(in srgb,var(--primary) 15%,transparent);border-color:var(--primary)}textarea.form-control{min-height:115px;resize:vertical}.form-hint{font-size:12px;color:var(--muted);margin-top:5px}.form-section{grid-column:1/-1;border-top:1px solid var(--line);margin-top:7px;padding-top:20px}.form-section h3{margin:0 0 4px;font-size:16px}.form-section p{margin:0;color:var(--muted);font-size:12px}.check{display:flex;gap:9px;align-items:flex-start}.check input{margin-top:4px}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th{padding:11px 13px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:13px;border-bottom:1px solid #edf0f4;vertical-align:top}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:#fbfcfd}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:99px;background:#eef2f6;color:#4e5d70;font-size:11px;font-weight:750;white-space:nowrap}.badge-success{background:#e8f7ee;color:#176b45}.badge-warning{background:#fff3d6;color:#936000}.badge-danger{background:#ffeded;color:#a82f2f}.badge-info{background:#eaf4fc;color:#1769aa}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.activity-title{font-weight:800;display:block}.activity-meta{color:var(--muted);font-size:12px;margin-top:3px}.empty-state{text-align:center;padding:60px 20px}.empty-icon{width:74px;height:74px;border-radius:22px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;margin:0 auto 16px;font-size:24px;font-weight:900}.empty-state h1,.empty-state h2{margin:0 0 7px}.empty-state p{color:var(--muted);max-width:480px;margin:0 auto 20px}
.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);padding:0 20px;overflow:auto}.tab{border:0;background:transparent;padding:14px 11px;border-bottom:2px solid transparent;font-weight:750;color:var(--muted);cursor:pointer;white-space:nowrap}.tab.active{color:var(--primary);border-color:var(--primary)}.tab-panel{display:none}.tab-panel.active{display:block}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:6px;top:7px;bottom:7px;width:2px;background:var(--line)}.timeline-item{position:relative;margin-bottom:19px}.timeline-item:before{content:"";position:absolute;left:-23px;top:5px;width:11px;height:11px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}.timeline-item strong{display:block}.timeline-item p{margin:3px 0;color:var(--muted)}
.public-body{background:#f6f8fb}.public-nav{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 max(24px,calc((100vw - 1180px)/2));position:sticky;top:0;z-index:40}.public-brand{display:flex;align-items:center;gap:10px;font-weight:850}.public-brand .brand-mark{width:46px;height:42px;min-width:46px;font-size:14px;letter-spacing:-.04em}.public-links{margin-left:auto;display:flex;gap:25px;align-items:center}.public-links a{font-weight:650;color:#475467}.public-links a.btn-primary{color:#fff}.public-links a.btn-primary:hover{color:#fff}.public-main{min-height:calc(100vh - 150px)}.public-container{max-width:1180px;margin:auto;padding:32px 24px}.hero-public{background:linear-gradient(135deg,#0f5838,#178257);color:#fff;padding:72px 0;position:relative;overflow:hidden}.hero-public:before,.hero-public:after{content:"";position:absolute;border:1px solid #ffffff24;border-radius:50%}.hero-public:before{width:440px;height:440px;right:-180px;top:-170px}.hero-public:after{width:280px;height:280px;right:80px;bottom:-190px}.hero-grid{max-width:1180px;margin:auto;padding:0 24px;display:grid;grid-template-columns:1.4fr .8fr;gap:40px;align-items:center;position:relative;z-index:1}.hero-kicker{display:inline-flex;background:#ffffff18;border:1px solid #ffffff2b;padding:6px 10px;border-radius:99px;font-size:12px;font-weight:750}.hero-public h1{font-size:42px;line-height:1.12;margin:17px 0 14px;max-width:720px}.hero-public p{font-size:17px;opacity:.86;max-width:650px}.hero-panel{background:#ffffff12;border:1px solid #ffffff28;border-radius:22px;padding:24px;backdrop-filter:blur(7px)}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.hero-stat{padding:14px 8px;text-align:center;background:#ffffff10;border-radius:13px}.hero-stat strong{display:block;font-size:23px}.hero-stat span{font-size:11px;opacity:.72}.section-head{margin:22px 0}.section-head h2{font-size:25px;margin:0}.section-head p{color:var(--muted);margin:5px 0}.public-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}.activity-card{display:flex;flex-direction:column;min-height:210px}.activity-card .category{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.activity-card h3{font-size:17px;line-height:1.35;margin:12px 0}.activity-card .meta{font-size:12px;color:var(--muted);margin-top:auto}.public-footer{padding:28px;background:#123e2d;color:#d9eee4;text-align:center}
.checkin-shell{max-width:620px;margin:38px auto}.checkin-card{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}.checkin-head{padding:28px;background:linear-gradient(135deg,#12593a,#1c8457);color:#fff}.checkin-head h1{font-size:23px;margin:8px 0}.checkin-body{padding:28px}.event-code{font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}.success-mark{width:78px;height:78px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary);font-size:36px;font-weight:900}
.org-section{margin-bottom:28px}.org-group{padding-top:10px}.org-group-head{border-bottom:1px solid var(--line);padding-bottom:16px}.org-group-head .eyebrow{display:block;color:var(--primary);font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}.org-unit-card{margin-bottom:16px}.org-unit-card>.page-actions{margin-bottom:12px}.org-unit-card>.page-actions h3{margin:0;font-size:17px}.org-unit-card>.page-actions p{font-size:12px}.org-contact a,.officer-contact{color:var(--primary);font-weight:750}.officer-contact{display:inline-block;margin-top:10px;font-size:12px}.org-empty{color:var(--muted);margin:0;padding:14px;border:1px dashed var(--line);border-radius:10px;text-align:center}.officer-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.officer-card{text-align:center;background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px}.officer-photo{width:74px;height:74px;border-radius:50%;margin:auto;background:var(--primary-soft);display:grid;place-items:center;color:var(--primary);font-size:24px;font-weight:850;overflow:hidden}.officer-photo img{width:100%;height:100%;object-fit:cover}.officer-card h3{font-size:14px;margin:10px 0 2px}.officer-card p{font-size:12px;color:var(--muted);margin:0}
.report-page{max-width:900px;margin:24px auto;background:#fff;box-shadow:var(--shadow);padding:25mm 24mm;color:#111;font-family:"Times New Roman",serif;font-size:12pt;line-height:1.5}.report-actions{max-width:900px;margin:20px auto;display:flex;gap:10px;justify-content:flex-end}.letterhead{text-align:center;border-bottom:3px double #111;padding-bottom:10px;margin-bottom:22px;position:relative;min-height:76px}.letterhead-logo{position:absolute;left:0;top:0;width:72px;height:72px;object-fit:contain}.letterhead h1{font-size:15pt;margin:0}.letterhead h2{font-size:13pt;margin:2px 0}.letterhead p{font-size:9.5pt;margin:1px}.report-title{text-align:center;margin:20px 0}.report-title h1{font-size:14pt;text-decoration:underline;margin:0}.report-title p{margin:2px}.report-table{width:100%;border-collapse:collapse}.report-table td{padding:3px 5px;vertical-align:top}.report-table td:first-child{width:180px}.report-section{margin-top:16px}.report-section h3{font-size:12pt;margin:0 0 5px}.report-section p{margin:0;text-align:justify;white-space:pre-line}.signature-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px;margin-top:35px;text-align:center}.signature-space{height:65px}.signature-image{height:60px;max-width:160px;object-fit:contain}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.report-photo img{width:100%;height:230px;object-fit:cover}.report-photo p{text-align:center;font-size:10pt}.document-body{background:#fff}.document-body .report-page{box-shadow:none;margin:0;max-width:none}
.report-section #report-qr svg{display:block;width:105px;height:105px;margin:auto}.qr-stage{text-align:center;max-width:620px;margin:35px auto;background:#fff;padding:28px;border-radius:22px;box-shadow:var(--shadow)}#qr-code{display:inline-block;border:14px solid #fff;box-shadow:0 0 0 1px var(--line);margin:18px}#qr-code svg{display:block;width:min(72vw,330px);height:auto}.qr-link{word-break:break-all;background:#f3f6f8;border-radius:10px;padding:10px;font-size:12px}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.officer-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.22s}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.menu-toggle{display:grid;place-items:center}.topbar{padding:0 16px}.content{padding:19px 14px}.grid-2,.grid-3{grid-template-columns:1fr}.span-2{grid-column:auto}.form-grid{grid-template-columns:1fr}.form-group.full,.form-section{grid-column:auto}.hero-grid{grid-template-columns:1fr}.hero-panel{display:none}.hero-public{padding:50px 0}.hero-public h1{font-size:32px}.public-links a:not(.btn){display:none}.officer-grid{grid-template-columns:repeat(2,1fr)}.report-page{margin:0;padding:18mm 12mm;box-shadow:none}.report-actions{padding:0 12px}.signature-grid{gap:25px}.photo-grid{grid-template-columns:1fr}.page-actions{align-items:flex-start;flex-direction:column}}
@media(max-width:520px){.grid-4{grid-template-columns:1fr 1fr;gap:12px}.stat-card{padding:16px}.stat-value{font-size:24px}.stat-icon{display:none}.officer-grid{grid-template-columns:1fr}.top-user .user-copy{display:none}.public-container{padding:24px 15px}.checkin-shell{margin:14px}.checkin-body,.checkin-head{padding:21px}.report-table td:first-child{width:120px}}
.public-footer span{font-size:12px;opacity:.72}.app-footer{margin-top:34px;padding:24px 8px 4px;border-top:1px solid var(--line);text-align:center;color:var(--muted);font-size:12px}.auth-footer{border-top:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.7;margin-top:26px;padding-top:18px;text-align:center}
@media print{.no-print,.report-actions,.public-nav,.public-footer,.app-footer{display:none!important}.public-body{background:#fff}.report-page{box-shadow:none;margin:0;padding:15mm 18mm;max-width:none}.report-section,.signature-grid,.photo-grid{break-inside:avoid}@page{size:A4 portrait;margin:0}}
