:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#182b28;background:#f4f6f2;font-size:14px}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}header{padding:26px 4vw;border-bottom:1px solid #dfe5df;display:flex;justify-content:space-between;align-items:center}h1{font-size:25px;margin:0 0 6px}h1 span{font-size:12px;color:#38775d;font-weight:400;margin-left:10px}p{line-height:1.7;margin:0;color:#60716c}.badge{border:1px solid #cfdbd3;border-radius:30px;padding:8px 13px;font-size:12px;color:#38775d}main{max-width:1550px;margin:auto;padding:26px 4vw;display:grid;grid-template-columns:minmax(360px,530px) minmax(0,1fr);gap:25px}.panel{background:#fff;border:1px solid #dfe5df;border-radius:16px;padding:22px;margin-bottom:18px}h2{font-size:16px;margin:0 0 18px}i{color:#8b9b94;margin-right:10px;font-size:12px;font-style:normal}label{display:block;font-weight:600;margin-bottom:7px}input,textarea,select{font:inherit;width:100%;min-width:0;border:1px solid #ccd8cf;border-radius:8px;padding:10px;background:white;color:#182b28}input:focus,textarea:focus,select:focus{outline:2px solid #32876755;outline-offset:1px}textarea{resize:vertical;min-height:120px}.code{font-family:Consolas,monospace;font-size:12px;min-height:85px}small{display:block;color:#74827d;font-size:12px;line-height:1.6;margin-top:7px}.field{margin-bottom:16px}.row{display:flex;gap:8px;align-items:center}.row input,.row select{flex:1;min-width:0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid .field{margin:0 0 8px}.spaced{margin-top:12px}button,.download{font:inherit;border:1px solid #ccd8cf;background:#f5f8f5;border-radius:8px;padding:9px 11px;color:#28483c;cursor:pointer;white-space:nowrap;text-decoration:none}button:hover,.download:hover{background:#e8f1ea}button:disabled{opacity:.5;cursor:wait}.primary{width:100%;background:#217558;color:white;border:0;padding:14px;font-weight:600;font-size:15px}.primary:hover{background:#195d46}details{margin:14px 0 20px}summary{cursor:pointer;color:#52685c;margin-bottom:12px}.status{font-size:13px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:10px}.error{color:#ab3e32}.model-note{background:#edf5ef;border-radius:10px;padding:14px;margin-bottom:20px}.model-note p{font-size:12px;margin-top:6px}.preview-head{display:flex;justify-content:space-between;gap:12px}.preview-head span{font-size:12px;color:#73847b}.results{min-width:0}.empty{min-height:410px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px dashed #d4dfd6;border-radius:10px;background:linear-gradient(145deg,#f5f8f2,#eef5f2);padding:30px}.empty strong{font-size:18px;margin-bottom:10px}.gallery{display:grid;gap:18px}.card{border:1px solid #dfe5df;border-radius:12px;overflow:hidden}.canvas{background:repeating-conic-gradient(#e6e9e5 0% 25%,#fff 0% 50%) 0/20px 20px;display:flex;justify-content:center}.card img,#partialImage{width:100%;max-height:650px;object-fit:contain;display:block;cursor:zoom-in}.caption{padding:13px;display:flex;align-items:center;justify-content:space-between;gap:10px}.caption span{overflow-wrap:anywhere;min-width:0;font-size:12px}.card details{padding:0 14px}.refs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px}.ref{border:1px solid #dfe5df;border-radius:9px;padding:6px;min-width:0}.ref img{width:100%;height:80px;object-fit:contain}.ref small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ref button{width:100%;padding:4px;font-size:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;color:#60716c;line-height:1.7}dialog{max-width:96vw;max-height:96vh;border:0;border-radius:12px;padding:12px}dialog::backdrop{background:#12221ddb}dialog img{display:block;max-width:90vw;max-height:82vh}dialog button{float:right;margin-bottom:10px}#partial{background:#f4f6f2;padding:10px;border-radius:10px;margin-bottom:16px}#presetPanel .row{flex-wrap:wrap}#grounding a{color:#217558;display:block;font-size:12px;margin:5px 0}@media(max-width:850px){main{grid-template-columns:1fr;padding:18px}.badge{display:none}header{padding:20px}.panel{padding:18px}}@media(max-width:420px){.grid{grid-template-columns:1fr}.row{flex-wrap:wrap}}
