/* Reference-led matte UI. Opaque surfaces; no glass/backdrop filters. */
body.fs-map{
  --edge:#d3cbf3;--shadow-btn:0 3px 10px #12063a1c;
  --shadow-card:0 12px 36px #09021e33;--shadow-sheet:0 18px 54px #09021e40;
  --radius-control:16px;--radius-panel:28px;
  --btn-primary-hover-bg:#2c1170;
  --btn-border:#d3cbf3;
}
.fs-map .panel,.fs-map .detail,.fs-map .add-sheet,.fs-map .route-sheet{
  border:1px solid #e1daf6;border-radius:var(--radius-panel);box-shadow:var(--shadow-sheet);
  overflow:hidden;
}
.fs-map .detail{overflow-y:auto}
.fs-map .panel-head{padding:20px 22px;border-color:var(--line)}
.fs-map .brand{gap:12px;font-size:11px}
.fs-map .brand img{width:44px;height:44px}
.fs-map .panel-title{padding:20px 20px 16px;gap:8px}
.fs-map .panel-title h1{font-size:29px}
.fs-map .panel-count{gap:4px;font:700 11px var(--body)}
.fs-map .panel-count b{font-size:24px}
.fs-map .panel-controls{padding:0 20px 16px;gap:12px;border-color:var(--line)}
.fs-map .search{border-radius:20px;height:50px;background:var(--surface);border-color:var(--line);padding-left:16px}
.fs-map .search:focus-within{box-shadow:0 0 0 3px #c8b5ff66;border-color:#8c6dd2}
.fs-map .chips{gap:7px}
.fs-map :is(.chip,.filter-opts button,.route-corridor button,.add-options span){border-radius:999px;border-color:var(--line)}
.fs-map :is(.btn,.route-cta,.add-cta,.filters-toggle,.list-state button,.back-link){border-radius:var(--radius-control)}
.fs-map .panel-ctas{gap:8px}
.fs-map .route-cta{box-shadow:0 4px 12px #17084518}
.fs-map .list-wrap{padding:8px 12px;scroll-padding-top:8px}
.fs-map .point-list{display:grid;gap:6px}
.fs-map .row{border:1px solid transparent;border-radius:20px;padding:14px 12px;gap:12px;grid-template-columns:40px minmax(0,1fr) auto}
.fs-map .row.is-selected{background:#e9e3fb;border-color:#e1d7fa}
.fs-map .row.is-selected::before{content:none}
.fs-map .row-icon{width:40px;height:40px;border:1px solid #a68ad4;border-radius:12px;font-size:21px}
.fs-map .row-text{gap:5px}
.fs-map .row-text b{font-size:14px;line-height:1.35}
.fs-map .row-tags{font:800 11px/1.45 var(--body);gap:4px 12px}
.fs-map .row-side{padding-top:4px}
.fs-map .panel-foot{padding:12px 20px;border-color:var(--line);font:700 10px/1.45 var(--body)}
.fs-map .panel-dock{border-radius:0 16px 16px 0;box-shadow:0 8px 20px #09021e33;border-color:#c8b5ff55}
.fs-map .panel-dock{overflow:hidden}
.fs-map .route-swap{justify-self:end;top:13px;margin:0 4px 0 0;width:44px;height:44px}
@media (min-width:821px){
  .fs-map .route-sheet{bottom:auto;max-height:calc(100dvh - var(--gap) * 2)}
  .fs-map .route-body{flex:0 1 auto}
  .fs-map .route-sheet>.add-bar{flex-shrink:0}
}
.fs-map .route-input{overflow:hidden}
.fs-map .add-auth{border-radius:28px;border-color:var(--line);box-shadow:var(--shadow-sheet)}
.fs-map .add-auth-icon{border-radius:16px;color:var(--ink)}
.fs-map .detail-bar{padding:14px 16px;gap:6px;border-bottom:0}
.fs-map .tag{border-radius:999px;padding:8px 10px;font:800 11px/1.2 var(--body);letter-spacing:0;white-space:nowrap}
.fs-map .tag--ok{background:#e9e0ff;border-color:#bda3f0}
.fs-map .detail-close,.fs-map .detail-share,.fs-map .route-swap{border-radius:50%;border-color:var(--line);box-shadow:0 2px 6px #12063a0c}
.fs-map .detail-close{margin-left:0}
.fs-map .filter-head .detail-close{margin-left:auto}
.fs-map .detail-share{margin-left:auto}
.fs-map .detail-body{padding:12px 20px 20px}
.fs-map .detail h2{font-size:24px;line-height:1.22;letter-spacing:-.055em}
.fs-map .detail-address{font-size:15px;font-weight:500;line-height:1.5}
.fs-map .detail-meta{font-size:12px;gap:6px 12px}
.fs-map .detail-thumb,.fs-map .detail-thumb img{border-radius:16px}
.fs-map .copy,.fs-map .search-clear{border-radius:10px}
.fs-map .route{gap:8px;margin-top:18px}
.fs-map .facts{border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#efeafd}
.fs-map .fact{padding:14px!important}
.fs-map .fact:last-child{border-bottom:0}
.fs-map .fact dt{font:600 11px/1.35 var(--body);letter-spacing:0}
.fs-map .fact dd{font-size:15px}
.fs-map .check{border-radius:20px;padding:14px;gap:12px}
.fs-map .check-actions{grid-template-columns:1fr auto}
.fs-map .check-actions .btn{font:800 12px/1.3 var(--body);white-space:normal}
.fs-map .check-form select,.fs-map .check-form textarea{border-radius:12px;border-color:var(--line)}
.fs-map .alert,.fs-map .check-problem{border-radius:14px}
.fs-map .detail-foot{border-color:var(--line);font:700 11px/1.4 var(--body)}
.fs-map .detail-more{width:calc(100% - 40px);margin:0 20px 16px;padding:12px 16px;justify-content:space-between;border-radius:18px;background:var(--surface-2);color:var(--ink);text-decoration:none;font:800 14px var(--body)}
.fs-map .tool{border-radius:50%;border-color:var(--line);width:48px;height:48px;font-size:23px}
.fs-map .map-tools{gap:10px}
.fs-map .tool--add{border-color:var(--dc)}
.fs-map .map-menu,.fs-map .tour-replay--map{border-radius:999px;border-color:var(--line);box-shadow:var(--shadow-btn)}
.fs-map .area-prompt,.fs-map .toast,.fs-map .add-pick-bar,.fs-map .route-pick{border-radius:20px}
.fs-map .route-input,.fs-map .route-range input,.fs-map .add-form input,.fs-map .add-form select,.fs-map .add-form textarea{border-radius:14px;border-color:var(--line)}
.fs-map .add-bar{border-color:var(--line);padding:16px 20px}
.fs-map .add-bar .detail-close{margin-left:auto}
.fs-map .route-stop,.fs-map .add-photo{border-radius:14px;overflow:hidden}
/* Menu stays inset, including safe areas, and each entire row remains clickable. */
body.fs-map .sm-panel{border-radius:28px;border-color:var(--line);box-shadow:var(--shadow-sheet);width:min(350px,calc(100vw - 24px));padding:6px}
.fs-map .sm-head{padding:14px 14px 16px;border-color:var(--line)}
.fs-map .sm-close{border-radius:50%;border-color:var(--line);width:44px;height:44px}
.fs-map .sm-user{margin:0 8px;padding:16px 8px;border-color:var(--line)}
.fs-map .sm-user strong{font-size:17px}
.fs-map .sm-user span{font:600 12px var(--body)}
.fs-map .sm-links{padding:10px 6px;display:grid;gap:5px}
.fs-map .sm-links a{border-radius:16px;min-height:50px;padding:0 14px;font-size:14px}
.fs-map .sm-links a[aria-current=page]{box-shadow:none;background:#f9dff3;color:#a90d64}
.fs-map .sm-links a i{font-size:23px}
.fs-map .sm-telegram{margin:0 6px;border:0;border-radius:18px;min-height:52px;font-size:13px;padding:12px 14px}
.fs-map .sm-legal{background:none;border-color:var(--line);margin:12px 14px 0;padding:12px 0 8px;justify-content:space-between;font-size:11px}
.fs-map .sm-legal a{color:var(--muted)}
.fs-map .sm-legal a:hover{color:var(--ink)}
.fs-map .sm-badge{border-radius:999px}
.fs-map .tour-card{border-radius:24px;box-shadow:0 18px 50px #08022166}
.fs-map .tour-next{border-radius:14px;min-height:44px}
.fs-map .tour-progress span{border-radius:999px}
.fs-map .tour-focus{border-radius:16px;box-shadow:0 0 0 4px #f7258533}
@media (max-width:820px){
  .fs-map .panel,.fs-map .detail,.fs-map .filter-sheet:not([hidden]),.fs-map .add-sheet,.fs-map .route-sheet{border-radius:28px 28px 0 0;border:0;box-shadow:0 -8px 32px #09021e2e}
  .fs-map .sheet-handle,.fs-map .detail-grip{height:28px}
  .fs-map .sheet-handle span,.fs-map .detail-grip span,.fs-map .filter-grip span{border-radius:999px;width:44px;height:4px}
  .fs-map .panel-controls{padding:4px 16px 16px}
  .fs-map .search-row{gap:8px}
  .fs-map .search{height:48px}
  .fs-map .filters-toggle{padding:0 12px;font:800 12px var(--body);border-radius:18px}
  .fs-map .panel[data-sheet=half] .panel-title,.fs-map .panel[data-sheet=full] .panel-title{display:flex;padding:2px 16px 12px}
  .fs-map .panel-title h1{font-size:23px}
  .fs-map .panel-count b{font-size:20px}
  .fs-map .row{padding:14px 10px;grid-template-columns:40px minmax(0,1fr) auto;gap:10px}
  .fs-map .row-text b{font-size:15px}
  .fs-map .row-text small{font-size:13px}
  .fs-map .row-tags{font-size:11px}
  .fs-map .map-label{opacity:1;gap:8px;max-width:calc(100vw - 100px)}
  .fs-map .map-label b{font-size:clamp(20px,5.6vw,28px)}
  .fs-map .map-label span{font:800 12px var(--body)}
  .fs-map #add-point{border-radius:50%;width:56px;height:56px}
  .fs-map .tool--menu,.fs-map .tour-replay--map{border-radius:50%;width:44px;height:44px}
  .fs-map .detail-bar{flex-wrap:wrap;padding:6px 16px 12px}
  .fs-map .tag{font-size:10px;padding:7px 8px}
  .fs-map .detail-body{padding:12px 16px 16px}
  .fs-map .detail h2{font-size:23px}
  .fs-map .detail-address{font-size:15px}
  .fs-map .detail-more{margin:0 16px 16px;width:calc(100% - 32px)}
  .fs-map .detail.is-compact .route .btn--main{min-height:48px;font-size:14px}
  body.fs-map .sm-panel{top:calc(env(safe-area-inset-top) + 10px);left:12px;right:12px;width:auto;max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 24px);padding:6px}
  .fs-map .sm-links a{min-height:52px;font-size:15px}
  .fs-map .sm-telegram{font-size:13px}
  .fs-map .credit-toggle{border-radius:50%}
}
@media (prefers-reduced-motion:no-preference){
  .fs-map .row{transition:background-color .18s ease-out,border-color .18s ease-out,scale .15s ease-out}
  .fs-map .sm-panel:not([hidden]):not(.is-closing){animation:matte-menu-in .36s var(--ease-out) both}
  @keyframes matte-menu-in{from{opacity:0;transform:translateY(-10px) scale(.97)}to{opacity:1;transform:none}}
  .fs-map :is(.detail,.route-sheet,.add-sheet,.filter-sheet):not([hidden]){animation:matte-surface-in .44s var(--ease-out) both}
  .fs-map .filter-sheet.is-closing{animation:matte-surface-out .23s cubic-bezier(.4,0,.8,.2) both}
  .fs-map .filter-backdrop.is-closing{animation:ui-backdrop-out .23s ease-out both}
  @keyframes matte-surface-in{from{opacity:0;transform:translateY(40px) scale(.975)}to{opacity:1;transform:none}}
  @keyframes matte-surface-out{to{opacity:0;transform:translateY(40px) scale(.98)}}
}
/* Компактное меню телефона — те же размеры, что в кабинете. */
@media(max-width:700px){
 body.fs-map .sm-panel{left:auto;right:16px;width:min(320px,calc(100vw - 32px));padding:5px;border-radius:24px}
 .fs-map .sm-head{padding:9px 10px 12px}.fs-map .sm-title{font-size:10px}.fs-map .sm-close{width:36px;height:36px;font-size:18px}
 .fs-map .sm-user{margin:0;padding:12px 14px;gap:2px}.fs-map .sm-user strong{font-size:14px}.fs-map .sm-user span{font-size:8px}
 .fs-map .sm-links{padding:6px;gap:2px}.fs-map .sm-links a{min-height:44px;padding:0 12px;gap:10px;border-radius:13px;font-size:13px}.fs-map .sm-links a i{font-size:19px}
 .fs-map .sm-telegram{min-height:44px;margin:0 6px;padding:8px 12px;gap:10px;border-radius:14px;font-size:12px}.fs-map .sm-telegram i{font-size:19px}
 .fs-map .sm-legal{margin:0 6px;padding:10px 8px;gap:8px 12px;font-size:10px}
}
/* Photos use opaque brand surfaces, rounded controls and a shared-image entrance. */
.fs-map .viewer{background:#12063a;animation:viewer-in .28s ease-out both;padding:16px}
.fs-map .viewer-bar{margin:0 auto 16px;width:min(100%,1000px);padding:12px 16px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-card)}
.fs-map .viewer-bar b{font:800 14px/1.4 var(--body)}
.fs-map .viewer-count{color:var(--muted);font:800 12px var(--body);white-space:nowrap}
.fs-map .viewer-close{border-radius:50%;border-color:var(--line);color:var(--ink);background:var(--surface)}
.fs-map .viewer-stage{padding:0 12px 12px}
.fs-map .viewer-stage img{border-radius:24px;animation:none;max-width:100%;max-height:100%;box-shadow:0 20px 60px #0006}
.fs-map .viewer-nav{border-radius:50%;background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:var(--shadow-btn);z-index:1}
.fs-map .viewer-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:14px 18px;border-radius:16px;background:var(--surface);color:var(--muted);font:700 13px var(--body)}
.fs-map .viewer-status[hidden]{display:none}
.fs-map .detail.is-resizing{overflow:hidden!important}
@media(max-width:820px){
 .fs-map .viewer{padding:calc(12px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom))}
 .fs-map .viewer-bar{padding:10px 12px;margin-bottom:12px;border-radius:20px;gap:8px}
 .fs-map .viewer-bar b{font-size:13px}.fs-map .viewer-stage{padding:0}
 .fs-map .viewer-stage img{border-radius:20px}.fs-map .viewer-nav{width:42px;height:42px}
 .fs-map .viewer-prev{left:6px}.fs-map .viewer-next{right:6px}
 .fs-map .detail.is-compact .detail-body{animation:none}
}
@media(prefers-reduced-motion:reduce){.fs-map .viewer{animation:none}}
