:root{color-scheme:light;--ink:#18243b;--muted:#738095;--line:#e4e9f0;--blue:#365bed;--green:#198768;--background:#f5f7fb}*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--ink);font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}aside{position:fixed;width:248px;inset:0 auto 0 0;padding:30px 22px;background:#101c32;color:white;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;color:white;text-decoration:none;font-size:22px;font-weight:700}.brand small{display:block;font-size:8px;letter-spacing:1.3px;opacity:.5}.logo{width:40px;height:44px;background:#6981ff;border-radius:13px;display:grid;place-items:center;font-size:26px}nav{display:grid;gap:5px;margin-top:46px}nav button{color:#a9b5c9;background:none;text-align:left;padding:12px 14px;border:0;border-radius:9px;font-size:13px;display:flex;gap:12px;align-items:center}nav button.active{color:white;background:#2c3e61}nav button:hover{background:#223352}.local{margin-top:auto;font-size:12px;color:#ccd5e2}.local p{font-size:11px;color:#8191aa}.dot{display:inline-block;background:#50c4a4;width:7px;height:7px;border-radius:50%;margin-right:7px}main{margin-left:248px;padding:34px 42px;max-width:1800px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.eyebrow{font-size:10px;letter-spacing:1.7px;font-weight:700;color:var(--muted)}h1{font-size:28px;letter-spacing:-.6px;line-height:1.3;margin:8px 0}h2{font-size:21px;line-height:1.35;letter-spacing:-.4px}h3{font-size:15px;margin:0 0 12px}p{margin:8px 0 16px}.muted{color:var(--muted);font-size:12px}.card{padding:24px;border:1px solid var(--line);background:white;border-radius:14px;box-shadow:0 3px 12px #25386204;margin-bottom:18px}.login{max-width:480px;margin:8vh auto}.login h2{font-size:29px;margin-bottom:16px}.login form{display:grid;gap:16px;margin:24px 0}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.toolbar p{color:var(--muted);max-width:760px;margin:0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.metric strong{display:block;font-size:31px;line-height:1.6;letter-spacing:-1px}.metric span{color:var(--muted);font-size:12px}.badge{background:#edf2ff;color:#365bd0;border-radius:5px;padding:3px 8px;font-size:10px;font-weight:600;white-space:nowrap}.badge.warning{background:#fff4dc;color:#93660f}.badge.good{background:#e7f5ef;color:#177c5d}.card-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:16px}.card-head h3{margin:0}.actions{display:flex;flex-wrap:wrap;gap:8px}button{font:inherit;background:var(--blue);color:white;border:1px solid transparent;border-radius:7px;padding:9px 15px;cursor:pointer;font-size:12px;font-weight:600}button:hover{filter:brightness(.94)}button:disabled{opacity:.5;cursor:wait}button.secondary{background:white;border:1px solid var(--line);color:var(--ink)}button.danger{background:#fff1f0;color:#b94335;border-color:#f5d2cd}label{display:grid;gap:7px;font-size:12px;font-weight:600;margin-bottom:14px}input,textarea,select{width:100%;background:#fbfcff;border:1px solid #dce3ed;padding:11px;border-radius:7px;color:var(--ink);font:13px/1.4 inherit}textarea{min-height:84px;resize:vertical}textarea.json{min-height:180px;font:12px/1.5 ui-monospace,monospace}input:focus,textarea:focus,select:focus{outline:2px solid #9babff;outline-offset:1px}code,pre{font:12px/1.7 ui-monospace,monospace}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f8faff;border:1px solid #ecf0f7;padding:16px;border-radius:8px;max-height:520px;overflow:auto;margin:10px 0}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:left;text-transform:uppercase;color:var(--muted);font-size:9px;letter-spacing:.8px;font-weight:600}td,th{padding:12px 10px;border-bottom:1px solid #edf0f5;vertical-align:top}td{max-width:300px;overflow-wrap:anywhere}.table-wrap{overflow:auto}tr:last-child td{border-bottom:0}.empty{text-align:center;padding:34px;color:var(--muted)}#notice:not(:empty){padding:12px 16px;border-radius:8px;background:#e8efff;margin:16px 0;color:#254bae}#notice.error,.error{color:#af3c32}#notice.error{background:#fff0ed}#identity{display:flex;gap:12px;align-items:center;font-size:12px}dialog{border:0;border-radius:16px;width:min(680px,calc(100% - 32px));padding:28px;max-height:90vh;overflow:auto;color:var(--ink);box-shadow:0 20px 120px #12224e44}dialog::backdrop{background:#10203988;backdrop-filter:blur(3px)}dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}#confirmation-text{display:block;padding:10px;background:#fff2e5;margin:0 0 16px;overflow-wrap:anywhere}.search{max-width:380px}.note{border-left:3px solid #8096f3;padding-left:14px;color:var(--muted);font-size:12px}details{margin:10px 0}summary{cursor:pointer;color:#4561ab;font-size:12px}.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:1000px){aside{width:202px;padding:24px 14px}main{margin-left:202px;padding:26px}.split{grid-template-columns:1fr}}@media(max-width:720px){aside{position:static;width:auto;padding:18px}nav{margin-top:18px;display:flex;overflow:auto}nav button{white-space:nowrap}.local{display:none}main{margin:0;padding:20px}header{align-items:flex-start;gap:12px}h1{font-size:24px}#identity{flex-direction:column}.toolbar{align-items:flex-start;gap:12px}}

.structured-field{margin:8px 0}.structured-field fieldset{border:1px solid var(--line);border-radius:8px;padding:12px;margin:10px 0}.structured-field h4{margin:10px 0 4px;text-transform:capitalize}.structured-field input[type=checkbox]{width:auto;margin-left:12px}.structured-field label{display:block;margin:8px 0}aside{overflow-y:auto}

/* Navigation, identity, toasts */
.nav-group{margin:18px 14px 4px;font-size:9px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#6c7c98}.nav-group:first-child{margin-top:0}nav{gap:2px;margin-top:34px}nav button{padding:9px 12px}.nav-icon{width:18px;text-align:center;opacity:.85}
.avatar{width:30px;height:30px;border-radius:50%;background:#e8edff;color:var(--blue);display:grid;place-items:center;font-weight:700}
#toasts{position:fixed;right:24px;bottom:24px;display:grid;gap:10px;z-index:1000;max-width:min(420px,calc(100vw - 32px))}
.toast{display:flex;align-items:center;gap:10px;background:#13213b;color:white;padding:12px 12px 12px 14px;border-radius:12px;box-shadow:0 12px 40px #0d1a3540;animation:toast-in .2s ease-out;transition:opacity .35s,transform .35s}.toast.leaving{opacity:0;transform:translateY(8px)}.toast.error{background:#8f2c22}
.toast-icon{width:22px;height:22px;flex:none;border-radius:50%;background:#2fa77f;display:grid;place-items:center;font-size:12px;font-weight:700}.toast.error .toast-icon{background:#ffffff33}.toast span:nth-child(2){flex:1;font-size:13px}
button.toast-close{background:none;border:0;color:#ffffffaa;padding:2px 8px;font-size:18px}
@keyframes toast-in{from{opacity:0;transform:translateY(10px)}}
.badge.muted{background:#f0f2f6;color:#5f6b80}button.warning{background:#b36b00}
.icon-button{background:none;border:0;color:var(--muted);font-size:24px;line-height:1;padding:4px 10px;border-radius:8px}.icon-button:hover{background:#f0f3f8;filter:none}

/* Tabs */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}
button.tab{background:none;color:var(--muted);border:0;border-bottom:2px solid transparent;border-radius:0;padding:10px 14px;font-size:13px;display:flex;gap:8px;align-items:center;white-space:nowrap}
button.tab[aria-selected=true]{color:var(--ink);border-bottom-color:var(--blue)}button.tab:hover{color:var(--ink);filter:none}
.tab .count{background:#eef1f6;color:var(--muted);border-radius:10px;padding:0 7px;font-size:11px}.tab[aria-selected=true] .count{background:#e8edff;color:var(--blue)}

/* Category manager */
.cat-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:18px}
.cat-stat{display:grid;gap:2px;text-align:left;background:white;color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:14px 16px;font-weight:400}
.cat-stat strong{font-size:24px;letter-spacing:-.6px;line-height:1.2}.cat-stat span{font-weight:600;font-size:12px}.cat-stat small{color:var(--muted);font-size:11px}
.cat-stat:hover{border-color:#c5d0f5;filter:none}.cat-stat.selected{border-color:var(--blue);box-shadow:0 0 0 3px #365bed1f}
.cat-toolbar{display:grid;gap:12px;background:white;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px}
.cat-toolbar-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}
.cat-toolbar-row:last-child{justify-content:flex-start}.cat-toolbar select{width:auto;min-width:150px;padding:8px 10px}
.cat-search{flex:1;min-width:220px;max-width:520px}
.segmented{display:inline-flex;background:#f1f4f9;border-radius:9px;padding:3px;gap:2px}
.segmented button{background:none;color:var(--muted);border:0;padding:6px 12px;border-radius:7px;font-weight:600}
.segmented button[aria-pressed=true]{background:white;color:var(--ink);box-shadow:0 1px 3px #1a2b4d1f}.segmented button:hover{filter:none;color:var(--ink)}.segmented button:disabled{cursor:not-allowed;opacity:.55}
.cat-count{margin:6px 2px 12px}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.cat-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;background:white;color:var(--ink);border:1px solid var(--line);border-radius:14px;padding:14px;font-weight:400;transition:border-color .15s,box-shadow .15s,transform .15s}
.cat-card:hover{filter:none;border-color:#c5d0f5;box-shadow:0 6px 18px #2538620f;transform:translateY(-1px)}.cat-card:focus-visible{outline:2px solid #9babff;outline-offset:2px}
.cat-card.hidden,.cat-card.merged{background:#fafbfd}.cat-card.hidden .cat-icon,.cat-card.merged .cat-icon{opacity:.55;filter:grayscale(.5)}
.cat-card-top{display:flex;justify-content:space-between;align-items:flex-start;width:100%;margin-bottom:6px}
.cat-name{font-size:14px;line-height:1.3}.cat-sub{color:var(--muted);font-size:12px}.cat-usage{margin-top:6px;font-size:11px;color:#3f5bbf;background:#eef2ff;border-radius:6px;padding:2px 8px}.cat-usage.unused{background:#f3f5f8;color:var(--muted)}
.cat-icon{border-radius:12px;object-fit:contain;flex:none;background:#f5f7fb}.cat-icon.fallback{display:inline-grid;place-items:center;width:44px;height:44px;font-weight:700;color:var(--blue);background:#e8edff}
.cat-empty{background:white;border:1px dashed var(--line);border-radius:14px}.cat-empty strong{display:block;color:var(--ink);font-size:15px}
.cat-cell{display:flex;gap:10px;align-items:center}.cat-cell code{display:block;color:var(--muted);font-size:11px}.cat-table td{vertical-align:middle}
.cat-inline{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;margin:8px 0 16px}.cat-inline.danger{border-color:#f5d2cd;background:#fff8f7}

/* Dialogs */
dialog.cat-dialog{padding:26px}dialog.cat-dialog.small{width:min(560px,calc(100% - 32px))}dialog.cat-dialog.wide{width:min(1080px,calc(100% - 32px));padding:0}
.cat-dialog h2{margin:0 0 6px}.cat-dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{display:inline-flex;align-items:center;gap:4px;background:#eef2ff;color:#2f4cb5;border:0;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}
.chip button{background:none;border:0;color:inherit;padding:0 2px;font-size:14px;line-height:1}.chip.static{background:#f1f4f9;color:var(--ink);font-weight:500}
.suggestions{margin:-6px 0 12px}.suggestions .chip{background:#f4f6fa;color:var(--muted);cursor:pointer}.suggestions .chip:hover{background:#e8edff;color:var(--blue);filter:none}
.reason textarea{min-height:58px}
.blockers{padding-left:18px;color:#7b3a2f}.blockers li{margin:6px 0}
.choice-list{display:grid;gap:10px}.choice{display:grid;gap:2px;text-align:left;background:white;color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:14px;font-weight:400}.choice strong{font-size:13px}.choice span{color:var(--muted);font-size:12px}.choice:hover{border-color:var(--blue);filter:none}
label.check{display:flex;align-items:center;gap:10px;font-weight:500}label.check input{width:auto}
.merge-visual{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;margin:4px 0 16px}
.merge-side{display:grid;justify-items:center;gap:4px;text-align:center;border:1px solid var(--line);border-radius:12px;padding:14px;min-height:118px;align-content:center}.merge-side.placeholder{border-style:dashed}.merge-arrow{font-size:22px;color:var(--muted)}
.reorder{list-style:none;padding:0;margin:8px 0 16px;max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:12px}
.reorder li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid #eef1f6}.reorder li:last-child{border-bottom:0}.reorder .pos{width:26px;color:var(--muted);font-size:11px;text-align:right}.reorder button{padding:4px 9px}.grow{flex:1;min-width:0}

/* Detail drawer */
dialog.cat-drawer{position:fixed;inset:0 0 0 auto;margin:0;height:100vh;max-height:100vh;max-width:100vw;width:min(520px,100vw);border-radius:18px 0 0 18px;padding:0 28px 0;animation:drawer-in .2s ease-out}
@keyframes drawer-in{from{transform:translateX(40px);opacity:0}}
.drawer-head{position:sticky;top:0;background:white;display:flex;justify-content:flex-end;padding:14px 0 0;z-index:1}
.drawer-hero{display:flex;gap:16px;align-items:center;margin-bottom:12px}.drawer-hero h2{margin:0}.drawer-hero code{color:var(--muted);display:block;margin-bottom:8px}
.cat-drawer section{border-top:1px solid var(--line);padding:16px 0 4px}.cat-drawer h3{margin-bottom:8px}
.usage-total{font-size:15px;font-weight:600;margin:0 0 8px}.usage-list{list-style:none;padding:0;margin:0 0 10px}.usage-list li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed #eef1f6}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;margin-bottom:12px}.fact span{display:block;color:var(--muted);font-size:11px}.fact strong{font-weight:600;font-size:13px}
.chip-group{display:grid;gap:6px;margin:0 0 14px}
.drawer-actions{position:sticky;bottom:0;background:white;display:flex;flex-wrap:wrap;gap:8px;padding:16px 0 20px;border-top:1px solid var(--line);margin-top:12px}

/* Add / edit form */
.cat-form .form-head{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 26px 10px;border-bottom:1px solid var(--line)}.form-head h2{margin:4px 0 0}
.form-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;padding:8px 26px 0}
.form-section{padding:16px 0;border-bottom:1px solid #eef1f6}.form-section h3{margin-bottom:6px}.form-section>.muted{margin-top:0}
.form-section.advanced summary{font-size:13px;font-weight:600;color:var(--ink)}.form-section.advanced[open] summary{margin-bottom:14px}
.field{display:grid;gap:7px;margin-bottom:14px}.field-label{font-size:12px;font-weight:600}
.form-side{position:relative}.app-preview{position:sticky;top:16px;margin-top:16px;border:1px solid var(--line);border-radius:16px;padding:16px;background:linear-gradient(180deg,#f8faff,#fff)}
.phone-row{display:flex;gap:12px;align-items:center;background:white;border:1px solid var(--line);border-radius:14px;padding:12px;margin:10px 0}.phone-row strong{display:block}.phone-row .muted{font-size:11px}.phone-row .emoji{font-size:20px}
.preview-facts{padding-left:18px;color:var(--muted);font-size:12px;margin:0}
.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;max-height:236px;overflow:auto;padding:8px 2px 2px;margin-top:8px}
.icon-tile{display:grid;justify-items:center;gap:4px;background:white;color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:10px 6px;font-weight:500}
.icon-tile span{font-size:10px;line-height:1.2;text-align:center;color:var(--muted);text-transform:capitalize;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.icon-tile:hover{border-color:#c5d0f5;filter:none}.icon-tile.selected{border-color:var(--blue);box-shadow:0 0 0 3px #365bed24;background:#f5f7ff}.icon-tile.selected span{color:var(--blue)}
.chip-input{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px solid #dce3ed;background:#fbfcff;border-radius:7px;padding:6px;min-height:42px;cursor:text}
.chip-input:focus-within{outline:2px solid #9babff;outline-offset:1px}.chip-input input{flex:1;min-width:140px;border:0;background:none;padding:5px;outline:none}.chip-input input:focus{outline:none}
.emoji-input{font-size:18px}
.cat-form>.error{padding:0 26px}.cat-form>footer{position:sticky;bottom:0;background:white;border-top:1px solid var(--line);padding:14px 26px;margin:0;display:flex;justify-content:flex-end;gap:10px}
small.error{font-size:12px}
@media(max-width:860px){.form-body{grid-template-columns:1fr}.form-side{order:-1}.app-preview{position:static}.facts{grid-template-columns:1fr}.merge-visual{grid-template-columns:1fr}.merge-arrow{transform:rotate(90deg);justify-self:center}}
@media(max-width:720px){.nav-group{display:none}#toasts{right:16px;left:16px;bottom:16px}}
input,textarea,select,button{font-family:inherit}.cat-inline code{display:block;color:var(--muted);font-size:11px}
@media(max-width:720px){main{max-width:100vw;overflow-x:hidden}.cat-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.cat-search{min-width:0;max-width:none;width:100%}.cat-toolbar-row>.actions{width:100%}.cat-toolbar-row>.actions button{flex:1}.segmented{max-width:100%;overflow-x:auto}.segmented button{white-space:nowrap}.cat-toolbar select{flex:1}.cat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tabs{margin-right:-20px}}

/* Merchant manager */
.merchant-logo{width:48px;height:48px;border-radius:12px;object-fit:contain;background:white;border:1px solid var(--line);flex:none}
.merchant-logo.initials{--size:48px;width:var(--size);height:var(--size);display:inline-grid;place-items:center;font-weight:700;font-size:calc(var(--size) * .36);letter-spacing:.5px;color:hsl(var(--hue) 55% 32%);background:hsl(var(--hue) 70% 92%);border-color:hsl(var(--hue) 50% 84%)}
.merchant-card .cat-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.merchant-category{display:inline-flex;align-items:center;gap:6px;margin-top:6px;font-size:11px;color:var(--ink);background:#f3f5f8;border-radius:6px;padding:2px 8px 2px 3px}.merchant-category .cat-icon{border-radius:5px}
.import-banner{display:flex;gap:16px;align-items:center;justify-content:space-between;background:linear-gradient(90deg,#eef2ff,#f8f9ff);border:1px solid #d8e0ff;border-radius:14px;padding:16px 18px;margin-bottom:16px}.import-banner p{margin:4px 0 0}.import-banner button{flex:none}
.logo-panel{display:grid;justify-items:center;gap:12px;margin:12px 0 4px}.logo-panel>img.merchant-logo,.logo-panel>.merchant-logo{width:96px;height:96px;border-radius:22px}
.logo-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.logo-actions button{padding:6px 10px}button.danger-text{color:#b94335}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.select-with-icon{display:flex;gap:10px;align-items:center}.select-with-icon select{flex:1}.select-icon{width:28px;height:28px;display:grid;place-items:center;flex:none}
.range-row{display:flex;gap:12px;align-items:center}.range-row input{flex:1;padding:0}
.cat-form>footer.split-footer{justify-content:space-between}
.progress{height:8px;background:#eef1f6;border-radius:999px;overflow:hidden;margin:6px 0 12px}.progress span{display:block;height:100%;width:0;background:var(--blue);transition:width .3s}
@media(max-width:720px){.import-banner{flex-direction:column;align-items:flex-start}}
