.app{--text-dim:#5c6270;--border:#e2e4ea;--border-strong:#cfd3dc}.app__mode-chip{background:var(--accent-soft);color:var(--accent);letter-spacing:.02em;vertical-align:1px;border:1px solid #ff690047;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.app__preview{background:#8f98a6}.app .hint{color:#4f5563;font-size:12.5px;line-height:1.6}.app .preview-hud{color:#2a2e38;background:#fffffff0;border:1px solid #1d1f261f;max-width:min(460px,100% - 248px);font-size:12px;line-height:1.5;box-shadow:0 6px 18px #0000001f}.app .preview-surface-badge{color:#fff;letter-spacing:.04em;background:#1d1f26d1;border:none;font-weight:700;box-shadow:0 6px 16px #0000002e}.app .transform-toolbar__btn{color:#4f5563}.app .preview-size-card{z-index:5;pointer-events:none;background:#fffffff0;border:1px solid #1d1f261f;border-radius:8px;max-width:min(420px,100% - 248px);padding:8px 12px;position:absolute;top:12px;left:12px;box-shadow:0 6px 18px #0000001f}.app .preview-size-card__dims{color:#1d1f26;font-size:13px;font-weight:700;line-height:1.4}.app .preview-size-card__dims--empty{color:#5c6270;font-weight:600}.app .preview-size-card__grid{color:#5c6270;margin-top:3px;font-size:11px;font-weight:600}.app .phone__scan-hint{color:#fff;text-shadow:none;background:#14161cb8;border:1px solid #ffffff47;font-size:10px}.phone__floor-guide{z-index:4;pointer-events:none;perspective:420px;background:linear-gradient(#8a93a1 0%,#6d7684 100%);justify-content:center;align-items:flex-end;padding-bottom:28%;display:flex;position:absolute;inset:0}.phone__floor-plane{aspect-ratio:1.6;background:linear-gradient(#ffffff29 0%,#cbb3948c 100%);border:none;border-radius:10px;width:58%;transform:rotateX(62deg);box-shadow:0 18px 28px #0000002e}.phone__floor-pulse{width:42px;height:42px;box-shadow:none;background:radial-gradient(circle,#fffffff2 1.6px,#0000 2.2px);border:2px solid #ecfcfaeb;border-radius:50%;animation:1.7s ease-in-out infinite plane-floor-pulse;position:absolute;bottom:34%}.phone__place-card{z-index:6;text-align:center;color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none;background:#ffffff38;border:1px solid #fff6;border-radius:16px;width:min(88%,168px);padding:11px 12px 12px;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 18px #00000029}.phone__place-card-title{letter-spacing:.01em;text-shadow:0 1px 4px #00000047;font-size:10px;font-weight:700;line-height:1.35;display:block}.phone__place-card-sub{color:#ffffffbd;margin-top:4px;font-size:8px;font-weight:500;line-height:1.4;display:block}.phone--large .phone__place-card{border-radius:24px;width:min(86%,280px);padding:18px 18px 20px;bottom:28px}.phone--large .phone__place-card-title{font-size:18px}.phone--large .phone__place-card-sub{margin-top:7px;font-size:12px}@keyframes plane-floor-pulse{0%,to{opacity:.7;transform:scale(.86)}50%{opacity:1;transform:scale(1.08)}}@media (prefers-reduced-motion:reduce){.phone__floor-pulse{animation:none}}.gps-preview-split{flex-direction:column;min-height:0;display:flex;position:absolute;inset:0}.gps-preview-map,.gps-preview-floor{flex:50%;min-height:0;position:relative}.gps-preview-map{z-index:4;flex-direction:column;padding:12px 240px 8px 12px;display:flex;overflow:hidden}.gps-preview-floor{border-top:1px solid #1d1f262e;overflow:hidden}.gps-preview-floor__scene{position:absolute;inset:0}.gps-preview-map .gps-map{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.gps-preview-map .gps-map__search{z-index:3;width:min(300px,100% - 88px);position:absolute;top:10px;left:10px}.gps-preview-map .gps-map__status{z-index:3;pointer-events:none;background:#fffffff0;border:1px solid #1d1f261f;border-radius:8px;min-height:0;margin:0;padding:6px 10px;position:absolute;bottom:10px;left:10px;right:88px;box-shadow:0 6px 18px #0000001f}.gps-preview-pane-label{z-index:6;color:#fff;letter-spacing:.04em;pointer-events:none;background:#1d1f26c7;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:800;position:absolute;top:10px;right:240px}.gps-preview-floor .gps-preview-pane-label{top:10px}.gps-preview-floor:has(.transform-toolbar) .preview-size-card{top:56px}.gps-preview-floor .preview-hud{max-width:min(460px,100% - 248px)}.gps-preview-floor .transform-toolbar{top:10px;left:12px}.app .preview-surface-badge{z-index:7;text-overflow:ellipsis;white-space:nowrap;max-width:min(420px,100% - 248px);overflow:hidden}.gps-map{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.gps-map__search{z-index:2;position:relative}.gps-map__search input{background:#fff}.gps-map__search-status,.gps-map__search-error{color:#5c6270;margin:4px 0 0;font-size:11px}.gps-map__search-error{color:var(--danger)}.gps-map__hits{z-index:8;border:1px solid var(--border);background:#fff;border-radius:10px;max-height:240px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 10px 28px #0f172a1f}.gps-map__hits button{text-align:left;background:0 0;border:none;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;display:flex}.gps-map__hits button:hover{background:var(--accent-soft)}.gps-map__hit-name{color:var(--text);font-size:13px;font-weight:700}.gps-map__hit-meta{color:var(--text-dim);font-size:11px}.gps-map__canvas-wrap{background:#d7dde8;border:1px solid #1d1f261f;border-radius:14px;flex:1;min-height:180px;position:relative;overflow:hidden}.gps-map__canvas{position:absolute;inset:0}.gps-map__hint,.gps-map__overlay-msg{color:#1d1f26;pointer-events:none;white-space:nowrap;background:#fffffff0;border:1px solid #1d1f261f;border-radius:999px;margin:0;padding:8px 14px;font-size:12px;font-weight:700;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0000001f}.gps-map__locate{z-index:2;color:#4f5563;background:#fff;border:1px solid #1d1f261f;border-radius:8px;padding:7px 10px;font-size:12px;font-weight:700;position:absolute;bottom:10px;right:10px;box-shadow:0 6px 16px #0000001f}.gps-map__status{color:#5c6270;flex-direction:column;gap:2px;min-height:2.4em;font-size:12px;display:flex}.gps-map__status strong{color:#1d1f26;font-size:13px}.gps-map__error{color:var(--danger)}.gps-pin{position:relative;background:0 0!important;border:none!important}.gps-pin__dot{color:#fff;background:#ff6900;border:3px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;margin:6px;font-size:9px;font-weight:800;line-height:1;display:flex;box-shadow:0 6px 14px #ff690066}.gps-pin--idle .gps-pin__dot{box-shadow:none;background:#c4a090}.gps-pin--idle .gps-pin__pulse{display:none}.gps-pin__pulse{border:2px solid #ff69008c;border-radius:50%;animation:1.8s ease-out infinite gps-pin-pulse;position:absolute;inset:0}@keyframes gps-pin-pulse{0%{opacity:.8;transform:scale(.7)}to{opacity:0;transform:scale(1.4)}}@media (prefers-reduced-motion:reduce){.gps-pin__pulse{animation:none}}.gps-coord-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.gps-place-list{flex-direction:column;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.gps-place-list__item{border:1px solid var(--border);background:var(--panel-2);border-radius:10px;align-items:stretch;gap:4px;display:flex;overflow:hidden}.gps-place-list__item--active{background:var(--accent-soft);border-color:#ff690066}.gps-place-list__pick{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;grid-template-rows:auto auto;grid-template-columns:20px 1fr;gap:4px 8px;padding:8px;display:grid}.gps-place-list__index{box-sizing:border-box;aspect-ratio:1;color:#fff;background:#ff6900;border-radius:50%;grid-row:1/3;align-self:center;place-items:center;width:20px;min-width:20px;max-width:20px;height:20px;min-height:20px;max-height:20px;padding:0;font-size:11px;font-weight:800;line-height:1;display:grid}.gps-place-list__item:not(.gps-place-list__item--active) .gps-place-list__index{background:#c4a090}.gps-place-list__pair{align-items:center;gap:6px;min-width:0;display:flex}.gps-place-list__arrow{color:#ff6900;flex:none;font-size:12px;font-weight:800;line-height:1}.gps-place-list__thumb{aspect-ratio:1;object-fit:cover;object-position:center;color:#b7bcc6;background:#eceef3;border-radius:8px;place-items:center;width:40px;height:40px;font-size:14px;font-weight:800;display:grid}.gps-place-list__thumb--empty{border:1px dashed #d0d4dc}.gps-place-list__thumb--pin{font-size:18px;line-height:1}.gps-place-list__text{flex-direction:column;min-width:0;display:flex}.gps-place-list__name{white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:700;overflow:hidden}.gps-place-list__meta{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.gps-place-list__meta--ok{color:var(--ok);font-weight:700}.gps-place-list__remove{border:0;border-left:1px solid var(--border);width:32px;color:var(--text-dim);cursor:pointer;background:0 0;flex:none;font-size:16px}.gps-place-list__remove:hover{color:var(--danger,#e5484d);background:#e5484d14}.gps-place-list__actions{margin-bottom:8px}.gps-editing-chip{background:var(--accent-soft);color:var(--text);border:1px solid #ff690038;border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 12px;padding:8px 10px;font-size:12px;display:flex}.gps-editing-chip strong{font-weight:800}.gps-editing-chip__no{color:#fff;background:#ff6900;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;font-size:11px;font-weight:800;display:grid}.gps-editing-chip__state{color:var(--text-dim);margin-left:auto;font-size:11px;font-weight:700}.gps-editing-chip__state--ok{color:var(--ok)}.gps-pair{flex-direction:column;gap:0;margin-bottom:12px;display:flex}.gps-pair__kicker{letter-spacing:.04em;color:#ff6900;margin:0 0 6px;font-size:11px;font-weight:800;display:block}.gps-pair__tile{border:1px solid var(--border-strong);background:var(--panel);width:100%;color:inherit;text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;transition:border-color .15s,background .15s;display:flex}button.gps-pair__tile:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.gps-pair__tile:disabled,.gps-pair__tile--static{cursor:default}.gps-pair__tile--static:hover{border-color:var(--border-strong);background:var(--panel)}.gps-pair__tile--idle{opacity:.78}.gps-pair__tile:disabled{opacity:.65;cursor:not-allowed}.gps-pair__preview{background:var(--panel-2);width:52px;height:52px;color:var(--text-dim);border:1px dashed #d0d4dc;border-radius:10px;flex:none;place-items:center;display:grid;overflow:hidden}.gps-pair__preview--on{border-style:solid;border-color:var(--border)}.gps-pair__preview img,.gps-pair__preview video{object-fit:cover;width:100%;height:100%;display:block}.gps-pair__copy{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.gps-pair__copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:700;overflow:hidden}.gps-pair__copy span{color:var(--text-dim);font-size:11px;line-height:1.4}.gps-pair__bridge{color:#ff6900;align-items:center;gap:8px;margin:4px 0;padding:0 4px 0 26px;font-size:11px;font-weight:700;display:flex}.gps-pair__bridge-line{border-top:1px dashed #ff690073;flex:1;height:0}.gps-settings-context{background:var(--accent-soft);color:var(--text-dim);align-items:center;gap:8px;margin:0;padding:10px 14px;font-size:12px;display:flex}.gps-settings-context__no{color:#fff;background:#ff6900;border-radius:50%;flex:none;place-items:center;width:18px;height:18px;font-size:10px;font-weight:800;display:grid}.gps-settings-context strong{color:var(--text);font-weight:800}.gps-place-add--armed{background:var(--accent-soft);color:var(--accent);border-color:#ff690073}.gps-radius-presets{flex-wrap:wrap;gap:6px;display:flex}.gps-chip{border:1px solid var(--border);background:var(--panel-2);color:var(--text-dim);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:700}.gps-chip--active{background:var(--accent-soft);color:var(--accent);border-color:#ff690059}.gps-place-summary strong{color:var(--text)}.phone__gps-guide{color:#fff;text-align:left;background:linear-gradient(#14284661 0%,#14284614 28%,#0000 42%),linear-gradient(#6bb7ff 0%,#9ed0ff 28%,#c8e4b0 52%,#8fbf6a 100%);flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:4px;padding:14px 12px 18px;display:flex;position:absolute;inset:0;overflow:hidden}.phone__gps-guide:before{content:"";transform-origin:50% 0;pointer-events:none;background:linear-gradient(90deg,#ffffff14 1px,#0000 1px) 0 0/18px 18px,linear-gradient(#ffffff14 1px,#0000 1px) 0 0/18px 18px,linear-gradient(#0000 0%,#2f6f362e 100%);height:90%;position:absolute;top:18%;left:-20%;right:-20%;transform:perspective(180px)rotateX(58deg)}.phone__gps-guide:after{content:"";clip-path:polygon(50% 0,100% 100%,0 100%);filter:drop-shadow(0 4px 6px #0f172a59);z-index:1;background:#2563eb;width:18px;height:28px;margin-left:-9px;position:absolute;bottom:34%;left:50%}.phone__gps-kicker{z-index:1;letter-spacing:.12em;text-transform:uppercase;color:#ffe1c2;text-shadow:0 1px 6px #0f172a59;font-size:8px;font-weight:800;position:relative}.phone__gps-place{z-index:1;text-shadow:0 1px 6px #0f172a59;max-width:72%;font-size:13px;font-weight:800;line-height:1.3;position:relative}.phone__gps-guide .phone__scan-hint{z-index:2;color:#fffffff2;text-shadow:0 1px 2px #00000040;background:#ffffff2e;border:1px solid #ffffff59;border-radius:20px;max-width:86%;padding:7px 12px;font-size:9px;font-weight:700;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}.app .mobile-preview-phase__btn{padding:4px 6px;font-size:10px}.leaflet-container{z-index:0;background:#d7dde8;height:100%;font-family:inherit}.gps-map__canvas-wrap .leaflet-pane,.gps-map__canvas-wrap .leaflet-top,.gps-map__canvas-wrap .leaflet-bottom{z-index:1}
