.btn{padding:8px var(--space-md);border:none;background:var(--color-fill-tertiary);border-radius:var(--radius-full);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:all var(--transition-fast);color:var(--color-text);min-height:44px;display:inline-flex;align-items:center;justify-content:center}.btn:hover{background:var(--color-fill-quaternary)}.btn.btn-secondary{background:var(--color-fill-tertiary);color:var(--color-text-secondary);font-weight:500}.btn.btn-secondary:hover{background:var(--color-fill-quaternary);color:var(--color-text)}.btn.btn-green{background:var(--color-accent);color:#fff;font-weight:600}.btn.btn-green:hover{background:var(--color-accent-hover)}.btn.btn-green:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.btn-sm{width:100%;font-size:var(--font-size-sm);padding:7px}.icon-btn{grid-area:close;align-self:start;background:none;border:none;font-size:var(--font-size-base);cursor:pointer;color:var(--color-text);padding:0;line-height:1;text-align:right;width:20px;transition:color var(--transition-fast)}@media (hover: hover){.icon-btn:hover{color:var(--color-warning)}}.ios-icon-button{width:36px;height:36px;border-radius:var(--radius-pill);display:flex;align-items:center;justify-content:center;border:none;padding:0;cursor:pointer;transition:background-color .2s,transform .1s ease,scale var(--transition-spring),opacity var(--transition-spring);background:var(--color-surface);box-shadow:var(--shadow-md);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);color:var(--color-text);line-height:0}.ios-icon-button svg,.ios-icon-button img{width:26px;height:26px;display:block;flex-shrink:0}.ios-icon-button img{filter:brightness(0)}@media (prefers-color-scheme: dark){:where(:root:not([data-theme=light])) .ios-icon-button img{filter:var(--icon-invert)}}:where(:root[data-theme=dark]) .ios-icon-button img{filter:var(--icon-invert)}.ios-icon-button:hover{background:var(--color-surface)}.ios-icon-button:active{background:var(--color-surface);scale:.92;opacity:.85;transition:scale var(--press-attack),opacity var(--press-attack)}
