.fx-shine{overflow:hidden;position:relative}.fx-shine:after{background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.35) 50%,transparent 60%);content:"";inset:0;opacity:0;pointer-events:none;position:absolute;transform:translate(-100%)}.fx-shine:hover:after,.fx-shine:focus-visible:after{animation:fx-shine-sweep .75s ease}@keyframes fx-shine-sweep{0%{opacity:1;transform:translate(-100%)}to{opacity:1;transform:translate(100%)}}.fx-lift{transition:box-shadow .2s ease,transform .2s ease}.fx-lift:hover{box-shadow:0 10px 24px #0000001f;transform:translateY(-3px)}.fx-press{transition:transform .1s ease}.fx-press:active{transform:scale(.96)}.fx-glow{transition:box-shadow .2s ease}.fx-glow:hover,.fx-glow:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 22%,transparent),0 6px 20px color-mix(in srgb,var(--color-primary) 25%,transparent)}.fx-gradient-border{background:linear-gradient(var(--color-surface),var(--color-surface)) padding-box,conic-gradient(from var(--fx-angle, 0deg),var(--color-primary),color-mix(in srgb,var(--color-primary) 35%,#fff),var(--color-accent),var(--color-primary)) border-box;border:2px solid transparent;animation:fx-border-spin 4s linear infinite}@property --fx-angle{syntax: "<angle>"; inherits: false; initial-value: 0deg;}@keyframes fx-border-spin{to{--fx-angle: 360deg}}.fx-dots{align-items:center;display:inline-flex;gap:5px}.fx-dots span{animation:fx-dot-bounce .9s ease-in-out infinite;background:currentColor;border-radius:50%;height:7px;width:7px}.fx-dots span:nth-child(2){animation-delay:.15s}.fx-dots span:nth-child(3){animation-delay:.3s}@keyframes fx-dot-bounce{0%,60%,to{opacity:.45;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}.fx-spinner{animation:fx-spin .7s linear infinite;border:2.5px solid color-mix(in srgb,currentColor 25%,transparent);border-radius:50%;border-top-color:currentColor;display:inline-block;height:18px;width:18px}@keyframes fx-spin{to{transform:rotate(360deg)}}.fx-check-pop{animation:fx-pop .45s cubic-bezier(.175,.885,.32,1.4) both}@keyframes fx-pop{0%{opacity:0;transform:scale(.4)}70%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.fx-fade-up{animation:fx-fade-up .4s ease both;animation-delay:var(--fx-delay, 0s)}@keyframes fx-fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fx-pulse{position:relative}.fx-pulse:before{animation:fx-pulse-ring 1.8s cubic-bezier(.215,.61,.355,1) infinite;border:2px solid var(--color-primary);border-radius:inherit;content:"";inset:0;pointer-events:none;position:absolute}@keyframes fx-pulse-ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.25)}}.fx-underline{background:linear-gradient(currentColor,currentColor) no-repeat left bottom/0 1.5px;padding-bottom:2px;transition:background-size .25s ease}.fx-underline:hover,.fx-underline:focus-visible{background-size:100% 1.5px}@media(prefers-reduced-motion:reduce){.fx-shine:after,.fx-gradient-border,.fx-dots span,.fx-spinner,.fx-check-pop,.fx-fade-up,.fx-pulse:before{animation:none!important}.fx-lift,.fx-press,.fx-glow,.fx-underline{transition:none!important}}:root{--color-primary: #2563EB;--color-primary-hover:#1D4ED8;--color-accent: #3B82F6;--color-surface: #FFFFFF;--color-bg: #EFF6FF;--color-text: #0F172A;--color-text-muted: #5B6B80;--color-border: #DBEAFE;--color-success: #16A34A;--color-danger: #EF4444;--color-success-on-tint: #166534;--color-danger-on-tint: #B91C1C;--color-warning: #F59E0B;--color-warning-on-tint: #B45309;--color-muted: var(--color-text-muted);--color-primary-deep: color-mix(in srgb, var(--color-primary) 55%, #0F0A1F);--color-primary-soft: color-mix(in srgb, var(--color-primary) 10%, #FDFBFF);--color-primary-tint: color-mix(in srgb, var(--color-primary) 18%, #FFFFFF);--color-surface-tint: color-mix(in srgb, var(--color-bg) 55%, var(--color-surface));--font-family: Inter, system-ui, sans-serif;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 18px;--radius-pill: 999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--nav-h: 56px;--bottom-nav-h: 64px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-color:var(--color-border) transparent;scrollbar-width:thin}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:8px}::-webkit-scrollbar-track{background:transparent}body{overflow-x:clip}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:15px;line-height:1.6;margin:0;min-height:100dvh}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}h1,h2,h3,h4{line-height:1.2;margin:0}p{margin:0}ul,ol{margin:0;padding:0;list-style:none}ng-icon{flex-shrink:0}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.btn{align-items:center;border:none;border-radius:var(--radius-sm);display:inline-flex;font-size:14px;font-weight:600;gap:6px;justify-content:center;padding:10px 18px;transition:opacity .15s,background .15s,box-shadow .15s,transform .1s;white-space:nowrap}.btn--primary{background:var(--color-primary);border-radius:var(--radius-pill);box-shadow:0 4px 14px #0000002e;color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 6px 18px #00000038;transform:translateY(-1px)}.btn--primary:active:not(:disabled){transform:translateY(0) scale(.97)}.btn--outline{background:transparent;border:1.5px solid var(--color-border);color:var(--color-text)}.btn--outline:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn--ghost{background:transparent;color:var(--color-text-muted)}.btn--ghost:hover{color:var(--color-text)}.btn--danger{background:var(--color-danger);border-radius:var(--radius-pill);box-shadow:0 4px 14px color-mix(in srgb,var(--color-danger) 35%,transparent);color:#fff}.btn--danger:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 85%,black)}.btn:disabled{opacity:.45;cursor:default}.btn--full{width:100%}.btn--sm{font-size:13px;padding:7px 14px}.btn--lg{font-size:16px;padding:13px 24px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.skeleton{background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.input{background:var(--color-surface);border:none;border-radius:var(--radius-sm);box-shadow:0 0 0 1px var(--color-border),2px 2px 7px #0000001f;color:var(--color-text);font-size:14px;outline:none;padding:12px 14px;transition:box-shadow .15s ease,transform .15s ease;width:100%}.input::placeholder{color:var(--color-text-muted)}.input:focus{box-shadow:0 0 0 2px var(--color-primary),2px 2px 7px #0000001f}.input--invalid{animation:input-shake .3s ease-in-out;box-shadow:0 0 0 2px var(--color-danger),2px 2px 7px #0000001f}select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239CA3AF' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;cursor:pointer;padding-right:34px}textarea.input{min-height:88px;resize:vertical}@keyframes input-shake{25%{transform:translate(5px)}50%{transform:translate(-5px)}75%{transform:translate(5px)}to{transform:translate(0)}}.badge{border-radius:20px;display:inline-block;font-size:11px;font-weight:700;letter-spacing:.03em;padding:2px 9px;text-transform:uppercase}.badge--success{background:color-mix(in srgb,var(--color-success) 12%,var(--color-surface));color:var(--color-success-on-tint)}.badge--danger{background:color-mix(in srgb,var(--color-danger) 12%,var(--color-surface));color:var(--color-danger-on-tint)}.badge--neutral{background:#6b72801a;color:var(--color-text-muted)}.badge--primary{background:var(--color-primary-soft);color:var(--color-primary)}.badge--deal{background:var(--color-primary);color:#fff;border-radius:6px}.searchbar{align-items:center;background:var(--color-surface);border-radius:var(--radius-pill);box-shadow:var(--shadow-sm);color:var(--color-muted);display:flex;gap:10px;padding:4px 6px 4px 16px;transition:box-shadow .15s}.searchbar:focus-within{box-shadow:0 0 0 2px var(--color-primary)}.searchbar__input{background:none;border:none;flex:1;font-size:15px;min-width:0;padding:10px 0}.searchbar__input,.searchbar__input:focus,.searchbar__input:focus-visible{outline:none}.searchbar__input::placeholder{color:var(--color-muted)}.searchbar__go{align-items:center;background:var(--color-primary);border:none;border-radius:var(--radius-pill);color:#fff;display:flex;height:38px;justify-content:center;width:44px}.tab{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);box-shadow:var(--shadow-sm);color:var(--color-text);display:inline-flex;flex-shrink:0;font-size:13.5px;font-weight:600;gap:6px;padding:9px 18px;transition:background .15s,color .15s,border-color .15s;white-space:nowrap}.tab:hover{border-color:var(--color-primary)}.tab--active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.stepper{align-items:center;display:inline-flex;gap:8px}.stepper__btn{align-items:center;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:50%;color:var(--color-text);display:flex;font-size:16px;font-weight:700;height:30px;justify-content:center;line-height:1;width:30px}.stepper__btn:disabled{opacity:.4;cursor:default}.stepper__btn--add{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.stepper__value{font-size:14px;font-weight:700;min-width:20px;text-align:center}.icon-chip{align-items:center;background:var(--color-surface);border:none;border-radius:50%;box-shadow:var(--shadow-sm);color:var(--color-text);cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:box-shadow .15s;width:40px}.icon-chip:hover{box-shadow:var(--shadow-md)}.icon-btn{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;display:flex;flex-shrink:0;padding:6px;transition:color .15s,background .15s}.icon-btn--danger:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 12%,transparent);color:var(--color-danger)}.icon-btn:disabled{opacity:.4;cursor:default}.divider{border:none;border-top:1px solid var(--color-border);margin:0}.divider--dashed{border-top-style:dashed}.container{margin-inline:auto;max-width:1200px;padding-inline:16px;width:100%}@media(min-width:768px){.container{padding-inline:24px}}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.spec-table{display:flex;flex-direction:column;margin:0}.spec-row{border-bottom:1px solid var(--color-border);display:grid;gap:12px;grid-template-columns:minmax(90px,34%) 1fr;padding:9px 0}.spec-row:last-child{border-bottom:none}.spec-key{color:var(--color-muted);font-size:13px;margin:0}.spec-val{color:var(--color-text);font-size:13px;margin:0}
