.tag-input{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);min-height:44px;max-height:160px;overflow-y:auto;padding:var(--space-2) var(--space-3);background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-md);cursor:text;transition:border-color var(--duration-fast) var(--ease)}.tag-input:focus-within{border-color:var(--border-focus);box-shadow:0 0 0 3px #7cc4ff1f}.tag-input--disabled{cursor:default;opacity:.6}.tag-input__chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 var(--space-2) 0 var(--space-3);background:var(--bg-3);border:1px solid var(--border-strong);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-family:var(--font-mono);color:var(--fg-1);white-space:nowrap;line-height:1}.tag-input__chip-text{max-width:200px;overflow:hidden;text-overflow:ellipsis}.tag-input__chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--fg-muted);font-size:14px;line-height:1;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast);flex-shrink:0}.tag-input__chip-remove:hover{background:var(--danger-soft);color:var(--danger)}.tag-input__input{flex:1;min-width:120px;height:24px;padding:0;border:none;background:transparent;color:var(--fg-0);font-size:var(--fs-sm);font-family:var(--font);outline:none}.tag-input__input::placeholder{color:var(--fg-dim)}.toast-stack{position:fixed;top:var(--space-4);right:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:var(--space-3);background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);min-width:0;width:min(380px,calc(100vw - (2 * var(--space-3))));max-width:380px;box-shadow:var(--shadow-2);animation:toast-in .18s var(--ease)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.toast__icon{display:flex;align-items:center;padding-top:2px}.toast__body{flex:1;min-width:0}.toast__title{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--fg-0)}.toast__desc{font-size:var(--fs-sm);color:var(--fg-muted);margin-top:2px;word-break:break-word}.toast__close{background:transparent;border:none;color:var(--fg-muted);cursor:pointer;display:flex;align-items:center;padding:2px;border-radius:var(--radius-sm)}.toast__close:hover{color:var(--fg-0);background:var(--bg-3)}.toast--success{border-left:3px solid var(--success)}.toast--success .toast__icon{color:var(--success)}.toast--error{border-left:3px solid var(--danger)}.toast--error .toast__icon{color:var(--danger)}.toast--warning{border-left:3px solid var(--warning)}.toast--warning .toast__icon{color:var(--warning)}.toast--info{border-left:3px solid var(--accent)}.toast--info .toast__icon{color:var(--accent)}@media(max-width:480px){.toast-stack{left:var(--space-3);right:var(--space-3);top:var(--space-3)}.toast{width:100%;max-width:none}}:root{--bg-0: #050710;--bg-1: #080b18;--bg-2: #0c1020;--bg-3: #141c2e;--bg-4: #1e2840;--fg-0: #dce4f5;--fg-1: #a8b6d4;--fg-muted: #7b8fba;--fg-dim: #3d4f72;--accent: #4d7fff;--accent-hover: #6f97ff;--accent-fg: #eef3ff;--danger: #ff6b6b;--danger-soft: rgba(255, 107, 107, .12);--success: #5ddc9b;--success-soft: rgba(93, 220, 155, .12);--warning: #ffb86b;--border: #262626;--border-strong: #353535;--border-focus: var(--accent);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--fs-xs: .72rem;--fs-sm: .82rem;--fs-md: .92rem;--fs-lg: 1.05rem;--fs-xl: 1.25rem;--fs-xxl: 1.6rem;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--lh-tight: 1.15;--lh-normal: 1.45;--font: "Sora", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--duration-fast: .12s;--duration-med: .2s;--ease: cubic-bezier(.2, .8, .2, 1);--ease-premium: cubic-bezier(.16, 1, .3, 1);--ease-layout-outlet: cubic-bezier(.2, .8, .2, 1);--motion-route-enter: .18s;--motion-login-card: .46s;--shadow-1: 0 1px 2px rgba(0, 0, 0, .35);--shadow-2: 0 4px 14px rgba(0, 0, 0, .55);--focus-ring: 0 0 0 2px var(--bg-0), 0 0 0 4px var(--accent)}:root[data-theme=light]{--bg-0: #fafafa;--bg-1: #ffffff;--bg-2: #f1f2f4;--bg-3: #e6e8eb;--bg-4: #dcdfe3;--fg-0: #0f1115;--fg-1: #353942;--fg-muted: #5c6370;--fg-dim: #8a8f98;--accent: #1769d4;--accent-hover: #1a7bf0;--accent-fg: #ffffff;--danger: #d9534f;--danger-soft: rgba(217, 83, 79, .1);--success: #2e9a68;--success-soft: rgba(46, 154, 104, .12);--warning: #c97a14;--border: #e1e4e8;--border-strong: #c9ced4;--shadow-1: 0 1px 2px rgba(15, 17, 21, .08);--shadow-2: 0 4px 14px rgba(15, 17, 21, .12);--focus-ring: 0 0 0 2px #ffffff, 0 0 0 4px var(--accent)}@media(prefers-color-scheme:light){:root:not([data-theme]){--bg-0: #fafafa;--bg-1: #ffffff;--bg-2: #f1f2f4;--bg-3: #e6e8eb;--bg-4: #dcdfe3;--fg-0: #0f1115;--fg-1: #353942;--fg-muted: #5c6370;--fg-dim: #8a8f98;--accent: #1769d4;--accent-hover: #1a7bf0;--accent-fg: #ffffff;--danger: #d9534f;--danger-soft: rgba(217, 83, 79, .1);--success: #2e9a68;--success-soft: rgba(46, 154, 104, .12);--warning: #c97a14;--border: #e1e4e8;--border-strong: #c9ced4;--shadow-1: 0 1px 2px rgba(15, 17, 21, .08);--shadow-2: 0 4px 14px rgba(15, 17, 21, .12);--focus-ring: 0 0 0 2px #ffffff, 0 0 0 4px var(--accent)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:0ms!important;transition-duration:0ms!important}.skeleton{animation-duration:6s!important;animation-iteration-count:infinite!important}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:78px}html,body,#root{margin:0;padding:0;min-height:100vh;background:var(--bg-0);color:var(--fg-0);font-family:var(--font);font-size:16px;line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6,p{margin:0}button{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus{outline:none}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}::selection{background:var(--accent);color:var(--accent-fg)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:var(--radius-pill);border:2px solid var(--bg-0)}::-webkit-scrollbar-thumb:hover{background:var(--bg-4)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;border:0;clip:rect(0 0 0 0)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);font-weight:var(--fw-medium);cursor:pointer;transition:background var(--duration-med) var(--ease),border-color var(--duration-med) var(--ease),color var(--duration-med) var(--ease),box-shadow var(--duration-med) var(--ease),transform var(--duration-med) var(--ease-premium);white-space:nowrap;text-decoration:none;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(0);transition-duration:var(--duration-fast)}.btn--sm{padding:6px 10px;font-size:var(--fs-sm);height:30px}.btn--md{padding:8px 14px;font-size:var(--fs-md);height:36px}.btn--lg{padding:12px 20px;font-size:var(--fs-md);height:44px}.btn--primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);box-shadow:0 1px #ffffff1f inset,var(--shadow-1)}.btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);transform:translateY(-1px);box-shadow:0 1px #ffffff29 inset,0 6px 20px #7cc4ff38}.btn--primary:active:not(:disabled){box-shadow:0 1px #ffffff14 inset,var(--shadow-1)}.btn--secondary{background:var(--bg-2);color:var(--fg-0);border-color:var(--border-strong);box-shadow:var(--shadow-1)}.btn--secondary:hover:not(:disabled){background:var(--bg-3);border-color:var(--fg-dim);transform:translateY(-1px);box-shadow:var(--shadow-2)}.btn--secondary:active:not(:disabled){box-shadow:var(--shadow-1)}.btn--ghost{background:transparent;color:var(--fg-1);border-color:transparent;box-shadow:none}.btn--ghost:hover:not(:disabled){background:var(--bg-2);color:var(--fg-0);transform:translateY(-1px);box-shadow:0 0 0 1px #ffffff0f,var(--shadow-1)}.btn--ghost:active:not(:disabled){box-shadow:none}.btn--danger{background:var(--danger-soft);color:var(--danger);border-color:#ff6b6b59;box-shadow:var(--shadow-1)}.btn--danger:hover:not(:disabled){background:var(--danger);color:var(--bg-0);border-color:var(--danger);transform:translateY(-1px);box-shadow:0 6px 18px #ff6b6b47}.btn--danger:active:not(:disabled){box-shadow:var(--shadow-1)}.btn--icon-only{width:36px;padding:0}.btn--icon-only.btn--sm{width:30px}@media(prefers-reduced-motion:reduce){.btn{transition-property:background,border-color,color,box-shadow}.btn--primary:hover:not(:disabled),.btn--primary:active:not(:disabled),.btn--secondary:hover:not(:disabled),.btn--secondary:active:not(:disabled),.btn--ghost:hover:not(:disabled),.btn--ghost:active:not(:disabled),.btn--danger:hover:not(:disabled),.btn--danger:active:not(:disabled){transform:none}}.input-wrap{position:relative;display:flex;align-items:center}.input-wrap__leading{position:absolute;left:10px;color:var(--fg-muted);display:flex;align-items:center;pointer-events:none}.input{width:100%;background:var(--bg-1);border:1px solid var(--border);color:var(--fg-0);border-radius:var(--radius-md);padding:8px 12px;font-size:var(--fs-md);font-family:inherit;transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease);height:36px}.input:hover{border-color:var(--border-strong)}.input:focus{border-color:var(--accent);background:var(--bg-2)}.input--with-leading{padding-left:34px}.input--with-trailing{padding-right:34px}.input-wrap__trailing{position:absolute;right:10px;display:flex;align-items:center;background:none;border:none;padding:0;color:var(--fg-muted);cursor:pointer;transition:color var(--duration-fast) var(--ease)}.input-wrap__trailing:hover{color:var(--fg-0)}.input--error{border-color:var(--danger)}.input::placeholder{color:var(--fg-dim)}.card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5)}.card--interactive{cursor:pointer;transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease);text-align:left;font:inherit;color:inherit;display:block;width:100%}.card--interactive:hover{border-color:var(--border-strong);background:var(--bg-2)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:2px 8px;border-radius:var(--radius-pill);background:var(--bg-3);color:var(--fg-1);border:1px solid var(--border)}.badge--accent{background:#7cc4ff24;color:var(--accent);border-color:#7cc4ff52}.badge--success{background:var(--success-soft);color:var(--success);border-color:#5ddc9b4d}.badge--danger{background:var(--danger-soft);color:var(--danger);border-color:#ff6b6b4d}.badge--muted{background:transparent;color:var(--fg-muted);border-color:var(--border)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .75s linear infinite}.spinner--lg{width:28px;height:28px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{display:block;position:relative;overflow:hidden;background-color:var(--bg-2);border-radius:var(--radius-sm)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 28%,rgba(255,255,255,.22) 48%,transparent 68%);transform:translate(-130%);animation:skeleton-gradient-walk 1.8s ease-in-out infinite!important}@keyframes skeleton-gradient-walk{0%{transform:translate(-130%)}to{transform:translate(130%)}}@media(prefers-reduced-motion:reduce){.skeleton:after{animation-duration:6s!important}}.stack{display:flex}.stack--vertical{flex-direction:column}.stack--horizontal{flex-direction:row}.textarea{width:100%;background:var(--bg-1);border:1px solid var(--border);color:var(--fg-0);border-radius:var(--radius-md);padding:10px 12px;font-size:var(--fs-sm);font-family:var(--font-mono);line-height:1.5;transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease);resize:vertical;min-height:96px}.textarea:hover{border-color:var(--border-strong)}.textarea:focus{border-color:var(--accent);background:var(--bg-2)}.textarea--error{border-color:var(--danger)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;display:flex;align-items:center;justify-content:center;padding:var(--space-4);padding-bottom:max(var(--space-4),var(--safe-area-bottom));padding-left:max(var(--space-4),var(--safe-area-left));padding-right:max(var(--space-4),var(--safe-area-right));animation:dialog-fade var(--duration-fast) var(--ease)}.dialog{background:var(--bg-1);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);width:100%;max-width:440px;padding:var(--space-5);outline:none;animation:dialog-pop var(--duration-med) var(--ease)}@media(max-width:640px){.dialog{max-width:100%;border-radius:var(--radius-md)}}.dialog__title{margin:0 0 var(--space-2);font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--fg-0)}.dialog__desc{margin:0 0 var(--space-4);color:var(--fg-1);font-size:var(--fs-sm);line-height:1.5}.dialog__body{margin-bottom:var(--space-4)}.dialog__footer{margin-top:var(--space-4)}@keyframes dialog-fade{0%{opacity:0}to{opacity:1}}@keyframes dialog-pop{0%{transform:translateY(6px) scale(.98);opacity:0}to{transform:none;opacity:1}}.text-muted{color:var(--fg-muted)}.text-dim{color:var(--fg-dim)}.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-lg{font-size:var(--fs-lg)}.text-xl{font-size:var(--fs-xl)}.text-mono{font-family:var(--font-mono)}.fw-semibold{font-weight:var(--fw-semibold)}
