.brand{align-items:center;gap:var(--space-2);min-height:2.75rem;font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:-.01em;text-decoration:none;display:inline-flex}.brand--light,.brand--light:hover{color:var(--color-text)}.brand--dark,.brand--dark:hover{color:var(--color-on-dark)}.brand__mark{width:1.75rem;height:1.75rem;color:var(--color-brand)}.spinner{flex-shrink:0;animation:.8s linear infinite spinner-rotate}.spinner--sm{width:1rem;height:1rem}.spinner--md{width:1.5rem;height:1.5rem}.spinner--lg{width:2.5rem;height:2.5rem}.spinner__track{stroke:currentColor;opacity:.2}.spinner__arc{stroke:currentColor;stroke-linecap:round}.spinner-status{align-items:center;display:inline-flex}@keyframes spinner-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}.page-loader{justify-content:center;align-items:center;gap:var(--space-3);min-height:50vh;padding:var(--space-8);color:var(--color-primary);flex-direction:column;display:flex}.page-loader__label{color:var(--color-text);font-weight:var(--weight-medium)}.skeleton{border-radius:var(--radius-sm);background:linear-gradient(90deg,#ebe5ef 0%,#f6f2f8 50%,#ebe5ef 100%) 0 0/200% 100%;animation:1.4s ease-in-out infinite skeleton-shimmer;display:block}.skeleton--pill{border-radius:var(--radius-full)}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.state-block{align-items:center;gap:var(--space-2);padding:var(--space-10) var(--space-6);text-align:center;flex-direction:column;display:flex}.state-block__icon{width:3rem;height:3rem;margin-bottom:var(--space-1);border-radius:var(--radius-full);background:var(--color-success-bg);color:var(--color-primary);place-items:center;display:grid}.state-block__icon svg{width:1.5rem;height:1.5rem}.state-block--error .state-block__icon{background:var(--color-danger-bg);color:var(--color-danger)}.state-block__title{font-size:var(--text-lg)}.state-block__text{max-width:34rem;color:var(--color-text-secondary)}.state-block__action{justify-content:center;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.alert{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--color-text);border:1px solid #0000;border-left-width:4px;display:flex}.alert__icon{flex-shrink:0;width:1.25rem;height:1.25rem;margin-top:.1rem}.alert__body{flex:1;min-width:0}.alert__title{font-weight:var(--weight-semibold)}.alert__text{font-size:var(--text-sm)}.alert__action{flex-shrink:0}.alert--info{background:var(--color-info-bg);border-color:var(--color-teal)}.alert--info .alert__icon{color:var(--color-primary)}.alert--success{background:var(--color-success-bg);border-color:var(--color-teal)}.alert--success .alert__icon{color:var(--color-primary)}.alert--warning{background:var(--color-warning-bg);border-color:var(--color-brand)}.alert--warning .alert__icon{color:var(--color-danger)}.alert--error{background:var(--color-danger-bg);border-color:var(--color-danger)}.alert--error .alert__icon,.alert--error .alert__title{color:var(--color-danger)}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:2.75rem;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-semibold);text-align:center;white-space:nowrap;transition:background-color var(--duration-fast) var(--easing-standard), border-color var(--duration-fast) var(--easing-standard), color var(--duration-fast) var(--easing-standard), box-shadow var(--duration-fast) var(--easing-standard);border:1px solid #0000;line-height:1.2;text-decoration:none;display:inline-flex}.btn svg{flex-shrink:0;width:1.125rem;height:1.125rem}.btn--sm{min-height:2.25rem;padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}.btn--block{width:100%}.btn--primary{background:var(--color-primary);color:var(--color-on-dark);box-shadow:var(--shadow-sm)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover);color:var(--color-on-dark)}.btn--secondary{background:var(--color-surface);border-color:var(--color-primary);color:var(--color-primary)}.btn--secondary:hover:not(:disabled){background:var(--color-success-bg);color:var(--color-primary-hover)}.btn--danger{background:var(--color-danger);color:var(--color-on-dark)}.btn--danger:hover:not(:disabled){background:var(--color-danger-hover);color:var(--color-on-dark)}.btn--ghost{color:var(--color-text);background:0 0}.btn--ghost:hover:not(:disabled){color:var(--color-text);background:#1f1a240f}.btn:disabled{opacity:.6}.btn[aria-busy=true]{opacity:.85;cursor:progress}.field{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.field__label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text)}.field__required{color:var(--color-danger)}.field__hint{font-size:var(--text-sm);color:var(--color-text-secondary)}.field__control{width:100%;min-height:2.75rem;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--easing-standard)}.field__control::placeholder{color:var(--color-neutral);opacity:1}.field__control:hover{border-color:var(--color-text)}.field__control:focus-visible{border-color:var(--color-primary)}.field__control[aria-invalid=true]{border-color:var(--color-danger);border-width:2px}.field__select{appearance:none;padding-right:var(--space-10);background-image:linear-gradient(45deg, transparent 50%, var(--color-text) 50%), linear-gradient(135deg, var(--color-text) 50%, transparent 50%);background-position:calc(100% - 1.15rem) 1.15rem,calc(100% - .8rem) 1.15rem;background-repeat:no-repeat;background-size:.35rem .35rem}.field__password{position:relative}.field__control--with-action{padding-right:3rem}.field__toggle{top:50%;right:var(--space-1);border-radius:var(--radius-sm);width:2.5rem;height:2.5rem;color:var(--color-text-secondary);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex;position:absolute;transform:translateY(-50%)}.field__toggle:hover{color:var(--color-text);background:#1f1a240f}.field__toggle svg{width:1.25rem;height:1.25rem}.field__error{align-items:flex-start;gap:var(--space-1);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-danger);display:flex}.field__error-icon{flex-shrink:0;width:1rem;height:1rem;margin-top:.15rem}.dialog{width:min(100% - 2 * var(--space-4), 32rem);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);max-height:min(90vh,48rem);color:var(--color-text);box-shadow:var(--shadow-lg);padding:0;overflow:auto}.dialog--sm{width:min(100% - 2 * var(--space-4), 26rem)}.dialog--lg{width:min(100% - 2 * var(--space-4), 44rem)}.dialog::backdrop{background:#1f1a248c}.dialog__header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-5) var(--space-5) var(--space-2);display:flex}.dialog__title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0}.dialog__close{border-radius:var(--radius-md);min-width:2.5rem;min-height:2.5rem;color:var(--color-text-secondary);font-size:var(--text-xl);cursor:pointer;background:0 0;border:0}.dialog__close:hover{background:var(--color-surface-muted)}.dialog__description{padding:0 var(--space-5);color:var(--color-text-secondary)}.dialog__body{padding:var(--space-4) var(--space-5)}.dialog__footer{justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5) var(--space-5);flex-wrap:wrap;display:flex}.pagination{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.pagination__summary{font-size:var(--text-sm);color:var(--color-text-secondary)}.pagination__list{align-items:center;gap:var(--space-1);display:flex}.pagination__button{justify-content:center;align-items:center;gap:var(--space-1);min-width:2.75rem;min-height:2.75rem;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-weight:var(--weight-medium);display:inline-flex}.pagination__button svg{width:1rem;height:1rem}.pagination__button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.pagination__button[aria-current=page]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-dark)}.pagination__button:disabled{opacity:.5}.pagination__gap{padding:0 var(--space-1);color:var(--color-text-secondary)}.pagination__compact{padding:0 var(--space-2);font-weight:var(--weight-semibold)}.pagination__page{display:none}.pagination__nav-text{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width>=48rem){.pagination__page{list-style:none;display:list-item}.pagination__compact{display:none}.pagination__nav-text{clip:auto;width:auto;height:auto;position:static;overflow:visible}}.status-badge{border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--weight-semibold);white-space:nowrap;border:1px solid #0000;align-items:center;gap:.375rem;padding:.125rem .625rem .125rem .5rem;line-height:1.5;display:inline-flex}.status-badge__icon{flex-shrink:0;width:.875rem;height:.875rem}.status-badge--moving{background:var(--color-success-bg);color:var(--color-success-text);border-color:#b9dfe2}.status-badge--moving .status-badge__icon{color:var(--color-teal)}.status-badge--stopped{background:var(--color-neutral-bg);color:var(--color-neutral-text);border-color:#d6d6d6}.status-badge--stopped .status-badge__icon{color:var(--color-neutral)}.status-badge--no_signal{background:var(--color-danger-bg);color:var(--color-danger-text);border-color:#f0c4ca}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:0;box-shadow:var(--shadow-sm)}.card--padded{padding:var(--space-4)}@media (width>=48rem){.card--padded{padding:var(--space-6)}}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--space-3) var(--space-6);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.page-header__text{min-width:0}.page-header__title{font-size:var(--text-2xl);letter-spacing:-.01em}@media (width>=48rem){.page-header__title{font-size:var(--text-3xl)}}.page-header__description{margin-top:var(--space-1);color:var(--color-text-secondary)}.page-header__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.toast-region{right:var(--space-4);bottom:var(--space-4);left:var(--space-4);z-index:var(--z-toast);gap:var(--space-2);pointer-events:none;flex-direction:column;display:flex;position:fixed}@media (width>=48rem){.toast-region{width:24rem;left:auto}}.toast-list{gap:var(--space-2);flex-direction:column;display:flex}.toast{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border:1px solid var(--color-border);border-left:4px solid var(--color-teal);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-lg);pointer-events:auto;animation:toast-in var(--duration-base) var(--easing-standard);display:flex}.toast--error{border-left-color:var(--color-danger)}.toast--warning{border-left-color:var(--color-brand)}.toast__icon{width:1.25rem;height:1.25rem;color:var(--color-primary);flex-shrink:0;margin-top:.1rem}.toast--error .toast__icon,.toast--warning .toast__icon{color:var(--color-danger)}.toast__body{flex:1;min-width:0}.toast__title{font-weight:var(--weight-semibold)}.toast__description{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--color-text-secondary)}.toast__close{border-radius:var(--radius-sm);width:2.25rem;height:2.25rem;color:var(--color-text-secondary);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.toast__close:hover{color:var(--color-text);background:#1f1a240f}.toast__close svg{width:1rem;height:1rem}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}}
