@import url('./fonts.css');
:root{--ink:#252531;--muted:#7b7b89;--line:#e8e7ed;--purple:#6651d9;--pale:#f0edff;--paper:#fff;--bg:#f6f5f8;--shadow:0 8px 30px #26203c0c;font-family:Arial,Helvetica,sans-serif;color:var(--ink);font-size:14px}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,textarea,select{font:inherit}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:white;border-radius:9px;padding:10px 14px;display:inline-flex;gap:8px;align-items:center;justify-content:center;transition:background .15s,border-color .15s}button:hover{background:#f5f3fc;border-color:#ccc5ed}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #9a89ef;outline-offset:2px}.primary{background:var(--purple);color:#fff;border-color:var(--purple)}.primary:hover{background:#5842ca;border-color:#5842ca}.quiet{border:0;background:transparent}.danger{color:#bb414e}.small{font-size:12px;padding:7px 10px}.icon{width:36px;height:36px;padding:8px;flex-shrink:0}.ic{width:19px;height:19px;stroke:currentColor;stroke-width:1.7;fill:none;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}a{color:var(--purple)}input,textarea,select{border:1px solid #dad8e2;border-radius:8px;padding:11px;background:#fff;width:100%;color:var(--ink)}textarea{resize:vertical;line-height:1.5}label{display:block;font-size:12px;font-weight:bold;margin:16px 0 7px}h1,h2,h3,p{margin-top:0}h1{font-size:34px;letter-spacing:-1.1px}h2{font-size:22px;letter-spacing:-.5px}h3{font-size:15px}small,.muted{color:var(--muted)}.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.spacer{flex:1}.brand{font-size:22px;letter-spacing:-1px;font-weight:800;display:flex;align-items:center;gap:10px}.brand-mark{background:var(--purple);color:white;border-radius:10px;width:34px;height:34px;display:grid;place-items:center;transform:rotate(-7deg)}.brand-mark .ic{transform:rotate(7deg)}.eyebrow{font-size:11px;letter-spacing:1.5px;color:var(--muted);font-weight:bold;text-transform:uppercase}.badge{border-radius:6px;padding:5px 8px;background:#f3f2f6;font-size:11px;white-space:nowrap}.avatar{display:grid;place-items:center;background:#e9e4fb;border:2px solid white;width:32px;height:32px;border-radius:50%;font-size:11px;font-weight:bold;color:#60509b}.avatars{display:flex}.avatars .avatar+.avatar{margin-left:-7px}.loading{height:100vh;display:grid;place-items:center;color:var(--muted)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#252531;color:white;padding:13px 20px;border-radius:12px;box-shadow:var(--shadow);z-index:50;max-width:min(650px,90vw);display:none;line-height:1.5}#toast.show{display:block}#toast.error{background:#8a3442}
/* Login */
.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:white}.auth-hero{background:#eeebfa;position:relative;overflow:hidden;padding:52px;display:flex;flex-direction:column;justify-content:space-between}.auth-hero h1{max-width:480px;font-size:56px;line-height:1.08;margin:60px 0 20px}.auth-hero p{max-width:400px;font-size:17px;line-height:1.6;color:#676075}.auth-art{height:240px;position:relative;margin:20px 0}.art-card{position:absolute;width:180px;height:160px;border-radius:10px;background:white;box-shadow:0 14px 35px #51448615;padding:22px;transform:rotate(-6deg);left:40px;top:30px}.art-card:nth-child(2){background:#fff0ae;transform:rotate(6deg);left:220px;top:0}.art-card:nth-child(3){height:80px;width:240px;left:130px;top:160px;transform:rotate(-2deg);background:#6651d9;color:white}.art-line{height:8px;background:#e7e2f5;border-radius:3px;margin:12px 0}.auth-form{max-width:420px;width:100%;margin:auto;padding:50px 28px}.auth-form .primary{width:100%;margin-top:24px}.error-text{color:#ae3c4d;line-height:1.5;margin-top:15px;font-size:13px}.auth-footer{font-size:12px;line-height:1.7;color:var(--muted);margin-top:28px}
/* Projects */
.dashboard{min-height:100vh}.dash-header{height:84px;padding:0 48px;border-bottom:1px solid var(--line);background:#fff;display:flex;align-items:center;gap:18px}.dash-main{max-width:1260px;margin:auto;padding:54px 40px}.dash-title{margin-bottom:35px}.dash-title p{color:var(--muted);font-size:15px}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:23px}.board-card{padding:0;text-align:left;display:block;border-radius:15px;overflow:hidden;box-shadow:0 2px 4px #22202f04}.board-preview{height:180px;background-color:#eeedf4;background-image:radial-gradient(#cfcbdc .8px,transparent .8px);background-size:17px 17px;display:flex;align-items:center;justify-content:center;gap:14px}.mini-page{width:50px;height:78px;background:#fff;border-radius:4px;box-shadow:0 5px 10px #39324d12;padding:7px}.mini-page:nth-child(2){height:100px;background:#fff1b8;transform:rotate(4deg)}.mini-page i{display:block;height:5px;background:#ded9ef;margin-bottom:6px;border-radius:2px}.board-card-body{padding:20px}.board-card h3{margin-bottom:12px}.new-board{border:1px dashed #c8c2dc;min-height:280px;background:transparent;display:flex;flex-direction:column;color:#6e658a}.new-board .ic{width:30px;height:30px;margin-bottom:10px}.dash-note{max-width:670px;margin-top:40px;line-height:1.6;color:var(--muted)}
/* Workspace */
.workspace{height:100dvh;display:grid;grid-template-columns:244px 1fr;grid-template-rows:70px 1fr;overflow:hidden}.topbar{grid-column:1/-1;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:15px;z-index:8}.topbar .brand{padding-right:20px;border-right:1px solid var(--line);font-size:20px}.project-title{font-size:14px;font-weight:bold;max-width:310px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.save-state{display:flex;gap:5px;align-items:center;font-size:11px;color:#8a8995}.save-dot{width:6px;height:6px;background:#69a88a;border-radius:50%}.sidebar{background:white;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;z-index:7}.side-top{padding:22px 18px 18px}.side-top input{font-size:12px;background:#f7f6f9;border:0;margin:16px 0}.side-heading{display:flex;justify-content:space-between;align-items:center;font-size:11px;letter-spacing:1.1px;text-transform:uppercase;color:#8a8697;padding:0 20px 12px}.object-list{overflow:auto;flex:1;padding:0 10px 14px}.object-row{width:100%;border:0;justify-content:flex-start;text-align:left;border-radius:7px;padding:10px;font-size:12px;margin:2px 0;gap:9px;background:transparent}.object-row.active{background:var(--pale);color:var(--purple)}.object-row .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-row .ic{width:16px;height:16px;color:#9a95aa}.object-row.frame-row{font-weight:bold;margin-top:12px}.side-bottom{padding:15px 18px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);line-height:1.6}.side-bottom button{margin-bottom:10px;width:100%}.stage{position:relative;overflow:hidden;background:#f5f4f8;touch-action:none;outline:0}.stage.dragover{box-shadow:inset 0 0 0 5px var(--purple)}.stage-grid{position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(#cfccd8 1px,transparent 1px);background-size:24px 24px}.world{position:absolute;left:0;top:0;transform-origin:0 0}.toolbar{position:absolute;top:22px;left:22px;z-index:5;background:#fff;padding:6px;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);display:flex;gap:3px;align-items:center}.toolbar button{border:0;width:39px;height:39px;padding:9px}.toolbar button.active{background:var(--pale);color:var(--purple)}.tool-divider{height:23px;width:1px;background:var(--line);margin:0 4px}.zoom-controls{position:absolute;left:22px;bottom:22px;display:flex;align-items:center;gap:2px;border:1px solid var(--line);background:white;border-radius:10px;padding:4px;z-index:5;box-shadow:var(--shadow)}.zoom-controls button{border:0}.zoom-value{font-size:12px;min-width:48px;text-align:center}.canvas-hint{position:absolute;bottom:34px;left:280px;color:#9893a5;font-size:11px;pointer-events:none}.mode-hint{position:absolute;top:85px;left:22px;background:#fff;padding:10px 15px;border-radius:9px;color:var(--purple);font-size:12px;box-shadow:var(--shadow);z-index:5}.empty-canvas{position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);text-align:center;width:380px;max-width:75%;color:#8b849b;pointer-events:none}.empty-canvas h2{color:#514a61;margin:18px 0 10px}.empty-canvas p{line-height:1.6}.empty-canvas .ic{height:40px;width:40px}.element{position:absolute;user-select:none;border-radius:8px;box-shadow:0 4px 16px #25203113;background:white;outline:2px solid transparent;outline-offset:3px;cursor:default}.element.selected{outline-color:var(--purple)}.element .element-header{height:38px;display:flex;align-items:center;gap:7px;padding:0 12px;background:white;border-radius:8px 8px 0 0;font-size:11px;font-weight:bold;color:#656073;cursor:grab;border-bottom:1px solid #eeedf1}.element-header .label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.element-header .ic{width:14px;height:14px;color:#a39caf}.element-body{height:calc(100% - 38px);overflow:hidden;position:relative;border-radius:0 0 8px 8px}.element-body img{width:100%;height:100%;object-fit:contain;display:block;background:#fff;pointer-events:none}.preview-loading{display:grid;place-items:center;height:100%;font-size:11px;color:#999;min-height:40px}.element.note{background:#fff0af;border-radius:2px;box-shadow:0 5px 14px #4235200c}.element.note .element-header{background:transparent;border:0}.element.note .element-body,.element.text .element-body{padding:5px 19px 19px;font-size:17px;line-height:1.5;white-space:pre-wrap;overflow:auto;overflow-wrap:anywhere}.element.pink{background:#f8dce6}.element.blue{background:#dfeafa}.element.green{background:#e1eddb}.element.white{background:white}.element.text{box-shadow:none;background:transparent}.element.text .element-header{background:transparent;border:0}.element.text .element-body{font-size:24px;font-weight:bold}.element.frame{border:2px solid #d5cfeb;background:#eeebf42b;box-shadow:none;z-index:-1}.element.frame .element-header{background:transparent;border:0;color:#807499;font-size:16px;height:44px}.element.frame .element-body{pointer-events:none}.resize{position:absolute;width:11px;height:11px;right:-6px;bottom:-6px;background:white;border:2px solid var(--purple);display:none;cursor:nwse-resize;border-radius:2px}.element.selected .resize{display:block}.comment-count{position:absolute;right:-12px;top:-12px;background:var(--purple);color:white;min-width:25px;height:25px;border-radius:50%;font-size:11px;display:grid;place-items:center;border:2px solid white;cursor:pointer}.status-tag{position:absolute;left:10px;bottom:10px;font-size:10px;padding:4px 7px;border-radius:5px;background:#f0edf9e8;color:#675590;pointer-events:none}.status-tag.approved{background:#e2f1e8;color:#3b7457}.connections{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;pointer-events:none}.connections path{stroke:#a99bc9;stroke-width:2;fill:none;pointer-events:stroke;cursor:pointer}.connections path.selected{stroke:#6651d9;stroke-width:3}.panel{position:absolute;right:18px;top:20px;bottom:20px;width:310px;background:white;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);z-index:6;display:flex;flex-direction:column;overflow:hidden;touch-action:auto}.panel-head{padding:17px 18px 12px;border-bottom:1px solid var(--line)}.panel-head h3{margin:0;font-size:14px}.panel-tabs{display:flex;margin-top:14px;gap:16px}.panel-tabs button{border:0;border-radius:0;padding:8px 0;background:none;font-size:12px;color:var(--muted)}.panel-tabs button.active{border-bottom:2px solid var(--purple);color:var(--purple)}.panel-content{padding:16px 18px;overflow:auto;flex:1}.panel-content label:first-child{margin-top:0}.panel-content input,.panel-content textarea,.panel-content select{font-size:12px}.panel-content .primary{width:100%;margin-top:15px}.panel-actions{display:flex;gap:8px;margin-top:15px;flex-wrap:wrap}.panel-meta{font-size:11px;margin:12px 0;color:var(--muted);line-height:1.5}.comment{border-bottom:1px solid var(--line);padding:16px 0}.comment:first-child{padding-top:2px}.comment .author{font-size:12px;font-weight:bold}.comment .date{font-size:10px;color:var(--muted);margin-top:4px}.comment p{font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0}.comment.resolved{opacity:.55}.reply{border-left:2px solid var(--pale);padding:10px 0 0 12px;margin:8px 0}.comment-compose{border-top:1px solid var(--line);padding:14px 18px}.comment-compose textarea{font-size:12px;min-height:74px}.comment-compose .row{margin-top:8px}.comment-context{font-size:11px;color:var(--muted);margin-bottom:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.context-menu{position:absolute;background:white;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:6px;z-index:20}.context-menu button{display:flex;width:100%;justify-content:flex-start;border:0}.hand,.hand .element,.hand .element-header{cursor:grab}.dragging,.dragging .element-header{cursor:grabbing!important}
/* Dialog */
dialog{border:1px solid var(--line);border-radius:18px;padding:28px;max-width:560px;width:calc(100vw - 40px);box-shadow:0 30px 100px #17102133;color:var(--ink)}dialog::backdrop{background:#26203355;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-head h2{margin:0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}.member{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.member-info{flex:1;min-width:0}.member-info strong{font-size:12px;display:block}.member-info small{font-size:11px;overflow-wrap:anywhere}.invite-result{padding:14px;background:#f3f0ff;border-radius:10px;margin-top:18px}.invite-result input{font-size:11px}.viewer-dialog{max-width:1200px;width:94vw;height:92vh;padding:18px;overflow:hidden}.viewer-dialog #modal-content{height:100%;display:flex;flex-direction:column}.viewer-dialog .dialog-head{margin-bottom:12px}.viewer-body{flex:1;min-height:0;overflow:auto;background:#eeedf2;border-radius:9px}.viewer-body iframe{height:100%;width:100%;border:0}.viewer-body img{display:block;max-width:100%;height:auto;margin:auto}.help-keys{display:grid;grid-template-columns:1fr 1fr;gap:15px;font-size:13px}kbd{font-family:inherit;border:1px solid #ddd;padding:3px 6px;border-radius:4px;background:#f7f6fa;font-size:11px}
@media(max-width:1100px){.workspace{grid-template-columns:205px 1fr}.topbar .save-state{display:none}.panel{width:280px}.canvas-hint{display:none}.topbar .brand{font-size:0;padding-right:14px}.topbar{gap:9px}.toolbar{left:14px}.auth-hero h1{font-size:44px}.auth-hero{padding:32px}}
@media(max-width:760px){.auth{display:block}.auth-hero{display:none}.auth-form{padding-top:90px}.dash-header{padding:0 20px}.dash-main{padding:30px 20px}.dash-title{align-items:flex-start;gap:15px}.dash-title h1{font-size:28px}.workspace{grid-template-columns:1fr;grid-template-rows:60px 1fr}.sidebar{display:none}.topbar{padding:0 10px}.topbar .avatars,.topbar .secondary-label{display:none}.topbar .project-title{max-width:140px}.topbar .brand{border:0;padding:0}.panel{top:76px;right:10px;bottom:10px;width:min(310px,calc(100% - 20px))}.toolbar{top:12px;left:10px;padding:4px;gap:0}.toolbar button{width:34px}.topbar button{padding:8px}.zoom-controls{bottom:12px;left:10px}.project-subtitle{display:none}.dash-header .brand{font-size:18px}.auth-art{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.element.graphic{background:transparent;box-shadow:none;border-radius:0;cursor:move}
.element.graphic>svg{width:100%;height:100%;overflow:visible;display:block;pointer-events:none}
.element.graphic .shape-label{position:absolute;inset:10px;display:flex;align-items:center;justify-content:center;white-space:pre-wrap;overflow:hidden;overflow-wrap:anywhere;pointer-events:none;text-align:center;line-height:1.3}
.element.text .element-header{display:none}.element.text .element-body{height:100%;padding:8px;line-height:1.25;font-weight:normal;overflow:hidden}
.draw-ghost{position:absolute;pointer-events:none;z-index:1000;opacity:.8}
.draw-ghost svg{width:100%;height:100%;overflow:visible}
.shape-menu{position:absolute;top:76px;left:200px;z-index:9;background:white;border:1px solid var(--line);border-radius:12px;padding:8px;box-shadow:var(--shadow);width:225px}
.shape-menu button{border:0;width:100%;justify-content:flex-start;font-size:12px}
.shape-menu .key{margin-left:auto;color:#a09aad;font-size:11px}
.draw-settings{position:absolute;top:80px;left:22px;z-index:5;display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 12px;box-shadow:var(--shadow)}
.draw-settings label{margin:0;font-size:11px;color:#7b7389;font-weight:normal}.draw-settings input[type=color]{width:28px;height:28px;padding:2px;border:0}.draw-settings select{width:65px;padding:5px;font-size:11px}.draw-settings .transparent{display:flex;align-items:center;gap:5px}.draw-settings input[type=checkbox]{width:auto}
.stage.drawing{cursor:crosshair}.stage.drawing .element,.stage.drawing .element-header{cursor:crosshair}
.panel-content input[type=color]{height:35px;padding:3px}
.drawing-help{position:absolute;top:135px;left:25px;font-size:11px;color:#7b7389;pointer-events:none}
@media(max-width:760px){.toolbar{max-width:calc(100% - 20px);overflow-x:auto}.toolbar button{min-width:32px}.shape-menu{left:100px}.draw-settings{left:10px;top:70px;max-width:calc(100% - 20px);gap:6px}.draw-settings label{font-size:10px}.drawing-help{top:122px;left:14px}}

.list-group{margin:7px 0 12px}.group-toggle{display:flex;align-items:center;gap:7px;width:100%;padding:8px 10px;border:0;background:transparent;font-size:11px;font-weight:700;color:#70677d;text-align:left}.group-toggle:hover{background:#f0edf7}.group-toggle svg{width:14px;height:14px;transition:transform .15s}.group-toggle[aria-expanded=true] svg{transform:rotate(90deg)}.group-count{margin-left:auto;font-size:10px;font-weight:normal;background:#ede9f3;border-radius:10px;padding:2px 7px}.list-group .object-row{padding-left:17px}.zoom-controls button.active{background:#eee8ff;color:#6651d9}
.export-region{position:absolute;border:2px dashed #6651d9;background:rgba(102,81,217,.12);box-shadow:0 0 0 1px #fff;z-index:4;pointer-events:none;box-sizing:border-box}.export-region span{position:absolute;left:0;white-space:nowrap;background:#6651d9;color:#fff;border-radius:4px;font-weight:600}

.guest-entry{min-height:100dvh;background:#f5f4f8;padding:35px}.guest-entry section{max-width:480px;margin:10vh auto;background:#fff;padding:36px;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.guest-entry h1{font-size:28px;margin:14px 0}.guest-entry p{line-height:1.6;color:var(--muted)}.guest-entry .primary{margin-top:16px;width:100%}

.project-card-wrap{position:relative}.project-card-wrap .board-card{width:100%}.project-delete{margin:6px 0 0 auto;display:flex;color:#8d6273}.project-delete:hover{color:#b44254;background:#fff0f2}

#live-cursors{position:absolute;left:0;top:0;z-index:3000;pointer-events:none}.remote-cursor{position:absolute;transform-origin:0 0;pointer-events:none;transition:left .12s linear,top .12s linear}.remote-cursor svg{width:24px;height:30px;display:block}.remote-cursor span{position:absolute;top:24px;left:14px;color:white;padding:4px 8px;border-radius:5px;font-size:11px;white-space:nowrap;box-shadow:0 2px 6px #0002}

.selection-region{position:absolute;border:2px solid #6651d9;background:#6651d925;pointer-events:none;z-index:4}.multi-selected .element .resize{display:none!important}

.stage.drawing .mode-hint{pointer-events:none;user-select:none}
