/* Shared utility + extracted-inline classes (L1: remove style-src 'unsafe-inline').
 * Built incrementally, page group by page group. Loaded after each page's own
 * CSS so equal-specificity rules resolve in its favour (matching inline order).
 *
 * Toggle convention for elements that JS shows/hides:
 *   - hidden initial state → class "u-hide"
 *   - show via JS  → el.classList.remove('u-hide')
 *   - hide via JS  → el.classList.add('u-hide')
 * (Do NOT rely on el.style.display='' to reveal a class-hidden element.)
 */
.u-hide { display: none; }
.u-pad20 { padding: 20px; }

/* store switcher bar (display toggled via JS .style.display='flex'/'none'; the
 * u-hide class only sets the initial hidden state — inline display overrides it). */
.store-bar-x1 { align-items: center; gap: 10px; margin: 12px 0; padding: 10px 14px; background: #f1f5f9; border-radius: 8px; }
.store-bar-x2 { align-items: center; gap: 10px; margin: 10px 0; padding: 8px 12px; background: #f1f5f9; border-radius: 8px; }
/* punch admin warning banner (shown by removing .hidden; .hidden is !important). */
.punch-warn { background: #fef3c7; border-bottom: 2px solid #f59e0b; color: #92400e; padding: 12px 16px; font-size: 13px; line-height: 1.6; display: flex; gap: 10px; align-items: flex-start; flex-wrap: wrap; }
.verify-back { margin-top: 12px; }
/* punch: kiosk-disabled message */
.punch-disabled-msg { grid-column: 1/-1; padding: 24px; text-align: center; color: #64748b; background: #f8fafc; border-radius: 12px; line-height: 1.7; }

/* doc-print: client name line */
.dp-client-name-main { font-size: 18px; font-weight: 600; }
.dp-client-name-suffix { font-size: 13px; color: #555; }
.gs107a41d90a{padding:6px 10px;border:1px solid #cbd5e1;border-radius:6px;min-width:160px}
.gs1833b734db{width:auto;min-width:180px}
.gs1c9c449e0e{color:inherit}
.gs217a0bb1b7{color:#92400e;text-decoration:underline;font-weight:600}
.gs3ecd490986{text-align: center; padding: 16px; font-size: 11px; color: #94a3b8}
.gs424ae98f5f{font-size:20px;line-height:1;flex-shrink:0}
.gs4ab56d65f9{background:#f4f6f8}
.gs51c33175f5{height:34px;width:auto}
.gs59eddc679e{flex:1;min-width:0}
.gs5b36e49b85{height:42px;width:auto;margin-bottom:18px}
.gs6ca012a60d{font-size:18px;margin:8px 0}
.gs6cb285c61d{font-size:12px}
.gs7ea1f62f29{margin-top:28px;font-size:11px;color:#94a3b8}
.gsa6f48144fa{color: #64748b}
.gsb92db11fc9{margin-top:48px;text-align:center;color:#94a3b8;font-size:12px}
.gsda12f2858b{margin-bottom:12px}
.gseed0f8fb89{font-weight:600}
.gsf9e3930b42{font-size:12px;color:#64748b}
.gsfb745129ee{font-weight:600;color:#334155}
.gs1bea09eb3e{text-align:center;font-size:18px;margin:0 0 6px;color:#1f4f5b}
.gs1c2677b653{font-size: 11px; color: #64748b; margin: 0 0 12px}
.gs1cd2eeb99f{white-space: nowrap}
.gs2056554381{color:#dc2626}
.gs2f23af6b08{margin-bottom: 18px}
.gs33cc234575{margin: 0 0 12px; font-size: 12px; color: #7f1d1d}
.gs33eaf9b851{font-size:12px;color:#64748b;margin:0 0 12px}
.gs3bcd5d13b5{color: #b91c1c}
.gs4c0544d550{margin-top: 16px}
.gs56c2d79876{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:18px 20px}
.gs608eaf0df1{margin: 24px 0 8px; font-size: 15px; color: #1f4f5b}
.gs6946e3afef{cursor:pointer;font-size:13px;color:#0e7490;font-weight:600}
.gs6bd7466f10{border-color: #b91c1c; color: #b91c1c}
.gs721514fe78{margin-top:10px;font-size:13px;min-height:1.2em}
.gs798c091ba0{margin-top: 2px; flex: 0 0 auto}
.gs7ae2510c84{font-size:13px;color:#475569;margin:0 0 12px}
.gs88497a674d{border-color: #166534; color: #166534}
.gs8d6c2590f3{padding:10px 18px}
.gs908f2a2441{font-family:ui-monospace,Consolas,monospace;letter-spacing:1px;text-transform:uppercase}
.gs91a87015f4{text-align:center}
.gsa4c19ba2ef{flex:1;min-width:200px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-family:ui-monospace,Consolas,monospace;font-size:14px;letter-spacing:1px;text-transform:uppercase}
.gsaa0d509956{height:48px;width:auto}
.gsad7f18b19e{margin:0 0 6px}
.gsb85de0e627{border-color: #fecaca; background: #fef2f2}
.gsc43a27c3e0{font-size:11px;color:#64748b;margin:6px 0 0}
.gscbd41c2624{text-align:center;margin-bottom:8px}
.gscc39ef276e{margin-top:10px;padding:12px 14px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px}
.gsccc02440e2{font-size: 11px; color: #64748b; margin-top: 8px}
.gscfb3d478b6{margin: 24px 0}
.gsdffc4db2f6{margin-top: 14px}
.gse4349f4c13{margin: 0 0 12px; font-size: 13px; color: #475569}
.gsed57b586ea{margin-top: 12px; font-size: 11px; color: #94a3b8}
.gsf1b71a47fa{margin-top: 8px; font-size: 11px; color: #64748b}

/* signup / billing (phase 3) */
.signup-consent-row { display: flex; align-items: flex-start; gap: 8px; margin-top: 18px; font-size: 13px; color: #475569; cursor: pointer; }
.billing-flex-row1 { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.billing-flex-row2 { display: flex; gap: 8px; flex-wrap: wrap; }
.billing-deletion-status { background: #fee2e2; padding: 10px 12px; border-radius: 6px; font-size: 13px; color: #7f1d1d; margin-bottom: 10px; }

/* shift app (app.js) */
.app-empty-note { color: #64748b; font-size: 13px; padding: 8px 4px; line-height: 1.6; }
.w40 { width: 40px; }
.w120 { width: 120px; }

/* sidebar footer (sidebar.js) */
.sb-foot-link { display: flex; align-items: center; gap: 8px; color: rgba(255,255,255,0.75); text-decoration: none; font-size: 12px; padding: 6px 0; }
.sb-foot-link-sm { display: flex; align-items: center; gap: 8px; color: rgba(255,255,255,0.55); text-decoration: none; font-size: 11px; padding: 2px 0; }
.sb-foot-legal { margin-top: 6px; display: flex; gap: 8px; font-size: 10px; color: rgba(255,255,255,0.45); }
.sb-inherit-link { color: inherit; text-decoration: none; }
.gs0804fead59{font-size:13px;color:#64748b;margin-top:2px}
.gs09601dc121{margin: 10px 0}
.gs0d69e4b1d4{margin-top: 8px}
.gs1169661891{margin:0}
.gs16a3f5d6d1{font-size:13px;color:#555;margin-right:6px}
.gs2a0ca8350a{margin: 0}
.gs35a20b0fbb{text-align: center; padding: 16px}
.gs410826bec6{margin-top:8px;padding:5px 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:13px}
.gs4bb90035c3{margin-top: 12px}
.gs6926ebb0b6{margin:6px 0 10px}
.gs7301c61ff6{font-weight:600; color:#333; margin-bottom:8px}
.gs94ab4a5e1f{font-size: 11px; margin-top: 2px}
.gsa35b8b9c27{resize: vertical}
.gseb7d2f4789{max-width: 480px}
.gsfa10bec479{border-top: 3px solid #1d4ed8}

/* me (マイページ) page (phase 4) */
.me-hdr-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; flex-wrap: wrap; gap: 8px; }
.me-hdr-row8 { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; flex-wrap: wrap; gap: 8px; }
.me-hdr-row6 { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; flex-wrap: wrap; gap: 8px; }
.me-inline-actions { display: flex; gap: 8px; align-items: center; }
.me-month-sel { display: inline-block; width: auto; min-width: 140px; }
.me-preview-img { max-width: 100%; max-height: 280px; border-radius: 6px; }
/* me.js dynamic-render classes */
.me-empty-c { text-align: center; color: #888; }
.me-sub11 { font-size: 11px; color: #888; }
.me-err11 { font-size: 11px; color: #b3261e; }
.ta-left { text-align: left; }
.me-cell-c { text-align: center; padding: 16px; }
.me-cell-err { text-align: center; color: #b91c1c; padding: 16px; }
.req-btn-cancel { border-color: #b91c1c; color: #b91c1c; }
.me-muted { color: #64748b; }
.fs12 { font-size: 12px; }
.req-status { font-weight: 600; color: #64748b; }
.req-status-pending { color: #f59e0b; }
.req-status-approved { color: #16a34a; }
.req-status-rejected { color: #b91c1c; }
.req-status-on_hold { color: #64748b; }
.req-status-cancelled { color: #94a3b8; }

/* shift-request page (phase 5) */
.sr-add-tpl { margin-top: 6px; font-size: 12px; }
.w32 { width: 32px; }
.w90 { width: 90px; }
.w130 { width: 130px; }
.w140 { width: 140px; }
.sr-muted11 { color: #888; font-size: 11px; }
.sr-red { color: #c00; }
.sr-green { color: #1e7a3a; }
.sr-err { color: #b3261e; }

/* notification bell (notification-bell.js, phase 6).
 * badge/dropdown display is controlled via CSSOM (.style.display) so their
 * classes intentionally omit `display`; JS sets the initial hidden state. */
.nb-btn { background: #fff; border: 1px solid #e2e8f0; border-radius: 999px; width: 36px; height: 36px; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.08); font-size: 18px; position: relative; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.nb-badge { position: absolute; top: -2px; right: -2px; background: #dc2626; color: #fff; border-radius: 999px; font-size: 10px; font-weight: 700; padding: 2px 6px; min-width: 18px; text-align: center; line-height: 1.2; }
.nb-dropdown { position: absolute; top: 44px; right: 0; width: 340px; max-height: 480px; overflow-y: auto; background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,0.12); z-index: 1500; }
.nb-head { padding: 12px 16px; border-bottom: 1px solid #f1f5f9; display: flex; justify-content: space-between; align-items: center; }
.nb-head-title { font-size: 14px; color: #1f2937; }
.nb-markall { background: none; border: 0; color: #1d4ed8; font-size: 12px; cursor: pointer; }
.nb-list { padding: 0; }
.nb-empty { padding: 24px; text-align: center; color: #94a3b8; font-size: 13px; }
.nb-error { padding: 24px; text-align: center; color: #b91c1c; font-size: 13px; }
.nb-item { display: block; padding: 12px 16px; border-bottom: 1px solid #f1f5f9; text-decoration: none; color: inherit; }
.nb-item-unread { background: #eff6ff; }
.nb-item-title { font-size: 13px; color: #1f2937; line-height: 1.35; font-weight: 500; }
.nb-item-title-unread { font-weight: 600; }
.nb-dot { color: #dc2626; }
.nb-item-body { font-size: 12px; color: #64748b; margin-top: 4px; line-height: 1.4; }
.nb-item-time { font-size: 11px; color: #94a3b8; margin-top: 6px; }
.gs006a6141a1{width:9%}
.gs064028e7a7{color:#64748b}
.gs0eedf715ad{background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.3);color:#fff;padding:4px 12px;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer}
.gs109aa65566{background:#f59e0b;color:#fff;border-color:#d97706;font-weight:600}
.gs11a9c46ae7{font-size:12px;opacity:0.85}
.gs148b84d632{width: 110px}
.gs16949d4de3{margin-bottom: 8px}
.gs17d71c3430{border-left: 3px solid #16a34a}
.gs18ba806cc1{background:#1f2937;border-radius:12px;padding:18px;max-width:90vw;max-height:90vh;color:#fff;text-align:center}
.gs18fd2e236d{margin: -4px 0 8px; font-size: 11px; color: #666}
.gs192ec18c3f{font-size:12px;line-height:1.6;opacity:0.9}
.gs1a0d4c3c48{color: #64748b; font-size: 11px}
.gs21b2772344{width: 140px}
.gs238fc1ae74{cursor:pointer;font-size:12px;color:#92400e;user-select:none}
.gs255c6e199f{margin-top: 6px; font-size: 13px}
.gs2a60f4d510{text-align:center;color:#888}
.gs2ac322a808{width: 50px}
.gs2c7c5787bb{font-size:18px;flex-shrink:0;line-height:1.2}
.gs31034f60f6{font-size:16px;padding:8px 24px}
.gs31b9c4269b{margin-top: 4px; font-size: 11px; color: #666}
.gs31c9f8c9a3{opacity:0.75}
.gs391ef1246f{margin-left:6px}
.gs3d4d5d460a{font-size: 11px; padding: 4px 10px; margin-left: 4px}
.gs41d84338c1{max-width: 420px}
.gs47019185a8{font-family: ui-monospace, Consolas, monospace}
.gs4adeb886cf{color: #94a3b8; font-size: 12px}
.gs4f7f1ad5d8{margin-top: 20px}
.gs5019f1e5e3{margin: -4px 0 6px; font-size: 11px; color: #666}
.gs512820f912{font-size:11px;color:#b3261e;margin-top:2px}
.gs5187b6fd7a{width: 120px}
.gs53b076c872{border-left: 3px solid #7c2d12}
.gs53d5921e3e{width:auto;min-width:160px;padding:6px 10px}
.gs54c2afb7ba{text-align:right}
.gs562fe776b4{font-size:11px;padding:4px 10px}
.gs56ab115ac4{border-left: 3px solid #f59e0b}
.gs59aec4e5e3{font-size: 11px; padding: 4px 8px; color: #16a34a; border-color: #16a34a}
.gs5ad18887de{font-weight:400;color:#64748b;font-size:12px;margin-left:8px}
.gs5db8347ca2{width:6%}
.gs5dcdf2dee8{color:#94a3b8}
.gs5e0faad207{font-size:13px}
.gs5ece18cacb{text-align:center;padding:8px;color:#94a3b8;font-size:12px}
.gs62219b5516{flex:1;min-width:160px;max-width:320px}
.gs634a28bea4{flex: 1}
.gs6413072d01{margin-left: 4px}
.gs658d20698f{background:#fef3c7;color:#92400e}
.gs6735d8306e{background:rgba(255,255,255,0.08)}
.gs694e0a852f{color: #166534}
.gs6b31fea7be{position:absolute;top:10px;right:12px;background:transparent;border:0;color:rgba(255,255,255,0.7);font-size:20px;cursor:pointer;line-height:1}
.gs6bbafabf21{width:11%}
.gs765d57b50b{max-width:560px}
.gs7999838e34{font-size: 13px; color: #475569; line-height: 1.7; padding-left: 20px}
.gs7cb5f5f11e{border-left: 3px solid #dc2626}
.gs7d9d88ff9a{text-align:left;max-width:200px}
.gs7ef6433718{background: #eff6ff; color: #1d4ed8}
.gs811918cf3f{font-size:24px;font-weight:700;margin-top:2px}
.gs8338d5a7cf{font-size:13px;color:#475569}
.gs85514cdf4a{margin:0 0 10px;font-size:16px}
.gs886d00ef65{color:#92400e;margin-bottom:6px}
.gs89ecc1c00d{font-size: 11px; color: #64748b}
.gs8e0a57d06d{border: 1px solid #cbd5e1; border-radius: 8px; padding: 8px 12px; max-height: 160px; overflow-y: auto; background: #f8fafc}
.gs96ad6099e2{margin-top:4px}
.gs9721873438{color:#c00;font-weight:700}
.gs9b19628790{margin-top: 4px; font-size: 11px}
.gs9b721802b1{padding:6px 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:13px}
.gsa1fe3afcec{background:rgba(255,255,255,0.18);height:6px;border-radius:3px;margin-top:8px;overflow:hidden}
.gsa924b9b0f0{color:#b91c1c;font-size:13px;margin:6px 0;min-height:1em}
.gsa9c48f0d0f{width:100%;text-align:left;background:transparent;border:0;border-top:1px solid rgba(255,255,255,0.1);margin-top:4px;cursor:pointer;font:inherit}
.gsacb48b4e98{max-width: 520px}
.gsad1464f526{border-left: 3px solid #1d4ed8}
.gsaf11bf91df{background: #16a34a; border-color: #16a34a}
.gsb2a6780168{background:#fff;color:#92400e;border-color:#92400e;margin-left:6px}
.gsb5266fc285{font-size: 11px; padding: 4px 8px; color: #b91c1c; border-color: #b91c1c}
.gsb6542040b3{width: 60px}
.gsb6f10184a8{font-size:12px;color:rgba(255,255,255,0.85);margin-top:4px}
.gsb8b91de853{background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 12px; padding: 16px 20px}
.gsbd09c419b5{width:60px}
.gsbf50a6884a{font-size: 11px; padding: 4px 8px; color: #64748b}
.gsc28f1b1511{width:12%}
.gsc2e49e3456{width:22%}
.gsc7122dd3d1{border-left: 3px solid #9333ea}
.gscfa2b1f9a6{text-align: center; color: #b91c1c; padding: 16px}
.gsd5b7160c08{font-size: 11px; padding: 4px 10px}
.gsd97b0eb0f1{font-size:11px;padding:4px 10px;margin-left:4px}
.gsd9b751e8e4{color:#b45309;font-size:11px;font-weight:600}
.gsdabaad57fd{width: 80px}
.gsdacf2ed383{text-align: center; color: #94a3b8; padding: 20px}
.gsdbf329a29f{color: #b91c1c; font-size: 12px}
.gse03a44b5c6{margin-top:10px; font-size:12px}
.gse5a6d3c3d6{margin-top: 10px}
.gse6f08f00ad{font-size: 12px; color: #64748b}
.gse9d94aac99{padding: 6px 10px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 13px}
.gseaacda9aff{margin-top:6px;padding:8px;background:#fffbeb;border:1px solid #fcd34d;border-radius:6px;font-size:12px;line-height:1.5}
.gseb242dad1f{max-width:100%;max-height:60vh;border-radius:8px;background:#000}
.gsee5749fc21{font-size:16px;font-weight:700}
.gsf23f0016e5{max-width: 200px; font-size: 12px; color: #475569}
.gsf2fe20f128{background:#fbbf24;color:#78350f;font-weight:600}
.gsf6012dd517{font-size:12px;color:rgba(255,255,255,0.85);margin-top:2px}
.gsfc15518a9c{color: #64748b; font-size: 12px}
.gsfd14ca83c7{width:14%}
.gsfd8f18cf0d{margin-top:14px;padding-top:10px;border-top:1px solid rgba(255,255,255,0.2);font-size:11px;color:rgba(255,255,255,0.85)}
.gsfdf33f2304{margin-bottom:8px}
.gsfe7b4979fe{margin-top:6px}
.gsfee3746054{padding: 6px 10px; border: 1px solid #bbf7d0; border-radius: 6px}
.gsffa791acbc{width: 18px; height: 18px}
.gs04837f2765{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}
.gs0597ec662a{display: block; font-size: 12px; color: #166534; margin-bottom: 4px}
.gs06307df0e2{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.gs082f3f117e{font-size:13px;color:#475569;display:flex;align-items:center;gap:4px;margin-left:8px;cursor:pointer}
.gs16f15e6007{margin-top:12px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.gs2dab17aaa2{display: flex; gap: 6px; align-items: center}
.gs412e48c2cf{margin:14px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.gs453f9e4627{font-size: 11px; color: #64748b; display: flex; align-items: center; gap: 4px}
.gs58703f152a{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.gs6a216e980e{margin:6px 0 10px;display:flex;align-items:center;gap:8px}
.gs92efdff24b{display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px}
.gs96ade1a5a9{margin-bottom:10px;display:flex;align-items:center;gap:8px}
.gs99fe53f221{display:flex;gap:8px;justify-content:flex-end;margin-top:18px;padding-top:14px;border-top:1px solid #e2e8f0}
.gs9d7b4e35ef{display:inline-flex;border:1px solid #cbd5e1;border-radius:8px;overflow:hidden}
.gsa469a08603{display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; margin-top: 10px}
.gsa6dbe6225f{display: flex; align-items: center; gap: 10px; cursor: pointer}
.gsab2fae2258{display:flex;align-items:center;gap:8px;margin-top:14px;cursor:pointer}
.gsb3d09c9148{display: flex; align-items: center; gap: 8px; padding: 6px 0; cursor: pointer}
.gsddb12f8ffb{display:inline-flex; align-items:center; gap:4px}
.gsfd9e1cd343{display:inline-block;margin:2px 8px 2px 0;padding:2px 8px;background:#f8fafc;border-radius:6px}
.gs0147bd6d26{position:fixed;inset:0;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px}
.gs019f9cfc22{width:100%;padding:8px;border:1px solid #cbd5e1;border-radius:6px;background:#f1f5f9}
.gs0387f4ba38{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:14px}
.gs0454720a54{display: flex; gap: 8px; justify-content: flex-end; margin-top: 12px}
.gs0590246aca{color: #15803d}
.gs0922cc9a68{width:100%;padding:8px;border:1px solid #cbd5e1;border-radius:6px}
.gs0b32c01688{padding:10px 12px;border-bottom:1px solid #e2e8f0;text-align:left;font-size:13px;color:#475569}
.gs0d26ef6ff5{color: #b91c1c; font-size: 12px; min-height: 16px; margin-top: 10px}
.gs0e8a8e3e0e{background:#fff;padding:14px 16px;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:12px;display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.gs0fe0e95ca8{display: grid; grid-template-columns: 1fr 1fr; gap: 12px}
.gs13066ffc3f{background:#f1f5f9}
.gs1525dd906e{color:#64748b;font-size:12px}
.gs156334b8aa{background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 6px 16px}
.gs17cae36f3a{margin-top: 10px; font-size: 11px; color: #94a3b8}
.gs1b0f4999d2{margin-top:16px}
.gs1bfea846b2{font-size:11px;color:#14532d}
.gs1c0b067a27{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.gs1c7e12828c{display: block; font-size: 12px; color: #475569; margin-bottom: 4px}
.gs1ff0dd3cd4{margin: 0 0 12px}
.gs206a69933d{font-size: 28px; font-weight: 800; color: #166534; font-family: ui-monospace, monospace}
.gs21db4bb024{font-family:ui-monospace,Consolas,monospace;font-size:12px;letter-spacing:0.5px;user-select:all}
.gs229c66c3d5{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:10px 14px}
.gs238ae39552{background:#f8fafc}
.gs2446896cf9{margin-top: 10px; display: flex; gap: 6px; justify-content: flex-end}
.gs249d010502{margin:0 0 12px}
.gs24ba9e659a{font-family:monospace;font-size:13px}
.gs25e58d5fc3{padding:6px 8px;border:1px solid #cbd5e1;border-radius:6px;font-size:13px}
.gs26f489dd8d{display: block; font-size: 12px; color: #475569; margin: 0 0 4px}
.gs288c755a3c{padding:10px 12px;border-bottom:1px solid #e2e8f0;font-size:13px}
.gs29254bba53{display:block;font-size:13px;color:#475569;margin-bottom:4px}
.gs2c58b7b924{font-family: monospace; font-weight: 600}
.gs2de360d73e{color: #15803d; font-weight: 600}
.gs2e73ba546e{padding:4px 10px;font-size:12px}
.gs2f03bac0e0{font-size:11px;color:#64748b}
.gs30489cbd39{text-align: right}
.gs34b4b87a1d{width: 100%; padding: 8px; border: 1px solid #cbd5e1; border-radius: 6px}
.gs3536b5aa7c{text-align:center;margin-top:-8px;margin-bottom:18px;color:#64748b}
.gs3749eeb137{text-align: right; font-weight: 600}
.gs39158dbb9d{padding:10px 12px;border-bottom:1px solid #e2e8f0}
.gs39ae4db632{margin-bottom: 10px}
.gs39bce977c2{text-align: right; color: #64748b}
.gs3aa364f646{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}
.gs3c7721e0ff{background:#fff;padding:20px;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:16px}
.gs3cdedb8d0c{background:#f1f5f9;padding:12px;border-radius:8px;margin:12px 0;font-size:14px}
.gs3f87583eaf{width: 100%; padding: 8px; border: 1px solid #cbd5e1; border-radius: 6px; margin-bottom: 10px}
.gs4030acb1ef{display:flex;gap:8px;align-items:flex-start;font-size:14px;cursor:pointer}
.gs438fae93c4{font-size: 12px; color: #92400e; margin-top: 2px}
.gs463bb299d6{color:#dc2626;border-color:#dc2626}
.gs46a6dd84f8{background:#475569;color:#fff;border:0}
.gs46cd4934b7{font-size: 10px; color: #94a3b8}
.gs49f9752602{margin: 0 0 8px}
.gs4a9c1ca140{margin-top:20px;padding:14px;background:#fef3c7;border-left:4px solid #f59e0b;border-radius:6px;font-size:12px;color:#92400e}
.gs4b9fe12bd9{font-size:13px;color:#16a34a;margin:0 0 12px}
.gs4d3e9609df{width: 100%; padding: 8px; border: 1px solid #cbd5e1; border-radius: 6px; font-family: monospace}
.gs4f7c46d7e9{text-align:center;font-size:15px;color:#64748b;margin:0 0 18px;font-weight:500}
.gs4f877b9fed{background: #fef3c7; color: #92400e; padding: 8px 12px; border-radius: 6px; font-size: 13px; margin: 8px 0}
.gs4fc2c2f784{font-size:13px;margin:14px 0 8px}
.gs503dba1d3c{background: #fef3c7; border-left: 4px solid #f59e0b; padding: 12px 16px; border-radius: 6px; margin-bottom: 18px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px}
.gs508b20deb6{font-size:13px;color:#64748b;margin:0 0 12px}
.gs5244f9a5a6{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
.gs533d49e3d0{display: flex; gap: 6px; align-items: center; flex-wrap: wrap}
.gs5452351ae6{font-size:13px;color:#475569;line-height:1.6}
.gs570bf22fa7{font-size:13px;color:#64748b;margin:0 0 14px}
.gs58d955e17a{margin:0 0 4px}
.gs5a40253079{padding: 6px 10px; border-bottom: 1px solid #f1f5f9; color: #475569}
.gs5bd83df0a8{color:#b91c1c;font-size:13px;min-height:1em;margin-bottom:8px}
.gs5beb8fbe41{margin-bottom: 12px}
.gs5dd2a67868{margin-left:8px}
.gs5dfc99a95e{margin: 0 0 16px; font-size: 16px}
.gs604ac6bd69{display: grid; grid-template-columns: 1fr 1fr 2fr auto; gap: 8px; align-items: end; margin-bottom: 6px}
.gs60bc08a278{color: #64748b; font-size: 13px}
.gs6392c2be83{background:#fef2f2;border:1px solid #fecaca;border-left:4px solid #ef4444;padding:10px 14px;border-radius:6px;font-size:13px;color:#991b1b;margin-bottom:12px}
.gs667945b566{max-height:240px;overflow-y:auto}
.gs66848f650f{font-size:12px;color:#64748b;margin:6px 0 0}
.gs66efdd9f96{font-size: 11px; color: #64748b; margin: 0 0 10px}
.gs673c94d83e{display:grid;grid-template-columns:120px 1fr;gap:10px 16px;font-size:14px}
.gs6a8839a8e1{font-size:13px;color:#64748b;margin:0}
.gs6c51dbca9e{padding:6px 14px}
.gs6c529a0b2e{display:flex;justify-content:flex-end;margin-bottom:10px}
.gs6db300589d{max-height: 280px; overflow-y: auto; border: 1px solid #e2e8f0; border-radius: 6px}
.gs6e4241e8be{display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; flex-wrap: wrap; gap: 8px}
.gs6fff848778{display:block;font-size:12px;color:#475569;margin:12px 0 4px}
.gs70aa243ff1{width:120px;padding:8px;border:1px solid #cbd5e1;border-radius:6px;font-size:16px;letter-spacing:4px}
.gs71158a2120{padding:10px 12px;border-bottom:1px solid #e2e8f0;color:#64748b;font-size:12px}
.gs715b7d2cca{background:#fff;padding:24px;border:1px solid #e2e8f0;border-radius:10px;max-width:640px;margin-top:16px}
.gs71fca19076{font-size:11px;color:#92400e}
.gs77656a6381{background: #fef3c7; border-left: 4px solid #f59e0b; padding: 10px 12px; font-size: 12px; color: #92400e; border-radius: 6px; margin: 10px 0}
.gs7860263604{text-align: right; color: #b91c1c}
.gs7b1267f484{color: #92400e}
.gs7ce6279419{margin: 6px 0 0 24px; font-size: 11px; color: #475569}
.gs7d023b473e{width:100%;padding:8px 10px;border:1px solid #cbd5e1;border-radius:6px;margin-bottom:10px}
.gs7d02b49bb6{padding: 6px}
.gs7d0b01be6f{margin:0 0 16px}
.gs7d237905ea{padding: 6px 12px; font-size: 12px}
.gs7e309ad2f2{display: block; font-size: 12px; color: #475569; margin: 12px 0 4px}
.gs7f1f981f34{margin-top: 14px; font-size: 11px; color: #94a3b8; max-width: 640px}
.gs821e95a384{background:#fff;padding:20px;border:1px solid #e2e8f0;border-radius:10px}
.gs8277ea4c02{font-size: 13px; color: #475569}
.gs873bd2fb88{flex: 1; padding: 8px; font-family: monospace; border: 1px solid #cbd5e1; border-radius: 6px}
.gs881d02da72{color:#b91c1c}
.gs8b5bd1ccc4{font-size:12px;color:#94a3b8}
.gs8b86d3080b{padding: 6px 10px; text-align: left; border-bottom: 1px solid #e2e8f0}
.gs8c729a1aaa{font-size:11px;color:#0c4a6e}
.gs8c91d97921{font-size:20px;font-weight:700;color:#0369a1}
.gs8d6f7a9ad4{font-weight:700;color:#ca8a04}
.gs935347d479{font-size:11px;padding:4px 8px}
.gs937eb91b79{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;font-size:13px}
.gs948b72344b{font-size: 12px; color: #475569; margin-top: 4px}
.gs95067ee886{text-align: right; font-weight: 700; color: #166534}
.gs96372cc717{text-align: center; font-weight: 700}
.gs97673180d7{font-size:20px;font-weight:700;color:#15803d}
.gs9815e6df44{color:#94a3b8;font-size:11px}
.gs9a2654aac1{width: 100%; border-collapse: collapse; font-size: 12px}
.gs9ddcf72a13{font-size: 12px; color: #92400e; margin-top: 4px}
.gs9f13c8e975{font-size: 11px; color: #64748b; margin-top: 4px}
.gsa06f83a5bd{margin-top:14px;justify-content:space-between}
.gsa52302d66e{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px;margin-bottom:18px}
.gsa53b80f486{margin: 18px 0 8px; font-size: 13px; color: #1f4f5b}
.gsa5418807c8{font-size: 13px}
.gsa54fba1274{font-size: 12px; padding: 6px 12px}
.gsa699e534c6{font-size: 18px; color: #166534}
.gsa7bda23a17{padding: 6px 10px; border-bottom: 1px solid #f1f5f9}
.gsa97353f0d2{color: #b91c1c; font-size: 12px; min-height: 16px; margin-bottom: 10px}
.gsaaba2502ff{padding:20px;text-align:center;color:#64748b}
.gsab564e7509{color:#b91c1c;font-size:13px;margin-top:8px}
.gsb15e9398a4{background: #f0fdf4; border-color: #bbf7d0}
.gsb19c2f16cc{font-size:20px;font-weight:700;color:#b45309}
.gsb2c651fe14{margin:0 0 10px;font-size:14px;color:#1f4f5b}
.gsb4415e653c{background: #fef3c7; border-left: 4px solid #f59e0b; padding: 12px 16px; border-radius: 6px}
.gsb4b9909a6e{width:100%;border-collapse:collapse;background:#fff}
.gsb8210de83e{background:#fef3c7;border:1px solid #fde68a;border-radius:8px;padding:10px 14px}
.gsba99795f44{display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px}
.gsbac0f00dbf{margin:8px 0 4px}
.gsbd075ba6ad{padding: 6px 10px; text-align: right; border-bottom: 1px solid #e2e8f0}
.gsbffa34a9e1{display: inline-block; padding: 1px 6px; border-radius: 8px; background: #ede9fe; color: #6d28d9; font-size: 10px; font-weight: 700}
.gsc00d39129e{margin-top:3px}
.gsc09c51ee5d{background:#fef3c7;border-left:4px solid #f59e0b;padding:10px 12px;font-size:11px;color:#92400e;border-radius:6px;margin:12px 0}
.gsc166c3c38a{background:#dc2626;border:0}
.gsc4c18c08c2{padding:10px 12px;border-bottom:1px solid #e2e8f0;color:#475569;font-size:12px}
.gsc9031855ba{margin:0 0 8px;font-size:18px;color:#1a2a3a}
.gsc93d552a2b{margin:20px 0 8px;font-size:14px;color:#334155;border-bottom:1px solid #e2e8f0;padding-bottom:6px}
.gsc9ce228af9{background: #f0fdf4; border: 1px solid #bbf7d0; padding: 12px 16px; border-radius: 8px; margin-bottom: 14px; display: flex; justify-content: space-between; align-items: center}
.gscbeaa6b8b9{font-size:11px;color:#64748b;display:block}
.gscd930de71f{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;padding:10px 14px}
.gscef5ae3c3d{padding: 6px 10px; border-bottom: 1px solid #f1f5f9; color: #64748b}
.gsd04c880c29{font-size:11px;padding:3px 8px}
.gsd28c206778{background: #ede9fe; color: #5b21b6; padding: 8px 12px; border-radius: 6px; font-size: 13px; margin: 8px 0}
.gsd29bb5439e{font-size:12px;color:#64748b;margin-bottom:8px}
.gsd60bb9f275{margin-top:16px;padding:16px;background:#f8fafc;border-radius:8px}
.gsd64fee2567{text-align:center;color:#94a3b8;padding:18px}
.gsd6f2af6e0a{margin-top:14px}
.gsd756e1cd05{padding: 16px; text-align: center; color: #94a3b8; font-size: 13px}
.gsd8993c1326{background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 20px 22px; max-width: 640px}
.gsdbc16af2f7{background: #f8fafc}
.gsdecbd7d9e7{color: #b91c1c; font-size: 12px; min-height: 18px; margin-top: 10px}
.gsdf555adc94{color:#94a3b8;font-size:13px}
.gsdf671843ff{margin:0 0 8px}
.gse3ec02ace9{font-weight:700}
.gseb12ea3b41{font-size:18px;letter-spacing:2px;background:#fff;padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;display:inline-block;margin-top:4px;user-select:all}
.gsec0f7ffa7a{margin-top: 0}
.gsec6fe31db7{display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f1f5f9}
.gsecb13d2935{margin: 18px 0 6px; font-size: 14px}
.gsee3dfde10c{background:#dc2626;color:#fff;border:0}
.gsee616f3de9{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:13px}
.gsf013cfe39c{font-size:13px;margin:0 0 12px}
.gsf2a7f661ff{width: 100%; padding: 8px; border: 1px solid #cbd5e1; border-radius: 6px; font-family: inherit; resize: vertical}
.gsf3535dcd0c{text-align:right;font-weight:600}
.gsf406950524{font-weight:700;color:#16a34a}
.gsf49dbdde41{font-size: 11px; color: #94a3b8; margin-top: 8px; text-align: right}
.gsf4a60a73b1{display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; flex-wrap: wrap; gap: 8px}
.gsf5d862c73d{background:#fff;border-radius:12px;max-width:480px;width:100%;padding:24px;box-shadow:0 10px 40px rgba(0,0,0,.2)}
.gsf654db0057{text-align: right; margin-top: 14px}
.gsf756cc3308{color:#64748b;font-size:13px}
.gsf8cd9658d1{color:#475569;font-size:12px}
.gsfaa2da30ca{background:#fff;padding:24px;border:1px solid #e2e8f0;border-radius:10px;max-width:640px}
.gsfabd50d3ff{display: flex; gap: 6px}
.gsfd5374c984{text-align:center;color:#94a3b8;padding:20px}
.gsfdff181e71{font-size:14px;color:#334155;margin:0 0 16px}
.gsfeba9eb89d{color:#b91c1c;font-size:12px;min-height:16px;margin-top:10px}

/* admin.js dynamic-state classes (phase 9) */
.onb-bar-fill { background: #86efac; height: 100%; transition: width 0.3s; }
.onb-step { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 8px; }
.onb-step-done { background: rgba(134,239,172,0.15); opacity: 0.85; }
.onb-step-todo { background: rgba(255,255,255,0.08); }
.onb-step-title { font-weight: 600; }
.onb-step-title-done { text-decoration: line-through; text-decoration-color: rgba(255,255,255,0.4); }
.tr-pending { background: #fffbeb; }
.lb-box { background: #fff; border-left: 3px solid; padding: 10px 14px; margin-bottom: 8px; border-radius: 6px; }
.lb-title { font-size: 13px; }
.lb-c1 { border-left-color: #dc2626; } .lb-c1 .lb-title { color: #dc2626; }
.lb-c2 { border-left-color: #f59e0b; } .lb-c2 .lb-title { color: #f59e0b; }
.lb-c3 { border-left-color: #7c2d12; } .lb-c3 .lb-title { color: #7c2d12; }
.lb-c4 { border-left-color: #9333ea; } .lb-c4 .lb-title { color: #9333ea; }

/* agency dynamic-state classes */
.ag-slot { border-radius: 8px; padding: 12px; margin-top: 16px; }
.ag-slot-on { background: #f0fdf4; border: 1px solid #bbf7d0; }
.ag-slot-off { background: #f8fafc; border: 1px solid #e2e8f0; }
.ag-slot-label { display: flex; align-items: center; gap: 8px; }
.ag-cursor-no { cursor: not-allowed; }
.ag-cursor-yes { cursor: pointer; }
.ag-slot-title { font-weight: 600; }
.ag-slot-title-on { color: #166534; }
.ag-slot-title-off { color: #94a3b8; }
.ag-mt10 { margin-top: 10px; }
.ag-banner { padding: 12px 16px; border-radius: 6px; margin-bottom: 18px; border-left: 4px solid; }
.ag-banner-ok { background: #f0fdf4; border-left-color: #16a34a; }
.ag-banner-wait { background: #fef3c7; border-left-color: #f59e0b; }

/* hq dynamic-state classes */
.hq-delta-cell { padding: 6px 10px; border-bottom: 1px solid #f1f5f9; text-align: right; font-weight: 700; }
.hq-delta-up { color: #16a34a; }
.hq-delta-down { color: #dc2626; }

/* admin.html display:none elements (phase 10 / final) */
.ml-auto { margin-left: auto; }
.webcam-modal { position: fixed; inset: 0; background: rgba(15,23,42,0.85); z-index: 2000; align-items: center; justify-content: center; }
.webcam-error { margin-top: 10px; font-size: 12px; color: #fecaca; }
.stores-billing-summary { background: linear-gradient(135deg,#0e7490 0%,#0891b2 100%); color: #fff; padding: 16px 20px; border-radius: 10px; margin-bottom: 16px; }
.stores-empty { padding: 16px; background: #f8fafc; border-radius: 8px; margin-top: 12px; }

/* HQ system health modal (hq.html) */
.hc-row { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; font-size: 13px; }
.hc-head { font-size: 13px; font-weight: 600; margin-top: 10px; color: #0f766e; }
.hc-meta { font-size: 12px; color: #64748b; margin-bottom: 8px; }
.hc-hint { background: #fef3c7; border-left: 4px solid #f59e0b; padding: 8px 10px; font-size: 12px; color: #92400e; border-radius: 6px; margin-top: 10px; }
.hc-note { font-size: 13px; color: #475569; }

/* sales sheet: per-column add/subtract select */
.sl-sign { margin-top: 4px; width: 100%; }
