/* Layout: full-screen map canvas, a lacquered side panel on the left (bottom sheet on phones), minimap bottom-right. Committed dark look. */
:root{
  --ink:#0e1617;        /* page ground, the dark beyond the map edge */
  --lacquer:#162224;    /* panels */
  --lacquer-2:#1d2c2e;  /* raised rows, inputs */
  --rule:#2d3f40;       /* hairlines */
  --paper:#e8e2d0;      /* text */
  --mist:#93a39e;       /* secondary text */
  --gold:#d6b46a;       /* accent */
  --jade:#6fc2b0;       /* map-glow echo */
  --f-display:"Philosopher","Palatino Linotype",Georgia,serif;
  --f-body:"Golos Text","Segoe UI",system-ui,sans-serif;
  color-scheme:dark;
}
html,body{height:100%}
body{background:var(--ink);color:var(--paper);font-family:var(--f-body);font-size:14px;overflow:hidden}
*{box-sizing:border-box}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

.app{position:relative;height:100%;display:flex}
.panel{flex:none;background:var(--lacquer);border-right:1px solid var(--rule);display:flex;flex-direction:column;min-height:0;z-index:5;
  padding-left:env(safe-area-inset-left,0px)}
.list{display:flex;flex-direction:column;gap:2px;list-style:none;margin:0;padding:0}
.item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-radius:7px;padding:7px 8px;cursor:pointer}
.item:hover{background:var(--lacquer-2)}
.item .dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--jade);box-shadow:0 0 0 3px color-mix(in srgb,var(--jade) 20%,transparent)}
.item .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .sub{color:var(--mist);font-size:11.5px;font-variant-numeric:tabular-nums}
.empty{color:var(--mist);font-size:12.5px;margin:4px 8px;line-height:1.5}
.tools{display:flex;gap:6px;flex-wrap:wrap;padding:12px 18px;border-top:1px solid var(--rule)}
.btn{background:var(--lacquer-2);border:1px solid var(--rule);border-radius:8px;padding:7px 11px;cursor:pointer;font-size:13px}
.btn:hover{border-color:var(--mist)}
.btn.primary{background:var(--gold);color:#1b1608;border-color:var(--gold);font-weight:600}
.btn.on{background:color-mix(in srgb,var(--gold) 22%,var(--lacquer-2));border-color:var(--gold);color:var(--gold)}
.linkbtn{background:none;border:0;color:var(--gold);cursor:pointer;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:2px}

.stage{position:relative;flex:1;min-width:0;overflow:hidden;touch-action:none;cursor:grab;background:var(--ink)}
.stage.drag{cursor:grabbing}
.stage.placing{cursor:crosshair}
.stage.onpoi{cursor:pointer}
.world{position:absolute;left:0;top:0;width:1525px;height:3543px;transform-origin:0 0}
#cv{position:absolute;inset:0;width:100%;height:100%;display:block}
.pins{position:absolute;inset:0}
.pin{position:absolute;transform:translate(-50%,-100%) scale(var(--inv,1));transform-origin:50% 100%;background:none;border:0;padding:0;cursor:pointer}
.pin svg{display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.55))}
.pin .lbl{position:absolute;left:50%;bottom:100%;transform:translateX(-50%);margin-bottom:3px;white-space:nowrap;background:rgba(14,22,23,.88);border:1px solid var(--rule);padding:2px 7px;border-radius:5px;font-size:12px;opacity:0;pointer-events:none;transition:opacity .15s}
.pin:hover .lbl,.pin.sel .lbl{opacity:1}
.region{position:absolute;transform:translate(-50%,-50%) scale(var(--inv,1));width:16px;height:16px;border-radius:50%;border:0;padding:0;background:transparent;cursor:pointer}
.region::after{content:"";position:absolute;inset:-14px;border-radius:50%;border:2px solid var(--gold);opacity:0;transform:scale(.6);transition:.4s}
.region.flash::after{opacity:1;transform:scale(1.6)}
.ping{position:absolute;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:3px solid var(--gold);transform:scale(var(--inv,1));pointer-events:none;animation:ping 1.5s ease-out forwards}
@keyframes ping{0%{transform:scale(calc(var(--inv,1)*.4));opacity:1}70%{opacity:1}100%{transform:scale(calc(var(--inv,1)*3));opacity:0}}
.sublist{margin:2px 0 6px 16px;padding-left:8px;border-left:1px solid var(--rule)}
.sublist .item{padding:5px 8px;font-size:13px}
.item .dot.small{width:6px;height:6px;margin:0 1.5px;background:var(--mist);box-shadow:none}

.hud{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:6px;z-index:3}
.hud button{width:38px;height:38px;border-radius:9px;background:rgba(22,34,36,.92);border:1px solid var(--rule);cursor:pointer;font-size:18px;line-height:1}
.hud button:hover{border-color:var(--gold);color:var(--gold)}
.hud button.txt{font-family:var(--f-display);font-size:15px;font-weight:700}
.hud button.txt[aria-pressed="false"]{color:var(--mist);text-decoration:line-through;text-decoration-thickness:2px}
.info .tip{margin:0;font-size:12.5px;line-height:1.5;color:var(--mist)}
.info .note{margin:0;font-size:12.5px;line-height:1.5;color:var(--paper);background:color-mix(in srgb,var(--gold) 14%,transparent);border-left:2px solid var(--gold);padding:6px 9px;border-radius:0 6px 6px 0}
.info{max-height:min(70vh,520px);overflow:auto}
.infoHead{display:flex;align-items:center;gap:9px}
.infoDot.big{width:30px;height:30px}
.infoDot{width:12px;height:12px;border-radius:50%;border:2px solid #0e1617;flex:none}
.coordBig{display:flex;align-items:baseline;gap:10px;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.coordBig .hgt{font-size:14px;font-weight:500;color:var(--mist)}
.mons{margin:0;font-size:12.5px;color:var(--paper);line-height:1.45}
.mons b{color:var(--mist);font-weight:500}
.edCoords{margin:-4px 0 0;color:var(--mist);font-size:12px;font-variant-numeric:tabular-nums}
.coords{position:absolute;left:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:3;background:rgba(22,34,36,.88);border:1px solid var(--rule);border-radius:7px;padding:4px 9px;font-size:12px;color:var(--mist);font-variant-numeric:tabular-nums}
.hint{position:absolute;left:50%;top:calc(14px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:4;background:var(--gold);color:#1b1608;padding:7px 14px;border-radius:999px;font-weight:600;font-size:13px;box-shadow:0 6px 18px rgba(0,0,0,.4)}
.mini{position:absolute;right:calc(12px + env(safe-area-inset-right,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:3;width:92px;border:1px solid var(--rule);border-radius:8px;overflow:hidden;background:var(--lacquer);cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.4)}
.mini img{display:block;width:100%;opacity:.85}
.mini .vp{position:absolute;border:1.5px solid var(--gold);background:color-mix(in srgb,var(--gold) 12%,transparent);pointer-events:none}

.editor{position:absolute;z-index:6;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:min(340px,calc(100% - 32px));background:var(--lacquer);border:1px solid var(--rule);border-radius:12px;padding:14px;box-shadow:0 14px 40px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:9px}
.editor h2{margin:0;font-family:var(--f-display);font-size:17px;color:var(--gold)}
.editor input,.editor select,.editor textarea{width:100%;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:7px;padding:7px 9px}
.editor textarea{resize:vertical;min-height:54px}
.cats{display:flex;gap:6px;flex-wrap:wrap}
.cat{display:flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;border:1px solid var(--rule);background:var(--lacquer-2);cursor:pointer;font-size:12.5px}
.cat i{width:9px;height:9px;border-radius:50%}
.cat[aria-pressed="true"]{border-color:var(--gold);color:var(--gold)}
.row{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.row .grow{margin-right:auto}
.btn.danger{color:#e48a7a}
.io textarea{width:100%;min-height:80px;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:7px;padding:7px;font-size:11.5px;font-family:ui-monospace,Menlo,monospace}
.toast{position:absolute;z-index:8;left:50%;top:calc(60px + env(safe-area-inset-top,0px));transform:translateX(-50%);background:var(--lacquer);border:1px solid var(--gold);color:var(--paper);padding:7px 14px;border-radius:8px;font-size:13px}
.sheetToggle{display:none}

.qgroup{display:flex;flex-direction:column;gap:4px;padding:0 4px 6px}
.qnote{margin:-2px 8px 4px;color:var(--mist);font-size:11.5px;line-height:1.45}
.qitem{display:flex;flex-direction:column;gap:3px;text-align:left;background:none;border:1px solid transparent;border-radius:8px;padding:8px 10px;cursor:pointer}
.qitem:hover{background:var(--lacquer-2);border-color:var(--rule)}
.qitem .qt{font-weight:600;font-size:13.5px}
.qitem .qm{color:var(--mist);font-size:11.5px;font-variant-numeric:tabular-nums}
.qitem .qbar{height:3px;border-radius:2px;background:var(--rule);overflow:hidden}
.qitem .qbar i{display:block;height:100%;background:var(--jade)}
.qitem.full .qt::after{content:" ✓";color:var(--jade)}
#qView{padding:10px 12px 20px;display:flex;flex-direction:column;gap:8px}
.qtop{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.qh{margin:2px 0 0;font-family:var(--f-display);font-size:20px;color:var(--gold);text-wrap:balance}
.qmeta{color:var(--mist);font-size:12px}
.qtoggle{display:flex;gap:7px;align-items:center;font-size:12.5px;color:var(--paper);cursor:pointer}
.qopen,.qabout{margin:0;font-size:13px;line-height:1.5}
.qopen{background:color-mix(in srgb,var(--gold) 12%,transparent);border-left:2px solid var(--gold);padding:6px 9px;border-radius:0 6px 6px 0}
.qabout{color:var(--mist)}
.qrew{font-size:12.5px;line-height:1.5;border:1px solid var(--rule);border-radius:8px;padding:6px 10px}
.qrew summary{cursor:pointer;color:var(--gold);font-weight:600}
.qrew p{margin:6px 0 2px}
.qprog{display:flex;justify-content:space-between;align-items:center;color:var(--mist);font-size:12px;font-variant-numeric:tabular-nums}
.qsec{margin-top:8px;padding-top:8px;border-top:1px solid var(--rule);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.qstep{display:flex;gap:9px;align-items:flex-start;padding:7px 8px;border-radius:8px;border:1px solid transparent}
.qstep input{margin-top:3px;accent-color:var(--jade);width:15px;height:15px;flex:none}
.qstep.sel{background:color-mix(in srgb,var(--gold) 10%,transparent);border-color:color-mix(in srgb,var(--gold) 50%,transparent)}
.qstep.done .qtitle{color:var(--mist);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--mist) 60%,transparent)}
.qbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.qtitle{font-weight:600;font-size:13.5px;line-height:1.35}
.qn{display:inline-block;min-width:22px;margin-right:6px;padding:0 5px;border-radius:5px;background:var(--gold);color:#1b1608;font-size:11px;text-align:center;font-variant-numeric:tabular-nums}
.qnpc{font-size:12px;color:var(--mist)}
.qtext{font-size:12.8px;line-height:1.5;color:var(--paper)}
.qtext .kw{color:var(--gold)}
.qcoord{background:color-mix(in srgb,var(--jade) 16%,transparent);border:1px solid color-mix(in srgb,var(--jade) 45%,transparent);color:var(--jade);border-radius:5px;padding:0 5px;font:inherit;font-size:12px;font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap}
.qcoord:hover{background:color-mix(in srgb,var(--jade) 30%,transparent)}
.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:rgba(5,9,10,.62);backdrop-filter:blur(2px)}
.authBox{width:min(360px,100%);background:var(--lacquer);border:1px solid var(--rule);border-radius:14px;padding:18px;box-shadow:0 20px 50px rgba(0,0,0,.6);display:flex;flex-direction:column;gap:11px}
.authBox h2{margin:0;font-family:var(--f-display);font-size:20px;color:var(--gold);text-wrap:balance}
.authBox p{margin:0;color:var(--mist);font-size:12.5px;line-height:1.5}
.authBox label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--mist)}
.authBox input{width:100%;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:8px;padding:9px 10px;font-size:15px}
.authBox .tabs{margin-top:0}
.authBox p.authErr{color:#e48a7a}
.authBox .row .btn{padding:8px 13px}
.authBox .btn:disabled{opacity:.6;cursor:progress}
.qitem .qbar i{transition:width .6s cubic-bezier(.2,.8,.2,1)}

/* ---------- чужие метки по ссылке ---------- */
.shareBar{position:absolute;z-index:4;left:60px;right:60px;margin:0 auto;width:fit-content;top:calc(12px + env(safe-area-inset-top,0px));display:flex;align-items:center;gap:6px;
  background:rgba(22,34,36,.95);border:1px solid var(--gold);border-radius:12px;padding:6px 6px 6px 12px;box-shadow:0 8px 24px rgba(0,0,0,.45);font-size:13px}
.shareBar .sbText{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shareBar .sbText b{color:var(--gold)}
.shareBar .btn{padding:5px 10px;font-size:12.5px;flex:none}
.sbX{width:30px;height:30px;flex:none;border-radius:8px;background:none;border:1px solid transparent;color:var(--mist);font-size:20px;line-height:1;cursor:pointer}
.sbX:hover{border-color:var(--rule);color:var(--paper)}
.pin.shared svg{filter:drop-shadow(0 2px 3px rgba(0,0,0,.55)) saturate(.55) brightness(1.15)}
.pin.shared::after{content:"";position:absolute;left:50%;top:13px;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff}

/* ---------- окна ---------- */
.wideBox{width:min(440px,100%);max-height:calc(100vh - 32px);overflow:auto}
.boxHead{display:flex;align-items:center;justify-content:space-between;gap:8px}
.setSec{display:flex;flex-direction:column;gap:8px;padding-top:12px;margin-top:2px;border-top:1px solid var(--rule)}
.setSec h3{margin:0;font-size:13px;font-weight:600;color:var(--paper)}
.setSec input[type=password],.setSec input[type=text]{width:100%;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:8px;padding:8px 10px}
.setSec .row input{flex:1;min-width:0}
.shareRow{display:flex;gap:6px;flex-wrap:wrap}
.shareRow input{flex:1;min-width:160px;font-size:12.5px}
a.btn{text-decoration:none;display:inline-block}
.adminRow{align-items:center;padding-top:8px;border-top:1px dashed var(--rule)}
.adminTag{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.fld{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--mist)}
.editor select{width:100%;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:7px;padding:7px 9px}

/* ---------- боковая панель ---------- */
.panel{--pw:320px;position:relative;width:var(--pw);transition:margin-left .28s cubic-bezier(.3,.8,.3,1),width .2s}
.panel.wide{--pw:380px}
.app.collapsed .panel{margin-left:calc(-1 * var(--pw))}
.collapseBtn{position:absolute;top:14px;right:-27px;width:27px;height:46px;z-index:6;display:grid;place-items:center;padding:0;cursor:pointer;
  background:var(--lacquer);color:var(--mist);border:1px solid var(--rule);border-left:0;border-radius:0 10px 10px 0;box-shadow:4px 4px 14px rgba(0,0,0,.3);transition:color .15s}
.collapseBtn:hover{color:var(--gold)}
.collapseBtn svg{transition:transform .28s}
.app.collapsed .collapseBtn svg{transform:rotate(180deg)}

.panel header{position:relative;padding:14px 14px 10px;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:10px}
.brand{display:flex;align-items:flex-start;gap:10px}
.brandText{flex:1;min-width:0}
.panel h1{font-family:var(--f-display);font-weight:700;font-size:20px;line-height:1.15;margin:0;letter-spacing:.01em;color:var(--gold)}
.panel header p{margin:3px 0 0;color:var(--mist);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.searchBox{position:relative;display:flex;align-items:center}
.searchBox .sIcon{position:absolute;left:10px;color:var(--mist);pointer-events:none}
.search{width:100%;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:9px;padding:8px 32px 8px 33px;transition:border-color .15s,background-color .15s}
.search:focus{border-color:color-mix(in srgb,var(--gold) 60%,var(--rule));background:color-mix(in srgb,var(--lacquer-2) 85%,#000);outline:none}
.search::placeholder{color:var(--mist)}
.search::-webkit-search-cancel-button{display:none}
.sClear{position:absolute;right:5px;width:24px;height:24px;border:0;border-radius:6px;background:none;color:var(--mist);font-size:18px;line-height:1;cursor:pointer}
.sClear:hover{background:var(--rule);color:var(--paper)}

.tabs{display:flex;gap:3px;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:10px;padding:3px}
.tabs button{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;background:none;border:0;border-radius:7px;padding:6px 6px;cursor:pointer;color:var(--mist);font-weight:600;font-size:13px;white-space:nowrap}
.tabs button:hover{color:var(--paper)}
.tabs button[aria-selected="true"]{background:var(--gold);color:#1b1608}
.tcount{font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;padding:0 5px;border-radius:999px;background:color-mix(in srgb,var(--mist) 18%,transparent);color:inherit}
.tcount:empty{display:none}
.tabs button[aria-selected="true"] .tcount{background:rgba(27,22,8,.16)}

.scroll{overflow:auto;flex:1;min-height:0;padding:0 8px 16px;scrollbar-width:thin;scrollbar-color:var(--rule) transparent}
.scroll::-webkit-scrollbar{width:8px}
.scroll::-webkit-scrollbar-thumb{background:var(--rule);border-radius:4px;border:2px solid var(--lacquer)}
.scroll::-webkit-scrollbar-track{background:transparent}
.sec{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--mist);margin:14px 8px 6px;display:flex;justify-content:space-between;align-items:center}
#qSearchWrap{padding:10px 4px 2px}

/* сворачиваемые разделы */
.fold{border-bottom:1px solid color-mix(in srgb,var(--rule) 70%,transparent)}
.fold:last-child{border-bottom:0}
.foldHead{position:sticky;top:0;z-index:2;width:100%;display:flex;align-items:center;gap:8px;padding:12px 8px 9px;border:0;cursor:pointer;
  background:var(--lacquer);color:var(--mist);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;text-align:left}
.foldHead:hover{color:var(--paper)}
.foldTitle{flex:1}
.foldMeta{font-size:11.5px;letter-spacing:0;text-transform:none;font-weight:500;color:var(--mist);font-variant-numeric:tabular-nums}
.foldHead .chev{flex:none;transition:transform .25s}
.fold.closed .foldHead .chev{transform:rotate(-90deg)}
.foldBody{display:grid;grid-template-rows:1fr;transition:grid-template-rows .28s cubic-bezier(.3,.8,.3,1)}
.fold.closed .foldBody{grid-template-rows:0fr}
.foldIn{overflow:hidden;min-height:0}
.fold.closed .foldIn{visibility:hidden;transition:visibility 0s .28s}

/* прогресс */
.prog{padding:0 8px 12px;display:flex;flex-direction:column;gap:10px}
.ptotal{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-radius:11px;background:var(--lacquer-2);border:1px solid var(--rule)}
.pbig{display:flex;align-items:baseline;gap:8px}
.pbig b{font-family:var(--f-display);font-size:26px;line-height:1;color:var(--gold);font-variant-numeric:tabular-nums}
.pbig span{color:var(--mist);font-size:12px}
.pbar{display:block;height:5px;border-radius:3px;background:var(--rule);overflow:hidden}
.pbar i{display:block;height:100%;width:0;border-radius:3px;background:linear-gradient(90deg,var(--jade),color-mix(in srgb,var(--jade) 60%,var(--gold)));transition:width .7s cubic-bezier(.2,.8,.2,1)}
.pbar.big{height:7px}
.pbar.big i{background:linear-gradient(90deg,var(--gold),#f0d48e)}
.pgrid{display:flex;flex-direction:column;gap:7px;padding:0 2px}
.prow{display:grid;grid-template-columns:minmax(0,1fr) 72px 40px;align-items:center;gap:10px;font-size:12.5px}
.prow .pn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .pv{text-align:right;color:var(--mist);font-size:11.5px;font-variant-numeric:tabular-nums}
.prow.sep{margin-top:3px;padding-top:9px;border-top:1px dashed var(--rule)}

/* слои */
.ltools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:0 8px 8px}
.chip{white-space:nowrap;background:var(--lacquer-2);border:1px solid var(--rule);border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer;color:var(--paper);transition:border-color .15s,background-color .15s,transform .12s}
.chip:hover{border-color:var(--mist)}
.chip:active{transform:scale(.96)}
.switch{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:12px;color:var(--mist);cursor:pointer;user-select:none}
.switch input{position:absolute;opacity:0;width:1px;height:1px}
.switch .track{position:relative;width:30px;height:17px;border-radius:999px;background:var(--rule);transition:background-color .2s;flex:none}
.switch .track::after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:var(--paper);transition:transform .2s cubic-bezier(.3,.8,.3,1.3)}
.switch input:checked+.track{background:var(--jade)}
.switch input:checked+.track::after{transform:translateX(13px)}
.switch input:focus-visible+.track{outline:2px solid var(--gold);outline-offset:2px}
.switch:has(input:checked){color:var(--paper)}

.llist{display:flex;flex-direction:column;gap:2px;padding:0 0 10px}
.lrow{border-radius:10px;transition:background-color .15s}
.lrow.open{background:color-mix(in srgb,var(--lacquer-2) 70%,transparent)}
.lline{position:relative;display:flex;align-items:center;gap:2px;border-radius:10px;padding-right:4px}
.lline:hover{background:var(--lacquer-2)}
.lmain{flex:1;min-width:0;display:flex;align-items:center;gap:9px;padding:7px 6px 7px 8px;background:none;border:0;border-radius:10px;cursor:pointer;text-align:left;color:var(--paper)}
.lmain .eye{flex:none;width:18px;display:grid;place-items:center;color:var(--jade);transition:color .15s}
.lmain .lic{flex:none;width:24px;height:24px;display:grid;place-items:center}
.lmain .lic img{width:24px;height:24px;object-fit:contain;transition:filter .2s,opacity .2s}
.lmain .lic i{width:11px;height:11px;border-radius:50%;border:1.5px solid #0e1617}
.lmain .lname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;transition:color .15s}
.lmain .lcnt{flex:none;font-size:11.5px;color:var(--mist);font-variant-numeric:tabular-nums}
.lmain .lcnt.full{color:var(--jade)}
.lmain .lcnt.full::after{content:" ✓"}
.lrow.part>.lline .eye{color:color-mix(in srgb,var(--jade) 55%,var(--mist))}
.lrow.off>.lline .eye,.srow.off .eye{color:var(--mist)}
.lrow.off>.lline .lname,.srow.off .lname{color:var(--mist)}
.lrow.off>.lline .lic img,.srow.off .lic img{filter:grayscale(1);opacity:.45}
.lrow.off>.lline .lic i,.srow.off .lic i{background:transparent!important;border-color:var(--mist)}
.lsolo,.lexp{flex:none;width:28px;height:28px;display:grid;place-items:center;padding:0;border:0;border-radius:7px;background:none;color:var(--mist);cursor:pointer;transition:color .15s,background-color .15s,opacity .15s,transform .25s}
.lsolo:hover,.lexp:hover{color:var(--paper);background:var(--rule)}
/* «только это» появляется при наведении поверх счётчика, не сдвигая строку */
.lsolo{position:absolute;right:36px;top:50%;margin-top:-14px;opacity:0;pointer-events:none;background:var(--lacquer-2)}
.lline.noexp .lsolo{right:6px}
.lline:hover .lsolo,.lline:focus-within .lsolo{opacity:1;pointer-events:auto}
.lline:hover .lcnt,.lline:focus-within .lcnt{opacity:0}
.lmain .lcnt{transition:opacity .15s}
@media (hover:none){.lsolo{display:none}}
.lexp svg{transition:transform .25s}
.lrow.open .lexp svg{transform:rotate(90deg)}
.lbar{height:2px;margin:-1px 12px 2px 45px;border-radius:2px;background:color-mix(in srgb,var(--rule) 70%,transparent);overflow:hidden}
.lbar i{display:block;height:100%;width:0;background:var(--jade);border-radius:2px;transition:width .6s cubic-bezier(.2,.8,.2,1)}
.lrow.off .lbar{opacity:.4}
.lsubs{padding:4px 6px 10px 26px;display:flex;flex-direction:column;gap:1px}
.lsubtools{display:flex;flex-wrap:wrap;gap:6px;padding:2px 2px 6px}
.lsubtools .chip{padding:3px 9px;font-size:11.5px}
.lcity{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--mist);margin:8px 4px 3px}
.lcity:first-of-type{margin-top:2px}
.srow .lmain{padding:5px 6px}
.srow .lmain .lic,.srow .lmain .lic img{width:20px;height:20px}
.srow .lmain .lname{font-size:12.8px}

/* регионы и метки */
.item .dot.ring{width:9px;height:9px;background:transparent;border:2px solid color-mix(in srgb,var(--gold) 75%,transparent);box-shadow:none}
.mhead{display:flex;align-items:center;justify-content:space-between;padding:12px 8px 8px;font-size:12px;color:var(--mist)}
.io{padding:0 8px 12px}

/* аккаунт в шапке */
.acct{position:relative;flex:none}
.acct .btn.small{padding:5px 12px;font-size:12.5px}
.avBtn{position:relative;width:34px;height:34px;padding:0;border-radius:50%;border:2px solid color-mix(in srgb,var(--gold) 40%,transparent);background:none;cursor:pointer;transition:border-color .15s,transform .12s}
.avBtn:hover,.avBtn[aria-expanded="true"]{border-color:var(--gold)}
.avBtn:active{transform:scale(.94)}
.av{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:#1b1608;font-weight:700;font-size:14px;text-transform:uppercase}
.netDot{position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;background:#e4b07a;border:2px solid var(--lacquer)}
.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:220px;padding:6px;background:var(--lacquer);border:1px solid var(--rule);border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,.55);display:flex;flex-direction:column;gap:1px;animation:popIn .18s ease-out;transform-origin:top right}
.menuHead{display:flex;flex-direction:column;gap:2px;padding:8px 10px 9px;margin-bottom:4px;border-bottom:1px solid var(--rule)}
.menuHead b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.menuHead span{font-size:11.5px;color:var(--mist)}
.menuHead span.warn{color:#e4b07a}
.menu button,.menu a{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:0;border-radius:8px;background:none;color:var(--paper);text-decoration:none;font-size:13px;cursor:pointer;text-align:left}
.menu button:hover,.menu a:hover{background:var(--lacquer-2)}
.menu svg{color:var(--mist);flex:none}
.menu .danger{color:#e48a7a}
.menu .danger svg{color:#e48a7a}

@media (max-width:720px){
  .app{flex-direction:column}
  .panel{--pw:auto;position:absolute;left:0;right:0;bottom:0;width:auto;max-height:70%;border-right:0;border-top:1px solid var(--rule);border-radius:16px 16px 0 0;
    transform:translateY(calc(100% - 118px - env(safe-area-inset-bottom,0px)));transition:transform .3s cubic-bezier(.3,.8,.3,1);box-shadow:0 -10px 30px rgba(0,0,0,.35);
    padding-left:max(0px,env(safe-area-inset-left,0px));padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
  .panel.wide{--pw:auto}
  .app.collapsed .panel{margin-left:0}
  .collapseBtn{display:none}
  .panel.open{transform:none}
  .panel header{padding:8px 14px 10px;cursor:pointer;gap:9px}
  .sheetToggle{display:block;width:40px;height:4px;border-radius:2px;background:var(--rule);margin:0 auto}
  .panel h1{font-size:18px}
  .panel header p{display:none}
  .stage{height:100%}
  .coords{display:none}
  .mini{bottom:calc(128px + env(safe-area-inset-bottom,0px));width:68px}
  .editor{bottom:calc(130px + env(safe-area-inset-bottom,0px))}
}

/* ---------- анимации ---------- */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{to{opacity:0}}
@keyframes popIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@keyframes popOut{to{opacity:0;transform:translateY(6px) scale(.98)}}
@keyframes sheetUp{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes dropDown{from{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes liftOut{to{opacity:0;transform:translate(-50%,-8px)}}
@keyframes pinDrop{0%{opacity:0;transform:translateY(-22px)}60%{opacity:1;transform:translateY(2px)}80%{transform:translateY(-3px)}100%{transform:none}}
@keyframes pinIn{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1)}}
@keyframes burst{0%{transform:scale(calc(var(--inv,1)*.3));opacity:1}100%{transform:scale(calc(var(--inv,1)*2.6));opacity:0}}
@keyframes rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.modal:not([hidden]){animation:fadeIn .18s ease-out}
.modal:not([hidden]) .authBox{animation:popIn .26s cubic-bezier(.2,.9,.3,1.15)}
.modal.closing{animation:fadeOut .16s ease-in forwards}
.modal.closing .authBox{animation:popOut .16s ease-in forwards}
.editor:not([hidden]){animation:sheetUp .24s cubic-bezier(.2,.9,.3,1.1)}
.toast{animation:dropDown .22s ease-out}
.toast.out{animation:liftOut .25s ease-in forwards}
.hint:not([hidden]){animation:dropDown .25s ease-out}
.shareBar:not([hidden]){animation:popIn .3s ease-out}
.pin.appear svg{animation:pinIn .35s ease-out backwards}
.pin.new svg{animation:pinDrop .55s cubic-bezier(.3,.7,.4,1)}
.btn,.layer,.item,.qitem,.hud button,.tabs button,.linkbtn,.sbX{transition:background-color .15s,border-color .15s,color .15s,opacity .2s,transform .12s}
.btn:active,.layer:active,.hud button:active{transform:scale(.96)}
.btn.pop{animation:pop .35s ease-out}
.burst{position:absolute;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:3px solid var(--jade);pointer-events:none;animation:burst .6s ease-out forwards}
.burst.b2{border-color:var(--gold);animation-delay:.08s;animation-duration:.75s}
.scroll:not([hidden]),#qView:not([hidden]),#qList:not([hidden]){animation:fadeIn .2s ease-out}
.lsubs,.io:not([hidden]),.sublist{animation:rise .2s ease-out}
.qstep{transition:background-color .2s,border-color .2s}
.qstep .qtitle{transition:color .25s}
.qitem.full .qt::after{display:inline-block;animation:pop .4s ease-out}
.stage #cv{opacity:0;transition:opacity .5s ease-out}
.stage.ready #cv{opacity:1}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.stage #cv{opacity:1}}
