:root{--bg:#f3f4f6;--panel:#fff;--ink:#111827;--muted:#6b7280;--line:#e5e7eb;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-soft:#eff6ff;--accent-line:#bfdbfe;--red:#dc2626;--red-soft:#fef2f2;--red-line:#fecaca;--red-ink:#991b1b;--green:#16a34a;--green-soft:#f0fdf4;--green-line:#bbf7d0;--green-ink:#166534}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}.topnav{border-bottom:1px solid var(--line);background:#fff}.topnav-inner{align-items:baseline;gap:12px;max-width:800px;margin:0 auto;padding:14px 20px;display:flex}.topnav-title{color:var(--ink);font-size:17px;font-weight:700}.topnav-sub{color:var(--muted);font-size:12px}.app{flex-direction:column;min-height:100vh;display:flex}.main{flex:1;justify-content:center;align-items:flex-start;width:100%;padding:28px 16px 56px;display:flex}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(800px,100%);overflow:hidden;box-shadow:0 1px 3px #1018280f,0 8px 24px #1018280f}.bar{background:#fafafa;border-bottom:1px solid #e0e4e8;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.bar b{color:var(--ink);font-size:17px;font-weight:700}.nick{color:#fff;background:var(--accent);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.content{padding:24px}.lead{color:var(--muted);margin:0 0 20px;font-size:14px;line-height:1.65}.section{border:1px solid var(--line);background:#f9fafb;border-radius:12px;margin:12px 0;padding:16px}.section h3{color:var(--ink);margin:0 0 12px;font-size:15px;font-weight:600}label{color:#374151;margin:10px 0 5px;font-size:13px;font-weight:600;display:block}input,textarea,select{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid #d1d5db;border-radius:10px;padding:10px 12px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}input:disabled,textarea:disabled{color:var(--muted);background:#f3f4f6}textarea{resize:vertical;min-height:82px;line-height:1.55}.lockval{border:1px solid var(--line);color:var(--ink);word-break:break-word;background:#f3f4f6;border-radius:10px;padding:11px 12px;font-size:14px;line-height:1.6}.row{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.two{grid-template-columns:1fr 1fr;gap:12px;display:grid}.btns{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.btns.compact{margin-top:12px}.btn{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:10px;justify-content:center;align-items:center;min-height:44px;padding:11px 20px;font-size:15px;font-weight:600;text-decoration:none;transition:background .15s;display:inline-flex}.btn:hover{background:var(--accent-hover)}.btn.secondary{color:#374151;background:#fff;border:1px solid #d1d5db}.btn.secondary:hover{background:#f9fafb}.btn.warn{background:var(--red)}.btn.warn:hover{background:#b91c1c}.btn:disabled{opacity:.5;cursor:not-allowed}.item{border:1px solid var(--line);background:#fff;border-radius:12px;margin:12px 0;padding:16px;box-shadow:0 1px 2px #1018280a}.itemhead{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.idx{color:var(--accent);font-size:14px;font-weight:700}.suggest{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:10px;margin:12px 0 0;padding:12px 14px}.suggest b{color:var(--accent);margin-bottom:4px;font-size:13px;display:block}.suggest p{margin:0 0 10px;font-size:14px;line-height:1.6}.trace{border:1px solid var(--line);border-left:4px solid var(--accent);background:#fff;border-radius:10px;margin:12px 0;padding:14px}.trace b{font-size:14px}.tracebox{border:1px solid var(--line);background:#f9fafb;border-radius:8px;margin-top:8px;padding:12px;font-size:13px;line-height:1.6}.notice{background:var(--accent-soft);border:1px solid var(--accent-line);color:#1e40af;border-radius:10px;margin:12px 0;padding:12px 14px;font-size:13px;line-height:1.6}.err{background:var(--red-soft);border:1px solid var(--red-line);color:var(--red-ink);border-radius:10px;margin:12px 0;padding:12px 14px;font-size:13px;line-height:1.6}.ok{background:var(--green-soft);border:1px solid var(--green-line);color:var(--green-ink);border-radius:10px;margin:12px 0;padding:12px 14px;font-size:13px;line-height:1.6}.scale{border-bottom:1px solid #f3f4f6;grid-template-columns:minmax(240px,1fr) minmax(270px,300px);align-items:center;gap:12px;margin:7px 0;padding:10px 0;display:grid}.scale-text{font-size:13px;line-height:1.5}.scale-options{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.scale label{text-align:center;color:var(--ink);margin:0;font-weight:500}.scale label input{width:auto;accent-color:var(--accent);margin:0 auto 4px;display:block}.scale label span{font-size:13px;line-height:1.2;display:block}.tiny{color:var(--muted);font-size:11px;line-height:1.55}.hint{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.5}.small{color:var(--muted);font-size:12px;line-height:1.6}.dd{position:relative}.dd-btn{width:100%;font:inherit;color:var(--ink);cursor:pointer;text-align:left;background:#fff;border:1px solid #d1d5db;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;transition:border-color .15s,box-shadow .15s;display:flex}.dd-btn:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb1f}.dd-btn:disabled{color:var(--muted);cursor:not-allowed;background:#f3f4f6}.dd-ph{color:#9ca3af}.dd-arrow{color:var(--muted);font-size:12px}.dd-menu{border:1px solid var(--line);z-index:30;background:#fff;border-radius:10px;max-height:260px;margin:0;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 8px 24px #1018281f}.dd-menu.up{top:auto;bottom:calc(100% + 4px)}.dd-opt{text-align:left;width:100%;font:inherit;cursor:pointer;color:var(--ink);background:0 0;border:0;border-radius:8px;padding:9px 12px;display:block}.dd-opt:hover{background:var(--accent-soft)}.dd-opt.on{color:var(--accent);font-weight:600}.spin{border:2px solid #bfdbfe;border-top-color:var(--accent);vertical-align:-2px;border-radius:50%;width:14px;height:14px;margin-right:8px;animation:.8s linear infinite sp;display:inline-block}@keyframes sp{to{transform:rotate(360deg)}}.genloading{background:var(--accent-soft);border:1px solid var(--accent-line);color:#1e40af;border-radius:10px;align-items:center;margin:12px 0;padding:12px 14px;font-size:14px;display:flex}#devPanel{z-index:999;color:#d8e3e8;border-top:2px solid var(--accent);background:#10191e;flex-direction:column;max-height:42vh;font-size:12px;display:flex;position:fixed;bottom:0;left:0;right:0}.devhead{border-bottom:1px solid #ffffff1f;align-items:center;gap:10px;padding:8px 14px;display:flex}.devhead b{color:#93c5fd;font-size:13px}.devcount{color:#7f929a}.devspacer{flex:1}.devfilters{gap:6px;display:flex}.devchip{color:#b8c6cc;cursor:pointer;background:0 0;border:1px solid #2a3a42;border-radius:999px;padding:3px 10px;font-size:11px}.devchip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.devlog{flex:1;padding:6px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow-y:auto}.devrow{border-bottom:1px solid #ffffff0d;gap:10px;padding:3px 0;line-height:1.5;display:flex}.devrow.error .devm{color:#f0a3a3}.devrow.api .devm{color:#d9b48f}.devt{color:#5f747e;flex:none}.devk{flex:0 0 34px;font-weight:700}.devm{word-break:break-all;white-space:pre-wrap}#devPanel.collapsed .devlog{display:none}#devPanel.collapsed{max-height:none}.admin{background:var(--bg);min-height:100vh}.admin .wrap{max-width:1120px;margin:0 auto;padding:28px}.admin h1{color:var(--ink);margin:0 0 6px;font-size:24px}.admin .lead{color:var(--muted)}.admin .bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin:18px 0;display:flex}.admin .cards{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.admin .card{border:1px solid var(--line);background:#fff;border-radius:12px;width:auto;padding:16px;box-shadow:0 1px 2px #1018280a}.admin .num{color:var(--accent);font-size:30px;font-weight:700}.admin table{border-collapse:collapse;border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;overflow:hidden}.admin th,.admin td{text-align:left;border-bottom:1px solid #f3f4f6;padding:10px 12px;font-size:13px}.admin th{background:#f9fafb;font-weight:600}.admin .condition-table{margin:16px 0}.admin .admin-check{align-items:center;gap:4px;margin:0 10px 0 0;font-size:12px;font-weight:500;display:inline-flex}.admin .admin-check input{width:auto;accent-color:var(--accent);margin:0}@media (width<=720px){body{background:#fff}.topnav{display:none}.topnav-inner{padding:12px 16px}.main{padding:0;display:block}.card{width:100%;min-height:100vh;box-shadow:none;border:0;border-radius:0}.bar{padding:14px 16px}.content{padding:20px 16px calc(32px + env(safe-area-inset-bottom))}.lead{font-size:13px}.row,.two{grid-template-columns:1fr}.item{border-radius:12px;padding:14px}.btns{justify-content:stretch}.btns .btn{flex:1}.scale{margin:0;padding:14px 0;display:block}.scale-text{margin-bottom:10px;font-size:15px;line-height:1.55;display:block}.scale-options{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.scale label{font-size:12px}.scale label input{margin-bottom:5px}.scale label span{font-size:12px}.admin .wrap{padding:16px}.admin .cards{grid-template-columns:repeat(2,1fr)}#devPanel{max-height:60vh}.devhead{flex-wrap:wrap;row-gap:8px;padding:10px 12px}.devfilters{width:100%}.devhead .btn{flex:auto;min-height:38px;padding:8px 10px;font-size:13px}.devspacer{display:none}.devlog{max-height:40vh}}
