.preferences-status { padding: 3px 24px; background: #eaf0ec; color: #30493c; font: 12px/1.5 system-ui, sans-serif; }
.preferences-status button { margin: 4px 8px; }
.preferences-status details { padding: 6px; border: 1px solid #a8b8af; }
.preferences-status pre { max-height: 180px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
:root {
    color-scheme: light;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: #1d2924;
    background: #f3f5f1;
    --forest: #17573e;
    --forest-dark: #103c2c;
    --mint: #dceae2;
    --line: #dce2dc;
    --muted: #64716b;
    --surface: #ffffff;
    --danger: #a53630;
}
.terrain-attribution { position:absolute; left:0; right:0; bottom:0; z-index:4; background:rgba(255,255,255,.9); color:#263238; padding:.2rem .5rem; font-size:.7rem; max-height:4rem; overflow:auto; }
.terrain-attribution a { color:#244b78; }
.terrain-attribution button { font: inherit; color: #244b78; background: transparent; border: 0; padding: 0 .3rem; text-decoration: underline; cursor: pointer; }
.terrain-sources-dialog { width: min(880px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); border: 0; border-radius: 16px; padding: 24px; color: #202b25; background: #fff; overflow: auto; box-shadow: 0 20px 70px rgba(0,0,0,.35); }
.terrain-sources-dialog::backdrop { background: rgba(12,28,21,.56); }
.terrain-sources-dialog .icon-button { color: #202b25; background: #edf3ee; }
.terrain-source-entry + .terrain-source-entry { border-top: 1px solid var(--line); margin-top: 24px; padding-top: 16px; }
.terrain-source-entry h3 { overflow-wrap: anywhere; }
.terrain-source-entry dl { display: grid; grid-template-columns: minmax(140px, 220px) minmax(0,1fr); gap: 10px 18px; }
.terrain-source-entry dt { font-weight: 650; }
.terrain-source-entry dd { margin: 0; overflow-wrap: anywhere; }
.terrain-source-entry a { color: #244b78; text-decoration: underline; }
.terrain-source-verbatim { white-space: pre-wrap; }
@media(max-width:600px){.terrain-source-entry dl{grid-template-columns:1fr;gap:4px}.terrain-source-entry dd{margin-bottom:12px}}

* { box-sizing: border-box; }
body { margin: 0; background: #f3f5f1; }
h1:focus { outline: none; }
a { color: inherit; }
button, input, select { font: inherit; }
.app-shell { min-height: 100vh; }
.topbar { height: 66px; padding: 0 24px; display: flex; align-items: center; gap: 20px; background: #fff; border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 20; }
.brand { font-weight: 800; color: var(--forest-dark); font-size: 1.25rem; text-decoration: none; letter-spacing: -.02em; }
.topbar .brand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 10px; padding: 5px 12px; border-radius: 6px; background: #173f31; }
.brand-mark { width: 44px; height: auto; display: block; }
.brand-wordmark { width: 144px; height: auto; display: block; }
.topbar-preferences { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.language-flag { display: block; width: 26px; height: auto; max-height: 22px; object-fit: contain; }
.preferences-indicator { position: relative; display: inline-flex; }
.preferences-light { display: grid; place-items: center; width: 32px; height: 34px; padding: 6px; border: 0; border-radius: 6px; background: transparent; cursor: pointer; }
.preferences-light:hover, .preferences-light:focus-visible { background: #edf3ee; }
.preferences-light > span { width: 13px; height: 13px; border-radius: 50%; border: 1px solid #365342; background: #228544; box-shadow: 0 0 0 3px #e4eee6; }
.preferences-light.pending > span { background: #e5ae19; border-color: #806111; }
.preferences-light.error > span { background: #ce3b35; border-color: #8e211c; }
.preferences-tooltip { position: absolute; top: calc(100% + 8px); right: 0; width: min(340px, 80vw); padding: 14px; color: #20382a; background: #fff; border: 1px solid #93a99a; border-radius: 8px; box-shadow: 0 8px 28px #0003; pointer-events: none; font-size: .85rem; z-index: 60; }
.preferences-tooltip[hidden] { display: none; }
.preferences-tooltip strong, .preferences-tooltip span, .preferences-tooltip small { display: block; }
.preferences-tooltip span { margin: 8px 0; }
.preferences-dialog .preferences-status { padding: 14px; font-size: .9rem; }
.recovery-notice { max-width: 1124px; margin: 24px auto 0; border-left: 5px solid #d2a12b; }
.topbar nav { display: flex; align-items: center; gap: 8px; flex: 1 1 360px; min-width: 320px; }
.topbar nav > a, .topbar nav > .planning-nav-menu { flex-shrink: 0; }
.topbar-project-name { flex: 1 1 160px; min-width: 80px; margin: 0 0 0 8px; font-size: .95rem; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar:has(.topbar-project-name) { gap: 12px; }
.topbar:has(.topbar-project-name) .application-logo { width: clamp(120px, 12vw, 190px); }
.topbar:has(.topbar-project-name) .account > span:first-child { max-width: 110px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topbar nav a { padding: 9px 12px; color: var(--muted); text-decoration: none; border-radius: 8px; }
.topbar nav a.active { background: var(--mint); color: var(--forest-dark); font-weight: 650; }
.language-selector { display: inline-flex; align-items: center; gap: 5px; margin: 0; color: var(--muted); }
.language-selector select { width: auto; min-width: 112px; border: 1px solid #c8d1cb; border-radius: 7px; padding: 6px 24px 6px 7px; background: #fff; color: var(--forest-dark); font-size: .8rem; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.account { display: flex; align-items: center; gap: 10px; font-size: .9rem; color: var(--muted); text-decoration: none; }
.account a { color: var(--forest); font-weight: 700; text-decoration: none; }
.account .account-action { appearance: none; border: 0; padding: 0; background: transparent; color: var(--forest); font: inherit; font-weight: 700; cursor: pointer; }
.test-mode-badge { padding: 4px 8px; border-radius: 999px; background: #fff1c7; color: #765812; font-size: .72rem; font-weight: 800; }
main { min-height: calc(100vh - 66px); }
.hero { max-width: 1180px; margin: 0 auto; padding: 110px 28px; display: grid; grid-template-columns: 1fr 320px; gap: 80px; align-items: center; }
.hero h1 { max-width: 780px; font-size: clamp(2.7rem, 6vw, 5.6rem); letter-spacing: -.055em; line-height: .98; margin: 12px 0 28px; color: #15241e; }
.hero p:not(.eyebrow) { color: var(--muted); font-size: 1.12rem; line-height: 1.7; max-width: 670px; }
.eyebrow { text-transform: uppercase; font-size: .72rem; font-weight: 800; letter-spacing: .15em; color: var(--forest); margin: 0 0 6px; }
.status-card { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 24px; display: flex; gap: 14px; align-items: center; box-shadow: 0 18px 45px rgba(29, 48, 39, .07); }
.status-dot { width: 11px; height: 11px; border-radius: 100%; background: #2a9d62; box-shadow: 0 0 0 6px #e1f4e9; }
.status-card small { color: var(--muted); }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 10px 18px; border: 0; border-radius: 9px; text-decoration: none; font-weight: 700; cursor: pointer; }
.button.primary { color: #fff; background: var(--forest); box-shadow: 0 6px 14px rgba(23, 87, 62, .18); }
.button.primary:hover { background: var(--forest-dark); }
.button.secondary { color: var(--forest-dark); background: #eef3ef; border: 1px solid #cbd7cf; }
.button.secondary:hover { background: #e2ebe5; }
.button.danger { color: #fff; background: var(--danger); }
.button.danger:hover { background: #7f2723; }
.button:disabled { cursor: not-allowed; opacity: .45; box-shadow: none; }
.button.full { width: 100%; }
.workspace-page { max-width: 1420px; margin: 0 auto; padding: 34px 30px 60px; }
.page-heading { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 26px; }
.page-heading h1 { font-size: clamp(2rem, 4vw, 3.3rem); letter-spacing: -.045em; margin: 4px 0 8px; }
.page-heading p:last-child { color: var(--muted); margin: 0; max-width: 770px; }
.limit-badge { border: 1px solid #bdd2c4; color: var(--forest); background: #edf5ef; border-radius: 999px; padding: 7px 12px; font-weight: 750; font-size: .84rem; }
.import-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.panel { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 24px; box-shadow: 0 4px 18px rgba(22, 42, 33, .035); }
.panel h2 { margin: 0 0 18px; font-size: 1.2rem; }
.planning-case-data-selection { max-width: 1050px; margin: 0 auto; }
.import-workspace [hidden] { display: none !important; }
.compact-heading { max-width: 1050px; margin-left: auto; margin-right: auto; }
.input-expander { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; margin-bottom: 12px; }
.input-expander summary { cursor: pointer; padding: 13px 16px; background: #f2f6f3; color: var(--forest-dark); font-weight: 800; }
.input-expander-content { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; padding: 18px; }
.input-expander-content .file-picker + .file-picker { border: 0; margin: 0; padding: 0; }
.input-role-stack { display: grid; gap: 14px; }
.input-role-card { border: 1px solid var(--line); border-radius: 10px; padding: 18px; background: #fbfcfb; }
.input-role-card .file-picker + .file-picker { border: 0; margin: 0; padding: 0; }
.tolerance-row { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 16px 2px; }
.tolerance-row > div { display: grid; gap: 4px; }
.tolerance-row small, .layer-row small { color: var(--muted); }
.tolerance-row label { display: flex; align-items: center; gap: 7px; }
.tolerance-row input { width: 88px; padding: 8px; border: 1px solid #b8c4bc; border-radius: 7px; }
.layer-inspection { border-top: 1px solid var(--line); padding-top: 20px; margin-top: 4px; }
.planning-case-data-selection.layer-inspection { border-top: 1px solid var(--line); padding-top: 24px; margin-top: 0; }
.import-stepper { display: grid; grid-template-columns: minmax(210px, 1.35fr) repeat(2, minmax(150px, 1fr)); gap: 34px; align-items: center; max-width: 900px; margin: 0 auto 18px; }
.import-step-group { position: relative; min-width: 0; padding: 10px 14px; border: 1px solid var(--line); border-radius: 10px; background: #fbfcfb; }
.import-step-group::after { content: ""; position: absolute; left: 100%; top: 50%; width: 35px; height: 2px; background: #d9dfdb; }
.import-step-group-title { display: block; margin: 0 0 8px 39px; color: var(--forest-dark); font-size: .78rem; }
.import-step-group-items { display: grid; gap: 6px; }
.import-step { position: relative; display: flex; align-items: center; gap: 9px; color: #77817c; font-size: .82rem; }
.import-step:not(:last-child)::after { content: ""; position: absolute; z-index: 0; left: 35px; right: 8px; top: 15px; height: 2px; background: #d9dfdb; }
.import-step-group .import-step:not(:last-child)::after { left: 14px; right: auto; top: 30px; width: 2px; height: 13px; }
.import-step.top-level:not(:last-child)::after { left: 35px; right: -35px; }
.import-step span { position: relative; z-index: 1; display: grid; place-items: center; width: 30px; height: 30px; border: 2px solid #cbd3ce; border-radius: 50%; background: #f6f8f6; font-weight: 800; }
.import-step strong { position: relative; z-index: 1; padding-right: 8px; background: var(--surface, #f6f8f6); }
.import-step.active { color: var(--forest); }
.import-step.active span { border-color: var(--forest); background: var(--forest); color: white; }
.import-step.completed { color: #347257; }
.import-step.completed span { border-color: #7fb094; background: #e4f1e9; }
.import-step.completed:not(:last-child)::after { background: #87b69a; }
.import-processing { display: grid; justify-items: center; gap: 18px; max-width: 760px; margin: 6vh auto 0; padding: 48px; text-align: center; }
.import-processing h2 { margin: 3px 0 8px; }
.import-processing > div p:last-child { color: var(--muted); line-height: 1.55; }
.processing-mark { width: 48px; height: 48px; border: 4px solid #dce8e0; border-top-color: var(--forest); border-radius: 50%; animation: processing-rotation .8s linear infinite; }
.import-processing .job-progress { width: 100%; text-align: left; }
.import-error { max-width: 760px; margin: 14px auto; }
@keyframes processing-rotation { to { transform: rotate(360deg); } }
.section-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; }
.section-heading h2 { margin: 0 0 12px; }
.validation-badge { color: var(--forest); background: var(--mint); padding: 6px 9px; border-radius: 999px; font-size: .76rem; font-weight: 750; }
.layer-row { display: grid; grid-template-columns: 24px 1fr minmax(180px, 260px); gap: 12px; align-items: center; padding: 12px 8px; border-top: 1px solid #edf0ed; }
.layer-row > div { display: grid; gap: 3px; min-width: 0; }
.layer-row label { display: grid; gap: 4px; font-size: .75rem; font-weight: 700; }
.layer-row select, .selection-table select, .profile-assignment-table select { min-width: 0; padding: 7px 8px; border: 1px solid #b9c5be; border-radius: 7px; background: #fff; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }
.import-actions { border-top: 1px solid var(--line); padding-top: 20px; }
.file-picker + .file-picker { border-top: 1px solid #edf0ed; margin-top: 18px; padding-top: 18px; }
.file-picker-label { display: flex; justify-content: space-between; margin-bottom: 8px; }
.file-picker-label strong { font-size: 1.08rem; }
.file-picker-content { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(0, 1.5fr); gap: 16px; height: 104px; }
.file-picker-content .drop-zone { min-height: 0; height: 104px; box-sizing: border-box; }
.file-picker-content .file-list { margin: 0; min-height: 0; overflow-y: auto; }
.file-picker-content .file-list li { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 8px; }
.file-picker-content .file-list li span { white-space: nowrap; }
.file-remove { width: 27px; height: 27px; padding: 5px; border: 0; border-radius: 4px; background: #b3261e; color: #fff; cursor: pointer; }
.file-remove:hover { background: #871b15; }
.file-remove svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 1.8; }
.file-picker-label span { font-size: .72rem; color: var(--forest); background: var(--mint); border-radius: 999px; padding: 3px 8px; }
.drop-zone { position: relative; min-height: 118px; border: 1px dashed #aab9b0; background: #f9fbf9; border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; text-align: center; padding: 12px; transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
.drop-zone:hover, .drop-zone.drag-active { border-color: var(--forest); background: #edf7ef; box-shadow: inset 0 0 0 1px var(--forest); }
.drop-zone input { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.drop-zone:has(input:focus-visible) { outline: 3px solid rgba(39, 104, 65, .3); outline-offset: 2px; }
.drop-zone span, .drop-zone small { pointer-events: none; }
.drop-zone .drop-zone-title { font-weight: 700; }
.drop-zone small { color: var(--muted); margin-top: 3px; }
.drop-zone .drop-zone-action { color: var(--forest); font-weight: 600; }
.drop-zone .shape-bundle-hint { margin-top: 8px; font-size: .72rem; }
.file-list { list-style: none; padding: 0; margin: 9px 0 0; }
.file-list li { display: flex; justify-content: space-between; gap: 12px; padding: 5px 2px; font-size: .84rem; }
.file-list li span { overflow: hidden; text-overflow: ellipsis; }
.file-list small { white-space: nowrap; color: var(--muted); }
.notice { margin: 18px 0; background: #edf5ef; border-left: 3px solid var(--forest); border-radius: 4px 9px 9px 4px; padding: 14px; display: grid; gap: 3px; font-size: .86rem; }
.notice span { color: #506059; line-height: 1.45; }
.check-row { display: flex; align-items: flex-start; gap: 10px; font-size: .87rem; line-height: 1.45; cursor: pointer; }
.check-row input { margin-top: 3px; accent-color: var(--forest); }
.actions { display: flex; margin-top: 20px; }
.actions.right { justify-content: flex-end; }
.error-banner { margin-top: 16px; border: 1px solid #e8b3ae; background: #fff1ef; color: var(--danger); border-radius: 9px; padding: 12px 14px; }
.job-progress { margin-top: 16px; border: 1px solid #cfe0d4; background: #f5faf6; border-radius: 10px; padding: 12px 14px; }
.job-progress > div { display: flex; justify-content: space-between; font-size: .86rem; }
.job-progress progress { width: 100%; height: 8px; margin: 8px 0 4px; accent-color: var(--forest); }
.job-progress small { color: var(--muted); }
.selection-layout { display: grid; grid-template-columns: minmax(330px, 410px) 1fr; gap: 18px; min-height: calc(100vh - 190px); }
.selection-panel { display: flex; flex-direction: column; overflow: auto; }
.panel-heading { display: flex; justify-content: space-between; align-items: flex-start; }
.panel-heading h2 { margin: 2px 0 0; }
.link-button { border: 0; background: none; color: var(--forest); font-weight: 700; cursor: pointer; padding: 4px; }
.selection-panel > p { color: var(--muted); font-size: .88rem; line-height: 1.45; }
.area-list { border: 1px solid var(--line); border-radius: 9px; overflow: hidden; max-height: 280px; overflow-y: auto; }
.area-row { display: grid; grid-template-columns: 22px 1fr auto; gap: 8px; align-items: center; padding: 11px 10px; border-bottom: 1px solid #edf0ed; cursor: pointer; }
.area-row:last-child { border-bottom: 0; }
.area-row.selected { background: #edf5ef; }
.area-row input { accent-color: var(--forest); }
.area-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.area-size { color: var(--muted); font-size: .8rem; }
.selection-total { display: flex; justify-content: space-between; margin: 12px 0 18px; padding: 0 2px; }
.field { display: grid; gap: 6px; margin-bottom: 16px; }
.field span { font-size: .82rem; font-weight: 700; }
.field input { width: 100%; border: 1px solid #b9c5be; border-radius: 8px; padding: 10px 11px; outline: none; }
.field input:focus { border-color: var(--forest); box-shadow: 0 0 0 3px rgba(23, 87, 62, .11); }
.map-panel { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: #dfe7e2; }
.planning-map { width: 100%; height: 100%; min-height: 590px; position: relative; overflow: hidden; }
.planning-map.measurement-active canvas { cursor: crosshair; }
.planning-map .map-measurement-panel { position: absolute; z-index: 6; top: 12px; left: 12px; width: min(360px, calc(100% - 24px)); max-height: calc(100% - 24px); overflow-y: auto; padding: 12px; box-sizing: border-box; color: #173a2b; background: #fffffff2; border: 1px solid #526b5b; border-radius: 6px; box-shadow: 0 3px 12px #0003; }
.map-measurement-panel p { margin: 7px 0; font-size: .85rem; }
.map-measurement-panel output { display: block; margin: 10px 0; font-weight: 700; }
.measurement-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.measurement-actions button { padding: 6px 9px; min-height: 36px; border: 1px solid #94a69a; border-radius: 4px; background: white; color: #173a2b; cursor: pointer; }
.measurement-actions button:disabled { opacity: .5; cursor: default; }
.measurement-actions button:focus-visible { outline: 2px solid #30643d; outline-offset: 2px; }
.planning-map[data-anaglyph-mode="true"] { background: #000; }
.planning-map > div { position: absolute !important; inset: 0; width: 100% !important; height: 100% !important; }
.planning-map:not([data-map-engine="openlayers-canvas"]) canvas { width: 100% !important; height: 100% !important; display: block; }
.modal-backdrop { position: fixed; inset: 0; background: rgba(12, 28, 21, .56); z-index: 100; display: grid; place-items: center; padding: 20px; }
.dialog { width: min(460px, 100%); background: #fff; border-radius: 18px; padding: 30px; text-align: center; box-shadow: 0 30px 80px rgba(0,0,0,.25); }
.dialog h2 { margin: 10px 0; }
.dialog p { color: var(--muted); line-height: 1.55; }
.workspace-source-dialog { width: min(840px, 100%); max-height: calc(100dvh - 40px); overflow: auto; }
.workspace-source-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.workspace-source-options .panel { margin: 0; }
.workspace-source-options p { margin: 10px 0; overflow-wrap: anywhere; }
@media (max-width: 640px) { .workspace-source-options { grid-template-columns: 1fr; } }
.dialog-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; text-align: left; }
.dialog-heading h2 { margin: 2px 0 12px; }
.icon-button { border: 0; background: transparent; color: var(--muted); cursor: pointer; font-size: 1.8rem; line-height: 1; }
.icon-button:disabled { color: #536158; background: #edf0ee; opacity: 1; cursor: not-allowed; }
.area-selection-window { display: grid; grid-template-columns: minmax(410px, 510px) 1fr; min-height: calc(100vh - 126px); background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.area-selection-tables { padding: 24px; overflow: auto; }
.area-selection-tables h3 { margin: 20px 0 8px; font-size: 1rem; }
.area-selection-common-profile { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin: 16px 0; }
.area-selection-common-profile > span { font-weight: 600; }
.area-selection-common-profile select { flex: 1 1 220px; min-width: 0; max-width: 100%; padding: 7px 8px; border: 1px solid #b9c5be; border-radius: 7px; background: #fff; }
.area-selection-map { border-width: 0 0 0 1px; border-radius: 0; }
.selection-table { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.selection-table-head, .selection-table-row { display: grid; grid-template-columns: minmax(150px, 1fr) 100px minmax(150px, .8fr); gap: 10px; align-items: center; padding: 9px 10px; }
.selection-table.owners .selection-table-head, .selection-table.owners .selection-table-row { grid-template-columns: 1fr 100px; }
.selection-table-head { color: var(--muted); background: #f4f6f4; font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.selection-table-row { border-top: 1px solid #edf0ed; font-size: .86rem; cursor: pointer; }
.selection-table-row.included { box-shadow: inset 3px 0 #70a887; }
.selection-table-row.focused { background: #fbeaea; box-shadow: inset 4px 0 #c92323; color: #722020; }
.selection-table-row:focus-within { outline: 2px solid rgba(23,87,62,.28); outline-offset: -2px; }
.selection-table-row > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.selection-summary { display: flex; justify-content: space-between; padding: 15px 2px 0; }
.empty-hint { color: var(--muted); font-size: .86rem; }

/* Planning-case workspace follows the WPF UC_Project split layout. */
.project-workspace { min-height: calc(100vh - 66px); height: calc(100vh - 66px); display: grid; grid-template-rows: var(--project-upper-height, 55vh) 10px minmax(160px, 1fr); position: relative; background: #eef1ed; overflow: hidden; }
.overwrite-warning-dialog { border: 2px solid #c28d00; }
.overwrite-warning-icon { color: #b98200; font-size: 2rem; vertical-align: middle; }
.project-state { display: flex; gap: 18px; color: var(--muted); font-size: .78rem; }
.project-upper-pane { display: grid; grid-template-columns: minmax(320px, 1fr) 8px var(--project-inspector-width, 300px); min-height: 0; }
.project-map-wrap { position: relative; min-width: 0; overflow: hidden; }
.project-map-wrap .planning-map { min-height: 100%; }
.project-column-splitter { position: relative; z-index: 9; background: linear-gradient(90deg, #fff 0 2px, #aeb6b0 2px 6px, #fff 6px); cursor: col-resize; touch-action: none; user-select: none; }
.project-column-splitter:hover, .project-column-splitter.dragging { background: linear-gradient(90deg, #eef4ef 0 1px, var(--forest) 1px 7px, #eef4ef 7px); }
.project-column-splitter:focus-visible, .project-splitter:focus-visible { outline: 2px solid var(--forest); outline-offset: -2px; }
.map-progress { position: absolute; z-index: 8; left: 18px; top: 12px; width: min(440px, calc(100% - 36px)); }
.map-progress .job-progress { margin: 0; box-shadow: 0 8px 24px rgba(0,0,0,.13); }
.compass-card { position: absolute; right: 10px; top: 10px; display: flex; gap: 6px; align-items: baseline; padding: 7px 10px; border: 1px solid rgba(0,0,0,.18); border-radius: 7px; background: rgba(255,255,255,.92); box-shadow: 0 3px 12px rgba(0,0,0,.12); }
.compass-card span { font-size: .68rem; color: var(--muted); font-weight: 800; }
.project-inspector { padding: 8px; overflow: auto; background: #f7f8f6; border-left: 1px solid #cfd6d1; }
.project-inspector fieldset { margin: 0 0 9px; border: 1px solid #b9c4bc; border-radius: 5px; padding: 12px; background: #fff; }
.project-inspector legend { padding: 0 6px; font-size: .8rem; font-weight: 750; color: var(--forest-dark); }
.project-inspector fieldset > label { display: grid; grid-template-columns: 1fr 90px 22px; align-items: center; gap: 7px; margin-bottom: 11px; font-size: .84rem; }
.project-inspector input { width: 100%; padding: 7px; border: 1px solid #aebbb2; border-radius: 5px; }
.project-inspector small { color: var(--muted); }
.cycle-slider-fieldset { padding: 8px !important; }
.cycle-slider-layout { display: grid; grid-template-columns: 82px 1fr; align-items: center; gap: 5px; }
.cycle-step { display: grid !important; grid-template-columns: 1fr !important; gap: 5px !important; margin: 0 !important; font-size: .72rem !important; color: var(--muted); }
.cycle-step select { width: 76px; padding: 5px; border: 1px solid #aebbb2; border-radius: 4px; background: #fff; }
.cycle-slider { width: 116px; height: 116px; margin: auto; touch-action: none; user-select: none; cursor: crosshair; }
.cycle-track { fill: rgba(49,107,77,.05); stroke: #7e8d84; stroke-width: 8; }
.cycle-indicator { stroke: #386f52; stroke-width: 2; }
.cycle-thumb { fill: #68776f; stroke: #fff; stroke-width: 3; filter: drop-shadow(0 1px 2px rgba(0,0,0,.25)); }
.cycle-value { text-anchor: middle; font-size: 11px; font-weight: 750; fill: #243a2e; pointer-events: none; }
.grid-preview-status { margin: 4px 0 10px; padding: 7px 9px; border-radius: 5px; background: #edf5ef; color: var(--forest-dark); font-size: .76rem; }
.planning-area-select { width: 100%; padding: 7px; border: 1px solid #aebbb2; border-radius: 5px; background: #fff; }
.manual-grid-editor { margin-top: 8px !important; }
.manual-grid-editor strong { font-size: .78rem; overflow: hidden; text-overflow: ellipsis; }
.manual-grid-editor select { min-width: 70px; padding: 5px; border: 1px solid #aebbb2; border-radius: 4px; background: #fff; }
.manual-edit-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; margin: 8px 0; }
.manual-edit-actions button { padding: 6px; border: 1px solid #aebbb2; border-radius: 4px; color: #243a2e; background: #f7f9f7; cursor: pointer; font-size: .72rem; }
.edit-instruction { padding: 7px; border-radius: 4px; background: #fff3cd; color: #594500; font-size: .74rem; }
.manual-editor-shell { min-width: 0; margin: 0 0 9px; border: 1px solid #aeb8b1; border-radius: 6px; background: #fff; }
.project-inspector .preview-experiment-option { display: flex; align-items: flex-start; gap: .5rem; margin: .6rem 0; font-size: .875rem; cursor: pointer; }
.project-inspector .preview-experiment-option input { flex: 0 0 auto; width: 1rem; height: 1rem; margin: .1rem 0 0; padding: 0; accent-color: var(--forest); }
.preview-experiment-option span { min-width: 0; overflow-wrap: anywhere; }
.manual-mode-toolbar, .manual-way-toolbar { display: flex; align-items: center; gap: 5px; padding: 6px; background: #343b37; }
.manual-secondary-toolbar { flex-wrap: wrap; background: #e9eeea; border-top: 1px solid #aebcb1; }
.manual-secondary-toolbar .manual-mode-button { color: #26372d; }
.manual-secondary-toolbar .manual-mode-button:hover:not(:disabled) { background: #d2ded5; }
.manual-way-toolbar { margin: -10px -10px 10px; border-radius: 4px 4px 0 0; background: #e9eeea; }
.manual-snap-tools { display: flex; align-items: center; gap: 5px; margin-left: 12px; padding-left: 10px; border-left: 1px solid #aebcb1; }
.manual-snap-tools input { width: 58px; padding: 5px; }
.manual-snap-tools span { font-size: 12px; color: #26372d; }
.manual-way-toolbar { flex-wrap: wrap; }
.planning-map:focus-visible { outline: 2px solid #30643d; outline-offset: -2px; }
.manual-mode-tool { position: relative; }
.manual-mode-button { display: grid; place-items: center; width: 40px; height: 36px; padding: 5px; border: 1px solid transparent; border-radius: 4px; color: #fff; background: transparent; cursor: pointer; }
.manual-mode-button:hover:not(:disabled), .manual-mode-button:focus-visible { background: #4d5752; border-color: #6f7a74; }
.manual-mode-button.active { color: #173a2b; background: #dfeee3; border-color: #83a58e; box-shadow: inset 0 -2px #2f7651; }
.manual-way-toolbar .manual-mode-button { color: #243a2e; background: #fff; border-color: #b7c2ba; }
.manual-way-toolbar .manual-mode-button:hover:not(:disabled), .manual-way-toolbar .manual-mode-button:focus-visible { background: #f5f8f6; border-color: #71887a; }
.manual-way-toolbar .manual-mode-button.active { background: #dfeee3; border-color: #5f8a6e; }
.manual-mode-button:disabled, .manual-way-toolbar .manual-mode-button:disabled { color: #536158; background: #edf0ee; border-color: #c6cec9; box-shadow: none; opacity: 1; cursor: not-allowed; }
.manual-mode-button svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.manual-way-toolbar .manual-mode-button svg { width: 27px; height: 27px; }
.manual-way-toolbar .manual-mode-button svg line { stroke-width: 5; }
.manual-way-toolbar .manual-mode-button svg .way-icon-outline { stroke: #243a2e; stroke-width: 7; }
.manual-mode-button .icon-fill { fill: currentColor; stroke: none; }
.manual-mode-tooltip { position: absolute; z-index: 40; display: none; left: 0; top: calc(100% + 6px); width: 245px; padding: 9px 10px; border: 1px solid #77847c; border-radius: 5px; color: #1e2b24; background: #fff; box-shadow: 0 8px 22px rgba(0,0,0,.2); font-size: .76rem; line-height: 1.35; }
.manual-mode-tooltip strong, .manual-mode-tooltip span { display: block; }
.manual-mode-tooltip span { margin-top: 3px; color: var(--muted); font-weight: 400; }
.manual-mode-tooltip.short { width: max-content; max-width: 210px; }
/* Cloned to body by editorInteractions.js: never clipped by inspector scrolling or Mapsui. */
.manual-mode-tooltip.tooltip-portal { position: fixed; z-index: 1100; display: block; right: auto; max-width: calc(100vw - 16px); pointer-events: none; margin: 0; }
.manual-mode-options { display: grid; min-width: 0; gap: 8px; padding: 10px; }
.manual-mode-options > * { min-width: 0; }
.manual-mode-options select { width: 100%; min-width: 0; max-width: 100%; }
.manual-mode-options h2, .manual-mode-options h3 { margin: 0; color: var(--forest-dark); }
.manual-mode-options h2 { font-size: .88rem; }
.manual-mode-options h3 { font-size: .82rem; }
.manual-mode-options .manual-grid-editor { margin: 0 !important; padding: 9px; }
.manual-alley-details { display: grid; margin: 0; border-top: 1px solid #e1e6e2; }
.manual-alley-details div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 7px 0; border-bottom: 1px solid #edf0ed; font-size: .78rem; }
.manual-alley-details dt { color: var(--muted); }
.manual-alley-details dd { margin: 0; font-weight: 750; text-align: right; }
.planning-area-information div { grid-template-columns: minmax(0, 1fr); gap: 3px; }
.planning-area-information dd { text-align: start; overflow-wrap: anywhere; white-space: normal; }
.manual-slope-profiles { display: grid; gap: 8px; padding-top: 3px; }
.inline-status, .inline-error { margin: 0; padding: 8px; border-radius: 4px; font-size: .76rem; }
.inline-status { color: #315741; background: #edf5ef; }
.inline-error { color: #7b2222; background: #fff0f0; }
.slope-profile-chart { min-width: 0; margin: 0; border: 1px solid #d7ddd9; border-radius: 5px; overflow: hidden; background: #fff; }
.slope-profile-chart figcaption { padding: 6px 8px; color: #34483d; background: #f4f6f4; font-size: .72rem; font-weight: 750; }
.slope-profile-chart svg { display: block; width: 100%; height: auto; min-height: 135px; }
.slope-chart-background { fill: #fff; stroke: #8c9690; stroke-width: 1; }
.slope-chart-grid { stroke: #dce1de; stroke-width: .7; }
.slope-chart-limit { stroke: #a90000; stroke-width: 1.4; stroke-dasharray: 5 4; }
.slope-chart-line { fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.slope-chart-line.longitudinal { stroke: #1976d2; }
.slope-chart-line.cross { stroke: #ef6c00; }
.slope-chart-position { stroke: #6d287d; stroke-width: 1; stroke-dasharray: 3 3; }
.slope-chart-selected { fill: #d50071; stroke: #fff; stroke-width: 2; }
.slope-chart-tick, .slope-chart-axis-label { fill: #59645e; font-family: Arial, sans-serif; font-size: 9px; text-anchor: middle; }
.slope-chart-y-tick { text-anchor: end; }
.slope-chart-axis-label { font-size: 9.5px; }
.slope-chart-y-label { text-anchor: middle; transform: rotate(-90deg); transform-origin: 13px 78px; }
.slope-profile-empty { min-height: 95px; display: grid; place-items: center; padding: 10px; color: var(--muted); font-size: .76rem; text-align: center; }
.evaluation-table tbody tr { cursor: pointer; }
.evaluation-table tbody tr.selected { background: #fff0d1; box-shadow: inset 4px 0 #d99100; }
.project-details { margin: 0; display: grid; }
.project-details div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid #edf0ed; font-size: .8rem; }
.project-details div:last-child { border-bottom: 0; }
.project-details dt { color: var(--muted); }
.project-details dd { margin: 0; font-weight: 700; text-align: right; }
.project-splitter { position: relative; z-index: 11; background: linear-gradient(#fff 0 3px, #aeb6b0 3px 7px, #fff 7px); cursor: row-resize; touch-action: none; user-select: none; }
.project-splitter:hover, .project-splitter.dragging { background: linear-gradient(#eef4ef 0 2px, var(--forest) 2px 8px, #eef4ef 8px); }
.project-lower-pane { min-height: 0; display: grid; grid-template-rows: auto 1fr; background: #fff; }
.project-toolbar { min-height: 42px; display: flex; align-items: center; gap: 4px; padding: 4px 8px; background: #303633; border-top: 2px solid #515a55; border-bottom: 2px solid #171b19; color: #fff; position: relative; z-index: 10; }
.toolbar-button, .toolbar-menu summary { min-height: 30px; padding: 5px 9px; border: 0; border-radius: 3px; color: #fff; background: transparent; cursor: pointer; list-style: none; font-weight: 650; }
.toolbar-button:hover:not(:disabled), .toolbar-menu summary:hover, .toolbar-menu[open] summary { background: #4d5752; }
.toolbar-button:disabled { color: #b8c2bc; opacity: 1; cursor: not-allowed; }
.toolbar-menu { position: relative; }
.toolbar-menu summary::-webkit-details-marker { display: none; }
.toolbar-menu-content { position: absolute; left: 0; top: calc(100% + 5px); min-width: 290px; display: grid; padding: 7px; border: 1px solid #202622; border-radius: 5px; background: #fff; color: #202b25; box-shadow: 0 12px 32px rgba(0,0,0,.24); }
.toolbar-menu-content::before { content: ""; position: absolute; top: -6px; left: 0; right: 0; height: 6px; }
.toolbar-menu-content strong, .toolbar-menu-content small { padding: 7px 9px; color: var(--muted); }
.toolbar-menu-content button, .toolbar-check { border: 0; background: #fff; text-align: left; padding: 9px; border-radius: 4px; color: #202b25; cursor: pointer; }
.toolbar-menu-content button:hover:not(:disabled), .toolbar-check:hover { background: #edf3ee; }
.toolbar-menu-content button:disabled { color: #9aa29d; cursor: not-allowed; }
.toolbar-menu-content hr { width: 100%; border: 0; border-top: 1px solid var(--line); }
.toolbar-menu-content, .toolbar-menu-content button, .toolbar-menu-content label,
.toolbar-submenu-content, .toolbar-submenu-content button, .toolbar-submenu-content label { font-size: .875rem; }
.toolbar-submenu { position: relative; }
.toolbar-submenu-trigger { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.toolbar-submenu-content { position: absolute; display: none; left: calc(100% - 2px); top: -7px; min-width: 290px; padding: 7px; border: 1px solid #202622; border-radius: 5px; background: #fff; box-shadow: 0 12px 32px rgba(0,0,0,.24); }
.toolbar-submenu:hover > .toolbar-submenu-content, .toolbar-submenu:has(:focus-visible) > .toolbar-submenu-content { display: grid; }
.toolbar-submenu-content button, .toolbar-submenu-content .toolbar-check { border: 0; background: #fff; text-align: left; padding: 9px; border-radius: 4px; color: #202b25; cursor: pointer; }
.toolbar-submenu-content button:hover:not(:disabled), .toolbar-submenu-content .toolbar-check:hover { background: #edf3ee; }
.toolbar-submenu-content button:disabled { color: #9aa29d; cursor: not-allowed; }
.toolbar-submenu-content hr { width: 100%; border: 0; border-top: 1px solid var(--line); }
.toolbar-separator { width: 1px; align-self: stretch; margin: 2px 5px; background: #606862; }
.mode-badge { margin-left: auto; padding: 4px 9px; border-radius: 999px; background: #e4a831; color: #222; font-size: .72rem; font-weight: 800; }
.evaluation-table-wrap { overflow: auto; }
.application-logo { display: block; width: clamp(140px, 15vw, 245px); height: auto; object-fit: contain; }
.deletion-confirmation { z-index: 2000; }
.confirmation-dialog { width: min(520px, 95vw); }
.button.danger, .icon-button.danger { background: #b72d32; color: #fff; border-color: #942329; }
.geometry-input-group { margin-block: 14px; border-left: 5px solid #608e69; background: #f0f7f1; }
.geometry-input-group.geometry-2 { border-color: #9c7c3d; background: #faf6eb; }
.geometry-input-group.geometry-3 { border-color: #53809f; background: #eef5fa; }
.geometry-input-heading { display: flex; align-items: center; gap: 12px; }
.geometry-input-heading svg { width: 32px; height: 32px; stroke: currentColor; stroke-width: 2; fill: #9bad9766; }
.network-column-header { cursor: grab; user-select: none; }
.network-column-label { display: block; white-space: pre-line; line-height: 1.25; }
.network-column-header select { display: block; width: auto; margin: 0 auto 4px; font-size: inherit; }
.evaluation-table .text-cell { text-align: left; }
.network-category { display: inline-block; border-radius: 4px; padding: 3px 6px; background: #e3edf7; color: #183b57; }
.network-category.existing { background: #efdec6; color: #624016; }
.network-category.optimized { background: #dcecdf; color: #245132; }
.evaluation-table { width: max-content; min-width: 0; table-layout: auto; border-collapse: collapse; font-size: .78rem; white-space: nowrap; }
.evaluation-table th { position: sticky; top: 0; width: auto; padding: 8px 10px; text-align: center; background: #eef1ef; color: #4d5952; border: 1px solid #d6dcd8; }
.evaluation-table td { width: auto; padding: 8px 10px; text-align: right; border: 1px solid #e2e6e3; }
.evaluation-table td:nth-child(1), .evaluation-table td:nth-child(2) { text-align: left; }
.evaluation-mode-header { padding-top: 4px !important; }
.evaluation-mode-header select { display: block; width: 100%; min-width: 92px; margin: 0 0 4px; padding: 2px 4px; font: inherit; }
.evaluation-mode-header span { display: block; }
.evaluation-table tbody tr:hover { background: #f3f7f4; }
.empty-table { height: 90px; text-align: center; color: var(--muted); }
.project-error { position: fixed; right: 18px; bottom: 18px; z-index: 120; max-width: 600px; box-shadow: 0 8px 28px rgba(0,0,0,.16); }
.height-obstacle-dialog { width: min(760px, 100%); max-height: calc(100vh - 40px); overflow: auto; text-align: left; }
.best-grid-search-dialog { width: min(900px, 100%); text-align: left; }
.search-area-selection { display: grid; grid-template-columns: minmax(12rem, 1fr) minmax(15rem, 1.5fr); gap: 1rem; grid-column: 1 / -1; }
.search-area-list { max-height: 20rem; overflow-y: auto; display: flex; flex-direction: column; gap: .6rem; }
.search-area-list label { display: flex; gap: .5rem; align-items: center; }
.search-area-map { height: 20rem; min-height: 15rem; }
.search-area-map .planning-map { height: 100%; min-height: 0; }
@media (max-width: 650px) { .search-area-selection { grid-template-columns: 1fr; } }
.planning-export-dialog { width: min(820px, 100%); max-height: calc(100vh - 40px); overflow: auto; text-align: left; }
.export-option-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 18px 0; }
.export-option-grid label { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; padding: 13px; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; }
.export-option-grid label:hover { border-color: #7f9d89; background: #f6faf7; }
.export-option-grid input { margin-top: 3px; }
.export-option-grid span { display: grid; gap: 4px; }
.export-option-grid small { color: var(--muted); line-height: 1.35; }
.export-option-wide { grid-column: 1 / -1; }
.export-geodata-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0 0 18px; }
.export-geodata-fields label { display: grid; gap: 9px; padding: 13px; border: 1px solid var(--line); border-radius: 8px; }
.export-geodata-fields span { display: grid; gap: 4px; }
.export-geodata-fields small { color: var(--muted); line-height: 1.35; }
.export-geodata-fields select { min-width: 0; width: 100%; padding: 9px; border: 1px solid #afbbb3; border-radius: 5px; background: white; }
.export-folder-field { display: grid; grid-template-columns: minmax(190px, .7fr) minmax(260px, 1.3fr); gap: 14px; align-items: center; margin: 0 0 18px; padding: 13px; border: 1px solid var(--line); border-radius: 8px; }
.export-folder-field span { display: grid; gap: 4px; }
.export-folder-field small { color: var(--muted); line-height: 1.35; }
.export-folder-field input { min-width: 0; width: 100%; padding: 9px; border: 1px solid #afbbb3; border-radius: 5px; }
@media (max-width: 680px) { .export-geodata-fields { grid-template-columns: 1fr; } }
.best-grid-precision { margin: 20px 0; }
.best-grid-precision select { min-width: 0; width: 100%; padding: 8px; border: 1px solid #afbbb3; border-radius: 5px; background: #fff; }
.profile-assignment-table { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; margin: 18px 0; }
.profile-assignment-head, .profile-assignment-row { display: grid; grid-template-columns: 1fr minmax(180px, .7fr); gap: 12px; align-items: center; padding: 9px 11px; }
.profile-assignment-head { background: #f3f6f4; color: var(--muted); font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.profile-assignment-row { border-top: 1px solid #edf0ed; font-size: .86rem; }
.profile-assignment-row.focused { background: #edf5ef; box-shadow: inset 4px 0 var(--forest); }
.profile-assignment-layout { display: grid; grid-template-columns: minmax(380px, 1fr) minmax(250px, .8fr); gap: 18px; align-items: start; }
.profile-for-all { display: grid; grid-template-columns: 1fr minmax(180px, .7fr); gap: 12px; align-items: center; margin-top: 14px; font-size: .86rem; font-weight: 700; }
.profile-for-all select { padding: 7px 8px; border: 1px solid #b9c5be; border-radius: 7px; background: #fff; }
.profile-parameter-panel { margin-top: 14px; padding: 14px; border: 1px solid var(--line); border-radius: 8px; background: #f8faf8; }
.profile-parameter-panel > strong, .profile-parameter-panel > span { display: block; }
.profile-parameter-panel > span { margin: 3px 0 9px; color: var(--forest); font-weight: 700; }
.profile-parameter-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; margin: 0; font-size: .75rem; }
.profile-parameter-summary div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 5px 0; border-bottom: 1px solid #e5eae6; }
.profile-parameter-summary dt { color: var(--muted); }
.profile-parameter-summary dd { margin: 0; font-weight: 750; white-space: nowrap; }
.profile-parameter-summary.compact { grid-template-columns: 1fr; }
.success-icon { margin: 0 auto; width: 48px; height: 48px; border-radius: 100%; display: grid; place-items: center; color: #fff; background: var(--forest); font-size: 1.4rem; }
.app-loading { min-height: 100vh; display: grid; place-content: center; justify-items: center; color: var(--forest); }
.app-loading span { width: 34px; height: 34px; border: 3px solid #c8d8ce; border-top-color: var(--forest); border-radius: 100%; animation: spin .8s linear infinite; }
#blazor-error-ui { display: none; position: fixed; bottom: 0; width: 100%; padding: 12px; background: #fff0c7; z-index: 1000; }
@keyframes spin { to { transform: rotate(360deg); } }

.profile-manager-dialog { width: min(1180px, calc(100vw - 38px)); max-height: calc(100vh - 38px); overflow: auto; text-align: left; }
.profile-tabs { display: flex; gap: 4px; margin: 18px 0 0; border-bottom: 1px solid var(--line); }
.profile-tab { padding: 10px 14px; border: 0; border-bottom: 3px solid transparent; background: transparent; color: var(--muted); cursor: pointer; font-weight: 750; }
.profile-tab.active { color: var(--forest); border-bottom-color: var(--forest); }
.profile-manager-grid { display: grid; grid-template-columns: 230px minmax(0, 1fr); min-height: 430px; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.profile-list { display: flex; flex-direction: column; gap: 5px; padding: 10px; background: #f4f6f4; border-right: 1px solid var(--line); }
.profile-list-item { display: flex; justify-content: space-between; gap: 8px; padding: 10px; border: 1px solid transparent; border-radius: 6px; background: transparent; text-align: left; cursor: pointer; }
.profile-list-item small { color: var(--muted); }
.profile-list-item.active { border-color: #91aa9b; background: #fff; color: var(--forest-dark); }
.profile-list .button { margin-top: auto; }
.profile-file-actions { display: grid; gap: 5px; margin-top: 5px; }
.profile-file-actions .button { margin-top: 0; }
.profile-import-button { position: relative; overflow: hidden; text-align: center; cursor: pointer; }
.profile-import-button input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.profile-manager-inline .profile-manager-dialog { width: 100%; max-height: none; }
.settings-page { max-width: 1320px; }
.profile-editor { min-width: 0; padding: 16px; overflow: auto; }
.profile-fields { display: grid; gap: 12px; }
.profile-fields.two-columns { grid-template-columns: repeat(2, minmax(190px, 1fr)); }
.profile-fields.three-columns { grid-template-columns: repeat(3, minmax(170px, 1fr)); }
.profile-fields label:not(.check-field) { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 4px 7px; }
.profile-fields label > span:first-child { grid-column: 1 / -1; color: #4b5750; font-size: .76rem; font-weight: 700; }
.profile-fields input[type="number"], .profile-fields input[type="text"], .profile-fields label.wide input { min-width: 0; width: 100%; padding: 8px; border: 1px solid #afbbb3; border-radius: 5px; }
.profile-fields small { color: var(--muted); }
.profile-fields .wide { grid-column: 1 / -1; }
.profile-fields .check-field { display: flex; align-items: center; gap: 8px; align-self: end; min-height: 38px; }
.profile-fields .check-field span:first-child { grid-column: auto; }
.profile-field-group { display: grid; align-content: start; gap: 10px; min-width: 0; margin: 0; padding: 12px; border: 1px solid var(--line); border-radius: 7px; }
.profile-field-group legend { padding: 0 6px; color: var(--forest-dark); font-size: .78rem; font-weight: 800; }
.profile-field-group > label:not(.check-field) { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 4px 7px; }
.grouped-profile-fields { align-items: start; }
.profile-actions { margin-top: 18px; }
.profile-status { margin-top: 10px; padding: 9px 11px; border-radius: 5px; background: #edf5ef; color: var(--forest-dark); }
.xyz-source-dialog { width: min(960px, calc(100vw - 38px)); max-height: calc(100vh - 38px); overflow: auto; text-align: left; }
.xyz-source-dialog > p { margin-top: 0; }
.xyz-source-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); min-height: 390px; margin-top: 18px; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.xyz-source-editor { min-width: 0; padding: 18px; }
.xyz-source-note { margin: 18px 0 0; padding: 11px 13px; border-left: 3px solid #b48725; border-radius: 4px; background: #fff8e6; color: #594719 !important; font-size: .8rem; }

/* All settings open above the current workspace with the same dialog shell. */
.settings-dialog { width: min(1180px, calc(100vw - 38px)); max-height: calc(100dvh - 38px); overflow: auto; text-align: left; }
.settings-dialog .dialog-actions { flex-wrap: wrap; }
.settings-edit-fields { min-width: 0; padding: 0; margin: 0; border: 0; }
.profile-edit-view { border: 1px solid var(--line); border-radius: 8px; }
.settings-launcher { min-height: 130px; }
@media (max-width: 700px) {
    .settings-dialog .profile-manager-grid { grid-template-columns: 1fr; }
    .settings-dialog .profile-list { border-right: 0; border-bottom: 1px solid var(--line); }
    .settings-dialog .profile-fields.two-columns, .settings-dialog .profile-fields.three-columns,
    .settings-dialog .colour-settings-grid { grid-template-columns: minmax(0, 1fr); }
}

.settings-layout { display: grid; grid-template-columns: 245px minmax(0, 1fr); gap: 20px; align-items: start; }
.settings-navigation { display: grid; gap: 6px; position: sticky; top: 84px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.settings-navigation a, .settings-navigation button { display: block; width: 100%; padding: 9px 10px; border: 0; border-radius: 6px; background: transparent; color: var(--forest-dark); text-align: left; text-decoration: none; cursor: pointer; }
.settings-navigation a:hover, .settings-navigation button:hover { background: #edf3ee; }
.settings-navigation section { display: grid; gap: 3px; padding-top: 7px; border-top: 1px solid var(--line); }
.settings-navigation section strong { padding: 4px 10px; font-size: .76rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.settings-navigation section button { padding-left: 22px; }
.settings-colour-panel { min-width: 0; }
.colour-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(230px, 1fr)); gap: 9px 18px; margin-top: 18px; }
.colour-setting { display: grid; grid-template-columns: minmax(0, 1fr) 50px; gap: 9px; align-items: center; padding: 8px 0; border-bottom: 1px solid #edf0ed; font-size: .84rem; }
.planning-nav-menu > summary { padding: 9px 12px; color: var(--muted); font-weight: 400; border-radius: 8px; }
.planning-nav-menu > summary:hover, .planning-nav-menu[open] > summary { background: var(--mint); color: var(--forest-dark); }
.planning-nav-menu .toolbar-menu-content { z-index: 30; max-width: min(420px, 90vw); }
.planning-nav-menu .toolbar-menu-content > a { white-space: normal; overflow-wrap: anywhere; }
.planning-nav-menu .toolbar-menu-content { min-width: 235px; }
.nav-submenu { position: relative; }
.nav-submenu > summary, .nav-submenu-content a, .nav-submenu-content button,
.planning-nav-menu .toolbar-menu-content a { font-size: .875rem; }
.nav-submenu > summary { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 9px 12px; list-style: none; }
.topbar .nav-submenu > summary { color: #202b25; background: #fff; font-weight: 400; }
.topbar .nav-submenu[open] > summary, .topbar .nav-submenu > summary:hover { color: var(--forest-dark); background: var(--mint); }
.nav-submenu-content { position: absolute; left: calc(100% - 2px); top: -7px; display: grid; min-width: 235px; padding: 7px; background: #fff; border: 1px solid #718477; border-radius: 5px; box-shadow: 0 12px 32px #0003; }
.nav-submenu.open-left > .nav-submenu-content { left: auto; right: calc(100% - 2px); }
.nav-submenu:not([open]) > .nav-submenu-content { display: none; }
.nav-submenu-content a, .nav-submenu-content button { display: block; width: 100%; white-space: normal; }
.cloud-project-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin: 20px 0; }
.cloud-project-card img { width: 100%; height: 180px; object-fit: contain; border-radius: 8px; background: #eef3ef; }
.cloud-project-card h2 { font-size: 1.1rem; overflow-wrap: anywhere; }
.cloud-project-card dl { display: grid; grid-template-columns: auto 1fr; gap: 8px; font-size: .85rem; }
.cloud-project-card dd { margin: 0; text-align: right; }
.cloud-permission-row { display: flex; gap: 12px; align-items: center; padding: 12px; border-bottom: 1px solid var(--line); }
.cloud-permission-row small { display: block; color: var(--muted); }
.colour-setting input[type="color"] { width: 50px; height: 34px; padding: 2px; border: 1px solid #aebbb2; border-radius: 5px; background: #fff; cursor: pointer; }
.colour-setting code { color: var(--muted); }

.planning-profile-dialog { width: min(980px, calc(100vw - 38px)); max-height: calc(100vh - 38px); overflow: auto; text-align: left; }
.planning-profile-map { height: 300px; margin: 16px 0; }
.planning-profile-map .planning-map { min-height: 300px; }
.planning-profile-list { border: 1px solid var(--line); border-radius: 8px; overflow: visible; }
.planning-profile-list-head, .planning-profile-row { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(260px, 1fr); gap: 14px; align-items: center; padding: 10px 12px; }
.planning-profile-list-head { background: #f3f6f4; color: var(--muted); border-radius: 8px 8px 0 0; font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.planning-profile-row { position: relative; border-top: 1px solid #edf0ed; cursor: pointer; }
.planning-profile-row.focused { background: #edf5ef; box-shadow: inset 4px 0 var(--forest); }
.planning-profile-row select { width: 100%; padding: 8px; border: 1px solid #b9c5be; border-radius: 6px; background: #fff; }
.profile-dropdown-with-tooltip { position: relative; }

.initial-project-storage { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 1rem; }
.initial-project-storage label { display: flex; flex-direction: column; gap: .4rem; min-width: 14rem; }
.initial-project-storage p { flex-basis: 100%; margin: 0; }

@media (max-width: 1280px) {
    .topbar { height: auto; min-height: 66px; flex-wrap: wrap; padding-top: 8px; padding-bottom: 8px; gap: 8px 12px; }
    .topbar nav { order: 5; flex: 1 0 100%; min-width: 0; flex-wrap: wrap; }
    .topbar-project-name { min-width: 0; flex-basis: 180px; }
    .topbar-preferences { flex-shrink: 0; }
    .topbar .application-logo { max-width: 180px; height: auto; }
    .topbar .account { flex-shrink: 1; min-width: 0; }
    .topbar nav > a, .topbar nav summary, .toolbar-button, .toolbar-menu > summary { min-height: 44px; }
    .topbar:has(.topbar-project-name) .brand-wordmark { width: 110px; }
    .topbar:has(.topbar-project-name) .account > span:first-child { display: none; }
}
.background-operation { padding: .4rem 1rem; background: var(--mint); color: var(--forest-dark); font-size: .9rem; }
@media (max-width: 1100px) {
    .topbar:has(.topbar-project-name) .brand-wordmark { display: none; }
}
@media (max-width: 900px) {
    .topbar { padding: 0 18px; gap: 16px; }
    .account { display: none; }
    .language-selector select { min-width: 96px; }
    .brand-mark { width: 34px; }
    .brand-wordmark { width: 116px; }
    .topbar .brand { gap: 7px; padding: 5px 8px; }
    .topbar nav { gap: 0; }
    .topbar > .compute-credit-status { display: none; }
    .topbar .nav-submenu > summary span { display: inline; }
    .nav-submenu-content, .nav-submenu.open-left > .nav-submenu-content { position: static; min-width: 0; margin: 0 0 3px 12px; border: 0; border-left: 2px solid var(--line); box-shadow: none; padding: 3px; }
    .hero { grid-template-columns: 1fr; padding-top: 70px; }
    .status-card { max-width: 360px; }
    .import-grid { grid-template-columns: 1fr; }
    .selection-layout { grid-template-columns: 1fr; }
    .planning-map { min-height: 520px; }
    .input-expander-content { grid-template-columns: 1fr; }
    .area-selection-window { grid-template-columns: minmax(350px, 45%) 1fr; }
    .profile-manager-grid { grid-template-columns: 190px minmax(0, 1fr); }
    .profile-fields.three-columns { grid-template-columns: repeat(2, minmax(160px, 1fr)); }
    .settings-layout { grid-template-columns: 190px minmax(0, 1fr); }
    .colour-settings-grid, .profile-assignment-layout { grid-template-columns: 1fr; }
    .xyz-source-layout { grid-template-columns: 190px minmax(0, 1fr); }
    .toolbar-button span, .toolbar-menu summary span { display: none; }
}

@media (max-width: 620px) {
    .topbar nav > a:first-child { display: none; }
    .topbar { padding: 0 12px; }
    .topbar .brand-wordmark { display: none; }
    .topbar { gap: 6px; }
    .workspace-page { padding: 22px 12px 40px; }
    .page-heading { display: block; }
    .limit-badge { display: inline-block; margin-top: 12px; }
    .selection-layout, .area-selection-window, .project-workspace { display: none; }
    .xyz-source-layout { grid-template-columns: 1fr; }
    .xyz-source-layout .profile-list { border-right: 0; border-bottom: 1px solid var(--line); }
    .workspace-page::after, body:has(.project-workspace) main::after { content: "Für die Bearbeitung eines Planungsfalls wird mindestens ein Tablet im Querformat benötigt. Auf Smartphones stehen Anzeige und Download zur Verfügung."; display: block; margin: 20px 12px; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 20px; line-height: 1.5; }
}
/* Validation remains non-modal so the highlighted geometry can be inspected. */
.network-validation-dialog { position: fixed; right: 2rem; bottom: 2rem; z-index: 1500; max-width: 34rem; border: 3px solid #d58a00; box-shadow: 0 3px 20px #0005; }
.network-count { display: block; color: #526059; font-size: .8em; }
.terrain-map-surface { width: 100%; height: 100%; min-height: 0; flex: 1; }
.terrain-3d-viewer { position: absolute; inset: 0; background: #edf2ef; }
.terrain-3d-viewer canvas { display: block; width: 100%; height: 100%; touch-action: none; outline: none; }
.terrain-3d-help, .terrain-3d-status { position: absolute; left: 1rem; bottom: 1rem; margin: 0; padding: .5rem; background: #ffffffdf; border-radius: .3rem; font-size: .8rem; pointer-events: none; }
.terrain-3d-status { top: 1rem; bottom: auto; }
.search-options { border: 0; padding: 0; margin: 1rem 0; display: grid; gap: .6rem; }
.search-intensity { display: flex; align-items: center; gap: 1rem; }
.search-option-row { display: flex; align-items: center; gap: .5rem; }
.search-option-row label { display: flex; align-items: center; gap: .5rem; flex: 1; }
.search-bend-limit { display: flex; align-items: center; gap: .5rem; margin-left: 1.7rem; }
.search-bend-limit input { width: 5rem; }
.search-option-help { position: relative; }
.search-option-tooltip { position: absolute; z-index: 3000; right: 0; top: 100%; width: min(22rem, 75vw); padding: .8rem; color: #18322b; background: #fff; border: 1px solid #87978f; border-radius: .4rem; box-shadow: 0 4px 18px #0004; display: grid; gap: .5rem; font-size: .9rem; }
.search-option-tooltip svg { display: block; width: 100%; max-height: 9rem; }
.search-option-help[data-kind="NewRoads"] .search-option-tooltip,
.search-option-help[data-kind="Fanning"] .search-option-tooltip { top: auto; bottom: 100%; }
.best-grid-search-dialog { max-height: calc(100dvh - 40px); overflow-y: auto; }
:root { --partition-border: #d2dbd1; }
.terrain-partition-panel { border: 1px solid var(--partition-border); border-radius: 6px; padding: .7rem; margin-bottom: 1rem; }
.terrain-partition-panel header { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.terrain-partition-panel h2 { font-size: 1.05rem; margin: 0; }
.terrain-partition-panel svg, .terrain-partition-panel input[type="range"] { width: 100%; }
.terrain-partition-panel svg text { font-size: 11px; fill: #333; }
.terrain-partition-panel .partition-y-label { text-anchor: end; }
.terrain-partition-panel .partition-export-button { display: block; width: 100%; margin-top: .5rem; }
.partition-legend { list-style: none; padding: 0; margin: .6rem 0; }
.partition-legend li { display: flex; align-items: center; gap: .5rem; }
.partition-legend span { width: 1rem; height: .8rem; display: inline-block; }

/* Save scope grows when individual variants are selected; remain usable on tablets. */
.dialog[aria-labelledby="checkpoint-save-title"] {
    width: min(52rem, calc(100vw - 2rem));
    max-width: calc(100vw - 2rem);
    max-height: calc(100dvh - 3rem);
    overflow-y: auto;
}
.diagnostic-badge { display: inline-block; padding: .25rem .5rem; border-radius: .35rem; background: #d9f0df; color: #164829; font-size: .85rem; text-decoration: none; }
.diagnostic-warning { background: #fff0bf; color: #664900; }
.diagnostic-settings { max-width: 70rem; }
.diagnostic-settings label { display: flex; align-items: center; gap: .5rem; font-weight: 600; }
