:root{font-family:Inter,Arial,Helvetica,sans-serif;background:#f4f7fb;color:#1f2937}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%}body{background:#f4f7fb}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:340px 1fr;height:100%}.sidebar{background:#fff;border-right:1px solid #d9e2ec;display:flex;flex-direction:column;overflow:hidden;box-shadow:inset -1px 0 #0f172a08}.sidebar-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px;min-width:0}.sidebar-footer{flex-shrink:0;border-top:1px solid #e2e8f0;padding:0}.sidebar h1{margin:0 0 4px;font-size:20px}.sidebar-subtitle{margin:0 0 16px;color:#6b7280;font-size:13px}.sidebar-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:2px solid #e8eef6;margin-bottom:4px}.sidebar-wordmark{background:none;border:none;padding:0;margin:0;font-family:inherit;font-size:15px;font-weight:800;color:#10243c;letter-spacing:-.02em;cursor:pointer;display:flex;align-items:center;gap:7px}.sidebar-wordmark:hover{color:#2563eb}.sidebar-home-link{background:none;border:none;padding:0;font-size:12px;color:#6b7280;cursor:pointer;font-family:inherit}.sidebar-home-link:hover{color:#2563eb}.sample-data-link{background:none;border:none;padding:0;color:#2563eb;font-size:13px;cursor:pointer;text-align:left;margin-top:12px;font-family:inherit;display:block}.sample-data-link:hover{text-decoration:underline}.drag-ghost{position:fixed;pointer-events:none;background:#2563eb26;border:2px dashed #2563eb;border-radius:8px;z-index:9999;transform:translate(-50%,-50%)}.drop-zone-cluster{position:absolute;z-index:9000;display:flex;flex-direction:column;gap:4px;pointer-events:none}.drop-zone-cluster--tl{top:12px;left:12px}.drop-zone-cluster--tr{top:12px;right:12px}.drop-zone-cluster--bl{bottom:12px;left:12px}.drop-zone-cluster--br{bottom:12px;right:12px}.dzs-row{display:flex;gap:4px}.dzs{pointer-events:auto;border:2px dashed #93c5fd;border-radius:6px;background:#dbeafe99;color:#1d4ed8;font-size:11px;font-weight:600;font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;height:34px;white-space:nowrap;transition:background .1s,border-color .1s;-webkit-user-select:none;user-select:none;cursor:default;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.dzs-first,.dzs-beside{width:80px}.dzs-last{width:164px}.dzs--hover{background:#2563eb38;border-color:#2563eb;border-style:solid;color:#1e3a8a}.onboarding-card{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:12px 14px;margin-bottom:12px}.onboarding-title{font-size:13px;font-weight:600;color:#1d4ed8;margin-bottom:8px}.onboarding-steps{margin:0;padding-left:18px;display:grid;gap:5px}.onboarding-steps li{font-size:12px;color:#374151;line-height:1.4}.secondary-btn.compact{width:auto;padding:8px 10px}.control-section{border:1px solid #dbe4ee;background:#fbfdff;border-radius:12px;padding:12px;margin-bottom:12px;box-shadow:0 4px 16px #0f172a0a;min-width:0;overflow:hidden}.control-section h2{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#64748b;font-weight:700}.section-toggle-btn{cursor:pointer;display:flex;justify-content:space-between;align-items:center;margin:0;-webkit-user-select:none;user-select:none}.section-toggle-btn:hover{color:#334155}.section-chevron{font-size:14px;color:#94a3b8;transform:rotate(0);transition:transform .18s;display:inline-block;margin-bottom:1px}.section-chevron.open{transform:rotate(90deg)}.sub-details{border-top:1px solid #e8eef6;margin-top:6px;padding-top:4px}.sub-details summary{font-size:11px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;padding:5px 0;list-style:none;display:flex;align-items:center;gap:5px}.sub-details summary::-webkit-details-marker{display:none}.sub-details summary:before{content:"›";font-size:13px;transition:transform .15s;display:inline-block}.sub-details[open] summary:before{transform:rotate(90deg)}.sub-details summary:hover{color:#475569}.sub-details-body{padding-top:8px;display:grid;gap:8px}.sub-badge{background:#dbeafe;color:#1d4ed8;font-size:10px;font-weight:700;border-radius:10px;padding:1px 6px;margin-left:4px;text-transform:none;letter-spacing:0}.control-grid{display:grid;gap:10px}.control-row{display:grid;gap:6px}.control-row.inline-2{grid-template-columns:1fr 1fr;gap:8px;align-items:start}.control-row label,.control-label{color:#667085;font-size:12px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.control-row input,.control-row select,.control-row textarea,.btn,.secondary-btn{width:100%;border-radius:10px;border:1px solid #d4deea;background:#fff;color:#122033;padding:10px 12px}.control-row input[type=range]{padding:0}.control-row textarea{min-height:72px;resize:vertical}.btn,.secondary-btn{cursor:pointer;transition:transform .05s ease,filter .1s ease,background-color .1s ease}.btn:disabled,.secondary-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn:active:not(:disabled),.secondary-btn:active:not(:disabled){transform:translateY(1px);filter:brightness(.92)}@keyframes btn-pulse{0%,to{opacity:1}50%{opacity:.6}}.btn.loading,.btn.initializing{animation:btn-pulse 1.2s ease-in-out infinite;cursor:default;opacity:1}.export-error-msg{color:#b91c1c;font-size:12px;margin-top:4px}.btn.primary{background:#1d4ed8;border-color:#1d4ed8;color:#fff}.secondary-btn{background:#fff;color:#16324f;border-color:#cdd8e6}.secondary-btn.active-toggle{background:#e7f0ff;border-color:#7aa2e3;color:#14365f}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.button-row.three{grid-template-columns:repeat(3,1fr)}.small-note{font-size:12px;color:#6b7280;line-height:1.5}.range-value{display:flex;align-items:end;justify-content:flex-end;padding-bottom:10px}.toggle-grid,.toggle-stack{display:grid;gap:8px}.toggle-row{display:flex;align-items:center;gap:8px;color:#213547;font-size:13px;cursor:pointer}.toggle-row input{width:auto;accent-color:#4d86d5}.element-visibility-row{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px;padding:8px 0 4px}.feature-chip,.selected-note{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:999px;background:#e7f0ff;color:#1e4c86;font-size:12px;font-weight:700}.layer-list{display:grid;gap:8px}.layer-item{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border-radius:10px;border:1px solid #dbe4ee;background:#fff;color:#16324f;text-align:left;min-width:0;box-sizing:border-box}.layer-item.active{border-color:#7aa2e3;background:#eef5ff}.layer-item-main{flex:1;min-width:0;overflow:hidden}.layer-name{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-role{color:#667085;font-size:11px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-source{color:#74839a;font-size:11px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-item-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.layer-visibility{font-size:11px;text-transform:uppercase;font-weight:700;padding:4px 8px;border-radius:999px;border:none;cursor:pointer;white-space:nowrap}.layer-visibility.on{background:#22c55e29;color:#127734}.layer-visibility.off{background:#f871712e;color:#a13939}.layer-remove{font-size:12px;font-weight:700;padding:4px 7px;border-radius:999px;border:none;cursor:pointer;background:transparent;color:#888;line-height:1}.layer-remove:hover{background:#ef444426;color:#c0392b}.callout-list{display:grid;gap:8px}.callout-card{padding:10px;border-radius:10px;border:1px solid #dbe4ee;background:#fff}.callout-card.active{border-color:#60a5facc;box-shadow:inset 0 0 0 1px #60a5fa40}.callout-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px;font-weight:700}.callout-card-actions{display:flex;gap:6px}.callout-card-actions .secondary-btn{width:auto;padding:6px 8px}.nudge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:6px}.nudge-grid .secondary-btn{padding:6px 0}.map-stage{position:relative;width:100%;height:100%;background:#eef3f8}.leaflet-map-canvas{width:100%;height:100%}.template-zone{position:absolute;z-index:400}.template-card{width:100%;height:100%;border-radius:var(--template-radius, 12px);border:1px solid var(--panel-border, rgba(15, 23, 42, .12));background:var(--panel-bg, rgba(255,255,255,.95));box-shadow:var(--panel-shadow, 0 8px 24px rgba(15, 23, 42, .1));overflow:hidden}.title-card{position:relative;background:var(--title-bg, rgba(10,31,66,.96));color:var(--title-fg, #fff);border-color:var(--title-border, rgba(255,255,255,.15));border-radius:var(--title-radius, var(--template-radius, 12px));padding:16px 18px}.title-card:before{content:"";position:absolute;pointer-events:none;background:var(--title-accent, transparent);inset:0 0 auto 0;height:5px;width:auto;border-radius:var(--title-radius, 10px) var(--title-radius, 10px) 0 0}.map-stage[data-title-accent-style=left] .title-card:before{inset:0 auto 0 0;height:auto;width:6px;border-radius:var(--title-radius, 10px) 0 0 var(--title-radius, 10px)}.map-stage[data-title-accent-style=left] .title-card{padding-left:24px}.panel--transparent:before{display:none!important}.title-card h2{margin:0;font-size:28px;color:var(--title-fg, #fff);font-family:var(--font-title)}.title-card p{margin:8px 0 0;font-size:14px;color:var(--subtitle-fg, rgba(255,255,255,.86));font-family:var(--font-title)}.title-inline-input{display:block;width:100%;margin:0;font-size:28px;font-family:var(--font-title);color:var(--title-fg, #fff);background:#ffffff1f;border:none;border-bottom:2px solid rgba(255,255,255,.5);outline:none;padding:0 2px}.subtitle-inline-input{font-size:14px;color:var(--subtitle-fg, rgba(255,255,255,.86));margin-top:8px}.legend-card{padding:14px 16px;font-family:var(--font-legend);overflow-y:auto;max-height:100%}.legend-item-clickable{cursor:pointer;border-radius:3px;padding:2px 4px;margin:-2px -4px;transition:background .12s}.legend-item-clickable:hover{background:#2563eb14}.legend-card h3{margin:0 0 12px;font-size:15px;color:var(--panel-title, #132033)}.legend-header{display:flex;align-items:center;justify-content:space-between}.legend-list{display:grid;gap:10px}.legend-group{display:grid;gap:8px}.legend-group-title{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-text, #6c7b90);font-weight:700}.legend-item{display:flex;align-items:center;gap:12px;color:var(--body-text, #1d2b3d);font-size:12px}.legend-swatch{width:18px;height:12px;border-radius:2px;border:1px solid #3b82f6;flex:0 0 auto}.legend-point{width:12px;height:12px;border-radius:999px;border:1px solid #111;background:#fff;flex:0 0 auto}.legend-line-svg{display:block;flex:0 0 auto;overflow:visible}.north-arrow-card{display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--north-fill, var(--panel-bg, rgba(255,255,255,.95)))}.north-arrow-label{font-weight:700;font-size:22px;color:var(--north-fg, #122033);margin-top:10px}.north-arrow-icon{color:var(--north-fg, #122033);font-size:44px;line-height:1;margin-top:2px}.north-arrow-stem{width:6px;height:30px;background:var(--north-fg, #122033);border-radius:999px;margin-top:-6px;margin-bottom:16px}.scale-card{padding:16px;background:var(--scale-bg, var(--panel-bg, rgba(255,255,255,.95)))}.scale-bar-track{display:flex;height:12px;border:1px solid var(--scale-stroke, #122033)}.scale-bar-fill{background:var(--scale-stroke, #122033);width:50%}.scale-bar-fill.light{background:#fff}.scale-bar-label{color:var(--body-text, #1d2b3d);margin-top:10px;font-size:12px}.logo-card{display:flex;align-items:center;justify-content:center;padding:10px;background:var(--logo-bg, var(--panel-bg, rgba(255,255,255,.95)));border-color:var(--logo-border, var(--panel-border, rgba(18,30,48,.18)))}.logo-card img{max-width:100%;max-height:100%;object-fit:contain}.footer-card{display:flex;align-items:center;padding:0 14px;color:var(--footer-fg, #334155);font-size:12px;background:var(--footer-bg, rgba(255,255,255,.93));font-family:var(--font-footer)}.inset-card{padding:10px;background:var(--inset-bg, rgba(255,255,255,.96));border-color:var(--inset-border, rgba(18,30,48,.18))}.inset-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.inset-header{font-size:12px;font-weight:700;color:var(--inset-title, #132033);text-transform:uppercase}.inset-svg{width:100%;height:calc(100% - 34px);display:block}.inset-mode-label{font-size:11px;color:var(--inset-muted, #526172);margin-top:6px}.inset-image-wrap{height:calc(100% - 28px);border-radius:max(3px,calc(var(--template-radius, 12px) - 4px));overflow:hidden;border:1px solid var(--inset-border, #d5dfea)}.logo-upload-card{display:flex;align-items:center;gap:10px;border:1.5px dashed #d1dae5;border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#f8fafc;transition:border-color .15s}.logo-upload-card:hover{border-color:#93c5fd}.logo-upload-card.has-logo{border-style:solid;border-color:#dbe4ee;background:#fff}.logo-upload-btn{background:#fff;border:1px solid #d1dae5;border-radius:7px;color:#1e293b;font-size:12.5px;font-weight:600;padding:6px 12px;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .1s,border-color .1s}.logo-upload-btn:hover{background:#eff3f9;border-color:#93c5fd}.logo-upload-icon{font-size:13px;margin-right:2px}.logo-card-hint{font-size:11.5px;color:#94a3b8}.logo-thumb{width:48px;height:48px;object-fit:contain;border-radius:6px;border:1px solid #e8eef6;background:#fff;flex-shrink:0;padding:3px}.logo-card-info{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0}.logo-card-status{font-size:12px;font-weight:600;color:#16a34a}.logo-card-actions{display:flex;gap:5px}.logo-card-actions .btn.compact,.logo-card-actions .secondary-btn.compact{padding:4px 9px;font-size:11.5px}.inset-detected-badge{font-size:12px;color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:5px;padding:4px 8px;margin-top:6px;text-align:center}.region-highlights-section{padding:6px 0 2px}.control-section-subheader{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#64748b;padding:4px 0 6px}.region-highlight-row{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:13px}.region-highlight-name{flex:1;color:#1e293b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.region-highlight-row input[type=color]{width:28px;height:26px;padding:1px;border:1px solid #d1dae5;border-radius:5px;cursor:pointer;flex-shrink:0}.region-highlight-row input[type=range]{width:60px;flex-shrink:0}.region-highlight-row .range-label{font-size:11px;color:#64748b;width:28px;flex-shrink:0}.region-highlight-row .remove-btn{background:none;border:none;color:#94a3b8;font-size:18px;line-height:1;cursor:pointer;padding:0 2px;flex-shrink:0}.region-highlight-row .remove-btn:hover{color:#ef4444}.region-highlight-add-row select{width:100%;font-size:13px;padding:5px 8px;border:1px solid #d1dae5;border-radius:6px;background:#f8fafc;color:#1e293b;cursor:pointer}.inset-image{width:100%;height:100%;object-fit:cover;display:block}.inset-empty-state{display:flex;align-items:center;justify-content:center;height:calc(100% - 28px);border-radius:max(3px,calc(var(--template-radius, 12px) - 4px));border:1px dashed var(--inset-border, #d5dfea);color:var(--inset-muted, #526172);font-size:12px;background:#ffffff73}.callouts-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:520;pointer-events:none}.callout-leader-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}.map-callout{position:absolute;padding:6px 8px;background:var(--callout-bg, rgba(255,255,255,.96));color:var(--callout-fg, #0f172a);font-size:12px;font-weight:700;border:1px solid var(--callout-border, #0f172a);border-radius:max(3px,calc(var(--template-radius, 12px) - 4px));box-shadow:0 6px 18px #0f172a1f;pointer-events:auto;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;font-family:var(--font-callout);overflow:hidden}.map-callout.plain{background:transparent;border:none;box-shadow:none;text-shadow:0 0 4px rgba(255,255,255,.95);color:var(--callout-fg, #0f172a)}.map-callout.leader{min-width:132px}.map-callout.boxed{min-width:170px}.map-callout.badge{border:none;box-shadow:0 2px 8px #0f172a1f;border-radius:8px;overflow:hidden}.map-callout.selected{outline:2px solid rgba(37,99,235,.9);outline-offset:1px}.badge-callout{display:flex;height:32px;border-radius:inherit;overflow:hidden}.badge-chip{padding:0 10px;display:flex;align-items:center;font-size:12px;font-weight:700;color:#fff;white-space:nowrap;flex-shrink:0}.badge-label{padding:0 10px;display:flex;align-items:center;font-size:12px;font-weight:600;flex:1;white-space:nowrap;overflow:hidden}.fill-pattern-picker{display:flex;gap:6px}.pattern-btn{background:#f8fafc;border:1.5px solid #dbe4ee;border-radius:6px;cursor:pointer;padding:3px;display:flex;align-items:center;justify-content:center;transition:border-color .12s,background .12s}.pattern-btn:hover{border-color:#93c5fd;background:#eff6ff}.pattern-btn.active{border-color:#3b82f6;background:#eff6ff;box-shadow:0 0 0 2px #3b82f62e}.marker-shape-picker{display:flex;flex-wrap:wrap;gap:5px}.shape-btn{background:#f8fafc;border:1.5px solid #dbe4ee;border-radius:6px;cursor:pointer;padding:3px 7px;font-size:11px;font-weight:600;color:#475569;transition:border-color .12s,background .12s}.shape-btn:hover{border-color:#93c5fd;background:#eff6ff}.shape-btn.active{border-color:#3b82f6;background:#eff6ff;color:#1d4ed8;box-shadow:0 0 0 2px #3b82f62e}.annotation-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:510;pointer-events:none}.annotation-leader-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;pointer-events:none}.free-marker,.ellipse-annotation{position:absolute;pointer-events:auto}.free-marker{transform:translate(-50%,-50%);display:flex;align-items:center;gap:8px;cursor:move;touch-action:none}.free-marker.selected .free-marker-symbol{box-shadow:0 0 0 2px #2563eb59}.free-marker-symbol{display:inline-flex;align-items:center;justify-content:center;border:2px solid currentColor;color:#c2410c;background:currentColor}.free-marker-symbol.circle{border-radius:999px}.free-marker-symbol.square{border-radius:2px}.free-marker-symbol.triangle{width:0!important;height:0!important;border-left:11px solid transparent;border-right:11px solid transparent;border-bottom:20px solid currentColor;border-top:0;background:transparent}.free-marker-symbol.icon{line-height:1;border:none;background:transparent;display:flex;align-items:center;justify-content:center}.free-marker-label{padding:4px 8px;border-radius:999px;background:#fffffff5;border:1px solid rgba(15,23,42,.12);box-shadow:0 6px 16px #0f172a14;color:#0f172a;font-size:12px;font-weight:700;pointer-events:auto}.ellipse-annotation{border-width:2px;border-style:dashed;border-radius:999px;cursor:move;background:transparent;touch-action:none}.ellipse-annotation.selected{box-shadow:0 0 0 2px #2563eb33}.ellipse-annotation-label{position:absolute;top:-24px;left:50%;transform:translate(-50%);white-space:nowrap;padding:3px 8px;border-radius:999px;background:#fffffff2;border:1px solid rgba(15,23,42,.12);color:#0f172a;font-size:12px;font-weight:700}.ellipse-annotation-label.with-leader{transform:none;pointer-events:auto;box-shadow:0 6px 16px #0f172a1f}.upload-header-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.upload-header-row h2{margin:0}.hover-help{position:relative;display:inline-flex;align-items:center}.hover-help-trigger{width:22px;height:22px;border-radius:999px;border:1px solid #cdd8e6;background:#f8fbff;color:#48627d;font-size:12px;font-weight:700;padding:0;cursor:help}.hover-help-tooltip{position:absolute;top:calc(100% + 8px);right:0;width:290px;padding:10px 12px;border-radius:12px;border:1px solid #dbe4ee;background:#fff;color:#4f5f73;font-size:12px;line-height:1.5;box-shadow:0 12px 28px #0f172a1a;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .18s ease,transform .18s ease;z-index:30}.hover-help:hover .hover-help-tooltip,.hover-help:focus-within .hover-help-tooltip{opacity:1;transform:translateY(0)}.hover-help-tooltip code{background:#f3f6fb;border-radius:6px;padding:1px 5px}.upload-dropzone{display:grid;gap:6px;place-items:center;text-align:center;border:1.5px dashed #9bb8e3;border-radius:14px;background:#f9fbff;padding:22px 16px;cursor:pointer}.upload-dropzone.dragging{border-color:#5b8cd6;background:#eef5ff}.upload-dropzone strong{font-size:15px;color:#16324f}.upload-dropzone span,.upload-dropzone small{color:#66758b}.upload-status{margin-top:10px;padding:10px 12px;border-radius:12px;font-size:13px;border:1px solid transparent}.upload-status.success{background:#edf9f0;color:#1f6a35;border-color:#bfe4c8}.upload-status.error{background:#fff1f1;color:#9f2f2f;border-color:#f0c4c4}.upload-status.info{background:#eef5ff;color:#25538b;border-color:#cddff9}.upload-summary{margin-top:10px}.upload-summary-title{font-size:12px;text-transform:uppercase;color:#6b7280;font-weight:700;margin-bottom:8px}.upload-summary-list{display:grid;gap:8px}.upload-summary-item{padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #dbe4ee;display:grid;color:#16324f}.upload-summary-item small{color:#74839a}.inset-status-card{border:1px solid #dbe4ee;border-radius:12px;padding:10px;background:#fff}.inset-preview{width:100%;height:110px;overflow:hidden;border-radius:10px;margin-bottom:8px;border:1px solid #dbe4ee}.inset-preview img{width:100%;height:100%;object-fit:cover}.landing-shell{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at top left,rgba(59,130,246,.1),transparent 28%),radial-gradient(circle at bottom right,rgba(14,165,233,.08),transparent 24%),linear-gradient(180deg,#f7fbff,#eef4fb)}.landing-nav{display:flex;align-items:center;justify-content:space-between;padding:14px 28px;border-bottom:1px solid rgba(219,228,238,.7);background:#ffffffd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:100}.landing-wordmark{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:800;color:#10243c;letter-spacing:-.02em}.landing-hero{flex:1;display:flex;align-items:center;justify-content:center;padding:28px 28px 16px}.landing-card.modern{width:min(1180px,100%);border:1px solid #dbe4ee;border-radius:28px;background:#fffffff0;padding:34px;box-shadow:0 24px 60px #0f172a14;display:grid;grid-template-columns:1.05fr .95fr;gap:28px}.landing-badge{display:inline-flex;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:#e8f1ff;color:#1d4ed8}.landing-copy h1{margin:16px 0 12px;max-width:680px;font-size:48px;line-height:1.05;color:#10243c}.landing-copy>p{margin:0;max-width:700px;color:#516173;font-size:17px;line-height:1.6}.landing-actions{margin-top:22px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.btn.large{width:auto;padding:14px 18px}.landing-nav .btn{width:auto;padding:9px 18px;background:#fff;color:#1d4ed8;border-color:#bfcfe8}.landing-nav .btn:hover{background:#eff6ff}.btn.sample-btn{width:auto;padding:12px 18px;background:#fff;border-color:#bfcfe8;color:#2563eb;font-weight:600}.btn.sample-btn:hover{background:#eff6ff}.landing-pain-grid,.landing-mini-grid{display:grid;gap:14px}.landing-pain-grid{margin-top:24px;grid-template-columns:repeat(3,1fr)}.landing-pain-card{border:1px solid #dbe4ee;background:#fbfdff;border-radius:16px;padding:14px;display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:start}.landing-pain-card strong{grid-column:2;color:#11263f;font-size:13px;line-height:1.3}.landing-pain-card span{grid-column:2;color:#607086;font-size:12px;line-height:1.45}.landing-visuals{display:grid;gap:14px}.landing-window{border:1px solid #dbe4ee;border-radius:22px;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 12px 28px #0f172a0f;overflow:hidden}.landing-window-bar{display:flex;gap:6px;padding:12px 14px;border-bottom:1px solid #edf1f6}.landing-window-bar span{width:10px;height:10px;border-radius:999px;background:#d6dfeb}.landing-map-mock{display:grid;grid-template-columns:86px 1fr;min-height:360px}.mock-sidebar{background:linear-gradient(180deg,#f8fbff,#eef5ff);border-right:1px solid #e3ebf5}.mock-map-area{position:relative;background:linear-gradient(180deg,#eef2f6,#e5ebf1);overflow:hidden}.mock-claim{position:absolute;border:2px solid rgba(217,119,6,.8);background:#facc1573}.claim-a{left:16%;top:18%;width:34%;height:28%}.claim-b{left:46%;top:48%;width:24%;height:20%;background:#f8717159;border-color:#dc2626b3}.mock-callout{position:absolute;padding:6px 10px;border-radius:999px;background:#fffffff5;border:1px solid rgba(15,23,42,.12);box-shadow:0 10px 18px #0f172a14;font-size:12px;font-weight:700;color:#122033}.mock-callout-a{left:44%;top:20%}.mock-callout-b{left:58%;top:58%}.mock-ellipse{position:absolute;left:36%;top:50%;width:108px;height:64px;border:2px dashed #dc2626;border-radius:999px;transform:rotate(-18deg)}.mock-inset{position:absolute;top:14px;right:14px;width:112px;height:88px;border-radius:14px;border:1px solid #dbe4ee;background:linear-gradient(180deg,#fff,#f5f9ff)}.landing-mini-grid{grid-template-columns:repeat(3,1fr)}.landing-mini-card{border:1px solid #dbe4ee;background:#fff;border-radius:16px;padding:14px;min-height:96px}.mini-title{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#475569;font-weight:700;margin-bottom:10px}.mini-line{height:10px;border-radius:999px;background:#e5edf7;margin-bottom:8px}.mini-line.short{width:60%}.mini-color-row span{width:24px;height:24px;border-radius:999px;background:#d97706}.mini-color-row span:nth-child(2){background:#2563eb}.mini-color-row span:nth-child(3){background:#dc2626}.mini-button{width:72%;height:34px;border-radius:10px;background:linear-gradient(90deg,#2563eb,#3b82f6)}.landing-window-bar{align-items:center}.landing-window-url{margin-left:10px;font-size:10px;color:#94a3b8;letter-spacing:.01em}.mock-sidebar{display:flex;flex-direction:column;gap:0;padding:12px 10px}.mock-sb-logo{height:18px;width:60%;border-radius:6px;background:#dbe7f7;margin-bottom:12px}.mock-sb-line{height:8px;border-radius:999px;background:#e5edf7;margin-bottom:7px}.mock-sb-line.short{width:55%}.mock-sb-line.med{width:75%}.mock-sb-divider{height:1px;background:#e3ebf5;margin:8px 0 10px}.mock-north-arrow{position:absolute;top:14px;left:14px;width:26px;height:26px;border-radius:999px;background:#fffffff5;border:1px solid #dbe4ee;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#10243c}.mock-drillhole{position:absolute;width:7px;height:7px;border-radius:999px;background:#dc2626;border:1.5px solid rgba(255,255,255,.9);box-shadow:0 1px 3px #0003}.dh-a{left:22%;top:26%}.dh-b{left:30%;top:36%}.dh-c{left:26%;top:46%}.dh-d{left:38%;top:30%}.mock-title-block{position:absolute;bottom:14px;left:14px;width:120px;background:#fffffff7;border:1px solid #dbe4ee;border-radius:10px;padding:10px}.mock-tb-line{height:9px;border-radius:999px;margin-bottom:6px}.mock-tb-line.title{background:#10243c;width:85%}.mock-tb-line.subtitle{background:#c8d5e4;width:60%;margin-bottom:0}.mock-legend{position:absolute;bottom:14px;right:14px;width:96px;background:#fffffff7;border:1px solid #dbe4ee;border-radius:10px;padding:10px;display:grid;gap:7px}.mock-legend-row{display:flex;align-items:center;gap:6px}.mock-legend-swatch{width:14px;height:10px;border-radius:3px;flex-shrink:0}.mock-legend-swatch.claims{background:#facc158c;border:1.5px solid rgba(217,119,6,.65)}.mock-legend-swatch.drillholes{width:8px;height:8px;border-radius:999px;background:#dc2626;border:none}.mock-legend-label{height:7px;border-radius:999px;background:#d6e0ec;flex:1}.mock-legend-label.short{width:55%;flex:none}.landing-pain-icon{width:28px;height:28px;border-radius:8px;background:#eff6ff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.landing-recent{padding:0 28px 28px;max-width:1236px;margin:0 auto;width:100%;box-sizing:border-box}.landing-recent-heading{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#8096aa;margin-bottom:12px}.landing-recent-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.landing-recent-card{background:#ffffffeb;border:1px solid #dbe4ee;border-radius:14px;padding:14px 16px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:border-color .15s,box-shadow .15s;font-family:inherit}.landing-recent-card:hover{border-color:#93c5fd;box-shadow:0 4px 12px #2563eb1a}.landing-recent-name{font-size:14px;font-weight:700;color:#10243c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.landing-recent-date{font-size:12px;color:#8096aa}.landing-recent-continue{margin-top:6px;font-size:12px;color:#2563eb;font-weight:600}.landing-footer{border-top:1px solid rgba(219,228,238,.7);padding:16px 28px;text-align:center;font-size:12px;color:#8096aa}.landing-footer-links{margin-bottom:8px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px}.landing-footer-link{color:#64748b;text-decoration:none;font-size:12px}.landing-footer-link:hover{color:#2563eb;text-decoration:underline}.landing-footer-sep{color:#cbd5e1}.landing-nav-actions{display:flex;align-items:center;gap:10px}.landing-nav-signin{background:none;border:1px solid #bfcfe8;border-radius:8px;padding:9px 16px;font-size:14px;font-weight:600;color:#2563eb;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s}.landing-nav-signin:hover{background:#eff6ff;border-color:#93c5fd}.landing-nav-user{display:flex;align-items:center;gap:8px;font-size:13px;color:#516173;font-weight:500}.landing-nav-avatar{width:28px;height:28px;border-radius:999px;background:#2563eb;color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mock-badge-callout{position:absolute;left:48%;top:62%;display:flex;align-items:center;border-radius:999px;overflow:hidden;box-shadow:0 6px 14px #0f172a1f;font-size:11px;font-weight:700}.mock-badge-chip{background:#d97706;color:#fff;padding:4px 8px;white-space:nowrap}.mock-badge-text{background:#fffffff7;color:#122033;padding:4px 9px;white-space:nowrap;border:1px solid rgba(15,23,42,.1);border-left:none;border-radius:0 999px 999px 0}.landing-steps{max-width:1236px;margin:0 auto;width:100%;padding:8px 28px 32px;box-sizing:border-box}.landing-steps-heading{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#8096aa;margin-bottom:16px}.landing-steps-row{display:flex;align-items:flex-start;gap:0}.landing-step{flex:1;background:#ffffffeb;border:1px solid #dbe4ee;border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:8px}.landing-step-connector{flex:0 0 28px;height:2px;background:linear-gradient(90deg,#bfcfe8,#93c5fd);align-self:center;margin:0 -1px;position:relative;z-index:0}.landing-step-num{width:36px;height:36px;border-radius:10px;background:#eff6ff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.landing-step-title{font-size:14px;font-weight:800;color:#10243c}.landing-step-desc{font-size:13px;color:#516173;line-height:1.5}.landing-features{max-width:1236px;margin:0 auto;width:100%;padding:0 28px 40px;box-sizing:border-box}.landing-features-heading{font-size:20px;font-weight:800;color:#10243c;margin-bottom:18px;letter-spacing:-.01em}.landing-features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.landing-feature-card{background:#ffffffeb;border:1px solid #dbe4ee;border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:10px;transition:border-color .15s,box-shadow .15s}.landing-feature-card:hover{border-color:#93c5fd;box-shadow:0 4px 14px #2563eb14}.landing-feature-icon{width:36px;height:36px;border-radius:10px;background:#eff6ff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.landing-feature-title{font-size:14px;font-weight:800;color:#10243c;line-height:1.3}.landing-feature-desc{font-size:13px;color:#516173;line-height:1.5}@media (max-width: 900px){.landing-features-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 820px){.landing-steps-row{flex-direction:column;gap:12px}.landing-step-connector{width:2px;height:18px;flex:0 0 18px;align-self:center;background:linear-gradient(180deg,#bfcfe8,#93c5fd);margin:-1px 0}.landing-features-grid{grid-template-columns:1fr}.landing-steps,.landing-features{padding-left:16px;padding-right:16px}}.map-stage[data-title-accent-style=top] .title-card,.map-stage[data-theme=investor_clean] .title-card{padding-top:20px}.map-stage[data-theme=investor_clean] .legend-group-title{letter-spacing:.06em}.map-stage[data-theme=technical_sharp] .template-card{box-shadow:none}.map-stage[data-theme=technical_sharp] .legend-swatch,.map-stage[data-theme=technical_sharp] .legend-point{border-radius:0}@media (max-width: 1200px){.app-shell{grid-template-columns:320px 1fr}}@media (max-width: 1100px){.landing-card.modern{grid-template-columns:1fr}.landing-copy h1{font-size:38px}}@media (max-width: 820px){.app-shell{grid-template-columns:1fr}.sidebar{max-height:46vh}.landing-mini-grid,.landing-pain-grid,.landing-recent-grid{grid-template-columns:1fr}.landing-nav{padding:12px 16px}.landing-hero{padding:16px 16px 12px}.landing-recent{padding:0 16px 24px}}.editor-main{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%}.editor-toolbar{position:relative;z-index:20;flex:0 0 auto}.map-viewport{position:relative;flex:1;min-height:0}.map-stage{position:relative;width:100%;height:100%}.map-stage[data-annotation-tool=marker],.map-stage[data-annotation-tool=ellipse]{cursor:crosshair}.map-stage[data-annotation-tool=marker] .leaflet-interactive,.map-stage[data-annotation-tool=ellipse] .leaflet-interactive{pointer-events:none!important}.leaflet-map-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.map-topbar{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 14px;height:48px;background:#fff;border-bottom:1px solid rgba(148,163,184,.28);box-shadow:0 1px 3px #0f172a1a}.map-topbar-left{display:flex;align-items:center;gap:8px;min-width:0;flex-shrink:0}.map-topbar-title{font-size:13px;font-weight:800;color:#10243c;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.map-topbar-sub{font-size:11px;color:#64748b;margin-top:2px;line-height:1.25}.map-topbar-right{display:flex;align-items:center;gap:6px;margin-left:auto}.topbar-btn{background:#f8fafc;border:1px solid #d1dae5;border-radius:7px;color:#1e293b;font-size:12.5px;font-weight:600;padding:6px 13px;cursor:pointer;white-space:nowrap;transition:background .1s,border-color .1s}.topbar-btn:hover{background:#eff3f9;border-color:#b0bfd0}.topbar-btn:disabled{opacity:.4;cursor:not-allowed}.topbar-btn.primary{background:#1d4ed8;color:#fff;border-color:#1d4ed8}.topbar-btn.primary:hover{background:#1e40af;border-color:#1e40af}.topbar-btn-group{display:flex}.topbar-btn-group .topbar-btn{border-radius:0;margin-left:-1px}.topbar-btn-group .topbar-btn:first-child{border-radius:7px 0 0 7px;margin-left:0}.topbar-btn-group .topbar-btn:last-child{border-radius:0 7px 7px 0}.topbar-btn-group .topbar-btn:only-child{border-radius:7px}.topbar-divider{width:1px;height:20px;background:#d1dae5;margin:0 2px;flex-shrink:0}.map-zoom-inline{display:grid;gap:3px;min-width:180px;padding:0 6px}.map-zoom-inline label{font-size:11px;color:#314155;font-weight:700}.map-zoom-inline input{width:100%}.map-zoom-btns{display:flex;gap:4px;align-items:center}.map-zoom-btns .secondary-btn{width:32px;min-width:0;padding:6px 0;font-size:16px;font-weight:700;text-align:center;line-height:1}.accent-color-row{display:flex;align-items:center;gap:6px}.accent-color-input{width:40px;height:36px;border-radius:8px;border:1px solid #d4deea;cursor:pointer;padding:2px;background:transparent}.color-overrides-grid{display:flex;flex-wrap:wrap;gap:8px 12px;padding:8px 0 2px}.color-override-cell{display:flex;flex-direction:column;gap:4px}.color-override-cell label{font-size:10px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.color-swatch-wrap{display:flex;align-items:center;gap:3px}.swatch-input{width:34px;height:34px;border-radius:7px;border:1.5px solid #d4deea;cursor:pointer;padding:2px;background:transparent;flex-shrink:0}.swatch-reset{background:none;border:none;color:#94a3b8;font-size:10px;cursor:pointer;padding:1px 3px;border-radius:4px;line-height:1}.swatch-reset:hover{color:#ef4444;background:#fef2f2}.swatch-reset-all{font-size:11px;color:#94a3b8;background:none;border:1px solid #e2e8f0;border-radius:5px;padding:4px 8px;cursor:pointer;white-space:nowrap;height:34px}.swatch-reset-all:hover{color:#ef4444;border-color:#fecaca;background:#fef2f2}.autosave-badge{font-size:11px;font-weight:700;border-radius:999px;padding:6px 10px;border:1px solid #cdd8e6;background:#f8fbff;color:#2b4d74}.autosave-badge.clean{background:#edf9f0;border-color:#bfe4c8;color:#1f6a35}.autosave-badge.dirty{background:#fff8eb;border-color:#f0d8a9;color:#8a5b08}.autosave-badge.flash{background:#d1fae5;border-color:#6ee7b7;color:#065f46;animation:save-flash-in .18s ease}@keyframes save-flash-in{0%{transform:scale(.94);opacity:.7}to{transform:scale(1);opacity:1}}.recent-projects-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1800;display:grid;place-items:center;background:#02061766}.recent-projects-card{width:min(560px,92vw);max-height:78vh;overflow:auto;background:#fff;border-radius:14px;border:1px solid #dbe4ee;box-shadow:0 24px 50px #0f172a40;padding:14px;display:grid;gap:10px}.recent-projects-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.recent-projects-header h3{margin:0;color:#16324f}.recent-projects-list{display:grid;gap:8px}.recent-project-row{display:flex;align-items:center;gap:8px;border:1px solid #dbe4ee;border-radius:10px;background:#f8fbff;padding:10px 12px;transition:border-color .15s}.recent-project-row.current{border-color:#3b82f6;background:#eff6ff}.recent-project-main{flex:1;display:flex;flex-direction:column;gap:2px;cursor:pointer;min-width:0}.recent-project-main:hover .recent-project-name{color:#2563eb}.recent-project-name{color:#14365f;font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-project-date{color:#6b7f96;font-size:12px}.recent-project-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.recent-project-confirm-label{font-size:12px;color:#dc2626;font-weight:600}.proj-action-btn{padding:4px 8px;border-radius:6px;border:1px solid #dbe4ee;background:#fff;color:#475569;font-size:13px;cursor:pointer;transition:background .12s,color .12s}.proj-action-btn:hover{background:#f1f5f9;color:#0f172a}.proj-action-btn.danger{color:#dc2626;border-color:#fca5a5}.proj-action-btn.danger:hover{background:#fef2f2}.project-name-input{font:inherit;font-size:14px;font-weight:600;color:#14365f;border:none;border-bottom:2px solid #3b82f6;outline:none;background:transparent;width:100%;padding:0}.floating-north-arrow{position:absolute;right:14px;bottom:18px;width:64px;height:112px;z-index:540}.floating-north-arrow .north-arrow-card{border-radius:10px}.drillhole-inline-editor{position:absolute;z-index:2000;width:280px;padding:12px;border-radius:12px;background:#fffffffa;border:1px solid rgba(148,163,184,.42);box-shadow:0 14px 32px #0f172a33;display:grid;gap:8px}.drillhole-inline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}.drillhole-inline-title{font-size:12px;font-weight:800;color:#1f2f42}.drillhole-inline-close{background:none;border:none;font-size:18px;line-height:1;color:#94a3b8;cursor:pointer;padding:0 2px}.drillhole-inline-close:hover{color:#1e293b}.drillhole-inline-editor .control-row{display:flex;flex-direction:column;gap:3px}.drillhole-inline-editor .control-row label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#64748b}.drillhole-inline-editor input[type=text],.drillhole-inline-editor input:not([type]),.drillhole-inline-editor input[type=number],.drillhole-inline-editor select{border:1px solid #d4deea;border-radius:7px;padding:6px 9px;font-size:12px;width:100%;box-sizing:border-box;background:#f8fafc}.drillhole-inline-editor select{padding-right:6px}.drillhole-inline-editor input[type=color]{width:36px;height:28px;border-radius:6px;border:1px solid #d4deea;padding:2px;cursor:pointer}.drillhole-inline-row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.drillhole-inline-row2:has(.control-row:nth-child(3)){grid-template-columns:1fr 1fr 1fr}.map-callout-title{font-weight:800;line-height:1.3;white-space:pre-wrap;word-break:break-word}.map-callout-subtext{margin-top:4px;font-size:.92em;line-height:1.35;white-space:pre-wrap;word-break:break-word}.map-callout-title-input{font:inherit;font-weight:800;border:none;background:transparent;outline:1px solid #3b82f6;border-radius:2px;padding:0 2px;width:100%;box-sizing:border-box}.map-callout-subtext-input{font:inherit;font-size:.92em;border:none;background:transparent;outline:1px solid #3b82f6;border-radius:2px;padding:0 2px;width:100%;margin-top:4px;box-sizing:border-box}.inset-image,.inset-preview img{object-fit:contain;background:#fffffff2}.landing-actions-sticky{margin-top:18px;margin-bottom:22px}.landing-card.modern{align-items:start}.landing-copy h1{font-size:clamp(40px,5vw,54px)}.landing-copy>p{max-width:620px}.mini-color-row{display:flex;gap:8px}.mini-color-row span{width:22px;height:22px;border-radius:999px;background:#dbe7f7;border:1px solid #c7d7ee}.mini-button{width:100%;height:34px;border-radius:10px;background:linear-gradient(90deg,#3b82f6,#2563eb)}.btn.export-hd-trigger{background:linear-gradient(135deg,#0f2c56,#1d4ed8);border-color:#1d4ed8;color:#fff;font-weight:700}.btn.export-hd-trigger:hover:not(:disabled){background:linear-gradient(135deg,#162f5c,#2558e8)}.export-hd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:grid;place-items:center;background:#02061773;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.export-hd-card{position:relative;width:min(420px,92vw);background:#fff;border-radius:18px;border:1px solid #dbe4ee;box-shadow:0 28px 60px #0f172a38;padding:32px 28px 28px;display:grid;gap:14px}.export-hd-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:999px;border:1px solid #d4deea;background:#f8fbff;color:#64748b;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;line-height:1}.export-hd-close:hover{background:#eef4ff;color:#1e3a5f}.export-hd-icon-wrap{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#e8f0ff,#dbeafe);border:1px solid #c7d9f8;display:flex;align-items:center;justify-content:center;color:#1d4ed8}.export-hd-title{margin:0;font-size:20px;font-weight:800;color:#0f1f38;line-height:1.2}.export-hd-desc{margin:0;font-size:14px;color:#475569;line-height:1.55}.export-hd-field{display:grid;gap:6px}.export-hd-label{font-size:12px;font-weight:700;color:#667085;letter-spacing:.02em;text-transform:uppercase}.export-hd-optional{font-weight:400;text-transform:none;color:#94a3b8;letter-spacing:0}.export-hd-input{width:100%;border:1px solid #d4deea;border-radius:10px;padding:11px 13px;font-size:14px;color:#122033;background:#fff;outline:none;transition:border-color .15s}.export-hd-input:focus{border-color:#4d86d5;box-shadow:0 0 0 3px #4d86d524}.export-hd-input.has-error{border-color:#e05353}.export-hd-error{font-size:12px;color:#b91c1c}.export-hd-small{margin:0;font-size:12px;color:#94a3b8;line-height:1.45}.export-hd-actions{display:grid;gap:10px;margin-top:4px}.export-hd-btn-primary{width:100%;padding:13px;font-size:15px;font-weight:700;border-radius:12px}.export-hd-skip{background:none;border:1px solid #cbd5e1;border-radius:6px;color:#475569;font-size:13px;font-weight:500;cursor:pointer;text-align:center;padding:8px 16px;width:100%;transition:background-color .1s ease,border-color .1s ease}.export-hd-skip:hover{background:#f1f5f9;border-color:#94a3b8;color:#1e293b}.panel-delete-btn{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;background:#ef4444e0;border:none;color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;z-index:601;pointer-events:auto;padding:0}.template-zone:hover .panel-delete-btn{opacity:1}.panel-delete-btn:hover{background:#dc2626}.template-zone:hover{outline:1.5px solid rgba(37,99,235,.4);outline-offset:1px}.prh{position:absolute;z-index:600;opacity:0;transition:opacity .12s}.template-zone:hover .prh{opacity:1}.prh-corner{width:12px;height:12px;background:#2563eb;border:2px solid #fff;border-radius:3px;box-shadow:0 1px 4px #00000040}.prh-edge{width:8px;height:8px;background:#2563eb;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 4px #0003}.prh:hover{opacity:1!important;background:#1d4ed8}.resize-guide--v{position:absolute;top:0;bottom:0;width:1px;background:#f43f5e;z-index:9999;pointer-events:none}.resize-guide--h{position:absolute;left:0;right:0;height:1px;background:#f43f5e;z-index:9999;pointer-events:none}.panel-resize-handle{position:absolute;z-index:600;opacity:0;transition:opacity .15s}.template-zone:hover .panel-resize-handle{opacity:1}.panel-resize-handle--bottom{left:12px;right:12px;bottom:-5px;height:10px;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.panel-resize-handle--bottom:after{content:"";display:block;width:40px;height:4px;border-radius:2px;background:#3b82f6b3;box-shadow:0 0 0 1px #fff6}.panel-resize-handle:hover:after,.panel-resize-handle:active:after{background:#2563ebe6}.panel--transparent{background:transparent!important;border:none!important;box-shadow:none!important}.shade-presets{display:flex;gap:6px;margin:4px 0}.shade-preset-btn{flex:1;padding:4px 6px;border-radius:5px;border:1.5px solid #e2e8f0;background:#f8fafc;font-size:12px;cursor:pointer;color:#374151}.shade-preset-btn:hover{background:#e2e8f0;border-color:#94a3b8}.polygon-drawing-status{margin-top:8px;padding:10px 12px;background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:8px;font-size:12px;color:#1e40af}.export-hd-ratio-badge{display:flex;align-items:center;gap:7px;background:#eef6ff;border:1.5px solid #bfdbfe;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:500;color:#1d4ed8;margin-bottom:4px}.map-viewport--ratio-active{display:flex;align-items:center;justify-content:center;background:#0f172a;position:relative}.map-stage--ratio-constrained{flex-shrink:0;position:relative;border-radius:4px;box-shadow:0 0 0 1px #ffffff1f,0 8px 40px #0009;overflow:hidden}.ratio-frame-badge{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:900;background:#0f172ad1;color:#e2e8f0;font-size:11px;font-weight:600;letter-spacing:.04em;padding:4px 12px;border-radius:20px;pointer-events:none;white-space:nowrap;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.ratio-switcher{display:flex;flex-direction:column;gap:7px;padding-bottom:10px;border-bottom:1px solid #e8eef6;margin-bottom:4px}.ratio-switcher-label{font-size:11px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.07em}.ratio-switcher-btns{display:flex;gap:6px}.ratio-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px 7px;border:1.5px solid #dde4ed;border-radius:8px;background:#f8fafc;color:#475569;cursor:pointer;transition:border-color .12s,background .12s,color .12s;min-width:0}.ratio-btn:hover{border-color:#4d86d5;background:#eff6ff;color:#1d4ed8}.ratio-btn.active{border-color:#2563eb;background:#dbeafe;color:#1d4ed8;box-shadow:0 0 0 2px #2563eb26}.ratio-btn-label{font-size:11px;font-weight:600;line-height:1}.ratio-btn-desc{font-size:10px;color:inherit;opacity:.75;line-height:1}.ratio-switcher-hint{margin:0;font-size:11px;color:#64748b;line-height:1.45;padding:6px 8px;background:#f0f7ff;border-radius:6px;border-left:3px solid #93c5fd}@media (max-width: 1080px){.landing-card.modern{grid-template-columns:1fr}.map-topbar{max-width:none}.map-topbar-left{min-width:120px}.map-zoom-inline{min-width:140px}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:grid;place-items:center;background:#02061773;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-panel{position:relative;background:#fff;border-radius:18px;border:1px solid #dbe4ee;box-shadow:0 24px 56px #0f172a47}.modal-close-btn{position:absolute;top:12px;right:14px;background:none;border:none;font-size:22px;line-height:1;color:#94a3b8;cursor:pointer;padding:2px 6px;border-radius:6px}.modal-close-btn:hover{color:#1e293b;background:#f1f5f9}.auth-modal{width:100%;max-width:380px;padding:32px 28px 24px}.auth-modal-title{margin:0 0 20px;font-size:20px;font-weight:800;color:#0f1f38}.auth-form{display:grid;gap:14px}.auth-label{display:grid;gap:5px;font-size:12px;font-weight:700;color:#667085;letter-spacing:.02em;text-transform:uppercase}.auth-input{border:1px solid #d4deea;border-radius:10px;padding:11px 13px;font-size:14px;color:#122033;background:#fff;outline:none;transition:border-color .15s}.auth-input:focus{border-color:#4d86d5;box-shadow:0 0 0 3px #4d86d524}.auth-submit-btn{width:100%;padding:13px;font-size:15px;font-weight:700;border-radius:12px;margin-top:4px}.auth-footer-links{display:flex;gap:6px;align-items:center;justify-content:center;margin-top:16px;flex-wrap:wrap}.auth-link-sep{color:#cbd5e1;font-size:13px}.link-btn{background:none;border:none;color:#4d86d5;font-size:13px;cursor:pointer;padding:0;text-decoration:underline}.link-btn:hover{color:#2563eb}.auth-info-msg{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:10px}.auth-error-msg{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:10px}.sidebar-account-panel{padding:12px 16px 14px;display:grid;gap:8px}.sidebar-account-hint{font-size:11px;color:#64748b;line-height:1.5}.sidebar-account-signin-btn{width:100%;padding:9px 14px;background:#1d4ed8;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:background .12s;font-family:inherit}.sidebar-account-signin-btn:hover{background:#1e40af}.sidebar-account-panel.signed-in{gap:6px}.sidebar-account-email{display:flex;align-items:center;gap:8px;min-width:0}.sidebar-account-avatar{width:26px;height:26px;border-radius:50%;background:#1d4ed8;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.03em}.sidebar-account-name{font-size:12px;color:#334155;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sidebar-account-actions{display:flex;gap:6px}.sidebar-account-action-btn{flex:1;padding:6px 10px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;font-size:12px;font-weight:500;color:#334155;cursor:pointer;font-family:inherit;transition:background .1s}.sidebar-account-action-btn:hover{background:#e2e8f0}.sidebar-account-action-btn.muted{color:#64748b}.storage-warning-banner{background:#fffbeb;border-bottom:1px solid #fcd34d;color:#92400e;padding:8px 16px;font-size:13px;display:flex;align-items:center;gap:8px}.storage-warning-dismiss{margin-left:auto;background:none;border:none;cursor:pointer;color:#92400e;font-size:16px;line-height:1;padding:0 4px}.template-manager-block{margin-top:14px;border-top:1px solid #e2e8f0;padding-top:12px}.template-manager-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.template-manager-label{font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em}.template-manager-hint{margin:6px 0 0;font-size:12px;color:#94a3b8}.template-manager-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.template-manager-row{display:flex;align-items:center;gap:6px;padding:4px 0}.template-name{flex:1;font-size:13px;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.template-default-star{background:none;border:none;cursor:pointer;font-size:15px;color:#cbd5e1;padding:0;line-height:1;flex-shrink:0}.template-default-star.active,.template-default-star:hover{color:#f59e0b}.btn.compact,.secondary-btn.compact{padding:4px 10px;font-size:12px;border-radius:6px}.template-save-row{display:flex;align-items:center;gap:6px;margin-bottom:8px}.template-name-input{flex:1;font-size:12px;padding:4px 8px;border:1px solid #cbd5e1;border-radius:6px;outline:none;min-width:0}.template-name-input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.tmgr-panel{width:92vw;max-width:520px;padding:28px 24px 24px;display:flex;flex-direction:column;gap:0;max-height:85vh;overflow:hidden}.tmgr-header{margin-bottom:16px}.tmgr-title{margin:0 0 4px;font-size:18px;font-weight:800;color:#0f172a;padding-right:32px}.tmgr-subtitle{margin:0;font-size:13px;color:#64748b}.tmgr-save-section{border-bottom:1px solid #e2e8f0;padding-bottom:14px;margin-bottom:14px}.tmgr-save-row{display:flex;align-items:center;gap:6px}.tmgr-name-input{flex:1;font-size:13px;padding:6px 10px;border:1px solid #cbd5e1;border-radius:7px;outline:none;min-width:0}.tmgr-name-input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.tmgr-empty{margin:12px 0 0;font-size:13px;color:#94a3b8;text-align:center;padding:24px 0}.tmgr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;overflow-y:auto;max-height:50vh}.tmgr-row{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #e8edf3;border-radius:10px;background:#f8fafc;transition:border-color .12s}.tmgr-row:hover{border-color:#cbd5e1;background:#fff}.tmgr-star{background:none;border:none;cursor:pointer;font-size:18px;color:#cbd5e1;padding:0;line-height:1;flex-shrink:0;transition:color .12s}.tmgr-star.active,.tmgr-star:hover{color:#f59e0b}.tmgr-name-block{flex:1;min-width:0;display:flex;align-items:center;gap:6px}.tmgr-name{font-size:14px;font-weight:600;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tmgr-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#d97706;background:#fef3c7;border:1px solid #fde68a;padding:1px 5px;border-radius:4px;flex-shrink:0}.tmgr-rename-row{display:flex;align-items:center;gap:4px;flex:1;min-width:0}.tmgr-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.tmgr-icon-btn{background:none;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:14px;color:#64748b;padding:3px 7px;line-height:1;transition:all .12s}.tmgr-icon-btn:hover{background:#f1f5f9;color:#1e293b;border-color:#cbd5e1}.tmgr-icon-btn.muted{color:#94a3b8}.tmgr-icon-btn.muted:hover{color:#475569}.tmgr-icon-btn.danger:hover{background:#fee2e2;color:#dc2626;border-color:#fca5a5}.howto-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2050;display:grid;place-items:center;background:#0206178c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.howto-card{position:relative;width:95vw;height:92vh;max-width:1200px;border-radius:16px;background:#fff;border:1px solid #dbe4ee;box-shadow:0 28px 72px #0f172a3d;display:flex;overflow:hidden}.howto-close{position:absolute;top:14px;right:14px;z-index:10;width:30px;height:30px;border-radius:999px;border:1px solid #e2e8f0;background:#f8fafc;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;color:#64748b}.howto-close:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.howto-nav{width:240px;flex:0 0 240px;border-right:1px solid #e8edf3;overflow-y:auto;padding:28px 0;background:#f8fafc}.howto-nav-header{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;padding:0 20px 12px}.howto-nav-item{display:block;width:100%;text-align:left;padding:7px 20px;font-size:13px;color:#475569;background:none;border:none;border-left:2px solid transparent;cursor:pointer;transition:all .12s}.howto-nav-item:hover{background:#eef2f8;color:#1e293b}.howto-nav-item.active{color:#1d4ed8;border-left-color:#1d4ed8;background:#eff6ff;font-weight:600}.howto-content{flex:1;overflow-y:auto;padding:36px 48px 60px}.howto-content h2{font-size:22px;color:#0f172a;margin:40px 0 6px;padding-top:8px;border-bottom:2px solid #e8edf3;padding-bottom:10px}.howto-content h2:first-child{margin-top:0}.howto-content h3{font-size:15px;font-weight:700;color:#1e293b;margin:24px 0 8px}.howto-content p,.howto-content li{font-size:14px;line-height:1.7;color:#374151}.howto-content ul{padding-left:20px;margin:8px 0}.howto-content li{margin-bottom:4px}.howto-content strong{color:#0f172a}.howto-content table{width:100%;border-collapse:collapse;font-size:13px;margin:12px 0}.howto-content th{background:#f1f5f9;text-align:left;padding:8px 12px;font-weight:700;color:#374151;border:1px solid #e2e8f0}.howto-content td{padding:7px 12px;border:1px solid #e2e8f0;color:#475569;vertical-align:top}.howto-content dl{margin:8px 0}.howto-content dt{font-weight:700;color:#0f172a;font-size:14px;margin-top:12px}.howto-content dd{margin-left:20px;font-size:14px;color:#475569;line-height:1.6}.howto-img-placeholder{margin:16px 0 24px;padding:28px 20px;background:#f1f5f9;border:2px dashed #cbd5e1;border-radius:10px;text-align:center;font-size:12px;color:#94a3b8;font-style:italic;min-height:80px;display:flex;align-items:center;justify-content:center}.help-icon-btn{width:28px;height:28px;border-radius:999px;border:1px solid #dbe4ee;background:#f8fafc;color:#64748b;font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}.help-icon-btn:hover{background:#e8f0fd;border-color:#93c5fd;color:#1d4ed8}.landing-how-to-link{background:none;border:none;cursor:pointer;font-size:13px;color:#64748b;padding:0;text-decoration:underline;text-decoration-color:transparent;transition:all .12s}.landing-how-to-link:hover{color:#2563eb;text-decoration-color:#2563eb}.callout-resize-handle{position:absolute;right:-4px;top:0;width:10px;height:100%;cursor:ew-resize;z-index:10}.callout-resize-handle:after{content:"";display:block;width:3px;height:60%;margin:20% auto 0;background:#3b82f699;border-radius:2px}
