/*
 * File / 文件：public/assets/app.css
 * EN: Primary application component and visual stylesheet.
 * 中文：该文件是应用主要组件与视觉样式表。
 * Maintenance / 维护：Do not create competing breakpoint owners for the same component.
 * 维护要求：同一组件不要建立互相竞争的断点规则。
 */
*{box-sizing:border-box}:root{--bg:#f5f7fb;--panel:#fff;--text:#172033;--muted:#667085;--line:#e4e7ec;--blue:#2563eb;--green:#15803d;--red:#b91c1c}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}a{color:var(--blue);text-decoration:none}.topbar{height:64px;background:#101828;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 28px}.brand{color:#fff;font-weight:800;font-size:18px}.brand span{color:#93c5fd}.nav{display:flex;gap:16px;align-items:center;font-size:13px}.nav a,.nav button{color:#dbeafe;background:transparent;border:0}.nav form{display:inline}.container{max-width:1320px;margin:auto;padding:34px 24px 70px}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:22px}h1{margin:3px 0 8px;font-size:30px}h2{font-size:17px;margin:0 0 16px}.eyebrow{color:var(--blue);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.panel{background:#fff;border:1px solid var(--line);border-radius:4px;padding:22px;margin-bottom:20px;box-shadow:0 10px 24px rgba(15,23,42,.05)}.panel-head{display:flex;justify-content:space-between;align-items:center}.two{display:grid;grid-template-columns:1fr 1fr;gap:20px}.btn,.tiny{border:0;border-radius:4px;padding:10px 14px;background:#e5e7eb;font-weight:700;cursor:pointer}.btn.primary{background:var(--blue);color:#fff}.btn.success,.okbtn{background:#dcfce7;color:#166534}.full{width:100%;margin-top:18px}.btn:disabled{opacity:.45;cursor:not-allowed}.tiny{padding:6px 8px;font-size:11px}.tiny.active{background:#111827;color:white}.badbtn{background:#fee2e2;color:#991b1b}label{display:block;font-size:12px;font-weight:700;margin:14px 0 6px}input,select,textarea{width:100%;border:1px solid #cbd5e1;border-radius:4px;padding:10px 11px;font:inherit}.filters{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.filters label{margin:0}.filters input,.filters select{width:auto}.notice{padding:11px 13px;border-radius:4px;margin-bottom:16px}.notice.ok,.banner.ok{background:#dcfce7;color:#166534}.notice.bad,.banner.bad{background:#fee2e2;color:#991b1b}.auth{min-height:70vh;display:grid;place-items:center}.auth-card{width:min(430px,100%)}.steps{margin-top:18px;display:grid;gap:8px}.steps div{background:#f8fafc;padding:9px;border-radius:4px;color:var(--muted);font-size:12px}.steps .done:before{content:"✓ ";color:var(--green)}.steps .failed:before{content:"✕ ";color:var(--red)}.banner{padding:12px;border-radius:4px;font-weight:800;margin-bottom:18px}.details{display:grid;grid-template-columns:110px 1fr;gap:10px 14px}.details dt{color:var(--muted);font-size:12px;font-weight:700}.details dd{margin:0;font-size:13px;word-break:break-word}.metrics,.sales-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:20px}.metric,.sales-card{background:#fff;border:1px solid var(--line);border-radius:4px;padding:17px}.metric strong{font-size:26px;display:block}.metric span,.metric small,.sales-card span{font-size:11px;color:var(--muted)}.sales-card{display:flex;flex-direction:column;gap:5px;color:var(--text)}.sales-card em{font-style:normal;color:var(--blue);font-size:11px}.post-list{display:grid;gap:10px}.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.post{border:1px solid var(--line);border-radius:4px;padding:12px;display:grid;grid-template-columns:95px 1fr auto auto;gap:12px;align-items:center}.post-grid .post{grid-template-columns:1fr}.post-main{display:grid;gap:4px;min-width:0}.post-main a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.post-main small{color:var(--muted)}.platform,.status{display:inline-flex;width:max-content;border-radius:4px;padding:5px 8px;font-size:10px;font-weight:800}.platform.facebook{background:#dbeafe;color:#1d4ed8}.platform.offerup{background:#ffedd5;color:#c2410c}.platform.craigslist{background:#f3e8ff;color:#7e22ce}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left;font-size:12px}th{background:#f8fafc;color:var(--muted)}td small{display:block;color:var(--muted)}.request,.mini{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border-top:1px solid var(--line);padding:10px 0}.request>div{display:grid}.request span{font-size:12px;color:var(--muted)}.mini{grid-template-columns:auto 1fr auto}.mini>div{display:grid}.mini small{color:var(--muted)}.radios{display:flex;gap:16px}.radios label{display:flex;gap:6px;align-items:center}.radios input{width:auto}.empty{text-align:center;padding:24px;border:1px dashed #cbd5e1;border-radius:4px;color:var(--muted)}.hidden{display:none!important}@media(max-width:850px){.two{grid-template-columns:1fr}.post{grid-template-columns:1fr}.page-head{flex-direction:column}.nav{gap:8px;flex-wrap:wrap;justify-content:flex-end}}@media(max-width:560px){.container{padding:24px 14px}.details{grid-template-columns:1fr}.topbar{padding:0 14px}}


/* Sales dashboard compact grid */
.filter-panel{
    padding:14px 16px;
    margin-bottom:14px;
}
.compact-metrics{
    grid-template-columns:repeat(auto-fill,minmax(170px,210px));
    justify-content:start;
    gap:10px;
    margin-bottom:14px;
}
.compact-metric{
    padding:12px 14px;
    min-height:94px;
}
.compact-metric strong{
    font-size:22px;
    line-height:1.1;
    margin:5px 0 8px;
}
.metric-platforms{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    font-size:10px;
    color:var(--muted);
}
.metric-platforms span{
    white-space:nowrap;
}
.metric-platforms b{
    color:var(--text);
}

.posts-panel{
    padding:16px;
}
.posts-panel .panel-head{
    margin-bottom:12px;
}
.posts-panel .panel-head h2{
    margin:0;
}
.post-count{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:22px;
    height:22px;
    margin-left:5px;
    padding:0 6px;
    border-radius:4px;
    background:#eef2f6;
    color:var(--muted);
    font-size:10px;
    vertical-align:middle;
}
.view-switch{
    display:flex;
    gap:4px;
}
.post-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(235px,280px));
    justify-content:start;
    gap:10px;
}
.post-grid .post{
    min-width:0;
    min-height:190px;
    padding:12px;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    background:#fff;
}
.post-top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
}
.post-title{
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
    font-size:13px;
    line-height:1.35;
}
.post-url{
    display:block;
    max-width:100%;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    font-size:10px !important;
}
.post-dates{
    display:grid;
    gap:3px;
    margin-top:3px;
}
.post-dates small{
    display:flex;
    gap:5px;
    font-size:9px;
    line-height:1.35;
}
.post-dates small span{
    min-width:48px;
    color:#98a2b3;
}
.delete-request{
    margin-top:auto;
    padding-top:8px;
    border-top:1px solid var(--line);
    font-size:8px;
}
.delete-request summary{
    cursor:pointer;
    color:var(--muted);
    font-weight:700;
}
.delete-request form{
    display:grid;
    grid-template-columns:1fr auto;
    gap:6px;
    margin-top:8px;
}
.delete-request input{
    min-width:0;
    padding:7px 8px;
    font-size:11px;
}

/* Preserve optional list mode */
.post-list{
    display:grid;
    gap:8px;
}
.post-list .post{
    grid-template-columns:1fr;
}
.post-list .post-top{
    justify-content:flex-start;
}
.post-list .status{
    margin-left:auto;
}

@media (max-width:900px){
    .post-grid{
        grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
    }
}
@media (max-width:560px){
    .compact-metrics{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .post-grid{
        grid-template-columns:1fr;
    }
}

.status.good{background:#dcfce7;color:#166534}
.status.bad{background:#fee2e2;color:#991b1b}

.posts-title{
    display:flex;
    align-items:center;
    gap:6px;
    flex-wrap:wrap;
}
.post-summary{
    display:inline-flex;
    align-items:center;
    min-height:22px;
    padding:3px 7px;
    border-radius:4px;
    font-size:10px;
    font-weight:800;
}
.post-summary.total{background:#eef2f6;color:#344054}
.post-summary.good{background:#dcfce7;color:#166534}
.post-summary.bad{background:#fee2e2;color:#991b1b}

.platform-detect-row{
    display:flex;
    align-items:center;
    gap:8px;
    margin:10px 0 12px;
}
.muted-label{
    color:var(--muted);
    font-size:11px;
    font-weight:700;
}
.detected-platform{
    display:inline-flex;
    align-items:center;
    width:max-content;
    padding:5px 8px;
    border-radius:4px;
    font-size:10px;
    font-weight:800;
}
.detected-platform.facebook{background:#dbeafe;color:#1d4ed8}
.detected-platform.offerup{background:#ffedd5;color:#c2410c}
.detected-platform.craigslist{background:#f3e8ff;color:#7e22ce}
.detected-platform.empty-platform{background:#eef2f6;color:#667085}

.app-footer{
    width:min(1280px,calc(100% - 32px));
    margin:12px auto 22px;
    padding:10px 0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    color:var(--muted);
    font-size:10px;
    border-top:1px solid var(--line);
}
.footer-version{
    font-weight:800;
    color:var(--text);
}
@media (max-width:560px){
    .app-footer{
        width:calc(100% - 24px);
    }
}

.daily-posts{
    display:grid;
    gap:14px;
}
.daily-post-section{
    padding:14px;
    background:#fff;
    border:1px solid var(--line);
    border-radius:4px;
    box-shadow:0 10px 28px rgba(16,24,40,.04);
}
.daily-post-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-bottom:12px;
    padding-bottom:10px;
    border-bottom:1px solid var(--line);
}
.daily-post-head h2{
    margin:2px 0 0;
    font-size:15px;
}
.daily-post-date{
    color:var(--muted);
    font-size:10px;
    font-weight:700;
}
.daily-post-summary{
    display:flex;
    align-items:center;
    gap:6px;
    flex-wrap:wrap;
    justify-content:flex-end;
}
.daily-post-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(235px,280px));
    justify-content:start;
    gap:10px;
}
.daily-post-grid .post{
    min-width:0;
    min-height:190px;
    padding:12px;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    background:#fff;
}
.daily-load-more-wrap{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    min-height:54px;
    margin:10px 0 2px;
}
.daily-load-status{
    color:var(--muted);
    font-size:10px;
}
@media (max-width:700px){
    .daily-post-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .daily-post-summary{
        justify-content:flex-start;
    }
    .daily-post-grid{
        grid-template-columns:1fr;
    }
}


.settings-grid{
    display:grid;
    grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
    gap:14px;
    align-items:start;
}
.settings-subtitle{
    margin:2px 0 12px;
    color:var(--muted);
    font-size:11px;
}
.provider-state{
    display:inline-flex;
    align-items:center;
    padding:5px 8px;
    border-radius:4px;
    font-size:10px;
    font-weight:800;
}
.provider-state.ok{background:#dcfce7;color:#166534}
.provider-state.off{background:#eef2f6;color:#667085}
.switch-row{
    display:flex;
    align-items:flex-start;
    gap:9px;
    margin:6px 0 14px;
    padding:10px;
    border:1px solid var(--line);
    border-radius:4px;
}
.switch-row input{
    width:auto;
    margin-top:2px;
}
.switch-row span{
    display:grid;
    gap:2px;
}
.switch-row small,
.field-help{
    color:var(--muted);
    font-size:10px;
    line-height:1.4;
}
.compact-switch{
    margin-top:9px;
    padding:8px 10px;
}
.settings-two{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
}
.input-suffix{
    display:grid;
    grid-template-columns:1fr auto;
    align-items:center;
    gap:6px;
}
.input-suffix span{
    color:var(--muted);
    font-size:10px;
}
.settings-test{
    display:grid;
    gap:8px;
    margin-top:14px;
    padding:12px;
    border:1px solid var(--line);
    border-radius:4px;
}
.settings-test.ok{
    border-color:#bbf7d0;
    background:#f0fdf4;
}
.settings-test.bad{
    border-color:#fecaca;
    background:#fef2f2;
}
.settings-test>span{
    font-size:11px;
}
.compact-details{
    margin:0;
}
.provider-warning{
    padding:9px;
    border:1px solid #fde68a;
    border-radius:4px;
    background:#fffbeb;
    color:#92400e;
    font-size:10px;
    line-height:1.45;
}
.provider-job{
    display:inline-flex;
    padding:4px 6px;
    border-radius:4px;
    font-size:9px;
    font-weight:800;
}
.provider-job.ready{background:#dcfce7;color:#166534}
.provider-job.failed{background:#fee2e2;color:#991b1b}
.provider-job.running,
.provider-job.starting{background:#dbeafe;color:#1d4ed8}
.job-error{
    max-width:360px;
    white-space:normal;
    font-size:10px;
}
@media (max-width:800px){
    .settings-grid{
        grid-template-columns:1fr;
    }
}
@media (max-width:560px){
    .settings-two{
        grid-template-columns:1fr;
    }
}

/* Unified HTTP status pages */
.status-page-body{
    min-height:100vh;
    margin:0;
    background:#f6f8fb;
}
.status-page{
    min-height:100vh;
    display:grid;
    place-items:center;
    padding:24px;
}
.status-card{
    width:min(520px,100%);
    padding:28px;
    background:#fff;
    border:1px solid var(--line);
    border-radius:4px;
    box-shadow:0 18px 50px rgba(16,24,40,.08);
}
.status-code{
    margin-bottom:12px;
    color:#d0d5dd;
    font-size:64px;
    line-height:.9;
    font-weight:900;
    letter-spacing:-4px;
}
.status-card h1{
    margin:6px 0 8px;
    font-size:24px;
}
.status-card>p{
    max-width:440px;
    margin:0;
    color:var(--muted);
    font-size:12px;
    line-height:1.6;
}
.status-actions{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin-top:20px;
}
@media (max-width:560px){
    .status-page{padding:14px}
    .status-card{padding:20px}
    .status-code{font-size:52px}
    .status-actions{display:grid;grid-template-columns:1fr}
}


.status-preview-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
    gap:8px;
}
.status-preview-item{
    display:flex;
    align-items:center;
    gap:9px;
    padding:10px;
    border:1px solid var(--line);
    border-radius:4px;
}
.status-preview-item strong{
    min-width:38px;
    font-size:18px;
}
.status-preview-item span{
    color:var(--muted);
    font-size:10px;
}


/* v0.1.19 WordPress / Shopify style HTML note editor */
.html-note{
    margin-top:12px;
}
.wp-note-editor-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:12px;
    margin-bottom:0;
}
.wp-note-editor-head > label{
    margin:0 0 7px;
}
.wp-note-mode-tabs{
    display:flex;
    align-items:flex-end;
    gap:3px;
}
.wp-note-mode-tab{
    min-width:66px;
    padding:7px 12px 6px;
    border:1px solid #d0d5dd;
    border-bottom:0;
    border-radius:4px;
    background:#f2f4f7;
    color:#475467;
    cursor:pointer;
    font-size:10px;
    font-weight:800;
}
.wp-note-mode-tab.active{
    position:relative;
    z-index:2;
    margin-bottom:-1px;
    background:#fff;
    color:#101828;
}
.wp-note-editor-frame{
    overflow:hidden;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#fff;
}
.wp-note-toolbar{
    display:flex;
    align-items:center;
    gap:4px;
    flex-wrap:wrap;
    min-height:43px;
    padding:6px 7px;
    border-bottom:1px solid #e4e7ec;
    background:#f8fafc;
}
.wp-note-format{
    width:auto;
    min-width:120px;
    min-height:29px;
    margin:0;
    padding:5px 28px 5px 8px;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#fff;
    font-size:10px;
    font-weight:700;
}
.wp-note-tool{
    min-width:29px;
    height:29px;
    padding:4px 7px;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent;
    color:#344054;
    cursor:pointer;
    font-size:11px;
    line-height:1;
    font-weight:800;
}
.wp-note-tool:hover,
.wp-note-tool:focus{
    border-color:#cbd5e1;
    background:#fff;
    outline:none;
}
.wp-note-tool:active{
    background:#eaf2ff;
    color:#1d4ed8;
}
.wp-note-tool-wide{
    min-width:auto;
}
.wp-note-toolbar-separator{
    width:1px;
    height:20px;
    margin:0 2px;
    background:#d8dee8;
}
.wp-note-linkbar{
    display:flex;
    align-items:center;
    gap:7px;
    padding:7px;
    border-bottom:1px solid #e4e7ec;
    background:#f9fafb;
}
.wp-note-linkbar.hidden{
    display:none;
}
.wp-note-linkbar > input[type="url"]{
    flex:1;
    min-width:160px;
    min-height:31px;
    margin:0;
    padding:6px 8px;
    font-size:10px;
}
.wp-note-link-check{
    display:inline-flex;
    align-items:center;
    gap:5px;
    margin:0;
    color:#475467;
    white-space:nowrap;
    font-size:9px;
    font-weight:700;
}
.wp-note-link-check input{
    width:auto;
    margin:0;
}
.wp-note-visual{
    min-height:230px;
    padding:14px 15px;
    border:0;
    border-radius:4px;
    background:#fff;
    outline:none;
    color:#101828;
    font-size:12px;
    line-height:1.65;
}
.wp-note-visual:focus{
    box-shadow:inset 0 0 0 1px #98a2b3;
}
.wp-note-visual p:first-child,
.wp-note-visual h3:first-child,
.wp-note-visual h4:first-child,
.wp-note-visual blockquote:first-child{
    margin-top:0;
}
.wp-note-visual p:last-child,
.wp-note-visual ul:last-child,
.wp-note-visual ol:last-child,
.wp-note-visual blockquote:last-child{
    margin-bottom:0;
}
.wp-note-visual h3{
    margin:1em 0 .45em;
    font-size:17px;
}
.wp-note-visual h4{
    margin:1em 0 .45em;
    font-size:14px;
}
.wp-note-visual blockquote{
    margin:12px 0;
    padding:8px 12px;
    border-left:3px solid #cbd5e1;
    color:#475467;
}
.wp-note-visual a{
    color:#2563eb;
    text-decoration:underline;
}
.wp-note-source{
    display:block;
    width:100%;
    min-height:230px;
    margin:0;
    padding:13px 14px;
    border:0;
    border-radius:4px;
    background:#0f172a;
    color:#e2e8f0;
    resize:vertical;
    outline:none;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:11px;
    line-height:1.55;
    tab-size:2;
    white-space:pre-wrap;
}
.wp-note-source:focus{
    box-shadow:inset 0 0 0 1px #60a5fa;
}
.wp-note-statusbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    min-height:29px;
    padding:5px 8px;
    border-top:1px solid #e4e7ec;
    background:#f8fafc;
    color:#667085;
    font-size:8px;
    font-weight:700;
}
.wp-note-editor .field-error{
    border-color:#dc2626 !important;
    box-shadow:0 0 0 1px rgba(220,38,38,.12);
}
@media(max-width:700px){
    .wp-note-toolbar{
        align-items:flex-start;
    }
    .wp-note-format{
        flex:1 1 150px;
    }
    .wp-note-linkbar{
        align-items:stretch;
        flex-wrap:wrap;
    }
    .wp-note-linkbar > input[type="url"]{
        flex:1 1 100%;
    }
}

.settings-test-button{
    display:block;
    width:max-content;
    margin-top:14px;
}


/* v0.1.12 Provider Manager */
.provider-page-head{
    align-items:center;
}
.provider-add-open{
    display:inline-flex;
    align-items:center;
    gap:7px;
}
.provider-plus{
    font-size:18px;
    line-height:1;
}
.provider-page-notice{
    margin-bottom:12px;
    padding:10px 12px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    font-size:11px;
}
.provider-page-notice.ok{
    border-color:#bbf7d0;
    background:#f0fdf4;
    color:#166534;
}
.provider-page-notice.bad{
    border-color:#fecaca;
    background:#fef2f2;
    color:#991b1b;
}
.provider-manager{
    margin-bottom:14px;
}
.provider-count{
    color:var(--muted);
    font-size:10px;
    font-weight:700;
}
.provider-list{
    display:grid;
    gap:8px;
}
.provider-card{
    display:grid;
    grid-template-columns:34px 48px minmax(0,1fr) auto;
    align-items:center;
    gap:10px;
    min-height:82px;
    padding:10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    transition:box-shadow .14s ease,transform .14s ease,opacity .14s ease;
}
.provider-card.is-disabled{
    opacity:.62;
}
.provider-card.dragging{
    opacity:.45;
    transform:scale(.995);
}
.provider-card.drag-over{
    box-shadow:0 0 0 2px rgba(37,99,235,.18);
}
.provider-drag{
    display:grid;
    place-items:center;
    width:52px;
    height:48px;
    padding:0;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent;
    color:#98a2b3;
    cursor:grab;
    font-size:18px;
    letter-spacing:-3px;
}
.provider-drag:active{
    cursor:grabbing;
}
.provider-priority{
    display:grid;
    justify-items:center;
    gap:2px;
    padding-right:8px;
    border-right:1px solid var(--line);
}
.provider-priority-label{
    color:var(--muted);
    font-size:8px;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.provider-priority strong{
    font-size:17px;
}
.provider-card-main{
    min-width:0;
}
.provider-card-title{
    display:flex;
    align-items:center;
    gap:6px;
    flex-wrap:wrap;
}
.provider-card-title h3{
    margin:0;
    font-size:13px;
}
.provider-type,
.provider-verified,
.provider-unverified{
    display:inline-flex;
    align-items:center;
    padding:3px 6px;
    border-radius:4px;
    font-size:8px;
    font-weight:800;
}
.provider-type{
    background:#eef2ff;
    color:#3730a3;
}
.provider-verified{
    background:#dcfce7;
    color:#166534;
}
.provider-unverified{
    background:#fef3c7;
    color:#92400e;
}
.provider-meta{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    margin-top:5px;
    color:var(--muted);
    font-size:9px;
}
.provider-meta a{
    color:#2563eb;
}
.provider-last-test{
    margin-top:5px;
    color:var(--muted);
    font-size:9px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.provider-card-actions{
    display:flex;
    align-items:center;
    gap:7px;
}
.provider-enable-switch{
    display:flex;
    align-items:center;
    gap:5px;
    margin:0;
    font-size:9px;
    font-weight:700;
}
.provider-enable-switch input{
    width:auto;
}
.provider-empty{
    display:grid;
    justify-items:center;
    gap:4px;
    padding:30px 16px;
    border:1px dashed var(--line);
    border-radius:4px;
    color:var(--muted);
    text-align:center;
}
.provider-empty strong{
    color:var(--text);
}
body.provider-modal-open{
    overflow:hidden;
}
.provider-modal{
    position:fixed;
    inset:0;
    z-index:12000;
    display:grid;
    place-items:center;
    padding:24px;
}
.provider-modal-backdrop{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    margin:0;
    padding:0;
    border:0;
    border-radius:0;
    background:rgba(15,23,42,.58);
    cursor:default;
}
.provider-composer{
    margin:0;
}
.provider-modal-card{
    position:relative;
    z-index:1;
    width:min(920px,calc(100vw - 48px));
    max-height:calc(100vh - 48px);
    max-height:calc(100dvh - 48px);
    overflow:auto;
    overscroll-behavior:contain;
    box-shadow:0 22px 70px rgba(15,23,42,.28);
}
.provider-modal-head{
    position:sticky;
    top:0;
    z-index:4;
    margin:-2px 0 12px;
    padding:2px 0 10px;
    background:#fff;
    border-bottom:1px solid var(--line);
}
.provider-form-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
}
.provider-form-grid label,
.provider-map-grid label{
    min-width:0;
}
.provider-form-grid label>small,
.provider-map-grid label>small{
    display:block;
    margin-top:3px;
    color:var(--muted);
    font-size:9px;
    line-height:1.4;
}
.provider-token-field{
    grid-column:span 1;
}
.provider-type-settings{
    margin-top:12px;
    padding-top:12px;
    border-top:1px solid var(--line);
}
.provider-custom-box{
    padding:12px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fafbfc;
}
.provider-custom-box h3{
    margin:14px 0 2px;
    font-size:12px;
}
.provider-map-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:9px;
}
.provider-test-result{
    margin-top:12px;
    padding:11px;
    border:1px solid var(--line);
    border-radius:4px;
    font-size:10px;
}
.provider-test-result.ok{
    border-color:#bbf7d0;
    background:#f0fdf4;
}
.provider-test-result.bad{
    border-color:#fecaca;
    background:#fef2f2;
}
.provider-test-result dl{
    display:grid;
    grid-template-columns:100px minmax(0,1fr);
    gap:4px 8px;
    margin:8px 0 0;
}
.provider-test-result dt{
    color:var(--muted);
    font-weight:700;
}
.provider-test-result dd{
    margin:0;
    min-width:0;
    overflow-wrap:anywhere;
}
.provider-composer-actions{
    position:sticky;
    bottom:0;
    z-index:4;
    display:flex;
    justify-content:flex-end;
    gap:8px;
    margin-top:12px;
    padding:10px 0 2px;
    border-top:1px solid var(--line);
    background:#fff;
}
@media (max-width:760px){
    .provider-card{
        grid-template-columns:34px 44px minmax(0,1fr);
    }
    .provider-card-actions{
        grid-column:3;
        justify-content:flex-start;
    }
    .provider-form-grid,
    .provider-map-grid{
        grid-template-columns:1fr;
    }
}
.provider-jobs-live{
    display:inline-flex;
    align-items:center;
    gap:7px;
    min-height:30px;
    padding:6px 9px;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#f8fafc;
    color:#475467;
    font-size:11px;
    font-weight:800;
}
.provider-live-dot{
    width:8px;
    height:8px;
    border-radius:4px;
    background:#16a34a;
}
.provider-jobs-live.is-live .provider-live-dot{
    animation:providerLivePulse 1.5s ease-in-out infinite;
}
.provider-jobs-live.is-paused .provider-live-dot{
    background:#98a2b3;
    animation:none;
}
.provider-jobs-live.is-error{
    color:#991b1b;
    border-color:#fecaca;
    background:#fff1f2;
}
.provider-jobs-live.is-error .provider-live-dot{
    background:#dc2626;
    animation:none;
}
@keyframes providerLivePulse{
    0%,100%{opacity:1}
    50%{opacity:.35}
}
.provider-field-has-error > input,
.provider-field-has-error > select,
.provider-field-has-error > textarea,
.provider-field-has-error > .input-suffix input{
    border-color:#dc2626 !important;
    box-shadow:0 0 0 1px rgba(220,38,38,.10);
    background:#fffafa;
}
.provider-field-has-error > input:focus,
.provider-field-has-error > select:focus,
.provider-field-has-error > textarea:focus,
.provider-field-has-error > .input-suffix input:focus{
    border-color:#dc2626 !important;
    box-shadow:0 0 0 2px rgba(220,38,38,.14);
    outline:none;
}
.provider-form-grid label > .provider-field-error,
.provider-map-grid label > .provider-field-error,
.provider-field-error{
    display:block;
    margin-top:4px;
    color:#b42318;
    font-size:10px;
    line-height:1.35;
    font-weight:700;
}

/* v0.1.17 Admin Sales progress grid */
.admin-page-head{
    align-items:center;
}
.dashboard-date-copy{
    margin:4px 0 0;
    color:var(--muted);
    font-size:11px;
}
.admin-sales-progress-section{
    margin-bottom:20px;
}
.admin-section-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:16px;
    margin:0 0 12px;
}
.admin-section-head h2{
    margin:0 0 3px;
    font-size:18px;
}
.admin-section-head p{
    margin:0;
    color:var(--muted);
    font-size:11px;
}
.admin-section-summary{
    color:#475467;
    font-size:11px;
    font-weight:800;
}
.sales-progress-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(245px,1fr));
    gap:12px;
}
.sales-progress-card{
    position:relative;
    min-width:0;
    padding:15px;
    border:1px solid #d8dee8;
    border-radius:4px;
    background:#fff;
    box-shadow:0 5px 18px rgba(15,23,42,.035);
    transition:
        border-color .16s ease,
        box-shadow .16s ease,
        transform .16s ease;
}
.sales-progress-card:hover{
    border-color:#b9c5d6;
    box-shadow:0 8px 22px rgba(15,23,42,.06);
    transform:translateY(-1px);
}
.sales-progress-card.selected{
    border-color:#93c5fd;
    box-shadow:0 0 0 1px rgba(59,130,246,.08);
}
.sales-progress-card-head{
    display:flex;
    align-items:center;
    gap:10px;
    min-width:0;
}
.sales-progress-avatar{
    flex:0 0 34px;
    width:34px;
    height:34px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:4px;
    background:#eef2ff;
    color:#3730a3;
    font-size:14px;
    font-weight:900;
}
.sales-progress-person{
    min-width:0;
    flex:1;
}
.sales-progress-person strong{
    display:block;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:13px;
}
.sales-progress-person span{
    display:block;
    margin-top:1px;
    color:var(--muted);
    font-size:9px;
}
.sales-target-badge{
    flex:0 0 auto;
    padding:4px 6px;
    border-radius:4px;
    background:#dcfce7;
    color:#166534;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.03em;
}
.sales-progress-number{
    display:flex;
    align-items:baseline;
    gap:4px;
    margin-top:17px;
}
.sales-progress-number strong{
    font-size:28px;
    line-height:1;
    letter-spacing:-.035em;
}
.sales-progress-number span{
    color:#667085;
    font-size:11px;
}
.sales-progress-number b{
    color:#344054;
}
.sales-progress-track{
    position:relative;
    height:9px;
    margin-top:11px;
    overflow:hidden;
    border-radius:4px;
    background:#e9edf3;
}
.sales-progress-fill{
    width:0;
    height:100%;
    border-radius:4px;
    background:#3b82f6;
    transition:width .22s ease;
}
.sales-progress-card.target-met .sales-progress-fill{
    background:#22c55e;
}
.sales-progress-meta{
    display:flex;
    flex-wrap:wrap;
    gap:5px 10px;
    margin-top:8px;
    color:#667085;
    font-size:9px;
    font-weight:700;
}
.sales-progress-actions{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:10px;
    margin-top:15px;
    padding-top:12px;
    border-top:1px solid #eef1f5;
}
.sales-progress-view{
    flex:0 0 auto;
    padding-bottom:7px;
    font-size:10px;
    font-weight:800;
}
.sales-target-editor{
    display:flex;
    align-items:flex-end;
    gap:5px;
}
.sales-target-editor label{
    margin:0;
    color:#667085;
    font-size:8px;
    font-weight:800;
}
.sales-target-editor input{
    width:58px;
    min-height:29px;
    margin-top:3px;
    padding:5px 7px;
    font-size:10px;
}
.sales-target-save{
    min-height:29px;
}
.sales-target-message{
    min-height:13px;
    margin-top:5px;
    text-align:right;
    color:#15803d;
    font-size:8px;
    font-weight:800;
}
.sales-target-message.error{
    color:#b42318;
}
.dashboard-refresh-notice{
    position:sticky;
    top:8px;
    z-index:40;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    max-width:760px;
    margin:0 auto 14px;
    padding:10px 11px;
    border:1px solid #bfdbfe;
    border-radius:4px;
    background:#eff6ff;
    box-shadow:0 10px 28px rgba(15,23,42,.10);
}
.dashboard-refresh-notice.hidden{
    display:none;
}
.dashboard-refresh-notice > div{
    display:grid;
    grid-template-columns:10px auto;
    column-gap:8px;
    align-items:center;
}
.dashboard-refresh-dot{
    grid-row:1 / span 2;
    width:8px;
    height:8px;
    border-radius:4px;
    background:#2563eb;
    animation:dashboardActivityPulse 1.4s ease-in-out infinite;
}
.dashboard-refresh-notice strong{
    color:#1e3a8a;
    font-size:11px;
}
.dashboard-refresh-notice small{
    display:block;
    margin-top:1px;
    color:#475569;
    font-size:9px;
}
@keyframes dashboardActivityPulse{
    0%,100%{opacity:1}
    50%{opacity:.35}
}
@media(max-width:720px){
    .admin-section-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .sales-progress-grid{
        grid-template-columns:1fr;
    }
    .dashboard-refresh-notice{
        position:relative;
        top:auto;
    }
}
@media(max-width:460px){
    .sales-progress-actions{
        align-items:flex-start;
        flex-direction:column;
    }
    .sales-target-editor{
        width:100%;
    }
}

/* v0.1.18 Dynamic Daily / Weekly / Monthly progress UX */
.admin-progress-toolbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    margin-bottom:12px;
}
.dashboard-period-switch{
    display:inline-flex;
    align-items:center;
    gap:3px;
    padding:3px;
    border:1px solid #d8dee8;
    border-radius:4px;
    background:#eef2f6;
}
.dashboard-period-button{
    min-width:82px;
    min-height:32px;
    padding:6px 12px;
    border:0;
    border-radius:4px;
    background:transparent;
    color:#667085;
    cursor:pointer;
    font-size:10px;
    font-weight:900;
    transition:
        background .18s ease,
        color .18s ease,
        box-shadow .18s ease,
        transform .18s ease;
}
.dashboard-period-button:hover{
    color:#1d4ed8;
}
.dashboard-period-button.active{
    background:#fff;
    color:#1d4ed8;
    box-shadow:0 2px 8px rgba(15,23,42,.09);
    transform:translateY(-1px);
}
.dashboard-period-button:disabled{
    cursor:wait;
    opacity:.6;
}
.admin-section-head.compact{
    margin-bottom:10px;
}
.sales-period-target-copy{
    display:flex;
    gap:7px;
    margin-top:6px;
}
.sales-period-target-copy > span{
    padding:3px 5px;
    border:1px solid #e3e8ef;
    border-radius:4px;
    background:#f8fafc;
    color:#667085;
    font-size:8px;
    font-weight:800;
}
.sales-period-target-copy b{
    color:#344054;
}
.sales-progress-grid.period-loading .sales-progress-card{
    opacity:.45;
    transform:translateY(3px) scale(.995);
}
.sales-progress-card{
    transition:
        border-color .16s ease,
        box-shadow .16s ease,
        transform .22s ease,
        opacity .18s ease;
}
.sales-progress-card.period-updated{
    animation:salesCardPeriodUpdate .34s ease both;
    animation-delay:calc(var(--card-index) * 18ms);
}
.sales-progress-fill{
    transition:
        width .48s cubic-bezier(.2,.8,.2,1),
        background .25s ease;
}
.sales-progress-number strong{
    transition:color .2s ease;
}
.sales-progress-card.period-updated .sales-progress-number strong{
    color:#2563eb;
}
.sales-target-badge.hidden{
    display:none;
}
@keyframes salesCardPeriodUpdate{
    0%{
        opacity:.55;
        transform:translateY(5px);
    }
    100%{
        opacity:1;
        transform:translateY(0);
    }
}
@media(max-width:620px){
    .admin-progress-toolbar{
        align-items:flex-start;
        flex-direction:column;
    }
    .dashboard-period-switch{
        width:100%;
    }
    .dashboard-period-button{
        flex:1;
        min-width:0;
    }
}

/* v0.1.20 Colorful touch-first Sales cards + expandable post list */
.sales-progress-card{
    --card-accent:#3b82f6;
    --card-soft:#eff6ff;
    --card-soft-strong:#dbeafe;
    cursor:pointer;
    border-top:4px solid var(--card-accent);
    background:
        linear-gradient(
            180deg,
            var(--card-soft) 0,
            rgba(255,255,255,.98) 78px,
            #fff 100%
        );
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
    user-select:none;
}
.sales-progress-color-1{
    --card-accent:#2563eb;
    --card-soft:#eff6ff;
    --card-soft-strong:#dbeafe;
}
.sales-progress-color-2{
    --card-accent:#7c3aed;
    --card-soft:#f5f3ff;
    --card-soft-strong:#ede9fe;
}
.sales-progress-color-3{
    --card-accent:#0891b2;
    --card-soft:#ecfeff;
    --card-soft-strong:#cffafe;
}
.sales-progress-color-4{
    --card-accent:#059669;
    --card-soft:#ecfdf5;
    --card-soft-strong:#d1fae5;
}
.sales-progress-color-5{
    --card-accent:#d97706;
    --card-soft:#fffbeb;
    --card-soft-strong:#fef3c7;
}
.sales-progress-color-6{
    --card-accent:#db2777;
    --card-soft:#fdf2f8;
    --card-soft-strong:#fce7f3;
}
.sales-progress-color-7{
    --card-accent:#4f46e5;
    --card-soft:#eef2ff;
    --card-soft-strong:#e0e7ff;
}
.sales-progress-color-8{
    --card-accent:#0f766e;
    --card-soft:#f0fdfa;
    --card-soft-strong:#ccfbf1;
}
.sales-progress-card:hover{
    border-color:#cbd5e1;
    border-top-color:var(--card-accent);
}
.sales-progress-card:focus-visible{
    outline:3px solid color-mix(in srgb, var(--card-accent) 28%, transparent);
    outline-offset:2px;
}
.sales-progress-card.expanded{
    border-color:var(--card-accent);
    border-top-color:var(--card-accent);
    box-shadow:
        0 0 0 2px var(--card-soft-strong),
        0 10px 26px rgba(15,23,42,.08);
}
.sales-progress-avatar{
    background:var(--card-soft-strong);
    color:var(--card-accent);
}
.sales-progress-track{
    height:15px;
    margin-top:13px;
    border:1px solid rgba(148,163,184,.28);
    background:#e9edf3;
}
.sales-progress-fill{
    background:var(--card-accent);
}
.sales-progress-card.target-met .sales-progress-fill{
    background:#16a34a;
}
.sales-progress-number strong{
    font-size:32px;
}
.sales-card-chevron{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:24px;
    height:24px;
    font-size:15px;
    transition:transform .2s ease;
}
.sales-progress-card.expanded .sales-card-chevron{
    transform:rotate(180deg);
}
.sales-target-editor{
    min-height:44px;
}
.sales-target-editor input,
.sales-target-save{
    min-height:36px;
}
.sales-target-save{
    min-width:48px;
}
.sales-expanded-posts{
    margin-top:14px;
    border:1px solid #d8dee8;
    border-left:4px solid #2563eb;
    border-radius:4px;
    background:#fff;
    box-shadow:0 8px 26px rgba(15,23,42,.05);
    overflow:hidden;
}
.sales-expanded-posts.hidden{
    display:none;
}
.sales-expanded-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
    padding:15px 16px 12px;
    border-bottom:1px solid #edf0f4;
    background:#f8fafc;
}
.sales-expanded-head h3{
    margin:3px 0 2px;
    font-size:16px;
}
.sales-expanded-head p{
    margin:0;
    color:#667085;
    font-size:10px;
}
.sales-expanded-close{
    min-width:52px;
    min-height:40px;
}
.sales-expanded-loading{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:5px;
    min-height:90px;
}
.sales-expanded-loading.hidden{
    display:none;
}
.sales-expanded-loading span{
    width:8px;
    height:8px;
    border-radius:4px;
    background:#94a3b8;
    animation:salesExpandedPulse .85s ease-in-out infinite alternate;
}
.sales-expanded-loading span:nth-child(2){
    animation-delay:.15s;
}
.sales-expanded-loading span:nth-child(3){
    animation-delay:.3s;
}
@keyframes salesExpandedPulse{
    from{opacity:.35;transform:translateY(0)}
    to{opacity:1;transform:translateY(-4px)}
}
.sales-expanded-list{
    padding:0;
}
.sales-expanded-row{
    display:grid;
    grid-template-columns:minmax(120px,1.55fr) 100px 160px 86px 64px;
    gap:12px;
    align-items:center;
    min-height:58px;
    padding:10px 16px;
    border-bottom:1px solid #edf0f4;
    background:#fff;
    transition:background .14s ease;
}
.sales-expanded-row:last-child{
    border-bottom:0;
}
.sales-expanded-row:hover{
    background:#fafcff;
}
.sales-expanded-title{
    min-width:0;
}
.sales-expanded-title strong{
    display:block;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:11px;
}
.sales-expanded-title small,
.sales-expanded-cell{
    color:#667085;
    font-size:9px;
}
.sales-expanded-status{
    justify-self:start;
}
.sales-expanded-review{
    justify-self:end;
    min-height:36px;
    display:inline-flex;
    align-items:center;
    padding:6px 8px;
    border-radius:4px;
    background:#eff6ff;
    color:#1d4ed8;
    font-size:9px;
    font-weight:900;
}
.sales-expanded-empty,
.sales-expanded-error{
    padding:24px 16px;
    text-align:center;
    color:#667085;
    font-size:10px;
}
.sales-expanded-error{
    color:#b42318;
}
@media(pointer:coarse){
    .sales-progress-card:hover{
        transform:none;
    }
    .sales-progress-card,
    .dashboard-period-button,
    .sales-target-save,
    .sales-expanded-close,
    .sales-expanded-review{
        min-height:44px;
    }
    .sales-target-editor input{
        min-height:44px;
        font-size:16px;
    }
}
@media(min-width:1280px){
    .sales-progress-grid{
        grid-template-columns:repeat(4,minmax(230px,1fr));
    }
}
@media(min-width:800px) and (max-width:1279px){
    .sales-progress-grid{
        grid-template-columns:repeat(3,minmax(220px,1fr));
    }
}
@media(min-width:600px) and (max-width:899px){
    .sales-progress-grid{
        grid-template-columns:repeat(2,minmax(220px,1fr));
    }
}
@media(max-width:760px){
    .sales-expanded-row{
        grid-template-columns:minmax(0,1fr) auto;
        gap:5px 10px;
        padding:12px 13px;
    }
    .sales-expanded-title{
        grid-column:1 / -1;
    }
    .sales-expanded-review{
        grid-column:2;
        grid-row:2 / span 2;
        align-self:center;
    }
    .sales-expanded-cell{
        grid-column:1;
    }
    .sales-expanded-status{
        grid-column:1;
    }
}
@media(max-width:599px){
    .sales-progress-grid{
        grid-template-columns:1fr;
    }
    .sales-progress-card{
        padding:16px;
    }
    .sales-progress-number strong{
        font-size:34px;
    }
    .sales-progress-track{
        height:17px;
    }
    .sales-progress-actions{
        align-items:stretch;
        gap:6px;
    }
        .sales-target-editor{
        flex:0 0 auto;
    }
}
@media(max-width:420px){
    .sales-progress-actions{
        flex-direction:column;
    }
    .sales-target-editor{
        width:100%;
    }
    .sales-target-editor label{
        flex:1;
    }
    .sales-target-editor input{
        width:100%;
    }
}

/* v0.1.21 Date-synced progress + ordered review list */
.sales-card-admin-actions{
    display:flex;
    align-items:flex-end;
    gap:8px;
    min-height:44px;
}
.sales-daily-review{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:36px;
    padding:7px 9px;
    border:1px solid var(--card-soft-strong);
    border-radius:4px;
    background:var(--card-soft);
    color:var(--card-accent);
    font-size:9px;
    font-weight:900;
    white-space:nowrap;
}
.sales-daily-review.hidden{
    display:none;
}
.sales-daily-review:hover,
.sales-daily-review:focus{
    border-color:var(--card-accent);
    outline:none;
}
.sales-expanded-list{
    margin:0;
    padding:8px;
    list-style:none;
}
.sales-expanded-post-item{
    display:grid;
    grid-template-columns:minmax(120px,1.2fr) 105px 90px 70px;
    gap:10px;
    align-items:center;
    min-height:54px;
    margin:0 0 6px;
    padding:8px 10px;
    border:1px solid #e5e7eb;
    border-radius:4px;
    background:#fff;
    transition:
        border-color .15s ease,
        background .15s ease,
        transform .15s ease;
}
.sales-expanded-post-item:last-child{
    margin-bottom:0;
}
.sales-expanded-post-item.review-good{
    border-color:#bbf7d0;
    background:#f0fdf4;
}
.sales-expanded-post-item.review-good::before{
    background:#dcfce7;
    color:#166534;
}
.sales-expanded-post-item.review-bad{
    border-color:#fecaca;
    background:#fff1f2;
}
.sales-expanded-post-item.review-bad::before{
    background:#fee2e2;
    color:#991b1b;
}
.sales-expanded-post-item:hover{
    transform:translateY(-1px);
}
.sales-expanded-post-time{
    min-width:0;
}
.sales-expanded-post-time strong{
    display:block;
    color:#101828;
    font-size:11px;
}
.sales-expanded-post-time small{
    display:block;
    margin-top:2px;
    color:#667085;
    font-size:9px;
}
.sales-expanded-post-platform,
.sales-expanded-post-status{
    color:#475467;
    font-size:9px;
    font-weight:700;
}
.sales-expanded-post-status.good{
    color:#166534;
}
.sales-expanded-post-status.bad{
    color:#991b1b;
}
.sales-expanded-review{
    justify-self:end;
    min-height:36px;
}
.dashboard-date-syncing .sales-progress-card{
    opacity:.55;
    pointer-events:none;
}
@media(pointer:coarse){
    .sales-daily-review{
        min-height:44px;
    }
    .sales-expanded-post-item{
        min-height:62px;
    }
}
@media(max-width:760px){
    .sales-card-admin-actions{
        width:100%;
        align-items:stretch;
        flex-wrap:wrap;
    }
    .sales-daily-review{
        flex:1 1 110px;
    }
    .sales-target-editor{
        flex:1 1 150px;
    }
    .sales-expanded-post-item{
        grid-template-columns:38px minmax(0,1fr) auto;
        gap:5px 8px;
        padding:10px;
    }
    .sales-expanded-post-item::before{
        grid-column:1;
        grid-row:1 / span 2;
    }
    .sales-expanded-post-time{
        grid-column:2;
        grid-row:1;
    }
    .sales-expanded-post-platform{
        grid-column:2;
        grid-row:2;
    }
    .sales-expanded-post-status{
        grid-column:3;
        grid-row:1;
        justify-self:end;
    }
    .sales-expanded-review{
        grid-column:3;
        grid-row:2;
    }
}
@media(max-width:430px){
    .sales-card-admin-actions{
        flex-direction:column;
    }
    .sales-daily-review,
    .sales-target-editor{
        width:100%;
    }
}

/* v0.1.22 Date controls + clean card footer */
.dashboard-date-controls{
    margin:0;
}
.dashboard-date-control-row{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:9px;
    min-height:44px;
}
.dashboard-date-control-row input[type="date"],
.dashboard-date-view{
    height:44px;
    min-height:44px;
    margin:0;
    box-sizing:border-box;
}
.dashboard-date-control-row input[type="date"]{
    width:160px;
    padding-top:0;
    padding-bottom:0;
}
.dashboard-date-view{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding-top:0;
    padding-bottom:0;
}
.dashboard-back-today{
    display:inline-flex;
    align-items:center;
    min-height:44px;
    padding:0 3px;
    color:#2563eb;
    font-size:10px;
    font-weight:900;
    white-space:nowrap;
}
.dashboard-back-today:hover,
.dashboard-back-today:focus{
    text-decoration:underline;
    outline:none;
}
.sales-progress-actions{
    justify-content:flex-end;
}
.sales-card-admin-actions{
    width:100%;
    justify-content:flex-end;
}
.sales-card-view-footer{
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:44px;
    margin:12px -15px -15px;
    padding:0 14px 0 15px;
    border-top:1px solid rgba(148,163,184,.20);
    border-radius:4px;
    background:rgba(255,255,255,.64);
    color:var(--card-accent);
    font-size:10px;
    font-weight:900;
    transition:
        background .16s ease,
        color .16s ease;
}
.sales-progress-card:hover .sales-card-view-footer,
.sales-progress-card:focus-visible .sales-card-view-footer,
.sales-progress-card.expanded .sales-card-view-footer{
    background:var(--card-soft);
}
.sales-card-view-label{
    display:inline-flex;
    align-items:center;
    min-height:44px;
}
.sales-card-chevron{
    position:relative;
    display:inline-block;
    width:10px;
    height:10px;
    flex:0 0 10px;
    margin-right:3px;
    transform:rotate(45deg);
    transition:transform .2s ease;
}
.sales-card-chevron::before{
    content:"";
    position:absolute;
    inset:0;
    border-right:2px solid currentColor;
    border-bottom:2px solid currentColor;
}
.sales-progress-card.expanded .sales-card-chevron{
    transform:rotate(225deg);
}
@media(pointer:coarse){
    .dashboard-date-control-row input[type="date"],
    .dashboard-date-view,
    .dashboard-back-today,
    .sales-card-view-footer{
        min-height:48px;
    }
    .sales-card-view-label{
        min-height:48px;
    }
}
@media(max-width:640px){
    .admin-page-head{
        align-items:flex-start;
    }
    .dashboard-date-controls{
        width:100%;
    }
    .dashboard-date-control-row{
        justify-content:flex-start;
        flex-wrap:wrap;
        width:100%;
    }
    .dashboard-date-control-row input[type="date"]{
        flex:1 1 170px;
        width:auto;
        min-width:160px;
    }
    .dashboard-date-view{
        flex:0 0 auto;
    }
    .dashboard-back-today{
        flex:0 0 100%;
        min-height:34px;
        padding-left:0;
    }
}
@media(max-width:420px){
    .sales-card-view-footer{
        margin-left:-16px;
        margin-right:-16px;
        margin-bottom:-16px;
        padding-left:16px;
        padding-right:16px;
    }
}

/* v0.1.23 AJAX dashboard + Post Grid + Review Modal */
.dashboard-back-today{
    border:0;
    background:transparent;
    cursor:pointer;
}
.dashboard-back-today.hidden{
    display:none;
}
.dashboard-ajax-loading .sales-progress-card{
    opacity:.48;
    pointer-events:none;
}
.dashboard-ajax-loading #dashboardPeriodLabel,
.dashboard-ajax-loading #dashboardPostCount{
    opacity:.55;
}
.icon-close{
    width:40px;
    height:40px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#fff;
    color:#344054;
    cursor:pointer;
    font-size:24px;
    line-height:1;
    font-weight:400;
}
.icon-close:hover,
.icon-close:focus{
    border-color:#98a2b3;
    background:#f8fafc;
    outline:none;
}
.sales-expanded-close{
    flex:0 0 40px;
}
.sales-expanded-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
    gap:9px;
    padding:10px;
}
.sales-post-tile{
    --post-accent:#64748b;
    position:relative;
    min-height:132px;
    padding:12px;
    border:1px solid #e2e8f0;
    border-top:4px solid var(--post-accent);
    border-radius:4px;
    background:#fff;
    cursor:pointer;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
    transition:
        transform .15s ease,
        box-shadow .15s ease,
        border-color .15s ease,
        background .15s ease;
}
.sales-post-tile:hover,
.sales-post-tile:focus-visible{
    transform:translateY(-2px);
    box-shadow:0 8px 18px rgba(15,23,42,.08);
    outline:none;
}
.sales-post-tile.review-good{
    --post-accent:#16a34a;
    border-color:#bbf7d0;
    background:#f0fdf4;
}
.sales-post-tile.review-bad{
    --post-accent:#dc2626;
    border-color:#fecaca;
    background:#fff1f2;
}
.sales-post-tile-sequence{
    width:30px;
    height:30px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:4px;
    background:#f1f5f9;
    color:#475569;
    font-size:10px;
    font-weight:900;
}
.review-good .sales-post-tile-sequence{
    background:#dcfce7;
    color:#166534;
}
.review-bad .sales-post-tile-sequence{
    background:#fee2e2;
    color:#991b1b;
}
.sales-post-tile-main{
    margin-top:13px;
}
.sales-post-tile-time{
    display:block;
    color:#0f172a;
    font-size:14px;
    line-height:1.15;
    font-weight:900;
}
.sales-post-tile-date{
    display:block;
    margin-top:4px;
    color:#64748b;
    font-size:9px;
    font-weight:700;
}
.sales-post-tile-footer{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    margin-top:18px;
    padding-top:9px;
    border-top:1px solid rgba(148,163,184,.22);
    color:#64748b;
    font-size:9px;
    font-weight:800;
}
.sales-post-tile-status.good{
    color:#166534;
}
.sales-post-tile-status.bad{
    color:#991b1b;
}
.sales-post-tile-action{
    color:var(--post-accent);
    font-weight:900;
}
.review-modal-backdrop{
    position:fixed;
    inset:0;
    z-index:120;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:22px;
    background:rgba(15,23,42,.48);
    backdrop-filter:blur(2px);
}
.review-modal-backdrop.hidden{
    display:none;
}
.review-modal{
    position:relative;
    width:min(820px,100%);
    max-height:min(90vh,900px);
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#fff;
    box-shadow:0 24px 70px rgba(15,23,42,.24);
    animation:reviewModalIn .18s ease both;
}
@keyframes reviewModalIn{
    from{
        opacity:0;
        transform:translateY(8px) scale(.992);
    }
    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }
}
.review-modal-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
    padding:16px 17px;
    border-bottom:1px solid #e5e7eb;
    background:#f8fafc;
}
.review-modal-head h2{
    margin:3px 0 3px;
    font-size:18px;
}
.review-modal-head p{
    margin:0;
    color:#64748b;
    font-size:10px;
}
.review-modal-head-actions{
    display:flex;
    align-items:center;
    gap:8px;
}
.review-modal-original{
    min-height:40px;
    display:inline-flex;
    align-items:center;
    padding:7px 10px;
    border:1px solid #bfdbfe;
    border-radius:4px;
    background:#eff6ff;
    color:#1d4ed8;
    font-size:9px;
    font-weight:900;
}
.review-modal-original.hidden{
    display:none;
}
.review-modal-form{
    overflow:auto;
    padding:16px 17px 17px;
}
.review-modal-meta{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    margin-bottom:15px;
}
.review-modal-meta > div{
    padding:9px 10px;
    border:1px solid #e5e7eb;
    border-radius:4px;
    background:#f8fafc;
}
.review-modal-meta span{
    display:block;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.035em;
}
.review-modal-meta strong{
    display:block;
    margin-top:3px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:10px;
}

.review-modal-meta-platform{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}
.review-modal-meta-platform > div{
    min-width:0;
}
.review-modal-platform-icon{
    width:28px;
    height:28px;
    display:flex !important;
    align-items:center;
    justify-content:center;
    flex:0 0 28px;
    line-height:0;
    font-size:0;
    text-transform:none !important;
    letter-spacing:0 !important;
}
.review-modal-platform-icon .platform-logo{
    width:24px;
    height:24px;
    flex:0 0 24px;
    margin:0;
    display:flex !important;
    align-items:center;
    justify-content:center;
    line-height:0;
}
.review-modal-platform-icon .platform-logo svg{
    width:14px;
    height:14px;
    display:block;
    margin:0;
}
.review-post-nav-overlay{
    position:absolute;
    top:92px;
    right:8px;
    left:8px;
    bottom:78px;
    z-index:3;
    display:flex;
    align-items:center;
    justify-content:space-between;
    pointer-events:none;
}
.review-post-nav-button{
    width:36px;
    height:36px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:rgba(255,255,255,.96);
    color:#344054;
    cursor:pointer;
    pointer-events:auto;
}
.review-post-nav-button svg{
    width:18px;
    height:18px;
    fill:currentColor;
    display:block;
}
.review-post-nav-button:hover:not(:disabled),
.review-post-nav-button:focus-visible:not(:disabled){
    border-color:#98a2b3;
    background:#f8fafc;
    outline:none;
}
.review-post-nav-button:disabled{
    opacity:.34;
    cursor:default;
}
@media(max-width:560px){
    .review-post-nav-overlay{
        top:84px;
        right:6px;
        left:6px;
        bottom:72px;
    }
    .review-post-nav-button{
        width:32px;
        height:32px;
    }
    .review-post-nav-button svg{
        width:16px;
        height:16px;
    }
}
.review-decision{
    display:flex;
    gap:8px;
    margin:0 0 12px;
    padding:0;
    border:0;
}
.review-decision legend{
    width:100%;
    margin-bottom:6px;
    color:#344054;
    font-size:10px;
    font-weight:900;
}
.review-decision-option{
    flex:1;
    min-height:44px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    margin:0;
    padding:8px 12px;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#fff;
    cursor:pointer;
    font-size:10px;
    font-weight:900;
}
.review-decision-option input{
    width:auto;
    margin:0;
}
.review-decision-option.good:has(input:checked){
    border-color:#86efac;
    background:#f0fdf4;
    color:#166534;
}
.review-decision-option.bad:has(input:checked){
    border-color:#fca5a5;
    background:#fff1f2;
    color:#991b1b;
}
.review-modal-upload{
    margin-top:13px;
}
.review-modal-upload label{
    margin-bottom:5px;
}
.review-modal-attachments{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-top:10px;
}
.review-modal-attachments.hidden{
    display:none;
}
.review-modal-attachments a{
    padding:5px 7px;
    border:1px solid #dbeafe;
    border-radius:4px;
    background:#eff6ff;
    color:#1d4ed8;
    font-size:8px;
    font-weight:800;
}
.review-modal-message{
    min-height:18px;
    margin-top:8px;
    color:#15803d;
    font-size:9px;
    font-weight:800;
}
.review-modal-message.error{
    color:#b42318;
}
.review-modal-footer{
    display:flex;
    justify-content:flex-end;
    gap:8px;
    margin-top:14px;
    padding-top:13px;
    border-top:1px solid #e5e7eb;
}
.review-modal-loading{
    padding:40px 18px;
    text-align:center;
    color:#64748b;
    font-size:10px;
    font-weight:800;
}
.review-modal-loading.hidden{
    display:none;
}
body.review-modal-open{
    overflow:hidden;
}
@media(pointer:coarse){
    .sales-post-tile{
        min-height:150px;
    }
    .icon-close,
    .review-modal-original,
    .review-modal-footer .btn{
        min-height:48px;
    }
}
@media(max-width:720px){
    .sales-expanded-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .review-modal-backdrop{
        align-items:flex-end;
        padding:0;
    }
    .review-modal{
        width:100%;
        max-height:94vh;
        border-bottom:0;
    }
    .review-modal-meta{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:420px){
    .review-modal-meta{
        grid-template-columns:1fr;
    }
}
@media(max-width:460px){
    .sales-expanded-grid{
        grid-template-columns:1fr;
    }
    .sales-post-tile{
        min-height:128px;
    }
    .review-modal-head{
        padding:13px;
    }
    .review-modal-form{
        padding:13px;
    }
    .review-modal-head-actions{
        align-items:flex-end;
        flex-direction:column-reverse;
    }
    .review-modal-original{
        min-height:36px;
    }
}

/* v0.1.24 Source editor + thumb decisions + refined Post Grid */
.wp-note-tool svg{
    width:15px;
    height:15px;
    display:block;
    fill:currentColor;
}
.wp-code-editor{
    display:grid;
    grid-template-columns:48px minmax(0,1fr);
    min-height:270px;
    height:310px;
    max-height:480px;
    overflow:hidden;
    background:#111827;
}
.wp-code-editor.hidden{
    display:none;
}
.wp-code-gutter{
    min-height:270px;
    overflow:hidden;
    padding:14px 10px 14px 0;
    border-right:1px solid #273244;
    background:#0b1220;
    color:#64748b;
    text-align:right;
    white-space:pre;
    user-select:none;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:12px;
    line-height:1.6;
}
.wp-code-stage{
    position:relative;
    min-width:0;
    min-height:270px;
    overflow:hidden;
}
.wp-code-highlight,
.wp-note-source{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    min-height:270px;
    margin:0;
    padding:14px 16px;
    border:0;
    border-radius:4px;
    overflow:auto;
    white-space:pre;
    tab-size:2;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:12px;
    line-height:1.6;
}
.wp-code-highlight{
    z-index:1;
    pointer-events:none;
    background:#111827;
    color:#d1d5db;
}
.wp-note-source{
    z-index:2;
    resize:none;
    background:transparent !important;
    color:transparent !important;
    caret-color:#f8fafc;
    -webkit-text-fill-color:transparent;
}
.wp-note-source::selection{
    background:rgba(59,130,246,.38);
}
.wp-note-source:focus{
    box-shadow:inset 0 0 0 1px #3b82f6;
}
.code-tag{
    color:#7dd3fc;
}
.code-attr{
    color:#c4b5fd;
}
.code-string{
    color:#86efac;
}
.code-punct{
    color:#94a3b8;
}
.code-comment{
    color:#64748b;
    font-style:italic;
}

.review-decision-modern{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
}
.review-decision-modern legend{
    grid-column:1 / -1;
}
.review-decision-modern .review-decision-option{
    position:relative;
    min-height:82px;
    justify-content:flex-start;
    gap:12px;
    padding:14px 15px;
    overflow:hidden;
}
.review-decision-modern .review-decision-option input{
    position:absolute;
    opacity:0;
    pointer-events:none;
}
.review-decision-icon{
    flex:0 0 42px;
    width:108px;
    height:42px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:4px;
    background:#f2f4f7;
    color:#475467;
}
.review-decision-icon svg{
    width:23px;
    height:23px;
    fill:currentColor;
}
.review-decision-copy{
    min-width:0;
}
.review-decision-copy strong{
    display:block;
    font-size:13px;
}
.review-decision-copy small{
    display:block;
    margin-top:3px;
    color:#667085;
    font-size:9px;
}
.review-decision-check{
    position:absolute;
    top:10px;
    right:10px;
    width:22px;
    height:22px;
    display:none;
    align-items:center;
    justify-content:center;
    border-radius:4px;
    color:#fff;
}
.review-decision-check svg{
    width:15px;
    height:15px;
    fill:currentColor;
}
.review-decision-option.good:has(input:checked){
    border-color:#22c55e;
    background:#f0fdf4;
    box-shadow:0 0 0 1px rgba(34,197,94,.12);
}
.review-decision-option.good:has(input:checked) .review-decision-icon{
    background:#dcfce7;
    color:#15803d;
}
.review-decision-option.good:has(input:checked) .review-decision-check{
    display:flex;
    background:#16a34a;
}
.review-decision-option.bad:has(input:checked){
    border-color:#ef4444;
    background:#fff1f2;
    box-shadow:0 0 0 1px rgba(239,68,68,.12);
}
.review-decision-option.bad:has(input:checked) .review-decision-icon{
    background:#fee2e2;
    color:#b91c1c;
}
.review-decision-option.bad:has(input:checked) .review-decision-check{
    display:flex;
    background:#dc2626;
}

.sales-post-tile{
    min-height:154px;
    padding:13px 13px 11px;
}
.sales-post-tile-top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}
.sales-post-review-icon{
    width:34px;
    height:34px;
    display:flex;
    align-items:center;
    justify-content:center;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
    color:#64748b;
    transition:
        border-color .15s ease,
        background .15s ease,
        color .15s ease,
        transform .15s ease;
}
.sales-post-review-icon svg{
    width:17px;
    height:17px;
    fill:currentColor;
}
.sales-post-tile:hover .sales-post-review-icon,
.sales-post-tile:focus-visible .sales-post-review-icon{
    border-color:var(--post-accent);
    background:#fff;
    color:var(--post-accent);
    transform:translateY(-1px);
}
.review-good .sales-post-review-icon{
    border-color:#bbf7d0;
    background:#dcfce7;
    color:#15803d;
}
.review-bad .sales-post-review-icon{
    border-color:#fecaca;
    background:#fee2e2;
    color:#b91c1c;
}
.sales-post-tile-main{
    margin-top:18px;
}
.sales-post-tile-time{
    font-size:18px;
    letter-spacing:-.02em;
}
.sales-post-tile-date{
    margin-top:5px;
}
.sales-post-tile-footer{
    min-height:28px;
    margin-top:18px;
}
.sales-post-platform{
    color:#475569;
}

@media(pointer:coarse){
    .review-decision-modern .review-decision-option{
        min-height:92px;
    }
    .sales-post-review-icon{
        width:42px;
        height:42px;
    }
}
@media(max-width:560px){
    .review-decision-modern{
        grid-template-columns:1fr;
    }
    .wp-code-editor{
        grid-template-columns:40px minmax(0,1fr);
        height:280px;
    }
    .wp-code-gutter{
        padding-right:7px;
        font-size:11px;
    }
    .wp-code-highlight,
    .wp-note-source{
        padding:13px 12px;
        font-size:11px;
    }
}

/* v0.1.25 Platform identity + Get Content preview */
.platform-logo{
    width:36px;
    height:36px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 36px;
    border-radius:4px;
    background:#f8fafc;
    border:1px solid #e2e8f0;
}
.platform-logo svg{
    width:23px;
    height:23px;
}
.platform-logo-facebook{
    background:#1877f2;
    border-color:#1877f2;
}
.platform-logo-facebook svg{
    fill:#fff;
}
.platform-logo-offerup{
    color:#0a9f68;
    background:#f0fdf4;
    border-color:#86efac;
}
.platform-logo-offerup svg{
    fill:none;
    stroke:currentColor;
    stroke-width:2.1;
}
.platform-logo-offerup svg path{
    stroke:#f97316;
}
.platform-logo-craigslist{
    color:#6b21a8;
    background:#faf5ff;
    border-color:#d8b4fe;
}
.platform-logo-craigslist svg{
    fill:none;
    stroke:currentColor;
    stroke-width:1.9;
    stroke-linecap:round;
}
.platform-logo-generic{
    color:#64748b;
}
.platform-logo-generic svg{
    fill:currentColor;
}
.sales-post-tile:hover .platform-logo,
.sales-post-tile:focus-visible .platform-logo{
    transform:translateY(-1px);
    box-shadow:0 4px 12px rgba(15,23,42,.09);
}
.review-get-content{
    min-height:40px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    padding:7px 10px;
    border:1px solid #c7d2fe;
    border-radius:4px;
    background:#eef2ff;
    color:#3730a3;
    cursor:pointer;
    font-size:9px;
    font-weight:900;
}
.review-get-content svg{
    width:15px;
    height:15px;
    fill:currentColor;
}
.review-get-content:hover,
.review-get-content:focus{
    border-color:#818cf8;
    background:#e0e7ff;
    outline:none;
}
.review-get-content.loading svg{
    animation:getContentSpin .8s linear infinite;
}
@keyframes getContentSpin{
    to{transform:rotate(360deg)}
}
.review-content-preview{
    margin:0 0 15px;
    overflow:hidden;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
.review-content-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:10px 12px;
    border-bottom:1px solid #e7ecf2;
    background:#f8fafc;
}
.review-content-kicker{
    display:block;
    color:#64748b;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.review-content-head strong{
    display:block;
    margin-top:2px;
    color:#334155;
    font-size:10px;
}
.review-content-fetched{
    color:#64748b;
    font-size:8px;
    font-weight:700;
    text-align:right;
}
.review-content-body{
    padding:12px;
}
.review-content-body h3{
    margin:0;
    color:#0f172a;
    font-size:14px;
    line-height:1.35;
}
.review-content-body > p{
    margin:7px 0 0;
    color:#475569;
    font-size:10px;
    line-height:1.55;
    white-space:pre-wrap;
}
.review-content-facts{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-top:11px;
}
.review-content-facts span{
    min-width:110px;
    padding:7px 8px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
    color:#475569;
    font-size:9px;
}
.review-content-facts b{
    display:block;
    margin-bottom:2px;
    color:#64748b;
    font-size:7px;
    text-transform:uppercase;
    letter-spacing:.03em;
}
.review-content-photos{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:6px;
    margin-top:12px;
}
.review-content-photos.hidden{
    display:none;
}
.review-content-photos a{
    display:block;
    overflow:hidden;
    border:1px solid #e2e8f0;
    border-radius:4px;
    aspect-ratio:1 / 1;
    background:#f8fafc;
}
.review-content-photos img{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}
@media(pointer:coarse){
    .platform-logo{
        width:44px;
        height:44px;
        flex-basis:44px;
    }
    .review-get-content{
        min-height:48px;
    }
}
@media(max-width:720px){
    .review-modal-head-actions{
        flex-wrap:wrap;
        justify-content:flex-end;
    }
    .review-content-photos{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}
@media(max-width:460px){
    .review-content-photos{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .review-content-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .review-content-fetched{
        text-align:left;
    }
}

/* v0.1.26 Composer editor + first-photo lightbox + reliable review save */
.note-composer{margin-top:12px;}
.note-composer-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;}
.note-composer-head>label{margin:0 0 7px;}
.note-mode-switch{display:flex;gap:2px;padding:2px;border:1px solid #d8dee8;border-radius:4px;background:#f1f5f9;}
.note-mode{min-width:74px;min-height:30px;padding:5px 9px;border:0;border-radius:4px;background:transparent;color:#64748b;cursor:pointer;font-size:9px;font-weight:900;}
.note-mode.active{background:#fff;color:#0f172a;box-shadow:0 1px 4px rgba(15,23,42,.08);}
.note-composer-shell{overflow:hidden;border:1px solid #cbd5e1;border-radius:4px;background:#fff;}
.note-toolbar{display:flex;align-items:center;gap:3px;min-height:42px;padding:5px 7px;border-bottom:1px solid #e5e7eb;background:#f8fafc;}
.note-format{width:auto;min-width:106px;min-height:30px;margin:0;padding:4px 26px 4px 8px;font-size:9px;font-weight:800;}
.note-divider{width:1px;height:21px;margin:0 2px;background:#d8dee8;}
.note-spacer{flex:1;}
.note-tool{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:#475569;cursor:pointer;font-size:10px;font-weight:900;}
.note-tool:hover,.note-tool:focus{border-color:#cbd5e1;background:#fff;color:#0f172a;outline:none;}
.note-tool svg{width:16px;height:16px;fill:currentColor;}
.note-image-tool{color:#2563eb;}
.note-inline-panel{display:flex;align-items:center;gap:6px;padding:7px;border-bottom:1px solid #e5e7eb;background:#f8fafc;}
.note-inline-panel.hidden{display:none;}
.note-inline-panel input[type="url"]{min-height:32px;margin:0;font-size:10px;}
.note-check{display:flex;align-items:center;gap:4px;margin:0;color:#64748b;white-space:nowrap;font-size:9px;}
.note-check input{width:auto;margin:0;}
.note-image-panel{flex-wrap:wrap;}
.note-image-url-row{display:flex;gap:5px;flex:1 1 320px;}
.note-upload-image{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;}
.note-image-message{color:#15803d;font-size:9px;font-weight:800;}
.note-image-message.error{color:#b42318;}
.note-visual{min-height:190px;padding:14px 15px;outline:none;color:#0f172a;font-size:12px;line-height:1.6;}
.note-visual:empty::before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none;}
.note-visual:focus{box-shadow:inset 0 0 0 1px #60a5fa;}
.note-visual img{display:block;max-width:100%;height:auto;margin:10px 0;border:1px solid #e2e8f0;border-radius:4px;}
.note-code{display:grid;grid-template-columns:44px minmax(0,1fr);height:240px;background:#0f172a;}
.note-code.hidden{display:none;}
.note-code-gutter{overflow:hidden;padding:12px 8px 12px 0;border-right:1px solid #243044;color:#64748b;text-align:right;white-space:pre;user-select:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.6;}
.note-code-stage{position:relative;min-width:0;overflow:hidden;}
.note-code-highlight,.note-code-source{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:12px 14px;border:0;border-radius:4px;overflow:auto;resize:none;white-space:pre;tab-size:2;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.6;}
.note-code-highlight{z-index:1;pointer-events:none;background:#0f172a;color:#cbd5e1;}
.note-code-source{z-index:2;background:transparent;color:transparent;caret-color:#fff;-webkit-text-fill-color:transparent;}
.note-code-source::selection{background:rgba(59,130,246,.38);}
.note-statusbar{display:flex;justify-content:space-between;min-height:27px;padding:5px 8px;border-top:1px solid #e5e7eb;background:#f8fafc;color:#64748b;font-size:8px;font-weight:700;}
.code-tag{color:#7dd3fc;}.code-punct{color:#94a3b8;}.code-comment{color:#64748b;font-style:italic;}
.review-content-photos{display:block;margin-top:12px;}
.listing-photo-thumb{position:relative;width:180px;max-width:100%;display:block;overflow:hidden;padding:0;border:1px solid #dbe3ee;border-radius:4px;background:#f8fafc;cursor:zoom-in;aspect-ratio:4/3;}
.listing-photo-thumb img{width:100%;height:100%;display:block;object-fit:cover;}
.listing-photo-zoom{position:absolute;right:7px;bottom:7px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:rgba(15,23,42,.78);color:#fff;}
.listing-photo-zoom svg{width:16px;height:16px;fill:currentColor;}
.listing-image-lightbox{position:fixed;inset:0;z-index:180;display:flex;align-items:center;justify-content:center;padding:28px;background:rgba(2,6,23,.78);backdrop-filter:blur(3px);}
.listing-image-lightbox.hidden{display:none;}
.listing-image-dialog{position:relative;max-width:min(1100px,94vw);max-height:92vh;}
.listing-image-dialog img{display:block;max-width:100%;max-height:88vh;border-radius:4px;box-shadow:0 24px 80px rgba(0,0,0,.35);}
.listing-image-close{position:absolute;top:-14px;right:-14px;z-index:2;}
.review-modal-message.warning{color:#b45309;}
@media(pointer:coarse){.note-tool{width:42px;height:42px;}.note-mode{min-height:42px;}.listing-photo-thumb{width:220px;}}
@media(max-width:640px){.note-toolbar{flex-wrap:wrap;}.note-spacer{display:none;}.note-inline-panel{align-items:stretch;flex-wrap:wrap;}.note-image-url-row{flex:1 1 100%;}.note-code{grid-template-columns:38px minmax(0,1fr);height:220px;}}

/* v0.1.27 Prose editor + required decision UX */
.prose-editor{
    margin-top:14px;
}
.prose-editor-label{
    margin-bottom:6px;
}
.prose-editor-label label{
    margin:0;
    color:#1e293b;
    font-size:10px;
    font-weight:900;
}
.prose-editor-shell{
    overflow:hidden;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
}
.prose-toolbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    min-height:44px;
    padding:5px 6px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.prose-tools{
    display:flex;
    align-items:center;
    gap:3px;
    min-width:0;
    flex-wrap:wrap;
}
.prose-format{
    width:auto;
    min-width:108px;
    min-height:31px;
    margin:0;
    padding:4px 28px 4px 8px;
    border-color:#d6dde8;
    background:#fff;
    font-size:9px;
    font-weight:800;
}
.prose-divider{
    width:1px;
    height:21px;
    margin:0 2px;
    background:#d8dee8;
}
.prose-tool{
    width:31px;
    height:31px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent;
    color:#475569;
    cursor:pointer;
    font-size:10px;
    font-weight:900;
}
.prose-tool:hover,
.prose-tool:focus{
    border-color:#cbd5e1;
    background:#fff;
    color:#0f172a;
    outline:none;
}
.prose-tool svg{
    width:16px;
    height:16px;
    fill:currentColor;
}
.prose-image-tool{
    color:#2563eb;
}
.prose-mode-switch{
    flex:0 0 auto;
    display:flex;
    gap:2px;
    padding:2px;
    border:1px solid #d8dee8;
    border-radius:4px;
    background:#eef2f7;
}
.prose-mode{
    min-width:58px;
    min-height:29px;
    padding:5px 8px;
    border:0;
    border-radius:4px;
    background:transparent;
    color:#64748b;
    cursor:pointer;
    font-size:9px;
    font-weight:900;
}
.prose-mode.active{
    background:#fff;
    color:#0f172a;
    box-shadow:0 1px 4px rgba(15,23,42,.08);
}
.prose-popover{
    display:flex;
    align-items:center;
    gap:6px;
    padding:7px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.prose-popover.hidden{
    display:none;
}
.prose-popover input[type="url"]{
    flex:1;
    min-height:34px;
    margin:0;
    font-size:10px;
}
.prose-check{
    display:flex;
    align-items:center;
    gap:4px;
    margin:0;
    color:#64748b;
    white-space:nowrap;
    font-size:9px;
    font-weight:700;
}
.prose-check input{
    width:auto;
    margin:0;
}
.prose-image-popover{
    display:grid;
    grid-template-columns:minmax(220px,1fr) auto auto auto auto;
    align-items:center;
    gap:6px;
    padding:8px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.prose-image-popover.hidden{
    display:none;
}
.prose-image-url{
    min-width:0;
    min-height:36px;
    margin:0;
    font-size:10px;
}
.prose-popover-button{
    min-height:36px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:6px 10px;
    border:1px solid #d6dde8;
    border-radius:4px;
    background:#fff;
    color:#334155;
    cursor:pointer;
    white-space:nowrap;
    font-size:9px;
    font-weight:900;
}
.prose-popover-button:hover,
.prose-popover-button:focus{
    border-color:#94a3b8;
    background:#f1f5f9;
    outline:none;
}
.prose-upload-button{
    margin:0;
}
.prose-image-message{
    grid-column:1 / -1;
    min-height:14px;
    color:#15803d;
    font-size:9px;
    font-weight:800;
}
.prose-image-message.error{
    color:#b42318;
}
.prose-visual{
    min-height:190px;
    padding:15px 16px;
    outline:none;
    color:#0f172a;
    font-size:12px;
    line-height:1.65;
}
.prose-visual:empty::before{
    content:attr(data-placeholder);
    color:#94a3b8;
    pointer-events:none;
}
.prose-visual:focus{
    box-shadow:inset 0 0 0 1px #60a5fa;
}
.prose-visual img{
    display:block;
    max-width:100%;
    height:auto;
    margin:10px 0;
    border:1px solid #e2e8f0;
    border-radius:4px;
}
.prose-code{
    display:grid;
    grid-template-columns:42px minmax(0,1fr);
    height:235px;
    background:#0b1220;
}
.prose-code.hidden{
    display:none;
}
.prose-code-gutter{
    overflow:hidden;
    padding:12px 7px 12px 0;
    border-right:1px solid #243044;
    color:#64748b;
    text-align:right;
    white-space:pre;
    user-select:none;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:11px;
    line-height:1.6;
}
.prose-code-stage{
    position:relative;
    min-width:0;
    overflow:hidden;
}
.prose-code-highlight,
.prose-code-source{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    margin:0;
    padding:12px 14px;
    border:0;
    border-radius:4px;
    overflow:auto;
    resize:none;
    white-space:pre;
    tab-size:2;
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:11px;
    line-height:1.6;
}
.prose-code-highlight{
    z-index:1;
    pointer-events:none;
    background:#0b1220;
    color:#cbd5e1;
}
.prose-code-source{
    z-index:2;
    background:transparent;
    color:transparent;
    caret-color:#fff;
    -webkit-text-fill-color:transparent;
}
.prose-code-source::selection{
    background:rgba(59,130,246,.40);
}
.prose-status{
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:26px;
    padding:4px 8px;
    border-top:1px solid #e2e8f0;
    background:#f8fafc;
    color:#64748b;
    font-size:8px;
    font-weight:700;
}

/* Required Decision state */
.review-decision-modern.is-invalid{
    padding:10px;
    border:1px solid #ef4444;
    border-radius:4px;
    background:#fff7f7;
}
.review-decision-modern.is-invalid legend{
    color:#b91c1c;
}
.review-decision-modern.is-invalid .review-decision-option{
    border-color:#fca5a5;
}
.review-decision-error{
    grid-column:1 / -1;
    margin-top:1px;
    color:#b91c1c;
    font-size:9px;
    font-weight:900;
}
.review-decision-error.hidden{
    display:none;
}

@media(pointer:coarse){
    .prose-tool{
        width:42px;
        height:42px;
    }
    .prose-mode{
        min-height:40px;
    }
    .prose-popover-button,
    .prose-image-url{
        min-height:44px;
    }
}
@media(max-width:820px){
    .prose-toolbar{
        align-items:flex-start;
        flex-direction:column;
    }
    .prose-mode-switch{
        align-self:flex-end;
    }
    .prose-image-popover{
        grid-template-columns:minmax(0,1fr) auto auto;
    }
    .prose-image-url{
        grid-column:1 / -1;
    }
}
@media(max-width:520px){
    .prose-image-popover{
        grid-template-columns:1fr 1fr;
    }
    .prose-image-url{
        grid-column:1 / -1;
    }
    .prose-image-message{
        grid-column:1 / -1;
    }
}


.review-required{
    margin-left:5px;
    color:#b91c1c;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.03em;
}

/* v0.1.28 Custom Decision validation */
.review-decision-modern.is-invalid{
    position:relative;
    border:2px solid #dc2626;
    background:#fff5f5;
    box-shadow:
        0 0 0 3px rgba(220,38,38,.10);
    animation:decisionInvalidPulse .22s ease both;
}
.review-decision-modern.is-invalid .review-decision-option{
    border:2px solid #ef4444;
    background:#fff;
}
.review-decision-modern.is-invalid .review-decision-option.good,
.review-decision-modern.is-invalid .review-decision-option.bad{
    color:#991b1b;
}
.review-decision-modern.is-invalid .review-decision-icon{
    background:#fee2e2;
    color:#b91c1c;
}
.review-decision-modern.is-invalid .review-decision-error{
    display:flex;
    align-items:center;
    min-height:30px;
    padding:6px 8px;
    border:1px solid #fecaca;
    border-radius:4px;
    background:#fee2e2;
    color:#991b1b;
}
@keyframes decisionInvalidPulse{
    from{
        transform:translateX(-3px);
    }
    50%{
        transform:translateX(3px);
    }
    to{
        transform:translateX(0);
    }
}

/* v0.1.29 Post Review comment history */
.review-comment-thread{
    margin:15px 0 4px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
.review-comment-thread-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:10px 12px;
    border-bottom:1px solid #e5e7eb;
    background:#f8fafc;
}
.review-comment-kicker{
    display:block;
    color:#64748b;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.review-comment-thread-head strong{
    display:block;
    margin-top:2px;
    color:#334155;
    font-size:10px;
}
.review-comment-list{
    padding:8px;
}
.review-comment{
    position:relative;
    padding:11px 12px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#fff;
}
.review-comment + .review-comment{
    margin-top:7px;
}
.review-comment-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
    margin-bottom:8px;
}
.review-comment-author{
    display:flex;
    align-items:center;
    gap:8px;
    min-width:0;
}
.review-comment-avatar{
    width:30px;
    height:30px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 30px;
    border-radius:4px;
    background:#eef2ff;
    color:#4338ca;
    font-size:10px;
    font-weight:900;
}
.review-comment-author strong{
    display:block;
    color:#0f172a;
    font-size:10px;
}
.review-comment-author span:not(.review-comment-avatar){
    display:flex;
    align-items:center;
    gap:5px;
    margin-top:2px;
    color:#64748b;
    font-size:8px;
    font-weight:700;
}
.review-comment-edited{
    display:inline-flex;
    align-items:center;
    padding:1px 4px;
    border-radius:4px;
    background:#f1f5f9;
    color:#64748b;
    font-size:7px;
    font-weight:900;
}
.review-comment-actions{
    display:flex;
    align-items:center;
    gap:4px;
}
.review-comment-icon{
    width:30px;
    height:30px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    cursor:pointer;
}
.review-comment-icon svg{
    width:14px;
    height:14px;
    fill:currentColor;
}
.review-comment-icon:hover,
.review-comment-icon:focus{
    border-color:#94a3b8;
    background:#f8fafc;
    color:#0f172a;
    outline:none;
}
.review-comment-icon.danger:hover,
.review-comment-icon.danger:focus{
    border-color:#fecaca;
    background:#fff1f2;
    color:#b91c1c;
}
.review-comment-body{
    color:#334155;
    font-size:10px;
    line-height:1.6;
    overflow-wrap:anywhere;
}
.review-comment-body p:first-child{
    margin-top:0;
}
.review-comment-body p:last-child{
    margin-bottom:0;
}
.review-comment-body img{
    max-width:100%;
    height:auto;
    display:block;
    margin:8px 0;
    border:1px solid #e2e8f0;
    border-radius:4px;
}
.review-comment-delete-confirm{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:6px;
    margin-top:9px;
    padding-top:8px;
    border-top:1px solid #fee2e2;
    color:#991b1b;
    font-size:9px;
    font-weight:900;
}
.review-comment-delete-confirm.hidden{
    display:none;
}
.review-comment-empty{
    padding:20px 12px;
    text-align:center;
    color:#94a3b8;
    font-size:9px;
    font-weight:700;
}
.review-comment-empty.hidden{
    display:none;
}
.review-comment-composer-actions{
    display:flex;
    justify-content:flex-end;
    gap:7px;
    margin-top:8px;
}
.review-comment-composer-actions .hidden{
    display:none;
}
.review-comment-message{
    min-height:18px;
    margin-top:5px;
    color:#15803d;
    font-size:9px;
    font-weight:800;
}
.review-comment-message.error{
    color:#b42318;
}
.review-comment-message.warning{
    color:#b45309;
}

/* Keep Review decision and comment actions visually separate. */
.review-modal-footer{
    margin-top:18px;
}

@media(pointer:coarse){
    .review-comment-icon{
        width:44px;
        height:44px;
    }
    .review-comment-composer-actions .btn{
        min-height:44px;
    }
}
@media(max-width:560px){
    .review-comment-head{
        align-items:center;
    }
    .review-comment-author{
        align-items:flex-start;
    }
    .review-comment-composer-actions{
        flex-direction:column-reverse;
    }
    .review-comment-composer-actions .btn{
        width:100%;
    }
}

/* v0.1.30 Anchored note delete popover */
.comment-delete-popover{
    position:fixed;
    z-index:280;
    width:238px;
    padding:11px;
    border:1px solid #fecaca;
    border-radius:4px;
    background:#fff;
    box-shadow:0 16px 42px rgba(15,23,42,.18),0 3px 10px rgba(15,23,42,.08);
}
.comment-delete-popover.hidden{display:none;}
.comment-delete-popover-copy strong{display:block;color:#991b1b;font-size:10px;}
.comment-delete-popover-copy span{display:block;margin-top:3px;color:#64748b;font-size:8px;line-height:1.4;}
.comment-delete-popover-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:10px;}
.comment-delete-popover-actions .tiny{min-height:32px;padding:6px 9px;}
.comment-delete-popover-arrow{
    position:absolute;width:10px;height:10px;border-radius:4px;background:#fff;transform:rotate(45deg);
}
.comment-delete-popover.place-left .comment-delete-popover-arrow{
    right:-6px;top:50%;margin-top:-5px;border-top:1px solid #fecaca;border-right:1px solid #fecaca;
}
.comment-delete-popover.place-right .comment-delete-popover-arrow{
    left:-6px;top:50%;margin-top:-5px;border-left:1px solid #fecaca;border-bottom:1px solid #fecaca;
}
.comment-delete-popover.place-below .comment-delete-popover-arrow{
    top:-6px;right:18px;border-left:1px solid #fecaca;border-top:1px solid #fecaca;
}
.comment-delete-popover.place-above .comment-delete-popover-arrow{
    bottom:-6px;right:18px;border-right:1px solid #fecaca;border-bottom:1px solid #fecaca;
}
.review-comment-delete-confirm{display:none !important;}
@media(pointer:coarse){
    .comment-delete-popover{width:min(270px,calc(100vw - 24px));}
    .comment-delete-popover-actions .tiny{min-width:76px;min-height:44px;}
}
@media(max-width:420px){.comment-delete-popover{width:calc(100vw - 20px);}}

/* v0.1.31 Comment-linked images */
.review-comment-media{margin-top:9px;padding:9px 10px;border:1px solid #dbe3ee;border-radius:4px;background:#f8fafc;}
.review-comment-media label{display:block;margin-bottom:6px;color:#334155;font-size:9px;font-weight:900;}
.review-comment-media label span{color:#64748b;font-weight:700;}
.review-comment-media input[type="file"]{width:100%;margin:0;}
.review-comment-file-selection{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px;}
.review-comment-file-selection:empty{display:none;}
.review-comment-file-selection span{padding:4px 6px;border:1px solid #dbe3ee;border-radius:4px;background:#fff;color:#475569;font-size:8px;font-weight:700;}
.review-comment-attachments{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:7px;margin-top:10px;}
.review-comment-attachment{position:relative;min-width:0;overflow:hidden;border:1px solid #e2e8f0;border-radius:4px;background:#f8fafc;}
.review-comment-image{width:100%;display:block;padding:0;border:0;background:transparent;cursor:zoom-in;aspect-ratio:4 / 3;}
.review-comment-image img{width:100%;height:100%;display:block;object-fit:cover;}
.review-comment-attachment>a{min-height:64px;display:flex;align-items:center;padding:9px;color:#2563eb;font-size:8px;overflow-wrap:anywhere;}
.attachment-remove{position:absolute;top:5px;right:5px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid rgba(255,255,255,.9);border-radius:4px;background:rgba(15,23,42,.82);color:#fff;cursor:pointer;font-size:16px;line-height:1;}
.attachment-remove:hover,.attachment-remove:focus{background:#b91c1c;outline:none;}
.review-legacy-attachments{margin-top:11px;padding:9px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#f8fafc;}
.review-legacy-attachments.hidden{display:none;}
.review-legacy-attachments-title{margin-bottom:6px;color:#64748b;font-size:8px;font-weight:900;text-transform:uppercase;}
.review-legacy-attachments-list{display:flex;flex-wrap:wrap;gap:6px;}
.legacy-attachment-chip{position:relative;min-height:32px;display:inline-flex;align-items:center;padding:5px 34px 5px 8px;border:1px solid #bfdbfe;border-radius:4px;background:#eff6ff;}
.legacy-attachment-chip a{color:#1d4ed8;font-size:8px;font-weight:800;}
.legacy-attachment-chip .attachment-remove{top:2px;right:2px;width:26px;height:26px;}
@media(pointer:coarse){.attachment-remove{width:38px;height:38px}.legacy-attachment-chip{min-height:44px;padding-right:46px}}
/* v0.1.32 Review save completion + Admin nav cleanup */
.review-modal-footer{
    position:sticky;
    bottom:0;
    z-index:8;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin:18px -17px -17px;
    padding:11px 17px;
    border-top:1px solid #e2e8f0;
    background:rgba(255,255,255,.96);
    backdrop-filter:blur(6px);
}
.review-modal-footer-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    margin-left:auto;
}
.review-save-state{
    min-height:34px;
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:6px 9px;
    border:1px solid #bbf7d0;
    border-radius:4px;
    background:#f0fdf4;
    color:#166534;
    font-size:9px;
    font-weight:900;
}
.review-save-state.hidden{display:none;}
.review-save-state.warning{
    border-color:#fde68a;
    background:#fffbeb;
    color:#92400e;
}
.review-save-state svg{
    width:15px;
    height:15px;
    flex:0 0 15px;
    fill:currentColor;
}
#dashboardReviewSave.saved{
    border-color:#16a34a;
    background:#16a34a;
    color:#fff;
}
@media(max-width:560px){
    .review-modal-footer{
        align-items:stretch;
        flex-direction:column;
        margin-left:-13px;
        margin-right:-13px;
        margin-bottom:-13px;
        padding:10px 13px;
    }
    .review-save-state{
        width:100%;
        justify-content:center;
    }
    .review-modal-footer-actions{
        width:100%;
        margin-left:0;
    }
    .review-modal-footer-actions .btn{flex:1;}
}

/* v0.1.33 Review-state progress + persistent decision + flush modal footer */
.sales-progress-track{
    display:flex;
    align-items:stretch;
    overflow:hidden;
    background:#e5e7eb;
}
.sales-progress-segment{
    display:block;
    height:100%;
    flex:0 0 auto;
    width:0;
    transition:width .28s ease;
}
.sales-progress-segment.good{
    background:#22c55e;
}
.sales-progress-segment.bad{
    background:#ef4444;
}
.sales-progress-segment.unreviewed{
    background:#94a3b8;
}

/* Card accent identifies the Sales card only; progress is review state. */
.sales-progress-fill,
.sales-progress-card.target-met .sales-progress-fill{
    background:transparent;
}

.review-decision-option.good.is-selected{
    border-color:#22c55e;
    background:#f0fdf4;
    color:#166534;
    box-shadow:0 0 0 1px rgba(34,197,94,.12);
}
.review-decision-option.good.is-selected .review-decision-icon{
    background:#dcfce7;
    color:#15803d;
}
.review-decision-option.good.is-selected .review-decision-check{
    display:flex;
    background:#16a34a;
}
.review-decision-option.bad.is-selected{
    border-color:#ef4444;
    background:#fff1f2;
    color:#991b1b;
    box-shadow:0 0 0 1px rgba(239,68,68,.12);
}
.review-decision-option.bad.is-selected .review-decision-icon{
    background:#fee2e2;
    color:#b91c1c;
}
.review-decision-option.bad.is-selected .review-decision-check{
    display:flex;
    background:#dc2626;
}

/* Only the middle content scrolls; the action bar is the modal bottom edge. */
.review-modal-form{
    flex:1 1 auto;
    min-height:0;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    padding:0;
}
.review-modal-scroll{
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
    overflow-anchor:none;
    padding:16px 17px 14px;
}
.review-modal-footer{
    position:relative;
    bottom:auto;
    flex:0 0 auto;
    margin:0;
    padding:11px 17px;
    border-top:1px solid #e2e8f0;
    background:#fff;
    backdrop-filter:none;
}
.review-modal-loading{
    flex:1 1 auto;
    min-height:0;
    overflow:auto;
}
@media(max-width:560px){
    .review-modal-scroll{
        padding:13px 13px 10px;
    }
    .review-modal-footer{
        margin:0;
        padding:10px 13px;
    }
}

/* v0.1.34 Marketplace content cards + persistent Review History */
.sales-expanded-grid{
    grid-template-columns:
        repeat(auto-fill,minmax(245px,1fr));
    gap:11px;
    padding:11px;
}
.sales-post-tile{
    min-height:0;
    padding:0;
    overflow:hidden;
    border-top-width:1px;
    background:#fff;
}
.sales-post-tile.review-good{
    background:#fff;
}
.sales-post-tile.review-bad{
    background:#fff;
}
.sales-post-card-media{
    position:relative;
    height:138px;
    overflow:hidden;
    border-bottom:1px solid #e2e8f0;
    background:#f1f5f9;
}
.sales-post-card-image{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}
.sales-post-card-placeholder{
    width:100%;
    height:100%;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:7px;
    color:#64748b;
    background:
        linear-gradient(
            145deg,
            #f8fafc,
            #eef2f7
        );
    font-size:9px;
    font-weight:800;
}
.sales-post-card-placeholder .platform-logo{
    width:44px;
    height:44px;
    flex-basis:44px;
}
.sales-post-card-sequence{
    position:absolute;
    left:8px;
    top:8px;
    min-width:46px;
    height:28px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0 7px;
    border-radius:4px;
    background:rgba(255,255,255,.92);
    color:#334155;
    box-shadow:0 2px 8px rgba(15,23,42,.10);
    font-size:9px;
    font-weight:900;
}
.review-good .sales-post-card-sequence{
    background:#dcfce7;
    color:#166534;
}
.review-bad .sales-post-card-sequence{
    background:#fee2e2;
    color:#991b1b;
}
.sales-post-card-platform{
    position:absolute;
    right:8px;
    top:8px;
}
.sales-post-card-platform .platform-logo{
    width:34px;
    height:34px;
    flex-basis:34px;
    box-shadow:0 2px 8px rgba(15,23,42,.12);
}
.sales-post-card-body{
    min-height:104px;
    padding:11px 12px 9px;
}
.sales-post-card-body h3{
    display:-webkit-box;
    margin:0;
    overflow:hidden;
    color:#0f172a;
    font-size:12px;
    line-height:1.35;
    font-weight:900;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-post-card-body p{
    display:-webkit-box;
    margin:6px 0 0;
    overflow:hidden;
    color:#64748b;
    font-size:9px;
    line-height:1.45;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-post-card-footer{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    min-height:40px;
    padding:8px 12px;
    border-top:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-post-card-time{
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.sales-post-tile-status{
    padding:3px 6px;
    border-radius:4px;
    background:#e2e8f0;
    color:#475569;
    font-size:8px;
    font-weight:900;
}
.sales-post-tile-status.good{
    background:#dcfce7;
    color:#166534;
}
.sales-post-tile-status.bad{
    background:#fee2e2;
    color:#991b1b;
}
.sales-post-tile.review-good{
    border-color:#86efac;
}
.sales-post-tile.review-bad{
    border-color:#fca5a5;
}

/* Old time-first card presentation is retired. */
.sales-post-tile-top,
.sales-post-tile-main,
.sales-post-tile-footer{
    display:none;
}

/* Combined Review + Comment activity history. */
.review-history-event{
    padding:11px 12px;
    border:1px solid #e2e8f0;
    border-left:4px solid #94a3b8;
    border-radius:4px;
    background:#fff;
}
.review-history-event + .review-history-event,
.review-comment + .review-history-event,
.review-history-event + .review-comment{
    margin-top:7px;
}
.review-history-event.good{
    border-left-color:#22c55e;
    background:#f8fff9;
}
.review-history-event.bad{
    border-left-color:#ef4444;
    background:#fffafa;
}
.review-history-decision{
    display:inline-flex;
    align-items:center;
    min-height:24px;
    padding:4px 7px;
    border-radius:4px;
    font-size:8px;
    font-weight:900;
}
.review-history-decision.good{
    background:#dcfce7;
    color:#166534;
}
.review-history-decision.bad{
    background:#fee2e2;
    color:#991b1b;
}
.review-history-copy{
    color:#475569;
    font-size:9px;
    line-height:1.5;
}

@media(pointer:coarse){
    .sales-expanded-grid{
        grid-template-columns:
            repeat(auto-fill,minmax(270px,1fr));
    }
    .sales-post-card-media{
        height:150px;
    }
}
@media(max-width:600px){
    .sales-expanded-grid{
        grid-template-columns:1fr;
    }
    .sales-post-card-media{
        height:180px;
    }
}

/* v0.1.35 Audit History + soft-deleted tombstones */
.review-history-copy{
    display:flex;
    align-items:center;
    gap:7px;
    flex-wrap:wrap;
}
.review-history-copy strong{
    color:#334155;
    font-size:9px;
}
.review-history-copy span{
    padding:3px 6px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.review-comment-head-right{
    display:flex;
    align-items:center;
    gap:7px;
}
.review-comment-action-label{
    display:inline-flex;
    min-height:24px;
    align-items:center;
    padding:3px 6px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f8fafc;
    color:#475569;
    font-size:8px;
    font-weight:900;
}
.review-comment.is-deleted{
    border-color:#f3c5c5;
    background:#fffafa;
}
.review-comment.is-deleted .review-comment-body{
    opacity:.58;
}
.review-comment-deleted-audit{
    margin-top:9px;
    padding:7px 8px;
    border:1px solid #fecaca;
    border-radius:4px;
    background:#fff1f2;
    color:#991b1b;
    font-size:8px;
    font-weight:800;
}
.review-comment-deleted-audit strong{
    font-weight:900;
}
.review-comment-edit-audit{
    margin-top:7px;
    color:#64748b;
    font-size:8px;
    font-weight:700;
}
.review-comment-attachment{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(120px,1fr) auto;
    align-items:start;
    gap:7px;
}
.review-comment-attachment.is-deleted{
    border-color:#fecaca;
    background:#fffafa;
}
.review-comment-attachment-media{
    position:relative;
    min-width:0;
}
.attachment-deleted-overlay{
    position:absolute;
    inset:auto 5px 5px 5px;
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:24px;
    padding:4px 6px;
    border-radius:4px;
    background:rgba(127,29,29,.88);
    color:#fff;
    font-size:8px;
    font-weight:900;
}
.review-comment-attachment.is-deleted img{
    opacity:.58;
}
.review-comment-attachment-audit{
    min-width:0;
    padding-top:3px;
}
.review-comment-attachment-audit > span{
    display:block;
    overflow:hidden;
    color:#334155;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:8px;
    font-weight:900;
}
.review-comment-attachment-audit > small{
    display:block;
    margin-top:3px;
    color:#64748b;
    font-size:7px;
    line-height:1.4;
}
.attachment-deleted-audit{
    margin-top:5px;
    color:#991b1b;
    font-size:7px;
    line-height:1.4;
}
.attachment-deleted-audit strong{
    font-weight:900;
}
.legacy-attachment-chip{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:3px 7px;
}
.legacy-attachment-chip small{
    grid-column:1 / -1;
    color:#64748b;
    font-size:7px;
}
.legacy-attachment-chip.is-deleted{
    border-color:#fecaca;
    background:#fff1f2;
}
.legacy-attachment-chip.is-deleted a{
    opacity:.58;
}
.comment-delete-popover-copy span{
    line-height:1.45;
}

@media(max-width:600px){
    .review-comment-head-right{
        align-items:flex-end;
        flex-direction:column;
    }
    .review-comment-attachment{
        grid-template-columns:1fr auto;
    }
    .review-comment-attachment-audit{
        grid-column:1 / -1;
    }
}

/* v0.1.36 Compact History thumbnails + persisted Decision state */
.review-decision-saved{
    display:inline-flex;
    align-items:center;
    margin-left:7px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    text-transform:none;
    letter-spacing:0;
}
.review-decision-saved.hidden{
    display:none;
}

/* Comment images are evidence thumbnails, not full-size History content. */
.review-comment-attachments{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-start;
    gap:8px;
    margin-top:10px;
}
.review-comment-attachment{
    position:relative;
    width:136px;
    min-width:136px;
    max-width:136px;
    display:flex;
    flex-direction:column;
    gap:0;
    overflow:hidden;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
}
.review-comment-attachment-media{
    position:relative;
    width:136px;
    height:96px;
    overflow:hidden;
    background:#e2e8f0;
}
.review-comment-image{
    width:136px;
    height:96px;
    display:block;
    padding:0;
    border:0;
    border-radius:4px;
    background:#e2e8f0;
    cursor:zoom-in;
    aspect-ratio:auto;
}
.review-comment-image img{
    width:136px;
    height:96px;
    display:block;
    object-fit:cover;
}
.review-comment-attachment-audit{
    width:100%;
    min-width:0;
    padding:6px 7px 7px;
}
.review-comment-attachment-audit > span{
    display:block;
    overflow:hidden;
    color:#334155;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:7px;
    font-weight:900;
}
.review-comment-attachment-audit > small{
    display:block;
    margin-top:2px;
    overflow:hidden;
    color:#64748b;
    font-size:7px;
    line-height:1.35;
}
.review-comment-attachment .attachment-remove{
    top:5px;
    right:5px;
}
.review-comment-attachment.is-deleted{
    width:136px;
    min-width:136px;
    max-width:136px;
}
.review-comment-attachment.is-deleted img{
    opacity:.45;
}
.attachment-deleted-overlay{
    inset:auto 5px 5px 5px;
    min-height:22px;
    padding:3px 5px;
    font-size:7px;
}
.attachment-deleted-audit{
    margin-top:4px;
    font-size:7px;
}

/* Strong selected state; this is also set by JS from DB history. */
.review-decision-option.good.is-selected{
    border:2px solid #22c55e;
    background:#ecfdf3;
}
.review-decision-option.bad.is-selected{
    border:2px solid #ef4444;
    background:#fff1f2;
}

@media(pointer:coarse){
    .review-comment-attachment,
    .review-comment-attachment.is-deleted{
        width:150px;
        min-width:150px;
        max-width:150px;
    }
    .review-comment-attachment-media,
    .review-comment-image,
    .review-comment-image img{
        width:150px;
        height:106px;
    }
}
@media(max-width:420px){
    .review-comment-attachment,
    .review-comment-attachment.is-deleted{
        width:118px;
        min-width:118px;
        max-width:118px;
    }
    .review-comment-attachment-media,
    .review-comment-image,
    .review-comment-image img{
        width:118px;
        height:84px;
    }
}

/* v0.1.37 Canonical History-driven status/progress */
.sales-progress-track{
    position:relative;
    min-height:14px;
    height:14px;
    border:1px solid #cbd5e1;
    background:#e5e7eb;
}
.sales-progress-segment{
    min-height:12px;
}
.sales-progress-segment.good{
    background:#22c55e;
}
.sales-progress-segment.bad{
    background:#ef4444;
}
.sales-progress-segment.unreviewed{
    background:#94a3b8;
}

/* Reloaded cards must visually preserve the latest DB History decision. */
.sales-post-tile.review-good{
    border:2px solid #86efac;
    background:#f0fdf4;
}
.sales-post-tile.review-bad{
    border:2px solid #fca5a5;
    background:#fff1f2;
}
.sales-post-tile.review-good .sales-post-card-footer{
    background:#ecfdf3;
}
.sales-post-tile.review-bad .sales-post-card-footer{
    background:#fff1f2;
}

/* v0.1.38 Permanent image delete + visible Comment Edit */
.review-comment-edit-button{
    min-height:30px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:5px 9px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#2563eb;
    cursor:pointer;
    font-size:8px;
    font-weight:900;
}
.review-comment-edit-button:hover,
.review-comment-edit-button:focus{
    border-color:#93c5fd;
    background:#eff6ff;
    color:#1d4ed8;
    outline:none;
}
.review-comment.is-deleted .review-comment-edit-button{
    border-color:#d8dee8;
    background:#fff;
    color:#475569;
}

/* Even old "Marked as deleted" image tombstones can now be purged. */
.review-comment-attachment.is-deleted .attachment-remove,
.legacy-attachment-chip.is-deleted .attachment-remove{
    display:flex;
    opacity:1;
    z-index:4;
}
.review-comment-attachment .attachment-remove{
    top:5px;
    right:5px;
}
.review-comment-attachment.is-deleted .attachment-deleted-overlay{
    right:5px;
    left:5px;
    padding-right:25px;
}

@media(pointer:coarse){
    .review-comment-edit-button{
        min-height:44px;
        min-width:68px;
        padding:8px 12px;
    }
}

/* v0.1.39 Period reviews + listing date hierarchy + History filter */
.sales-period-review{
    margin:0;
    padding:12px 14px;
    border-bottom:1px solid #dbe3ee;
    background:#fbfdff;
}
.sales-period-review.hidden{
    display:none;
}
.sales-period-review-top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
}
.sales-period-review-label{
    display:block;
    color:#2563eb;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.05em;
}
.sales-period-review-state{
    display:block;
    margin-top:2px;
    color:#0f172a;
    font-size:11px;
}
.sales-period-review-edit{
    min-height:34px;
    padding:6px 10px;
    border:1px solid #bfdbfe;
    border-radius:4px;
    background:#eff6ff;
    color:#1d4ed8;
    cursor:pointer;
    font-size:9px;
    font-weight:900;
}
.sales-period-review-edit:hover,
.sales-period-review-edit:focus{
    border-color:#60a5fa;
    background:#dbeafe;
    outline:none;
}
.sales-period-review-note{
    margin-top:9px;
    color:#334155;
    font-size:10px;
    line-height:1.55;
}
.sales-period-review-note.empty{
    color:#94a3b8;
    font-style:italic;
}
.sales-period-review-note p:first-child{
    margin-top:0;
}
.sales-period-review-note p:last-child{
    margin-bottom:0;
}
.sales-period-review-meta{
    margin-top:7px;
    color:#64748b;
    font-size:8px;
    font-weight:700;
}

.sales-period-review-backdrop{
    position:fixed;
    inset:0;
    z-index:250;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:20px;
    background:rgba(15,23,42,.54);
}
.sales-period-review-backdrop.hidden{
    display:none;
}
.sales-period-review-modal{
    width:min(760px,calc(100vw - 28px));
    max-height:min(720px,calc(100vh - 28px));
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    box-shadow:0 24px 70px rgba(15,23,42,.24);
}
.sales-period-review-modal-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:14px;
    padding:15px 17px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-period-review-modal-head h2{
    margin:2px 0 0;
}
.sales-period-review-modal-head p{
    margin:4px 0 0;
    color:#64748b;
    font-size:9px;
}
.sales-period-review-form{
    min-height:0;
    display:flex;
    flex:1 1 auto;
    flex-direction:column;
    overflow:hidden;
}
.sales-period-review-editor-body{
    min-height:0;
    flex:1 1 auto;
    overflow:auto;
    padding:15px 17px;
}
.sales-period-review-modal-footer{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    flex:0 0 auto;
    padding:11px 17px;
    border-top:1px solid #e2e8f0;
    background:#fff;
}
.sales-period-review-message{
    min-height:18px;
    margin-top:6px;
    color:#15803d;
    font-size:9px;
    font-weight:800;
}
.sales-period-review-message.error{
    color:#b42318;
}

.review-content-date{
    margin:0 0 5px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.03em;
}
.review-content-date.hidden{
    display:none;
}

/* Default History shows active comments only. Deleted comments are opt-in. */
.history-deleted-switch{
    display:flex;
    align-items:center;
    gap:7px;
    min-height:32px;
    padding:4px 7px;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent;
    color:#64748b;
    cursor:pointer;
    font-size:8px;
    font-weight:900;
}
.history-deleted-switch.hidden{
    display:none;
}
.history-deleted-switch:hover,
.history-deleted-switch:focus{
    border-color:#cbd5e1;
    background:#fff;
    outline:none;
}
.history-deleted-switch-track{
    position:relative;
    width:30px;
    height:17px;
    flex:0 0 30px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#e2e8f0;
    transition:background .16s ease,border-color .16s ease;
}
.history-deleted-switch-track > span{
    position:absolute;
    left:2px;
    top:2px;
    width:11px;
    height:11px;
    border-radius:4px;
    background:#fff;
    box-shadow:0 1px 3px rgba(15,23,42,.18);
    transition:transform .16s ease;
}
.history-deleted-switch.active{
    color:#1d4ed8;
}
.history-deleted-switch.active .history-deleted-switch-track{
    border-color:#60a5fa;
    background:#2563eb;
}
.history-deleted-switch.active .history-deleted-switch-track > span{
    transform:translateX(13px);
}
.review-comment-thread-head{
    gap:12px;
}

@media(pointer:coarse){
    .sales-period-review-edit,
    .history-deleted-switch{
        min-height:44px;
    }
    .history-deleted-switch-track{
        width:38px;
        height:22px;
        flex-basis:38px;
    }
    .history-deleted-switch-track > span{
        width:16px;
        height:16px;
    }
    .history-deleted-switch.active .history-deleted-switch-track > span{
        transform:translateX(16px);
    }
}
@media(max-width:600px){
    .sales-period-review-top{
        align-items:flex-start;
    }
    .sales-period-review-backdrop{
        padding:8px;
    }
    .sales-period-review-modal{
        width:100%;
        max-height:calc(100vh - 16px);
    }
    .review-comment-thread-head{
        align-items:flex-start;
        flex-direction:column;
    }
}

/* v0.1.40 Admin greeting + attendance naming + visible language switch */
.admin-dashboard-heading{
    min-width:0;
}
.admin-page-head{
    align-items:flex-start;
}
.admin-page-head .eyebrow{
    margin-bottom:5px;
}
.dashboard-head-controls{
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    gap:9px;
}
.dashboard-language-switch{
    display:grid;
    grid-template-columns:repeat(4,max-content);
    gap:4px;
    padding:3px;
    border:1px solid #d8e0eb;
    border-radius:4px;
    background:#eef2f7;
}
.dashboard-language-button{
    min-height:32px;
    padding:6px 9px;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent;
    color:#64748b;
    cursor:pointer;
    white-space:nowrap;
    font-size:9px;
    font-weight:900;
}
.dashboard-language-button:hover,
.dashboard-language-button:focus{
    border-color:#cbd5e1;
    background:#fff;
    color:#0f172a;
    outline:none;
}
.dashboard-language-button.active{
    border-color:#bfdbfe;
    background:#fff;
    color:#1d4ed8;
    box-shadow:0 1px 4px rgba(15,23,42,.08);
}

/* The page heading no longer repeats the selected date under the title. */
.dashboard-date-copy{
    display:none;
}

@media(pointer:coarse){
    .dashboard-language-button{
        min-height:44px;
        padding:8px 11px;
    }
}
@media(max-width:860px){
    .admin-page-head{
        align-items:stretch;
        flex-direction:column;
        gap:14px;
    }
    .dashboard-head-controls{
        align-items:flex-start;
        width:100%;
    }
    .dashboard-language-switch{
        width:100%;
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
    .dashboard-language-button{
        min-width:0;
        padding-left:5px;
        padding-right:5px;
    }
    .dashboard-date-controls{
        width:100%;
    }
    .dashboard-date-control-row{
        justify-content:flex-start;
    }
}
@media(max-width:560px){
    .dashboard-language-switch{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}

/* v0.1.41 Global menu language switch + Admin-aligned Sales portal */
.topbar{
    min-height:64px;
    height:auto;
    gap:18px;
}
.nav{
    min-width:0;
}
.nav-user{
    white-space:nowrap;
}
.app-language-switch{
    display:flex;
    align-items:center;
    gap:2px;
    padding:2px;
    border:1px solid rgba(219,234,254,.22);
    border-radius:4px;
    background:rgba(255,255,255,.06);
}
.app-language-button{
    min-height:28px;
    padding:4px 7px;
    border:1px solid transparent !important;
    border-radius:4px;
    background:transparent !important;
    color:#cbd5e1 !important;
    cursor:pointer;
    white-space:nowrap;
    font-size:9px;
    font-weight:900;
}
.app-language-button:hover,
.app-language-button:focus{
    border-color:rgba(147,197,253,.35) !important;
    background:rgba(255,255,255,.08) !important;
    color:#fff !important;
    outline:none;
}
.app-language-button.active{
    border-color:#60a5fa !important;
    background:#fff !important;
    color:#1d4ed8 !important;
}

/* The old page-level language control is retired. */
.dashboard-language-switch{
    display:none !important;
}

.sales-portal-head{
    align-items:flex-start;
}
.sales-portal-subtitle{
    max-width:620px;
    margin:0;
    color:#64748b;
    font-size:11px;
    line-height:1.5;
}
.sales-portal-head-actions{
    display:flex;
    align-items:flex-end;
    justify-content:flex-end;
    gap:10px;
    flex-wrap:wrap;
}
.sales-range-filter{
    display:flex;
    align-items:flex-end;
    gap:7px;
    flex-wrap:wrap;
}
.sales-range-filter label{
    margin:0;
    color:#64748b;
    font-size:9px;
    font-weight:800;
}
.sales-range-filter label span{
    display:block;
    margin-bottom:4px;
}
.sales-range-filter input{
    width:144px;
    min-height:38px;
}
.sales-submit-cta{
    min-height:38px;
    display:inline-flex;
    align-items:center;
    gap:6px;
}
.sales-submit-plus{
    font-size:16px;
    line-height:1;
}

.sales-overview-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(150px,1fr));
    gap:10px;
    margin-bottom:16px;
}
.sales-overview-card{
    min-height:102px;
    padding:13px 14px;
    border:1px solid #dbe3ee;
    border-top:4px solid #64748b;
    border-radius:4px;
    background:#fff;
    box-shadow:0 8px 22px rgba(15,23,42,.04);
}
.sales-overview-card.good{
    border-top-color:#22c55e;
}
.sales-overview-card.bad{
    border-top-color:#ef4444;
}
.sales-overview-card.neutral{
    border-top-color:#94a3b8;
}
.sales-overview-card > span{
    color:#64748b;
    font-size:9px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.sales-overview-card strong{
    display:block;
    margin:6px 0 4px;
    color:#0f172a;
    font-size:27px;
    line-height:1;
}
.sales-overview-card small{
    color:#94a3b8;
    font-size:8px;
    font-weight:700;
}

.sales-daily-posts{
    gap:12px;
}
.sales-day-section{
    padding:0;
    overflow:hidden;
    box-shadow:0 10px 28px rgba(15,23,42,.04);
}
.sales-day-head{
    margin:0;
    padding:12px 14px;
    background:#f8fafc;
}
.post-summary.neutral{
    background:#e2e8f0;
    color:#475569;
}

.sales-post-card-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(245px,1fr));
    gap:10px;
    padding:11px;
}
.sales-self-post-card{
    min-width:0;
    overflow:hidden;
    border:1px solid #dbe3ee;
    border-top:3px solid #64748b;
    border-radius:4px;
    background:#fff;
    transition:
        border-color .16s ease,
        box-shadow .16s ease,
        transform .16s ease;
}
.sales-self-post-card:hover{
    box-shadow:0 10px 24px rgba(15,23,42,.08);
    transform:translateY(-1px);
}
.sales-self-post-card.review-good{
    border-color:#86efac;
    border-top-color:#22c55e;
}
.sales-self-post-card.review-bad{
    border-color:#fca5a5;
    border-top-color:#ef4444;
}
.sales-self-post-media{
    position:relative;
    height:138px;
    overflow:hidden;
    border-bottom:1px solid #e2e8f0;
    background:#eef2f7;
}
.sales-self-post-media > img{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}
.sales-self-post-placeholder{
    width:100%;
    height:100%;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:7px;
    color:#64748b;
    background:
        linear-gradient(145deg,#f8fafc,#eef2f7);
    font-size:9px;
    font-weight:800;
}
.sales-self-post-placeholder .platform-logo{
    width:44px;
    height:44px;
    flex-basis:44px;
}
.sales-self-post-sequence{
    position:absolute;
    left:8px;
    top:8px;
    min-width:28px;
    height:28px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0 7px;
    border-radius:4px;
    background:rgba(255,255,255,.94);
    color:#334155;
    box-shadow:0 2px 8px rgba(15,23,42,.10);
    font-size:9px;
    font-weight:900;
}
.review-good .sales-self-post-sequence{
    background:#dcfce7;
    color:#166534;
}
.review-bad .sales-self-post-sequence{
    background:#fee2e2;
    color:#991b1b;
}
.sales-self-post-platform{
    position:absolute;
    right:8px;
    top:8px;
}
.sales-self-post-platform .platform-logo{
    width:34px;
    height:34px;
    flex-basis:34px;
    box-shadow:0 2px 8px rgba(15,23,42,.12);
}
.sales-self-post-body{
    min-height:119px;
    padding:11px 12px 9px;
}
.sales-self-post-date{
    margin-bottom:5px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.025em;
}
.sales-self-post-body h3{
    display:-webkit-box;
    margin:0;
    overflow:hidden;
    color:#0f172a;
    font-size:12px;
    line-height:1.35;
    font-weight:900;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-self-post-body p{
    display:-webkit-box;
    margin:6px 0 0;
    overflow:hidden;
    color:#64748b;
    font-size:9px;
    line-height:1.45;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-self-post-footer{
    min-height:42px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    padding:8px 12px;
    border-top:1px solid #e2e8f0;
    background:#f8fafc;
}
.review-good .sales-self-post-footer{
    background:#ecfdf3;
}
.review-bad .sales-self-post-footer{
    background:#fff1f2;
}
.sales-open-original{
    color:#2563eb;
    font-size:8px;
    font-weight:900;
}
.sales-self-post-status{
    display:inline-flex;
    min-height:24px;
    align-items:center;
    padding:3px 6px;
    border-radius:4px;
    background:#e2e8f0;
    color:#475569;
    font-size:8px;
    font-weight:900;
}
.sales-self-post-status.good{
    background:#dcfce7;
    color:#166534;
}
.sales-self-post-status.bad{
    background:#fee2e2;
    color:#991b1b;
}
.sales-delete-zone{
    border-top:1px solid #e2e8f0;
}
.sales-delete-toggle{
    width:100%;
    min-height:36px;
    padding:7px 12px;
    border:0;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    cursor:pointer;
    text-align:left;
    font-size:8px;
    font-weight:900;
}
.sales-delete-toggle:hover,
.sales-delete-toggle:focus{
    background:#f8fafc;
    color:#b42318;
    outline:none;
}
.sales-delete-form{
    padding:10px 12px 12px;
    background:#fffafa;
}
.sales-delete-form label{
    margin:0;
}
.sales-delete-form input{
    min-height:36px;
    margin-top:4px;
}
.sales-delete-actions{
    display:flex;
    justify-content:flex-end;
    gap:6px;
    margin-top:7px;
}
.sales-delete-message{
    min-height:16px;
    margin-top:5px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.sales-delete-message.ok{
    color:#15803d;
}
.sales-delete-message.error{
    color:#b42318;
}

/* Sales Submit matches Admin panel hierarchy and feedback behavior. */
.sales-submit-layout{
    display:grid;
    grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
    gap:14px;
}
.sales-submit-panel{
    margin:0;
    padding:0;
    overflow:hidden;
}
.sales-submit-section-head{
    padding:14px 16px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-submit-section-head h2{
    margin:3px 0 0;
}
.sales-submit-panel > form,
.sales-submit-panel > #inspectionProgress,
.sales-submit-panel > #inspectionEmpty,
.sales-submit-panel > #inspectionResult{
    margin-left:16px;
    margin-right:16px;
}
.sales-submit-panel > form{
    margin-top:14px;
    margin-bottom:16px;
}
.sales-url-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:7px;
}
.sales-url-row input,
.sales-url-row .btn{
    min-height:40px;
}
.sales-inspection-progress{
    display:grid;
    gap:6px;
    margin-bottom:16px;
}
.sales-inspection-progress div{
    position:relative;
    min-height:34px;
    display:flex;
    align-items:center;
    padding:7px 10px 7px 28px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
    color:#64748b;
    font-size:9px;
    font-weight:700;
}
.sales-inspection-progress div:before{
    content:'';
    position:absolute;
    left:10px;
    width:8px;
    height:8px;
    border-radius:4px;
    background:#cbd5e1;
}
.sales-inspection-progress div.active:before{
    background:#2563eb;
}
.sales-inspection-progress div.done:before{
    background:#22c55e;
}
.sales-inspection-progress div.failed:before{
    background:#ef4444;
}
.sales-verification-empty{
    min-height:260px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:5px;
    margin-top:16px;
    margin-bottom:16px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    color:#64748b;
    text-align:center;
}
.sales-verification-empty-icon{
    width:42px;
    height:42px;
    display:flex;
    align-items:center;
    justify-content:center;
    margin-bottom:5px;
    border-radius:4px;
    background:#eef2ff;
    color:#4f46e5;
    font-size:18px;
    font-weight:900;
}
.sales-verification-empty strong{
    color:#334155;
    font-size:12px;
}
.sales-verification-empty span{
    font-size:9px;
}
#inspectionResult{
    margin-top:16px;
    margin-bottom:16px;
}
.sales-verification-card{
    overflow:hidden;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
.sales-verification-title-row{
    padding:13px 14px 10px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-verification-platform{
    display:inline-flex;
    margin-bottom:5px;
    color:#2563eb;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
}
.sales-verification-title-row h3{
    margin:0;
    color:#0f172a;
    font-size:15px;
}
.sales-verification-description{
    min-height:55px;
    margin:0;
    padding:11px 14px;
    color:#475569;
    font-size:10px;
    line-height:1.55;
}
.sales-verification-facts{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:0;
    margin:0;
    border-top:1px solid #e2e8f0;
}
.sales-verification-facts > div{
    min-width:0;
    padding:9px 12px;
    border-right:1px solid #e2e8f0;
    border-bottom:1px solid #e2e8f0;
}
.sales-verification-facts > div:nth-child(2n){
    border-right:0;
}
.sales-verification-facts > div.wide{
    grid-column:1 / -1;
    border-right:0;
}
.sales-verification-facts dt{
    margin-bottom:3px;
    color:#94a3b8;
    font-size:7px;
    font-weight:900;
    text-transform:uppercase;
}
.sales-verification-facts dd{
    margin:0;
    overflow:hidden;
    color:#334155;
    text-overflow:ellipsis;
    font-size:9px;
}
.sales-submit-message{
    margin-bottom:12px;
    padding:9px 11px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f8fafc;
    color:#475569;
    font-size:9px;
    font-weight:800;
}
.sales-submit-message.ok{
    border-color:#86efac;
    background:#f0fdf4;
    color:#166534;
}
.sales-submit-message.error{
    border-color:#fecaca;
    background:#fff1f2;
    color:#991b1b;
}
.sales-empty-state{
    margin-top:12px;
}

/* Remove old Sales card system once v0.1.41 layouts are active. */
.sales-portal ~ .compact-metrics,
.sales-portal ~ .filter-panel{
    display:none;
}

@media(pointer:coarse){
    .app-language-button,
    .sales-delete-toggle,
    .sales-delete-actions .tiny{
        min-height:44px;
    }
}
@media(max-width:1050px){
    .topbar{
        align-items:flex-start;
        flex-direction:column;
        padding-top:12px;
        padding-bottom:12px;
    }
    .nav{
        width:100%;
        justify-content:flex-start;
    }
}
@media(max-width:900px){
    .sales-portal-head-actions{
        width:100%;
        justify-content:flex-start;
    }
    .sales-overview-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .sales-submit-layout{
        grid-template-columns:1fr;
    }
}
@media(max-width:720px){
    .app-language-switch{
        order:10;
        width:100%;
        display:grid;
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
    .app-language-button{
        min-width:0;
        padding-left:4px;
        padding-right:4px;
    }
    .nav{
        align-items:center;
        flex-wrap:wrap;
    }
    .sales-post-card-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:560px){
    .sales-overview-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .sales-range-filter{
        width:100%;
    }
    .sales-range-filter label{
        flex:1 1 130px;
    }
    .sales-range-filter input{
        width:100%;
    }
    .sales-submit-cta{
        width:100%;
        justify-content:center;
    }
    .sales-post-card-grid{
        grid-template-columns:1fr;
    }
    .sales-self-post-media{
        height:180px;
    }
    .sales-url-row{
        grid-template-columns:1fr;
    }
    .sales-verification-facts{
        grid-template-columns:1fr;
    }
    .sales-verification-facts > div{
        border-right:0;
    }
}

/* v0.1.42 Date-range controls + Sales Apply fix */
.admin-range-controls{align-items:flex-end;}
.admin-range-field{margin:0;color:#64748b;font-size:9px;font-weight:800;}
.admin-range-field>span{display:block;margin-bottom:4px;}
.admin-range-field input{width:144px;min-height:38px;}
.dashboard-date-control-row{align-items:flex-end;}
.dashboard-date-view{display:none!important;}
.sales-range-apply{position:relative;z-index:2;min-height:38px;pointer-events:auto;cursor:pointer;}
@media(pointer:coarse){.admin-range-field input,.sales-range-apply{min-height:44px;}}
@media(max-width:560px){.admin-range-controls,.dashboard-date-control-row{width:100%;}.admin-range-field{flex:1 1 130px;}.admin-range-field input{width:100%;}}

/* v0.1.43 Unified people Review + clickable rating + AJAX Sales UX */
.sales-daily-review{min-height:34px;border:1px solid #bfdbfe;border-radius:4px;background:#eff6ff;color:#1d4ed8;cursor:pointer;font-size:8px;font-weight:900;}
.sales-daily-review:hover,.sales-daily-review:focus{border-color:#60a5fa;background:#dbeafe;outline:none;}
.sales-period-review-rating{display:inline-flex;margin-top:8px;padding:5px 7px;border:1px solid #fde68a;border-radius:4px;background:#fffbeb;color:#92400e;font-size:10px;font-weight:900;}
.sales-period-review-rating.hidden{display:none;}
.sales-review-rating-field{margin-bottom:14px;padding:11px 12px;border:1px solid #dbe3ee;border-radius:4px;background:#f8fafc;}
.sales-review-rating-field.has-error{border-color:#ef4444;background:#fff7f7;}
.sales-review-rating-label{display:flex;align-items:center;gap:7px;margin-bottom:7px;}
.sales-review-rating-label strong{color:#0f172a;font-size:10px;}
.sales-review-rating-label span{color:#b42318;font-size:7px;font-weight:900;text-transform:uppercase;}
.sales-star-rating{display:flex;align-items:center;gap:2px;min-height:40px;}
.sales-star-button{width:38px;height:38px;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:#cbd5e1;cursor:pointer;font-size:27px;line-height:1;}
.sales-star-button.active,.sales-star-button.hover{color:#f59e0b;}
.sales-star-button:hover,.sales-star-button:focus{border-color:#fcd34d;background:#fffbeb;outline:none;}
.sales-star-rating > strong{margin-left:8px;color:#475569;font-size:9px;}
.sales-review-rating-error{margin-top:4px;color:#b42318;font-size:8px;font-weight:900;}
.sales-review-rating-error.hidden{display:none;}
.sales-review-save-history{margin-top:14px;border:1px solid #dbe3ee;border-radius:4px;overflow:hidden;}
.sales-review-save-history-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-bottom:1px solid #e2e8f0;background:#f8fafc;}
.sales-review-save-history-head span{color:#334155;font-size:8px;font-weight:900;text-transform:uppercase;}
.sales-review-save-history-head strong{color:#64748b;font-size:8px;}
.sales-review-save-history-list{max-height:240px;overflow:auto;padding:8px;}
.sales-review-history-item{padding:9px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#fff;}
.sales-review-history-item + .sales-review-history-item{margin-top:7px;}
.sales-review-history-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.sales-review-history-meta strong{color:#0f172a;font-size:9px;}
.sales-review-history-meta span{color:#64748b;font-size:7px;}
.sales-review-history-rating{margin-top:5px;color:#b45309;font-size:10px;font-weight:900;}
.sales-review-history-note{margin-top:6px;color:#475569;font-size:9px;line-height:1.45;}
.sales-review-history-empty{padding:14px;color:#94a3b8;text-align:center;font-size:9px;}
.sales-post-save-complete{margin-top:10px;padding:10px;border:1px solid #86efac;border-radius:4px;background:#f0fdf4;}
.sales-post-save-complete.hidden{display:none;}
.sales-post-save-complete strong,.sales-post-save-complete span{display:block;}
.sales-post-save-complete strong{color:#166534;font-size:11px;}
.sales-post-save-complete span{margin:3px 0 8px;color:#15803d;font-size:9px;}
#saveButton.saved{background:#15803d;color:#fff;}
@media(pointer:coarse){.sales-daily-review{min-height:44px;}.sales-star-button{width:46px;height:46px;font-size:31px;}}
@media(max-width:520px){.sales-star-rating{flex-wrap:wrap;}.sales-review-history-meta{align-items:flex-start;flex-direction:column;}}


.unified-review-redirect{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
}
.unified-review-redirect h2{
    margin:3px 0 5px;
}
.unified-review-redirect p{
    max-width:720px;
    margin:0;
    color:#64748b;
    font-size:10px;
    line-height:1.5;
}
@media(max-width:620px){
    .unified-review-redirect{
        align-items:stretch;
        flex-direction:column;
    }
    .unified-review-redirect .btn{
        width:100%;
        justify-content:center;
    }
}

/* v0.1.44 Editor source UX + compact 6-column Sales cards */

/* Visual / HTML switch always stays on the far right.
   This also covers the older editor class names still present in the app. */
.prose-mode-switch,
.wp-note-mode-tabs,
.note-mode-switch{
    margin-left:auto;
}

/* HTML source mode: light editor everywhere. */
.prose-code,
.wp-code-editor,
.note-code{
    background:#fff;
}

.prose-code-gutter,
.wp-code-gutter,
.note-code-gutter{
    border-right:1px solid #e2e8f0;
    background:#f8fafc;
    color:#94a3b8;
}

.prose-code-highlight,
.wp-code-highlight,
.note-code-highlight{
    background:#fff;
    color:#1e293b;
}

.prose-code-source,
.wp-note-source,
.note-code-source{
    background:transparent !important;
    color:transparent !important;
    caret-color:#0f172a;
    -webkit-text-fill-color:transparent;
}

.prose-code-source::selection,
.wp-note-source::selection,
.note-code-source::selection{
    background:rgba(59,130,246,.18);
}

/* Syntax colors tuned for a white source-editor background. */
.code-tag{
    color:#0369a1;
}
.code-attr{
    color:#7c3aed;
}
.code-string{
    color:#15803d;
}
.code-punct{
    color:#64748b;
}
.code-comment{
    color:#6b7280;
    font-style:italic;
}

/* Sales desktop: six compact cards per row. */
.sales-post-card-grid{
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:8px;
}

.sales-self-post-card{
    min-width:0;
}

.sales-self-post-media{
    height:100px;
}

.sales-self-post-sequence{
    left:6px;
    top:6px;
    min-width:25px;
    height:25px;
    padding:0 6px;
    font-size:8px;
}

.sales-self-post-platform{
    right:6px;
    top:6px;
}

.sales-self-post-platform .platform-logo{
    width:30px;
    height:30px;
    flex-basis:30px;
}

.sales-self-post-body{
    min-height:92px;
    padding:8px 9px 7px;
}

.sales-self-post-date{
    margin-bottom:4px;
    font-size:7px;
}

.sales-self-post-body h3{
    font-size:10px;
    line-height:1.3;
    -webkit-line-clamp:2;
}

.sales-self-post-body p{
    margin-top:4px;
    font-size:8px;
    line-height:1.35;
    -webkit-line-clamp:2;
}

.sales-self-post-footer{
    min-height:36px;
    gap:5px;
    padding:6px 8px;
}

.sales-open-original,
.sales-self-post-status{
    font-size:7px;
}

.sales-self-post-status{
    min-height:22px;
    padding:2px 5px;
}

.sales-delete-toggle{
    min-height:31px;
    padding:5px 8px;
    font-size:7px;
}

/* Responsive density: keep six only where it actually fits. */
@media(max-width:1200px){
    .sales-post-card-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}

@media(max-width:900px){
    .sales-post-card-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}

@media(max-width:720px){
    .sales-post-card-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .sales-self-post-media{
        height:130px;
    }
}

@media(max-width:560px){
    .sales-post-card-grid{
        grid-template-columns:1fr;
    }
    .sales-self-post-media{
        height:180px;
    }
}

/* v0.1.45 Sales interactive cards + touch-first detail modal */

/* Cards are interactive on mouse, keyboard and touch. */
.sales-self-post-card{
    position:relative;
    cursor:pointer;
    outline:none;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
}
.sales-self-post-card:hover,
.sales-self-post-card:focus-visible{
    border-color:#93c5fd;
    box-shadow:0 10px 26px rgba(15,23,42,.10);
    transform:translateY(-1px);
}
.sales-self-post-card.review-good:hover,
.sales-self-post-card.review-good:focus-visible{
    border-color:#4ade80;
}
.sales-self-post-card.review-bad:hover,
.sales-self-post-card.review-bad:focus-visible{
    border-color:#f87171;
}
.sales-self-post-card:active{
    transform:translateY(0);
}

.sales-view-details{
    min-height:28px;
    display:inline-flex;
    align-items:center;
    gap:4px;
    padding:3px 5px;
    border:0;
    border-radius:4px;
    background:transparent;
    color:#2563eb;
    cursor:pointer;
    font-size:7px;
    font-weight:900;
}
.sales-view-details svg{
    width:13px;
    height:13px;
    fill:currentColor;
}
.sales-view-details:hover,
.sales-view-details:focus{
    background:#eff6ff;
    outline:none;
}

/* Keep six across a normal desktop, then collapse deliberately. */
.sales-post-card-grid{
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:8px;
}
@media(max-width:1150px){
    .sales-post-card-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}
@media(max-width:900px){
    .sales-post-card-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}
@media(max-width:680px){
    .sales-post-card-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:480px){
    .sales-post-card-grid{
        grid-template-columns:1fr;
    }
}

/* Read-only Sales post details. */
body.sales-detail-open{
    overflow:hidden;
}
.sales-post-detail-backdrop{
    position:fixed;
    inset:0;
    z-index:260;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:18px;
    background:rgba(15,23,42,.58);
}
.sales-post-detail-backdrop.hidden{
    display:none;
}
.sales-post-detail-modal{
    width:min(760px,calc(100vw - 24px));
    max-height:min(820px,calc(100vh - 24px));
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    box-shadow:0 28px 80px rgba(15,23,42,.28);
}
.sales-post-detail-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    flex:0 0 auto;
    padding:13px 15px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-post-detail-platform{
    display:block;
    margin-bottom:3px;
    color:#2563eb;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.sales-post-detail-head h2{
    margin:0;
    color:#0f172a;
    font-size:17px;
    line-height:1.25;
}
.sales-post-detail-scroll{
    min-height:0;
    flex:1 1 auto;
    overflow:auto;
    overscroll-behavior:contain;
    background:#fff;
}
.sales-post-detail-image-button{
    position:relative;
    width:100%;
    max-height:360px;
    display:block;
    padding:0;
    overflow:hidden;
    border:0;
    border-bottom:1px solid #e2e8f0;
    border-radius:4px;
    background:#eef2f7;
    cursor:zoom-in;
}
.sales-post-detail-image-button.hidden{
    display:none;
}
.sales-post-detail-image-button img{
    width:100%;
    max-height:360px;
    display:block;
    object-fit:contain;
    background:#f8fafc;
}
.sales-post-detail-image-zoom{
    position:absolute;
    right:10px;
    bottom:10px;
    width:34px;
    height:34px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:4px;
    background:rgba(15,23,42,.78);
    color:#fff;
}
.sales-post-detail-image-zoom svg{
    width:17px;
    height:17px;
    fill:currentColor;
}
.sales-post-detail-no-image{
    min-height:170px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:12px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
    color:#94a3b8;
    font-size:10px;
    font-weight:800;
}
.sales-post-detail-no-image.hidden{
    display:none;
}
.sales-post-detail-content{
    padding:14px 16px 18px;
}
.sales-post-detail-status-row{
    display:flex;
    justify-content:flex-start;
    margin-bottom:9px;
}
.sales-post-detail-status{
    display:inline-flex;
    min-height:26px;
    align-items:center;
    padding:4px 7px;
    border-radius:4px;
    background:#e2e8f0;
    color:#475569;
    font-size:8px;
    font-weight:900;
}
.sales-post-detail-status.good{
    background:#dcfce7;
    color:#166534;
}
.sales-post-detail-status.bad{
    background:#fee2e2;
    color:#991b1b;
}
.sales-post-detail-date{
    display:flex;
    align-items:center;
    gap:5px;
    margin-bottom:7px;
    color:#64748b;
    font-size:8px;
    text-transform:uppercase;
}
.sales-post-detail-date strong{
    color:#475569;
}
.sales-post-detail-content h3{
    margin:0;
    color:#0f172a;
    font-size:17px;
    line-height:1.35;
}
.sales-post-detail-content p{
    margin:8px 0 0;
    color:#475569;
    font-size:11px;
    line-height:1.6;
    white-space:pre-wrap;
}
.sales-post-detail-facts{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    margin:14px 0 0;
}
.sales-post-detail-facts > div{
    min-width:0;
    padding:9px 10px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
}
.sales-post-detail-facts dt{
    margin-bottom:3px;
    color:#94a3b8;
    font-size:7px;
    font-weight:900;
    text-transform:uppercase;
}
.sales-post-detail-facts dd{
    margin:0;
    overflow-wrap:anywhere;
    color:#334155;
    font-size:9px;
    font-weight:800;
}
.sales-post-detail-footer{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    flex:0 0 auto;
    padding:10px 14px;
    border-top:1px solid #e2e8f0;
    background:#fff;
}
.sales-post-detail-original.disabled{
    pointer-events:none;
    opacity:.45;
}

/* Full-screen image viewer. */
.sales-image-lightbox{
    position:fixed;
    inset:0;
    z-index:280;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:28px;
    background:rgba(2,6,23,.92);
}
.sales-image-lightbox.hidden{
    display:none;
}
.sales-image-lightbox img{
    max-width:100%;
    max-height:100%;
    object-fit:contain;
}
.sales-image-lightbox-close{
    position:fixed;
    right:18px;
    top:18px;
    width:44px;
    height:44px;
    display:flex;
    align-items:center;
    justify-content:center;
    border:1px solid rgba(255,255,255,.28);
    border-radius:4px;
    background:rgba(15,23,42,.72);
    color:#fff;
    cursor:pointer;
    font-size:22px;
}

/* Coarse-pointer/touch ergonomics: never depend on hover. */
@media(pointer:coarse){
    .sales-view-details,
    .sales-delete-toggle,
    .sales-post-detail-footer .btn,
    .sales-post-detail-close{
        min-height:44px;
    }
    .sales-view-details{
        min-width:92px;
        justify-content:center;
        padding:8px 9px;
        font-size:9px;
    }
    .sales-self-post-card:hover{
        transform:none;
        box-shadow:none;
    }
}
@media(max-width:680px){
    .sales-post-detail-backdrop{
        padding:7px;
        align-items:stretch;
    }
    .sales-post-detail-modal{
        width:100%;
        max-height:calc(100vh - 14px);
    }
    .sales-post-detail-head{
        padding:11px 12px;
    }
    .sales-post-detail-content{
        padding:12px;
    }
    .sales-post-detail-facts{
        grid-template-columns:1fr;
    }
    .sales-post-detail-footer{
        position:sticky;
        bottom:0;
        padding:8px;
    }
    .sales-post-detail-footer .btn{
        flex:1 1 0;
        justify-content:center;
    }
}

/* v0.1.46 Daily status filters + compact date controls */

/* Per-day counts are now touch-friendly filters. */
.sales-day-filter{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:5px;
    flex-wrap:wrap;
}
.sales-day-filter .post-summary{
    min-height:28px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:4px;
    padding:4px 7px;
    border:1px solid transparent;
    border-radius:4px;
    cursor:pointer;
    font:inherit;
    line-height:1;
    transition:
        border-color .14s ease,
        box-shadow .14s ease,
        transform .14s ease;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
}
.sales-day-filter .post-summary strong{
    font-size:8px;
    font-weight:900;
}
.sales-day-filter .post-summary:hover,
.sales-day-filter .post-summary:focus-visible{
    border-color:#94a3b8;
    box-shadow:0 2px 7px rgba(15,23,42,.08);
    outline:none;
}
.sales-day-filter .post-summary.active{
    border-color:#64748b;
    box-shadow:0 0 0 1px rgba(100,116,139,.12);
}
.sales-day-filter .post-summary.good.active{
    border-color:#22c55e;
}
.sales-day-filter .post-summary.bad.active{
    border-color:#ef4444;
}
.sales-day-filter .post-summary.neutral.active{
    border-color:#94a3b8;
}
.sales-filter-hidden{
    display:none !important;
}
.sales-filter-empty{
    margin:0 11px 11px;
    padding:16px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    background:#f8fafc;
    color:#94a3b8;
    text-align:center;
    font-size:9px;
    font-weight:800;
}
.sales-filter-empty.hidden{
    display:none;
}

/* From / To should read like compact filters, not large form fields. */
.sales-range-filter{
    gap:6px;
}
.sales-range-filter label{
    flex:0 0 auto;
}
.sales-range-filter label > span{
    margin-bottom:3px;
    font-size:9px;
}
.sales-range-filter input[type="date"]{
    width:132px;
    min-height:34px;
    padding:5px 8px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#0f172a;
    font-size:11px;
    font-weight:800;
    line-height:1.1;
}
.sales-range-filter input[type="date"]:focus{
    border-color:#2563eb;
    outline:none;
    box-shadow:0 0 0 2px rgba(37,99,235,.12);
}
.sales-range-apply{
    min-height:34px;
    padding:5px 10px;
    font-size:9px;
}

/* Explicit card-height protection:
   long descriptions never stretch one card taller than its siblings.
   Full content remains available in the post detail popup. */
.sales-self-post-body{
    height:92px;
    min-height:92px;
    max-height:92px;
    overflow:hidden;
}
.sales-self-post-body h3{
    display:-webkit-box;
    min-height:26px;
    max-height:26px;
    overflow:hidden;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-self-post-body p{
    display:-webkit-box;
    min-height:22px;
    max-height:22px;
    overflow:hidden;
    text-overflow:ellipsis;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}

/* Keep touch targets comfortable even though desktop fields are compact. */
@media(pointer:coarse){
    .sales-day-filter .post-summary{
        min-height:44px;
        padding:8px 10px;
    }
    .sales-range-filter input[type="date"],
    .sales-range-apply{
        min-height:44px;
        font-size:12px;
    }
}
@media(max-width:560px){
    .sales-range-filter{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:7px;
    }
    .sales-range-filter label{
        min-width:0;
    }
    .sales-range-filter input[type="date"]{
        width:100%;
    }
    .sales-range-apply{
        grid-column:1 / -1;
        width:100%;
    }
    .sales-day-filter{
        justify-content:flex-start;
        width:100%;
        margin-top:8px;
    }
    .sales-day-filter .post-summary{
        flex:1 1 auto;
    }
}

/* v0.1.47 Sales coordinate chart + per-person Admin target settings */

/* Sales header filters update immediately; no Apply button. */
.sales-range-filter{
    position:relative;
}
.sales-range-live-status{
    min-width:54px;
    min-height:18px;
    align-self:flex-end;
    padding-bottom:8px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.sales-range-live-status.error{
    color:#b42318;
}
.sales-range-apply{
    display:none !important;
}

/* The old metric cards are replaced by the activity chart. */
.sales-overview-grid{
    display:none !important;
}

.sales-activity-chart-panel{
    position:relative;
    margin-bottom:16px;
    overflow:hidden;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    box-shadow:0 10px 28px rgba(15,23,42,.05);
}
.sales-activity-chart-panel.sales-range-loading{
    opacity:.62;
    pointer-events:none;
}
.sales-activity-chart-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    padding:13px 15px 10px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-activity-chart-head h2{
    margin:2px 0 0;
    color:#0f172a;
    font-size:16px;
}
.sales-activity-chart-head p{
    margin:4px 0 0;
    color:#64748b;
    font-size:9px;
}
.sales-platform-filter{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:4px;
    max-width:100%;
    overflow-x:auto;
    padding-bottom:2px;
    scrollbar-width:thin;
    -webkit-overflow-scrolling:touch;
}
.sales-platform-filter-button{
    min-height:30px;
    padding:5px 8px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    cursor:pointer;
    white-space:nowrap;
    font-size:8px;
    font-weight:900;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
}
.sales-platform-filter-button:hover,
.sales-platform-filter-button:focus-visible{
    border-color:#93c5fd;
    color:#1d4ed8;
    outline:none;
}
.sales-platform-filter-button.active{
    border-color:#2563eb;
    background:#eff6ff;
    color:#1d4ed8;
}

.sales-chart-legend{
    display:flex;
    align-items:center;
    gap:14px;
    flex-wrap:wrap;
    padding:8px 15px 0;
    color:#64748b;
    font-size:8px;
}
.sales-chart-legend span{
    display:inline-flex;
    align-items:center;
    gap:5px;
}
.sales-chart-legend i{
    width:11px;
    height:11px;
    display:inline-block;
    border-radius:4px;
}
.sales-chart-legend i.good{
    background:#22c55e;
}
.sales-chart-legend i.bad{
    background:#ef4444;
}
.sales-chart-legend i.unreviewed{
    background:#94a3b8;
}
.sales-chart-legend i.missing{
    border:1px dashed #64748b;
    background:transparent;
}

.sales-chart-shell{
    display:grid;
    grid-template-columns:38px minmax(0,1fr);
    gap:6px;
    padding:8px 14px 14px 8px;
}
.sales-chart-y-axis{
    position:relative;
    height:252px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.sales-chart-y-axis span{
    position:absolute;
    right:0;
}
.sales-chart-y-axis .top{
    top:0;
}
.sales-chart-y-axis .target{
    transform:translateY(50%);
    color:#2563eb;
}
.sales-chart-y-axis .zero{
    bottom:26px;
}
.sales-chart-scroll{
    min-width:0;
    overflow-x:auto;
    overflow-y:hidden;
    overscroll-behavior-inline:contain;
    -webkit-overflow-scrolling:touch;
}
.sales-chart-canvas{
    position:relative;
    min-width:100%;
    height:252px;
    border-left:1px solid #cbd5e1;
    border-bottom:1px solid #cbd5e1;
    background:
        linear-gradient(
            to bottom,
            transparent 0,
            transparent calc(100% - 26px),
            #fff calc(100% - 26px)
        ),
        repeating-linear-gradient(
            to bottom,
            rgba(148,163,184,.16) 0,
            rgba(148,163,184,.16) 1px,
            transparent 1px,
            transparent 55px
        );
}
.sales-chart-target-line{
    position:absolute;
    left:0;
    right:0;
    z-index:3;
    height:0;
    border-top:2px solid #2563eb;
    pointer-events:none;
}
.sales-chart-target-line > span{
    position:absolute;
    right:6px;
    bottom:4px;
    padding:3px 5px;
    border-radius:4px;
    background:#eff6ff;
    color:#1d4ed8;
    font-size:7px;
    font-weight:900;
}
.sales-chart-bars{
    position:absolute;
    inset:0;
    display:grid;
    grid-auto-flow:column;
    grid-auto-columns:minmax(38px,1fr);
    gap:5px;
    padding:0 5px;
}
.sales-chart-day{
    position:relative;
    min-width:0;
    height:100%;
    display:grid;
    grid-template-rows:1fr 26px;
    outline:none;
    cursor:default;
}
.sales-chart-day-plot{
    position:relative;
    min-height:0;
}
.sales-chart-stack{
    position:absolute;
    inset:0 7px 0;
    display:flex;
    flex-direction:column-reverse;
    justify-content:flex-start;
    pointer-events:none;
}
.sales-chart-segment{
    display:block;
    min-height:0;
    transition:height .22s ease;
}
.sales-chart-segment.good{
    background:#22c55e;
}
.sales-chart-segment.bad{
    background:#ef4444;
}
.sales-chart-segment.unreviewed{
    background:#94a3b8;
}
.sales-chart-missing{
    position:absolute;
    left:7px;
    right:7px;
    z-index:2;
    border:1px dashed #64748b;
    border-radius:4px;
    background:rgba(255,255,255,.48);
    pointer-events:none;
}
.sales-chart-over-cap{
    position:absolute;
    left:50%;
    top:4px;
    z-index:4;
    transform:translateX(-50%);
    padding:2px 3px;
    border-radius:4px;
    background:#0f172a;
    color:#fff;
    font-size:6px;
    font-weight:900;
}
.sales-chart-x-label{
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    color:#64748b;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:7px;
    font-weight:800;
}
.sales-chart-day:hover .sales-chart-day-plot,
.sales-chart-day:focus-visible .sales-chart-day-plot{
    background:rgba(59,130,246,.05);
}
.sales-chart-day:focus-visible{
    box-shadow:inset 0 0 0 1px #60a5fa;
}

.sales-chart-tooltip{
    position:fixed;
    z-index:420;
    width:176px;
    display:grid;
    gap:3px;
    padding:9px 10px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#0f172a;
    color:#e2e8f0;
    box-shadow:0 10px 30px rgba(15,23,42,.28);
    pointer-events:none;
    font-size:8px;
}
.sales-chart-tooltip.hidden{
    display:none;
}
.sales-chart-tooltip strong{
    margin-bottom:3px;
    color:#fff;
    font-size:9px;
}
.sales-chart-tooltip span{
    display:flex;
    justify-content:space-between;
    gap:10px;
}
.sales-chart-tooltip .good{
    color:#86efac;
}
.sales-chart-tooltip .bad{
    color:#fca5a5;
}
.sales-chart-tooltip .unreviewed{
    color:#cbd5e1;
}
.sales-chart-tooltip .missing{
    color:#fde68a;
}

/* Platform filter applies to the post cards as well as the chart. */
.sales-day-section.sales-platform-section-empty{
    display:none;
}

/* Admin: target editing lives in each person's Settings modal. */
.sales-person-settings-button{
    min-height:34px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:5px;
    padding:5px 8px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    color:#475569;
    cursor:pointer;
    font-size:8px;
    font-weight:900;
}
.sales-person-settings-button svg{
    width:14px;
    height:14px;
    fill:currentColor;
}
.sales-person-settings-button:hover,
.sales-person-settings-button:focus-visible{
    border-color:#93c5fd;
    background:#eff6ff;
    color:#1d4ed8;
    outline:none;
}
.sales-target-editor{
    display:none !important;
}

.sales-person-settings-backdrop{
    position:fixed;
    inset:0;
    z-index:350;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:16px;
    background:rgba(15,23,42,.56);
}
.sales-person-settings-backdrop.hidden{
    display:none;
}
.sales-person-settings-modal{
    width:min(460px,calc(100vw - 20px));
    overflow:hidden;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    box-shadow:0 24px 70px rgba(15,23,42,.28);
}
.sales-person-settings-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    padding:13px 14px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-person-settings-head h3{
    margin:2px 0 0;
}
.sales-person-settings-head p{
    margin:3px 0 0;
    color:#64748b;
    font-size:9px;
}
.sales-person-settings-body{
    padding:15px;
}
.sales-person-target-field{
    margin:0;
}
.sales-person-target-field > span{
    display:block;
    margin-bottom:5px;
    color:#334155;
    font-size:9px;
    font-weight:900;
}
.sales-person-target-field input{
    width:110px;
    min-height:40px;
    font-size:13px;
    font-weight:900;
}
.sales-person-target-field small{
    display:block;
    margin-top:6px;
    color:#64748b;
    font-size:8px;
    line-height:1.45;
}
.sales-person-settings-message{
    min-height:18px;
    margin-top:8px;
    font-size:8px;
    font-weight:800;
}
.sales-person-settings-message.error{
    color:#b42318;
}
.sales-person-settings-message.ok{
    color:#15803d;
}
.sales-person-settings-footer{
    display:flex;
    justify-content:flex-end;
    gap:7px;
    padding:10px 14px;
    border-top:1px solid #e2e8f0;
    background:#fff;
}

@media(pointer:coarse){
    .sales-platform-filter-button,
    .sales-person-settings-button,
    .sales-person-settings-footer .btn{
        min-height:44px;
    }
    .sales-chart-day{
        min-width:44px;
        touch-action:manipulation;
    }
    .sales-chart-tooltip{
        width:188px;
        font-size:9px;
    }
}
@media(max-width:760px){
    .sales-activity-chart-head{
        align-items:stretch;
        flex-direction:column;
    }
    .sales-platform-filter{
        justify-content:flex-start;
    }
    .sales-chart-shell{
        grid-template-columns:32px minmax(0,1fr);
        padding-left:5px;
        padding-right:8px;
    }
}
@media(max-width:560px){
    .sales-portal-head-actions{
        gap:8px;
    }
    .sales-range-filter{
        flex:1 1 100%;
    }
    .sales-range-live-status{
        display:none;
    }
    .sales-activity-chart-panel{
        margin-left:-4px;
        margin-right:-4px;
    }
}

/* v0.1.48 adaptive chart + compact filters + grouped Admin six-column posts */

/* Daily status filter: small SaaS segmented control, not large badges. */
.sales-day-filter{
    display:inline-flex;
    width:auto;
    max-width:100%;
    align-items:center;
    justify-content:flex-end;
    gap:1px;
    padding:2px;
    overflow-x:auto;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f1f5f9;
    scrollbar-width:none;
}
.sales-day-filter::-webkit-scrollbar{
    display:none;
}
.sales-day-filter .post-summary{
    position:relative;
    min-height:24px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:3px;
    padding:3px 6px;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent !important;
    color:#64748b !important;
    box-shadow:none;
    cursor:pointer;
    white-space:nowrap;
    font-size:7px !important;
    font-weight:800;
    line-height:1;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
}
.sales-day-filter .post-summary strong{
    min-width:10px;
    font-size:7px !important;
    font-weight:900;
}
.sales-day-filter .post-summary:hover,
.sales-day-filter .post-summary:focus-visible{
    border-color:#cbd5e1;
    background:#fff !important;
    color:#0f172a !important;
    outline:none;
}
.sales-day-filter .post-summary.active{
    border-color:#cbd5e1 !important;
    background:#fff !important;
    color:#0f172a !important;
    box-shadow:0 1px 3px rgba(15,23,42,.08);
}
.sales-day-filter .post-summary.good.active{
    color:#15803d !important;
}
.sales-day-filter .post-summary.bad.active{
    color:#b42318 !important;
}
.sales-day-filter .post-summary.neutral.active{
    color:#475569 !important;
}
.sales-self-post-card[hidden],
.sales-filter-hidden{
    display:none !important;
}

/* Adaptive chart geometry. The JS sets the bar width and day count. */
.sales-chart-bars{
    grid-auto-flow:unset;
    grid-auto-columns:unset;
    gap:var(--sales-chart-gap,4px);
}
.sales-chart-stack{
    left:50%;
    right:auto;
    width:min(
        calc(100% - 6px),
        var(--sales-chart-bar-width,40px)
    );
    transform:translateX(-50%);
}
.sales-chart-missing{
    left:50%;
    right:auto;
    width:min(
        calc(100% - 6px),
        var(--sales-chart-bar-width,40px)
    );
    transform:translateX(-50%);
}
.sales-chart-x-label.hidden-label{
    visibility:hidden;
}
.sales-chart-scroll{
    scrollbar-width:thin;
}
.sales-activity-chart-panel:not(.sales-chart-scrollable)
.sales-chart-scroll{
    overflow-x:hidden;
}
.sales-chart-day{
    min-width:0;
}

/* Admin expanded posts: date first, then six cards across that day. */
.sales-expanded-grid.admin-grouped-posts{
    display:block;
    padding:0;
}
.sales-expanded-date-group{
    padding:10px 10px 12px;
    border-top:1px solid #e2e8f0;
}
.sales-expanded-date-group:first-child{
    border-top:0;
}
.sales-expanded-date-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    min-height:30px;
    margin-bottom:7px;
    padding:0 2px;
}
.sales-expanded-date-head strong{
    color:#0f172a;
    font-size:10px;
    font-weight:900;
}
.sales-expanded-date-head span{
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.sales-expanded-date-grid{
    display:grid;
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:7px;
}
.sales-expanded-date-grid .sales-post-card-media{
    height:104px;
}
.sales-expanded-date-grid .sales-post-card-body{
    height:82px;
    min-height:82px;
    max-height:82px;
    overflow:hidden;
    padding:8px 9px 7px;
}
.sales-expanded-date-grid .sales-post-card-body h3{
    min-height:26px;
    max-height:26px;
    font-size:10px;
    line-height:1.3;
}
.sales-expanded-date-grid .sales-post-card-body p{
    min-height:21px;
    max-height:21px;
    margin-top:4px;
    font-size:7px;
    line-height:1.35;
}
.sales-expanded-date-grid .sales-post-card-footer{
    min-height:34px;
    padding:6px 8px;
}
.sales-expanded-date-grid .sales-post-card-time,
.sales-expanded-date-grid .sales-post-tile-status{
    font-size:7px;
}

/* Touch: visual filter stays small, but target stays usable. */
@media(pointer:coarse){
    .sales-day-filter .post-summary{
        min-height:36px;
        padding:7px 8px;
        font-size:8px !important;
    }
    .sales-day-filter .post-summary strong{
        font-size:8px !important;
    }
}

@media(max-width:1120px){
    .sales-expanded-date-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}
@media(max-width:900px){
    .sales-expanded-date-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}
@media(max-width:680px){
    .sales-expanded-date-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .sales-day-head{
        align-items:flex-start;
        flex-direction:column;
        gap:7px;
    }
    .sales-day-filter{
        justify-content:flex-start;
    }
}
@media(max-width:480px){
    .sales-expanded-date-grid{
        grid-template-columns:1fr;
    }
}

/* v0.1.50 today-only Sales range + complete X axis */

.sales-back-today{
    min-height:34px;
    align-self:flex-end;
    padding:5px 3px;
    border:0;
    border-radius:4px;
    background:transparent;
    color:#2563eb;
    cursor:pointer;
    font-size:8px;
    font-weight:900;
    white-space:nowrap;
}
.sales-back-today:hover,
.sales-back-today:focus-visible{
    text-decoration:underline;
    outline:none;
}
.sales-back-today.hidden{
    display:none;
}

.sales-chart-x-label{
    min-width:0;
    padding:0 1px;
    overflow:visible;
    font-size:6px;
    letter-spacing:-.02em;
}
.sales-chart-x-label.hidden-label{
    visibility:visible !important;
}

.sales-chart-bars{
    z-index:1;
}
.sales-chart-stack{
    z-index:1;
}
.sales-chart-missing{
    z-index:2;
}

.sales-activity-chart-panel:not(.sales-chart-scrollable)
.sales-chart-scroll{
    overflow-x:hidden;
}
.sales-activity-chart-panel.sales-chart-scrollable
.sales-chart-scroll{
    overflow-x:auto;
}

/* Zero-result filters do not collapse the card area. */
.sales-post-card-grid{
    min-height:270px;
    align-content:start;
}
.sales-filter-empty{
    grid-column:1 / -1;
    min-height:252px;
    margin:0;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:16px;
}
.sales-filter-empty.hidden{
    display:none;
}

@media(pointer:coarse){
    .sales-back-today{
        min-height:44px;
        padding:8px 5px;
    }
    .sales-chart-x-label{
        font-size:7px;
    }
}
@media(max-width:680px){
    .sales-back-today{
        grid-column:1 / -1;
        justify-self:start;
    }
    .sales-post-card-grid{
        min-height:320px;
    }
    .sales-filter-empty{
        min-height:300px;
    }
}
@media(max-width:480px){
    .sales-post-card-grid{
        min-height:370px;
    }
    .sales-filter-empty{
        min-height:350px;
    }
}

/* v0.1.51 calmer chart + true below-axis labels + unified date picker */

/* Sales uses the same date-picker UX as Admin. */
.sales-date-control-row{
    justify-content:flex-end;
}
.sales-range-filter .admin-range-field{
    margin:0;
}
.sales-range-filter .admin-range-field input{
    width:144px;
    min-height:38px;
    height:38px;
    padding:0 9px;
    color:#0f172a;
    font-size:11px;
    font-weight:800;
}
.sales-range-live-status:empty{
    display:none;
}

/* AJAX remains SaaS-like without showing a literal Loading... label. */
.sales-range-loading{
    cursor:progress;
}
.sales-range-loading .sales-chart-scroll,
.sales-range-loading .sales-day-section{
    opacity:.72;
    transition:opacity .12s ease;
}

/* Calmer, less saturated chart palette. */
.sales-chart-legend i.good,
.sales-chart-segment.good{
    background:#6f9f7f;
}
.sales-chart-legend i.bad,
.sales-chart-segment.bad{
    background:#bf7d7d;
}
.sales-chart-legend i.unreviewed,
.sales-chart-segment.unreviewed{
    background:#98a4b3;
}
.sales-chart-legend i.missing{
    border-color:#9aa8b8;
}
.sales-chart-missing{
    border-color:#9aa8b8;
    background:rgba(248,250,252,.58);
}
.sales-chart-target-line{
    border-top-color:#657da6;
}
.sales-chart-target-line > span{
    background:#f1f5f9;
    color:#526985;
}

/*
 * The horizontal axis is the line above the date row.
 * Dates therefore sit physically BELOW the X axis, not inside the plot.
 */
.sales-chart-canvas{
    height:270px;
    border-bottom:0;
    background:
        linear-gradient(
            to bottom,
            transparent 0,
            transparent calc(100% - 28px),
            #fff calc(100% - 28px)
        ),
        repeating-linear-gradient(
            to bottom,
            rgba(148,163,184,.13) 0,
            rgba(148,163,184,.13) 1px,
            transparent 1px,
            transparent 55px
        );
}
.sales-chart-canvas::after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:28px;
    z-index:4;
    border-top:1px solid #cbd5e1;
    pointer-events:none;
}
.sales-chart-day{
    grid-template-rows:1fr 28px;
}
.sales-chart-x-label{
    position:relative;
    z-index:5;
    align-items:flex-start;
    padding-top:6px;
    color:#64748b;
    font-size:7px;
    font-weight:700;
}
.sales-chart-y-axis{
    height:270px;
}
.sales-chart-y-axis .zero{
    bottom:28px;
}

/* Empty dates keep their X label but draw no Missing rectangle. */
.sales-chart-day[data-chart-total="0"] .sales-chart-missing{
    display:none !important;
}
.sales-chart-day[data-chart-total="0"] .sales-chart-day-plot{
    background:transparent;
}
.sales-chart-day[data-chart-total="0"]:hover .sales-chart-day-plot,
.sales-chart-day[data-chart-total="0"]:focus-visible .sales-chart-day-plot{
    background:rgba(148,163,184,.035);
}

@media(pointer:coarse){
    .sales-range-filter .admin-range-field input{
        min-height:44px;
        height:44px;
        font-size:12px;
    }
}

@media(max-width:560px){
    .sales-date-control-row{
        width:100%;
        justify-content:flex-start;
    }
    .sales-range-filter .admin-range-field{
        flex:1 1 130px;
    }
    .sales-range-filter .admin-range-field input{
        width:100%;
    }
}

/* v0.1.52 Daily / Weekly / Monthly Sales presets + one-day chart fix */

.sales-period-switch{
    display:grid;
    grid-template-columns:repeat(3,max-content);
    gap:2px;
    align-self:flex-end;
    padding:2px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#eef2f7;
}
.sales-period-button{
    min-height:34px;
    padding:5px 9px;
    border:1px solid transparent;
    border-radius:4px;
    background:transparent;
    color:#64748b;
    cursor:pointer;
    font-size:8px;
    font-weight:900;
    white-space:nowrap;
}
.sales-period-button:hover,
.sales-period-button:focus-visible{
    border-color:#cbd5e1;
    background:#fff;
    color:#0f172a;
    outline:none;
}
.sales-period-button.active{
    border-color:#bfdbfe;
    background:#fff;
    color:#1d4ed8;
    box-shadow:0 1px 4px rgba(15,23,42,.07);
}

/*
 * Kill the old implicit-column behavior. All chart geometry is explicitly
 * controlled by the current From / To range.
 */
.sales-chart-bars{
    grid-auto-flow:row !important;
    grid-auto-columns:unset !important;
}

/* One selected day = one deliberately thick, centered column. */
.sales-activity-chart-panel.sales-chart-single-day
.sales-chart-bars{
    grid-template-columns:minmax(96px,128px) !important;
    justify-content:center;
    padding-left:0;
    padding-right:0;
}
.sales-activity-chart-panel.sales-chart-single-day
.sales-chart-day{
    width:100%;
    max-width:128px;
    justify-self:center;
}
.sales-activity-chart-panel.sales-chart-single-day
.sales-chart-stack,
.sales-activity-chart-panel.sales-chart-single-day
.sales-chart-missing{
    width:var(--sales-chart-bar-width,72px);
    max-width:82px;
}
.sales-activity-chart-panel.sales-chart-single-day
.sales-chart-x-label{
    font-size:8px;
    font-weight:800;
}

/* Weekly and monthly continue to show each day on the X axis. */
.sales-activity-chart-panel:not(.sales-chart-single-day)
.sales-chart-day{
    min-width:0;
}

@media(pointer:coarse){
    .sales-period-button{
        min-height:44px;
        padding:8px 11px;
        font-size:9px;
    }
}

@media(max-width:900px){
    .sales-portal-head-actions{
        align-items:flex-start;
    }
}

@media(max-width:720px){
    .sales-period-switch{
        grid-template-columns:repeat(3,minmax(0,1fr));
        width:100%;
        order:1;
    }
    .sales-range-filter{
        order:2;
    }
    .sales-submit-cta{
        order:3;
    }
}

@media(max-width:480px){
    .sales-period-button{
        padding-left:5px;
        padding-right:5px;
    }
}

/* v0.1.53 rectangular stacked bar UX + visible period controls */

/*
 * Period switch lives inside the Posting Activity panel so it can never
 * disappear from the page-head row when dates / Submit Post consume width.
 */
.sales-chart-toolbar{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    flex-wrap:wrap;
}
.sales-chart-toolbar .sales-period-switch{
    order:1;
    align-self:auto;
}
.sales-chart-toolbar .sales-platform-filter{
    order:2;
}

/* More explicit, reference-style period selector. */
.sales-chart-toolbar .sales-period-switch{
    padding:2px;
    border:1px solid #d7dee8;
    background:#f1f4f8;
}
.sales-chart-toolbar .sales-period-button{
    min-height:30px;
    padding:4px 9px;
    font-size:8px;
}
.sales-chart-toolbar .sales-period-button.active{
    border-color:#9db7dc;
    background:#fff;
    color:#365f98;
}

/*
 * Bar UX now matches a classic stacked-column chart:
 * - actual posts only
 * - Good at bottom
 * - Bad in the middle
 * - Unreviewed at top
 * - square corners, no rounded bars
 * - no dashed Missing geometry
 */
.sales-chart-stack{
    overflow:visible;
    border-radius:0 !important;
}
.sales-chart-segment{
    border-radius:0 !important;
    box-shadow:none !important;
}
.sales-chart-segment.good{
    background:#739c82;
}
.sales-chart-segment.bad{
    background:#bc7f7f;
}
.sales-chart-segment.unreviewed{
    background:#98a3b0;
}
.sales-chart-missing{
    display:none !important;
}

/* Remove hover tint behind columns; hover information belongs in tooltip. */
.sales-chart-day:hover .sales-chart-day-plot,
.sales-chart-day:focus-visible .sales-chart-day-plot{
    background:transparent;
}

/* Reference-chart proportions: wider rectangular columns with modest gaps. */
.sales-chart-bars{
    gap:var(--sales-chart-gap,6px);
}
.sales-chart-stack{
    width:min(
        calc(100% - 4px),
        var(--sales-chart-bar-width,38px)
    );
}

/* Single Daily range: one substantial rectangular column. */
.sales-activity-chart-panel.sales-chart-single-day
.sales-chart-stack{
    width:var(--sales-chart-bar-width,76px);
    max-width:88px;
}

/* Missing is no longer a visual legend category. */
.sales-chart-legend i.missing{
    display:none;
}

/* Keep target as a reference line only. */
.sales-chart-target-line{
    border-top-width:1px;
}

/* Panel header remains tidy with two filter groups. */
@media(max-width:980px){
    .sales-activity-chart-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .sales-chart-toolbar{
        width:100%;
        justify-content:flex-start;
    }
}

@media(max-width:640px){
    .sales-chart-toolbar{
        align-items:stretch;
        flex-direction:column;
    }
    .sales-chart-toolbar .sales-period-switch{
        width:100%;
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
    .sales-chart-toolbar .sales-platform-filter{
        justify-content:flex-start;
        overflow-x:auto;
        max-width:100%;
    }
}


/* Explicit user exception: chart bars are square, not 4px UI cards. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.54 control placement + working period/channel filters */

/* From and To stay top-aligned; Back to today lives directly below To. */
.dashboard-date-control-row,
.sales-date-control-row{
    align-items:flex-start;
}

.admin-range-field-stack{
    display:flex;
    flex:0 0 auto;
    flex-direction:column;
    align-items:flex-start;
    gap:3px;
}

.admin-range-field-stack .admin-range-field{
    margin:0;
}

.admin-range-field-stack .dashboard-back-today{
    min-height:24px;
    margin:0;
    padding:0 2px;
    align-self:flex-start;
    font-size:8px;
    line-height:1.15;
}

.sales-to-field-stack{
    min-width:144px;
}

/* Daily / Weekly / Monthly belongs immediately LEFT of the date picker. */
.sales-portal-head-actions{
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    gap:10px;
    flex-wrap:wrap;
}

.sales-head-period-switch{
    align-self:flex-start;
    margin-top:18px;
    flex:0 0 auto;
}

/* Chart toolbar now contains Channels only. */
.sales-chart-toolbar{
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    gap:8px;
}

.sales-channel-control{
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    gap:5px;
}

.sales-channel-title{
    display:inline-flex;
    align-items:center;
    gap:5px;
    color:#475569;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.03em;
}

.sales-channel-title svg{
    width:14px;
    height:14px;
    flex:0 0 14px;
    fill:currentColor;
}

.sales-channel-control .sales-platform-filter{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:4px;
}

/* Clearer click state for Channels. */
.sales-platform-filter-button{
    cursor:pointer;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
}

.sales-platform-filter-button.active{
    border-color:#9db7dc;
    background:#fff;
    color:#365f98;
    box-shadow:0 1px 3px rgba(15,23,42,.06);
}

/* Old chart-toolbar period rules no longer control layout. */
.sales-chart-toolbar .sales-period-switch{
    order:initial;
}

@media(pointer:coarse){
    .admin-range-field-stack .dashboard-back-today{
        min-height:36px;
        padding:4px 2px;
        font-size:9px;
    }

    .sales-channel-title{
        min-height:28px;
    }
}

@media(max-width:980px){
    .sales-portal-head-actions{
        width:100%;
        justify-content:flex-start;
    }

    .sales-head-period-switch{
        margin-top:0;
    }

    .sales-channel-control{
        align-items:flex-start;
    }
}

@media(max-width:720px){
    .sales-head-period-switch{
        width:100%;
        order:1;
        grid-template-columns:repeat(3,minmax(0,1fr));
    }

    .sales-range-filter{
        width:100%;
        order:2;
    }

    .sales-submit-cta{
        order:3;
    }

    .sales-channel-control{
        width:100%;
    }

    .sales-channel-control .sales-platform-filter{
        max-width:100%;
        justify-content:flex-start;
        overflow-x:auto;
    }
}

@media(max-width:560px){
    .admin-range-field-stack{
        flex:1 1 130px;
        min-width:0;
    }

    .admin-range-field-stack .admin-range-field{
        width:100%;
    }

    .admin-range-field-stack .admin-range-field input{
        width:100%;
    }
}


/* Chart-only square corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.55 Sales header control alignment */

/*
 * Desktop header control deck:
 * Daily/Weekly/Monthly, date inputs, and Submit Post all share the same
 * 38px control height and the same input-row baseline.
 */
.sales-portal-head{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:24px;
    align-items:start;
}

.sales-portal-head-actions{
    display:grid;
    grid-template-columns:auto auto auto;
    column-gap:10px;
    row-gap:0;
    align-items:start;
    justify-content:end;
}

.sales-head-period-switch{
    box-sizing:border-box;
    width:auto;
    height:38px;
    min-height:38px;
    margin-top:18px;
    padding:2px;
    align-self:start;
    display:grid;
    grid-template-columns:repeat(3,max-content);
    gap:2px;
}

.sales-head-period-switch .sales-period-button{
    box-sizing:border-box;
    height:32px;
    min-height:32px;
    padding:0 10px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    line-height:1;
}

.sales-range-filter{
    display:block;
    margin:0;
    padding:0;
    align-self:start;
}

.sales-date-control-row{
    display:flex;
    align-items:flex-start;
    gap:8px;
}

.sales-range-filter .admin-range-field{
    display:flex;
    flex:0 0 144px;
    width:144px;
    flex-direction:column;
    gap:4px;
    margin:0;
}

.sales-range-filter .admin-range-field > span{
    box-sizing:border-box;
    height:14px;
    margin:0;
    display:flex;
    align-items:center;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    line-height:14px;
}

.sales-range-filter .admin-range-field input[type="date"]{
    box-sizing:border-box;
    width:144px;
    height:38px;
    min-height:38px;
    margin:0;
    padding:0 9px;
    line-height:38px;
}

.sales-to-field-stack{
    box-sizing:border-box;
    width:144px;
    min-width:144px;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:3px;
}

.sales-to-field-stack .admin-range-field{
    width:144px;
}

.sales-to-field-stack .sales-back-today{
    box-sizing:border-box;
    min-height:18px;
    height:18px;
    margin:0;
    padding:0 2px;
    display:inline-flex;
    align-items:center;
    line-height:18px;
}

.sales-submit-cta{
    box-sizing:border-box;
    height:38px;
    min-height:38px;
    margin-top:18px;
    padding-top:0;
    padding-bottom:0;
    align-self:start;
    display:inline-flex;
    align-items:center;
    justify-content:center;
}

/* Do not let the hidden live region take up header width/height. */
.sales-range-live-status:empty{
    display:none;
}

/* Keep the left title block visually stable beside the controls. */
.sales-portal-head > :first-child{
    min-width:0;
}

/* Tablet: controls stay aligned but can occupy a full second row. */
@media(max-width:1120px){
    .sales-portal-head{
        grid-template-columns:1fr;
        gap:14px;
    }

    .sales-portal-head-actions{
        justify-content:start;
    }
}

/* Touch keeps equal 44px primary control heights. */
@media(pointer:coarse){
    .sales-head-period-switch{
        height:44px;
        min-height:44px;
    }

    .sales-head-period-switch .sales-period-button{
        height:38px;
        min-height:38px;
    }

    .sales-range-filter .admin-range-field input[type="date"]{
        height:44px;
        min-height:44px;
        line-height:44px;
    }

    .sales-submit-cta{
        height:44px;
        min-height:44px;
    }
}

/* Narrow screens: stack without losing consistent component sizing. */
@media(max-width:760px){
    .sales-portal-head-actions{
        width:100%;
        grid-template-columns:1fr;
        gap:9px;
    }

    .sales-head-period-switch{
        width:100%;
        height:auto;
        min-height:38px;
        margin-top:0;
        grid-template-columns:repeat(3,minmax(0,1fr));
    }

    .sales-head-period-switch .sales-period-button{
        width:100%;
    }

    .sales-range-filter,
    .sales-date-control-row{
        width:100%;
    }

    .sales-date-control-row{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
    }

    .sales-range-filter .admin-range-field,
    .sales-to-field-stack,
    .sales-to-field-stack .admin-range-field{
        width:100%;
        min-width:0;
        flex-basis:auto;
    }

    .sales-range-filter .admin-range-field input[type="date"]{
        width:100%;
    }

    .sales-submit-cta{
        width:100%;
        margin-top:0;
    }
}

@media(max-width:480px){
    .sales-date-control-row{
        grid-template-columns:1fr;
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.56 authoritative Channels filter + platform icons */

.sales-platform-filter-button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:5px;
    min-height:30px;
    padding:4px 7px;
    white-space:nowrap;
}

.sales-platform-icon{
    width:13px;
    height:13px;
    flex:0 0 13px;
    fill:currentColor;
}

.sales-platform-filter-button[data-sales-platform-filter="facebook"]
.sales-platform-icon{
    width:14px;
    height:14px;
}

.sales-platform-filter-button.active{
    border-color:#7f9cc5;
    background:#fff;
    color:#294f82;
    box-shadow:
        0 0 0 1px rgba(80,113,158,.08),
        0 1px 3px rgba(15,23,42,.07);
}

.sales-platform-filter-button:focus-visible{
    outline:2px solid rgba(59,130,246,.22);
    outline-offset:1px;
}

.sales-platform-filter-button[aria-pressed="true"]
.sales-platform-icon{
    transform:scale(1.03);
}

@media(pointer:coarse){
    .sales-platform-filter-button{
        min-height:44px;
        padding:8px 10px;
        gap:6px;
    }

    .sales-platform-icon{
        width:16px;
        height:16px;
        flex-basis:16px;
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.57 readable Sales typography + rolling ranges + stable Channels */

/* ------------------------------------------------------------
 * Header alignment
 * ---------------------------------------------------------- */
.sales-range-filter,
.admin-range-controls{
    overflow:visible;
}

.sales-to-field-stack,
.admin-range-field-stack{
    position:relative;
}

/*
 * Pin Back to today under the To input instead of letting old flex/grid
 * rules push it down into a separate row.
 */
.sales-to-field-stack{
    padding-bottom:22px;
}

.sales-to-field-stack .sales-back-today{
    position:absolute;
    left:0;
    top:59px;
    width:auto;
    height:18px;
    min-height:18px;
    margin:0;
    padding:0 2px;
    display:inline-flex;
    align-items:center;
    color:#2563eb;
    font-size:9px;
    font-weight:800;
    line-height:18px;
    white-space:nowrap;
}

.admin-range-field-stack{
    padding-bottom:22px;
}

.admin-range-field-stack .dashboard-back-today{
    position:absolute;
    left:0;
    top:59px;
    width:auto;
    height:18px;
    min-height:18px;
    margin:0;
    padding:0 2px;
    display:inline-flex;
    align-items:center;
    font-size:9px;
    line-height:18px;
    white-space:nowrap;
}

/* ------------------------------------------------------------
 * Make the Sales dashboard readable at normal desktop scale.
 * ---------------------------------------------------------- */
.sales-head-period-switch .sales-period-button{
    font-size:10px;
    font-weight:800;
}

.sales-range-filter .admin-range-field > span{
    font-size:9px;
}

.sales-range-filter .admin-range-field input[type="date"]{
    font-size:12px;
}

.sales-channel-title{
    font-size:10px;
}

.sales-platform-filter-button{
    font-size:9px;
    font-weight:800;
}

.sales-day-head .daily-post-date{
    font-size:10px;
    font-weight:700;
}

.sales-day-head h2{
    font-size:16px;
    line-height:1.25;
}

.sales-day-filter .post-summary,
.sales-day-filter .post-summary strong{
    font-size:9px !important;
}

.sales-self-post-date{
    font-size:8px;
    line-height:1.3;
}

.sales-self-post-body h3{
    font-size:11px;
    line-height:1.3;
}

.sales-self-post-body p{
    font-size:8.5px;
    line-height:1.4;
}

.sales-view-details{
    font-size:8.5px;
    font-weight:800;
}

.sales-self-post-status{
    font-size:8.5px;
    font-weight:900;
}

.sales-chart-x-label{
    font-size:8px;
}

.sales-chart-legend,
.sales-chart-target-copy{
    font-size:9px;
}

/* ------------------------------------------------------------
 * Channels animation
 * ---------------------------------------------------------- */
#salesDailyStage,
#salesActivityChartPanel{
    transition:
        opacity .16s ease,
        transform .16s ease;
}

#salesDailyStage.sales-channel-changing,
#salesActivityChartPanel.sales-channel-changing{
    opacity:.58;
    transform:translateY(2px);
    pointer-events:none;
}

#salesDailyStage.sales-channel-enter,
#salesActivityChartPanel.sales-channel-enter{
    animation:salesChannelEnter .2s ease both;
}

@keyframes salesChannelEnter{
    from{
        opacity:.55;
        transform:translateY(3px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

.sales-platform-filter-button{
    transition:
        background .14s ease,
        border-color .14s ease,
        color .14s ease,
        box-shadow .14s ease,
        transform .12s ease;
}

.sales-platform-filter-button:active{
    transform:scale(.96);
}

/* ------------------------------------------------------------
 * Empty channel results keep the previous card-area height.
 * ---------------------------------------------------------- */
.sales-daily-stage{
    position:relative;
    min-height:280px;
}

.sales-daily-stage.sales-daily-stage-empty{
    min-height:max(
        280px,
        var(--sales-preserved-height,280px)
    );
}

.sales-daily-stage.sales-daily-stage-empty
.sales-daily-posts{
    min-height:0;
}

.sales-daily-stage.sales-daily-stage-empty
.sales-empty-state{
    box-sizing:border-box;
    min-height:max(
        280px,
        var(--sales-preserved-height,280px)
    );
    margin:0;
    display:flex;
    align-items:center;
    justify-content:center;
}

/* Keep status-filter zero states inside an existing day section stable too. */
.sales-post-card-grid{
    min-height:280px;
}

.sales-filter-empty{
    min-height:262px;
}

/* Touch targets stay readable and comfortably tappable. */
@media(pointer:coarse){
    .sales-to-field-stack .sales-back-today,
    .admin-range-field-stack .dashboard-back-today{
        top:65px;
        min-height:24px;
        height:24px;
        font-size:10px;
        line-height:24px;
    }

    .sales-to-field-stack,
    .admin-range-field-stack{
        padding-bottom:28px;
    }

    .sales-head-period-switch .sales-period-button{
        font-size:11px;
    }

    .sales-platform-filter-button{
        font-size:10px;
    }

    .sales-self-post-body h3{
        font-size:12px;
    }

    .sales-view-details,
    .sales-self-post-status{
        font-size:10px;
    }
}

@media(max-width:760px){
    /*
     * On narrow screens return Back to today to normal document flow.
     * This avoids overlap when the To control occupies a full-width row.
     */
    .sales-to-field-stack,
    .admin-range-field-stack{
        padding-bottom:0;
    }

    .sales-to-field-stack .sales-back-today,
    .admin-range-field-stack .dashboard-back-today{
        position:static;
        margin-top:3px;
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.58 exact target alignment + exact review colors */

.sales-chart-legend i.good,
.sales-chart-segment.good{
    background:#22c55e !important;
}

.sales-chart-legend i.bad,
.sales-chart-segment.bad{
    background:#ef4444 !important;
}

.sales-chart-legend i.unreviewed,
.sales-chart-segment.unreviewed{
    background:#94a3b8 !important;
}

/*
 * A bar whose Total equals Daily Target now lands on this line exactly.
 * The line stays above the columns so the threshold remains visually clear.
 */
.sales-chart-target-line{
    z-index:10;
    border-top:1px solid #2563eb;
}

.sales-chart-target-line > span{
    z-index:11;
}

.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.59 SaaS-style content transitions + real Empty cards */

/* ------------------------------------------------------------
 * Date / period / channel replacement animation
 * ---------------------------------------------------------- */
#salesDailyStage,
#salesActivityChartPanel{
    will-change:opacity,transform;
}

#salesDailyStage.sales-content-changing,
#salesActivityChartPanel.sales-content-changing{
    opacity:.42;
    transform:translateY(5px);
    pointer-events:none;
    transition:
        opacity .15s ease,
        transform .15s ease;
}

#salesDailyStage.sales-content-enter{
    animation:salesStageEnter .26s cubic-bezier(.2,.72,.28,1) both;
}

#salesActivityChartPanel.sales-chart-enter{
    animation:salesChartPanelEnter .24s cubic-bezier(.2,.72,.28,1) both;
}

#salesDailyStage.sales-content-enter
.sales-day-section{
    animation:salesDaySectionEnter .30s cubic-bezier(.2,.72,.28,1) both;
    animation-delay:
        calc(
            min(
                var(--sales-section-index,0),
                5
            )
            * 38ms
        );
}

#salesDailyStage.sales-content-enter
.sales-self-post-card{
    animation:salesPostCardEnter .30s cubic-bezier(.2,.72,.28,1) both;
    animation-delay:
        calc(
            min(
                var(--sales-card-index,0),
                6
            )
            * 25ms
            + 28ms
        );
}

@keyframes salesStageEnter{
    from{
        opacity:.52;
        transform:translateY(5px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes salesChartPanelEnter{
    from{
        opacity:.56;
        transform:translateY(3px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes salesDaySectionEnter{
    from{
        opacity:0;
        transform:translateY(7px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

@keyframes salesPostCardEnter{
    from{
        opacity:0;
        transform:translateY(7px) scale(.992);
    }
    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }
}

/* ------------------------------------------------------------
 * Good / Issues / Unreviewed filter transitions
 * ---------------------------------------------------------- */
.sales-self-post-card.sales-filter-leaving{
    opacity:0;
    transform:translateY(4px) scale(.985);
    pointer-events:none;
    transition:
        opacity .13s ease,
        transform .13s ease;
}

.sales-self-post-card.sales-filter-entering{
    animation:salesFilteredCardEnter .22s cubic-bezier(.2,.72,.28,1) both;
}

@keyframes salesFilteredCardEnter{
    from{
        opacity:0;
        transform:translateY(5px) scale(.99);
    }
    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }
}

/* ------------------------------------------------------------
 * Entire selected date range = 0 posts.
 * Always show at least one normal card footprint.
 * ---------------------------------------------------------- */
.sales-daily-stage{
    min-height:280px;
}

.sales-empty-state{
    box-sizing:border-box;
    min-height:280px;
    margin:0;
    padding:12px;
    display:grid;
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:8px;
    align-items:stretch;
    border:0;
    background:transparent;
}

.sales-empty-state.hidden{
    display:none;
}

.sales-empty-card{
    box-sizing:border-box;
    min-height:252px;
    padding:20px 14px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:7px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    text-align:center;
}

.sales-empty-card-icon{
    width:28px;
    height:28px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    color:#94a3b8;
}

.sales-empty-card-icon svg{
    width:24px;
    height:24px;
    fill:currentColor;
}

.sales-empty-card strong{
    color:#334155;
    font-size:12px;
    font-weight:900;
}

.sales-empty-card span:last-child{
    max-width:150px;
    font-size:9px;
    line-height:1.45;
}

/*
 * Channel filter -> 0 results:
 * preserve the old section height as requested.
 * Date/range -> 0 results:
 * only the normal one-card minimum is required.
 */
.sales-daily-stage.sales-daily-stage-empty{
    min-height:280px;
}

.sales-daily-stage.sales-daily-stage-empty.sales-daily-stage-preserved{
    min-height:max(
        280px,
        var(--sales-preserved-height,280px)
    );
}

.sales-daily-stage.sales-daily-stage-empty.sales-daily-stage-preserved
.sales-empty-state{
    min-height:max(
        280px,
        var(--sales-preserved-height,280px)
    );
}

/* ------------------------------------------------------------
 * Per-day status filter = zero cards.
 * Also keep a single-card footprint rather than collapsing.
 * ---------------------------------------------------------- */
.sales-post-card-grid{
    min-height:252px;
    align-content:start;
}

.sales-filter-empty{
    grid-column:auto !important;
    min-height:252px !important;
    margin:0 !important;
    padding:0 !important;
    display:block;
    border:0 !important;
    background:transparent !important;
}

.sales-filter-empty.hidden{
    display:none;
}

.sales-filter-empty-card{
    box-sizing:border-box;
    width:100%;
    min-height:252px;
    padding:18px 12px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:7px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    text-align:center;
}

.sales-filter-empty-icon{
    width:25px;
    height:25px;
    display:inline-flex;
    color:#94a3b8;
}

.sales-filter-empty-icon svg{
    width:100%;
    height:100%;
    fill:currentColor;
}

.sales-filter-empty-card strong{
    color:#334155;
    font-size:11px;
    font-weight:900;
}

.sales-filter-empty-card span:last-child{
    font-size:8.5px;
    line-height:1.4;
}

.sales-filter-empty.sales-filter-empty-enter{
    animation:salesEmptyCardEnter .22s cubic-bezier(.2,.72,.28,1) both;
}

@keyframes salesEmptyCardEnter{
    from{
        opacity:0;
        transform:translateY(5px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

/* Same card-column count as real Sales cards. */
@media(max-width:1150px){
    .sales-empty-state{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}

@media(max-width:900px){
    .sales-empty-state{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}

@media(max-width:680px){
    .sales-empty-state{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }

    .sales-empty-card,
    .sales-filter-empty-card,
    .sales-post-card-grid{
        min-height:300px;
    }
}

@media(max-width:480px){
    .sales-empty-state{
        grid-template-columns:1fr;
    }

    .sales-empty-card,
    .sales-filter-empty-card,
    .sales-post-card-grid{
        min-height:350px;
    }
}

@media(prefers-reduced-motion:reduce){
    #salesDailyStage,
    #salesActivityChartPanel,
    .sales-day-section,
    .sales-self-post-card,
    .sales-filter-empty{
        animation:none !important;
        transition:none !important;
        transform:none !important;
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.60 responsive filters + complete Y axis + Back-to-today state */

/* ------------------------------------------------------------
 * Y axis: 0,2,4,6,8,10,12 for default Target 10.
 * JS generates these dynamically for other targets.
 * ---------------------------------------------------------- */
.sales-chart-y-axis{
    position:relative;
    height:270px;
}

.sales-chart-y-axis-ticks{
    position:absolute;
    inset:0;
}

.sales-chart-y-tick{
    position:absolute;
    right:0;
    transform:translateY(50%);
    color:#64748b;
    font-size:8px;
    font-weight:800;
    line-height:1;
    white-space:nowrap;
}

/* Target is a neutral reference line, not a bright blue data series. */
.sales-chart-target-line{
    z-index:10;
    border-top:1px solid #94a3b8 !important;
}

.sales-chart-target-line > span{
    z-index:11;
    background:#f8fafc !important;
    color:#64748b !important;
}

/* ------------------------------------------------------------
 * Do not disable Channels while Chart data is loading.
 * Only the plot area receives the faded transition.
 * ---------------------------------------------------------- */
#salesActivityChartPanel .sales-chart-shell.sales-content-changing{
    opacity:.48;
    transform:translateY(3px);
    pointer-events:none;
    transition:
        opacity .15s ease,
        transform .15s ease;
}

#salesActivityChartPanel.sales-content-changing{
    opacity:1 !important;
    transform:none !important;
    pointer-events:auto !important;
}

#salesActivityChartPanel .sales-chart-shell.sales-chart-enter{
    animation:salesChartPanelEnter .24s cubic-bezier(.2,.72,.28,1) both;
}

/* ------------------------------------------------------------
 * Channel filter loading feedback.
 * Controls remain clickable, including rapid Channel switching.
 * ---------------------------------------------------------- */
.sales-platform-filter-button{
    position:relative;
}

.sales-platform-filter.sales-channel-loading
.sales-platform-filter-button.active{
    padding-right:24px;
}

.sales-platform-filter.sales-channel-loading
.sales-platform-filter-button.active::after{
    content:"";
    position:absolute;
    right:7px;
    top:50%;
    width:9px;
    height:9px;
    margin-top:-5px;
    border:1.5px solid currentColor;
    border-right-color:transparent;
    border-radius:50%;
    animation:salesChannelSpinner .65s linear infinite;
}

@keyframes salesChannelSpinner{
    to{
        transform:rotate(360deg);
    }
}

/* ------------------------------------------------------------
 * Empty is always a real card-size state.
 * Channel = zero results keeps the previous stage height.
 * ---------------------------------------------------------- */
.sales-daily-stage.sales-daily-stage-empty{
    min-height:280px !important;
}

.sales-daily-stage.sales-daily-stage-empty.sales-daily-stage-preserved{
    min-height:max(
        280px,
        var(--sales-preserved-height,280px)
    ) !important;
}

.sales-empty-state:not(.hidden){
    min-height:280px;
    display:grid;
}

.sales-empty-card{
    min-height:252px !important;
}

.sales-filter-empty:not(.hidden),
.sales-filter-empty-card{
    min-height:252px !important;
}

/* Back-to-today is never allowed to reserve space when hidden. */
.sales-back-today.hidden,
.dashboard-back-today.hidden{
    display:none !important;
}

/* Channel controls remain touch-friendly while requests are in flight. */
.sales-platform-filter-button{
    touch-action:manipulation;
}

@media(pointer:coarse){
    .sales-chart-y-tick{
        font-size:9px;
    }

    .sales-platform-filter.sales-channel-loading
    .sales-platform-filter-button.active::after{
        width:11px;
        height:11px;
        margin-top:-6px;
    }
}

@media(prefers-reduced-motion:reduce){
    .sales-platform-filter.sales-channel-loading
    .sales-platform-filter-button.active::after{
        animation:none;
        border-right-color:currentColor;
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.61 non-blocking loading + right-aligned Back to today */

/* Back to today right edge lines up with the To date picker right edge. */
.sales-to-field-stack .sales-back-today,
.admin-range-field-stack .dashboard-back-today{
    left:auto !important;
    right:0 !important;
    justify-content:flex-end;
    text-align:right;
}

/*
 * Legacy builds applied sales-range-loading to the whole chart panel,
 * making Channels unclickable. Explicitly neutralize that behavior.
 */
.sales-activity-chart-panel.sales-range-loading,
#salesActivityChartPanel.sales-range-loading{
    opacity:1 !important;
    pointer-events:auto !important;
}

/* Loading treatment belongs only to the replaceable chart body. */
#salesActivityChartPanel .sales-chart-shell.sales-range-loading{
    opacity:.68;
    transform:translateY(2px);
    pointer-events:none;
    transition:
        opacity .14s ease,
        transform .14s ease;
}

/* Posts can softly fade, but Channels/date controls remain fully interactive. */
#dailyPosts.sales-range-loading{
    opacity:.72;
    transition:opacity .14s ease;
}

/* Keep active Channel visual feedback compact and non-blocking. */
.sales-platform-filter.sales-channel-loading
.sales-platform-filter-button.active{
    pointer-events:auto;
}

/*
 * On narrow screens Back to today stays in normal flow but still aligns
 * to the right edge of the To control.
 */
@media(max-width:760px){
    .sales-to-field-stack .sales-back-today,
    .admin-range-field-stack .dashboard-back-today{
        left:auto !important;
        right:auto !important;
        align-self:flex-end;
        margin-left:auto;
        text-align:right;
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.62 true 3-Day range + Custom Range + per-day Empty states */

/* Four explicit range states: 3 Days / Weekly / Monthly / Custom Range. */
.sales-head-period-switch{
    grid-template-columns:repeat(4,max-content);
}

.sales-period-custom{
    min-width:84px;
}

/* A missing day in the 3-Day view keeps the exact Daily Posts shell. */
.sales-day-empty-card{
    box-sizing:border-box;
    min-height:252px;
    padding:18px 12px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:7px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    text-align:center;
}

.sales-day-empty-icon{
    width:26px;
    height:26px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    color:#94a3b8;
}

.sales-day-empty-icon svg{
    width:24px;
    height:24px;
    fill:currentColor;
}

.sales-day-empty-card strong{
    color:#334155;
    font-size:11px;
    font-weight:900;
}

.sales-day-empty-card span:last-child{
    font-size:8.5px;
    line-height:1.4;
}

/*
 * 3 Days always has exactly three Daily Posts sections from server,
 * including zero-post days. Do not let empty grids collapse.
 */
.sales-day-section .sales-post-card-grid{
    min-height:252px;
}

@media(max-width:980px){
    .sales-head-period-switch{
        grid-template-columns:repeat(4,minmax(0,1fr));
        width:100%;
    }

    .sales-period-custom{
        min-width:0;
    }
}

@media(max-width:560px){
    .sales-head-period-switch{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}


/* Explicit chart-only square-corner exception. */
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    border-radius:0 !important;
}

/* v0.1.63 CANONICAL SALES CHART CONTRACT
 * ------------------------------------------------------------
 * This block intentionally owns final chart geometry.
 * Do not redefine chart heights / target coordinates elsewhere.
 */

.sales-chart-shell{
    display:grid !important;
    grid-template-columns:48px minmax(0,1fr) !important;
    gap:8px !important;
    padding:8px 14px 14px 8px !important;
    align-items:start !important;
}

.sales-chart-y-axis{
    position:relative !important;
    width:48px !important;
    height:280px !important;
    overflow:visible !important;
    color:#475569 !important;
}

.sales-chart-y-axis-ticks{
    position:absolute !important;
    inset:0 !important;
    overflow:visible !important;
}

.sales-chart-y-tick{
    position:absolute !important;
    top:auto;
    right:5px !important;
    min-width:24px !important;
    transform:translateY(-50%) !important;
    color:#475569 !important;
    font-size:9px !important;
    font-weight:800 !important;
    line-height:1 !important;
    text-align:right !important;
    white-space:nowrap !important;
    opacity:1 !important;
}

.sales-chart-y-tick.target{
    color:#334155 !important;
    font-weight:900 !important;
}

.sales-chart-scroll{
    min-width:0 !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
}

.sales-chart-canvas{
    position:relative !important;
    min-width:100% !important;
    height:280px !important;
    border-left:1px solid #cbd5e1 !important;
    border-bottom:0 !important;
    background:#fff !important;
    overflow:visible !important;
}

.sales-chart-canvas::after{
    content:"" !important;
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:32px !important;
    z-index:7 !important;
    border-top:1px solid #94a3b8 !important;
    pointer-events:none !important;
}

.sales-chart-grid-lines{
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    top:0 !important;
    height:248px !important;
    z-index:1 !important;
    pointer-events:none !important;
}

.sales-chart-grid-line{
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    height:0 !important;
    border-top:1px solid rgba(148,163,184,.18) !important;
}

.sales-chart-grid-line.target{
    border-top-color:rgba(100,116,139,.32) !important;
}

.sales-chart-target-line{
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:auto !important;
    z-index:9 !important;
    height:0 !important;
    border-top:1px solid #94a3b8 !important;
    pointer-events:none !important;
}

.sales-chart-target-line > span{
    position:absolute !important;
    right:6px !important;
    bottom:4px !important;
    padding:3px 5px !important;
    border-radius:4px;
    background:#f8fafc !important;
    color:#64748b !important;
    font-size:8px !important;
    font-weight:900 !important;
}

.sales-chart-bars{
    position:absolute !important;
    inset:0 !important;
    z-index:4 !important;
    display:grid !important;
    gap:0 !important;
    padding:0 4px !important;
}

.sales-chart-day{
    position:relative !important;
    min-width:0 !important;
    height:280px !important;
    display:grid !important;
    grid-template-rows:248px 32px !important;
    outline:none !important;
}

.sales-chart-day-plot{
    position:relative !important;
    width:100% !important;
    height:248px !important;
    min-height:248px !important;
    overflow:visible !important;
}

.sales-chart-stack{
    position:absolute !important;
    left:50% !important;
    right:auto !important;
    top:0 !important;
    bottom:0 !important;
    width:var(--sales-chart-bar-width,28px) !important;
    height:248px !important;
    display:flex !important;
    flex-direction:column-reverse !important;
    justify-content:flex-start !important;
    transform:translateX(-50%) !important;
    overflow:hidden !important;
    border-radius:0 !important;
    pointer-events:none !important;
}

.sales-chart-segment{
    display:block !important;
    flex:0 0 auto !important;
    min-height:0 !important;
    border-radius:0 !important;
}

.sales-chart-segment.good{
    background:#22c55e !important;
}

.sales-chart-segment.bad{
    background:#ef4444 !important;
}

.sales-chart-segment.unreviewed{
    background:#94a3b8 !important;
}

.sales-chart-x-label{
    position:relative !important;
    z-index:8 !important;
    width:100% !important;
    height:32px !important;
    padding-top:7px !important;
    display:flex !important;
    align-items:flex-start !important;
    justify-content:center !important;
    color:#475569 !important;
    font-size:8px !important;
    font-weight:800 !important;
    line-height:1 !important;
    text-align:center !important;
    white-space:nowrap !important;
}

.sales-chart-short-range .sales-chart-x-label{
    font-size:9px !important;
}

@media(pointer:coarse){
    .sales-chart-shell{
        grid-template-columns:52px minmax(0,1fr) !important;
    }

    .sales-chart-y-axis{
        width:52px !important;
    }

    .sales-chart-y-tick{
        font-size:10px !important;
    }

    .sales-chart-x-label{
        font-size:9px !important;
    }
}

/* v0.1.64 ISOLATED SALES DASHBOARD CONTROLLER */

/*
 * Individual segments keep stable heights. Since v0.1.67 the inner stack
 * animates as one bar from the baseline on each data update.
 */
.sales-chart-segment,
.sales-chart-segment.good,
.sales-chart-segment.bad,
.sales-chart-segment.unreviewed{
    transition:none !important;
    animation:none !important;
}

/* The canonical chart dimensions are not negotiable. */
#salesActivityChartPanel .sales-chart-shell{
    grid-template-columns:48px minmax(0,1fr) !important;
}

#salesChartYAxis{
    display:block !important;
    width:48px !important;
    min-width:48px !important;
    height:280px !important;
    opacity:1 !important;
    visibility:visible !important;
    overflow:visible !important;
}

#salesChartYAxisTicks{
    display:block !important;
    position:absolute !important;
    inset:0 !important;
    opacity:1 !important;
    visibility:visible !important;
    overflow:visible !important;
}

#salesChartYAxisTicks .sales-chart-y-tick{
    display:block !important;
    right:5px !important;
    opacity:1 !important;
    visibility:visible !important;
    color:#475569 !important;
    font-size:9px !important;
    font-weight:800 !important;
}

#salesChartCanvas{
    height:280px !important;
}

#salesChartGridLines{
    height:248px !important;
}

#salesChartBars .sales-chart-day{
    height:280px !important;
    grid-template-rows:248px 32px !important;
}

#salesChartBars .sales-chart-day-plot{
    height:248px !important;
    min-height:248px !important;
}

#salesChartBars .sales-chart-stack{
    top:0 !important;
    bottom:0 !important;
    height:248px !important;
}

/*
 * Range/Channel changes get a short SaaS replacement transition.
 * The inner colored stack has its own bottom-up growth animation.
 */
#salesDailyStage,
#salesActivityChartPanel .sales-chart-shell{
    transition:
        opacity .14s ease,
        transform .14s ease;
}

#salesDailyStage.sales-dashboard-changing,
#salesActivityChartPanel .sales-chart-shell.sales-dashboard-changing{
    opacity:.58;
    transform:translateY(3px);
}

#salesDailyStage.sales-dashboard-enter{
    animation:salesDashboardEnter .24s ease both;
}

@keyframes salesDashboardEnter{
    from{
        opacity:.60;
        transform:translateY(4px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}

/* Channel controls remain interactive; loading is only visual. */
#salesPlatformFilter.sales-dashboard-channel-loading
.sales-platform-filter-button.active{
    box-shadow:
        0 0 0 1px rgba(37,99,235,.15),
        0 1px 3px rgba(15,23,42,.08);
}

/* Status-filter cards fade instead of disappearing abruptly. */
.sales-self-post-card{
    transition:
        opacity .14s ease,
        transform .14s ease;
}

.sales-self-post-card.sales-card-filtered-out{
    display:none !important;
}

.sales-module-filter-empty{
    min-height:252px;
}

.sales-module-filter-empty .sales-filter-empty-card{
    min-height:252px;
}

/*
 * Channel = empty:
 * keep the section footprint from before the filter.
 */
#salesDailyStage.sales-daily-stage-empty{
    min-height:max(
        280px,
        var(--sales-preserved-height,280px)
    ) !important;
}

/* Chart target line and bars share the exact 248px plot. */
#salesChartTargetLine{
    bottom:auto !important;
    border-top:1px solid #94a3b8 !important;
}

#salesChartGridLines .sales-chart-grid-line{
    border-top:
        1px solid rgba(148,163,184,.18)
        !important;
}

#salesChartGridLines .sales-chart-grid-line.target{
    border-top-color:
        rgba(100,116,139,.34)
        !important;
}

/* Exact review colors. */
#salesChartBars .sales-chart-segment.good{
    background:#22c55e !important;
}

#salesChartBars .sales-chart-segment.bad{
    background:#ef4444 !important;
}

#salesChartBars .sales-chart-segment.unreviewed{
    background:#94a3b8 !important;
}

@media(prefers-reduced-motion:reduce){
    #salesDailyStage,
    #salesActivityChartPanel .sales-chart-shell,
    .sales-self-post-card{
        transition:none !important;
        animation:none !important;
        transform:none !important;
    }
}

/* v0.1.65 UNIFIED EMPTY STATE + CALENDAR-DAY SECTIONS */

/*
 * One Empty component everywhere:
 * - empty Daily Posts date
 * - entire range empty fallback
 * - Good/Issues/Unreviewed filter empty
 * - Channel result empty
 *
 * No inner card / no dashed border / no white box.
 */
.sales-empty-message{
    box-sizing:border-box !important;
    grid-column:1 / -1 !important;
    width:100% !important;
    min-height:252px !important;
    padding:24px !important;
    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;
    gap:6px !important;
    border:0 !important;
    outline:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    color:#64748b !important;
    text-align:center !important;
}

.sales-empty-icon{
    width:26px !important;
    height:26px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    color:#94a3b8 !important;
}

.sales-empty-icon svg{
    width:23px !important;
    height:23px !important;
    fill:currentColor !important;
}

.sales-empty-message strong{
    color:#334155 !important;
    font-size:12px !important;
    font-weight:900 !important;
    line-height:1.2 !important;
}

.sales-empty-message > span:last-child{
    max-width:220px !important;
    color:#64748b !important;
    font-size:9px !important;
    line-height:1.45 !important;
}

/* The Daily Posts shell remains full width; Empty sits centered in it. */
.sales-day-section .sales-post-card-grid{
    min-height:252px !important;
}

.sales-day-empty-message{
    min-height:252px !important;
}

/* Range-level fallback uses the same component, centered with no frame. */
#dailyPostsEmpty.sales-empty-state{
    min-height:280px !important;
    padding:0 !important;
    display:flex;
    align-items:center;
    justify-content:center;
    border:0 !important;
    background:transparent !important;
}

#dailyPostsEmpty.sales-empty-state.hidden{
    display:none !important;
}

#dailyPostsEmpty .sales-range-empty-message{
    min-height:280px !important;
}

/* Status-filter Empty is exactly the same visual language. */
.sales-module-filter-empty{
    grid-column:1 / -1 !important;
    width:100% !important;
    min-height:252px !important;
    margin:0 !important;
}

/*
 * Retire every older empty "card" skin.
 * Keep selectors so stale cached DOM cannot reintroduce dashed boxes.
 */
.sales-empty-card,
.sales-filter-empty-card,
.sales-day-empty-card{
    border:0 !important;
    outline:0 !important;
    background:transparent !important;
    box-shadow:none !important;
}

/*
 * Calendar-day pagination:
 * each returned date occupies a normal Daily Posts section whether its
 * post count is 0 or greater than 0.
 */
.sales-day-section{
    width:100%;
}

/* Mobile/touch keeps the same borderless centered state. */
@media(max-width:680px){
    .sales-empty-message,
    .sales-day-empty-message,
    .sales-module-filter-empty{
        min-height:300px !important;
    }
}

@media(max-width:480px){
    .sales-empty-message,
    .sales-day-empty-message,
    .sales-module-filter-empty{
        min-height:340px !important;
    }
}


/* v0.1.66 SINGLE RANGE POSTS MODULE */
.sales-range-post-stage{margin-top:16px;min-height:310px;}
.sales-range-post-wrap{width:100%;}
.sales-range-post-section{overflow:hidden;border:1px solid #dbe3ee;border-radius:4px;background:#fff;box-shadow:0 10px 26px rgba(15,23,42,.04);}
.sales-range-post-head{min-height:70px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #dbe3ee;background:#f8fafc;}
.sales-range-post-head h2{margin:2px 0 0;display:flex;align-items:baseline;gap:7px;color:#0f172a;font-size:16px;line-height:1.2;}
.sales-range-post-count{color:#64748b;font-size:11px;font-weight:800;}
.sales-range-post-dates{margin:4px 0 0;color:#64748b;font-size:9px;font-weight:700;}
.sales-range-post-filter{flex:0 0 auto;}
.sales-range-post-grid{min-height:270px !important;padding:10px;align-content:start;}
.sales-range-post-grid .sales-self-post-date{margin-bottom:5px;color:#64748b;font-size:7.5px;font-weight:900;letter-spacing:.01em;}
.sales-range-post-grid .sales-self-post-card.sales-card-filtered-out{display:none !important;}
.sales-range-post-empty,.sales-range-filter-empty{grid-column:1 / -1 !important;width:100% !important;min-height:252px !important;border:0 !important;background:transparent !important;box-shadow:none !important;}
.sales-range-filter-empty.hidden,.sales-range-post-empty.hidden{display:none !important;}
.sales-range-post-stage-empty{min-height:max(310px,var(--sales-preserved-height,310px));}
.sales-chart-tooltip-focus{margin-bottom:2px;color:#0f172a;font-weight:900;}
@media(max-width:760px){.sales-range-post-head{align-items:flex-start;flex-direction:column}.sales-range-post-filter{width:100%;overflow-x:auto}}

/* v0.1.67 — Fixed menu slots and replayable bottom-up chart growth. */
.nav{flex-wrap:wrap;}
.nav > a,
.nav > [data-nav-i18n],
.nav > form{
    flex:0 0 110px;
    width:110px;
    min-width:110px;
    max-width:110px;
    text-align:center;
}
.nav > a,
.nav > [data-nav-i18n],
.nav > form button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:32px;
    white-space:nowrap;
}
.nav > form button{
    width:100%;
}
.nav > .app-language-switch,
.nav > .nav-user{
    flex-shrink:0;
}
/* Fixed columns reserve enough room for all four supported languages. */
#salesPeriodSwitch{
    width:444px;
    min-width:444px;
    max-width:444px;
    grid-template-columns:60px 60px 76px 76px 158px;
    grid-auto-rows:32px;
    height:38px;
}
#salesPeriodSwitch .sales-period-button{
    width:100%;
    min-width:0;
    padding:0 6px;
    white-space:nowrap;
}
.sales-submit-cta{
    width:158px;
    min-width:158px;
    max-width:158px;
}
/* The expanded preset menu gets its own stable header row on laptops. */
@media(max-width:1440px){
    .sales-portal-head{
        grid-template-columns:minmax(0,1fr);
        gap:14px;
    }
    .sales-portal-head-actions{
        justify-content:start;
    }
}
@media(max-width:1050px){
    .nav{flex-wrap:wrap;}
}
@media(max-width:1000px){
    .sales-portal-head-actions{
        width:100%;
        grid-template-columns:minmax(0,1fr);
        gap:9px;
    }
    #salesPeriodSwitch{margin-top:0;}
    .sales-submit-cta{margin-top:0;}
}
@media(max-width:500px){
    #salesPeriodSwitch{
        width:318px;
        min-width:318px;
        max-width:318px;
        grid-template-columns:repeat(4,76px);
        grid-auto-rows:32px;
        height:auto;
    }
    #salesPeriodSwitch .sales-period-custom{grid-column:span 2;}
}
@media(max-width:359px){
    #salesPeriodSwitch{
        width:256px;
        min-width:256px;
        max-width:256px;
        grid-template-columns:repeat(4,60.5px);
    }
    #salesPeriodSwitch .sales-period-custom{grid-column:span 4;}
}
@media(pointer:coarse){
    #salesPeriodSwitch{
        grid-auto-rows:38px;
        height:auto;
        min-height:44px;
    }
}
/* Animate the entire colored stack as one bar; axes and labels stay still. */
#salesActivityChartPanel .sales-chart-shell.sales-dashboard-changing{
    transform:none;
}
#salesChartBars .sales-chart-segment{
    pointer-events:auto !important;
}
#salesChartBars .sales-chart-stack-fill{
    width:100%;
    height:100%;
    display:flex;
    flex-direction:column-reverse;
    justify-content:flex-start;
    transform-origin:center bottom;
}
#salesChartBars .sales-chart-stack-fill.sales-chart-grow{
    animation:salesChartGrowFromBottom .52s cubic-bezier(.22,.61,.36,1) both;
}
@keyframes salesChartGrowFromBottom{
    from{transform:scaleY(0);}
    to{transform:scaleY(1);}
}
@media(prefers-reduced-motion:reduce){
    #salesChartBars .sales-chart-stack-fill.sales-chart-grow{animation:none;}
}

/* v0.1.68 — Restore the established Posts status segmented control. */
.sales-range-post-head > :first-child{min-width:0;}
.sales-range-post-head .sales-range-post-filter{
    flex:0 1 auto;
    min-width:0;
    align-self:center;
}
.sales-range-post-filter .post-summary{
    flex:0 0 auto;
}
@media(max-width:760px){
    .sales-range-post-head .sales-range-post-filter{
        width:auto;
        max-width:100%;
        align-self:flex-start;
        justify-content:flex-start;
    }
}

/* v0.1.69 — Plain Arial UI; preserve code-editor monospace fonts. */
button,input,select,textarea{font-family:inherit;}
.sales-self-post-card .sales-self-post-body h3{
    font-weight:700;
}
.sales-self-post-card .sales-self-post-body p,
.sales-self-post-card .sales-self-post-date,
.sales-self-post-card .sales-view-details,
.sales-self-post-card .sales-self-post-status,
.sales-self-post-card .sales-self-post-sequence{
    font-weight:400;
}
.sales-self-post-card .sales-self-post-date{
    letter-spacing:normal;
}
.sales-range-post-head .sales-range-post-dates,
.sales-range-post-head .sales-range-post-count,
.sales-range-post-filter .post-summary{
    font-weight:400;
}
.sales-range-post-filter .post-summary strong{
    font-weight:700;
}

/* v0.1.70 — Compact fixed-width menus; counts live only in the filter. */
.nav{gap:8px;}
.nav > a,
.nav > [data-nav-i18n],
.nav > form{
    flex-basis:82px;
    width:82px;
    min-width:82px;
    max-width:82px;
}
.nav > a[href$="/admin/settings"]{
    flex-basis:102px;
    width:102px;
    min-width:102px;
    max-width:102px;
}
#salesPeriodSwitch{
    width:360px;
    min-width:360px;
    max-width:360px;
    grid-template-columns:46px 48px 56px 56px 140px;
}
@media(max-width:500px){
    #salesPeriodSwitch{
        width:280px;
        min-width:280px;
        max-width:280px;
        grid-template-columns:repeat(4,66.5px);
    }
    #salesPeriodSwitch .sales-period-custom{grid-column:span 4;}
}
@media(max-width:359px){
    #salesPeriodSwitch{
        width:256px;
        min-width:256px;
        max-width:256px;
        grid-template-columns:repeat(4,60.5px);
    }
}

.duplicate-comparison-warnings{margin:8px 0;padding:7px 9px;border:1px solid #e8c36a;border-radius:4px;background:#fff8e6;color:#714900;font-size:9px;line-height:1.35;overflow-wrap:anywhere;}
.duplicate-comparison-warnings p{margin:0 0 4px;}
.duplicate-comparison-warnings a{display:block;margin-top:3px;font-size:9px;overflow-wrap:anywhere;word-break:break-all;}
.website-catalog-form{display:grid;gap:10px;max-width:600px;}

/* v0.1.71 — UI refinement + submit modal + website reference library */
:root{
    --bg:#f6f8fb;
    --panel:#ffffff;
    --text:#182230;
    --muted:#667085;
    --line:#dfe5ec;
    --line-strong:#cfd7e3;
    --blue:#2563eb;
    --green:#16794b;
    --red:#b42318;
    --shadow-sm:0 1px 2px rgba(16,24,40,.04),0 4px 12px rgba(16,24,40,.04);
    --shadow-md:0 16px 40px rgba(16,24,40,.14);
}
body{background:linear-gradient(180deg,#f8fafc 0,#f5f7fb 240px,#f5f7fb 100%);}
.topbar{
    height:62px;
    padding:0 24px;
    border-bottom:1px solid rgba(255,255,255,.08);
    box-shadow:0 1px 0 rgba(16,24,40,.08);
}
.brand{font-size:17px;letter-spacing:-.01em;}
.nav a,.nav button{
    min-height:34px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    border-radius:4px;
    padding:0 10px;
    transition:background .14s ease,color .14s ease,box-shadow .14s ease;
}
.nav a:hover,.nav button:hover{background:rgba(255,255,255,.09);color:#fff;}
.container{padding-top:28px;}
.page-head{margin-bottom:18px;align-items:flex-start;}
h1{font-size:28px;line-height:1.15;letter-spacing:-.025em;}
h2{line-height:1.25;letter-spacing:-.01em;}
.panel{
    border-color:var(--line);
    padding:20px;
    box-shadow:var(--shadow-sm);
}
.panel-head{gap:14px;}
.btn,.tiny{
    min-height:36px;
    border:1px solid var(--line-strong);
    background:#fff;
    color:#344054;
    box-shadow:0 1px 1px rgba(16,24,40,.03);
    transition:transform .12s ease,border-color .12s ease,background .12s ease,box-shadow .12s ease;
}
.btn:hover:not(:disabled),.tiny:hover:not(:disabled){border-color:#b8c2cf;background:#f8fafc;box-shadow:0 2px 6px rgba(16,24,40,.08);}
.btn:active:not(:disabled),.tiny:active:not(:disabled){transform:translateY(1px);}
.btn.primary{border-color:#2563eb;background:#2563eb;color:#fff;}
.btn.primary:hover:not(:disabled){background:#1d4ed8;border-color:#1d4ed8;}
.btn.success{border-color:#b7e4ca;background:#eaf8f0;color:#17603a;}
.btn.ghost{background:transparent;box-shadow:none;}
.btn.danger-soft,.tiny.badbtn{border-color:#f3c7c3;background:#fff5f4;color:#b42318;}
.btn.danger-soft:hover:not(:disabled),.tiny.badbtn:hover:not(:disabled){background:#feeceb;border-color:#e9a8a2;}
.btn.danger-confirm{background:#b42318!important;border-color:#b42318!important;color:#fff!important;}
input,select,textarea{
    min-height:40px;
    border-color:var(--line-strong);
    background:#fff;
    color:var(--text);
    outline:none;
    transition:border-color .14s ease,box-shadow .14s ease,background .14s ease;
}
textarea{min-height:84px;resize:vertical;}
input:focus,select:focus,textarea:focus{border-color:#84adff;box-shadow:0 0 0 3px rgba(37,99,235,.10);}
input::placeholder,textarea::placeholder{color:#98a2b3;}
table{border:1px solid var(--line);border-radius:4px;overflow:hidden;background:#fff;}
th{background:#f8fafc;color:#475467;font-size:11px;text-transform:none;letter-spacing:.01em;}
th,td{padding:11px 12px;vertical-align:top;}
tbody tr:hover{background:#fbfcfe;}
.notice,.banner{border:1px solid transparent;}
.notice.ok,.banner.ok{border-color:#b7e4ca;}
.notice.bad,.banner.bad{border-color:#f0b7b2;}

/* Sales cards: cleaner hierarchy; no visible sequence number. */
.sales-self-post-card,.sales-post-tile{
    border-color:var(--line)!important;
    box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 22px rgba(16,24,40,.05)!important;
    transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;
}
.sales-self-post-card:hover,.sales-post-tile:hover{
    transform:translateY(-2px);
    border-color:#c7d2e0!important;
    box-shadow:0 12px 30px rgba(16,24,40,.10)!important;
}
.sales-self-post-media,.sales-post-card-media{background:#eef2f6;}
.sales-self-post-body h3,.sales-post-card-body h3{line-height:1.3;letter-spacing:-.01em;}
.sales-self-post-body p,.sales-post-card-body p{color:#667085;line-height:1.5;}
.sales-self-post-footer,.sales-post-card-footer{border-top-color:#edf0f4!important;}
.sales-view-details{font-weight:600!important;}

/* Submit post popup. */
body.sales-submit-modal-open,body.sales-detail-open,body.review-modal-open{overflow:hidden;}
.sales-submit-modal-backdrop{
    position:fixed;
    inset:0;
    z-index:1200;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    background:rgba(15,23,42,.48);
    backdrop-filter:blur(3px);
}
.sales-submit-modal{
    width:min(1040px,calc(100vw - 32px));
    max-height:min(860px,calc(100vh - 40px));
    display:flex;
    flex-direction:column;
    background:#fff;
    border:1px solid rgba(255,255,255,.65);
    border-radius:4px;
    box-shadow:0 24px 80px rgba(15,23,42,.28);
    overflow:hidden;
}
.sales-submit-modal-head{
    min-height:68px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:16px 20px;
    border-bottom:1px solid var(--line);
    background:#fff;
}
.sales-submit-modal-head h2{margin:2px 0 0;font-size:20px;}
.sales-submit-modal-scroll{overflow:auto;padding:18px;background:#f8fafc;}
.sales-submit-modal-scroll .sales-submit-layout{margin:0;gap:14px;}
.sales-submit-modal-scroll .sales-submit-panel{margin:0;box-shadow:none;}
.sales-submit-modal-scroll #salesSubmitMessage{margin:0 0 12px;}
.sales-submit-modal .sales-post-save-complete{display:none!important;}
.sales-duplicate-source{
    display:block;
    width:100%;
    margin:0 0 8px;
    padding:6px 8px;
    border:1px solid #f0b7b2;
    border-radius:4px;
    background:#fff5f4;
    color:#b42318;
    font-size:11px;
    line-height:1.35;
    font-weight:600;
    overflow-wrap:anywhere;
    word-break:break-all;
}
.sales-submit-message.duplicate-compact,
#verificationBanner.duplicate-compact{
    padding:7px 9px;
    margin-bottom:8px;
    font-size:9px;
    line-height:1.35;
    font-weight:700;
}
#verificationBanner.warning{font-size:9px;line-height:1.35;font-weight:700;}
#resultTitle.duplicate-title{color:#b42318;}

/* Sales deletion request stays an Admin approval request. */
.sales-delete-request-form{
    padding:14px 18px 18px;
    border-top:1px solid var(--line);
    background:#fffafa;
}
.sales-delete-request-form label{margin:0 0 10px;}
.sales-delete-request-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;}
#salesPostDeleteRequestMessage{margin-right:auto;font-size:12px;color:#667085;}
#salesPostDeleteRequestMessage.ok{color:#16794b;}
#salesPostDeleteRequestMessage.error{color:#b42318;}
.admin-post-delete-hint{font-size:11px;color:#b42318;max-width:280px;margin-right:auto;}

/* Admin settings refinement. */
.settings-card,.website-library{overflow:hidden;}
.settings-section-head{align-items:flex-start;margin-bottom:16px;}
.settings-section-head h2{margin:3px 0 5px;font-size:20px;}
.settings-subtitle{margin:0;color:#667085;line-height:1.45;}
.settings-inline-form{display:grid;grid-template-columns:minmax(260px,520px) auto;align-items:end;gap:10px;}
.settings-inline-form label{margin:0;}
.website-library-stats{display:grid;grid-template-columns:auto auto;gap:2px 7px;align-items:baseline;text-align:right;}
.website-library-stats strong{font-size:18px;}
.website-library-stats span{font-size:10px;color:#667085;}
.website-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px;}
.website-source-card,.website-manual-form,.website-library-browser,.website-index-note{
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
}
.website-source-card{padding:15px;display:flex;flex-direction:column;gap:10px;}
.website-source-card label{margin:0;}
.website-card-title{display:flex;align-items:flex-start;gap:10px;min-height:38px;}
.website-card-title>div{display:grid;gap:3px;}
.website-card-title small{color:#667085;font-size:11px;line-height:1.4;}
.settings-step{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 26px;border:1px solid #c7d7fe;border-radius:4px;background:#eff4ff;color:#1d4ed8;font-size:12px;font-weight:800;}
.website-card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.website-manual-form{padding:15px;margin-bottom:14px;}
.website-manual-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;margin:8px 0 12px;}
.website-manual-grid label{margin-top:8px;}
.website-manual-wide{grid-column:1/-1;}
.website-library-browser{overflow:hidden;}
.website-library-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:14px 15px;border-bottom:1px solid var(--line);background:#fbfcfe;}
.website-library-toolbar>div:first-child{display:grid;gap:4px;}
.website-library-toolbar small{color:#667085;font-size:11px;}
.website-library-search-row{display:flex;gap:7px;min-width:min(430px,48%);}
.website-library-search-row input{min-width:0;}
.website-reference-tablewrap{max-height:480px;overflow:auto;}
.website-reference-table{border:0;border-radius:0;}
.website-reference-table th{position:sticky;top:0;z-index:1;}
.website-reference-description{max-width:360px;white-space:normal;line-height:1.45;color:#667085;}
.website-index-note{display:flex;align-items:flex-start;gap:12px;margin-top:14px;padding:12px 14px;background:#f8fafc;font-size:12px;}
.website-index-note span{color:#667085;}
.provider-page-notice.ok{border:1px solid #b7e4ca;background:#effaf3;color:#17603a;}
.provider-page-notice.error{border:1px solid #f0b7b2;background:#fff4f3;color:#b42318;}

/* Review modal footer remains usable with the new permanent-delete action. */
.review-modal-footer-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}

@media(max-width:900px){
    .website-settings-grid{grid-template-columns:1fr;}
    .website-library-toolbar{align-items:stretch;flex-direction:column;}
    .website-library-search-row{min-width:0;width:100%;}
    .sales-submit-modal-backdrop{padding:10px;}
    .sales-submit-modal{width:100%;max-height:calc(100vh - 20px);}
    .sales-submit-modal-scroll .sales-submit-layout{grid-template-columns:1fr;}
}
@media(max-width:620px){
    .settings-inline-form{grid-template-columns:1fr;}
    .website-manual-grid{grid-template-columns:1fr;}
    .website-manual-wide{grid-column:auto;}
    .sales-post-detail-footer{flex-wrap:wrap;}
    .sales-post-detail-footer .btn,.sales-post-detail-footer a{flex:1 1 auto;}
}

/* v0.1.71: sequence numbers are internal only; never show them in the UI. */
.sales-self-post-sequence,.sales-post-card-sequence,.sales-post-tile-sequence{display:none!important;}
.sales-expanded-post-item::before{display:none!important;content:none!important;}

/* v0.1.71: inspection steps report independently. */
.sales-inspection-progress div{justify-content:space-between;gap:12px;}
.sales-inspection-progress div>span{min-width:0;}
.inspection-step-state{margin-left:auto;font-size:9px;font-weight:800;white-space:nowrap;color:#667085;}
.sales-inspection-progress div.active .inspection-step-state{color:#2563eb;}
.sales-inspection-progress div.done .inspection-step-state{color:#15803d;}
.sales-inspection-progress div.failed .inspection-step-state{color:#b42318;}
.sales-inspection-progress div.skipped{opacity:.65;}
.sales-inspection-progress div.skipped:before{background:#98a2b3;}
.sales-inspection-progress div.skipped .inspection-step-state{color:#667085;}


/* v0.1.76 — 3s desktop hover / tap touch tooltip + compact Custom preset */
#salesPeriodSwitch{
    width:286px;
    min-width:286px;
    max-width:286px;
    grid-template-columns:46px 48px 56px 56px 68px;
}
#salesPeriodSwitch .sales-period-custom{
    min-width:0;
    grid-column:auto;
}

/* The chart tooltip is immediate; positioning is entirely pointer/tap driven. */
.sales-chart-tooltip{
    transition:none !important;
    animation:none !important;
}

@media(max-width:500px){
    #salesPeriodSwitch{
        width:280px;
        min-width:280px;
        max-width:280px;
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
    #salesPeriodSwitch .sales-period-custom{
        grid-column:auto;
    }
}

@media(max-width:359px){
    #salesPeriodSwitch{
        width:256px;
        min-width:256px;
        max-width:256px;
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
    #salesPeriodSwitch .sales-period-button{
        padding-left:3px;
        padding-right:3px;
        font-size:7.5px;
    }
    #salesPeriodSwitch .sales-period-custom{
        grid-column:auto;
    }
}

/* v0.1.78 — information center + selected Sales activity + delete request state */
.admin-info-menu{
    position:relative;
    z-index:520;
}
.admin-info-toggle{
    position:relative;
    width:34px;
    height:34px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid rgba(219,234,254,.22) !important;
    border-radius:4px;
    background:rgba(255,255,255,.06) !important;
    color:#dbeafe !important;
    cursor:pointer;
}
.admin-info-toggle:hover,
.admin-info-toggle:focus-visible,
.admin-info-toggle[aria-expanded="true"]{
    border-color:rgba(147,197,253,.7) !important;
    background:rgba(59,130,246,.18) !important;
    outline:none;
}
.admin-info-toggle svg{
    width:17px;
    height:17px;
    fill:currentColor;
}
.admin-info-badge{
    position:absolute;
    top:-6px;
    right:-6px;
    min-width:17px;
    height:17px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0 4px;
    border:2px solid #101828;
    border-radius:9px;
    background:#ef4444;
    color:#fff;
    font-size:8px;
    font-weight:900;
    line-height:1;
}
.admin-info-panel{
    position:absolute;
    top:calc(100% + 10px);
    right:0;
    width:min(430px,calc(100vw - 28px));
    max-height:min(520px,calc(100vh - 92px));
    overflow:hidden;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    color:#172033;
    box-shadow:0 18px 50px rgba(15,23,42,.24);
}
.admin-info-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:13px 14px;
    border-bottom:1px solid #e5e7eb;
    background:#f8fafc;
}
.admin-info-head>div{
    display:grid;
    gap:2px;
}
.admin-info-head strong{
    font-size:14px;
}
.admin-info-head>span{
    color:#64748b;
    font-size:9px;
    font-weight:800;
}
.admin-info-list{
    max-height:430px;
    overflow:auto;
}
.admin-info-item{
    display:grid;
    gap:10px;
    padding:12px 14px;
    border-bottom:1px solid #eef2f7;
}
.admin-info-item:last-child{
    border-bottom:0;
}
.admin-info-item-copy{
    min-width:0;
}
.admin-info-item-meta{
    display:flex;
    align-items:center;
    gap:7px;
    margin-bottom:5px;
    color:#64748b;
    font-size:9px;
}
.admin-info-item-meta>span{
    padding:3px 5px;
    border-radius:4px;
    background:#fff1f2;
    color:#be123c;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.admin-info-item-meta b{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.admin-info-post-link{
    display:block;
    overflow:hidden;
    color:#0f172a;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:12px;
    font-weight:900;
}
.admin-info-post-link:hover,
.admin-info-post-link:focus-visible{
    color:#2563eb;
    text-decoration:underline;
    outline:none;
}
.admin-info-item p{
    margin:4px 0 0;
    color:#667085;
    font-size:10px;
    line-height:1.4;
}
.admin-info-actions{
    display:flex;
    justify-content:flex-end;
    gap:6px;
}
.admin-info-actions .tiny{
    min-height:30px;
    border:1px solid transparent;
}
.admin-info-empty{
    padding:22px 14px;
    color:#94a3b8;
    text-align:center;
    font-size:10px;
}

.admin-sales-activity-panel{
    margin:0 14px 14px;
    box-shadow:none;
}
.admin-sales-activity-panel .sales-chart-shell{
    min-height:300px;
}
.admin-sales-activity-panel .sales-chart-y-axis,
.admin-sales-activity-panel .sales-chart-canvas{
    height:280px;
}
.admin-sales-activity-panel .sales-channel-control{
    max-width:100%;
}
.sales-post-detail-footer #salesPostDeleteRequestOpen.delete-requested{
    border-color:#b7e4ca;
    background:#effaf3;
    color:#17603a;
    opacity:1;
}

@media(max-width:760px){
    .admin-info-panel{
        position:fixed;
        top:58px;
        right:10px;
        left:10px;
        width:auto;
        max-height:calc(100vh - 70px);
    }
    .admin-sales-activity-panel{
        margin-left:8px;
        margin-right:8px;
    }
}


/* v0.1.79 Shared Admin/Sales range controls + downloadable reports */
.admin-page-head.sales-portal-head,
.report-page-head.sales-portal-head{
    align-items:start;
}
.admin-portal-head-actions{
    grid-template-columns:auto auto;
}
.admin-portal-head-actions .sales-head-period-switch,
.report-head-actions .sales-head-period-switch{
    grid-template-columns:repeat(5,max-content);
}
.admin-progress-toolbar{
    justify-content:flex-end;
}
.report-head-actions{
    grid-template-columns:auto minmax(0,1fr);
    max-width:min(100%,860px);
}
.report-range-filter{
    display:flex;
    align-items:flex-start;
    gap:8px;
}
.report-sales-field{
    width:164px;
    display:flex;
    flex-direction:column;
    gap:4px;
}
.report-sales-field > span{
    height:14px;
    display:flex;
    align-items:center;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    line-height:14px;
}
.report-sales-field select{
    box-sizing:border-box;
    width:164px;
    height:38px;
    min-height:38px;
    margin:0;
}
.report-run-button{
    height:38px;
    min-height:38px;
    margin-top:18px;
}
.report-result-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    margin-bottom:14px;
}
.report-result-head h2,
.report-result-head p{
    margin-bottom:0;
}
.report-download-button{
    white-space:nowrap;
}
.report-table-wrap{
    padding:0;
    box-shadow:none;
}
@media(max-width:1180px){
    .admin-portal-head-actions,
    .report-head-actions{
        width:100%;
        grid-template-columns:1fr;
        justify-content:start;
    }
    .admin-portal-head-actions .sales-head-period-switch,
    .report-head-actions .sales-head-period-switch{
        margin-top:0;
    }
    .report-range-filter{
        width:100%;
        flex-wrap:wrap;
    }
}
@media(max-width:760px){
    .admin-portal-head-actions .sales-head-period-switch,
    .report-head-actions .sales-head-period-switch{
        width:100%;
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
    .report-sales-field,
    .report-sales-field select{
        width:100%;
    }
    .report-range-filter{
        display:grid;
        grid-template-columns:1fr;
    }
    .report-run-button{
        width:100%;
        margin-top:0;
    }
    .report-result-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .report-download-button{
        width:100%;
        text-align:center;
    }
}

/* v0.1.80 — clearer Information Center, aligned live Reports, Sales motion polish */
.nav .admin-info-panel{
    color:#172033;
}
.admin-info-list{
    padding:6px;
    background:#f8fafc;
}
.admin-info-item{
    display:block;
    margin:0 0 6px;
    padding:0;
    overflow:hidden;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
.admin-info-item:last-child{
    margin-bottom:0;
    border-bottom:1px solid #dbe3ee;
}
.nav .admin-info-summary{
    width:100%;
    min-height:72px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:11px 12px;
    border:0;
    border-radius:0;
    background:#fff !important;
    color:#172033 !important;
    text-align:left;
    cursor:pointer;
}
.nav .admin-info-summary:hover,
.nav .admin-info-summary:focus-visible,
.nav .admin-info-summary.is-open{
    background:#f1f5f9 !important;
    color:#0f172a !important;
    outline:none;
}
.admin-info-summary-main{
    min-width:0;
    display:grid;
    gap:4px;
}
.admin-info-summary-title{
    overflow:hidden;
    color:#0f172a;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:12px;
    line-height:1.3;
}
.admin-info-summary-reason{
    overflow:hidden;
    color:#475569;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:10px;
    line-height:1.35;
}
.admin-info-chevron{
    width:18px;
    height:18px;
    flex:0 0 18px;
    fill:#475569;
    transition:transform .16s ease;
}
.admin-info-summary.is-open .admin-info-chevron{
    transform:rotate(180deg);
}
.admin-info-detail{
    border-top:1px solid #e2e8f0;
    background:#fff;
}
.admin-info-detail-card{
    display:grid;
    gap:0;
    padding:4px 12px 8px;
}
.admin-info-detail-row{
    display:grid;
    grid-template-columns:62px minmax(0,1fr);
    gap:10px;
    padding:8px 0;
    border-bottom:1px solid #eef2f7;
}
.admin-info-detail-row:last-child{
    border-bottom:0;
}
.admin-info-detail-row>span{
    color:#64748b;
    font-size:9px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.03em;
}
.admin-info-detail-row strong,
.admin-info-detail-row p{
    margin:0;
    color:#172033;
    font-size:11px;
    line-height:1.45;
}
.nav .admin-info-panel .admin-info-post-link{
    color:#1d4ed8 !important;
    font-size:11px;
    font-weight:800;
    white-space:normal;
    overflow-wrap:anywhere;
}
.nav .admin-info-panel .admin-info-post-link:hover,
.nav .admin-info-panel .admin-info-post-link:focus-visible{
    color:#1e40af !important;
    text-decoration:underline;
}
.admin-info-detail .admin-info-actions{
    justify-content:flex-start;
    padding:0 12px 12px;
}
.nav .admin-info-panel .admin-info-actions button{
    min-height:34px;
    padding:7px 10px;
    border:1px solid transparent;
    border-radius:4px;
    font-size:10px;
    font-weight:800;
    cursor:pointer;
}
.nav .admin-info-panel .admin-info-approve{
    border-color:#bbf7d0;
    background:#dcfce7 !important;
    color:#166534 !important;
}
.nav .admin-info-panel .admin-info-reject{
    border-color:#fecaca;
    background:#fff1f2 !important;
    color:#b42318 !important;
}
.admin-info-action-status{
    min-height:0;
    padding:0 12px 10px;
    color:#64748b;
    font-size:10px;
}
.admin-info-action-status.ok{color:#166534;}
.admin-info-action-status.error{color:#b42318;}

/* Reports: every control shares one baseline and the result refreshes in-place. */
.report-page-head.sales-portal-head{
    grid-template-columns:minmax(220px,1fr) auto;
    gap:22px;
    align-items:start;
}
.report-page-copy p{
    margin:0;
    color:#64748b;
    font-size:11px;
}
.report-toolbar{
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    gap:8px;
    margin:0;
}
.report-control{
    display:flex;
    flex-direction:column;
    gap:4px;
    margin:0;
}
.report-control-label{
    box-sizing:border-box;
    height:14px;
    display:flex;
    align-items:center;
    margin:0;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    line-height:14px;
}
.report-range-control .sales-head-period-switch{
    width:auto;
    height:38px;
    min-height:38px;
    margin:0;
    grid-template-columns:repeat(5,max-content);
}
.report-date-field{
    width:144px;
}
.report-date-field input[type="date"]{
    box-sizing:border-box;
    width:144px;
    height:38px;
    min-height:38px;
    margin:0;
    padding:0 9px;
}
.report-sales-field{
    width:164px;
}
.report-sales-field select{
    box-sizing:border-box;
    width:164px;
    height:38px;
    min-height:38px;
    margin:0;
}
.report-run-control{
    width:auto;
}
.report-run-button{
    box-sizing:border-box;
    height:38px;
    min-height:38px;
    margin:0;
    padding-top:0;
    padding-bottom:0;
}
.report-result-panel{
    transition:opacity .14s ease,transform .14s ease;
}
.report-result-panel.report-loading{
    opacity:.48;
    transform:translateY(2px);
    pointer-events:none;
}
.report-run-button.report-loading{
    opacity:.62;
    cursor:wait;
}

/* Sales: small jQuery-driven transitions, never required for functionality. */
.sales-post-detail-backdrop,
.sales-submit-modal-backdrop,
.sales-image-lightbox{
    will-change:opacity;
}
.sales-post-delete-request-form.sales-request-opening{
    overflow:hidden;
}

@media(max-width:1240px){
    .report-page-head.sales-portal-head{
        grid-template-columns:1fr;
    }
    .report-toolbar{
        justify-content:flex-start;
        flex-wrap:wrap;
    }
}
@media(max-width:760px){
    .admin-info-list{padding:5px;}
    .nav .admin-info-summary{min-height:68px;padding:10px;}
    .admin-info-detail-row{grid-template-columns:54px minmax(0,1fr);}
    .report-toolbar{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        width:100%;
    }
    .report-range-control,
    .report-run-control{
        grid-column:1/-1;
    }
    .report-range-control .sales-head-period-switch{
        width:100%;
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
    .report-date-field,
    .report-date-field input[type="date"],
    .report-sales-field,
    .report-sales-field select{
        width:100%;
    }
    .report-run-button{width:100%;}
}
@media(max-width:480px){
    .report-toolbar{grid-template-columns:1fr;}
    .report-range-control,
    .report-run-control{grid-column:auto;}
}
@media(prefers-reduced-motion:reduce){
    .admin-info-chevron,
    .report-result-panel{
        transition:none;
    }
}

/* v0.1.81 — report controls live with the report result, aligned with download. */
.report-page-head.sales-portal-head{
    display:block;
    margin-bottom:14px;
}
.report-result-head{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:end;
    gap:14px;
    margin-bottom:12px;
}
.report-result-head .report-toolbar{
    min-width:0;
    justify-content:flex-start;
    align-items:flex-start;
    flex-wrap:wrap;
}
.report-download-button{
    box-sizing:border-box;
    height:38px;
    min-height:38px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    align-self:end;
    margin:0;
}
.report-result-meta{
    margin:0 0 12px;
}
.report-result-meta h2{
    margin:0;
    font-size:17px;
}
#reportTableArea{
    transition:opacity .12s ease;
}

@media(max-width:1100px){
    .report-result-head{
        grid-template-columns:1fr;
        align-items:stretch;
    }
    .report-download-button{
        justify-self:start;
    }
}
@media(max-width:760px){
    .report-result-head{
        display:grid;
        grid-template-columns:1fr;
    }
    .report-download-button{
        width:100%;
        justify-self:stretch;
        text-align:center;
    }
}
@media(prefers-reduced-motion:reduce){
    #reportTableArea{transition:none;}
}


/* v0.1.82 report review statistics + clearer management review purpose */
.report-review-explainer{
    margin:4px 0 0;
    color:#64748b;
    font-size:10px;
    line-height:1.45;
}
.report-table-wrap th:nth-last-child(-n+2),
.report-table-wrap td:nth-last-child(-n+2){
    white-space:nowrap;
}
.sales-review-purpose{
    max-width:720px;
    margin:6px 0 0;
    color:#64748b;
    font-size:10px;
    line-height:1.5;
}

/* v0.1.83 — global Information Center post popup + daily report rows */
.nav .admin-info-panel{
    width:min(420px,calc(100vw - 20px));
}
.admin-info-list{
    max-height:min(520px,calc(100vh - 110px));
    overflow:auto;
}
.admin-info-item{
    margin-bottom:6px;
}
.nav .admin-info-post-open{
    width:100%;
    display:grid;
    gap:5px;
    padding:11px 12px;
    border:0;
    background:#fff !important;
    color:#172033 !important;
    text-align:left;
    cursor:pointer;
}
.nav .admin-info-post-open:hover,
.nav .admin-info-post-open:focus-visible{
    background:#f1f5f9 !important;
    outline:none;
}
.admin-info-open-label{
    color:#2563eb;
    font-size:10px;
    font-weight:800;
}
.admin-info-item-meta{
    display:flex;
    align-items:center;
    gap:8px;
    min-width:0;
}
.admin-info-item-meta>span{
    padding:2px 5px;
    border-radius:4px;
    background:#fff1f2;
    color:#be123c;
    font-size:8px;
    font-weight:900;
    letter-spacing:.04em;
    text-transform:uppercase;
}
.admin-info-item-meta>b{
    overflow:hidden;
    color:#475569;
    font-size:9px;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.admin-info-post-open .admin-info-summary-title{
    color:#0f172a;
    font-size:12px;
    font-weight:800;
}
.admin-info-post-open .admin-info-summary-reason{
    color:#475569;
    font-size:10px;
}

body.admin-delete-request-modal-open{overflow:hidden;}
.admin-delete-request-modal{
    position:fixed;
    inset:0;
    z-index:5000;
    display:grid;
    place-items:center;
    padding:24px;
}
.admin-delete-request-modal.hidden{display:none;}
.admin-delete-request-backdrop{
    position:absolute;
    inset:0;
    background:rgba(15,23,42,.58);
}
.admin-delete-request-card{
    position:relative;
    z-index:1;
    width:min(780px,calc(100vw - 32px));
    max-height:min(820px,calc(100vh - 32px));
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    box-shadow:0 24px 70px rgba(15,23,42,.28);
}
.admin-delete-request-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    padding:16px 18px;
    border-bottom:1px solid #e2e8f0;
}
.admin-delete-request-head h2{
    margin:2px 0 0;
    color:#0f172a;
    font-size:20px;
    line-height:1.25;
}
.admin-delete-request-head p{
    margin:4px 0 0;
    color:#64748b;
    font-size:11px;
}
.admin-delete-request-close{
    width:36px;
    height:36px;
    flex:0 0 36px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#334155;
    font-size:22px;
    line-height:1;
    cursor:pointer;
}
.admin-delete-request-loading{
    padding:34px 18px;
    color:#64748b;
    text-align:center;
}
.admin-delete-request-body{
    overflow:auto;
    padding:16px 18px 18px;
}
.admin-delete-request-meta{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    border:1px solid #e2e8f0;
    border-radius:4px;
    overflow:hidden;
}
.admin-delete-request-meta>div{
    min-width:0;
    padding:10px 12px;
    border-right:1px solid #e2e8f0;
}
.admin-delete-request-meta>div:last-child{border-right:0;}
.admin-delete-request-meta span,
.admin-delete-request-reason-card>span{
    display:block;
    margin-bottom:3px;
    color:#64748b;
    font-size:8px;
    font-weight:900;
    letter-spacing:.04em;
    text-transform:uppercase;
}
.admin-delete-request-meta strong{
    display:block;
    overflow:hidden;
    color:#0f172a;
    font-size:11px;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.admin-delete-request-content{
    padding:16px 0 4px;
}
.admin-delete-request-content h3{
    margin:0 0 8px;
    color:#0f172a;
    font-size:18px;
    line-height:1.35;
}
.admin-delete-request-description{
    color:#334155;
    font-size:12px;
    line-height:1.65;
    white-space:pre-wrap;
}
.admin-delete-request-photos{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px;
    margin-top:12px;
}
.admin-delete-request-photo{
    display:block;
    overflow:hidden;
    aspect-ratio:1/1;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
}
.admin-delete-request-photo img{
    width:100%;
    height:100%;
    display:block;
    object-fit:cover;
}
.admin-delete-request-original{margin-top:12px;}
.admin-delete-request-reason-card{
    margin-top:14px;
    padding:12px;
    border:1px solid #fed7aa;
    border-radius:4px;
    background:#fff7ed;
}
.admin-delete-request-reason-card p{
    margin:0;
    color:#7c2d12;
    font-size:12px;
    line-height:1.5;
}
.admin-delete-request-status{
    min-height:18px;
    margin-top:10px;
    color:#64748b;
    font-size:11px;
}
.admin-delete-request-status.error{color:#b42318;}
.admin-delete-request-status.ok{color:#166534;}
.admin-delete-request-footer{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    padding:12px 18px;
    border-top:1px solid #e2e8f0;
    background:#f8fafc;
}
.admin-delete-request-footer.hidden{display:none;}

/* Reports refresh automatically; no redundant Run button. */
.report-toolbar{align-items:flex-start;}
.report-result-head{align-items:end;}
.report-table-wrap th:first-child,
.report-table-wrap td:first-child,
.report-table-wrap th:last-child,
.report-table-wrap td:last-child{white-space:nowrap;}

@media(max-width:760px){
    .admin-delete-request-modal{padding:8px;}
    .admin-delete-request-card{width:100%;max-height:calc(100vh - 16px);}
    .admin-delete-request-meta{grid-template-columns:repeat(2,minmax(0,1fr));}
    .admin-delete-request-meta>div:nth-child(2){border-right:0;}
    .admin-delete-request-meta>div:nth-child(-n+2){border-bottom:1px solid #e2e8f0;}
    .admin-delete-request-photos{grid-template-columns:repeat(2,minmax(0,1fr));}
    .admin-delete-request-footer{display:grid;grid-template-columns:1fr 1fr;}
    .admin-delete-request-footer .btn:first-child{grid-column:1/-1;}
    .report-range-control{grid-column:1/-1;}
}


/* v0.1.84 — target period label cleanup + compact report download */
.sales-period-target-copy > span > span{
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    color:inherit;
    font:inherit;
}
.report-download-button{
    height:38px;
    min-height:38px;
    padding:0 12px;
    font-size:11px;
    line-height:1;
    font-weight:800;
}

/* v0.1.85 — compact Admin navigation + sticky dashboard range controls */
.topbar[data-user-role="admin"]{
    min-height:52px;
    height:52px;
    gap:12px;
    padding:0 18px;
}
.topbar[data-user-role="admin"] .brand{
    font-size:16px;
}
.topbar[data-user-role="admin"] .nav{
    gap:4px;
    flex-wrap:nowrap;
    font-size:12px;
}
.topbar[data-user-role="admin"] .nav > a,
.topbar[data-user-role="admin"] .nav > [data-nav-i18n],
.topbar[data-user-role="admin"] .nav > form{
    flex:0 0 auto;
    width:auto;
    min-width:0;
    max-width:none;
}
.topbar[data-user-role="admin"] .nav > a,
.topbar[data-user-role="admin"] .nav > [data-nav-i18n],
.topbar[data-user-role="admin"] .nav > form button{
    min-height:30px;
    padding-left:8px;
    padding-right:8px;
}
.topbar[data-user-role="admin"] .app-language-switch{
    padding:1px;
}
.topbar[data-user-role="admin"] .app-language-button{
    min-height:28px;
    padding:3px 6px;
}
.topbar[data-user-role="admin"] .admin-info-toggle{
    width:32px;
    height:32px;
    min-height:32px;
    padding:0;
}

.admin-dashboard-title-head{
    margin-bottom:6px;
}
.admin-dashboard-title-head h1{
    margin-bottom:0;
}
.admin-sales-progress-section{
    margin-top:0;
}
.admin-dashboard-range-bar{
    position:sticky;
    top:0;
    z-index:180;
    margin:0 0 8px;
    padding:7px 0 8px;
    border-bottom:1px solid rgba(207,215,227,.9);
    background:rgba(246,248,251,.96);
    backdrop-filter:blur(8px);
}
.admin-dashboard-range-bar .admin-portal-head-actions{
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    gap:8px;
    width:100%;
}
.admin-dashboard-range-bar .sales-head-period-switch{
    margin-top:18px;
}
.admin-section-head-with-summary{
    align-items:flex-end;
    margin-bottom:10px;
}
.admin-section-head-with-summary .admin-section-summary{
    display:flex;
    align-items:center;
    gap:4px;
    padding-bottom:1px;
    white-space:nowrap;
}

@media(max-width:1050px){
    .topbar[data-user-role="admin"]{
        height:auto;
        min-height:52px;
        padding-top:8px;
        padding-bottom:8px;
    }
    .topbar[data-user-role="admin"] .nav{
        flex-wrap:wrap;
    }
}
@media(max-width:980px){
    .admin-dashboard-range-bar .admin-portal-head-actions{
        justify-content:flex-start;
        flex-wrap:wrap;
    }
    .admin-dashboard-range-bar .sales-head-period-switch{
        margin-top:0;
    }
}
@media(max-width:720px){
    .admin-dashboard-range-bar{
        margin-left:-14px;
        margin-right:-14px;
        padding:8px 14px;
    }
    .admin-dashboard-range-bar .admin-portal-head-actions{
        display:grid;
        grid-template-columns:1fr;
        width:100%;
    }
    .admin-dashboard-range-bar .sales-head-period-switch{
        width:100%;
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
    .admin-section-head-with-summary{
        align-items:flex-start;
        flex-direction:column;
        gap:6px;
    }
}


/* v0.1.86 — separate Post Review / Person Review + Person Review attachments */
.management-report-table .report-group-head th{
    background:#eef3f9;
    color:#334155;
    font-size:8px;
    font-weight:900;
    letter-spacing:.04em;
    text-transform:uppercase;
    vertical-align:middle;
}
.management-report-table .report-sub-head th{
    background:#f8fafc;
    color:#475569;
    font-size:8px;
    font-weight:800;
}
.management-report-table .report-post-review-group{
    border-left:2px solid #cbd5e1;
    border-right:1px solid #dbe3ec;
}
.management-report-table .report-person-review-group{
    border-left:2px solid #93c5fd;
    background:#eff6ff!important;
    color:#1d4ed8!important;
}
.person-review-attachment-composer{
    margin-top:14px;
}
.person-review-current-attachments{
    margin-top:8px;
}
.person-review-current-attachments:empty{
    display:none;
}
.sales-review-history-item .review-comment-attachments{
    margin-top:8px;
}
.sales-review-history-item .review-comment-attachment{
    max-width:180px;
}

/* v0.1.87 — Person Review history delete filter + permanent attachment delete */
.sales-review-history-head-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:9px;
    min-width:0;
}
.sales-review-save-history-head .history-deleted-switch{
    min-height:26px;
    padding:3px 6px;
    gap:6px;
}
.sales-review-save-history-head .history-deleted-switch-label{
    font-size:8px;
    text-transform:none;
}
.sales-review-history-item{
    position:relative;
    transition:opacity .16s ease,border-color .16s ease,background .16s ease;
}
.sales-review-history-item.is-deleted{
    border-style:dashed;
    background:#f8fafc;
    opacity:.72;
}
.sales-review-history-meta-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:7px;
    min-width:0;
}
.sales-review-history-delete{
    width:24px;
    height:24px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    padding:0;
    border:1px solid #fecaca;
    border-radius:4px;
    background:#fff;
    color:#dc2626;
    font-size:15px;
    line-height:1;
    cursor:pointer;
}
.sales-review-history-delete:hover,
.sales-review-history-delete:focus{
    border-color:#f87171;
    background:#fff1f2;
    outline:none;
}
.sales-review-history-delete.confirm-delete{
    border-color:#dc2626;
    background:#dc2626;
    color:#fff;
}
.sales-review-history-deleted-audit{
    margin-top:8px;
    padding-top:7px;
    border-top:1px dashed #cbd5e1;
    color:#64748b;
    font-size:8px;
}
.sales-review-history-deleted-audit strong{
    color:#b91c1c;
}
@media(pointer:coarse){
    .sales-review-history-delete{
        width:36px;
        height:36px;
    }
}
.sales-review-history-delete svg{width:13px;height:13px;fill:currentColor;display:block;}


/* v0.1.88 — compact sticky Admin range + explicit Sales Review semantics */
.admin-dashboard-range-bar{
    min-height:0;
    margin:0 0 5px;
    padding:3px 0 4px;
}
.admin-dashboard-range-bar .admin-portal-head-actions{
    min-height:0;
    align-items:flex-start;
}
.admin-dashboard-range-bar .sales-head-period-switch{
    height:34px;
    min-height:34px;
    margin-top:15px;
    padding:2px;
}
.admin-dashboard-range-bar .sales-head-period-switch .sales-period-button{
    height:28px;
    min-height:28px;
    padding:0 9px;
}
.admin-dashboard-range-bar .admin-range-field input[type="date"]{
    height:34px;
    min-height:34px;
    padding-top:6px;
    padding-bottom:6px;
}
.admin-dashboard-range-bar .admin-range-field-stack{
    padding-bottom:0;
}
.admin-dashboard-range-bar .dashboard-back-today{
    top:51px;
}
.admin-dashboard-range-bar + .admin-section-head{
    margin-top:0;
}
.sales-review-history-head-actions .history-deleted-switch:not(.hidden){
    display:inline-flex;
}
.management-report-table .report-person-review-group{
    white-space:nowrap;
}

/* v0.1.88 sticky range height hard cap */
@media(min-width:981px){
    .admin-dashboard-range-bar{
        height:54px;
        max-height:54px;
        overflow:visible;
    }
    .admin-dashboard-range-bar .admin-portal-head-actions{
        height:46px;
        max-height:46px;
    }
}


/* v0.1.89 — one-day Sales Review access + natural sticky range toolbar */
.admin-dashboard-range-bar{
    height:auto !important;
    max-height:none !important;
    margin:0 0 10px;
    padding:10px 0;
    border-bottom:0;
    background:transparent;
    box-shadow:none;
    backdrop-filter:none;
    transition:
        background .14s ease,
        box-shadow .14s ease,
        border-color .14s ease,
        padding .14s ease;
}
.admin-dashboard-range-bar .admin-portal-head-actions{
    height:auto !important;
    max-height:none !important;
    min-height:0;
    align-items:flex-start;
    justify-content:flex-start;
    gap:8px;
}
.admin-dashboard-range-bar .sales-head-period-switch{
    height:38px;
    min-height:38px;
    margin-top:18px;
    padding:2px;
}
.admin-dashboard-range-bar .sales-head-period-switch .sales-period-button{
    height:32px;
    min-height:32px;
    padding:0 10px;
}
.admin-dashboard-range-bar .admin-range-field input[type="date"]{
    height:38px;
    min-height:38px;
    padding-top:7px;
    padding-bottom:7px;
}
.admin-dashboard-range-bar .admin-range-field-stack{
    padding-bottom:18px;
}
.admin-dashboard-range-bar .dashboard-back-today{
    top:55px;
}


@media(max-width:980px){
    .admin-dashboard-range-bar .admin-portal-head-actions{
        justify-content:flex-start;
    }
    .admin-dashboard-range-bar .sales-head-period-switch{
        margin-top:0;
    }
}

@media(max-width:720px){
    .admin-dashboard-range-bar{
        margin-left:0;
        margin-right:0;
        padding:8px 0;
    }
    
}

/* v0.1.90 — compact padding-driven sticky range + flat Admin Posting Activity */
@media(min-width:981px){
    .admin-dashboard-range-bar{
        height:auto !important;
        min-height:0 !important;
        max-height:none !important;
        overflow:visible;
    }
    .admin-dashboard-range-bar .admin-portal-head-actions{
        height:auto !important;
        min-height:0 !important;
        max-height:none !important;
    }
}

/* Legacy Admin range bar remains normal-flow only. The dedicated sticky
 * range strip introduced later is the sole fixed/sticky implementation. */
.admin-dashboard-range-bar{
    padding:10px 0;
    box-shadow:none !important;
}



/* The selected Sales Posting Activity belongs to the Post List section; do
 * not render it as another card nested inside that card. */
.admin-sales-activity-panel{
    margin:0;
    border-top:0;
    border-right:0;
    border-bottom:1px solid #dbe3ee;
    border-left:0;
    border-radius:0;
    box-shadow:none !important;
}
.admin-sales-activity-panel .sales-activity-chart-head{
    border-radius:0;
    background:transparent;
}

@media(max-width:980px){


    .admin-sales-activity-panel{
        margin-left:0;
        margin-right:0;
    }
}


/* v0.1.91 — universal sticky header, safe sticky layers, Bad wording, Admin Refresh Content */
:root{
    --cdsp-topbar-height:52px;
}
.topbar[data-user-role="admin"],
.topbar[data-user-role="sales"]{
    position:sticky;
    top:0;
    z-index:100;
}

/* The Admin range toolbar lives below the universal header. Keep its layer below
 * every existing modal (Post Review starts at z-index 120). */
.admin-dashboard-range-bar{
    top:var(--cdsp-topbar-height,52px);
    z-index:90;
}

.review-modal-refresh{
    min-height:40px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:7px 10px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#334155;
    cursor:pointer;
    font-size:9px;
    font-weight:900;
    white-space:nowrap;
}
.review-modal-refresh:hover:not(:disabled),
.review-modal-refresh:focus-visible:not(:disabled){
    border-color:#93c5fd;
    background:#eff6ff;
    color:#1d4ed8;
    outline:none;
}
.review-modal-refresh:disabled{
    opacity:.55;
    cursor:wait;
}
.review-modal-refresh.is-loading{
    background:#f8fafc;
}

@media(max-width:560px){
    .review-modal-refresh{
        min-height:36px;
    }
}

/* v0.1.92 — de-conflict range stacks, truly content-sized sticky bar, right-side Sales controls */

/* Admin and Sales no longer share both stack classes in markup. Keep each stack
 * intrinsically sized so no inherited flex/stretch/min-height can inflate a sticky bar. */
.admin-range-field-stack,
.sales-to-field-stack{
    box-sizing:border-box;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    flex:0 0 auto !important;
    align-self:flex-start !important;
}

/* Admin sticky toolbar: content + padding only. */
.admin-dashboard-range-bar,
.admin-dashboard-range-bar .admin-portal-head-actions,
.admin-dashboard-range-bar .dashboard-date-controls,
.admin-dashboard-range-bar .dashboard-date-control-row,
.admin-dashboard-range-bar .admin-range-field-stack{
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
}
.admin-dashboard-range-bar .admin-range-field-stack{
    padding-bottom:18px;
}




/* Desktop Sales controls belong to the right of the page title. Older <=1120px
 * rules stacked them too early, even when there is ample horizontal room. */
@media(min-width:861px){
    .sales-portal-head{
        display:grid !important;
        grid-template-columns:minmax(260px,1fr) auto !important;
        align-items:start !important;
        gap:20px !important;
    }
    .sales-portal-head-actions{
        width:auto !important;
        display:grid !important;
        grid-template-columns:auto auto auto !important;
        align-items:start !important;
        justify-content:end !important;
        justify-self:end !important;
        gap:10px !important;
    }
    .sales-portal-head-actions .sales-head-period-switch{
        margin-top:18px !important;
    }
}
@media(max-width:860px){
    .sales-portal-head{
        grid-template-columns:1fr !important;
    }
    .sales-portal-head-actions{
        width:100% !important;
        justify-content:start !important;
    }
}

/* Person/Sales Review deleted-history filter: separate, obvious row like the
 * Post Review deleted-comments filter. */
.sales-review-history-filter-row{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    min-height:30px;
    padding:5px 8px;
    border-top:1px solid #e2e8f0;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-review-history-filter-row .history-deleted-switch{
    min-height:26px;
    padding:3px 6px;
    gap:6px;
}
.sales-review-history-filter-row .history-deleted-switch-label{
    font-size:8px;
    font-weight:800;
    text-transform:none;
}

/* Settings Display Name should look like a normal field/action pair. */
#application-settings .settings-inline-form{
    grid-template-columns:minmax(220px,520px) auto;
    justify-content:start;
    align-items:end;
    gap:8px;
}
#application-settings .settings-inline-form .btn{
    width:auto !important;
    min-width:92px;
    height:38px;
    min-height:38px;
    padding:0 14px;
    font-size:10px;
    white-space:nowrap;
}

/* Compact thumb cues anywhere the dashboard exposes Good/Bad summary labels. */
[data-card-good-label]::before,
.post-summary.good > span:first-child::before{
    content:'👍';
    margin-right:3px;
    font-size:.9em;
}
[data-card-issues-label]::before,
.post-summary.bad > span:first-child::before{
    content:'👎';
    margin-right:3px;
    font-size:.9em;
}

@media(max-width:640px){
    #application-settings .settings-inline-form{
        grid-template-columns:1fr;
    }
    #application-settings .settings-inline-form .btn{
        width:max-content !important;
    }
}

/* v0.1.93 — Admin/Sales activity-header alignment + compact detached Admin range */
.admin-activity-head{
    display:grid !important;
    grid-template-columns:minmax(260px,1fr) auto !important;
    align-items:start !important;
    gap:20px !important;
}
.admin-activity-head .admin-dashboard-heading{
    min-width:0;
}
.admin-activity-head .admin-dashboard-heading .sales-portal-subtitle{
    margin-top:7px;
}
.admin-dashboard-range-anchor{
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    justify-self:end;
    width:max-content;
    min-width:0;
    box-sizing:border-box;
}
.admin-activity-head .admin-dashboard-range-bar{
    position:static !important;
    top:auto !important;
    z-index:auto;
    width:max-content;
    min-width:0;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    backdrop-filter:none !important;
    overflow:visible;
}
.admin-activity-head .admin-dashboard-range-bar .admin-portal-head-actions{
    display:grid !important;
    grid-template-columns:auto auto !important;
    align-items:start !important;
    justify-content:end !important;
    gap:10px !important;
    width:auto !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
}
.admin-activity-head .admin-dashboard-range-bar .sales-head-period-switch{
    margin-top:18px !important;
}
.admin-activity-head .admin-dashboard-range-bar .admin-range-field-stack{
    padding-bottom:0 !important;
}
.admin-activity-head .admin-dashboard-range-bar .dashboard-back-today{
    position:static !important;
    display:block;
    width:max-content;
    margin:3px 0 0 auto;
    line-height:1.2;
}
.admin-activity-head .admin-dashboard-range-bar .dashboard-back-today.hidden{
    display:none !important;
}

.admin-sales-progress-section{
    margin-top:0 !important;
}

@media(max-width:860px){
    .admin-activity-head{
        grid-template-columns:1fr !important;
    }
    .admin-dashboard-range-anchor{
        justify-self:stretch;
        width:100%;
    }
    .admin-activity-head .admin-dashboard-range-bar{
        width:100%;
    }
    .admin-activity-head .admin-dashboard-range-bar .admin-portal-head-actions{
        grid-template-columns:1fr !important;
        justify-content:start !important;
        width:100% !important;
    }
    .admin-activity-head .admin-dashboard-range-bar .sales-head-period-switch{
        width:100%;
        margin-top:0 !important;
    }
}


/* v0.1.94 — compact sticky anchor, persistent Back to today, true thumb icons, instant review delete */

/* Use the same real thumb glyph shape as the Post Review decision control.
 * Do not rely on emoji rendering, which differed by OS and looked like a tiny
 * yellow marker instead of a thumb. */
[data-card-good-label]::before,
.post-summary.good > span:first-child::before,
.sales-self-post-status.good > span:first-child::before,
.sales-post-tile-status.good::before,
.sales-expanded-post-status.good::before,
.sales-post-detail-status.good::before,
.review-history-decision.good::before{
    content:'' !important;
    display:inline-block !important;
    width:11px !important;
    height:11px !important;
    margin-right:4px !important;
    flex:0 0 11px !important;
    vertical-align:-2px !important;
    background:#16a34a !important;
    -webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%3E%3Cpath%20d%3D%27M8.2%2010.1%2011%204.3c.3-.7%201-1.2%201.8-1.2%201.2%200%202.1%201%202%202.2l-.4%203.2h4.3c1.4%200%202.4%201.3%202%202.6l-2.1%207.2c-.3.9-1.1%201.5-2%201.5H8.2V10.1ZM3%2010h3.2v10H3V10Z%27%2F%3E%3C%2Fsvg%3E") center / contain no-repeat !important;
    mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%3E%3Cpath%20d%3D%27M8.2%2010.1%2011%204.3c.3-.7%201-1.2%201.8-1.2%201.2%200%202.1%201%202%202.2l-.4%203.2h4.3c1.4%200%202.4%201.3%202%202.6l-2.1%207.2c-.3.9-1.1%201.5-2%201.5H8.2V10.1ZM3%2010h3.2v10H3V10Z%27%2F%3E%3C%2Fsvg%3E") center / contain no-repeat !important;
}
[data-card-issues-label]::before,
.post-summary.bad > span:first-child::before,
.sales-self-post-status.bad > span:first-child::before,
.sales-post-tile-status.bad::before,
.sales-expanded-post-status.bad::before,
.sales-post-detail-status.bad::before,
.review-history-decision.bad::before{
    content:'' !important;
    display:inline-block !important;
    width:11px !important;
    height:11px !important;
    margin-right:4px !important;
    flex:0 0 11px !important;
    vertical-align:-2px !important;
    background:#dc2626 !important;
    -webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%3E%3Cpath%20d%3D%27m8.2%2013.9%202.8%205.8c.3.7%201%201.2%201.8%201.2%201.2%200%202.1-1%202-2.2l-.4-3.2h4.3c1.4%200%202.4-1.3%202-2.6l-2.1-7.2c-.3-.9-1.1-1.5-2-1.5H8.2v9.7ZM3%204h3.2v10H3V4Z%27%2F%3E%3C%2Fsvg%3E") center / contain no-repeat !important;
    mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%3E%3Cpath%20d%3D%27m8.2%2013.9%202.8%205.8c.3.7%201%201.2%201.8%201.2%201.2%200%202.1-1%202-2.2l-.4-3.2h4.3c1.4%200%202.4-1.3%202-2.6l-2.1-7.2c-.3-.9-1.1-1.5-2-1.5H8.2v9.7ZM3%204h3.2v10H3V4Z%27%2F%3E%3C%2Fsvg%3E") center / contain no-repeat !important;
}
.sales-self-post-status.good,
.sales-self-post-status.bad,
.sales-post-tile-status.good,
.sales-post-tile-status.bad,
.sales-expanded-post-status.good,
.sales-expanded-post-status.bad,
.sales-post-detail-status.good,
.sales-post-detail-status.bad,
.review-history-decision.good,
.review-history-decision.bad{
    align-items:center !important;
}

/* Review-history trash is now a one-click action. Give immediate visual
 * feedback only for the short network reconciliation window. */
.sales-review-history-item.is-optimistic-delete{
    opacity:0 !important;
    transform:translateY(-4px);
    transition:opacity .12s ease,transform .12s ease;
}

/* v0.1.95 — clean sticky range deck, stable header widths, stable range fields */
/*
 * The original Admin range controls stay in normal document flow. A separate
 * compact sticky deck is shown only after the original controls scroll under
 * the universal header. This prevents legacy page-head/stack rules from ever
 * inflating the fixed layer.
 */
.admin-activity-head .admin-dashboard-range-bar{
    position:static !important;
    inset:auto !important;
    width:max-content !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    backdrop-filter:none !important;
    overflow:visible !important;
}
.admin-dashboard-range-anchor{
    width:max-content !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:visible !important;
}

/* From/To use one stable label row. Back to today shares the To label row and
 * never creates another line or absolute-positioned spacer. */
.activity-range-date-row{
    display:flex !important;
    align-items:flex-start !important;
    gap:8px !important;
    min-height:0 !important;
    height:auto !important;
}
.activity-range-field,
.admin-range-field-stack.activity-range-field,
.sales-to-field-stack.activity-range-field{
    box-sizing:border-box !important;
    display:flex !important;
    flex:0 0 144px !important;
    width:144px !important;
    min-width:144px !important;
    max-width:144px !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    flex-direction:column !important;
    align-items:stretch !important;
    align-self:flex-start !important;
    gap:3px !important;
    margin:0 !important;
    padding:0 !important;
    position:relative !important;
}
.activity-range-label-row{
    box-sizing:border-box;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:6px;
    width:100%;
    height:14px;
    min-height:14px;
    margin:0;
    padding:0;
    line-height:14px;
}
.activity-range-label-row label{
    display:block !important;
    width:auto !important;
    margin:0 !important;
    padding:0 !important;
    color:#64748b;
    font-size:8px !important;
    font-weight:800;
    line-height:14px !important;
}
.activity-range-field input[type="date"],
.admin-dashboard-range-bar .activity-range-field input[type="date"]{
    box-sizing:border-box !important;
    width:144px !important;
    height:38px !important;
    min-height:38px !important;
    max-height:38px !important;
    margin:0 !important;
    padding:0 9px !important;
    line-height:38px !important;
}
.activity-range-label-row .dashboard-back-today,
.admin-range-field-stack .activity-range-label-row .dashboard-back-today,
.sales-to-field-stack .activity-range-label-row .dashboard-back-today{
    position:static !important;
    inset:auto !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:flex-end !important;
    width:auto !important;
    height:14px !important;
    min-height:0 !important;
    max-height:14px !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    background:transparent !important;
    color:#2563eb !important;
    font-size:7px !important;
    font-weight:900 !important;
    line-height:14px !important;
    white-space:nowrap !important;
}
.activity-range-label-row .dashboard-back-today.hidden{
    display:none !important;
}

/* Dedicated Admin sticky range strip. It has no dependency on .page-head,
 * .admin-range-field-stack, or legacy sticky rules. */
.admin-dashboard-sticky-range{
    position:fixed;
    left:0;
    right:0;
    z-index:90;
    display:none;
    box-sizing:border-box;
    width:100%;
    margin:0;
    padding:0;
    border:0;
    border-bottom:1px solid #dbe3ee;
    background:rgba(248,250,252,.985);
    box-shadow:none;
}
.admin-dashboard-sticky-range.is-visible{
    display:block;
}
.admin-dashboard-sticky-inner{
    box-sizing:border-box;
    width:min(1320px,100%);
    height:auto;
    min-height:0;
    margin:0 auto;
    padding:5px 24px 6px;
    display:flex;
    align-items:flex-start;
    justify-content:flex-end;
    gap:9px;
}
.admin-sticky-period-switch{
    box-sizing:border-box;
    flex:0 0 318px;
    width:318px;
    min-width:318px;
    max-width:318px;
    height:34px;
    min-height:34px;
    margin:13px 0 0;
    padding:2px;
    display:grid;
    grid-template-columns:52px 54px 62px 66px 76px;
    gap:2px;
    border:1px solid #d7dee8;
    border-radius:4px;
    background:#f1f4f8;
}
.admin-sticky-period-switch .sales-period-button{
    box-sizing:border-box;
    width:100%;
    min-width:0;
    height:28px;
    min-height:28px;
    margin:0;
    padding:0 5px;
    font-size:8px;
    white-space:nowrap;
}
.admin-sticky-date-row{
    display:flex;
    align-items:flex-start;
    gap:8px;
    height:auto;
    min-height:0;
}
.admin-dashboard-sticky-range .activity-range-field{
    flex-basis:144px !important;
}
.admin-dashboard-sticky-range .activity-range-field input[type="date"]{
    height:34px !important;
    min-height:34px !important;
    max-height:34px !important;
    line-height:34px !important;
    padding:0 8px !important;
}
.admin-dashboard-sticky-range .activity-range-label-row{
    height:12px;
    min-height:12px;
    line-height:12px;
}
.admin-dashboard-sticky-range .activity-range-label-row label,
.admin-dashboard-sticky-range .activity-range-label-row .dashboard-back-today{
    line-height:12px !important;
    height:12px !important;
    max-height:12px !important;
}

/* Stable top navigation widths: changing UI language must never resize or
 * shuffle the header. */
#appLanguageSwitch{
    box-sizing:border-box !important;
    display:grid !important;
    grid-template-columns:repeat(4,56px) !important;
    flex:0 0 230px !important;
    width:230px !important;
    min-width:230px !important;
    max-width:230px !important;
    gap:1px !important;
}
#appLanguageSwitch .app-language-button{
    box-sizing:border-box !important;
    width:56px !important;
    min-width:56px !important;
    max-width:56px !important;
    padding-left:2px !important;
    padding-right:2px !important;
    overflow:hidden;
    text-overflow:clip;
    white-space:nowrap;
}
.topbar .nav > [data-nav-i18n="dashboard"]{width:78px !important;min-width:78px !important;max-width:78px !important;}
.topbar .nav > [data-nav-i18n="reports"]{width:76px !important;min-width:76px !important;max-width:76px !important;}
.topbar .nav > [data-nav-i18n="settings"]{width:94px !important;min-width:94px !important;max-width:94px !important;}
.topbar .nav > [data-nav-i18n="submit"]{width:70px !important;min-width:70px !important;max-width:70px !important;}
.topbar .nav > form{width:78px !important;min-width:78px !important;max-width:78px !important;}
.topbar .nav > form button{width:78px !important;min-width:78px !important;max-width:78px !important;}

/* The Sales chart day itself always owns pointer interaction. Chart decoration
 * cannot intercept the delayed hover controller. */
.sales-chart-day{
    pointer-events:auto !important;
}
.sales-chart-day-plot,
.sales-chart-stack,
.sales-chart-segment,
.sales-chart-target-line,
.sales-chart-grid-lines{
    pointer-events:none !important;
}
.sales-chart-tooltip{
    z-index:500 !important;
}

@media(max-width:860px){
    .admin-dashboard-sticky-inner{
        padding-left:14px;
        padding-right:14px;
        justify-content:flex-start;
        overflow-x:auto;
    }
    .admin-sticky-period-switch{
        flex:0 0 286px;
        width:286px;
        min-width:286px;
        max-width:286px;
        grid-template-columns:46px 48px 56px 56px 68px;
    }
}
@media(max-width:620px){
    .activity-range-date-row{
        flex-wrap:wrap;
    }
    .admin-dashboard-sticky-inner{
        gap:7px;
    }
    .admin-sticky-date-row{
        gap:6px;
    }
    .admin-dashboard-sticky-range .activity-range-field{
        flex-basis:132px !important;
        width:132px !important;
        min-width:132px !important;
        max-width:132px !important;
    }
    .admin-dashboard-sticky-range .activity-range-field input[type="date"]{
        width:132px !important;
    }
}

/* v0.1.96 — stable review-delete motion + identical sticky typography */
/* Person/Sales Review delete: fade and collapse the affected row only. The
 * history list is never rebuilt during the optimistic delete, so its scroll
 * position and neighboring cards remain stable. */
.sales-review-history-item.is-person-review-deleting{
    box-sizing:border-box !important;
    min-height:0 !important;
    overflow:hidden !important;
    transform-origin:top center;
    transition:
        opacity .16s ease,
        transform .16s ease,
        height .22s ease .06s,
        margin .22s ease .06s,
        padding .22s ease .06s,
        border-width .22s ease .06s !important;
    will-change:opacity,transform,height,margin,padding;
}
.sales-review-history-item.is-person-review-deleting-active{
    opacity:0 !important;
    transform:translateY(-3px) !important;
    height:0 !important;
    min-height:0 !important;
    margin-top:0 !important;
    margin-bottom:0 !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
    border-top-width:0 !important;
    border-bottom-width:0 !important;
}
.sales-review-history-item.is-person-review-delete-pending{
    opacity:.58;
    transition:opacity .16s ease;
}

/* The full Admin activity heading has normal breathing room only while it is
 * in document flow. No fixed height: padding creates the normal top spacing. */
.admin-activity-head{
    box-sizing:border-box !important;
    padding-top:10px !important;
    padding-bottom:18px !important;
    margin-bottom:0 !important;
}

/* Normal and sticky controls use exactly the same typography. */
.admin-activity-head .sales-period-button,
.admin-dashboard-sticky-range .sales-period-button{
    font-family:Arial,Helvetica,sans-serif !important;
    font-size:10px !important;
    font-weight:800 !important;
    line-height:1 !important;
}
.admin-activity-head input[type="date"],
.admin-dashboard-sticky-range input[type="date"]{
    font-family:Arial,Helvetica,sans-serif !important;
    font-size:12px !important;
    font-weight:700 !important;
}
.admin-activity-head .dashboard-back-today,
.admin-dashboard-sticky-range .dashboard-back-today{
    font-family:Arial,Helvetica,sans-serif !important;
    font-size:7px !important;
    font-weight:900 !important;
    line-height:1 !important;
}

/* Once sticky, remove the From/To heading row entirely. The inputs and Back to
 * today share one compact row under the universal header. */
.admin-dashboard-sticky-inner{
    align-items:center !important;
    padding-top:6px !important;
    padding-bottom:6px !important;
}
.admin-sticky-period-switch{
    margin-top:0 !important;
    height:34px !important;
    min-height:34px !important;
    align-self:center !important;
}
.admin-sticky-date-row{
    align-items:center !important;
    height:34px !important;
    min-height:34px !important;
    gap:8px !important;
}
.admin-dashboard-sticky-range .admin-sticky-range-field{
    display:block !important;
    height:34px !important;
    min-height:34px !important;
    max-height:34px !important;
}
.admin-sticky-sr-label{
    position:absolute !important;
    width:1px !important;
    height:1px !important;
    margin:-1px !important;
    padding:0 !important;
    overflow:hidden !important;
    clip:rect(0 0 0 0) !important;
    clip-path:inset(50%) !important;
    white-space:nowrap !important;
    border:0 !important;
}
.admin-dashboard-sticky-range .admin-sticky-range-field input[type="date"]{
    display:block !important;
    width:144px !important;
    height:34px !important;
    min-height:34px !important;
    max-height:34px !important;
    margin:0 !important;
    padding:0 8px !important;
    line-height:34px !important;
}
.admin-sticky-back-today{
    box-sizing:border-box !important;
    position:static !important;
    inset:auto !important;
    display:inline-flex !important;
    flex:0 0 92px !important;
    width:92px !important;
    min-width:92px !important;
    max-width:92px !important;
    height:34px !important;
    min-height:34px !important;
    max-height:34px !important;
    margin:0 !important;
    padding:0 4px !important;
    align-items:center !important;
    justify-content:flex-end !important;
    border:0 !important;
    background:transparent !important;
    color:#2563eb !important;
    white-space:nowrap !important;
}
/* Preserve sticky geometry when the link is not needed so the controls never
 * shift sideways as the selected date reaches today. */
.admin-sticky-back-today.hidden{
    display:inline-flex !important;
    visibility:hidden !important;
    pointer-events:none !important;
}

@media(max-width:860px){
    .admin-activity-head{
        padding-top:8px !important;
        padding-bottom:14px !important;
    }
    .admin-sticky-back-today{
        flex-basis:84px !important;
        width:84px !important;
        min-width:84px !important;
        max-width:84px !important;
    }
}

/* v0.1.97 — Sales chart owns one stable 3-second hover controller. */


/* v0.2.09 provider row compaction + visible drag feedback */
.provider-card{
    position:relative;
    grid-template-columns:36px 56px minmax(0,1fr) auto;
    gap:12px;
    overflow:visible;
}

.provider-card-main{
    display:grid;
    gap:6px;
}

.provider-meta{
    display:flex;
    align-items:center;
    gap:10px 14px;
    flex-wrap:nowrap;
    min-width:0;
    overflow:hidden;
}

.provider-meta > *{
    display:inline-flex;
    align-items:center;
    flex:0 0 auto;
    white-space:nowrap;
}

.provider-last-test{
    white-space:nowrap;
}

.provider-card.dragging{
    opacity:.96;
    border-color:#60a5fa;
    background:#ffffff;
    box-shadow:0 14px 34px rgba(37,99,235,.18),0 4px 12px rgba(15,23,42,.12);
    transform:translateY(-2px) scale(1.01);
    z-index:20;
}

.provider-card.drag-source{
    border-color:#60a5fa;
    box-shadow:0 0 0 2px rgba(96,165,250,.22);
}

.provider-card.drag-over{
    background:#f8fbff;
    box-shadow:0 0 0 2px rgba(96,165,250,.18);
}

.provider-card.drag-over::after{
    content:'';
    position:absolute;
    left:10px;
    right:10px;
    height:3px;
    border-radius:999px;
    background:#2563eb;
}

.provider-card.drag-over-before::after{ top:-2px; }
.provider-card.drag-over-after::after{ bottom:-2px; }

.provider-drag{
    background:#f8fafc;
    border-color:#e2e8f0;
    color:#64748b;
    transition:background .14s ease,border-color .14s ease,color .14s ease,box-shadow .14s ease,transform .14s ease;
}

.provider-card:hover .provider-drag{
    background:#eef4ff;
    border-color:#c7d8fb;
    color:#1d4ed8;
}

.provider-card.dragging .provider-drag,
.provider-drag:active{
    background:#dbeafe;
    border-color:#93c5fd;
    color:#1d4ed8;
    box-shadow:0 0 0 2px rgba(147,197,253,.24);
    transform:scale(1.02);
    cursor:grabbing;
}

@media (max-width:980px){
    .provider-meta{
        flex-wrap:wrap;
        overflow:visible;
    }
}

@media (max-width:760px){
    .provider-card{
        grid-template-columns:36px 44px minmax(0,1fr);
        align-items:start;
    }

    .provider-card-actions{
        grid-column:1 / -1;
        justify-content:flex-end;
        padding-left:0;
    }
}

/* v0.2.10 — Provider workspace + paginated log + real drag placeholder */
.provider-operations-grid{
    display:grid;
    grid-template-columns:minmax(0,1.08fr) minmax(520px,.92fr);
    align-items:start;
    gap:14px;
    margin-bottom:14px;
}

.provider-operations-grid > .panel{
    min-width:0;
    margin-bottom:0;
}

.provider-jobs-panel{
    position:sticky;
    top:66px;
    align-self:start;
    min-width:0;
}

.provider-jobs-head{
    align-items:flex-start;
    gap:10px;
}

.provider-jobs-toolbar{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:10px;
    margin:0 0 10px;
}

.provider-jobs-time-control{
    display:grid;
    gap:4px;
    margin:0;
    min-width:150px;
    color:var(--muted);
    font-size:9px;
    font-weight:800;
}

.provider-jobs-time-control > span{
    text-transform:uppercase;
    letter-spacing:.04em;
}

.provider-jobs-time-control select{
    height:34px;
    min-height:34px;
    padding:0 28px 0 9px;
    font-size:10px;
}

.provider-jobs-summary{
    display:inline-flex;
    align-items:baseline;
    gap:4px;
    color:var(--muted);
    font-size:9px;
    white-space:nowrap;
}

.provider-jobs-summary strong{
    color:var(--text);
    font-size:13px;
}

.provider-jobs-tablewrap{
    width:100%;
    max-width:100%;
    overflow:auto;
    border:1px solid var(--line);
    border-radius:4px;
}

.provider-jobs-table{
    width:100%;
    min-width:620px;
    margin:0;
    table-layout:auto;
    font-size:9px;
}

.provider-jobs-table th,
.provider-jobs-table td{
    padding:8px 7px;
    vertical-align:middle;
    white-space:nowrap;
}

.provider-jobs-table th:first-child,
.provider-jobs-table td:first-child{
    min-width:118px;
}

.provider-jobs-table .job-error{
    min-width:110px;
    max-width:180px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}

.provider-jobs-empty td{
    height:70px;
    color:var(--muted);
    text-align:center;
}

.provider-jobs-pagination{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    margin-top:10px;
}

.provider-jobs-page-copy{
    min-width:88px;
    color:var(--muted);
    font-size:9px;
    text-align:center;
    white-space:nowrap;
}

.provider-jobs-page-copy strong{
    color:var(--text);
}

.provider-drop-placeholder{
    box-sizing:border-box;
    width:100%;
    min-height:64px;
    border:2px dashed #60a5fa;
    border-radius:4px;
    background:linear-gradient(180deg,#eff6ff 0%,#f8fbff 100%);
    box-shadow:inset 0 0 0 1px rgba(37,99,235,.06);
    position:relative;
    transition:height .12s ease,background .12s ease,border-color .12s ease;
}

.provider-drop-placeholder::before{
    content:'Drop provider here';
    position:absolute;
    inset:0;
    display:grid;
    place-items:center;
    color:#2563eb;
    font-size:9px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.04em;
}

.provider-card.drag-collapsed{
    box-sizing:border-box !important;
    height:0 !important;
    min-height:0 !important;
    max-height:0 !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    opacity:0 !important;
    overflow:hidden !important;
    transform:none !important;
    pointer-events:none !important;
}

.provider-drag-preview{
    opacity:.96 !important;
    background:#fff !important;
    border-color:#60a5fa !important;
    box-shadow:0 16px 40px rgba(37,99,235,.22),0 5px 15px rgba(15,23,42,.16) !important;
    transform:rotate(.35deg) scale(1.005) !important;
}

@media(max-width:1180px){
    .provider-operations-grid{
        grid-template-columns:minmax(0,1fr);
    }

    .provider-jobs-panel{
        position:static;
        top:auto;
    }
}

@media(max-width:680px){
    .provider-jobs-toolbar{
        align-items:stretch;
        flex-direction:column;
    }

    .provider-jobs-time-control{
        width:100%;
    }

    .provider-jobs-time-control select{
        width:100%;
    }

    .provider-jobs-summary{
        align-self:flex-end;
    }

    .provider-jobs-pagination{
        justify-content:space-between;
    }
}

/* The v0.2.10 placeholder owns insertion feedback; suppress the older line-only marker. */
.provider-card.drag-over::after{
    display:none;
}


/* v0.2.11 pointer-based provider sorting */
.provider-drag{
    touch-action:none;
    user-select:none;
    -webkit-user-select:none;
}

body.provider-sort-active{
    cursor:grabbing !important;
    user-select:none !important;
    -webkit-user-select:none !important;
}

body.provider-sort-active *{
    cursor:grabbing !important;
}

.provider-card.provider-pointer-dragging{
    box-sizing:border-box;
    opacity:.97;
    border-color:#60a5fa;
    background:#fff;
    box-shadow:0 18px 46px rgba(37,99,235,.24),0 6px 18px rgba(15,23,42,.18);
    transform:rotate(.25deg) scale(1.006);
    transition:none !important;
}

.provider-card.provider-pointer-dragging .provider-drag{
    background:#dbeafe;
    border-color:#93c5fd;
    color:#1d4ed8;
    box-shadow:0 0 0 2px rgba(147,197,253,.26);
}

.provider-drop-placeholder{
    flex:0 0 auto;
}


/* Marketplace verification warning states. */
.notice.warning,.banner.warning{
    border-color:#f4d38a;
    background:#fffbeb;
    color:#92400e;
}
.sales-submit-message.warning{
    border-color:#f4d38a;
    background:#fffbeb;
    color:#92400e;
}
.sales-inspection-progress div.limited:before{
    background:#f59e0b;
}
.sales-inspection-progress div.limited{
    border-color:#f4d38a;
    background:#fffbeb;
    color:#92400e;
}


/* V0.2.16 marketplace image extraction preview. / V0.2.16 Marketplace 图片解析预览。 */
.sales-verification-images{margin:14px 0 4px}.sales-verification-images-title{display:block;margin-bottom:8px;font-size:13px}.sales-verification-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}.sales-verification-image-grid a{display:block;aspect-ratio:4/3;overflow:hidden;border:1px solid var(--border,#d9dee7);border-radius:4px;background:#f4f6f8}.sales-verification-image-grid img{display:block;width:100%;height:100%;object-fit:cover}

/* Admin browser database maintenance / Admin 浏览器数据库维护 */
.maintenance-page-head{align-items:flex-start}.maintenance-card{margin-bottom:18px}.maintenance-version{font-size:12px;font-weight:800;color:#526277;white-space:nowrap}.maintenance-check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.maintenance-check{display:grid;gap:5px;border:1px solid #d8e1ec;border-radius:4px;padding:13px;background:#fff;min-width:0}.maintenance-check>strong{font-size:14px}.maintenance-check>span,.maintenance-check>small{font-size:12px;color:#64748b;overflow-wrap:anywhere}.maintenance-check>b{font-size:12px}.maintenance-check.is-ok{border-color:#a8d8b4;background:#f6fff8}.maintenance-check.needs-attention{border-color:#e6c56f;background:#fffaf0}.maintenance-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.maintenance-action-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding-top:14px;border-top:1px solid #e5ebf2}.maintenance-action-row>div{display:grid;gap:4px}.maintenance-action-row small{color:#64748b}.maintenance-results{display:grid;gap:8px;margin-top:14px}.maintenance-results h3,.maintenance-query-output h3{margin:0 0 4px;font-size:14px}.maintenance-result-row{display:grid;grid-template-columns:minmax(180px,1fr) 90px minmax(220px,2fr);gap:10px;align-items:center;border:1px solid #e0e7ef;border-radius:4px;padding:9px 11px;font-size:12px}.maintenance-result-row.status-applied{background:#f6fff8}.maintenance-result-row.status-failed{background:#fff4f3}.maintenance-query-form{display:grid;gap:12px}.maintenance-query-form label{display:grid;gap:6px;font-weight:700}.maintenance-query-form textarea{width:100%;min-height:170px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5;resize:vertical}.maintenance-write-confirm{padding:12px;border:1px solid #e6c56f;border-radius:4px;background:#fffaf0}.maintenance-write-confirm small{font-weight:400;color:#64748b}.maintenance-query-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.maintenance-query-actions>span{font-size:11px;color:#64748b;max-width:800px}.maintenance-query-output{margin-top:16px;padding-top:14px;border-top:1px solid #e5ebf2}.maintenance-query-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px;font-size:12px}.maintenance-query-meta code{overflow-wrap:anywhere}.maintenance-tablewrap{max-height:440px;overflow:auto}.maintenance-query-table{width:100%;border-collapse:collapse;font-size:12px}.maintenance-query-table th,.maintenance-query-table td{padding:8px;border-bottom:1px solid #e5ebf2;text-align:left;vertical-align:top;max-width:420px;overflow-wrap:anywhere}.maintenance-query-table th{position:sticky;top:0;background:#f8fafc;z-index:1}.maintenance-entry-card .panel-head{margin-bottom:0}.maintenance-warning{margin-bottom:14px}
@media(max-width:760px){.maintenance-check-grid{grid-template-columns:1fr}.maintenance-action-row{align-items:stretch;flex-direction:column}.maintenance-action-row .btn{width:100%}.maintenance-result-row{grid-template-columns:1fr}.maintenance-query-actions{align-items:stretch;flex-direction:column}.maintenance-query-actions .btn{width:100%}}

/* V0.2.20 Admin Maintenance diagnostic error / 数据库维护诊断错误 */
.maintenance-error{display:block;margin-top:7px;padding:7px 8px;border:1px solid #f0b8b4;border-radius:4px;background:#fff4f3;color:#9f1d17;white-space:normal;overflow-wrap:anywhere;font-weight:600;}

/* v0.2.24 Sales calendar status + compact Admin progress cards */
.sales-progress-grid{
    gap:10px;
    grid-template-columns:repeat(auto-fill,minmax(205px,1fr));
}
.sales-progress-card{
    padding:11px;
}
.sales-progress-card-head{
    gap:8px;
}
.sales-progress-avatar{
    flex-basis:30px;
    width:30px;
    height:30px;
    font-size:12px;
}
.sales-progress-person strong{
    font-size:12px;
}
.sales-progress-number{
    margin-top:11px;
}
.sales-progress-number strong{
    font-size:26px;
}
.sales-period-target-copy{
    margin-top:5px;
}
.sales-progress-track{
    height:9px;
    margin-top:8px;
}
.sales-progress-meta{
    margin-top:6px;
    gap:4px 8px;
}
.sales-progress-actions{
    margin-top:10px;
    padding-top:9px;
}
.sales-card-admin-actions{
    gap:6px;
}
.sales-daily-review,
.sales-person-settings-button{
    min-height:34px;
    padding-top:0;
    padding-bottom:0;
}
.sales-card-view-footer{
    min-height:36px;
    margin:9px -11px -11px;
    padding:0 11px;
}
.sales-card-view-label{
    min-height:36px;
}
.sales-progress-badges{
    display:flex;
    flex:0 0 auto;
    align-items:center;
    justify-content:flex-end;
    gap:4px;
    flex-wrap:wrap;
    max-width:44%;
}
.sales-new-posts-badge{
    display:inline-flex;
    align-items:center;
    gap:3px;
    padding:4px 6px;
    border:1px solid #f5c96a;
    border-radius:4px;
    background:#fff7df;
    color:#9a4b00;
    font-size:8px;
    font-weight:900;
    line-height:1;
    white-space:nowrap;
}
.sales-new-posts-badge.hidden{
    display:none;
}
.sales-new-posts-badge [data-new-posts-count]{
    font-size:9px;
}
.sales-expanded-posts{
    grid-column:1 / -1;
    width:100%;
    margin-top:0;
    margin-bottom:2px;
}

@media(min-width:1280px){
    .sales-progress-grid{
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
}
@media(min-width:1000px) and (max-width:1279px){
    .sales-progress-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}
@media(min-width:760px) and (max-width:999px){
    .sales-progress-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}
@media(min-width:520px) and (max-width:759px){
    .sales-progress-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:519px){
    .sales-progress-grid{
        grid-template-columns:1fr;
    }
    .sales-progress-card{
        padding:11px;
    }
    .sales-progress-number strong{
        font-size:27px;
    }
    .sales-progress-track{
        height:10px;
    }
    .sales-card-view-footer{
        margin-left:-11px;
        margin-right:-11px;
        margin-bottom:-11px;
        padding-left:11px;
        padding-right:11px;
    }
}


/* v0.2.25 Dense responsive cards + first-image verification UI / 紧凑响应式卡片 + 首图验证 */
/* Admin Sales cards: 6 desktop, denser tablet, always 2 columns on phones. */
.sales-progress-grid{
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:8px;
}
.sales-progress-card{
    min-width:0;
}

@media(max-width:1279px){
    .sales-progress-grid{
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
}
@media(max-width:999px){
    .sales-progress-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}
@media(max-width:759px){
    .sales-progress-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}
@media(max-width:599px){
    .sales-progress-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:6px;
    }
    .sales-progress-card{
        padding:8px;
    }
    .sales-progress-card-head{
        gap:5px;
    }
    .sales-progress-avatar{
        width:24px;
        height:24px;
        flex-basis:24px;
        font-size:9px;
    }
    .sales-progress-person strong{
        font-size:9px;
        line-height:1.15;
    }
    .sales-progress-person span{
        font-size:7px;
    }
    .sales-progress-badges{
        max-width:42%;
        gap:2px;
    }
    .sales-new-posts-badge,
    .sales-target-badge{
        padding:3px 4px;
        font-size:7px;
    }
    .sales-progress-number{
        margin-top:7px;
    }
    .sales-progress-number strong{
        font-size:22px;
    }
    .sales-progress-number span,
    .sales-period-target-copy,
    .sales-progress-meta{
        font-size:7px;
    }
    .sales-progress-track{
        height:8px;
        margin-top:6px;
    }
    .sales-progress-actions{
        margin-top:7px;
        padding-top:7px;
    }
    .sales-card-admin-actions{
        width:100%;
        flex-direction:row;
        flex-wrap:nowrap;
        align-items:center;
        justify-content:flex-end;
        gap:4px;
    }
    .sales-daily-review{
        flex:1 1 auto;
        min-width:0;
        min-height:30px;
        padding:3px 4px;
        font-size:7px;
        line-height:1.1;
        white-space:normal;
    }
    .sales-person-settings-button{
        flex:0 0 30px;
        width:30px;
        min-width:30px;
        min-height:30px;
        padding:0;
    }
    .sales-person-settings-button span{
        display:none;
    }
    .sales-person-settings-button svg{
        width:13px;
        height:13px;
    }
    .sales-card-view-footer{
        min-height:32px;
        margin:7px -8px -8px;
        padding:0 8px;
        font-size:8px;
    }
    .sales-card-view-label{
        min-height:32px;
    }
}

/* Sales post cards: keep more cards on narrow widths and never collapse to one phone column. */
.sales-post-card-grid{
    grid-template-columns:repeat(6,minmax(0,1fr));
}
@media(max-width:1200px){
    .sales-post-card-grid{
        grid-template-columns:repeat(5,minmax(0,1fr));
    }
}
@media(max-width:900px){
    .sales-post-card-grid{
        grid-template-columns:repeat(4,minmax(0,1fr));
    }
}
@media(max-width:720px){
    .sales-post-card-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
    }
}
@media(max-width:640px){
    .sales-post-card-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:6px;
        padding:7px;
    }
    .sales-self-post-media{
        height:92px;
    }
    .sales-self-post-body{
        min-height:82px;
        padding:7px;
    }
    .sales-self-post-body h3{
        font-size:9px;
    }
    .sales-self-post-body p{
        font-size:7px;
    }
    .sales-self-post-footer{
        padding:5px 6px;
    }
}

/* v0.2.26 — remove temporary Sales calendar UI + Product Detail review layout
 * EN: Admin Post Review now presents the saved marketplace item like a product
 * detail page: the first listing image stays on the left and title/description
 * stay on the right. The layout progressively tightens and stacks on small phones.
 * 中文：Admin Post Review 改为 Product Detail 排版：首张商品图在左侧，
 * 标题与描述在右侧；窄屏逐级压缩，超窄手机自动上下堆叠。 */
.review-product-detail{
    display:grid;
    grid-template-columns:minmax(170px,220px) minmax(0,1fr);
    align-items:start;
    gap:16px;
    min-width:0;
}
.review-product-info{
    min-width:0;
}
.review-product-info .review-content-date{
    margin:0 0 6px;
}
.review-product-info h3{
    margin:0;
    font-size:17px;
    line-height:1.32;
    overflow-wrap:anywhere;
}
.review-product-info > p{
    margin:8px 0 0;
    font-size:10px;
    line-height:1.6;
    white-space:pre-wrap;
    overflow-wrap:anywhere;
}
.review-product-info .review-content-facts{
    margin-top:12px;
}
.review-product-detail .review-content-photos{
    display:block;
    width:100%;
    min-width:0;
    margin:0;
}
.review-product-detail .review-content-photos.hidden{
    display:none;
}
.review-product-detail .review-content-photos.hidden + .review-product-info{
    grid-column:1 / -1;
}
.review-product-detail .listing-photo-thumb{
    width:100%;
    max-width:none;
    aspect-ratio:4 / 3;
}

@media(max-width:760px){
    .review-product-detail{
        grid-template-columns:minmax(125px,38%) minmax(0,1fr);
        gap:10px;
    }
    .review-product-info h3{
        font-size:14px;
    }
    .review-product-info > p{
        margin-top:6px;
        font-size:9px;
        line-height:1.5;
    }
    .review-product-info .review-content-facts{
        margin-top:8px;
        gap:4px;
    }
    .review-product-info .review-content-facts span{
        min-width:0;
        padding:6px;
        font-size:8px;
    }
}

@media(max-width:480px){
    .review-product-detail{
        grid-template-columns:1fr;
        gap:10px;
    }
    .review-product-detail .review-content-photos{
        width:min(100%,240px);
    }
    .review-product-detail .review-content-photos.hidden + .review-product-info{
        grid-column:auto;
    }
    .review-product-info h3{
        font-size:13px;
    }
}

/* v0.2.27 — enforce true Product Detail structure in Admin Post Review
 * EN: The review preview now has a dedicated media column and information column.
 * Legacy photo rules cannot push the image below the title on desktop/tablet.
 * 中文：Admin Post Review 使用独立图片列 + 信息列的真实 Product Detail 结构，
 * 避免旧的图片样式把图片重新挤到标题下方。 */
.review-product-detail{
    display:flex !important;
    flex-direction:row;
    align-items:flex-start;
    gap:16px;
    width:100%;
    min-width:0;
}
.review-product-media{
    flex:0 0 clamp(180px,26%,240px);
    width:clamp(180px,26%,240px);
    min-width:0;
}
.review-product-media .review-content-photos{
    display:block;
    width:100%;
    margin:0 !important;
}
.review-product-media .review-content-photos.hidden{
    display:none !important;
}
.review-product-detail .review-product-info{
    flex:1 1 auto;
    width:auto;
    min-width:0;
}
.review-product-detail.no-photo .review-product-media{
    display:none;
}
.review-product-detail.no-photo .review-product-info{
    flex-basis:100%;
}
.review-product-media .listing-photo-thumb{
    width:100% !important;
    max-width:none !important;
    margin:0 !important;
    aspect-ratio:4 / 3;
}
.review-product-info .review-content-date{
    margin-top:0;
}
@media(max-width:760px){
    .review-product-detail{
        gap:10px;
    }
    .review-product-media{
        flex-basis:clamp(125px,34%,180px);
        width:clamp(125px,34%,180px);
    }
}
@media(max-width:520px){
    .review-product-detail{
        flex-direction:column;
        gap:10px;
    }
    .review-product-media{
        flex:0 0 auto;
        width:min(100%,240px);
    }
    .review-product-detail .review-product-info{
        width:100%;
    }
}

/* V0.2.29 — Admin verification lock controls / Admin Verify 手动解锁 */
.verification-locks-panel{margin-top:16px}
.verification-locks-panel .verification-recovery-setting{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:14px;margin:0 0 12px;padding:12px;border:1px solid #d9e2ef;border-radius:4px;background:#f8fafc}
.verification-locks-panel .verification-recovery-setting-copy{display:grid;gap:4px;min-width:0}
.verification-locks-panel .verification-recovery-setting-copy label{margin:0;color:#172033;font-size:12px;line-height:1.35;font-weight:700}
.verification-locks-panel .verification-recovery-setting-copy small{margin:0;color:#667085;font-size:10px;line-height:1.4;font-weight:400;text-transform:none;letter-spacing:0}
.verification-locks-panel .verification-recovery-setting-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
.verification-locks-panel .verification-recovery-setting-controls input{width:92px;min-width:92px;height:38px;min-height:38px;margin:0;box-sizing:border-box}
.verification-locks-panel .verification-recovery-setting-controls>span{font-size:11px;color:#667085;white-space:nowrap}
.verification-locks-panel .verification-recovery-setting-controls .btn{height:38px;min-height:38px;margin:0;white-space:nowrap}
.verification-lock-empty{padding:12px;border:1px dashed #d6dfeb;border-radius:4px;color:#526277;background:#fafcff}
.verification-lock-list{display:grid;gap:8px}
.verification-lock-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(220px,2fr) auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid #d9e2ef;border-radius:4px;background:#fff}
.verification-lock-person,.verification-lock-meta{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}
.verification-lock-person span,.verification-lock-meta{font-size:12px;color:#5d6b7d}
.verification-lock-warning{margin-top:10px}
@media(max-width:700px){.verification-locks-panel .verification-recovery-setting{grid-template-columns:1fr}.verification-locks-panel .verification-recovery-setting-controls{justify-content:flex-start}.verification-lock-row{grid-template-columns:1fr auto}.verification-lock-meta{grid-column:1/-1;grid-row:2}.verification-lock-row form{grid-column:2;grid-row:1}}
@media(max-width:460px){.verification-locks-panel .verification-recovery-setting-controls{display:grid;grid-template-columns:minmax(0,92px) auto;justify-content:start}.verification-locks-panel .verification-recovery-setting-controls .btn{grid-column:1/-1;width:100%}}

/* v0.2.30 — multi-site product scanner / 多网站产品扫描器 */
.website-source-manager{display:grid;gap:14px;margin-top:14px}
.website-source-add{border:1px solid #d7e2ee;border-radius:4px;background:#fff;padding:14px;display:grid;gap:12px}
.website-source-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.website-source-list{display:grid;gap:10px}
.website-product-source{border:1px solid #d7e2ee;border-radius:4px;background:#fff;padding:12px;display:grid;gap:10px}
.website-product-source-main{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;min-width:0}
.website-product-source-main>div:first-child{display:grid;gap:3px;min-width:0}
.website-product-source-main a{font-size:12px;overflow-wrap:anywhere}
.website-product-source-stats{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;white-space:nowrap}
.website-product-source-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.website-product-source-actions form{margin:0}
.website-product-scan-progress{min-height:18px;font-size:12px;color:#526277}
.website-product-scan-progress.is-done{color:#176b3a;font-weight:700}
.website-source-empty{border:1px dashed #cbd5e1;border-radius:4px;padding:16px;text-align:center;color:#64748b}
.website-secondary-tools{margin-top:14px}
@media(max-width:700px){
  .website-source-add-row{grid-template-columns:1fr}
  .website-source-add-row .btn{width:100%}
  .website-product-source-main{display:grid}
  .website-product-source-stats{white-space:normal}
  .website-product-source-actions{display:grid;grid-template-columns:1fr 1fr}
  .website-product-source-actions .btn{width:100%}
}

/* v0.2.31 — one-click continuous website product scan / 一键连续扫描官网产品 */
.website-source-add-actions{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:10px}
.website-source-add-actions .btn{width:100%}
.website-product-scan-primary-progress{padding-top:2px}
.website-product-scan-progress.is-error{color:#b42318;font-weight:700}
@media(max-width:520px){
  .website-source-add-actions{grid-template-columns:1fr 1fr;gap:8px}
  .website-source-add-actions .btn{padding-left:8px;padding-right:8px}
}

/* v0.2.32 — website source library / 网站来源与扫描 URL 管理 */
.website-source-manage-link{display:grid;gap:2px;min-width:0;text-decoration:none;color:inherit}
.website-source-manage-link strong{font-size:14px;color:#172b4d}
.website-source-manage-link span{font-size:12px;color:#31598a;overflow-wrap:anywhere}
.website-source-manage-link small{font-size:10px;color:#667085;font-weight:700}
.website-source-manage-link:hover strong,.website-source-manage-link:hover span{text-decoration:underline}
.website-source-delete.delete-armed{background:#b42318;border-color:#b42318;color:#fff}
.website-source-management-note{margin-top:14px;border:1px dashed #cbd5e1;border-radius:4px;padding:12px 14px;display:grid;gap:3px;background:#fbfcfe}
.website-source-management-note span{font-size:11px;color:#667085}
.website-source-detail-head{align-items:flex-start}
.website-source-detail-head-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.website-source-detail-scan-progress{margin:-4px 0 12px;min-height:18px}
.website-source-detail{overflow:hidden}
.website-source-searchbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:15px;border-bottom:1px solid var(--line);background:#fbfcfe}
.website-source-searchbar>div:first-child{display:grid;gap:4px}
.website-source-searchbar small{font-size:11px;color:#667085}
.website-source-summary{display:flex;gap:18px;flex-wrap:wrap;padding:10px 15px;border-bottom:1px solid var(--line);font-size:11px;color:#667085}
.website-source-summary strong{color:#172b4d}
.website-source-detail-add{display:grid;gap:12px;padding:14px 15px;border-bottom:1px solid var(--line);background:#fff}
.website-source-detail-add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.website-source-detail-add-grid .wide{grid-column:1/-1}
.website-source-detail-tablewrap{border:0;border-radius:0}
.website-source-detail-table td{vertical-align:top}
.website-source-reference-description{display:block;margin-top:4px;max-width:460px;color:#667085;font-size:10px;line-height:1.45;white-space:normal}
.website-source-url-cell{max-width:340px}
.website-source-url-cell a{display:block;overflow-wrap:anywhere;word-break:break-word}
@media(max-width:820px){
  .website-source-detail-head-actions{justify-content:flex-start}
  .website-source-searchbar{align-items:stretch;flex-direction:column}
  .website-source-detail-add-grid{grid-template-columns:1fr}
  .website-source-detail-add-grid .wide{grid-column:auto}
}
@media(max-width:520px){
  .website-source-detail-head-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .website-source-detail-head-actions .btn{width:100%;padding-left:8px;padding-right:8px}
  .website-source-detail-head-actions .website-product-scan-button{grid-column:1/-1}
  .website-source-searchbar{padding:12px}
  .website-library-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto}
  .website-source-summary{gap:8px 14px;padding:9px 12px}
  .website-source-detail-add{padding:12px}
}

/* v0.2.34 — persistent website scanner + inline website product grid / 持久扫描与站点内联产品网格 */
.website-source-list{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}
.website-product-source{min-width:0;height:100%;align-content:start}
.website-source-expand{appearance:none;border:0;background:transparent;padding:0;margin:0;width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;text-align:left;color:inherit;cursor:pointer;min-width:0}
.website-source-expand-copy{display:grid;gap:3px;min-width:0}
.website-source-expand-copy strong{font-size:14px;color:#172b4d;overflow-wrap:anywhere}
.website-source-expand-copy span{font-size:11px;color:#31598a;overflow-wrap:anywhere}
.website-source-expand-arrow{flex:0 0 auto;width:24px;height:24px;border:1px solid #cbd9eb;border-radius:4px;display:grid;place-items:center;font-size:15px;line-height:1;color:#31598a;transition:transform .15s ease}
.website-source-expand[aria-expanded="true"] .website-source-expand-arrow{transform:rotate(180deg)}
.website-product-source-stats{white-space:normal;gap:5px 10px;font-size:10px;line-height:1.35}
.website-product-source-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.website-product-source-actions .btn,.website-product-source-actions form,.website-product-source-actions form .btn{width:100%;min-width:0}
.website-product-source-actions .btn{padding-left:7px;padding-right:7px;font-size:11px}
.website-product-scan-progress-wrap{position:relative;border:1px solid #d7e2ee;border-radius:4px;background:#f8fbff;padding:8px 32px 8px 9px;min-height:34px}
.website-product-scan-progress-wrap.hidden{display:none}
.website-product-scan-progress{font-size:10px;line-height:1.45;color:#526277;min-height:0}
.website-product-scan-progress.is-done{color:#067647}
.website-product-scan-progress.is-error{color:#b42318}
.website-scan-progress-close{position:absolute;right:5px;top:4px;width:24px;height:24px;border:1px solid #cbd9eb;border-radius:4px;background:#fff;color:#526277;cursor:pointer;font-size:16px;line-height:1}
.website-source-inline-panel{grid-column:1/-1;border:1px solid #cbd9eb;border-radius:4px;background:#fff;overflow:hidden;min-width:0}
.website-source-inline-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid #e4ebf3;background:#f8fbff}
.website-source-inline-head-copy{display:grid;gap:2px;min-width:0}
.website-source-inline-head-copy strong{font-size:14px;color:#172b4d}
.website-source-inline-head-copy span{font-size:10px;color:#667085;overflow-wrap:anywhere}
.website-source-inline-close{flex:0 0 auto;width:30px;height:30px;border:1px solid #cbd9eb;border-radius:4px;background:#fff;cursor:pointer;font-size:17px;color:#526277}
.website-source-inline-toolbar{display:flex;align-items:end;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid #e4ebf3}
.website-source-inline-search{display:flex;gap:7px;align-items:center;flex:1;min-width:0}
.website-source-inline-search input{min-width:0;flex:1}
.website-source-inline-add-toggle{flex:0 0 auto}
.website-source-inline-add{display:none;padding:12px 14px;border-bottom:1px solid #e4ebf3;background:#fbfcfe}
.website-source-inline-add.is-open{display:grid;gap:9px}
.website-source-inline-add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.website-source-inline-add-grid .wide{grid-column:1/-1}
.website-source-inline-summary{display:flex;gap:12px;flex-wrap:wrap;padding:8px 14px;border-bottom:1px solid #e4ebf3;font-size:10px;color:#667085}
.website-source-inline-summary strong{color:#172b4d}
.website-source-product-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px 14px}
.website-source-product-card{border:1px solid #d7e2ee;border-radius:4px;background:#fff;overflow:hidden;display:grid;grid-template-rows:auto 1fr auto;min-width:0}
.website-source-product-image{aspect-ratio:4/3;background:#f2f5f9;display:grid;place-items:center;overflow:hidden;border-bottom:1px solid #e4ebf3}
.website-source-product-image img{width:100%;height:100%;object-fit:cover;display:block}
.website-source-product-image span{font-size:10px;color:#98a2b3}
.website-source-product-body{padding:9px;display:grid;gap:5px;align-content:start;min-width:0}
.website-source-product-body strong{font-size:11px;line-height:1.35;color:#172b4d;overflow-wrap:anywhere}
.website-source-product-url{font-size:9px;color:#31598a;overflow-wrap:anywhere;word-break:break-word;text-decoration:none}
.website-source-product-meta{font-size:9px;color:#667085;display:flex;gap:8px;flex-wrap:wrap}
.website-source-product-actions{padding:7px 9px;border-top:1px solid #e4ebf3;display:flex;justify-content:flex-end}
.website-source-product-actions .tiny{font-size:9px}
.website-source-inline-empty{grid-column:1/-1;padding:18px;text-align:center;color:#667085;border:1px dashed #cbd5e1;border-radius:4px}
.website-scan-toast{position:fixed;right:18px;bottom:18px;z-index:10050;max-width:min(360px,calc(100vw - 36px));border:1px solid #86d7a1;border-radius:4px;background:#f0fdf4;color:#067647;padding:10px 12px;font-size:12px;font-weight:700;box-shadow:0 8px 24px rgba(16,24,40,.14)}
.website-scan-toast.is-error{border-color:#efaaa5;background:#fff3f2;color:#b42318}
@media(max-width:1180px){.website-source-list{grid-template-columns:repeat(2,minmax(0,1fr))}.website-source-product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.website-source-list{grid-template-columns:1fr}.website-source-product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.website-source-inline-toolbar{align-items:stretch;flex-direction:column}.website-source-inline-search{width:100%}.website-source-inline-add-toggle{width:100%}.website-source-inline-add-grid{grid-template-columns:1fr}.website-source-inline-add-grid .wide{grid-column:auto}}
@media(max-width:420px){.website-source-product-grid{gap:7px;padding:9px}.website-source-product-body{padding:7px}.website-source-product-actions{padding:6px 7px}.website-product-source-actions .btn{font-size:10px;padding-left:4px;padding-right:4px}}

/* v0.2.35 — resumable scanner, compact scan list, detailed page errors */
.website-source-scan-state{font-weight:700;color:#667085}
.website-source-scan-state.is-running{color:#175cd3}
.website-source-scan-state.is-error{color:#b42318}
.website-product-source-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
.website-product-source-actions>.hidden{display:none!important}
.website-source-delete:disabled{opacity:.45;cursor:not-allowed}
.website-product-scan-progress-wrap{padding-bottom:8px}
.website-scan-errors-hosted:empty{display:none}
.website-scan-errors{margin-top:7px;border-top:1px solid #d7e2ee;padding-top:6px}
.website-scan-errors summary{cursor:pointer;font-size:10px;font-weight:700;color:#b42318;user-select:none}
.website-scan-error-table{display:grid;margin-top:6px;border:1px solid #f0c7c3;border-radius:4px;overflow:hidden;background:#fff}
.website-scan-error-row{display:grid;grid-template-columns:72px minmax(0,1fr);gap:8px;padding:6px 8px;border-top:1px solid #f3d8d5;font-size:9px;line-height:1.35}
.website-scan-error-row:first-child{border-top:0}
.website-scan-error-status{font-weight:700;color:#b42318}
.website-scan-error-copy{display:grid;gap:2px;min-width:0}
.website-scan-error-copy a{color:#175cd3;overflow-wrap:anywhere;word-break:break-word}
.website-scan-error-copy strong{font-weight:600;color:#344054}
.website-scan-error-copy small{color:#667085;overflow-wrap:anywhere}

/* Tight Excel-like scan result rows: image left, title + description next to it. */
.website-source-product-list-head{display:grid;grid-template-columns:72px minmax(210px,1.5fr) minmax(180px,1fr) 90px 120px 64px;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid #d0d5dd;background:#f2f4f7;color:#475467;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.website-source-product-grid{display:block;padding:0}
.website-source-product-card{display:grid;grid-template-columns:72px minmax(210px,1.5fr) minmax(180px,1fr) 90px 120px 64px;grid-template-rows:none;gap:8px;align-items:center;border:0;border-bottom:1px solid #e4e7ec;border-radius:0;min-height:72px;padding:5px 10px;background:#fff}
.website-source-product-card:last-child{border-bottom:0}
.website-source-product-card:hover{background:#f9fafb}
.website-source-product-image{width:64px;height:58px;aspect-ratio:auto;border:1px solid #e4e7ec;border-radius:4px;background:#f2f4f7}
.website-source-product-image img{width:100%;height:100%;object-fit:cover;border-radius:3px}
.website-source-product-body{padding:0;display:grid;gap:3px;min-width:0}
.website-source-product-body strong{font-size:11px;line-height:1.25;color:#101828}
.website-source-product-body p{margin:0;font-size:9px;line-height:1.3;color:#475467;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.website-source-product-body p.muted{color:#98a2b3}
.website-source-product-url-cell{min-width:0}
.website-source-product-url{display:block;font-size:9px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.website-source-product-image-state,.website-source-product-date{font-size:9px;color:#475467}
.website-source-product-actions{padding:0;border:0;display:flex;justify-content:flex-end}
.website-source-inline-empty{margin:10px}
@media(max-width:1050px){
  .website-source-product-list-head{display:none}
  .website-source-product-card{grid-template-columns:64px minmax(0,1fr) auto;grid-template-areas:"img body actions" "img url actions" "img meta actions";gap:4px 8px}
  .website-source-product-image{grid-area:img;width:58px;height:58px}
  .website-source-product-body{grid-area:body}
  .website-source-product-url-cell{grid-area:url}
  .website-source-product-image-state{grid-area:meta;display:inline}
  .website-source-product-date{grid-area:meta;margin-left:90px}
  .website-source-product-actions{grid-area:actions}
}
@media(max-width:560px){
  .website-source-product-card{grid-template-columns:56px minmax(0,1fr);grid-template-areas:"img body" "img url" "meta meta" "actions actions";padding:7px}
  .website-source-product-image{width:52px;height:52px}
  .website-source-product-date{margin-left:0}
  .website-source-product-actions{justify-content:flex-start}
  .website-scan-error-row{grid-template-columns:1fr}
}

/* v0.2.36 — 1/2/3 website tools accordion + durable history / 网站工具横向三栏与历史记录 */
.website-tools-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch}
.website-tool-card{appearance:none;width:100%;min-width:0;min-height:126px;border:2px solid currentColor;border-radius:4px;background:#fff;padding:13px 14px 9px;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:1fr auto;gap:8px 10px;text-align:left;cursor:pointer;box-shadow:none;transition:background .12s ease,box-shadow .12s ease}
.website-tool-card:hover{box-shadow:0 2px 8px rgba(16,24,40,.08)}
.website-tool-card-one{color:#2563eb;background:#f7faff}
.website-tool-card-two{color:#15803d;background:#f6fcf8}
.website-tool-card-three{color:#c2410c;background:#fff9f5}
.website-tool-card .settings-step{align-self:start;background:currentColor;border-color:currentColor;color:#fff}
.website-tool-card-copy{display:grid;gap:4px;min-width:0;color:#101828}
.website-tool-card-copy strong{font-size:15px;line-height:1.25;color:#101828}
.website-tool-card-copy small{font-size:10px;line-height:1.45;color:#667085;font-weight:400}
.website-tool-card-count{font-size:9px;line-height:1.35;color:currentColor;font-weight:700}
.website-tool-arrow{grid-column:1/-1;justify-self:center;width:30px;height:20px;border:1px solid currentColor;border-radius:4px;display:grid;place-items:center;font-size:15px;line-height:1;background:#fff;transition:transform .15s ease}
.website-tool-card[aria-expanded="true"] .website-tool-arrow{transform:rotate(180deg)}
.website-tool-card[aria-expanded="true"]{box-shadow:0 2px 8px rgba(16,24,40,.08)}
.website-tool-detail{margin-top:12px;border:2px solid;border-radius:4px;background:#fff;overflow:hidden}
.website-tool-detail-one{border-color:#2563eb}
.website-tool-detail-two{border-color:#15803d}
.website-tool-detail-three{border-color:#c2410c}
.website-tool-detail-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-bottom:1px solid currentColor;background:#fbfcfe}
.website-tool-detail-one .website-tool-detail-head{color:#2563eb;background:#f7faff}
.website-tool-detail-two .website-tool-detail-head{color:#15803d;background:#f6fcf8}
.website-tool-detail-three .website-tool-detail-head{color:#c2410c;background:#fff9f5}
.website-tool-detail-head>div:first-child{display:flex;align-items:flex-start;gap:9px;min-width:0}
.website-tool-detail-head .settings-step{background:currentColor;border-color:currentColor;color:#fff;flex:0 0 auto}
.website-tool-detail-head .settings-step+div{display:grid;gap:2px;color:#101828}
.website-tool-detail-head strong{font-size:14px;color:#101828}
.website-tool-detail-head small{font-size:10px;line-height:1.4;color:#667085}
.website-tool-detail-close{appearance:none;flex:0 0 auto;width:28px;height:28px;border:1px solid currentColor;border-radius:4px;background:#fff;color:inherit;cursor:pointer;font-size:16px;line-height:1}
.website-tool-detail .website-source-manager{padding:12px;display:grid;gap:12px}
.website-tool-detail .website-source-add{margin:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,260px);gap:9px;align-items:end;border:0;background:transparent;padding:0}
.website-tool-detail .website-source-add>.website-product-scan-progress-wrap{grid-column:1/-1}
.website-tool-detail .website-source-add-actions{display:block}
.website-tool-detail .website-source-add-actions .btn{width:100%}
.website-detail-section-head{display:flex;justify-content:space-between;align-items:end;gap:12px;padding:8px 0 5px;border-bottom:1px solid #e4e7ec}
.website-detail-section-head>div{display:grid;gap:2px}
.website-detail-section-head strong{font-size:12px;color:#101828}
.website-detail-section-head small,.website-detail-section-head>span{font-size:9px;color:#667085}
.website-tool-detail-one .website-source-list{margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.website-tool-detail-one .website-product-source{border-color:#b9d2ff;background:#fff}
.website-tool-detail-one .website-source-inline-panel{border-color:#2563eb}
.website-tool-form{margin:0;padding:12px;border:0;background:#fff;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:end}
.website-tool-form .website-card-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.website-tool-detail-three .website-tool-form>button{justify-self:start;min-width:170px}
.website-history-heading{padding:9px 12px 6px;margin-top:0;background:#fbfcfe}
.website-history-tablewrap{overflow:auto;border-top:1px solid #e4e7ec}
.website-history-table{width:100%;border-collapse:collapse;table-layout:auto;font-size:9px;line-height:1.35}
.website-history-table th,.website-history-table td{padding:6px 8px;border-bottom:1px solid #e4e7ec;text-align:left;vertical-align:top;white-space:nowrap}
.website-history-table th{background:#f2f4f7;color:#475467;font-size:8px;text-transform:uppercase;letter-spacing:.03em;font-weight:700}
.website-history-table tbody tr:hover{background:#f9fafb}
.website-history-table td:nth-child(2){max-width:180px;overflow:hidden;text-overflow:ellipsis}
.website-history-detail{min-width:230px;max-width:520px;white-space:normal!important;overflow-wrap:anywhere;color:#475467}
.website-history-detail a{display:block;color:#31598a;overflow-wrap:anywhere}
.website-history-detail small{display:block;margin-top:2px;font-size:8px;color:#667085}
.website-history-status{display:inline-flex;align-items:center;padding:2px 5px;border-radius:4px;background:#f2f4f7;color:#475467;font-weight:700}
.website-history-status.is-running{background:#eff8ff;color:#175cd3}
.website-history-status.is-completed{background:#ecfdf3;color:#067647}
.website-history-status.is-stopped{background:#fffaeb;color:#b54708}
.website-history-status.is-paused{background:#fffaeb;color:#b54708}
.website-history-status.is-failed{background:#fef3f2;color:#b42318}
.website-history-empty{padding:12px;font-size:10px;color:#667085;background:#fff}
@media(max-width:980px){
  .website-tools-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .website-tool-card-three{grid-column:1/-1}
  .website-tool-detail-one .website-source-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:680px){
  .website-tools-grid{grid-template-columns:1fr}
  .website-tool-card-three{grid-column:auto}
  .website-tool-detail .website-source-add,.website-tool-form{grid-template-columns:1fr}
  .website-tool-detail-one .website-source-list{grid-template-columns:1fr}
  .website-tool-detail-three .website-tool-form>button{width:100%}
}

/* v0.2.37 — verification result uses the same compact media-left/content-right pattern as post cards. */
.sales-verification-main{
    display:grid;
    grid-template-columns:minmax(118px,31%) minmax(0,1fr);
    min-width:0;
    align-items:stretch;
}
.sales-verification-copy{
    min-width:0;
    display:flex;
    flex-direction:column;
    border-left:1px solid #e2e8f0;
}
.sales-verification-main .sales-verification-title-row{
    min-width:0;
    flex:0 0 auto;
    border-bottom:1px solid #e2e8f0;
}
.sales-verification-main .sales-verification-title-row h3{
    overflow-wrap:anywhere;
}
.sales-verification-listing-description{
    flex:1 1 auto;
    min-width:0;
    min-height:0;
    overflow-wrap:anywhere;
}
.sales-verification-media{
    min-width:0;
    margin:0;
    padding:10px;
    align-self:stretch;
    background:#f8fafc;
}
.sales-verification-media .sales-verification-images-title{
    margin:0 0 7px;
    color:#475569;
    font-size:8px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.02em;
}
.sales-verification-media .sales-verification-image-grid{
    display:grid;
    grid-template-columns:1fr;
    gap:7px;
}
.sales-verification-media .sales-verification-image-grid a{
    width:100%;
    aspect-ratio:4/3;
    min-height:92px;
    max-height:165px;
}
.sales-verification-media .sales-verification-image-grid a:not(:first-child){
    aspect-ratio:16/9;
    min-height:56px;
    max-height:82px;
}
.sales-verification-facts{
    position:relative;
    z-index:1;
    background:#fff;
}

/* Keep Step 1 / Step 2 side-by-side on normal desktop, then progressively collapse. */
@media(max-width:900px){
    .sales-submit-layout,
    .sales-submit-modal-scroll .sales-submit-layout{
        grid-template-columns:1fr;
    }
    .sales-verification-main{
        grid-template-columns:minmax(150px,28%) minmax(0,1fr);
    }
}
@media(max-width:720px){
    .sales-submit-section-head{padding:12px 13px;}
    .sales-submit-panel > form,
    .sales-submit-panel > #inspectionProgress,
    .sales-submit-panel > #inspectionEmpty,
    .sales-submit-panel > #inspectionResult{
        margin-left:12px;
        margin-right:12px;
    }
    .sales-verification-main{
        grid-template-columns:minmax(128px,34%) minmax(0,1fr);
    }
    .sales-verification-title-row{padding:11px 12px 9px;}
    .sales-verification-description{padding:10px 12px;}
}
@media(max-width:560px){
    .sales-submit-modal-scroll{padding:10px;}
    .sales-submit-modal-scroll .sales-submit-layout{gap:10px;}
    .sales-url-row{grid-template-columns:1fr;}
    .sales-url-row .btn{width:100%;}
    .sales-verification-main{
        grid-template-columns:1fr;
    }
    .sales-verification-copy{
        border-left:0;
        border-top:1px solid #e2e8f0;
    }
    .sales-verification-media{
        padding:9px;
    }
    .sales-verification-media .sales-verification-image-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .sales-verification-media .sales-verification-image-grid a,
    .sales-verification-media .sales-verification-image-grid a:not(:first-child){
        min-height:110px;
        max-height:180px;
        aspect-ratio:4/3;
    }
    .sales-verification-media .sales-verification-image-grid a:first-child:last-child{
        grid-column:1/-1;
        max-height:230px;
    }
    .sales-verification-facts{
        grid-template-columns:1fr;
    }
    .sales-verification-facts > div,
    .sales-verification-facts > div:nth-child(2n){
        border-right:0;
    }
}
@media(max-width:420px){
    .sales-submit-modal-backdrop{padding:0;}
    .sales-submit-modal{
        width:100%;
        max-height:100vh;
        border-left:0;
        border-right:0;
    }
    .sales-submit-modal-head{min-height:58px;padding:12px 14px;}
    .sales-submit-modal-head h2{font-size:18px;}
    .sales-verification-media .sales-verification-image-grid{
        grid-template-columns:1fr;
    }
    .sales-verification-media .sales-verification-image-grid a,
    .sales-verification-media .sales-verification-image-grid a:not(:first-child){
        min-height:150px;
        max-height:240px;
    }
    .sales-verification-platform{font-size:8px;}
    .sales-verification-title-row h3{font-size:14px;}
}
.sales-verification-media .sales-verification-images-title{display:none;}

/* v0.2.43 — Website Library consolidated layout, responsive forms and card details. */
.website-library,
.website-tools-grid,
.website-tool-detail,
.website-tool-detail .website-source-manager,
.website-tool-form,
.website-product-source,
.website-source-inline-panel,
.website-history-tablewrap{min-width:0;max-width:100%;box-sizing:border-box;}

/* Top tool cards: three equal columns on desktop. */
.website-tools-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:12px;
    align-items:stretch;
}
.website-tool-card{
    min-width:0;
    min-height:108px;
    padding:14px 16px;
    display:grid;
    grid-template-columns:24px minmax(0,1fr) 14px;
    gap:10px;
    align-items:start;
}
.website-tool-card .settings-step{
    width:24px;
    min-width:24px;
    height:24px;
    padding:0;
    border:0;
    border-radius:4px;
    background:currentColor;
    color:#fff;
    display:grid;
    place-items:center;
    font-size:11px;
    line-height:1;
    font-weight:800;
}
.website-tool-card-copy{min-width:0;display:grid;gap:4px;align-content:start;}
.website-tool-card-copy strong{font-size:15px;line-height:1.25;}
.website-tool-card-copy small{font-size:10.5px;line-height:1.4;max-width:50ch;}
.website-tool-card-count{font-size:10px;line-height:1.3;margin-top:2px;}

/* V0.2.44: clean right-edge chevrons. The arrow container itself has no border,
   which prevents older Website Library rules from rendering it as a circle. */
.website-tool-arrow,
.website-source-expand-arrow{
    position:relative;
    width:14px;
    height:10px;
    min-width:14px;
    display:block;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    transform:none!important;
    box-sizing:border-box;
    color:currentColor;
}
.website-tool-arrow::before,
.website-source-expand-arrow::before{
    content:"";
    position:absolute;
    left:2px;
    top:0;
    width:7px;
    height:7px;
    border:0;
    border-right:2px solid currentColor;
    border-bottom:2px solid currentColor;
    transform:rotate(45deg);
    transform-origin:center;
    transition:transform .18s ease,top .18s ease;
    box-sizing:border-box;
}
.website-tool-card[aria-expanded="true"] .website-tool-arrow::before,
.website-source-expand[aria-expanded="true"] .website-source-expand-arrow::before{
    top:3px;
    transform:rotate(-135deg);
}
.website-tool-arrow{align-self:center;justify-self:end;margin-top:0;}

/* Expanded Step 1/2/3 work area. */
.website-tool-detail{
    margin-top:10px;
    border-width:1px;
    border-top-width:2px;
    overflow:hidden;
    box-shadow:none;
}
.website-tool-detail-head{
    min-height:48px;
    padding:10px 14px;
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
}
.website-tool-detail-head>div{min-width:0;}
.website-tool-detail-head .settings-step{display:none;}
.website-tool-detail-head strong{font-size:14px;line-height:1.25;}
.website-tool-detail-head small{font-size:10px;line-height:1.4;}
.website-tool-detail-close{width:24px;height:24px;font-size:17px;line-height:22px;flex:0 0 24px;}
.website-tool-detail .website-source-manager{
    padding:14px;
    display:grid;
    gap:12px;
}

/* Step 1 website-add row. */
.website-tool-detail .website-source-add{
    margin:0;
    padding:0;
    border:0;
    background:transparent;
    display:grid;
    grid-template-columns:minmax(0,1fr) 150px;
    grid-template-rows:auto 40px auto;
    gap:6px 10px;
    align-items:end;
}
.website-source-add-label{
    grid-column:1/-1;
    margin:0;
    font-size:11px;
    line-height:1.25;
    color:#344054;
}
.website-tool-detail .website-source-add>input[type="url"]{
    grid-column:1;
    width:100%;
    min-width:0;
    height:40px;
    padding:8px 10px;
    font-size:12px;
}
.website-tool-detail .website-source-add-actions{grid-column:2;display:block;min-width:0;}
.website-tool-detail .website-source-add-actions .btn{
    width:100%;
    min-width:0;
    height:40px;
    min-height:40px;
    padding:0 12px;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center;
    font-size:11px;
    line-height:1!important;
}
.website-tool-detail .website-source-add>.website-product-scan-progress-wrap{grid-column:1/-1;}

/* Section headings. */
.website-detail-section-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:12px;
    padding:9px 0 7px;
    border-bottom:1px solid #e4e7ec;
    min-width:0;
}
.website-detail-section-head>div{display:grid;gap:2px;min-width:0;}
.website-detail-section-head strong{font-size:12px;line-height:1.3;}
.website-detail-section-head small{font-size:10px;line-height:1.35;color:#667085;}
.website-detail-section-head>span{font-size:10px;line-height:1.3;color:#667085;white-space:nowrap;}

/* Saved website cards are compact until clicked. */
.website-tool-detail-one .website-source-list{
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    min-width:0;
}
.website-product-source{
    padding:0;
    display:block;
    min-width:0;
    overflow:hidden;
}
.website-source-expand{
    width:100%;
    min-width:0;
    margin:0;
    padding:10px 12px;
    border:0;
    background:transparent;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto 10px;
    align-items:center;
    gap:10px;
    text-align:left;
    cursor:pointer;
}
.website-product-source.is-expanded .website-source-expand{background:#f8fbff;}
.website-source-expand-copy{min-width:0;display:grid;gap:2px;}
.website-source-expand-copy strong{
    font-size:12px;
    line-height:1.3;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.website-source-expand-copy span{
    font-size:10px;
    line-height:1.3;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.website-source-card-state{
    font-size:10px;
    line-height:1.2;
    font-weight:700;
    color:#667085;
    white-space:nowrap;
}
.website-source-card-state.is-running{color:#175cd3;}
.website-source-card-state.is-error{color:#b42318;}
.website-source-expand-arrow{justify-self:end;margin-right:2px;}

.website-source-card-detail{
    padding:10px 12px 11px;
    border-top:1px solid #dbe7f5;
    background:#fff;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:9px 14px;
}
.website-product-source-stats{
    margin:0;
    min-width:0;
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:5px 12px;
    font-size:10px;
    line-height:1.25;
}
.website-product-source-stats b{font-weight:800;}
.website-source-skip-stat{color:#667085;}
.website-product-source-actions{
    margin:0;
    min-width:0;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:6px;
    flex-wrap:wrap;
}
.website-product-source-actions form{display:inline-flex;margin:0;width:auto;}
.website-product-source-actions .btn,
.website-product-source-actions form .btn{
    min-width:0;
    min-height:34px;
    height:34px;
    padding:0 10px;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center;
    font-size:10px;
    line-height:1!important;
    white-space:nowrap;
}
.website-source-card-detail>.website-product-scan-progress-wrap{grid-column:1/-1;margin:0;}
.website-product-scan-progress-wrap{min-width:0;}
.website-product-scan-progress{overflow-wrap:anywhere;}

/* Product details only appear after opening the website card. */
.website-source-inline-panel{
    margin-top:-1px;
    border-radius:0 0 4px 4px;
    overflow:hidden;
}
.website-source-inline-head{min-width:0;}
.website-source-inline-toolbar{min-width:0;}
.website-source-inline-search{min-width:0;}
.website-source-inline-search input{min-width:0;}

/* History stays readable and can scroll internally without widening the page. */
.website-history-heading{margin-top:2px;padding:10px 0 7px;background:transparent;}
.website-history-tablewrap{
    width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    border-top:0;
    -webkit-overflow-scrolling:touch;
}
.website-history-table{width:100%;min-width:760px;table-layout:auto;font-size:11px;line-height:1.35;}
.website-history-table th{font-size:9px;letter-spacing:.04em;}
.website-history-table th,.website-history-table td{padding:8px 9px;}
.website-history-table td:nth-child(2){max-width:220px;}
.website-history-detail{min-width:260px;max-width:520px;white-space:normal!important;overflow-wrap:anywhere;}
.website-history-status{padding:2px 6px;font-size:10px;}
.website-source-empty,.website-history-empty{padding:10px 11px;font-size:10.5px;line-height:1.4;}

/* Step 2 + Step 3 share one field system so every control baseline matches. */
.website-tool-form{
    margin:0;
    padding:14px;
    display:grid;
    gap:10px 12px;
    align-items:end;
    min-width:0;
}
.website-tool-form>*{min-width:0;max-width:100%;}
.website-tool-field,
.website-tool-action-field{
    min-width:0;
    display:grid;
    grid-template-rows:16px 40px;
    gap:6px;
    align-items:end;
}
.website-tool-field>label,
.website-tool-field-label{
    margin:0;
    height:16px;
    font-size:11px;
    line-height:16px;
    color:#344054;
    font-weight:600;
}
.website-tool-field-label{visibility:hidden;user-select:none;}
.website-tool-field input,
.website-tool-field select{
    width:100%;
    min-width:0;
    max-width:100%;
    height:40px;
    min-height:40px;
    margin:0;
    padding:7px 9px;
    font-size:11px;
    line-height:1.2;
    box-sizing:border-box;
}
.website-tool-field input[type="file"]{
    padding:5px 8px;
    overflow:hidden;
    line-height:28px;
}
.website-tool-field input[type="file"]::file-selector-button{
    height:28px;
    margin:0 8px 0 0;
    padding:0 10px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#344054;
    font:inherit;
    font-size:10px;
    font-weight:600;
    line-height:26px;
    vertical-align:middle;
    cursor:pointer;
}
.website-tool-action-field>.btn,
.website-tool-action-field .website-card-actions,
.website-tool-action-field .website-card-actions .btn{
    height:40px;
    min-height:40px;
}
.website-tool-form .website-card-actions{
    min-width:0;
    display:flex;
    align-items:stretch;
    justify-content:flex-end;
    gap:7px;
    flex-wrap:nowrap;
}
.website-tool-form .btn{
    min-width:0;
    height:40px;
    min-height:40px;
    padding:0 11px;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center;
    vertical-align:middle;
    font-size:11px;
    line-height:1!important;
    white-space:nowrap;
    box-sizing:border-box;
}
.website-tool-form-csv{
    grid-template-columns:minmax(200px,.85fr) minmax(320px,1.35fr) auto;
}
.website-tool-form-sitemap{
    grid-template-columns:minmax(220px,.85fr) minmax(320px,1.55fr) 150px;
}
.website-tool-form-sitemap .website-tool-action-field>.btn{width:100%;}

/* Header sizing participates in the same responsive system. */
.website-library>.panel-head{gap:18px;align-items:flex-start;}
.website-library-stats{flex:0 0 auto;}

/* Tablet: preserve alignment, move only action column to a clean second row. */
@media(max-width:1100px){
    .website-source-card-detail{grid-template-columns:1fr;}
    .website-product-source-actions{justify-content:flex-start;}
    .website-tool-form-csv,
    .website-tool-form-sitemap{grid-template-columns:minmax(180px,.8fr) minmax(260px,1.2fr);}
    .website-tool-action-field{grid-column:1/-1;}
    .website-tool-form .website-card-actions{justify-content:flex-start;}
    .website-tool-form-sitemap .website-tool-action-field>.btn{width:auto;min-width:150px;}
}

/* Narrow tablet: tool cards become one column; all fields remain full-width. */
@media(max-width:760px){
    .website-tools-grid{grid-template-columns:1fr;gap:9px;}
    .website-tool-card{min-height:0;padding:12px 13px;}
    .website-tool-detail{margin-top:8px;}
    .website-tool-detail-head{padding:10px 12px;}
    .website-tool-detail .website-source-manager{padding:12px;}
    .website-tool-detail .website-source-add{
        grid-template-columns:1fr;
        grid-template-rows:auto 40px 40px auto;
    }
    .website-source-add-label,
    .website-tool-detail .website-source-add>input[type="url"],
    .website-tool-detail .website-source-add-actions{grid-column:1;}
    .website-source-card-detail{padding:10px;}
    .website-product-source-actions{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        width:100%;
        gap:6px;
    }
    .website-product-source-actions form{display:block;width:100%;}
    .website-product-source-actions .btn,
    .website-product-source-actions form .btn{width:100%;}
    .website-tool-form-csv,
    .website-tool-form-sitemap{grid-template-columns:1fr;}
    .website-tool-action-field{grid-column:auto;}
    .website-tool-form .website-card-actions{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        width:100%;
    }
    .website-tool-form .website-card-actions .btn{width:100%;white-space:normal;text-align:center;}
    .website-tool-form-sitemap .website-tool-action-field>.btn{width:100%;min-width:0;}
    .website-history-table{min-width:700px;}
    .website-detail-section-head{align-items:flex-start;}
    .website-source-inline-toolbar{align-items:stretch;flex-direction:column;}
    .website-source-inline-search{width:100%;}
    .website-source-inline-add-toggle{width:100%;}
}

@media(max-width:480px){
    .website-tool-card-copy small{display:none;}
    .website-tool-card{grid-template-columns:22px minmax(0,1fr) 12px;padding:11px 12px;}
    .website-source-expand{grid-template-columns:minmax(0,1fr) 10px;}
    .website-source-card-state{grid-column:1;grid-row:2;justify-self:start;margin-top:2px;}
    .website-source-expand-arrow{grid-column:2;grid-row:1/3;align-self:center;}
    .website-product-source-actions{grid-template-columns:1fr;}
    .website-tool-form .website-card-actions{grid-template-columns:1fr;}
    .website-history-table{min-width:660px;}
    .website-library{padding:12px;}
    .website-library>.panel-head{flex-direction:column;gap:9px;}
    .website-library-stats{display:flex;align-items:baseline;gap:5px 8px;text-align:left;}
}

@media(prefers-reduced-motion:reduce){
    .website-tool-arrow::before,
    .website-source-expand-arrow::before{transition:none;}
}

/* v0.2.45 — responsive website tools + source auto-detection cleanup.
   Step 2/3 no longer contain a redundant Website source selector. */
.website-tool-form-csv{
    grid-template-columns:minmax(0,1fr) auto;
}
.website-tool-form-sitemap{
    grid-template-columns:minmax(0,1fr) 160px;
}
.website-tool-form-csv .website-tool-action-field,
.website-tool-form-sitemap .website-tool-action-field{
    grid-column:auto;
    align-self:end;
}
.website-tool-form-csv .website-card-actions{
    justify-content:flex-end;
}
.website-tool-form-csv .website-card-actions .btn,
.website-tool-form-sitemap .website-tool-action-field>.btn{
    height:40px;
    min-height:40px;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:1!important;
    vertical-align:middle;
}

/* Keep the three mode cards as one row on desktop and tablet. Their copy is
   shortened at tablet width instead of wrapping card 3 into a full-width row. */
@media(min-width:600px) and (max-width:980px){
    .website-tools-grid{
        grid-template-columns:repeat(3,minmax(0,1fr));
        gap:10px;
    }
    .website-tool-card-three{grid-column:auto;}
    .website-tool-card{
        min-height:112px;
        padding:11px 12px 9px;
        gap:7px 8px;
    }
    .website-tool-card-copy strong{font-size:13.5px;}
    .website-tool-card-copy small{font-size:9.5px;line-height:1.35;}
    .website-tool-card-count{font-size:9px;}
}

/* With only one input/file field plus actions, Step 2/3 fit cleanly in one row
   until phone widths. Override older source-selector-era tablet rules. */
@media(min-width:681px){
    .website-tool-form-csv{
        grid-template-columns:minmax(0,1fr) auto;
    }
    .website-tool-form-sitemap{
        grid-template-columns:minmax(0,1fr) 160px;
    }
    .website-tool-form-csv .website-tool-action-field,
    .website-tool-form-sitemap .website-tool-action-field{
        grid-column:auto;
    }
    .website-tool-form-csv .website-card-actions{
        display:flex;
        width:auto;
        grid-template-columns:none;
        flex-wrap:nowrap;
    }
    .website-tool-form-csv .website-card-actions .btn{
        width:auto;
        white-space:nowrap;
    }
    .website-tool-form-sitemap .website-tool-action-field>.btn{
        width:100%;
        min-width:0;
    }
}

@media(max-width:680px){
    .website-tools-grid{
        grid-template-columns:1fr;
        gap:9px;
    }
    .website-tool-card-three{grid-column:auto;}
    .website-tool-form-csv,
    .website-tool-form-sitemap{
        grid-template-columns:1fr;
    }
    .website-tool-form-csv .website-tool-action-field,
    .website-tool-form-sitemap .website-tool-action-field{
        grid-column:1;
    }
    .website-tool-form-csv .website-card-actions{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        width:100%;
    }
    .website-tool-form-csv .website-card-actions .btn,
    .website-tool-form-sitemap .website-tool-action-field>.btn{
        width:100%;
    }
}

@media(max-width:420px){
    .website-tool-form-csv .website-card-actions{
        grid-template-columns:1fr;
    }
}

/* v0.2.46 — saved websites are real cards; per-site scan history lives inside
   the expanded card; actions stay compact; Step 2/3 history aligns with fields. */
.website-tool-detail-one .website-source-list{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(260px,320px));
    gap:12px;
    align-items:start;
    justify-content:start;
    min-width:0;
}
.website-tool-detail-one .website-product-source{
    width:100%;
    min-width:0;
    min-height:126px;
    height:auto;
    border:1px solid #b9d2ff;
    border-radius:4px;
    background:#fff;
    overflow:hidden;
    display:block;
    align-self:start;
    transition:box-shadow .16s ease,border-color .16s ease;
}
.website-tool-detail-one .website-product-source:hover{box-shadow:0 3px 10px rgba(16,24,40,.08)}
.website-tool-detail-one .website-product-source.is-expanded{
    grid-column:1/-1;
    min-height:0;
    box-shadow:0 3px 12px rgba(16,24,40,.08);
}
.website-source-expand{
    min-height:124px;
    padding:14px 14px 12px;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto 14px;
    grid-template-rows:auto 1fr auto;
    column-gap:9px;
    row-gap:7px;
    align-items:start;
}
.website-source-expand-copy{grid-column:1/3;grid-row:1;display:grid;gap:3px;min-width:0}
.website-source-expand-copy strong{font-size:13px;line-height:1.25}
.website-source-expand-copy span{font-size:10px;line-height:1.35;color:#667085}
.website-source-card-state{
    grid-column:1;
    grid-row:3;
    align-self:end;
    justify-self:start;
    font-size:10px;
    line-height:1.2;
}
.website-source-card-meta{
    grid-column:2;
    grid-row:3;
    align-self:end;
    justify-self:end;
    color:#667085;
    font-size:9.5px;
    line-height:1.2;
    white-space:nowrap;
}
.website-source-card-meta b{color:#344054;font-weight:700}
.website-source-expand-arrow{
    grid-column:3;
    grid-row:1/4;
    align-self:center;
    justify-self:end;
    margin:0;
}
.website-product-source.is-expanded .website-source-expand{
    min-height:76px;
    grid-template-rows:auto auto;
    background:#f8fbff;
}
.website-product-source.is-expanded .website-source-expand-copy{grid-row:1}
.website-product-source.is-expanded .website-source-card-state{grid-row:2}
.website-product-source.is-expanded .website-source-card-meta{grid-row:2}

.website-source-card-detail{
    padding:12px 14px 14px;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:start;
    gap:12px 18px;
}
.website-product-source-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:7px;
    flex-wrap:wrap;
    width:auto;
    max-width:100%;
}
.website-product-source-actions form{display:inline-flex;width:auto;margin:0}
.website-product-source-actions .btn,
.website-product-source-actions form .btn{
    width:auto!important;
    min-width:92px;
    max-width:170px;
    height:34px;
    min-height:34px;
    padding:0 11px;
    font-size:10px;
    line-height:1!important;
    white-space:nowrap;
}
.website-product-source-actions .website-source-delete{min-width:96px}
.website-source-card-history{
    grid-column:1/-1;
    min-width:0;
    margin-top:2px;
    padding-top:10px;
    border-top:1px solid #e4e7ec;
}
.website-source-card-history .website-history-heading{
    margin:0;
    padding:0 0 8px;
    border-bottom:1px solid #e4e7ec;
}
.website-source-card-history .website-history-tablewrap{margin-top:0}
.website-source-card-history .website-history-table-compact{min-width:650px}
.website-source-card-history .website-history-table-compact td:nth-child(2){max-width:none}

/* Step 2 and 3 history starts on the same 14px inset as their forms rather than
   touching the panel edge. */
.website-tool-detail-two>.website-history-heading,
.website-tool-detail-three>.website-history-heading{
    margin:12px 14px 0;
    padding:12px 0 7px;
    border-top:1px solid #e4e7ec;
    border-bottom:1px solid #e4e7ec;
}
.website-tool-detail-two>.website-history-tablewrap,
.website-tool-detail-three>.website-history-tablewrap{
    width:calc(100% - 28px);
    margin:0 14px 14px;
}
.website-tool-detail-two>.website-history-empty,
.website-tool-detail-three>.website-history-empty{
    margin:0 14px 14px;
    padding:10px 0 0;
}

@media(max-width:900px){
    .website-tool-detail-one .website-source-list{grid-template-columns:repeat(auto-fill,minmax(240px,300px))}
    .website-source-card-detail{grid-template-columns:1fr}
    .website-product-source-actions{justify-content:flex-start}
}
@media(max-width:680px){
    .website-tool-detail-one .website-source-list{grid-template-columns:1fr}
    .website-tool-detail-one .website-product-source.is-expanded{grid-column:auto}
    .website-source-expand{min-height:106px}
    .website-source-card-meta{justify-self:start;grid-column:1;grid-row:2;align-self:end}
    .website-source-card-state{grid-row:3}
    .website-product-source.is-expanded .website-source-card-meta{grid-row:2;grid-column:1}
    .website-product-source.is-expanded .website-source-card-state{grid-row:3}
    .website-product-source-actions{display:flex;justify-content:flex-start;gap:6px}
    .website-product-source-actions .btn,
    .website-product-source-actions form .btn{width:auto!important;min-width:0;max-width:none;padding:0 10px}
    .website-source-card-history .website-history-table-compact{min-width:610px}
}
@media(max-width:420px){
    .website-source-expand{padding:12px;grid-template-columns:minmax(0,1fr) 12px}
    .website-source-expand-copy{grid-column:1}
    .website-source-card-meta{grid-column:1}
    .website-source-expand-arrow{grid-column:2}
    .website-product-source-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
    .website-product-source-actions form{display:block;width:100%}
    .website-product-source-actions .btn,
    .website-product-source-actions form .btn{width:100%!important;max-width:none}
    .website-source-card-history .website-history-table-compact{min-width:580px}
}
@media(max-width:420px){
    .website-tool-form-csv .website-tool-action-field{grid-template-rows:16px auto;align-self:stretch}
    .website-tool-form-csv .website-card-actions{grid-auto-rows:40px;align-items:stretch}
}
@media(max-width:420px){
    .website-tool-form-csv .website-tool-action-field{height:auto;min-height:0}
    .website-tool-form-csv .website-card-actions{height:auto!important;min-height:0!important}
}

/* V0.2.47 — Sales locations, searchable Sales directory, multi-select location buttons. */
.sales-locations-panel{
    overflow:hidden;
}
.sales-locations-head{
    gap:16px;
}
.sales-location-notice{
    margin:12px 0 0;
}
.sales-location-add-form{
    margin-top:14px;
}
.sales-location-add-form>label{
    margin:0 0 6px;
}
.sales-location-add-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px;
    align-items:center;
    max-width:720px;
}
.sales-location-add-row input,
.sales-location-add-row .btn{
    min-height:40px;
}
.sales-location-add-row .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    white-space:nowrap;
}
.sales-location-list{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(220px,280px));
    justify-content:start;
    gap:8px;
    margin-top:14px;
}
.sales-location-card{
    min-width:0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:10px 11px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
.sales-location-card-copy{
    min-width:0;
    display:grid;
    gap:3px;
}
.sales-location-card-copy>strong{
    overflow:hidden;
    color:#172033;
    font-size:12px;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.sales-location-card-copy>span{
    color:#64748b;
    font-size:9px;
}
.sales-location-card form{
    flex:0 0 auto;
    margin:0;
}
.sales-location-card .tiny{
    min-height:30px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
}
.sales-location-card .tiny:disabled{
    opacity:.38;
    cursor:not-allowed;
}
.sales-location-empty{
    grid-column:1/-1;
    padding:16px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    color:#64748b;
    font-size:11px;
}
.sales-location-unassigned{
    margin:12px 0 0;
}

.admin-sales-directory-tools{
    display:grid;
    grid-template-columns:minmax(210px,280px) minmax(0,1fr);
    gap:12px;
    align-items:end;
    margin:12px 0 14px;
    padding:11px 12px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
}
.admin-sales-search-field{
    min-width:0;
    margin:0;
}
.admin-sales-search-field>span,
.admin-sales-filter-label{
    display:block;
    margin:0 0 6px;
    color:#475569;
    font-size:9px;
    font-weight:900;
    letter-spacing:.01em;
}
.admin-sales-search-field input{
    width:100%;
    min-height:38px;
    margin:0;
    padding:8px 10px;
    background:#fff;
}
.admin-sales-location-filter-wrap{
    min-width:0;
}
.admin-sales-location-filter{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:6px;
    min-width:0;
}
.admin-sales-location-button{
    min-height:38px;
    max-width:220px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:7px;
    padding:0 11px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#334155;
    cursor:pointer;
    font:inherit;
    font-size:9px;
    font-weight:800;
    line-height:1;
    white-space:nowrap;
}
.admin-sales-location-button>span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
}
.admin-sales-location-button>b{
    flex:0 0 auto;
    min-width:19px;
    height:19px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0 5px;
    border-radius:4px;
    background:#eef2f7;
    color:#475569;
    font-size:8px;
}
.admin-sales-location-button:hover,
.admin-sales-location-button:focus-visible{
    border-color:#94a3b8;
    outline:none;
}
.admin-sales-location-button.active{
    border-color:#2563eb;
    background:#eff6ff;
    color:#1d4ed8;
}
.admin-sales-location-button.active>b{
    background:#2563eb;
    color:#fff;
}
.admin-sales-filter-empty{
    margin:-4px 0 14px;
    padding:13px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    color:#64748b;
    text-align:center;
    font-size:10px;
}
.sales-progress-card.sales-directory-hidden{
    display:none !important;
}
.sales-progress-location{
    width:max-content;
    max-width:100%;
    margin-top:1px;
    padding:2px 5px;
    overflow:hidden;
    border-radius:4px;
    background:#eef2ff;
    color:#475569 !important;
    font-size:7px !important;
    font-weight:800;
    line-height:1.25;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.sales-person-settings-fields{
    display:grid;
    grid-template-columns:130px minmax(0,1fr);
    gap:14px;
    align-items:start;
}
.sales-person-settings-fields label{
    margin:0;
}
.sales-person-location-field>span{
    display:block;
    margin-bottom:5px;
    color:#334155;
    font-size:9px;
    font-weight:900;
}
.sales-person-location-field select{
    width:100%;
    min-height:40px;
    padding:8px 10px;
    background:#fff;
    font-size:11px;
    font-weight:700;
}
.sales-person-location-field small{
    display:block;
    margin-top:6px;
    color:#64748b;
    font-size:8px;
    line-height:1.45;
}
.sales-person-settings-fields .sales-person-target-field input{
    width:100%;
}

@media(max-width:760px){
    .admin-sales-directory-tools{
        grid-template-columns:1fr;
        align-items:stretch;
    }
    .admin-sales-search-field{
        max-width:none;
    }
    .admin-sales-location-button{
        min-height:40px;
    }
    .sales-location-list{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:520px){
    .sales-location-add-row{
        grid-template-columns:1fr;
    }
    .sales-location-add-row .btn{
        width:100%;
    }
    .sales-location-list{
        grid-template-columns:1fr;
    }
    .admin-sales-directory-tools{
        margin-left:0;
        margin-right:0;
        padding:9px;
    }
    .admin-sales-location-filter{
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:6px;
    }
    .admin-sales-location-button{
        width:100%;
        max-width:none;
        justify-content:space-between;
        padding:0 9px;
    }
    .sales-person-settings-fields{
        grid-template-columns:1fr;
        gap:12px;
    }
}
@media(max-width:360px){
    .admin-sales-location-filter{
        grid-template-columns:1fr;
    }
}

/* V0.2.49 — in-place animated Location CRUD; no settings-page reload or anchor jump. */
.sales-locations-panel{
    position:relative;
}
.sales-location-live-notice{
    position:absolute;
    top:12px;
    right:14px;
    z-index:4;
    width:min(360px,calc(100% - 28px));
    margin:0;
    box-shadow:0 8px 24px rgba(15,23,42,.10);
}
.sales-location-card{
    display:block;
    transition:opacity .18s ease,transform .18s ease,border-color .22s ease,background-color .22s ease;
    transform-origin:center;
}
.sales-location-card-main{
    min-width:0;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}
.sales-location-card-actions{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    gap:6px;
}
.sales-location-card-actions form{
    margin:0;
}
.sales-location-edit-form{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:7px;
    align-items:center;
    margin-top:9px;
    padding-top:9px;
    border-top:1px solid #e2e8f0;
}
.sales-location-edit-form.hidden{
    display:none;
}
.sales-location-edit-input{
    width:100%;
    min-width:0;
    height:34px;
    min-height:34px;
    padding:0 9px;
}
.sales-location-edit-actions{
    display:flex;
    align-items:center;
    gap:6px;
}
.sales-location-edit-actions .tiny,
.sales-location-card-actions .tiny{
    min-height:30px;
    height:30px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    line-height:1;
}
.sales-location-card.location-card-enter{
    opacity:0;
    transform:translateY(-5px) scale(.975);
}
.sales-location-card.location-card-leave{
    opacity:0;
    transform:translateY(-4px) scale(.97);
    pointer-events:none;
}
.sales-location-card.location-card-updated{
    border-color:#78a7ff;
    background:#f7fbff;
}
@media(max-width:520px){
    .sales-location-card-main{
        align-items:flex-start;
    }
    .sales-location-card-actions{
        flex-wrap:wrap;
        justify-content:flex-end;
    }
    .sales-location-edit-form{
        grid-template-columns:1fr;
    }
    .sales-location-edit-actions{
        justify-content:flex-end;
    }
}
@media(prefers-reduced-motion:reduce){
    .sales-location-card{
        transition:none;
    }
}

/* V0.2.56 — Restore the original two-row Admin filter layout with true left/right alignment.
   Row 1: period switch flush left, From/To flush right.
   Row 2: Sales Search flush left, Location buttons flush right.
   Both rows sit above Posting Progress and share the same full-width edges. */
.admin-dashboard-range-bar .admin-portal-head-actions{
    display:block !important;
    width:100% !important;
    max-width:none !important;
}
.admin-dashboard-range-bar .admin-toolbar-row-filter{
    display:flex !important;
    align-items:flex-end !important;
    justify-content:space-between !important;
    flex-wrap:nowrap !important;
    gap:24px !important;
    width:100% !important;
    min-width:0 !important;
}
.admin-dashboard-range-bar .admin-toolbar-row-filter .sales-head-period-switch{
    flex:0 0 auto !important;
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    grid-template-columns:repeat(5,max-content) !important;
}
.admin-dashboard-range-bar .admin-toolbar-row-filter .dashboard-date-controls{
    flex:0 0 auto !important;
    width:auto !important;
    max-width:none !important;
    margin:0 0 0 auto !important;
}
.admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-date-row{
    display:flex !important;
    align-items:flex-start !important;
    justify-content:flex-end !important;
    gap:8px !important;
    width:auto !important;
}
.admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-field{
    flex:0 0 145px !important;
    width:145px !important;
    max-width:145px !important;
}
.admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-field input[type="date"]{
    width:145px !important;
}

/* Original Search/Location card, moved above Posting Progress. */
.admin-sales-progress-section > .admin-sales-directory-tools{
    display:flex !important;
    align-items:flex-end !important;
    justify-content:space-between !important;
    gap:24px !important;
    width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
    margin:0 0 14px !important;
    padding:11px 12px !important;
    border:1px solid #e2e8f0 !important;
    border-radius:4px !important;
    background:#f8fafc !important;
}
.admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-search-field{
    flex:0 0 280px !important;
    width:280px !important;
    max-width:280px !important;
    min-width:0 !important;
}
.admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-location-filter-wrap{
    flex:0 1 auto !important;
    width:auto !important;
    max-width:calc(100% - 304px) !important;
    min-width:0 !important;
    margin-left:auto !important;
}
.admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-filter-label{
    text-align:left !important;
}
.admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-location-filter{
    justify-content:flex-end !important;
}
.admin-sales-progress-section > .admin-section-head{
    margin-top:0 !important;
}

@media(max-width:900px){
    .admin-dashboard-range-bar .admin-toolbar-row-filter{
        gap:14px !important;
    }
    .admin-sales-progress-section > .admin-sales-directory-tools{
        gap:14px !important;
    }
    .admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-search-field{
        flex-basis:240px !important;
        width:240px !important;
        max-width:240px !important;
    }
    .admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-location-filter-wrap{
        max-width:calc(100% - 254px) !important;
    }
}
@media(max-width:760px){
    .admin-dashboard-range-bar .admin-toolbar-row-filter{
        display:grid !important;
        grid-template-columns:1fr !important;
        align-items:stretch !important;
        gap:10px !important;
    }
    .admin-dashboard-range-bar .admin-toolbar-row-filter .sales-head-period-switch{
        width:100% !important;
        grid-template-columns:repeat(5,minmax(0,1fr)) !important;
    }
    .admin-dashboard-range-bar .admin-toolbar-row-filter .dashboard-date-controls,
    .admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-date-row{
        width:100% !important;
        margin-left:0 !important;
    }
    .admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-date-row{
        display:grid !important;
        grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    }
    .admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-field,
    .admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-field input[type="date"]{
        width:100% !important;
        max-width:none !important;
        flex:none !important;
    }
    .admin-sales-progress-section > .admin-sales-directory-tools{
        display:grid !important;
        grid-template-columns:1fr !important;
        align-items:stretch !important;
        gap:10px !important;
    }
    .admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-search-field,
    .admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-location-filter-wrap{
        width:100% !important;
        max-width:none !important;
        flex:none !important;
        margin-left:0 !important;
    }
    .admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-location-filter{
        justify-content:flex-start !important;
    }
}
@media(max-width:460px){
    .admin-dashboard-range-bar .admin-toolbar-row-filter .activity-range-date-row{
        grid-template-columns:1fr !important;
    }
}

/* V0.2.57 — Admin date filter must use the same full-width row as the Search/Location filter.
   Older sticky-range CSS forced the normal-flow range bar/anchor to width:max-content,
   which kept From/To beside the period buttons instead of at the far-right edge. */
.admin-activity-head .admin-dashboard-range-bar,
.admin-dashboard-range-anchor{
    width:100% !important;
    max-width:none !important;
    box-sizing:border-box !important;
}
.admin-activity-head .admin-dashboard-range-bar .admin-portal-head-actions,
.admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
    width:100% !important;
    max-width:none !important;
    box-sizing:border-box !important;
}
.admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
    justify-content:space-between !important;
}
.admin-activity-head .admin-dashboard-range-bar .dashboard-date-controls{
    margin-left:auto !important;
}
@media(max-width:760px){
    .admin-activity-head .admin-dashboard-range-bar .dashboard-date-controls{
        margin-left:0 !important;
    }
}

/* V0.2.59 — Date/filter row must span the full Admin content width.
   The old admin-activity-head two-column grid was still constraining the
   date controls to the heading's right column. Make the heading one full row
   and the date controls a second full-width row. */
.admin-activity-head{
    grid-template-columns:minmax(0,1fr) !important;
    width:100% !important;
    max-width:none !important;
}
.admin-activity-head .admin-dashboard-heading{
    grid-column:1 / -1 !important;
    width:100% !important;
    max-width:none !important;
}
.admin-activity-head .admin-dashboard-range-anchor{
    grid-column:1 / -1 !important;
    justify-self:stretch !important;
    width:100% !important;
    max-width:none !important;
}
.admin-activity-head .admin-dashboard-range-bar,
.admin-activity-head .admin-dashboard-range-bar .admin-portal-head-actions,
.admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
    width:100% !important;
    max-width:none !important;
    box-sizing:border-box !important;
}
.admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
    display:flex !important;
    align-items:flex-end !important;
    justify-content:space-between !important;
    flex-wrap:nowrap !important;
}
.admin-activity-head .admin-dashboard-range-bar .dashboard-date-controls{
    margin-left:auto !important;
}
@media(max-width:760px){
    .admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
        display:grid !important;
        grid-template-columns:1fr !important;
    }
    .admin-activity-head .admin-dashboard-range-bar .dashboard-date-controls{
        margin-left:0 !important;
    }
}


/* v0.2.61 — Application auth fallback setting. */
#application-settings .settings-application-form{
    display:grid;
    grid-template-columns:minmax(220px,360px) minmax(320px,1fr) auto;
    align-items:end;
    gap:10px;
}
#application-settings .settings-application-form label{
    margin:0;
    min-width:0;
}
#application-settings .settings-application-form label small{
    display:block;
    margin-top:5px;
    color:#667085;
    font-size:10px;
    line-height:1.35;
}
#application-settings .settings-application-actions{
    display:flex;
    align-items:flex-end;
}
#application-settings .settings-application-actions .btn{
    width:auto;
    min-width:108px;
    height:38px;
    min-height:38px;
    padding:0 14px;
    white-space:nowrap;
}
@media(max-width:900px){
    #application-settings .settings-application-form{
        grid-template-columns:1fr 1fr;
    }
    #application-settings .settings-application-actions{
        grid-column:1/-1;
    }
}
@media(max-width:620px){
    #application-settings .settings-application-form{
        grid-template-columns:1fr;
    }
    #application-settings .settings-application-actions{
        grid-column:auto;
    }
}

/* v0.2.63 — Application Settings: expose Portal fallback URL beside Display Name. */
#application-settings .application-settings-form{
    display:grid;
    grid-template-columns:minmax(220px,360px) minmax(320px,1fr) auto;
    align-items:end;
    gap:12px;
    width:100%;
}
#application-settings .application-settings-form label{
    display:grid;
    gap:6px;
    min-width:0;
}
#application-settings .application-settings-form input{
    width:100%;
    min-width:0;
}
#application-settings .settings-field-help{
    display:block;
    margin-top:0;
    color:#667085;
    font-size:10px;
    line-height:1.35;
    font-weight:400;
    text-transform:none;
    letter-spacing:0;
}
#application-settings .application-settings-form .btn{
    width:auto !important;
    min-width:112px;
    height:38px;
    min-height:38px;
    padding:0 14px;
    white-space:nowrap;
}
@media(max-width:900px){
    #application-settings .application-settings-form{
        grid-template-columns:1fr 1fr;
    }
    #application-settings .application-settings-form .btn{
        grid-column:1/-1;
        width:max-content !important;
    }
}
@media(max-width:620px){
    #application-settings .application-settings-form{
        grid-template-columns:1fr;
    }
    #application-settings .application-settings-form .btn{
        grid-column:auto;
    }
}

/* V0.2.64 — Admin period/date row matches the Sales header layout exactly:
   period controls stay at the far left, From/To stay at the far right,
   and the row spans the full dashboard content width. */
.admin-activity-head{
    display:block !important;
    width:100% !important;
    max-width:none !important;
}
.admin-activity-head .admin-dashboard-heading,
.admin-activity-head .admin-dashboard-range-anchor,
.admin-activity-head .admin-dashboard-range-bar,
.admin-activity-head .admin-dashboard-range-bar .admin-portal-head-actions,
.admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
    width:100% !important;
    max-width:none !important;
    min-width:0 !important;
    box-sizing:border-box !important;
}
.admin-activity-head .admin-dashboard-range-anchor{
    display:block !important;
    margin:0 !important;
}
.admin-activity-head .admin-dashboard-range-bar{
    display:block !important;
}
.admin-activity-head .admin-dashboard-range-bar .admin-portal-head-actions{
    display:block !important;
}
.admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
    display:grid !important;
    grid-template-columns:max-content minmax(24px,1fr) max-content !important;
    align-items:end !important;
    column-gap:0 !important;
    row-gap:0 !important;
}
.admin-activity-head .admin-dashboard-range-bar .sales-head-period-switch{
    grid-column:1 !important;
    justify-self:start !important;
    margin-left:0 !important;
    margin-right:0 !important;
}
.admin-activity-head .admin-dashboard-range-bar .dashboard-date-controls{
    grid-column:3 !important;
    justify-self:end !important;
    margin:0 !important;
    width:auto !important;
    max-width:none !important;
}
.admin-activity-head .admin-dashboard-range-bar .activity-range-date-row{
    justify-content:flex-end !important;
}
@media(max-width:760px){
    .admin-activity-head .admin-dashboard-range-bar .admin-toolbar-row-filter{
        grid-template-columns:1fr !important;
        gap:10px !important;
    }
    .admin-activity-head .admin-dashboard-range-bar .sales-head-period-switch,
    .admin-activity-head .admin-dashboard-range-bar .dashboard-date-controls{
        grid-column:1 !important;
        justify-self:stretch !important;
        width:100% !important;
    }
}

/* v0.2.71 — URL-aware primary navigation state / 当前页面菜单高亮 */
.app-nav-link{
    min-height:34px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0 8px;
    border:1px solid transparent !important;
    border-radius:4px;
    color:#dbeafe !important;
    font-weight:700;
    line-height:1;
}
.app-nav-link:hover,
.app-nav-link:focus-visible{
    border-color:rgba(147,197,253,.34) !important;
    background:rgba(255,255,255,.06) !important;
    color:#fff !important;
    outline:none;
}
.app-nav-link.active,
.app-nav-link[aria-current="page"]{
    border-color:rgba(147,197,253,.62) !important;
    background:rgba(59,130,246,.20) !important;
    color:#fff !important;
}


/* v0.2.73 Sales-card action containment + isolated Daily Sales Review */
.sales-progress-actions{
    min-width:0;
}
.sales-card-admin-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:stretch;
    width:100%;
    min-width:0;
    gap:4px;
}
.sales-card-admin-actions > button,
.sales-daily-review,
.sales-person-settings-button{
    width:100%;
    min-width:0;
    max-width:100%;
    white-space:normal;
    line-height:1.15;
    overflow-wrap:anywhere;
    text-align:center;
}
.sales-daily-review,
.sales-person-settings-button{
    padding-left:5px;
    padding-right:5px;
}
.sales-person-settings-button span{
    min-width:0;
    overflow-wrap:anywhere;
}
.sales-person-settings-button svg{
    flex:0 0 14px;
}
@media(max-width:599px){
    .sales-card-admin-actions{
        grid-template-columns:minmax(0,1fr) 30px;
    }
    .sales-person-settings-button{
        width:30px;
        min-width:30px;
        max-width:30px;
        padding:0;
    }
}

/* v0.2.75: keep Sales Post Details side-by-side on desktop.
   Image stays on the left and post information stays on the right.
   Only narrow screens collapse back to the vertical mobile layout. */
@media (min-width:721px){
    .sales-post-detail-modal{
        width:min(1040px,calc(100vw - 36px));
    }
    .sales-post-detail-scroll{
        display:grid;
        grid-template-columns:minmax(280px,42%) minmax(0,1fr);
        align-items:start;
        overflow:auto;
    }
    .sales-post-detail-image-button,
    .sales-post-detail-no-image{
        grid-column:1;
        grid-row:1;
        min-width:0;
        align-self:start;
        border-right:1px solid #e2e8f0;
        border-bottom:0;
    }
    .sales-post-detail-image-button{
        position:sticky;
        top:0;
        max-height:calc(100vh - 190px);
    }
    .sales-post-detail-image-button img{
        width:100%;
        height:auto;
        max-height:calc(100vh - 190px);
        object-fit:contain;
    }
    .sales-post-detail-no-image{
        min-height:360px;
    }
    .sales-post-detail-content{
        grid-column:2;
        grid-row:1;
        min-width:0;
        padding:16px 18px 20px;
        overflow-wrap:anywhere;
    }
}
@media (max-width:720px){
    .sales-post-detail-scroll{
        display:block;
    }
    .sales-post-detail-image-button,
    .sales-post-detail-no-image{
        position:relative;
        top:auto;
        border-right:0;
        border-bottom:1px solid #e2e8f0;
    }
    .sales-post-detail-image-button img{
        width:100%;
        height:auto;
        max-height:360px;
    }
}

/* v0.2.78 — Application Settings compact control rows.
   Labels stay above each field; input + save button stay on one row on desktop/tablet.
   Only narrow mobile screens stack the button below the input. */
#application-settings .application-settings-stack{
    display:grid;
    gap:14px;
}
#application-settings .application-setting-form{
    display:grid;
    gap:6px;
    width:100%;
    min-width:0;
    margin:0;
}
#application-settings .application-setting-label{
    display:block;
    margin:0;
    color:#172033;
    font-size:12px;
    line-height:1.35;
    font-weight:700;
}
#application-settings .application-setting-control-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:stretch;
    gap:8px;
    width:100%;
    min-width:0;
}
#application-settings .application-setting-control-row input{
    width:100%;
    min-width:0;
    height:38px;
    min-height:38px;
    margin:0;
    box-sizing:border-box;
}
#application-settings .application-setting-save{
    width:auto !important;
    min-width:104px;
    height:38px;
    min-height:38px;
    margin:0 !important;
    padding:0 14px;
    align-self:stretch;
    white-space:nowrap;
}
#application-settings .application-setting-help{
    display:block;
    margin:0;
    color:#667085;
    font-size:10px;
    line-height:1.35;
    font-weight:400;
    text-transform:none;
    letter-spacing:0;
}
@media(max-width:560px){
    #application-settings .application-setting-control-row{
        grid-template-columns:minmax(0,1fr);
    }
    #application-settings .application-setting-save{
        width:100% !important;
    }
}

/* v0.2.79 — Website Scan History is a live control surface. */
.website-scan-history-table .website-history-main-row{cursor:pointer;transition:background-color .12s ease}
.website-scan-history-table .website-history-main-row:focus{outline:2px solid #84adff;outline-offset:-2px}
.website-scan-history-table .website-history-main-row.is-expanded{background:#f8fbff}
.website-scan-history-table [data-history-status-cell]{width:46px;text-align:center;vertical-align:middle}
.website-history-control{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;padding:0;border:1px solid #cfd8e3;border-radius:4px;background:#fff;color:#344054;font:700 12px/1 Arial,sans-serif;box-sizing:border-box}
button.website-history-control{cursor:pointer}
button.website-history-control:hover:not(:disabled){background:#f2f6fb;border-color:#98a9bd}
.website-history-control.is-running{border-color:#9ec5fe;background:#eff6ff;color:#175cd3}
.website-history-control.is-paused{border-color:#a6d8b6;background:#ecfdf3;color:#067647}
.website-history-control.is-stopped{border-color:#f6b5b5;background:#fff1f1;color:#d92d20;font-size:13px}
.website-history-control.is-completed{border-color:#a6d8b6;background:#ecfdf3;color:#067647}
.website-history-control.is-failed{border-color:#f6b5b5;background:#fff1f1;color:#b42318}
.website-history-control.is-static{cursor:default}
.website-history-control.is-busy{opacity:.55}
.website-history-control.is-history-archived{opacity:.4;cursor:not-allowed}
.website-history-expand-cell{width:34px;text-align:center!important;vertical-align:middle!important}
.website-history-row-chevron{display:inline-block;width:7px;height:7px;border-right:1.5px solid #667085;border-bottom:1.5px solid #667085;transform:rotate(45deg);transition:transform .12s ease;margin-top:-3px}
.website-history-main-row.is-expanded .website-history-row-chevron{transform:rotate(225deg);margin-top:3px}
.website-history-detail-row>td{padding:0!important;background:#fbfcfe!important;white-space:normal!important}
.website-history-detail-panel{display:grid;gap:5px;padding:10px 12px 12px;border-top:1px solid #e4e7ec;color:#475467;font-size:10.5px;line-height:1.45}
.website-history-detail-panel>strong{color:#101828;font-size:11px}
.website-history-detail-panel>a{color:#175cd3;overflow-wrap:anywhere}
.website-history-detail-panel>small{color:#667085;font-size:9px}
.website-history-empty-row td{padding:12px!important;color:#667085;text-align:center!important;background:#fff}
@media(max-width:720px){.website-history-control{width:30px;height:30px;min-width:30px}.website-history-detail-panel{padding:9px 10px 11px}}

/* v0.2.80 — Magento-style per-URL website scan processing history. */
.website-scan-history-table .website-history-details-summary{
    min-width:360px;
    max-width:620px;
    white-space:normal;
    color:#475467;
    line-height:1.4;
}
.website-history-details-summary>[data-history-detail-summary]{
    display:inline;
}
.website-history-details-summary .website-history-row-chevron{
    float:right;
    margin:4px 2px 0 12px;
}
.website-history-detail-head{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:12px;
}
.website-history-detail-head>strong{color:#101828;font-size:12px}
.website-history-detail-head>small{color:#667085;font-size:9px}
.website-history-run-summary{
    padding:7px 9px;
    border:1px solid #e4e7ec;
    border-radius:4px;
    background:#fff;
    color:#475467;
}
.website-history-processing-head,
.website-history-processing-row{
    display:grid;
    grid-template-columns:118px 70px 72px minmax(240px,1.5fr) minmax(220px,1fr);
    gap:10px;
    align-items:center;
    min-width:830px;
}
.website-history-processing-head{
    padding:7px 9px;
    border:1px solid #dfe5ec;
    border-bottom:0;
    border-radius:4px 4px 0 0;
    background:#f3f6f9;
    color:#475467;
    font-size:9px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.02em;
}
.website-history-processing-log{
    max-height:360px;
    overflow:auto;
    border:1px solid #dfe5ec;
    border-radius:0 0 4px 4px;
    background:#fff;
}
.website-history-processing-row{
    padding:7px 9px;
    border-bottom:1px solid #edf0f3;
    font-size:10px;
    line-height:1.35;
}
.website-history-processing-row:last-child{border-bottom:0}
.website-history-processing-time{color:#667085;white-space:nowrap}
.website-history-processing-status{
    display:inline-flex;
    width:max-content;
    min-width:54px;
    justify-content:center;
    padding:3px 6px;
    border-radius:4px;
    font-weight:800;
}
.website-history-processing-status.is-saved,
.website-history-processing-status.is-completed{background:#ecfdf3;color:#067647}
.website-history-processing-status.is-skipped,
.website-history-processing-status.is-checked{background:#f2f4f7;color:#475467}
.website-history-processing-status.is-running{background:#eff6ff;color:#175cd3}
.website-history-processing-status.is-paused{background:#fff8e8;color:#b54708}
.website-history-processing-status.is-stopped,
.website-history-processing-status.is-failed{background:#fff1f1;color:#b42318}
.website-history-processing-kind{color:#475467;text-transform:capitalize}
.website-history-processing-url{color:#175cd3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.website-history-processing-message{color:#344054;overflow-wrap:anywhere}
.website-history-processing-empty{padding:16px;color:#667085;text-align:center;font-size:10px}
@media(max-width:900px){
    .website-scan-history-table .website-history-details-summary{min-width:280px}
    .website-history-detail-head{align-items:flex-start;flex-direction:column;gap:3px}
}


/* v0.2.81 — borderless vector scan controls + cleaner live processing log. */
.website-history-control,
button.website-history-control{
    width:24px;
    height:24px;
    min-width:24px;
    padding:2px;
    border:0 !important;
    border-radius:0;
    background:transparent !important;
    box-shadow:none !important;
    outline-offset:2px;
}
.website-history-control svg{display:block;width:18px;height:18px;pointer-events:none}
button.website-history-control:hover:not(:disabled){background:transparent !important;opacity:.72}
button.website-history-control:disabled{opacity:.38;cursor:default}
.website-history-control.is-running{color:#175cd3}
.website-history-control.is-paused{color:#12a150}
.website-history-control.is-stopped{color:#ef4444}
.website-history-control.is-completed{color:#12a150}
.website-history-control.is-failed{color:#d92d20}
.website-history-control.is-static{background:transparent !important}
.website-history-processing-empty{padding:12px 10px;color:#667085;background:#fff}


/* v0.2.82 — Location cards size independently while one card is being edited. */
.sales-location-list{
    align-items:start;
}
.sales-location-card{
    align-self:start;
}


/* v0.2.84 — Scan Processing belongs only to its own Product Scan History run. */
.website-source-manager .website-product-scan-progress-wrap,
#website-source-detail .website-product-scan-progress-wrap{
    display:none !important;
}
.website-scan-history-table .website-history-main-row.is-expanded + .website-history-detail-row{
    display:table-row;
}
.website-history-detail-row>td{
    border-bottom:1px solid #d8e1ec !important;
}
.website-history-detail-panel{
    margin:0;
    border-top:0;
    background:#fbfcfe;
}
.website-history-processing-log{
    scroll-behavior:auto;
}

/* v0.2.85 — Help is a normal application page, never a standalone document. */
.app-help-page{
    width:100%;
    min-width:0;
}
.app-help-guide-layout{
    display:grid;
    grid-template-columns:220px minmax(0,1fr);
    gap:16px;
    align-items:start;
    width:100%;
    min-width:0;
}
.app-help-toc{
    position:sticky;
    top:62px;
    align-self:start;
    max-height:calc(100vh - 82px);
    overflow:auto;
    padding:12px;
    background:#fff;
    border:1px solid #dbe4ef;
    border-radius:4px;
}
.app-help-toc strong{
    display:block;
    margin:2px 8px 8px;
    color:#344054;
    font-size:11px;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.05em;
}
.app-help-toc a{
    display:block;
    padding:7px 8px;
    border-radius:4px;
    color:#344054;
    font-size:11px;
    line-height:1.35;
    text-decoration:none;
}
.app-help-toc a:hover{
    background:#f2f6fb;
    color:#175cd3;
}
.app-help-guide-content{
    min-width:0;
}
.app-help-page .hero,
.app-help-page .section{
    background:#fff;
    border:1px solid #dbe4ef;
    border-radius:4px;
}
.app-help-page .hero{
    padding:22px;
    margin-bottom:14px;
}
.app-help-page .hero .eyebrow{
    color:#175cd3;
    font-size:10px;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
}
.app-help-page .hero h1{
    margin:5px 0 6px;
    color:#101828;
    font-size:26px;
    line-height:1.15;
}
.app-help-page .hero p,
.app-help-page .section p{
    color:#475467;
}
.app-help-page .rolepill{
    display:inline-flex;
    margin-top:8px;
    padding:4px 8px;
    border-radius:4px;
    background:#eff6ff;
    color:#175cd3;
    font-size:10px;
    font-weight:800;
}
.app-help-page .section{
    padding:18px;
    margin-bottom:14px;
}
.app-help-page .section h2{
    margin:0 0 6px;
    color:#101828;
    font-size:18px;
}
.app-help-page .section h3{
    margin:18px 0 7px;
    font-size:14px;
}
.app-help-page .workflow,
.app-help-page .cards{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:8px;
    margin:10px 0;
}
.app-help-page .step,
.app-help-page .card,
.app-help-page .ui,
.app-help-page .screenmap{
    border:1px solid #dbe4ef;
    border-radius:4px;
    background:#fff;
    padding:12px;
}
.app-help-page .step .n{
    display:inline-grid;
    place-items:center;
    width:21px;
    height:21px;
    margin-bottom:6px;
    border-radius:50%;
    background:#175cd3;
    color:#fff;
    font-size:10px;
    font-weight:700;
}
.app-help-page .callout{
    margin:10px 0;
    padding:10px 12px;
    border-left:3px solid #175cd3;
    border-radius:4px;
    background:#f4f8ff;
}
.app-help-page .callout.warn{border-left-color:#dc9800;background:#fff9e8}
.app-help-page .callout.danger{border-left-color:#d92d20;background:#fff4f3}
.app-help-page .callout.good,
.app-help-page .callout.ok{border-left-color:#16a34a;background:#f0fdf4}
.app-help-page .tablewrap{
    overflow:auto;
    margin:10px 0;
    border:1px solid #dbe4ef;
    border-radius:4px;
}
.app-help-page table{
    width:100%;
    min-width:680px;
    border-collapse:collapse;
    background:#fff;
}
.app-help-page th,
.app-help-page td{
    padding:8px 10px;
    border-bottom:1px solid #e8edf3;
    text-align:left;
    vertical-align:top;
}
.app-help-page th{
    background:#f7f9fc;
    color:#475467;
    font-size:10px;
    text-transform:uppercase;
}
.app-help-page .two-col{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px;
}
.app-help-page .checklist{
    display:grid;
    gap:7px;
    margin:8px 0;
}
.app-help-page .check{
    display:flex;
    gap:8px;
    align-items:flex-start;
}
.app-help-page .check:before{
    content:'✓';
    flex:0 0 18px;
    color:#16803b;
    font-weight:800;
}
.app-help-page .toc-mobile{display:none}

/* The same application language selector controls Help content. */
.app-help-page .en,
.app-help-page .zh,
.app-help-page .zh-tw,
.app-help-page .es,
.app-help-page .en-inline,
.app-help-page .zh-inline,
.app-help-page .zh-tw-inline,
.app-help-page .es-inline{
    display:none!important;
}
.app-help-page.help-lang-en .en,
.app-help-page.help-lang-zh-CN .zh,
.app-help-page.help-lang-zh-TW .zh-tw,
.app-help-page.help-lang-es .es{
    display:revert!important;
}
.app-help-page.help-lang-en .en-inline,
.app-help-page.help-lang-zh-CN .zh-inline,
.app-help-page.help-lang-zh-TW .zh-tw-inline,
.app-help-page.help-lang-es .es-inline{
    display:inline!important;
}

@media(max-width:900px){
    .app-help-guide-layout{grid-template-columns:1fr}
    .app-help-toc{display:none}
    .app-help-page .toc-mobile{display:block}
    .app-help-page .hero{padding:16px}
    .app-help-page .hero h1{font-size:22px}
    .app-help-page .two-col{grid-template-columns:1fr}
}
\n/* v0.2.86 — Immediate scan-run visibility and live in-flight URL row. */
.website-history-main-row.is-starting{background:#f8fbff}
.website-history-processing-row.is-active{background:#f8fbff}
.website-history-processing-row.is-active .website-history-processing-message{font-style:italic;color:#475467}
.website-history-processing-row.is-active .website-history-processing-status.is-running{font-weight:700}


/* v0.2.87 — Help uses the application language source and a readable in-app guide layout. */
.app-help-page.help-language-pending{
    visibility:hidden;
}
.app-help-guide-layout{
    grid-template-columns:minmax(190px,220px) minmax(0,1fr);
    gap:18px;
    align-items:start;
    max-width:1280px;
    margin:0 auto;
}
.app-help-guide-content{
    display:grid;
    gap:14px;
    min-width:0;
}
.app-help-guide-content>.hero,
.app-help-guide-content>.section{
    margin:0;
}
.app-help-page .hero{
    padding:20px;
}
.app-help-page .hero h1{
    font-size:24px;
    line-height:1.2;
}
.app-help-page .hero p{
    margin:8px 0 0;
    font-size:13px;
    line-height:1.55;
}
.app-help-page .section{
    padding:16px 18px;
}
.app-help-page .section h2{
    margin:0 0 10px;
    font-size:17px;
    line-height:1.3;
}
.app-help-page .section h3{
    margin:16px 0 8px;
    font-size:14px;
    line-height:1.35;
}
.app-help-page .section h4{
    margin:0 0 7px;
    font-size:13px;
    line-height:1.35;
}
.app-help-page .section p,
.app-help-page .step>span:not(.n),
.app-help-page .card>span{
    font-size:12px;
    line-height:1.55;
}
.app-help-page .workflow,
.app-help-page .cards{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin:10px 0;
}
.app-help-page .step{
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    grid-template-areas:
        "number title"
        "copy copy";
    column-gap:8px;
    row-gap:7px;
    align-content:start;
    min-width:0;
    padding:12px 13px;
}
.app-help-page .step .n{
    grid-area:number;
    margin:0;
}
.app-help-page .step>b{
    grid-area:title;
    display:block;
    align-self:center;
    min-width:0;
    line-height:1.35;
    overflow-wrap:anywhere;
}
.app-help-page .step>.en,
.app-help-page .step>.zh,
.app-help-page .step>.zh-tw,
.app-help-page .step>.es{
    grid-area:copy;
    width:100%;
    min-width:0;
    line-height:1.5;
    overflow-wrap:anywhere;
}
.app-help-page.help-lang-en .step>.en,
.app-help-page.help-lang-zh-CN .step>.zh,
.app-help-page.help-lang-zh-TW .step>.zh-tw,
.app-help-page.help-lang-es .step>.es{
    display:block!important;
}
.app-help-page .card{
    min-width:0;
    padding:13px 14px;
}
.app-help-page .card p{
    margin:0;
    font-size:12px;
    line-height:1.55;
    overflow-wrap:anywhere;
}
.app-help-page .callout{
    font-size:12px;
    line-height:1.55;
}
.app-help-page .ui,
.app-help-page .screenmap{
    min-width:0;
    overflow:auto;
}
.app-help-page td,
.app-help-page th{
    line-height:1.45;
}
.app-help-page td{
    font-size:11.5px;
}
.app-help-page .app-help-toc a{
    overflow-wrap:anywhere;
}
@media(min-width:1360px){
    .app-help-guide-layout{
        grid-template-columns:220px minmax(0,1fr);
    }
}
@media(max-width:900px){
    .app-help-guide-layout{
        grid-template-columns:1fr;
        max-width:none;
    }
    .app-help-page .workflow,
    .app-help-page .cards{
        grid-template-columns:1fr;
    }
}

/* v0.2.88 — Website scan run ownership is History-scoped; new runs cannot be blocked by stale same-host browser workers. */
.website-history-main-row.is-starting [data-history-status-cell] .website-history-control{opacity:1}

/* v0.2.91 — compact scan rows, user-owned History collapse, and independent Scanned Products tool. */
.website-scan-history-table .website-history-main-row>td{
    padding-top:2px!important;
    padding-bottom:2px!important;
    vertical-align:middle!important;
    line-height:1.2;
}
.website-scan-history-table [data-history-status-cell]{
    vertical-align:middle!important;
    text-align:center!important;
}
.website-scan-history-table [data-history-status-cell] .website-history-control{
    vertical-align:middle;
}
.website-history-control,
button.website-history-control{
    width:20px;
    height:20px;
    min-width:20px;
    padding:1px;
}
.website-history-control svg{width:15px;height:15px}

.website-history-processing-head,
.website-history-processing-row{
    grid-template-columns:112px 64px minmax(180px,.8fr) minmax(340px,1.7fr);
    gap:8px;
    align-items:center;
    min-width:740px;
}
.website-history-processing-head{
    padding:4px 8px;
}
.website-history-processing-row{
    padding:2px 8px;
    min-height:22px;
    line-height:1.15;
}
.website-history-processing-status{
    min-width:50px;
    padding:1px 5px;
    line-height:1.15;
    align-items:center;
}
.website-history-processing-url,
.website-history-processing-message{
    min-width:0;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.website-history-processing-message{overflow-wrap:normal}

.website-products-library-panel{
    border:0;
    border-radius:0;
    margin:0;
}
.website-products-library-toolbar{
    align-items:center;
}
.website-products-host-select{
    flex:0 0 min(250px,28vw);
    min-width:170px;
    height:40px;
}

/* v0.2.93 — Scanned Products lives inside the expanded Website Scan detail
   workspace, below the Website Scan controls, as an independent sibling row. */
.website-scanned-products-section{
    border-top:2px solid #2563eb;
    background:#fff;
    min-width:0;
}
.website-scanned-products-toggle{
    appearance:none;
    width:100%;
    min-width:0;
    min-height:58px;
    border:0;
    border-radius:0;
    background:#f7faff;
    padding:10px 14px;
    display:grid;
    grid-template-columns:minmax(0,1fr) 14px;
    gap:12px;
    align-items:center;
    text-align:left;
    cursor:pointer;
    color:#2563eb;
    box-shadow:none;
}
.website-scanned-products-toggle:hover,
.website-scanned-products-toggle[aria-expanded="true"]{background:#f3f7ff}
.website-scanned-products-copy{
    min-width:0;
    display:grid;
    gap:2px;
    color:#101828;
}
.website-scanned-products-copy strong{font-size:14px;line-height:1.25;color:#101828}
.website-scanned-products-copy small{font-size:10px;line-height:1.4;color:#667085;font-weight:400}
.website-scanned-products-count{font-size:10px;line-height:1.3;color:#2563eb;font-weight:700;margin-top:1px}
.website-scanned-products-toggle .website-tool-arrow{align-self:center;justify-self:end;margin:0}
.website-scanned-products-toggle[aria-expanded="true"] .website-tool-arrow::before{
    top:3px;
    transform:rotate(-135deg);
}
.website-scanned-products-body{
    min-width:0;
    border-top:1px solid #dbe7ff;
    background:#fff;
}
.website-scanned-products-body .website-source-inline-panel{
    border:0;
    border-radius:0;
    margin:0;
}
@media(max-width:760px){
    .website-products-library-toolbar{align-items:stretch;flex-direction:column}
    .website-products-host-select{flex:0 0 auto;width:100%;min-width:0}
    .website-scanned-products-toggle{padding:10px 12px;gap:8px}
}

/* v0.2.95 — Sales Save & Wait / Bulk Verification Queue. */
.sales-queue-submit-actions{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    gap:7px;
    align-items:center;
    margin-top:10px;
    padding-top:9px;
    border-top:1px solid #e2e8f0;
}
.sales-queue-submit-help{color:#64748b;font-size:8px;line-height:1.4;}
.sales-bulk-submit{
    margin-top:10px;
    padding:10px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f8fafc;
}
.sales-bulk-submit textarea{width:100%;min-height:118px;margin-top:5px;resize:vertical;}
.sales-bulk-submit-actions{display:flex;gap:7px;justify-content:flex-end;margin-top:8px;flex-wrap:wrap;}
.sales-bulk-result{margin-top:8px;padding:7px 9px;border:1px solid #dbe3ee;border-radius:4px;background:#fff;color:#475569;font-size:9px;font-weight:800;}

.sales-verification-queue{
    margin-top:14px;
    padding:0;
    overflow:hidden;
}
.sales-verification-queue-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    min-height:62px;
    padding:11px 14px;
    border-bottom:1px solid #e2e8f0;
    background:#f8fafc;
}
.sales-verification-queue-title-block{min-width:0;}
.sales-verification-queue-head h2{margin:2px 0 2px;}
.sales-verification-queue-head p{margin:0;color:#64748b;font-size:9px;line-height:1.45;}
.sales-verification-queue-head-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    flex:0 0 auto;
}
.sales-verification-queue-summary{
    display:flex;
    align-items:center;
    gap:5px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
    white-space:nowrap;
}
.sales-verification-queue-summary>span{
    display:inline-flex;
    align-items:center;
    gap:3px;
    min-height:25px;
    padding:3px 6px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
.sales-verification-queue-collapse{
    width:30px;
    height:30px;
    display:flex;
    align-items:center;
    justify-content:center;
    flex:0 0 30px;
    padding:0;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    color:#2563eb;
    cursor:pointer;
}
.sales-verification-queue-collapse svg{
    width:17px;
    height:17px;
    transition:transform .16s ease;
}
.sales-verification-queue:not(.is-collapsed) .sales-verification-queue-collapse svg{transform:rotate(180deg);}
.sales-verification-queue.is-collapsed .sales-verification-queue-body{display:none;}
.sales-verification-queue.is-collapsed .sales-verification-queue-head{
    min-height:48px;
    padding-top:8px;
    padding-bottom:8px;
    border-bottom:0;
}
.sales-verification-queue.is-collapsed .sales-verification-queue-title-block .eyebrow,
.sales-verification-queue.is-collapsed .sales-verification-queue-title-block p{display:none;}
.sales-verification-queue.is-collapsed .sales-verification-queue-head h2{margin:0;}
.sales-verification-queue-body{background:#fff;}
.sales-verification-queue-filters{
    display:flex;
    gap:5px;
    padding:9px 12px;
    overflow:auto;
    border-bottom:1px solid #e2e8f0;
    background:#fff;
}
.sales-verification-queue-filters button{
    flex:0 0 auto;
    min-height:28px;
    padding:4px 8px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    color:#475569;
    font-size:8px;
    font-weight:900;
    cursor:pointer;
}
.sales-verification-queue-filters button.active{border-color:#94a3b8;background:#f1f5f9;color:#0f172a;}
.sales-verification-queue-filters b{margin-left:3px;font-size:8px;}
.sales-verification-queue-message{margin:8px 12px 0;padding:7px 9px;border:1px solid #dbe3ee;border-radius:4px;font-size:9px;font-weight:800;}
.sales-verification-queue-message.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534;}
.sales-verification-queue-message.error{background:#fff7ed;border-color:#fed7aa;color:#9a3412;}

/* v0.2.103 — queue items use the same card/grid language as the existing Posts area, never a horizontal list. */
.sales-verification-queue-list{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(245px,1fr));
    gap:11px;
    padding:11px;
    align-items:start;
}
.sales-vq-row{
    --vq-accent:#64748b;
    min-width:0;
    min-height:150px;
    display:flex;
    flex-direction:column;
    gap:0;
    padding:0;
    overflow:hidden;
    border:1px solid #e2e8f0;
    border-top:4px solid var(--vq-accent);
    border-radius:4px;
    background:#fff;
    box-shadow:0 3px 10px rgba(15,23,42,.04);
}
.sales-vq-row.status-waiting{--vq-accent:#94a3b8;}
.sales-vq-row.status-verifying{--vq-accent:#64748b;}
.sales-vq-row.status-passed{--vq-accent:#9ca3af;}
.sales-vq-row.status-failed{--vq-accent:#f97316;}
.sales-vq-row.status-duplicate{--vq-accent:#dc2626;}
.sales-vq-row.status-invalid{--vq-accent:#fb923c;}
.sales-vq-card-top{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    min-height:35px;
    padding:8px 10px;
    border-bottom:1px solid #edf1f5;
    background:#f8fafc;
}
.sales-vq-platform{
    min-width:0;
    overflow:hidden;
    color:#475569;
    font-size:8px;
    font-weight:900;
    text-overflow:ellipsis;
    text-transform:uppercase;
    white-space:nowrap;
}
.sales-vq-status{
    display:inline-flex;
    align-items:center;
    gap:4px;
    flex:0 0 auto;
    padding:2px 6px;
    border-radius:4px;
    font-size:8px;
    font-weight:900;
    white-space:nowrap;
}
.sales-vq-status.waiting{background:#f1f5f9;color:#475569;}
.sales-vq-status.verifying{background:#eef2f7;color:#334155;}
.sales-vq-status.verifying:before{content:'';width:6px;height:6px;border:1px solid #64748b;border-top-color:transparent;border-radius:50%;animation:sales-vq-spin .8s linear infinite;}
.sales-vq-status.passed{background:#e5e7eb;color:#374151;}
.sales-vq-status.failed{background:#ffedd5;color:#c2410c;}
.sales-vq-status.duplicate{background:#fee2e2;color:#b91c1c;}
.sales-vq-status.invalid{background:#fff7ed;color:#9a3412;}
@keyframes sales-vq-spin{to{transform:rotate(360deg)}}
.sales-vq-url{
    min-width:0;
    padding:10px 10px 0;
    overflow:hidden;
    color:#31598a;
    font-size:9px;
    font-weight:800;
    line-height:1.45;
}
.sales-vq-url a{
    display:block;
    overflow:hidden;
    color:#31598a;
    text-decoration:none;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.sales-vq-meta{
    min-width:0;
    padding:7px 10px 10px;
    color:#64748b;
    font-size:8px;
    line-height:1.45;
}
.sales-vq-title{
    display:-webkit-box;
    margin-bottom:4px;
    overflow:hidden;
    color:#0f172a;
    font-size:10px;
    line-height:1.35;
    font-weight:900;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-vq-meta-line{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sales-vq-failure{
    margin:0 10px 9px;
    padding:6px 7px;
    border-left:2px solid #fb923c;
    border-radius:0 4px 4px 0;
    background:#fff7ed;
    color:#9a3412;
    font-size:8px;
    line-height:1.45;
}
.sales-vq-failure strong,
.sales-vq-failure span{display:block;}
.sales-vq-failure.duplicate{border-left-color:#ef4444;background:#fef2f2;color:#991b1b;}
.sales-vq-failure.passed-copy{border-left-color:#9ca3af;background:#f9fafb;color:#4b5563;}
.sales-vq-not-counted{margin-top:2px;font-weight:900;}
.sales-vq-actions{
    display:flex;
    align-items:center;
    gap:5px;
    flex-wrap:wrap;
    margin-top:auto;
    padding:8px 10px;
    border-top:1px solid #edf1f5;
    background:#f8fafc;
}
.sales-vq-actions .btn{min-height:28px;padding:4px 7px;font-size:8px;}
.sales-vq-edit{
    display:block;
    margin:0 10px 9px;
    padding:8px;
    background:#f8fafc;
    border:1px solid #cbd5e1;
    border-radius:4px;
}
.sales-vq-row.is-editing>.sales-vq-actions{display:none;}
.sales-vq-edit-field{display:block;min-width:0;}
.sales-vq-edit-label{
    display:block;
    margin:0 0 4px;
    color:#334155;
    font-size:8px;
    font-weight:900;
    line-height:1.25;
}
.sales-vq-edit input[data-vq-edit-url]{
    display:block;
    width:100%;
    min-width:0;
    min-height:34px;
    padding:6px 8px;
    border:1px solid #94a3b8;
    border-radius:4px;
    background:#fff;
    color:#0f172a;
    font-size:9px;
    line-height:1.35;
}
.sales-vq-edit input[data-vq-edit-url]:focus{
    outline:2px solid rgba(37,99,235,.18);
    outline-offset:1px;
    border-color:#2563eb;
}
.sales-vq-edit-help{
    display:block;
    margin-top:4px;
    color:#64748b;
    font-size:7.5px;
    line-height:1.35;
}
.sales-vq-edit-preview{
    display:flex;
    align-items:center;
    gap:8px 12px;
    flex-wrap:wrap;
    margin-top:6px;
    padding:5px 6px;
    border-radius:4px;
    background:#eef2f7;
    color:#475569;
    font-size:7.5px;
    line-height:1.3;
}
.sales-vq-edit-preview span{display:inline-flex;align-items:center;gap:3px;min-width:0;}
.sales-vq-edit-preview b{color:#334155;font-weight:800;}
.sales-vq-edit-preview em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sales-vq-edit.has-unsupported-url .sales-vq-edit-preview{background:#fff7ed;color:#9a3412;}
.sales-vq-edit-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:6px;
    margin-top:8px;
}
.sales-vq-edit-actions .btn{min-height:30px;padding:5px 8px;font-size:8px;}
.sales-vq-history{
    margin:0 10px 9px;
    padding:6px 8px;
    background:#f8fafc;
    border:1px solid #e2e8f0;
    border-radius:4px;
    font-size:8px;
    color:#475569;
}
.sales-vq-history div+div{margin-top:3px;}
.sales-verification-queue-empty{display:flex;flex-direction:column;gap:2px;padding:18px 12px;text-align:center;color:#64748b;font-size:9px;}
.sales-verification-queue-empty strong{color:#334155;font-size:10px;}

@media(max-width:760px){
    .sales-queue-submit-actions{grid-template-columns:1fr 1fr;}
    .sales-queue-submit-help{grid-column:1/-1;grid-row:2;}
    .sales-verification-queue-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));}
    .sales-verification-queue-summary{display:none;}
}
@media(max-width:520px){
    .sales-queue-submit-actions{grid-template-columns:1fr;}
    .sales-queue-submit-help{grid-column:1;grid-row:auto;}
    .sales-queue-submit-actions .btn{width:100%;}
    .sales-verification-queue-head{padding-left:10px;padding-right:10px;}
    .sales-verification-queue-head p{display:none;}
    .sales-verification-queue-head-actions{gap:5px;}
    .sales-verification-queue-list{grid-template-columns:1fr;padding:9px;}
    .sales-vq-edit-actions{justify-content:stretch;}
    .sales-vq-edit-actions .btn{flex:1 1 0;}
}

/* v0.2.97 — Save & Wait decision point after preflight + peer Bulk Submit Post workflow. */
.sales-preflight-actions{
    margin-top:8px;
    padding:8px 10px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f8fafc;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}
.sales-preflight-copy{display:flex;flex-direction:column;gap:2px;min-width:0;}
.sales-preflight-copy strong{font-size:10px;}
.sales-preflight-copy span{font-size:9px;color:#64748b;line-height:1.35;}
.sales-preflight-buttons{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end;}
.sales-bulk-submit-page{margin-top:0;padding:14px;}
.sales-bulk-submit-page textarea{min-height:220px;}
.sales-bulk-submit-cta{text-decoration:none;}
@media(max-width:760px){
    .sales-preflight-actions{align-items:stretch;flex-direction:column;}
    .sales-preflight-buttons{justify-content:stretch;}
    .sales-preflight-buttons .btn{flex:1 1 160px;}
}

/* v0.2.99 — preserve the approved Submit Post header layout.
 * Bulk Submit is a peer action immediately to the LEFT of the original Submit
 * button, so Submit stays the right-most control on its original baseline.
 * Both actions use the same approved primary button treatment. */
@media(min-width:761px){
    .sales-portal-head-actions{
        grid-template-columns:auto auto auto auto;
        column-gap:10px;
        align-items:start;
        justify-content:end;
    }
}
.sales-submit-cta,
.sales-bulk-submit-cta{
    white-space:nowrap;
}
.sales-bulk-submit-cta{
    text-decoration:none;
}
.sales-bulk-submit-modal .sales-bulk-submit-page,
#salesBulkSubmitModal .sales-bulk-submit-page{
    margin:0;
    border:0;
    background:#fff;
}
#salesBulkSubmitModal .sales-bulk-submit-page textarea{
    min-height:220px;
}

/* V0.2.100 — keep the approved Submit Post slot and place Bulk Submit Post beside it. */
.sales-portal-head-actions{
    grid-template-columns:auto auto auto;
}
.sales-submit-cta-cluster{
    margin-top:18px;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    align-self:start;
    white-space:nowrap;
}
.sales-submit-cta-cluster .sales-submit-cta{
    margin-top:0;
}
@media(max-width:1000px){
    .sales-portal-head-actions{
        width:100%;
        grid-template-columns:minmax(0,1fr);
        gap:9px;
    }
    .sales-submit-cta-cluster{
        margin-top:0;
        justify-content:flex-start;
    }
}
@media(max-width:760px){
    .sales-submit-cta-cluster{
        width:100%;
        display:grid;
        grid-template-columns:repeat(2,minmax(0,1fr));
        gap:8px;
    }
    .sales-submit-cta-cluster .sales-submit-cta{
        width:100%;
        min-width:0;
        max-width:none;
    }
}
@media(max-width:480px){
    .sales-submit-cta-cluster{
        grid-template-columns:1fr;
    }
}

/* V0.2.101 — restore the approved Sales header layout only.
 * Keep Period at the left, From / To at the right, and place the two submit
 * actions directly below the date controls, right-aligned. No workflow logic. */
@media(min-width:1001px){
    .sales-portal-head-actions{
        width:100% !important;
        display:grid !important;
        grid-template-columns:minmax(0,1fr) auto !important;
        grid-template-areas:
            "period dates"
            ". submit-actions";
        column-gap:10px !important;
        row-gap:10px !important;
        align-items:start !important;
        justify-content:stretch !important;
        justify-self:stretch !important;
    }
    .sales-portal-head-actions .sales-head-period-switch{
        grid-area:period;
        justify-self:start;
        margin-top:18px !important;
    }
    .sales-portal-head-actions .sales-range-filter{
        grid-area:dates;
        justify-self:end;
    }
    .sales-portal-head-actions .sales-submit-cta-cluster{
        grid-area:submit-actions;
        justify-self:end;
        margin-top:0;
        display:flex;
        align-items:center;
        justify-content:flex-end;
        gap:8px;
    }
    .sales-submit-cta-cluster .sales-submit-cta{
        margin-top:0;
    }
}

/* v0.2.104 — queue cards open details like existing Post cards; status controls stay equal size. */
.sales-vq-row[role="button"]{
    cursor:pointer;
    transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.sales-vq-row[role="button"]:hover,
.sales-vq-row[role="button"]:focus-visible{
    box-shadow:0 10px 24px rgba(15,23,42,.08);
    transform:translateY(-1px);
    outline:none;
}
.sales-vq-status{
    width:72px;
    min-width:72px;
    height:22px;
    min-height:22px;
    justify-content:center;
    box-sizing:border-box;
    padding:2px 5px;
}
.sales-vq-detail-modal{width:min(720px,calc(100vw - 24px));}
.sales-vq-detail-modal .sales-post-detail-content{padding-top:16px;}
.sales-vq-detail-modal .sales-post-detail-facts{grid-template-columns:repeat(2,minmax(0,1fr));}
.sales-vq-detail-url-fact a{color:#2563eb;text-decoration:none;overflow-wrap:anywhere;}
.sales-vq-detail-status{width:88px;min-width:88px;justify-content:center;}
.sales-vq-detail-status.waiting{background:#f1f5f9;color:#475569;}
.sales-vq-detail-status.verifying{background:#eef2f7;color:#334155;}
.sales-vq-detail-status.passed{background:#e5e7eb;color:#374151;}
.sales-vq-detail-status.failed{background:#ffedd5;color:#c2410c;}
.sales-vq-detail-status.duplicate{background:#fee2e2;color:#b91c1c;}
.sales-vq-detail-status.invalid{background:#fff7ed;color:#9a3412;}
@media(max-width:520px){
    .sales-vq-detail-modal .sales-post-detail-facts{grid-template-columns:1fr;}
}

/* v0.2.105 — visual-only control sizing + Save & Wait modal hand-off support.
 * Keep the approved Dashboard layout unchanged. Only normalize the controls
 * that share the same row so paired buttons have identical heights. */
.sales-verification-queue-head-actions > .btn.compact,
.sales-verification-queue-head-actions > .sales-verification-queue-collapse{
    box-sizing:border-box;
    height:30px;
    min-height:30px;
}
.sales-submit-cta-cluster > .sales-submit-cta{
    box-sizing:border-box;
    height:38px;
    min-height:38px;
    padding-top:0;
    padding-bottom:0;
    align-items:center;
    justify-content:center;
}
@media(pointer:coarse){
    .sales-submit-cta-cluster > .sales-submit-cta{
        height:44px;
        min-height:44px;
    }
}
/* v0.2.107 — collapsed Verification Queue header stays clean.
 * All / Needs Action are real filters only inside the expanded filter row;
 * do not duplicate them as fake summary controls in the collapsed header.
 * Refresh and collapse are the only right-side controls and share one height. */
.sales-verification-queue-head-actions > [data-verification-queue-refresh],
.sales-verification-queue-head-actions > [data-vq-collapse-toggle]{
    box-sizing:border-box !important;
    height:30px !important;
    min-height:30px !important;
    max-height:30px !important;
    margin:0 !important;
    padding-top:0 !important;
    padding-bottom:0 !important;
    align-items:center;
    justify-content:center;
}
.sales-verification-queue-head-actions > [data-verification-queue-refresh]{
    display:inline-flex;
}

/* v0.2.109 — Verification Queue acknowledgement/highlight only.
 * Every selector is component/state scoped so this cannot reposition Admin,
 * Dashboard header, Submit modal, or unrelated Post/Grid layouts. */
.sales-verification-queue .sales-vq-row.status-passed{
    --vq-accent:#22c55e;
    border-color:#86efac;
    border-top-color:#22c55e;
}
.sales-verification-queue .sales-vq-row.status-passed .sales-vq-status.passed{
    background:#dcfce7;
    color:#166534;
}
.sales-verification-queue .sales-vq-row.status-passed .sales-vq-failure.passed-copy{
    border-left-color:#22c55e;
    background:#f0fdf4;
    color:#166534;
}
.sales-verification-queue .sales-vq-row.status-passed.is-acknowledging{
    opacity:.58;
    pointer-events:none;
}
#salesPortalDashboard .sales-self-post-card.sales-verification-passed-post{
    outline:2px solid #22c55e;
    outline-offset:1px;
}

/* v0.2.110 — Verification Queue compact cards only.
 * All selectors are namespaced to .sales-verification-queue so this cannot alter
 * Admin/Sales date controls, Dashboard headers, Submit modal, or normal Post cards. */
.sales-verification-queue [data-vq-title-toggle]{
    cursor:pointer;
    border-radius:4px;
}
.sales-verification-queue [data-vq-title-toggle]:focus-visible{
    outline:2px solid #2563eb;
    outline-offset:2px;
}
.sales-verification-queue .sales-verification-queue-list{
    grid-template-columns:repeat(auto-fill,minmax(190px,220px));
    justify-content:start;
    gap:8px;
    padding:8px;
}
.sales-verification-queue .sales-vq-row{
    min-height:112px;
    box-shadow:none;
}
.sales-verification-queue .sales-vq-card-top{
    min-height:30px;
    padding:5px 7px;
    gap:5px;
}
.sales-verification-queue .sales-vq-platform{
    font-size:7.5px;
}
.sales-verification-queue .sales-vq-status{
    max-width:132px;
    min-height:20px;
    padding:2px 6px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.sales-verification-queue .sales-vq-url{
    padding:7px 7px 0;
    font-size:8px;
}
.sales-verification-queue .sales-vq-meta{
    padding:5px 7px 7px;
    font-size:7.5px;
}
.sales-verification-queue .sales-vq-title{
    margin-bottom:2px;
    font-size:9px;
    -webkit-line-clamp:1;
}
.sales-verification-queue .sales-vq-failure{
    margin:0 7px 7px;
    padding:5px 6px;
    font-size:7.5px;
}
.sales-verification-queue .sales-vq-error-message{
    margin-top:2px;
    display:-webkit-box;
    overflow:hidden;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
}
.sales-verification-queue .sales-vq-actions{
    gap:4px;
    padding:6px 7px;
}
.sales-verification-queue .sales-vq-actions .btn{
    min-height:25px;
    padding:3px 6px;
    font-size:7.5px;
}
.sales-verification-queue .sales-vq-row.is-error.error-type-duplicate-id,
.sales-verification-queue .sales-vq-row.is-error.error-type-duplicate-title,
.sales-verification-queue .sales-vq-row.is-error.error-type-duplicate-photo,
.sales-verification-queue .sales-vq-row.is-error.error-type-duplicate-url{
    --vq-accent:#dc2626;
}
.sales-verification-queue .sales-vq-status.error-label.error-type-duplicate-id,
.sales-verification-queue .sales-vq-status.error-label.error-type-duplicate-title,
.sales-verification-queue .sales-vq-status.error-label.error-type-duplicate-photo,
.sales-verification-queue .sales-vq-status.error-label.error-type-duplicate-url{
    background:#fee2e2;
    color:#b91c1c;
}
.sales-verification-queue .sales-vq-status.error-label.error-type-timeout,
.sales-verification-queue .sales-vq-status.error-label.error-type-provider,
.sales-verification-queue .sales-vq-status.error-label.error-type-system{
    background:#ffedd5;
    color:#c2410c;
}
.sales-verification-queue .sales-vq-row.is-error.error-type-unavailable{
    --vq-accent:#64748b;
}
.sales-verification-queue .sales-vq-status.error-label.error-type-unavailable{
    background:#f1f5f9;
    color:#475569;
}
.sales-verification-queue .sales-vq-status.error-label.error-type-invalid-url,
.sales-verification-queue .sales-vq-status.error-label.error-type-date,
.sales-verification-queue .sales-vq-status.error-label.error-type-title-check,
.sales-verification-queue .sales-vq-status.error-label.error-type-manual,
.sales-verification-queue .sales-vq-status.error-label.error-type-generic{
    background:#fff7ed;
    color:#9a3412;
}
@media(max-width:520px){
    .sales-verification-queue .sales-verification-queue-list{
        grid-template-columns:1fr;
    }
}

/* v0.2.113 EN: Daily target history chart + Admin daily workflow; scoped only to Sales activity/Admin cards.
   中文：每日目标历史图表 + Admin 每日流程；仅作用于 Sales activity/Admin 卡片，不影响其他页面。 */
.sales-activity-chart-panel .sales-chart-day-target{
    position:absolute;
    left:0;
    right:0;
    z-index:3;
    height:0;
    border-top:1px solid #94a3b8;
    pointer-events:none;
}
.sales-activity-chart-panel .sales-chart-day-target > span{
    position:absolute;
    right:2px;
    bottom:3px;
    max-width:calc(100% - 4px);
    padding:2px 4px;
    border-radius:4px;
    background:#f8fafc;
    color:#64748b;
    font-size:7px;
    font-weight:900;
    line-height:1.15;
    white-space:nowrap;
}

.sales-progress-card .sales-daily-workflow{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:4px;
    width:100%;
    min-width:0;
}
.sales-progress-card .sales-daily-task-group{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:3px;
    min-width:0;
}
.sales-progress-card .sales-daily-task-group.hidden{
    display:none !important;
}
.sales-progress-card .sales-daily-review,
.sales-progress-card .sales-daily-complete,
.sales-progress-card .sales-daily-action-date{
    min-width:0;
    min-height:34px;
    border-radius:4px;
    font-size:8px;
    font-weight:900;
    line-height:1.15;
}
.sales-progress-card .sales-daily-review,
.sales-progress-card .sales-daily-complete{
    width:100%;
    padding:6px 5px;
    white-space:normal;
    overflow-wrap:anywhere;
}
.sales-progress-card .sales-daily-complete{
    border:1px solid #cbd5e1;
    background:#f1f5f9;
    color:#64748b;
    cursor:pointer;
}
.sales-progress-card .sales-daily-complete:hover,
.sales-progress-card .sales-daily-complete:focus-visible{
    border-color:#94a3b8;
    background:#e2e8f0;
    color:#475569;
    outline:none;
}
.sales-progress-card .sales-daily-complete.is-completed{
    border-color:#bbf7d0;
    background:#dcfce7;
    color:#166534;
    cursor:pointer;
}
.sales-progress-card .sales-daily-complete.is-completed:hover,
.sales-progress-card .sales-daily-complete.is-completed:focus-visible{
    border-color:#4ade80;
    background:#bbf7d0;
    color:#166534;
}
.sales-progress-card .sales-daily-complete:disabled,
.sales-progress-card .sales-daily-complete.is-completed:disabled{
    border-color:#bbf7d0;
    background:#dcfce7;
    color:#166534;
    cursor:default;
    opacity:1;
}
.sales-progress-card .sales-daily-action-date{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:3px;
    width:auto;
    padding:5px 6px;
    border:1px solid #e2e8f0;
    background:#fff;
    color:#64748b;
    cursor:pointer;
    white-space:nowrap;
}
.sales-progress-card .sales-daily-action-date:hover,
.sales-progress-card .sales-daily-action-date:focus-visible{
    border-color:#94a3b8;
    color:#334155;
    outline:none;
}
.sales-progress-card .sales-daily-action-date svg{
    width:11px;
    height:11px;
    flex:0 0 11px;
    fill:currentColor;
}

.daily-workflow-calendar-backdrop{
    position:fixed;
    inset:0;
    z-index:620;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:16px;
    background:rgba(15,23,42,.36);
}
.daily-workflow-calendar-backdrop.hidden{
    display:none !important;
}
.daily-workflow-calendar-modal{
    width:min(430px,100%);
    max-height:min(620px,calc(100vh - 32px));
    overflow:auto;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    box-shadow:0 18px 45px rgba(15,23,42,.22);
}
.daily-workflow-calendar-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    padding:14px 14px 10px;
    border-bottom:1px solid #e2e8f0;
}
.daily-workflow-calendar-head h3{
    margin:2px 0 0;
    font-size:16px;
}
.daily-workflow-calendar-toolbar{
    display:grid;
    grid-template-columns:34px minmax(0,1fr) 34px;
    align-items:center;
    gap:8px;
    padding:10px 14px 8px;
    text-align:center;
}
.daily-workflow-month-nav{
    width:34px;
    height:32px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#fff;
    color:#334155;
    cursor:pointer;
    font-size:20px;
    line-height:1;
}
.daily-workflow-month-nav:disabled{
    cursor:default;
    opacity:.35;
}
.daily-workflow-weekdays,
.daily-workflow-calendar-grid{
    display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));
    gap:4px;
    padding-left:14px;
    padding-right:14px;
}
.daily-workflow-weekdays{
    padding-bottom:4px;
    color:#94a3b8;
    font-size:8px;
    font-weight:900;
    text-align:center;
}
.daily-workflow-calendar-grid{
    padding-bottom:10px;
}
.daily-workflow-calendar-loading{
    grid-column:1 / -1;
    min-height:120px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:#64748b;
    font-size:10px;
    font-weight:800;
    text-align:center;
}
.daily-workflow-calendar-day,
.daily-workflow-calendar-blank{
    min-height:46px;
    border-radius:4px;
}
.daily-workflow-calendar-day{
    position:relative;
    display:flex;
    align-items:flex-start;
    justify-content:flex-start;
    padding:6px;
    border:1px solid #e2e8f0;
    background:#fff;
    color:#334155;
    cursor:pointer;
    font-size:10px;
    font-weight:800;
}
.daily-workflow-calendar-day:hover,
.daily-workflow-calendar-day:focus-visible{
    border-color:#94a3b8;
    background:#f8fafc;
    outline:none;
}
.daily-workflow-calendar-day.is-selected{
    border-color:#2563eb;
    box-shadow:inset 0 0 0 1px #2563eb;
}
.daily-workflow-calendar-day.is-future{
    cursor:default;
    opacity:.36;
}
.daily-workflow-calendar-day-dots{
    position:absolute;
    left:6px;
    right:6px;
    bottom:6px;
    display:flex;
    gap:3px;
}
.daily-workflow-calendar-day-dots i,
.daily-workflow-calendar-legend i{
    display:inline-block;
    width:7px;
    height:7px;
    border-radius:50%;
}
.daily-workflow-calendar-day-dots .reviewed,
.daily-workflow-calendar-legend .reviewed{
    background:#2563eb;
}
.daily-workflow-calendar-day-dots .completed,
.daily-workflow-calendar-legend .completed{
    background:#16a34a;
}
.daily-workflow-calendar-legend{
    display:flex;
    align-items:center;
    gap:14px;
    padding:9px 14px;
    border-top:1px solid #e2e8f0;
    color:#64748b;
    font-size:9px;
    font-weight:800;
}
.daily-workflow-calendar-legend span{
    display:inline-flex;
    align-items:center;
    gap:5px;
}
.daily-workflow-calendar-help{
    margin:0;
    padding:0 14px 13px;
    color:#64748b;
    font-size:9px;
}
@media(pointer:coarse){
    .sales-progress-card .sales-daily-review,
    .sales-progress-card .sales-daily-complete,
    .sales-progress-card .sales-daily-action-date{
        min-height:44px;
    }
    .daily-workflow-calendar-day{
        min-height:52px;
    }
}

/* V0.2.114 — Sales/Post Search original-listing results.
   EN: Styles are strictly scoped under the Admin Sales directory component so no other search, card, popup, or grid layout changes.
   中文：样式严格限定在 Admin Sales Directory 组件内，不影响其他搜索框、卡片、弹窗或 Grid 布局。 */
#adminSalesDirectoryTools .admin-sales-search-field{
    position:relative;
}
#adminSalesDirectoryTools .admin-sales-post-search-results{
    position:absolute;
    z-index:80;
    top:100%;
    left:0;
    width:min(520px,calc(100vw - 32px));
    max-height:380px;
    margin-top:5px;
    overflow:auto;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    box-shadow:0 10px 28px rgba(15,23,42,.14);
}
#adminSalesDirectoryTools .admin-sales-post-search-results.hidden{
    display:none;
}
#adminSalesDirectoryTools .admin-sales-post-search-head{
    padding:7px 9px;
    border-bottom:1px solid #e2e8f0;
    color:#64748b;
    font-size:9px;
    font-weight:900;
    letter-spacing:.02em;
}
#adminSalesDirectoryTools .admin-sales-post-search-result{
    width:100%;
    min-height:0;
    display:grid;
    grid-template-columns:minmax(105px,145px) minmax(0,1fr);
    gap:10px;
    align-items:start;
    padding:9px;
    border:0;
    border-bottom:1px solid #eef2f7;
    border-radius:0;
    background:#fff;
    color:#0f172a;
    text-align:left;
    cursor:pointer;
    font:inherit;
}
#adminSalesDirectoryTools .admin-sales-post-search-result:last-child{
    border-bottom:0;
}
#adminSalesDirectoryTools .admin-sales-post-search-result:hover,
#adminSalesDirectoryTools .admin-sales-post-search-result:focus-visible{
    background:#f8fafc;
    outline:none;
}
#adminSalesDirectoryTools .admin-sales-post-search-owner,
#adminSalesDirectoryTools .admin-sales-post-search-post{
    min-width:0;
    display:flex;
    flex-direction:column;
    gap:3px;
}
#adminSalesDirectoryTools .admin-sales-post-search-owner b,
#adminSalesDirectoryTools .admin-sales-post-search-post strong{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:10px;
}
#adminSalesDirectoryTools .admin-sales-post-search-owner small,
#adminSalesDirectoryTools .admin-sales-post-search-post small,
#adminSalesDirectoryTools .admin-sales-post-search-post>span{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:#64748b;
    font-size:9px;
}
#adminSalesDirectoryTools .admin-sales-post-search-post>span b{
    color:#334155;
    font-size:9px;
}
#adminSalesDirectoryTools .admin-sales-post-search-empty{
    padding:10px;
    color:#64748b;
    font-size:10px;
}
@media(max-width:520px){
    #adminSalesDirectoryTools .admin-sales-post-search-results{
        width:100%;
    }
    #adminSalesDirectoryTools .admin-sales-post-search-result{
        grid-template-columns:1fr;
        gap:5px;
    }
}


/* v0.2.116 — Admin Daily Review date control + reversible completion + rating axis.
   EN: Strictly scoped to Admin Sales cards / Admin Sales activity chart / Sales Review modal.
   中文：严格限定在 Admin Sales 卡片、Admin Sales Activity 图表及 Sales Review 弹窗内。 */
.sales-progress-card .sales-daily-complete.is-completed{
    cursor:pointer;
}
.sales-progress-card .sales-daily-complete.is-completed:hover,
.sales-progress-card .sales-daily-complete.is-completed:focus-visible{
    border-color:#86efac;
    background:#f0fdf4;
    color:#166534;
    outline:none;
}

.sales-period-review-modal #salesPeriodReviewDateTrigger{
    display:inline-flex;
    align-items:center;
    gap:5px;
    max-width:100%;
    margin:4px 0 0;
    padding:0;
    border:0;
    border-radius:4px;
    background:transparent;
    color:#64748b;
    cursor:pointer;
    font:inherit;
    font-size:9px;
    line-height:1.35;
    text-align:left;
}
.sales-period-review-modal #salesPeriodReviewDateTrigger.hidden{
    display:none !important;
}
.sales-period-review-modal #salesPeriodReviewDateTrigger:hover,
.sales-period-review-modal #salesPeriodReviewDateTrigger:focus-visible{
    color:#1d4ed8;
    outline:none;
    text-decoration:underline;
    text-underline-offset:2px;
}
.sales-period-review-modal #salesPeriodReviewDateTrigger svg{
    width:11px;
    height:11px;
    flex:0 0 11px;
    fill:currentColor;
}

.admin-sales-activity-panel .sales-chart-shell{
    grid-template-columns:48px minmax(0,1fr) 108px !important;
    gap:8px !important;
    padding-right:8px !important;
}
.admin-sales-activity-panel .sales-chart-rating-axis{
    position:relative;
    width:42px;
    height:280px;
    overflow:visible;
    color:#92400e;
}
.admin-sales-activity-panel .sales-chart-rating-axis-ticks{
    position:absolute;
    inset:0;
    overflow:visible;
}
.admin-sales-activity-panel .sales-chart-rating-tick{
    position:absolute;
    left:4px;
    min-width:30px;
    transform:translateY(-50%);
    color:#b07a38;
    font-size:9px;
    font-weight:800;
    line-height:1;
    white-space:nowrap;
    opacity:.72;
}
.admin-sales-activity-panel .sales-chart-rating-tick i{
    margin-left:2px;
    color:#cf9a54;
    font-style:normal;
}
.admin-sales-activity-panel .sales-chart-rating-average{
    position:absolute;
    left:38px;
    min-width:46px;
    transform:translateY(-50%);
    display:inline-flex;
    align-items:center;
    gap:4px;
    color:#8f5a18;
    font-size:10px;
    font-weight:900;
    line-height:1;
    white-space:nowrap;
}
.admin-sales-activity-panel .sales-chart-rating-average-star{
    display:inline-block;
    color:#d97706;
    font-size:14px;
    font-weight:900;
    line-height:1;
}
.admin-sales-activity-panel .sales-chart-rating-average-value{
    display:inline-block;
    line-height:1;
}
.admin-sales-activity-panel .sales-chart-rating-star{
    position:absolute;
    left:50%;
    z-index:10;
    transform:translate(-50%,-50%);
    color:#d97706;
    font-size:15px;
    font-weight:900;
    line-height:1;
    text-shadow:0 0 2px #fff,0 0 4px #fff;
    pointer-events:none;
}
.admin-sales-activity-panel .admin-daily-rating-legend i{
    width:auto;
    height:auto;
    border-radius:0;
    background:transparent;
    color:#d97706;
    font-style:normal;
    font-size:11px;
    line-height:1;
}

@media(max-width:760px){
    .admin-sales-activity-panel .sales-chart-shell{
        grid-template-columns:36px minmax(0,1fr) 84px !important;
        gap:4px !important;
        padding-left:4px !important;
        padding-right:4px !important;
    }
    .admin-sales-activity-panel .sales-chart-y-axis{
        width:36px !important;
    }
    .admin-sales-activity-panel .sales-chart-y-tick{
        right:2px !important;
        min-width:20px !important;
        font-size:8px !important;
    }
    .admin-sales-activity-panel .sales-chart-rating-axis{
        width:84px;
    }
    .admin-sales-activity-panel .sales-chart-rating-tick{
        left:2px;
        min-width:26px;
        font-size:8px;
    }
    .admin-sales-activity-panel .sales-chart-rating-average{
        left:32px;
        min-width:42px;
        gap:3px;
        font-size:9px;
    }
    .admin-sales-activity-panel .sales-chart-rating-average-star{
        font-size:13px;
    }
    .admin-sales-activity-panel .sales-chart-rating-star{
        font-size:13px;
    }
    .admin-sales-activity-panel .sales-chart-legend{
        flex-wrap:wrap;
    }
}

@media(max-width:420px){
    .admin-sales-activity-panel .sales-chart-shell{
        grid-template-columns:32px minmax(0,1fr) 72px !important;
        gap:3px !important;
    }
    .admin-sales-activity-panel .sales-chart-y-axis{
        width:32px !important;
    }
    .admin-sales-activity-panel .sales-chart-rating-axis{
        width:72px;
    }
    .admin-sales-activity-panel .sales-chart-rating-tick{
        min-width:24px;
        font-size:7px;
    }
    .admin-sales-activity-panel .sales-chart-rating-average{
        left:28px;
        min-width:38px;
        gap:2px;
        font-size:8px;
    }
    .admin-sales-activity-panel .sales-chart-rating-average-star{
        font-size:12px;
    }
    .admin-sales-activity-panel .sales-chart-rating-star{
        font-size:12px;
    }
}


/* v0.2.117 — Admin Daily Review is modal-only and its rating is a line trend.
   Scope is limited to the Admin Sales Activity chart so other chart/layout CSS stays untouched. */
.admin-sales-activity-panel .sales-chart-review-line{
    position:absolute;
    top:0;
    left:0;
    /* v0.2.119: keep the rating line/point above Post bars. A single-day
       review point used to sit behind the bar and looked completely missing. */
    z-index:8;
    width:100%;
    height:var(--sales-plot-height,248px);
    overflow:visible;
    pointer-events:none;
}
.admin-sales-activity-panel .sales-chart-review-guide{
    stroke:#e6bf8a;
    stroke-width:1;
    stroke-dasharray:4 4;
    opacity:.55;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .sales-chart-review-average-line{
    stroke:#c5761b;
    stroke-width:2.4;
    stroke-dasharray:7 4;
    opacity:.92;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .sales-chart-review-trend-path{
    fill:none;
    stroke:#d97706;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .sales-chart-review-trend-point circle{
    fill:#fff;
    stroke:#d97706;
    stroke-width:2;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .admin-daily-rating-legend i{
    position:relative;
    width:16px;
    height:8px;
    flex:0 0 16px;
    background:linear-gradient(#d97706,#d97706) center/16px 2px no-repeat;
}
.admin-sales-activity-panel .admin-daily-rating-legend i::after{
    content:"";
    position:absolute;
    top:2px;
    left:6px;
    width:4px;
    height:4px;
    border:1px solid #d97706;
    border-radius:50%;
    background:#fff;
}
.admin-sales-activity-panel .sales-chart-rating-star{
    display:none !important;
}
@media(max-width:760px){
    .admin-sales-activity-panel .sales-chart-review-trend-path{
        stroke-width:1.75;
    }
}


/* v0.2.118 — Admin daily completion status.
   EN: Incomplete is neutral gray; Complete is green. A real target-met day is green and locked.
   中文：Incomplete 为灰色，Complete 为绿色；真实达标的日期保持绿色并锁定，不能改回 Incomplete。 */

/* v0.2.123 — compact Scanned Products row.
   Keep this scoped to the in-detail Scanned Products toggle only. */
.website-scanned-products-toggle{
    min-height:0;
    padding:6px 14px;
    grid-template-columns:minmax(0,1fr) 14px;
    grid-template-rows:auto;
    gap:10px;
    align-items:center;
}
.website-scanned-products-toggle .website-scanned-products-copy{
    grid-column:1;
    grid-row:1;
}
.website-scanned-products-toggle .website-tool-arrow{
    grid-column:2;
    grid-row:1;
    align-self:center;
    justify-self:end;
    margin:0;
}
@media(max-width:760px){
    .website-scanned-products-toggle{
        padding:6px 12px;
        gap:8px;
    }
}

/* v0.2.126 — Sales all-date Post Search only.
 * Keep every selector scoped to #salesPostSearchPanel so normal Dashboard,
 * Verification Queue, Submit and Admin layouts remain unchanged. */
#salesPostSearchPanel{
    margin:12px 0 14px;
    padding:11px 12px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
    box-shadow:none;
}
#salesPostSearchPanel .sales-post-search-field{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:4px;
}
#salesPostSearchPanel .sales-post-search-field>label{
    color:#334155;
    font-size:10px;
    font-weight:900;
}
#salesPostSearchPanel .sales-post-search-input-row{
    position:relative;
    display:flex;
    align-items:center;
    min-width:0;
}
#salesPostSearchPanel #salesPostSearchInput{
    width:100%;
    height:38px;
    min-width:0;
    padding:0 38px 0 11px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#0f172a;
    font:inherit;
    font-size:11px;
    outline:none;
}
#salesPostSearchPanel #salesPostSearchInput:focus{
    border-color:#2563eb;
    box-shadow:0 0 0 2px rgba(37,99,235,.1);
}
#salesPostSearchPanel .sales-post-search-clear{
    position:absolute;
    right:5px;
    top:50%;
    width:28px;
    height:28px;
    padding:0;
    transform:translateY(-50%);
    border:0;
    border-radius:4px;
    background:transparent;
    color:#64748b;
    font-size:18px;
    line-height:28px;
    cursor:pointer;
}
#salesPostSearchPanel .sales-post-search-clear:hover,
#salesPostSearchPanel .sales-post-search-clear:focus-visible{
    background:#f1f5f9;
    color:#0f172a;
}
#salesPostSearchPanel .sales-post-search-help{
    color:#64748b;
    font-size:9px;
    line-height:1.4;
}
#salesPostSearchPanel .sales-post-search-results{
    margin-top:9px;
    border-top:1px solid #e2e8f0;
    padding-top:8px;
}
#salesPostSearchPanel .sales-post-search-card-grid{
    min-height:0 !important;
    margin:0;
    padding:0;
    align-content:start;
}
#salesPostSearchPanel .sales-post-search-card{
    min-width:0;
}
#salesPostSearchPanel .sales-post-search-card .sales-self-post-date{
    margin-bottom:5px;
    color:#64748b;
    font-size:7.5px;
    font-weight:900;
    letter-spacing:.01em;
}
#salesPostSearchPanel .sales-post-search-empty{
    min-height:92px;
    padding:18px 8px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:#64748b;
    font-size:9px;
    font-weight:800;
    text-align:center;
}
#salesPostSearchPanel .sales-post-search-empty.error{
    color:#b45309;
}
@media (max-width:700px){
    #salesPostSearchPanel{
        padding:9px;
    }
    #salesPostSearchPanel #salesPostSearchInput{
        height:36px;
        font-size:10px;
    }
    #salesPostSearchPanel .sales-post-search-card-grid{
        padding:0;
        gap:6px;
    }
}
#salesPostSearchPanel[data-search-active="1"] ~ #salesActivityChartPanel,
#salesPostSearchPanel[data-search-active="1"] ~ #salesDailyStage{
    display:none !important;
}
@media (max-width:700px){
    #salesPostSearchPanel{
        padding:9px;
    }
    #salesPostSearchPanel #salesPostSearchInput{
        height:36px;
        font-size:10px;
    }
    #salesPostSearchPanel .sales-post-search-result{
        grid-template-columns:minmax(0,1fr);
        gap:5px;
    }
    #salesPostSearchPanel .sales-post-search-result-status{
        justify-self:start;
    }
}

/* v0.2.129 — Sales search + Bulk Submit share one compact row, and Admin Daily Review
 * trend markers are high-contrast over stacked Post bars. Keep these selectors scoped. */
#salesPostSearchPanel{
    display:grid;
    grid-template-columns:minmax(280px,720px) max-content;
    justify-content:space-between;
    align-items:center;
    column-gap:16px;
    row-gap:8px;
}
#salesPostSearchPanel .sales-post-search-field{
    width:100%;
    min-width:0;
}
#salesPostSearchPanel .sales-post-search-submit{
    width:auto;
    margin:0;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    align-self:center;
    white-space:nowrap;
}
#salesPostSearchPanel .sales-post-search-submit .sales-submit-cta{
    width:auto;
    min-width:160px;
    margin:0;
}
#salesPostSearchPanel .sales-post-search-results{
    grid-column:1 / -1;
    width:100%;
}
@media(max-width:760px){
    #salesPostSearchPanel{
        grid-template-columns:minmax(0,1fr) max-content;
        column-gap:8px;
    }
    #salesPostSearchPanel .sales-post-search-submit{
        width:auto;
        display:flex;
    }
    #salesPostSearchPanel .sales-post-search-submit .sales-submit-cta{
        width:auto;
        min-width:138px;
        max-width:none;
    }
}
@media(max-width:560px){
    #salesPostSearchPanel{
        grid-template-columns:1fr;
        align-items:stretch;
    }
    #salesPostSearchPanel .sales-post-search-submit{
        width:100%;
        justify-content:stretch;
    }
    #salesPostSearchPanel .sales-post-search-submit .sales-submit-cta{
        width:100%;
        min-width:0;
    }
}

.admin-sales-activity-panel .sales-chart-review-trend-halo{
    fill:#fff;
    stroke:#fff;
    stroke-width:2;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .sales-chart-review-trend-dot{
    fill:#d97706;
    stroke:#92400e;
    stroke-width:1.5;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .admin-daily-rating-legend i{
    width:24px;
    height:12px;
    flex:0 0 24px;
    background:linear-gradient(#d97706,#d97706) center/24px 3px no-repeat;
}
.admin-sales-activity-panel .admin-daily-rating-legend i::after{
    top:1px;
    left:8px;
    width:7px;
    height:7px;
    border:2px solid #d97706;
    background:#fff;
}


/* v0.2.130 — Sales search and Bulk Submit are visually independent controls, while
 * remaining on one responsive row. Daily Review trend uses a clear star marker.
 * Keep these overrides component-scoped. */
#salesPostSearchPanel{
    grid-template-columns:minmax(280px,680px) max-content;
    margin:0 0 10px;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
}
#salesPostSearchPanel .sales-post-search-field{
    width:100%;
    min-width:0;
}
#salesPostSearchPanel .sales-post-search-submit{
    justify-self:end;
}
#salesPostSearchPanel .sales-post-search-results{
    grid-column:1 / -1;
}

.admin-sales-activity-panel .sales-chart-review-trend-star{
    fill:#d97706;
    stroke:#fff;
    stroke-width:2.5px;
    paint-order:stroke fill;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .admin-daily-rating-legend i{
    position:relative;
    width:26px;
    height:14px;
    flex:0 0 26px;
    display:inline-block;
    background:linear-gradient(#d97706,#d97706) center/26px 2px no-repeat;
    color:#d97706;
    font-style:normal;
}
.admin-sales-activity-panel .admin-daily-rating-legend i::after{
    content:"★";
    position:absolute;
    top:50%;
    left:50%;
    width:auto;
    height:auto;
    border:0;
    border-radius:0;
    background:transparent;
    transform:translate(-50%,-52%);
    color:#d97706;
    font-size:12px;
    font-weight:900;
    line-height:1;
    text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff;
}
@media(max-width:760px){
    #salesPostSearchPanel{
        grid-template-columns:minmax(0,1fr) max-content;
        column-gap:8px;
    }
}
@media(max-width:560px){
    #salesPostSearchPanel{
        grid-template-columns:1fr;
    }
    #salesPostSearchPanel .sales-post-search-submit{
        justify-self:stretch;
    }
}


/* v0.2.131 — Keep Sales Post Search label + all-date helper on one compact heading line.
 * Search and Bulk Submit remain independent controls on the same desktop row; narrow
 * screens may wrap the helper and stack the action without affecting other components. */
#salesPostSearchPanel .sales-post-search-field{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:5px;
}
#salesPostSearchPanel .sales-post-search-heading{
    display:flex;
    align-items:baseline;
    gap:8px;
    min-width:0;
    line-height:1.25;
}
#salesPostSearchPanel .sales-post-search-heading>label{
    flex:0 0 auto;
    margin:0;
    color:#334155;
    font-size:10px;
    font-weight:900;
}
#salesPostSearchPanel .sales-post-search-heading>.sales-post-search-help{
    min-width:0;
    margin:0;
    color:#64748b;
    font-size:9px;
    line-height:1.25;
    white-space:nowrap;
}
@media(max-width:760px){
    #salesPostSearchPanel{
        grid-template-columns:minmax(0,1fr) max-content;
        column-gap:8px;
        align-items:end;
    }
    #salesPostSearchPanel .sales-post-search-heading{
        gap:6px;
    }
    #salesPostSearchPanel .sales-post-search-heading>.sales-post-search-help{
        overflow:hidden;
        text-overflow:ellipsis;
    }
}
@media(max-width:560px){
    #salesPostSearchPanel{
        grid-template-columns:1fr;
        align-items:stretch;
    }
    #salesPostSearchPanel .sales-post-search-heading{
        flex-wrap:wrap;
        row-gap:2px;
    }
    #salesPostSearchPanel .sales-post-search-heading>.sales-post-search-help{
        white-space:normal;
        overflow:visible;
        text-overflow:clip;
    }
    #salesPostSearchPanel .sales-post-search-submit{
        justify-self:stretch;
    }
}

/* v0.2.155 — Admin Post Review bulk controls.
 * Preserve the v0.2.149 Search/Location/Dashboard layout. The filtered
 * multi-Sales controls stay in the Posting Progress summary. Single-Sales
 * controls live inside each expanded daily Post group, immediately before
 * that day's Post count. */
.admin-section-summary .admin-summary-bulk-review{
    display:inline-flex;
    align-items:center;
    gap:4px;
    margin:0 6px 0 0;
    min-width:0;
}
.admin-section-summary .admin-summary-bulk-review-button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:0;
    min-height:24px;
    padding:3px 7px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    cursor:pointer;
    font:inherit;
    font-size:7.5px;
    font-weight:900;
    line-height:1;
    white-space:nowrap;
}
.admin-section-summary .admin-summary-bulk-review-button.good{
    border-color:#bbf7d0;
    background:#f0fdf4;
    color:#166534;
}
.admin-section-summary .admin-summary-bulk-review-button.bad{
    border-color:#fecaca;
    background:#fff1f2;
    color:#991b1b;
}
.admin-section-summary .admin-summary-bulk-review-button.good:not(:disabled):hover,
.admin-section-summary .admin-summary-bulk-review-button.good:not(:disabled):focus-visible{
    border-color:#4ade80;
    background:#dcfce7;
    outline:none;
}
.admin-section-summary .admin-summary-bulk-review-button.bad:not(:disabled):hover,
.admin-section-summary .admin-summary-bulk-review-button.bad:not(:disabled):focus-visible{
    border-color:#f87171;
    background:#fee2e2;
    outline:none;
}
.admin-section-summary .admin-summary-bulk-review-button:disabled{
    border-color:#e2e8f0;
    background:#f8fafc;
    color:#94a3b8;
    cursor:default;
    opacity:1;
    pointer-events:none;
}

.sales-expanded-date-head .sales-expanded-date-meta{
    display:inline-flex;
    align-items:center;
    justify-content:flex-end;
    gap:7px;
    min-width:0;
    margin-left:auto;
}
.sales-expanded-date-head .sales-expanded-date-review-actions{
    display:inline-flex;
    align-items:center;
    gap:4px;
    min-width:0;
}
.sales-expanded-date-head .sales-expanded-date-review-button{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:64px;
    min-height:24px;
    padding:3px 7px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
    cursor:pointer;
    font:inherit;
    font-size:7.5px;
    font-weight:900;
    line-height:1;
    white-space:nowrap;
}
.sales-expanded-date-head .sales-expanded-date-review-button span{
    color:inherit;
    font:inherit;
}
.sales-expanded-date-head .sales-expanded-date-review-button.good{
    border-color:#bbf7d0;
    background:#f0fdf4;
    color:#166534;
}
.sales-expanded-date-head .sales-expanded-date-review-button.bad{
    border-color:#fecaca;
    background:#fff1f2;
    color:#991b1b;
}
.sales-expanded-date-head .sales-expanded-date-review-button.good:not(:disabled):hover,
.sales-expanded-date-head .sales-expanded-date-review-button.good:not(:disabled):focus-visible{
    border-color:#4ade80;
    background:#dcfce7;
    outline:none;
}
.sales-expanded-date-head .sales-expanded-date-review-button.bad:not(:disabled):hover,
.sales-expanded-date-head .sales-expanded-date-review-button.bad:not(:disabled):focus-visible{
    border-color:#f87171;
    background:#fee2e2;
    outline:none;
}
.sales-expanded-date-head .sales-expanded-date-review-button:disabled{
    border-color:#e2e8f0;
    background:#f8fafc;
    color:#94a3b8;
    cursor:default;
    opacity:1;
    pointer-events:none;
}
.sales-expanded-date-head .sales-expanded-date-count{
    flex:0 0 auto;
    white-space:nowrap;
}

.admin-summary-bulk-review-button.is-confirming,
.sales-expanded-date-head .sales-expanded-date-review-button.is-confirming{
    border-color:#d97706;
    background:#fff7ed;
    color:#9a3412;
    box-shadow:0 0 0 2px rgba(217,119,6,.10);
}
.admin-summary-bulk-review-button.is-error-feedback,
.sales-expanded-date-head .sales-expanded-date-review-button.is-error-feedback{
    border-color:#fecaca;
    background:#fff1f2;
    color:#b91c1c;
}

@media(pointer:coarse){
    .admin-section-summary .admin-summary-bulk-review-button,
    .sales-expanded-date-head .sales-expanded-date-review-button{
        min-height:34px;
    }
}

@media(max-width:560px){
    .sales-expanded-date-head{
        align-items:flex-start;
    }
    .sales-expanded-date-head .sales-expanded-date-meta{
        flex-wrap:wrap;
        row-gap:4px;
    }
}

@media(max-width:420px){
    .admin-section-summary .admin-summary-bulk-review{
        gap:3px;
        margin-right:3px;
    }
    .admin-section-summary .admin-summary-bulk-review-button{
        padding-left:5px;
        padding-right:5px;
        font-size:7px;
    }
    .sales-expanded-date-head .sales-expanded-date-meta{
        gap:4px;
    }
    .sales-expanded-date-head .sales-expanded-date-review-actions{
        gap:3px;
    }
    .sales-expanded-date-head .sales-expanded-date-review-button{
        min-width:0;
        padding-left:5px;
        padding-right:5px;
        font-size:7px;
    }
}

/* v0.2.157 — compact Verification Queue cards + horizontal breathing room only.
 * Cards show Post ID instead of the full URL. All selectors stay inside the queue. */
.sales-verification-queue .sales-verification-queue-list{
    grid-template-columns:repeat(auto-fill,minmax(168px,190px));
    gap:8px;
    padding:8px 14px;
}
.sales-verification-queue .sales-vq-post-id{
    display:flex;
    align-items:baseline;
    gap:5px;
    min-width:0;
    padding:7px 7px 0;
    color:#31598a;
    line-height:1.35;
}
.sales-verification-queue .sales-vq-post-id-label{
    flex:0 0 auto;
    color:#64748b;
    font-size:7px;
    font-weight:900;
    text-transform:uppercase;
    white-space:nowrap;
}
.sales-verification-queue .sales-vq-post-id strong{
    min-width:0;
    overflow:hidden;
    color:#31598a;
    font-size:8px;
    font-weight:900;
    text-overflow:ellipsis;
    white-space:nowrap;
}
@media(max-width:520px){
    .sales-verification-queue .sales-verification-queue-list{
        grid-template-columns:1fr;
        padding:8px 12px;
    }
}



/* v0.2.163 — Sales Post Search + Bulk Submit panel.
 * FINAL cascade override: match the Admin Sales/Post Search + Location panel
 * without changing search/submit layout or behavior. */
#salesPostSearchPanel{
    margin:12px 0 14px;
    padding:11px 12px;
    border:1px solid #e2e8f0;
    border-radius:4px;
    background:#f8fafc;
    box-shadow:none;
}

/* v0.2.165 — date-group pagination + neutral marketplace image fallback. */
.general-post-image-placeholder{
    background:#f1f5f9 !important;
    color:#94a3b8 !important;
}
.general-post-image-placeholder .general-post-image-icon{
    width:42px;
    height:42px;
    flex:0 0 42px;
    fill:currentColor;
}
.review-content-photos .general-post-image-placeholder{
    width:180px;
    max-width:100%;
    aspect-ratio:4/3;
    min-height:135px;
    border:1px solid #dbe3ee;
    border-radius:4px;
}
.post-date-pagination{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    margin:12px 0 2px;
    padding:8px 0 8px;
    border-top:1px solid #e2e8f0;
    color:#64748b;
    font-size:9px;
    font-weight:800;
}
.post-date-pagination button{
    min-height:30px;
    padding:0 11px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#334155;
    cursor:pointer;
    font:inherit;
    font-weight:800;
}
.post-date-pagination button:not(:disabled):hover,
.post-date-pagination button:not(:disabled):focus-visible{
    border-color:#2563eb;
    color:#1d4ed8;
    outline:none;
}
.post-date-pagination button:disabled{
    opacity:.45;
    cursor:default;
    pointer-events:none;
}
.post-date-pagination strong{
    color:#0f172a;
}

/* v0.2.170 — Daily Review chart rating uses a fixed SVG polygon star and an
 * inset 1–5 rating track. This keeps five-star markers away from the plot edge
 * and prevents font-dependent star distortion. Admin chart only. */
.admin-sales-activity-panel .sales-chart-review-trend-point{
    pointer-events:none;
}

/* v0.2.171 — Daily Review markers use a fixed-size HTML overlay instead of
 * SVG polygon geometry. This prevents preserveAspectRatio="none" from
 * compressing/stretching the star. Scope: Admin Sales Activity chart only. */
.admin-sales-activity-panel .sales-chart-review-markers{
    position:absolute;
    top:0;
    left:0;
    z-index:9;
    pointer-events:none;
    overflow:visible;
}
.admin-sales-activity-panel .sales-chart-review-marker{
    position:absolute;
    width:16px;
    height:16px;
    display:block;
    transform:translate(-50%,-50%);
    background:#d97706;
    clip-path:polygon(50% 0%,61% 34%,98% 34%,68% 55%,79% 91%,50% 70%,21% 91%,32% 55%,2% 34%,39% 34%);
    filter:drop-shadow(0 0 1px #fff);
}


/* v0.2.172 — Daily Review marker overlay follows the rendered chart width.
 * The chart may be measured while hidden, so never freeze marker overlay width
 * to the pre-display pixel width. Bar/marker X alignment stays percentage-based. */
.admin-sales-activity-panel .sales-chart-review-markers{
    width:100% !important;
    right:0;
}

/* v0.2.173 — Admin Daily Review marker: exact bar-slot alignment plus the
 * requested high-contrast outline (black outside, white inside, orange fill). */
.admin-sales-activity-panel .sales-chart-day-plot > .sales-chart-review-marker{
    position:absolute !important;
    left:50% !important;
    z-index:12 !important;
    width:19px !important;
    height:19px !important;
    display:block !important;
    transform:translate(-50%,-50%) !important;
    background:transparent !important;
    clip-path:none !important;
    filter:none !important;
    overflow:visible !important;
    pointer-events:none !important;
}
.admin-sales-activity-panel .sales-chart-day-plot > .sales-chart-review-marker svg{
    width:19px !important;
    height:19px !important;
    display:block !important;
    overflow:visible !important;
}
.admin-sales-activity-panel .sales-chart-review-marker-black{
    fill:#d97706;
    stroke:#111827;
    stroke-width:5;
    stroke-linejoin:round;
    paint-order:stroke fill;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .sales-chart-review-marker-white{
    fill:#d97706;
    stroke:#fff;
    stroke-width:2.6;
    stroke-linejoin:round;
    paint-order:stroke fill;
    vector-effect:non-scaling-stroke;
}
.admin-sales-activity-panel .sales-chart-review-marker-fill{
    fill:#d97706;
    stroke:none;
}



/* v0.2.174 — Post Review must always reserve the listing-image slot.
 * EN: If no image exists, show the neutral "No image" placeholder in the same
 * media column instead of hiding the entire media column.
 * 中文：Post Review 没有图片时也必须保留图片位置并显示 No image 占位图，
 * 不能因为 no-photo 状态把整个图片栏隐藏。 */
.review-product-detail.no-photo .review-product-media{
    display:block !important;
}
.review-product-detail.no-photo .review-product-info{
    flex-basis:auto !important;
}
.review-product-media .review-content-photos .general-post-image-placeholder{
    width:100% !important;
    max-width:none !important;
    height:auto !important;
    min-height:135px;
    aspect-ratio:4 / 3;
    display:flex !important;
}

/* v0.2.177 — Sales-card Daily Review is an inline status, not a button box.
   EN: A saved rating renders exactly N gold stars (4 means four stars, not five
   outlined slots). No-review renders a compact Add Review text action. The
   rating keeps its own first row; Complete + compact Settings stay on row two.
   中文：Sales 卡片上的 Daily Review 不再显示按钮框。已保存评分只显示实际数量的
   金色星星（4 星就只显示 4 个）；未评分显示紧凑的 Add Review 文本。第一行独占
   Review，第二行保持 Complete + 紧凑 Settings，并兼顾窄屏。 */
.sales-progress-card .sales-card-admin-actions.sales-daily-workflow{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    align-items:stretch !important;
    width:100%;
    min-width:0;
    gap:5px !important;
}
.sales-progress-card .sales-daily-review-row{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    min-width:0;
    min-height:26px;
}
.sales-progress-card .sales-daily-review-row .sales-daily-review{
    appearance:none;
    -webkit-appearance:none;
    display:flex;
    align-items:center;
    justify-content:flex-start;
    width:100% !important;
    min-width:0;
    min-height:26px;
    margin:0;
    padding:2px 1px;
    border:0 !important;
    border-color:transparent !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    color:#2563eb;
    cursor:pointer;
    font-size:9px;
    font-weight:800;
    line-height:1.2;
    white-space:nowrap;
    overflow:visible;
    text-overflow:clip;
    text-align:left;
}
.sales-progress-card .sales-daily-review-row .sales-daily-review:hover,
.sales-progress-card .sales-daily-review-row .sales-daily-review:focus,
.sales-progress-card .sales-daily-review-row .sales-daily-review:focus-visible{
    border:0 !important;
    border-color:transparent !important;
    background:transparent !important;
    box-shadow:none !important;
    outline:none;
}
.sales-progress-card .sales-card-review-inline{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:10px;
    width:100%;
    min-width:0;
    min-height:16px;
}
.sales-progress-card .sales-card-review-stars{
    display:inline-flex;
    align-items:flex-end;
    justify-content:flex-start;
    gap:2px;
    min-width:0;
    min-height:16px;
    line-height:1;
    white-space:nowrap;
    text-decoration:none !important;
    flex:0 0 auto;
}
.sales-progress-card .sales-card-review-star{
    display:inline-block;
    width:auto;
    height:auto;
    flex:0 0 auto;
    margin:0;
    padding:0;
    color:#f59e0b;
    font-style:normal;
    font-size:16px;
    font-weight:900;
    line-height:1;
    text-align:center;
    -webkit-text-stroke:0 !important;
    text-shadow:none !important;
    filter:none !important;
    transform:none;
}
.sales-progress-card .sales-card-review-stars.is-empty{
    opacity:.95;
}
.sales-progress-card .sales-card-review-star.is-empty{
    color:transparent;
    font-size:16px;
    font-weight:300;
    line-height:1;
    -webkit-text-stroke:1px #f59e0b !important;
    text-stroke:1px #f59e0b;
}
.sales-progress-card .sales-card-review-hint{
    display:inline-flex;
    align-items:flex-end;
    align-self:flex-end;
    min-width:0;
    min-height:16px;
    margin-left:auto;
    color:#667085;
    font-size:11px;
    font-weight:700;
    line-height:1;
    text-align:right;
    white-space:nowrap;
    text-decoration:none;
    text-underline-offset:2px;
}
.sales-progress-card .sales-card-review-hint.is-empty{
    text-align:left;
    margin-left:0;
}
.sales-progress-card .sales-daily-review-row .sales-daily-review:hover .sales-card-review-hint,
.sales-progress-card .sales-daily-review-row .sales-daily-review:focus .sales-card-review-hint,
.sales-progress-card .sales-daily-review-row .sales-daily-review:focus-visible .sales-card-review-hint{
    text-decoration:underline;
}
.sales-progress-card .sales-card-secondary-actions{
    display:grid;
    grid-template-columns:minmax(0,1fr) max-content;
    align-items:stretch;
    gap:5px;
    width:100%;
    min-width:0;
}
.sales-progress-card .sales-card-secondary-actions .sales-daily-complete-group{
    display:block;
    width:100%;
    min-width:0;
}
.sales-progress-card .sales-card-secondary-actions .sales-daily-complete{
    width:100%;
    min-width:0;
    min-height:34px;
}
.sales-progress-card .sales-card-secondary-actions .sales-person-settings-button{
    width:auto !important;
    min-width:68px !important;
    max-width:76px !important;
    min-height:34px;
    padding:0 8px !important;
    white-space:nowrap;
    overflow:hidden;
    overflow-wrap:normal;
}
.sales-progress-card .sales-card-secondary-actions .sales-person-settings-button span{
    display:inline;
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}
.sales-progress-card .sales-card-secondary-actions .sales-person-settings-button svg{
    width:13px;
    height:13px;
    flex:0 0 13px;
}

@media(max-width:599px){
    .sales-progress-card .sales-card-admin-actions.sales-daily-workflow{
        grid-template-columns:minmax(0,1fr) !important;
        gap:4px !important;
    }
    .sales-progress-card .sales-daily-review-row{
        min-height:24px;
    }
    .sales-progress-card .sales-daily-review-row .sales-daily-review{
        min-height:24px;
        padding:1px 0;
        font-size:8px;
    }
    .sales-progress-card .sales-card-review-inline{
        align-items:flex-end;
        gap:8px;
    }
    .sales-progress-card .sales-card-review-stars{
        gap:2px;
    }
    .sales-progress-card .sales-card-review-star{
        font-size:14px;
    }
    .sales-progress-card .sales-card-review-star.is-empty{
        font-size:14px;
    }
    .sales-progress-card .sales-card-review-hint{
        font-size:10px;
    }
    .sales-progress-card .sales-card-secondary-actions{
        grid-template-columns:minmax(0,1fr) 32px;
        gap:4px;
    }
    .sales-progress-card .sales-card-secondary-actions .sales-daily-complete{
        min-height:30px;
        padding:3px 5px;
    }
    .sales-progress-card .sales-card-secondary-actions .sales-person-settings-button{
        width:32px !important;
        min-width:32px !important;
        max-width:32px !important;
        min-height:30px;
        padding:0 !important;
    }
    .sales-progress-card .sales-card-secondary-actions .sales-person-settings-button span{
        display:none;
    }
}

@media(max-width:360px){
    .sales-progress-card .sales-card-review-inline{
        align-items:flex-end;
        gap:6px;
    }
    .sales-progress-card .sales-card-review-stars{
        gap:1px;
    }
    .sales-progress-card .sales-card-review-star{
        font-size:13px;
    }
    .sales-progress-card .sales-card-review-hint{
        font-size:9px;
    }
}

@media(pointer:coarse){
    .sales-progress-card .sales-daily-review-row .sales-daily-review{
        min-height:44px;
        padding-left:6px;
        padding-right:6px;
    }
    .sales-progress-card .sales-card-secondary-actions .sales-daily-complete{
        min-height:44px;
    }
    .sales-progress-card .sales-card-secondary-actions .sales-person-settings-button{
        min-height:44px;
    }
}
@media(pointer:coarse) and (max-width:599px){
    .sales-progress-card .sales-card-secondary-actions{
        grid-template-columns:minmax(0,1fr) 44px;
    }
    .sales-progress-card .sales-card-secondary-actions .sales-person-settings-button{
        width:44px !important;
        min-width:44px !important;
        max-width:44px !important;
    }
}


/* v0.2.191 — Post Review loading must not expose stale post metadata/actions.
   Keep the header footprint stable, but hide response-dependent title/subtitle,
   Refresh/Open original, and previous/next navigation until the new review is ready. */
.review-modal.is-review-loading .review-modal-head > div:first-child,
.review-modal.is-review-loading .review-modal-refresh,
.review-modal.is-review-loading .review-modal-original,
.review-modal.is-review-loading .review-post-nav-overlay{
    visibility:hidden !important;
    pointer-events:none !important;
}
.review-modal.is-review-loading .review-modal-head .icon-close{
    visibility:visible !important;
    pointer-events:auto !important;
}


/* v0.2.192 — Centered animated Post Review loading state.
   The modal height remains held by JS; this loader stays centered in that area. */
.review-modal-loading{
    flex:1 1 auto;
    min-height:0;
    overflow:hidden;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:10px;
    padding:24px;
    text-align:center;
    color:#64748b;
    font-size:10px;
    font-weight:800;
}
.review-modal-loading::before{
    content:"";
    width:28px;
    height:28px;
    box-sizing:border-box;
    border:3px solid #dbe7ef;
    border-top-color:#36aec9;
    border-radius:50%;
    animation:cdsp-review-loading-spin .72s linear infinite;
}
.review-modal-loading.hidden{
    display:none;
}
@keyframes cdsp-review-loading-spin{
    to{
        transform:rotate(360deg);
    }
}
@media(prefers-reduced-motion:reduce){
    .review-modal-loading::before{
        animation-duration:1.4s;
    }
}


/* v0.2.193 — Loading is one clean canvas.
   Remove the visual header bar from layout while loading; keep only Close floating
   at the top-right. The centered loader can now occupy the full held modal height. */
.review-modal.is-review-loading .review-modal-head{
    position:absolute;
    inset:0 0 auto 0;
    z-index:5;
    padding:0;
    border-bottom:0 !important;
    background:transparent !important;
    pointer-events:none;
}
.review-modal.is-review-loading .review-modal-head > div:first-child,
.review-modal.is-review-loading .review-modal-refresh,
.review-modal.is-review-loading .review-modal-original{
    display:none !important;
}
.review-modal.is-review-loading .review-modal-head-actions{
    margin:0;
}
.review-modal.is-review-loading .review-modal-head .icon-close{
    position:absolute;
    top:16px;
    right:17px;
    margin:0;
    visibility:visible !important;
    pointer-events:auto !important;
    background:#fff;
}


/* v0.2.204 — Image loading is single-Post only.
   Sales Post List cards do not auto-refresh or display image-loading spinners. */
.review-image-refresh-loading{
    width:180px;
    max-width:100%;
    aspect-ratio:4/3;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:9px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f1f5f9;
    color:#64748b;
    font-size:9px;
    font-weight:800;
    text-align:center;
}
.review-image-refresh-spinner{
    width:30px;
    height:30px;
    box-sizing:border-box;
    border:3px solid #dbe7ef;
    border-top-color:#36aec9;
    border-radius:50%;
    animation:cdsp-review-loading-spin .72s linear infinite;
}
@media(max-width:460px){
    .review-image-refresh-loading{
        width:100%;
        max-width:220px;
        min-height:132px;
        aspect-ratio:4/3;
    }
    .review-image-refresh-spinner{
        width:26px;
        height:26px;
    }
}
@media(prefers-reduced-motion:reduce){
    .review-image-refresh-spinner{
        animation-duration:1.4s;
    }
}


/* v0.2.208 — Compact responsive Admin Work Calendar.
   Weekend controls and Add Holiday share one row on wide screens.
   Holiday list uses the full panel width below. */
#work-calendar .work-calendar-tools-grid{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:10px;
    margin-top:12px;
}
#work-calendar .work-calendar-tool-card{
    min-width:0;
    padding:10px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
#work-calendar .work-calendar-tool-head{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:8px;
    margin-bottom:8px;
}
#work-calendar .work-calendar-tool-head strong{
    color:#172033;
    font-size:11px;
    line-height:1.25;
}
#work-calendar .work-calendar-tool-head small{
    min-width:0;
    overflow:hidden;
    color:#667085;
    font-size:9px;
    line-height:1.3;
    text-align:right;
    text-overflow:ellipsis;
    white-space:nowrap;
}
#work-calendar .work-calendar-weekend-form{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px;
    align-items:center;
    margin:0;
}
#work-calendar .work-calendar-weekend-options{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:6px;
    min-width:0;
}
#work-calendar .work-calendar-toggle{
    display:flex;
    align-items:center;
    gap:7px;
    min-width:0;
    min-height:38px;
    padding:7px 8px;
    margin:0;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f8fafc;
    cursor:pointer;
}
#work-calendar .work-calendar-toggle input{
    width:15px;
    height:15px;
    flex:0 0 15px;
    margin:0;
}
#work-calendar .work-calendar-toggle>span{
    min-width:0;
}
#work-calendar .work-calendar-toggle strong{
    display:block;
    overflow:hidden;
    color:#172033;
    font-size:10px;
    line-height:1.25;
    text-overflow:ellipsis;
    white-space:nowrap;
}
#work-calendar .work-calendar-save{
    min-height:38px;
    margin:0;
    white-space:nowrap;
}
#work-calendar .work-calendar-holiday-add{
    display:grid;
    grid-template-columns:minmax(126px,.72fr) minmax(150px,1fr) auto;
    gap:6px;
    align-items:end;
    margin:0;
}
#work-calendar .work-calendar-holiday-add label{
    display:grid;
    gap:3px;
    min-width:0;
    margin:0;
    color:#344054;
    font-size:9px;
    font-weight:700;
}
#work-calendar .work-calendar-holiday-add input{
    width:100%;
    min-width:0;
    min-height:38px;
    margin:0;
}
#work-calendar .work-calendar-holiday-add .btn{
    min-height:38px;
    margin:0;
    white-space:nowrap;
}
#work-calendar .work-calendar-holidays{
    display:grid;
    gap:8px;
    width:100%;
    margin-top:12px;
    padding-top:10px;
    border-top:1px solid #e4e7ec;
}
#work-calendar .work-calendar-subhead{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}
#work-calendar .work-calendar-subhead>div{
    display:flex;
    align-items:baseline;
    gap:8px;
    min-width:0;
}
#work-calendar .work-calendar-subhead strong{
    flex:0 0 auto;
    color:#172033;
    font-size:11px;
}
#work-calendar .work-calendar-subhead small{
    min-width:0;
    overflow:hidden;
    color:#667085;
    font-size:9px;
    text-overflow:ellipsis;
    white-space:nowrap;
}
#work-calendar .work-calendar-subhead>b{
    min-width:26px;
    height:22px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#f8fafc;
    color:#344054;
    font-size:9px;
}
#work-calendar .work-calendar-holiday-list{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
    gap:7px;
    width:100%;
}
#work-calendar .work-calendar-holiday-card{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    min-width:0;
    padding:8px 9px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
#work-calendar .work-calendar-holiday-card>div{
    display:grid;
    gap:1px;
    min-width:0;
}
#work-calendar .work-calendar-holiday-card strong{
    color:#172033;
    font-size:10px;
}
#work-calendar .work-calendar-holiday-card span{
    overflow:hidden;
    color:#667085;
    font-size:9px;
    text-overflow:ellipsis;
    white-space:nowrap;
}
#work-calendar .work-calendar-holiday-card form{
    flex:0 0 auto;
    margin:0;
}
#work-calendar .work-calendar-empty{
    grid-column:1/-1;
}

/* Tablet: tools stack, but each tool remains compact horizontally. */
@media(max-width:900px){
    #work-calendar .work-calendar-tools-grid{
        grid-template-columns:1fr;
    }
    #work-calendar .work-calendar-tool-head small{
        max-width:60%;
    }
}

/* Narrow tablet / large phone: keep inputs usable without overflow. */
@media(max-width:640px){
    #work-calendar .work-calendar-tool-head{
        display:grid;
        gap:2px;
    }
    #work-calendar .work-calendar-tool-head small{
        max-width:none;
        text-align:left;
        white-space:normal;
    }
    #work-calendar .work-calendar-weekend-form{
        grid-template-columns:1fr;
    }
    #work-calendar .work-calendar-save{
        width:100%;
    }
    #work-calendar .work-calendar-holiday-add{
        grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    }
    #work-calendar .work-calendar-holiday-add .work-calendar-add-button{
        grid-column:1/-1;
        width:100%;
    }
    #work-calendar .work-calendar-subhead>div{
        display:grid;
        gap:2px;
    }
    #work-calendar .work-calendar-subhead small{
        white-space:normal;
    }
}

/* Phone: one control per row. */
@media(max-width:430px){
    #work-calendar .work-calendar-weekend-options,
    #work-calendar .work-calendar-holiday-add,
    #work-calendar .work-calendar-holiday-list{
        grid-template-columns:1fr;
    }
    #work-calendar .work-calendar-holiday-add .work-calendar-add-button{
        grid-column:auto;
    }
}


/* v0.2.209 — Work Calendar checkbox and save-button stabilization.
   Fully reset generic input styling inside the weekend toggles. */
#work-calendar .work-calendar-toggle input[type="checkbox"]{
    -webkit-appearance:none;
    appearance:none;
    position:relative;
    width:16px!important;
    min-width:16px!important;
    max-width:16px!important;
    height:16px!important;
    min-height:16px!important;
    max-height:16px!important;
    flex:0 0 16px!important;
    padding:0!important;
    margin:0!important;
    border:1px solid #98a2b3!important;
    border-radius:3px!important;
    background:#fff!important;
    box-shadow:none!important;
    outline:none!important;
    cursor:pointer;
}
#work-calendar .work-calendar-toggle input[type="checkbox"]:checked{
    border-color:#2563eb!important;
    background:#2563eb!important;
}
#work-calendar .work-calendar-toggle input[type="checkbox"]:checked::after{
    content:"";
    position:absolute;
    left:4px;
    top:1px;
    width:5px;
    height:9px;
    border:solid #fff;
    border-width:0 2px 2px 0;
    transform:rotate(45deg);
}
#work-calendar .work-calendar-toggle input[type="checkbox"]:focus-visible{
    outline:2px solid rgba(37,99,235,.24)!important;
    outline-offset:2px!important;
    box-shadow:none!important;
}

/* The global .btn:active rule moves buttons by 1px.
   Disable that motion for calendar actions so Save does not visually "shake". */
#work-calendar .work-calendar-save,
#work-calendar .work-calendar-save:hover,
#work-calendar .work-calendar-save:active,
#work-calendar .work-calendar-save:focus{
    transform:none!important;
}
#work-calendar .work-calendar-save{
    min-width:150px;
}

/* Keep the fixed save-button width safe on narrow screens. */
@media(max-width:640px){
    #work-calendar .work-calendar-save{
        width:100%;
        min-width:0;
    }
}


/* v0.2.210 — Small hover-style Work Calendar save confirmation. */
.work-calendar-save-popup{
    position:fixed;
    z-index:10050;
    max-width:min(240px,calc(100vw - 16px));
    padding:6px 9px;
    border:1px solid #d0d5dd;
    border-radius:4px;
    background:#fff;
    color:#344054;
    font-size:10px;
    font-weight:700;
    line-height:1.25;
    white-space:nowrap;
    pointer-events:none;
    opacity:0;
    transform:translateY(3px);
    transition:opacity .14s ease,transform .14s ease;
}
.work-calendar-save-popup::after{
    content:"";
    position:absolute;
    left:50%;
    bottom:-5px;
    width:8px;
    height:8px;
    border-right:1px solid #d0d5dd;
    border-bottom:1px solid #d0d5dd;
    background:#fff;
    transform:translateX(-50%) rotate(45deg);
}
.work-calendar-save-popup.is-visible{
    opacity:1;
    transform:translateY(0);
}
.work-calendar-save-popup.is-error{
    border-color:#f1b8b5;
    color:#b42318;
}
.work-calendar-save-popup.is-error::after{
    border-right-color:#f1b8b5;
    border-bottom-color:#f1b8b5;
}
@media(max-width:430px){
    .work-calendar-save-popup{
        white-space:normal;
        text-align:center;
    }
}

/* v0.2.211 — Work Calendar desktop vertical alignment.
   The two side-by-side tool cards share one row height and both control rows
   sit on the same baseline. Responsive layouts remain compact. */
@media(min-width:901px){
    #work-calendar .work-calendar-tools-grid{
        align-items:stretch;
    }
    #work-calendar .work-calendar-tool-card{
        display:grid;
        grid-template-rows:auto 1fr;
        height:100%;
    }
    #work-calendar .work-calendar-weekend-form,
    #work-calendar .work-calendar-holiday-add{
        align-self:end;
    }
}

/* Tablet: once the two cards stack, remove equal-height coupling and keep
   each section naturally compact. */
@media(max-width:900px){
    #work-calendar .work-calendar-tool-card{
        display:block;
        height:auto;
    }
}

/* Narrow responsive safeguards: no horizontal overflow, buttons/inputs stay
   inside their card, and the existing 640/430 column changes remain intact. */
@media(max-width:640px){
    #work-calendar .work-calendar-weekend-options,
    #work-calendar .work-calendar-holiday-add{
        min-width:0;
        width:100%;
    }
    #work-calendar .work-calendar-holiday-add input,
    #work-calendar .work-calendar-holiday-add .btn,
    #work-calendar .work-calendar-save{
        max-width:100%;
    }
}


/* v0.2.217 — Daily Review stars use identical SVG geometry.
   Empty star = transparent center + 1px orange border; no font baseline hacks. */
.sales-progress-card .sales-card-review-stars{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    gap:2px!important;
    min-width:0;
    min-height:16px!important;
    line-height:0!important;
    white-space:nowrap;
    flex:0 0 auto;
}
.sales-progress-card .sales-card-review-star{
    display:block!important;
    width:16px!important;
    min-width:16px!important;
    max-width:16px!important;
    height:16px!important;
    min-height:16px!important;
    max-height:16px!important;
    flex:0 0 16px!important;
    margin:0!important;
    padding:0!important;
    overflow:visible!important;
    line-height:0!important;
    vertical-align:middle!important;
    transform:none!important;
}
.sales-progress-card .sales-card-review-star path{
    fill:#f59e0b;
    stroke:#f59e0b;
    stroke-width:0;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}
.sales-progress-card .sales-card-review-star.is-empty path{
    fill:transparent;
    stroke:#f59e0b;
    stroke-width:1px;
    stroke-linejoin:round;
    vector-effect:non-scaling-stroke;
}

@media(max-width:599px){
    .sales-progress-card .sales-card-review-stars{
        min-height:14px!important;
    }
    .sales-progress-card .sales-card-review-star{
        width:14px!important;
        min-width:14px!important;
        max-width:14px!important;
        height:14px!important;
        min-height:14px!important;
        max-height:14px!important;
        flex-basis:14px!important;
    }
}


/* v0.2.218 — Unified Settings save/action feedback.
   Fixed right-side toast: never participates in layout, so Settings panels
   cannot be pushed down after Save/Add/Delete/Update actions. */
.settings-page > .container > .notice,
.settings-page .settings-action-toast,
.settings-action-toast.settings-runtime-toast{
    position:fixed!important;
    top:68px!important;
    right:14px!important;
    left:auto!important;
    bottom:auto!important;
    z-index:12000!important;
    width:auto!important;
    min-width:180px;
    max-width:min(340px,calc(100vw - 28px))!important;
    margin:0!important;
    padding:8px 10px!important;
    border:1px solid #d0d5dd;
    border-radius:4px!important;
    background:#fff;
    color:#344054;
    font-size:10px;
    font-weight:700;
    line-height:1.35;
    box-sizing:border-box;
    pointer-events:none;
    opacity:0;
    transform:translateX(8px);
    transition:opacity .14s ease,transform .14s ease;
    box-shadow:none!important;
}
.settings-page > .container > .notice.is-visible,
.settings-page .settings-action-toast.is-visible,
.settings-action-toast.settings-runtime-toast.is-visible{
    opacity:1;
    transform:translateX(0);
}
.settings-page > .container > .notice.ok,
.settings-page .settings-action-toast.ok,
.settings-action-toast.settings-runtime-toast.ok{
    border-color:#86d6a2;
    background:#f6fff8;
    color:#166534;
}
.settings-page > .container > .notice.bad,
.settings-page .settings-action-toast.bad,
.settings-action-toast.settings-runtime-toast.bad{
    border-color:#f1b8b5;
    background:#fff8f7;
    color:#b42318;
}

/* Legacy Settings live notices no longer occupy panel space. */
.settings-page .provider-page-notice,
.settings-page .sales-location-notice,
.settings-page .sales-location-live-notice{
    margin:0!important;
}

/* Calendar now uses the same global right-side toast; disable old local popup. */
.work-calendar-save-popup{
    display:none!important;
}

/* Responsive: keep the toast inside the viewport on narrow screens. */
@media(max-width:640px){
    .settings-page > .container > .notice,
    .settings-page .settings-action-toast,
    .settings-action-toast.settings-runtime-toast{
        top:58px!important;
        right:10px!important;
        left:10px!important;
        width:auto!important;
        min-width:0!important;
        max-width:none!important;
    }
}


/* v0.2.220 — Settings save buttons must remain visually stationary. */
#application-settings .application-setting-save,
#application-settings .application-setting-save:hover,
#application-settings .application-setting-save:focus,
#application-settings .application-setting-save:active,
#verification-locks .verification-recovery-setting .btn,
#verification-locks .verification-recovery-setting .btn:hover,
#verification-locks .verification-recovery-setting .btn:focus,
#verification-locks .verification-recovery-setting .btn:active{
    transform:none!important;
}

/* v0.2.239 — Sales missing-image recovery stays inside the image area only. */
.sales-self-post-placeholder .sales-post-image-retry-inline,
.general-post-image-placeholder .sales-post-image-retry-inline,
.sales-post-image-retry-icon{
    width:30px;
    height:30px;
    min-width:30px;
    min-height:30px;
    padding:0;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#334155;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
}
.sales-self-post-placeholder .sales-post-image-retry-inline svg,
.general-post-image-placeholder .sales-post-image-retry-inline svg,
.sales-post-image-retry-icon svg{
    width:15px;
    height:15px;
    fill:currentColor;
    flex:0 0 auto;
}
.sales-self-post-placeholder .sales-post-image-retry-inline:hover,
.general-post-image-placeholder .sales-post-image-retry-inline:hover,
.sales-post-image-retry-icon:hover{
    border-color:#94a3b8;
    background:#f8fafc;
}
.sales-self-post-placeholder .sales-post-image-retry-inline:disabled,
.general-post-image-placeholder .sales-post-image-retry-inline:disabled,
.sales-post-image-retry-icon:disabled{
    opacity:.62;
    cursor:wait;
}

/* v0.2.240 — icon-only image retry; spin while the existing request is busy. */
.sales-post-image-retry-inline.is-loading svg,
.sales-post-image-retry-icon.is-loading svg{
    animation:sales-post-image-retry-spin .8s linear infinite;
}
@keyframes sales-post-image-retry-spin{
    to{transform:rotate(360deg);}
}

/* v0.2.241 — missing-image retry is a larger, centered, frame-free icon.
 * Presentation only: no retry/queue/provider behavior is changed. */
.sales-self-post-placeholder,
.general-post-image-placeholder,
#salesPostDetailNoImage{
    position:relative;
}

/* List/card missing-image retry: pure icon centered in the media area. */
.sales-self-post-placeholder .sales-post-image-retry-inline,
.general-post-image-placeholder .sales-post-image-retry-inline{
    position:absolute;
    left:50%;
    top:50%;
    z-index:2;
    width:44px;
    height:44px;
    min-width:44px;
    min-height:44px;
    margin:0;
    padding:0;
    border:0!important;
    border-radius:0;
    background:transparent!important;
    box-shadow:none!important;
    color:#475569;
    transform:translate(-50%,-50%);
    display:flex;
    align-items:center;
    justify-content:center;
}
.sales-self-post-placeholder .sales-post-image-retry-inline svg,
.general-post-image-placeholder .sales-post-image-retry-inline svg{
    width:27px;
    height:27px;
}
.sales-self-post-placeholder .sales-post-image-retry-inline:hover,
.sales-self-post-placeholder .sales-post-image-retry-inline:focus,
.sales-self-post-placeholder .sales-post-image-retry-inline:active,
.general-post-image-placeholder .sales-post-image-retry-inline:hover,
.general-post-image-placeholder .sales-post-image-retry-inline:focus,
.general-post-image-placeholder .sales-post-image-retry-inline:active{
    border:0!important;
    background:transparent!important;
    box-shadow:none!important;
    color:#0f172a;
    outline:none;
}

/* When Retry is present, keep the small "No image"/platform label above the
 * centered icon and remove the older decorative placeholder glyph so the
 * center stays visually clean. */
.sales-self-post-placeholder:has(> .sales-post-image-retry-inline) > .platform-logo,
.general-post-image-placeholder:has(> .sales-post-image-retry-inline) > .general-post-image-icon{
    display:none;
}
.sales-self-post-placeholder:has(> .sales-post-image-retry-inline) > span:not(.platform-logo),
.general-post-image-placeholder:has(> .sales-post-image-retry-inline) > span{
    position:absolute;
    left:8px;
    right:8px;
    top:calc(50% - 35px);
    margin:0;
    text-align:center;
    line-height:1.2;
    pointer-events:none;
}

/* Sales Post Detail missing-image retry: same frame-free icon, centered. */
#salesPostImageRetry.sales-post-image-retry-icon{
    position:absolute;
    left:50%;
    top:50%;
    z-index:2;
    width:56px;
    height:56px;
    min-width:56px;
    min-height:56px;
    margin:0;
    padding:0;
    border:0!important;
    border-radius:0;
    background:transparent!important;
    box-shadow:none!important;
    color:#475569;
    transform:translate(-50%,-50%);
    display:flex;
    align-items:center;
    justify-content:center;
}
#salesPostImageRetry.sales-post-image-retry-icon.hidden{
    display:none;
}
#salesPostImageRetry.sales-post-image-retry-icon svg{
    width:35px;
    height:35px;
}
#salesPostImageRetry.sales-post-image-retry-icon:hover,
#salesPostImageRetry.sales-post-image-retry-icon:focus,
#salesPostImageRetry.sales-post-image-retry-icon:active{
    border:0!important;
    background:transparent!important;
    box-shadow:none!important;
    color:#0f172a;
    outline:none;
}
#salesPostDetailNoImageMessage{
    position:relative;
    z-index:1;
    max-width:82%;
    margin:0;
    text-align:center;
    line-height:1.35;
    transform:translateY(-43px);
}

/* Responsive touch targets stay usable while the visual icon scales with the
 * smaller image area. */
@media(max-width:720px){
    .sales-self-post-placeholder .sales-post-image-retry-inline,
    .general-post-image-placeholder .sales-post-image-retry-inline{
        width:42px;
        height:42px;
        min-width:42px;
        min-height:42px;
    }
    .sales-self-post-placeholder .sales-post-image-retry-inline svg,
    .general-post-image-placeholder .sales-post-image-retry-inline svg{
        width:25px;
        height:25px;
    }
    #salesPostImageRetry.sales-post-image-retry-icon{
        width:52px;
        height:52px;
        min-width:52px;
        min-height:52px;
    }
    #salesPostImageRetry.sales-post-image-retry-icon svg{
        width:32px;
        height:32px;
    }
    #salesPostDetailNoImageMessage{
        max-width:88%;
        transform:translateY(-39px);
    }
}
@media(max-width:480px){
    .sales-self-post-placeholder .sales-post-image-retry-inline,
    .general-post-image-placeholder .sales-post-image-retry-inline{
        width:40px;
        height:40px;
        min-width:40px;
        min-height:40px;
    }
    .sales-self-post-placeholder .sales-post-image-retry-inline svg,
    .general-post-image-placeholder .sales-post-image-retry-inline svg{
        width:24px;
        height:24px;
    }
    #salesPostImageRetry.sales-post-image-retry-icon{
        width:48px;
        height:48px;
        min-width:48px;
        min-height:48px;
    }
    #salesPostImageRetry.sales-post-image-retry-icon svg{
        width:30px;
        height:30px;
    }
    #salesPostDetailNoImageMessage{
        max-width:92%;
        transform:translateY(-37px);
    }
}

/* v0.2.242 — center the Sales missing-image reload glyph exactly and enlarge it.
 * Presentation only. No retry, queue, provider, controller, search, filter, or data logic changes. */
.sales-self-post-placeholder .sales-post-image-retry-inline,
.general-post-image-placeholder .sales-post-image-retry-inline{
    position:absolute!important;
    inset:0!important;
    left:0!important;
    top:0!important;
    right:0!important;
    bottom:0!important;
    width:60px!important;
    height:60px!important;
    min-width:60px!important;
    min-height:60px!important;
    margin:auto!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    appearance:none!important;
    -webkit-appearance:none!important;
    transform:none!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:0!important;
    font-size:0!important;
    color:#475569!important;
}
.sales-self-post-placeholder .sales-post-image-retry-inline svg,
.general-post-image-placeholder .sales-post-image-retry-inline svg{
    width:38px!important;
    height:38px!important;
    display:block!important;
    margin:0!important;
}
.sales-self-post-placeholder .sales-post-image-retry-inline:hover,
.sales-self-post-placeholder .sales-post-image-retry-inline:focus,
.sales-self-post-placeholder .sales-post-image-retry-inline:active,
.general-post-image-placeholder .sales-post-image-retry-inline:hover,
.general-post-image-placeholder .sales-post-image-retry-inline:focus,
.general-post-image-placeholder .sales-post-image-retry-inline:active{
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    transform:none!important;
    color:#0f172a!important;
}

/* Detail modal uses the same visual language, with a larger glyph. */
#salesPostImageRetry.sales-post-image-retry-icon{
    position:absolute!important;
    inset:0!important;
    left:0!important;
    top:0!important;
    right:0!important;
    bottom:0!important;
    width:72px!important;
    height:72px!important;
    min-width:72px!important;
    min-height:72px!important;
    margin:auto!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    appearance:none!important;
    -webkit-appearance:none!important;
    transform:none!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:0!important;
    font-size:0!important;
    color:#475569!important;
}
#salesPostImageRetry.sales-post-image-retry-icon.hidden{
    display:none!important;
}
#salesPostImageRetry.sales-post-image-retry-icon svg{
    width:48px!important;
    height:48px!important;
    display:block!important;
    margin:0!important;
}
#salesPostImageRetry.sales-post-image-retry-icon:hover,
#salesPostImageRetry.sales-post-image-retry-icon:focus,
#salesPostImageRetry.sales-post-image-retry-icon:active{
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    transform:none!important;
    color:#0f172a!important;
}

/* Keep the label above the centered icon instead of affecting centering. */
.sales-self-post-placeholder:has(> .sales-post-image-retry-inline) > span:not(.platform-logo),
.general-post-image-placeholder:has(> .sales-post-image-retry-inline) > span{
    top:calc(50% - 43px)!important;
}
#salesPostDetailNoImageMessage{
    transform:translateY(-58px)!important;
}

/* Responsive: keep a generous touch target, scale only the visible glyph. */
@media(max-width:720px){
    .sales-self-post-placeholder .sales-post-image-retry-inline,
    .general-post-image-placeholder .sales-post-image-retry-inline{
        width:56px!important;
        height:56px!important;
        min-width:56px!important;
        min-height:56px!important;
    }
    .sales-self-post-placeholder .sales-post-image-retry-inline svg,
    .general-post-image-placeholder .sales-post-image-retry-inline svg{
        width:34px!important;
        height:34px!important;
    }
    #salesPostImageRetry.sales-post-image-retry-icon{
        width:66px!important;
        height:66px!important;
        min-width:66px!important;
        min-height:66px!important;
    }
    #salesPostImageRetry.sales-post-image-retry-icon svg{
        width:43px!important;
        height:43px!important;
    }
    #salesPostDetailNoImageMessage{
        transform:translateY(-53px)!important;
    }
}
@media(max-width:480px){
    .sales-self-post-placeholder .sales-post-image-retry-inline,
    .general-post-image-placeholder .sales-post-image-retry-inline{
        width:54px!important;
        height:54px!important;
        min-width:54px!important;
        min-height:54px!important;
    }
    .sales-self-post-placeholder .sales-post-image-retry-inline svg,
    .general-post-image-placeholder .sales-post-image-retry-inline svg{
        width:32px!important;
        height:32px!important;
    }
    #salesPostImageRetry.sales-post-image-retry-icon{
        width:62px!important;
        height:62px!important;
        min-width:62px!important;
        min-height:62px!important;
    }
    #salesPostImageRetry.sales-post-image-retry-icon svg{
        width:40px!important;
        height:40px!important;
    }
    #salesPostDetailNoImageMessage{
        transform:translateY(-49px)!important;
    }
}

/* V0.2.245 — Channels is a page-level Sales filter beside the title. */
.sales-portal-title-row{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:18px;
    min-width:0;
}
.sales-portal-title-row h1{
    margin-right:auto;
    flex:0 1 auto;
}
.sales-global-channel-control{
    margin-left:auto;
    flex:0 0 auto;
}
.sales-global-channel-control .sales-channel-control{
    align-items:flex-end;
}
.sales-global-channel-control .sales-platform-filter{
    flex-wrap:nowrap;
}

/* V0.2.245 — four independent Daily Targets in Sales Settings. */
.sales-person-settings-fields{
    grid-template-columns:minmax(360px,1.45fr) minmax(180px,.75fr);
}
.sales-person-channel-targets{
    min-width:0;
}
.sales-person-channel-target-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(78px,1fr));
    gap:8px;
}
.sales-person-channel-target-field{
    min-width:0;
}
.sales-person-channel-target-field>span{
    display:block;
    margin:0 0 4px;
    color:#64748b;
    font-size:8px;
    font-weight:800;
}
.sales-person-channel-target-field input{
    width:100%;
    min-width:0;
}

@media(max-width:1120px){
    .sales-portal-title-row{
        width:100%;
    }
}
@media(max-width:760px){
    .sales-portal-title-row{
        align-items:flex-start;
        flex-direction:column;
        gap:8px;
    }
    .sales-global-channel-control{
        width:100%;
        margin-left:0;
    }
    .sales-global-channel-control .sales-channel-control{
        width:100%;
        align-items:flex-start;
    }
    .sales-global-channel-control .sales-platform-filter{
        width:100%;
        max-width:100%;
        justify-content:flex-start;
        overflow-x:auto;
    }
    .sales-person-settings-fields{
        grid-template-columns:1fr;
    }
    .sales-person-channel-target-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:420px){
    .sales-person-channel-target-grid{
        grid-template-columns:1fr;
    }
}
.sales-person-settings-modal{
    width:min(720px,calc(100vw - 20px));
}

/* V0.2.246 — Admin selected-Sales Channels filter is global beside the page title.
   The existing #adminSalesPlatformFilter element and JS bindings are unchanged;
   only its DOM location/layout moved out of the Posting Activity panel. */
.admin-dashboard-title-row{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:18px;
    width:100%;
    min-width:0;
}
.admin-dashboard-title-row h1{
    flex:0 1 auto;
    min-width:0;
    margin-right:auto;
}
.admin-global-channel-control{
    flex:0 0 auto;
    margin-left:auto;
}
.admin-global-channel-control .sales-channel-control{
    align-items:flex-end;
}
.admin-global-channel-control .sales-platform-filter{
    flex-wrap:nowrap;
}
@media(max-width:760px){
    .admin-dashboard-title-row{
        align-items:flex-start;
        flex-direction:column;
        gap:8px;
    }
    .admin-global-channel-control{
        width:100%;
        margin-left:0;
    }
    .admin-global-channel-control .sales-channel-control{
        width:100%;
        align-items:flex-start;
    }
    .admin-global-channel-control .sales-platform-filter{
        width:100%;
        max-width:100%;
        justify-content:flex-start;
        overflow-x:auto;
    }
}


/* V0.2.247 — unified Admin/Sales floating activity header.
   The floating layer starts immediately below the real topbar and carries the
   title, global channel filter, search, period presets and date range together.
   Existing dashboard/search/filter business logic remains owned by the original
   controls; these compact controls only mirror/forward that state. */
.admin-dashboard-sticky-range,
.sales-dashboard-sticky-header{
    position:fixed;
    left:0;
    right:0;
    z-index:90;
    display:none;
    box-sizing:border-box;
    width:100%;
    margin:0;
    padding:0;
    border:0;
    border-bottom:1px solid #dbe3ee;
    background:rgba(248,250,252,.985);
    box-shadow:0 5px 14px rgba(15,23,42,.06);
    backdrop-filter:blur(8px);
}
.admin-dashboard-sticky-range.is-visible,
.sales-dashboard-sticky-header.is-visible{
    display:block;
}
.admin-dashboard-sticky-inner,
.sales-dashboard-sticky-inner{
    box-sizing:border-box !important;
    width:min(1320px,calc(100% - 32px)) !important;
    max-width:1320px !important;
    height:auto !important;
    min-height:0 !important;
    margin:0 auto !important;
    padding:7px 0 8px !important;
    display:grid !important;
    grid-template-columns:minmax(0,1fr) !important;
    gap:7px !important;
    align-items:stretch !important;
    justify-content:stretch !important;
    overflow:visible !important;
}
.dashboard-sticky-title-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    min-width:0;
}
.dashboard-sticky-title-row h2{
    flex:0 1 auto;
    min-width:0;
    margin:0;
    color:#0f172a;
    font-family:Arial,Helvetica,sans-serif;
    font-size:14px;
    font-weight:900;
    line-height:1.15;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.dashboard-sticky-channel-control{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:7px;
    min-width:0;
    margin-left:auto;
}
.dashboard-sticky-control-label{
    flex:0 0 auto;
    color:#475569;
    font-family:Arial,Helvetica,sans-serif;
    font-size:8px;
    font-weight:900;
    letter-spacing:.04em;
    text-transform:uppercase;
    white-space:nowrap;
}
.dashboard-sticky-platform-filter{
    display:flex !important;
    flex-wrap:nowrap !important;
    align-items:center !important;
    justify-content:flex-end !important;
    gap:5px !important;
    min-width:0;
    margin:0 !important;
}
.dashboard-sticky-platform-filter .sales-platform-filter-button{
    min-height:28px !important;
    height:28px !important;
    padding:0 8px !important;
    font-size:8px !important;
    line-height:28px !important;
    white-space:nowrap !important;
}
.dashboard-sticky-tools-row{
    display:grid;
    grid-template-columns:minmax(220px,1fr) auto;
    align-items:end;
    gap:14px;
    min-width:0;
}
.dashboard-sticky-search-wrap{
    position:relative;
    display:grid;
    gap:3px;
    min-width:0;
    max-width:360px;
}
.dashboard-sticky-search-wrap>label{
    margin:0;
    color:#475569;
    font-family:Arial,Helvetica,sans-serif;
    font-size:8px;
    font-weight:900;
    line-height:1.1;
}
.dashboard-sticky-search-wrap>input[type="search"]{
    box-sizing:border-box;
    width:100%;
    height:34px;
    min-height:34px;
    margin:0;
    padding:0 10px;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#0f172a;
    font-family:Arial,Helvetica,sans-serif;
    font-size:11px;
    line-height:34px;
}
.dashboard-sticky-search-results{
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    top:100% !important;
    z-index:96 !important;
    width:100% !important;
    max-width:none !important;
    max-height:300px !important;
    margin-top:4px !important;
    overflow:auto !important;
    border:1px solid #d8e1ec !important;
    border-radius:4px !important;
    background:#fff !important;
    box-shadow:0 14px 28px rgba(15,23,42,.14) !important;
}
.dashboard-sticky-search-results.hidden{
    display:none !important;
}
.dashboard-sticky-range-controls{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:9px;
    min-width:0;
    margin-left:auto;
}
.dashboard-sticky-range-controls .admin-sticky-period-switch{
    flex:0 0 318px !important;
    width:318px !important;
    min-width:318px !important;
    max-width:318px !important;
    height:34px !important;
    min-height:34px !important;
    margin:0 !important;
}
.dashboard-sticky-range-controls .admin-sticky-date-row{
    flex:0 0 auto;
    height:34px !important;
    min-height:34px !important;
    margin:0 !important;
}
.sales-dashboard-sticky-header .activity-range-field,
.admin-dashboard-sticky-range .activity-range-field{
    flex:0 0 144px !important;
    width:144px !important;
    min-width:144px !important;
    max-width:144px !important;
}
.sales-dashboard-sticky-header .activity-range-field input[type="date"],
.admin-dashboard-sticky-range .activity-range-field input[type="date"]{
    box-sizing:border-box !important;
    width:144px !important;
    min-width:144px !important;
    max-width:144px !important;
    height:34px !important;
    min-height:34px !important;
    max-height:34px !important;
    margin:0 !important;
    padding:0 8px !important;
    font-family:Arial,Helvetica,sans-serif !important;
    font-size:11px !important;
    font-weight:700 !important;
    line-height:34px !important;
}
.sales-dashboard-sticky-header .admin-sticky-back-today,
.admin-dashboard-sticky-range .admin-sticky-back-today{
    flex:0 0 auto !important;
    width:auto !important;
    min-width:0 !important;
    max-width:none !important;
    height:34px !important;
    min-height:34px !important;
    max-height:34px !important;
    padding:0 8px !important;
    font-size:8px !important;
    white-space:nowrap !important;
}

@media(max-width:980px){
    .admin-dashboard-sticky-inner,
    .sales-dashboard-sticky-inner{
        width:calc(100% - 24px) !important;
        padding-top:7px !important;
        padding-bottom:8px !important;
    }
    .dashboard-sticky-tools-row{
        grid-template-columns:minmax(180px,1fr) minmax(0,auto);
        gap:10px;
    }
    .dashboard-sticky-search-wrap{
        max-width:300px;
    }
    .dashboard-sticky-range-controls{
        max-width:100%;
        overflow-x:auto;
        overflow-y:hidden;
        scrollbar-width:thin;
        padding-bottom:1px;
    }
}

@media(max-width:760px){
    .admin-dashboard-sticky-inner,
    .sales-dashboard-sticky-inner{
        width:calc(100% - 20px) !important;
        gap:6px !important;
        padding-top:6px !important;
        padding-bottom:7px !important;
    }
    .dashboard-sticky-title-row{
        display:grid;
        grid-template-columns:minmax(0,1fr);
        gap:5px;
    }
    .dashboard-sticky-title-row h2{
        font-size:13px;
    }
    .dashboard-sticky-channel-control{
        width:100%;
        margin-left:0;
        justify-content:flex-start;
        overflow:hidden;
    }
    .dashboard-sticky-platform-filter{
        justify-content:flex-start !important;
        max-width:100%;
        overflow-x:auto;
        scrollbar-width:thin;
        padding-bottom:1px;
    }
    .dashboard-sticky-tools-row{
        grid-template-columns:minmax(0,1fr);
        align-items:stretch;
        gap:7px;
    }
    .dashboard-sticky-search-wrap{
        width:100%;
        max-width:none;
    }
    .dashboard-sticky-range-controls{
        width:100%;
        margin-left:0;
        justify-content:flex-start;
        overflow-x:auto;
        padding-bottom:2px;
    }
    .dashboard-sticky-search-results{
        max-height:220px !important;
    }
}

@media(max-width:520px){
    .admin-dashboard-sticky-inner,
    .sales-dashboard-sticky-inner{
        width:calc(100% - 14px) !important;
    }
    .dashboard-sticky-control-label{
        display:none;
    }
    .dashboard-sticky-platform-filter .sales-platform-filter-button{
        min-height:27px !important;
        height:27px !important;
        padding:0 7px !important;
        font-size:7px !important;
        line-height:27px !important;
    }
    .dashboard-sticky-range-controls .admin-sticky-period-switch{
        flex-basis:286px !important;
        width:286px !important;
        min-width:286px !important;
        max-width:286px !important;
        grid-template-columns:46px 48px 56px 56px 68px !important;
    }
    .sales-dashboard-sticky-header .activity-range-field,
    .admin-dashboard-sticky-range .activity-range-field,
    .sales-dashboard-sticky-header .activity-range-field input[type="date"],
    .admin-dashboard-sticky-range .activity-range-field input[type="date"]{
        flex-basis:132px !important;
        width:132px !important;
        min-width:132px !important;
        max-width:132px !important;
    }
    .dashboard-sticky-search-results{
        max-height:180px !important;
    }
}

/* V0.2.248 — align the Admin/Sales floating activity header to the real
   .container content box, keep mirrored filter state visually exact, and
   modernize the chart hover card without touching chart/queue/provider logic. */
.admin-dashboard-sticky-inner,
.sales-dashboard-sticky-inner{
    width:calc(100% - 48px) !important;
    max-width:1272px !important;
    margin-left:auto !important;
    margin-right:auto !important;
}
.dashboard-sticky-title-row,
.dashboard-sticky-tools-row{
    width:100% !important;
    min-width:0 !important;
}
.dashboard-sticky-title-row{
    display:grid !important;
    grid-template-columns:minmax(0,1fr) max-content !important;
    align-items:center !important;
    column-gap:18px !important;
}
.dashboard-sticky-channel-control{
    justify-self:end !important;
    margin-left:0 !important;
}
.dashboard-sticky-tools-row{
    grid-template-columns:minmax(260px,360px) minmax(0,1fr) !important;
    align-items:end !important;
    column-gap:18px !important;
}
.dashboard-sticky-search-wrap{
    grid-column:1 !important;
    width:100% !important;
    max-width:360px !important;
    justify-self:start !important;
}
.dashboard-sticky-range-controls{
    grid-column:2 !important;
    justify-self:end !important;
    margin-left:0 !important;
    overflow:visible !important;
}
/* Do not reserve a fake 84/92px slot when Back to today is hidden. That old
   geometry was the reason the date controls stopped short of the right edge. */
.sales-dashboard-sticky-header .admin-sticky-back-today.hidden,
.admin-dashboard-sticky-range .admin-sticky-back-today.hidden{
    display:none !important;
    visibility:hidden !important;
}

/* Chart hover: date + active channel on top, six values in a clean 2-column
   metric grid. The values are still supplied by the existing chart data. */
.sales-chart-tooltip{
    width:224px !important;
    padding:10px 11px !important;
    gap:8px !important;
    font-size:9px !important;
}
.sales-chart-tooltip .sales-chart-tooltip-head{
    display:flex !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:10px !important;
    min-width:0 !important;
    padding-bottom:7px !important;
    border-bottom:1px solid rgba(226,232,240,.16) !important;
}
.sales-chart-tooltip .sales-chart-tooltip-head strong{
    margin:0 !important;
    min-width:0 !important;
    color:#fff !important;
    font-size:10px !important;
    line-height:1.2 !important;
    white-space:nowrap !important;
}
.sales-chart-tooltip .sales-chart-tooltip-channel{
    flex:0 0 auto !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:19px !important;
    padding:0 6px !important;
    border:1px solid rgba(147,197,253,.34) !important;
    border-radius:4px !important;
    background:rgba(37,99,235,.16) !important;
    color:#bfdbfe !important;
    font-size:7.5px !important;
    font-weight:900 !important;
    line-height:1 !important;
    white-space:nowrap !important;
}
.sales-chart-tooltip .sales-chart-tooltip-grid{
    display:grid !important;
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:6px !important;
}
.sales-chart-tooltip .sales-chart-tooltip-grid > span,
.sales-chart-tooltip .sales-chart-tooltip-focus{
    box-sizing:border-box !important;
    display:grid !important;
    grid-template-columns:minmax(0,1fr) auto !important;
    align-items:center !important;
    gap:8px !important;
    min-width:0 !important;
    margin:0 !important;
    padding:6px 7px !important;
    border:1px solid rgba(148,163,184,.18) !important;
    border-radius:4px !important;
    background:rgba(255,255,255,.045) !important;
    line-height:1.15 !important;
}
.sales-chart-tooltip .sales-chart-tooltip-grid em{
    min-width:0 !important;
    overflow:hidden !important;
    color:#cbd5e1 !important;
    font-style:normal !important;
    font-weight:700 !important;
    white-space:nowrap !important;
    text-overflow:ellipsis !important;
}
.sales-chart-tooltip .sales-chart-tooltip-grid b{
    color:#fff !important;
    font-size:10px !important;
    font-weight:900 !important;
}
.sales-chart-tooltip .sales-chart-tooltip-grid .good b{color:#86efac !important;}
.sales-chart-tooltip .sales-chart-tooltip-grid .bad b{color:#fca5a5 !important;}
.sales-chart-tooltip .sales-chart-tooltip-grid .missing b{color:#fde68a !important;}
.sales-chart-tooltip .sales-chart-tooltip-grid .target{
    border-color:rgba(147,197,253,.28) !important;
    background:rgba(37,99,235,.10) !important;
}
.sales-chart-tooltip .sales-chart-tooltip-focus{
    grid-column:1 / -1 !important;
    margin-bottom:0 !important;
    color:#fff !important;
}

@media(max-width:760px){
    .dashboard-sticky-title-row{
        grid-template-columns:minmax(0,1fr) !important;
        row-gap:6px !important;
    }
    .dashboard-sticky-channel-control{
        justify-self:stretch !important;
        width:100% !important;
    }
    .dashboard-sticky-tools-row{
        grid-template-columns:minmax(0,1fr) !important;
        row-gap:8px !important;
    }
    .dashboard-sticky-search-wrap,
    .dashboard-sticky-range-controls{
        grid-column:1 !important;
        justify-self:stretch !important;
        width:100% !important;
        max-width:none !important;
    }
    .dashboard-sticky-range-controls{
        justify-content:flex-start !important;
        overflow-x:auto !important;
        overflow-y:hidden !important;
        scrollbar-width:thin;
        padding-bottom:2px !important;
    }
}
@media(max-width:560px){
    .admin-dashboard-sticky-inner,
    .sales-dashboard-sticky-inner{
        width:calc(100% - 28px) !important;
        max-width:none !important;
    }
    .sales-chart-tooltip{
        width:208px !important;
    }
}

/* v0.2.251 EN: Filter motion + date-effective Daily Target step line.
   中文：Filter 平滑切换 + 按日期生效的 Daily Target 阶梯线。 */
.sales-progress-card.sales-directory-leaving{
    opacity:0 !important;
    transform:translateY(4px) scale(.985) !important;
    pointer-events:none !important;
    transition:opacity .14s ease,transform .14s ease !important;
}
.sales-progress-card.sales-directory-entering{
    animation:cdspSalesDirectoryEnter .24s cubic-bezier(.2,.72,.28,1) both;
}
@keyframes cdspSalesDirectoryEnter{
    from{opacity:0;transform:translateY(5px) scale(.99);}
    to{opacity:1;transform:translateY(0) scale(1);}
}
.admin-sales-filter-empty.sales-directory-empty-enter,
.sales-module-filter-empty.sales-filter-empty-enter,
.sales-range-filter-empty.sales-filter-empty-enter{
    animation:cdspFilterEmptyEnter .20s ease both;
}
@keyframes cdspFilterEmptyEnter{
    from{opacity:0;transform:translateY(3px);}
    to{opacity:1;transform:translateY(0);}
}
#salesActivityChartPanel .sales-chart-shell.sales-dashboard-enter{
    animation:salesDashboardEnter .24s ease both;
}
.sales-activity-chart-panel .sales-chart-day-target{
    z-index:8 !important;
    border-top-color:#64748b !important;
}
.sales-activity-chart-panel .sales-chart-day-target > span{
    z-index:9;
}
.sales-activity-chart-panel .sales-chart-day-target-step{
    position:absolute;
    left:0;
    z-index:8;
    width:0;
    border-left:1px solid #64748b;
    pointer-events:none;
}
@media(prefers-reduced-motion:reduce){
    .sales-progress-card.sales-directory-leaving,
    .sales-progress-card.sales-directory-entering,
    .admin-sales-filter-empty.sales-directory-empty-enter,
    .sales-module-filter-empty.sales-filter-empty-enter,
    .sales-range-filter-empty.sales-filter-empty-enter,
    #salesActivityChartPanel .sales-chart-shell.sales-dashboard-enter{
        animation:none !important;
        transition:none !important;
        transform:none !important;
    }
}

/* v0.2.251 — Admin Sales Activity chart split into four per-channel charts.
 * Each platform gets its own bar chart and target line because targets are now
 * configured independently per channel. Also reduce the Daily Review star size
 * both in-chart and on the right rating axis. */
.admin-sales-chart-grid{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    gap:12px;
    margin-top:8px;
}
.admin-sales-channel-chart{
    padding:10px 8px 8px;
    border:1px solid #e2e8f0;
    border-radius:6px;
    background:#fff;
}
.admin-sales-channel-chart-head{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:8px;
    margin:0 0 6px;
}
.admin-sales-channel-chart-head h3{
    margin:0;
    color:#0f172a;
    font-size:12px;
    font-weight:900;
    line-height:1.15;
}
.admin-sales-channel-chart-head p{
    margin:0;
    color:#64748b;
    font-size:8px;
    font-weight:700;
    line-height:1.2;
}
.admin-sales-channel-chart .sales-chart-shell{
    grid-template-columns:40px minmax(0,1fr) 72px !important;
    gap:6px !important;
    padding-right:4px !important;
}
.admin-sales-channel-chart .sales-chart-y-axis{
    width:40px !important;
}
.admin-sales-channel-chart .sales-chart-y-tick{
    right:3px !important;
    min-width:24px !important;
    font-size:8px !important;
}
.admin-sales-channel-chart .sales-chart-rating-axis{
    width:72px;
    height:236px;
}
.admin-sales-channel-chart .sales-chart-rating-tick{
    left:1px;
    min-width:21px;
    font-size:6px;
    opacity:.64;
}
.admin-sales-channel-chart .sales-chart-rating-tick i{
    margin-left:1px;
    font-size:6px;
}
.admin-sales-channel-chart .sales-chart-rating-average{
    left:20px;
    min-width:36px;
    gap:2px;
    font-size:8px;
}
.admin-sales-channel-chart .sales-chart-rating-average-star{
    font-size:10px;
}
.admin-sales-channel-chart .sales-chart-day-target{
    left:0;
    right:0;
}
.admin-sales-channel-chart .sales-chart-day-target > span{
    font-size:7px;
    padding:1px 4px;
    border-radius:3px;
}
.admin-sales-channel-chart .sales-chart-x-label{
    font-size:7px;
}
.admin-sales-channel-chart .sales-chart-review-trend-path{
    stroke-width:1.7;
}
.admin-sales-channel-chart .sales-chart-review-average-line{
    stroke-width:1.9;
}
.admin-sales-channel-chart .sales-chart-day-plot > .sales-chart-review-marker{
    width:11px !important;
    height:11px !important;
}
.admin-sales-channel-chart .sales-chart-day-plot > .sales-chart-review-marker svg{
    width:11px !important;
    height:11px !important;
}
.admin-sales-channel-chart .sales-chart-review-marker-black{
    stroke-width:4.2;
}
.admin-sales-channel-chart .sales-chart-review-marker-white{
    stroke-width:2.1;
}
@media(max-width:760px){
    .admin-sales-chart-grid{
        gap:10px;
    }
    .admin-sales-channel-chart{
        padding:9px 5px 6px;
    }
    .admin-sales-channel-chart .sales-chart-shell{
        grid-template-columns:34px minmax(0,1fr) 62px !important;
        gap:4px !important;
        padding-left:2px !important;
        padding-right:2px !important;
    }
    .admin-sales-channel-chart .sales-chart-y-axis{
        width:34px !important;
    }
    .admin-sales-channel-chart .sales-chart-y-tick{
        min-width:20px !important;
        font-size:7px !important;
    }
    .admin-sales-channel-chart .sales-chart-rating-axis{
        width:62px;
    }
    .admin-sales-channel-chart .sales-chart-rating-tick{
        min-width:18px;
        font-size:6px;
    }
    .admin-sales-channel-chart .sales-chart-rating-average{
        left:17px;
        min-width:32px;
        font-size:7px;
    }
    .admin-sales-channel-chart .sales-chart-rating-average-star{
        font-size:9px;
    }
    .admin-sales-channel-chart .sales-chart-day-target > span{
        font-size:6px;
    }
    .admin-sales-channel-chart .sales-chart-day-plot > .sales-chart-review-marker,
    .admin-sales-channel-chart .sales-chart-day-plot > .sales-chart-review-marker svg{
        width:10px !important;
        height:10px !important;
    }
}


/* v0.2.253 — single-coordinate four-platform Posting Activity UX.
 * This intentionally supersedes the v0.2.252 four-card presentation without
 * touching non-chart dashboard components. */
.admin-sales-activity-panel .sales-chart-shell{
    grid-template-columns:48px minmax(0,1fr) 78px !important;
    gap:7px !important;
    padding:8px 8px 14px 8px !important;
}
.admin-platform-chart-legend{gap:14px !important;}
.admin-platform-chart-legend i{
    width:10px !important;
    height:10px !important;
    border-radius:2px !important;
}
.admin-platform-chart-legend i.platform-facebook{background:#2563eb !important;}
.admin-platform-chart-legend i.platform-instagram{background:#ec4899 !important;}
.admin-platform-chart-legend i.platform-offerup{background:#10b981 !important;}
.admin-platform-chart-legend i.platform-craigslist{background:#9333ea !important;}
.admin-sales-activity-panel .sales-chart-canvas{
    background:#fff !important;
}
.admin-sales-activity-panel .sales-chart-bars{
    padding:0 !important;
}
.admin-sales-activity-panel .admin-sales-grouped-day{
    height:300px !important;
    grid-template-rows:262px 38px !important;
    border-right:1px dotted rgba(148,163,184,.28);
}
.admin-sales-activity-panel .admin-sales-grouped-day:nth-child(odd) .sales-chart-day-plot{
    background:rgba(241,245,249,.72) !important;
}
.admin-sales-activity-panel .admin-sales-grouped-day:nth-child(even) .sales-chart-day-plot{
    background:#fff !important;
}
.admin-sales-activity-panel .admin-sales-grouped-day .sales-chart-day-plot{
    height:262px !important;
    min-height:262px !important;
}
.admin-sales-platform-bars{
    position:absolute;
    left:50%;
    bottom:0;
    z-index:8;
    height:262px;
    display:flex;
    align-items:flex-end;
    justify-content:center;
    transform:translateX(-50%);
    pointer-events:none;
}
.admin-sales-platform-bar{
    position:relative;
    display:block;
    min-height:0;
    border-radius:2px 2px 0 0;
    box-shadow:inset 0 0 0 1px rgba(15,23,42,.06);
}
.admin-sales-platform-bar.is-zero{
    min-height:3px;
    opacity:.92;
}
.admin-sales-platform-bar.platform-facebook{background:#2563eb;}
.admin-sales-platform-bar.platform-instagram{background:#ec4899;}
.admin-sales-platform-bar.platform-offerup{background:#10b981;}
.admin-sales-platform-bar.platform-craigslist{background:#9333ea;}
.admin-sales-platform-bar b{
    position:absolute;
    left:50%;
    bottom:100%;
    transform:translate(-50%,-2px);
    color:#334155;
    font-size:7px;
    font-weight:900;
    line-height:1;
    white-space:nowrap;
}
.admin-sales-platform-target,
.admin-sales-platform-target-step{
    position:absolute;
    z-index:6;
    pointer-events:none;
}
.admin-sales-platform-target{
    left:0;
    right:0;
    height:0;
    border-top:1.5px dashed currentColor;
}
.admin-sales-platform-target-step{
    left:0;
    width:0;
    border-left:1.5px solid currentColor;
}
.admin-sales-platform-target.platform-facebook,
.admin-sales-platform-target-step.platform-facebook{color:#2563eb;}
.admin-sales-platform-target.platform-instagram,
.admin-sales-platform-target-step.platform-instagram{color:#ec4899;}
.admin-sales-platform-target.platform-offerup,
.admin-sales-platform-target-step.platform-offerup{color:#10b981;}
.admin-sales-platform-target.platform-craigslist,
.admin-sales-platform-target-step.platform-craigslist{color:#9333ea;}
.admin-sales-platform-target>span{
    position:absolute;
    left:4px;
    bottom:3px;
    padding:1px 3px;
    border-radius:2px;
    background:rgba(255,255,255,.92);
    color:currentColor;
    font-size:7px;
    font-weight:900;
    line-height:1;
    white-space:nowrap;
}
.admin-sales-activity-panel .sales-chart-review-line{
    z-index:7 !important;
    pointer-events:none !important;
}
.admin-sales-activity-panel .sales-chart-review-trend-path{
    display:none !important;
}
.admin-sales-activity-panel .sales-chart-review-guide{
    stroke:rgba(245,158,11,.16) !important;
    stroke-width:1 !important;
    stroke-dasharray:4 5;
}
.admin-sales-activity-panel .sales-chart-day-plot>.sales-chart-review-marker{
    z-index:10 !important;
    width:auto !important;
    height:auto !important;
    transform:translate(-50%,-50%) !important;
    color:#f4b000 !important;
    font-size:13px !important;
    line-height:1 !important;
    text-shadow:none !important;
}
.admin-sales-activity-panel .sales-chart-day-plot>.sales-chart-review-marker svg{
    display:none !important;
}
.admin-sales-activity-panel .sales-chart-review-marker-black,
.admin-sales-activity-panel .sales-chart-review-marker-white,
.admin-sales-activity-panel .sales-chart-review-marker-fill{display:none !important;}
.admin-sales-activity-panel .sales-chart-rating-axis{width:78px !important;height:300px !important;}
.admin-sales-activity-panel .sales-chart-rating-tick{
    left:2px !important;
    min-width:22px !important;
    font-size:6px !important;
    opacity:.88 !important;
    color:#d69a00 !important;
}
.admin-sales-activity-panel .sales-chart-rating-tick i{
    margin-left:1px !important;
    font-size:6px !important;
}
.admin-sales-activity-panel .sales-chart-rating-average{
    left:22px !important;
    min-width:38px !important;
    gap:2px !important;
    font-size:8px !important;
    color:#d69a00 !important;
}
.admin-sales-activity-panel .sales-chart-rating-average-star{font-size:9px !important;color:#d69a00 !important;}
.admin-sales-activity-panel .sales-chart-x-label{
    height:38px !important;
    padding-top:8px !important;
    font-size:8px !important;
}
.admin-sales-activity-panel .sales-chart-canvas::after{bottom:38px !important;}
.admin-sales-activity-panel .sales-chart-grid-lines{height:262px !important;}
@media(max-width:760px){
    .admin-sales-activity-panel .sales-chart-shell{
        grid-template-columns:36px minmax(0,1fr) 60px !important;
        gap:4px !important;
    }
    .admin-sales-activity-panel .sales-chart-rating-axis{width:60px !important;}
    .admin-sales-platform-target>span{font-size:6px !important;}
    .admin-sales-platform-bar b{font-size:6px;}
}

.admin-platform-chart-legend .admin-daily-rating-legend i{display:inline-block;color:#d69a00 !important;font-style:normal;font-size:12px;line-height:1;vertical-align:-1px;}
.admin-sales-activity-panel .admin-sales-grouped-day{position:relative;}
.admin-sales-activity-panel .admin-sales-grouped-day .sales-chart-day-plot{overflow:visible !important;}
.admin-sales-activity-panel .sales-chart-day-plot>.sales-chart-review-marker-hollow{font-family:Arial,Helvetica,sans-serif;font-weight:700;pointer-events:none;}
.admin-sales-activity-panel .admin-sales-platform-target>span{
    max-width:none !important;
    width:max-content;
    overflow:visible !important;
    text-overflow:clip !important;
    white-space:nowrap !important;
    z-index:12;
}


/* v0.2.258 — Posting Activity rerender animation.
   Bars grow upward in date order from left to right without changing chart data. */
.admin-sales-activity-panel .admin-sales-platform-bar-enter{
    transform-origin:50% 100%;
    animation:adminSalesBarGrow .42s cubic-bezier(.2,.7,.25,1) both;
}
.admin-sales-activity-panel .sales-chart-review-marker{
    animation:adminSalesReviewPointIn .24s ease-out both;
}
@keyframes adminSalesBarGrow{
    0%{transform:scaleY(0);opacity:.25}
    72%{opacity:1}
    100%{transform:scaleY(1);opacity:1}
}
@keyframes adminSalesReviewPointIn{
    0%{opacity:0}
    100%{opacity:1}
}
@media (prefers-reduced-motion:reduce){
    .admin-sales-activity-panel .admin-sales-platform-bar-enter,
    .admin-sales-activity-panel .sales-chart-review-marker{
        animation:none !important;
    }
}


/* v0.2.265 — Verification Queue hover must never move the card itself.
   The previous translateY(-1px) could move the hit box away from the pointer
   at the card edge, causing rapid hover/normal oscillation. Keep only a stable
   shadow/focus treatment; no geometry changes on hover. */
.sales-verification-queue .sales-vq-row[role="button"]{
    transition:border-color .16s ease,box-shadow .16s ease !important;
    transform:none !important;
}
.sales-verification-queue .sales-vq-row[role="button"]:hover,
.sales-verification-queue .sales-vq-row[role="button"]:focus-visible{
    transform:none !important;
    box-shadow:0 8px 20px rgba(15,23,42,.08);
    outline:none;
}


/* v0.2.269 — Verification Queue cards must be visually stable under the mouse.
   No hover transition, movement, background change, or shadow repaint.
   Status-specific accent/top-border colors remain unchanged. */
.sales-verification-queue .sales-vq-row[role="button"],
.sales-verification-queue .sales-vq-row[role="button"]:hover{
    transform:none !important;
    box-shadow:none !important;
    background:#fff !important;
    transition:none !important;
    filter:none !important;
}
.sales-verification-queue .sales-vq-row[role="button"]:focus-visible{
    transform:none !important;
    box-shadow:none !important;
    background:#fff !important;
    transition:none !important;
    outline:2px solid #2563eb;
    outline-offset:1px;
}


/* v0.2.271 — Verification Queue hover returns as a stable shadow.
   v0.2.270 stopped the polling DOM detach/reinsert cycle, so hover can now
   provide feedback without flashing. Never move the card geometry. */
.sales-verification-queue .sales-vq-row[role="button"]{
    transform:none !important;
    background:#fff !important;
    filter:none !important;
    transition:box-shadow .16s ease,border-color .16s ease !important;
}
.sales-verification-queue .sales-vq-row[role="button"]:hover{
    transform:none !important;
    background:#fff !important;
    box-shadow:0 8px 20px rgba(15,23,42,.10) !important;
    filter:none !important;
}
.sales-verification-queue .sales-vq-row[role="button"]:focus-visible{
    transform:none !important;
    background:#fff !important;
    box-shadow:0 8px 20px rgba(15,23,42,.10) !important;
}

/* v0.2.271 — All-channel progress is shown per platform instead of one
   misleading combined count/target. 0 target renders as "--". */
.sales-platform-count-summary{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:4px 8px;
    margin:4px 0 7px;
    min-width:0;
}
.sales-platform-count-item{
    display:flex;
    align-items:baseline;
    gap:3px;
    min-width:0;
    font-size:8px;
    line-height:1.25;
    color:#475569;
    white-space:nowrap;
}
.sales-platform-count-item>b{
    overflow:hidden;
    text-overflow:ellipsis;
    font-size:7px;
    font-weight:800;
    color:#64748b;
}
.sales-platform-count-item>strong{
    margin-left:auto;
    font-size:10px;
    font-weight:900;
    color:#0f172a;
}
.sales-platform-count-item.platform-facebook{border-left:2px solid #2563eb;padding-left:4px;}
.sales-platform-count-item.platform-instagram{border-left:2px solid #ec4899;padding-left:4px;}
.sales-platform-count-item.platform-offerup{border-left:2px solid #10b981;padding-left:4px;}
.sales-platform-count-item.platform-craigslist{border-left:2px solid #9333ea;padding-left:4px;}

@media(max-width:520px){
    .sales-platform-count-summary{
        grid-template-columns:1fr;
    }
}


/* v0.2.273 — A merged target line keeps one physical line, but each platform
   name/value in the label uses the same platform color as its legend/bar. */
.admin-sales-platform-target>span.admin-sales-target-label{
    display:inline-flex;
    align-items:center;
    gap:0;
    max-width:none !important;
    overflow:visible !important;
    text-overflow:clip !important;
    white-space:nowrap !important;
}
.admin-sales-target-label-part{
    font:inherit;
    font-weight:900;
}
.admin-sales-target-label-part.platform-facebook{color:#2563eb;}
.admin-sales-target-label-part.platform-instagram{color:#ec4899;}
.admin-sales-target-label-part.platform-offerup{color:#10b981;}
.admin-sales-target-label-part.platform-craigslist{color:#9333ea;}
.admin-sales-target-label-separator{
    color:#94a3b8;
    padding:0 1px;
}


/* v0.2.274 — Consistent UI enter motion for async panels and popups.
   Visual motion only: no layout, data, filter, review, target, or modal behavior changes. */
@keyframes cdspUiBackdropIn{
    from{opacity:0}
    to{opacity:1}
}
@keyframes cdspUiPopupIn{
    from{
        opacity:0;
        transform:translateY(8px) scale(.992);
    }
    to{
        opacity:1;
        transform:translateY(0) scale(1);
    }
}
@keyframes cdspUiPanelIn{
    from{
        opacity:0;
        transform:translateY(6px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}
@keyframes cdspUiContentIn{
    from{
        opacity:0;
        transform:translateY(4px);
    }
    to{
        opacity:1;
        transform:translateY(0);
    }
}
@keyframes cdspUiLoadingIn{
    from{opacity:0}
    to{opacity:1}
}

/* Backdrops fade in instead of appearing in one frame. */
.review-modal-backdrop:not(.hidden),
.sales-period-review-backdrop:not(.hidden),
.sales-post-detail-backdrop:not(.hidden),
.sales-person-settings-backdrop:not(.hidden),
.daily-workflow-calendar-backdrop:not(.hidden),
.admin-delete-request-modal:not(.hidden){
    animation:cdspUiBackdropIn .16s ease-out both;
}

/* Popup surfaces rise/fade in. Post Review already had its own entry animation,
   so it is intentionally not overridden here. */
.sales-period-review-backdrop:not(.hidden) .sales-period-review-modal,
.sales-post-detail-backdrop:not(.hidden) .sales-post-detail-modal,
.sales-person-settings-backdrop:not(.hidden) .sales-person-settings-modal,
.daily-workflow-calendar-backdrop:not(.hidden) .daily-workflow-calendar-modal,
.admin-delete-request-modal:not(.hidden) .admin-delete-request-card,
.sales-submit-modal-backdrop:not(.hidden) .sales-submit-modal{
    transform-origin:50% 12%;
    animation:cdspUiPopupIn .20s cubic-bezier(.2,.72,.25,1) both;
}

/* Admin View Posts / Posting Activity opens as one panel rather than popping in. */
.sales-expanded-posts:not(.hidden){
    transform-origin:50% 0;
    animation:cdspUiPanelIn .20s cubic-bezier(.2,.72,.25,1) both;
}

/* AJAX loading states enter softly; existing spinners/dots keep their own animation. */
.sales-expanded-loading:not(.hidden),
.review-modal-loading:not(.hidden),
.daily-workflow-calendar-loading,
.admin-delete-request-loading:not(.hidden){
    animation:cdspUiLoadingIn .16s ease-out both;
}

/* Newly rendered Post groups / empty/error rows and Posting Activity content fade up. */
.sales-expanded-date-group,
.sales-expanded-empty,
.sales-expanded-error{
    animation:cdspUiContentIn .20s cubic-bezier(.2,.72,.25,1) both;
}
.admin-sales-activity-panel:not(.hidden){
    animation:cdspUiContentIn .22s cubic-bezier(.2,.72,.25,1) both;
}

/* Submit overlay already uses jQuery fadeIn/fadeOut; keep that backdrop behavior
   and only animate the modal surface above. */
.sales-submit-modal-backdrop:not(.hidden){
    will-change:opacity;
}

@media(prefers-reduced-motion:reduce){
    .review-modal-backdrop:not(.hidden),
    .sales-period-review-backdrop:not(.hidden),
    .sales-post-detail-backdrop:not(.hidden),
    .sales-person-settings-backdrop:not(.hidden),
    .daily-workflow-calendar-backdrop:not(.hidden),
    .admin-delete-request-modal:not(.hidden),
    .sales-period-review-backdrop:not(.hidden) .sales-period-review-modal,
    .sales-post-detail-backdrop:not(.hidden) .sales-post-detail-modal,
    .sales-person-settings-backdrop:not(.hidden) .sales-person-settings-modal,
    .daily-workflow-calendar-backdrop:not(.hidden) .daily-workflow-calendar-modal,
    .admin-delete-request-modal:not(.hidden) .admin-delete-request-card,
    .sales-submit-modal-backdrop:not(.hidden) .sales-submit-modal,
    .sales-expanded-posts:not(.hidden),
    .sales-expanded-loading:not(.hidden),
    .review-modal-loading:not(.hidden),
    .daily-workflow-calendar-loading,
    .admin-delete-request-loading:not(.hidden),
    .sales-expanded-date-group,
    .sales-expanded-empty,
    .sales-expanded-error,
    .admin-sales-activity-panel:not(.hidden){
        animation:none !important;
    }
}


/* v0.2.275 — Daily Review legend is one solid yellow star only.
   Older trend-era CSS left a line background + ::after star on the same <i>,
   while the current HTML already contains a literal ★, producing the doubled
   star/line shown in the legend. Remove all obsolete trend decoration. */
.admin-sales-activity-panel .admin-platform-chart-legend .admin-daily-rating-legend i,
.admin-platform-chart-legend .admin-daily-rating-legend i{
    position:static !important;
    display:inline-block !important;
    width:auto !important;
    min-width:0 !important;
    height:auto !important;
    flex:0 0 auto !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:none !important;
    box-shadow:none !important;
    color:#d69a00 !important;
    font-style:normal !important;
    font-size:11px !important;
    font-weight:900 !important;
    line-height:1 !important;
    text-shadow:none !important;
    vertical-align:-1px !important;
}
.admin-sales-activity-panel .admin-platform-chart-legend .admin-daily-rating-legend i::before,
.admin-sales-activity-panel .admin-platform-chart-legend .admin-daily-rating-legend i::after,
.admin-platform-chart-legend .admin-daily-rating-legend i::before,
.admin-platform-chart-legend .admin-daily-rating-legend i::after{
    content:none !important;
    display:none !important;
}


/* v0.2.276 — View Posts is a real dropdown motion, not a display:none jump.
   JS animates the panel's measured height so the page below moves naturally. */
.sales-expanded-posts{
    transform-origin:50% 0;
}
.sales-expanded-posts.is-opening,
.sales-expanded-posts.is-closing{
    pointer-events:none;
}
.sales-expanded-posts:not(.hidden){
    /* v0.2.274 used a one-shot entrance animation. v0.2.276 replaces it with
       measured height + opacity motion so both OPEN and CLOSE are animated. */
    animation:none !important;
}
.sales-card-chevron{
    transition:
        transform .22s cubic-bezier(.2,.72,.25,1),
        color .16s ease !important;
    transform-origin:50% 50%;
}
.sales-progress-card.expanded .sales-card-chevron{
    transform:rotate(225deg);
}
.sales-card-view-footer{
    transition:
        background .18s ease,
        color .18s ease,
        border-color .18s ease !important;
}
.sales-progress-card.expanded .sales-card-view-label{
    transition:opacity .16s ease;
}

@media(prefers-reduced-motion:reduce){
    .sales-expanded-posts,
    .sales-card-chevron,
    .sales-card-view-footer{
        transition:none !important;
        animation:none !important;
    }
}

/* v0.2.277 — Sales/Admin motion consistency + Sales platform chart parity. */

/* Popups now enter from slightly ABOVE and settle downward.  This supersedes
   the earlier generic popup direction without changing any modal behavior. */
@keyframes cdspUiPopupIn{
    from{opacity:0;transform:translateY(-10px) scale(.992)}
    to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes reviewModalIn{
    from{opacity:0;transform:translateY(-10px) scale(.992)}
    to{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes cdspUiDropIn{
    from{opacity:0;transform:translateY(-6px)}
    to{opacity:1;transform:translateY(0)}
}
@keyframes cdspUiLightboxImageIn{
    from{opacity:0;transform:translateY(-8px) scale(.985)}
    to{opacity:1;transform:translateY(0) scale(1)}
}

/* Search/dropdown-like surfaces on BOTH Admin and Sales should not pop in. */
#adminSalesDirectoryTools .admin-sales-post-search-results:not(.hidden),
#salesPostSearchPanel .sales-post-search-results:not(.hidden),
.dashboard-sticky-search-results:not(.hidden),
.sales-vq-edit{
    transform-origin:50% 0;
    animation:cdspUiDropIn .18s cubic-bezier(.2,.72,.25,1) both;
}

/* Full-screen image viewer follows the same backdrop + content motion system. */
.sales-image-lightbox:not(.hidden){
    animation:cdspUiBackdropIn .16s ease-out both;
}
.sales-image-lightbox:not(.hidden) img{
    transform-origin:50% 20%;
    animation:cdspUiLightboxImageIn .20s cubic-bezier(.2,.72,.25,1) both;
}

/* Sales Posting Activity now uses the same four-platform visual grammar as Admin. */
.sales-platform-activity-panel .sales-chart-shell{
    grid-template-columns:48px minmax(0,1fr) !important;
    gap:7px !important;
    padding:8px 8px 14px 8px !important;
}
.sales-platform-activity-panel .sales-chart-y-axis{
    height:300px;
}
.sales-platform-activity-panel .sales-chart-canvas{
    background:#fff !important;
}
.sales-platform-activity-panel .sales-chart-bars{
    padding:0 !important;
}
.sales-platform-chart-legend{
    gap:14px !important;
}
.sales-platform-chart-legend i{
    width:10px !important;
    height:10px !important;
    border-radius:2px !important;
}
.sales-platform-chart-legend i.platform-facebook{background:#2563eb !important;}
.sales-platform-chart-legend i.platform-instagram{background:#ec4899 !important;}
.sales-platform-chart-legend i.platform-offerup{background:#10b981 !important;}
.sales-platform-chart-legend i.platform-craigslist{background:#9333ea !important;}
.sales-platform-activity-copy{
    margin:3px 0 0;
    color:#64748b;
    font-size:9px;
    line-height:1.35;
}
.sales-platform-activity-panel .admin-sales-grouped-day{
    position:relative;
    height:300px !important;
    grid-template-rows:262px 38px !important;
    border-right:1px dotted rgba(148,163,184,.28);
}
.sales-platform-activity-panel .admin-sales-grouped-day:nth-child(odd) .sales-chart-day-plot{
    background:rgba(241,245,249,.72) !important;
}
.sales-platform-activity-panel .admin-sales-grouped-day:nth-child(even) .sales-chart-day-plot{
    background:#fff !important;
}
.sales-platform-activity-panel .admin-sales-grouped-day .sales-chart-day-plot{
    height:262px !important;
    min-height:262px !important;
    overflow:visible !important;
}
.sales-platform-activity-panel .sales-chart-grid-lines{
    height:262px !important;
}
.sales-platform-activity-panel .admin-sales-platform-target>span{
    max-width:none !important;
    width:max-content;
    overflow:visible !important;
    text-overflow:clip !important;
    white-space:nowrap !important;
    z-index:12;
}
.sales-platform-activity-panel .admin-sales-platform-bar-enter{
    transform-origin:50% 100%;
    animation:adminSalesBarGrow .42s cubic-bezier(.2,.7,.25,1) both;
}

/* Sales tooltip follows the new platform count/target chart rather than the old
   Good/Bad/Unreviewed stack. */
.sales-platform-tooltip-grid{
    grid-template-columns:1fr 1fr;
}
.sales-chart-tooltip-platform{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    border-left:2px solid #cbd5e1;
    padding-left:6px;
}
.sales-chart-tooltip-platform.platform-facebook{border-left-color:#2563eb;}
.sales-chart-tooltip-platform.platform-instagram{border-left-color:#ec4899;}
.sales-chart-tooltip-platform.platform-offerup{border-left-color:#10b981;}
.sales-chart-tooltip-platform.platform-craigslist{border-left-color:#9333ea;}
.sales-chart-tooltip-platform.is-focus{
    background:#f8fafc;
}
.sales-chart-tooltip-platform em{
    color:#64748b;
    font-style:normal;
    font-weight:800;
}
.sales-chart-tooltip-platform b{
    color:#0f172a;
    font-weight:900;
}

@media(max-width:760px){
    .sales-platform-activity-panel .sales-chart-shell{
        grid-template-columns:36px minmax(0,1fr) !important;
        gap:4px !important;
    }
    .sales-platform-activity-panel .admin-sales-platform-target>span{
        font-size:6px !important;
    }
    .sales-platform-activity-panel .admin-sales-platform-bar b{
        font-size:6px;
    }
}

@media(prefers-reduced-motion:reduce){
    #adminSalesDirectoryTools .admin-sales-post-search-results:not(.hidden),
    #salesPostSearchPanel .sales-post-search-results:not(.hidden),
    .dashboard-sticky-search-results:not(.hidden),
    .sales-vq-edit,
    .sales-image-lightbox:not(.hidden),
    .sales-image-lightbox:not(.hidden) img,
    .sales-platform-activity-panel .admin-sales-platform-bar-enter{
        animation:none !important;
    }
}


/* v0.2.279 — Keep numeric 0 in Settings; show "Limit unset" on the chart instead. */
.chart-platform-legend-item{
    display:inline-flex !important;
    align-items:center;
    gap:4px;
    min-width:0;
}
.chart-platform-legend-item>b{
    font-weight:800;
}
.chart-platform-limit-state{
    display:inline-block;
    margin-left:2px;
    padding:1px 4px;
    border:1px solid #dbe3ee;
    border-radius:3px;
    background:#f8fafc;
    color:#64748b;
    font-size:7px;
    font-weight:800;
    line-height:1.2;
    white-space:nowrap;
}
.chart-platform-limit-state.is-unset{
    border-style:dashed;
    background:#fff;
    color:#94a3b8;
}

.admin-sales-target-unset-note{
    position:absolute;
    z-index:13;
    top:5px;
    left:5px;
    display:inline-flex;
    align-items:center;
    gap:0;
    max-width:calc(100% - 10px);
    padding:2px 4px;
    border:1px dashed #cbd5e1;
    border-radius:3px;
    background:rgba(255,255,255,.94);
    font-size:6.5px;
    font-weight:900;
    line-height:1.15;
    white-space:nowrap;
    pointer-events:none;
}
.admin-sales-target-unset-part.platform-facebook{color:#2563eb;}
.admin-sales-target-unset-part.platform-instagram{color:#ec4899;}
.admin-sales-target-unset-part.platform-offerup{color:#10b981;}
.admin-sales-target-unset-part.platform-craigslist{color:#9333ea;}
.admin-sales-target-unset-separator{
    padding:0 2px;
    color:#94a3b8;
}

@media(max-width:640px){
    .chart-platform-legend-item{
        gap:3px;
    }
    .chart-platform-limit-state{
        font-size:6.5px;
        padding:1px 3px;
    }
    .admin-sales-target-unset-note{
        font-size:6px;
    }
}


/* v0.2.280 — Make target-unset state impossible to miss.
   The old tiny inline text was too easy to confuse with a target-line label. */
.chart-platform-limit-state{
    min-width:38px;
    padding:2px 5px !important;
    border-radius:4px !important;
    font-size:7.5px !important;
    font-weight:900 !important;
    letter-spacing:.02em;
    text-align:center;
}
.chart-platform-limit-state.is-unset{
    border:1px solid #f59e0b !important;
    background:#fff7ed !important;
    color:#9a3412 !important;
}

.admin-sales-target-unset-note{
    position:absolute;
    z-index:30;
    top:6px;
    left:6px;
    right:6px;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:4px;
    width:auto;
    max-width:none;
    padding:5px 6px;
    border:1px solid #f59e0b;
    border-radius:4px;
    background:rgba(255,247,237,.97);
    box-shadow:0 3px 10px rgba(154,52,18,.10);
    font-size:7px;
    font-weight:900;
    line-height:1.15;
    white-space:normal;
    pointer-events:none;
}
.admin-sales-target-unset-title{
    display:inline-flex;
    align-items:center;
    min-height:14px;
    padding:1px 5px;
    border-radius:3px;
    background:#9a3412;
    color:#fff;
    font-size:7px;
    font-weight:900;
    letter-spacing:.05em;
    line-height:1;
}
.admin-sales-target-unset-chips{
    display:flex;
    flex-wrap:wrap;
    gap:3px 4px;
    width:100%;
}
.admin-sales-target-unset-chip{
    display:inline-flex;
    align-items:center;
    gap:3px;
    min-height:16px;
    padding:2px 4px;
    border:1px solid currentColor;
    border-radius:3px;
    background:#fff;
    font-size:7px;
    line-height:1;
    white-space:nowrap;
}
.admin-sales-target-unset-chip>b{
    font:inherit;
    font-weight:900;
}
.admin-sales-target-unset-chip>strong{
    padding-left:3px;
    border-left:1px solid currentColor;
    font:inherit;
    font-weight:900;
    letter-spacing:.03em;
}
.admin-sales-target-unset-chip.platform-facebook{color:#2563eb;}
.admin-sales-target-unset-chip.platform-instagram{color:#db2777;}
.admin-sales-target-unset-chip.platform-offerup{color:#059669;}
.admin-sales-target-unset-chip.platform-craigslist{color:#7e22ce;}

@media(max-width:640px){
    .admin-sales-target-unset-note{
        top:4px;
        left:4px;
        right:4px;
        padding:4px;
        gap:3px;
    }
    .admin-sales-target-unset-title,
    .admin-sales-target-unset-chip{
        font-size:6.5px;
    }
}


/* v0.2.283 — show an explicit zero-level UNSET target line after the drop. */
.admin-sales-platform-target.is-zero-target{
    z-index:7;
    border-top:1.5px dashed #f59e0b;
    color:#f59e0b;
}
.admin-sales-platform-target.is-zero-target>span{
    top:3px;
    bottom:auto;
    background:rgba(255,247,237,.96);
    border:1px solid rgba(245,158,11,.45);
    color:#9a3412;
}
.admin-sales-platform-target-step.is-unset-drop{
    border-left-width:2px;
}
.admin-sales-platform-target.is-zero-target .admin-sales-target-label-part.platform-facebook{color:#2563eb;}
.admin-sales-platform-target.is-zero-target .admin-sales-target-label-part.platform-instagram{color:#ec4899;}
.admin-sales-platform-target.is-zero-target .admin-sales-target-label-part.platform-offerup{color:#10b981;}
.admin-sales-platform-target.is-zero-target .admin-sales-target-label-part.platform-craigslist{color:#9333ea;}
@media(max-width:640px){
    .admin-sales-platform-target.is-zero-target>span{top:2px;}
}


/* v0.2.284 — visual zero follows the same 3px convention as zero-post mini bars.
   The UNSET line must be visibly ABOVE the 0-axis, not hidden on the axis itself. */
.admin-sales-platform-target.is-zero-target{
    z-index:9 !important;
    border-top:2px dashed #f59e0b !important;
}
.admin-sales-platform-target.is-zero-target>span{
    top:auto !important;
    bottom:4px !important;
    padding:2px 4px !important;
    border:1px solid rgba(245,158,11,.55) !important;
    background:rgba(255,247,237,.97) !important;
    color:#9a3412 !important;
    font-size:7px !important;
    font-weight:900 !important;
    line-height:1 !important;
}
.admin-sales-platform-target-step.is-unset-drop{
    z-index:9 !important;
    border-left-width:2px !important;
}


/* v0.2.287 — Human-readable Help + smooth section navigation. */
.app-help-page{
    opacity:0;
    transform:translateY(-8px);
}
.app-help-page.is-ready{
    opacity:1;
    transform:translateY(0);
    transition:
        opacity .22s ease-out,
        transform .24s cubic-bezier(.2,.72,.25,1);
}
.app-help-page .section{
    scroll-margin-top:72px;
    transition:
        opacity .16s ease,
        transform .20s cubic-bezier(.2,.72,.25,1),
        border-color .18s ease,
        box-shadow .18s ease;
}
.app-help-page .section.is-help-leaving{
    opacity:.72;
    transform:translateY(-4px);
}
.app-help-page .section.is-help-arriving{
    animation:helpSectionArrive .30s cubic-bezier(.2,.72,.25,1) both;
}
@keyframes helpSectionArrive{
    from{
        opacity:.42;
        transform:translateY(10px);
        box-shadow:0 0 0 rgba(37,99,235,0);
    }
    to{
        opacity:1;
        transform:translateY(0);
        box-shadow:0 8px 22px rgba(37,99,235,.06);
    }
}

.app-help-toc a,
.app-help-page .toc-mobile a{
    transition:
        background .16s ease,
        color .16s ease,
        transform .16s ease,
        box-shadow .16s ease;
}
.app-help-toc a:hover{
    transform:translateX(2px);
}
.app-help-toc a.is-active{
    background:#eff6ff;
    color:#1d4ed8;
    box-shadow:inset 3px 0 0 #2563eb;
    font-weight:800;
}
.app-help-page .toc-mobile a.is-active{
    border-color:#93c5fd;
    background:#eff6ff;
    color:#1d4ed8;
}

.app-help-page .help-lead{
    max-width:860px;
    margin:7px 0 0;
    color:#475467;
    font-size:13px;
    line-height:1.6;
}
.app-help-page .help-rule-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin:10px 0;
}
.app-help-page .help-rule{
    min-width:0;
    padding:13px 14px;
    border:1px solid #dbe4ef;
    border-radius:4px;
    background:#fff;
}
.app-help-page .help-rule-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    margin-bottom:7px;
}
.app-help-page .help-rule-head strong{
    color:#101828;
    font-size:13px;
}
.app-help-page .help-badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:21px;
    padding:3px 7px;
    border:1px solid #cbd5e1;
    border-radius:999px;
    background:#f8fafc;
    color:#475569;
    font-size:8px;
    font-weight:900;
    white-space:nowrap;
}
.app-help-page .help-badge.good{
    border-color:#86efac;
    background:#f0fdf4;
    color:#166534;
}
.app-help-page .help-badge.warn{
    border-color:#fdba74;
    background:#fff7ed;
    color:#9a3412;
}
.app-help-page .help-badge.blue{
    border-color:#93c5fd;
    background:#eff6ff;
    color:#1d4ed8;
}
.app-help-page .help-rule p{
    margin:0;
    color:#475467;
    font-size:12px;
    line-height:1.55;
}
.app-help-page .help-list{
    display:grid;
    gap:6px;
    margin:9px 0 0;
    padding:0;
    list-style:none;
}
.app-help-page .help-list li{
    position:relative;
    padding-left:16px;
    color:#475467;
    font-size:12px;
    line-height:1.5;
}
.app-help-page .help-list li::before{
    content:"";
    position:absolute;
    left:1px;
    top:.58em;
    width:6px;
    height:6px;
    border-radius:50%;
    background:#2563eb;
}
.app-help-page .help-list.good li::before{background:#16a34a;}
.app-help-page .help-list.warn li::before{background:#f59e0b;}

.app-help-page .help-flow{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px;
    margin:12px 0 2px;
}
.app-help-page .help-flow-step{
    min-width:0;
    padding:12px;
    border:1px solid #dbe4ef;
    border-radius:4px;
    background:#fff;
}
.app-help-page .help-flow-step .n{
    display:inline-grid;
    place-items:center;
    width:22px;
    height:22px;
    margin-bottom:7px;
    border-radius:50%;
    background:#2563eb;
    color:#fff;
    font-size:10px;
    font-weight:900;
}
.app-help-page .help-flow-step strong{
    display:block;
    margin-bottom:4px;
    color:#101828;
    font-size:12px;
}
.app-help-page .help-flow-step p{
    margin:0;
    color:#475467;
    font-size:11.5px;
    line-height:1.5;
}
.app-help-page .help-kicker{
    margin:0 0 4px;
    color:#2563eb;
    font-size:9px;
    font-weight:900;
    letter-spacing:.07em;
    text-transform:uppercase;
}
.app-help-page .help-plain-table td:first-child{
    width:150px;
    color:#101828;
    font-weight:800;
}
.app-help-page .help-plain-table td{
    vertical-align:top;
}
.app-help-page .help-do,
.app-help-page .help-dont{
    margin:9px 0;
    padding:10px 12px;
    border-left:3px solid #16a34a;
    background:#f0fdf4;
    color:#334155;
    font-size:12px;
    line-height:1.55;
}
.app-help-page .help-dont{
    border-left-color:#f59e0b;
    background:#fff7ed;
}
@media(max-width:900px){
    .app-help-page .help-rule-grid{
        grid-template-columns:1fr;
    }
    .app-help-page .help-flow{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:560px){
    .app-help-page .help-flow{
        grid-template-columns:1fr;
    }
}
@media(prefers-reduced-motion:reduce){
    .app-help-page,
    .app-help-page.is-ready,
    .app-help-page .section,
    .app-help-page .section.is-help-arriving,
    .app-help-page .section.is-help-leaving,
    .app-help-toc a,
    .app-help-page .toc-mobile a{
        animation:none !important;
        transition:none !important;
        transform:none !important;
    }
}

/* --------------------------------------------------------------------------
 * v0.2.292 — AJAX Delete Request Message Center modal
 * EN: Admin delete requests live in one centered message-center popup. Each
 * request and the bulk Approve & Delete All action complete without reloads.
 * 中文：管理员删除请求统一进入居中消息弹窗；单条及全部批准删除均使用 AJAX，
 * 不刷新页面。
 * ----------------------------------------------------------------------- */
body.admin-info-center-open{overflow:hidden;}
#adminInfoPanel.admin-info-center{
    position:fixed;
    inset:0;
    z-index:4800;
    width:auto;
    height:auto;
    display:grid;
    place-items:center;
    padding:24px;
    color:#172033;
}
#adminInfoPanel.admin-info-center.hidden{display:none;}
.admin-info-center-backdrop{
    position:absolute;
    inset:0;
    background:rgba(15,23,42,.58);
}
#adminInfoPanel .admin-info-dialog{
    position:relative;
    z-index:1;
    width:min(760px,calc(100vw - 32px));
    max-height:min(820px,calc(100vh - 32px));
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    box-shadow:0 24px 70px rgba(15,23,42,.28);
}
#adminInfoPanel .admin-info-head{
    flex:0 0 auto;
    padding:16px 18px;
}
#adminInfoPanel .admin-info-head strong{
    font-size:18px;
    line-height:1.25;
}
.admin-info-close{
    width:36px;
    height:36px;
    flex:0 0 36px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#334155;
    font-size:22px;
    line-height:1;
    cursor:pointer;
}
.admin-info-close:hover,
.admin-info-close:focus-visible{
    border-color:#94a3b8;
    background:#f8fafc;
    outline:none;
}
.admin-info-toolbar{
    flex:0 0 auto;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:10px 18px;
    border-bottom:1px solid #e2e8f0;
    background:#fff;
}
.admin-info-toolbar>span{
    color:#64748b;
    font-size:10px;
    font-weight:800;
}
#adminInfoApproveAll{
    min-height:34px;
    white-space:nowrap;
}
.admin-info-bulk-status{
    flex:0 0 auto;
    min-height:0;
    padding:0 18px;
    color:#64748b;
    font-size:10px;
    line-height:1.4;
}
.admin-info-bulk-status:not(:empty){padding-top:8px;padding-bottom:8px;border-bottom:1px solid #eef2f7;}
.admin-info-bulk-status.error{color:#b42318;}
.admin-info-bulk-status.ok{color:#166534;}
#adminInfoPanel .admin-info-list{
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    overflow:auto;
    padding:10px;
    background:#f8fafc;
}
#adminInfoPanel .admin-info-item{
    margin:0 0 10px;
    border:1px solid #dbe3ee;
    border-radius:4px;
    background:#fff;
}
#adminInfoPanel .admin-info-item:last-child{margin-bottom:0;}
#adminInfoPanel .admin-info-post-open{
    padding:12px 14px 10px;
}
#adminInfoPanel .admin-info-summary-reason{
    white-space:normal;
    overflow-wrap:anywhere;
}
#adminInfoPanel .admin-info-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:8px;
    padding:0 14px 12px;
}
#adminInfoPanel .admin-info-actions .btn{
    min-height:32px;
    margin:0;
}
#adminInfoPanel .admin-info-action-status{
    min-height:0;
    padding:0 14px;
    color:#64748b;
    font-size:10px;
    line-height:1.4;
}
#adminInfoPanel .admin-info-action-status:not(:empty){padding-bottom:10px;}
#adminInfoPanel .admin-info-action-status.error{color:#b42318;}
#adminInfoPanel .admin-info-action-status.ok{color:#166534;}
#adminInfoPanel .admin-info-item.is-busy{opacity:.72;}
#adminInfoPanel .admin-info-empty{
    padding:38px 18px;
    border:1px dashed #cbd5e1;
    border-radius:4px;
    background:#fff;
    color:#64748b;
    text-align:center;
}

/* v0.2.300 Admin Settings: Sales directory sync + single Active/Archived state */
.sales-access-panel{display:grid;gap:16px}.sales-access-head{align-items:flex-start;gap:16px}.sales-access-head h2{margin-bottom:6px}.sales-access-counts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.sales-access-counts span{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid var(--line);border-radius:4px;background:#f8fafc;font-size:11px;color:var(--muted)}.sales-access-counts b{color:var(--text)}.sales-directory-sync-card{border:1px solid var(--line);border-radius:4px;background:#f8fafc;padding:14px;display:grid;gap:12px}.sales-directory-sync-copy{display:grid;gap:4px}.sales-directory-sync-copy strong{font-size:13px}.sales-directory-sync-copy p{margin:0;color:var(--muted);font-size:11px;line-height:1.5}.sales-directory-url-form{display:grid;gap:6px}.sales-directory-url-form label{margin:0}.sales-directory-url-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.sales-directory-sync-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.sales-directory-sync-actions form{margin:0}.sales-directory-last-sync{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}.sales-directory-last-sync strong{color:var(--text);font-size:11px}.sales-directory-summary{display:flex;gap:7px;flex-wrap:wrap}.sales-directory-summary span{padding:6px 8px;border-radius:4px;background:#fff;border:1px solid var(--line);font-size:10px;color:var(--muted)}.sales-directory-summary b{color:var(--text)}.sales-access-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);padding-bottom:8px}.sales-access-tabs a{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border-radius:4px;color:var(--muted);font-size:11px;font-weight:800}.sales-access-tabs a.active{background:#eaf1ff;color:#1d4ed8}.sales-access-tabs b{display:inline-flex;min-width:19px;height:19px;align-items:center;justify-content:center;border-radius:4px;background:#fff;border:1px solid var(--line);font-size:9px}.sales-access-list{display:grid;gap:8px}.sales-access-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:4px;background:#fff;padding:11px 12px}.sales-access-row.archived{background:#f8fafc}.sales-access-person{min-width:0;display:grid;gap:3px}.sales-access-person strong{font-size:12px;overflow-wrap:anywhere}.sales-access-person span,.sales-access-person small{font-size:10px;color:var(--muted);overflow-wrap:anywhere}.sales-access-row>form{margin:0}.sales-access-empty{padding:18px;border:1px dashed #cbd5e1;border-radius:4px;color:var(--muted);font-size:11px;text-align:center}

/* --------------------------------------------------------------------------
 * v0.2.301 — Compact Sales access cards
 * EN: Active/Archived Sales use a dense responsive card grid so the directory
 * consumes minimal vertical space without changing access behavior.
 * 中文：Active/Archived Sales 改为紧凑响应式卡片网格，仅调整显示，不修改权限逻辑。
 * ----------------------------------------------------------------------- */
.sales-access-list{
    grid-template-columns:repeat(auto-fill,minmax(185px,1fr));
    gap:8px;
    align-items:stretch;
}
.sales-access-row{
    min-width:0;
    min-height:92px;
    display:grid;
    grid-template-rows:minmax(0,1fr) auto;
    align-items:start;
    justify-content:stretch;
    gap:8px;
    padding:9px 10px;
    box-sizing:border-box;
}
.sales-access-row.archived{
    background:#f8fafc;
}
.sales-access-person{
    min-width:0;
    gap:2px;
    align-content:start;
}
.sales-access-person strong{
    display:block;
    font-size:12px;
    line-height:1.25;
    white-space:normal;
    overflow-wrap:anywhere;
}
.sales-access-person span,
.sales-access-person small{
    display:block;
    font-size:9px;
    line-height:1.3;
    white-space:normal;
    overflow-wrap:anywhere;
}
.sales-access-row>form{
    width:auto;
    margin:0;
    justify-self:start;
}
.sales-access-row>form .tiny{
    width:auto;
    min-height:28px;
    padding:4px 8px;
    font-size:9px;
    line-height:1.1;
    white-space:nowrap;
}
.sales-access-empty{
    grid-column:1/-1;
}

/* --------------------------------------------------------------------------
 * v0.2.302 — Sales access instant browser
 * EN: Search + client-side Active/Archived tabs + AJAX card moves.
 * 中文：Sales 搜索、Active/Archived 无刷新切换，以及 AJAX Archive/Unarchive。
 * ----------------------------------------------------------------------- */
.sales-access-browser{
    display:grid;
    gap:10px;
}
.sales-access-browser-tools{
    display:flex;
    align-items:end;
    justify-content:space-between;
    gap:10px;
    border-bottom:1px solid var(--line);
    padding-bottom:8px;
}
.sales-access-tabs{
    flex:0 0 auto;
    border-bottom:0;
    padding-bottom:0;
}
.sales-access-tabs button{
    appearance:none;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    min-height:36px;
    padding:7px 10px;
    border:0;
    border-radius:4px;
    background:transparent;
    color:var(--muted);
    font:inherit;
    font-size:11px;
    font-weight:800;
    line-height:1;
    cursor:pointer;
}
.sales-access-tabs button:hover,
.sales-access-tabs button:focus-visible{
    background:#f3f6fb;
    color:var(--text);
    outline:none;
}
.sales-access-tabs button.active{
    background:#eaf1ff;
    color:#1d4ed8;
}
.sales-access-tabs button b{
    display:inline-flex;
    min-width:19px;
    height:19px;
    align-items:center;
    justify-content:center;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    font-size:9px;
    line-height:1;
}
.sales-access-search{
    width:min(310px,40vw);
    display:grid;
    gap:4px;
    margin:0;
}
.sales-access-search>span{
    font-size:9px;
    font-weight:800;
    color:var(--muted);
}
.sales-access-search input{
    width:100%;
    min-width:0;
    height:36px;
    padding:7px 10px;
    border:1px solid var(--line);
    border-radius:4px;
    background:#fff;
    color:var(--text);
    font-size:11px;
    box-sizing:border-box;
}
.sales-access-search input:focus{
    border-color:#93b4ff;
    box-shadow:0 0 0 2px rgba(37,99,235,.08);
    outline:none;
}
.sales-access-view[hidden],
.sales-access-row[hidden],
.sales-access-empty[hidden]{
    display:none !important;
}
.sales-access-row.is-busy{
    opacity:.62;
    pointer-events:none;
}

/* v0.2.304 — Compact Sales scope navigation.
   Keep Active easy to identify while Archived stays deliberately low-emphasis. */
.admin-sales-progress-section > .admin-sales-directory-tools{
    display:grid !important;
    grid-template-columns:auto minmax(220px,280px) minmax(0,1fr) !important;
    align-items:end !important;
    gap:10px !important;
}
.admin-sales-scope-nav{
    display:inline-flex;
    gap:3px;
    align-items:center;
    min-width:0;
    align-self:end;
}
.admin-sales-scope-link{
    min-height:28px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:4px;
    padding:3px 7px;
    border:1px solid #d6deea;
    border-radius:4px;
    background:#fff;
    color:#475569;
    font-size:8px;
    font-weight:850;
    line-height:1;
    text-decoration:none;
    white-space:nowrap;
    box-sizing:border-box;
}
.admin-sales-scope-link:hover,
.admin-sales-scope-link:focus-visible{
    border-color:#b9c9e8;
    background:#f8fbff;
    color:#1d4ed8;
    outline:none;
}
.admin-sales-scope-link.active{
    border-color:#9bb8ff;
    background:#eef4ff;
    color:#1d4ed8;
}
.admin-sales-scope-link.archived{
    border-color:transparent;
    background:transparent;
    color:#64748b;
    font-weight:750;
}
.admin-sales-scope-link.archived:hover,
.admin-sales-scope-link.archived:focus-visible{
    border-color:#d8dee8;
    background:#f8fafc;
    color:#475569;
}
.admin-sales-scope-link.archived.active{
    border-color:#d8dee8;
    background:#f4f6f8;
    color:#475569;
}
.admin-sales-scope-link b{
    min-width:15px;
    height:15px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0 3px;
    border:1px solid currentColor;
    border-radius:4px;
    background:rgba(255,255,255,.8);
    font-size:7px;
    line-height:1;
    box-sizing:border-box;
}
.admin-sales-scope-link.archived b{
    opacity:.72;
}
.admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-search-field{
    width:auto !important;
    max-width:none !important;
    min-width:0 !important;
    flex:none !important;
}
.admin-sales-progress-section > .admin-sales-directory-tools .admin-sales-location-filter-wrap{
    width:auto !important;
    max-width:none !important;
    min-width:0 !important;
    margin-left:0 !important;
    flex:none !important;
}

/* v0.2.305 — Dashboard directory controls.
   Search stays leftmost; the selected Sales scope is unmistakable without
   making the archived option visually dominant when it is not selected. */
.admin-sales-progress-section > .admin-sales-directory-tools{
    grid-template-columns:minmax(250px,320px) auto minmax(0,1fr) !important;
}
.admin-sales-scope-link.active:not(.archived){
    border-color:#2563eb !important;
    background:#2563eb !important;
    color:#fff !important;
    box-shadow:0 1px 2px rgba(37,99,235,.18);
}
.admin-sales-scope-link.active:not(.archived) b{
    border-color:rgba(255,255,255,.72) !important;
    background:rgba(255,255,255,.14) !important;
    color:#fff !important;
}
.admin-sales-scope-link.archived.active{
    border-color:#64748b !important;
    background:#64748b !important;
    color:#fff !important;
    box-shadow:0 1px 2px rgba(71,85,105,.14);
}
.admin-sales-scope-link.archived.active b{
    border-color:rgba(255,255,255,.68) !important;
    background:rgba(255,255,255,.12) !important;
    color:#fff !important;
    opacity:1 !important;
}

/* v0.2.306 — Settings page hierarchy: API Providers belongs to its own lower section. */
.settings-page-head{
    margin-bottom:18px;
}
.provider-section-head{
    margin-top:6px;
    margin-bottom:14px;
    padding-top:2px;
}
.provider-section-title{
    margin:3px 0 8px;
    font-size:24px;
    line-height:1.15;
}

/* v0.2.308 — Application Settings browser-tab icon upload. */
#application-settings .application-icon-setting{
    display:grid;
    gap:6px;
    width:100%;
    min-width:0;
}
#application-settings .application-icon-control-row{
    display:grid;
    grid-template-columns:44px minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
    width:100%;
    min-width:0;
}
#application-settings .application-icon-preview-wrap{
    width:44px;
    height:44px;
    display:grid;
    place-items:center;
    border:1px solid #d7dee8;
    border-radius:8px;
    background:#f8fafc;
    overflow:hidden;
    box-sizing:border-box;
}
#application-settings .application-icon-preview{
    display:block;
    width:32px;
    height:32px;
    object-fit:contain;
}
#application-settings .application-icon-upload-form{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:stretch;
    gap:8px;
}
#application-settings .application-icon-upload-form input[type="file"]{
    width:100%;
    min-width:0;
    min-height:38px;
    margin:0;
    padding:6px 8px;
    box-sizing:border-box;
}
#application-settings .application-icon-reset-form{
    display:block;
    width:auto;
}
#application-settings .application-icon-reset{
    height:38px;
    min-height:38px;
    margin:0;
    white-space:nowrap;
}
