:root{--bg:#F3F6F4;--card:#FFFFFF;--ink:#13261F;--muted:#5D6F68;--line:#E1E8E4;--brand:#14805E;--brand-ink:#0E5F46;--brand-soft:#E3F2EC;--side:#12302B;--side-ink:#CFE3DB;--amber:#B5651D;--amber-soft:#FCEFDF;--red:#B3261E;--red-soft:#FBE7E5;--blue:#0A66C2;--blue-soft:#E3EEFA;--radius:14px}
*{box-sizing:border-box}html,body{margin:0}
body{font-family:Inter,system-ui,-apple-system,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5}
a{color:var(--brand-ink)}h1,h2,h3,h4{font-family:'Space Grotesk',Inter,sans-serif;margin:0 0 .5rem;line-height:1.2}
h1{font-size:26px}h2{font-size:18px}h3{font-size:16px}h4{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.25rem 0 .4rem}
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.side{background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;padding:20px 14px;position:sticky;top:0;height:100vh}
.brand{display:flex;gap:10px;align-items:center;margin:0 6px 24px}.brand b{display:block;color:#fff;font-size:16px}.brand small{color:var(--side-ink);font-size:12px}
.logo{width:36px;height:36px;border-radius:10px;background:#4FD1A1;color:#12302B;display:grid;place-items:center;font:700 18px 'Space Grotesk',sans-serif}
.side nav{display:flex;flex-direction:column;gap:2px;flex:1}
.side nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:var(--side-ink);text-decoration:none;font-weight:500}
.side nav a:hover{background:#1C4740;color:#fff}.side nav a.on{background:#4FD1A1;color:#12302B}
.badge{margin-left:auto;background:#F2A33A;color:#12302B;border-radius:99px;font-size:12px;padding:0 8px;font-weight:700}
.me{border-top:1px solid #24504A;padding:14px 6px 0;display:flex;justify-content:space-between;align-items:center}.me b{color:#fff;display:block;font-size:14px}.me small{font-size:12px}
.me .link{color:var(--side-ink)}
main{padding:24px 32px 64px;min-width:0}
.top{display:flex;align-items:center;gap:12px;margin-bottom:18px}.menu{display:none;border:0;background:none;font-size:22px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.kpi small{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.kpi b{display:block;font:700 30px 'Space Grotesk',sans-serif;margin:4px 0}
.kpi .sub{font-size:13px;color:var(--muted)}
.delta{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}.delta.up{color:var(--brand)}.delta.down{color:var(--red)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid2>.card,.grid3>.card{margin:0}.grid2,.grid3{margin-bottom:16px}
.list{list-style:none;margin:0;padding:0}.list li{padding:9px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.list li:last-child{border:0}.list small{color:var(--muted)}
.empty{padding:24px;text-align:center;color:var(--muted);background:var(--bg);border-radius:10px}
.pill{display:inline-block;font-size:12px;font-weight:600;border-radius:99px;padding:2px 10px;background:var(--bg);color:var(--muted);white-space:nowrap}
.pill.green{background:var(--brand-soft);color:var(--brand-ink)}.pill.amber{background:var(--amber-soft);color:var(--amber)}.pill.red{background:var(--red-soft);color:var(--red)}.pill.blue{background:var(--blue-soft);color:var(--blue)}
.plat{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;white-space:nowrap}.plat::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--c)}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:8px 14px;font:600 14px Inter,sans-serif;cursor:pointer;text-decoration:none}
.btn:hover{border-color:#B8C7C0}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-ink)}
.btn.danger{color:var(--red)}.btn.sm{padding:5px 10px;font-size:13px}.btn.wide{width:100%;justify-content:center}.btn:disabled{opacity:.5;cursor:not-allowed}
.link{background:none;border:0;padding:0;font:inherit;color:var(--brand-ink);cursor:pointer;text-decoration:underline}.link.danger{color:var(--red)}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:14px}.toolbar.wrap{flex-wrap:wrap}.spacer{flex:1}.inline{display:flex;gap:8px;align-items:center}.gap{margin:12px 0}
input,select,textarea{font:inherit;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;color:var(--ink);width:100%}
.inline input,.inline select,.toolbar input,.toolbar select{width:auto}
textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #4FD1A1;border-color:transparent}
.form{display:flex;flex-direction:column;gap:12px}.form label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:13px}.form label small{font-weight:400;color:var(--muted)}
.form label.check{flex-direction:row;align-items:center;font-weight:500}.form label.check input{width:auto}
.row{display:flex;gap:8px;align-items:center}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}
.tbl td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}.tbl td.wide{min-width:280px}.tbl small{color:var(--muted)}
.tabs{display:flex;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:3px;flex-wrap:wrap}
.tabs a{padding:6px 12px;border-radius:9px;text-decoration:none;color:var(--muted);font-weight:600;font-size:13px}.tabs a.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.tabs.small{margin-bottom:10px;display:inline-flex}
.muted{color:var(--muted)}.m0{margin:0}.note{margin:0 0 14px}
.flash{padding:12px 16px;border-radius:12px;margin-bottom:16px;background:var(--brand-soft);color:var(--brand-ink);font-weight:600}.flash.error{background:var(--red-soft);color:var(--red)}
dialog{border:0;border-radius:16px;padding:24px;width:min(560px,92vw);box-shadow:0 20px 60px rgba(0,0,0,.25)}dialog::backdrop{background:rgba(18,48,43,.45)}
.intro{display:flex;gap:20px;justify-content:space-between;align-items:center}.intro p{max-width:640px;margin:0}
.stack{display:flex;flex-direction:column;gap:8px}.stack>.card{margin:0}.detail .stack{gap:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.req{display:flex;flex-direction:column;text-decoration:none;color:inherit;margin:0;transition:border-color .15s}.req:hover{border-color:var(--brand)}
.req h3{margin:12px 0 6px;font-size:17px}.req p{font-size:14px;margin:0 0 12px;flex:1}.reqtop{display:flex;gap:6px;flex-wrap:wrap}
.reqfoot{display:flex;justify-content:space-between;align-items:center;color:var(--muted)}.go{color:var(--brand);font-weight:700;font-size:13px}
.detail{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;align-items:start}.detail>.card{margin:0}
h2.big{font-size:24px;margin-top:12px}.bul{margin:0;padding-left:20px}.bul li{margin:4px 0}
.script{white-space:pre-wrap;background:var(--bg);border-radius:10px;padding:14px;font-size:14px}
.files{list-style:none;padding:0;margin:16px 0 0}.files li{padding:10px 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.files small{color:var(--muted)}.files p{margin:4px 0 0;white-space:pre-wrap;font-size:14px}
.backlink{display:inline-block;margin-bottom:12px;text-decoration:none;font-weight:600}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.dh{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;padding:4px}
.day{min-height:110px;border:1px solid var(--line);border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:3px;background:#fff}.day.pad{background:transparent;border:0}
.day.today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}.dn{font-size:12px;font-weight:700;color:var(--muted)}
.ev{font-size:11px;padding:3px 6px;border-radius:6px;text-decoration:none;color:var(--ink);background:var(--bg);border-left:3px solid var(--c);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev.pending{background:var(--amber-soft)}.ev.approved{background:var(--brand-soft)}.ev.published{background:var(--blue-soft)}.ev.rejected{background:var(--red-soft)}
.legend{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.lg{width:12px;height:12px;border-radius:3px;display:inline-block}
.lg.pending{background:var(--amber-soft);border:1px solid var(--amber)}.lg.approved{background:var(--brand-soft);border:1px solid var(--brand)}.lg.published{background:var(--blue-soft);border:1px solid var(--blue)}.lg.rejected{background:var(--red-soft);border:1px solid var(--red)}
.draft .drafthead{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.hint{background:var(--bg);border-radius:10px;padding:10px 12px;margin:0;font-size:14px}.hint.red{background:var(--red-soft)}
.results{display:grid;grid-template-columns:200px minmax(0,1fr);gap:16px;align-items:start}
.subnav{display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:8px;position:sticky;top:16px}
.subnav a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;text-decoration:none;color:var(--ink);font-weight:500;font-size:14px}.subnav a.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:700}
.subnav i{width:9px;height:9px;border-radius:50%}
code{background:var(--bg);padding:1px 6px;border-radius:6px}
.loginbox{width:min(400px,92vw);display:flex;flex-direction:column;gap:14px;padding:32px}.login{display:grid;place-items:center;min-height:100vh;background:var(--side)}
.loginbox label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:13px}.brand.big b{color:var(--ink)}.brand.big small{color:var(--muted)}
.busy{position:fixed;inset:0;background:rgba(18,48,43,.55);display:grid;place-items:center;z-index:9}.busy div{background:#fff;padding:24px 28px;border-radius:16px;font-weight:600;display:flex;gap:12px;align-items:center}
.spin{width:22px;height:22px;border:3px solid var(--brand-soft);border-top-color:var(--brand);border-radius:50%;animation:s 1s linear infinite}@keyframes s{to{transform:rotate(360deg)}}
/* report */
body.report{background:#fff}.report .bar{display:flex;gap:12px;align-items:center;padding:12px 24px;border-bottom:1px solid var(--line)}
.report .page{max-width:900px;margin:0 auto;padding:32px 24px}.report header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
.report .brand b{color:var(--ink)}.report .brand small{color:var(--muted)}.report h2{margin-top:28px}.report .foot{margin-top:32px;font-size:12px}
@media print{.noprint{display:none!important}.report .page{padding:0}.kpi,.card{break-inside:avoid}}
@media (max-width:1100px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.grid3{grid-template-columns:1fr}.detail{grid-template-columns:1fr}}
@media (max-width:820px){.shell{grid-template-columns:1fr}.side{position:fixed;inset:0 auto 0 0;width:250px;transform:translateX(-100%);transition:transform .2s;z-index:5}.side.open{transform:none}
 .menu{display:block}main{padding:16px}.grid2{grid-template-columns:1fr}.results{grid-template-columns:1fr}.subnav{position:static;flex-direction:row;flex-wrap:wrap}
 .intro{flex-direction:column;align-items:stretch}.toolbar{flex-wrap:wrap}.tbl{display:block;overflow-x:auto}.cal{grid-template-columns:repeat(7,minmax(44px,1fr));overflow-x:auto}.day{min-height:70px}.ev{font-size:10px}.row2{grid-template-columns:1fr}}
[hidden]{display:none!important}
