/* Calculator catalogue and strictly gated tool pages. */
.snm-calculator-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2.2vw, 28px); }
.snm-calculator-card { display: grid; min-width: 0; overflow: hidden; border: 1px solid var(--snm-directory-border, #d8e2e1); border-radius: var(--snm-directory-radius, 18px); background: var(--snm-directory-card-bg, #fff); box-shadow: var(--snm-directory-shadow-sm, 0 10px 28px rgba(7,45,50,.08)); }
.snm-calculator-card__icon { display: grid; min-height: 150px; background: linear-gradient(135deg, var(--snm-directory-accent-soft, #dff3ef), var(--snm-directory-surface-soft, #f2f7f6)); color: var(--snm-directory-accent, #087a72); place-items: center; }
.snm-calculator-card.is-restricted .snm-calculator-card__icon { background: linear-gradient(135deg, #f5eee2, #fbf8f2); color: #926021; }
.snm-calculator-card__icon svg { width: 68px; height: 68px; }
.snm-calculator-card__body { display: grid; align-content: start; gap: 12px; padding: clamp(18px, 2vw, 26px); }
.snm-calculator-card__body h3, .snm-calculator-card__body p { margin: 0; }
.snm-calculator-card__body h3 a { color: var(--snm-directory-heading, #0b3336); text-decoration: none; }
.snm-calculator-card__body p { color: var(--snm-directory-muted, #607577); }
.snm-calculator-card__status { display: flex; justify-content: space-between; gap: 12px; color: var(--snm-directory-accent, #087a72); font-size: .76rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.snm-calculator-card.is-restricted .snm-calculator-card__status { color: #85591f; }
.snm-calculator-hero__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, .42fr); gap: clamp(24px, 5vw, 76px); align-items: center; }
.snm-calculator-access-badge { display: flex; gap: 14px; align-items: center; padding: 18px; border: 1px solid rgba(255,255,255,.28); border-radius: 16px; background: rgba(255,255,255,.12); }
.snm-calculator-access-badge > span { display: grid; width: 42px; height: 42px; flex: 0 0 42px; border-radius: 50%; background: rgba(255,255,255,.16); place-items: center; }
.snm-calculator-access-badge div { display: grid; gap: 3px; }
.snm-calculator-access-badge small { opacity: .8; }
.snm-calculator-intro, .snm-calculator-tool { padding: clamp(22px, 3vw, 40px); border: 1px solid var(--snm-directory-border, #d8e2e1); border-radius: var(--snm-directory-radius, 18px); background: var(--snm-directory-surface, #fff); }
.snm-calculator-intro > h2 { margin-top: 0; }
.snm-calculator-code { min-width: 0; overflow: auto; }
.snm-calculator-lock { display: flex; gap: 20px; align-items: flex-start; padding: clamp(22px, 4vw, 44px); border: 1px dashed #cda768; border-radius: 16px; background: #fffaf0; }
.snm-calculator-lock > span { font-size: 2rem; }
.snm-calculator-lock h3 { margin: 0 0 8px; }
.snm-calculator-lock p { max-width: 720px; margin: 0 0 20px; color: var(--snm-directory-muted, #607577); }
.snm-calculator-lock__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.snm-calculator-access-list { display: grid; gap: 18px; }
.snm-calculator-access-card { display: grid; gap: 20px; padding: clamp(20px, 3vw, 32px); border: 1px solid var(--snm-directory-border, #d8e2e1); border-radius: var(--snm-directory-radius, 18px); background: var(--snm-directory-card-bg, #fff); box-shadow: var(--snm-directory-shadow-sm, 0 10px 28px rgba(7,45,50,.08)); }
.snm-calculator-access-card__head { display: flex; justify-content: space-between; gap: 18px; align-items: center; }
.snm-calculator-access-card__head > div { display: grid; gap: 4px; }
.snm-calculator-access-card__head span { color: var(--snm-directory-accent, #087a72); font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.snm-calculator-access-card__head h3 { margin: 0; }
.snm-calculator-credentials { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.snm-calculator-credentials label { display: grid; gap: 7px; min-width: 0; color: var(--snm-directory-heading, #0b3336); font-size: .82rem; font-weight: 800; }
.snm-copy-field { display: flex; min-width: 0; overflow: hidden; border: 1px solid var(--snm-directory-border, #d8e2e1); border-radius: 12px; background: var(--snm-directory-surface-soft, #f2f7f6); }
.snm-copy-field input { width: 100%; min-width: 0; min-height: 44px; padding: 10px 12px; border: 0; outline: 0; background: transparent; color: var(--snm-directory-heading, #0b3336); font: 600 .92rem/1.2 ui-monospace, SFMono-Regular, Consolas, monospace; }
.snm-copy-field button { flex: 0 0 auto; padding: 8px 13px; border: 0; border-left: 1px solid var(--snm-directory-border, #d8e2e1); background: var(--snm-directory-accent, #087a72); color: #fff; cursor: pointer; font: inherit; font-size: .78rem; font-weight: 800; }
.snm-copy-field button:hover, .snm-copy-field button:focus-visible { filter: brightness(.92); }
.snm-calculator-access-card__note { margin: 0; color: var(--snm-directory-muted, #607577); font-size: .84rem; }
.snm-editable-access-card { display: grid; gap: 16px; }
.snm-editable-access-card > div:first-child { display: grid; gap: 5px; }
.snm-editable-access-card > .snm-directory-button { justify-self: start; }
.snm-page-access-lock { margin-top: 20px; }
.snm-page-editor__head-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: flex-end; }
.snm-page-editor__head-actions form { margin: 0; }
.snm-page-editor__head-actions button { border: 0; padding: 0; background: transparent; cursor: pointer; }
.snm-calculator-credentials--staff { grid-column: 1 / -1; width: 100%; margin-top: 8px; }
.snm-access-grants { display: grid; gap: 14px; }
.snm-grant-row.is-calculator { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; }
.snm-grant-row__summary { display: grid; gap: 4px; }
.snm-grant-row__actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; align-items: start; }
.snm-calculator-modal { position: fixed; z-index: 100010; inset: 0; display: none; padding: 20px; place-items: center; }
.snm-calculator-modal:target, .snm-calculator-modal.is-open { display: grid; }
.snm-calculator-modal__backdrop { position: absolute; inset: 0; background: rgba(4,24,27,.72); backdrop-filter: blur(5px); }
.snm-calculator-modal__dialog { position: relative; z-index: 1; width: min(100%, 500px); max-height: calc(100vh - 40px); overflow: auto; padding: clamp(24px, 5vw, 42px); border: 1px solid rgba(255,255,255,.2); border-radius: 22px; outline: 0; background: var(--snm-directory-card-bg, #fff); box-shadow: 0 28px 90px rgba(0,0,0,.3); }
.snm-calculator-modal__dialog h2 { margin: 8px 40px 10px 0; }
.snm-calculator-modal__dialog > p:not(.snm-kicker) { color: var(--snm-directory-muted, #607577); }
.snm-calculator-modal__close { position: absolute; top: 14px; right: 14px; display: grid; width: 38px; height: 38px; border-radius: 50%; background: var(--snm-directory-surface-soft, #f2f7f6); color: var(--snm-directory-heading, #0b3336); text-decoration: none; font-size: 1.6rem; line-height: 1; place-items: center; }
.snm-calculator-login-form { display: grid; gap: 15px; margin-top: 22px; }
.snm-calculator-login-form label { display: grid; gap: 7px; color: var(--snm-directory-heading, #0b3336); font-weight: 800; }
.snm-calculator-login-form input { width: 100%; min-height: 48px; padding: 10px 13px; border: 1px solid var(--snm-directory-border, #d8e2e1); border-radius: 11px; background: #fff; color: #162f31; font: inherit; }
html.snm-calculator-modal-open { overflow: hidden; }
@media (max-width: 980px) { .snm-calculator-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) { .snm-calculator-grid, .snm-calculator-hero__grid, .snm-calculator-credentials { grid-template-columns: 1fr; } .snm-calculator-lock { display: grid; } .snm-calculator-access-card__head { align-items: stretch; flex-direction: column; } .snm-calculator-access-card__head .snm-directory-button { text-align: center; } .snm-grant-row.is-calculator { grid-template-columns: 1fr; } .snm-grant-row__actions { justify-content: flex-start; } }
@media (max-width: 480px) { .snm-calculator-grid { grid-template-columns: 1fr; } }
