:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#213531;background:#f4f6f3;font-size:16px;line-height:1.5;--green:#18624c;--line:#dce3dd;--muted:#65786e}*{box-sizing:border-box}body{margin:0}header{height:76px;padding:0 32px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:12px;align-items:center;color:inherit;text-decoration:none;font-size:22px}.brand span{font-size:14px;border-left:1px solid var(--line);padding-left:16px;color:var(--muted)}.badge{background:#edf2ec;border:1px solid #d8e3d4;border-radius:5px;padding:5px 9px;font-size:14px;white-space:nowrap}.badge.warn{background:#fff3da;border-color:#e9d6a8;color:#7a5316}main{display:grid;grid-template-columns:235px minmax(0,1fr);min-height:calc(100vh - 76px)}.projects{border-right:1px solid var(--line);padding:28px 20px;background:#fbfcfa}.section-title{display:flex;gap:12px;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title h2{margin:0;font-size:16px}.workspace{padding:28px 32px 40px;min-width:0;max-width:1800px;width:100%;margin:auto}.toolbar{display:flex;gap:20px;align-items:center;justify-content:space-between;margin:0 0 26px}.toolbar h1{font-size:26px;margin:3px 0;font-weight:650;overflow-wrap:anywhere}.toolbar p{margin:3px 0}.eyebrow{font-size:14px;color:var(--green);letter-spacing:.03em}.actions{display:flex;gap:10px;flex-shrink:0}button,.button{font:inherit;font-size:14px;font-weight:550;border:1px solid #cbd6cd;border-radius:6px;padding:10px 14px;background:#fff;color:#244337;cursor:pointer;display:inline-block;text-decoration:none}button:hover,.button:hover{background:#edf3ed}button:disabled{cursor:wait;opacity:.55}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover{background:#104e3d}.quiet{border:0;background:transparent;padding:4px}.muted,.hint{color:var(--muted)}.small,.hint{font-size:14px}.hint{line-height:1.65;margin:12px 0}.runtime{font-size:12px;border-top:1px solid var(--line);margin-top:24px;padding-top:16px;color:var(--muted);line-height:1.8}.project-link{display:block;width:100%;padding:12px;margin:6px 0;text-align:left;background:transparent;border:1px solid transparent;overflow-wrap:anywhere}.project-link.active{background:#e8f0e8;border-color:#c6d9ca;color:#174c3b}.project-link small{display:block;margin-top:4px;font-weight:400;color:var(--muted)}.editor-grid{display:grid;grid-template-columns:275px minmax(0,1fr);gap:22px;align-items:start}.card{border:1px solid var(--line);border-radius:10px;background:#fff;padding:20px}.controls{display:grid;gap:22px}label{display:grid;gap:7px;font-size:14px;color:#465c50}input,select{width:100%;min-width:0;font:inherit;font-size:16px;background:#fff;border:1px solid #cbd5cc;border-radius:5px;padding:9px 10px;color:#203f30}input:focus,select:focus,button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #4c9478;outline-offset:3px}fieldset{margin:0;padding:0;border:0;display:grid;gap:14px}legend{font-size:15px;font-weight:650;padding:0 0 12px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}details{border-top:1px solid var(--line);padding-top:16px}summary{font-size:14px;font-weight:600;cursor:pointer;margin-bottom:16px}.results{min-width:0;display:grid;gap:20px}.preview{padding:0;overflow:hidden}.preview .section-title{padding:20px 20px 0}.view-switch{display:flex;gap:2px;background:#f1f4ef;padding:3px;border-radius:6px}.view-switch button{font-size:14px;border:0;padding:6px 10px;background:transparent}.view-switch button[aria-pressed=true]{background:#fff;box-shadow:0 1px 3px #253e3020}.preview-meta{display:flex;justify-content:space-between;padding:0 20px 14px;font-size:14px;color:var(--muted)}.canvas{min-height:310px;display:flex;align-items:center;justify-content:center;padding:26px;background-color:#edf2ed;background-image:radial-gradient(#bccabd 0.7px,transparent .7px);background-size:16px 16px}.canvas img{width:100%;height:auto;max-height:480px;object-fit:contain;background:#fff;box-shadow:0 4px 20px #314c3210}.canvas #preview-empty{text-align:center;color:#486454}.empty-icon{display:block;font-size:56px;line-height:1.2;color:#91ac98}.preview-footer{padding:14px 20px;font-size:14px;display:flex;gap:16px;justify-content:space-between;color:var(--muted)}a{color:var(--green);text-underline-offset:3px}.check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}.metric{background:#f5f7f3;padding:12px;border-radius:6px;font-size:14px;color:var(--muted)}.metric strong{display:block;font-size:25px;color:#304b3a;font-weight:600}.warning{color:#80602c;background:#fff7e9;padding:12px;border-left:3px solid #c5a468;font-size:14px;line-height:1.7;margin:12px 0}.downloads{display:flex;flex-wrap:wrap;gap:18px;align-items:center;font-size:14px}.history-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 0;border-top:1px solid var(--line);font-size:14px}.history-row div{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.history-row.active{color:var(--green)}.history-row small{color:var(--muted)}.create{max-width:560px;margin:30px auto;display:grid;gap:20px}.create h1{font-size:26px;margin:0}.create p{margin:6px 0}#message:empty{display:none}#message{padding:12px 16px;background:#e6f1e8;color:#24583a;border-radius:6px;margin-bottom:20px;font-size:14px}#message.error{background:#fff0e5;color:#893f1f}[hidden]{display:none!important}@media(min-width:1500px){.canvas{min-height:400px}}@media(max-width:1100px){main{grid-template-columns:190px minmax(0,1fr)}.workspace{padding:24px 18px}.editor-grid{grid-template-columns:240px minmax(0,1fr);gap:16px}.toolbar{align-items:flex-start}.actions{flex-direction:column}.preview .section-title{align-items:flex-start;flex-direction:column}.check-grid{grid-template-columns:1fr}.metric strong{display:inline;margin-right:8px;font-size:20px}}@media(max-width:800px){header{padding:0 18px}.brand span{display:none}main{display:block}.projects{padding:14px 18px;border-right:0;border-bottom:1px solid var(--line)}.projects .section-title{margin-bottom:8px}#project-list{display:flex;gap:8px;overflow:auto}.project-link{min-width:180px;width:auto}.projects>p,.runtime{display:none}.workspace{padding:20px 14px}.editor-grid{grid-template-columns:1fr}.controls{grid-template-columns:1fr 1fr;gap:20px}.controls>label,.controls>details{grid-column:1/-1}.toolbar h1{font-size:23px}.canvas{min-height:240px;padding:16px}.check-grid{grid-template-columns:repeat(3,1fr)}.metric strong{display:block}.preview .section-title{flex-direction:row}.actions{gap:6px}button{padding:9px 11px}}@media(max-width:450px){.controls{grid-template-columns:1fr}.toolbar{flex-direction:column}.actions{flex-direction:row}.preview .section-title{flex-direction:column}.check-grid{grid-template-columns:1fr}.metric strong{display:inline;margin-right:8px}.preview-footer{flex-direction:column}}
.option-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.controls #option-groups>details:first-child{border:0;padding-top:0}.controls input[type=checkbox]{width:20px;height:20px}.option-grid label:has(input[type=checkbox]){display:flex;align-items:center;justify-content:space-between;grid-column:1/-1}.controls{max-height:calc(100vh - 120px);overflow:auto;position:sticky;top:15px}.editor-grid{grid-template-columns:340px minmax(0,1fr)}#layout-mode{max-width:230px}#layout-canvas{width:100%;height:300px;background:#eef4ef;border:1px solid #d4dfd6;margin:16px 0;touch-action:none}.board-outline{fill:#c9e2d3;stroke:#286f50;stroke-width:.5}.board-outline.estimated{stroke-dasharray:2 1}#layout-canvas g{cursor:grab}.instance-row{display:grid;grid-template-columns:30px minmax(100px,1.5fr) repeat(3,minmax(65px,1fr)) 60px;gap:8px;align-items:end;margin-bottom:10px}.feature-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.feature-row label{width:95px}.view-switch{flex-wrap:wrap}#source-list{margin-bottom:15px}.results h3{font-size:14px}.results details button{margin:8px 4px 8px 0}.results input[type=checkbox]{width:20px;height:20px}.controls button:disabled{cursor:wait}@media(max-width:1200px){.editor-grid{grid-template-columns:300px minmax(0,1fr)}.instance-row{grid-template-columns:30px 1fr 1fr}.instance-row>select{grid-column:span 2}}@media(max-width:900px){.editor-grid{grid-template-columns:1fr}.controls{position:static;max-height:none}.option-grid{grid-template-columns:1fr 1fr}.controls{display:block}.controls>label{margin-bottom:20px}}
