:root {
  --bg:#071014;
  --panel:#101a1f;
  --panel-2:#152229;
  --panel-3:#1b2b32;
  --line:#293a42;
  --line-strong:#3a515b;
  --text:#e7f0f2;
  --muted:#82969e;
  --accent:#b7ef55;
  --accent-2:#6fd3c7;
  --warning:#ffca62;
  --danger:#ff736c;
  --water:#4fa9d8;
  --road:#d1d7d8;
  --commercial:#9c6fce;
  --residential:#d9765f;
  --industrial:#b78b53;
  --park:#5f9d64;
  --shadow:0 18px 48px rgba(0,0,0,.34);
  font-family:Inter, Pretendard, "Noto Sans KR", system-ui, sans-serif;
}

* { box-sizing:border-box; }
html, body { width:100%; height:100%; margin:0; overflow:hidden; background:var(--bg); color:var(--text); }
button, input, select, textarea { font:inherit; }
button { color:inherit; }
.hidden { display:none !important; }

.accessGate {
  width:100%; height:100%; display:grid; place-items:center;
  background:
    radial-gradient(circle at 20% 20%, rgba(111,211,199,.13), transparent 30%),
    radial-gradient(circle at 80% 70%, rgba(183,239,85,.1), transparent 28%),
    #071014;
}
.gateCard { width:min(460px,calc(100% - 36px)); padding:42px; border:1px solid var(--line); border-radius:28px; background:rgba(16,26,31,.94); box-shadow:var(--shadow); text-align:center; }
.gateMark { width:72px; height:72px; margin:0 auto 20px; display:grid; place-items:center; border:1px solid rgba(183,239,85,.5); border-radius:22px; background:rgba(183,239,85,.08); color:var(--accent); font-size:18px; font-weight:900; letter-spacing:.1em; }
.gateCard h1 { margin:0 0 12px; font-size:30px; }
.gateCard p { margin:0 0 28px; color:var(--muted); line-height:1.65; }

.button, button {
  min-height:38px; padding:0 13px; border:1px solid var(--line); border-radius:9px;
  background:var(--panel-2); cursor:pointer; transition:border-color .16s, background .16s, color .16s, transform .12s;
}
button:hover:not(:disabled), .button:hover { border-color:var(--line-strong); background:var(--panel-3); }
button:active:not(:disabled) { transform:translateY(1px); }
button:disabled { opacity:.42; cursor:not-allowed; }
.button { display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
.secondary { color:var(--muted); }
.accent { border-color:rgba(183,239,85,.45); background:rgba(183,239,85,.12); color:var(--accent); }
.danger { color:#ff9a94; }

.editorApp { width:100%; height:100%; display:grid; grid-template-rows:68px 42px minmax(0,1fr) 152px; background:var(--bg); }
.topbar { min-width:0; display:flex; align-items:center; gap:18px; padding:0 16px; border-bottom:1px solid var(--line); background:#0b1419; }
.brandBlock { display:flex; align-items:center; gap:11px; min-width:256px; }
.homeButton { width:38px; height:38px; display:grid; place-items:center; border:1px solid var(--line); border-radius:10px; color:var(--text); text-decoration:none; font-size:20px; }
.eyebrow, .panelKicker { color:var(--muted); font-size:9px; font-weight:900; letter-spacing:.16em; }
.brandLine { display:flex; align-items:center; gap:9px; margin-top:3px; }
.brandLine strong { font-size:18px; letter-spacing:-.02em; }
.badge { display:inline-flex; align-items:center; min-height:21px; padding:0 7px; border:1px solid rgba(183,239,85,.34); border-radius:99px; background:rgba(183,239,85,.09); color:var(--accent); font-size:9px; font-weight:900; letter-spacing:.09em; }
.badge.quiet { border-color:var(--line); background:var(--panel-2); color:var(--muted); }
.mapIdentity { min-width:240px; max-width:440px; flex:1; display:flex; align-items:center; gap:9px; }
.mapIdentity label { color:var(--muted); font-size:11px; font-weight:800; white-space:nowrap; }
.mapIdentity input { width:min(280px,100%); height:38px; padding:0 12px; border:1px solid transparent; border-radius:9px; background:#071014; color:var(--text); font-size:14px; font-weight:800; }
.mapIdentity input:focus { outline:none; border-color:var(--accent-2); }
.statusPill { color:var(--warning); font-size:11px; white-space:nowrap; }
.topActions { display:flex; align-items:center; gap:7px; margin-left:auto; }
.topActions button { min-height:36px; font-size:12px; font-weight:800; }
.actionDivider { width:1px; height:24px; margin:0 3px; background:var(--line); }

.viewbar { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:0 16px; border-bottom:1px solid var(--line); background:#0d181d; }
.viewTabs { height:100%; display:flex; }
.viewTab { position:relative; min-height:100%; padding:0 16px; border:0; border-radius:0; background:transparent; color:var(--muted); font-size:11px; font-weight:850; }
.viewTab.active { color:var(--text); }
.viewTab.active::after { content:""; position:absolute; left:12px; right:12px; bottom:-1px; height:2px; background:var(--accent); }
.viewTab small { margin-left:4px; color:#60747b; }
.viewTab:disabled { opacity:.4; }
.viewMetrics { display:flex; gap:14px; color:var(--muted); font-size:10px; }

.workspace { min-width:0; min-height:0; display:grid; grid-template-columns:230px minmax(380px,1fr) 280px; }
.panel { min-width:0; min-height:0; overflow:auto; background:var(--panel); }
.leftPanel { border-right:1px solid var(--line); padding:15px 12px; }
.rightPanel { border-left:1px solid var(--line); padding:15px; }
.panelHeader { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:13px; }
.panelHeader h2 { margin:3px 0 0; font-size:16px; }
.toolGrid { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.toolSettings { margin-top:10px; padding:10px; border:1px solid rgba(141,172,183,.18); border-radius:10px; background:rgba(4,12,16,.35); }
.toolSettings:empty { display:none; }
.toolSettings .settingGrid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.toolSettings .settingGrid .span2 { grid-column:1 / -1; }
.toolSettings label { display:grid; gap:4px; color:#91a79f; font-size:11px; }
.toolSettings input,.toolSettings select { width:100%; min-width:0; }
.automationTitle { margin-top:16px; }
.miniBadge { padding:2px 7px; border:1px solid rgba(183,239,85,.28); border-radius:999px; color:#b7ef55; font-size:10px; }
.automationGrid { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.automationGrid button { min-height:42px; white-space:normal; line-height:1.25; }
.automationGrid button:disabled { opacity:.42; cursor:not-allowed; }
.automationHelp { margin:8px 0 0; color:#71877f; font-size:10px; line-height:1.45; }
.scenarioTitle,.publishTitle { margin-top:18px; }
.scenarioLab { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.scenarioLab label { display:grid; gap:4px; color:var(--muted); font-size:9px; font-weight:800; }
.scenarioLab label:first-child,.scenarioLab .span2 { grid-column:1 / -1; }
.scenarioBrief { margin-top:8px; min-height:58px; padding:9px; border:1px solid var(--line); border-radius:8px; background:#091417; color:#aebec0; font-size:10px; line-height:1.55; }
.tool { min-height:50px; display:flex; align-items:center; justify-content:flex-start; gap:9px; padding:0 10px; color:var(--muted); font-size:11px; font-weight:800; }
.tool span { width:24px; color:#aab9be; font-size:18px; text-align:center; }
.tool.active { border-color:rgba(183,239,85,.45); background:rgba(183,239,85,.1); color:var(--accent); }
.tool.active span { color:var(--accent); }
.sectionTitleRow { display:flex; align-items:center; justify-content:space-between; margin:20px 2px 8px; }
.sectionTitleRow h3 { margin:0; font-size:12px; }
.iconButton { width:30px; min-height:28px; padding:0; color:var(--muted); }
.layerTree { display:grid; gap:3px; }
.layerRow { display:grid; grid-template-columns:28px 1fr auto; align-items:center; min-height:35px; border-radius:7px; color:var(--muted); font-size:11px; }
.layerRow.active { background:var(--panel-2); color:var(--text); }
.layerRow:hover { background:rgba(255,255,255,.03); }
.layerVisibility { min-height:28px; padding:0; border:0; background:transparent; color:inherit; }
.layerName { cursor:pointer; font-weight:750; }
.layerCount { padding-right:8px; color:#60747b; font-variant-numeric:tabular-nums; }
.shortcutCard { margin-top:18px; padding:12px; border:1px solid var(--line); border-radius:11px; background:#0c161b; }
.shortcutCard strong { font-size:11px; }
.shortcutCard dl { margin:10px 0 0; display:grid; gap:6px; }
.shortcutCard dl div { display:flex; justify-content:space-between; gap:12px; font-size:9px; }
.shortcutCard dt { color:var(--muted); }
.shortcutCard dd { margin:0; color:#b2c0c5; }

.mapViewport { position:relative; min-width:0; min-height:0; overflow:hidden; background:#081014; }
.previewControls { position:absolute; top:14px; right:14px; z-index:6; display:flex; align-items:center; gap:8px; padding:8px 10px; border:1px solid #48606a; border-radius:10px; background:#071216e8; box-shadow:0 8px 24px #0008; color:#dce8e4; font-size:10px; }
.previewControls label { display:flex; align-items:center; gap:5px; }
.previewControls select { min-width:70px; height:28px; padding:0 6px; }
.previewControls .checkLabel { white-space:nowrap; }
.previewControls input[type="checkbox"] { width:auto; }
#mapCanvas { width:100%; height:100%; display:block; outline:none; cursor:default; touch-action:none; }
#mapCanvas[data-tool="pan"] { cursor:grab; }
#mapCanvas[data-tool="pan"].dragging { cursor:grabbing; }
#mapCanvas[data-tool="road"], #mapCanvas[data-tool="river"], #mapCanvas[data-tool="lake"], #mapCanvas[data-tool="material"], #mapCanvas[data-tool="zone"], #mapCanvas[data-tool="spawn"], #mapCanvas[data-tool="building"], #mapCanvas[data-tool="bridge"], #mapCanvas[data-tool="op"], #mapCanvas[data-tool="landmark"], #mapCanvas[data-tool^="terrain-"] { cursor:crosshair; }
.canvasHud { position:absolute; left:14px; z-index:3; display:flex; align-items:center; gap:10px; padding:7px 10px; border:1px solid rgba(58,81,91,.72); border-radius:8px; background:rgba(7,16,20,.82); backdrop-filter:blur(8px); color:#c0cdd1; font-size:10px; pointer-events:none; }
.canvasHudTop { top:13px; }
.canvasHudBottom { bottom:13px; }
.canvasHudBottom span + span::before { content:"·"; margin-right:10px; color:#52666d; }
.mapCompass { position:absolute; right:18px; top:16px; z-index:3; width:42px; height:54px; display:grid; justify-items:center; color:var(--accent); font-size:10px; font-weight:950; pointer-events:none; }
.mapCompass i { width:1px; height:34px; margin-top:3px; background:linear-gradient(var(--accent) 0 45%, #667b82 45%); box-shadow:0 0 0 1px rgba(0,0,0,.2); }
.mapCompass i::before { content:""; display:block; width:0; height:0; margin-left:-4px; border-left:4px solid transparent; border-right:4px solid transparent; border-bottom:8px solid var(--accent); }
.zoomControls { position:absolute; right:14px; bottom:13px; z-index:4; display:flex; gap:4px; }
.zoomControls button { min-width:36px; min-height:34px; padding:0 8px; background:rgba(7,16,20,.86); }
.draftBadge { position:absolute; left:50%; top:16px; z-index:5; transform:translateX(-50%); padding:8px 13px; border:1px solid rgba(255,202,98,.45); border-radius:99px; background:rgba(36,29,15,.92); color:var(--warning); font-size:10px; font-weight:850; pointer-events:none; }

.inspectorForm { display:grid; gap:12px; }
.fieldGroup { padding:12px; border:1px solid var(--line); border-radius:10px; background:#0d171c; }
.fieldGroupTitle { margin:0 0 11px; color:#b9c7cb; font-size:10px; font-weight:900; letter-spacing:.09em; text-transform:uppercase; }
.fieldGrid { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.fieldGrid.one { grid-template-columns:1fr; }
.field { display:grid; gap:5px; min-width:0; }
.field.span2 { grid-column:1 / -1; }
.field label { color:var(--muted); font-size:9px; font-weight:750; }
.field input, .field select, .field textarea { width:100%; min-width:0; min-height:34px; padding:7px 9px; border:1px solid var(--line); border-radius:7px; background:#071014; color:var(--text); font-size:11px; }
.field textarea { min-height:64px; resize:vertical; }
.field input:focus, .field select:focus, .field textarea:focus { outline:none; border-color:var(--accent-2); }
.field input:disabled { color:#61747b; }
.texturePreview { position:relative; min-height:76px; overflow:hidden; border:1px solid var(--line-strong); border-radius:8px; background-repeat:repeat; image-rendering:auto; box-shadow:inset 0 0 0 1px rgba(255,255,255,.04); }
.texturePreview::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent 45%,rgba(3,10,13,.72)); pointer-events:none; }
.texturePreview span { position:absolute; z-index:1; left:8px; right:8px; bottom:6px; overflow:hidden; color:#edf4ef; font-size:9px; font-weight:850; text-overflow:ellipsis; white-space:nowrap; text-shadow:0 1px 2px #000; }
.texturePreview.compact { min-height:70px; }
.toolTexturePreview { min-height:58px; }
.texturePreviewPair { grid-column:1 / -1; display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.texturePreviewPair > div { display:grid; gap:5px; }
.texturePreviewPair label { color:var(--muted); font-size:9px; font-weight:750; }
.selectionActions { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:13px; }
.selectionActions button { font-size:10px; }
.qualityCard { margin-top:14px; padding:13px; border:1px solid var(--line); border-radius:11px; background:linear-gradient(135deg, rgba(111,211,199,.07), rgba(183,239,85,.03)); }
.qualityTop { display:flex; align-items:center; justify-content:space-between; font-size:10px; }
.qualityTop span { color:var(--muted); }
.qualityTop strong { color:var(--accent); font-size:16px; }
.qualityBar { height:5px; margin:9px 0; overflow:hidden; border-radius:99px; background:#071014; }
.qualityBar i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--accent-2),var(--accent)); }
.qualityCard p { margin:0; color:var(--muted); font-size:9px; line-height:1.5; }

.bottomPanel { min-height:0; border-top:1px solid var(--line); background:#0c161b; }
.bottomTabs { height:37px; display:flex; align-items:flex-end; padding:0 12px; border-bottom:1px solid var(--line); }
.bottomTab { min-height:36px; padding:0 13px; border:0; border-radius:0; background:transparent; color:var(--muted); font-size:10px; font-weight:850; }
.bottomTab.active { border-bottom:2px solid var(--accent); color:var(--text); }
.bottomTab span { display:inline-grid; place-items:center; min-width:18px; height:18px; margin-left:5px; border-radius:99px; background:var(--panel-3); }
.bottomContent { height:114px; overflow:auto; padding:8px 14px; }
.emptyState { height:100%; display:flex; align-items:center; color:var(--muted); font-size:10px; }
.issueList, .objectTable, .historyList { display:grid; gap:4px; }
.issueRow, .objectRow, .historyRow { min-height:29px; display:grid; align-items:center; gap:10px; padding:4px 8px; border-radius:6px; background:rgba(255,255,255,.025); font-size:10px; }
.issueRow { grid-template-columns:58px 1fr auto; }
.issueSeverity { font-weight:900; }
.issueSeverity.ERROR { color:var(--danger); }
.issueSeverity.WARNING { color:var(--warning); }
.issueSeverity.INFO { color:var(--accent-2); }
.issueObject { color:var(--muted); }
.objectRow { grid-template-columns:100px 1fr 100px; cursor:pointer; }
.objectRow:hover { background:var(--panel-2); }
.historyRow { grid-template-columns:72px 1fr auto; }
.historyRow time, .historyRow small { color:var(--muted); }

.mapLibraryModal { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:24px; background:rgba(2,7,10,.78); backdrop-filter:blur(8px); }
.mapLibraryCard { width:min(1080px,100%); max-height:min(820px,calc(100vh - 48px)); display:grid; grid-template-rows:auto auto minmax(0,1fr) auto; overflow:hidden; border:1px solid var(--line-strong); border-radius:20px; background:#0d181d; box-shadow:0 30px 90px rgba(0,0,0,.62); }
.mapLibraryHeader { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; padding:22px 24px 18px; border-bottom:1px solid var(--line); }
.mapLibraryHeader h2 { margin:4px 0 5px; font-size:22px; }
.mapLibraryHeader p { margin:0; color:var(--muted); font-size:11px; }
.mapLibraryHeaderActions { display:flex; gap:8px; }
.mapLibraryNotice { min-height:36px; padding:10px 24px; border-bottom:1px solid var(--line); background:rgba(111,211,199,.045); color:var(--muted); font-size:10px; }
.mapLibraryNotice.error { color:var(--danger); background:rgba(255,115,108,.06); }
.mapLibraryBody { min-height:0; overflow:auto; display:grid; grid-template-columns:1fr 1fr; gap:18px; padding:18px 24px 24px; }
.mapLibrarySection { min-width:0; }
.mapLibrarySectionTitle { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.mapLibrarySectionTitle h3 { margin:0; font-size:13px; }
.mapDocumentList { display:grid; gap:9px; }
.mapDocumentCard { display:grid; gap:10px; padding:13px; border:1px solid var(--line); border-radius:12px; background:var(--panel); }
.mapDocumentCard.current { border-color:rgba(183,239,85,.48); box-shadow:inset 0 0 0 1px rgba(183,239,85,.08); }
.mapDocumentTop { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.mapDocumentName { min-width:0; }
.mapDocumentName strong { display:block; overflow:hidden; color:var(--text); font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.mapDocumentName code { display:block; margin-top:4px; overflow:hidden; color:var(--muted); font:9px/1.3 ui-monospace,SFMono-Regular,Consolas,monospace; text-overflow:ellipsis; white-space:nowrap; }
.mapDocumentBadges { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:4px; }
.documentBadge { display:inline-flex; align-items:center; min-height:20px; padding:0 6px; border:1px solid var(--line); border-radius:99px; color:var(--muted); font-size:8px; font-weight:900; }
.documentBadge.published { border-color:rgba(183,239,85,.36); color:var(--accent); }
.documentBadge.candidate { border-color:rgba(255,202,98,.36); color:var(--warning); }
.mapDocumentMeta { display:flex; flex-wrap:wrap; gap:5px 10px; color:var(--muted); font-size:9px; }
.mapDocumentActions { display:flex; flex-wrap:wrap; gap:6px; }
.mapDocumentActions button { min-height:31px; padding:0 9px; font-size:9px; font-weight:800; }
.mapDocumentActions .deleteAllMapBtn { margin-left:auto; color:#ff9a94; }
.mapLibraryEmpty { min-height:110px; display:grid; place-items:center; padding:18px; border:1px dashed var(--line); border-radius:12px; color:var(--muted); font-size:10px; text-align:center; }
.mapLibraryFooter { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 24px; border-top:1px solid var(--line); color:var(--muted); font-size:10px; }
.geodataImportCard { width:min(980px,100%); }
.geodataImportBody { min-height:0; overflow:auto; display:grid; grid-template-columns:minmax(300px,.85fr) minmax(360px,1.15fr); gap:20px; padding:20px 24px 24px; }
.geodataImportForm { display:grid; grid-template-columns:1fr 1fr; align-content:start; gap:12px; }
.geodataImportForm > label { display:grid; gap:6px; color:var(--muted); font-size:10px; font-weight:800; }
.geodataImportForm > label:nth-child(3), .geodataImportForm fieldset, .geodataProgressPanel { grid-column:1 / -1; }
.geodataImportForm input, .geodataImportForm select { width:100%; min-height:40px; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:#071014; color:var(--text); }
.geodataImportForm input:focus, .geodataImportForm select:focus { outline:none; border-color:var(--accent-2); }
.geodataImportForm fieldset { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:0; padding:12px; border:1px solid var(--line); border-radius:10px; }
.geodataImportForm legend { padding:0 6px; color:var(--muted); font-size:9px; font-weight:900; }
.geodataCheck { display:flex; align-items:center; gap:6px; color:#b9c7cb; font-size:10px; }
.geodataCheck input { width:auto; min-height:0; }
.geodataProgressPanel { display:grid; gap:10px; padding:13px; border:1px solid rgba(183,239,85,.24); border-radius:11px; background:linear-gradient(145deg,rgba(183,239,85,.055),rgba(111,211,199,.035)); }
.geodataProgressPanel.hidden { display:none; }
.geodataProgressHeader { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.geodataProgressHeader > div { display:grid; gap:3px; }
.geodataProgressHeader span { color:var(--muted); font-size:8px; font-weight:900; letter-spacing:.08em; }
.geodataProgressHeader strong { color:var(--text); font-size:11px; }
.geodataProgressHeader b { color:var(--accent); font-size:22px; font-variant-numeric:tabular-nums; }
.geodataProgressTrack { height:10px; overflow:hidden; border:1px solid rgba(183,239,85,.2); border-radius:99px; background:#071014; }
.geodataProgressTrack i { display:block; width:0; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--accent-2),var(--accent)); box-shadow:0 0 12px rgba(183,239,85,.3); transition:width .28s ease; }
.geodataProgressPanel > p { min-height:28px; margin:0; color:#b9c7cb; font-size:9px; line-height:1.5; }
.geodataProgressStages { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; }
.geodataProgressStage { display:flex; align-items:center; justify-content:space-between; gap:6px; min-width:0; padding:7px 8px; border:1px solid var(--line); border-radius:7px; background:rgba(7,16,20,.55); color:var(--muted); font-size:8px; }
.geodataProgressStage span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.geodataProgressStage b { flex:0 0 auto; font-size:8px; }
.geodataProgressStage.running { border-color:rgba(111,211,199,.42); color:var(--accent-2); }
.geodataProgressStage.complete { border-color:rgba(183,239,85,.3); color:var(--accent); }
.geodataProgressStage.warning { border-color:rgba(255,202,98,.32); color:var(--warning); }
.geodataProgressStage.failed { border-color:rgba(255,99,92,.35); color:#ff9a94; }
.geodataProgressStage.skipped { opacity:.65; }
.geodataPreviewPanel { min-width:0; }
.geodataPreviewEmpty { min-height:270px; display:grid; place-items:center; padding:20px; border:1px dashed var(--line); border-radius:12px; color:var(--muted); font-size:10px; text-align:center; }
.geodataPreviewSummary { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.geodataMetricCard { min-height:74px; display:grid; align-content:center; gap:5px; padding:11px; border:1px solid var(--line); border-radius:10px; background:var(--panel); }
.geodataMetricCard span { color:var(--muted); font-size:9px; }
.geodataMetricCard strong { color:var(--text); font-size:16px; }
.geodataWarnings { display:grid; gap:5px; margin-top:10px; padding:10px 12px; border:1px solid rgba(255,202,98,.2); border-radius:9px; background:rgba(255,202,98,.045); color:var(--warning); font-size:9px; line-height:1.45; }
.geodataAttribution { margin:10px 0 0; color:var(--muted); font-size:9px; line-height:1.5; }
.geodataImportFooter > div { display:flex; gap:8px; }
.geodataImportFooter button { font-weight:800; }

@media (max-width:900px) {
  .mapLibraryBody { grid-template-columns:1fr; }
  .mapLibraryCard { max-height:calc(100vh - 24px); }
  .geodataImportBody { grid-template-columns:1fr; }
}

@media (max-width:1100px) {
  .workspace { grid-template-columns:200px minmax(340px,1fr) 250px; }
  .brandBlock { min-width:210px; }
  .brandLine strong { font-size:15px; }
  .topActions button { padding:0 9px; }
}

@media (max-width:880px) {
  .editorApp { grid-template-rows:68px 42px minmax(0,1fr) 136px; }
  .workspace { grid-template-columns:180px minmax(330px,1fr); }
  .rightPanel { position:absolute; z-index:20; right:0; top:110px; bottom:136px; width:280px; box-shadow:var(--shadow); transform:translateX(calc(100% - 4px)); transition:transform .2s; }
  .rightPanel:focus-within, .rightPanel:hover { transform:none; }
  .mapIdentity label, .viewMetrics, .topActions #newMapBtn { display:none; }
}
