@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations")}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations")}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations")}:root{--color-paper:oklch(98.5% .004 250);--color-paper-2:oklch(96.2% .007 252);--color-surface:oklch(99.6% .002 250);--color-ink:oklch(24% .02 258);--color-ink-2:oklch(34% .018 257);--color-muted:oklch(46% .016 256);--color-rule:oklch(90.5% .008 252);--color-rule-2:oklch(82% .012 254);--color-field:oklch(62% .02 256);--color-accent:oklch(50% .19 258);--color-accent-hover:oklch(44% .19 258);--color-accent-ink:oklch(98.5% .004 250);--color-accent-soft:oklch(95.5% .025 258);--color-focus:oklch(50% .19 258);--color-error:oklch(48% .17 27);--color-error-soft:oklch(95.5% .025 27);--color-success:oklch(42% .12 155);--color-success-soft:oklch(95% .04 155);--color-warn-ink:oklch(36% .07 75);--color-warn-soft:oklch(96.5% .05 90);--color-warn-rule:oklch(86% .09 90);--color-diff-add:oklch(91% .07 155);--color-diff-del:oklch(91% .06 25);--font-display:"Space Grotesk Variable", "Inter Variable", -apple-system, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-body:"Inter Variable", -apple-system, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, "PingFang SC", "Noto Sans SC", monospace;--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.9375rem;--text-lg:1.125rem;--text-xl:1.375rem;--radius-sm:6px;--radius-md:8px;--radius-pill:999px;--control-h:2.25rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-short:.12s;font-family:var(--font-body);color:var(--color-ink-2);background:var(--color-paper);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6}*{box-sizing:border-box}html,body{overflow-x:clip}body{font-size:var(--text-md);margin:0}[hidden]{display:none!important}h1,h2,h3,h4{margin:0 0 var(--space-2xs);color:var(--color-ink);line-height:1.3;font-family:var(--font-display);overflow-wrap:anywhere;font-style:normal}h1{font-size:var(--text-lg);letter-spacing:-.01em;font-weight:600}h2{font-size:var(--text-xl);letter-spacing:-.015em;font-weight:600}h3{font-size:var(--text-md);font-weight:600}h4{font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-xs);font-weight:500}p{margin:var(--space-3xs) 0}button,input,textarea,select{font:inherit;color:inherit}button{min-height:var(--control-h);border:1px solid var(--color-rule-2);background:var(--color-surface);color:var(--color-ink);border-radius:var(--radius-sm);padding:0 var(--space-xs);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;font-weight:500}@media (hover:hover){button:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}}button:active:not(:disabled){background:var(--color-paper-2)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}@media (hover:hover){button.primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--color-accent-ink)}}button.primary:active:not(:disabled){background:var(--color-accent-hover)}button.danger{color:var(--color-error)}@media (hover:hover){button.danger:hover:not(:disabled){border-color:var(--color-error);color:var(--color-error)}}button.link{color:var(--color-accent);padding:0 var(--space-3xs);background:0 0;border:0;min-height:0;text-decoration:underline}button[aria-busy=true]:before{content:"";width:.85em;height:.85em;margin-right:var(--space-2xs);vertical-align:-.12em;border-radius:var(--radius-pill);border:2px solid;border-right-color:#0000;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}input,textarea,select{width:100%;min-height:var(--control-h);border:1px solid var(--color-field);background:var(--color-surface);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-xs);outline-offset:1px;outline:2px solid #0000}input:hover,textarea:hover,select:hover{background:var(--color-paper-2)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline-color:var(--color-focus);border-color:var(--color-ink-2);background:var(--color-surface)}input::placeholder,textarea::placeholder{color:var(--color-muted)}input:disabled,textarea:disabled,select:disabled{opacity:.55;cursor:not-allowed}textarea{resize:vertical;min-height:6rem;line-height:1.7}label{font-size:var(--text-sm);color:var(--color-ink-2);font-weight:500}pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:var(--space-2xs) 0;font:inherit}code{font-family:var(--font-mono);font-size:var(--text-sm);background:var(--color-paper-2);padding:1px var(--space-3xs);overflow-wrap:anywhere;border-radius:4px}.shell{grid-template-columns:13rem minmax(0,1fr);min-height:100vh;display:grid}.side{border-right:1px solid var(--color-rule);padding:var(--space-md) var(--space-xs);gap:var(--space-3xs);background:var(--color-paper-2);flex-direction:column;display:flex}.side h1{padding:0 var(--space-xs);margin-bottom:var(--space-sm)}.side button{text-align:left;color:var(--color-ink-2);padding:0 var(--space-xs);background:0 0;border-color:#0000}.side button[aria-current=true]{background:var(--color-accent-soft);color:var(--color-accent);font-weight:600}.side .logout{color:var(--color-muted);margin-top:auto}.side .error:empty{display:none}.side .error{flex-basis:100%}main{padding:var(--space-lg);min-width:0;max-width:84rem}.panel{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-md);padding:var(--space-sm);margin-bottom:var(--space-sm)}.form{gap:var(--space-xs);flex-direction:column;display:flex}.field{gap:var(--space-3xs);flex-direction:column;display:flex}.field.grow{flex:1;min-width:11rem}.row{gap:var(--space-2xs);align-items:center;display:flex}.row.wrap{flex-wrap:wrap}.row.end{align-items:flex-end}.row.between{justify-content:space-between}.muted{color:var(--color-muted)}.small{font-size:var(--text-sm)}.error{color:var(--color-error);min-height:1.4em;font-size:var(--text-sm);overflow-wrap:anywhere;margin:0}.form>.error:empty,.list-col>.error:empty{min-height:0;margin-top:calc(var(--space-xs) * -1)}.error:not(:empty){background:var(--color-error-soft);border:1px solid var(--color-error);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-xs)}.ok{color:var(--color-success);background:var(--color-success-soft);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-xs)}.empty{color:var(--color-muted);padding:var(--space-xs) 0}.banner,.warn{background:var(--color-warn-soft);color:var(--color-warn-ink);border:1px solid var(--color-warn-rule);border-radius:var(--radius-md);padding:var(--space-2xs) var(--space-sm);margin-bottom:var(--space-sm)}.warn p{margin:var(--space-3xs) 0}.page-msg{padding:var(--space-xl)}.login{min-height:100vh;padding:var(--space-sm);place-items:center;display:grid}.login form{width:min(24rem,100%)}.library{gap:var(--space-md);grid-template-columns:minmax(18rem,24rem) minmax(0,1fr);align-items:start;display:grid}.list-col{gap:var(--space-xs);flex-direction:column;min-width:0;display:flex}.cards,.plain{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cards{border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden}.cards li+li{border-top:1px solid var(--color-rule)}.card{gap:var(--space-3xs);padding:var(--space-xs) var(--space-sm);cursor:pointer;flex-direction:column;display:flex}@media (hover:hover){.card:hover{background:var(--color-paper-2)}}.card:focus-visible{outline-offset:-3px}.card.selected{background:var(--color-accent-soft);box-shadow:inset 2px 0 0 var(--color-accent)}.card.selected .chip:not(.active){background:var(--color-surface)}.card strong{color:var(--color-ink);overflow-wrap:anywhere;font-weight:600}.snippet{color:var(--color-muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.detail-col{min-width:0}.body{background:var(--color-paper);border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);min-height:7.5rem;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-ink);line-height:1.75}.chips,.tagbar{gap:var(--space-2xs);flex-wrap:wrap;align-items:center;display:flex}.chip{align-items:center;gap:var(--space-3xs);background:var(--color-accent-soft);color:var(--color-accent);border-radius:var(--radius-sm);padding:0 var(--space-2xs);min-height:1.75rem;font-family:var(--font-mono);font-size:var(--text-xs);border:1px solid #0000;font-weight:500;display:inline-flex}button.chip-pick{min-height:1.75rem;padding:0 var(--space-2xs);font-size:var(--text-xs)}.chip-pick.active{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}@media (hover:hover){button.chip-pick:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-soft)}button.chip-pick.active:hover:not(:disabled){background:var(--color-accent-hover);color:var(--color-accent-ink)}}.chip .count{opacity:.8;font-size:var(--text-xs)}.chip{min-width:0;max-width:100%}button.chip-pick{max-width:100%}.chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chip .count{flex:none}.chip-edit{padding-right:0}.chip-edit button{padding:0 var(--space-2xs);min-height:1.75rem;color:inherit;font-size:var(--text-md);background:0 0;border:0;flex:none}.filterbar{font-size:var(--text-sm);background:var(--color-accent-soft);color:var(--color-ink);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-xs)}.filterbar b{margin-right:var(--space-2xs);font-weight:600}.source{margin-top:var(--space-xs);border-top:1px solid var(--color-rule);padding-top:var(--space-xs)}.source-body pre{background:var(--color-paper);border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-xs);font-family:var(--font-mono);font-size:var(--text-sm)}.workbench textarea{font-family:var(--font-mono);font-size:var(--text-sm)}.compare{gap:var(--space-sm);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;display:grid}.compare .panel{flex-direction:column;margin-bottom:0;display:flex}.compare .panel>.body{min-height:15rem;margin:0 0 var(--space-3xs);flex:1}.compare h3,.compare .field>label{margin:0 0 var(--space-3xs);line-height:1.6}.compare .field>label{font-family:var(--font-display);font-size:var(--text-md);color:var(--color-ink);font-weight:600}.compare textarea{flex:1;min-height:15rem}.compare .field{flex:1}.workbench section[aria-label=优化结果]>*+*{margin-top:var(--space-sm)}.diff{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-ink);line-height:1.8}.diff ins{background:var(--color-diff-add);text-decoration:none}.diff del{background:var(--color-diff-del);text-decoration:line-through}.scheme-row{justify-content:space-between;gap:var(--space-xs);border-bottom:1px solid var(--color-rule);padding:var(--space-2xs) 0;align-items:center;display:flex}.scheme-row>span:first-child{flex:1;min-width:0}.scheme-row>span:first-child>strong{color:var(--color-ink);display:block}@media (pointer:coarse){button,input,select{min-height:2.75rem}button.chip-pick,.chip-edit button{min-height:2.25rem}input,textarea,select{font-size:1rem}}@media (width<=800px){.shell{grid-template-columns:minmax(0,1fr)}.side{border-right:0;border-bottom:1px solid var(--color-rule);padding:var(--space-2xs) var(--space-xs);flex-flow:wrap;align-items:center}.side h1{margin:0 var(--space-xs) 0 0;width:100%;padding:0}.side .logout{margin-top:0;margin-left:auto}main{padding:var(--space-sm)}.library,.compare{grid-template-columns:minmax(0,1fr)}}@media (width<=400px){.row.end{flex-direction:column;align-items:stretch}.row.end>button{width:100%}}@media (prefers-reduced-motion:reduce){button[aria-busy=true]:before{animation:none}}
