:root{--ink:#254e3b;--muted:#758170;--bg:#f4f6f2;--line:#e4eadf;--green:#254e3b;--sage:#eaf1e2;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg);color-scheme:light}*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.55}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;border:0}a{color:inherit;text-decoration:none}button:disabled{opacity:.5;cursor:wait}input,select,textarea{width:100%;min-width:0;border:1px solid var(--line);border-radius:15px;background:#f4f7f0;padding:13px 15px;font-size:16px;min-height:50px;line-height:1.4}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2387977b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-size:16px;background-repeat:no-repeat;background-position:right 15px center;padding-right:38px}textarea{resize:vertical;min-height:100px}input:focus,select:focus,textarea:focus{outline:2px solid #dce8d1;border-color:#88a277}input[type=checkbox]{width:20px;min-height:20px;accent-color:#527946}input[type=file]{font-size:13px}label{display:block;font-size:13px;color:#62735e}label>input,label>select,label>textarea{margin-top:8px}h1,h2,h3,p{margin:0 0 14px}h1{font-size:34px;letter-spacing:-1.2px;line-height:1.16}h2{font-size:23px;letter-spacing:-.6px;line-height:1.25}h3{font-size:17px;line-height:1.3}p{color:var(--muted)}small{font-size:12px;color:var(--muted)}svg{width:22px;height:22px;flex:none;vertical-align:middle}header{max-width:1320px;margin:auto;display:flex;align-items:center;gap:14px;padding:calc(22px + env(safe-area-inset-top)) 28px 18px}.brand{font-size:25px;font-weight:750;letter-spacing:-1px}.brand i{color:#b88a56;font-style:normal}.brand small{display:block;font-weight:500;font-size:9px;letter-spacing:1.7px;line-height:1.3}.header-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.icon{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:#fff}.avatar{background:#e4ecd9;color:#4e7442;font-weight:700}main{max-width:1320px;margin:auto;padding:16px 28px 125px}.layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:32px}.sidebar{display:flex;flex-direction:column;gap:5px;align-self:start;position:sticky;top:20px}.sidebar a{padding:12px 14px;display:flex;gap:12px;align-items:center;color:#7c8875;border-radius:16px}.sidebar a.active{background:#e7eedd;color:#355d35;font-weight:600}.sidebar small{padding:20px 14px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}.page-head p{margin-bottom:0}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1;min-width:0}.button{background:var(--green);color:white;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:13px 18px;border-radius:16px;font-weight:600}.secondary{background:var(--sage);color:var(--ink)}.text{background:transparent;padding:10px 0;color:#527448;min-height:44px}.full{width:100%}.card{background:white;border-radius:24px;padding:24px;margin-bottom:20px;min-width:0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.grid .card{margin-bottom:0}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}.stat{background:#fff;border-radius:22px;padding:22px}.stat strong{display:block;font-size:34px;letter-spacing:-1px}.stat span{font-size:12px;color:var(--muted)}.stat svg{color:#729263;float:right}.banner{background:#254e3b;color:white;border-radius:26px;padding:30px;margin-bottom:22px;position:relative;overflow:hidden}.banner h1{font-size:37px;max-width:550px}.banner p{color:#c1d0b9;max-width:520px}.banner .button{background:#edf3e4;color:#254e3b}.banner:after{content:'';position:absolute;right:-50px;top:-120px;width:380px;height:380px;border:1px solid #a8c49933;border-radius:50%;pointer-events:none;box-shadow:0 0 0 45px #a8c4990a,0 0 0 95px #a8c49908}.banner>*{position:relative;z-index:1}.list{display:grid;gap:10px}.list-row{background:#fff;border-radius:20px;display:flex;align-items:center;gap:14px;padding:18px;min-width:0}.card .list-row{background:#f6f8f2}.list-row strong{display:block;font-size:14px;overflow-wrap:anywhere}.list-row small{display:block;margin-top:4px}.list-icon{background:#eaf1e2;border-radius:14px;width:43px;height:43px;display:grid;place-items:center;color:#608451}.badge{display:inline-block;padding:5px 10px;border-radius:20px;background:#edf2e6;color:#567448;font-size:11px;white-space:nowrap}.badge.high{background:#fff1d9;color:#8c692e}.badge.critical{background:#fbe9e4;color:#a14837}.filters{display:flex;gap:10px;overflow:auto;margin-bottom:20px;padding:2px 0 5px}.filters button{background:#eaf0e4;padding:9px 15px;border-radius:14px;white-space:nowrap;color:#6a7a60;min-height:42px}.filters button.active{background:#254e3b;color:#fff}.search{margin-bottom:16px;background:white;border:0}.empty{padding:44px 24px;text-align:center}.empty .list-icon{margin:0 auto 20px;width:60px;height:60px;border-radius:20px}.empty p{max-width:340px;margin:0 auto 22px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.form-grid .wide{grid-column:1/-1}.check{display:flex;gap:10px;align-items:flex-start;font-size:12px}.check input{margin:2px 0 0;flex:none}.notice{padding:14px 18px;border-radius:16px;background:#edf3e6;color:#58704b;font-size:13px;margin:0 0 20px}.error{background:#fbe9e5;color:#994532}.offline{background:#faf0db;color:#8d6b32}.form-actions{margin-top:24px;display:flex;gap:12px;flex-wrap:wrap}.auth{max-width:440px;margin:20px auto;padding:32px}.auth .list-icon{margin-bottom:22px}.auth h1{font-size:30px}.auth label{margin-bottom:18px}.auth .check{margin:20px 0}.auth .row{margin-top:12px;justify-content:space-between}.welcome{max-width:780px;margin:20px auto}.facts{display:grid;grid-template-columns:1fr 1.5fr;gap:12px;font-size:14px}.facts dt{color:var(--muted)}.facts dd{margin:0;overflow-wrap:anywhere}.material-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.material{border-radius:18px;overflow:hidden;background:#f1f5eb}.material img{width:100%;height:160px;object-fit:cover}.material div{padding:14px;overflow-wrap:anywhere}.map-frame{position:relative;background:#eaf0e3;border-radius:24px;overflow:hidden;min-height:360px}.map-frame svg{width:100%;height:400px;display:block}.map-caption{position:absolute;left:16px;bottom:16px;background:#ffffffed;padding:9px 13px;border-radius:14px;font-size:11px;max-width:calc(100% - 32px)}.map-frame a circle{transition:stroke-width .2s}.map-frame a:hover circle{stroke-width:4}.map-frame text{font-family:inherit;font-size:13px;fill:#36553b}.map-legend{display:flex;gap:15px;font-size:11px;margin-top:16px;flex-wrap:wrap}.map-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;background:#60854c}.map-legend i.orange{background:#bd8853}.map-legend i.blue{background:#5b8e9a}.chart{display:grid;gap:15px}.chart-row{display:grid;grid-template-columns:100px 1fr 35px;gap:12px;align-items:center;font-size:12px}.bar{background:#edf2e6;border-radius:20px;height:9px;overflow:hidden}.bar i{display:block;background:#668854;height:100%;border-radius:20px}.timeline{display:grid;gap:16px}.timeline article{border-left:2px solid #e6eddf;padding-left:16px}.timeline strong{font-size:13px}.timeline small{display:block;margin-top:3px}.menu{display:none}#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:110px;background:#254e3b;color:white;padding:13px 20px;border-radius:18px;max-width:calc(100vw - 32px);z-index:100;font-size:13px;box-shadow:0 8px 30px #173a2420}.date-control{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;border:1px solid var(--line);border-radius:15px;background:#f4f7f0;padding:13px 15px;margin-top:8px;font-size:16px;overflow:hidden}.date-control input{position:absolute;inset:0;opacity:0;margin:0;width:100%;height:100%;min-width:0;padding:0}.date-control svg{color:#87977b;width:19px}.boot{display:grid;place-items:center;min-height:65vh;color:#729064}.report-note{font-size:12px}.demo-mark{background:#fff2d8;color:#896c32;padding:8px 13px;border-radius:14px;font-size:12px}.list-row:hover{background:#f9fbf6}.policy{max-width:760px}.policy p{line-height:1.8}.role-select{max-width:150px;font-size:13px;min-height:44px;padding:10px}.install{max-width:540px}.install ol{padding-left:23px;color:var(--muted)}.install li{margin-bottom:18px}body[data-page=auth] .sidebar,body[data-page=auth] .menu{display:none}body[data-page=auth] .layout{display:block}button:active,.button:active{transform:translateY(1px)}
@media(max-width:800px){header{padding:calc(16px + env(safe-area-inset-top)) 20px 14px;gap:10px}.brand{font-size:22px}.icon{width:36px;height:36px}.header-actions{gap:8px}.header-actions .org-name{display:none}main{padding:16px 20px calc(120px + env(safe-area-inset-bottom))}.layout{display:block}.sidebar{display:none}h1{font-size:30px;letter-spacing:-.9px}.page-head{margin-bottom:22px;align-items:flex-start}.page-head .button{width:44px;height:44px;min-height:44px;padding:0;border-radius:15px;flex:none}.page-head .button span{display:none}.page-head p{font-size:13px}.banner{padding:25px;min-height:260px}.banner h1{font-size:32px}.banner p{font-size:13px}.banner:after{width:290px;height:290px;right:-170px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat{padding:18px;border-radius:22px}.stat strong{font-size:30px}.grid{grid-template-columns:1fr;gap:18px}.card{padding:22px;border-radius:24px;margin-bottom:18px}.form-grid{grid-template-columns:1fr;gap:18px}.form-grid .wide{grid-column:auto}.menu{position:fixed;display:flex;left:16px;right:16px;bottom:calc(10px + env(safe-area-inset-bottom) + var(--viewport-inset,0px));background:#ffffffef;border:1px solid #fff9;border-radius:24px;padding:6px;gap:3px;z-index:30;box-shadow:0 6px 30px #24452e12;backdrop-filter:blur(20px);max-width:500px;margin:auto}.menu a{display:flex;flex:1;min-width:0;align-items:center;justify-content:center;flex-direction:column;padding:7px 2px;gap:5px;min-height:52px;border-radius:18px;color:#96a18c}.menu a.active{background:#eaf1e1;color:#365d34}.menu svg{width:20px;height:20px}.menu span{font-size:10px;font-weight:500;line-height:1.15}.keyboard-open .menu{display:none}.list-row{padding:16px;gap:12px;flex-wrap:wrap}.list-row>.grow{min-width:140px}.list-row strong{font-size:14px}.list-row small{font-size:11px}.list-icon{width:38px;height:38px;border-radius:13px}.list-icon svg{width:20px}.auth{margin:6px auto;padding:26px}.auth h1{font-size:29px}.auth .row .text{font-size:12px}.material-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.material img{height:125px}.facts{grid-template-columns:1fr 1.25fr;font-size:12px}.map-frame{min-height:300px}.map-frame svg{height:320px}.demo-mark{font-size:11px}.offline-message{font-size:12px}.role-select{max-width:135px;font-size:12px}.chart-row{grid-template-columns:90px 1fr 30px}.welcome h1{font-size:35px}.form-actions .button{flex:1}.report-note{font-size:11px}}
@media(max-width:350px){main{padding-left:14px;padding-right:14px}header{padding-left:16px;padding-right:16px}.brand{font-size:20px}.card{padding:20px}.menu{left:12px;right:12px}.menu span{font-size:9px}.banner h1{font-size:29px}.stat span{font-size:11px}.auth{padding:23px}.material-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}button:active,.button:active{transform:none}}
@media print{header,.sidebar,.menu,.no-print,#toast{display:none!important}.layout{display:block}main{padding:0;max-width:100%}.card{break-inside:avoid;border:1px solid #ddd}body{background:white}.grid{grid-template-columns:1fr}}
/* Keep compact rows aligned on narrow phones. */
.notice.row{flex-wrap:nowrap}.notice.row>span{flex:1;min-width:0}.notice.row>.text{flex:none;padding:4px 0;font-size:12px}.list-row{flex-wrap:nowrap}.list-row>.grow{min-width:0}.list-row>.badge{flex:none}.list-row>.icon{flex:none}
@media(max-width:800px){.list-row>svg:last-child{display:none}.list-row strong{font-size:13px}.list-row small{overflow-wrap:anywhere}.card .list-row{padding:15px 13px;gap:10px}.card .list-icon{width:33px;height:33px;border-radius:12px}.card .badge{padding:5px 8px;font-size:10px}.notice.row{padding:14px 16px;font-size:11px}}
