:root{--paper:#f7f7f5;--white:#fff;--ink:#20221f;--muted:#888c83;--line:#e7e8e2;--accent:#c0ef71;--lav:#7771d9;--danger:#bd4d4d;--font:'Manrope','DM Sans',sans-serif;--mono:'DM Mono',monospace}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font);overflow:hidden}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,[contenteditable]:focus-visible{outline:2px solid #9a96ef;outline-offset:3px}[hidden]{display:none!important}.topbar{height:70px;padding:0 clamp(20px,4.2vw,68px);display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.78);position:relative;z-index:20}.brand{font:800 24px var(--font);letter-spacing:-1.6px;text-decoration:none;color:var(--ink)}.brand span{color:#7e7aee}.topbar-context{font-size:12px;color:#8b8f87;border-left:1px solid var(--line);padding-left:24px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:18px}.status{font:11px var(--mono);color:#7b8078}.button{border:1px solid transparent;border-radius:5px;padding:10px 14px;font-size:12px;font-weight:700;transition:transform .15s,background .15s,border-color .15s}.button:hover{transform:translateY(-1px)}.button-dark{background:var(--ink);color:#fff}.button-dark:hover{background:#35382f}.button-light{background:#fff;border-color:var(--line);color:var(--ink)}.button-danger{background:#a93131;color:#fff}.button-plus{font-size:18px;line-height:10px;vertical-align:-1px;margin-right:5px}.button-large{padding:14px 18px;font-size:13px}.page{height:calc(100dvh - 70px)}.home-page{overflow:auto;padding:0 clamp(20px,7.6vw,122px);display:flex;flex-direction:column}.home-intro{padding:clamp(65px,10vh,120px) 0 64px;max-width:740px}.eyebrow{font:10px var(--mono);letter-spacing:1.8px;color:#888d82}.eyebrow-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#a4d96b;margin-right:8px}.home-intro h1{font-size:clamp(48px,7vw,88px);line-height:1.06;letter-spacing:-.075em;margin:20px 0 17px;font-weight:700}.home-intro h1 em{font-style:normal;color:#8b86e5}.home-intro p{font-size:15px;line-height:1.9;max-width:460px;color:#777d72;margin:0 0 28px}.canvas-library{border-top:1px solid #dfe1d9;padding-top:28px;max-width:1200px;width:100%;margin:0 auto 50px}.library-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.library-header h2{font-size:25px;letter-spacing:-1.2px;margin:8px 0 0}.library-header h2 span{display:inline-flex;align-items:center;justify-content:center;min-width:23px;height:23px;border-radius:50%;background:#e9eae3;color:#74786e;font:10px var(--mono);vertical-align:4px;margin-left:5px;padding:0 5px}.library-note{font-size:11px;color:#9a9d94}.board-list{border-top:1px solid var(--line)}.board-row{display:grid;grid-template-columns:minmax(0,1fr) 150px 120px 40px;align-items:center;gap:18px;min-height:78px;border-bottom:1px solid var(--line);padding:10px 5px;transition:background .15s}.board-row:hover{background:rgba(255,255,255,.65)}.board-open{min-width:0;display:flex;align-items:center;gap:15px;border:0;background:transparent;text-align:left;color:var(--ink);padding:8px 5px}.board-glyph{width:38px;height:38px;flex:0 0 38px;border:1px solid #e6e7e0;border-radius:4px;display:grid;place-items:center;background:#fff;font-size:17px;color:#7975cf}.board-name-wrap{min-width:0}.board-name{display:block;font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-subtitle{display:block;margin-top:4px;color:#a0a399;font-size:10px}.board-updated,.board-items{font:10px var(--mono);color:#92968d}.board-items{text-align:right}.board-row-actions{display:flex;justify-content:end;gap:5px}.row-icon{width:32px;height:32px;border:0;background:transparent;border-radius:4px;color:#9b9e94;font-size:19px}.row-icon:hover{background:#ecece6;color:#333}.row-icon.delete:hover{background:#fff0ed;color:var(--danger)}.empty-home{padding:42px 12px;border-bottom:1px solid var(--line);text-align:center}.empty-mark{font-size:28px;color:#8b86e5}.empty-home p{font-size:13px;color:#7e8277}.text-button{border:0;background:transparent;font-size:12px;font-weight:700;color:var(--ink)}.text-button span{color:#7e7aee;margin-left:4px}.home-footer{margin-top:auto;padding:28px 0 24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:#a0a398;font:9px var(--mono);letter-spacing:.6px}
.workspace-page{background:#f7f7f5;display:flex;flex-direction:column;min-height:0}.workspace-header{height:58px;flex:0 0 58px;display:flex;align-items:center;gap:13px;padding:0 22px;background:#fff;border-bottom:1px solid var(--line);z-index:5}.workspace-divider,.editor-header-divider{height:25px;width:1px;background:var(--line)}.board-title{width:min(36vw,420px);border:0;background:transparent;outline:0!important;font-size:13px;font-weight:700;color:#292b27}.workspace-save-state{font:10px var(--mono);color:#858b80;margin-left:8px}.workspace-actions{margin-left:auto;display:flex;align-items:center;gap:5px}.icon-button{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;background:transparent;color:#74796f;border-radius:5px;position:relative;flex:0 0 auto}.icon-button svg,.format-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon-button:hover,.icon-button.active{background:#efefff;color:#615bd0;border-color:#e7e5ff}.import-button{cursor:pointer}.import-button input{display:none}.editor-layout{display:flex;flex:1;min-height:0}.tool-rail{width:60px;flex:0 0 60px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:13px 0;background:#fff;border-right:1px solid var(--line);z-index:4}.rail-group,.rail-bottom{display:flex;flex-direction:column;align-items:center;gap:5px}.rail-separator{width:25px;height:1px;background:var(--line);margin:6px 0}.canvas-shell{flex:1;min-width:0;position:relative;overflow:hidden;background-color:#f7f7f5;background-image:radial-gradient(#dadcd4 .8px,transparent .8px);background-size:21px 21px}#stage{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.canvas-meta{position:absolute;z-index:2;top:16px;left:19px;right:19px;display:flex;justify-content:space-between;gap:15px;pointer-events:none;font:9px var(--mono);letter-spacing:1px;color:#a0a398}.meta-dot{margin:0 5px}.canvas-empty-tip{position:absolute;top:50%;left:50%;transform:translate(-50%,-45%);display:flex;flex-direction:column;align-items:center;gap:9px;text-align:center;pointer-events:none;color:#b4b7ad;transition:opacity .15s}.canvas-empty-tip>span{width:44px;height:44px;border:1px dashed #cfd1c8;border-radius:50%;display:grid;place-items:center;font-size:23px}.canvas-empty-tip strong{font-size:12px;font-weight:600;color:#8d9287}.canvas-empty-tip small{font-size:10px;max-width:260px;line-height:1.7}.zoom-controls{position:absolute;z-index:3;bottom:19px;right:20px;display:flex;align-items:center;gap:4px;padding:4px;border:1px solid #e5e6df;border-radius:6px;background:rgba(255,255,255,.93);box-shadow:0 3px 15px #2428120a}.small-icon{width:30px;height:30px}.zoom-controls #zoomPercent{font:10px var(--mono);color:#81857b;min-width:44px;text-align:center}.zoom-controls .icon-button svg{width:15px;height:15px}.zoom-sign{position:absolute;font:11px var(--font);background:#fff;line-height:10px;right:5px;bottom:3px}.icon-button[data-tooltip]:hover::after,.format-button[data-tooltip]:hover::after{content:attr(data-tooltip);position:absolute;z-index:99;left:calc(100% + 9px);top:50%;transform:translateY(-50%);padding:7px 9px;background:#292b27;color:#fff;border-radius:4px;white-space:nowrap;font:600 10px var(--font);letter-spacing:0;box-shadow:0 5px 15px #0002;pointer-events:none}.icon-button[data-tooltip]:hover::before{content:attr(data-help);position:absolute;z-index:99;left:calc(100% + 9px);top:calc(50% + 14px);padding:8px 10px;width:220px;white-space:normal;background:#292b27;color:#d4d8cf;border-radius:4px;font:400 10px/1.5 var(--font);letter-spacing:0;box-shadow:0 5px 15px #0002;pointer-events:none}.workspace-actions .icon-button[data-tooltip]:hover::after,.workspace-actions .icon-button[data-tooltip]:hover::before{left:auto;right:0;transform:none}.workspace-actions .icon-button[data-tooltip]:hover::after{top:calc(100% + 8px)}.workspace-actions .icon-button[data-tooltip]:hover::before{top:calc(100% + 32px)}
.note-editor{position:fixed;z-index:30;inset:70px 0 0;background:#fbfbf9;display:flex;flex-direction:column;overflow:auto}.note-editor-header{height:58px;flex:0 0 58px;display:flex;align-items:center;gap:14px;padding:0 clamp(18px,4vw,64px);border-bottom:1px solid var(--line);background:#fff}.note-editor-kind{font:10px var(--mono);letter-spacing:1.6px;color:#8a8f83}.editor-autosave{font:10px var(--mono);color:#a0a398;margin-left:auto}.external-button{margin-left:15px;text-decoration:none}.note-editor-inner{width:min(850px,calc(100% - 40px));margin:0 auto;padding:54px 0 35px;min-height:calc(100% - 58px);display:flex;flex-direction:column}.note-title-input{border:0;outline:0!important;background:transparent;font:700 clamp(28px,4vw,44px)/1.2 var(--font);letter-spacing:-.055em;color:#242621;padding:0 2px 23px;width:100%}.note-title-input::placeholder{color:#c2c4ba}.format-toolbar{display:flex;align-items:center;gap:4px;padding:7px 0 12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);position:sticky;top:0;background:#fbfbf9;z-index:2;flex-wrap:wrap}.format-button{width:32px;height:31px;border:0;border-radius:4px;background:transparent;color:#666c60;display:grid;place-items:center;position:relative;font-size:13px}.format-button:hover,.format-button:focus{background:#eeefff;color:#615bd0}.italic-button{font-family:Georgia,serif;font-style:italic}.underline-button{text-decoration:underline;text-underline-offset:3px}.format-button svg{width:17px;height:17px}.format-divider{height:19px;width:1px;background:var(--line);margin:0 5px}.format-button[data-tooltip]:hover::after{top:calc(100% + 7px);left:50%;transform:translateX(-50%)}.note-content{flex:1;min-height:330px;padding:27px 2px 40px;outline:0!important;font-size:15px;line-height:1.85;overflow-wrap:anywhere;color:#34372f}.note-content:empty:before{content:attr(data-placeholder);color:#b3b6ab;pointer-events:none}.note-content h2,.note-content h3{line-height:1.35;letter-spacing:-.03em;margin:1.4em 0 .4em}.note-content h2{font-size:24px}.note-content h3{font-size:19px}.note-content p{margin:.5em 0 1em}.note-content ul,.note-content ol{padding-left:28px}.note-content img{max-width:100%;height:auto;border-radius:6px;display:block;margin:18px auto;box-shadow:0 8px 28px #282b180c}.note-content a{color:#625ec9;text-decoration:underline;text-underline-offset:3px}.note-content blockquote{margin:18px 0;border-left:3px solid #c6c1ff;padding:2px 0 2px 18px;color:#777b70}.note-content pre,.note-content code{font-family:var(--mono);background:#eeeee8;border-radius:4px}.note-content code{padding:2px 4px;font-size:.88em}.note-content pre{padding:15px;overflow:auto}.note-content pre code{padding:0}.editor-footer{border-top:1px solid var(--line);padding-top:14px;display:flex;justify-content:space-between;font:9px var(--mono);letter-spacing:1px;color:#b0b3a9}
.modal-dialog{width:min(480px,calc(100vw - 28px));padding:0;border:1px solid #e6e7df;border-radius:8px;background:#fff;color:var(--ink);box-shadow:0 25px 100px #171b1733}.modal-dialog::backdrop{background:#24271f66;backdrop-filter:blur(3px)}.modal-form{padding:34px;position:relative}.modal-close{position:absolute;right:17px;top:14px;width:30px;height:30px;border:0;background:transparent;color:#9b9e94;font-size:25px;line-height:20px}.modal-form h2{font-size:27px;letter-spacing:-1.2px;margin:10px 0}.modal-form p{font-size:12px;line-height:1.7;color:#858a7e;margin:0 0 23px}.modal-form label:not(.file-drop){display:block;font-size:11px;font-weight:700;color:#5a5f55;margin:15px 0 7px}.modal-form input:not([type=file]){width:100%;border:1px solid #e0e2d9;border-radius:4px;background:#fbfbf9;padding:12px;font-size:12px;outline-color:#bdb8ff}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:25px}.file-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px;border:1px dashed #cfd1c7;border-radius:5px;cursor:pointer;gap:8px;color:#62675d}.file-drop:hover{background:#f7f8f2}.file-drop-icon{font-size:22px;color:#8a84ed}.file-drop strong{font-size:12px}.file-drop small,.file-name{font-size:10px;color:#a0a398}.file-name{text-align:center;margin-top:10px}.shape-options{display:flex;gap:12px;margin-top:24px}.shape-option{flex:1;display:flex;flex-direction:column;align-items:center;gap:13px;padding:18px 7px;border:1px solid var(--line);border-radius:5px;background:#fbfbf9;font-size:11px;color:#64695e}.shape-option:hover{border-color:#b5b0ff;background:#f6f5ff}.shape-preview{width:36px;height:28px;display:block;border:1.7px solid #7873d8;background:#f0efff}.ellipse-preview{border-radius:50%}.diamond-preview{width:24px;height:24px;transform:rotate(45deg);margin:2px 0}.toast{position:fixed;z-index:100;bottom:24px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;transition:.2s;background:#292b27;color:#fff;padding:10px 15px;border-radius:5px;font-size:11px;box-shadow:0 8px 35px #0002}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:760px){.topbar{height:60px;padding:0 15px}.page{height:calc(100dvh - 60px)}.topbar-context{display:none}.topbar-right{gap:8px}.status{display:none}.home-page{padding:0 20px}.home-intro{padding:58px 0 47px}.home-intro h1{font-size:54px}.home-intro p{font-size:13px}.library-note{display:none}.board-row{grid-template-columns:minmax(0,1fr) 36px;gap:6px;min-height:70px}.board-updated,.board-items{display:none}.board-open{gap:10px}.board-glyph{width:33px;height:33px;flex-basis:33px}.board-row-actions{grid-column:2;grid-row:1}.home-footer{flex-direction:column;gap:8px}.workspace-header{padding:0 10px;gap:7px;height:52px;flex-basis:52px}.workspace-save-state{display:none}.board-title{width:min(40vw,260px);font-size:12px}.workspace-actions{gap:0}.icon-button{width:33px;height:33px}.tool-rail{width:47px;flex-basis:47px}.canvas-meta{font-size:8px;left:10px;right:10px}.canvas-meta span:last-child{display:none}.note-editor{inset:60px 0 0}.note-editor-header{padding:0 12px;height:52px;flex-basis:52px;gap:9px}.note-editor-inner{padding-top:34px;width:calc(100% - 34px)}.note-title-input{font-size:31px}.editor-autosave{font-size:9px}.modal-form{padding:29px 22px}.format-toolbar{gap:1px}.format-divider{margin:0 3px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Graphit iteration: richer note tools, shape popover, in-canvas drawing and AI chat. */
[hidden]{display:none!important}
.shape-tool-wrap{position:relative;display:flex;justify-content:center}
.shape-palette{position:absolute;z-index:80;left:calc(100% + 7px);top:0;display:grid;grid-template-columns:repeat(3,34px);gap:3px;padding:6px;background:#fff;border:1px solid #e1e2da;border-radius:7px;box-shadow:0 10px 30px #171b1720}
.shape-palette[hidden]{display:none!important}
.shape-palette button{width:32px;height:32px;border:0;border-radius:4px;background:transparent;color:#625dc8;font-size:23px;line-height:1;cursor:pointer}
.shape-palette button:hover,.shape-palette button:focus-visible{background:#f0efff;outline:0}
.format-select-label{font-size:10px;color:#8a8f83;margin-left:3px}
.format-select{height:30px;max-width:103px;border:1px solid #e3e4dc;border-radius:4px;background:#fff;color:#4f554b;padding:0 5px;font:10px var(--font);outline-color:#bdb8ff}
.heading-select{max-width:112px}
.code-insert-button{color:#4d4a8a}
.note-content{font-size:16px;line-height:1.8;white-space:normal}
.note-content h1,.note-content h2,.note-content h3{font-weight:750;line-height:1.3;letter-spacing:-.035em;margin:1.25em 0 .45em}
.note-content h1{font-size:2em}
.note-content h2{font-size:1.55em}
.note-content h3{font-size:1.25em}
.note-content img{max-width:100%;height:auto;object-fit:contain;cursor:grab;user-select:none;-webkit-user-drag:element;box-sizing:border-box}
.note-content img:active{cursor:grabbing}
.note-content img.selected-note-image{outline:2px solid #7771d9;outline-offset:3px}
.note-content .note-code-block{position:relative;margin:18px 0;padding:38px 16px 16px;background:#20242a;color:#e8ebef;border-radius:7px;overflow:auto;white-space:pre}
.note-content .note-code-block code{display:block;padding:0;background:transparent;color:inherit;font:12px/1.65 var(--mono);white-space:pre}
.note-content .note-code-language{position:absolute;left:13px;top:11px;font:9px var(--mono);letter-spacing:1px;color:#a7b2bf}
.dialog-select,.modal-form textarea{width:100%;border:1px solid #e0e2d9;border-radius:4px;background:#fbfbf9;padding:11px;font:12px var(--font);outline-color:#bdb8ff;color:var(--ink)}
.modal-form textarea{resize:vertical;font-family:var(--mono);line-height:1.6}
.chat-launcher{position:fixed;z-index:45;right:22px;bottom:82px;width:43px;height:43px;border:1px solid #5854b7;border-radius:50%;background:#625ed1;color:#fff;display:grid;place-items:center;box-shadow:0 6px 23px #24223830;cursor:pointer;transition:transform .15s,background .15s}
.chat-launcher:hover{background:#4e49b9;transform:translateY(-2px)}
.chat-launcher svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.chat-panel{position:fixed;z-index:46;right:22px;bottom:135px;width:min(370px,calc(100vw - 28px));height:min(520px,calc(100dvh - 165px));display:flex;flex-direction:column;border:1px solid #e1e3dc;border-radius:10px;background:#fff;box-shadow:0 15px 60px #1c201b25;overflow:hidden}
.chat-panel[hidden]{display:none!important}
.chat-header{flex:0 0 56px;display:flex;align-items:center;justify-content:space-between;padding:0 15px;border-bottom:1px solid #ecece7;background:#fbfbf8}
.chat-header>div{display:flex;flex-direction:column;gap:3px}.chat-header strong{font-size:13px;color:#2d3029}.chat-header small{font-size:10px;color:#979b90}
.chat-close{width:29px;height:29px;border:0;border-radius:4px;background:transparent;color:#757a70;font-size:24px;cursor:pointer}.chat-close:hover{background:#f0f0ed}
.chat-messages{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:14px;background:#fff}
.chat-welcome{max-width:270px;margin:8px 0;padding:13px;background:#f7f7f4;color:#73786c;font-size:11px;line-height:1.7;border-radius:6px}
.chat-message{display:flex;flex-direction:column;gap:5px;max-width:95%}.chat-message.user{align-self:flex-end;align-items:flex-end}.chat-message.assistant{align-self:flex-start}
.chat-bubble{padding:10px 12px;border-radius:7px;background:#f4f4f0;color:#353830;font-size:11px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.chat-message.user .chat-bubble{background:#625ed1;color:#fff}.chat-loading{color:#888c82;font-style:italic}
.chat-sources{font-size:9px;line-height:1.5;color:#94988d;padding:0 4px}
.chat-form{display:flex;gap:8px;align-items:flex-end;padding:10px;border-top:1px solid #ecece7;background:#fff}.chat-form textarea{flex:1;min-width:0;resize:none;border:1px solid #e1e2da;border-radius:6px;padding:10px;font:11px/1.5 var(--font);outline-color:#bdb8ff}.chat-form button{width:38px;height:38px;border:0;border-radius:6px;background:#625ed1;color:#fff;display:grid;place-items:center;cursor:pointer}.chat-form button:disabled{opacity:.5;cursor:wait}.chat-form button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.chat-footnote{padding:0 12px 10px;font-size:9px;line-height:1.5;color:#a0a398;background:#fff}
@media(max-width:760px){.chat-launcher{right:13px;bottom:77px}.chat-panel{right:10px;bottom:129px;width:calc(100vw - 20px);height:min(520px,calc(100dvh - 150px))}.format-select{max-width:86px}.heading-select{max-width:95px}}

/* Inline canvas text editing: DOM text stays editable instead of being trapped in a bitmap layer. */
.canvas-text-editor{position:fixed;z-index:10000;box-sizing:border-box;resize:none;overflow:auto;padding:2px 4px;border:1px dashed #7771d9;border-radius:3px;background:rgba(255,255,255,.96);color:#252721;font:24px/1.2 Arial,sans-serif;outline:2px solid rgba(119,113,217,.14);white-space:pre-wrap;overflow-wrap:anywhere;}
.canvas-text-editor:focus{border-color:#7771d9;}

/* v0.2.3 hierarchy, editing, and selection refinements */
.home-intro{padding:clamp(38px,6vh,68px) 0 34px;max-width:none}
.home-intro .eyebrow{font-size:11px;letter-spacing:2.1px}
.topbar-right{margin-left:auto}
.text-tool-wrap{position:relative;display:flex;justify-content:center}
.text-palette{position:absolute;z-index:90;left:calc(100% + 8px);top:0;min-width:174px;padding:9px;background:#fff;border:1px solid #e1e2da;border-radius:7px;box-shadow:0 10px 30px #171b1720;display:flex;align-items:center;gap:7px}
.text-palette[hidden]{display:none!important}
.text-palette label{display:flex;flex-direction:column;gap:4px;color:#969a90;font:8px var(--mono);letter-spacing:.8px}
.text-palette select{height:29px;border:1px solid #e5e6df;border-radius:4px;background:#fff;padding:0 5px;color:#454940;font:10px var(--font)}
.text-style-toggle{width:29px;height:29px;border:1px solid #e5e6df;border-radius:4px;background:#fff;font:700 14px Georgia;color:#454940}
.text-style-toggle.active{background:#efefff;border-color:#c9c5ff;color:#615bd0}
.text-colors{display:flex;gap:4px;margin-left:auto}
.text-colors button{width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #d8dad1;background:var(--swatch);padding:0}
.text-colors button[data-text-color="#20221f"]{--swatch:#20221f}
.text-colors button[data-text-color="#2867c7"]{--swatch:#2867c7}
.text-colors button[data-text-color="#cf3e3e"]{--swatch:#cf3e3e}
.text-colors button[data-text-color="#27834c"]{--swatch:#27834c}
.text-colors button.active{box-shadow:0 0 0 2px #7771d9}
.group-panel{position:absolute;z-index:12;top:49px;left:15px;width:min(300px,calc(100% - 30px));max-height:min(68vh,540px);display:flex;flex-direction:column;gap:10px;padding:12px;background:rgba(255,255,255,.98);border:1px solid #e1e2da;border-radius:8px;box-shadow:0 12px 38px #1b201b20}
.group-panel[hidden]{display:none!important}
.group-panel-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#30342c}
.group-panel-head button{width:26px;height:26px;border:0;border-radius:4px;background:transparent;color:#7d8277;font-size:20px}
.group-actions{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.group-actions button{border:1px solid #e5e6df;border-radius:4px;background:#fbfbf9;padding:7px 6px;color:#5c6258;font-size:9px}
.group-actions button:hover{border-color:#bcb8f4;background:#f4f3ff;color:#5751bb}
.group-tree{overflow:auto;min-height:25px;max-height:320px;border-top:1px solid #ecece7;padding-top:5px}
.group-tree-row{width:100%;display:flex;align-items:center;gap:6px;min-height:30px;padding:4px 8px;border:0;border-radius:4px;background:transparent;text-align:left;color:#51564c;font-size:10px}
.group-tree-row:hover,.group-tree-row.active{background:#f0efff;color:#5852bf}
.group-tree-icon{color:#8e89dc}.group-tree-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-tree-count{color:#989d92;font:9px var(--mono)}
.group-empty,.group-hint{margin:0;padding:5px 4px;color:#a0a499;font-size:9px;line-height:1.6}.group-hint{border-top:1px solid #ecece7}
.canvas-image-preview{display:block;max-width:100%;max-height:220px;object-fit:contain;margin:14px auto 0;border:1px solid #e7e8e2;border-radius:5px;background:#f7f7f5}
/* Keep note chrome fixed; only the document surface scrolls like a word processor. */
.note-editor{overflow:hidden}
.note-editor-inner{height:calc(100% - 58px);min-height:0;overflow:hidden;padding-top:24px;padding-bottom:14px;gap:0}
.note-title-input{flex:0 0 auto;padding-bottom:16px}
.format-toolbar{position:relative;top:auto;flex:0 0 auto;padding:7px 8px;border:1px solid #e5e6df;border-radius:6px 6px 0 0;background:#f7f7f4}
.note-content{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;border:1px solid #e0e2d9;border-top:0;border-radius:0 0 6px 6px;background:#fff;padding:24px 28px 48px;line-height:1.8}
.note-content img{display:inline-block;vertical-align:middle;resize:both;overflow:auto;max-width:100%;height:auto;min-width:72px;min-height:48px;object-fit:contain;margin:10px 8px 10px 0;cursor:grab;user-select:none;-webkit-user-drag:element}
.note-content img.selected-note-image{outline:2px solid #7771d9;outline-offset:3px}
.editor-footer{flex:0 0 auto;margin-top:10px;padding-top:9px}
.canvas-text-editor{background:rgba(255,254,249,.96);border:1px solid #dcd9c9;border-radius:5px;box-shadow:0 3px 12px #25251b12;padding:6px 8px}
.canvas-text-editor::placeholder{color:#b6b4a8}
@media(max-width:760px){.group-panel{left:8px;top:45px}.text-palette{left:calc(100% + 5px)}.note-editor-inner{padding-top:14px;padding-bottom:8px}.note-content{padding:18px 15px 38px}.note-title-input{padding-bottom:12px}.editor-footer{font-size:8px}}


/* v0.2.3 rich-note image flow and editor stability */
.note-editor-inner{flex:1 1 auto;height:auto;min-height:0;overflow:hidden}
.note-content{display:block;min-height:0;overflow:auto;white-space:normal;overflow-wrap:anywhere}
.note-content img{display:inline-block;vertical-align:middle;max-width:min(100%,100%);height:auto;cursor:grab;user-select:none;-webkit-user-drag:element;object-fit:contain}
.note-content img.selected-note-image{outline:2px solid #7771d9;outline-offset:3px;cursor:move}
.note-content [data-graphit-font-size]{line-height:inherit}
.note-content .note-code-block{max-width:100%}

/* v0.3 accounts and board sharing */
.auth-screen{position:fixed;inset:0;z-index:500;background:#f7f7f5;display:grid;place-items:center;padding:24px}
.auth-screen[hidden]{display:none!important}
.auth-card{width:min(430px,100%);padding:clamp(25px,6vw,42px);border:1px solid #e4e5de;border-radius:10px;background:#fff;box-shadow:0 18px 65px #1e211b0d;display:flex;flex-direction:column;gap:15px}
.auth-brand{align-self:flex-start;margin-bottom:14px;font-size:26px}
.auth-card>.eyebrow{margin-top:7px;color:#777b70;font:10px var(--mono);letter-spacing:1.8px}
.auth-card h1{margin:0;color:#292d26;font:600 29px/1.15 var(--display)}
.auth-card>p{margin:-7px 0 3px;color:#83877d;font-size:12px;line-height:1.6}
.auth-form{display:flex;flex-direction:column;gap:13px}
.auth-form label{display:flex;flex-direction:column;gap:6px;color:#64695f;font-size:10px;font-weight:600}
.auth-form input{height:42px;padding:0 12px;border:1px solid #dedfd7;border-radius:5px;background:#fdfdfb;color:#2e322b;font:12px var(--font);outline-color:#8580d9}
.auth-form .button{width:100%;justify-content:center;height:43px;margin-top:3px}
.auth-toggle{padding:7px;border:0;background:transparent;color:#625ed1;font-size:11px;cursor:pointer}
.auth-privacy{padding-top:8px;border-top:1px solid #eff0eb;text-align:center;color:#999d93;font-size:9px}
.auth-error{margin:0;padding:9px 11px;border-radius:4px;background:#fff0ef;color:#a43d37;font-size:11px;line-height:1.5}
.account-menu{display:flex;align-items:center;gap:12px;margin-left:14px;color:#686d63;font-size:10px}
.account-menu[hidden]{display:none!important}
.account-menu span{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-menu button{padding:7px 9px;border:1px solid #e4e5de;border-radius:4px;background:#fff;color:#696e63;font-size:10px;cursor:pointer}
.account-menu button:hover{border-color:#c9c6ef;color:#5b56bc}
.share-members-wrap{margin-top:10px;padding-top:13px;border-top:1px solid #ecece7}
.share-members-wrap>strong{display:block;margin-bottom:8px;color:#53584f;font-size:11px}
.share-members{display:flex;flex-direction:column;gap:6px;max-height:160px;overflow:auto}
.share-member{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:7px 8px;border:1px solid #ecece7;border-radius:5px;background:#fbfbf9}
.share-member>span{min-width:0;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.share-member strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4e534a;font-size:10px}
.share-member small{color:#92978c;font-size:9px}
.share-member button{flex:0 0 auto;border:0;background:transparent;color:#a34e48;font-size:10px;cursor:pointer}
.share-empty{margin:0;color:#92978c;font-size:10px}
@media(max-width:760px){.account-menu{gap:6px;margin-left:7px}.account-menu span{max-width:84px}.account-menu button{font-size:9px;padding:6px}}

/* v0.4 collaboration, ink tools, context menu, and consistent select controls */
.select-wrap{position:relative;display:inline-flex;align-items:center;min-width:0}
.select-wrap::after{content:"";position:absolute;right:10px;top:50%;width:6px;height:6px;border-right:1.5px solid #777c72;border-bottom:1.5px solid #777c72;transform:translateY(-70%) rotate(45deg);pointer-events:none}
.edge-type-select,.format-select,.dialog-select,.palette-select{appearance:none;-webkit-appearance:none;border:1px solid #e2e4dc;border-radius:6px;background-color:#fbfbf9;color:#4c5148;font:600 10px var(--font);height:32px;padding:0 29px 0 10px;box-shadow:0 1px 2px #20221f08;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}
.edge-type-select{height:31px;min-width:116px;font-size:10px;background-color:#f7f7f4}
.edge-type-select:hover,.format-select:hover,.dialog-select:hover,.palette-select:hover{border-color:#c9c5f0;background-color:#fff}
.edge-type-select:focus,.format-select:focus,.dialog-select:focus,.palette-select:focus{border-color:#9e99e8;box-shadow:0 0 0 3px #7771d91a}
.format-select{height:30px;padding-left:8px;padding-right:25px;font-weight:500;background-color:#fff}
.dialog-select{width:100%;height:39px;padding-left:11px;padding-right:30px;background-color:#fbfbf9;font-size:11px}
.pen-tool-wrap{position:relative;display:flex;justify-content:center}
.pen-palette{position:absolute;z-index:92;left:calc(100% + 8px);top:-3px;width:226px;padding:12px;background:#fff;border:1px solid #e1e2da;border-radius:9px;box-shadow:0 14px 36px #171b1726;display:flex;flex-direction:column;gap:11px}
.pen-palette[hidden]{display:none!important}
.pen-palette-heading{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid #eff0eb;padding-bottom:8px}
.pen-palette-heading strong{font-size:11px;color:#34382f}.pen-palette-heading small{font:8px var(--mono);color:#a0a398;letter-spacing:.5px}
.pen-tool-options{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.pen-tool-options button{border:1px solid #e5e6df;border-radius:5px;padding:8px 5px;background:#fbfbf9;color:#64695e;font-size:10px;font-weight:600}
.pen-tool-options button.active,.pen-tool-options button:hover{border-color:#c5c0f3;background:#f1f0ff;color:#5d57c3}
.pen-colors{display:flex;align-items:center;gap:9px;padding:2px 1px}
.pen-colors button{width:19px;height:19px;padding:0;border-radius:50%;border:2px solid #fff;background:var(--ink-color);box-shadow:0 0 0 1px #d9dbd3;position:relative}
.pen-colors button[data-pen-color="#20221f"]{--ink-color:#20221f}.pen-colors button[data-pen-color="#3569c8"]{--ink-color:#3569c8}.pen-colors button[data-pen-color="#c64d4d"]{--ink-color:#c64d4d}.pen-colors button[data-pen-color="#268458"]{--ink-color:#268458}.pen-colors button[data-pen-color="#8d62c4"]{--ink-color:#8d62c4}.pen-colors button[data-pen-color="#e59a35"]{--ink-color:#e59a35}
.pen-colors button.active{box-shadow:0 0 0 2px #7771d9}
.pen-size-label{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#777c72;font-size:9px;font-weight:700}
.pen-size-label output{margin-left:auto;color:#555a50;font:9px var(--mono)}
.pen-size-label input[type=range]{width:100%;accent-color:#716bd3}
.pen-size-label:has(input){flex-wrap:wrap}
.palette-select{height:29px;width:100%;font-size:9px}
.canvas-context-menu{position:fixed;z-index:150;width:178px;padding:5px;background:#fff;border:1px solid #e2e3dc;border-radius:7px;box-shadow:0 12px 32px #20221f26;display:flex;flex-direction:column;gap:2px}
.canvas-context-menu[hidden]{display:none!important}
.canvas-context-menu button{width:100%;text-align:left;border:0;border-radius:4px;background:transparent;padding:8px 10px;color:#454a40;font-size:10px}
.canvas-context-menu button:hover{background:#f0efff;color:#5953bd}.canvas-context-menu .context-danger{color:#a94d48}.context-menu-divider{height:1px;background:#ecece7;margin:3px 2px}
.member-meta,.member-controls{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.member-role-label{font:9px var(--mono)!important;letter-spacing:.6px;color:#757a70!important}
.presence-status{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;color:#969b90!important;font-size:9px!important}
.presence-status i{display:block;width:7px;height:7px;border-radius:50%;background:#b5b9af}
.presence-status.online{color:#39815d!important}.presence-status.online i{background:#45a56e;box-shadow:0 0 0 3px #45a56e20}
.member-role-select{height:28px!important;width:auto!important;min-width:88px;padding:0 24px 0 8px!important;font-size:9px!important}
.member-remove{border:1px solid #ece3e1!important;border-radius:5px!important;padding:6px 8px!important;background:#fff!important;color:#a34e48!important;font-size:9px!important}
.member-remove:hover{background:#fff4f2!important;border-color:#e4c7c3!important}
.share-members{max-height:220px;gap:6px}
.share-member{min-height:48px}
.share-member>span:first-child{flex:1}
@media(max-width:760px){.pen-palette{left:calc(100% + 5px);width:210px}.edge-type-select{min-width:98px;max-width:120px}.member-controls{gap:5px}.presence-status{font-size:8px!important}.member-role-select{min-width:78px!important}}


/* Unified canvas text drawer */
.text-palette{min-width:210px;padding:12px;background:#fff;border:1px solid #e2e3dc;border-radius:9px;box-shadow:0 14px 36px #171b1726;gap:9px;align-items:center}
.text-palette label{font-size:8px;color:#82877c;letter-spacing:.7px}
.text-palette select{appearance:none;-webkit-appearance:none;height:31px;min-width:48px;padding:0 24px 0 9px;border:1px solid #e2e4dc;border-radius:6px;background:#fbfbf9;color:#4c5148;font:600 10px var(--font);outline:none}
.text-palette select:focus{border-color:#9e99e8;box-shadow:0 0 0 3px #7771d91a}
.text-palette .text-style-toggle{width:31px;height:31px;border:1px solid #e2e4dc;border-radius:6px;background:#fbfbf9;color:#4c5148;font-weight:700}
.text-palette .text-style-toggle.active{border-color:#c5c0f3;background:#f1f0ff;color:#5d57c3}
.text-palette .text-colors{display:flex;align-items:center;gap:7px}
.text-palette .text-colors button{width:17px;height:17px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #d9dbd3}
.text-palette .text-colors button.active{box-shadow:0 0 0 2px #7771d9}
.text-insert-button{height:31px;padding:0 10px;border:1px solid #d9d6f5;border-radius:6px;background:#f1f0ff;color:#5c56bf;font:600 10px var(--font);cursor:pointer}
.text-insert-button:hover{background:#e9e7ff}

/* Viewer note mode: readable, selectable, and navigable, but not editable. */
.note-editor-readonly .note-title-input{border-color:transparent;background:transparent;cursor:default;}
.note-editor-readonly .note-content{cursor:text;user-select:text;-webkit-user-select:text;}
.note-editor-readonly .editor-footer{color:#85897f;}
