*{box-sizing:border-box}html,body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:#f6f7fb;color:#151827}body{min-height:100vh}a{color:inherit;text-decoration:none}aside{position:fixed;inset:0 auto 0 0;width:245px;background:#10131c;color:#fff;padding:28px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px}.brand .mark{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:#fff;color:#10131c;font-weight:900}.brand b,.brand span{display:block}.brand span{font-size:12px;opacity:.6;margin-top:2px}nav{margin-top:35px;display:flex;flex-direction:column;gap:5px}nav a{padding:11px 12px;border-radius:9px;color:#d6d8e0;font-size:14px}nav a:hover{background:#1c2130;color:#fff}nav a.disabled{opacity:.42;pointer-events:none}nav small{float:right;font-size:9px;background:#333949;padding:3px 5px;border-radius:5px}.side-user{margin-top:auto;font-size:11px;color:#8d93a5}.side-user span{display:block;word-break:break-all}.side-user a{display:inline-block;margin-top:8px;color:#fff}main{margin-left:245px;padding:38px;max-width:1500px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-head h1,.installer h1,.auth-card h1{margin:0 0 7px;font-size:28px}.page-head p,.installer p,.auth-card p,.muted{margin:0;color:#74798c}.card,.stat,.install-card,.auth-card{background:#fff;border:1px solid #e6e8ef;border-radius:14px;box-shadow:0 3px 14px rgba(20,25,40,.04)}.card{padding:24px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat{padding:20px}.stat span{display:block;color:#74798c;font-size:13px}.stat b{display:block;font-size:30px;margin-top:8px}.stat em{font-style:normal;font-size:10px;color:#999}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #d8dbe5;background:#fff;border-radius:9px;padding:10px 15px;font-weight:700;font-size:13px;cursor:pointer}.btn.primary{background:#151827;color:#fff;border-color:#151827}.btn.full{width:100%}.link{background:none;border:0;cursor:pointer;padding:0}.danger{color:#c73737}.alert{padding:12px 14px;border-radius:9px;margin:0 0 18px;font-size:13px}.alert.error{background:#fff0f0;color:#a62c2c;border:1px solid #ffd0d0}.alert.success{background:#effaf3;color:#247244;border:1px solid #cfeedd}label{display:block;font-size:12px;font-weight:700;margin-bottom:15px}input,select{width:100%;margin-top:7px;padding:11px 12px;border:1px solid #d9dce5;border-radius:8px;background:#fff;font:inherit;color:#151827}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}hr{border:0;border-top:1px solid #eceef3;margin:23px 0}.analysis-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:25px}.analysis-summary div{background:#f7f8fb;padding:13px;border-radius:9px}.analysis-summary span{display:block;color:#7c8192;font-size:11px}.analysis-summary b{display:block;margin-top:5px;font-size:13px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.chips{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0 24px}.chips span{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;background:#f0f2f7;border:1px solid #e1e4ec;padding:6px 8px;border-radius:7px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:left;color:#73788a;font-weight:700;padding:10px;border-bottom:1px solid #e8eaf0}td{padding:12px 10px;border-bottom:1px solid #eef0f4;vertical-align:top}td small{display:block;color:#9297a5;margin-top:5px;max-width:450px;overflow:hidden;text-overflow:ellipsis}.status{background:#eaf8ef;color:#247044;padding:4px 7px;border-radius:999px}.empty{text-align:center;color:#888;padding:35px}.installer,.auth-main{margin:0;min-height:100vh;display:grid;place-items:center;padding:30px}.install-card,.auth-card{width:min(620px,100%);padding:32px}.auth-card{width:min(420px,100%)}.install-card>.brand,.auth-card>.brand{margin-bottom:28px}.steps{display:flex;align-items:center;margin-bottom:28px}.steps span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#e8eaf0;color:#8b90a0;font-size:12px;font-weight:800}.steps span.on{background:#151827;color:#fff}.steps i{height:2px;background:#e8eaf0;flex:1}.requirements{margin:22px 0}.requirements div{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid #eee;font-size:13px}.yes{color:#207044}.no{color:#b32b2b}@media(max-width:850px){aside{position:static;width:auto;height:auto}main{margin:0;padding:20px}.stats,.analysis-summary,.grid2{grid-template-columns:1fr}.side-user{display:none}}
.actions{display:flex;align-items:center;gap:12px;white-space:nowrap}.actions form{margin:0}.narrow{max-width:880px}.check{display:flex;align-items:center;gap:9px;margin-top:27px;font-weight:600}.check input,.mini-check input{width:auto;margin:0}.filterbar{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mapping-table{margin-bottom:22px}.mapping-head,.mapping-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(260px,2fr) 80px 80px;gap:14px;align-items:center}.mapping-head{padding:0 12px 9px;color:#74798c;font-size:11px;font-weight:800;text-transform:uppercase;border-bottom:1px solid #e8eaf0}.mapping-row{padding:12px;border-bottom:1px solid #eef0f4}.mapping-row select{margin:0}.mapping-row small{display:block;color:#9a9eaa;margin-top:3px}.mini-check{display:grid;place-items:center;margin:0}.btn.small{padding:7px 10px;font-size:11px}.button-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.progress-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.progress{height:12px;background:#eceef4;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;background:#151827;transition:width .2s}.sync-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.sync-stats div{background:#f7f8fb;border-radius:9px;padding:14px}.sync-stats span{display:block;color:#777d8f;font-size:11px}.sync-stats b{display:block;font-size:22px;margin-top:4px}.small-stat{font-size:19px!important;margin-top:12px!important}.status-failed{background:#fff0f0;color:#a62c2c}.status-running,.status-preparing{background:#fff7e6;color:#8a5c00}.status-completed{background:#eaf8ef;color:#247044}@media(max-width:850px){.mapping-head{display:none}.mapping-row{grid-template-columns:1fr}.filterbar,.sync-stats{grid-template-columns:1fr}.check{margin-top:0}}
.filter-help{background:#f7f8fb;border:1px solid #e7e9ef;border-radius:10px;padding:14px 16px;margin-bottom:18px}.filter-help p{margin:6px 0 0;color:#686e80;font-size:12px;line-height:1.55}.filter-rules{display:flex;flex-direction:column;gap:9px}.filter-rule{display:grid;grid-template-columns:120px 90px minmax(190px,1.4fr) minmax(170px,1.1fr) minmax(160px,1fr) auto;gap:9px;align-items:end;padding:10px;border:1px solid #eceef3;border-radius:10px;background:#fff}.filter-rule select,.filter-rule input{margin:0}.filter-rule .group-field{margin:0}.group-field span{display:block;font-size:10px;color:#7d8293;margin-bottom:5px}.danger-outline{color:#b83232;border-color:#efcaca}.sync-stats{grid-template-columns:repeat(5,1fr)}
@media(max-width:1100px){.filter-rule{grid-template-columns:1fr 1fr}.filter-rule .btn{align-self:end}.sync-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:850px){.filter-rule{grid-template-columns:1fr}.sync-stats{grid-template-columns:1fr 1fr}}
/* v0.2.4 filter builder */
.selector-card{padding:18px 20px;margin-bottom:18px}.filter-builder{display:grid;gap:20px}.filter-section{background:#fff;border:1px solid #e6e8ef;border-radius:14px;box-shadow:0 3px 14px rgba(20,25,40,.04);padding:22px}.filter-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}.filter-section-head h2{margin:9px 0 5px;font-size:19px}.filter-section-head p{margin:0;color:#74798c;font-size:12px;line-height:1.5}.rule-badge{display:inline-flex;align-items:center;font-size:10px;font-weight:900;letter-spacing:.08em;border-radius:999px;padding:5px 8px}.rule-badge.include{background:#eaf8ef;color:#247044}.rule-badge.exclude{background:#fff0f0;color:#a62c2c}.logic-hint{background:#f7f8fb;border:1px solid #e9ebf1;border-radius:9px;padding:10px 12px;color:#666d80;font-size:11px;margin-bottom:14px}.rule-groups{display:flex;flex-direction:column;gap:14px}.rule-group{border:1px solid #e4e7ef;border-radius:12px;background:#fafbfc;padding:14px}.rule-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}.rule-group-head>div{display:flex;align-items:center;gap:10px}.group-number{display:inline-flex;align-items:center;justify-content:center;background:#151827;color:#fff;border-radius:7px;padding:5px 8px;font-size:10px;font-weight:800}.rule-group-head b{font-size:12px}.text-btn{border:0;background:none;cursor:pointer;font:inherit;font-size:11px;font-weight:700;padding:5px}.condition-list{display:flex;flex-direction:column;gap:8px}.condition-row{display:grid;grid-template-columns:minmax(190px,1.3fr) minmax(170px,1fr) minmax(170px,1fr) 34px;gap:8px;align-items:end;background:#fff;border:1px solid #eceef3;border-radius:10px;padding:10px}.condition-row>div>span{display:block;font-size:10px;color:#7c8294;font-weight:700;margin:0 0 5px}.condition-row select,.condition-row input{margin:0;padding:9px 10px}.condition-value.disabled{opacity:.45}.icon-btn{width:34px;height:36px;border-radius:8px;border:1px solid #ead1d1;background:#fff;color:#b83232;font-size:20px;line-height:1;cursor:pointer}.add-condition{margin-top:9px;border:0;background:none;color:#34394a;font-size:11px;font-weight:800;cursor:pointer;padding:4px 2px}.empty-rule-state{border:1px dashed #d9dce5;border-radius:10px;padding:18px;text-align:center;color:#8a8f9f;font-size:12px}.filter-savebar{position:sticky;bottom:16px;margin-top:18px;background:#151827;color:#fff;border-radius:12px;padding:13px 14px;display:flex;align-items:center;justify-content:space-between;gap:18px;box-shadow:0 10px 30px rgba(15,18,28,.18);z-index:5}.filter-savebar>div b,.filter-savebar>div span{display:block}.filter-savebar>div b{font-size:12px}.filter-savebar>div span{font-size:10px;color:#bfc4d2;margin-top:3px}.filter-savebar .btn.primary{background:#fff;color:#151827;border-color:#fff}.include-section{border-top:3px solid #6db889}.exclude-section{border-top:3px solid #dc8d8d}
/* v0.2.4 sync controls */
.sync-card{max-width:1050px}.progress-meta>div small{display:block;color:#8a8f9d;font-size:10px;margin-top:4px}.sync-actions{margin-top:16px;padding:13px 14px;border:1px solid #e6e8ef;background:#fafbfc;border-radius:10px;display:flex;justify-content:space-between;align-items:center;gap:18px}.sync-actions b,.sync-actions span{display:block}.sync-actions b{font-size:12px}.sync-actions span{font-size:10px;color:#808697;margin-top:3px}.sync-note{margin-top:14px!important;font-size:11px;line-height:1.55}.status-cancelled{background:#f0f1f5;color:#676d7c}.btn:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:1050px){.condition-row{grid-template-columns:1fr 1fr}.condition-row .icon-btn{align-self:end}.filter-section-head,.filter-savebar,.sync-actions{align-items:stretch;flex-direction:column}.filter-section-head .btn,.filter-savebar .btn,.sync-actions .btn{width:100%}}
@media(max-width:700px){.condition-row{grid-template-columns:1fr}.condition-row .icon-btn{width:100%}.rule-group-head{align-items:flex-start;gap:10px;flex-direction:column}}
/* v0.2.5 settings, pagination and scheduler */
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.settings-card{margin:0}.settings-card:first-child{grid-column:1/-1}.settings-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px}.settings-head h2,.scheduler-card h2{margin:5px 0 6px}.settings-head p,.scheduler-card p{margin:0;color:#73798b;font-size:12px;line-height:1.55}.settings-kicker{font-size:9px;font-weight:900;letter-spacing:.12em;color:#858b9b}.switch{margin:0;position:relative;flex:0 0 auto}.switch input{position:absolute;opacity:0;pointer-events:none}.switch span{display:block;width:46px;height:26px;border-radius:999px;background:#dfe2e9;position:relative;cursor:pointer;transition:.2s}.switch span:after{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.2);transition:.2s}.switch input:checked+span{background:#151827}.switch input:checked+span:after{transform:translateX(20px)}.field-checks{border-top:1px solid #eceef3;margin-top:18px;padding-top:16px}.field-checks>b{display:block;font-size:11px;margin-bottom:10px}.field-check{display:flex;align-items:flex-start;gap:10px;padding:9px 0;margin:0;border-bottom:1px solid #f0f1f4;font-weight:400}.field-check input{width:auto;margin:2px 0 0}.field-check span b,.field-check span small{display:block}.field-check span b{font-size:12px}.field-check span small{font:10px ui-monospace,SFMono-Regular,Menlo,monospace;color:#898e9d;margin-top:3px}.settings-status{display:grid;grid-template-columns:110px 1fr;gap:7px 12px;background:#f7f8fb;border-radius:9px;padding:12px;margin-top:16px;font-size:11px}.settings-status span{color:#7d8292}.settings-status b{font-weight:700}.settings-status em{grid-column:1/-1;color:#a62c2c;font-style:normal;margin-top:4px}.settings-save{display:flex;justify-content:flex-end;margin:18px 0}.scheduler-card{margin-top:18px}.scheduler-url{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:14px}.scheduler-url input{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.scheduler-meta{display:flex;gap:9px;margin-top:12px;font-size:11px}.scheduler-meta span{color:#7c8293}.sync-inline{display:flex;align-items:center;gap:7px;margin:0}.sync-inline select{width:72px;margin:0;padding:7px 8px;font-size:11px}.status-interrupted{background:#f0f1f5;color:#646b7a}.run-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.link-filters{margin-bottom:16px}.link-filters form{display:grid;grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(150px,1fr) 90px auto;gap:10px;align-items:end}.link-filters label{margin:0}.link-filters input,.link-filters select{margin-top:5px}.pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:16px}.pagination span{font-size:11px;color:#74798a}.dashboard-note{margin-top:18px!important}.settings-card select{max-width:360px}
@media(max-width:1050px){.settings-grid{grid-template-columns:1fr}.settings-card:first-child{grid-column:auto}.link-filters form{grid-template-columns:1fr 1fr}.run-head{flex-direction:column}.scheduler-url{grid-template-columns:1fr}.scheduler-url .btn{width:100%}}
@media(max-width:700px){.link-filters form{grid-template-columns:1fr}.settings-head{flex-direction:column}.settings-status{grid-template-columns:1fr}.sync-inline{flex-wrap:wrap}}

.scheduler-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.scheduler-health{flex:0 0 auto;padding:7px 10px;border-radius:999px;font-size:10px;font-weight:900}.scheduler-health.active{background:#eaf8ef;color:#247044}.scheduler-health.stale{background:#fff7e7;color:#916018}.scheduler-health.not-configured{background:#fff0f0;color:#a62c2c}.scheduler-warning{margin-top:15px;margin-bottom:0}.scheduler-actions{display:flex;align-items:flex-start;gap:12px;margin-top:14px}.scheduler-actions form{margin:0}.scheduler-actions details{flex:1;border:1px solid #e6e8ef;border-radius:9px;background:#f8f9fb;padding:9px 12px;font-size:11px}.scheduler-actions summary{cursor:pointer;font-weight:800}.scheduler-actions ol{margin:10px 0 2px;padding-left:20px;line-height:1.7}.scheduler-meta{display:grid;grid-template-columns:110px 1fr;align-items:start}.scheduler-meta .mono{white-space:normal;word-break:break-word}.scheduler-meta span{margin-top:2px}@media(max-width:850px){.scheduler-head,.scheduler-actions{flex-direction:column}.scheduler-health{align-self:flex-start}.scheduler-actions details{width:100%}}
/* v0.2.7 internal background worker */
.worker-explain{flex:1;border:1px solid #e6e8ef;border-radius:9px;background:#f8f9fb;padding:10px 12px}.worker-explain b,.worker-explain span{display:block}.worker-explain b{font-size:11px}.worker-explain span{font-size:10px;color:#73798b;line-height:1.55;margin-top:3px}.worker-note{margin-top:15px!important;padding-top:13px;border-top:1px solid #eceef3;font-size:10px!important;line-height:1.55}.worker-error{color:#a62c2c!important}.scheduler-meta b{min-width:0;word-break:break-word}
