:root{--bg:#faf5ee;--bg2:#fffdf8;--card:#ffffff;--line:#eadfcb;--text:#2c2620;--muted:#8a7d67;--dim:#b3a58c;--pink:#e85d75;--pink2:#c73e58;--gold:#d9a441;--green:#4a9e63;--radius:16px}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:radial-gradient(900px 500px at 90% -10%,#ffe9d6 0%,transparent 60%),radial-gradient(700px 400px at -5% 0%,#fde3ea 0%,transparent 55%),var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;line-height:1.7;min-height:100vh}
a{color:var(--pink2);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1080px;margin:0 auto;padding:0 16px}
header{background:rgba(255,255,255,.82);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.head-in{display:flex;align-items:center;gap:12px;padding:12px 16px;flex-wrap:wrap}
.logo{font-size:24px}
.brand{font-size:17px;font-weight:800;letter-spacing:.5px}
.brand small{display:block;font-size:11.5px;color:var(--muted);font-weight:400;letter-spacing:0}
nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}
nav a{color:var(--muted);font-size:13px;border:1px solid var(--line);padding:5px 13px;border-radius:999px;background:var(--bg2)}
nav a:hover{color:var(--pink2);border-color:var(--pink);text-decoration:none}
.hero{padding:34px 0 18px;text-align:center}
h1{font-size:34px;font-weight:800;letter-spacing:1px}
.grad{background:linear-gradient(120deg,var(--pink),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{color:var(--muted);font-size:15px;margin:10px auto 0;max-width:620px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-top:18px;box-shadow:0 6px 24px rgba(120,90,40,.06)}
.panel h2{font-size:19px;font-weight:800;margin-bottom:12px}
.cols{display:grid;grid-template-columns:340px 1fr;gap:22px}
@media(max-width:820px){.cols{grid-template-columns:1fr}}
.up{border:2px dashed var(--line);border-radius:14px;padding:26px 16px;text-align:center;cursor:pointer;transition:.15s;background:var(--bg2)}
.up:hover,.up.drag{border-color:var(--pink);background:#fff0f3}
.up-ico{font-size:30px}
.up-ico.big{font-size:46px}
.up-t{font-weight:700;margin-top:6px}
.up-s{color:var(--dim);font-size:12px;margin-top:2px}
.ctrl{margin-top:16px}
.ctrl label{display:block;font-size:13.5px;font-weight:700;color:var(--text);margin-bottom:6px}
.seg{display:flex;gap:6px;flex-wrap:wrap}
.seg button{border:1px solid var(--line);background:var(--bg2);color:var(--muted);border-radius:10px;padding:7px 14px;font-size:13px;cursor:pointer;font-family:inherit;transition:.12s}
.seg button:hover{border-color:var(--gold)}
.seg button.on{background:linear-gradient(120deg,var(--pink),var(--pink2));color:#fff;border-color:transparent;font-weight:700}
.seg button.pro{color:var(--dim)}
.hint{color:var(--dim);font-size:12px;margin-top:4px}
.ctrl.row{display:flex;gap:16px;flex-wrap:wrap}
.chk{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--text);font-weight:400!important;cursor:pointer}
.chk input{width:16px;height:16px;accent-color:var(--pink)}
.btn{display:inline-block;background:linear-gradient(120deg,var(--pink),var(--pink2));color:#fff;border:none;border-radius:12px;padding:11px 24px;font-size:14.5px;font-weight:700;cursor:pointer;font-family:inherit;margin-top:16px;transition:.12s}
.btn:hover{filter:brightness(1.08);text-decoration:none}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.sm{padding:8px 16px;font-size:13px;margin:0}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text);font-weight:600}
.btn.ghost:hover{border-color:var(--pink);color:var(--pink2)}
.pro-bar{margin-top:14px;background:#fff5f7;border:1px solid #f3d4dc;border-radius:12px;padding:10px 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.pro-bar input{flex:1;min-width:150px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13px}
#proStatus{font-size:12px;color:var(--green);font-weight:700}
.prev{background:var(--bg2);border:1px solid var(--line);border-radius:14px;min-height:380px;display:flex;align-items:center;justify-content:center;padding:14px;overflow:auto;position:relative}
.prev-empty{text-align:center;color:var(--dim)}
.prev-empty p{font-size:13.5px;margin-top:8px}
#grid{max-width:100%;height:auto;image-rendering:pixelated;border-radius:6px;background:#fff}
.result{margin-top:16px}
.stat{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.stat span{background:var(--bg2);border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:12.5px;color:var(--muted)}
.stat b{color:var(--pink2)}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.actions .btn{margin-top:0}
.legend{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.li{display:flex;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:7px 10px;font-size:12.5px}
.sw{width:20px;height:20px;border-radius:6px;border:1px solid rgba(0,0,0,.12);flex-shrink:0}
.li b{color:var(--text);font-weight:700}
.li .sym{color:var(--dim);font-family:ui-monospace,Consolas,monospace;font-size:11px;background:#fff;border:1px solid var(--line);border-radius:4px;padding:0 4px}
.li .cnt{margin-left:auto;color:var(--muted)}
.steps{padding-left:20px}
.steps li{margin:8px 0;font-size:14.5px}
.steps b{color:var(--pink2)}
.tip{color:var(--muted);font-size:13px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-top:12px}
.tip code{background:#fff;border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--pink2)}
footer{border-top:1px solid var(--line);margin-top:36px;padding:22px 0 30px}
footer .wrap{display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center}
footer a{color:var(--muted);font-size:12.5px;margin:0 8px}
footer span{color:var(--dim);font-size:11.5px}
.hidden{display:none!important}
