:root{--navy:#12263f;--navy2:#1d3b63;--line:#e3e9f1;--bg:#f5f8fc;--accent:#1d4ed8}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,Segoe UI,system-ui,sans-serif;color:var(--navy);background:var(--bg)}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;gap:16px;align-items:center;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{display:flex;gap:10px;align-items:center}.brand strong{display:block;line-height:1.1}.brand small{color:#6b7c93}.logo{width:36px;height:36px;border-radius:10px;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:700}.search{position:relative;flex:1 1 260px;max-width:420px}.search input{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-size:15px;background:var(--bg)}.search input:focus{outline:2px solid var(--accent);background:#fff}.results{position:absolute;z-index:20;left:0;right:0;top:44px;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px #12263f26}.results li{padding:8px 10px;border-radius:8px;cursor:pointer;display:flex;justify-content:space-between;gap:8px}.results li:hover{background:var(--bg)}.results span{color:#6b7c93;font-size:13px}.sectors{display:flex;gap:6px;margin-left:auto}.sectors button{border:1px solid var(--line);background:#fff;color:var(--navy);padding:8px 12px;border-radius:10px;cursor:pointer;font-size:14px}.sectors button i{font-style:normal;margin-left:6px;font-size:12px;color:#6b7c93}.sectors button.on{background:var(--navy);color:#fff;border-color:var(--navy)}.sectors button.on i{color:#c9d6e8}.stats{display:flex;gap:10px;padding:10px 16px;overflow-x:auto;background:#fff;border-bottom:1px solid var(--line)}.stat{min-width:120px;padding:8px 14px;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;gap:2px}.stat span{font-size:12px;color:#6b7c93;display:flex;align-items:center;gap:6px;white-space:nowrap}.stat b{font-size:22px}.stat.big{background:var(--navy);border-color:var(--navy)}.stat.big span{color:#c9d6e8}.stat.big b{color:#fff;font-size:26px}.bar{height:5px;background:#fff3;border-radius:3px;overflow:hidden}.bar div{height:100%;background:#6fd39a}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.stage{position:relative;flex:1;min-height:0}.map-host{position:absolute;top:0;right:0;bottom:0;left:0}.map-host canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.tip{position:absolute;pointer-events:none;background:var(--navy);color:#fff;padding:4px 8px;border-radius:6px;font-size:13px}.hint{position:absolute;left:12px;bottom:12px;font-size:12px;color:#4a5d78;background:#ffffffd9;padding:6px 10px;border-radius:8px}.mapbtns{position:absolute;right:12px;bottom:12px;display:flex;gap:8px}.mapbtns button{border:1px solid var(--line);background:#fff;color:var(--navy);padding:8px 12px;border-radius:10px;cursor:pointer}.error{position:absolute;top:12px;left:12px;background:#fdecea;color:#a8321f;padding:8px 12px;border-radius:8px}.card{position:absolute;top:12px;right:12px;width:300px;max-height:calc(100% - 70px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:0 12px 34px #12263f2e}.card h2{margin:0;font-size:24px}.card .close{position:absolute;top:8px;right:10px;border:0;background:none;font-size:24px;cursor:pointer;color:#6b7c93}.card dl{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:14px 0}.card dt{color:#6b7c93;font-size:13px}.card dd{margin:0;font-weight:600}.muted{color:#6b7c93;margin:4px 0}.small{font-size:12px}@media (max-width: 700px){.sectors{margin-left:0}.card{top:auto;bottom:0;left:0;right:0;width:auto;max-height:55%;border-radius:14px 14px 0 0}.hint{display:none}.mapbtns{bottom:auto;top:12px}}.adminbtn{border:1px solid var(--line);background:#fff;color:var(--navy);padding:8px 12px;border-radius:10px;cursor:pointer;font-size:14px}.adminbtn.on{background:var(--accent);border-color:var(--accent);color:#fff}.toast{cursor:pointer;top:60px}.admin{position:absolute;top:12px;left:12px;width:290px;max-height:calc(100% - 70px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 12px 34px #12263f2e;z-index:5}.admin h3{margin:0 0 10px}.admin h4{margin:14px 0 8px}.admin label{display:block;font-size:12px;color:#6b7c93;margin-bottom:8px}.admin input,.admin select{display:block;width:100%;margin-top:3px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:14px;color:var(--navy);background:#fff}.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.admin button{border:1px solid var(--line);background:#fff;color:var(--navy);padding:8px 12px;border-radius:10px;cursor:pointer;font-size:14px}.admin button.primary{background:var(--navy);border-color:var(--navy);color:#fff}.admin button.danger{color:#c0392b;border-color:#f0c9c4}.admin button:disabled{opacity:.6;cursor:default}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.err{color:#a8321f;background:#fdecea;padding:6px 8px;border-radius:8px;font-size:13px}@media (max-width: 700px){.admin{top:auto;bottom:0;left:0;right:0;width:auto;max-height:60%;border-radius:14px 14px 0 0}}.preview{position:absolute;left:50%;transform:translate(-50%);bottom:12px;width:min(460px,92%);background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 14px;box-shadow:0 8px 26px #12263f29;z-index:6}.preview .ptitle{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px}.preview .ptitle button{border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:8px;padding:4px 8px;cursor:pointer;font-size:12px}.preview .ptitle button:disabled{opacity:.5;cursor:default}.preview input[type=range]{width:100%;margin:8px 0 2px}.preview .plabel{font-size:13px;font-weight:600}@media (max-width: 700px){.preview{bottom:auto;top:56px}}.card{width:340px}.card .play{width:100%;border:1px solid var(--navy);background:var(--navy);color:#fff;padding:9px 12px;border-radius:10px;cursor:pointer;font-size:14px;margin-bottom:10px}.card .play:disabled{opacity:.45;cursor:default}.steps{margin:4px 0 10px}.sprog{display:flex;justify-content:space-between;font-size:13px;color:#4a5d78}.sprog b{color:var(--navy)}.sbar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin:4px 0 8px}.sbar div{height:100%;background:#27ae60;transition:width .3s}.ssec h5{margin:12px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#6b7c93}.step{display:flex;gap:10px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--bg)}.check{flex:0 0 26px;width:26px;height:26px;border:2px solid #b7c4d4;border-radius:7px;background:#fff;color:#fff;font-size:16px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}.step.done .check{background:#27ae60;border-color:#27ae60}.slabel{flex:1;font-size:14px;padding-top:3px}.step.done .slabel{color:#4a5d78}.sdate{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:12px;color:#6b7c93}.sdate input{border:1px solid var(--line);border-radius:6px;padding:3px 6px;font-size:13px;color:var(--navy)}@media (max-width: 700px){.card{width:auto}}.maplabels{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.maplabel{position:absolute;left:0;top:0;display:flex;align-items:center;gap:8px;white-space:nowrap;background:#fffffff0;color:var(--navy);border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600;box-shadow:0 4px 14px #12263f2e;will-change:transform}.maplabel b{background:var(--navy);color:#fff;border-radius:999px;padding:1px 7px;font-size:12px}.roadtool{display:flex;gap:8px;align-items:flex-end;margin-bottom:8px}.roadtool label{flex:1;margin:0}.roadlist{list-style:none;margin:6px 0 0;padding:0;font-size:12px}.roadlist li{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--bg)}.roadlist button{padding:2px 8px;font-size:12px}.admin details summary{cursor:pointer;font-size:13px;color:#4a5d78}@media (max-width: 700px){.mapbtns{flex-wrap:wrap;justify-content:flex-end;max-width:60%}}.tabbar{display:flex;gap:4px;margin:4px 0 8px;border-bottom:1px solid var(--line);overflow-x:auto}.tabbar button{border:0;background:none;padding:8px;font-size:13px;color:#6b7c93;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.tabbar button.on{color:var(--navy);border-bottom-color:var(--navy);font-weight:600}.tabbar button.red{color:#c0392b}.newremark textarea{width:100%;min-height:70px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font:inherit;font-size:14px;resize:vertical}.newremark .row{display:flex;gap:8px;margin:6px 0 12px;justify-content:space-between;align-items:center}.filebtn{border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px;cursor:pointer;background:#fff;display:inline-block}.filebtn.wide{display:block;text-align:center;margin:6px 0 10px}.filebtn input{display:none}.primary{border:1px solid var(--navy);background:var(--navy);color:#fff;padding:8px 12px;border-radius:10px;cursor:pointer;font-size:13px}.primary:disabled{opacity:.45;cursor:default}.cap{width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:14px}.remark{border:1px solid #f3c9c4;background:#fff6f5;border-radius:10px;padding:10px;margin-bottom:8px}.remark.resolved{border-color:var(--line);background:var(--bg);color:#6b7c93}.rtext{white-space:pre-wrap;font-size:14px}.rmeta{font-size:12px;color:#6b7c93;margin:4px 0}.ractions{display:flex;gap:6px;margin-top:8px}.ractions button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 9px;font-size:12px;cursor:pointer}.ractions .danger{color:#c0392b;margin-left:auto}.thumbs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.thumb{position:relative;width:92px;height:92px}.thumb img{width:100%;height:100%;object-fit:cover;border-radius:8px;cursor:zoom-in;border:1px solid var(--line)}.thumb button{position:absolute;top:3px;right:3px;width:22px;height:22px;border:0;border-radius:50%;background:#12263fbf;color:#fff;cursor:pointer;line-height:1}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0a121ee0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:zoom-out}.lightbox img{max-width:94vw;max-height:86vh;border-radius:8px}.lcap{color:#fff;font-size:14px}.hist{list-style:none;margin:0;padding:0}.hist li{display:flex;gap:8px;padding:8px 4px;border-bottom:1px solid var(--bg);font-size:13px}.hist li.click{cursor:pointer}.hist li.click:hover{background:var(--bg)}.hist small{color:#6b7c93}.hi{flex:0 0 20px}.journal{position:absolute;left:12px;top:12px;bottom:60px;width:340px;max-width:calc(100% - 24px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:0 12px 34px #12263f2e}.journal h3{margin:0 0 4px}.journal .close{position:absolute;top:8px;right:10px;border:0;background:none;font-size:24px;cursor:pointer;color:#6b7c93}.loginwrap{min-height:100%;display:grid;place-items:center;padding:16px}.login{width:360px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 12px 34px #12263f1f;display:flex;flex-direction:column;gap:10px}.login h2{margin:6px 0 0;font-size:18px}.login input,.newuser input,.newuser select,.urow select{border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:15px;background:#fff}.login .primary{padding:11px;font-size:15px}.loginerr{color:#c0392b;font-size:14px;margin:4px 0}.me{display:flex;align-items:center;gap:8px}.me span{display:flex;flex-direction:column;text-align:right;line-height:1.15}.me small{color:#6b7c93}.modalwrap{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0a121e80;display:grid;place-items:center;padding:12px}.modal{position:relative;background:#fff;border-radius:14px;padding:18px;width:640px;max-width:100%;max-height:90vh;overflow:auto}.modal h3{margin:0 0 8px}.modal h4{margin:16px 0 6px}.modal .close{position:absolute;top:8px;right:12px;border:0;background:none;font-size:24px;cursor:pointer;color:#6b7c93}.urow{display:flex;gap:6px;align-items:center;padding:8px 0;border-bottom:1px solid var(--bg);flex-wrap:wrap}.urow.off{opacity:.55}.uinfo{flex:1 1 160px;display:flex;flex-direction:column}.uinfo small{color:#6b7c93}.urow button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 9px;font-size:12px;cursor:pointer}.urow .danger{color:#c0392b}.newuser{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check:disabled{cursor:default;opacity:.6}.contr{flex:1 0 100%;background:var(--bg);border-radius:10px;padding:8px 10px}.contr small{display:block;color:#6b7c93;margin-top:6px}.contr.wide2{grid-column:1 / -1}.cpick{display:flex;flex-wrap:wrap;gap:6px 14px}.cpick label{font-size:13px;display:flex;gap:5px;align-items:center}.app,.stage{touch-action:manipulation}.stage canvas{touch-action:none}.topbar{padding-top:max(10px,env(safe-area-inset-top))}@media (max-width: 700px){.topbar{gap:8px;padding:8px 10px}.brand small{display:none}.search{order:5;flex:1 1 100%;max-width:none}.sectors{margin-left:0;flex-wrap:wrap}.me span small{display:none}.stats{padding:8px 10px}.stat{min-width:104px}.stat b{font-size:18px}.journal{left:0;right:0;top:auto;bottom:0;width:auto;max-width:none;max-height:60%;border-radius:14px 14px 0 0}.admin{max-height:45%}.mapbtns{flex-wrap:wrap;justify-content:flex-end}.hint{display:none}.check{flex-basis:32px;width:32px;height:32px}.newuser{grid-template-columns:1fr}input,select,textarea{font-size:16px!important}}.modal.summary{width:780px}.muted{color:#6b7c93;font-size:13px;margin:4px 0 10px}.sumbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0 12px}.sumbar select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;background:#fff;padding:7px 14px;cursor:pointer}.seg button.on{background:#2f80ed;color:#fff}.sumtop{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.donut{width:116px;height:116px;border-radius:50%;display:grid;place-items:center}.donut>div{width:80px;height:80px;border-radius:50%;background:#fff;display:grid;place-content:center;text-align:center}.donut b{font-size:18px}.donut span{font-size:11px;color:#6b7c93}.sumfacts{display:flex;flex-direction:column;gap:3px;font-size:14px}.cols{display:grid;gap:3px;height:150px;align-items:end;padding-bottom:18px}.col{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}.col i{display:block;width:100%;background:#2f80ed;border-radius:3px 3px 0 0;min-height:0}.col .cn{font-size:10px;color:#4a5b73}.col em{position:absolute;bottom:-16px;font-size:9px;font-style:normal;color:#6b7c93;white-space:nowrap}.hbars{display:flex;flex-direction:column;gap:6px}.hrow{display:grid;grid-template-columns:150px 1fr 56px;gap:8px;align-items:center;cursor:pointer;font-size:13px}.hname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.htrack{background:#e9eff7;border-radius:6px;height:14px;overflow:hidden}.htrack i{display:block;height:100%;background:#27ae60;border-radius:6px}.hval{text-align:right;font-weight:600}.sumtable{overflow-x:auto}.sumtable table{width:100%;border-collapse:collapse;font-size:13px}.sumtable th,.sumtable td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.sumtable tr{cursor:pointer}.sumtable tr.tot{font-weight:700;background:#f3f7fc}.mini{display:inline-block;width:60px;height:8px;background:#e5ebf3;border-radius:4px;overflow:hidden;margin-right:6px;vertical-align:middle}.mini i{display:block;height:100%;background:#27ae60}@media (max-width: 700px){.hrow{grid-template-columns:100px 1fr 50px}.sumtop{gap:10px}}.mapbtns button.on{background:#2f80ed;color:#fff;border-color:#2f80ed}.filterbox{position:absolute;right:12px;bottom:64px;width:300px;max-width:calc(100% - 24px);background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 12px 34px #12263f33;z-index:20}.filterbox h4{margin:0 0 8px}.filterbox .close{position:absolute;top:6px;right:10px;border:0;background:none;font-size:22px;cursor:pointer;color:#6b7c93}.filterbox label{display:flex;flex-direction:column;gap:4px;font-size:13px}.filterbox select{padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:#fff}.filterbox .fl{margin:10px 0 4px;font-size:13px;color:#4a5b73}.filterbox .chips{display:flex;flex-wrap:wrap;gap:6px}.filterbox .chips button,.filterbox .frow button{border:1px solid var(--line);background:#fff;border-radius:16px;padding:5px 10px;cursor:pointer;font-size:13px}.filterbox .chips button.on{background:#2f80ed;color:#fff;border-color:#2f80ed}.filterbox .frow{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:13px;color:#4a5b73}.filterbox .dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.sumbar .primary{background:#2f80ed;color:#fff;border:0;border-radius:8px;padding:8px 14px;cursor:pointer}@media (max-width: 700px){.filterbox{bottom:auto;top:60px}}.modal.hse{width:980px;max-width:96vw;max-height:92vh;overflow:auto;position:relative}.hsetabs{margin:6px 0 12px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:6px 0}.kpis div{border:1px solid var(--line);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column}.kpis b{font-size:26px;color:#1f3b63}.kpis span{font-size:12px;color:#6b7c93}.mini.wide{width:80px}.errbox{background:#fdecea;color:#b3261e;border-radius:8px;padding:8px 10px;margin:8px 0;font-size:13px}.subbox{position:relative;border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:14px;background:#f8fbff}.subbox .close{position:absolute;top:4px;right:10px;border:0;background:none;font-size:22px;cursor:pointer;color:#6b7c93}.formgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.formgrid label{display:flex;flex-direction:column;gap:4px;font-size:13px}.formgrid .wide2{grid-column:span 3}.formgrid input{padding:8px;border:1px solid var(--line);border-radius:8px}.subbox .frow{display:flex;gap:8px;margin-top:12px}.subbox .frow button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 14px;cursor:pointer}.subbox .frow button.primary{background:#2f80ed;color:#fff;border-color:#2f80ed}.sumtable td button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:4px 10px;cursor:pointer}@media (max-width: 700px){.kpis,.formgrid{grid-template-columns:1fr}.formgrid .wide2{grid-column:auto}}.fines .finehead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:4px 0 8px;font-size:13px;flex-wrap:wrap}.fines .finehead .primary,.fines .primary{background:#2f80ed;color:#fff;border:0;border-radius:8px;padding:7px 12px;cursor:pointer}.finefilter{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}.finefilter select{padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:#fff}.finecard{border:1px solid var(--line);border-left:4px solid #9aa7b8;border-radius:10px;padding:10px 12px;margin-bottom:8px;background:#fff;font-size:13px}.finecard.st-approved{border-left-color:#e5484d}.finecard.st-pending{border-left-color:#f5a524}.finecard.st-disputed{border-left-color:#8e4ec6}.finecard.st-rejected{border-left-color:#9aa7b8;opacity:.8}.fineline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.fineline .grow{flex:1}.fineline .amount{font-size:15px}.chip{border-radius:12px;padding:2px 8px;font-size:11px;background:#eef2f7}.chip.st-approved{background:#fde7e8;color:#b3261e}.chip.st-pending{background:#fff1d6;color:#8a5a00}.chip.st-disputed{background:#efe3fa;color:#6b2fa0}.finemeta{margin-top:4px;color:#4a5b73}.finedesc{margin:4px 0;white-space:pre-wrap}.finenote{margin-top:4px;padding:5px 8px;background:#f3f7fc;border-radius:6px}.finephotos{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}.fp{position:relative}.fp img{width:72px;height:72px;object-fit:cover;border-radius:8px;cursor:zoom-in}.fp button{position:absolute;top:-6px;right:-6px;border:0;background:#e5484d;color:#fff;border-radius:50%;width:18px;height:18px;cursor:pointer;line-height:1}.fineacts{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.fineacts button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 10px;cursor:pointer}.fineacts button.ok{background:#27ae60;border-color:#27ae60;color:#fff}.fineacts button.danger{color:#b3261e}.formgrid textarea{padding:8px;border:1px solid var(--line);border-radius:8px;font:inherit;resize:vertical}.mapbtns{flex-wrap:wrap;justify-content:flex-end;max-width:72%}.results li{display:flex;align-items:center;gap:8px}.results li em{margin-left:auto;font-style:normal;font-weight:700;color:#51647a;font-size:12px}.results li.grp{background:#eef4ff}.results li .dot{flex:none}.blocklabel{position:absolute;left:0;top:0;display:flex;align-items:center;gap:5px;white-space:nowrap;background:#ffffffeb;color:var(--navy);border:1px solid var(--line);border-left:4px solid #9ca3af;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:700;box-shadow:0 2px 8px #12263f33;will-change:transform}.blocklabel b{font-weight:700;color:#51647a}.blocklabel[data-status=done]{border-left-color:#22a06b}.blocklabel[data-status=in_progress]{border-left-color:#e8a317}.blocklabel[data-status=issues]{border-left-color:#e5484d}.legend{position:absolute;left:12px;bottom:56px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:0 8px 24px #12263f29;font-size:12px;z-index:15;min-width:150px}.legend b{display:block;margin-bottom:6px;color:var(--navy)}.legend .row{display:flex;align-items:center;gap:8px;margin-top:3px}.legend .row i{width:14px;height:14px;border-radius:4px;display:inline-block}.legend .grad{height:10px;border-radius:5px;background:linear-gradient(90deg,#df2020,#dfdf20,#20df20)}.legend .gl{display:flex;justify-content:space-between;color:#51647a;margin:2px 0 4px}.tourbar{position:absolute;top:12px;left:50%;transform:translate(-50%);background:#12263fe6;color:#fff;padding:8px 14px;border-radius:999px;display:flex;align-items:center;gap:12px;z-index:20;font-size:14px}.tourbar button{border:0;background:#fff;color:var(--navy);border-radius:999px;padding:4px 12px;cursor:pointer;font-weight:600}.lapse{position:absolute;left:50%;bottom:14px;transform:translate(-50%);width:min(640px,calc(100% - 24px));background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;box-shadow:0 12px 34px #12263f38;display:flex;align-items:center;gap:12px;z-index:22}.lapse .pp{width:40px;height:40px;border-radius:50%;border:0;background:#2f80ed;color:#fff;cursor:pointer;font-size:14px;flex:none}.lapse .lmid{flex:1;min-width:0}.lapse .ldate{font-size:13px;color:var(--navy);margin-bottom:4px}.lapse input[type=range]{width:100%}.lapse .lrange{display:flex;justify-content:space-between;font-size:11px;color:#6b7c93}.lapse .lx{border:0;background:none;font-size:24px;cursor:pointer;color:#6b7c93;flex:none}@media (max-width: 700px){.mapbtns{max-width:70%}.lapse{bottom:8px}.legend{bottom:90px}}.marklabel{position:absolute;left:0;top:0;background:#12263f;color:#fff;font-size:11px;font-weight:700;padding:1px 6px;border-radius:4px;white-space:nowrap;border-left:4px solid #9ca3af;will-change:transform}.marklabel.done{border-left-color:#22c55e}.marklabel.part{border-left-color:#eab308}.marks .hint{color:#6b7c93;font-size:12px;margin:4px 0 8px}.marks table{width:100%;border-collapse:collapse;font-size:13px}.marks td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}.marks td small{display:block;color:#6b7c93;font-size:11px}.marks .mk{font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;width:1%}.marks .st{text-align:right;white-space:nowrap;color:#6b7c93;font-size:12px}.marks tr.done .st{color:#22a06b;font-weight:700}.marks tr.part .st{color:#b7791f;font-weight:700}.menubtn{display:none}@media (max-width: 700px){.menubtn{display:block;position:absolute;right:12px;top:12px;z-index:6;border:1px solid var(--line);background:#fff;color:var(--navy);padding:9px 14px;border-radius:10px;font-weight:600;box-shadow:0 4px 14px #12263f33}.mapbtns{display:none;top:56px;bottom:auto;right:12px;left:12px;max-width:none;max-height:calc(100% - 140px);overflow-y:auto;background:#fffffff5;border:1px solid var(--line);border-radius:12px;padding:8px;z-index:5;justify-content:flex-start;box-shadow:0 10px 30px #12263f40}.mapbtns.open{display:flex}.mapbtns button{flex:1 1 calc(50% - 8px);padding:10px 8px;font-size:14px}}
