125 lines
2.7 KiB
CSS
125 lines
2.7 KiB
CSS
/* Full-viewport layer (figma Mask + Dialog 451:18655): mask + centered card.
|
|
24px of air on every side; the top/bottom widen to the frame's published
|
|
top clearance (the macOS window strip) so a tall card stays clear of it.
|
|
Cards size against this padding box: consumers cap growth with
|
|
`max-height: 100%`, never their own viewport calc. */
|
|
.root {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 1000;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: max(24px, var(--dsh-frame-top-clearance, 24px)) 24px;
|
|
}
|
|
|
|
/* User/spec mask: rgba(0,0,0,0.24) + blur(2px) via --dsw-alias-bg-mask-1 /
|
|
--dsw-mask-blur (light); dark theme raises mask opacity. */
|
|
.mask {
|
|
position: absolute;
|
|
inset: 0;
|
|
backdrop-filter: var(--dsw-mask-blur);
|
|
}
|
|
|
|
.mask::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: var(--dsw-alias-bg-mask-1);
|
|
animation: modalEnter var(--ds-transition-duration) var(--ds-ease-in-out);
|
|
}
|
|
|
|
/* Dialog card: r24, elevation-prominent, layer-2 fill, pb 24. */
|
|
.dialog {
|
|
position: relative;
|
|
z-index: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 20px;
|
|
width: min(380px, 100%);
|
|
padding: 0 0 24px;
|
|
overflow: hidden;
|
|
border: 0;
|
|
border-radius: 24px;
|
|
background: var(--dsw-alias-bg-layer-2);
|
|
box-shadow: var(--dsw-elevation-prominent);
|
|
animation: modalEnter var(--ds-transition-duration) var(--ds-ease-in-out);
|
|
}
|
|
|
|
@keyframes modalEnter {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.mask::after, .dialog { animation: none; }
|
|
}
|
|
|
|
.content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
}
|
|
|
|
/* Header row (figma Title row): pad l24/t22/r14/b12, SPACE_BETWEEN —
|
|
* title left, close button right. */
|
|
.header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
padding: 22px 14px 12px 24px;
|
|
}
|
|
|
|
.title {
|
|
margin: 0;
|
|
font-size: 16px;
|
|
line-height: 24px;
|
|
font-weight: 500; /* figma wt510, rendered 500 */
|
|
color: var(--dsw-alias-label-primary);
|
|
}
|
|
|
|
.close {
|
|
flex: none;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 28px;
|
|
height: 28px;
|
|
border: none;
|
|
border-radius: 8px;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
color: var(--dsw-alias-label-secondary);
|
|
}
|
|
|
|
.close:hover {
|
|
background: var(--dsw-alias-interactive-bg-hover);
|
|
}
|
|
|
|
/* Description and body share the 332px content column (24px side pads). */
|
|
.description {
|
|
margin: 0;
|
|
padding: 0 24px;
|
|
font-size: 14px;
|
|
line-height: 22px;
|
|
font-weight: 400;
|
|
color: var(--dsw-alias-label-primary);
|
|
}
|
|
|
|
.body {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-width: 0;
|
|
margin-top: 20px;
|
|
padding: 0 24px;
|
|
}
|
|
|
|
.footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
padding: 0 24px;
|
|
}
|