/* SNURRA COMPONENTS — every class here is token-driven. Logical properties throughout so a
   future Arabic build only needs dir="rtl" on <html>. Prefix: .sn- */

/* ============ layout ============ */
.sn-container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--gutter-page)}
.sn-section{padding-block:var(--section-py);position:relative}
.sn-grid{display:grid;grid-template-columns:repeat(var(--grid-columns),minmax(0,1fr));gap:var(--grid-gap)}
.sn-cols-2,.sn-cols-3,.sn-cols-4{display:grid;gap:var(--grid-gap)}
.sn-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.sn-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.sn-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1024px){.sn-cols-3,.sn-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.sn-cols-2,.sn-cols-3,.sn-cols-4{grid-template-columns:minmax(0,1fr)}}

/* ============ type helpers ============ */
.sn-eyebrow{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--text-muted-strong)}
.sn-eyebrow::before{content:"";inline-size:6px;block-size:6px;border-radius:50%;background:var(--accent);flex:none}
.sn-display{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-display);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}
.sn-h1{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h1);line-height:var(--leading-h1);letter-spacing:var(--tracking-h1)}
.sn-h2{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h2);line-height:var(--leading-h2);letter-spacing:var(--tracking-h2)}
.sn-h3{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h3);line-height:var(--leading-h3);letter-spacing:var(--tracking-h3)}
.sn-h4{font-family:var(--font-body);font-weight:var(--weight-medium);font-size:var(--text-h4);line-height:var(--leading-snug)}
.sn-lead{font-size:var(--text-lead);line-height:var(--leading-body);color:var(--text-muted);text-wrap:pretty}
.sn-body{font-size:var(--text-body-size);line-height:var(--leading-body);color:var(--text-muted-strong);text-wrap:pretty}
.sn-small{font-size:var(--text-sm);line-height:var(--leading-snug);color:var(--text-muted-strong)}

/* ============ section heading pattern ============ */
.sn-heading{display:flex;flex-direction:column;gap:var(--space-4);max-inline-size:44ch}
.sn-heading--wide{max-inline-size:60ch}
.sn-heading__title{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h2);line-height:var(--leading-h2);letter-spacing:var(--tracking-h2);color:var(--text-body);text-wrap:balance}
.sn-heading__sub{font-size:var(--text-lead);line-height:var(--leading-body);color:var(--text-muted);text-wrap:pretty}
.sn-heading__row{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-8);margin-block-end:var(--section-gap)}
@media (max-width:768px){.sn-heading__row{flex-direction:column;align-items:flex-start;gap:var(--space-5)}}

/* ============ buttons ============ */
.sn-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);font-family:var(--font-body);font-weight:var(--weight-bold);letter-spacing:var(--tracking-body);text-decoration:none;white-space:nowrap;cursor:pointer;border:var(--hairline) solid transparent;border-radius:var(--radius-pill);block-size:var(--control-sm);padding-inline:var(--space-6);font-size:var(--text-sm);transition:background-color var(--dur-hover) var(--ease-out),border-color var(--dur-hover) var(--ease-out),color var(--dur-hover) var(--ease-out),transform var(--dur-hover) var(--ease-out),box-shadow var(--dur-hover) var(--ease-out)}
.sn-btn--lg{block-size:var(--control-lg);padding-inline:var(--space-8);font-size:var(--text-body-size)}
.sn-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.sn-btn:hover{transform:translateY(var(--lift-hover))}
.sn-btn:active{transform:translateY(0) scale(.98)}
.sn-btn[aria-disabled="true"],.sn-btn:disabled{pointer-events:none;transform:none;box-shadow:none}

.sn-btn--primary{background:var(--accent);color:var(--text-on-accent)}
.sn-btn--primary:hover{background:var(--accent-hover);box-shadow:var(--glow-accent-soft)}
.sn-btn--primary:active{background:var(--accent-active)}
.sn-btn--primary[aria-disabled="true"],.sn-btn--primary:disabled{background:var(--accent-disabled);color:var(--text-disabled)}

.sn-btn--secondary{background:transparent;color:var(--text-body);border-color:var(--border-hairline)}
.sn-btn--secondary:hover{border-color:var(--border-hairline-hover);background:var(--accent-subtle);color:var(--text-body)}
.sn-btn--secondary:active{background:transparent;border-color:var(--accent)}
.sn-btn--secondary[aria-disabled="true"],.sn-btn--secondary:disabled{color:var(--text-disabled);border-color:var(--border-hairline)}

.sn-btn--ghost{background:transparent;color:var(--text-muted-strong);padding-inline:var(--space-3)}
.sn-btn--ghost:hover{color:var(--accent)}
.sn-btn--ghost:active{color:var(--accent-active)}
.sn-btn--ghost[aria-disabled="true"],.sn-btn--ghost:disabled{color:var(--text-disabled)}

/* ============ icons ============ */
.sn-icon{display:inline-block;inline-size:var(--icon-size,20px);block-size:var(--icon-size,20px);flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.sn-icon--accent{color:var(--accent)}
.sn-icon-tile{display:grid;place-items:center;inline-size:52px;block-size:52px;border-radius:var(--radius-sm);border:var(--hairline) solid var(--border-hairline);background:var(--surface-inset);color:var(--accent);transition:border-color var(--dur-hover) var(--ease-out),box-shadow var(--dur-hover) var(--ease-out)}

/* ============ cards ============ */
.sn-card{position:relative;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);background:var(--surface-card);border:var(--hairline) solid var(--border-hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-inset-top);transition:transform var(--dur-hover) var(--ease-out),border-color var(--dur-hover) var(--ease-out),background-color var(--dur-hover) var(--ease-out),box-shadow var(--dur-hover) var(--ease-out)}
.sn-card:hover{transform:translateY(var(--lift-hover));border-color:var(--border-hairline-hover);background:var(--surface-card-hover);box-shadow:var(--shadow-card-hover),var(--shadow-inset-top)}
.sn-card:hover .sn-icon-tile{border-color:var(--border-hairline-hover);box-shadow:var(--glow-accent-soft)}
.sn-card__index{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:var(--tracking-eyebrow);color:var(--accent)}
.sn-card__title{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h3);line-height:var(--leading-h3);letter-spacing:var(--tracking-h3);color:var(--text-body)}
.sn-card__body{font-size:var(--text-sm);line-height:var(--leading-body);color:var(--text-muted-strong);text-wrap:pretty}
.sn-card__list{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block-start:auto;padding-block-start:var(--space-2);list-style:none}
.sn-tag{display:inline-flex;align-items:center;block-size:26px;padding-inline:var(--space-3);border-radius:var(--radius-pill);border:var(--hairline) solid var(--border-hairline);font-size:var(--text-xs);letter-spacing:.04em;color:var(--text-muted-strong)}

.sn-work{position:relative;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-card);border:var(--hairline) solid var(--border-hairline);border-radius:var(--radius-card);text-decoration:none;transition:transform var(--dur-hover) var(--ease-out),border-color var(--dur-hover) var(--ease-out),box-shadow var(--dur-hover) var(--ease-out)}
.sn-work:hover{transform:translateY(var(--lift-hover));border-color:var(--border-hairline-hover);box-shadow:var(--shadow-card-hover)}
.sn-work__media{position:relative;aspect-ratio:16/10;background:var(--surface-inset);display:grid;place-items:center;overflow:hidden;border-block-end:var(--hairline) solid var(--border-hairline)}
.sn-work__media::after{content:"";position:absolute;inset:0;background:var(--gradient-wash);opacity:.16;pointer-events:none}
.sn-work__slot{position:relative;z-index:1;font-size:var(--text-xs);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--text-muted)}
.sn-work__foot{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5) var(--space-6) var(--space-6)}
.sn-work__client{font-size:var(--text-xs);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--text-muted-strong)}
.sn-work__title{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h3);line-height:var(--leading-h3);color:var(--text-body)}
.sn-work__metric{display:flex;align-items:baseline;gap:var(--space-2);margin-block-start:var(--space-2);color:var(--accent);font-size:var(--text-sm);font-weight:var(--weight-medium)}

/* ============ forms ============ */
.sn-field{display:flex;flex-direction:column;gap:var(--space-2)}
.sn-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-body)}
.sn-hint{font-size:var(--text-xs);color:var(--text-muted-strong)}
.sn-hint--error{color:var(--accent)}
.sn-input,.sn-textarea,.sn-select{inline-size:100%;font-family:var(--font-body);font-size:var(--text-body-size);color:var(--text-body);background:var(--surface-inset);border:var(--hairline) solid var(--border-hairline);border-radius:var(--radius-sm);padding:0 var(--space-4);block-size:var(--control-sm);transition:border-color var(--dur-hover) var(--ease-out),box-shadow var(--dur-hover) var(--ease-out),background-color var(--dur-hover) var(--ease-out)}
.sn-textarea{block-size:auto;min-block-size:132px;padding-block:var(--space-3);line-height:var(--leading-body);resize:vertical}
.sn-input::placeholder,.sn-textarea::placeholder{color:var(--text-muted)}
.sn-input:hover,.sn-textarea:hover,.sn-select:hover{border-color:var(--border-hairline-hover)}
.sn-input:focus,.sn-textarea:focus,.sn-select:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-shadow)}
.sn-input:disabled,.sn-textarea:disabled,.sn-select:disabled{color:var(--text-disabled);background:color-mix(in srgb,var(--surface-inset) 70%,var(--ink-800));cursor:not-allowed}
.sn-input[aria-invalid="true"],.sn-textarea[aria-invalid="true"]{border-color:var(--accent)}
.sn-select{appearance:none;padding-inline-end:var(--space-9);background-image:linear-gradient(45deg,transparent 50%,var(--accent) 50%),linear-gradient(135deg,var(--accent) 50%,transparent 50%);background-position:calc(100% - 22px) 55%,calc(100% - 16px) 55%;background-size:6px 6px,6px 6px;background-repeat:no-repeat}
[dir="rtl"] .sn-select{background-position:22px 55%,16px 55%}

/* ============ wordmark ============ */
.sn-wordmark{display:inline-flex;align-items:center;font-family:var(--font-display);font-weight:var(--weight-display);font-size:23px;letter-spacing:-.01em;color:var(--text-body);text-decoration:none;transition:color var(--dur-hover) var(--ease-out)}
.sn-wordmark:hover{color:var(--text-body)}
.sn-wordmark img{display:block;block-size:26px;inline-size:auto}

/* ============ nav ============ */
.sn-nav{position:relative;z-index:var(--z-chrome);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding-block:var(--nav-block);padding-inline:var(--gutter-page)}
.sn-nav--sticky{position:sticky;inset-block-start:0;background:color-mix(in srgb,var(--bg-page) 78%,transparent);backdrop-filter:blur(var(--blur-chrome));box-shadow:var(--shadow-chrome)}
.sn-nav__links{display:flex;align-items:center;gap:var(--nav-link-gap)}
.sn-nav__link{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);letter-spacing:var(--tracking-body);text-decoration:none;transition:color var(--dur-hover) var(--ease-out)}
.sn-nav__link:hover{color:var(--text-body)}
.sn-nav__link[aria-current="page"]{color:var(--text-body)}
.sn-nav__burger{display:none;align-items:center;justify-content:center;inline-size:var(--control-sm);block-size:var(--control-sm);border-radius:var(--radius-sm);border:var(--hairline) solid var(--border-hairline);background:transparent;color:var(--text-body);cursor:pointer;transition:border-color var(--dur-hover) var(--ease-out)}
.sn-nav__burger:hover{border-color:var(--border-hairline-hover)}
.sn-nav__sheet{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5) var(--gutter-page) var(--space-9);background:var(--bg-raised);opacity:0;pointer-events:none;transform:translateY(-8px);transition:opacity var(--dur-hover) var(--ease-out),transform var(--dur-hover) var(--ease-out)}
.sn-nav__sheet[data-open]{opacity:1;pointer-events:auto;transform:none}
.sn-nav__sheet-head{display:flex;align-items:center;justify-content:space-between;block-size:var(--nav-height)}
.sn-nav__sheet a{font-family:var(--font-display);font-weight:var(--weight-display);font-size:var(--text-h3);color:var(--text-body);text-decoration:none;padding-block:var(--space-4);border-block-end:var(--hairline) solid var(--border-hairline)}
.sn-nav__sheet a:hover{color:var(--accent)}
@media (max-width:900px){.sn-nav__links{display:none}.sn-nav__burger{display:flex}}

/* ============ footer ============ */
.sn-footer{border-block-start:var(--hairline) solid var(--border-hairline);padding-block:var(--space-11) var(--space-8);position:relative}
.sn-footer__top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--grid-gap);padding-block-end:var(--space-9)}
.sn-footer__col{display:flex;flex-direction:column;gap:var(--space-3);align-items:flex-start}
.sn-footer__col h4{font-size:var(--text-xs);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--text-muted-strong);font-weight:var(--weight-medium);margin-block-end:var(--space-2)}
.sn-footer__col a{font-size:var(--text-sm);color:var(--text-muted-strong);text-decoration:none;transition:color var(--dur-hover) var(--ease-out)}
.sn-footer__col a:hover{color:var(--accent)}
.sn-footer__bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);padding-block-start:var(--space-6);border-block-start:var(--hairline) solid var(--border-hairline);font-size:var(--text-xs);color:var(--text-muted-strong)}
.sn-footer__note em{font-style:normal;color:var(--accent)}
.sn-footer__social{display:flex;gap:var(--space-3)}
.sn-footer__social a{display:grid;place-items:center;inline-size:40px;block-size:40px;border-radius:50%;border:var(--hairline) solid var(--border-hairline);color:var(--text-muted-strong);transition:color var(--dur-hover) var(--ease-out),border-color var(--dur-hover) var(--ease-out),transform var(--dur-hover) var(--ease-out)}
.sn-footer__social a:hover{color:var(--accent);border-color:var(--border-hairline-hover);transform:translateY(var(--lift-hover))}
.sn-footer__social--text a{inline-size:auto;block-size:34px;border-radius:var(--radius-pill);padding-inline:var(--space-4);font-size:var(--text-xs);letter-spacing:.06em}
@media (max-width:900px){.sn-footer__top{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8)}}
@media (max-width:640px){.sn-footer__top{grid-template-columns:minmax(0,1fr)}.sn-footer__bottom{flex-direction:column;align-items:flex-start;gap:var(--space-4)}}
