:root{--navy: #1b2a4a;--navy-700: #22345a;--navy-900: #14203a;--gold: #c9a962;--gold-strong: #a9873f;--gold-soft: #f6edda;--bg: #f2f4f8;--surface: #ffffff;--border: #e1e5ec;--border-strong: #cfd6e2;--text: #1c2430;--text-soft: #3c4658;--muted: #6f798b;--danger: #b23b32;--danger-bg: #fdecea;--danger-border: #f0c4bf;--success: #1f7a4d;--success-bg: #e8f5ee;--success-border: #bae0cc;--info: #2b5c8a;--info-bg: #eaf2fa;--info-border: #c6dcef;--radius: 12px;--radius-sm: 8px;--shadow: 0 10px 30px rgba(16, 27, 48, .08);--shadow-sm: 0 2px 8px rgba(16, 27, 48, .06);color-scheme:light}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,PingFang SC,Microsoft YaHei,Hiragino Sans GB,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;font-weight:600;letter-spacing:.01em}p{margin:0}a{color:var(--navy-700)}code{font-family:Cascadia Code,Consolas,SFMono-Regular,ui-monospace,monospace;font-size:12px;background:#f4f6f9;border-radius:4px;padding:1px 5px}button{font:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 18px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .05s ease;white-space:nowrap}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--navy);color:#fff}.btn--primary:hover:not(:disabled){background:var(--navy-700)}.btn--gold{background:var(--gold);color:#2a2413;font-weight:600}.btn--gold:hover:not(:disabled){background:#d4b673}.btn--danger{background:#fff;color:var(--danger);border-color:var(--danger-border);font-weight:600}.btn--danger:hover:not(:disabled){background:var(--danger-bg)}.btn--outline{background:#fff;color:var(--navy);border-color:var(--border-strong)}.btn--outline:hover:not(:disabled){border-color:var(--navy)}.btn--ghost{background:transparent;color:#ffffffd9;border-color:#ffffff47}.btn--ghost:hover:not(:disabled){background:#ffffff1a;color:#fff}.btn--sm{padding:6px 12px;font-size:13px}.btn--block{width:100%;padding:11px 18px;font-size:15px;letter-spacing:.15em}.alert{display:flex;flex-direction:column;gap:6px;padding:11px 14px;border-radius:var(--radius-sm);font-size:13px;border:1px solid transparent}.alert strong{font-weight:600}.alert p{margin:0}.alert--error{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.alert--success{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}.alert--info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.alert__hint{color:var(--text-soft)}.alert__details{margin:0;padding-left:18px;color:inherit;opacity:.9}.alert .btn{align-self:flex-start;margin-top:4px}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:13px;font-weight:600;color:var(--text-soft)}.field__label em{font-style:normal;color:var(--danger);font-size:12px;font-weight:500;margin-left:4px}.field__input,.field__textarea{width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:#fff;color:var(--text);font-size:14px;transition:border-color .15s ease,box-shadow .15s ease}.field__textarea{resize:vertical;min-height:96px;line-height:1.6}.field__input:focus,.field__textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px #1b2a4a1f}.field__hint{font-size:12px;color:var(--muted)}.muted{color:var(--muted)}.link{color:var(--navy-700);text-decoration:none;border-bottom:1px solid rgba(34,52,90,.25)}.link:hover{border-bottom-color:var(--navy-700)}.splash{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:var(--navy);color:#fffc}.splash__mark{font-size:34px;font-weight:700;letter-spacing:.12em;color:var(--gold)}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(420px,1fr)}.login-brand{position:relative;overflow:hidden;padding:64px clamp(40px,6vw,96px);display:flex;flex-direction:column;justify-content:center;gap:18px;color:#eef1f7;background:radial-gradient(circle at 85% 12%,rgba(201,169,98,.22),transparent 42%),radial-gradient(circle at 10% 90%,rgba(201,169,98,.12),transparent 46%),linear-gradient(150deg,#16233d,#1b2a4a 55%,#22345a)}.login-brand:after{content:"";position:absolute;inset:auto -140px -180px auto;width:460px;height:460px;border:1px solid rgba(201,169,98,.28);border-radius:50%}.login-brand__mark{display:inline-block;align-self:flex-start;font-size:30px;font-weight:700;letter-spacing:.14em;color:var(--gold);border:1px solid rgba(201,169,98,.55);border-radius:10px;padding:4px 18px}.login-brand h1{font-size:clamp(26px,3vw,38px);line-height:1.25;color:#fff;margin-top:10px}.login-brand__sub{font-size:15px;color:#eef1f7bf;letter-spacing:.04em}.login-brand__points{margin:12px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px;font-size:14px;color:#eef1f7d9;position:relative;z-index:1}.login-brand__points li{display:flex;align-items:baseline;gap:10px}.login-brand__points li:before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:var(--gold);transform:translateY(-2px)}.login-brand__foot{margin-top:28px;font-size:12px;color:#eef1f780;letter-spacing:.08em}.login-panel{display:flex;align-items:center;justify-content:center;padding:40px;background:var(--bg)}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:36px 32px;display:flex;flex-direction:column;gap:16px}.login-card h2{font-size:22px;color:var(--navy)}.login-card__hint{color:var(--muted);font-size:13px;margin-top:-8px}.login-card__foot{text-align:center;font-size:12px;color:var(--muted);margin-top:4px}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;height:60px;padding:0 clamp(16px,3vw,32px);display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--navy);color:#fff;box-shadow:0 2px 12px #101b3040}.app-header__brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{font-size:19px;font-weight:700;letter-spacing:.1em;color:var(--gold)}.brand-divider{width:1px;height:20px;background:#ffffff40}.brand-sub{font-size:14px;color:#ffffffd1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-header__user{display:flex;align-items:center;gap:12px;flex:none}.app-header__name{display:flex;flex-direction:column;line-height:1.25;font-size:13px}.app-header__name small{font-size:11px;color:#ffffff8c;letter-spacing:.04em}.role-chip{font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid rgba(255,255,255,.35);color:#ffffffe6;letter-spacing:.04em}.role-chip--admin{border-color:#c9a962cc;color:var(--gold);background:#c9a9621f}.app-main{width:100%;max-width:1440px;margin:0 auto;padding:28px clamp(16px,3vw,32px) 56px;display:flex;flex-direction:column;gap:20px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-heading h1{font-size:22px;color:var(--navy)}.page-heading p{margin-top:4px;color:var(--muted);font-size:13px}.stat-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:15px 18px 13px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--border-strong)}.stat-card--gold:before{background:var(--gold)}.stat-card--blue:before{background:#3f7cb0}.stat-card--green:before{background:var(--success)}.stat-card--gray:before{background:#8b94a5}.stat-card--danger:before{background:var(--danger)}.stat-card__label{font-size:12.5px;color:var(--muted);letter-spacing:.03em}.stat-card__value{margin-top:2px;font-size:26px;font-weight:600;line-height:1.2;color:var(--navy);font-variant-numeric:tabular-nums}.stat-card--gold .stat-card__value{color:var(--gold-strong)}.stat-card--blue .stat-card__value{color:#2f6491}.stat-card--green .stat-card__value{color:var(--success)}.stat-card--gray .stat-card__value{color:#677184}.stat-card--danger .stat-card__value{color:var(--danger)}.stat-card__hint{font-size:11px;color:var(--muted);margin-top:1px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.panel__toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--border)}.toolbar-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}.trend-title{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.trend-title strong{font-size:14px;color:var(--navy)}.trend-title__sub{font-size:12px;color:var(--muted)}.trend-legend{display:inline-flex;align-items:center;gap:5px}.trend-dot{width:8px;height:8px;border-radius:2px;display:inline-block}.trend-dot--website{background:var(--navy)}.trend-dot--mini{background:var(--gold)}.trend-dot--other{background:var(--border-strong)}.trend-chart{display:flex;align-items:flex-end;gap:6px;height:150px;padding:18px 18px 10px}.trend-bar{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}.trend-bar__track{flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center}.trend-bar__stack{width:100%;max-width:34px;min-height:2px;display:flex;flex-direction:column-reverse;border-radius:4px 4px 0 0;overflow:hidden;background:var(--border)}.trend-bar__stack:hover{outline:2px solid rgba(27,42,74,.15);outline-offset:1px}.trend-bar__seg{display:block;width:100%;min-height:1px}.trend-bar__seg--website{background:var(--navy)}.trend-bar__seg--mini{background:var(--gold)}.trend-bar__seg--other{background:var(--border-strong)}.trend-bar__label{margin-top:6px;font-size:10.5px;color:var(--muted);white-space:nowrap}.trend-bar__value{font-size:10.5px;color:var(--text-soft);min-height:14px;font-variant-numeric:tabular-nums}.audit-action{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;white-space:nowrap}.audit-action--login_success{background:var(--success-bg);color:var(--success)}.audit-action--login_failed{background:var(--danger-bg);color:var(--danger)}.audit-action--export_csv{background:var(--info-bg);color:var(--info)}.trend-empty{padding:28px 18px;text-align:center;color:var(--muted);font-size:13px}.search-box{display:inline-flex;align-items:center;gap:6px}.search-input{width:220px;max-width:100%;padding:7px 11px;font-size:13px;font-family:inherit;color:var(--text);background:#f4f6f9;border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color .15s ease,background-color .15s ease}.search-input:focus{background:var(--surface);border-color:var(--navy);box-shadow:0 0 0 3px #1b2a4a14}.search-input::placeholder{color:var(--muted)}.filter-group{display:inline-flex;flex-wrap:wrap;gap:6px;background:#f4f6f9;border:1px solid var(--border);border-radius:9px;padding:4px}.filter-chip{border:none;background:transparent;color:var(--text-soft);font-size:13px;padding:5px 14px;border-radius:6px;cursor:pointer;transition:background-color .15s ease,color .15s ease}.filter-chip:hover{color:var(--navy);background:#1b2a4a0f}.filter-chip--active{background:var(--navy);color:#fff;font-weight:500}.filter-chip--active:hover{background:var(--navy);color:#fff}.toolbar-meta{display:flex;gap:8px;font-size:12.5px;color:var(--muted)}.toolbar-meta__sep{color:var(--border-strong)}.panel>.alert{margin:14px 18px 0}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:820px}.data-table th,.data-table td{padding:11px 16px;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}.data-table thead th{background:#f8f9fb;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.04em;white-space:nowrap;position:sticky;top:0;z-index:1}.data-row{cursor:pointer;transition:background-color .12s ease}.data-row:hover{background:#f6f8fc}.data-row:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}.cell-name{font-weight:600;color:var(--navy);white-space:nowrap}.cell-time{color:var(--text-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.empty-cell{text-align:center!important;color:var(--muted);padding:42px 16px!important}.data-row--overdue{background:#fffaef}.data-row--overdue:hover{background:#fdf3dd}.data-row--overdue td:first-child{box-shadow:inset 3px 0 0 var(--gold)}.overdue-badge{display:inline-block;font-size:11.5px;font-weight:600;color:#8a5a12;background:var(--gold-soft);border:1px solid #e3cc97;border-radius:999px;padding:1px 9px;letter-spacing:.04em}.source-tag{font-size:12px;color:var(--text-soft);background:#f2f4f8;border:1px solid var(--border);border-radius:5px;padding:1px 8px;white-space:nowrap}.status-badge{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:2px 10px;white-space:nowrap;border:1px solid transparent}.status-badge--submitted{color:#8a5a12;background:var(--gold-soft);border-color:#e8d3a4}.status-badge--contacted{color:#245a86;background:var(--info-bg);border-color:var(--info-border)}.status-badge--resolved{color:var(--success);background:var(--success-bg);border-color:var(--success-border)}.status-badge--invalid{color:#7c3a34;background:#f4eae9;border-color:#e4c9c5}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:13px 18px;border-top:1px solid var(--border)}.pagination__info{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.panel__note{padding:0 18px 14px;font-size:11.5px;color:var(--muted)}.drawer-overlay{position:fixed;inset:0;z-index:40;background:#0c142475;display:flex;justify-content:flex-end;animation:fade-in .16s ease-out}.drawer{width:min(760px,94vw);height:100%;background:var(--surface);display:flex;flex-direction:column;box-shadow:-18px 0 48px #0c142447;animation:slide-in .22s ease-out}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{transform:translate(32px);opacity:.6}to{transform:translate(0);opacity:1}}.drawer__header{flex:none;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 26px 16px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#fbfcfe,#fff)}.drawer__eyebrow{font-size:11.5px;letter-spacing:.14em;color:var(--gold-strong);text-transform:uppercase;margin-bottom:2px}.drawer__header h2{font-size:21px;color:var(--navy)}.drawer__status{display:flex;align-items:center;gap:8px;margin-top:6px}.icon-button{flex:none;width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:#fff;color:var(--muted);font-size:21px;line-height:1;cursor:pointer;transition:color .15s ease,border-color .15s ease}.icon-button:hover{color:var(--navy);border-color:var(--border-strong)}.drawer__body{flex:1;overflow-y:auto;padding:22px 26px 40px;display:flex;flex-direction:column;gap:22px}.detail-section{display:flex;flex-direction:column;gap:12px}.detail-section h3{font-size:14px;color:var(--navy);display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--border)}.detail-section--tech h3{color:var(--muted)}.count-chip{font-size:11px;color:var(--muted);background:#f2f4f8;border:1px solid var(--border);border-radius:999px;padding:0 8px;font-weight:500}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin:0}.detail-field{min-width:0}.detail-field--wide{grid-column:1 / -1}.detail-field dt{font-size:12px;color:var(--muted);margin-bottom:1px}.detail-field dd{margin:0;font-size:14px;color:var(--text);word-break:break-word}.code-wrap{display:inline-block;max-width:100%;overflow-wrap:anywhere}.detail-content{margin:0;font-size:14px;line-height:1.75;color:var(--text);white-space:pre-wrap;word-break:break-word;background:#f8f9fb;border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px}.timeline{list-style:none;margin:0;padding:0 0 0 6px;display:flex;flex-direction:column;gap:16px;position:relative}.timeline:before{content:"";position:absolute;left:12px;top:6px;bottom:6px;width:1px;background:var(--border)}.timeline__item{position:relative;padding-left:24px}.timeline__dot{position:absolute;left:6px;top:7px;width:13px;height:13px;border-radius:50%;background:#fff;border:2px solid var(--gold);z-index:1}.timeline__content{background:#fbfcfe;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;display:flex;flex-direction:column;gap:5px}.timeline__head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.timeline__flow{display:inline-flex;align-items:center;gap:7px}.timeline__arrow{color:var(--muted);font-size:13px}.timeline__time{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.timeline__note{font-size:13.5px;color:var(--text-soft);white-space:pre-wrap;word-break:break-word}.timeline__meta{font-size:12px;color:var(--muted)}.drawer-actions{display:flex;flex-direction:column;gap:12px;border-top:1px dashed var(--border-strong);padding-top:20px}.drawer-actions h3{font-size:14px;color:var(--navy)}.action-row{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:1180px){.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.login-page{grid-template-columns:1fr}.login-brand{padding:40px 28px;gap:12px}.login-brand__points,.login-brand__foot{display:none}.login-panel{padding:28px 20px 48px}}@media(max-width:760px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid{grid-template-columns:1fr}.app-header{height:auto;padding:10px 16px;flex-wrap:wrap}.brand-sub{display:none}.app-main{padding-top:20px}}
