/* NumberGuy base: tokens, reset, primitives (contract section 7). */
:root{--background:#fff;--foreground:#0d0f1a;--card:#f8f8fc;--muted:#f3f4f8;--muted-foreground:#6b7280;--primary:#3b30e8;--primary-foreground:#fff;--secondary:#f0effd;--accent:#ff5c35;--destructive:#d4183d;--border:rgba(0,0,0,.09);--ring:#3b30e8;--radius:.625rem;--radius-xl:1rem;--radius-2xl:1.25rem;
--font-head:'Outfit',system-ui,sans-serif;--font-body:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--font-mono:'DM Mono',ui-monospace,monospace;
--tier-base-bg:#f3f4f8;--tier-base:#6b7280;--tier-special-bg:#eff6ff;--tier-special:#2563eb;--tier-exclusive-bg:#f5f3ff;--tier-exclusive:#7c3aed;--tier-premium-bg:#fffbeb;--tier-premium:#d97706;--header-h:64px}
*,*::before,*::after{box-sizing:border-box;border-color:var(--border)}
html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}
body{margin:0;background:var(--background);color:var(--foreground);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;padding-top:var(--header-h)}
img,svg{max-width:100%;height:auto}svg{height:auto}img{display:inline-block}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0}ul,ol{padding:0;list-style:none}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
fieldset{border:0;margin:0;padding:0;min-width:0}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
[hidden]{display:none!important}
.ng-icon{flex-shrink:0;vertical-align:-.125em}
.ng-fill{fill:currentColor}
.ng-sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ng-skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--primary);color:#fff;padding:8px 14px;border-radius:8px}.ng-skip:focus{left:8px}
.ng-modal-open,.ng-sheet-open{overflow:hidden}

/* layout */
.ng-container{width:100%;max-width:1280px;margin:0 auto;padding:0 24px}.ng-container--narrow{max-width:760px}
.ng-section{padding:72px 0}.ng-section.ng-container{padding-top:72px;padding-bottom:72px}
.ng-grid{display:grid;gap:20px;grid-template-columns:1fr}
@media(min-width:768px){.ng-grid--2,.ng-grid--3,.ng-grid--4{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.ng-grid--3{grid-template-columns:repeat(3,1fr)}.ng-grid--4{grid-template-columns:repeat(4,1fr)}}
.ng-h1{font-family:var(--font-head);font-weight:900;font-size:clamp(1.9rem,4vw,2.4rem);line-height:1.15;letter-spacing:-.01em}
.ng-h2{font-family:var(--font-head);font-weight:900;font-size:clamp(1.75rem,3.5vw,2.25rem);line-height:1.15}
.ng-h3{font-family:var(--font-head);font-weight:900;font-size:1.5rem;line-height:1.2;display:flex;align-items:center;gap:8px}
.ng-lead{color:var(--muted-foreground);max-width:36rem;font-size:1rem}
.ng-eyebrow{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--primary);margin-bottom:12px}
.ng-number{font-family:var(--font-mono);font-weight:700}
.ng-hl{color:var(--accent)}

/* buttons */
.ng-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:.875rem;line-height:1.2;padding:11px 20px;border-radius:12px;border:1px solid transparent;background:transparent;transition:opacity .15s,border-color .15s,background .15s,transform .15s;cursor:pointer;text-align:center}
.ng-btn:hover{opacity:.9}.ng-btn:active{transform:scale(.98)}.ng-btn:disabled{opacity:.5;cursor:not-allowed}
.ng-btn--primary{background:var(--primary);color:#fff}.ng-btn--accent{background:var(--accent);color:#fff}
.ng-btn--outline{border-color:var(--border);background:#fff;color:var(--foreground)}.ng-btn--outline:hover{opacity:1;border-color:rgba(59,48,232,.3);background:var(--secondary)}
.ng-btn--ghost{color:var(--muted-foreground)}.ng-btn--ghost:hover{background:var(--muted)}
.ng-btn--white{background:#fff;color:var(--primary)}
.ng-btn--sm{padding:8px 14px;font-size:.8rem;border-radius:10px}.ng-btn--lg{padding:14px 24px}.ng-btn--xl{padding:16px 32px;font-size:1rem}
.ng-btn--block{display:flex;width:100%}.ng-btn--grow{flex:1}
.ng-btn--danger:hover{border-color:#fecaca;color:#ef4444;background:#fff}
.ng-linkbtn{background:none;border:0;padding:0;color:inherit;text-align:left}.ng-linkbtn:hover{color:var(--primary)}
.ng-iconbtn{display:inline-flex;align-items:center;justify-content:center;padding:6px;border-radius:50%;background:none;border:0;color:var(--muted-foreground)}.ng-iconbtn:hover{background:var(--muted);color:var(--foreground)}

/* forms */
.ng-label{display:block;font-size:.75rem;font-weight:600;margin-bottom:6px}
.ng-label--caps{text-transform:uppercase;letter-spacing:.1em;color:var(--muted-foreground)}
.ng-input,.ng-select,.ng-textarea{width:100%;padding:10px 14px;border-radius:12px;border:1px solid var(--border);background:#fff;font-size:.875rem;transition:border-color .15s,box-shadow .15s}
.ng-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='3'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
.ng-textarea{min-height:96px;resize:vertical}
.ng-input:focus,.ng-select:focus,.ng-textarea:focus{outline:none;border-color:rgba(59,48,232,.5);box-shadow:0 0 0 3px rgba(59,48,232,.12)}
.ng-input:disabled,.ng-select:disabled{opacity:.5;cursor:not-allowed}
.ng-req{color:var(--accent)}.ng-req--primary{color:var(--primary)}.ng-opt{font-weight:400;color:var(--muted-foreground)}
.ng-form{display:grid;gap:12px}

/* card, badge, alert */
.ng-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius-2xl);padding:24px}
.ng-card--hover{transition:box-shadow .2s,transform .2s,border-color .2s}.ng-card--hover:hover{box-shadow:0 8px 24px rgba(0,0,0,.08);transform:translateY(-4px)}
.ng-badge{display:inline-block;font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--tier-base-bg);color:var(--tier-base);line-height:1.2}
.ng-badge--lg{font-size:.75rem;padding:4px 12px}
.ng-badge--base{background:var(--tier-base-bg);color:var(--tier-base)}.ng-badge--special{background:var(--tier-special-bg);color:var(--tier-special)}
.ng-badge--exclusive{background:var(--tier-exclusive-bg);color:var(--tier-exclusive)}.ng-badge--premium{background:var(--tier-premium-bg);color:var(--tier-premium)}
.ng-alert{padding:10px 14px;border-radius:10px;font-size:.8rem}
.ng-alert--error{background:#fef2f2;color:#b91c1c}.ng-alert--success{background:#f0fdf4;color:#15803d}.ng-alert--info{background:rgba(59,48,232,.07);color:var(--primary)}
.ng-spinner{display:inline-block;width:15px;height:15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ng-spin .7s linear infinite;vertical-align:-2px}
@keyframes ng-spin{to{transform:rotate(360deg)}}

/* toast */
.ng-toast-wrap{position:fixed;right:16px;bottom:16px;z-index:200;display:grid;gap:8px;max-width:calc(100vw - 32px)}
.ng-toast{background:#111827;color:#fff;padding:12px 16px;border-radius:12px;font-size:.875rem;box-shadow:0 10px 30px rgba(0,0,0,.25);animation:ng-in .2s ease-out}
.ng-toast--success{background:#15803d}.ng-toast--error{background:#b91c1c}.ng-toast.is-leaving{opacity:0;transition:opacity .25s}
@keyframes ng-in{from{opacity:0;transform:translateY(8px)}}

/* modal */
.ng-modal{position:fixed;inset:0;z-index:150;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.5)}
.ng-modal__dialog{position:relative;width:100%;max-width:520px;max-height:calc(100vh - 32px);overflow:auto;background:#fff;border-radius:var(--radius-2xl);box-shadow:0 25px 50px rgba(0,0,0,.25);padding:24px}
.ng-modal__dialog--sm{max-width:384px}
.ng-modal__close{position:absolute;top:14px;right:14px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;border:0;background:none}.ng-modal__close:hover{background:var(--muted)}
.ng-modal__head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.ng-modal__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;flex-shrink:0;background:rgba(59,48,232,.08);color:var(--primary)}.ng-modal__icon--accent{background:rgba(255,92,53,.1);color:var(--accent)}
.ng-modal__title{font-family:var(--font-head);font-weight:900;font-size:1.15rem;line-height:1.2}
.ng-modal__sub{font-size:.75rem;color:var(--muted-foreground)}
.ng-modal__text{font-size:.875rem;color:var(--muted-foreground);margin-bottom:16px}
.ng-modal__fine{font-size:.7rem;text-align:center;color:var(--muted-foreground)}
.ng-modal__done{text-align:center;padding:16px 0}.ng-modal__done .ng-modal__title{font-size:1.3rem;margin-bottom:8px}
.ng-modal__bigicon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;margin:0 auto 16px;background:rgba(59,48,232,.08);color:var(--primary)}.ng-modal__bigicon--accent{background:rgba(255,92,53,.1);color:var(--accent)}
.ng-modal__summary{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin-bottom:16px;display:grid;gap:4px;font-size:.875rem}
.ng-modal__summary div{display:flex;justify-content:space-between}.ng-modal__summary dt{color:var(--muted-foreground)}.ng-modal__summary dd{font-weight:700}
.ng-modal__expiry{background:rgba(59,48,232,.06);border-radius:12px;padding:12px 16px;margin:12px 0 16px;font-size:.875rem}.ng-modal__expiry p{font-size:.75rem;color:var(--muted-foreground)}

/* breadcrumb, pagination */
.ng-breadcrumb{font-size:.75rem;color:var(--muted-foreground);margin-bottom:12px}
.ng-breadcrumb ol{display:flex;flex-wrap:wrap;gap:6px}.ng-breadcrumb li+li::before{content:"/";margin-right:6px}
.ng-breadcrumb a:hover{color:var(--foreground)}.ng-breadcrumb [aria-current]{color:var(--foreground);font-weight:500}
.ng-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:48px}
.ng-pagination__btn,.ng-pagination__num{display:inline-flex;align-items:center;gap:4px;padding:8px 14px;border-radius:12px;border:1px solid var(--border);font-size:.875rem;font-weight:500;background:#fff}
.ng-pagination__btn:hover,.ng-pagination__num:hover{border-color:rgba(59,48,232,.3)}.ng-pagination__btn.is-disabled{opacity:.4;pointer-events:none}
.ng-pagination__pages{display:flex;gap:6px}.ng-pagination__num{padding:8px 12px;min-width:38px;justify-content:center}
.ng-pagination__num.is-current{background:var(--primary);color:#fff;border-color:var(--primary)}.ng-pagination__gap{padding:8px 4px;color:var(--muted-foreground)}
.ng-pagination__status{width:100%;text-align:center;font-size:.8rem;color:var(--muted-foreground);order:5}
@media(max-width:640px){.ng-pagination__pages{display:none}.ng-pagination__status{order:0;width:auto}}
