:root {
  --navy: #07111d;
  --navy-2: #0c1926;
  --navy-3: #132435;
  --ink: #12202d;
  --muted: #65717b;
  --line: #dce1e3;
  --paper: #f7f6f1;
  --white: #fff;
  --signal: #b8d52a;
  --signal-deep: #8ea713;
  --blue: #123cb5;
  --red: #b72b27;
  --green: #13834f;
  --amber: #e8bb22;
  --sans: "Aptos", "Segoe UI Variable", "Segoe UI", Arial, sans-serif;
  --display: "Bahnschrift", "DIN Alternate", "Arial Narrow", var(--sans);
  --shadow: 0 28px 70px rgba(7, 17, 29, .14);
}

*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; scroll-behavior: smooth; font-size: 17px; }
body { margin: 0; font-family: var(--sans); line-height: 1.5; color: var(--ink); background: #e9edef; }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
a { color: inherit; }
[hidden] { display: none !important; }
.skip-link { position: fixed; z-index: 1000; left: 1rem; top: 1rem; padding: .8rem 1rem; background: var(--white); color: var(--navy); transform: translateY(-160%); }
.skip-link:focus { transform: none; }
:focus-visible { outline: 3px solid rgba(184, 213, 42, .72); outline-offset: 3px; }

.portal-brand { display: inline-flex; width: 150px; }
.portal-brand img { width: 100%; height: auto; display: block; filter: brightness(0) invert(1); }

/* Access */
.access-view { min-height: 100dvh; background: var(--navy); color: var(--white); overflow: hidden; }
.access-header { position: absolute; z-index: 5; top: 0; left: 0; right: 0; height: 90px; display: flex; align-items: center; justify-content: flex-start; gap: clamp(2rem, 5vw, 6rem); padding: 0 clamp(1.4rem, 4vw, 4.8rem); border-bottom: 1px solid rgba(255,255,255,.12); }
.access-header__meta { display: flex; gap: .65rem; align-items: center; color: rgba(255,255,255,.7); font-size: .72rem; letter-spacing: .09em; text-transform: uppercase; }
.access-header__meta i { width: 7px; height: 7px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 5px rgba(184,213,42,.09); }
.access-main { min-height: 100dvh; display: grid; grid-template-columns: minmax(0, 1.42fr) minmax(420px, .58fr); }
.access-story { position: relative; isolation: isolate; min-height: 100dvh; padding: clamp(8.7rem, 12vh, 10.5rem) clamp(2rem, 6vw, 7.6rem) 3.5rem; overflow: hidden; }
.access-story::before { content: ""; position: absolute; z-index: -2; inset: 0; background: radial-gradient(circle at 82% 16%, rgba(184,213,42,.12), transparent 23%), linear-gradient(128deg, #07111d 0%, #0a1723 62%, #102332 100%); }
.access-story::after { content: ""; position: absolute; z-index: -1; width: 42vw; aspect-ratio: 1; border: 1px solid rgba(184,213,42,.13); border-radius: 50%; right: -20vw; top: 7vh; box-shadow: 0 0 0 8vw rgba(255,255,255,.012), 0 0 0 18vw rgba(255,255,255,.01); }
.access-grid { position: absolute; z-index: -1; inset: 90px 0 0; opacity: .13; background-image: linear-gradient(rgba(255,255,255,.12) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.12) 1px, transparent 1px); background-size: 72px 72px; mask-image: linear-gradient(to bottom, black, transparent 72%); }
.eyebrow { width: min(100%, 690px); display: flex; justify-content: space-between; align-items: center; margin-bottom: clamp(2rem, 4vh, 3.5rem); color: rgba(255,255,255,.57); font-size: .67rem; letter-spacing: .13em; text-transform: uppercase; }
.eyebrow span { display: inline-flex; align-items: center; gap: .65rem; }
.eyebrow span::before { content: ""; width: 24px; height: 2px; background: var(--signal); }
.eyebrow b { font-weight: 500; color: var(--signal); }
.access-story h1 { margin: 0; max-width: 850px; font-family: var(--display); font-size: clamp(3.2rem, 5.8vw, 7.2rem); font-weight: 500; line-height: .92; letter-spacing: -.065em; }
.access-story h1 em { color: var(--signal); font-style: normal; font-weight: 400; }
.access-lead { max-width: 690px; margin: clamp(2rem, 4vh, 3.3rem) 0 0; color: rgba(255,255,255,.7); font-size: clamp(.96rem, 1.15vw, 1.18rem); line-height: 1.75; }
.access-proof { position: relative; z-index: 2; max-width: 720px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin-top: clamp(2.5rem, 5vh, 4.8rem); border-top: 1px solid rgba(255,255,255,.14); }
.access-proof > div { padding: 1.2rem 1.3rem 1rem 0; }
.access-proof > div + div { padding-left: 1.3rem; border-left: 1px solid rgba(255,255,255,.12); }
.access-proof span { display: block; color: var(--signal); font: 500 .61rem var(--display); letter-spacing: .08em; }
.access-proof strong { display: block; margin-top: 1rem; font: 500 .98rem var(--display); }
.access-proof small { display: block; margin-top: .5rem; color: rgba(255,255,255,.67); font-size: .75rem; line-height: 1.6; }
.reference-stack { position: absolute; right: clamp(2rem, 4vw, 5.5rem); bottom: 1.8rem; width: min(19vw, 275px); aspect-ratio: .75; pointer-events: none; opacity: .78; }
.reference-sheet { position: absolute; margin: 0; width: 62%; background: white; padding: 5px; box-shadow: 0 20px 60px rgba(0,0,0,.4); }
.reference-sheet img { display: block; width: 100%; height: auto; filter: saturate(.72) contrast(1.05); }
.reference-sheet--one { right: 3%; bottom: 12%; transform: rotate(7deg); }
.reference-sheet--two { right: 38%; bottom: 3%; transform: rotate(-5deg); }
.reference-caption { position: absolute; right: 0; bottom: 0; transform: translateY(110%); color: rgba(255,255,255,.42); font-size: .58rem; letter-spacing: .08em; text-transform: uppercase; }
.reference-caption b { color: var(--signal); margin-right: .4rem; }

.auth-shell { min-height: 100dvh; padding: 90px clamp(2rem, 4vw, 4.5rem) 2rem; background: var(--paper); color: var(--ink); display: flex; flex-direction: column; justify-content: center; position: relative; box-shadow: -25px 0 70px rgba(0,0,0,.15); }
.auth-signal { position: absolute; top: 1.8rem; left: clamp(2rem, 4vw, 4.5rem); right: clamp(2rem, 4vw, 4.5rem); display: flex; align-items: center; justify-content: space-between; color: #5d686d; font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }
.auth-signal b { display: flex; align-items: center; gap: .5rem; color: #52602f; font-weight: 600; }
.auth-signal i { width: 6px; height: 6px; border-radius: 50%; background: var(--signal-deep); }
.auth-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid #cfd5d5; margin-bottom: clamp(2rem, 5vh, 3.5rem); }
.auth-tabs button { position: relative; min-height: 48px; border: 0; background: transparent; padding: 1rem .4rem; color: #687378; cursor: pointer; font-size: .78rem; letter-spacing: .045em; text-transform: uppercase; }
.auth-tabs button::after { content: ""; position: absolute; height: 2px; left: 0; right: 0; bottom: -1px; transform: scaleX(0); background: var(--navy); transition: transform .35s ease; }
.auth-tabs button.is-active { color: var(--navy); }
.auth-tabs button.is-active::after { transform: scaleX(1); }
.auth-panel { display: flex; flex-direction: column; gap: 1.2rem; animation: panel-in .45s cubic-bezier(.2,.75,.2,1) both; }
.auth-panel[data-auth-panel="register"] { gap: .82rem; }
.auth-heading { margin-bottom: .6rem; }
.auth-heading > span { color: #667a10; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; }
.auth-heading h2 { margin: .7rem 0 .8rem; max-width: 420px; font: 500 clamp(1.8rem, 2.5vw, 2.65rem)/1.07 var(--display); letter-spacing: -.045em; }
.auth-heading p { margin: 0; max-width: 460px; color: #56636d; font-size: .92rem; line-height: 1.65; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.field { display: grid; gap: .48rem; }
.field > span { color: #536068; font-size: .7rem; font-weight: 650; letter-spacing: .045em; text-transform: uppercase; }
.field input, .field textarea, .field select { width: 100%; border: 1px solid #ccd2d3; background: rgba(255,255,255,.66); padding: .84rem .9rem; color: var(--ink); border-radius: 2px; outline: 0; transition: border-color .25s, box-shadow .25s, background .25s; }
.field textarea { resize: vertical; line-height: 1.5; }
.field input:focus, .field textarea:focus, .field select:focus { background: white; border-color: #7f9220; box-shadow: 0 0 0 3px rgba(184,213,42,.12); }
.field small { color: #748087; font-size: .62rem; line-height: 1.45; }
.check-field { display: grid; grid-template-columns: 20px 1fr; align-items: start; gap: .7rem; color: #58656e; font-size: .76rem; line-height: 1.6; }
.check-field input { accent-color: var(--navy); margin-top: 3px; }
.check-field a, .form-note a { color: var(--ink); text-underline-offset: 2px; }
.primary-action { min-height: 50px; border: 0; border-radius: 1px; background: var(--navy); color: white; display: inline-flex; align-items: center; justify-content: space-between; padding: .2rem .4rem .2rem 1.15rem; cursor: pointer; font-size: .84rem; font-weight: 650; letter-spacing: .01em; transition: background .3s, transform .3s; }
.primary-action b { width: 41px; height: 41px; display: grid; place-items: center; background: var(--signal); color: var(--navy); font-size: 1rem; }
.primary-action:hover { background: #122638; transform: translateY(-1px); }
.primary-action--compact { min-height: 42px; padding-left: 1rem; }
.primary-action--compact b { width: 34px; height: 34px; }
.demo-action, .secondary-action { border: 1px solid #bcc5c8; background: transparent; min-height: 46px; padding: .7rem 1rem; cursor: pointer; font-size: .78rem; color: #435159; transition: background .25s, color .25s, border-color .25s; }
.demo-action:hover, .secondary-action:hover { background: white; color: var(--navy); border-color: #9fa9ac; }
.form-note { display: flex; gap: .55rem; align-items: flex-start; margin: 0; color: #606d73; font-size: .72rem; line-height: 1.6; }
.form-note svg { flex: 0 0 15px; width: 15px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.password-reset-action { align-self: flex-start; margin-top: -.45rem; padding: 0; border: 0; background: transparent; color: #3f4d55; cursor: pointer; font-size: .74rem; text-decoration: underline; text-underline-offset: 3px; }
.password-reset-action:hover { color: var(--navy); }
.admin-login-error { margin: -.3rem 0 0; padding: .7rem .8rem; border-left: 2px solid var(--red); background: #f8e8e6; color: #8f2b27; font-size: .72rem; }
.bot-field { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; }
.auth-footer { position: absolute; bottom: 1.5rem; left: clamp(2rem, 4vw, 4.5rem); right: clamp(2rem, 4vw, 4.5rem); display: flex; gap: 1.2rem; color: #69757a; font-size: .68rem; }
.auth-footer span:first-child { margin-right: auto; }
.auth-footer a { text-decoration: none; }

/* One-time customer orientation */
.onboarding-layer { position: fixed; z-index: 180; inset: 0; overflow: hidden; }
.onboarding-focus { position: fixed; z-index: 181; border: 2px solid var(--signal); background: rgba(184,213,42,.05); box-shadow: 0 0 0 9999px rgba(3,10,17,.72), 0 0 0 6px rgba(184,213,42,.12); pointer-events: none; transition: top .45s cubic-bezier(.2,.75,.2,1), left .45s cubic-bezier(.2,.75,.2,1), width .45s cubic-bezier(.2,.75,.2,1), height .45s cubic-bezier(.2,.75,.2,1); }
.onboarding-card { position: fixed; z-index: 182; width: min(360px, calc(100vw - 32px)); padding: 1.45rem 1.5rem 1.3rem; border: 1px solid rgba(255,255,255,.12); border-top: 3px solid var(--signal); background: var(--navy); color: white; box-shadow: 0 28px 80px rgba(0,0,0,.38); outline: 0; transition: top .45s cubic-bezier(.2,.75,.2,1), left .45s cubic-bezier(.2,.75,.2,1); }
.onboarding-progress { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: .8rem; color: rgba(255,255,255,.55); font: 500 .62rem var(--display); letter-spacing: .08em; }
.onboarding-progress i { position: relative; height: 2px; overflow: hidden; background: rgba(255,255,255,.15); }
.onboarding-progress b { position: absolute; inset: 0 auto 0 0; width: 16.66%; background: var(--signal); transition: width .35s ease; }
.onboarding-kicker { display: block; margin-top: 1.4rem; color: var(--signal); font-size: .65rem; letter-spacing: .1em; text-transform: uppercase; }
.onboarding-card h2 { margin: .55rem 0 .7rem; font: 500 1.55rem/1.08 var(--display); letter-spacing: -.035em; }
.onboarding-card p { min-height: 3.3em; margin: 0; color: rgba(255,255,255,.72); font-size: .83rem; line-height: 1.65; }
.onboarding-actions { display: flex; justify-content: space-between; gap: .7rem; margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid rgba(255,255,255,.12); }
.onboarding-actions button { min-height: 42px; padding: 0 .95rem; border: 1px solid rgba(255,255,255,.25); background: transparent; color: rgba(255,255,255,.72); cursor: pointer; font-size: .72rem; }
.onboarding-actions .is-primary { margin-left: auto; border-color: var(--signal); background: var(--signal); color: var(--navy); font-weight: 700; }
.onboarding-actions button:hover { color: white; border-color: rgba(255,255,255,.5); }
.onboarding-actions .is-primary:hover { color: var(--navy); border-color: #c9e647; background: #c9e647; }

/* Workspace shell */
.workspace { min-height: 100dvh; background: #e9edef; }
.workspace-header { position: fixed; z-index: 30; top: 0; left: 0; right: 0; height: 66px; padding: 0 16px 0 22px; background: var(--navy); color: white; display: flex; align-items: center; border-bottom: 1px solid rgba(255,255,255,.1); }
.workspace-header .portal-brand { width: 132px; }
.workspace-crumb { margin-left: 2.2rem; padding-left: 2.2rem; height: 28px; display: flex; align-items: center; gap: .7rem; border-left: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.58); font-size: .72rem; }
.workspace-crumb strong { color: rgba(255,255,255,.82); font-weight: 500; }
.workspace-actions { margin-left: auto; display: flex; align-items: center; gap: .65rem; }
.save-state { display: flex; align-items: center; gap: .45rem; margin-right: .7rem; color: rgba(255,255,255,.62); font-size: .67rem; }
.save-state i { width: 6px; height: 6px; border-radius: 50%; background: var(--signal); }
.quiet-button { height: 42px; padding: 0 1rem; border: 1px solid rgba(255,255,255,.28); background: transparent; color: rgba(255,255,255,.88); cursor: pointer; font-size: .73rem; }
.avatar-button { width: 37px; height: 37px; border: 1px solid rgba(255,255,255,.18); background: #1a2c3c; color: var(--signal); display: grid; place-items: center; cursor: pointer; font: 600 .66rem var(--display); }
.account-menu { position: fixed; z-index: 50; top: 58px; right: 16px; width: 240px; padding: .55rem; background: white; color: var(--ink); box-shadow: 0 20px 50px rgba(0,0,0,.2); border: 1px solid var(--line); }
.account-menu > div { display: grid; gap: .2rem; padding: .8rem; border-bottom: 1px solid var(--line); }
.account-menu strong { font: 500 .8rem var(--display); }
.account-menu span { color: var(--muted); font-size: .61rem; }
.account-menu button { width: 100%; border: 0; background: transparent; text-align: left; padding: .7rem .8rem; cursor: pointer; font-size: .68rem; }
.account-menu button:hover { background: #f2f4f2; }
.workspace-layout { min-height: 100dvh; padding-top: 66px; padding-left: 68px; }
.workspace-nav { position: fixed; z-index: 25; top: 66px; bottom: 0; left: 0; width: 68px; background: var(--navy-2); display: flex; flex-direction: column; justify-content: space-between; border-right: 1px solid rgba(255,255,255,.08); }
.workspace-nav__primary, .workspace-nav__bottom { display: grid; }
.workspace-nav button { height: 66px; border: 0; border-left: 2px solid transparent; background: transparent; color: rgba(255,255,255,.38); cursor: pointer; display: grid; place-items: center; gap: .15rem; padding: .6rem .2rem; transition: color .25s, background .25s, border-color .25s; }
.workspace-nav button svg { width: 19px; fill: none; stroke: currentColor; stroke-width: 1.55; stroke-linecap: round; stroke-linejoin: round; }
.workspace-nav button span { font-size: .58rem; }
.workspace-nav button:hover, .workspace-nav button.is-active { color: white; background: rgba(255,255,255,.045); border-left-color: var(--signal); }

/* Editor */
.editor-view { min-height: calc(100dvh - 66px); display: grid; grid-template-columns: 312px minmax(560px, 1fr) 320px; }
.editor-view.is-library-collapsed { grid-template-columns: 68px minmax(560px, 1fr) 320px; }
.editor-view.is-library-collapsed .library-panel > :not(.panel-title) { display: none; }
.editor-view.is-library-collapsed .library-panel .panel-title { justify-content: center; padding-inline: 0; }
.editor-view.is-library-collapsed .library-panel .panel-title > div { display: none; }
.library-panel, .properties-panel { position: relative; z-index: 3; min-height: calc(100dvh - 66px); background: #f5f6f4; }
/* Feste Hoehe, damit die Vorlagenliste darin scrollt statt die ganze Seite zu verlaengern.
   Nur die Vorlagenliste darf den Restplatz einnehmen; alles andere behaelt seine Hoehe. */
.library-panel { height: calc(100dvh - 66px); border-right: 1px solid #d4dadd; display: flex; flex-direction: column; overflow-y: auto; }
.library-panel > * { flex: 0 0 auto; }
.properties-panel { border-left: 1px solid #d4dadd; }
.panel-title { min-height: 76px; display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.1rem 1rem 1.25rem; border-bottom: 1px solid var(--line); }
.panel-title span { display: block; margin-bottom: .25rem; color: #68757b; font-size: .6rem; letter-spacing: .09em; text-transform: uppercase; }
.panel-title h2 { margin: 0; font: 500 1.2rem var(--display); letter-spacing: -.025em; }
.panel-title > button { width: 28px; height: 28px; border: 1px solid #d4d9da; background: white; cursor: pointer; }
.search-field { display: flex; align-items: center; gap: .6rem; margin: 1rem; padding: .66rem .75rem; background: white; border: 1px solid #d8ddde; }
.search-field svg { width: 16px; fill: none; stroke: #748087; stroke-width: 1.6; }
.search-field input { min-width: 0; width: 100%; min-height: 26px; border: 0; outline: 0; background: transparent; font-size: .78rem; }
.quick-guide { margin: .8rem 1rem 0; padding: .75rem .8rem; border-left: 3px solid var(--signal-deep); background: #eef1e5; }
.quick-guide > strong { display: block; margin-bottom: .5rem; color: #344129; font: 600 .7rem var(--display); }
.quick-guide ol { display: grid; gap: .36rem; margin: 0; padding: 0; list-style: none; }
.quick-guide li { display: flex; align-items: center; gap: .5rem; color: #566268; font-size: .67rem; }
.quick-guide li b { width: 19px; height: 19px; display: grid; place-items: center; flex: 0 0 19px; background: var(--navy); color: white; font-size: .58rem; }
/* Kategorien brechen um statt seitlich wegzuscrollen: bei 18 Eintraegen waren sonst nur
   die ersten drei erreichbar, ohne sichtbaren Hinweis. Die Hoehe ist begrenzt, damit die
   Vorlagenliste Platz behaelt - der Rest ist vertikal erreichbar, mit sichtbarem Balken. */
.category-filter { display: flex; flex-wrap: wrap; align-content: flex-start; gap: .35rem; padding: 0 1rem .85rem; max-height: 131px; overflow-y: auto; scrollbar-width: thin; overscroll-behavior: contain; }
.color-legend { display: flex; flex-wrap: wrap; gap: .4rem .7rem; padding: 0 1rem .8rem; color: #5f6d73; font-size: .6rem; }
.color-legend span { display: inline-flex; align-items: center; gap: .3rem; }
.color-legend i { width: 7px; height: 7px; background: var(--legend); }
.category-filter button, .symbol-filter button { min-height: 34px; flex: 0 1 auto; max-width: 100%; border: 1px solid #cbd3d5; background: transparent; color: #58656b; padding: .42rem .55rem; cursor: pointer; font-size: .64rem; letter-spacing: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.category-filter button.is-active, .symbol-filter button.is-active { border-color: var(--navy); background: var(--navy); color: white; }
.template-count { display: flex; justify-content: space-between; align-items: center; padding: .7rem 1rem; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: #657278; font-size: .65rem; }
.template-count button { min-height: 34px; padding: .2rem .35rem; margin: -.2rem -.35rem; border: 0; background: transparent; color: var(--ink); cursor: pointer; font-size: .64rem; text-decoration: underline; text-underline-offset: 3px; }
/* Fuellt den Rest der Spalte, statt auf eine geschaetzte Resthoehe festgelegt zu sein.
   So bleibt die Liste nutzbar, egal wie viele Zeilen die Kategorien brauchen. */
.template-list { flex: 1 1 auto; min-height: 260px; overflow-y: auto; padding: .45rem .65rem; }
/* Auf flachen Bildschirmen weicht der Erklaertext, damit die Vorlagenliste nutzbar bleibt.
   Die Farbbedeutung steht direkt darueber ohnehin in der Legende. */
@media (max-height: 940px) { .library-note { display: none; } }
.template-item { width: 100%; min-height: 62px; display: grid; grid-template-columns: 40px 1fr auto; align-items: center; gap: .72rem; border: 0; border-left: 3px solid transparent; background: transparent; padding: .78rem .62rem; text-align: left; cursor: pointer; transition: background .2s, border-color .2s; }
.template-item:hover { background: white; }
.template-item.is-active { background: white; border-left-color: var(--signal-deep); box-shadow: 0 4px 18px rgba(11,30,45,.06); }
.template-item__icon { width: 38px; height: 38px; display: grid; place-items: center; color: var(--template-color, var(--navy)); background: var(--template-soft, #e6eaeb); border-bottom: 2px solid var(--template-color, var(--navy)); }
.template-item__icon svg { width: 19px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.template-item__icon img { width: 25px; height: 25px; object-fit: contain; }
.template-item strong { display: block; font: 500 .78rem var(--display); line-height: 1.35; }
.template-item small { display: block; margin-top: .23rem; color: #6f7c81; font-size: .62rem; }
.template-item > b { color: #a5adb0; font-size: .7rem; font-weight: 400; }
.library-note { margin: auto .8rem .8rem; padding: .75rem; border: 1px solid #dce1df; background: #eef1ec; }
.library-note span { color: #55671b; font-size: .59rem; letter-spacing: .08em; text-transform: uppercase; }
.library-note p { margin: .4rem 0 0; color: #56646a; font-size: .63rem; line-height: 1.6; }

.canvas-stage { min-width: 0; padding: 0 1.3rem 2rem; background: #dfe4e6; overflow: auto; position: relative; }
/* Darf auf schmalen Bildschirmen umbrechen statt ueber den Rand zu laufen. */
.canvas-toolbar { position: sticky; z-index: 5; top: 0; min-height: 58px; margin: 0 -1.3rem 1.2rem; padding: .4rem 1.3rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; background: rgba(233,237,239,.92); backdrop-filter: blur(12px); border-bottom: 1px solid #d2d8da; }
.canvas-toolbar__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; }
.properties-toggle { display: none; min-height: 34px; align-items: center; gap: .45rem; border: 1px solid #bcc6c9; background: rgba(255,255,255,.78); padding: .4rem .65rem; color: #33434b; cursor: pointer; font-size: .67rem; font-weight: 600; }
.properties-toggle svg { width: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; }
.properties-scrim { display: none; }
.device-label { display: flex; align-items: center; gap: .75rem; color: #56636a; font-size: .64rem; text-transform: uppercase; letter-spacing: .06em; }
.device-label b { color: #9aa3a6; font-weight: 500; }
.device-label em { padding: .28rem .45rem; background: var(--sheet-soft, #e8edfb); color: var(--sheet-color, #1640ad); font-style: normal; font-weight: 600; letter-spacing: .04em; }
/* Auswahl der Dokumentart: Blau = Maschinen/Arbeitsmittel, Orange = Gefahrstoffe. */
.kind-switch { display: flex; align-items: center; border: 1px solid #cbd2d4; background: rgba(255,255,255,.75); }
.kind-switch button { display: flex; align-items: center; gap: .38rem; min-height: 38px; padding: .3rem .7rem; border: 0; background: transparent; color: #55636a; cursor: pointer; font-size: .64rem; font-weight: 600; white-space: nowrap; }
.kind-switch button + button { border-left: 1px solid #cbd2d4; }
.kind-switch button i { width: 11px; height: 11px; flex: 0 0 11px; background: var(--kind-dot); border: 1px solid rgba(0,0,0,.14); }
.kind-switch button[aria-pressed="true"] { background: var(--kind-soft); color: var(--kind-dot); }
.kind-switch button:focus-visible { outline: 2px solid var(--signal-deep); outline-offset: -2px; }
.zoom-tools { display: flex; align-items: center; border: 1px solid #cbd2d4; background: rgba(255,255,255,.75); }
.zoom-tools button { width: 38px; height: 38px; border: 0; background: transparent; cursor: pointer; font-size: .9rem; }
.zoom-tools output { min-width: 48px; text-align: center; font-size: .65rem; }
.paper-wrap { width: 572px; height: 809px; margin: 0 auto; transition: width .25s, height .25s; }
/* Schriftgroessen des A4-Blattes zentral steuerbar.
   --sheet-scale skaliert Abschnittsueberschriften und Fliesstext,
   --sheet-head-scale zusaetzlich den Dokumentkopf (Betriebsanweisung / Rechtsgrundlage). */
.safety-sheet { --sheet-color: #1640ad; --sheet-soft: #e8edfb; --sheet-scale: 1.2; --sheet-head-scale: 1.32; width: 794px; min-height: 1123px; transform: scale(.72); transform-origin: top left; background: white; color: #101820; box-shadow: 0 18px 50px rgba(19,33,44,.18); font-family: Arial, sans-serif; padding: 19px; outline: 1px solid rgba(0,0,0,.03); }
.sheet-header { display: grid; grid-template-columns: 1.02fr 1.32fr .92fr; min-height: 118px; border: 3px solid var(--sheet-color); }
.sheet-header > div { display: flex; align-items: center; justify-content: center; padding: 7px; text-align: center; }
.sheet-header > div + div { border-left: 2px solid var(--sheet-color); }
.sheet-company { display: grid !important; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; text-align: left !important; justify-content: stretch !important; font-size: 12px; font-weight: bold; }
.sheet-logo { width: 96px; height: 52px; flex: 0 0 96px; border: 1px dashed #aab3b9; background: #fafbfb; display: grid; place-items: center; overflow: hidden; color: #90999e; font-size: 9px; font-weight: normal; }
.sheet-logo.has-logo { border-color: transparent; background: transparent; }
.sheet-logo.is-light-logo { padding: 6px; background: var(--navy); }
.sheet-company.logo-portrait { grid-template-columns: 60px minmax(0, 1fr); }
.sheet-company.logo-portrait .sheet-logo { width: 52px; height: 56px; }
.sheet-logo img { width: 100%; height: 100%; object-fit: contain; object-position: center; }
.sheet-company__details { min-width: 0; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 2px; line-height: 1.18; }
.sheet-company__details strong { max-width: 100%; font-size: calc(11.5px * var(--sheet-scale)); line-height: 1.15; overflow-wrap: anywhere; }
.sheet-company__details > span { max-width: 100%; color: #39454c; font-size: calc(8.5px * var(--sheet-scale)); font-weight: 400; line-height: 1.2; white-space: pre-line; overflow-wrap: anywhere; }
.sheet-company__details small { max-width: 100%; color: #59656b; font-size: calc(7.8px * var(--sheet-scale)); font-weight: 400; line-height: 1.15; overflow-wrap: anywhere; }
.sheet-company__details small b { color: #27343a; font: inherit; font-weight: 600; }
.sheet-document-type { flex-direction: column; gap: 5px; }
.sheet-document-type small { font-size: calc(10px * var(--sheet-head-scale)); font-weight: 700; letter-spacing: .03em; }
.sheet-document-type strong { font-size: calc(17px * var(--sheet-head-scale)); line-height: 1.12; }
.sheet-document-type em { max-width: 97%; color: #3f494e; font-family: Arial, sans-serif; font-size: calc(9px * var(--sheet-head-scale)); font-style: italic; font-weight: 600; line-height: 1.25; }
.sheet-section h3 b { font: inherit; }
.sheet-document-meta { display: grid !important; grid-template-rows: repeat(4, 1fr); align-items: stretch !important; justify-content: stretch !important; padding: 0 !important; text-align: left !important; }
.sheet-document-meta > div { min-width: 0; display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 5px; padding: 3px 6px; }
.sheet-document-meta > div + div { border-top: 1px solid var(--sheet-color); }
.sheet-document-meta span { color: #4c5960; font-size: calc(7px * var(--sheet-scale)); line-height: 1.15; text-transform: uppercase; letter-spacing: .02em; }
.sheet-document-meta b { min-width: 0; font-size: calc(9.2px * var(--sheet-scale)); line-height: 1.15; overflow-wrap: anywhere; }
.sheet-section { border: 3px solid var(--sheet-color); border-top: 0; position: relative; }
.sheet-section::after { content: ""; position: absolute; inset: -3px; border: 2px solid transparent; pointer-events: none; transition: border-color .2s; }
.sheet-section.is-selected::after { border-color: var(--signal-deep); }
.sheet-section h3 { min-height: 26px; margin: 0; padding: 5px 10px; background: var(--sheet-color); color: white; text-align: center; text-transform: uppercase; font-family: Arial, sans-serif; font-weight: bold; font-size: calc(13px * var(--sheet-scale)); line-height: 1.18; }
.sheet-section h3 span { margin-right: 7px; }
/* Mindesthoehen knapper gefasst, damit die groessere Schrift auf einer A4-Seite bleibt. */
.sheet-content { min-height: 58px; display: grid; grid-template-columns: 108px 1fr; }
.sheet-icons { border-right: 1px solid #8a9297; display: flex; align-items: center; justify-content: center; gap: 4px; padding: 8px; flex-wrap: wrap; align-content: center; }
.sheet-icons:empty { display: none; }
.sheet-content:has(.sheet-icons:empty) { grid-template-columns: 1fr; }
.sheet-icon { width: 42px; height: 42px; border: 0; padding: 0; background: transparent; cursor: pointer; }
.sheet-icon svg, .sheet-icon img { width: 100%; height: 100%; display: block; object-fit: contain; }
.editable-copy { min-height: 54px; padding: 8px 11px; font-size: calc(11.2px * var(--sheet-scale)); line-height: 1.4; white-space: pre-line; outline: none; }
.editable-copy:focus, [contenteditable="true"]:focus { background: rgba(184,213,42,.09); outline: 1px dashed #879c18; outline-offset: 1px; }
.sheet-section--safety .sheet-content { min-height: 198px; }
.sheet-section--danger .sheet-content { min-height: 104px; }
.sheet-section--incident .sheet-content, .sheet-section--aid .sheet-content { min-height: 72px; }
.sheet-section--consequences .sheet-content { min-height: 58px; }
.safety-sheet.is-hazard .sheet-section--safety .sheet-content { min-height: 172px; }
.safety-sheet.is-hazard .sheet-section--danger .sheet-content { min-height: 96px; }
/* Gefahrstoffblatt traegt sieben statt sechs Abschnitte. Die Schriftgroesse bleibt exakt
   wie beim blauen Blatt; stattdessen ruecken nur die Zeilen minimal zusammen, damit das
   Blatt einseitig bleibt. */
.safety-sheet.is-hazard .editable-copy { line-height: 1.32; }
.safety-sheet.is-hazard .sheet-section--scope .sheet-content,
.safety-sheet.is-hazard .sheet-section--consequences .sheet-content { min-height: 54px; }
.safety-sheet.is-hazard .sheet-section--aid .sheet-content { min-height: 64px; }
.sheet-symbol-source { margin: 0; padding: 3px 7px; border: 3px solid var(--sheet-color); border-top: 0; color: #4f5b61; font-size: 6.5px; line-height: 1.35; letter-spacing: .005em; }
.sheet-footer { display: grid; grid-template-columns: .72fr 1.28fr; min-height: 49px; border: 3px solid var(--sheet-color); border-top: 0; }
.sheet-footer > div { display: flex; flex-direction: column; padding: 5px 7px; font-size: calc(9px * var(--sheet-scale)); }
.sheet-footer > div + div { border-left: 1px solid #8a9297; }
.sheet-footer span { color: #59646a; }
.sheet-footer b { min-height: 15px; margin-top: 3px; border-bottom: 1px dotted #8a9297; }
.sheet-footer .sheet-signature-line { min-height: 19px; margin-top: 1px; }
.sheet-footer .sheet-signature small { margin-top: 2px; color: #68747a; font-size: calc(7px * var(--sheet-scale)); line-height: 1; }
/* Versionsvermerk unten rechts auf dem Blatt: Versionsnummer, Bearbeitende Person, Zeitpunkt. */
.sheet-version-line { margin: 2px 1px 0; color: #6a757b; font-size: 7.6px; line-height: 1.25; text-align: right; letter-spacing: .01em; }
.sheet-version-line b { font-weight: 700; color: #47545b; }
.edit-hint { display: flex; justify-content: center; align-items: center; gap: .5rem; margin: 1.3rem 0 0; color: #55646a; font-size: .68rem; font-weight: 550; }
.edit-hint span { width: 6px; height: 6px; background: var(--signal-deep); border-radius: 50%; }

.property-tabs { height: 47px; padding: 0 .8rem; border-bottom: 1px solid var(--line); display: grid; grid-template-columns: repeat(3, 1fr); }
.property-tabs button { position: relative; border: 0; background: transparent; color: #68757a; cursor: pointer; font-size: .69rem; }
.property-tabs button::after { content: ""; position: absolute; bottom: -1px; left: 10%; right: 10%; height: 2px; background: var(--navy); transform: scaleX(0); transition: transform .25s; }
.property-tabs button.is-active { color: var(--navy); }
.property-tabs button.is-active::after { transform: scaleX(1); }
.property-panel { padding: 1rem; display: grid; gap: 1rem; animation: panel-in .35s ease both; }
.properties-panel .field > span { font-size: .62rem; }
.properties-panel .field input, .properties-panel .field textarea { padding: .78rem .8rem; font-size: .76rem; }
.upload-field { display: grid; grid-template-columns: 70px 1fr; gap: .85rem; align-items: center; padding: .8rem; border: 1px dashed #bdc6c8; background: white; position: relative; }
.upload-field input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.logo-preview { width: 68px; height: 56px; display: grid; place-items: center; border: 1px solid #d4dada; background: #f3f5f3; color: #8c9598; font-size: .52rem; overflow: hidden; }
.logo-preview img { width: calc(100% - 10px); height: calc(100% - 10px); object-fit: contain; }
.logo-preview.is-light-logo { border-color: #263849; background: var(--navy); }
.upload-field strong { display: block; font: 500 .77rem var(--display); }
.upload-field label { display: block; margin-top: .25rem; color: #68757a; font-size: .62rem; }
.upload-field small { display: block; margin-top: .3rem; color: #7a8589; font-size: .56rem; line-height: 1.4; }
.property-context { display: grid; grid-template-columns: 8px 1fr; gap: .55rem; margin: -.1rem 0 0; padding: .75rem .8rem; background: #eef1e5; color: #536066; font-size: .63rem; line-height: 1.55; }
.property-context i { width: 7px; height: 7px; margin-top: .35rem; border-radius: 50%; background: var(--signal-deep); }
/* Versionsverlauf im Bearbeitungsbereich. */
.version-block { display: grid; gap: .55rem; padding-top: .9rem; border-top: 1px solid var(--line); }
.version-block__head { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem; }
.version-block__head strong { font: 500 .78rem var(--display); }
.version-block__head span { color: #768287; font-size: .58rem; text-transform: uppercase; letter-spacing: .07em; }
.version-current { padding: .6rem .7rem; background: #eef1e5; color: #4d5a60; font-size: .62rem; line-height: 1.5; }
.version-current b { color: #2d3a41; }
.version-list { display: grid; gap: .4rem; margin: 0; padding: 0; list-style: none; max-height: 268px; overflow-y: auto; }
.version-item { display: grid; grid-template-columns: 30px 1fr auto; align-items: center; gap: .55rem; padding: .5rem .6rem; border: 1px solid var(--line); background: white; }
.version-item.is-current { border-color: var(--signal-deep); background: #f6f8ef; }
.version-item__no { display: grid; place-items: center; width: 30px; height: 30px; background: #eef1f2; color: #46545b; font-size: .66rem; font-weight: 700; }
.version-item.is-current .version-item__no { background: var(--signal-deep); color: white; }
.version-item__info { min-width: 0; }
.version-item__info strong { display: block; font-size: .66rem; font-weight: 600; color: #2d3a41; overflow-wrap: anywhere; }
.version-item__info small { display: block; margin-top: .12rem; color: #768287; font-size: .57rem; line-height: 1.35; overflow-wrap: anywhere; }
.version-item__actions { display: flex; gap: .3rem; }
.version-item__actions button { border: 1px solid #cbd2d4; background: white; padding: .3rem .5rem; color: #45535a; cursor: pointer; font-size: .57rem; white-space: nowrap; }
.version-item__actions button:hover { border-color: var(--signal-deep); color: var(--navy); }
.version-empty { padding: .8rem .7rem; border: 1px dashed #c6ced0; color: #768287; font-size: .6rem; line-height: 1.5; }
.version-preview { display: grid; gap: .5rem; max-height: 46vh; overflow-y: auto; margin: 0; }
.version-preview section { padding: .55rem .65rem; border-left: 2px solid var(--line); }
.version-preview h4 { margin: 0 0 .2rem; font-size: .66rem; font-weight: 700; color: #2d3a41; }
.version-preview p { margin: 0; color: #4d5a60; font-size: .63rem; line-height: 1.5; white-space: pre-line; }
.symbol-target { padding: .7rem .8rem; border-left: 2px solid var(--signal-deep); background: #edf1e2; }
.symbol-target span { display: block; color: #66722b; font-size: .59rem; text-transform: uppercase; letter-spacing: .07em; }
.symbol-target strong { display: block; margin-top: .3rem; font: 500 .75rem var(--display); }
.symbol-license-status { display: grid; grid-template-columns: 1fr; gap: .42rem; }
.symbol-license-status > div { min-width: 0; display: grid; grid-template-columns: 30px 1fr; gap: .55rem; align-items: center; padding: .65rem; border: 1px solid #d8dfe0; background: white; }
.symbol-license-status > div > span { display: grid; width: 30px; height: 30px; place-items: center; border-radius: 50%; font: 650 .72rem var(--display); }
.symbol-license-status p { min-width: 0; margin: 0; }
.symbol-license-status strong, .symbol-license-status small { display: block; }
.symbol-license-status strong { color: #334047; font: 600 .67rem/1.3 var(--display); }
.symbol-license-status small { margin-top: .16rem; color: #66747a; font-size: .56rem; line-height: 1.4; }
.symbol-license-status .is-ready { border-color: #bfd9c8; background: #f0f7f2; }
.symbol-license-status .is-ready > span { background: #26714a; color: white; }
.symbol-filter { display: flex; flex-wrap: wrap; gap: .4rem; padding: 0 0 .15rem; }
.symbol-filter button { white-space: nowrap; }
.symbol-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .65rem; max-height: calc(100dvh - 515px); min-height: 190px; overflow-y: auto; padding-right: .28rem; }
.symbol-button { min-height: 120px; border: 1px solid #d0d8da; background: white; padding: .65rem .48rem; display: grid; grid-template-rows: 50px auto auto; place-items: center; gap: .3rem; cursor: pointer; transition: transform .2s, border-color .2s, background .2s; }
.symbol-button:hover { transform: translateY(-2px); border-color: #8b989c; }
.symbol-button svg, .symbol-button img { width: 50px; height: 50px; display: block; object-fit: contain; }
.symbol-button > span { color: #46565d; font-size: .66rem; line-height: 1.3; text-align: center; }
.symbol-button em { color: #78858a; font: 500 .5rem/1.2 var(--sans); font-style: normal; letter-spacing: .025em; text-align: center; text-transform: uppercase; }
.symbol-button.is-verified { border-color: #bdd7c6; box-shadow: inset 0 2px 0 #2b7751; }
.symbol-button.is-verified em { color: #246847; }
.symbol-note { margin: 0; color: #536268; font-size: .67rem; line-height: 1.62; }
.symbol-source-note { padding: .8rem; border: 1px solid #d7deda; background: #f1f4ed; }
.symbol-source-note strong { display: block; color: #314126; font: 600 .7rem var(--display); }
.symbol-source-note p { margin: .38rem 0 0; color: #536268; font-size: .63rem; line-height: 1.58; }
.symbol-source-note a { color: #263c70; text-underline-offset: 2px; }

/* Secondary workspace views */
.simple-view { min-height: calc(100dvh - 66px); padding: clamp(2rem, 5vw, 5rem); background: #eef1f1; }
.simple-view__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 2rem; max-width: 1180px; margin: 0 auto 2.5rem; }
.simple-view__head > div:first-child > span { color: var(--signal-deep); font-size: .58rem; letter-spacing: .11em; text-transform: uppercase; }
.simple-view__head h1 { margin: .55rem 0 .7rem; font: 500 clamp(2rem, 3.2vw, 3.4rem)/1 var(--display); letter-spacing: -.055em; }
.simple-view__head p { margin: 0; color: #55636c; font-size: .9rem; }
.document-table, .profile-card, .approval-list { max-width: 1180px; margin: auto; background: white; border: 1px solid #d8dedf; box-shadow: 0 12px 40px rgba(20,37,49,.06); }
.document-row { display: grid; grid-template-columns: 42px 1.4fr .8fr .7fr .5fr 24px; gap: 1rem; align-items: center; padding: 1rem 1.2rem; border-bottom: 1px solid var(--line); }
.document-row:last-child { border-bottom: 0; }
.document-row__icon { width: 38px; height: 38px; display: grid; place-items: center; background: #e9edeb; }
.document-row__icon svg { width: 20px; fill: none; stroke: var(--navy); stroke-width: 1.6; }
.document-row__icon img { width: 25px; height: 25px; object-fit: contain; }
.document-row strong { font: 500 .82rem var(--display); }
.document-row small { display: block; margin-top: .2rem; color: #69767b; font-size: .64rem; }
.document-row > span { color: #56636a; font-size: .7rem; }
.document-row button { border: 0; background: transparent; cursor: pointer; }
.status-pill { display: inline-flex !important; justify-self: start; padding: .3rem .5rem; color: #766219 !important; background: #f6efcf; font-size: .51rem !important; }
.status-pill--ready { color: #27664a !important; background: #ddf0e6; }
.profile-card { padding: clamp(1.5rem, 3vw, 2.5rem); }
.profile-card__intro { display: flex; align-items: center; gap: 1.2rem; padding-bottom: 2rem; border-bottom: 1px solid var(--line); }
.logo-preview--large { width: 84px; height: 84px; }
.profile-card__intro h2 { margin: 0; font: 500 1.2rem var(--display); }
.profile-card__intro p { margin: .4rem 0 0; color: #59666e; font-size: .78rem; }
.profile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; margin: 2rem 0; }
.field--wide { grid-column: 1 / -1; }
.admin-owners { display: grid; gap: .25rem; padding: .9rem 1rem; background: var(--navy); color: white; }
.admin-owners span { color: var(--signal); font-size: .48rem; letter-spacing: .09em; text-transform: uppercase; }
.admin-owners b { color: rgba(255,255,255,.72); font-size: .56rem; font-weight: 500; }
.approval-list { display: grid; }
.approval-item { display: grid; grid-template-columns: 44px 1.2fr 1fr auto; align-items: center; gap: 1rem; padding: 1rem 1.2rem; border-bottom: 1px solid var(--line); }
.approval-item:last-child { border-bottom: 0; }
.approval-avatar { width: 42px; height: 42px; display: grid; place-items: center; background: var(--navy); color: var(--signal); font: 500 .67rem var(--display); }
.approval-item strong { display: block; font: 500 .82rem var(--display); }
.approval-item small { display: block; color: #66747a; font-size: .64rem; margin-top: .2rem; }
.approval-item time { color: #637076; font-size: .66rem; }
.approval-actions { display: flex; gap: .45rem; }
.approval-actions button { min-height: 40px; border: 1px solid #c3cccf; background: white; padding: .6rem .8rem; cursor: pointer; font-size: .66rem; }
.approval-actions .approve { border-color: var(--navy); background: var(--navy); color: white; }
.admin-section-label { max-width: 1180px; margin: 1.7rem auto .65rem; display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.admin-section-label:first-of-type { margin-top: 0; }
.admin-section-label span { color: var(--navy); font: 500 .8rem var(--display); }
.admin-section-label small { color: #69777d; font-size: .6rem; }
.customer-list .approval-item { grid-template-columns: 44px 1.2fr .65fr auto; }

/* Owner-only guided work-safety atlas preview */
.sr-only { 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; }
.admin-preview-callout { max-width: 1180px; margin: 0 auto 2rem; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 2rem; align-items: center; padding: 1.35rem 1.5rem; color: white; background: var(--navy); border-left: 3px solid var(--signal); box-shadow: 0 12px 40px rgba(20,37,49,.09); }
.admin-preview-callout > div > span { color: var(--signal); font-size: .55rem; letter-spacing: .1em; text-transform: uppercase; }
.admin-preview-callout h2 { margin: .45rem 0 .4rem; font: 500 1.25rem var(--display); }
.admin-preview-callout p { max-width: 740px; margin: 0; color: rgba(255,255,255,.68); font-size: .74rem; line-height: 1.55; }
.admin-preview-callout .primary-action { min-width: 170px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.24); }

.roadmap-view { --atlas-blue:#2a63c7; --atlas-orange:#d76616; --atlas-green:#278057; --atlas-red:#b84339; --atlas-yellow:#c89b22; min-height: calc(100dvh - 66px); color: var(--ink); background: #e8edee; }
.roadmap-hero { min-height: 220px; display: flex; align-items: flex-end; justify-content: space-between; gap: 3rem; padding: clamp(2.3rem,5vw,4.6rem) clamp(1.4rem,5vw,5.2rem) 2.6rem; color: white; background: var(--navy); border-bottom: 1px solid rgba(255,255,255,.1); }
.roadmap-hero__copy > span { color: var(--signal); font-size: .58rem; letter-spacing: .12em; text-transform: uppercase; }
.roadmap-hero h1 { max-width: 760px; margin: .7rem 0 .65rem; font: 500 clamp(2.25rem,4vw,4rem)/.98 var(--display); letter-spacing: -.052em; }
.roadmap-hero p { max-width: 680px; margin: 0; color: rgba(255,255,255,.67); font-size: .86rem; line-height: 1.62; }
.roadmap-mode { flex: 0 0 auto; display: grid; grid-template-columns: 8px auto; gap: .72rem; align-items: center; padding: .8rem 1rem; border-top: 1px solid rgba(255,255,255,.22); border-bottom: 1px solid rgba(255,255,255,.13); }
.roadmap-mode > i { width: 8px; height: 8px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 5px rgba(184,213,42,.1); }
.roadmap-mode span, .roadmap-mode strong { display: block; }
.roadmap-mode span { margin-bottom: .2rem; color: var(--signal); font-size: .5rem; letter-spacing: .1em; text-transform: uppercase; }
.roadmap-mode strong { color: rgba(255,255,255,.8); font-size: .65rem; font-weight: 550; }
.roadmap-workspace { max-width: 1480px; margin: auto; display: grid; grid-template-columns: 275px minmax(0,1fr); align-items: start; }
.roadmap-rail { position: sticky; top: 66px; min-height: calc(100dvh - 66px); padding: 2rem 1.25rem; color: white; background: var(--navy-2); border-right: 1px solid rgba(255,255,255,.08); }
.roadmap-progress { display: grid; gap: .35rem; margin-bottom: 1.45rem; padding-bottom: 1.25rem; border-bottom: 1px solid rgba(255,255,255,.1); }
.roadmap-progress span { color: rgba(255,255,255,.42); font-size: .5rem; letter-spacing: .1em; text-transform: uppercase; }
.roadmap-progress strong { color: rgba(255,255,255,.76); font-size: .66rem; font-weight: 550; }
.roadmap-progress > i { height: 2px; margin-top: .35rem; overflow: hidden; background: rgba(255,255,255,.12); }
.roadmap-progress > i > b { display: block; width: 25%; height: 100%; background: var(--signal); transition: width .45s cubic-bezier(.2,.75,.2,1); }
.roadmap-rail nav { display: grid; }
.roadmap-rail nav button { min-height: 72px; display: grid; grid-template-columns: 30px 1fr; gap: .6rem; align-items: center; border: 0; border-bottom: 1px solid rgba(255,255,255,.08); background: transparent; color: rgba(255,255,255,.42); padding: .65rem .2rem; text-align: left; cursor: pointer; transition: color .25s, transform .25s; }
.roadmap-rail nav button:hover, .roadmap-rail nav button.is-active { color: white; transform: translateX(2px); }
.roadmap-rail nav button > b { font: 500 .55rem var(--display); color: var(--signal); }
.roadmap-rail nav button span, .roadmap-rail nav button strong, .roadmap-rail nav button small { display: block; }
.roadmap-rail nav button strong { font: 550 .72rem var(--display); }
.roadmap-rail nav button small { margin-top: .23rem; color: rgba(255,255,255,.38); font-size: .55rem; }
.roadmap-rail nav button.is-complete > b::after { content: "✓"; margin-left: .3rem; color: var(--signal); }
.roadmap-rail__note { margin-top: 1.8rem; padding-top: 1.15rem; border-top: 1px solid rgba(255,255,255,.1); }
.roadmap-rail__note > span { color: rgba(255,255,255,.42); font-size: .5rem; letter-spacing: .1em; text-transform: uppercase; }
.roadmap-rail__note p { display: grid; grid-template-columns: 7px 1fr; gap: .5rem; margin: .7rem 0 0; color: rgba(255,255,255,.66); font-size: .57rem; line-height: 1.45; }
.roadmap-rail__note p i { width: 7px; height: 7px; margin-top: 2px; background: #1640ad; }
.roadmap-rail__note p i.is-orange { background: #d76616; }
.roadmap-rail__note small { display: block; margin-top: .9rem; color: rgba(255,255,255,.34); font-size: .53rem; line-height: 1.5; }
.roadmap-stage { min-width: 0; padding: clamp(2rem,4vw,4rem); }
.roadmap-panel { max-width: 1120px; margin: auto; animation: panel-in .42s ease both; }
.roadmap-panel__head { margin-bottom: 2rem; }
.roadmap-panel__head > span, .roadmap-panel__head > div > span { color: #667a10; font-size: .56rem; letter-spacing: .11em; text-transform: uppercase; }
.roadmap-panel__head h2 { max-width: 760px; margin: .6rem 0 .7rem; font: 500 clamp(1.8rem,3vw,3rem)/1.02 var(--display); letter-spacing: -.045em; }
.roadmap-panel__head p { max-width: 720px; margin: 0; color: #58666e; font-size: .82rem; line-height: 1.65; }
.customer-models { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid #d3dbdd; background: white; box-shadow: 0 12px 40px rgba(20,37,49,.05); }
.customer-models button { min-height: 176px; padding: 1.35rem 1.45rem; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--ink); text-align: left; cursor: pointer; position: relative; transition: background .25s, color .25s; }
.customer-models button:nth-child(odd) { border-right: 1px solid var(--line); }
.customer-models button:nth-last-child(-n+2) { border-bottom: 0; }
.customer-models button::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; transform: scaleX(0); transform-origin: left; background: var(--signal); transition: transform .35s ease; }
.customer-models button:hover { background: #f6f8f7; }
.customer-models button.is-selected { color: white; background: var(--navy); }
.customer-models button.is-selected::before { transform: scaleX(1); }
.customer-models button > span, .customer-models button > strong, .customer-models button > small { display: block; }
.customer-models button > span { color: #708087; font-size: .52rem; letter-spacing: .09em; text-transform: uppercase; }
.customer-models button.is-selected > span { color: var(--signal); }
.customer-models button > strong { margin-top: .75rem; font: 550 1.05rem var(--display); }
.customer-models button > p { max-width: 390px; min-height: 2.9em; margin: .55rem 0 .8rem; color: #607078; font-size: .7rem; line-height: 1.5; }
.customer-models button.is-selected > p { color: rgba(255,255,255,.66); }
.customer-models button > small { color: #51656e; font-size: .59rem; font-weight: 650; }
.customer-models button.is-selected > small { color: rgba(255,255,255,.82); }
.roadmap-company { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; padding: 1.5rem; border: 1px solid #d3dbdd; background: white; box-shadow: 0 12px 40px rgba(20,37,49,.05); }
.roadmap-actions { display: flex; align-items: center; justify-content: flex-end; gap: .75rem; margin-top: 1.35rem; }
.roadmap-actions > span { margin-right: auto; color: #69777d; font-size: .61rem; line-height: 1.45; }
.roadmap-actions .primary-action { min-width: 190px; }
.operation-check { display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding: 0; border: 1px solid #d3dbdd; background: white; box-shadow: 0 12px 40px rgba(20,37,49,.05); }
.operation-check label { position: relative; min-height: 112px; display: grid; grid-template-columns: 24px minmax(0,1fr) auto; gap: .8rem; align-items: center; padding: 1.1rem 1.25rem; border-bottom: 1px solid var(--line); cursor: pointer; }
.operation-check label:nth-child(odd) { border-right: 1px solid var(--line); }
.operation-check label:nth-last-child(-n+2) { border-bottom: 0; }
.operation-check input { width: 18px; height: 18px; accent-color: var(--navy); }
.operation-check span, .operation-check strong, .operation-check small { display: block; }
.operation-check strong { font: 550 .8rem var(--display); }
.operation-check small { margin-top: .3rem; color: #66747a; font-size: .62rem; line-height: 1.45; }
.operation-check label > b { min-width: 52px; color: #7a858a; font-size: .54rem; font-weight: 650; text-align: right; text-transform: uppercase; }
.operation-check label:has(input:checked) { background: #f4f7ed; box-shadow: inset 3px 0 #738b19; }
.operation-check label:has(input:checked) > b { color: #516719; }
.roadmap-legal-note { display: grid; grid-template-columns: 7px 1fr; gap: .65rem; margin: 1rem 0 0; padding: .85rem 1rem; color: #5c696f; border-left: 2px solid #8a979c; background: rgba(255,255,255,.55); font-size: .64rem; line-height: 1.55; }
.roadmap-legal-note i { width: 7px; height: 7px; margin-top: .2rem; border-radius: 50%; background: #6c7b82; }
.roadmap-panel__head--map { display: flex; justify-content: space-between; align-items: flex-end; gap: 1.5rem; }
.route-summary { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); margin-bottom: 1rem; border: 1px solid #cfd8da; background: #f5f7f7; }
.route-summary > div { padding: .85rem 1rem; border-right: 1px solid #d9e0e2; }
.route-summary > div:last-child { border-right: 0; }
.route-summary span, .route-summary strong { display: block; }
.route-summary span { color: #6b797f; font-size: .49rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.route-summary strong { margin-top: .3rem; font: 550 1rem var(--display); }
.safety-atlas { position: relative; min-height: 680px; display: grid; grid-template-columns: minmax(0,1.55fr) minmax(270px,.72fr); grid-template-rows: auto 1fr; overflow: hidden; color: white; background: var(--navy); border: 1px solid #152b3d; box-shadow: 0 22px 60px rgba(8,23,34,.14); }
.safety-atlas__topography { position: absolute; inset: 0; opacity: .19; pointer-events: none; background-image: radial-gradient(circle at 18% 23%, transparent 0 74px, rgba(255,255,255,.17) 75px 76px, transparent 77px 94px, rgba(255,255,255,.12) 95px 96px, transparent 97px), radial-gradient(circle at 72% 68%, transparent 0 110px, rgba(255,255,255,.14) 111px 112px, transparent 113px 140px, rgba(255,255,255,.1) 141px 142px, transparent 143px), linear-gradient(122deg,transparent 49.7%,rgba(255,255,255,.08) 50%,transparent 50.3%); background-size: 360px 330px, 520px 440px, 190px 190px; }
.safety-atlas__heading { grid-column: 1 / -1; position: relative; z-index: 1; display: grid; grid-template-columns: auto 1fr; gap: .25rem 1rem; align-items: baseline; padding: 1.4rem 1.6rem; border-bottom: 1px solid rgba(255,255,255,.12); }
.safety-atlas__heading span { grid-row: 1 / 3; align-self: center; padding-right: 1rem; color: var(--signal); border-right: 1px solid rgba(255,255,255,.15); font-size: .5rem; letter-spacing: .1em; text-transform: uppercase; }
.safety-atlas__heading strong { font: 550 1rem var(--display); }
.safety-atlas__heading small { color: rgba(255,255,255,.48); font-size: .59rem; }
.atlas-route { position: relative; z-index: 1; padding: 1rem 1.5rem 1.6rem 2.8rem; border-right: 1px solid rgba(255,255,255,.12); }
.atlas-region { --route-color:var(--atlas-blue); position: relative; padding: .95rem 0 1rem 1.25rem; border-bottom: 1px solid rgba(255,255,255,.09); }
.atlas-region:last-child { border-bottom: 0; }
.atlas-region::before { content: ""; position: absolute; left: -18px; top: 1.27rem; width: 9px; height: 9px; background: var(--route-color); box-shadow: 0 0 0 5px rgba(255,255,255,.045); transform: rotate(45deg); }
.atlas-region::after { content: ""; position: absolute; left: -14px; top: 2rem; bottom: -1rem; width: 1px; background: linear-gradient(var(--route-color),rgba(255,255,255,.08)); }
.atlas-region:last-child::after { display: none; }
.atlas-region.is-orange { --route-color:var(--atlas-orange); }
.atlas-region.is-green { --route-color:var(--atlas-green); }
.atlas-region.is-red { --route-color:var(--atlas-red); }
.atlas-region.is-yellow { --route-color:var(--atlas-yellow); }
.atlas-region__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.atlas-region__head span { color: var(--route-color); font-size: .5rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.atlas-region__head strong { font: 550 .82rem var(--display); }
.atlas-stations { display: flex; flex-wrap: wrap; gap: .42rem; margin-top: .7rem; }
.atlas-station { min-height: 34px; border: 1px solid rgba(255,255,255,.17); border-left: 2px solid var(--route-color); background: rgba(255,255,255,.035); color: rgba(255,255,255,.72); padding: .42rem .58rem; cursor: pointer; font-size: .58rem; text-align: left; transition: color .2s, background .2s, border-color .2s, transform .2s; }
.atlas-station:hover, .atlas-station.is-active { color: white; border-color: var(--route-color); background: rgba(255,255,255,.08); transform: translateY(-1px); }
.atlas-station.is-complete::after { content: " ✓"; color: var(--signal); }
.atlas-station.is-review::before { content: "Prüfen · "; color: #e9c982; }
.atlas-station.is-addon { border-style: dashed; opacity: .64; }
.atlas-station.is-addon::after { content: " · Zusatz"; color: rgba(255,255,255,.5); }
.atlas-station.is-addon.is-complete::after { content: " · Zusatz ✓"; color: var(--signal); }
.atlas-detail { position: relative; z-index: 1; align-self: start; min-height: 100%; padding: 1.5rem; background: rgba(255,255,255,.035); }
.atlas-detail__index { color: var(--signal); font-size: .52rem; letter-spacing: .1em; text-transform: uppercase; }
.atlas-detail h3 { margin: .65rem 0 .7rem; font: 550 1.35rem/1.1 var(--display); letter-spacing: -.03em; }
.atlas-detail > p { margin: 0; color: rgba(255,255,255,.61); font-size: .7rem; line-height: 1.6; }
.atlas-detail__empty { display: flex; align-items: center; gap: .55rem; margin-top: 2rem; padding-top: 1rem; color: rgba(255,255,255,.35); border-top: 1px solid rgba(255,255,255,.1); font-size: .57rem; }
.atlas-detail__empty i { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.24); }
.atlas-detail__meta { display: grid; gap: .65rem; margin: 1.15rem 0; padding: .95rem 0; border-top: 1px solid rgba(255,255,255,.11); border-bottom: 1px solid rgba(255,255,255,.11); }
.atlas-detail__meta div { display: grid; grid-template-columns: 72px 1fr; gap: .6rem; }
.atlas-detail__meta span { color: rgba(255,255,255,.38); font-size: .5rem; letter-spacing: .07em; text-transform: uppercase; }
.atlas-detail__meta strong { color: rgba(255,255,255,.76); font-size: .6rem; font-weight: 550; line-height: 1.45; }
.atlas-detail__actions { display: grid; gap: .55rem; }
.atlas-detail__actions button { min-height: 42px; border: 1px solid rgba(255,255,255,.22); background: transparent; color: rgba(255,255,255,.78); padding: .6rem .75rem; cursor: pointer; font-size: .62rem; text-align: left; }
.atlas-detail__actions button.is-primary { border-color: var(--signal); background: var(--signal); color: var(--navy); font-weight: 700; }
.atlas-detail__actions button:hover { border-color: rgba(255,255,255,.48); color: white; }
.atlas-detail__actions button.is-primary:hover { border-color: #c9e647; background: #c9e647; color: var(--navy); }
.roadmap-actions--map { padding-bottom: 2rem; }
.dialog-preview-form { display: grid; gap: .75rem; margin: 1.1rem 0; padding: 1rem; border: 1px solid #d6dcdd; background: white; }
.dialog-preview-form label { display: grid; gap: .35rem; }
.dialog-preview-form label > span { color: #59676e; font-size: .58rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.dialog-preview-form input, .dialog-preview-form textarea { width: 100%; border: 1px solid #cfd6d7; background: #f8f9f8; padding: .7rem .75rem; color: var(--ink); font: inherit; outline: 0; }
.dialog-preview-form input:focus, .dialog-preview-form textarea:focus { border-color: #7f9220; box-shadow: 0 0 0 3px rgba(184,213,42,.12); }

/* Owner-only room calendar */
.booking-admin-head .secondary-action { display: inline-flex; align-items: center; text-decoration: none; white-space: nowrap; }
.booking-admin-layout { display: grid; grid-template-columns: minmax(280px, 390px) minmax(0, 1fr); gap: 1.25rem; max-width: 1180px; margin: auto; align-items: start; }
.booking-editor, .booking-list-panel { border: 1px solid #d8dedf; background: white; box-shadow: 0 12px 40px rgba(20,37,49,.06); }
.booking-editor { position: sticky; top: 92px; display: grid; gap: 1rem; padding: 1.45rem; }
.booking-editor__head { display: grid; gap: .35rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.booking-editor__head span, .booking-list-head span { color: var(--signal-deep); font-size: .55rem; letter-spacing: .1em; text-transform: uppercase; }
.booking-editor__head strong { font: 500 1.2rem var(--display); }
.booking-privacy-note { display: grid; grid-template-columns: 7px 1fr; gap: .65rem; margin: 0; color: #5d6a70; font-size: .67rem; line-height: 1.55; }
.booking-privacy-note i { width: 7px; height: 7px; margin-top: .2rem; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 4px rgba(184,213,42,.14); }
.booking-day-preview { border: 1px solid #d6dfe1; background: #f6f8f8; }
.booking-day-preview__head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .65rem .75rem; color: white; background: var(--navy); }
.booking-day-preview__head span { color: #9cb0bb; font-size: .48rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.booking-day-preview__head strong { overflow: hidden; font-size: .55rem; font-weight: 600; text-overflow: ellipsis; text-transform: capitalize; white-space: nowrap; }
.booking-day-preview__slots { display: grid; max-height: 244px; overflow: auto; }
.booking-day-preview__slots > p { margin: 0; padding: .85rem; color: #6b777b; font-size: .62rem; text-align: center; }
.booking-day-slot { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: .55rem; align-items: center; padding: .55rem .65rem; border-bottom: 1px solid #dfe5e6; background: white; }
.booking-day-slot:last-of-type { border-bottom: 0; }
.booking-day-slot > span { display: grid; width: 27px; height: 27px; place-items: center; color: #315066; border: 1px solid #cdd8dd; background: #f3f6f7; font-size: .49rem; font-weight: 800; }
.booking-day-slot strong, .booking-day-slot small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.booking-day-slot strong { color: var(--ink); font-size: .6rem; }
.booking-day-slot small { margin-top: .14rem; color: #647279; font-size: .54rem; }
.booking-day-slot em { color: #738087; font-size: .5rem; font-style: normal; white-space: nowrap; }
.booking-day-slot.is-editing { background: #f5f9e8; box-shadow: inset 3px 0 var(--signal-deep); }
.booking-day-slot.has-conflict { background: #fff3f1; box-shadow: inset 3px 0 #b4453d; }
.booking-day-availability { display: grid; grid-template-columns: 7px 1fr; gap: .55rem; align-items: center; padding: .62rem .75rem; color: #426139; border-top: 1px solid #d8e2d2; background: #f3f8ee; font-size: .57rem; line-height: 1.4; }
.booking-day-availability i { width: 7px; height: 7px; border-radius: 50%; background: #64933f; }
.booking-day-availability.has-conflict { color: #873d37; border-color: #ecd4d1; background: #fff3f1; }
.booking-day-availability.has-conflict i { background: #b4453d; }
.booking-form-error { margin: 0; padding: .7rem .8rem; color: #8f352f; border-left: 3px solid #b4453d; background: #fff0ee; font-size: .64rem; line-height: 1.5; }
.booking-form-actions { display: flex; justify-content: flex-end; gap: .6rem; padding-top: .25rem; }
.booking-form-actions .primary-action { min-width: 180px; }
.booking-list-panel { min-width: 0; }
.booking-list-head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.2rem 1.35rem; border-bottom: 1px solid var(--line); }
.booking-list-head h2 { margin: .35rem 0 0; font: 500 1.15rem var(--display); }
.booking-list-head button { min-height: 38px; padding: 0 .8rem; border: 1px solid #cad2d4; background: white; color: #4f5d64; cursor: pointer; font-size: .65rem; }
.booking-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--line); background: #f4f7f7; }
.booking-stats > div { display: grid; grid-template-columns: auto 1fr; gap: .1rem .55rem; align-items: baseline; padding: .85rem 1rem; border-right: 1px solid #dbe2e3; }
.booking-stats > div:last-child { border-right: 0; }
.booking-stats span { grid-column: 1 / -1; color: #69777d; font-size: .49rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.booking-stats strong { color: var(--navy); font: 500 1.35rem var(--display); }
.booking-stats small { color: #718087; font-size: .55rem; }
.booking-list-filter { display: flex; gap: .35rem; padding: .75rem 1rem; border-bottom: 1px solid var(--line); }
.booking-list-filter button { min-height: 32px; padding: 0 .7rem; color: #657278; border: 1px solid #ccd5d7; background: white; cursor: pointer; font-size: .58rem; }
.booking-list-filter button.is-active { color: white; border-color: var(--navy); background: var(--navy); }
.booking-admin-list { display: grid; }
.booking-day-group { border-bottom: 1px solid #cfd8da; }
.booking-day-group:last-child { border-bottom: 0; }
.booking-day-group > header { padding: .75rem 1.15rem; border-bottom: 1px solid #dae1e2; background: #f1f4f5; }
.booking-day-group > header > div { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.booking-day-group > header time { color: #253a48; font: 500 .76rem var(--display); text-transform: capitalize; }
.booking-day-group > header span { padding: .25rem .45rem; color: #315a74; background: #e0eaef; font-size: .5rem; font-weight: 800; white-space: nowrap; }
.booking-day-group.is-past { opacity: .68; }
.booking-admin-item { display: grid; grid-template-columns: 30px minmax(125px, .65fr) minmax(170px, 1.2fr) auto; gap: .85rem; align-items: center; padding: .9rem 1.15rem; border-bottom: 1px solid var(--line); }
.booking-admin-item:last-child { border-bottom: 0; }
.booking-admin-sequence { display: grid; width: 29px; height: 29px; place-items: center; color: #315066; border: 1px solid #ced9dd; background: #f3f6f7; font-size: .5rem; font-weight: 800; }
.booking-admin-date span, .booking-admin-date strong, .booking-admin-copy strong, .booking-admin-copy small { display: block; }
.booking-admin-date span { margin-top: .2rem; color: #69767c; font-size: .56rem; }
.booking-admin-date strong { font: 500 .75rem var(--display); }
.booking-admin-copy strong { font: 500 .79rem var(--display); }
.booking-admin-copy small { margin-top: .25rem; color: #69777d; font-size: .62rem; }
.booking-admin-actions { display: flex; gap: .35rem; }
.booking-admin-actions button { min-height: 38px; padding: 0 .65rem; border: 1px solid #c7d0d2; background: white; color: #46545c; cursor: pointer; font-size: .62rem; }
.booking-admin-actions button:hover { border-color: #93a0a4; }
.booking-admin-actions .is-danger { color: #96332d; border-color: #dec4c1; }
.booking-list-empty { display: grid; gap: .35rem; padding: 3rem 1.4rem; color: #748087; text-align: center; font-size: .72rem; }
.booking-list-empty strong { color: var(--ink); font: 500 .9rem var(--display); }

/* Dialog and toast */
.dialog-backdrop { position: fixed; z-index: 100; inset: 0; padding: 1.5rem; display: grid; place-items: center; background: rgba(4,12,19,.72); backdrop-filter: blur(7px); }
.portal-dialog { width: min(100%, 520px); position: relative; padding: 2rem; background: var(--paper); box-shadow: 0 30px 90px rgba(0,0,0,.4); }
.dialog-close { position: absolute; top: .7rem; right: .7rem; width: 34px; height: 34px; border: 0; background: transparent; cursor: pointer; font-size: 1.3rem; }
.dialog-kicker { color: var(--signal-deep); font-size: .57rem; letter-spacing: .1em; text-transform: uppercase; }
.portal-dialog h2 { max-width: 430px; margin: .65rem 0 1rem; font: 500 1.7rem/1.1 var(--display); letter-spacing: -.04em; }
.portal-dialog [data-dialog-content] { color: #56636b; font-size: .84rem; line-height: 1.65; }
.portal-dialog [data-dialog-content] p { margin: 0 0 .7rem; }
.dialog-actions { display: flex; justify-content: flex-end; gap: .6rem; margin-top: 1.5rem; }
.dialog-actions button, .dialog-actions a { min-height: 44px; display: inline-flex; align-items: center; border: 1px solid #cbd2d3; background: white; padding: .6rem 1rem; color: var(--ink); text-decoration: none; cursor: pointer; font-size: .72rem; }
.dialog-actions .is-primary { border-color: var(--navy); background: var(--navy); color: white; }
.dialog-actions .is-primary:disabled { border-color: #b9c0c2; background: #b9c0c2; cursor: not-allowed; }
.toast { position: fixed; z-index: 150; right: 1.2rem; bottom: 1.2rem; max-width: 360px; padding: .9rem 1.05rem; background: var(--navy); color: white; border-left: 3px solid var(--signal); box-shadow: 0 18px 45px rgba(0,0,0,.25); font-size: .76rem; line-height: 1.55; animation: toast-in .35s ease both; }

@keyframes panel-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

@media (max-width: 1260px) {
  .editor-view { grid-template-columns: 265px minmax(520px, 1fr) 285px; }
  .reference-stack { display: none; }
  .access-story { padding-left: 4vw; padding-right: 4vw; }
  .access-proof { max-width: 650px; }
  .roadmap-workspace { grid-template-columns: 235px minmax(0,1fr); }
  .safety-atlas { grid-template-columns: minmax(0,1.3fr) minmax(250px,.75fr); }
}

@media (max-width: 1040px) {
  .access-main { grid-template-columns: 1fr 400px; }
  .access-story h1 { font-size: clamp(3.2rem, 6.2vw, 5.2rem); }
  .access-proof { grid-template-columns: 1fr; max-width: 430px; }
  .access-proof > div { display: grid; grid-template-columns: 28px 1fr; gap: .2rem .7rem; padding: .8rem 0; }
  .access-proof > div + div { padding-left: 0; border-left: 0; border-top: 1px solid rgba(255,255,255,.1); }
  .access-proof strong { margin: 0; }
  .access-proof small { grid-column: 2; margin: 0; }
  .editor-view { grid-template-columns: 235px minmax(500px, 1fr); }
  .editor-view.is-library-collapsed { grid-template-columns: 68px minmax(500px, 1fr); }
  .workspace-crumb, .save-state { display: none; }
  .properties-toggle { display: inline-flex; }
  .properties-panel { position: fixed; z-index: 24; right: 0; top: 66px; bottom: 0; width: 330px; overflow-y: auto; box-shadow: -20px 0 55px rgba(12,28,40,.2); transform: translateX(102%); transition: transform .3s cubic-bezier(.2,.75,.2,1); }
  .properties-panel.is-open { transform: none; }
  .properties-scrim { position: fixed; z-index: 23; inset: 66px 0 0 68px; border: 0; background: rgba(7,17,29,.32); backdrop-filter: blur(2px); cursor: default; }
  .properties-open .properties-scrim { display: block; }
  .roadmap-hero { align-items: flex-start; flex-direction: column; gap: 1.5rem; }
  .roadmap-mode { align-self: stretch; }
  .roadmap-stage { padding-inline: 2rem; }
  .safety-atlas { grid-template-columns: 1fr; }
  .atlas-route { border-right: 0; }
  .atlas-detail { min-height: 0; border-top: 1px solid rgba(255,255,255,.12); }
}

@media (max-width: 820px) {
  .access-header { height: 72px; }
  .access-main { display: block; }
  .access-story { min-height: auto; padding: 8rem 1.35rem 4rem; }
  .access-story h1 { font-size: clamp(3rem, 12vw, 5.2rem); }
  .access-lead { max-width: 620px; }
  .access-proof { max-width: none; margin-top: 3rem; }
  .auth-shell { min-height: auto; padding: 6rem 1.35rem 5rem; }
  .auth-signal { top: 2rem; left: 1.35rem; right: 1.35rem; }
  .auth-footer { left: 1.35rem; right: 1.35rem; }
  .workspace-header { padding: 0 .7rem; }
  .workspace-header .portal-brand { width: 105px; }
  .workspace-crumb, .save-state, .quiet-button { display: none; }
  .workspace-actions { gap: .35rem; }
  .workspace-layout { padding-left: 0; padding-bottom: 57px; }
  .workspace-nav { top: auto; right: 0; width: auto; height: 57px; flex-direction: row; border-top: 1px solid rgba(255,255,255,.08); }
  .workspace-nav__primary { flex: 1; display: flex; }
  .workspace-nav__primary button { flex: 1; min-width: 0; }
  .workspace-nav__bottom { width: 58px; }
  .workspace-nav button { height: 57px; border-left: 0; border-bottom: 2px solid transparent; padding-inline: .1rem; }
  /* Lange Beschriftungen wie "Raumkalender" duerfen umbrechen, statt in den
     Nachbarknopf zu laufen. Betrifft vor allem die Administration mit sechs Eintraegen. */
  .workspace-nav button span { max-width: 100%; font-size: .54rem; line-height: 1.12; text-align: center; overflow-wrap: anywhere; }
  .workspace-nav button:hover, .workspace-nav button.is-active { border-left-color: transparent; border-bottom-color: var(--signal); }
  .editor-view { display: flex; flex-direction: column; min-height: auto; }
  /* Auf schmalen Bildschirmen waechst die Bibliothek mit dem Inhalt, die Seite scrollt.
     Die Kategorien brauchen dort keine Hoehenbegrenzung - die volle Breite reicht aus. */
  .library-panel { height: auto; min-height: 0; border-right: 0; overflow: visible; }
  .template-list { flex: 0 0 auto; min-height: 0; }
  .category-filter { max-height: none; overflow: visible; }
  .library-panel { order: 1; }
  .properties-panel { order: 2; position: relative; inset: auto; width: 100%; min-height: 0; overflow: visible; border: 0; border-top: 1px solid var(--line); box-shadow: none; transform: none; }
  .properties-toggle, .properties-scrim { display: none !important; }
  .properties-open .properties-scrim { display: none; }
  .canvas-stage { order: 3; }
  .panel-title { min-height: 64px; }
  .panel-title > [data-collapse-library] { display: none; }
  .template-list { display: flex; overflow-x: auto; overflow-y: hidden; max-height: none; padding: .55rem; }
  .template-item { flex: 0 0 210px; }
  .library-note { display: none; }
  .canvas-stage { min-height: 860px; padding-bottom: 4rem; }
  .simple-view { min-height: calc(100dvh - 123px); padding: 2rem 1rem; }
  .simple-view__head { align-items: flex-start; flex-direction: column; }
  .onboarding-card { left: 12px !important; right: 12px; bottom: 12px; top: auto !important; width: auto; }
  .document-row { grid-template-columns: 38px 1fr auto; }
  .document-row > span:not(.status-pill), .document-row > button { display: none; }
  .booking-admin-layout { grid-template-columns: 1fr; }
  .booking-editor { position: static; }
  .admin-preview-callout { grid-template-columns: 1fr; gap: 1rem; }
  .admin-preview-callout .primary-action { justify-self: start; }
  .roadmap-view { min-height: calc(100dvh - 123px); }
  .roadmap-hero { min-height: 0; padding: 2.6rem 1.2rem 2rem; }
  .roadmap-workspace { display: block; }
  .roadmap-rail { position: static; min-height: 0; padding: .85rem 1rem; }
  .roadmap-progress, .roadmap-rail__note { display: none; }
  /* Alle vier Schritte umbrechen statt seitlich wegscrollen: zuvor waren zwei davon
     auf dem Handy nicht erreichbar, ohne sichtbaren Hinweis. */
  .roadmap-rail nav { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; }
  .roadmap-rail nav button { min-width: 0; min-height: 60px; border-bottom: 0; border-right: 1px solid rgba(255,255,255,.08); }
  .roadmap-rail nav button > span { min-width: 0; }
  .roadmap-rail nav button strong, .roadmap-rail nav button small { overflow-wrap: anywhere; }
  .roadmap-stage { padding: 2rem 1rem 4rem; }
  .operation-check { grid-template-columns: 1fr; }
  .operation-check label:nth-child(odd) { border-right: 0; }
  .operation-check label:nth-last-child(-n+2) { border-bottom: 1px solid var(--line); }
  .operation-check label:last-child { border-bottom: 0; }
  .roadmap-panel__head--map { align-items: flex-start; flex-direction: column; }
  .route-summary { grid-template-columns: 1fr 1fr; }
  .route-summary > div:nth-child(2) { border-right: 0; }
  .route-summary > div:nth-child(-n+2) { border-bottom: 1px solid #d9e0e2; }
}

@media (max-width: 540px) {
  .access-header__meta span { display: none; }
  .access-story { padding-top: 7rem; }
  .eyebrow b { display: none; }
  .access-story h1 { font-size: clamp(2.75rem, 14vw, 4.2rem); }
  .access-proof small { display: none; }
  .field-row { grid-template-columns: 1fr; }
  .auth-tabs button { padding-inline: .15rem; font-size: .67rem; letter-spacing: .02em; }
  .auth-footer { flex-wrap: wrap; }
  .workspace-actions .primary-action { min-width: 86px; padding-left: .65rem; font-size: .65rem; }
  .workspace-actions .primary-action span { display: inline; font-size: 0; }
  .workspace-actions .primary-action span::after { content: "PDF"; font-size: .68rem; }
  .canvas-stage { padding-left: .65rem; padding-right: .65rem; }
  .canvas-toolbar { margin-left: -.65rem; margin-right: -.65rem; }
  .paper-wrap { margin-left: 0; }
  .properties-panel { width: 100%; }
  .symbol-grid { max-height: 420px; }
  .profile-grid { grid-template-columns: 1fr; }
  .field--wide { grid-column: auto; }
  .approval-item { grid-template-columns: 42px 1fr; }
  .approval-item time { display: none; }
  .approval-actions { grid-column: 1 / -1; }
  .admin-section-label { align-items: flex-start; flex-direction: column; gap: .2rem; }
  .customer-list .approval-item { grid-template-columns: 42px 1fr; }
  .booking-stats { grid-template-columns: 1fr; }
  .booking-stats > div { grid-template-columns: auto auto 1fr; border-right: 0; border-bottom: 1px solid #dbe2e3; }
  .booking-stats > div:last-child { border-bottom: 0; }
  .booking-stats span { grid-column: auto; }
  .booking-admin-item { grid-template-columns: 30px 1fr; gap: .65rem .75rem; }
  .booking-admin-date { align-self: center; }
  .booking-admin-copy, .booking-admin-actions { grid-column: 2; }
  .booking-admin-actions { justify-content: flex-start; }
  .customer-models, .roadmap-company { grid-template-columns: 1fr; }
  .customer-models button { min-height: 150px; border-right: 0 !important; border-bottom: 1px solid var(--line) !important; }
  .customer-models button:last-child { border-bottom: 0 !important; }
  .roadmap-actions { align-items: stretch; flex-direction: column-reverse; }
  .roadmap-actions > span { margin: 0; }
  .roadmap-actions button { width: 100%; }
  .safety-atlas__heading { grid-template-columns: 1fr; }
  .safety-atlas__heading span { grid-row: auto; padding: 0 0 .45rem; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.12); }
  .atlas-route { padding-left: 2.35rem; padding-right: 1rem; }
  .atlas-region__head { align-items: flex-start; flex-direction: column; gap: .2rem; }
  .atlas-station { min-height: 44px; }
}

@media (max-width: 360px) {
  .workspace-header { padding-inline: .55rem; }
  .workspace-header .portal-brand { width: 98px; }
  .workspace-actions .primary-action { min-width: 68px; padding-left: .55rem; }
  .workspace-actions .primary-action span::after { font-size: .66rem; }
}

/* Spatial city navigation: large topics are districts, documents are addresses. */
.roadmap-view * { animation: none !important; transition: none !important; }
.workspace.is-roadmap-view .workspace-crumb, .workspace.is-roadmap-view [data-save-state], .workspace.is-roadmap-view [data-save-draft], .workspace.is-roadmap-view [data-export-pdf] { display: none; }
.city-direct { margin-top: .85rem; padding: .65rem 0; min-height: 44px; color: #d6e1a2; background: transparent; border: 0; border-bottom: 1px solid #7f8c55; cursor: pointer; font-size: 15px; }
.is-city-open .city-direct { display: none; }
.roadmap-view.is-city-open .roadmap-hero { min-height: 0; padding-block: 1.7rem; }
.roadmap-view.is-city-open .roadmap-hero h1 { font-size: clamp(1.8rem,3vw,2.7rem); }
.roadmap-view.is-city-open .roadmap-workspace { display: block; max-width: 1600px; }
.roadmap-view.is-city-open .roadmap-rail { position: static; min-height: 0; padding: .65rem clamp(1rem,3vw,3rem); }
.roadmap-view.is-city-open .roadmap-rail nav { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); }
.roadmap-view.is-city-open .roadmap-rail nav button { min-height: 58px; padding: .4rem 1rem; border-bottom: 0; border-right: 1px solid rgba(255,255,255,.12); }
.roadmap-view.is-city-open .roadmap-progress, .roadmap-view.is-city-open .roadmap-rail__note { display: none; }
.roadmap-view.is-city-open .roadmap-stage { padding: 2rem clamp(1rem,3vw,3rem); }
.roadmap-panel--map { max-width: 1400px; }
.roadmap-panel--map .roadmap-panel__head { margin-bottom: 1.25rem; }
.roadmap-panel--map .roadmap-panel__head h2 { font-size: clamp(1.6rem,2.7vw,2.5rem); }
.roadmap-panel--map .roadmap-panel__head p { font-size: 16px; }
.roadmap-panel--map .route-summary span { font-size: 11px; }
.roadmap-panel--map .route-summary strong { font-size: 16px; }
.city-howto { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; list-style: none; padding: .7rem 0; margin: 0 0 1rem; }
.city-howto li { display: flex; gap: .75rem; align-items: flex-start; font-size: 14px; color: #53636e; }
.city-howto li > b { width: 29px; height: 29px; flex: 0 0 29px; display: grid; place-items: center; color: #24477b; border: 1px solid #adbaca; border-radius: 50%; font-size: 13px; }
.city-howto strong { display: block; margin-bottom: .2rem; color: var(--ink); font-size: 16px; font-weight: 650; }
.city-next { display: flex; align-items: center; justify-content: space-between; gap: 1.2rem; padding: 1.2rem 1.4rem; margin-bottom: 1.2rem; background: var(--navy); color: white; border-left: 4px solid var(--signal); scroll-margin-top: 84px; }
.city-next > div > span { display: block; margin-bottom: .3rem; font-size: 12px; color: #c5d66e; }
.city-next strong { display: block; font: 550 22px/1.25 var(--display); }
.city-next p { margin: .4rem 0 0; color: #bfcbd2; font-size: 14px; line-height: 1.5; }
.city-next button { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; min-height: 48px; padding: .7rem 1.2rem; background: var(--signal); border: 1px solid var(--signal); color: var(--navy); cursor: pointer; font-size: 16px; font-weight: 650; }
.city-next button:hover { background: #cada79; }
.city-atlas { overflow: hidden; border: 1px solid #bbc7c3; background: #f7f8f2; box-shadow: 0 10px 30px rgba(18,32,45,.055); }
.city-atlas__heading { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.4rem; background: #fff; border-bottom: 1px solid #d3d9cf; }
.city-atlas__heading > div > span { display: block; color: #65746c; font-size: 12px; }
.city-atlas__heading strong { display: block; font: 550 23px/1.3 var(--display); margin-top: .15rem; overflow-wrap: anywhere; }
.city-atlas__hint { color: #40594a; font-size: 14px; text-align: right; }
.city-map { position: relative; aspect-ratio: 4/3; min-height: 630px; background: #edf0e6 url('../images/safety-city-map.svg?v=20260910city1') center / 100% 100% no-repeat; isolation: isolate; scroll-margin-top: 82px; }
.city-quarter { --quarter-color: #245ca8; position: absolute; left: var(--city-x); top: var(--city-y); transform: translate(-50%,-50%); display: flex; flex-direction: column; align-items: center; width: 22%; max-width: 245px; padding: 0; border: 0; color: var(--ink); background: none; cursor: pointer; text-align: center; z-index: 1; }
.city-quarter.is-orange { --quarter-color: #b75216; }
.city-quarter__building { position: relative; display: grid; place-items: center; width: 75px; height: 66px; margin-bottom: -3px; background: #fffdf7; border: 1px solid #c0cabc; border-bottom: 3px solid var(--quarter-color); border-radius: 5px 5px 0 0; box-shadow: 6px 6px 0 rgba(96,111,89,.12); transition: transform .2s ease; }
.city-quarter__building svg { width: 59px; height: 59px; fill: #eef3f5; stroke: var(--quarter-color); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.city-quarter__building > b { position: absolute; top: -11px; left: -15px; display: grid; place-items: center; width: 31px; height: 31px; background: var(--quarter-color); color: white; border: 3px solid #f8faf5; border-radius: 50%; font: 650 12px var(--sans); }
.city-quarter__sign { display: block; width: 100%; padding: .7rem .65rem .6rem; border: 1px solid #b4c1b8; border-top: 3px solid var(--quarter-color); border-radius: 3px; background: #fffefa; box-shadow: 0 4px 0 rgba(86,105,84,.12), 0 6px 16px rgba(43,62,38,.055); }
.city-quarter__sign > strong { display: block; font: 600 clamp(16px,1.45vw,21px)/1.2 var(--display); }
.city-quarter__sign > span { display: block; margin-top: .3rem; color: #405261; font-size: clamp(12px,1vw,14px); line-height: 1.35; }
.city-quarter__sign small { display: block; margin-top: .45rem; color: #506454; font-size: 12px; }
.city-quarter > em { margin-top: .45rem; padding: .2rem .55rem; background: #173c70; color: white; border-radius: 2px; font-size: 11px; font-style: normal; }
.city-quarter.is-active .city-quarter__sign { outline: 2px solid var(--quarter-color); outline-offset: 3px; }
.city-quarter.is-complete .city-quarter__building > b { background: #365a40; }
.city-quarter:hover .city-quarter__building { transform: translateY(-4px); }
.city-quarter:hover .city-quarter__sign { border-color: var(--quarter-color); background: white; }
.city-compass { position: absolute; right: 2%; bottom: 3%; display: grid; justify-items: center; gap: .2rem; color: #637468; font-size: 11px; }
.city-compass b { font-weight: 550; }.city-compass i { font-size: 31px; font-style: normal; line-height: 1; }
.city-map__caption { position: absolute; left: 44%; bottom: 3%; color: #627666; font: 13px var(--display); }
.city-legend { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.25rem; padding: .8rem 1.2rem; color: #475c51; background: #fafbf6; border-top: 1px solid #d7dfd0; font-size: 12px; }
.city-legend span { display: flex; align-items: center; gap: .4rem; }
.city-legend i { width: 9px; height: 9px; background: #245ca8; }.city-legend i.is-orange { background: #b75216; }
.city-district { --district-color: #245ca8; margin-top: 1.5rem; border: 1px solid #c1ccd0; border-top: 4px solid var(--district-color); background: #fff; scroll-margin-top: 84px; }
.city-district.is-orange { --district-color: #b75216; }
.city-district__head { padding: 1.5rem; border-bottom: 1px solid #dce1e3; background: #fafbf9; }
.city-district__address { display: flex; gap: .65rem; align-items: center; margin-bottom: .8rem; color: #536471; font-size: 12px; }
.city-district__address > b { display: grid; place-items: center; width: 38px; height: 38px; background: var(--district-color); color: white; font: 600 17px var(--display); }
.city-district__address strong { display: block; color: var(--district-color); font-size: 15px; }
.city-district__head h3 { margin: .4rem 0; font: 550 clamp(23px,2.2vw,30px)/1.2 var(--display); letter-spacing: -.02em; }
.city-district__head p { margin: .5rem 0 0; max-width: 800px; font-size: 16px; line-height: 1.6; color: #52636f; }
.city-district__body { display: grid; grid-template-columns: minmax(280px,.9fr) minmax(0,1.1fr); align-items: start; }
.city-documents { padding: .75rem; display: grid; gap: .4rem; }
.city-document { min-width: 0; width: 100%; display: grid; grid-template-columns: 52px minmax(0,1fr) 14px; gap: .65rem; align-items: center; min-height: 82px; padding: .65rem; text-align: left; border: 1px solid transparent; border-bottom-color: #e1e6e8; color: var(--ink); background: white; cursor: pointer; }
.city-document.is-active { background: #f0f4f8; border-color: #b4c7db; }
.city-district.is-orange .city-document.is-active { background: #fdf4eb; border-color: #dcbda2; }
.city-document:hover { background: #f4f6f7; }
.city-document__house { position: relative; display: block; color: var(--district-color); }
.city-document__house svg { width: 48px; height: 48px; fill: #edf2f3; stroke: currentColor; stroke-width: 2; }
.city-document__house b { position: absolute; right: 0; bottom: -2px; padding: 0 .2rem; color: white; background: var(--district-color); font-size: 11px; line-height: 1.4; }
.city-document strong { display: block; font-size: 16px; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.city-document small { display: block; margin-top: .25rem; color: #546571; font-size: 13px; }
.city-document.is-complete small { color: #385e40; }
.city-district .atlas-detail { min-height: 100%; padding: 1.5rem; border-left: 1px solid #dce1e3; background: #f5f7f7; color: var(--ink); }
.city-district .atlas-detail__index { color: var(--district-color); font-size: 12px; letter-spacing: .035em; }
.city-district .atlas-detail h4 { margin: .7rem 0; font: 550 clamp(23px,2.2vw,30px)/1.2 var(--display); scroll-margin-top: 90px; }
.city-district .atlas-detail > p { color: #455967; font-size: 16px; }
.city-district .atlas-detail__meta { border-color: #d8e0e3; gap: 1rem; }
.city-district .atlas-detail__meta div { grid-template-columns: 1fr; gap: .25rem; }
.city-district .atlas-detail__meta span { color: #5b6b75; font-size: 12px; letter-spacing: .015em; text-transform: none; }
.city-district .atlas-detail__meta strong { color: #233746; font-size: 15px; font-weight: 550; }
.city-district .atlas-detail__actions button { min-height: 48px; padding: .75rem 1rem; color: #304958; border-color: #bccad1; background: white; font-size: 15px; }
.city-district .atlas-detail__actions .is-primary { color: white; border-color: var(--district-color); background: var(--district-color); }
.city-district .atlas-detail__actions .is-primary:hover { filter: brightness(1.12); }
.city-district .atlas-detail__actions .city-back-map { background: transparent; border-color: transparent; text-align: center; }
@media (max-width: 1040px) {
  .roadmap-view.is-city-open .roadmap-hero { flex-direction: row; align-items: center; gap: 1.5rem; }
  .roadmap-view.is-city-open .roadmap-mode { align-self: center; }
  .roadmap-view.is-city-open .roadmap-hero p { font-size: 15px; }
  .city-map { min-height: 620px; }
  .city-quarter { width: 24%; }.city-quarter__sign { padding: .6rem .35rem; }
}
@media (max-width: 700px) {
  .roadmap-view.is-city-open .roadmap-hero { display: block; padding: 1.5rem 1rem; }
  .roadmap-view.is-city-open .roadmap-mode { display: none; }
  .roadmap-view.is-city-open .roadmap-rail { padding: .5rem; }
  .roadmap-view.is-city-open .roadmap-rail nav { display: flex; }
  .roadmap-view.is-city-open .roadmap-rail nav button { min-width: 145px; padding: .3rem .5rem; }
  .city-howto { grid-template-columns: 1fr; gap: .85rem; }.city-howto li { align-items: center; }
  .city-howto strong { margin-bottom: 0; }
  .city-next { flex-direction: column; align-items: stretch; padding: 1rem; }.city-next button { justify-content: center; }
  .city-atlas__heading { padding: 1rem; align-items: flex-start; flex-direction: column; gap: .45rem; }
  .city-atlas__hint { text-align: left; font-size: 13px; }
  .city-map { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 65px 26px; aspect-ratio: auto; min-height: 0; padding: 60px 16px; background-size: auto 650px; background-repeat: repeat-y; }
  .city-map::before { content: ''; position: absolute; top: 0; bottom: 0; left: calc(50% - 12px); width: 24px; border: 1px solid #cbd3c6; background: repeating-linear-gradient(to bottom,#ffffff 0 9px,#7390ac 9px 17px,#ffffff 17px 29px) center / 2px 100% no-repeat, #fff; z-index: -1; }
  .city-quarter { position: relative; left: auto; top: auto; transform: none; width: 100%; max-width: none; align-self: start; }
  .city-quarter::before { content: ''; position: absolute; left: -16px; right: -16px; top: 32px; height: 13px; border-block: 1px solid #d6ddcf; background: #fff; z-index: -1; }
  .city-quarter__sign { min-height: 112px; padding: .65rem .4rem; }
  .city-quarter__sign > strong { font-size: 16px; hyphens: auto; overflow-wrap: anywhere; }
  .city-quarter__sign > span { font-size: 12px; hyphens: auto; overflow-wrap: anywhere; }.city-quarter__sign small { font-size: 11px; }
  .city-quarter__building { width: 65px; height: 56px; }.city-quarter__building svg { width: 50px; height: 50px; }
  .city-quarter > em { font-size: 10px; }
  .city-compass { top: 7px; right: 10px; bottom: auto; font-size: 9px; }.city-compass i { font-size: 18px; }
  .city-map__caption { left: 16px; right: 16px; bottom: 14px; text-align: center; font-size: 11px; }
  .city-legend { padding: .8rem; gap: .6rem; font-size: 11px; }
  .city-district { scroll-margin-top: 137px; }.city-map { scroll-margin-top: 137px; }
  .city-district__head { padding: 1rem; }.city-district__body { grid-template-columns: 1fr; }
  .city-district .atlas-detail { min-height: 0; border-left: 0; border-top: 1px solid #dce1e3; padding: 1.25rem; }
  .city-district .atlas-detail h4 { scroll-margin-top: 137px; }
  .roadmap-panel--map .route-summary strong { font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

@media print {
  @page { size: A4 portrait; margin: 0; }
  html, body { width: 210mm; height: 297mm; margin: 0 !important; padding: 0 !important; background: white !important; }
  body * { visibility: hidden !important; }
  .workspace, .editor-view, .canvas-stage, .paper-wrap, .safety-sheet, .safety-sheet * { visibility: visible !important; }
  .workspace { display: block !important; min-height: 0 !important; }
  .workspace-header, .workspace-nav, .library-panel, .properties-panel, .canvas-toolbar, .edit-hint, .simple-view, .onboarding-layer { display: none !important; }
  .workspace-layout, .editor-view, .canvas-stage { display: block !important; padding: 0 !important; margin: 0 !important; min-height: 0 !important; background: white !important; overflow: visible !important; }
  .paper-wrap { position: static !important; width: 210mm !important; height: 297mm !important; margin: 0 !important; }
  .safety-sheet { position: static !important; width: 210mm !important; min-height: 297mm !important; padding: 5mm !important; transform: none !important; box-shadow: none !important; outline: 0 !important; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .sheet-section::after { display: none !important; }
}
