:root{--paper:#f5f2eb;--panel:#fbfaf7;--ink:#17233c;--muted:#778195;--line:#dedbd3;--blue:#2f6fbb;--purple:#7256c4;--green:#2c8d77;--orange:#d38438;--red:#d75c72;--shadow:0 12px 38px rgba(27,39,62,.12)}
*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--paper);overflow:hidden}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.eyebrow{display:block;color:#9299a6;font-size:10px;letter-spacing:.13em;text-transform:uppercase;font-weight:800}.topbar{height:68px;display:grid;grid-template-columns:278px 1fr 320px;align-items:center;border-bottom:1px solid var(--line);background:rgba(251,250,247,.95);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:0 20px}.brand strong{display:block;font-family:Georgia,serif;font-size:16px}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.brand-mark{position:relative;width:32px;height:32px}.brand-mark span{position:absolute;width:18px;height:18px;border:2px solid var(--purple);border-radius:50%;background:rgba(114,86,196,.08)}.brand-mark span:nth-child(1){left:0;top:7px}.brand-mark span:nth-child(2){right:0;top:0}.brand-mark span:nth-child(3){right:0;bottom:0;border-color:var(--blue)}.project-title{justify-self:center;display:flex;align-items:center;gap:12px}.project-title input{width:330px;border:0;background:transparent;padding:2px 0;font-weight:750;font-size:15px;outline:none}.saved-state{font-size:11px;color:var(--muted);display:flex;gap:6px;align-items:center}.saved-state i{width:6px;height:6px;background:#50a783;border-radius:50%}.top-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding-right:18px}.button{height:36px;border-radius:9px;padding:0 16px;border:1px solid var(--line);background:white;font-weight:700;font-size:12px}.button.primary{background:var(--ink);border-color:var(--ink);color:white;box-shadow:0 5px 12px rgba(23,35,60,.16)}.button.ghost{background:transparent}.avatar{width:34px;height:34px;border-radius:50%;border:0;background:#e7e0d3;color:#6d5b3b;font-weight:800}.icon-button{width:30px;height:30px;border:0;background:transparent;border-radius:7px;color:#6d7687;font-size:20px}.icon-button:hover{background:#ebe8e1}.workspace{height:calc(100vh - 68px);display:grid;grid-template-columns:278px 1fr 284px;min-width:1080px}.library-panel,.inspector-panel{background:var(--panel);position:relative;z-index:6;display:flex;flex-direction:column;min-height:0}.library-panel{border-right:1px solid var(--line)}.inspector-panel{border-left:1px solid var(--line)}.panel-heading{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #ebe8e1}.panel-heading h2{font-family:Georgia,"Songti SC",serif;font-size:19px;margin:2px 0 0}.search{margin:15px 16px 10px;height:36px;border:1px solid #ddd9d0;background:white;border-radius:9px;display:flex;align-items:center;padding:0 10px;gap:7px}.search span{font-size:20px;color:#9299a6}.search input{border:0;outline:0;width:100%;font-size:12px}.library-tabs{display:flex;margin:0 16px;border-bottom:1px solid var(--line)}.library-tabs button{flex:1;border:0;background:none;padding:10px 0 9px;font-size:11px;color:var(--muted);font-weight:700;border-bottom:2px solid transparent}.library-tabs button.active{color:var(--ink);border-color:var(--ink)}.asset-section{padding:14px 16px 0}.asset-section.grow{flex:1;min-height:0;display:flex;flex-direction:column}.section-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:800;margin-bottom:9px}.section-label small{font-size:10px;color:var(--muted);font-weight:500}.asset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.asset-card{height:77px;border:1px solid #e1ded6;border-radius:9px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:10px}.asset-card:hover{border-color:#a7a0ca;transform:translateY(-1px);box-shadow:0 5px 12px rgba(37,41,58,.08)}.glyph{height:30px;width:38px;display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;font-size:12px}.glyph.protein{border-radius:50%;background:#e9e3fa;color:#644bb1;border:1px solid #9c88d4}.glyph.ligand{color:#c17f23;font-size:24px}.glyph.receptor{color:#3978bc;font-size:25px;font-family:serif}.glyph.complex{color:#c85f78;font-size:26px}.glyph.dna{color:#3978bc;font-size:27px}.glyph.cytokine{color:#3b957d;font-size:22px}.entity-list{overflow:auto;min-height:0;padding-right:3px}.entity-list button{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:9px;padding:7px;border-radius:8px;text-align:left}.entity-list button:hover{background:#efede7}.entity-dot{width:25px;height:25px;border-radius:7px;background:#e8e3f5;color:var(--purple);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:10px}.entity-list strong{display:block;font-size:11px}.entity-list small{font-size:9px;color:var(--muted)}.upload-card{margin:12px 16px 18px;border:1px dashed #b7b2aa;border-radius:10px;background:#f7f5f0;min-height:58px;display:flex;align-items:center;padding:9px;gap:9px;text-align:left}.upload-card>span{width:29px;height:29px;border-radius:8px;background:white;border:1px solid #dedad1;display:flex;align-items:center;justify-content:center}.upload-card strong,.upload-card small{display:block}.upload-card strong{font-size:11px}.upload-card small{font-size:9px;color:var(--muted);margin-top:2px}.canvas-shell{min-width:0;position:relative;overflow:hidden;background:#e9e7e1}.canvas-toolbar{position:absolute;z-index:5;left:50%;top:14px;transform:translateX(-50%);height:42px;min-width:580px;padding:4px 7px;display:flex;align-items:center;background:rgba(253,252,249,.94);border:1px solid #d9d6ce;border-radius:11px;box-shadow:0 7px 20px rgba(28,39,58,.12);backdrop-filter:blur(12px)}.tool-group{display:flex}.tool,.zoom-group button{border:0;background:transparent;height:32px;min-width:32px;border-radius:7px;font-weight:700}.tool:hover,.zoom-group button:hover,.tool.active{background:#eae7df}.toolbar-divider{width:1px;height:20px;background:#ddd9d1;margin:0 7px}.zoom-group{display:flex;align-items:center}.zoom-group button:nth-child(2){font-size:10px;width:48px}.toolbar-spacer{flex:1}.quality-pill{height:28px;border:0;border-radius:15px;background:#e7f3ed;color:#27745f;font-size:10px;font-weight:800;padding:0 10px}.quality-pill span{margin-right:4px}.canvas-viewport{position:absolute;inset:0;overflow:auto;background-color:#ebe9e4;background-image:radial-gradient(#c8c5bd 0.7px,transparent .7px);background-size:18px 18px}.canvas-viewport>svg{display:block;width:1200px;height:980px;margin:76px auto 230px;background:#fff;box-shadow:0 3px 18px rgba(34,43,55,.1);transform-origin:top center;user-select:none}.empty-state{position:absolute;z-index:3;left:50%;top:40%;transform:translate(-50%,-50%);width:440px;text-align:center}.empty-state[hidden]{display:none}.empty-state h2{font-family:Georgia,"Songti SC",serif;font-size:25px;margin:14px 0 7px}.empty-state p{font-size:12px;line-height:1.7;color:var(--muted);margin:0 0 18px}.empty-orbit{width:88px;height:70px;margin:auto;position:relative}.empty-orbit:before,.empty-orbit:after{content:"";position:absolute;border:1px solid #aa9bd1;border-radius:50%;inset:8px 0;transform:rotate(22deg)}.empty-orbit:after{transform:rotate(-22deg);border-color:#81a9d6}.empty-orbit span{position:absolute;width:13px;height:13px;background:var(--purple);border-radius:50%;left:37px;top:28px}.empty-orbit span:nth-child(2){left:11px;top:12px;background:var(--blue)}.empty-orbit span:nth-child(3){left:69px;top:47px;background:var(--orange)}.minimap{position:absolute;right:14px;bottom:156px;width:140px;height:95px;border-radius:8px;background:rgba(255,255,255,.92);border:1px solid #d8d4cc;box-shadow:0 4px 12px rgba(32,42,56,.1);overflow:hidden}.minimap svg{width:100%;height:100%}.minimap span{position:absolute;border:1px solid var(--purple);background:rgba(114,86,196,.08);inset:12px 18px}.selection-empty{margin:auto 30px;text-align:center;color:var(--muted)}.selection-empty div{font-size:35px;color:#aaa3cb}.selection-empty strong{display:block;font-family:Georgia,"Songti SC",serif;color:var(--ink);font-size:16px;margin:12px}.selection-empty p{font-size:11px;line-height:1.7}.inspector-content{padding:18px;overflow:auto}.selected-summary{display:flex;align-items:center;gap:11px;padding-bottom:17px;border-bottom:1px solid var(--line);margin-bottom:16px}.selected-icon{width:43px;height:43px;border-radius:12px;background:#e8e2f6;color:var(--purple);display:flex;align-items:center;justify-content:center;font-weight:900}.selected-summary strong,.selected-summary small{display:block}.selected-summary strong{font-size:13px;margin:2px 0}.selected-summary small{font:9px ui-monospace,monospace;color:var(--muted)}.field{display:block;margin:14px 0}.field>span{display:block;font-size:10px;font-weight:800;margin-bottom:6px}.field input,.field select{width:100%;height:36px;border:1px solid #dcd8cf;border-radius:8px;background:#fff;padding:0 10px;outline:0;font-size:11px}.field input:focus,.field select:focus{border-color:#8c79c7;box-shadow:0 0 0 3px rgba(114,86,196,.1)}.colors{display:flex;gap:8px}.colors button{width:26px;height:26px;border-radius:50%;border:3px solid white;background:var(--c);box-shadow:0 0 0 1px #d8d4cc}.colors button.active{box-shadow:0 0 0 2px var(--ink)}.switch-row{display:flex;align-items:center;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.switch-row strong,.switch-row small{display:block}.switch-row strong{font-size:11px}.switch-row small{font-size:9px;color:var(--muted);margin-top:2px}.switch input{display:none}.switch i{display:block;width:34px;height:19px;border-radius:10px;background:#c8c7c3;position:relative;transition:.2s}.switch i:after{content:"";position:absolute;left:3px;top:3px;width:13px;height:13px;background:white;border-radius:50%;transition:.2s}.switch input:checked+i{background:var(--purple)}.switch input:checked+i:after{left:18px}.danger-button{width:100%;height:36px;margin-top:16px;border:1px solid #e6bbc4;background:#fff7f8;color:#bd4058;border-radius:8px;font-size:11px;font-weight:800}.assistant-dock{position:fixed;z-index:15;bottom:18px;left:calc(278px + 20px);right:calc(284px + 20px);background:rgba(251,250,247,.97);border:1px solid #d7d3ca;border-radius:14px;box-shadow:var(--shadow);backdrop-filter:blur(16px);transition:.25s}.assistant-head{height:48px;display:flex;align-items:center;padding:0 12px 0 16px;border-bottom:1px solid #e2dfd8}.assistant-title{display:flex;align-items:center;gap:9px;min-width:220px}.assistant-title strong,.assistant-title small{display:block}.assistant-title strong{font-size:12px}.assistant-title small{font-size:9px;color:var(--muted);margin-top:1px}.ai-mark{width:27px;height:27px;border-radius:8px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center}.mode-badge{margin:auto;display:flex;align-items:baseline;gap:7px;background:#ebe8e1;border-radius:8px;padding:5px 12px}.mode-badge strong{font-size:10px;font-weight:800}.mode-badge small{font-size:9px;color:var(--muted)}.mode-badge.patch{background:#e7f0f7}.mode-badge.patch strong{color:#2f6fbb}.assistant-body{padding:10px 14px 9px}.suggestions{display:flex;gap:7px;margin-bottom:8px;overflow:hidden}.suggestions button{white-space:nowrap;border:1px solid #ddd9d1;background:#f3f0e9;border-radius:14px;height:25px;padding:0 10px;color:#626c7c;font-size:9px}.suggestions button:hover{border-color:#9b8cc9;color:var(--purple)}.prompt-box{display:flex;align-items:center;border:1px solid #d6d2ca;background:#fff;border-radius:10px;padding:6px 7px 6px 12px}.prompt-box:focus-within{border-color:#8c79c7;box-shadow:0 0 0 3px rgba(114,86,196,.09)}.prompt-box textarea{resize:none;border:0;outline:0;flex:1;font-size:12px;line-height:1.5;background:transparent}.prompt-box button{width:33px;height:33px;border:0;border-radius:9px;background:var(--ink);color:white;font-size:18px}.prompt-box button:disabled{opacity:.45}.assistant-foot{display:flex;justify-content:space-between;color:#9198a4;font-size:9px;margin-top:6px;padding:0 2px}.assistant-foot i{display:inline-block;width:5px;height:5px;border-radius:50%;background:#5ea68a;margin-right:4px}.assistant-dock.minimized{transform:translateY(calc(100% - 48px))}.export-menu{display:none;position:absolute;right:0;top:42px;width:215px;background:white;border:1px solid #ddd9d1;border-radius:10px;padding:6px;box-shadow:var(--shadow)}.menu-wrap{position:relative}.export-menu.open{display:block}.export-menu button{display:block;width:100%;border:0;background:none;text-align:left;border-radius:7px;padding:8px 10px;font-size:11px;font-weight:700}.export-menu button:hover{background:#f0ede7}.export-menu small{display:block;font-size:9px;color:var(--muted);font-weight:400;margin-top:2px}.toast-region{position:fixed;z-index:50;right:20px;top:82px;display:flex;flex-direction:column;gap:8px}.toast{min-width:260px;max-width:380px;padding:11px 14px;border-radius:10px;background:#18243b;color:white;box-shadow:var(--shadow);font-size:11px;animation:toast-in .25s ease}.toast.error{background:#a53f52}.toast.success{background:#267660}@keyframes toast-in{from{opacity:0;transform:translateY(-8px)}}
.asset-card[hidden]{display:none}
.custom-assets{padding-top:14px}.custom-asset-grid{grid-template-columns:repeat(2,1fr)}.custom-asset-card{height:108px;position:relative;justify-content:flex-start;padding:8px 6px}.custom-asset-card img{width:100%;height:58px;object-fit:contain;border-radius:6px;background:#f7f5f0}.custom-asset-card>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-asset-card .anchor-edit{position:absolute;right:5px;top:5px;width:25px;height:25px;border:1px solid #d9d5cc;border-radius:7px;background:rgba(255,255,255,.94);font-size:12px}
.asset-empty{font-size:10px;line-height:1.6;color:var(--muted);text-align:center;padding:16px 8px;margin:0}.asset-empty[hidden]{display:none}
.anchor-dialog{width:min(620px,calc(100vw - 40px));padding:0;border:0;border-radius:14px;background:transparent}.anchor-dialog::backdrop{background:rgba(18,27,43,.45);backdrop-filter:blur(2px)}.anchor-dialog-card{background:#fbfaf7;border:1px solid #d7d3ca;border-radius:14px;box-shadow:var(--shadow);padding:18px}.anchor-dialog-head{display:flex;align-items:center;justify-content:space-between}.anchor-dialog-head h2{font-family:Georgia,"Songti SC",serif;font-size:19px;margin:3px 0}.anchor-dialog-card>p{font-size:11px;color:var(--muted);margin:8px 0 14px}
.anchor-stage{height:270px;position:relative;overflow:hidden;border:1px solid #d8d4cc;border-radius:10px;background-color:#fff;background-image:radial-gradient(#d6d2ca .7px,transparent .7px);background-size:16px 16px}.anchor-stage img{width:100%;height:100%;object-fit:contain;pointer-events:none}.anchor-stage #anchorOverlay{position:absolute;inset:0}.anchor-marker{position:absolute;width:22px;height:22px;transform:translate(-50%,-50%);border:2px solid #fff;border-radius:50%;background:var(--purple);color:#fff;box-shadow:0 1px 6px rgba(20,31,50,.3);font-size:9px;font-weight:800;cursor:grab}.anchor-marker:active{cursor:grabbing}
.anchor-marker.region-landmark{width:27px;height:27px;font-size:10px}.anchor-marker.landmark-outside{background:#3b82c4}.anchor-marker.landmark-boundary{background:#d48335}.anchor-marker.landmark-inside{background:#2b9a72}
.anchor-list-head{display:flex;justify-content:space-between;margin:14px 2px 7px;font-size:11px}.anchor-list-head small{color:var(--muted)}.anchor-list{max-height:132px;overflow:auto;display:flex;flex-direction:column;gap:5px}.anchor-row{display:grid;grid-template-columns:1fr 54px 54px 28px;align-items:center;gap:6px;background:#f1eee7;border-radius:8px;padding:6px}.anchor-row input{min-width:0;height:28px;border:1px solid #d7d3ca;border-radius:6px;padding:0 7px;font-size:10px;background:#fff}.anchor-row button{height:28px;border:0;border-radius:6px;background:#fff;color:#b33d55}.anchor-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.landmark-name{min-width:0;display:flex;flex-direction:column;gap:1px}.landmark-name strong{font-size:10px}.landmark-name small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:8px}.landmark-fixed{color:var(--muted);font-size:8px;text-align:center}
.custom-node-image,.builtin-node-image{pointer-events:none}.custom-node-frame{fill:#fff;stroke:#a9a39a;stroke-dasharray:4 3}.builtin-node-frame{fill:transparent;stroke:transparent}.custom-node-label-bg,.builtin-node-label-bg{fill:rgba(255,255,255,.92)}.custom-anchor,.builtin-anchor{fill:#fff;stroke:var(--purple);stroke-width:2}
.compartment-label{font:700 15px Inter,"PingFang SC",sans-serif;fill:#637083}.compartment-sub{font:10px Inter,"PingFang SC",sans-serif;fill:#9aa1ad;letter-spacing:.08em}.node{cursor:grab}.node:active{cursor:grabbing}.node .node-shape{stroke-width:1.5;filter:url(#node-shadow)}.node.selected .node-shape{stroke:#15233d!important;stroke-width:2.5}.node .node-name{font:700 14px Inter,"PingFang SC",sans-serif;fill:#17233c;text-anchor:middle;pointer-events:none}.node .node-type{font:9px Inter,"PingFang SC",sans-serif;fill:#7d8798;text-anchor:middle;pointer-events:none}.node .anchor{fill:white;stroke:#6e59bd;stroke-width:1.5;opacity:0;transition:.15s}.node:hover .anchor,.node.selected .anchor{opacity:1}.edge{fill:none;stroke:#526277;stroke-width:2;marker-end:url(#arrow-activation)}.edge.translocation{stroke:#7656c8;stroke-dasharray:6 4;marker-end:url(#arrow-translocation)}.edge.back-edge{stroke:#7b6f91;stroke-dasharray:3 3}.edge.inhibition{marker-end:none}.edge-label{font:10px Inter,"PingFang SC",sans-serif;fill:#697487;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:4px}.lock-badge{fill:#17233c}.lock-text{fill:#fff;font:9px sans-serif;text-anchor:middle}.loading .ai-mark{animation:pulse 1s infinite alternate}@keyframes pulse{to{background:var(--purple);transform:scale(1.06)}}
.edge-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;cursor:pointer}.relation.selected .edge{stroke:#15233d;stroke-width:3.5}.relation.selected .edge.inhibition+line{stroke:#15233d}.relation:focus{outline:none}.relation-icon{background:#e7f0f7;color:#3676bf;font-size:20px}.relation-endpoints{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:4px}.relation-endpoints>div{min-width:0;padding:9px;border-radius:8px;background:#f1eee7}.relation-endpoints span,.relation-endpoints strong{display:block}.relation-endpoints span{font-size:8px;color:var(--muted);margin-bottom:3px}.relation-endpoints strong{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#canvas.connection-mode .node{cursor:crosshair}#canvas.connection-mode .node .anchor{opacity:1;cursor:crosshair;stroke-width:2.5}#canvas.connection-mode .node.connecting-source .node-shape{stroke:#6e59bd!important;stroke-width:3}#canvas.connection-mode .node.connecting-source .anchor{fill:#6e59bd}
@media(max-width:1250px){.workspace{grid-template-columns:240px 1fr 250px}.topbar{grid-template-columns:240px 1fr 285px}.assistant-dock{left:255px;right:265px}.project-title input{width:270px}.canvas-toolbar{min-width:520px}.asset-grid{grid-template-columns:repeat(2,1fr)}}
.asset-semantic-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;margin-bottom:14px}.asset-semantic-grid .field{margin:5px 0}.asset-semantic-grid textarea{width:100%;resize:vertical;min-height:54px;border:1px solid #dcd8cf;border-radius:8px;background:#fff;padding:8px 10px;outline:0;font-size:11px;line-height:1.5}.semantic-wide{grid-column:1/-1}.semantic-preferred{grid-column:1/-1;display:flex;align-items:center;gap:7px;font-size:10px;font-weight:700;margin:7px 1px 2px}.custom-asset-card.ai-preferred:after{content:"AI优先";position:absolute;left:5px;top:5px;padding:2px 5px;border-radius:8px;background:#e7f3ed;color:#27745f;font-size:8px;font-weight:800}
.node-preview{width:62px!important;height:36px!important;border:0!important;border-radius:0!important;background:transparent!important;color:inherit!important;overflow:visible;object-fit:contain;object-position:center}.preview-name{font:700 12px Inter,"PingFang SC",sans-serif;fill:#17233c;text-anchor:middle;pointer-events:none}.preview-type{font:8px Inter,"PingFang SC",sans-serif;fill:#7d8798;text-anchor:middle;pointer-events:none}
.style-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.style-grid .field{margin:7px 0}.field input[type=color]{padding:3px;cursor:pointer}.inspector-note{font-size:10px;line-height:1.6;color:var(--muted);padding:10px 12px;background:#f1eee7;border-radius:8px}.compartment-icon{background:#e7f0f7;color:#3676bf}
.compartment{cursor:pointer}.compartment .compartment-area{stroke:transparent;stroke-width:0}.compartment:hover .compartment-area{stroke:#a59bc5;stroke-width:2}.compartment.selected .compartment-area{stroke:#7256c4;stroke-width:3}.compartment:focus{outline:none}.compartment-label{fill:var(--compartment-text-color,#637083);font-size:var(--compartment-font-size,15px);font-family:var(--compartment-font-family,Inter);font-weight:700}.compartment-sub{fill:var(--compartment-text-color,#637083);font-family:var(--compartment-font-family,Inter)}
.user-chip{border:0;background:transparent;display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px;font-weight:800}.user-chip .avatar{display:flex;align-items:center;justify-content:center}.region-asset-image{pointer-events:none;opacity:.68}.region-asset-badge{font:800 9px Inter,"PingFang SC",sans-serif;fill:#4c3f76;paint-order:stroke;stroke:#fff;stroke-width:3px}.login-overlay{position:fixed;z-index:100;inset:0;background:rgba(232,229,221,.96);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(10px)}.login-overlay[hidden]{display:none}.login-card{width:min(390px,calc(100vw - 36px));padding:34px;border:1px solid #d7d3ca;border-radius:18px;background:#fbfaf7;box-shadow:0 24px 70px rgba(24,35,59,.2)}.login-card h1{font:700 27px Georgia,"Songti SC",serif;margin:10px 0 6px}.login-card>p{font-size:11px;line-height:1.7;color:var(--muted);margin:0 0 20px}.login-brand{margin-bottom:18px}.login-submit{width:100%;height:40px;margin-top:8px}.login-error{display:block;min-height:18px;margin-top:10px;color:#a53f52;text-align:center}.asset-role-badge{position:absolute;left:5px;bottom:25px;padding:2px 5px;border-radius:8px;background:#ede8f8;color:#654bab;font-size:8px;font-weight:800}
.node .node-name{fill:var(--node-text-color,#17233c);font-size:var(--node-font-size,14px);font-family:var(--node-font-family,Inter);font-weight:700}.node .node-type{fill:var(--node-secondary-text-color,#7d8798);font-size:var(--node-type-font-size,9px);font-family:var(--node-font-family,Inter)}
.colors button.transparent-color{background-color:#fff;background-image:linear-gradient(45deg,#d8d4cc 25%,transparent 25%),linear-gradient(-45deg,#d8d4cc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#d8d4cc 75%),linear-gradient(-45deg,transparent 75%,#d8d4cc 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0}
.field[hidden]{display:none}
.saved-state.saving i{background:#c9a13f}.message-log{max-height:148px;overflow:auto;display:flex;flex-direction:column;gap:6px;margin-bottom:9px;padding-right:3px}.message-log:empty{display:none}.message-row{display:flex;gap:8px;align-items:flex-start;font-size:11px;line-height:1.55}.message-row .who{flex:0 0 auto;width:36px;height:19px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;background:#e8e3f5;color:var(--purple)}.message-row.assistant .who{background:#e7f0f7;color:#2f6fbb}.message-row.assistant.error .who{background:#f7e6e9;color:#a53f52}.message-row p{margin:0;flex:1;min-width:0;word-break:break-word;white-space:pre-wrap}.message-row time{flex:0 0 auto;font-size:9px;color:#9aa1ad;padding-top:3px}
.board-drawer[hidden]{display:none}.board-scrim{position:fixed;inset:0;z-index:60;background:rgba(20,29,46,.34);backdrop-filter:blur(2px)}.board-panel{position:fixed;z-index:61;left:0;top:0;bottom:0;width:330px;background:var(--panel);border-right:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;min-height:0}.board-note{font-size:10px;line-height:1.6;color:var(--muted);margin:14px 18px 8px}.board-list{flex:1;min-height:0;overflow:auto;padding:0 12px}.board-item{width:100%;position:relative;border:1px solid transparent;background:transparent;border-radius:10px;padding:10px 34px 10px 12px;text-align:left;display:block;margin-bottom:4px;cursor:pointer;outline:none}.board-item:focus-visible{border-color:#8c79c7}.board-item:hover{background:#efede7}.board-item.active{border-color:#bcb0e0;background:#f3f0fa}.board-item strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-item small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.board-item .board-preview{display:block;font-size:10px;color:#6f7889;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-remove{position:absolute;right:6px;top:8px;width:24px;height:24px;border:0;border-radius:7px;background:transparent;color:#9aa1ad;font-size:14px}.board-remove:hover{background:#f7e6e9;color:#a53f52}.board-empty{font-size:10px;color:var(--muted);text-align:center;padding:20px 8px}.board-new{margin:10px 16px 18px}
.boards-entry{height:72px;width:100%;border:0;border-bottom:1px solid #ebe8e1;background:transparent;display:flex;align-items:center;justify-content:space-between;padding:0 18px;text-align:left;flex:0 0 auto}
.boards-entry-title{display:block;font-family:Georgia,"Songti SC",serif;font-size:19px;font-weight:700;margin:2px 0 0}
.boards-entry-go{color:#8a849c;font-size:22px;line-height:1;transition:transform .15s ease,color .15s ease}
.boards-entry:hover{background:#f3f0fa}
.boards-entry:hover .boards-entry-go{color:var(--purple);transform:translateX(3px)}
.boards-entry:focus-visible{outline:2px solid #8c79c7;outline-offset:-2px}
.model-status{display:inline-block;max-width:100%}
.loading .ai-mark{position:relative;z-index:0;isolation:isolate;animation:pulse 1s infinite alternate,ai-mark-hue 1.8s linear infinite}
.loading .ai-mark:before{content:"";position:absolute;inset:-3px;border-radius:10px;background:conic-gradient(from var(--ai-angle,0deg),#7256c4,#2f6fbb,#2c8d77,#d38438,#d75c72,#7256c4);z-index:-1;animation:ai-ring-spin 1.1s linear infinite}
.loading .assistant-title>div{position:relative}
.loading .model-status{font-weight:800;letter-spacing:.02em;background-image:linear-gradient(90deg,#7256c4,#2f6fbb,#2c8d77,#d38438,#d75c72,#7256c4);background-size:240% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:status-flow 1.4s linear infinite}
.loading .assistant-title>div:after{content:"";display:block;width:100%;height:2px;margin-top:3px;border-radius:2px;background-image:linear-gradient(90deg,#7256c4,#2f6fbb,#2c8d77,#d38438,#d75c72,#7256c4);background-size:240% 100%;animation:status-flow 1.4s linear infinite}
@keyframes status-flow{to{background-position:-240% 0}}
@keyframes ai-ring-spin{to{transform:rotate(360deg)}}
@keyframes ai-mark-hue{0%{box-shadow:0 0 0 0 rgba(114,86,196,.35)}50%{box-shadow:0 0 10px 2px rgba(47,111,187,.4)}100%{box-shadow:0 0 0 0 rgba(215,92,114,.35)}}
@media(prefers-reduced-motion:reduce){.loading .ai-mark,.loading .model-status,.loading .assistant-title>div:after,.loading .ai-mark:before{animation:none}.loading .model-status{color:var(--purple);background:none;-webkit-background-clip:unset;background-clip:unset}}
