:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#f7f8fa;--color-surface:#fff;--color-canvas:#e9ebee;--color-border:#d8dbe0;--color-text:#1f2328;--color-text-muted:#6b7280;--color-accent:#2563eb;--color-accent-soft:#e8f0fe;--color-danger:#d92d20;--color-disabled:#b6bcc4;--auth-bg:#eef0f4;--font-family:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size:13px;--font-size-sm:11px;--font-size-lg:15px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--radius:6px;--topbar-h:48px;--toolbar-w:56px;--properties-w:280px;--statusbar-h:28px;--shadow-pop:0 4px 16px #0f172a24}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-family);font-size:var(--font-size);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit}.editor{grid-template-rows:var(--topbar-h) 1fr var(--statusbar-h);height:100%;display:grid}.editor__body{grid-template-columns:var(--toolbar-w) 1fr var(--properties-w);grid-template-rows:auto 1fr;min-height:0;display:grid}.editor__body>.toolbar{grid-area:1/1/3}.editor__body>.editor__canvas{grid-area:2/2}.editor__body>.properties{grid-area:2/3;min-height:0}.editor__canvas{background:var(--color-canvas);min-width:0;min-height:0;position:relative}.editor__banner{top:var(--space-2);z-index:5;align-items:center;gap:var(--space-2);border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--font-size-sm);white-space:nowrap;border-radius:6px;padding:4px 10px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.editor__banner-note{color:var(--color-text-muted)}.editor__banner--conflict,.editor__banner--danger{border-color:var(--color-danger)}.editor__banner-btn{border:1px solid var(--color-border);background:var(--color-surface);line-height:20px;font:inherit;cursor:pointer;border-radius:4px;padding:0 8px}.editor__banner-btn:hover:not(:disabled){border-color:var(--color-accent)}.editor__banner-btn:disabled{color:var(--color-disabled);cursor:default}.canvas{width:100%;height:100%;position:relative;overflow:hidden}.canvas__empty{justify-content:center;align-items:center;gap:var(--space-1);pointer-events:none;color:var(--color-text-muted);font-size:var(--font-size-lg);flex-direction:column;display:flex;position:absolute;inset:0}.canvas__empty-hint{font-size:var(--font-size-sm)}.canvas__empty-sample{pointer-events:auto;margin-top:var(--space-2);border:1px solid var(--color-border,#d0d7de);color:var(--color-accent,#2563eb);font-size:var(--font-size-sm);cursor:pointer;background:#fff;border-radius:6px;padding:6px 14px}.canvas__empty-sample:hover{background:#f3f6fb}.canvas__split{z-index:10;gap:4px;display:flex;position:absolute;transform:translate(-50%,-140%)}.canvas__split button{border:1px solid var(--color-accent);border-radius:var(--radius);background:var(--color-surface);color:var(--color-accent);font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;padding:3px 8px}.canvas__split button:hover{background:var(--color-accent-soft)}.canvas__node-anchor{z-index:10;position:absolute;transform:translate(12px,12px)}.canvas__ruler-anchor{z-index:10;position:absolute;transform:translate(10px,10px)}.canvas__ruler{background:var(--color-surface);border:1px solid var(--color-accent);border-radius:var(--radius);box-shadow:var(--shadow-pop);flex-direction:column;gap:3px;padding:5px 7px;display:flex}.canvas__ruler-label{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap}.canvas__ruler input{border:1px solid var(--color-border,#ccc);border-radius:var(--radius);width:110px;font-size:var(--font-size-md);padding:3px 6px}.canvas__node{background:var(--color-surface);border:1px solid var(--color-accent);border-radius:var(--radius);box-shadow:var(--shadow-pop);flex-direction:column;gap:3px;padding:5px 7px;display:flex}.canvas__node-row{align-items:center;gap:5px;display:flex}.canvas__node-row .input{width:84px;padding:1px 5px}.canvas__node-label{font-size:var(--font-size-sm);color:var(--color-text-muted);width:10px}.modal__backdrop{z-index:200;background:#0f172a59;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:var(--space-4);width:min(560px,100vw - 48px);max-height:calc(100vh - 96px);overflow-y:auto}.modal__title{margin:0 0 var(--space-3);font-size:var(--font-size-lg)}.modal__table{border-collapse:collapse;width:100%}.modal__table td{padding:4px var(--space-2);border-bottom:1px solid var(--color-border);vertical-align:top}.modal__key{white-space:nowrap;width:1%}.modal__key kbd{border:1px solid var(--color-border);background:var(--color-bg);font-family:inherit;font-size:var(--font-size-sm);border-bottom-width:2px;border-radius:4px;padding:1px 6px}.modal__actions{margin-top:var(--space-3);text-align:right;justify-content:flex-end;gap:var(--space-2);display:flex}.modal--narrow{width:min(440px,100vw - 48px)}.modal__message{color:var(--color-text-muted);margin:0;line-height:1.45}.import-error__issues{color:var(--color-text-muted);line-height:1.55;font-size:var(--font-size-sm);word-break:break-word;margin:0;padding-left:20px}.file-drop-zone{height:100%}.file-drop-zone__overlay{z-index:300;border:3px dashed var(--color-accent);color:#fff;pointer-events:none;background:#0f172a73;justify-content:center;align-items:center;font-size:20px;display:flex;position:fixed;inset:0}.topbar{align-items:center;gap:var(--space-3);padding:0 var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);--topbar-name-budget:clamp(84px, 100vw - 1120px, 280px);--topbar-status-budget:clamp(88px, 100vw - 1400px, 220px);display:flex}.topbar__brand{align-items:center;gap:var(--space-2);font-weight:600;font-size:var(--font-size-lg);color:var(--color-accent);white-space:nowrap;display:flex}.topbar__name{padding:2px var(--space-2);border-radius:var(--radius);cursor:pointer;white-space:nowrap;min-width:64px;max-width:var(--topbar-name-budget);text-overflow:ellipsis;background:0 0;border:1px solid #0000;overflow:hidden}.topbar__name:hover{background:var(--color-accent-soft);border-color:var(--color-border)}.topbar__name-input{width:180px}.topbar__tabs{align-items:center;gap:var(--space-1);margin-left:var(--space-2);display:flex}.topbar__tab{padding:5px var(--space-3);border-radius:var(--radius);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:6px;display:inline-flex}.topbar__tab:hover:not(:disabled){background:var(--color-accent-soft)}.topbar__tab--active{background:var(--color-accent-soft);color:var(--color-accent);font-weight:600}.topbar__tab:disabled{color:var(--color-disabled);cursor:default}.topbar__badge{font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:0 6px}.topbar__actions{align-items:center;gap:var(--space-1);margin-left:auto;display:flex}.toolbar{align-items:center;gap:var(--space-1);padding:var(--space-2) 0;background:var(--color-surface);border-right:1px solid var(--color-border);flex-direction:column;display:flex}.toolbar__tool{border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #0000;flex-direction:column;align-items:center;gap:2px;width:44px;padding:6px 0 4px;display:flex}.toolbar__tool:hover:not(:disabled){background:var(--color-accent-soft)}.toolbar__tool--active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent)}.toolbar__tool:disabled{color:var(--color-disabled);cursor:default}.toolbar__hotkey{font-size:var(--font-size-sm);color:var(--color-text-muted)}.subsheet-row{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);max-width:calc(100vw - var(--toolbar-w));grid-area:1/2/auto/4;display:flex;overflow-x:auto}.subsheet-row__tab{padding:3px var(--space-3);border-radius:var(--radius);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000}.subsheet-row__tab:hover{background:var(--color-accent-soft)}.subsheet-row__tab--active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent);font-weight:600}.statusbar__sheet{white-space:nowrap}.properties{background:var(--color-surface);border-left:1px solid var(--color-border);padding:var(--space-3);overflow-y:auto}.properties__title{font-size:var(--font-size);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0;font-weight:600}.properties__empty{margin:var(--space-3) 0;color:var(--color-text-muted)}.properties__subtitle{margin:var(--space-3) 0 0;font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-weight:600}.properties__hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.point-tool{gap:var(--space-2);margin-top:var(--space-3);flex-direction:column;display:flex}.point-tool__variants{gap:var(--space-1);flex-wrap:wrap;display:flex}.point-tool__variant{padding:3px var(--space-2);border-radius:var(--radius);font:inherit;font-size:var(--font-size-sm);cursor:pointer;background:0 0;border:1px solid #0000}.point-tool__variant:hover:not(:disabled){background:var(--color-accent-soft)}.point-tool__variant--active{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent);font-weight:600}.point-tool__variant:disabled{color:var(--color-disabled);cursor:default}.point-tool__variant:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.point-props{gap:var(--space-3);margin-top:var(--space-3);flex-direction:column;display:flex}.point-props__value{font-size:var(--font-size-sm);margin:0}.point-props__row{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.point-props__offsets,.point-props__create{gap:var(--space-3);flex-direction:column;display:flex}.statusbar{align-items:center;gap:var(--space-3);padding:0 var(--space-3);background:var(--color-surface);border-top:1px solid var(--color-border);font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;display:flex;overflow:hidden}.statusbar__mode{border:1px solid var(--color-border);color:var(--color-disabled);line-height:18px;font:inherit;cursor:pointer;background:0 0;border-radius:4px;padding:0 6px}.statusbar__mode--on{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-soft)}.statusbar__select{border:1px solid var(--color-border);line-height:18px;font:inherit;font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-surface);cursor:pointer;border-radius:4px;padding:0 2px}.statusbar__select:disabled,.statusbar__mode:disabled{color:var(--color-disabled);cursor:default}.statusbar__hint{font-size:var(--font-size-sm);color:var(--color-text-muted)}.statusbar__zoom{align-items:center;gap:4px;display:inline-flex}.statusbar__zoombtn{border:1px solid var(--color-border);color:var(--color-text-muted);line-height:18px;font:inherit;font-size:var(--font-size-sm);cursor:pointer;background:0 0;border-radius:4px;padding:0 7px}.statusbar__zoombtn:hover,.statusbar__zoomlabel:hover{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-soft)}.statusbar__zoomlabel{border:1px solid var(--color-border);color:var(--color-text-muted);line-height:18px;font:inherit;font-size:var(--font-size-sm);cursor:pointer;background:0 0;border-radius:4px;min-width:64px;padding:0 6px}.topbar__export{position:relative}.topbar__export-menu{z-index:40;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);min-width:132px;box-shadow:var(--shadow-pop);padding:4px 0;position:absolute;top:calc(100% + 4px);right:0}.topbar__export-item{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:6px 12px;display:block}.topbar__export-item:hover{background:var(--color-accent-soft)}.png-dialog__options{gap:var(--space-2);margin-bottom:var(--space-2);flex-direction:column;display:flex}.png-dialog__option{align-items:center;gap:var(--space-2);cursor:pointer;display:flex}.png-dialog__size{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-3)}.png-dialog__offscreen{pointer-events:none;position:fixed;top:0;left:-100000px}.btn{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:5px var(--space-3);cursor:pointer}.btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.btn--primary:hover:not(:disabled){color:#fff;filter:brightness(1.08)}.btn--ghost{background:0 0;border-color:#0000}.btn--danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn--danger:hover:not(:disabled){color:#fff;filter:brightness(1.08)}.btn:disabled{color:var(--color-disabled);cursor:default}.icon-btn{border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.icon-btn:hover:not(:disabled){background:var(--color-accent-soft);border-color:var(--color-border)}.icon-btn:disabled{color:var(--color-disabled);cursor:default}.input,.select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);padding:4px var(--space-2);font:inherit;color:inherit}.input:focus,.select:focus,.topbar__name:focus,.btn:focus-visible,.icon-btn:focus-visible,.toolbar__tool:focus-visible,.topbar__tab:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.toggle{background:var(--color-disabled);cursor:pointer;border:none;border-radius:999px;width:34px;height:20px;padding:0;position:relative}.toggle--on{background:var(--color-accent)}.toggle:disabled{opacity:.5;cursor:default}.toggle__thumb{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px}.toggle--on .toggle__thumb{transform:translate(14px)}.visibility-props{gap:var(--space-2);margin-top:var(--space-3);flex-direction:column;display:flex}.visibility-props__row{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.toaster{top:var(--space-3);right:var(--space-3);gap:var(--space-2);z-index:100;flex-direction:column;display:flex;position:fixed}.toaster__item{background:var(--color-text);color:#fff;border-radius:var(--radius);padding:var(--space-2) var(--space-3);box-shadow:var(--shadow-pop);max-width:320px}.spike{cursor:grab;background:#fff;width:100%;height:100%;position:relative;overflow:hidden}.spike:active{cursor:grabbing}.spike__meta{top:var(--space-2);left:var(--space-2);color:#fff;border-radius:var(--radius);font-variant-numeric:tabular-nums;pointer-events:none;background:#0f172acc;padding:4px 10px;font-size:12px;position:absolute}.spike__help{bottom:var(--space-2);left:var(--space-2);color:var(--color-text-muted);pointer-events:none;font-size:12px;position:absolute}.wall-props{gap:var(--space-3);margin-top:var(--space-3);flex-direction:column;display:flex}.prop-field{gap:var(--space-1);flex-direction:column;display:flex}.prop-field__label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.prop-field__hint{color:var(--color-danger)}.prop-field--invalid .input{border-color:var(--color-danger)}.prop-field--invalid .input:focus{outline-color:var(--color-danger)}.prop-field__error{font-size:var(--font-size-sm);color:var(--color-danger);margin:0}.prop-field .input:disabled,.prop-field .select:disabled{background:var(--color-bg);color:var(--color-disabled);cursor:default}.context-menu{z-index:30;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);min-width:208px;box-shadow:var(--shadow-pop);padding:4px 0;position:absolute}.context-menu__item{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:6px 12px;display:flex}.context-menu__item:hover:not(:disabled){background:var(--color-accent-soft)}.context-menu__item:disabled{color:var(--color-disabled);cursor:default}.context-menu__item--danger{color:var(--color-danger)}.context-menu__hint{font-size:var(--font-size-sm);color:var(--color-text-muted)}.context-menu__row{align-items:center;gap:var(--space-2);padding:4px 12px 6px;display:flex}.context-menu__row .input{width:110px}.context-menu__row .prop-field__error{max-width:24ch;line-height:1.25}.context-menu__unit{font-size:var(--font-size-sm);color:var(--color-text-muted)}.input--invalid{border-color:var(--color-danger)}.projects{grid-template-rows:var(--topbar-h) 1fr;height:100%;display:grid}.projects__header{align-items:center;gap:var(--space-3);padding:0 var(--space-3);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex}.projects__title{font-size:var(--font-size-lg);margin:0;font-weight:600}.projects__header>.btn:first-of-type{margin-left:auto}.projects__list{gap:var(--space-2);width:100%;max-width:720px;padding:var(--space-4);flex-direction:column;margin:0 auto;display:flex;overflow-y:auto}.projects__error{color:var(--color-danger);margin:0}.projects__empty{text-align:center;color:var(--color-text-muted);padding:72px 0}.projects__empty-actions{justify-content:center;gap:var(--space-2);margin-top:var(--space-3);display:flex}.projects__card{align-items:center;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);display:flex;overflow:hidden}.projects__card:hover{border-color:var(--color-accent)}.projects__card-main{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;padding:10px 14px;display:flex}.projects__card-name{font-weight:600}.projects__card-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.projects__card-name-input{flex:1;margin:8px 0 8px 14px}.projects__card-actions{align-items:center;gap:var(--space-1);padding-right:var(--space-2);display:flex}.projects__card-roles{align-items:baseline;gap:var(--space-2);display:flex}.projects__badge{border:1px solid var(--color-border);font-size:var(--font-size-sm);color:var(--color-text-muted);border-radius:999px;padding:0 6px}.projects__badge--editor{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.projects__card-owner{font-size:var(--font-size-sm);color:var(--color-text-muted);overflow-wrap:anywhere}.projects__local-import{gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-accent);border-radius:var(--radius);background:var(--color-surface);flex-direction:column;display:flex}.projects__local-import p{margin:0}.projects__local-import-hint{font-size:var(--font-size-sm);color:var(--color-text-muted)}.projects__local-import-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.projects__local-import-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.projects__local-import-name{overflow-wrap:anywhere}.projects__local-import-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.projects__local-import-actions{gap:var(--space-2);display:flex}.editor-host__state{place-content:center;justify-items:center;gap:var(--space-3);height:100%;color:var(--color-text-muted);display:grid}.topbar__back{padding:2px var(--space-1);border-radius:var(--radius);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;background:0 0;border:none}.topbar__back:hover{background:var(--color-accent-soft);color:var(--color-accent)}.topbar__save-status{font-size:var(--font-size-sm);color:var(--color-text-muted);white-space:nowrap;min-width:40px;max-width:var(--topbar-status-budget);text-overflow:ellipsis;overflow:hidden}.topbar__save-status--error{color:var(--color-danger)}@media (width<=1200px){.topbar__badge{display:none}.topbar__tab{padding:5px var(--space-2)}}.topbar__tabs,.topbar__tab,.topbar__actions,.topbar__actions>.icon-btn,.topbar__export{flex:none}.app-loading{height:100%;color:var(--color-text-muted);font-size:var(--font-size-lg);justify-content:center;align-items:center;display:flex}.projects__user{color:var(--color-text-muted);font-size:var(--font-size-sm);text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.auth{background:var(--auth-bg);min-height:100%;padding:var(--space-4);justify-content:center;display:flex}.auth__card{gap:var(--space-3);flex-direction:column;width:440px;max-width:100%;padding-top:96px;display:flex}.auth__brand{justify-content:center;align-items:center;gap:var(--space-2);color:var(--color-accent);display:flex}.auth__brand-name{color:var(--color-text);font-size:24px;font-weight:700}.auth__lead{text-align:center;color:var(--color-text-muted);margin:0}.auth__form{gap:var(--space-3);margin-top:var(--space-2);flex-direction:column;display:flex}.auth__field{height:48px;padding:0 var(--space-3);border-radius:var(--radius)}.auth__field--code{text-align:center;letter-spacing:.3em;font-size:var(--font-size-lg)}.auth__submit{height:48px;font-size:var(--font-size-lg)}.auth__note,.auth__hint{text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.auth__error{text-align:center;color:var(--color-danger);margin:0}.auth__dev-code{text-align:center;color:var(--color-accent);margin:0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.auth__links{justify-content:center;gap:var(--space-4);display:flex}.auth__link{cursor:pointer;color:var(--color-accent);font:inherit;background:0 0;border:none;padding:0}.auth__link:disabled{color:var(--color-disabled);cursor:default}.auth__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.access-dialog__owner,.access-dialog__hint{margin:0 0 var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted)}.access-dialog__members{gap:var(--space-2);margin-bottom:var(--space-3);flex-direction:column;display:flex}.access-dialog__row{align-items:center;gap:var(--space-2);display:flex}.access-dialog__row--invite{border-top:1px solid var(--color-border);padding-top:var(--space-3)}.access-dialog__email{overflow-wrap:anywhere;flex:auto;min-width:0}.access-dialog__status{font-size:var(--font-size-sm);color:var(--color-text-muted);flex:none}.access-dialog__error{margin:var(--space-2) 0 0;font-size:var(--font-size-sm);color:var(--color-danger)}
