.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-body);font-weight:var(--weight-semibold);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);white-space:nowrap;position:relative;overflow:hidden;border:1px solid transparent;text-decoration:none;letter-spacing:var(--tracking-normal)}.btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.1),transparent);opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}.btn:hover:before{opacity:1}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn:disabled:before{display:none}.btn--sm{padding:var(--space-2) var(--space-3);font-size:var(--text-xs)}.btn--md{padding:var(--space-3) var(--space-5);font-size:var(--text-sm)}.btn--lg{padding:var(--space-4) var(--space-8);font-size:var(--text-base)}.btn--primary{background:var(--accent);color:var(--accent-text)}.btn--primary:hover{background:var(--accent-hover)}.btn--primary:active{background:var(--accent-active)}.btn--secondary{background:var(--bg-surface);color:var(--text-primary);border-color:var(--border-default)}.btn--secondary:hover{background:var(--bg-surface-hover);border-color:var(--border-strong)}.btn--ghost{background:transparent;color:var(--text-secondary)}.btn--ghost:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.btn--danger{background:var(--status-rejected);color:#fff}.btn--danger:hover{filter:brightness(1.1)}.btn--loading{color:transparent}.btn__spinner{position:absolute;width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .6s linear infinite;color:var(--accent-text)}.btn--secondary .btn__spinner,.btn--ghost .btn__spinner{color:var(--text-primary)}.form-field{display:flex;flex-direction:column;gap:var(--space-2)}.form-field__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);letter-spacing:var(--tracking-normal)}.form-field__input{padding:var(--space-3) var(--space-4);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--text-sm);transition:all var(--duration-fast) var(--ease-out);width:100%}.form-field__input::placeholder{color:var(--text-disabled)}.form-field__input:hover{border-color:var(--border-strong)}.form-field__input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-subtle)}.form-field--error .form-field__input{border-color:var(--status-rejected)}.form-field--error .form-field__input:focus{box-shadow:0 0 0 3px var(--status-rejected-bg)}.form-field__textarea{min-height:100px;resize:vertical;line-height:var(--leading-normal)}.form-field__select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23888' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-10)}.form-field__error{font-size:var(--text-xs);color:var(--status-rejected);font-weight:var(--weight-medium)}.form-field__hint{font-size:var(--text-xs);color:var(--text-tertiary)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-5)}.form-row{display:flex;gap:var(--space-4);align-items:flex-start}.form-actions{display:flex;gap:var(--space-3);justify-content:flex-end;padding-top:var(--space-6);border-top:1px solid var(--border-subtle);margin-top:var(--space-6)}.modal-overlay{position:fixed;inset:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-6);animation:fadeIn var(--duration-fast) var(--ease-out)}.modal{background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-height:90vh;overflow-y:auto;width:100%}.modal--sm{max-width:400px}.modal--md{max-width:600px}.modal--lg{max-width:900px}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--border-subtle)}.modal__title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-semibold)}.modal__close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text-tertiary);font-size:var(--text-base);transition:all var(--duration-fast) var(--ease-out)}.modal__close:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.modal__body{padding:var(--space-6)}.toast-container{position:fixed;top:var(--space-6);right:var(--space-6);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-3)}.toast{padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);background:var(--bg-elevated);border:1px solid var(--border-default);box-shadow:var(--shadow-lg);font-size:var(--text-sm);animation:slideInRight var(--duration-slow) var(--ease-spring);display:flex;align-items:center;gap:var(--space-3);max-width:400px}.toast--success{border-left:3px solid var(--status-approved)}.toast--error{border-left:3px solid var(--status-rejected)}.toast--info{border-left:3px solid var(--cal-meeting)}.toast--warning{border-left:3px solid var(--status-pending)}.tabs{display:flex;gap:2px;background:var(--bg-muted);border-radius:var(--radius-md);padding:3px;margin-bottom:var(--space-6)}.tab{padding:var(--space-3) var(--space-5);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-tertiary);transition:all var(--duration-fast) var(--ease-out);cursor:pointer}.tab:hover{color:var(--text-primary)}.tab--active{background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.data-table{width:100%;border-collapse:separate;border-spacing:0}.data-table th{padding:var(--space-3) var(--space-4);text-align:left;font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--text-tertiary);border-bottom:1px solid var(--border-default);background:var(--bg-muted)}.data-table th:first-child{border-radius:var(--radius-md) 0 0 0}.data-table th:last-child{border-radius:0 var(--radius-md) 0 0}.data-table td{padding:var(--space-4);border-bottom:1px solid var(--border-subtle);font-size:var(--text-sm);color:var(--text-secondary)}.data-table tr{transition:background-color var(--duration-fast) var(--ease-out)}.data-table tbody tr:hover{background:var(--bg-surface-hover)}
