*,*::before,*::after{box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{margin:0;background:var(--surface-page);color:var(--text-body);font:var(--type-body);letter-spacing:var(--ls-body)}
a{color:var(--link);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;transition:color var(--dur-fast) var(--ease-out),text-decoration-color var(--dur-fast)}
a:hover{color:var(--link-hover);text-decoration-color:var(--text-muted)}
::selection{background:var(--gray-0);color:var(--gray-1000)}
/* No browser-default blue flash on tap/click: neutral greyscale feedback only */
html{-webkit-tap-highlight-color:transparent}
button,a,[role="button"],[tabindex],summary,label{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}
button,[role="button"],.am-iconbtn,.am-btn,.am-tag,.am-badge,.am-row,.am-proj,.am-exp__org,.am-exp__logo,.am-back,canvas{-webkit-user-select:none;user-select:none}
button,a,[role="button"],.am-row,.am-proj{touch-action:manipulation}
img{-webkit-user-drag:none}
:focus:not(:focus-visible){outline:none}
:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}

/* Soft blur at the top and bottom edges of the viewport (content fades out under it) */
body::before,body::after{content:"";position:fixed;left:0;right:0;z-index:15;pointer-events:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
body::before{top:0;height:56px;background:linear-gradient(to bottom,color-mix(in srgb,var(--surface-page) 65%,transparent),transparent);-webkit-mask-image:linear-gradient(to bottom,#000 15%,transparent);mask-image:linear-gradient(to bottom,#000 15%,transparent)}
body::after{bottom:0;height:112px;background:linear-gradient(to top,color-mix(in srgb,var(--surface-page) 65%,transparent),transparent);-webkit-mask-image:linear-gradient(to top,#000 20%,transparent);mask-image:linear-gradient(to top,#000 20%,transparent)}
@media print{body::before,body::after{display:none}}
