:root{--color-piloter:#5a7a9e;--color-maitrise:#5a9e9e;--color-ameliorer:#5a8f5a;--color-anticiper:#c88b4a;--color-reagir:#b55a5a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--radius-sm:3px;--radius-md:4px;--radius-lg:6px;--radius-full:9999px;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-size-sm:12px;--font-size-md:14px;--font-size-lg:16px;--font-size-xl:20px;--font-size-hero:36px;--color-overlay:#0f141a8c;--shadow-md:0 6px 18px #0000002e;--shadow-lg:0 16px 48px #00000059;--motion-fast:.14s;--motion-med:.24s;--motion-slow:.38s;--motion-draw:.9s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1);--side-width:320px;--thumb-width:250px;--rail-width:14px;--line:1px;--color-bg:#f4f5f7;--color-surface:#fff;--color-border:#d9dde3;--color-text:#1f2933;--color-text-muted:#66727f;--color-accent:var(--color-maitrise);--color-selection:#e8590c;--status-ok:var(--color-ameliorer);--status-soon:var(--color-anticiper);--status-overdue:var(--color-reagir);--status-unknown:#8a939c;--plan-bg:#eef0f3;--plan-floor:#fff;--plan-grid:#e2e6eb;--plan-grid-major:#c9cfd6;--plan-wall:#3b4651;--plan-column:#3b4651;--plan-crane-area-opacity:.18;--plan-fitting:var(--color-piloter);--plan-fitting-edge:#44607f;--plan-fitting-opacity:.35;--scene-bg:#dfe4ea;--scene-floor:#c8cbcf;--scene-grid:#a9afb6;--scene-wall:#b9c2cc;--scene-column:#6b7682;--crane-paint:#e8b923;--crane-rail:#59626b;--crane-steel:#9aa3ab;--crane-hook:#2d3339}@media (prefers-color-scheme:dark){:root{--color-bg:#15191e;--color-surface:#1e242b;--color-border:#313a44;--color-text:#e4e8ec;--color-text-muted:#98a3ae;--plan-bg:#12161b;--plan-floor:#1b2128;--plan-grid:#232b33;--plan-grid-major:#2f3943;--plan-wall:#c9d1d9;--plan-column:#c9d1d9;--plan-fitting-edge:#9db6d1;--scene-bg:#1a2027;--scene-floor:#3a4048;--scene-grid:#4c545e;--scene-wall:#5d6874}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-md)}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:var(--color-surface);border:var(--line) solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-1) var(--space-3)}button:hover{border-color:var(--color-accent)}button.is-active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-surface)}input,textarea{background:var(--color-bg);border:var(--line) solid var(--color-border);border-radius:var(--radius-sm);width:100%;padding:var(--space-1) var(--space-2)}h2,h3{margin:0 0 var(--space-2);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.app{grid-template-columns:1fr var(--rail-width) var(--side-width);height:100%;transition:grid-template-columns var(--motion-med) var(--ease-out);display:grid}.app--closed{grid-template-columns:1fr var(--rail-width) 0}.app--closed .side{border:none;padding:0;overflow:hidden}.rail{border:none;border-left:var(--line) solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);font-size:var(--font-size-lg);border-radius:0;padding:0}.rail:hover{color:var(--color-accent);background:var(--color-bg)}.side{background:var(--color-surface);border-left:var(--line) solid var(--color-border);flex-direction:column;min-width:0;display:flex;overflow:hidden}.mode-switch{gap:var(--space-2);padding:var(--space-3);border-bottom:var(--line) solid var(--color-border);grid-template-columns:1fr 1fr;display:grid}.mode-switch__button{--mode-color:var(--color-maitrise);padding:var(--space-2) var(--space-3);border:var(--line) solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-muted);text-align:left;transition:background var(--motion-fast), color var(--motion-fast), border-color var(--motion-fast);background:0 0;flex-direction:column;align-items:flex-start;gap:2px;display:flex}.mode-switch__button--create{--mode-color:var(--color-piloter)}.mode-switch__button.is-active{border-color:var(--mode-color);background:var(--mode-color);color:var(--color-surface)}.mode-switch__label{font-weight:600;font-size:var(--font-size-md)}.mode-switch__hint{font-size:var(--font-size-sm);opacity:.85}.side--create .side__tabs button.is-active{color:var(--color-piloter);border-bottom-color:var(--color-piloter)}.panel__name{margin:0 0 var(--space-3)}.side__tabs,.subtabs{border-bottom:var(--line) solid var(--color-border);display:flex}.side__tabs button,.subtabs button{padding:var(--space-3) var(--space-2);color:var(--color-text-muted);transition:color var(--motion-fast), border-color var(--motion-fast);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:1}.side__tabs button.is-active,.subtabs button.is-active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.side__tabs button:disabled{opacity:.4;cursor:default}.subtabs button{font-size:var(--font-size-sm);padding:var(--space-2) var(--space-1)}.side__body{padding:var(--space-4);flex:1;overflow:hidden auto}.toolbar{gap:var(--space-4);flex-direction:column;display:flex}.toolbar__name,.panel__title{font-size:var(--font-size-lg);background:0 0;border-color:#0000;font-weight:600}.toolbar__name:focus,.panel__title:focus{border-color:var(--color-border)}.toolbar__tools{gap:var(--space-1);grid-template-columns:1fr 1fr;display:grid}.toolbar__tool{text-align:left}.toolbar__hint{margin:var(--space-2) 0 0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.catalog__family summary{cursor:pointer;padding:var(--space-2) 0;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-weight:600}.catalog__family[open] summary{color:var(--color-piloter)}.panel__row{gap:var(--space-2);margin:var(--space-2) 0;display:flex}.panel__row button{flex:1}.toolbar__group{gap:var(--space-2);flex-direction:column;display:flex}.toolbar__files{flex-flow:wrap}.views{min-width:0;min-height:0;display:grid;position:relative}.views--split{grid-template-columns:1fr 2fr}.views__switch{top:var(--space-2);z-index:2;gap:var(--space-1);display:flex;position:absolute;left:50%;transform:translate(-50%)}.plan-view,.scene-view{min-width:0;min-height:0;position:relative;overflow:hidden}.plan-view{background:var(--plan-bg);border-right:var(--line) solid var(--color-border)}.plan-view__svg{touch-action:none;width:100%;height:100%;display:block}.plan-view--wall .plan-view__svg,.plan-view--column .plan-view__svg,.plan-view--crane .plan-view__svg,.plan-view--fitting .plan-view__svg,.plan-view--door .plan-view__svg{cursor:crosshair}.plan-view__building{stroke:var(--plan-grid-major);stroke-width:.1px}.plan-view__grid{fill:none;stroke:var(--plan-grid);stroke-width:.04px}.plan-view__grid--major{stroke:var(--plan-grid-major);stroke-width:.08px}.plan-view__dim,.plan-crane__label{fill:var(--color-text-muted);text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.plan-view__wall{stroke:var(--plan-wall);stroke-linecap:square}.plan-view__column{fill:var(--plan-column)}.plan-envelope__wall{fill:none;stroke:var(--plan-wall)}.plan-door__opening{fill:var(--plan-bg)}.plan-door__leaf,.plan-door__swing{fill:none;stroke:var(--color-anticiper);stroke-width:.1px}.plan-door__leaf{stroke-dasharray:.4 .2}.plan-door.is-selected .plan-door__leaf,.plan-door.is-selected .plan-door__swing{stroke:var(--color-selection);stroke-width:.18px}.plan-fitting__body{fill:var(--plan-fitting);fill-opacity:var(--plan-fitting-opacity);stroke:var(--plan-fitting-edge);stroke-width:.05px}.plan-fitting__front{stroke:var(--plan-fitting-edge);stroke-width:.12px}.plan-fitting__label{fill:var(--color-text);text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.plan-fitting.is-selected .plan-fitting__body,.plan-fitting.is-selected .plan-fitting__front{stroke:var(--color-selection);stroke-width:.12px}.plan-view__wall.is-selected{stroke:var(--color-selection)}.plan-view__column.is-selected{fill:var(--color-selection)}.plan-view__preview{stroke:var(--color-selection);stroke-dasharray:.5 .3;opacity:.8}.plan-view__status,.plan-view__fit,.scene-view__actions,.scene-view__hint{font-size:var(--font-size-sm);position:absolute}.plan-view__status{bottom:var(--space-2);left:var(--space-2);color:var(--color-text-muted);pointer-events:none}.plan-view__fit,.scene-view__actions{bottom:var(--space-2);right:var(--space-2)}.scene-view__actions{gap:var(--space-2);display:flex}.scene-view__canvas{width:100%;height:100%}.scene-view__hint{bottom:var(--space-2);left:var(--space-2);color:var(--color-text-muted);pointer-events:none;margin:0}.plan-crane{--crane-status:var(--status-unknown)}.plan-crane--ok{--crane-status:var(--status-ok)}.plan-crane--soon{--crane-status:var(--status-soon)}.plan-crane--overdue{--crane-status:var(--status-overdue)}.plan-crane__area{fill:var(--crane-status);fill-opacity:var(--plan-crane-area-opacity);stroke:var(--crane-status);stroke-width:.08px}.plan-crane__rail{stroke:var(--crane-rail);stroke-width:.3px}.plan-crane__rail--floor{stroke-dasharray:.6 .3}.plan-crane__girder{stroke:var(--crane-paint);stroke-width:.45px}.plan-crane__pillar{fill:var(--crane-rail)}.plan-crane__band{fill:var(--crane-status);fill-opacity:var(--plan-crane-area-opacity);stroke:var(--crane-status);stroke-width:.06px}.plan-crane__truck{fill:var(--crane-rail)}.plan-crane--selected .plan-crane__area,.plan-crane--selected .plan-crane__band{stroke:var(--color-selection);stroke-width:.2px}.plan-runway__area{fill:var(--crane-rail);fill-opacity:.06;stroke:var(--crane-rail);stroke-width:.05px;stroke-dasharray:.4 .3}.plan-runway__rail{stroke:var(--crane-rail);stroke-width:.3px}.plan-runway--underhung .plan-runway__rail,.plan-runway--monorail .plan-runway__rail{stroke-width:.2px;stroke-dasharray:1 .2}.plan-runway__stop{stroke:var(--crane-rail);stroke-width:.25px}.plan-runway__label{fill:var(--color-text-muted);text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none}.plan-runway--selected .plan-runway__area{stroke:var(--color-selection);stroke-width:.2px;stroke-dasharray:none}.panel{gap:var(--space-3);flex-direction:column;display:flex}.panel--empty{color:var(--color-text-muted)}.panel__kind{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.panel__group{gap:var(--space-2);padding-top:var(--space-3);border-top:var(--line) solid var(--color-border);flex-direction:column;display:flex}.panel__due{align-items:center;gap:var(--space-2);margin:0;display:flex}.panel__delete{color:var(--color-reagir);align-self:flex-start}.panel__hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.panel__link{color:var(--color-accent);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;text-decoration:underline}.side__back{margin-bottom:var(--space-3);color:var(--color-accent);background:0 0;border:none;padding:0}.field{gap:var(--space-1);flex-direction:column;display:flex}.field--inline{align-items:center;gap:var(--space-2);flex-direction:row}.field--inline input[type=checkbox],.field--inline input[type=color]{width:auto;padding:0}.field--inline input[type=color]{width:var(--space-8);height:var(--space-6);border:var(--line) solid var(--color-border);border-radius:var(--radius-sm);background:0 0}select{width:100%;font:inherit;color:inherit;background:var(--color-bg);border:var(--line) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2)}input[type=range]{accent-color:var(--color-accent);padding:0}.field__label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.field__control{align-items:center;gap:var(--space-2);display:flex}.field__unit{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:var(--space-6)}.badge{padding:0 var(--space-2);border-radius:var(--radius-full);font-size:var(--font-size-sm);color:var(--color-surface);background:var(--status-unknown);white-space:nowrap;display:inline-block}.badge--ok{background:var(--status-ok)}.badge--soon{background:var(--status-soon)}.badge--overdue{background:var(--status-overdue)}.crane-list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.crane-list__item{gap:var(--space-1);grid-template-columns:1fr auto;display:grid}.crane-list__sheet,.side__sheet{color:var(--color-accent)}.side__sheet{width:100%;margin-bottom:var(--space-3)}.crane-list__row{gap:0 var(--space-2);text-align:left;width:100%;padding:var(--space-2);grid-template-columns:1fr auto;display:grid}.crane-list__name{font-weight:600}.crane-list__meta{font-size:var(--font-size-sm);color:var(--color-text-muted);grid-column:1}.crane-list__row .badge{grid-area:1/2/span 2;align-self:center}.crane-list__row,.toolbar__tool,.views__switch button{transition:transform var(--motion-fast) var(--ease-out), border-color var(--motion-fast), background var(--motion-fast), color var(--motion-fast)}.crane-list__row:hover{transform:translate(2px)}.panel,.panel--empty{animation:panel-in var(--motion-med) var(--ease-out) both}@keyframes panel-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.panel,.panel--empty{animation:none}}.scene-view__legal{top:var(--space-2);right:var(--space-2);justify-content:flex-end;gap:var(--space-1);flex-wrap:wrap;max-width:60%;display:flex;position:absolute}.scene-view__legal-chip{padding:var(--space-1) var(--space-2);border:var(--line) solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-muted);font-size:var(--font-size-sm);white-space:nowrap}.scene-view__legal-chip.is-active{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-surface)}.scene-view__legal-chip--ok.is-active{background:var(--status-ok);border-color:var(--status-ok)}.scene-view__legal-chip--soon.is-active{background:var(--status-soon);border-color:var(--status-soon)}.scene-view__legal-chip--overdue.is-active{background:var(--status-overdue);border-color:var(--status-overdue)}.views--focus .scene-view__legal{max-width:100%;left:var(--space-1);right:var(--space-1);justify-content:flex-start}.views--focus{grid-template-columns:var(--thumb-width) 1fr;grid-template-rows:1fr 1fr}.views--focus .plan-view,.views--focus .scene-view{border-bottom:var(--line) solid var(--color-border);animation:thumb-in var(--motion-slow) var(--ease-out) both;grid-column:1}.views--focus .plan-view__status,.views--focus .plan-view__dim,.views--focus .scene-view__hint{display:none}.dossier{padding:var(--space-6);background:var(--color-surface);gap:var(--space-4);animation:pane-in var(--motion-med) var(--ease-out) both;flex-direction:column;grid-area:1/2/span 2;display:flex;overflow-y:auto}.dossier__header{align-items:center;gap:var(--space-4);display:flex}.dossier__back{color:var(--color-accent);background:0 0;border:none;padding:0}.dossier__kind{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.dossier__title{font-size:var(--font-size-xl);text-transform:none;letter-spacing:0;color:var(--color-text);margin:0}.verdict{padding:var(--space-1) var(--space-4);border-radius:var(--radius-full);color:var(--color-surface);animation:pop-in var(--motion-slow) var(--ease-spring) both;margin-left:auto;font-weight:600}.verdict--ok{background:var(--status-ok)}.verdict--overdue{background:var(--status-overdue)}.dossier__summary{gap:var(--space-6);padding:var(--space-4);border:var(--line) solid var(--color-border);border-radius:var(--radius-lg);grid-template-columns:auto 1fr;align-items:center;display:grid}.dossier__facts{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0;display:grid}.dossier__facts dt{font-size:var(--font-size-sm);color:var(--color-text-muted)}.dossier__facts dd{margin:var(--space-1) 0 0;font-weight:600}.dossier__note{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.ring{width:150px;height:150px}.ring__track{fill:none;stroke:var(--status-overdue);stroke-width:12px;opacity:.85}.ring__value{fill:none;stroke:var(--status-ok);stroke-width:12px;stroke-linecap:round;transition:stroke-dasharray var(--motion-draw) var(--ease-out);animation:ring-in var(--motion-draw) var(--ease-out) both}.ring__count{fill:var(--color-text);font-size:26px;font-weight:600}.ring__label{fill:var(--color-text-muted);font-size:12px}.legal{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.legal__item{gap:0 var(--space-3);padding:var(--space-2) var(--space-3);border:var(--line) solid var(--color-border);border-left:4px solid var(--status-overdue);border-radius:var(--radius-md);transition:transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out);grid-template-columns:auto 1fr auto;display:grid}.legal__item--ok{border-left-color:var(--status-ok)}.legal__item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.legal__item .badge{grid-row:1/span 2;align-self:center}.legal__req{font-weight:600}.legal__ref{font-size:var(--font-size-sm);color:var(--color-text-muted);grid-column:2}.legal__detail{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:right;grid-area:1/3/span 2;align-self:center}.stagger{animation:rise-in var(--motion-med) var(--ease-out) both;animation-delay:calc(var(--i,0) * 45ms + 60ms)}@keyframes thumb-in{0%{opacity:.4}to{opacity:1}}@keyframes pane-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes pop-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}@keyframes ring-in{0%{stroke-dasharray:0 1000}}@media (prefers-reduced-motion:reduce){.views--focus .plan-view,.views--focus .scene-view,.dossier,.verdict,.ring__value,.stagger{animation:none}.legal__item,.ring__value{transition:none}}.legal__item--soon{border-left-color:var(--status-soon)}.legal__item--unknown{border-left-color:var(--status-overdue)}.legal__item.is-active{box-shadow:var(--shadow-md);border-color:var(--color-accent)}.legal__row{gap:0 var(--space-3);text-align:left;width:100%;color:inherit;font:inherit;background:0 0;border:none;grid-template-columns:auto 1fr auto;padding:0;display:grid}.legal__edit{gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:var(--line) solid var(--color-border);grid-template-columns:1fr 1fr auto;align-items:end;display:grid}.legal__checks{font-size:var(--font-size-sm);color:var(--color-text-muted);grid-column:1/-1;margin:0}.legal__today,.dossier__action{padding:var(--space-1) var(--space-3);border:var(--line) solid var(--color-accent);border-radius:var(--radius-md);color:var(--color-accent);background:0 0}.dossier__action{align-self:center}.legal__empty{padding:var(--space-3);color:var(--color-text-muted);font-size:var(--font-size-sm)}.dossier__hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.verdict--soon{background:var(--status-soon)}.filters{gap:var(--space-2);flex-wrap:wrap;display:flex}.filters__chip{padding:var(--space-1) var(--space-3);border:var(--line) solid var(--color-border);border-radius:var(--radius-full);background:var(--color-bg);color:var(--color-text);font-size:var(--font-size-sm)}.filters__chip:disabled{opacity:.45}.filters__chip.is-active{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-surface);font-weight:600}.filters__chip--ok .filters__count{background:var(--status-ok)}.filters__chip--soon .filters__count{background:var(--status-soon)}.filters__chip--overdue .filters__count,.filters__chip--unknown .filters__count{background:var(--status-overdue)}.filters__count{min-width:var(--space-5);padding:0 var(--space-1);border-radius:var(--radius-full);background:var(--status-unknown);color:var(--color-surface);text-align:center;display:inline-block}.gate{min-height:100%;padding:var(--space-6);background:var(--color-bg);place-items:center;display:grid}.gate__spinner{width:var(--space-8);height:var(--space-8);border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:var(--radius-full);animation:.9s linear infinite gate-spin}.gate__card{width:min(420px,100%);padding:var(--space-6);background:var(--color-surface);border:var(--line) solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);gap:var(--space-3);animation:pop-in var(--motion-slow) var(--ease-spring) both;flex-direction:column;display:flex}.gate__brand{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin:0}.gate__title{font-size:var(--font-size-xl);text-transform:none;letter-spacing:0;color:var(--color-text);margin:0}.gate__text{color:var(--color-text-muted);margin:0}.gate__error{color:var(--color-reagir);margin:0}.gate__cta{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-surface);font:inherit;cursor:pointer;border:none;align-self:flex-start;text-decoration:none}.session{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:var(--line) solid var(--color-border);display:flex}.session__who{flex-direction:column;flex:1;min-width:0;display:flex}.session__who strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session__who small{color:var(--color-text-muted)}.session__out{font-size:var(--font-size-sm)}@keyframes gate-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.gate__card{animation:none}}
