.btn{justify-content:center;align-items:center;gap:var(--space-2);font-weight:var(--font-weight-semibold);border-radius:var(--radius-md);transition:all var(--transition-fast);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;min-width:44px;min-height:44px;display:inline-flex;position:relative}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);min-height:36px}.btn-md{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--font-size-md);min-height:52px}.btn-primary{background:var(--color-accent);color:var(--color-text-inverse);font-family:var(--font-mono);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);box-shadow:0 4px 14px var(--color-accent-shadow)}.btn-secondary{color:var(--color-text-primary);border:1px solid var(--color-border-hover);font-family:var(--font-mono);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--color-bg-hover);border-color:#00000040}.btn-ghost{color:var(--color-accent);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-accent-muted)}.btn-danger{background:var(--color-error-bg);color:var(--color-error)}.btn-danger:hover:not(:disabled){background:var(--color-error-bg-hover)}.btn-full{width:100%}.btn-loading{color:#0000!important}.btn-spinner{width:18px;height:18px;color:var(--color-text-primary);border:2px solid #00000026;border-top-color:currentColor;border-radius:50%;animation:.6s linear infinite spin;position:absolute}.btn-icon{align-items:center;font-size:1.1em;display:flex}.card{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:all var(--transition-base)}.card-pad-sm{padding:var(--space-3)}.card-pad-md{padding:var(--space-5)}.card-pad-lg{padding:var(--space-6)}.card-glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));border-color:var(--glass-border)}.card-glow{box-shadow:var(--shadow-glow-sm);border-color:var(--color-border-accent)}.card-interactive{cursor:pointer;-webkit-tap-highlight-color:transparent}.card-interactive:hover{background:var(--color-bg-tertiary);border-color:var(--color-border-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.card-interactive:active{transform:scale(.99)translateY(0)}.input-group{flex-direction:column;gap:6px;display:flex}.input-label{font-family:var(--font-mono);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-text-tertiary);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase}.input-description{font-size:var(--font-size-sm);color:var(--color-text-tertiary);line-height:var(--line-height-relaxed);margin-top:-2px}.input-wrapper{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-4);min-height:48px;transition:border-color var(--transition-fast);outline:none;align-items:center;max-width:100%;display:flex;overflow:hidden}.input-wrapper :focus{outline:none}.input-wrapper:focus-within{border-color:var(--color-accent)}.input-error .input-wrapper,.input-error .input-wrapper:focus-within{border-color:var(--color-error)}.input-icon{color:var(--color-text-tertiary);margin-right:var(--space-3);align-items:center;display:flex}.input-field{padding:var(--space-3) 0;color:var(--color-text-primary);background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:16px}.input-field::placeholder{color:var(--color-text-tertiary)}.input-field::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input-field::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input-field[type=number]{-moz-appearance:textfield}.input-suffix{font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin-left:var(--space-2);font-weight:var(--font-weight-medium)}.input-error-text{font-size:var(--font-size-xs);color:var(--color-error)}.input-helper{font-size:var(--font-size-xs);color:var(--color-text-tertiary);line-height:var(--line-height-relaxed)}.select-field{appearance:none;cursor:pointer;padding-right:var(--space-8);outline:none;width:100%}.select-field option{background:var(--color-bg-primary);color:var(--color-text-primary)}.select-arrow{color:var(--color-text-tertiary);pointer-events:none;right:var(--space-4);align-items:center;display:flex;position:absolute}.input-wrapper{position:relative}.badge{font-family:var(--font-mono);font-weight:var(--font-weight-semibold);border-radius:var(--radius-full);white-space:nowrap;letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;align-items:center;display:inline-flex}.badge-sm{padding:2px var(--space-2);font-size:.625rem}.badge-md{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.badge-default{background:var(--color-bg-elevated);color:var(--color-text-secondary)}.badge-success{background:var(--color-success-bg);color:var(--color-success)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning)}.badge-error{background:var(--color-error-bg);color:var(--color-error)}.badge-info,.badge-accent{background:var(--color-accent-muted);color:var(--color-accent)}.modal-overlay{background:var(--overlay-bg);z-index:var(--z-modal);justify-content:center;align-items:flex-end;height:100dvh;animation:.2s both fadeIn;display:flex;position:fixed;inset:0}.modal-sheet{background:var(--color-bg-secondary);border-top:1px solid var(--color-border-hover);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;width:100%;max-width:600px;max-height:90dvh;padding:var(--space-4) var(--space-6) var(--space-8);padding-bottom:calc(var(--space-8) + env(safe-area-inset-bottom,0px));overflow-y:auto}.modal-handle{background:var(--color-text-tertiary);border-radius:var(--radius-full);width:36px;height:4px;margin:0 auto var(--space-5)}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin-bottom:var(--space-5)}.modal-toolbar{margin:calc(-1 * var(--space-2)) 0 var(--space-4);justify-content:space-between;align-items:center;display:flex}.modal-toolbar-close{border-radius:var(--radius-md);background:var(--color-bg-tertiary);width:36px;height:36px;color:var(--color-text-primary);cursor:pointer;transition:background var(--transition-fast);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.modal-toolbar-close:hover{background:var(--color-border)}.modal-toolbar-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);text-align:center;flex:1;margin:0}.modal-toolbar-done{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-accent);cursor:pointer;padding:var(--space-2) var(--space-1);transition:opacity var(--transition-fast);background:0 0;border:none;flex-shrink:0}.modal-toolbar-done:hover{opacity:.8}.modal-toolbar-done-disabled,.modal-toolbar-done:disabled{color:var(--color-text-tertiary);cursor:not-allowed;opacity:.5}.modal-content{gap:var(--space-5);flex-direction:column;display:flex}.empty-state{text-align:center;padding:var(--space-12) var(--space-6);align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.empty-state-icon{opacity:.5;margin-bottom:var(--space-2);font-size:2.5rem}.empty-state-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.empty-state-desc{font-size:var(--font-size-base);color:var(--color-text-secondary);max-width:300px}.empty-state-action{margin-top:var(--space-4)}.progress-bar{background:var(--color-bg-tertiary);border-radius:var(--radius-full);width:100%;overflow:hidden}.progress-bar-sm{height:4px}.progress-bar-md{height:6px}.progress-bar-fill{background:linear-gradient(90deg, var(--color-accent), var(--color-progress-end));border-radius:var(--radius-full);height:100%;transition:width var(--transition-slow)}.calc-vial-row{gap:var(--space-3);align-items:flex-end;display:flex}.calc-vial-input{flex:1;min-width:0}.calc-vial-unit{flex-shrink:0;width:100px}.dose-row{gap:var(--space-3);align-items:flex-end;display:flex}.dose-input{flex:2;min-width:0}.dose-unit{flex:1;min-width:0}.protocol-dose-row{gap:var(--space-3);align-items:flex-end;display:flex}.protocol-dose-input{flex:2;min-width:0}.protocol-dose-unit{flex:1;min-width:0}.dosing-disclaimer{align-items:flex-start;gap:var(--space-3);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);color:var(--color-text-tertiary);display:flex}.dosing-disclaimer strong{color:var(--color-text-secondary);font-weight:var(--font-weight-semibold)}.dosing-disclaimer-icon{color:var(--color-warning);flex-shrink:0;margin-top:1px}.dosing-disclaimer-inline{padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.dosing-disclaimer-banner{padding:var(--space-4) var(--space-5);background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-lg);margin-bottom:var(--space-5)}
