/* Passage — reference kit (Tastefolio). Immigration, visa and residency services as travel documents: guilloche
   security paper, boarding-pass cards with a perforated stub, rubber stamps for milestones, an OCR machine-readable
   line, bilingual micro-labels, a departures board, a points check with a gauge, and a client portal built as a
   passport (data page, visa pages of stamps, document checklist, appointments, tickets, payments).
   Requires tokens.css; icons are Material Symbols Outlined (<span class="ms" aria-hidden="true">name</span>);
   assets/passage.js draws guilloche, routes, the points check, OTP boxes, uploads and countdowns. RTL-first. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 90px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--canvas); color: var(--ink); font: var(--fw-regular) var(--fs-md)/var(--lh-body) var(--font-sans); -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
h1, h2, h3, h4, p, figure, blockquote, dl, dd { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
::selection { background: var(--brand-soft); color: var(--ink); }
.ms { font-family: "Material Symbols Outlined"; font-weight: normal; font-style: normal; font-size: 1.25em; line-height: 1; letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; direction: ltr; -webkit-font-feature-settings: "liga"; font-feature-settings: "liga"; font-variation-settings: "FILL" 0, "wght" 400, "opsz" 24; flex: none; }
.ms.fill { font-variation-settings: "FILL" 1, "wght" 400, "opsz" 24; }
[dir="rtl"] .flip-rtl { transform: scaleX(-1); }
.sr-only { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; inset-inline-start: 12px; inset-block-start: -60px; z-index: 100; background: var(--brand); color: var(--brand-ink); padding: 10px 16px; border-radius: var(--radius-sm); }
.skip-link:focus { inset-block-start: 12px; }
.ltr { direction: ltr; unicode-bidi: isolate; }
.num { font-variant-numeric: tabular-nums; }
.mono { font-family: var(--font-mono); letter-spacing: .04em; }

/* ------------------------------------------------------------ layout & type */
.container { max-inline-size: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.stack { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-4); align-content: start; }
.row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
.split { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.spacer { flex: 1; }
.cols { display: grid; gap: var(--space-5); grid-template-columns: repeat(var(--n, 3), minmax(0, 1fr)); }
.cols > * { min-inline-size: 0; }
@media (max-width: 1000px) { .cols { --n: 2 !important; } }
@media (max-width: 640px) { .cols { --n: 1 !important; } .hide-sm { display: none !important; } }
@media (max-width: 900px) { .hide-md { display: none !important; } }
.section { padding-block: var(--space-8); }
.sec-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--space-3) var(--space-5); margin-block-end: var(--space-6); }
.sec-head > :first-child { display: grid; gap: 8px; max-inline-size: 62ch; }
.display { font: var(--fw-display) var(--fs-display)/var(--lh-tight) var(--font-display); letter-spacing: var(--tracking-display); text-wrap: balance; }
.display em { font-style: italic; color: var(--brand); }
:lang(fa) .display em { font-style: normal; }
.h1 { font: var(--fw-display) clamp(30px, 3.4vw, 46px)/1.1 var(--font-display); text-wrap: balance; }
.h2 { font: var(--fw-display) var(--fs-2xl)/1.15 var(--font-display); }
.h3 { font: 700 var(--fs-lg)/1.35 var(--font-sans); }
:lang(fa) .h1 { font-weight: 900; line-height: 1.5; }
:lang(fa) .h2 { font-weight: 800; line-height: 1.55; }
.lead { font-size: var(--fs-lg); color: var(--ink-2); max-inline-size: 56ch; }
.muted { color: var(--ink-2); }
.subtle { color: var(--ink-3); }
.small { font-size: var(--fs-sm); }
.tiny { font-size: var(--fs-xs); }
/* kicker: a mono label with a short rule, like a document section heading */
.kicker { display: inline-flex; align-items: center; gap: 10px; font: 400 var(--fs-xs)/1.4 var(--font-mono); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--brand); }
.kicker::before { content: ""; inline-size: 22px; border-block-start: 1.5px solid currentColor; }
:lang(fa) .kicker { font: 700 var(--fs-sm)/1.5 var(--font-sans); }

/* bilingual micro-label: the page language first, the other language beside it, as on a passport */
.dual { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; font: 600 11px/1.3 var(--font-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.dual > :last-child { font-weight: 500; letter-spacing: .02em; text-transform: none; opacity: .8; unicode-bidi: isolate; }
.dual > :last-child::before { content: "/ "; }
:lang(fa) .dual { font-size: 12px; letter-spacing: 0; }

/* ------------------------------------------------------------ guilloche, route, MRZ (drawn by passage.js) */
.guilloche { position: absolute; inset: 0; z-index: 0; pointer-events: none; color: var(--guilloche); overflow: hidden; }
.guilloche svg { inline-size: 100%; block-size: 100%; }
.route { color: var(--line-dash); overflow: visible; }
.route .path { fill: none; stroke: currentColor; stroke-width: 2; stroke-dasharray: 2 7; stroke-linecap: round; }
.route .end { fill: var(--surface); stroke: var(--brand); stroke-width: 2.5; }
.route .plane { fill: var(--brand); }
.mrz { font: 400 clamp(11px, 1.4vw, 15px)/1.5 var(--font-mono); letter-spacing: .18em; color: var(--ink-3); direction: ltr; text-align: start; white-space: pre; overflow: hidden; text-overflow: clip; user-select: none; }

/* ------------------------------------------------------------ buttons & controls */
.btn { --b: var(--brand); --bi: var(--brand-ink); display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-block-size: var(--control-h); padding: 0 20px; border: 1.5px solid var(--b); border-radius: var(--radius-sm); background: var(--b); color: var(--bi); font: 700 var(--fs-sm)/1 var(--font-sans); white-space: nowrap; cursor: pointer; transition: transform var(--dur-1) var(--ease), background var(--dur-1), box-shadow var(--dur-1); }
.btn:hover { background: var(--brand-strong); border-color: var(--brand-strong); box-shadow: var(--shadow-2); }
.btn:active { transform: translateY(1px); }
.btn-outline { background: transparent; color: var(--ink); border-color: var(--line-2); }
.btn-outline:hover { background: var(--surface); border-color: var(--ink); box-shadow: none; }
.btn-ghost { background: transparent; color: var(--ink-2); border-color: transparent; }
.btn-ghost:hover { background: var(--surface-2); color: var(--ink); border-color: transparent; box-shadow: none; }
.btn-soft { background: var(--brand-soft); color: var(--brand-strong); border-color: transparent; }
.btn-soft:hover { background: color-mix(in oklab, var(--brand) 18%, var(--surface)); border-color: transparent; box-shadow: none; }
[data-theme="dark"] .btn-soft { color: var(--brand); }
.btn-sm { min-block-size: 38px; padding: 0 14px; }
.btn-lg { min-block-size: var(--control-h-lg); padding: 0 26px; font-size: var(--fs-md); }
.btn-icon { inline-size: var(--control-h); padding: 0; }
.btn-icon.btn-sm { inline-size: 38px; }
.btn-block { inline-size: 100%; }
.btn[disabled] { opacity: .45; pointer-events: none; }
.link { color: var(--brand); font-weight: 700; display: inline-flex; align-items: center; gap: 4px; }
.link:hover { text-decoration: underline; text-underline-offset: 3px; }

.field { display: grid; gap: 6px; min-inline-size: 0; }
.label { font: 700 var(--fs-sm)/1.4 var(--font-sans); }
.hint { font-size: var(--fs-xs); color: var(--ink-3); }
.field-error { color: var(--danger); font-size: var(--fs-xs); font-weight: 600; }
.input, .select, .textarea { inline-size: 100%; min-block-size: var(--control-h); padding: 10px 14px; border: 1.5px solid var(--line-2); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink); outline: none; transition: border-color var(--dur-1), box-shadow var(--dur-1); }
.textarea { min-block-size: 110px; resize: vertical; line-height: 1.6; }
.input:focus, .select:focus, .textarea:focus { border-color: var(--brand); box-shadow: 0 0 0 4px var(--brand-soft); }
.input[aria-invalid="true"] { border-color: var(--danger); }
.input::placeholder, .textarea::placeholder { color: var(--ink-3); }
.check { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-size: var(--fs-sm); }
.check input { inline-size: 18px; block-size: 18px; accent-color: var(--brand); }
.switch { position: relative; inline-size: 44px; block-size: 26px; flex: none; border: 0; border-radius: 999px; background: var(--line-2); cursor: pointer; transition: background var(--dur-1); }
.switch::after { content: ""; position: absolute; inset-block-start: 3px; inset-inline-start: 3px; inline-size: 20px; block-size: 20px; border-radius: 50%; background: #fff; box-shadow: var(--shadow-1); transition: inset-inline-start var(--dur-2) var(--ease); }
.switch[aria-checked="true"] { background: var(--brand); }
.switch[aria-checked="true"]::after { inset-inline-start: 21px; }

/* segmented choice (points check, booking) */
.seg { display: flex; flex-wrap: wrap; gap: 6px; }
.seg button { min-block-size: 40px; padding: 0 14px; border: 1.5px solid var(--line-2); border-radius: var(--radius-sm); background: var(--surface); color: var(--ink-2); font: 600 var(--fs-sm)/1 var(--font-sans); cursor: pointer; }
.seg button:hover { border-color: var(--ink-3); color: var(--ink); }
.seg button[aria-pressed="true"] { border-color: var(--brand); background: var(--brand-soft); color: var(--brand-strong); box-shadow: inset 0 0 0 1px var(--brand); }
[data-theme="dark"] .seg button[aria-pressed="true"] { color: var(--brand); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips button, .chips a { display: inline-flex; align-items: center; gap: 6px; min-block-size: 36px; padding: 0 14px; border: 1.5px solid var(--line-2); border-radius: var(--radius-pill); background: transparent; color: var(--ink-2); font: 600 var(--fs-sm)/1 var(--font-sans); cursor: pointer; }
.chips [aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--canvas); }

.badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: var(--radius-pill); background: var(--surface-2); color: var(--ink-2); font: 700 var(--fs-xs)/1.5 var(--font-sans); white-space: nowrap; }
.badge::before { content: ""; inline-size: 6px; block-size: 6px; border-radius: 50%; background: currentColor; }
.badge.plain::before { display: none; }
.badge.ok { background: var(--success-soft); color: var(--success); }
.badge.warn { background: var(--warning-soft); color: var(--warning); }
.badge.bad { background: var(--danger-soft); color: var(--danger); }
.badge.info { background: var(--info-soft); color: var(--info); }
.badge.brand { background: var(--brand-soft); color: var(--brand); }
.avatar { position: relative; display: grid; place-items: center; inline-size: 44px; block-size: 44px; flex: none; border-radius: 50%; background: var(--c, var(--surface-3)); color: #14203a; font: 800 var(--fs-md)/1 var(--font-sans); }
.avatar.lg { inline-size: 64px; block-size: 64px; font-size: var(--fs-xl); }

/* ------------------------------------------------------------ rubber stamps */
.stamp { --ink-c: var(--stamp-red); position: relative; display: inline-grid; place-items: center; gap: 2px; padding: 8px 14px; border: 2.5px solid var(--ink-c); border-radius: 8px; color: var(--ink-c); font: 400 13px/1.15 var(--font-mono); letter-spacing: .16em; text-transform: uppercase; text-align: center; transform: rotate(var(--r, -6deg)); outline: 1.5px solid var(--ink-c); outline-offset: 3px; mix-blend-mode: multiply;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.2 1.75'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.2 1.75'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"); }
.stamp b { font: 400 17px/1 var(--font-mono); letter-spacing: .12em; }
.stamp small { font-size: 10px; letter-spacing: .12em; opacity: .9; }
:lang(fa) .stamp { font: 900 13px/1.5 var(--font-sans); letter-spacing: 0; }
:lang(fa) .stamp b { font: 900 17px/1.3 var(--font-sans); letter-spacing: 0; }
:lang(fa) .stamp small { letter-spacing: 0; }
[data-theme="dark"] .stamp { mix-blend-mode: screen; }
.stamp.green { --ink-c: var(--stamp-green); }
.stamp.violet { --ink-c: var(--stamp-violet); }
.stamp.blue { --ink-c: var(--stamp-blue); }
.stamp.round { inline-size: 104px; block-size: 104px; padding: 10px; border-radius: 50%; outline-offset: 4px; }
.stamp.pending { --ink-c: var(--ink-3); border-style: dashed; outline: 0; mix-blend-mode: normal; -webkit-mask-image: none; mask-image: none; }
@media (prefers-reduced-motion: no-preference) {
  .stamp.press { animation: stamp-press var(--dur-3) var(--ease) both; }
}
@keyframes stamp-press { 0% { opacity: 0; transform: rotate(var(--r, -6deg)) scale(1.6); } 60% { opacity: 1; transform: rotate(var(--r, -6deg)) scale(.94); } 100% { transform: rotate(var(--r, -6deg)) scale(1); } }

/* ------------------------------------------------------------ boarding pass */
.pass { --notch: 13px; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 132px; border-radius: var(--radius-md); background: var(--surface); box-shadow: var(--shadow-2); border: 1px solid var(--line);
  -webkit-mask: radial-gradient(circle var(--notch) at calc(100% - 132px) 0, #0000 98%, #000) top / 100% 51% no-repeat, radial-gradient(circle var(--notch) at calc(100% - 132px) 100%, #0000 98%, #000) bottom / 100% 51% no-repeat;
  mask: radial-gradient(circle var(--notch) at calc(100% - 132px) 0, #0000 98%, #000) top / 100% 51% no-repeat, radial-gradient(circle var(--notch) at calc(100% - 132px) 100%, #0000 98%, #000) bottom / 100% 51% no-repeat; }
[dir="rtl"] .pass { -webkit-mask: radial-gradient(circle var(--notch) at 132px 0, #0000 98%, #000) top / 100% 51% no-repeat, radial-gradient(circle var(--notch) at 132px 100%, #0000 98%, #000) bottom / 100% 51% no-repeat; mask: radial-gradient(circle var(--notch) at 132px 0, #0000 98%, #000) top / 100% 51% no-repeat, radial-gradient(circle var(--notch) at 132px 100%, #0000 98%, #000) bottom / 100% 51% no-repeat; }
.pass-main { position: relative; display: grid; gap: var(--space-4); padding: 20px 22px; min-inline-size: 0; }
.pass-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.pass-head .h3 { font-size: var(--fs-md); }
.pass-route { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; direction: ltr; }
.pass-route .code { font: 400 34px/1 var(--font-mono); letter-spacing: .04em; color: var(--ink); }
.pass-route .city { display: block; margin-block-start: 4px; font: 600 var(--fs-xs)/1.2 var(--font-sans); color: var(--ink-3); text-align: center; }
.pass-route .line { position: relative; block-size: 2px; background: repeating-linear-gradient(90deg, var(--line-dash) 0 4px, transparent 4px 10px); }
.pass-route .line .ms { position: absolute; inset-inline-start: 50%; inset-block-start: 50%; transform: translate(-50%, -50%) rotate(90deg); background: var(--surface); color: var(--brand); padding-inline: 4px; }
.pass-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; }
.pass-fields b { display: block; margin-block-start: 2px; font: 700 var(--fs-md)/1.3 var(--font-sans); }
.pass-stub { position: relative; display: grid; align-content: space-between; justify-items: center; gap: 10px; padding: 18px 12px; border-inline-start: 2px dashed var(--line-dash); text-align: center; }
.pass-stub .dual { justify-content: center; }
.pass-stub b { font: 400 22px/1 var(--font-mono); }
.barcode { inline-size: 100%; block-size: 46px; background: repeating-linear-gradient(90deg, var(--ink) 0 2px, transparent 2px 4px, var(--ink) 4px 5px, transparent 5px 8px, var(--ink) 8px 11px, transparent 11px 13px); opacity: .85; }
.pass .stamp { position: absolute; inset-inline-end: 150px; inset-block-start: 14px; }
.pass:hover { box-shadow: var(--shadow-3); }
@media (max-width: 560px) {
  .pass { grid-template-columns: minmax(0, 1fr) 96px; }
  .pass, [dir="rtl"] .pass { -webkit-mask: none; mask: none; }
  .pass-route .code { font-size: 26px; }
  .pass-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pass-stub b { font-size: 17px; }
  .pass .stamp { display: none; }
}

/* ------------------------------------------------------------ header */
.site-head { position: sticky; inset-block-start: 0; z-index: 40; background: color-mix(in oklab, var(--canvas) 90%, transparent); backdrop-filter: blur(10px); border-block-end: 1px solid var(--line); }
.site-head .container { display: flex; align-items: center; gap: var(--space-5); min-block-size: 72px; }
.logo { display: inline-flex; align-items: center; gap: 10px; font: 400 26px/1 var(--font-display); white-space: nowrap; color: var(--ink); }
:lang(fa) .logo { font-weight: 900; font-size: 22px; }
.logo-mark { position: relative; display: grid; place-items: center; inline-size: 38px; block-size: 38px; flex: none; border-radius: 50%; border: 2px solid var(--brand); color: var(--brand); outline: 1.5px solid var(--brand); outline-offset: 2px; }
.logo-mark .ms { font-size: 20px; transform: rotate(-45deg); }
[dir="rtl"] .logo-mark .ms { transform: rotate(-45deg) scaleX(1); }
.nav { display: flex; align-items: center; gap: 2px; font-size: var(--fs-sm); font-weight: 600; }
.nav a { padding: 8px 11px; border-radius: var(--radius-sm); color: var(--ink-2); white-space: nowrap; }
.nav a:hover, .nav a[aria-current] { color: var(--ink); background: var(--surface-2); }
.head-end { margin-inline-start: auto; display: flex; align-items: center; gap: 6px; }
.menu-btn { display: none; }
@media (max-width: 1180px) {
  .menu-btn { display: inline-flex; }
  .nav { display: none; position: absolute; inset-inline: 0; inset-block-start: 100%; flex-direction: column; align-items: stretch; padding: 10px var(--gutter) 18px; background: var(--surface); border-block-end: 1px solid var(--line); box-shadow: var(--shadow-2); }
  .nav[data-open] { display: flex; }
  .nav a { padding: 12px; font-size: var(--fs-md); }
}
@media (max-width: 420px) { .logo-word { display: none; } }

/* ------------------------------------------------------------ hero */
.hero { position: relative; isolation: isolate; overflow: hidden; padding-block: var(--space-8) var(--space-9); border-block-end: 1px solid var(--line); }
.hero .container { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: var(--space-8); align-items: center; }
.hero-copy { display: grid; gap: var(--space-5); justify-items: start; }
.planner { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; align-items: end; gap: 10px; inline-size: 100%; padding: 14px; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow-2); }
.planner .field { gap: 4px; }
.planner .select { min-block-size: 44px; border-color: var(--line); }
.trust { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-6); }
.trust div { display: grid; gap: 2px; }
.trust b { font: 400 30px/1 var(--font-display); }
:lang(fa) .trust b { font-weight: 900; font-size: 26px; line-height: 1.3; }
.hero-art { position: relative; display: grid; gap: 18px; padding-block: 44px 40px; }
.hero-art .pass:nth-child(2) { margin-inline-start: 12%; transform: rotate(-3deg); }
[dir="rtl"] .hero-art .pass:nth-child(2) { transform: rotate(3deg); }
.hero-art > .stamp { position: absolute; z-index: 2; }
.hero-art .route { position: absolute; inset: -30px -10px auto auto; inline-size: 70%; block-size: 120px; z-index: 0; }
@media (max-width: 1000px) {
  .hero .container { grid-template-columns: minmax(0, 1fr); gap: var(--space-7); }
  .planner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .planner .btn { grid-column: 1 / -1; }
}
@media (max-width: 560px) { .planner { grid-template-columns: minmax(0, 1fr); } .hero-art .pass:nth-child(2) { margin-inline-start: 0; } }

/* ------------------------------------------------------------ destinations */
.dests { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); }
.dest { position: relative; display: grid; gap: 12px; padding: 20px; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--line); overflow: hidden; transition: border-color var(--dur-1), transform var(--dur-2) var(--ease); }
.dest:hover { border-color: var(--brand); transform: translateY(-3px); }
.dest .iso { display: grid; place-items: center; inline-size: 58px; block-size: 58px; border-radius: 50%; border: 2px solid var(--c, var(--brand)); outline: 1.5px solid var(--c, var(--brand)); outline-offset: 3px; color: var(--c, var(--brand)); font: 400 20px/1 var(--font-mono); letter-spacing: .08em; transform: rotate(-8deg); }
.dest .h3 { font: var(--fw-display) var(--fs-xl)/1.2 var(--font-display); }
:lang(fa) .dest .h3 { font-weight: 800; }
.dest .tags { display: flex; flex-wrap: wrap; gap: 6px; }
.dest .tags span { padding: 2px 8px; border-radius: 4px; background: var(--surface-2); font-size: var(--fs-xs); font-weight: 600; color: var(--ink-2); }
.dest .meta { display: flex; justify-content: space-between; gap: 8px; padding-block-start: 10px; border-block-start: 1px dashed var(--line-2); font-size: var(--fs-xs); color: var(--ink-3); }
.dest .meta b { color: var(--ink); }
@media (max-width: 1000px) { .dests { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .dests { grid-template-columns: minmax(0, 1fr); } }
.passes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); }
@media (max-width: 1000px) { .passes { grid-template-columns: minmax(0, 1fr); } }

/* ------------------------------------------------------------ points check */
.calc { position: relative; isolation: isolate; display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); border-radius: var(--radius-lg); background: var(--surface); border: 1px solid var(--line); overflow: hidden; box-shadow: var(--shadow-2); }
.calc-form { position: relative; z-index: 1; display: grid; gap: var(--space-5); padding: var(--space-6); }
.calc-q { display: grid; gap: 10px; }
.calc-q .dual { font-size: 11.5px; }
.calc-result { position: relative; z-index: 1; display: grid; align-content: start; gap: var(--space-4); padding: var(--space-6); background: var(--surface-ink); color: var(--ink-inverse); }
[data-theme="dark"] .calc-result { background: var(--surface-2); color: var(--ink); }
.calc-result .dual { color: color-mix(in oklab, currentColor 60%, transparent); }
.gauge { position: relative; inline-size: min(100%, 260px); margin-inline: auto; }
.gauge svg { inline-size: 100%; overflow: visible; }
.gauge .track { fill: none; stroke: color-mix(in oklab, currentColor 18%, transparent); stroke-width: 14; stroke-linecap: round; }
.gauge .fill { fill: none; stroke: var(--board-amber); stroke-width: 14; stroke-linecap: round; transition: stroke-dashoffset var(--dur-3) var(--ease); }
.gauge .needle-dot { fill: currentColor; }
.gauge output { position: absolute; inset-inline: 0; inset-block-end: 0; display: grid; justify-items: center; font: 400 54px/1 var(--font-mono); }
.gauge output small { font: 600 var(--fs-xs)/1.4 var(--font-sans); opacity: .7; }
.routes { display: grid; gap: 8px; }
.routes li { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--radius-sm); background: color-mix(in oklab, currentColor 7%, transparent); font-size: var(--fs-sm); transition: opacity var(--dur-2); }
.routes li .need { margin-inline-start: auto; font: 400 var(--fs-sm)/1 var(--font-mono); opacity: .8; }
.routes li[data-ok="false"] { opacity: .45; }
.routes li[data-ok="false"] .ms { visibility: hidden; }
.routes li .ms { color: var(--board-amber); }
@media (max-width: 900px) { .calc { grid-template-columns: minmax(0, 1fr); } .calc-form, .calc-result { padding: var(--space-5); } }

/* ------------------------------------------------------------ journey */
.journey { position: relative; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-4); counter-reset: stop; }
.journey::before { content: ""; position: absolute; inset-inline: 10%; inset-block-start: 27px; border-block-start: 2px dashed var(--line-dash); }
.journey li { position: relative; display: grid; justify-items: center; gap: 10px; text-align: center; counter-increment: stop; }
.journey .dot { display: grid; place-items: center; inline-size: 56px; block-size: 56px; border-radius: 50%; background: var(--canvas); border: 2px solid var(--brand); color: var(--brand); }
.journey li:last-child .dot { background: var(--brand); color: var(--brand-ink); }
.journey .h3 { font-size: var(--fs-md); }
.journey p { font-size: var(--fs-sm); color: var(--ink-2); max-inline-size: 26ch; }
.journey .mono { font-size: var(--fs-xs); color: var(--ink-3); }
@media (max-width: 900px) {
  .journey { grid-template-columns: minmax(0, 1fr); gap: var(--space-5); }
  .journey::before { inset-inline: 27px auto; inset-block: 20px; border-block-start: 0; border-inline-start: 2px dashed var(--line-dash); }
  .journey li { grid-template-columns: 56px minmax(0, 1fr); justify-items: start; text-align: start; column-gap: var(--space-4); }
  .journey .dot { grid-row: span 3; }
}

/* ------------------------------------------------------------ departures board */
.board { border-radius: var(--radius-lg); background: var(--board); color: var(--board-ink); padding: var(--space-5); box-shadow: var(--shadow-3); overflow: hidden; }
.board-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-block-end: var(--space-4); font: 400 var(--fs-sm)/1.4 var(--font-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--board-amber); }
:lang(fa) .board-head { font: 800 var(--fs-md)/1.5 var(--font-sans); letter-spacing: 0; }
.board-head .clock { font-family: var(--font-mono); letter-spacing: .1em; color: var(--board-ink); }
.board-scroll { overflow-x: auto; }
.board table { inline-size: 100%; min-inline-size: 640px; border-collapse: separate; border-spacing: 0 6px; font-size: var(--fs-sm); }
.board th { padding: 0 12px 4px; text-align: start; font: 400 11px/1.4 var(--font-mono); letter-spacing: .14em; text-transform: uppercase; color: color-mix(in oklab, var(--board-ink) 55%, transparent); }
:lang(fa) .board th { font: 600 12px/1.5 var(--font-sans); letter-spacing: 0; }
.board td { padding: 12px; background: rgba(255, 255, 255, .05); white-space: nowrap; }
.board td:first-child { border-start-start-radius: 6px; border-end-start-radius: 6px; }
.board td:last-child { border-start-end-radius: 6px; border-end-end-radius: 6px; }
.board .flap { display: inline-flex; gap: 2px; direction: ltr; }
.board .flap span { display: inline-grid; place-items: center; min-inline-size: 22px; block-size: 30px; border-radius: 3px; background: #0b1428; box-shadow: inset 0 -15px 0 rgba(255, 255, 255, .04), inset 0 1px 0 rgba(255, 255, 255, .06); font: 400 18px/1 var(--font-mono); color: var(--board-ink); }
.board .st { display: inline-flex; align-items: center; gap: 8px; font: 400 var(--fs-sm)/1 var(--font-mono); letter-spacing: .08em; text-transform: uppercase; }
:lang(fa) .board .st { font: 700 var(--fs-sm)/1.4 var(--font-sans); letter-spacing: 0; }
.board .st::before { content: ""; inline-size: 9px; block-size: 9px; border-radius: 50%; background: currentColor; box-shadow: 0 0 10px currentColor; }
.board .st.open { color: #7fe0a3; }
.board .st.soon { color: var(--board-amber); }
.board .st.wait { color: #ff9a8a; }
@media (prefers-reduced-motion: no-preference) {
  .board [data-reveal] tbody tr { opacity: 0; transform: rotateX(-80deg); transform-origin: top; transition: opacity .4s, transform .5s var(--ease); }
  .board [data-reveal].is-in tbody tr { opacity: 1; transform: none; }
  .board [data-reveal].is-in tbody tr:nth-child(2) { transition-delay: .08s; }
  .board [data-reveal].is-in tbody tr:nth-child(3) { transition-delay: .16s; }
  .board [data-reveal].is-in tbody tr:nth-child(4) { transition-delay: .24s; }
  .board [data-reveal].is-in tbody tr:nth-child(5) { transition-delay: .32s; }
  .board [data-reveal].is-in tbody tr:nth-child(6) { transition-delay: .4s; }
}

/* ------------------------------------------------------------ consultants, shorts, postcards, faq */
.advisors { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.advisor { display: grid; gap: var(--space-4); padding: var(--space-5); border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--line); }
.advisor-head { display: flex; align-items: center; gap: 14px; }
.advisor-head b { display: block; font-size: var(--fs-md); }
.langs { display: flex; flex-wrap: wrap; gap: 6px; }
.langs span { padding: 2px 8px; border: 1px solid var(--line-2); border-radius: 4px; font: 400 var(--fs-xs)/1.5 var(--font-mono); letter-spacing: .08em; color: var(--ink-2); }
.advisor .next { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: var(--radius-sm); background: var(--success-soft); color: var(--success); font-size: var(--fs-sm); font-weight: 700; }
@media (max-width: 1000px) { .advisors { grid-template-columns: minmax(0, 1fr); } }
.shorts { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(180px, 1fr); gap: var(--space-4); overflow-x: auto; scroll-snap-type: x mandatory; padding-block-end: 8px; }
.short { position: relative; display: grid; align-content: end; gap: 6px; aspect-ratio: 9 / 15; padding: 16px; border-radius: var(--radius-md); background: linear-gradient(170deg, var(--a, #1f3c73), var(--b, #0e1a33)); color: #fff; scroll-snap-align: start; overflow: hidden; border: 0; text-align: start; cursor: pointer; }
.short .play { position: absolute; inset-block-start: 14px; inset-inline-end: 14px; display: grid; place-items: center; inline-size: 40px; block-size: 40px; border-radius: 50%; background: rgba(255, 255, 255, .18); backdrop-filter: blur(6px); }
.short .big { position: absolute; inset-block-start: 24%; inset-inline-start: 16px; font: 400 64px/1 var(--font-mono); opacity: .2; }
.short b { font-size: var(--fs-md); line-height: 1.4; }
.short small { opacity: .75; font-size: var(--fs-xs); }
.postcards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
.postcard { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 92px; gap: var(--space-4); padding: var(--space-5); border-radius: 4px; background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow-1); }
.postcard:nth-child(2) { transform: rotate(.8deg); }
.postcard:nth-child(3) { transform: rotate(-.6deg); }
.postcard blockquote { font-size: var(--fs-md); line-height: 1.7; }
.postcard .from { margin-block-start: var(--space-3); font-size: var(--fs-sm); color: var(--ink-2); }
.postcard aside { display: grid; align-content: start; justify-items: center; gap: 12px; padding-inline-start: 14px; border-inline-start: 1px solid var(--line-2); }
.postcard .postage { display: grid; place-items: center; inline-size: 62px; block-size: 74px; border: 2px dashed var(--line-dash); border-radius: 3px; color: var(--c, var(--brand)); font: 400 18px/1 var(--font-mono); }
.postcard .postmark { inline-size: 74px; block-size: 26px; background: repeating-radial-gradient(ellipse at 0 50%, transparent 0 6px, var(--line-2) 6px 7.5px); opacity: .9; }
@media (max-width: 1000px) { .postcards { grid-template-columns: minmax(0, 1fr); } .postcard:nth-child(n) { transform: none; } }
.faq { display: grid; gap: 10px; max-inline-size: 860px; }
.faq details { border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.faq summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 18px; font-weight: 700; cursor: pointer; list-style: none; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font: 400 22px/1 var(--font-mono); color: var(--brand); }
.faq details[open] summary::after { content: "−"; }
.faq details p { padding: 0 18px 18px; color: var(--ink-2); }

.cta-band { position: relative; isolation: isolate; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-5); padding: var(--space-7); border-radius: var(--radius-lg); background: var(--brand); color: var(--brand-ink); }
.cta-band .guilloche { color: rgba(255, 255, 255, .14); }
[data-theme="dark"] .cta-band .guilloche { color: rgba(11, 19, 34, .18); }
.cta-band .btn { --b: var(--brand-ink); --bi: var(--brand); background: var(--brand-ink); color: var(--brand); border-color: var(--brand-ink); position: relative; }
.cta-band > * { position: relative; }
@media (max-width: 760px) { .cta-band { grid-template-columns: minmax(0, 1fr); padding: var(--space-5); } }

.site-foot { margin-block-start: var(--space-8); padding-block: var(--space-7) var(--space-5); background: var(--surface-ink); color: #d9dfeb; }
.site-foot .logo { color: #fff; }
.site-foot .logo-mark { border-color: #fff; outline-color: #fff; color: #fff; }
.foot-grid { display: grid; grid-template-columns: 1.5fr repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
.foot-grid h3 { margin-block-end: 10px; font-size: var(--fs-sm); color: #fff; }
.foot-grid ul { display: grid; gap: 8px; font-size: var(--fs-sm); color: #aab3c5; }
.foot-grid a:hover { color: #fff; }
.site-foot .mrz { margin-block-start: var(--space-6); padding-block-start: var(--space-4); border-block-start: 1px solid rgba(255, 255, 255, .12); color: rgba(255, 255, 255, .42); }
@media (max-width: 900px) { .foot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .foot-grid > :first-child { grid-column: 1 / -1; } }

/* ------------------------------------------------------------ dialogs, steps, OTP, toast */
dialog.modal { inline-size: min(560px, calc(100vw - 24px)); max-block-size: calc(100dvh - 32px); padding: 0; border: 0; border-radius: var(--radius-lg); background: var(--surface); color: var(--ink); box-shadow: var(--shadow-3); overflow: auto; }
dialog.modal::backdrop { background: var(--overlay); backdrop-filter: blur(3px); }
.modal-head { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 22px; border-block-end: 1px dashed var(--line-2); }
.modal-head .h3 { display: flex; align-items: center; gap: 10px; }
.modal-body { display: grid; gap: var(--space-4); padding: 22px; }
.modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 16px 22px; border-block-start: 1px solid var(--line); background: var(--surface-2); }
.steps-ind { display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 6px; }
.steps-ind > * { display: grid; gap: 6px; font-size: var(--fs-xs); font-weight: 700; color: var(--ink-3); }
.steps-ind > *::before { content: ""; block-size: 4px; border-radius: 2px; background: var(--line); }
.steps-ind > [data-state="done"]::before, .steps-ind > [data-state="current"]::before { background: var(--brand); }
.steps-ind > [data-state="current"] { color: var(--ink); }
.slots { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.slots button { min-block-size: 42px; border: 1.5px solid var(--line-2); border-radius: var(--radius-sm); background: var(--surface); font: 400 var(--fs-md)/1 var(--font-mono); cursor: pointer; }
.slots button[aria-pressed="true"] { border-color: var(--brand); background: var(--brand); color: var(--brand-ink); }
.slots button:disabled { opacity: .4; text-decoration: line-through; cursor: not-allowed; }
@media (max-width: 480px) { .slots { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.otp { display: flex; justify-content: center; gap: 8px; direction: ltr; }
.otp input { inline-size: 48px; block-size: 56px; padding: 0; border: 1.5px solid var(--line-2); border-radius: var(--radius-sm); background: var(--surface); text-align: center; font: 400 26px/1 var(--font-mono); }
.otp input:focus { border-color: var(--brand); outline: none; box-shadow: 0 0 0 4px var(--brand-soft); }
@media (max-width: 400px) { .otp input { inline-size: 40px; block-size: 50px; } }
.summary-pass { display: grid; gap: 10px; padding: 16px; border: 1.5px dashed var(--line-dash); border-radius: var(--radius-md); background: var(--surface-2); }
.summary-pass .split b { font-weight: 700; }
.tf-toast { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: var(--radius-sm); background: var(--surface-ink); color: #fff; font-size: var(--fs-sm); font-weight: 600; box-shadow: var(--shadow-3); }
.tf-toast::before { content: "✓"; display: grid; place-items: center; inline-size: 22px; block-size: 22px; border-radius: 50%; border: 1.5px solid currentColor; font-size: 12px; }

/* ------------------------------------------------------------ client portal (dashboard) */
.app { display: grid; grid-template-columns: 264px minmax(0, 1fr); min-block-size: 100vh; }
.side { position: sticky; inset-block-start: 0; display: flex; flex-direction: column; gap: var(--space-5); block-size: 100vh; padding: 20px 16px; background: var(--surface); border-inline-end: 1px solid var(--line); overflow-y: auto; }
.side .logo { padding-inline: 8px; }
.side-nav { display: grid; gap: 2px; }
.side-nav button { display: flex; align-items: center; gap: 12px; inline-size: 100%; min-block-size: 44px; padding: 0 12px; border: 0; border-radius: var(--radius-sm); background: none; color: var(--ink-2); font: 600 var(--fs-sm)/1 var(--font-sans); text-align: start; cursor: pointer; }
.side-nav button:hover { background: var(--surface-2); color: var(--ink); }
.side-nav button[aria-selected="true"] { background: var(--brand-soft); color: var(--brand-strong); }
[data-theme="dark"] .side-nav button[aria-selected="true"] { color: var(--brand); }
.side-nav .count { margin-inline-start: auto; padding: 1px 8px; border-radius: 999px; background: var(--brand); color: var(--brand-ink); font-size: 11px; }
.side-card { margin-block-start: auto; display: grid; gap: 10px; padding: 16px; border-radius: var(--radius-md); background: var(--surface-ink); color: #e6ebf4; font-size: var(--fs-sm); }
.side-card .btn { --b: #fff; --bi: var(--surface-ink); background: #fff; color: #13213b; border-color: #fff; }
.main { min-inline-size: 0; }
.topbar { position: sticky; inset-block-start: 0; z-index: 20; display: flex; align-items: center; gap: 12px; min-block-size: 68px; padding: 0 var(--space-6); background: color-mix(in oklab, var(--canvas) 92%, transparent); backdrop-filter: blur(10px); border-block-end: 1px solid var(--line); }
.topbar .h2 { font-size: var(--fs-xl); }
.page { display: grid; gap: var(--space-5); padding: var(--space-6); }
.panel { display: grid; gap: var(--space-4); align-content: start; padding: var(--space-5); border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--line); min-inline-size: 0; }
.panel-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; }
.grid-2 { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: var(--space-5); }
.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-5); }
@media (max-width: 1180px) { .grid-2 { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 900px) { .grid-3 { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 960px) {
  .app { grid-template-columns: minmax(0, 1fr); }
  .side { position: static; block-size: auto; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px var(--gutter); border-inline-end: 0; border-block-end: 1px solid var(--line); }
  .side-nav { display: flex; gap: 4px; inline-size: 100%; overflow-x: auto; }
  .side-nav button { flex: none; inline-size: auto; min-block-size: 40px; }
  .side-card { display: none; }
  .topbar { position: static; padding: 10px var(--gutter); flex-wrap: wrap; }
  .page { padding: var(--space-4) var(--gutter); }
}

/* the passport data page */
.datapage { position: relative; isolation: isolate; overflow: hidden; display: grid; grid-template-columns: 116px minmax(0, 1fr); gap: var(--space-5); padding: var(--space-5); border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--line); }
.datapage .photo { position: relative; z-index: 1; display: grid; place-items: center; align-self: start; aspect-ratio: 35 / 45; border-radius: 6px; background: linear-gradient(160deg, var(--surface-3), var(--surface-2)); color: var(--brand); font: 400 40px/1 var(--font-display); border: 1px solid var(--line-2); }
.datapage dl { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 18px; }
.datapage dd { margin-block-start: 2px; font: 700 var(--fs-md)/1.35 var(--font-sans); }
.datapage dd.mono { font: 400 var(--fs-lg)/1.2 var(--font-mono); }
.datapage .mrz { position: relative; z-index: 1; grid-column: 1 / -1; padding-block-start: 12px; border-block-start: 1px dashed var(--line-2); color: var(--ink-2); }
.datapage > .stamp { position: absolute; z-index: 2; inset-inline-end: 26px; inset-block-start: 20px; }
@media (max-width: 640px) { .datapage { grid-template-columns: 76px minmax(0, 1fr); } .datapage dl { grid-template-columns: repeat(2, minmax(0, 1fr)); } .datapage > .stamp { display: none; } }

/* visa pages: one stamp per stage */
.visa-pages { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); overflow: hidden; }
.visa-pages li { position: relative; display: grid; place-items: center; gap: 10px; min-block-size: 170px; padding: 18px 10px; border-inline-end: 1px dashed var(--line-2); border-block-end: 1px dashed var(--line-2); text-align: center; }
.visa-pages li:nth-child(4n) { border-inline-end: 0; }
.visa-pages .stage { font-size: var(--fs-xs); font-weight: 700; color: var(--ink-3); }
.visa-pages li[data-state="current"] { background: var(--brand-soft); }
.visa-pages li[data-state="current"] .stage { color: var(--brand); }
@media (max-width: 760px) { .visa-pages { grid-template-columns: repeat(2, minmax(0, 1fr)); } .visa-pages li:nth-child(2n) { border-inline-end: 0; } .visa-pages li { min-block-size: 150px; } }

.meter { display: grid; gap: 6px; }
.meter .bar { block-size: 10px; border-radius: 999px; background: var(--surface-2); overflow: hidden; }
.meter .bar span { display: block; block-size: 100%; inline-size: var(--v, 0%); border-radius: inherit; background: var(--brand); transition: inline-size var(--dur-3) var(--ease); }
.countdown { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.countdown div { display: grid; justify-items: center; gap: 2px; padding: 10px 4px; border-radius: var(--radius-sm); background: var(--surface-2); }
.countdown b { font: 400 26px/1 var(--font-mono); }
.countdown small { font-size: 11px; color: var(--ink-3); }
.feed { display: grid; gap: 14px; }
.feed li { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 12px; align-items: start; font-size: var(--fs-sm); }
.feed .ic { display: grid; place-items: center; inline-size: 34px; block-size: 34px; border-radius: 50%; background: var(--surface-2); color: var(--brand); }

.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.table { inline-size: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.table th { padding: 12px 14px; text-align: start; background: var(--surface-2); font: 700 var(--fs-xs)/1.4 var(--font-sans); color: var(--ink-2); white-space: nowrap; }
.table th button { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; }
.table td { padding: 12px 14px; border-block-start: 1px solid var(--line); vertical-align: middle; }
.table tr:hover td { background: color-mix(in oklab, var(--surface-2) 45%, transparent); }
.doc-name { display: flex; align-items: center; gap: 10px; font-weight: 700; }
.doc-name .ms { color: var(--ink-3); }
.upload { position: relative; display: inline-grid; min-inline-size: 120px; }
.upload .prog { position: absolute; inset-inline: 0; inset-block-end: -6px; block-size: 3px; border-radius: 2px; overflow: hidden; }
.upload .prog span { display: block; block-size: 100%; inline-size: var(--v, 0%); background: var(--success); }
.empty { padding: var(--space-6); text-align: center; color: var(--ink-3); }

.tickets { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: var(--space-5); }
.ticket-list { display: grid; gap: 8px; align-content: start; }
.ticket-list button { display: grid; gap: 4px; inline-size: 100%; padding: 14px; border: 1.5px solid var(--line); border-radius: var(--radius-md); background: var(--surface); text-align: start; cursor: pointer; }
.ticket-list button[aria-selected="true"] { border-color: var(--brand); box-shadow: inset 4px 0 0 var(--brand); }
[dir="rtl"] .ticket-list button[aria-selected="true"] { box-shadow: inset -4px 0 0 var(--brand); }
.ticket-list .mono { font-size: var(--fs-xs); color: var(--ink-3); }
.thread { display: grid; gap: 14px; }
.msg { display: grid; gap: 4px; max-inline-size: 80%; padding: 12px 14px; border-radius: var(--radius-md); background: var(--surface-2); font-size: var(--fs-sm); }
.msg.me { justify-self: end; background: var(--brand); color: var(--brand-ink); border-end-end-radius: 4px; }
.msg.them { border-end-start-radius: 4px; }
.msg small { opacity: .75; font-size: 11px; }
.composer { display: flex; gap: 8px; align-items: flex-end; }
.composer .textarea { min-block-size: 48px; }
@media (max-width: 900px) { .tickets { grid-template-columns: minmax(0, 1fr); } .msg { max-inline-size: 92%; } }

.installments { display: grid; gap: 8px; }
.installments li { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 12px; border-radius: var(--radius-sm); border: 1px solid var(--line); }
.installments .no { display: grid; place-items: center; inline-size: 40px; block-size: 40px; border-radius: 50%; border: 1.5px dashed var(--line-dash); font: 400 var(--fs-md)/1 var(--font-mono); }
.installments li[data-paid] .no { border: 0; background: var(--success-soft); color: var(--success); }
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); }
.kpi { display: grid; gap: 4px; padding: var(--space-4); border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--line); }
.kpi b { font: 400 30px/1.1 var(--font-display); }
:lang(fa) .kpi b { font-weight: 900; font-size: 26px; line-height: 1.4; }
@media (max-width: 900px) { .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
