:root{--accent: #111;--line: #111;--bg: #fff;--panel: #fafafa;--muted: #888;--err: #b00020;--ok: #1f7a3a;--soft: #e6e6e6}*{box-sizing:border-box;margin:0;padding:0}html,body{background:#f4f4f4;font-family:SimHei,Microsoft YaHei,PingFang SC,Noto Sans CJK SC,sans-serif;color:#111;line-height:1.55}.math,.formula-area,.preview-box{font-family:SimSun,STSong,"Noto Serif CJK SC",serif}.container{max-width:1280px;margin:0 auto;padding:16px 20px 40px}header{padding:2px 0 12px;border-bottom:2px solid var(--accent);margin-bottom:20px}header h1{font-size:22px;letter-spacing:1px;margin-bottom:4px}header p{font-size:12.5px;color:var(--muted)}.layout{display:grid;grid-template-columns:380px 1fr;gap:20px;align-items:start}@media (max-width: 900px){.layout{grid-template-columns:1fr}}.card{background:#fff;border:1px solid #d8d8d8;border-radius:6px;padding:14px 16px 16px;margin-bottom:14px}.card h2{font-size:15px;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--soft)}.form-row{display:flex;gap:12px}.form-item{flex:1;margin-bottom:10px}.form-item-half{max-width:calc(50% - 6px)}.form-item label{display:block;font-size:12.5px;margin-bottom:4px;color:#333}.form-item input{width:100%;border:1px solid #c8c8c8;border-radius:4px;padding:8px 10px;font-size:13.5px;font-family:Consolas,SF Mono,monospace;background:#fff;outline:none;transition:border-color .15s}.form-item input:focus{border-color:#333}.kbd-symbols{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}.kbd-symbols button{min-width:34px;padding:4px 8px;border:1px solid #ccc;background:#fafafa;border-radius:4px;font-size:13px;cursor:pointer;font-family:inherit;transition:all .1s}.kbd-symbols button:hover{background:#eee;border-color:#999}.kbd-symbols button:active{background:#ddd}.curve-item{border:1px solid #ddd;border-radius:5px;padding:8px 10px;margin-bottom:8px;background:var(--panel)}.curve-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.curve-name{font-size:13px;font-weight:700;letter-spacing:.5px}.curve-remove{border:1px solid #ccc;background:#fff;color:#666;border-radius:4px;font-size:12px;padding:1px 8px;cursor:pointer}.curve-remove:hover{color:var(--err);border-color:#e8a0a0}.curve-item input{width:100%;border:1px solid #c8c8c8;border-radius:4px;padding:7px 9px;font-size:13px;font-family:Consolas,monospace;outline:none}.curve-latex{margin-top:4px;font-size:12px;color:#555;min-height:18px}label.radio,label.check{display:flex;align-items:flex-start;gap:6px;padding:6px 4px;font-size:13px;cursor:pointer;border-radius:4px}label.radio:hover,label.check:hover{background:#f6f6f6}label.radio input,label.check input{margin-top:3px}label.radio b{display:block;font-size:13px}label.radio span{display:block;color:var(--muted);font-size:11.5px;font-weight:400}.btn{border:1px solid #ccc;background:#fafafa;border-radius:4px;padding:6px 12px;font-size:13px;cursor:pointer;transition:all .15s;font-family:inherit}.btn:hover{background:#eee}.btn-sub{color:#333}.msg{font-size:12.5px;padding:6px 10px;border-radius:4px;border:1px solid transparent}.msg.err{background:#fdecee;border-color:#eeb9be;color:var(--err)}.msg.ok{background:#ecf8ef;border-color:#b5d9be;color:var(--ok)}.msg.info{background:#eef4ff;border-color:#b9cdf0;color:#1f4a8a}.result-card h2{font-size:15px;margin-bottom:10px}.btn-download{margin-left:10px;border:1px solid #ccc;padding:4px 12px;border-radius:4px;font-size:12.5px;color:#333;text-decoration:none;transition:all .15s}.btn-download:hover{background:#f2f2f2;border-color:#999}#result-area{border:1px solid #e6e6e6;background:#fff;padding:12px;min-height:480px;display:flex;align-items:center;justify-content:center;border-radius:5px;overflow-x:auto}#result-area svg{width:100%;height:auto;max-width:900px}.placeholder{color:var(--muted);font-size:13px;text-align:center}.formula-area{padding:14px 18px;border:1px solid #e6e6e6;background:var(--panel);border-radius:5px;text-align:center;font-size:17px}.num-result{text-align:center;margin-top:14px;font-size:14px;color:#222;font-family:Consolas,Source Code Pro,monospace}.num-result .big{font-size:19px;font-weight:700;color:#111;margin-right:8px}.preview-box{margin-top:10px;padding:8px 10px;background:#fdfdfd;border:1px dashed #ccc;border-radius:4px;min-height:40px;font-size:12.5px;color:#333}footer{margin-top:20px;text-align:center;font-size:11px;color:#aaa}#login-root{min-height:100vh;background:#f0f0f0;display:flex;align-items:center;justify-content:center;font-family:SimHei,Microsoft YaHei,sans-serif}.login-box{width:360px;background:#fff;border:1px solid #c8c8c8;border-radius:8px;padding:36px 32px 28px;box-shadow:0 2px 12px #00000014}.login-box h1{font-size:18px;text-align:center;margin-bottom:6px;letter-spacing:1px}.login-box .subtitle{font-size:12px;text-align:center;color:#888;margin-bottom:24px}.login-box .field{margin-bottom:16px}.login-box .field label{display:block;font-size:13px;color:#333;margin-bottom:6px;font-weight:700}.login-box .field input{width:100%;border:1px solid #c8c8c8;border-radius:4px;padding:10px 12px;font-size:14px;font-family:Consolas,monospace;background:#fff;color:#111;outline:none}.login-box .field input:focus{border-color:#555}.btn-login{width:100%;padding:11px;background:#111;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:700;letter-spacing:2px;cursor:pointer}.btn-login:disabled{background:#888;cursor:not-allowed}.login-box .msg{margin-top:14px;display:none;font-size:13px;padding:8px 12px;border-radius:4px;text-align:center}.login-box .msg.err{display:block;background:#fdecee;border:1px solid #eeb9be;color:#b00020}.login-box .msg.ok{display:block;background:#ecf8ef;border:1px solid #b5d9be;color:#1f7a3a}.login-box .footer{margin-top:20px;text-align:center;font-size:11px;color:#aaa}.loading{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-3px;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}
