:root{--color-page:oklch(0.965 0.006 230);--color-surface:oklch(0.992 0.004 230);--color-surface-muted:oklch(0.952 0.007 230);--color-border:oklch(0.875 0.012 230);--color-text:oklch(0.235 0.015 235);--color-text-muted:oklch(0.5 0.018 235);--color-accent:oklch(0.58 0.12 215);--color-accent-soft:oklch(0.94 0.035 215);--color-success:oklch(0.6 0.11 165);--color-warning:oklch(0.72 0.12 75);--color-danger:oklch(0.58 0.13 25);--color-danger-soft:oklch(0.95 0.035 25);--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--radius-card:8px;--radius-control:7px;--shadow-popover:0 18px 48px oklch(0.235 0.015 235/0.12)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--color-page);color:var(--color-text);font-family:var(--font-sans)}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.paper-grid{background-color:var(--color-surface-muted);background-image:linear-gradient(var(--color-border) 1px,transparent 1px),linear-gradient(90deg,var(--color-border) 1px,transparent 1px),linear-gradient(oklch(.82 .014 230) 1px,transparent 1px),linear-gradient(90deg,oklch(.82 .014 230) 1px,transparent 1px);background-size:16px 16px,16px 16px,64px 64px,64px 64px}.ui-button,.ui-icon-button{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color .16s ease-out,background-color .16s ease-out,color .16s ease-out}.ui-button{min-height:36px;padding:0 14px;font-size:14px;font-weight:500}.ui-icon-button{width:32px;height:32px;display:inline-grid;place-items:center}.ui-button:disabled,.ui-icon-button:disabled{cursor:not-allowed;opacity:.55}.ui-button:focus-visible,.ui-icon-button:focus-visible{outline:2px solid var(--color-accent-soft);outline-offset:2px}.ui-button--primary{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-surface)}.ui-button--ghost:hover,.ui-button--secondary:hover,.ui-icon-button:hover{border-color:oklch(.75 .05 215);background:var(--color-accent-soft)}.ui-button--ghost{border-color:transparent;background:transparent}.ui-button--danger{border-color:var(--color-danger);background:var(--color-danger);color:var(--color-surface)}.ui-drawer{position:fixed;inset:0 0 0 auto;z-index:40;width:min(420px,100vw);border-left:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-popover)}.ui-dialog__header,.ui-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border-bottom:1px solid var(--color-border)}.ui-dialog__header h2,.ui-drawer__header h2{margin:0;font-size:16px;line-height:24px}.ui-dialog__body,.ui-drawer__body{padding:16px}.ui-dialog-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:oklch(.235 .015 235/.24)}.ui-dialog{width:min(420px,calc(100vw - 32px));border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-popover)}.ui-menu{position:relative}.ui-menu>summary{width:max-content;list-style:none}.ui-menu>summary::-webkit-details-marker{display:none}.ui-menu__content{position:absolute;right:0;z-index:30;min-width:180px;padding:6px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-popover)}.ui-menu__item{width:100%;border:0;border-radius:6px;background:transparent;padding:8px 10px;color:var(--color-text);text-align:left}.ui-menu__item:hover{background:var(--color-surface-muted)}.ui-menu__item--danger{color:var(--color-danger)}.diagram-card-menu{position:relative}.diagram-card-menu__content{top:36px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.dialog-error{margin:10px 0 0;color:var(--color-danger);font-size:13px}.ui-tabs__list{display:flex;gap:4px;border-bottom:1px solid var(--color-border);padding:0 16px}.ui-tabs__tab{border:0;border-bottom:2px solid transparent;background:transparent;padding:10px 8px;color:var(--color-text-muted)}.ui-tabs__tab--active{border-bottom-color:var(--color-accent);color:var(--color-text)}.app-shell{min-height:100vh;background:linear-gradient(180deg,oklch(.985 .004 230),transparent 220px),var(--color-page)}.auth-page{display:grid;min-height:100vh;grid-template-rows:auto 1fr;background:linear-gradient(180deg,oklch(.985 .004 230),transparent 240px),var(--color-page)}.auth-topbar{display:flex;min-height:58px;align-items:center;border-bottom:1px solid var(--color-border);background:oklch(.992 .004 230/.9);padding:0 clamp(16px,4vw,40px)}.auth-panel{align-self:center;width:min(460px,calc(100vw - 32px));margin:0 auto;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:clamp(28px,5vw,40px);box-shadow:0 18px 42px oklch(.235 .015 235/.08)}.eyebrow{margin:0 0 14px;color:var(--color-accent);font-size:12px;font-weight:750;letter-spacing:0;text-transform:uppercase}.auth-panel h1{max-width:10ch;margin:0;font-size:clamp(32px,5vw,44px);line-height:1.08;letter-spacing:0}.auth-form{display:grid;grid-gap:16px;gap:16px;margin-top:30px}.auth-field{display:grid;grid-gap:8px;gap:8px}.auth-field span{color:var(--color-text);font-size:13px;font-weight:700}.auth-field input{min-height:42px;width:100%;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);padding:0 12px}.auth-field input:focus-visible{outline:2px solid var(--color-accent-soft);outline-offset:2px}.auth-actions{display:flex;flex-wrap:wrap;gap:10px}.auth-actions .ui-button{display:inline-flex;align-items:center;justify-content:center;width:100%}.auth-message{border:1px solid oklch(.78 .07 165);border-radius:var(--radius-control);background:oklch(.96 .03 165);color:oklch(.35 .08 165);padding:10px 12px;font-size:13px}.auth-message--error{border-color:oklch(.78 .07 25);background:var(--color-danger-soft);color:var(--color-danger)}.global-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;min-height:58px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-border);background:oklch(.992 .004 230/.88);padding:0 clamp(16px,4vw,40px);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand{display:inline-flex;align-items:center;gap:9px;color:var(--color-text);font-size:15px;font-weight:650;letter-spacing:0}.brand__icon{width:24px;height:24px;flex:0 0 auto;overflow:visible}.brand__tile{stroke-width:1.6}.brand__tile--primary{fill:oklch(.96 .03 215);stroke:var(--color-accent)}.brand__tile--secondary{fill:oklch(.97 .035 165);stroke:var(--color-success)}.brand__connector{fill:none;stroke:var(--color-text-muted);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}.user-menu{position:relative}.user-menu>summary{list-style:none}.user-menu>summary::-webkit-details-marker{display:none}.user-menu-button{display:inline-grid;width:34px;height:34px;place-items:center;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-accent);cursor:pointer;font-size:13px;font-weight:700}.user-menu__content{position:absolute;right:0;z-index:30;min-width:220px;padding:8px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-popover)}.user-menu__content p{margin:0 0 6px;padding:8px 10px;color:var(--color-text-muted);font-size:13px}.diagram-card a:focus-visible,.diagram-card__menu-button:focus-visible,.library-actions input:focus-visible,.user-menu-button:focus-visible{outline:2px solid var(--color-accent-soft);outline-offset:2px}.library-page{width:min(1160px,calc(100vw - 32px));margin:0 auto;padding:34px 0 56px}.library-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.library-heading h1{margin:0;font-size:clamp(28px,4vw,40px);line-height:1.1;letter-spacing:0}.library-heading p{margin:8px 0 0;color:var(--color-text-muted);font-size:15px}.library-actions{display:flex;align-items:center;gap:10px}.library-actions input{width:min(280px,34vw);min-height:38px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);padding:0 12px}.library-actions input::placeholder{color:var(--color-text-muted)}.new-diagram-button{display:inline-flex;align-items:center;gap:7px}.new-diagram-button span{font-size:17px;line-height:1}.new-diagram-menu__file-input{display:none}.import-drawer{display:grid;grid-gap:16px;gap:16px}.import-drawer__status{border:1px solid oklch(.78 .07 165);border-radius:var(--radius-control);background:oklch(.96 .03 165);color:oklch(.35 .08 165);padding:10px 12px;font-size:13px;line-height:1.45}.import-drawer__status--error{border-color:oklch(.78 .07 25);background:var(--color-danger-soft);color:var(--color-danger)}.import-drawer__preview{display:grid;aspect-ratio:4/3;place-items:center;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-card)}.import-drawer__meta{display:grid;grid-gap:10px;gap:10px;margin:0}.import-drawer__meta div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--color-border);padding-bottom:10px}.import-drawer__meta dt{color:var(--color-text-muted);font-size:13px}.import-drawer__meta dd{min-width:0;margin:0;overflow-wrap:anywhere;text-align:right;font-size:13px}.import-drawer__field{display:grid;grid-gap:7px;gap:7px}.import-drawer__field span{color:var(--color-text-muted);font-size:13px}.import-drawer__field input{min-height:38px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);padding:0 12px}.import-drawer__field input:focus-visible{outline:2px solid var(--color-accent-soft);outline-offset:2px}.import-drawer__actions{display:flex;justify-content:flex-end;gap:10px}.diagram-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:18px;gap:18px}.diagram-card{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:0 10px 30px oklch(.235 .015 235/.05);transition:border-color .16s ease-out,box-shadow .16s ease-out,transform .16s ease-out}.diagram-card:hover{border-color:oklch(.78 .055 215);box-shadow:0 16px 38px oklch(.235 .015 235/.09);transform:translateY(-1px)}.diagram-card__open{display:block}.diagram-card__preview{display:grid;overflow:hidden;aspect-ratio:4/3;place-items:center;border-bottom:1px solid var(--color-border);background-color:var(--color-surface-muted)}.diagram-card__preview img{width:100%;height:100%;object-fit:cover}.diagram-card__placeholder{position:relative;width:54%;height:46%}.diagram-card__placeholder span{position:absolute;border:1px solid oklch(.72 .075 215);border-radius:6px;background:oklch(.98 .012 215/.88);box-shadow:0 6px 14px oklch(.235 .015 235/.06)}.diagram-card__placeholder span:first-child{top:0;left:0;width:48%;height:34%}.diagram-card__placeholder span:nth-child(2){right:0;bottom:0;width:52%;height:38%}.diagram-card__placeholder span:nth-child(3){top:42%;left:24%;width:34%;height:26%}.diagram-card__body{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:13px 12px 14px 14px}.diagram-card__meta{min-width:0}.diagram-card__meta h2{margin:0;overflow:hidden;font-size:15px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.diagram-card__meta p{margin:5px 0 0;color:var(--color-text-muted);font-size:12px;line-height:1.4}.diagram-card__menu-button{flex:0 0 auto;color:var(--color-text-muted);font-size:18px;line-height:1}.empty-state{display:grid;min-height:390px;place-items:center;border:1px dashed oklch(.76 .04 215);border-radius:var(--radius-card);background:var(--color-surface);padding:34px;text-align:center}.empty-state__preview{display:grid;width:min(320px,100%);aspect-ratio:4/3;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-card);overflow:hidden}.empty-state__preview div{width:42%;height:34%;border:1px solid oklch(.72 .075 215);border-radius:7px;background:oklch(.98 .012 215/.85);box-shadow:56px 34px 0 -8px oklch(.98 .012 215/.85),-44px 42px 0 -12px oklch(.98 .012 215/.85)}.empty-state h2{margin:22px 0 0;font-size:21px;letter-spacing:0}.empty-state p{margin:8px 0 18px;color:var(--color-text-muted);font-size:14px}.empty-state__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.editor-shell{min-height:100vh;background:var(--color-surface-muted)}.editor-topbar{position:fixed;inset:0 0 auto;z-index:30;display:flex;height:52px;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--color-border);background:oklch(.992 .004 230/.94);padding:0 12px 0 14px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.editor-topbar__actions,.editor-topbar__left{display:flex;min-width:0;align-items:center;gap:10px}.editor-topbar__left{flex:1 1 auto}.editor-topbar__actions{flex:0 0 auto}.editor-topbar__back{flex:0 0 auto;border-right:1px solid var(--color-border);padding-right:12px;color:var(--color-text-muted);font-size:13px;font-weight:600}.editor-topbar__back:hover{color:var(--color-accent)}.editor-title{display:flex;min-width:0;align-items:center;gap:8px}.editor-title__button{min-width:0;max-width:min(48vw,520px);border:1px solid transparent;border-radius:var(--radius-control);background:transparent;margin:0;padding:4px 6px;overflow:hidden;color:var(--color-text);font-size:15px;font-weight:650;line-height:1.3;text-align:left;text-overflow:ellipsis;white-space:nowrap}.editor-title__button:focus-visible,.editor-title__button:hover{border-color:var(--color-border);background:var(--color-surface);outline:none}.editor-title__input{width:min(48vw,520px);min-width:180px;height:32px;border:1px solid var(--color-accent);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text);padding:0 8px;font-size:15px;font-weight:650}.editor-title__input:focus-visible{outline:2px solid var(--color-accent-soft);outline-offset:2px}.editor-title__error{flex:0 0 auto;color:var(--color-danger);font-size:12px;white-space:nowrap}.save-status{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-muted);font-size:12px;line-height:1;white-space:nowrap}.save-status:before{width:7px;height:7px;border-radius:999px;background:var(--color-text-muted);content:""}.save-status--dirty:before,.save-status--saving-draft:before,.save-status--saving-version:before{background:var(--color-warning)}.save-status--draft-saved:before,.save-status--version-saved:before{background:var(--color-success)}.save-status--draft-failed:before,.save-status--version-failed:before{background:var(--color-danger)}.editor-frame-wrap{height:100vh;padding-top:52px}.editor-frame{display:block;width:100%;height:calc(100vh - 52px);border:0;background:var(--color-surface)}.editor-tools-empty{margin:0;color:var(--color-text-muted);font-size:14px}.export-panel,.version-history{display:grid;grid-gap:10px;gap:10px}.export-panel__row,.version-history__row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:12px}.export-panel__row div,.version-history__main{min-width:0}.version-history__title{display:flex;align-items:center;gap:8px}.export-panel__row strong,.version-history__title strong{font-size:14px}.version-history__title span{border-radius:999px;background:var(--color-accent-soft);color:var(--color-accent);padding:3px 7px;font-size:11px;font-weight:650}.export-panel__row p,.version-history__row p{margin:5px 0 0;color:var(--color-text-muted);font-size:12px;line-height:1.4}@media (max-width:720px){.global-topbar{padding:0 16px}.auth-panel{align-self:start;margin-top:24px}.auth-actions{grid-template-columns:1fr}.auth-actions .ui-button{width:100%}.library-page{width:min(100% - 24px,1160px);padding-top:24px}.library-actions,.library-heading{align-items:stretch;flex-direction:column}.library-actions input{width:100%}.new-diagram-button{justify-content:center;width:100%}.import-drawer__actions{align-items:stretch;flex-direction:column}.editor-topbar{gap:8px}.editor-topbar__actions{gap:6px}.save-status{display:none}.export-panel__row,.version-history__row{align-items:stretch;flex-direction:column}.diagram-grid{grid-template-columns:1fr}.empty-state{min-height:340px;padding:24px}}