:root{
  --navy:#0B2560;--navy-2:#11307A;--navy-3:#1A3E92;--sky:#1592D6;--sky-soft:#E6F4FC;--amber:#E89B0C;--amber-soft:#FFF4DC;
  --ink:#0F172A;--muted:#5B6B82;--line:#E3E8F0;--bg:#F2F4F8;--card:#FFFFFF;--danger:#D6334A;--success:#13955B;
  --radius:14px;--font-display:'Archivo',sans-serif;--font-body:'Instrument Sans',sans-serif;
}
*{-webkit-font-smoothing:antialiased}
body{font-family:var(--font-body);background:var(--bg);color:var(--ink);font-size:14.5px}
h1,h2,h3,h4,h5,.display-font{font-family:var(--font-display);letter-spacing:-.01em}
::selection{background:var(--sky);color:#fff}
a{color:var(--navy-3)}
.btn{border-radius:10px;font-weight:600;transition:transform .15s ease,background-color .15s ease,box-shadow .15s ease}
.btn:active{transform:translateY(1px) scale(.99)}
.btn-primary{background:var(--navy);border-color:var(--navy)}
.btn-primary:hover,.btn-primary:focus{background:var(--navy-3);border-color:var(--navy-3)}
.btn-sky{background:var(--sky);color:#fff;border:none}.btn-sky:hover{background:#0f7fbd;color:#fff}
.btn-amber{background:var(--amber);color:#fff;border:none}.btn-amber:hover{background:#cf8807;color:#fff}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn-ghost:hover{background:#fff;border-color:#c9d3e1}
.form-control,.form-select{border-radius:10px;border-color:#D5DCE7;padding:.55rem .8rem}
.form-control:focus,.form-select:focus{border-color:var(--sky);box-shadow:0 0 0 .2rem rgba(21,146,214,.15)}
.form-label{font-weight:600;font-size:13px;color:#33435a;margin-bottom:.35rem}
.form-text{font-size:12px}

/* shell */
.shell{display:flex;min-height:100vh}
.sidebar{width:260px;background:var(--navy);color:#C8D3EA;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:1040;transition:transform .25s ease}
.sidebar .brand{background:#fff;margin:14px;border-radius:12px;padding:10px 12px;display:flex;align-items:center;gap:10px;text-decoration:none}
.sidebar .brand img{height:38px}
.sidebar .brand span{font-family:var(--font-display);font-weight:800;color:var(--navy);font-size:15px;line-height:1.05}
.sidebar .brand small{display:block;font-family:var(--font-body);font-weight:500;color:var(--sky);font-size:11px}
.sidebar nav{overflow-y:auto;padding:4px 10px 20px;flex:1}
.nav-section{font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:#7F93BF;margin:18px 12px 6px;font-weight:700}
.side-link{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;color:#C8D3EA;text-decoration:none;font-weight:500;position:relative;transition:background-color .15s ease,color .15s ease}
.side-link i{font-size:16px;width:18px;text-align:center}
.side-link:hover{background:rgba(255,255,255,.06);color:#fff}
.side-link.active{background:var(--navy-2);color:#fff}
.side-link.active::before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--sky)}
.main{margin-left:260px;flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{height:66px;background:rgba(242,244,248,.85);backdrop-filter:blur(14px);position:sticky;top:0;z-index:1030;display:flex;align-items:center;gap:14px;padding:0 32px;border-bottom:1px solid var(--line)}
.topbar h1{font-size:19px;margin:0;font-weight:800}
.content{padding:28px 32px 56px}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--sky-soft);color:var(--navy);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;object-fit:cover;flex-shrink:0}
.avatar.lg{width:84px;height:84px;font-size:28px;border-radius:20px}
@media (max-width:991px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none}.main{margin-left:0}.content{padding:20px 16px 48px}.topbar{padding:0 16px}}

/* cards */
.card-x{background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}
.card-x .card-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}
.card-x .card-head h2{font-size:15px;font-weight:700;margin:0}
.card-x .card-body{padding:20px}
.stat{padding:20px;border-radius:var(--radius);background:#fff;border:1px solid var(--line);position:relative;overflow:hidden;animation:rise .5s ease both}
.stat .label{color:var(--muted);font-size:12.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.stat .value{font-family:var(--font-display);font-weight:800;font-size:28px;margin-top:6px;line-height:1}
.stat .icon{position:absolute;right:16px;top:16px;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px}
.stat.navy{background:var(--navy);color:#fff;border-color:var(--navy)}.stat.navy .label{color:#AFC0E4}
.stat.navy .icon{background:rgba(255,255,255,.1);color:#fff}
.i-sky{background:var(--sky-soft);color:var(--sky)}.i-amber{background:var(--amber-soft);color:var(--amber)}.i-green{background:#E3F6EC;color:var(--success)}.i-red{background:#FDE8EC;color:var(--danger)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.stagger>*:nth-child(2){animation-delay:.05s}.stagger>*:nth-child(3){animation-delay:.1s}.stagger>*:nth-child(4){animation-delay:.15s}
.stagger>*:nth-child(5){animation-delay:.2s}.stagger>*:nth-child(6){animation-delay:.25s}

/* tables */
.table-x{margin:0}
.table-x thead th{background:#F7F9FC;color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;border-bottom:1px solid var(--line);padding:11px 14px;white-space:nowrap}
.table-x td{padding:12px 14px;vertical-align:middle;border-color:#EEF1F6}
.table-x tbody tr{transition:background-color .12s ease}
.table-x tbody tr:hover{background:#FAFBFD}
.thumb{width:40px;height:40px;border-radius:10px;object-fit:cover;background:#EEF2F8;display:inline-flex;align-items:center;justify-content:center;color:#9AA8BE}
.pts{font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums}
.pts.plus{color:var(--success)}.pts.minus{color:var(--danger)}
.badge-s{font-size:11.5px;font-weight:700;padding:4px 9px;border-radius:999px;text-transform:capitalize;display:inline-block}
.b-active,.b-completed,.b-sent{background:#E3F6EC;color:#0E7A49}.b-inactive,.b-skipped,.b-logged{background:#EEF1F6;color:#56657C}
.b-blocked,.b-failed,.b-reversed,.b-cancelled{background:#FDE8EC;color:#B4243A}.b-queued,.b-running{background:var(--amber-soft);color:#9A6200}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.filters .form-control,.filters .form-select{min-width:150px}
.empty{padding:48px 20px;text-align:center;color:var(--muted)}
.empty i{font-size:34px;display:block;margin-bottom:8px;color:#B7C3D6}

/* auth */
.auth-wrap{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.auth-left{display:flex;flex-direction:column;justify-content:center;padding:56px clamp(24px,7vw,110px);background:#fff}
.auth-left img{height:84px;width:auto;align-self:flex-start;margin-bottom:38px}
.auth-right{background:var(--navy);color:#fff;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:64px}
.auth-right::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(135deg,rgba(255,255,255,.035) 0 2px,transparent 2px 22px)}
.auth-right .roof{position:absolute;right:-60px;top:12%;width:520px;height:300px;border-top:14px solid var(--sky);border-right:14px solid var(--sky);transform:rotate(-45deg);opacity:.35}
.auth-right h2{font-size:clamp(34px,4vw,54px);font-weight:900;line-height:1.02;position:relative;max-width:520px}
.auth-right p{color:#B9C7E6;position:relative;max-width:440px;font-size:15px}
.otp-input{font-family:var(--font-display);font-size:28px;letter-spacing:.6em;text-align:center;font-weight:800}
.dev-hint{background:var(--amber-soft);border:1px dashed var(--amber);color:#7a4f00;border-radius:10px;padding:10px 12px;font-size:13px}
@media (max-width:900px){.auth-wrap{grid-template-columns:1fr}.auth-right{display:none}}

/* points form */
.line-row{display:grid;grid-template-columns:1fr 150px 140px 44px;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;margin-bottom:10px;background:#FBFCFE;animation:rise .25s ease both}
.line-row .line-pts{text-align:right;font-family:var(--font-display);font-weight:700;font-size:16px}
@media (max-width:640px){.line-row{grid-template-columns:1fr 1fr}.line-row .line-pts{text-align:left}}
.total-box{background:var(--navy);color:#fff;border-radius:var(--radius);padding:22px}
.total-box .big{font-family:var(--font-display);font-weight:900;font-size:40px;line-height:1}
.gift-card{border:1.5px solid var(--line);border-radius:14px;padding:14px;background:#fff;height:100%;transition:border-color .15s ease,transform .15s ease}
.gift-card:hover{transform:translateY(-2px)}
.gift-card.selected{border-color:var(--sky);background:#F5FBFF}
.gift-card img{width:100%;height:120px;object-fit:cover;border-radius:10px;background:#EEF2F8}
.qty{display:flex;align-items:center;gap:6px}.qty input{width:56px;text-align:center}
.ts-control{border-radius:10px!important;padding:.55rem .8rem!important;border-color:#D5DCE7!important}
.json-cell{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:#475569;max-width:420px;white-space:pre-wrap;word-break:break-word}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.perm-grid label{border:1px solid var(--line);border-radius:10px;padding:9px 12px;display:flex;gap:9px;align-items:center;cursor:pointer;background:#fff}
.danger-zone{border:1.5px solid #F3B4BE;background:#FFF7F8;border-radius:var(--radius)}
.b-submitted,.b-sending{background:#E6F0FB;color:#1D5FA8}.b-delivered{background:#E3F6EC;color:#0E7A49}.b-undelivered{background:#FDE8EC;color:#B4243A}.b-retry{background:var(--amber-soft);color:#9A6200}
