*{box-sizing:border-box}body{margin:0;color:#202338;background:#fbfbfe;font:15px/1.55 "Microsoft YaHei UI","Microsoft YaHei",sans-serif}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:white;border:1px solid #dedee9;border-radius:9px;padding:8px 14px}button:hover,button:focus-visible{border-color:#7166ef;color:#5042ce}button:disabled{opacity:.55;cursor:default}.primary,.tabs .on{background:#5749df;color:white;border-color:#5749df}.primary:hover{color:white;background:#4739c9}.brand{font-weight:750;font-size:22px;white-space:nowrap}.brand i{font-style:normal;color:#6154e5;letter-spacing:-6px;margin-right:12px}.shell{display:grid;grid-template-columns:210px 1fr;min-height:100vh}.rail{background:#f3f3fb;padding:28px 18px;display:flex;flex-direction:column;gap:10px;border-right:1px solid #e5e5ed}.rail .brand{margin:0 0 32px}.rail button{text-align:left;border:0;background:transparent}.rail .on{background:#e6e4fc;color:#5145d6}.foot{margin-top:auto;font-size:13px;color:#686a80}.content{padding:24px clamp(25px,3vw,56px) 40px;max-width:1700px;width:100%;margin:auto}.top{display:flex;align-items:center;justify-content:space-between;gap:14px}.quiet,small{color:#71748a}.hero{text-align:center;padding:20px 6% 18px}.hero h1{font-size:clamp(32px,3vw,50px);margin:8px 0}.hero p{margin:0 0 18px}.composer,.box{background:#fff;border:1px solid #dcdce8;border-radius:14px;padding:16px}.composer{box-shadow:0 7px 20px #37355809}.composer textarea{width:100%;border:0;resize:vertical;min-height:58px;outline:none}.actions,.chips,.tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.chips{justify-content:center;margin:16px auto 0}.chips button,.tabs button{font-size:14px}.section{display:flex;justify-content:space-between;align-items:end;margin:25px 0 12px}.section h2{margin:0}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin:18px 0}.card{min-width:0;text-align:left;border:0;background:none;padding:0}.thumb{position:relative}.thumb img,.preview{width:100%;object-fit:cover;border-radius:12px}.thumb img{aspect-ratio:1.44}.tag{position:absolute;bottom:12px;left:10px;background:#1f203bcc;color:white;padding:2px 8px;border-radius:6px;font-size:12px}.card h3{margin:7px 0 4px}.card p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 0 8px;color:#727488;font-size:13px}.link{color:#5147d6;font-size:13px}.bar{background:white;border-bottom:1px solid #dedee9;padding:12px 24px;display:flex;align-items:center;gap:20px;min-height:60px}.end{margin-left:auto}.detail{display:grid;grid-template-columns:1.1fr 1fr;gap:42px;max-width:1450px;margin:25px auto;padding:0 32px}.detail h1{margin:0}.detail h3{margin:20px 0 8px}.preview{aspect-ratio:1.52}.ref{display:flex;gap:12px}.ref img{width:85px;height:62px;object-fit:cover;border-radius:8px}.upload{display:block;padding:22px;text-align:center;background:#f7f6ff;border:1px dashed #9891d9;border-radius:10px;cursor:pointer}.upload img{height:80px;max-width:100%;object-fit:contain}.field{width:100%;background:white;border:1px solid #dbdce8;border-radius:9px;padding:11px;resize:vertical;min-height:75px}.full{width:100%;margin-top:10px}.work{display:flex;height:calc(100vh - 64px);min-height:570px}.board{position:relative;flex:1;overflow:hidden;background:radial-gradient(#cccbdc 1px,transparent 1px) 0 0/19px 19px}.toolbar{position:absolute;left:20px;top:18px;z-index:1}.graph{position:absolute;inset:12% 2% 10%}.graph svg{position:absolute;width:100%;height:100%;pointer-events:none}.node{position:absolute;width:27%;background:white;border:1px solid #d8d7e7;border-radius:12px;box-shadow:0 5px 17px #31305310;padding:9px}.node strong{cursor:grab;display:block;font-size:14px}.node img{width:100%;aspect-ratio:1.4;object-fit:cover;border-radius:7px;margin-top:8px}.node small{font-size:12px}.port{position:absolute;top:48%;width:13px;height:13px;padding:0;background:#6352df;border:2px solid white;border-radius:50%}.out{right:-7px}.in{left:-7px}.drawer{width:clamp(320px,31vw,470px);overflow:auto;background:white;border-left:1px solid #e1e1ec;padding:20px}.drawer h2{margin:0 0 14px}.drawer h3{margin:16px 0 6px}.bubble{background:#f0eefd;padding:10px 14px;border-radius:10px;white-space:pre-wrap}.bill{border-top:1px solid #dcdce8;margin-top:18px;padding-top:4px}.row,.record{padding:10px 0;display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #e7e6ef}.record{align-items:center;flex-wrap:wrap}.panel{max-width:1050px;margin:35px auto;padding:0 24px}.flag{color:#6a5d92;font-size:12px}dialog{width:min(580px,90vw);border:1px solid #dddae9;border-radius:15px;padding:24px;color:inherit}dialog::backdrop{background:#18182b50}#close{float:right}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#26263c;color:white;padding:9px 18px;border-radius:10px;z-index:8;display:none}.sr{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}select{border:1px solid #dcdce8;padding:5px;border-radius:6px}@media(max-width:1050px){.shell{grid-template-columns:150px 1fr}.grid{grid-template-columns:repeat(2,1fr)}.hero{padding-left:0;padding-right:0}.bar{gap:8px;padding:10px}.detail{gap:20px}}

/* Surface hierarchy: matte content, shallow raised controls, glass overlays. */
.platform-shell{grid-template-columns:210px minmax(0,1fr)}.platform-rail{position:sticky;top:0;height:100vh;overflow-y:auto}.platform-rail nav{display:flex;flex-direction:column;gap:7px}.platform-rail nav a{display:block;padding:10px 14px;border-radius:11px;text-decoration:none;color:inherit;font-size:14px}.platform-rail nav a:hover{background:#ebeaf4;color:#5145d6}.platform-rail [hidden]{display:none}.platform-pane{min-width:0;min-height:100vh}.platform-pane>.content{margin:0 auto}.platform-pane>.panel{width:100%;margin:30px auto}.platform-pane>.bar{padding:16px 28px}.platform-pane .detail{padding:0 28px}.platform-pane .box+.box{margin-top:12px}
:root{
  --ink:#242437;--dim:#646677;--accent:#5748d4;
  --hair:rgba(47,45,74,.135);--seam:rgba(47,45,74,.09);
  --rule:1px;--r-control:9px;--r-media:14px;--r-panel:20px;
  --lift:0 2px 4px #28244005,0 10px 30px -16px #30304d33;
}
@media(min-resolution:2dppx){:root{--rule:.5px}}
body{color:var(--ink);background:#fcfcfe;font-family:"Segoe UI","Microsoft YaHei UI","Microsoft YaHei",sans-serif}
.shell{background:radial-gradient(ellipse at 64% 0%,#eceafb9c,transparent 47%),#fcfcfe}
.rail{background:linear-gradient(165deg,#f2f2f9,#f8f8fb 72%);border-right:var(--rule) solid var(--hair)}
.brand{letter-spacing:-.045em}.brand i{position:relative;display:inline-block;width:26px;height:20px;font-size:0;vertical-align:-2px;margin:0 -11px 0 1px}
.brand i:before,.brand i:after{content:"";position:absolute;left:4px;top:0;width:8px;height:17px;transform:skew(-29deg);border-radius:4px;background:#6354db}
.brand i:after{left:15px;top:5px;background:#9890ee}
.rail button{border-radius:11px;padding:10px 14px;font-weight:500}
.rail button:hover{background:#ebeaf4}.rail .on{background:#e8e5fb;color:#4e40be;box-shadow:inset 0 0 0 var(--rule) #6452d31a}
.foot{border-top:var(--rule) solid var(--hair);padding:16px 6px 2px}
.quiet,small,.card p{color:var(--dim)}
button,select,.field,.composer,.upload,.box,dialog{border-width:var(--rule);border-color:var(--hair)}
button{border-radius:var(--r-control);transition:background .16s,color .16s,box-shadow .16s}
button:focus-visible,select:focus-visible,.field:focus-visible,.upload:focus-within{outline:2px solid #887ce7;outline-offset:3px}
.primary,.tabs .on{background:linear-gradient(165deg,#7161e5,#5747cf);color:white;border-color:#5143b866;box-shadow:inset 0 1px #ffffff38,0 2px 4px #41369419}
.primary:hover,.tabs .on:hover{background:#5646cc;color:white}.primary:active{box-shadow:inset 0 1px 3px #30287152}
.hero h1,.section h2,.detail h1,.drawer h2,.panel h1{letter-spacing:-.045em}
.composer{border-radius:var(--r-panel);background:linear-gradient(160deg,#fff,#fffffff2);box-shadow:0 0 0 4px #ffffff65,var(--lift);padding:16px 18px}
.composer:focus-within{border-color:#a99fec;box-shadow:0 0 0 3px #7764dc12,var(--lift)}
.composer textarea{background:transparent;line-height:1.7;resize:none}
.composer .upload,.chips button{border:var(--rule) solid var(--hair);background:#ffffffbd;border-radius:999px}
.chips button{padding:6px 16px}.chips button:hover,.upload:hover{background:#f2f0fc;border-color:#a79cde}
.section{border-top:var(--rule) solid var(--seam);padding-top:22px}
.tabs{gap:5px}.tabs button{padding:5px 13px}.tabs button:not(.on){background:transparent;border-color:transparent}
.tabs select{border:0;border-left:var(--rule) solid var(--hair);background:transparent;border-radius:0;margin-left:4px;padding-left:14px}
.thumb{border-radius:var(--r-media);overflow:hidden;background:#eeeef3;isolation:isolate}
.thumb img{display:block;border-radius:inherit;transition:transform .25s}
.thumb:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 var(--rule) #28213526}
.card:hover .thumb img{transform:scale(1.018)}.card h3{font-weight:650;letter-spacing:-.025em;margin-top:10px}
.tag{bottom:9px;left:9px;border:var(--rule) solid #ffffff4a;background:#20212fce;border-radius:7px;padding:2px 8px;line-height:1.6}
.bar{border-bottom:var(--rule) solid var(--hair);background:#ffffffed}.bar button{background:#ffffffd9}
.board{background-color:#f7f7fb;background-image:radial-gradient(#b9b7c9 .72px,transparent .9px);background-size:19px 19px}
.toolbar{padding:5px;gap:2px;background:#fdfdff;border:var(--rule) solid var(--hair);border-radius:14px;box-shadow:inset 0 1px #fff,var(--lift)}
.toolbar button{background:transparent;border-color:transparent;border-radius:9px;padding:6px 11px}.toolbar button:hover{background:#ebe9f8}
.node{background:#fff;border:var(--rule) solid var(--hair);border-radius:16px;box-shadow:var(--lift);padding:10px}
.node img{display:block;border-radius:8px}.node strong{letter-spacing:-.02em}.node small{display:block;margin-top:5px}
.graph path{stroke-width:1.45;stroke:#8176d4}.port{box-shadow:0 0 0 1px #675caa44}
.drawer{border-left:var(--rule) solid var(--hair);background:linear-gradient(145deg,#fff,#fcfbfe);padding:22px}
.bubble{background:#f1effb;border:var(--rule) solid #7465cc1a;border-radius:13px 13px 13px 4px}
.field{border-radius:12px;line-height:1.7}
.bill{border-top:var(--rule) solid var(--hair);padding-top:7px}.row,.record{border-bottom:var(--rule) solid var(--seam);font-variant-numeric:tabular-nums}
.box{border-radius:15px;box-shadow:0 2px 6px #25223b05}.panel .box+.box{margin-top:10px}
.preview{border-radius:var(--r-panel);box-shadow:var(--lift)}.detail .upload{border-radius:15px;background:#f7f6fd;border-color:#a69cd7}
dialog{border-radius:var(--r-panel);background:#fdfdff;box-shadow:0 24px 90px -24px #19152d59}dialog::backdrop{background:#26213638}
@supports (backdrop-filter:blur(1px)){
 .toolbar{background:#ffffffe0;backdrop-filter:blur(14px) saturate(1.12)}
 .tag{background:#282635b5;backdrop-filter:blur(8px)}
 dialog::backdrop{backdrop-filter:blur(4px)}
}
@media(prefers-reduced-transparency:reduce){.toolbar,.bar,dialog{background:#fff;backdrop-filter:none}.tag{background:#292736;backdrop-filter:none}dialog::backdrop{backdrop-filter:none}}
@media(prefers-reduced-motion:reduce){button,.thumb img{transition:none}.card:hover .thumb img{transform:none}}
.brand{display:inline-flex;align-items:center;gap:10px}.brand i{display:block;flex:none;margin:0;font-size:0;overflow:hidden}
.savebar{position:fixed;bottom:9px;right:12px;z-index:10;background:#ffffffe8;border:1px solid #dddbea;border-radius:9px;padding:3px 8px;display:flex;align-items:center;gap:10px;font-size:12px;color:#656277}.savebar button{font-size:12px;padding:3px 7px}.login{max-width:430px;margin:10vh auto;padding:30px;background:white;border:1px solid #dedce8;border-radius:20px;box-shadow:0 12px 50px #302b5710}.login input{display:block;width:100%;padding:10px;margin:5px 0 16px;border:1px solid #dcd9e7;border-radius:9px}.graph{inset:0}.graph svg{position:static;width:auto;height:auto;pointer-events:auto}.graph .react-flow__edges{position:absolute;inset:0}.graph .react-flow__node-media{width:240px;background:white;border:1px solid #dbd8e7;box-shadow:0 4px 18px #30305012;border-radius:16px;padding:11px}.react-flow__node-media img{display:block;width:100%;height:158px;object-fit:cover;border-radius:9px;margin:10px 0}.react-flow__node-media strong{font-size:14px}.react-flow__node-media small{font-size:12px}.react-flow__handle{background:#6e5bd8;width:10px;height:10px;border:2px solid white}.toolbar{z-index:5}
.react-flow__node-media strong,.react-flow__node-media small{display:block}.react-flow__node-media small{margin-top:8px;color:#6c687c}.react-flow__node-media.selected{outline:2px solid #9481e0;outline-offset:2px}
#newKey input:not([type=checkbox]){border:1px solid #dcd8e7;border-radius:7px;padding:7px;max-width:180px;margin:5px}code{font-family:Consolas,monospace;font-size:13px}
