:root{--ink:#17171c;--ink-2:#4a4a57;--ink-3:#85859a;--paper:#f6f5f1;--card:#fff;--line:#e4e3de;--accent:#5546ff;--accent-soft:#ecebff;--sun:#ffd43b;--danger:#d6293e;--shadow:0 1px 2px #14141e0f, 0 6px 20px #14141e17;--radius:12px;color:var(--ink);font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);-webkit-font-smoothing:antialiased;overscroll-behavior:none;font-size:14px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default;opacity:.4}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4,p{margin:0}kbd{color:var(--ink-3);white-space:nowrap;margin-left:auto;padding-left:18px;font:500 11px JetBrains Mono,ui-monospace,monospace}.muted{color:var(--ink-3)}.rel{position:relative}.btn{border-radius:10px;justify-content:center;align-items:center;gap:8px;height:44px;padding:0 18px;font-weight:600;text-decoration:none;transition:transform 80ms,background .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn.small{border-radius:9px;height:34px;padding:0 12px;font-size:13px}.btn.primary{background:var(--ink);color:#fff}.btn.primary:hover{background:#2a2a33}.btn.ghost{border:1px solid var(--line);background:#fff;width:100%}.btn.ghost:hover{background:var(--paper)}.link{color:var(--accent);font-size:13px;font-weight:600}.link:hover{text-decoration:underline}.icon-btn{width:34px;height:34px;color:var(--ink-2);border-radius:8px;flex:none;place-items:center;display:inline-grid}.icon-btn:hover:not(:disabled){color:var(--ink);background:#efeee9}.avatar{background:var(--ink);color:#fff;border:2px solid #fff;border-radius:50%;flex:none;place-items:center;width:30px;height:30px;font-size:13px;font-weight:700;display:grid}.splash{height:100%;color:var(--ink-2);text-align:center;place-content:center;place-items:center;gap:10px;padding:24px;font-weight:600;display:grid}.splash.col span{max-width:360px;color:var(--ink-3);margin-bottom:8px;font-weight:400}.logo{letter-spacing:-.02em;align-items:center;gap:10px;font-size:19px;font-weight:700;display:inline-flex}.form-error{color:var(--danger);font-size:13px}.form-info{color:#1c6b3a;background:#e8f7ee;border-radius:8px;padding:10px 12px;font-size:13px}.menu{z-index:60;border:1px solid var(--line);border-radius:var(--radius);min-width:210px;box-shadow:var(--shadow);background:#fff;flex-direction:column;padding:6px;display:flex;position:absolute}.menu button{text-align:left;border-radius:7px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;font-weight:500;display:flex}.menu button:hover{background:var(--paper)}.menu button.danger{color:var(--danger)}.menu hr{border:0;border-top:1px solid var(--line);width:calc(100% - 8px);margin:5px 4px}.menu.ctx{position:fixed}.scrim{z-index:55;position:fixed;inset:0}.modal-wrap{z-index:80;background:#17171c52;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;flex-direction:column;gap:14px;width:min(460px,100%);max-height:calc(100vh - 32px);padding:22px;display:flex;overflow:auto;box-shadow:0 20px 60px #14141e40}.modal h3{letter-spacing:-.01em;font-size:18px}.modal header{justify-content:space-between;align-items:center;display:flex}select,.modal input[type=email]{border:1px solid var(--line);background:#fff;border-radius:9px;height:36px;padding:0 10px;font-size:13px}.toast{background:var(--ink);color:#fff;z-index:90;box-shadow:var(--shadow);border-radius:10px;padding:10px 16px;font-size:13px;font-weight:500;position:fixed;bottom:76px;left:50%;transform:translate(-50%)}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth{background:var(--paper);grid-template-columns:1.1fr 1fr;min-height:100%;display:grid}.auth-art{border-right:1px solid var(--line);background-image:radial-gradient(#1e1e2429 1.3px,#0000 1.4px);background-size:24px 24px;position:relative;overflow:hidden}.art-note{place-items:center;width:150px;height:150px;font:700 26px Kalam,cursive;display:grid;position:absolute;box-shadow:0 10px 24px #14141e29}.art-note.n1{background:#fff3a3;top:22%;left:16%;transform:rotate(-5deg)}.art-note.n2{background:#bfe3ff;top:40%;left:48%;transform:rotate(4deg)}.art-note.n3{background:#ffc4d6;top:60%;left:24%;transform:rotate(-2deg)}.art-lines{opacity:.9;width:80%;position:absolute;top:8%;left:10%}.auth-card{flex-direction:column;place-self:center;gap:14px;width:min(380px,100% - 40px);padding:28px 0;display:flex}.auth-card h1{letter-spacing:-.03em;margin-top:18px;font-size:30px}.auth-card label{flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.auth-card input{background:#fff;border:1px solid #d5d4ce;border-radius:10px;height:46px;padding:0 14px;font-size:15px;font-weight:400}.auth-card input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:#0000}.auth-links{justify-content:space-between;gap:12px;display:flex}@media (width<=820px){.auth{grid-template-columns:1fr}.auth-art{display:none}}.dash{min-height:100%}.dash-top{z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#f6f5f1e6;align-items:center;gap:16px;padding:12px 28px;display:flex;position:sticky;top:0}.dash-search{border:1px solid var(--line);max-width:420px;height:40px;color:var(--ink-3);background:#fff;border-radius:10px;flex:1;align-items:center;gap:8px;margin:0 auto;padding:0 12px;display:flex}.dash-search input{min-width:0;color:var(--ink);background:0 0;border:0;outline:0;flex:1}.dash-user{align-items:center;gap:8px;display:flex}.dash-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-weight:600;overflow:hidden}.dash-main{flex-direction:column;gap:36px;max-width:1180px;margin:0 auto;padding:28px;display:flex}.dash-main h2{letter-spacing:-.02em;margin-bottom:14px;font-size:20px}.dash-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.dash-head h2{margin:0}.tabs{background:#ebeae5;border-radius:10px;gap:4px;padding:4px;display:flex}.tabs button{color:var(--ink-2);border-radius:7px;padding:6px 12px;font-size:13px;font-weight:600}.tabs button.on{color:var(--ink);background:#fff;box-shadow:0 1px 2px #00000014}.starters{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:14px;display:grid}.starter{border:1px solid var(--line);text-align:left;background:#fff;border-radius:14px;flex-direction:column;gap:4px;padding:14px;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex}.starter:hover:not(:disabled){box-shadow:var(--shadow);border-color:#cfcec8;transform:translateY(-2px)}.starter small{color:var(--ink-3);font-size:12px;line-height:1.35}.starter-plus,.starter-art{border-radius:9px;place-items:center;height:76px;margin-bottom:8px;display:grid}.starter-plus{background:var(--ink);color:var(--sun)}.starter-art{background:var(--paper);grid-auto-columns:1fr;grid-auto-flow:column;place-items:stretch stretch;gap:6px;padding:12px}.starter-art i{background:#fff3a3;border-radius:4px;display:block}.starter-art i:nth-child(2){background:#bfe3ff}.starter-art i:nth-child(3){background:#bdf0cb}.art-retro i:nth-child(2){background:#ffc4d6}.art-retro i:nth-child(3){background:#d9ccff}.art-brainstorm{padding:16px 22px}.art-brainstorm i{transform:rotate(-4deg)}.art-brainstorm i:nth-child(2){background:#ffc4d6;transform:rotate(3deg)translateY(6px)}.art-flow i{border:2px solid var(--ink);background:#fff;border-radius:8px;align-self:center;height:26px}.art-flow i:nth-child(2){background:#ffec99;border-radius:3px;height:34px;transform:rotate(45deg)scale(.62)}.art-flow i:nth-child(3){background:#a5d8ff}.art-mindmap i{background:#ffd6a5;border-radius:999px;align-self:center;height:22px}.art-mindmap i:nth-child(2){background:#d0bfff;height:40px}.grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;display:grid}.card{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:14px;transition:transform .12s,box-shadow .12s,border-color .12s;position:relative}.card:hover{box-shadow:var(--shadow);border-color:#cfcec8;transform:translateY(-2px)}.card-cover{background-color:var(--paper);border-bottom:1px solid var(--line);background-image:radial-gradient(#1e1e2424 1.1px,#0000 1.2px);background-size:16px 16px;border-radius:13px 13px 0 0;height:118px;position:relative;overflow:hidden}.card-cover span{width:54px;height:54px;position:absolute;top:28px;left:22px;box-shadow:0 4px 10px #14141e24}.card-cover span+span{top:40px;left:92px}.card-cover svg{width:96px;position:absolute;top:34px;right:14px}.card-body{flex-direction:column;gap:3px;min-width:0;padding:12px 44px 14px 14px;display:flex}.card-body strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.card-body small{color:var(--ink-3);white-space:nowrap;align-items:center;gap:4px;font-size:12px;display:flex;overflow:hidden}.card-rename{border:1px solid var(--accent);border-radius:6px;outline:0;width:100%;padding:2px 6px;font-weight:700}.card-more{position:absolute;bottom:12px;right:8px}.card-menu{top:calc(100% - 12px);right:8px}.empty{text-align:center;color:var(--ink-2);border:1.5px dashed #d5d4ce;border-radius:14px;flex-direction:column;gap:6px;padding:36px 20px;display:flex}.empty span{color:var(--ink-3)}@media (width<=640px){.dash-top{gap:10px;padding:10px 16px}.dash-name,.dash-top .logo span{display:none}.dash-main{padding:20px 16px}}.board{-webkit-user-select:none;user-select:none;position:fixed;inset:0;overflow:hidden}.stage{background:var(--paper);position:absolute;inset:0;overflow:hidden}.stage.drop:after{content:"";border:2px dashed var(--accent);pointer-events:none;border-radius:14px;position:absolute;inset:8px}.layer{width:100%;height:100%;display:block;position:absolute;inset:0}.layer.top{touch-action:none}.bar{z-index:30;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;align-items:center;gap:2px;padding:5px;display:flex;position:absolute}.top-left{max-width:calc(100vw - 250px);top:12px;left:12px}.top-right{gap:10px;padding:5px 5px 5px 8px;top:12px;right:12px}.title-input{text-overflow:ellipsis;background:0 0;border:0;border-radius:7px;min-width:60px;max-width:34vw;height:32px;margin-left:6px;padding:0 8px;font-size:14px;font-weight:700}.title-input:hover:not([readonly]){background:var(--paper)}.title-input:focus{outline:2px solid var(--accent);background:#fff}.save-state{color:var(--ink-3);white-space:nowrap;align-items:center;gap:5px;padding:0 8px;font-size:12px;display:inline-flex}.drop-menu{min-width:250px;top:42px;left:0}.avatars{display:flex}.avatars .avatar{margin-left:-7px}.avatars .avatar:first-child{margin-left:0}.avatar.me{background:var(--ink)}.avatar.more{color:var(--ink-2);background:#ebeae5;font-size:11px}.toolbar{flex-direction:column;max-height:calc(100vh - 150px);top:50%;left:12px;transform:translateY(-50%)}.tool{width:38px;height:38px;color:var(--ink-2);border-radius:9px;flex:none;place-items:center;display:grid;position:relative}.tool:hover{color:var(--ink);background:#efeee9}.tool.on{background:var(--ink);color:var(--sun)}.tool.locked:after{content:"";background:var(--sun);border-radius:50%;width:6px;height:6px;position:absolute;bottom:4px;right:4px}.sep{background:var(--line);flex:none;width:24px;height:1px;margin:4px 0}.sep.v{width:1px;height:22px;margin:0 4px}[data-tip]{position:relative}[data-tip]:hover:before{content:attr(data-tip);z-index:70;background:var(--ink);color:#fff;white-space:nowrap;pointer-events:none;border-radius:7px;padding:5px 9px;font:500 12px Plus Jakarta Sans,sans-serif;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.toolbar [data-tip]:hover:before{top:50%;bottom:auto;left:calc(100% + 10px);transform:translateY(-50%)}.bottom-left{bottom:12px;left:12px}.zoom-label{font-variant-numeric:tabular-nums;border-radius:8px;min-width:52px;height:34px;font-size:13px;font-weight:600}.zoom-label:hover{background:#efeee9}.minimap-wrap{z-index:30;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:12px;right:12px}.minimap{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;touch-action:none;background:#fffffff0}.bar.solo{width:46px;height:46px;position:static}.minimap-wrap [data-tip]:hover:before{left:auto;right:0;transform:none}.style-panel{scrollbar-width:thin;flex-direction:column;align-items:stretch;gap:14px;width:232px;max-height:calc(100vh - 150px);padding:14px;top:68px;right:12px;overflow-y:auto}.style-panel section{flex-direction:column;gap:8px;display:flex}.style-panel h4{color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:600}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:1px solid #00000024;border-radius:7px;flex:none;width:24px;height:24px;position:relative;overflow:hidden}.swatch.on{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--accent)}.swatch.none{background:linear-gradient(to top right,#fff 46%,#e03131 47% 53%,#fff 54%)}.swatch.custom{cursor:pointer;background:conic-gradient(#e03131,#f08c00,#ffd43b,#2f9e44,#1971c2,#6741d9,#e03131)}.swatch.custom input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.seg{background:#f1f0eb;border-radius:9px;flex:1;gap:2px;padding:3px;display:flex}.seg button{min-height:28px;color:var(--ink-2);white-space:nowrap;border-radius:7px;flex:1;place-items:center;padding:0 4px;font-size:12px;font-weight:600;display:grid}.seg button:hover{color:var(--ink)}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 2px #0000001f}.row{gap:6px;display:flex}.icons{flex-wrap:wrap;gap:4px;display:flex}.icons button{width:32px;height:32px;color:var(--ink-2);background:#f1f0eb;border-radius:8px;place-items:center;display:grid}.icons button:hover{color:var(--ink);background:#e6e5df}.icons button.on{background:var(--ink);color:var(--sun)}.icons button.danger:hover{color:var(--danger);background:#fde8eb}.style-panel input[type=range]{width:100%;accent-color:var(--ink)}.text-editor-wrap{z-index:20;transform-origin:50%;pointer-events:none;position:absolute}.text-editor{resize:none;overflow-wrap:break-word;pointer-events:auto;-webkit-user-select:text;user-select:text;caret-color:var(--accent);background:0 0;border:0;border-radius:4px;outline:0;margin:0;padding:0;display:block;overflow:hidden}.text-editor.frame-title{z-index:20;color:var(--ink);box-shadow:0 0 0 2px var(--accent);white-space:nowrap;background:#fff;max-width:320px;padding:2px 4px;font:600 13px Plus Jakarta Sans,sans-serif;position:absolute}.comment-pop{z-index:40;border:1px solid var(--line);width:300px;box-shadow:var(--shadow);-webkit-user-select:text;user-select:text;background:#fff;border-radius:14px;flex-direction:column;display:flex;position:absolute}.comment-pop header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 8px 8px 14px;font-size:13px;display:flex}.comment-pop header span{display:flex}.thread{flex-direction:column;gap:12px;max-height:240px;padding:10px 14px;display:flex;overflow-y:auto}.msg-head{align-items:baseline;gap:8px;font-size:13px;display:flex}.msg-head small{color:var(--ink-3);font-size:11px}.msg p{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px;line-height:1.45}.reply{border-top:1px solid var(--line);align-items:flex-end;gap:8px;padding:10px;display:flex}.thread:empty+.reply,header+.reply{border-top:0}.reply textarea{border:1px solid var(--line);resize:none;border-radius:9px;outline:0;flex:1;min-width:0;padding:8px 10px;font-size:13px}.reply textarea:focus{border-color:var(--accent)}.loading{z-index:25;border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:12px;align-items:center;gap:10px;padding:12px 18px;font-weight:600;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.drop-hint{background:var(--accent);color:#fff;z-index:90;pointer-events:none;border-radius:10px;padding:8px 14px;font-size:13px;font-weight:600;position:fixed;top:76px;left:50%;transform:translate(-50%)}.invite{gap:8px;display:flex}.invite input{flex:1;min-width:0}.people{flex-direction:column;gap:10px;max-height:220px;display:flex;overflow-y:auto}.person{align-items:center;gap:10px;display:flex}.person-id{flex-direction:column;flex:1;min-width:0;display:flex}.person-id strong,.person-id small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.person-id small,.link-row small{color:var(--ink-3);font-size:12px}.role{color:var(--ink-2);white-space:nowrap;font-size:13px;font-weight:500}.link-row{background:var(--paper);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.link-row div{flex-direction:column;gap:2px;min-width:0;display:flex}.tpl-list{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tpl-list button{border:1px solid var(--line);text-align:left;border-radius:12px;flex-direction:column;gap:3px;padding:12px;display:flex}.tpl-list button:hover{border-color:var(--ink);background:var(--paper)}.tpl-list small{color:var(--ink-3);font-size:12px}.keys{flex-direction:column;display:flex}.keys div{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:7px 0;font-size:13px;display:flex}.keys kbd{color:var(--ink-2);text-align:right;white-space:normal;padding:0}@media (width<=720px){.toolbar{scrollbar-width:none;flex-direction:row;max-height:none;inset:auto 8px 64px;overflow-x:auto;transform:none}.toolbar .sep{width:1px;height:24px;margin:0 4px}.toolbar [data-tip]:hover:before{display:none}.style-panel{width:216px;max-height:calc(100vh - 260px);top:62px;left:auto;right:8px}.top-left{max-width:calc(100vw - 132px);top:8px;left:8px}.top-right{top:8px;right:8px}.top-right .btn{gap:0;padding:0 10px;font-size:0}.avatars .avatar:not(.me),.save-state,.top-left .mark,.minimap{display:none}.title-input{max-width:28vw}.bottom-left{bottom:8px;left:8px}.minimap-wrap{bottom:8px;right:8px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
