:root{--bg:#f2f4f5;--surface:#fff;--border:#dfe5e7;--text:#263238;--muted:#6b7b83;--primary:#159a8c;--primary-dark:#0f766e;--danger:#e4572e;--danger-dark:#c24124;--red:#d72828;--sidebar:#26343a}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);letter-spacing:0;margin:0;font-family:Arial,Microsoft YaHei,sans-serif;font-size:14px}button,input,select,textarea{font:inherit;letter-spacing:0}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}.login-page{background:#e9eeef;place-items:center;min-height:100vh;padding:20px;display:grid}.login-box{border:1px solid var(--border);background:#fff;border-radius:6px;width:min(400px,100%);padding:28px;box-shadow:0 6px 24px #182b311a}.login-brand{color:#173f43;margin:0 0 4px;font-size:24px}.login-subtitle{color:var(--muted);margin:0 0 24px}.field{align-items:center;gap:10px;min-width:0;display:flex}.field.vertical{gap:6px;display:grid}.field label{color:#465a62;white-space:nowrap;font-weight:600}.input,.select,.textarea{width:100%;color:var(--text);background:#fff;border:1px solid #cfd8dc;border-radius:4px;outline:none;min-width:0;padding:9px 10px}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 2px #159a8c1f}.textarea{resize:vertical;min-height:180px;line-height:1.5}.btn{color:#fff;background:var(--primary);white-space:nowrap;border:0;border-radius:4px;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:8px 14px;display:inline-flex}.btn:hover:not(:disabled){background:var(--primary-dark)}.btn.danger{background:var(--danger)}.btn.danger:hover:not(:disabled){background:var(--danger-dark)}.btn.secondary{color:#37474f;background:#e8edef}.btn.secondary:hover:not(:disabled){background:#dce4e7}.btn.small{min-height:30px;padding:5px 9px;font-size:13px}.btn.icon{width:34px;padding:0}.form-stack{gap:15px;display:grid}.message{color:#0f766e;background:#edf8f6;border:1px solid #b8e3dc;border-radius:4px;margin:12px 0 0;padding:9px 11px}.message.error{color:#b7381d;background:#fff0ec;border-color:#f2c1b4}.app-shell{grid-template-columns:210px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--sidebar);color:#dfe8ea;height:100vh;padding:18px 10px;position:sticky;top:0;overflow-y:auto}.brand{color:#fff;border-bottom:1px solid #ffffff1f;margin-bottom:10px;padding:7px 11px 19px;font-size:20px;font-weight:700}.brand small{color:#9fb0b5;margin-top:5px;font-size:12px;font-weight:400;display:block}.nav-button{width:100%;color:inherit;text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:10px;margin:2px 0;padding:10px 11px;display:flex}.nav-button:hover,.nav-button.active{color:#fff;background:#159a8cbf}.main{min-width:0}.topbar{border-bottom:1px solid var(--border);z-index:5;background:#fff;justify-content:space-between;align-items:center;height:58px;padding:0 22px;display:flex;position:sticky;top:0}.topbar h1{margin:0;font-size:18px}.content{max-width:1600px;margin:0 auto;padding:20px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:6px;margin-bottom:18px;padding:18px;box-shadow:0 2px 8px #21373e0d}.panel-title{margin:0 0 16px;font-size:16px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar .input,.toolbar .select{width:auto;min-width:140px}.statistics-filters{grid-template-columns:130px minmax(150px,1fr) minmax(160px,1fr) 150px 150px auto;align-items:end;gap:10px;display:grid}.issue-toolbar{grid-template-columns:150px minmax(180px,1fr) auto auto auto;align-items:end;gap:12px;display:grid}.stock{color:var(--red);margin:16px 0 0;font-size:22px;font-weight:700}.code-output{white-space:pre-wrap;overflow-wrap:anywhere;background:#f8fafb;border:1px solid #e1e7e9;min-height:170px;max-height:55vh;margin:0;padding:12px;font-family:Consolas,monospace;line-height:1.75;overflow:auto}.stats{grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px;display:grid}.stat{border-left:4px solid var(--primary);background:#f8faf9;padding:13px 15px}.stat span{color:var(--muted);margin-bottom:8px;display:block}.stat strong{color:#173f43;font-size:25px}.table-wrap{margin-top:14px;overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:780px}.table th,.table td{text-align:left;vertical-align:middle;border-bottom:1px solid #e4e9eb;padding:9px 8px}.table th{color:#455a64;white-space:nowrap;background:#f4f7f7}.table tr:hover td{background:#fafcfc}.badge{color:#08766b;background:#ddf4f0;border-radius:3px;padding:3px 7px;font-size:12px;display:inline-block}.badge.off{color:#a13b26;background:#fde8e2}.actions{align-items:center;gap:6px;display:flex}.pagination{color:var(--muted);justify-content:flex-end;align-items:center;gap:10px;margin-top:14px;display:flex}.modal-backdrop{z-index:20;background:#121f2473;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:6px;width:min(480px,100%);max-height:90vh;padding:20px;overflow:auto;box-shadow:0 18px 50px #0003}.modal h2{margin:0 0 18px;font-size:18px}.modal-actions{justify-content:flex-end;gap:9px;margin-top:18px;display:flex}.mobile-nav{display:none}@media (max-width:1100px){.stats,.issue-toolbar,.statistics-filters{grid-template-columns:repeat(3,1fr)}}@media (max-width:720px){.app-shell{display:block}.sidebar{display:none}.topbar{height:auto;min-height:56px;padding:10px 14px}.mobile-nav{width:min(155px,45vw);display:block}.content{padding:12px}.panel{padding:14px}.stats{grid-template-columns:repeat(2,1fr)}.issue-toolbar,.statistics-filters{grid-template-columns:1fr}.issue-toolbar .btn,.toolbar>.input,.toolbar>.select{width:100%}}
