:root{--orange:#f97316;--orange-50:#fff7ed;--orange-100:#ffedd5;--bg:#fafaf9;--surface:#fff;--border:#e7e5e4;--text:#1c1917;--muted:#78716c;--green:#16a34a;--red:#dc2626;--blue:#2563eb;--side:220px;--radius:10px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px}button,input,select{font:inherit}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side);background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column}.brand{height:72px;padding:20px 18px;border-bottom:1px solid var(--border);font-size:18px;font-weight:700;color:#c2410c}.brand span{margin-left:7px}.sidebar nav{padding:12px 8px}.sidebar nav a{display:block;padding:10px 12px;margin:2px 0;border-radius:8px;text-decoration:none;color:var(--muted)}.sidebar nav a:hover{background:#f5f5f4;color:var(--text)}.sidebar nav a.active{background:var(--orange-50);color:#c2410c;font-weight:600}.side-status{margin-top:auto;padding:18px;color:var(--muted);font-size:12px;border-top:1px solid var(--border)}.side-status i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);margin-right:8px;box-shadow:0 0 0 3px #dcfce7}.content{margin-left:var(--side);padding:32px;width:calc(100% - var(--side));max-width:1600px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-header h1{margin:0 0 5px;font-size:24px}.page-header p,.panel-title p{margin:0;color:var(--muted)}.btn{background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 14px;cursor:pointer;box-shadow:0 1px 2px #0000000d}.btn:hover{border-color:#fdba74;background:var(--orange-50)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stats article{background:#fff;border:1px solid var(--border);border-radius:10px;padding:17px 18px;box-shadow:0 1px 2px #0000000d;position:relative;overflow:hidden}.stats article:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--orange)}.stats article.green:before{background:var(--green)}.stats article.red:before{background:var(--red)}.stats article.blue:before{background:var(--blue)}.stats span{display:block;color:var(--muted);font-size:12px}.stats b{display:block;margin-top:5px;font-size:24px}.panel{background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 1px 3px #0000000d;margin-bottom:18px}.filter-panel{padding:18px}.filter-grid{display:grid;grid-template-columns:150px 1fr 1.2fr 1fr 130px minmax(220px,1.6fr);gap:12px}.filter-grid label{display:grid;gap:6px}.filter-grid label>span{font-size:12px;color:#57534e;font-weight:600}.filter-grid select,.filter-grid input{height:38px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:0 10px;color:var(--text);min-width:0;outline:0}.filter-grid select:focus,.filter-grid input:focus{border-color:#fb923c;box-shadow:0 0 0 3px #ffedd5}.filter-footer{display:flex;justify-content:space-between;align-items:center;margin-top:12px;color:var(--muted);font-size:12px}.facet-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:13px}.facet-chip{border:1px solid var(--orange-100);background:var(--orange-50);color:#9a3412;border-radius:999px;padding:5px 9px;cursor:pointer}.facet-chip b{margin-left:4px}.link-btn{background:none;border:0;color:#c2410c;cursor:pointer}.panel-title{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--border)}.panel-title h2{margin:0 0 4px;font-size:16px}.panel-title p,#message{font-size:12px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:900px}th,td{text-align:left;padding:13px 14px;border-bottom:1px solid #f0efee;vertical-align:middle}th{font-size:11px;color:var(--muted);font-weight:600;background:#fafaf9}td{font-size:13px}td b{font-weight:600}td small,td code{display:block;color:var(--muted);margin-top:4px;font-size:11px}td code{font-family:Consolas,monospace;max-width:190px;overflow:hidden;text-overflow:ellipsis}.route-tag{display:inline-block;background:var(--orange-50);color:#c2410c;border:1px solid var(--orange-100);border-radius:6px;padding:2px 7px;font-weight:600}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.badge.success{color:#15803d;background:#dcfce7}.badge.failed{color:#b91c1c;background:#fee2e2}.badge.running{color:#a16207;background:#fef3c7}.log-row{cursor:pointer}.log-row:hover,.log-row.open{background:#fffaf5}.expand{border:0;background:none;color:#a8a29e;font-size:18px;cursor:pointer;transition:.15s}.log-row.open .expand{transform:rotate(180deg);color:var(--orange)}.detail-row{display:none}.detail-row.open{display:table-row}.detail-row>td{padding:0;background:#fafaf9;max-width:0}.detail-card{margin:0 14px 16px;padding:20px;border:1px solid var(--border);border-radius:10px;background:#fff;box-shadow:0 1px 3px #0000000d;min-width:0;overflow:hidden}.detail-top{display:flex;justify-content:space-between;align-items:start}.detail-top h3{margin:0 0 4px;font-size:15px}.detail-top p{margin:0;color:var(--muted);font:11px Consolas,monospace}.detail-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:18px 0}.detail-grid>div{padding:10px;background:#fafaf9;border-radius:8px}.detail-grid span{display:block;font-size:11px;color:var(--muted)}.detail-grid b{display:block;font-size:12px;margin-top:4px;word-break:break-word}.timeline{list-style:none;padding:2px 0 0;margin:0}.timeline li{display:grid;grid-template-columns:18px 1fr;gap:10px;position:relative;padding-bottom:15px}.timeline li:before{content:"";position:absolute;left:5px;top:11px;bottom:-2px;width:1px;background:#e7e5e4}.timeline li:last-child:before{display:none}.timeline i{width:11px;height:11px;border:3px solid #86efac;background:#16a34a;border-radius:50%;margin-top:3px;z-index:1}.timeline li.failed i{background:#dc2626;border-color:#fecaca}.timeline li.running i{background:#d97706;border-color:#fde68a}.timeline li.muted i{background:#a8a29e;border-color:#e7e5e4}.event-head{display:flex;justify-content:space-between;gap:16px}.event-head b{font-size:13px}.event-head span,.timeline small{color:var(--muted);font-size:11px}.raw{margin-top:4px;border-top:1px solid var(--border);padding-top:12px}.raw summary{cursor:pointer;color:#c2410c;font-weight:600}.raw .prompt{margin-top:12px}.raw .prompt p{white-space:pre-wrap;color:#57534e}.raw pre{max-height:360px;overflow:auto;background:#1c1917;color:#e7e5e4;border-radius:8px;padding:14px;font:11px/1.5 Consolas,monospace;white-space:pre-wrap;word-break:break-word}.empty{text-align:center;color:var(--muted);padding:54px!important}.shadow-settings{overflow:hidden}.toggle{display:flex;align-items:center;gap:9px;color:var(--muted);cursor:pointer}.toggle input{position:absolute;opacity:0}.toggle i{width:38px;height:22px;border-radius:999px;background:#d6d3d1;position:relative}.toggle i:after{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;left:3px;top:3px;transition:.15s}.toggle input:checked+i{background:var(--orange)}.toggle input:checked+i:after{transform:translateX(16px)}.shadow-form{display:grid;grid-template-columns:repeat(3,minmax(150px,220px)) auto;align-items:end;gap:14px;padding:18px 20px}.shadow-form>label{display:grid;gap:6px}.shadow-form>label>span{font-size:12px;color:#57534e;font-weight:600}.shadow-form label>div{display:flex;height:38px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.shadow-form input{min-width:0;width:100%;border:0;outline:0;padding:0 10px}.shadow-form em{font-style:normal;color:var(--muted);font-size:12px;padding:10px}.shadow-form .save{background:var(--orange);border-color:var(--orange);color:#fff}.shadow-note{margin:0 20px 12px;padding:11px 13px;border-radius:8px;background:var(--orange-50);color:#9a3412;font-size:12px}#message{padding:0 20px 14px;color:var(--muted)}.panel-title select{height:36px;border:1px solid var(--border);border-radius:8px;background:#fff;padding:0 10px}@media(max-width:1150px){.filter-grid{grid-template-columns:repeat(3,1fr)}.detail-grid{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.sidebar{display:none}.content{margin:0;width:100%;padding:18px}.filter-grid{grid-template-columns:1fr 1fr}.stats{grid-template-columns:1fr 1fr}.detail-grid{grid-template-columns:1fr 1fr}.page-header{align-items:flex-start}.page-header p{max-width:250px}}

/* Dashboard-integrated audit and shadow pages */
.ops-page .page-header { margin-bottom: 14px; }
.ops-page .panel { border-radius: 12px; box-shadow: 0 1px 2px rgba(28,25,23,.04); }
.filter-panel { padding: 16px 18px 12px; overflow: visible; }
.audit-filter-toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.audit-filter-toolbar > select,
.audit-filter-toolbar > input { min-height:38px; padding:8px 11px; border:1px solid #d6d3d1; border-radius:8px; background:#fff; color:#292524; }
.audit-filter-toolbar > select { min-width:130px; }
.audit-filter-toolbar .audit-search { flex:1 1 220px; min-width:200px; }
.audit-filter-toolbar > select:focus,
.audit-filter-toolbar > input:focus { outline:2px solid rgba(249,115,22,.18); outline-offset:1px; border-color:#f97316; }
.date-range-picker { position:relative; flex:0 0 auto; }
.date-range-trigger { min-width:176px; min-height:38px; display:flex; align-items:center; gap:9px; padding:8px 11px; border:1px solid #d6d3d1; border-radius:8px; background:#fff; color:#292524; font-weight:600; cursor:pointer; box-shadow:0 1px 2px rgba(28,25,23,.04); }
.date-range-trigger:hover,.date-range-trigger[aria-expanded="true"] { border-color:#fb923c; background:#fffaf5; }
.calendar-mark { width:17px; height:17px; display:grid; place-items:center; border:1px solid #a8a29e; border-radius:4px; color:#c2410c; font-size:9px; }
.date-chevron { margin-left:auto; color:#78716c; }
.date-range-popover { position:absolute; z-index:150; top:calc(100% + 8px); left:0; width:520px; background:#fff; border:1px solid #e7e5e4; border-radius:12px; box-shadow:0 18px 50px rgba(28,25,23,.14),0 2px 8px rgba(28,25,23,.08); overflow:hidden; }
.date-range-popover[hidden] { display:none; }
.date-preset-grid { display:grid; grid-template-columns:1fr 1fr; gap:4px; padding:10px; }
.date-preset-grid button { border:0; border-radius:7px; background:transparent; color:#57534e; padding:8px 10px; text-align:left; font-size:13px; cursor:pointer; }
.date-preset-grid button:hover { background:#f5f5f4; color:#1c1917; }
.date-preset-grid button.active { background:#fff7ed; color:#9a3412; font-weight:600; }
.date-custom-range { display:flex; align-items:flex-end; gap:8px; padding:13px; border-top:1px solid #f0eeec; background:#fafaf9; }
.date-custom-range label { flex:1; display:flex; flex-direction:column; gap:6px; color:#78716c; font-size:12px; font-weight:600; }
.date-custom-range input { width:100%; min-height:36px; border:1px solid #d6d3d1; border-radius:7px; background:#fff; color:#292524; padding:7px 8px; }
.range-arrow { padding-bottom:9px; color:#a8a29e; }
.date-range-actions { display:flex; justify-content:flex-end; gap:8px; padding:10px 13px 13px; background:#fafaf9; }
.date-range-actions .btn { min-height:34px; padding:6px 14px; }
.filter-footer { margin-top:11px; padding-top:11px; border-top:1px solid #f0eeec; }
.facet-chips { margin-top:10px; }
.shadow-settings { padding: 14px 16px; }
.shadow-settings .panel-title { padding: 0 0 12px; margin-bottom: 12px; }
.shadow-settings .shadow-form {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    align-items: end;
}
.shadow-settings .form-group { min-width: 0; margin-bottom: 0; }
.shadow-settings .field-help {
    display: block;
    min-height: 34px;
    margin-top: 6px;
    color: var(--text-muted);
    font-size: 10px;
    line-height: 1.45;
}
.shadow-settings .form-group:not(:has(.field-help))::after {
    content: "";
    display: block;
    min-height: 34px;
    margin-top: 6px;
}
.shadow-settings .form-group > label {
    display: block;
    height: 32px;
    line-height: 16px;
    margin-bottom: 7px;
    color: var(--text-secondary);
    font-size: 12px;
    font-weight: 600;
}
.shadow-settings .form-group input,
.shadow-settings .form-group select {
    display: block;
    width: 100%;
    height: 40px;
    margin: 0;
    padding: 8px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    color: var(--text);
    font-size: 13px;
    line-height: 22px;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.shadow-settings .form-group select {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 38px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    background-image: none;
}
.shadow-select-wrap { position: relative; }
.shadow-select-wrap::after { content: "⌄"; position: absolute; right: 13px; top: 50%; transform: translateY(-56%); color: var(--text-muted); font-size: 16px; line-height: 1; pointer-events: none; }
.shadow-settings .form-group input:focus,
.shadow-settings .form-group select:focus {
    outline: none;
    border-color: var(--orange-400);
    box-shadow: 0 0 0 3px rgba(249, 115, 22, .1);
}
.shadow-unit-input { position: relative; }
.shadow-unit-input input { padding-right: 42px !important; }
.shadow-unit-input span {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-muted);
    pointer-events: none;
}
.shadow-unit-input input[type=number]::-webkit-inner-spin-button,
.shadow-unit-input input[type=number]::-webkit-outer-spin-button { appearance: none; -webkit-appearance: none !important; display: none; margin: 0; }
.shadow-unit-input input[type=number] { -moz-appearance: textfield; }
.shadow-action.btn-primary:disabled { background: var(--gray-100); border-color: var(--border); color: var(--gray-500); opacity: .62; }
.shadow-actions {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 14px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--border);
}
.shadow-action-buttons { display: flex; justify-content: flex-end; gap: 10px; flex: 0 0 auto; }
.shadow-action {
    min-width: 112px;
    height: 40px;
    padding: 0 20px;
    border-radius: var(--radius);
    font-weight: 600;
}
.shadow-stop:not(:disabled) { color: var(--error); border-color: #fecaca; background: #fff; }
.shadow-stop:not(:disabled):hover { background: #fef2f2; border-color: #fca5a5; }
.btn:disabled,.shadow-form input:disabled,.shadow-form select:disabled{opacity:.62;cursor:not-allowed;background:var(--gray-100);color:var(--gray-500);border-color:var(--border)}
#shadow-message{color:var(--text-muted);margin-top:6px}
.shadow-note { margin: 0; color: var(--text-muted); }
.audit-pagination { display:flex; align-items:center; justify-content:flex-end; gap:12px; padding:14px 18px; border-top:1px solid var(--border); color:var(--text-muted); }
.filter-grid input[type="datetime-local"] { min-width: 190px; }
@media(max-width:1000px){.audit-filter-toolbar>select{flex:1 1 150px}.audit-filter-toolbar .audit-search{flex-basis:100%}.shadow-settings .shadow-form{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.shadow-settings .shadow-form{grid-template-columns:1fr}.shadow-actions{align-items:stretch;flex-direction:column}.shadow-action-buttons{width:100%}.shadow-action{flex:1}}
