:root{--bg:#f4f6f8;--card:#fff;--text:#17212b;--muted:#65717c;--line:#dfe4e8;--blue:#1565c0;--green:#1b7f46;--red:#b42318;--amber:#a15c00;--shadow:0 6px 24px rgba(0,0,0,.07)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.topbar{position:sticky;top:0;z-index:20;height:58px;padding:0 18px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.topbar strong{font-size:17px}.actions{display:flex;gap:8px}.page{max-width:1220px;margin:auto;padding:22px 16px 70px}.hidden{display:none!important}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}.col-12{grid-column:span 12}.col-8{grid-column:span 8}.col-6{grid-column:span 6}.col-4{grid-column:span 4}.col-3{grid-column:span 3}@media(max-width:850px){.col-8,.col-6,.col-4,.col-3{grid-column:span 12}.page{padding:12px 10px 60px}}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;box-shadow:var(--shadow)}.card h2,.card h3{margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:12px}.kpi{font-size:28px;font-weight:700}.tabs{display:flex;gap:6px;overflow:auto;margin:0 0 16px;padding-bottom:3px}.tab{white-space:nowrap;border:1px solid var(--line);background:#fff;padding:9px 12px;border-radius:8px;cursor:pointer}.tab.active{background:var(--blue);color:#fff;border-color:var(--blue)}button{border:0;border-radius:7px;padding:9px 12px;background:var(--blue);color:#fff;font-weight:600;cursor:pointer}button.secondary{background:#5d6b78}button.danger{background:var(--red)}button.success{background:var(--green)}button.warn{background:var(--amber)}button.ghost{background:#fff;border:1px solid var(--line);color:var(--text)}button:disabled{opacity:.45;cursor:not-allowed}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:10px}.field{display:flex;flex-direction:column;gap:5px;min-width:160px}.field.grow{flex:1}.field label{font-size:12px;color:var(--muted);font-weight:600}input,select,textarea{width:100%;border:1px solid #cbd3da;border-radius:7px;background:#fff;padding:9px 10px;font:inherit;color:inherit}textarea{min-height:90px;resize:vertical}select[multiple]{min-height:125px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:8px}table{border-collapse:collapse;width:100%;min-width:760px;background:#fff}th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:#f7f9fa;font-size:12px;position:sticky;top:0}.badge{display:inline-block;padding:3px 7px;border-radius:999px;background:#e9eef3;color:#40505e;font-size:11px;font-weight:700;margin-left:8px}.badge.good{background:#e8f5ed;color:var(--green)}.badge.bad{background:#fdecea;color:var(--red)}.badge.wait{background:#fff2dd;color:var(--amber)}.notice{border-left:4px solid var(--blue);background:#eef5fd;padding:10px 12px;border-radius:5px}.notice.warn{border-color:var(--amber);background:#fff7e8}.notice.bad{border-color:var(--red);background:#fff0ef}.login{max-width:460px;margin:50px auto}.loading{text-align:center;color:var(--muted);padding:60px}.toast{position:fixed;right:18px;bottom:18px;z-index:50;max-width:420px;background:#17212b;color:#fff;padding:12px 14px;border-radius:8px;box-shadow:var(--shadow)}.rule{padding:12px;border:1px solid var(--line);border-radius:8px;background:#fbfcfd}.allocation{display:grid;grid-template-columns:1fr 160px auto;gap:8px;align-items:end}@media(max-width:650px){.allocation{grid-template-columns:1fr}}.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 12px}.linkbox{font-family:ui-monospace,monospace;font-size:12px;word-break:break-all;background:#f2f4f6;border:1px solid var(--line);padding:8px;border-radius:6px}.checkrow{display:flex;gap:8px;align-items:flex-start}.modal{position:fixed;inset:0;z-index:40;background:rgba(10,18,24,.5);display:flex;align-items:center;justify-content:center;padding:15px}.modal-card{background:#fff;border-radius:10px;padding:18px;max-width:600px;width:100%;max-height:90vh;overflow:auto}.right{text-align:right}.nowrap{white-space:nowrap}

/* v2.3 UI fixes */
.tab{color:var(--text)}
.tab.active{color:#fff}
.auth-page{min-height:calc(100vh - 120px);display:grid;place-items:center;padding:24px 0}
.auth-card{width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:0 14px 42px rgba(20,32,43,.08)}
.auth-card.wide{width:min(560px,100%)}
.auth-brand{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--blue);margin-bottom:20px}
.auth-card h1{font-size:27px;line-height:1.15;margin:0 0 10px}
.auth-lead{color:var(--muted);font-size:15px;margin:0 0 24px}
.text-link,.inline-link{background:none!important;color:var(--blue)!important;border:0!important;padding:4px 0!important;font-weight:500;text-align:left;text-decoration:underline;box-shadow:none}
.text-link{font-size:12px;margin-top:12px}
.test-note{margin-top:18px;padding-top:12px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.sms-code{font-size:26px;letter-spacing:.25em;text-align:center;font-weight:700}
.code-phone{text-align:center;font-weight:700;margin-bottom:4px}
.card-input{position:relative}.card-input input{padding-right:44px}.card-check{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:20px;font-weight:800}.card-check.ok{color:var(--green)}.card-check.bad{color:var(--red)}
.consent-full{white-space:pre-wrap;line-height:1.6;max-height:65vh;overflow:auto;padding-right:8px}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f2f4f6;padding:3px 6px;border-radius:5px;user-select:all}
@media(max-width:650px){.auth-card{padding:20px;border-radius:12px}.auth-card h1{font-size:23px}.tabs{margin-inline:-2px}.tab{padding:9px 10px}}

/* v2.4 */
.checkrow input[type=checkbox]{width:auto!important;min-width:16px;flex:0 0 auto;margin:3px 0 0 0}.checkrow span{display:block;color:var(--text);line-height:1.4}.modal-card .field{width:100%}.search-hint{font-size:11px;color:var(--muted)}

/* v2.5 simplified workflow */
.checkrow span{color:var(--text,#1f2937);opacity:1}.campaign-rule select[multiple]{min-height:120px}

/* v2.6 Director → PL → Shop workflow */
.pl-chip{display:inline-block;padding:3px 7px;margin:2px;border:1px solid var(--line);border-radius:999px;background:#f5f7f9;font-size:11px}.shop-card{padding:18px}.shop-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.shop-head h2{margin-bottom:4px}.shop-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.shop-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;border-top:1px solid var(--line);padding-top:14px}.mini-list{border:1px solid var(--line);border-radius:8px;overflow:hidden}.mini-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-bottom:1px solid var(--line)}.mini-row:last-child{border-bottom:0}.wide-modal{max-width:760px}.request-table{min-width:1100px}.request-table .req-amount{min-width:120px}.alloc-line{display:grid;grid-template-columns:minmax(150px,1fr) 120px;gap:8px;align-items:center;margin-bottom:5px}.request-submit{display:flex;justify-content:flex-end;padding-top:14px}.bad-text{color:var(--red);margin-top:4px}@media(max-width:750px){.shop-columns{grid-template-columns:1fr}.shop-head{flex-direction:column}.mini-row{align-items:flex-start;flex-direction:column}.request-submit button{width:100%}}

.director-filter{min-width:240px;margin:0}.director-filter select{min-width:220px}.shop-card{border-left:4px solid rgba(120,120,120,.25)}.shop-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.wide-modal{max-width:920px}.pl-chip{display:inline-block;padding:2px 7px;border:1px solid rgba(120,120,120,.3);border-radius:999px;margin:2px}.request-table input[type=number]{min-width:110px}.mini-list{display:grid;gap:7px}.mini-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:7px 0;border-bottom:1px solid rgba(120,120,120,.15)}

/* v2.8 admin workflow consolidation */
.filterbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0}.filterbar .grow{flex:1;min-width:220px}.registry-card hr{border:0;border-top:1px solid var(--line);width:100%}.modal .notice.bad{margin:2px 0}.shop-card.hidden,.pbb-admin-row.hidden{display:none}.table-wrap table td .badge:first-child{margin-left:0}@media(max-width:700px){.filterbar .field{width:100%}.director-filter{width:100%}.director-filter select{min-width:0}}

/* v2.9 compact shop list + reconciliation */
.shop-list{display:flex;flex-direction:column;gap:7px}.shop-compact{background:var(--card);border:1px solid var(--line);border-radius:9px;padding:8px 11px;box-shadow:0 2px 10px rgba(0,0,0,.035)}.shop-line{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:27px}.shop-line+.shop-line{border-top:1px solid #eef1f3}.shop-primary{font-size:14px}.shop-meta{font-size:12px;color:var(--muted);text-align:right}.campaign-inline{padding:2px 5px!important;border:0!important;background:transparent!important;color:var(--blue)!important;text-decoration:underline;font-weight:700}.campaign-inline.empty{font-weight:500}.small-btn{padding:4px 7px!important;font-size:11px!important;border-radius:5px!important}.pbb-inline{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pbb-chip{white-space:nowrap;font-size:12px}.pbb-chip .badge{margin-left:2px;padding:2px 5px}.shop-history{justify-content:flex-start;gap:7px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-toolbar{padding:11px 14px}.compact-toolbar .section-title{margin:0}.match-ok{color:var(--green);font-weight:700}.match-warn{color:var(--amber);font-weight:700}.test-card{display:flex;flex-direction:column;gap:10px}.test-users{margin-top:4px}
@media(max-width:800px){.shop-line{align-items:flex-start;flex-direction:column;padding:4px 0}.shop-meta{text-align:left}.pbb-inline{justify-content:flex-start}.shop-history{white-space:normal}.shop-compact{padding:8px 10px}}
