/* Comfortable controls across the storefront, studio and invitations. */
:root{--control-ink:#264c3d;--control-focus:#a77b30}
:is(button,.button,.v2-button,.v2-outline,.text-link,.portal-nav a:not(.brand),.workspace-menu a,.sage-bottom-nav a){-webkit-tap-highlight-color:transparent;touch-action:manipulation}
:is(button,.button,.v2-button,.v2-outline){min-height:44px;cursor:pointer;transition:transform .16s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease,opacity .2s ease;font:inherit}
:is(.button,.v2-button,.v2-outline){display:inline-flex;align-items:center;justify-content:center;gap:9px;border-radius:12px;padding:13px 22px;line-height:1.35;font-size:13px;font-weight:600;letter-spacing:.15px;text-align:center;text-decoration:none;box-sizing:border-box;box-shadow:0 3px 8px #183c2910}
:is(.portal-wrap,.workspace-v2) .button{border:1px solid #264c3d;background:#264c3d;color:#fff}
:is(.portal-wrap,.workspace-v2) .button.outline{background:#fff;border-color:#b9c9bf;color:#264c3d;box-shadow:none}
:is(.portal-wrap,.workspace-v2) :is(.button.danger,.text-link.danger){background:#fff1ee;color:#a13329;border:1px solid #ecc2ba}
:is(.portal-wrap,.portal-nav) .text-link{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 14px;border:1px solid #d8e1d9;border-radius:10px;background:#fff;color:#264c3d;text-decoration:none;line-height:1.35;font-size:12px;font-weight:600;box-sizing:border-box}
.order-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}.order-actions :is(.button,.text-link){margin:0;min-height:44px;flex:0 1 auto}
.portal-actions,.delete-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.portal-actions .button{margin:0}
:is(.data-fields,#new-order)>.button{justify-self:start;min-width:180px}
.password-toggle{min-width:64px;border-radius:8px!important;box-shadow:none!important;font-size:12px!important}
:is(.v2-filters button,.v2-filter,.portal-nav a,.workspace-menu a){transition:background-color .2s ease,color .2s ease,box-shadow .2s ease,transform .16s ease}
:is(button,a,input,textarea,select,summary):focus-visible{outline:3px solid var(--control-focus)!important;outline-offset:4px!important}
:is(button,.button,.v2-button,.v2-outline):active:not(:disabled):not([aria-disabled=true]){transform:translateY(1px) scale(.975);box-shadow:none}
:is(button,.button,.v2-button,.v2-outline):disabled,[aria-disabled=true]{cursor:not-allowed!important;box-shadow:none!important;transform:none!important;opacity:.5}
button[aria-busy=true]{cursor:wait!important;opacity:.8}
button[aria-busy=true]::after{content:'';display:inline-block;width:13px;height:13px;flex-shrink:0;margin-left:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:control-spin .7s linear infinite}
.invitation:not(.atlas) :is(.button,.gift button){border-radius:999px;min-height:46px;padding:13px 22px}.invitation:not(.atlas) .sage-bottom-nav a{min-height:48px;display:flex;align-items:center;justify-content:center;border-radius:10px}
.gallery-button{overflow:hidden}.gallery-button img{transition:transform .35s ease}.lightbox-close{min-width:48px;min-height:48px;border-radius:50%}
.upload-box{transition:border-color .2s ease,background-color .2s ease,box-shadow .2s ease;cursor:pointer}.upload-box:focus-within{outline:3px solid var(--control-focus);outline-offset:4px}
@media(hover:hover) and (pointer:fine){
 :is(.button,.v2-button,.v2-outline):hover:not(:disabled):not([aria-disabled=true]){transform:translateY(-2px);box-shadow:0 7px 18px #193d2924;filter:brightness(1.04)}
 :is(.portal-wrap,.portal-nav) .text-link:hover:not(:disabled){background:#edf3ee;border-color:#9fb6a7;box-shadow:0 3px 10px #193d2910}
 .text-link.danger:hover:not(:disabled){background:#fce1dc!important;border-color:#cf8f84!important}
 .gallery-button:hover img{transform:scale(1.035)}.upload-box:hover{border-color:#7c9d89;background:#f0f5ef}
}
@media(max-width:600px){.portal-actions .button{flex:1 1 150px}.order-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.order-actions :is(.button,.text-link){width:100%;padding:12px 10px}.delete-actions .button{flex:1 1 130px}.portal-nav .text-link{padding:10px 12px}}
@keyframes control-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){:is(button,.button,.v2-button,.v2-outline,.text-link,.gallery-button img){transition:none!important}button[aria-busy=true]::after{animation:none;border-style:dotted}}

/* Portal styles previously used deeper selectors; keep the control geometry consistent. */
body .portal-wrap :is(.button,.text-link),body.workspace-v2 .portal-wrap :is(.button,.text-link){border-radius:12px;min-height:46px;display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1.4}
body .portal-wrap .order-actions :is(.button,.text-link){padding:11px 12px;font-size:12px;border:1px solid #cbd8cd;background:#f7faf6;color:#264c3d;box-shadow:none}
body .portal-wrap .order-actions .button:not(.outline):not(.danger){background:#264c3d;color:white;border-color:#264c3d}
body .portal-wrap .order-actions .danger{background:#fff1ee;color:#a13329;border-color:#ecc2ba}
body .portal-wrap .portal-actions .button{padding:13px 22px;font-size:13px}
body .portal-wrap:has(#customer-login) #customer-login>.button,body .portal-wrap:has(#owner-login) #owner-login>.button{border-radius:12px;min-height:50px}
body .v2-card-actions .v2-button{border-radius:12px;min-height:46px;font-size:12px}
body .v2-nav .v2-button{border-radius:12px;min-height:44px}
body .portal-actions .button:last-child{margin-left:0}
