:root{--bg-page:#f8f9fa;--bg-panel:#fff;--bg-panel-raised:#fff;--bg-input:#fff;--border-subtle:#dadce0;--border-focus:#1a73e8;--text-primary:#202124;--text-secondary:#5f6368;--text-muted:#80868b;--accent-primary:#1a73e8;--accent-primary-hover:#1765cc;--accent-danger:#d93025;--accent-warning:#e37400;--accent-success:#188038;--font-display:Roboto,Arial,sans-serif;--font-body:Roboto,Arial,sans-serif;--font-mono:"Roboto Mono",Consolas,monospace;--radius-sm:6px;--radius-md:8px;--radius-lg:12px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg-page);color:var(--text-primary);font-family:var(--font-body);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}.page-shell{max-width:1120px;margin:0 auto;padding:32px 20px 72px}.page-header{margin-bottom:24px}.page-eyebrow{margin:0 0 6px;color:var(--accent-primary);letter-spacing:.08em;text-transform:uppercase}.page-title{margin:0 0 6px;font-size:28px;font-weight:500;letter-spacing:-.02em}.page-subtitle{margin:0;color:var(--text-secondary)}.broadcast-form{display:flex;flex-direction:column;gap:16px}.panel{padding:22px 24px;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:0 1px 2px rgba(60,64,67,.08)}.panel-title{display:flex;align-items:center;gap:11px;margin:0 0 16px;color:var(--text-primary);font-size:16px;font-weight:500}.panel-number{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;color:#fff;background:var(--accent-primary);border-radius:50%}.panel-limit{margin-left:auto;color:var(--text-muted);font-size:11px;font-weight:400}.file-input,.number-input,.select-input,.textarea-input{width:100%;padding:11px 12px;color:var(--text-primary);background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);outline:none;transition:border-color .15s,box-shadow .15s}.file-input:hover,.number-input:hover,.select-input:hover,.textarea-input:hover{border-color:#bdc1c6}.number-input:focus,.select-input:focus,.textarea-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 1px var(--border-focus)}.select-input:disabled{color:var(--text-muted);background:#f1f3f4;cursor:not-allowed}.textarea-input{resize:vertical;line-height:1.6}.textarea-message{min-height:140px}.file-input{padding:8px;cursor:pointer}.tab-switch{display:inline-flex;gap:2px;padding:3px;margin-bottom:12px;background:#f1f3f4;border-radius:9px}.tab-btn{padding:7px 14px;color:var(--text-secondary);background:transparent;border:0;border-radius:7px;cursor:pointer;font-size:12.5px}.tab-btn-active{box-shadow:0 1px 2px rgba(60,64,67,.18);font-weight:500}.excel-upload-box{display:flex;flex-direction:column;gap:8px}.excel-upload-row{display:flex;align-items:center;gap:10px}.list-status-row{display:flex;align-items:flex-start;flex-direction:column;gap:6px;margin-top:10px}.count-badge{padding:3px 9px;color:var(--text-secondary);background:#f1f3f4;border-radius:999px;font-size:11.5px}.count-badge-error{color:var(--accent-danger);background:#fce8e6}.btn{padding:9px 15px;color:var(--text-primary);background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;font-size:12.5px;font-weight:500;white-space:nowrap;transition:background .15s,border-color .15s,box-shadow .15s}.btn:hover:not(:disabled){background:#f8fafd;border-color:#c6cbd1}.btn:focus-visible,.history-filters button:focus-visible,.result-filter-btn:focus-visible,.tab-btn:focus-visible{outline:2px solid #8ab4f8;outline-offset:2px}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{color:#fff;background:var(--accent-primary);border-color:var(--accent-primary);box-shadow:0 1px 2px rgba(60,64,67,.2)}.btn-primary:hover:not(:disabled){background:var(--accent-primary-hover);border-color:var(--accent-primary-hover);box-shadow:0 1px 3px rgba(60,64,67,.3)}.btn-lg{padding:11px 22px;font-size:14px}.btn-dark,.btn-ghost,.btn-secondary{color:#185abc;border-color:var(--border-subtle)}.btn-danger-outline{color:#b3261e;background:#fff;border-color:#f3b7b3}.btn-danger-outline:hover:not(:disabled){background:#fce8e6}.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.toolbar,.toolbar-item{position:relative}.dropdown-panel{position:absolute;z-index:20;top:calc(100% + 6px);left:0;min-width:320px;max-height:320px;padding:6px;overflow-y:auto;background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:0 8px 24px rgba(60,64,67,.22)}.dropdown-item{display:flex;align-items:flex-start;gap:8px;width:100%;padding:9px 10px;color:var(--text-primary);background:transparent;border:0;border-radius:6px;cursor:pointer;text-align:left;font-family:var(--font-mono);font-size:12px}.dropdown-item:hover{background:#f1f3f4}.dropdown-item-index{flex-shrink:0;color:var(--accent-primary);font-weight:700}.dropdown-item-text{word-break:break-word}.notice-box{padding:11px 13px;margin-bottom:14px;color:#3c4043;background:#e8f0fe;border-left:3px solid #1a73e8;border-radius:4px;font-size:12.5px}.link-warning{margin:10px 0 0;color:var(--accent-danger);font-size:12px;font-weight:600}.field-hint,.field-hint-inline{color:var(--text-muted);font-size:12px}.field-hint{margin:6px 0 0}.field-error{color:var(--accent-danger)}.field-error,.field-warning{margin:4px 0 0;font-size:12px}.field-warning{color:var(--accent-warning)}.attachment-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.attachment-thumb{position:relative;width:76px;height:76px;overflow:hidden;border:1px solid var(--border-subtle);border-radius:var(--radius-sm)}.attachment-thumb img{display:block;width:100%;height:100%;object-fit:cover}.attachment-remove-btn{position:absolute;top:3px;right:3px;display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#fff;background:rgba(32,33,36,.8);border:0;border-radius:50%;cursor:pointer}.speed-row{display:flex;gap:24px}.speed-field{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:13px}.number-input{width:80px}.submit-bar{display:flex;align-items:center;gap:10px}.submit-error{margin-top:4px}.status-banner{padding:13px 15px;border:1px solid transparent;border-radius:var(--radius-md);font-size:13px}.status-banner-processing{color:#7a4d00;background:#fef7e0;border-color:#f9d990}.status-banner-done{color:#137333;background:#e6f4ea;border-color:#a8dab5}.status-banner-error{color:#b3261e;background:#fce8e6;border-color:#f3b7b3}code{padding:1px 5px;background:#f1f3f4;border-radius:4px;font-family:var(--font-mono)}.result-dashboard{padding:24px;background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:0 1px 2px rgba(60,64,67,.08)}.result-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.result-kicker{margin:0 0 4px;color:var(--accent-primary);font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.result-title{margin:0;font-size:21px;font-weight:500}.result-meta{margin:6px 0 0;color:var(--text-muted);font-size:11.5px}.result-complete-pill{flex-shrink:0;padding:6px 10px;color:#137333;background:#e6f4ea;border-radius:999px;font-size:11.5px;font-weight:500}.result-metrics{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.result-metric{min-height:90px;padding:14px;background:#fff;border:1px solid var(--border-subtle);border-radius:10px}.result-metric-label{display:block;min-height:34px;color:var(--text-secondary);font-size:11.5px}.result-metric-value-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.result-metric-value-row strong{font-size:26px;font-weight:500}.result-metric-value-row span{color:var(--text-muted);font-size:10.5px;font-weight:500}.result-metric-violet{border-top:3px solid #7e57c2}.result-metric-cyan{border-top:3px solid #1a73e8}.result-metric-success{border-top:3px solid #188038}.result-progress-block{margin:18px 0 22px}.result-progress-label{display:flex;justify-content:space-between;margin-bottom:7px;color:var(--text-secondary);font-size:11.5px}.result-progress-label strong{color:#137333}.result-progress-track{height:7px;overflow:hidden;background:#e8eaed;border-radius:999px}.result-progress-fill{display:block;height:100%;background:#188038;border-radius:inherit;transition:width .4s ease}.history-card,.result-table-card{overflow:hidden;background:#fff;border:1px solid var(--border-subtle);border-radius:10px}.result-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-bottom:1px solid var(--border-subtle)}.result-search-wrap{display:flex;align-items:center;gap:8px;width:min(260px,100%);padding:0 10px;color:var(--text-muted);border:1px solid var(--border-subtle);border-radius:8px}.result-search-wrap:focus-within{border-color:var(--accent-primary);box-shadow:0 0 0 1px var(--accent-primary)}.result-search{width:100%;padding:8px 0;color:var(--text-primary);background:transparent;border:0;outline:0;font-size:12px}.result-search::placeholder{color:var(--text-muted)}.result-filters{display:flex;gap:3px;padding:3px;background:#f1f3f4;border-radius:8px}.result-filter-btn{padding:6px 9px;color:var(--text-secondary);background:transparent;border:0;border-radius:6px;cursor:pointer;font-size:10.5px}.result-filter-btn-active{background:#fff;box-shadow:0 1px 2px rgba(60,64,67,.18)}.result-table-scroll{overflow-x:auto}.history-table,.result-table{width:100%;border-collapse:collapse;white-space:nowrap}.result-table{font-size:12px}.history-table th,.result-table th{padding:11px 14px;color:#5f6368;background:#f8f9fa;border-bottom:1px solid var(--border-subtle);text-align:left;font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.history-table td,.result-table td{padding:12px 14px;color:var(--text-secondary);border-bottom:1px solid #edf0f2}.history-table tr:hover,.result-table tbody tr:hover{background:#f8fafd}.result-index{color:var(--text-muted)!important}.result-phone{color:var(--text-primary)!important;font-family:var(--font-mono)}.result-status{display:inline-flex;align-items:center;gap:6px;font-size:11px}.result-status-dot{width:6px;height:6px;border-radius:50%}.result-status-success{color:#137333}.result-status-success .result-status-dot{background:#188038}.result-status-pending{color:#b06000}.result-status-pending .result-status-dot{background:#e37400}.result-overall{display:inline-block;padding:4px 8px;border-radius:6px;font-size:10.5px;font-weight:500}.result-overall-done{color:#137333;background:#e6f4ea}.result-overall-attention{color:#7a4d00;background:#fef7e0}.result-table-footer{padding:9px 14px;color:var(--text-muted);font-size:10.5px;text-align:right}.result-empty{display:flex;align-items:center;flex-direction:column;padding:34px 20px;color:var(--text-muted)}.result-empty>span{font-size:24px}.result-empty strong{margin-top:5px;color:var(--text-secondary)}.result-empty p{margin:3px 0 0;font-size:11.5px}.app-nav{position:-webkit-sticky;position:sticky;top:0;z-index:50;border-bottom:1px solid var(--border-subtle)}.app-nav-inner{justify-content:space-between;max-width:1120px;height:60px;margin:auto;padding:0 20px}.app-brand,.app-nav-inner{display:flex;align-items:center}.app-brand{gap:9px;color:var(--text-primary);text-decoration:none}.app-brand>span{display:grid;place-items:center;width:30px;height:30px;color:#fff;background:#1a73e8;border-radius:8px;font-weight:700}.app-brand strong{font-weight:500}.app-nav-links{display:flex;height:100%;gap:4px}.app-nav-links a{position:relative;display:flex;align-items:center;padding:0 14px;color:var(--text-secondary);text-decoration:none;font-size:12px;font-weight:500}.app-nav-links a:hover{color:#174ea6;background:#f8fafd}.app-nav-links a.active{color:#174ea6}.app-nav-links a.active:after{content:"";position:absolute;right:12px;bottom:0;left:12px;height:3px;background:#1a73e8;border-radius:3px 3px 0 0}.history-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:16px}.history-stat{padding:16px 18px;background:#fff;border:1px solid var(--border-subtle);border-radius:10px;box-shadow:0 1px 2px rgba(60,64,67,.06)}.history-stat span{display:block;color:var(--text-secondary);font-size:11.5px}.history-stat strong{display:block;margin-top:8px;font-size:26px;font-weight:500}.history-stat-warning strong{color:#b06000}.history-stat-success strong{color:#137333}.history-stat-danger strong{color:#b3261e}.history-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px}.history-toolbar h2{margin:0;font-size:16px;font-weight:500}.history-toolbar p{margin:3px 0 0;color:var(--text-muted);font-size:11.5px}.history-filters{display:flex;gap:4px;padding:0 20px 12px;border-bottom:1px solid var(--border-subtle)}.history-filters button{padding:7px 11px;color:var(--text-secondary);background:#fff;border:1px solid transparent;border-radius:999px;cursor:pointer;font-size:11px}.history-filters button:hover{background:#f1f3f4}.history-filters button.active{background:#e8f0fe}.history-table{font-size:11.5px}.history-table td{max-width:220px}.history-table td strong{display:block;color:var(--text-primary);font-weight:500}.history-table td small{color:var(--text-muted)}.history-message{overflow:hidden;text-overflow:ellipsis}.history-status{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;font-size:10.5px;font-weight:500}.history-status i{width:6px;height:6px;border-radius:50%}.history-status-processing{color:#7a4d00;background:#fef7e0}.history-status-processing i{background:#e37400}.history-status-done{color:#137333;background:#e6f4ea}.history-status-done i{background:#188038}.history-status-error{color:#b3261e;background:#fce8e6}.history-status-error i{background:#d93025}.history-open{color:#1a73e8;text-decoration:none;font-size:10.5px;font-weight:500}.history-open:hover{text-decoration:underline}.history-pagination{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;color:var(--text-muted);font-size:10.5px}.history-pagination>div{display:flex;gap:5px}.history-pagination .btn{padding:6px 9px;font-size:10.5px}.history-error{margin:0 20px 12px;padding:9px 11px;color:#b3261e;background:#fce8e6;border-radius:8px}.history-skeleton span{display:block;height:13px;background:#eceff1;border-radius:4px;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.45}}.detail-back{display:inline-block;margin-bottom:16px;color:#1a73e8;text-decoration:none;font-size:12px}.detail-back:hover{text-decoration:underline}.detail-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;margin-bottom:16px;background:#fff;border:1px solid var(--border-subtle);border-radius:10px}.detail-summary>div>span{color:var(--accent-primary);font-size:10px;font-weight:700;letter-spacing:.08em}.detail-summary h2{margin:5px 0 2px;font-size:18px;font-weight:500}.detail-summary p{margin:0;color:var(--text-muted);font-size:11.5px}.detail-state{padding:20px}.detail-state strong{display:block;margin-bottom:4px}.detail-state p{margin:0}.detail-loading{padding:32px;color:var(--text-secondary);text-align:center;background:#fff;border:1px solid var(--border-subtle);border-radius:10px}.history-asset-id{display:block;max-width:190px;margin-top:2px;overflow:hidden;color:var(--text-muted)!important;font-family:var(--font-mono);font-size:10px;text-overflow:ellipsis}.detail-asset-id{margin:4px 0 6px!important;color:var(--text-secondary)!important;font-size:11px!important}.detail-asset-id code{color:#174ea6}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:720px){.page-shell{padding:24px 12px 60px}.panel{padding:18px 16px}.app-nav-inner{align-items:flex-start;flex-direction:column;height:auto;padding:10px 12px}.app-nav-links{width:100%}.app-nav-links a{padding:9px 10px}.history-stats,.result-metrics{grid-template-columns:repeat(2,1fr)}.detail-summary,.history-toolbar,.result-heading-row,.result-toolbar{align-items:flex-start;flex-direction:column}.result-dashboard{padding:18px 12px}.result-search-wrap{width:100%}.history-filters,.result-filters{max-width:100%;overflow-x:auto}.result-filter-btn{flex:1 1}.excel-upload-row,.submit-bar{align-items:stretch;flex-direction:column}.speed-row{align-items:flex-start;flex-direction:column;gap:12px}.dropdown-panel{min-width:min(320px,calc(100vw - 48px))}}body{background:#eef2f6;color:#172033;font-size:14px;letter-spacing:0}body,body *{font-style:normal}.page-shell{max-width:1080px;padding-top:36px}.page-header{padding:0 4px;margin-bottom:26px}.page-eyebrow{color:#185abc;font-size:11px;font-weight:700;letter-spacing:.09em}.page-title{color:#172033;font-size:30px;font-weight:700;line-height:1.2;letter-spacing:-.025em}.page-subtitle{max-width:720px;color:#596579;font-size:14px;line-height:1.6}.app-nav{background:#fff;box-shadow:0 1px 3px rgba(31,45,61,.08)}.app-brand strong{color:#172033;font-size:15px;font-weight:700;letter-spacing:-.01em}.app-nav-links a{font-size:13px;font-weight:600}.panel{position:relative;padding:24px 26px;background:#fff;border-color:#d4dce7;box-shadow:0 2px 7px rgba(45,55,72,.07)}.panel:hover{border-color:#c3cfdd;box-shadow:0 3px 10px rgba(45,55,72,.09)}.panel-title{color:#172033;font-size:17px;font-weight:700;letter-spacing:-.01em}.panel-number{background:#185abc;font-size:12px;font-weight:700;box-shadow:none}.panel-limit{padding:4px 8px;color:#596579;background:#eef2f6;border-radius:999px;font-weight:600}.file-input,.number-input,.select-input,.textarea-input{color:#172033;background:#f8fafc;border-color:#cbd5e1;font-weight:500}.file-input:hover,.number-input:hover,.select-input:hover,.textarea-input:hover{background:#fff;border-color:#94a3b8}.number-input:focus,.select-input:focus,.textarea-input:focus{background:#fff;border-color:#1a73e8;box-shadow:0 0 0 3px rgba(26,115,232,.13)}.result-search::placeholder,.textarea-input::placeholder{color:#8994a5;font-weight:400}.tab-switch{background:#e7ecf3;border:1px solid #d4dce7}.tab-btn{color:#4e5b70;font-weight:600}.tab-btn-active{color:#174ea6;background:#fff;font-weight:700}.notice-box{color:#31445f;background:#edf4ff;border:1px solid #c9dcfa;border-left:4px solid #1a73e8;font-weight:500}.toolbar{padding:12px;background:#f4f7fb;border:1px solid #dce3ec;border-radius:10px}.btn{font-weight:600}.btn-primary{background:#185abc;border-color:#185abc}.btn-primary:hover:not(:disabled){background:#174ea6;border-color:#174ea6}.btn-dark,.btn-ghost,.btn-secondary{color:#174ea6;background:#fff;border-color:#bdc9d8}.btn-dark:hover:not(:disabled),.btn-ghost:hover:not(:disabled),.btn-secondary:hover:not(:disabled){background:#edf4ff;border-color:#8ab4f8}.btn-danger-outline{font-weight:600}.link-warning{display:inline-block;padding:8px 10px;color:#a50e0e;background:#fce8e6;border-radius:6px;line-height:1.45}.count-badge{color:#43516a;background:#e8edf4;font-weight:700}.speed-row{padding:14px;background:#f5f7fa;border:1px solid #dce3ec;border-radius:10px}.speed-field{color:#3e4b60;font-weight:600}.submit-bar{padding:18px 20px;background:#e9eef5;border:1px solid #d4dce7;border-radius:12px}.status-banner{font-weight:600}.result-dashboard{border-color:#ccd6e2;box-shadow:0 2px 8px rgba(45,55,72,.08)}.detail-summary h2,.history-toolbar h2,.result-title{color:#172033;font-weight:700}.history-stat,.result-metric{background:#f8fafc;border-color:#d6dee9;box-shadow:none}.history-stat span,.result-metric-label{color:#526077;font-weight:600}.history-stat strong,.result-metric-value-row strong{color:#172033;font-weight:700}.history-card,.result-table-card{border-color:#ccd6e2;box-shadow:0 2px 7px rgba(45,55,72,.06)}.history-table th,.result-table th{color:#46536a;background:#e9eef5;font-weight:700}.history-table td,.result-table td{color:#4e5b70}.history-table tbody tr:nth-child(2n),.result-table tbody tr:nth-child(2n){background:#fafbfd}.history-table tr:hover,.result-table tbody tr:hover{background:#edf4ff}.history-table td strong,.result-phone{color:#172033!important;font-weight:600!important}.result-toolbar{background:#f8fafc}.result-search-wrap{background:#fff;border-color:#c4cfdd}.result-filters{background:#e7ecf3;border:1px solid #d4dce7}.result-filter-btn{color:#4e5b70;font-weight:600}.result-filter-btn-active{color:#174ea6;font-weight:700}.history-filters{padding-top:12px;background:#f8fafc}.history-filters button{color:#4e5b70;font-weight:600}.history-filters button.active{color:#174ea6;font-weight:700}.detail-summary{border-color:#ccd6e2;box-shadow:0 2px 7px rgba(45,55,72,.06)}.dropdown-panel{border-color:#c7d1de}.dropdown-item{font-weight:500}.field-hint{color:#667085}.field-error,.field-warning{font-weight:600}@media(max-width:720px){.page-title{font-size:25px}.panel{padding:20px 16px}.toolbar{padding:10px}.submit-bar{padding:14px}.page-shell{padding-top:26px}}:root{--font-display:var(--font-be-vietnam-pro),"Segoe UI",Arial,sans-serif;--font-body:var(--font-be-vietnam-pro),"Segoe UI",Arial,sans-serif}body,button,input,select,textarea{font-family:var(--font-body);font-style:normal;font-synthesis:none}.app-brand strong,.detail-summary h2,.history-toolbar h2,.page-title,.panel-title,.result-title{font-family:var(--font-display);font-style:normal;line-height:1.35}.page-title{letter-spacing:-.015em}.panel-title{letter-spacing:-.005em}.field-hint,.history-toolbar p,.notice-box,.page-subtitle,.result-meta{line-height:1.65}input,option,select,textarea{font-style:normal!important}:root{--font-display:"Segoe UI",Arial,"Helvetica Neue",sans-serif;--font-body:"Segoe UI",Arial,"Helvetica Neue",sans-serif}body,button,html,input,option,select,textarea{font-family:Segoe UI,Arial,Helvetica Neue,sans-serif!important;font-style:normal!important;font-synthesis:none}