/* Self-hosted fonts for optimal performance */
/* Font files should be placed in /fonts/ directory */
/* Temporary: Using Google Fonts as fallback until local fonts are downloaded */

/* Inter Font Family - Try local first, fallback to Google Fonts */
/* Download from: https://github.com/rsms/inter/releases */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Inter Regular'),
       url('../fonts/inter/inter-regular.woff2') format('woff2'),
       url('https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: local('Inter Medium'),
       url('../fonts/inter/inter-medium.woff2') format('woff2'),
       url('https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: local('Inter Bold'),
       url('../fonts/inter/inter-bold.woff2') format('woff2'),
       url('https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: local('Inter Black'),
       url('../fonts/inter/inter-black.woff2') format('woff2'),
       url('https://fonts.gstatic.com/s/inter/v13/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfAZ9hiJ-Ek-_EeA.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Material Symbols Outlined — subset of the icons used by the static site.
   The full variable font is ~3 MB; this file only contains those ligatures. */

@font-face {
  font-family: 'Material Symbols Outlined';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Material Symbols Outlined'),
       url('../fonts/material-symbols/material-symbols-outlined.woff2?v=202609261430') format('woff2');
}

/* Material Symbols Outlined class */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined', sans-serif;
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: 'liga';
}

/* Fallback for browsers that don't support woff2 */
@supports not (font-variation-settings: normal) {
  .material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
  }
}

/* Vazirmatn — self-hosted Persian/Arabic webfont (variable, SIL OFL 1.1, see fonts/vazirmatn/OFL.txt).
   unicode-range limits it to Arabic-script glyphs so Latin text keeps using Inter. */
@font-face {
  font-family: 'Vazirmatn';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/vazirmatn/Vazirmatn-variable.woff2') format('woff2-variations'),
       url('../fonts/vazirmatn/Vazirmatn-variable.woff2') format('woff2 supports variations');
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1,
                 U+200C-200F, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74;
}

/* Multilingual font stack: Latin/Vietnamese, Cyrillic, CJK via system fallbacks */
:root {
  --font-sans-multilang:
    "Inter",
    "Vazirmatn",
    "Segoe UI",
    "Roboto",
    "Noto Sans",
    "Noto Sans Arabic",
    "Noto Naskh Arabic",
    "Tahoma",
    "Noto Sans SC",
    "PingFang SC",
    "Microsoft YaHei",
    "Noto Sans TC",
    "PingFang TC",
    "Microsoft JhengHei",
    "Noto Sans",
    "Arial",
    sans-serif;
}

body,
.font-display {
  font-family: var(--font-sans-multilang);
}

html[lang^="zh"] body,
html[lang^="zh"] .font-display {
  font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Inter", sans-serif;
}

html[lang="zh-Hant"] body,
html[lang="zh-Hant"] .font-display {
  font-family: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Noto Sans SC", "Inter", sans-serif;
}

html[lang="ru"] body,
html[lang="ru"] .font-display {
  font-family: "Inter", "Noto Sans", "Segoe UI", "Roboto", "Arial", sans-serif;
}

/* Persian: dedicated Vazirmatn stack (Arabic-script glyphs from Vazirmatn, Latin falls through to Inter) */
html[lang="fa"] body,
html[lang="fa"] .font-display {
  font-family: "Vazirmatn", "Inter", "Noto Sans Arabic", "Noto Naskh Arabic", "Tahoma", sans-serif;
}

html[lang="vi"] body,
html[lang="vi"] .font-display {
  font-family: "Inter", "Noto Sans", "Segoe UI", "Roboto", "Arial", sans-serif;
}

/* === tailwind.css === */
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.\!visible{visibility:visible!important}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-y-0{top:0;bottom:0}.-top-3\.5{top:-.875rem}.left-1\/2{left:50%}.left-4{left:1rem}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.isolate{isolation:isolate}.z-50{z-index:50}.col-span-12{grid-column:span 12/span 12}.col-span-full{grid-column:1/-1}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.\!grid{display:grid!important}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-28{height:7rem}.h-3{height:.75rem}.h-4{height:1rem}.h-40{height:10rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.max-h-64{max-height:16rem}.min-h-\[44px\]{min-height:44px}.min-h-\[70vh\]{min-height:70vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-28{width:7rem}.w-3\/4{width:75%}.w-52{width:13rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[120px\]{min-width:120px}.min-w-\[84px\]{min-width:84px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[140px\]{max-width:140px}.max-w-\[160px\]{max-width:160px}.max-w-\[480px\]{max-width:480px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.scroll-mt-24{scroll-margin-top:6rem}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-9{gap:2.25rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.5rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.625rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-\[\#00C4FF\]{--tw-border-opacity:1;border-color:rgb(0 196 255/var(--tw-border-opacity,1))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.border-primary{--tw-border-opacity:1;border-color:rgb(10 37 64/var(--tw-border-opacity,1))}.border-primary\/20{border-color:rgba(10,37,64,.2)}.border-primary\/30{border-color:rgba(10,37,64,.3)}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity,1))}.bg-\[\#F8F9FA\]{--tw-bg-opacity:1;background-color:rgb(248 249 250/var(--tw-bg-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-background-light{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-background-light\/80{background-color:hsla(0,0%,100%,.8)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-50\/80{background-color:rgba(239,246,255,.8)}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-primary{--tw-bg-opacity:1;background-color:rgb(10 37 64/var(--tw-bg-opacity,1))}.bg-primary\/10{background-color:rgba(10,37,64,.1)}.bg-primary\/20{background-color:rgba(10,37,64,.2)}.bg-primary\/5{background-color:rgba(10,37,64,.05)}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.bg-surface-light{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-primary\/10{--tw-gradient-from:rgba(10,37,64,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(10,37,64,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-blue-500\/10{--tw-gradient-to:rgba(59,130,246,.1) var(--tw-gradient-to-position)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pl-10{padding-left:2.5rem}.pr-24{padding-right:6rem}.pr-4{padding-right:1rem}.ps-5{padding-inline-start:1.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-display{font-family:Inter,Vazirmatn,Sora,sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-7xl{font-size:4.5rem;line-height:1}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[-0\.015em\]{letter-spacing:-.015em}.tracking-\[-0\.033em\]{letter-spacing:-.033em}.tracking-\[0\.015em\]{letter-spacing:.015em}.tracking-wide{letter-spacing:.025em}.text-\[\#00C4FF\]{--tw-text-opacity:1;color:rgb(0 196 255/var(--tw-text-opacity,1))}.text-\[\#2ECC71\]{--tw-text-opacity:1;color:rgb(46 204 113/var(--tw-text-opacity,1))}.text-\[\#4A4A4A\]{--tw-text-opacity:1;color:rgb(74 74 74/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-primary{--tw-text-opacity:1;color:rgb(10 37 64/var(--tw-text-opacity,1))}.text-primary\/10{color:rgba(10,37,64,.1)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-sky-950{--tw-text-opacity:1;color:rgb(8 47 73/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-black\/10{--tw-ring-color:rgba(0,0,0,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:border-primary:hover{--tw-border-opacity:1;border-color:rgb(10 37 64/var(--tw-border-opacity,1))}.hover\:border-primary\/40:hover{border-color:rgba(10,37,64,.4)}.hover\:border-primary\/50:hover{border-color:rgba(10,37,64,.5)}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-primary\/5:hover{background-color:rgba(10,37,64,.05)}.hover\:bg-primary\/90:hover{background-color:rgba(10,37,64,.9)}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.hover\:text-primary:hover{--tw-text-opacity:1;color:rgb(10 37 64/var(--tw-text-opacity,1))}.hover\:text-primary\/80:hover{color:rgba(10,37,64,.8)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.focus\:border-primary:focus{--tw-border-opacity:1;border-color:rgb(10 37 64/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-primary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(10 37 64/var(--tw-ring-opacity,1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.dark\:border-amber-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(180 83 9/var(--tw-border-opacity,1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity,1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.dark\:border-primary\/30:is(.dark *){border-color:rgba(10,37,64,.3)}.dark\:border-red-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.dark\:border-sky-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(7 89 133/var(--tw-border-opacity,1))}.dark\:border-yellow-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity,1))}.dark\:border-zinc-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity,1))}.dark\:border-zinc-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity,1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:rgba(120,53,15,.2)}.dark\:bg-amber-900\/40:is(.dark *){background-color:rgba(120,53,15,.4)}.dark\:bg-amber-900\/60:is(.dark *){background-color:rgba(120,53,15,.6)}.dark\:bg-amber-950\/40:is(.dark *){background-color:rgba(69,26,3,.4)}.dark\:bg-background-dark:is(.dark *){--tw-bg-opacity:1;background-color:rgb(16 22 34/var(--tw-bg-opacity,1))}.dark\:bg-background-dark\/80:is(.dark *){background-color:rgba(16,22,34,.8)}.dark\:bg-blue-900\/20:is(.dark *){background-color:rgba(30,58,138,.2)}.dark\:bg-blue-900\/40:is(.dark *){background-color:rgba(30,58,138,.4)}.dark\:bg-blue-900\/50:is(.dark *){background-color:rgba(30,58,138,.5)}.dark\:bg-blue-950\/30:is(.dark *){background-color:rgba(23,37,84,.3)}.dark\:bg-blue-950\/40:is(.dark *){background-color:rgba(23,37,84,.4)}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-800\/60:is(.dark *){background-color:rgba(31,41,55,.6)}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.dark\:bg-green-900\/20:is(.dark *){background-color:rgba(20,83,45,.2)}.dark\:bg-green-900\/40:is(.dark *){background-color:rgba(20,83,45,.4)}.dark\:bg-green-950\/40:is(.dark *){background-color:rgba(5,46,22,.4)}.dark\:bg-orange-900\/40:is(.dark *){background-color:rgba(124,45,18,.4)}.dark\:bg-primary\/10:is(.dark *){background-color:rgba(10,37,64,.1)}.dark\:bg-primary\/30:is(.dark *){background-color:rgba(10,37,64,.3)}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\:bg-red-900\/20:is(.dark *){background-color:rgba(127,29,29,.2)}.dark\:bg-red-900\/50:is(.dark *){background-color:rgba(127,29,29,.5)}.dark\:bg-red-950\/40:is(.dark *){background-color:rgba(69,10,10,.4)}.dark\:bg-sky-950\/40:is(.dark *){background-color:rgba(8,47,73,.4)}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity,1))}.dark\:bg-yellow-900\/20:is(.dark *){background-color:rgba(113,63,18,.2)}.dark\:bg-yellow-900\/40:is(.dark *){background-color:rgba(113,63,18,.4)}.dark\:bg-zinc-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.dark\:bg-zinc-700\/60:is(.dark *){background-color:rgba(63,63,70,.6)}.dark\:bg-zinc-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\:bg-zinc-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.dark\:from-primary\/20:is(.dark *){--tw-gradient-from:rgba(10,37,64,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(10,37,64,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:to-blue-500\/20:is(.dark *){--tw-gradient-to:rgba(59,130,246,.2) var(--tw-gradient-to-position)}.dark\:text-\[\#00C4FF\]:is(.dark *){--tw-text-opacity:1;color:rgb(0 196 255/var(--tw-text-opacity,1))}.dark\:text-amber-100:is(.dark *){--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.dark\:text-amber-100\/90:is(.dark *){color:hsla(48,96%,89%,.9)}.dark\:text-amber-200:is(.dark *){--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.dark\:text-green-100:is(.dark *){--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.dark\:text-red-100:is(.dark *){--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-sky-100:is(.dark *){--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:text-white\/10:is(.dark *){color:hsla(0,0%,100%,.1)}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.dark\:text-zinc-500:is(.dark *){--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\:ring-white\/10:is(.dark *){--tw-ring-color:hsla(0,0%,100%,.1)}.dark\:hover\:border-gray-700:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:hover\:border-primary:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(10 37 64/var(--tw-border-opacity,1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:hover\:bg-primary\/10:hover:is(.dark *){background-color:rgba(10,37,64,.1)}.dark\:hover\:bg-zinc-700\/50:hover:is(.dark *){background-color:rgba(63,63,70,.5)}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:focus\:border-blue-400:focus:is(.dark *){--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.dark\:focus\:ring-blue-400:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity,1))}@media (min-width:640px){.sm\:block{display:block}.sm\:flex{display:flex}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:inline-flex{display:inline-flex}.md\:hidden{display:none}.md\:w-56{width:14rem}.md\:w-64{width:16rem}.md\:w-80{width:20rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-8{gap:2rem}.md\:p-8{padding:2rem}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:py-24{padding-top:6rem;padding-bottom:6rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-8xl{font-size:6rem;line-height:1}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-9{grid-column:span 9/span 9}.lg\:block{display:block}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:block{display:block}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* === app-overrides.css === */
/* ============================================================
   PHASE 0 — Unified design tokens (single source of truth)
   Brand identity: primary #0A2540 (navy), secondary #1d4ed8 (link/focus),
   accent #00C4FF (Most Popular badge only).
   Backend-compatible: pure CSS, no API changes.
   ============================================================ */
:root {
  --brand-primary: #0a2540;
  --brand-primary-hover: #12365f;
  --brand-secondary: #1d4ed8;
  --brand-secondary-hover: #1e40af;
  --brand-accent: #00c4ff;
  --brand-bg-light: #ffffff;
  --brand-bg-dark: #101622;
  --brand-surface-light: #f8fafc;
  --brand-surface-dark: #18181b;
  --brand-border: #e5e7eb;
  --brand-radius: 0.5rem;
  --brand-radius-lg: 0.625rem;
  --btn-min-h: 44px;
}

html.dark {
  --brand-border: #3f3f46;
}

/* Shared UI fixes for the static frontend. Keep this layer small and non-invasive. */
html,
body {
  max-width: 100%;
  overflow-x: clip;
}

body {
  min-width: 0;
}

/* Only .sr-only is visually hidden. Visible status uses .visible-status. */
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.visible-status {
  position: static !important;
  width: auto !important;
  height: auto !important;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
  white-space: normal !important;
}

.sr-only:focus,
.skip-link:focus {
  position: fixed !important;
  top: max(0.75rem, env(safe-area-inset-top)) !important;
  inset-inline-start: max(0.75rem, env(safe-area-inset-left)) !important;
  width: auto !important;
  height: auto !important;
  padding: 0.625rem 1rem !important;
  margin: 0 !important;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
  white-space: normal !important;
  z-index: 10000 !important;
}

.skip-links {
  position: fixed !important;
  top: 0 !important;
  inset-inline-start: 0 !important;
  z-index: 10000 !important;
}

/* RTL should affect content without forcing every flex/grid container back to LTR. */
html[dir="rtl"] body,
html[dir="rtl"] main,
html[dir="rtl"] section,
html[dir="rtl"] article,
html[dir="rtl"] form,
html[dir="rtl"] .card,
html[dir="rtl"] .modal-content {
  direction: rtl;
}

html[dir="rtl"] .flex:not(.force-ltr),
html[dir="rtl"] .grid:not(.force-ltr) {
  direction: rtl;
}

html[dir="rtl"] input[type="email"],
html[dir="rtl"] input[type="url"],
html[dir="rtl"] input[type="password"],
html[dir="rtl"] input[type="number"],
html[dir="rtl"] .font-mono,
html[dir="rtl"] .material-symbols-outlined,
html[dir="rtl"] svg,
html[dir="rtl"] img {
  direction: ltr;
}

html[dir="rtl"] input:not([type="email"]):not([type="url"]):not([type="password"]):not([type="number"]),
html[dir="rtl"] textarea {
  text-align: right;
}

/* Shared header hardening for app pages. */
header > .flex,
header .layout-content-container > .flex,
header .items-center.justify-between {
  min-width: 0;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
}

header nav {
  min-width: 0;
  flex-wrap: wrap;
  gap: 0.75rem 1.25rem !important;
}

header a,
header button,
header select {
  flex-shrink: 0;
}

#accountName,
#walletBalance {
  max-width: 11rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 900px) {
  header {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }

  header nav:not(#mobileMenu) {
    order: 3;
    width: 100%;
  }

  header [role="region"][aria-label="User account information"],
  header .text-right {
    min-width: 0;
  }
}

@media (max-width: 640px) {
  main,
  .layout-content-container,
  .max-w-6xl,
  .max-w-7xl {
    min-width: 0;
  }

  .modal-content {
    width: calc(100vw - 2rem) !important;
    max-width: calc(100vw - 2rem) !important;
  }

  .tab-button {
    white-space: nowrap;
  }
}

/* Ensure hidden panels/modals are also hidden from layout and accessibility tooling. */
[hidden],
[aria-hidden="true"].modal-overlay,
[aria-hidden="true"].modal,
[aria-hidden="true"].tab-panel,
[data-app-hidden="true"] {
  display: none !important;
}

.notification {
  max-width: min(28rem, calc(100vw - 2rem));
  inset-inline-end: 1rem !important;
  inset-inline-start: auto !important;
  z-index: 11000 !important;
}

html[dir="rtl"] .notification {
  inset-inline-start: 1rem !important;
  inset-inline-end: auto !important;
}

/* Simple content pages (support/terms/privacy/forgot-password) keep the same card structure but match the product UI. */
body.simple-page {
  background: #f8fafc !important;
  color: #111827 !important;
}

.simple-page-shell {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 1rem;
}

.simple-page-card {
  width: min(100%, 56rem);
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 1rem;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
  padding: clamp(1.5rem, 4vw, 3rem);
}

.simple-page-card h1 {
  color: #0a2540;
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1.1;
  font-weight: 800;
  margin-bottom: 1.25rem;
}

.simple-page-card p,
.simple-page-card li {
  color: #4b5563;
  font-size: 1.05rem;
  line-height: 1.8;
}

.simple-page-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1.75rem;
}

.simple-page-actions a,
.simple-page-card a.simple-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0.65rem 1rem;
  border-radius: 0.625rem;
  font-weight: 700;
  text-decoration: none;
}

.simple-page-actions a.primary {
  background: #0a2540;
  color: #fff;
}

.simple-page-actions a.secondary,
.simple-page-card a.simple-link {
  background: #f3f4f6;
  color: #0a2540;
  border: 1px solid #d1d5db;
}

html.dark body.simple-page {
  background: #101622 !important;
  color: #e5e7eb !important;
}

html.dark .simple-page-card {
  background: #18181b;
  border-color: #3f3f46;
}

html.dark .simple-page-card h1,
html.dark .simple-page-actions a.secondary,
html.dark .simple-page-card a.simple-link {
  color: #fff;
}

html.dark .simple-page-card p,
html.dark .simple-page-card li {
  color: #d1d5db;
}

html.dark .simple-page-actions a.secondary,
html.dark .simple-page-card a.simple-link {
  background: #27272a;
  border-color: #52525b;
}

.admin-guard-pending main,
.admin-guard-pending header,
.admin-guard-pending footer {
  visibility: hidden;
}

.admin-guard-pending::before {
  content: "Checking admin access...";
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: #f8fafc;
  color: #0a2540;
  font-weight: 700;
  z-index: 12000;
}

html[dir="rtl"] .admin-guard-pending::before {
  content: "در حال بررسی دسترسی ادمین...";
}

/* ============================================================
   Unified button components — map all legacy onclick styles here.
   Usage: class="btn-primary" / "btn-secondary" / "btn-outline" /
   "btn-ghost" / "btn-danger". All guarantee min-h:44px, rounded-lg,
   font-bold, transition. No JS/API dependency.
   ============================================================ */
.btn-primary,
.btn-secondary,
.btn-outline,
.btn-ghost,
.btn-danger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: var(--btn-min-h);
  padding: 0.625rem 1.25rem;
  border-radius: var(--brand-radius-lg);
  font-weight: 700;
  font-size: 0.95rem;
  line-height: 1.25;
  cursor: pointer;
  border: 2px solid transparent;
  text-decoration: none;
  transition: background-color 0.15s ease, border-color 0.15s ease,
    color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
  white-space: nowrap;
}

.btn-primary {
  background: var(--brand-primary);
  border-color: var(--brand-primary);
  color: #fff;
}
.btn-primary:hover {
  background: var(--brand-primary-hover);
  border-color: var(--brand-primary-hover);
  color: #fff;
}
.btn-primary:disabled {
  background: #9ca3af;
  border-color: #9ca3af;
  cursor: not-allowed;
  opacity: 0.8;
}

.btn-secondary {
  background: #f3f4f6;
  border-color: #d1d5db;
  color: var(--brand-primary);
}
.btn-secondary:hover {
  background: #e5e7eb;
  border-color: #9ca3af;
}
html.dark .btn-secondary {
  background: #27272a;
  border-color: #52525b;
  color: #fff;
}
html.dark .btn-secondary:hover {
  background: #3f3f46;
}

.btn-outline {
  background: transparent;
  border-color: var(--brand-primary);
  color: var(--brand-primary);
}
.btn-outline:hover {
  background: rgba(10, 37, 64, 0.06);
}
html.dark .btn-outline {
  border-color: #93c5fd;
  color: #bfdbfe;
}
html.dark .btn-outline:hover {
  background: rgba(147, 197, 253, 0.1);
}

.btn-ghost {
  background: transparent;
  border-color: transparent;
  color: var(--brand-secondary);
}
.btn-ghost:hover {
  background: rgba(29, 78, 216, 0.08);
}

.btn-danger {
  background: #dc2626;
  border-color: #dc2626;
  color: #fff;
}
.btn-danger:hover {
  background: #b91c1c;
  border-color: #b91c1c;
}

.btn-lg {
  min-height: 48px;
  padding: 0.75rem 1.5rem;
  font-size: 1.05rem;
}
.btn-sm {
  min-height: 36px;
  padding: 0.4rem 0.9rem;
  font-size: 0.85rem;
}

/* Unified "Most Popular" treatment: accent ONLY here */
.badge-popular {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  background: var(--brand-accent);
  color: #0a2540;
  font-weight: 800;
  font-size: 0.75rem;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  letter-spacing: 0.02em;
}
.plan-card-popular {
  border: 2px solid var(--brand-accent) !important;
  position: relative;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--brand-secondary);
  outline-offset: 2px;
}

/* Unified modal hover: subtle bg only, never scale (avoids hierarchy confusion) */
.modal-content .btn-primary:hover,
.modal-content .btn-secondary:hover,
.modal-content .btn-outline:hover {
  transform: none;
}
.modal-card-hover:hover {
  background: rgba(10, 37, 64, 0.04);
}
html.dark .modal-card-hover:hover {
  background: rgba(147, 197, 253, 0.08);
}

/* Unified tab styles — capsule (dashboard model) is canonical */
.tab-capsule {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 1.1rem;
  border-radius: 9999px;
  font-weight: 700;
  font-size: 0.9rem;
  border: 1px solid var(--brand-border);
  background: transparent;
  color: inherit;
  min-height: var(--btn-min-h);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.tab-capsule[aria-selected="true"],
.tab-capsule.active {
  background: var(--brand-primary);
  border-color: var(--brand-primary);
  color: #fff;
}

/* Empty-state illustration block (dashboard) */
.empty-state {
  text-align: center;
  padding: 2.5rem 1.5rem;
  border: 1px dashed var(--brand-border);
  border-radius: 1rem;
  background: rgba(10, 37, 64, 0.02);
}
html.dark .empty-state {
  background: rgba(255, 255, 255, 0.03);
}
.empty-state h3 {
  font-weight: 800;
  font-size: 1.15rem;
  margin: 1rem 0 0.5rem;
  color: var(--brand-primary);
}
html.dark .empty-state h3 {
  color: #fff;
}
.empty-state p {
  color: #6b7280;
  font-size: 0.95rem;
}
.empty-state ol {
  display: inline-block;
  text-align: start;
  margin: 1rem auto 0;
  color: #4b5563;
  font-size: 0.9rem;
  line-height: 1.9;
}
html.dark .empty-state p,
html.dark .empty-state ol {
  color: #d1d5db;
}

/* Chat bubble mobile fix */
@media (max-width: 640px) {
  .message-bubble {
    max-width: 88% !important;
  }
}

/* Unified notification (single source; inline copies kept as fallback) */
.notification {
  position: fixed;
  top: 1.25rem;
  padding: 1rem 1.5rem;
  border-radius: 0.5rem;
  background: #fff;
  color: #111827;
  box-shadow: 0 10px 30px rgba(15, 23, 42, 0.15);
  z-index: 11000 !important;
  font-weight: 500;
  animation: appSlideIn 0.3s ease;
  max-width: min(28rem, calc(100vw - 2rem));
  inset-inline-end: 1rem !important;
  inset-inline-start: auto !important;
}
.notification.success { background-color: #10B981; color: #fff; }
.notification.error { background-color: #EF4444; color: #fff; }
.notification.warning { background-color: #F59E0B; color: #fff; }
@keyframes appSlideIn {
  from { transform: translateX(20px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}
html[dir="rtl"] .notification {
  inset-inline-start: 1rem !important;
  inset-inline-end: auto !important;
}

/* ============================================================
   PHASE 1-4 UPGRADE (no redesign) — canonical components.
   All pages migrate here; inline <style> copies are deprecated.
   Brand contract: primary #0A2540 = main CTA only,
   secondary #1d4ed8 = links/focus/active accents,
   accent #00C4FF = Most Popular badge only.
   ============================================================ */

/* Canonical tab-button: capsule navy (account model). Overrides
   legacy inline .tab-button copies in dashboard/account. */
.tab-button {
  display: inline-flex !important;
  align-items: center;
  gap: 0.35rem;
  padding: 0.65rem 1.25rem !important;
  font-weight: 600;
  font-size: 0.95rem;
  color: #6b7280;
  border: 1px solid transparent !important;
  border-bottom: 1px solid transparent !important;
  border-radius: 9999px !important;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
  white-space: nowrap;
}
.tab-button:hover {
  color: var(--brand-primary, #0A2540) !important;
  background-color: rgba(10, 37, 64, 0.06) !important;
}
.tab-button.active {
  color: #fff !important;
  background-color: var(--brand-primary, #0A2540) !important;
  border-color: var(--brand-primary, #0A2540) !important;
  font-weight: 700;
}
html.dark .tab-button { color: #a1a1aa !important; }
html.dark .tab-button:hover {
  color: #93c5fd !important;
  background-color: rgba(147, 197, 253, 0.12) !important;
}
html.dark .tab-button.active {
  color: #fff !important;
  background-color: var(--brand-primary, #0A2540) !important;
  border-color: var(--brand-primary, #0A2540) !important;
}

/* Unified form field */
.field,
input.field, select.field, textarea.field {
  display: block;
  width: 100%;
  min-height: 44px;
  padding: 0.625rem 0.875rem;
  border-radius: var(--brand-radius-lg);
  border: 1px solid #d1d5db;
  background: #fff;
  color: #0a2540;
  font-size: 0.95rem;
  line-height: 1.5;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.field::placeholder { color: #9ca3af; }
.field:focus {
  outline: none;
  border-color: var(--brand-secondary);
  box-shadow: 0 0 0 3px rgba(29, 78, 216, 0.15);
}
html.dark .field,
html.dark input.field, html.dark select.field, html.dark textarea.field {
  background: #27272a;
  border-color: #52525b;
  color: #fff;
}
.field-error-message { min-height: 1.25rem; }
input[aria-invalid="true"], select[aria-invalid="true"], textarea[aria-invalid="true"] {
  border-color: #dc2626 !important;
}

/* Password visibility toggle */
.pw-wrap { position: relative; }
.pw-wrap .field { padding-inline-end: 2.75rem; }
/* Inputs keep direction:ltr (passwords/emails), so the logical property resolves
   against the element, not the document — set the physical side explicitly. */
html[dir="rtl"] .pw-wrap .field { padding-left: 2.75rem; }
html[dir="rtl"] .pw-wrap .field { padding-right: 0.875rem; }
html:not([dir="rtl"]) .pw-wrap .field { padding-right: 2.75rem; }
.pw-toggle {
  position: absolute;
  inset-inline-end: 0.35rem;
  top: 50%;
  transform: translateY(-50%);
  min-height: 36px;
  min-width: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.5rem;
  color: #6b7280;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.pw-toggle:hover { background: rgba(10, 37, 64, 0.06); color: var(--brand-primary); }
html.dark .pw-toggle:hover { background: rgba(147, 197, 253, 0.12); color: #93c5fd; }

/* Unified card */
.ui-card {
  background: #fff;
  border: 1px solid var(--brand-border);
  border-radius: 0.75rem;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
html.dark .ui-card { background: #27272a; border-color: #3f3f46; }

/* No-email prominent banner (login page) */
.noemail-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  text-align: center;
  font-size: 0.875rem;
  color: #4b5563;
  background: rgba(10, 37, 64, 0.04);
  border: 1px dashed #cbd5e1;
  border-radius: 0.75rem;
  padding: 0.75rem 1rem;
  margin-top: 0.5rem;
  opacity: 1 !important;
}
html.dark .noemail-banner {
  color: #d1d5db;
  background: rgba(147, 197, 253, 0.08);
  border-color: #52525b;
}
.noemail-banner a { font-weight: 700; }

/* Checkout stepper (purchase page) */
.checkout-steps {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin-bottom: 1.5rem;
  font-size: 0.85rem;
  font-weight: 600;
  color: #6b7280;
}
.checkout-steps .step {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.8rem;
  border-radius: 9999px;
  border: 1px solid var(--brand-border);
  background: transparent;
}
.checkout-steps .step.is-active {
  background: var(--brand-primary);
  border-color: var(--brand-primary);
  color: #fff;
}
.checkout-steps .step.is-done {
  border-color: var(--brand-secondary);
  color: var(--brand-secondary);
}
.checkout-steps .sep { opacity: 0.5; }

/* Region picker: continent tabs + city/country search */
.region-picker {
  border: 1px solid var(--brand-border);
  border-radius: 1rem;
  padding: 1.25rem 1.25rem 1.5rem;
  background: var(--brand-bg-light, #fff);
}
html.dark .region-picker {
  background: var(--brand-surface-dark, #18181b);
}
.region-picker-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem 1.25rem;
  flex-wrap: wrap;
  margin-bottom: 0.35rem;
}
.region-picker-title {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 600;
  color: #111827;
}
html.dark .region-picker-title { color: #f9fafb; }
.region-search {
  position: relative;
  flex: 1 1 14rem;
  max-width: 18rem;
  margin-inline-start: auto;
}
.region-search input {
  width: 100%;
  height: 40px;
  min-height: 40px;
  border: 1px solid var(--brand-border);
  border-radius: 9999px;
  padding: 0 2.5rem 0 1rem;
  background: #fff;
  color: #111827;
  font-size: 0.875rem;
  appearance: none;
  -webkit-appearance: none;
}
.region-search input[type="search"]::-webkit-search-decoration,
.region-search input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none;
}
html.dark .region-search input {
  background: #27272a;
  color: #f4f4f5;
}
.region-search input::placeholder { color: #9ca3af; }
.region-search .material-symbols-outlined {
  position: absolute;
  right: 0.75rem;
  left: auto;
  top: 50%;
  transform: translateY(-50%);
  font-size: 20px;
  color: #9ca3af;
  pointer-events: none;
}
html[dir="rtl"] .region-search input {
  padding: 0 1rem 0 2.5rem;
}
html[dir="rtl"] .region-search .material-symbols-outlined {
  right: auto;
  left: 0.75rem;
}
.region-continent-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 0.15rem 1.1rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  border-bottom: 1px solid var(--brand-border);
  margin: 0.35rem 0 1.15rem;
}
.region-continent-tab {
  appearance: none;
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 0.7rem 0.1rem;
  margin-bottom: -1px;
  color: #6b7280;
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  min-height: 44px;
  white-space: nowrap;
  flex-shrink: 0;
}
html.dark .region-continent-tab { color: #9ca3af; }
.region-continent-tab:hover { color: var(--brand-secondary); }
.region-continent-tab.is-active {
  color: var(--brand-secondary);
  border-bottom-color: var(--brand-secondary);
  font-weight: 600;
}
.region-tab-count {
  font-size: 0.7rem;
  vertical-align: super;
  margin-inline-start: 0.12rem;
  opacity: 0.72;
}
.region-card-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
}
@media (min-width: 640px) {
  .region-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 768px) {
  .region-card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .region-card-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 1280px) {
  .region-card-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
.region-empty-state {
  grid-column: 1 / -1;
  text-align: center;
  color: #6b7280;
  padding: 2rem 0.5rem;
}
html.dark .region-empty-state { color: #9ca3af; }
.region-card {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  text-align: start;
  padding: 0.85rem 1rem;
  border-radius: 0.75rem;
  border: 1px solid var(--brand-border);
  background: #fff;
  min-height: 72px;
  min-width: 0;
  transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}
html.dark .region-card { background: #27272a; }
.region-card:hover:not(:disabled) { border-color: var(--brand-secondary); }
.region-card.is-selected {
  border-color: var(--brand-secondary);
  background: #eff6ff;
  box-shadow: 0 0 0 1px var(--brand-secondary);
}
html.dark .region-card.is-selected {
  background: rgba(29, 78, 216, 0.16);
}
.region-card-flag {
  font-size: 1.7rem;
  line-height: 1;
  width: 2.1rem;
  text-align: center;
  flex-shrink: 0;
}
.region-card-flag-img {
  display: block;
  width: 32px;
  height: 24px;
  object-fit: cover;
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}
.region-card-flag-code {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 24px;
  padding: 0 0.25rem;
  border-radius: 3px;
  background: #e5e7eb;
  color: #374151;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}
html.dark .region-card-flag-code {
  background: #3f3f46;
  color: #e4e4e7;
}
.region-card-text {
  min-width: 0;
  flex: 1;
  unicode-bidi: isolate;
}
.region-card-city {
  display: block;
  font-weight: 600;
  color: #111827;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html.dark .region-card-city { color: #f9fafb; }
.region-card-country {
  display: block;
  font-size: 0.75rem;
  color: #9ca3af;
  line-height: 1.3;
}
.region-card-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  flex-shrink: 0;
}
.region-card-price {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--brand-secondary);
}
.region-card-status {
  font-size: 0.7rem;
}
.region-card-check {
  color: var(--brand-secondary);
  font-size: 20px;
  line-height: 1;
}
@media (max-width: 640px) {
  .region-search { max-width: none; }
}

/* Trust bar (index hero) */
.trust-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 1rem;
  font-size: 0.8rem;
  font-weight: 600;
  color: #475569;
}
html.dark .trust-bar { color: #cbd5e1; }
.trust-bar .trust-item {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: 1px solid var(--brand-border);
  border-radius: 9999px;
  padding: 0.35rem 0.75rem;
  background: rgba(255, 255, 255, 0.7);
}
html.dark .trust-bar .trust-item { background: rgba(255, 255, 255, 0.04); }
.trust-bar .material-symbols-outlined { font-size: 18px; color: #16a34a; }

/* Standalone trust pill (reusable outside .trust-bar: purchase, solana-pay, privacy) */
.trust-item {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  border: 1px solid var(--brand-border);
  border-radius: 9999px;
  padding: 0.35rem 0.75rem;
  background: rgba(255, 255, 255, 0.7);
  font-size: 0.8rem;
  font-weight: 600;
  color: #475569;
}
html.dark .trust-item { background: rgba(255, 255, 255, 0.04); color: #cbd5e1; }
.trust-item .material-symbols-outlined { font-size: 18px; color: #16a34a; }

/* NO KYC highlight — green accent to stand out among neutral trust pills */
.trust-item-nokyc {
  border-color: rgba(22, 163, 74, 0.45);
  background: rgba(22, 163, 74, 0.08);
  color: #15803d;
}
html.dark .trust-item-nokyc { color: #4ade80; background: rgba(74, 222, 128, 0.08); }
.trust-item-nokyc .material-symbols-outlined { color: #16a34a; }
html.dark .trust-item-nokyc .material-symbols-outlined { color: #4ade80; }
.nokyc-pill {
  border-color: rgba(22, 163, 74, 0.45) !important;
  color: #15803d !important;
}
html.dark .nokyc-pill { color: #4ade80 !important; }
.nokyc-inline {
  font-weight: 800;
  letter-spacing: 0.04em;
  font-size: 0.75rem;
  color: #15803d;
  white-space: nowrap;
}
html.dark .nokyc-inline { color: #4ade80; }

/* FAQ accordion (index) */
.faq-item {
  border: 1px solid var(--brand-border);
  border-radius: 0.75rem;
  background: #fff;
  overflow: hidden;
}
html.dark .faq-item { background: #27272a; }
.faq-item + .faq-item { margin-top: 0.75rem; }
.faq-q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  text-align: start;
  padding: 1rem 1.25rem;
  font-weight: 700;
  color: var(--brand-primary);
  background: transparent;
  border: 0;
  cursor: pointer;
  min-height: 44px;
}
html.dark .faq-q { color: #fff; }
.faq-q .material-symbols-outlined { transition: transform 0.2s ease; }
.faq-item[data-open="true"] .faq-q .material-symbols-outlined { transform: rotate(180deg); }
.faq-a { max-height: 0; overflow: hidden; transition: max-height 0.25s ease; }
.faq-item[data-open="true"] .faq-a { max-height: 300px; }
.faq-a p { padding: 0 1.25rem 1.1rem; color: #4b5563; line-height: 1.7; }
html.dark .faq-a p { color: #d1d5db; }

/* Responsive tables -> cards on mobile (account page) */
@media (max-width: 640px) {
  .table-cards thead { display: none; }
  .table-cards, .table-cards tbody, .table-cards tr, .table-cards td {
    display: block;
    width: 100%;
  }
  .table-cards tr {
    border: 1px solid var(--brand-border);
    border-radius: 0.75rem;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
    background: #fff;
  }
  html.dark .table-cards tr { background: #27272a; }
  .table-cards td {
    border: 0 !important;
    padding: 0.25rem 0 !important;
    display: flex;
    justify-content: space-between;
    gap: 1rem;
  }
  .table-cards td::before {
    content: attr(data-label);
    font-weight: 700;
    color: #6b7280;
    font-size: 0.8rem;
  }
}

/* Client OS tabs: 44px touch target (dashboard fix) */
.client-os-tab {
  min-height: 44px !important;
  height: 44px !important;
  padding: 0 0.9rem !important;
  font-size: 12px !important;
}
.client-os-tab svg { width: 16px !important; height: 16px !important; }

/* Chat contrast + typing */
html.dark .message-admin { background-color: #4b5563 !important; color: #f9fafb !important; }
.typing-indicator {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.6rem 0.9rem;
  border-radius: 12px;
  background: #e5e7eb;
  color: #6b7280;
  font-size: 0.8rem;
}
html.dark .typing-indicator { background: #4b5563; color: #e5e7eb; }
.typing-indicator .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: currentColor;
  animation: typingBlink 1.2s infinite;
}
.typing-indicator .dot:nth-child(2) { animation-delay: 0.2s; }
.typing-indicator .dot:nth-child(3) { animation-delay: 0.4s; }
@keyframes typingBlink { 0%, 60%, 100% { opacity: 0.3; } 30% { opacity: 1; } }

/* Solana status states */
.status-banner { transition: background-color 0.2s ease, border-color 0.2s ease; }
.status-banner.is-loading { border-style: dashed; }
.status-banner.is-waiting {
  border: 1px solid #bfdbfe;
  background: #eff6ff;
  color: #1e40af;
}
html.dark .status-banner.is-waiting { background: rgba(29, 78, 216, 0.18); color: #bfdbfe; }
.status-banner.is-success {
  border: 1px solid #bbf7d0;
  background: #f0fdf4;
  color: #166534;
}
.status-banner.is-error {
  border: 1px solid #fecaca;
  background: #fef2f2;
  color: #991b1b;
}

/* Payment method hierarchy */
.pay-option-primary { border-width: 2px; }
.pay-option { min-height: 64px; }
.pay-option:hover { transform: none; }

/* Deposit balance + plan popular polish (keep structure) */
.plan-card-popular { box-shadow: 0 8px 24px rgba(0, 196, 255, 0.18); }
.badge-popular { color: #0a2540 !important; }

/* Plan tagline: deeper cyan on white cards, brand cyan on dark cards. */
.plan-tagline { color: #0E7490; }
html.dark .plan-tagline { color: #00C4FF; }

/* Legacy button hardening: any remaining Tailwind bg-primary/bg-gray
   buttons (including JS-rendered plan/connection/receipt buttons) get
   unified min-height, radius and weight without markup changes. */
button[class*="bg-primary"], a[class*="bg-primary"] {
  min-height: var(--btn-min-h);
  border-radius: var(--brand-radius-lg) !important;
  font-weight: 700;
}
button[class*="bg-gray-200"], a[class*="bg-gray-200"],
button[class*="bg-gray-100"], a[class*="bg-gray-100"] {
  min-height: var(--btn-min-h);
  border-radius: var(--brand-radius-lg) !important;
  font-weight: 600;
}

/* ============================================================
   App header responsive (dashboard/account/chat/purchase/admin-chat).
   Row 1 must never look "wrapped by accident": the account/actions
   cluster hugs the end, and nav drops to a deliberate secondary bar.
   ============================================================ */
.app-header > .flex > div:last-child {
  margin-inline-start: auto;
  min-width: 0;
}
.app-header .text-right { min-width: 0; }
/* Compact row 1 on laptop widths so everything fits one line */
@media (max-width: 1450px) {
  .app-header {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }
  .app-header nav {
    gap: 0.5rem 1rem !important;
  }
  .app-header #accountName,
  .app-header #walletBalance {
    max-width: 8rem;
  }
}
/* Nav becomes an intentional secondary bar (never a stray wrap) */
@media (max-width: 1330px) {
  .app-header > .flex { row-gap: 0.6rem; }
  .app-header nav {
    order: 3;
    flex: 1 1 100%;
    width: 100%;
    border-top: 1px solid var(--brand-border);
    padding-top: 0.6rem;
    overflow-x: auto;
  }
  .app-header nav a { white-space: nowrap; }
}
/* Phones: actions cluster takes its own tidy row, texts truncate */
@media (max-width: 720px) {
  .app-header > .flex > div:last-child {
    flex: 1 1 100%;
    justify-content: space-between;
  }
  .app-header #accountName { max-width: 7rem; }
  .app-header #walletBalance { max-width: 6rem; }
}

/* Dashboard content must never force horizontal scroll */
#serviceDetails, #servicesList { min-width: 0; }
#serviceDetails h1 { overflow-wrap: anywhere; }

/* Simple-page headers wrap on 320px instead of clipping controls */
.site-simple-header {
  flex-wrap: wrap;
  gap: 0.75rem;
  white-space: normal;
}
.site-simple-header > a,
.site-simple-header > div {
  min-width: 0;
}
@media (max-width: 360px) {
  .site-simple-header {
    align-items: flex-start;
  }
  .site-simple-header > div {
    flex-wrap: wrap;
    width: 100%;
  }
}

/* Admin chat: stack rooms + conversation on small screens */
@media (max-width: 768px) {
  .admin-chat-layout {
    flex-direction: column;
  }
  .admin-chat-rooms {
    width: 100% !important;
    max-height: 40vh;
  }
}

/* ==========================================================================
   Shared toast notifications (js/toast.js) — replaces per-page #notification
   ========================================================================== */
.toast-stack {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: 24px;
  z-index: 1200;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: min(92vw, 480px);
  pointer-events: none;
}

html[dir="rtl"] .toast-stack {
  left: auto;
  right: 50%;
  transform: translateX(50%);
}

.toast {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
  padding: 12px 14px;
  border-radius: 12px;
  box-shadow: 0 10px 30px rgba(2, 12, 27, 0.25);
  font-size: 0.875rem;
  line-height: 1.5;
  color: #fff;
  animation: toast-in 0.22s ease-out;
}

/* accessibility.min.css hides every [aria-live] region off-screen (sr-only live regions);
   toasts must stay visible, so undo that for toasts specifically. */
.toast[aria-live] {
  position: static;
  inset-inline-start: auto;
  left: auto;
  right: auto;
  width: auto;
  height: auto;
  min-width: 0;
  min-height: 0;
  overflow: visible;
  clip: auto;
  white-space: normal;
}

.toast--success { background-color: #10B981; }
.toast--error   { background-color: #EF4444; }
.toast--warning { background-color: #F59E0B; }
.toast--info    { background-color: #0A2540; }

.toast__icon {
  font-size: 20px;
  line-height: 1.4;
  flex-shrink: 0;
}

.toast__message {
  flex: 1;
  overflow-wrap: anywhere;
  text-align: start;
}

.toast__close {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin: -2px;
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: currentColor;
  cursor: pointer;
}

.toast__close:hover { background: rgba(255, 255, 255, 0.18); }
.toast__close .material-symbols-outlined { font-size: 18px; }

.toast--leaving {
  opacity: 0;
  transition: opacity 0.2s ease-in;
}

@keyframes toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .toast { animation: none; }
  .toast--leaving { transition: none; }
}

/* Per-field inline form errors (js/forms.js) */
.error-message {
  display: none;
  color: #EF4444;
  font-size: 0.8rem;
  line-height: 1.4;
}

.error-message--visible {
  display: block;
}

/* accessibility.min.css parks every [aria-live] element off-screen as a
   screen-reader-only pattern. Inline field errors, alert/status panels and
   live status text are meant to be seen, so re-anchor them here (this sheet
   loads after the accessibility sheet on every page). */
.error-message--visible,
[role="alert"]:not(.sr-only):not(.toast),
[role="status"]:not(.sr-only):not(.toast),
.visible-status {
  position: static;
  left: auto;
  width: auto;
  height: auto;
  overflow: visible;
  clip: auto;
  white-space: normal;
}

.field-invalid {
  border-color: #EF4444 !important;
}

.field-invalid:focus {
  border-color: #EF4444 !important;
}

/* Live password requirements checklist (js/auth-errors.js) */
.pw-req-title {
  margin: 0;
  font-size: 0.75rem;
  font-weight: 500;
  color: #6B7280;
}

.dark .pw-req-title {
  color: #9CA3AF;
}

.pw-req-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.pw-req-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.75rem;
  line-height: 1.5;
  color: #9CA3AF;
  transition: color 0.15s ease;
}

.dark .pw-req-item {
  color: #6B7280;
}

.pw-req-item .pw-req-icon {
  font-size: 15px;
  flex-shrink: 0;
}

.pw-req-item--met {
  color: #10B981;
}

.dark .pw-req-item--met {
  color: #34D399;
}

.pw-req-item--unmet {
  color: #6B7280;
}

.dark .pw-req-item--unmet {
  color: #9CA3AF;
}

/* Untouched input: keep the whole list muted until the user starts typing. */
.pw-req-list--empty .pw-req-item {
  color: #9CA3AF;
}

.dark .pw-req-list--empty .pw-req-item {
  color: #6B7280;
}

html[dir="rtl"] .pw-req-title {
  text-align: right;
}

/* ==========================================================================
   Google sign-in blocks (Google Identity Services) — RTL-safe
   ========================================================================== */

/* Blocks are `hidden` in the HTML until js/google-auth.js confirms the
   feature is active; display utilities must not defeat the attribute. */
[data-google-block][hidden],
.google-auth-block [hidden],
#googleCard[hidden],
#googleConnectSection[hidden],
#googleLinkedSection[hidden],
#googlePasswordField[hidden],
#googleReauthBlock[hidden] {
  display: none !important;
}

.google-auth-block {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}

.google-auth-compact {
  max-width: 480px;
  margin-inline: auto;
}

/* Skeleton height while GIS renders (GIS buttons are iframes). */
.google-auth-button-host {
  min-height: 44px;
  display: flex;
  justify-content: center;
}

.google-auth-button-host:empty {
  min-height: 44px;
}

.google-auth-caption {
  font-size: 12px;
  line-height: 1.6;
  color: #6B7280;
  text-align: center;
  margin: 0;
}

.dark .google-auth-caption {
  color: #9CA3AF;
}

.google-auth-note {
  font-size: 13px;
  line-height: 1.6;
  color: #6B7280;
  text-align: center;
  margin: 0;
}

.dark .google-auth-note {
  color: #9CA3AF;
}

.google-auth-privacy {
  font-size: 12px;
  line-height: 1.6;
  color: #6B7280;
  text-align: center;
  margin: 0;
}

.dark .google-auth-privacy {
  color: #9CA3AF;
}

/* "or continue with username and password" divider */
.auth-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  color: #9CA3AF;
  font-size: 12px;
  margin: 2px 0;
}

.auth-divider::before,
.auth-divider::after {
  content: '';
  flex: 1 1 0;
  height: 1px;
  background: var(--brand-border, #e5e7eb);
}

/* GIS could not load (blocked network): friendly note + retry */
.google-auth-fallback {
  font-size: 13px;
  line-height: 1.6;
  color: #b45309;
  text-align: center;
  margin: 0;
}

.google-auth-retry {
  background: none;
  border: 0;
  padding: 0;
  color: #2563eb;
  text-decoration: underline;
  cursor: pointer;
  font-size: 13px;
}

/* Inline panel after google_link_requires_password */
.google-link-panel {
  border: 1px solid var(--brand-border, #e5e7eb);
  border-radius: 10px;
  padding: 12px 14px;
  background: rgba(245, 158, 11, 0.06);
  font-size: 14px;
}

.google-link-panel-title {
  font-weight: 600;
  margin: 0 0 4px;
  color: #b45309;
}

.google-link-panel-body {
  margin: 0 0 8px;
  color: #6B7280;
  line-height: 1.6;
}

.google-link-panel-email {
  direction: ltr;
  unicode-bidi: embed;
}

/* Login-history method badge (Account page) */
.login-method-badge {
  display: inline-block;
  margin-inline-start: 8px;
  padding: 1px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  border: 1px solid var(--brand-border, #e5e7eb);
  vertical-align: middle;
}

.login-method-google {
  color: #2563eb;
  border-color: #bfdbfe;
  background: #eff6ff;
}

.login-method-password {
  color: #6B7280;
}

.dark .login-method-google {
  color: #93c5fd;
  border-color: rgba(37, 99, 235, 0.4);
  background: rgba(37, 99, 235, 0.15);
}

.dark .login-method-password {
  color: #9CA3AF;
}

html[dir="rtl"] .google-auth-caption,
html[dir="rtl"] .google-auth-note,
html[dir="rtl"] .google-auth-privacy,
html[dir="rtl"] .google-auth-fallback,
html[dir="rtl"] .google-link-panel-body {
  text-align: center;
  direction: rtl;
}

/* ============================================================
   Mobile site header (index / login / register-no-email /
   verify-email pattern). Keep ONE tidy row on phones:
   brand (truncating) + compact language selector + menu button.
   Account and auth actions are duplicated in the mobile menu,
   so the top bar can drop them instead of wrapping into a
   broken multi-row stack (fixes clipped Logout / nav links).
   ============================================================ */
@media (max-width: 767px) {
  header.flex.items-center.justify-between:not(.site-simple-header) > a {
    flex: 1 1 auto;
    min-width: 0;
  }

  header.flex.items-center.justify-between:not(.site-simple-header) > div.flex {
    flex-wrap: nowrap;
    min-width: 0;
  }

  header [data-brand-name] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* Top-bar account/auth controls are duplicated in the mobile menu */
  header #userHeader,
  header #authButtons,
  header div[role="tablist"],
  header a.btn-secondary[href="login.html"],
  header a.btn-primary[href="register-no-email.html"] {
    display: none !important;
  }

  /* Language selector may shrink on narrow phones (other header
     buttons stay fixed via the shared flex-shrink: 0 rule). */
  header select#languageSelector {
    min-width: 0;
    flex-shrink: 1;
  }

  /* Blog badge stays in the mobile menu on phones */
  header a[href="/blog/"] {
    display: none;
  }

  /* The desktop nav is hidden on phones; drop the (empty) container so
     its legacy <=900px width:100% rule cannot squeeze the controls. */
  header.flex.items-center.justify-between:not(.site-simple-header) nav {
    display: none;
  }
}

/* Very narrow phones: trim the selector's arrow gutter so the
   shrinking select keeps readable text instead of a blank box. */
@media (max-width: 380px) {
  header select#languageSelector {
    padding-right: 1.9rem;
    padding-left: 0.5rem;
  }
}

/* Long words (emails, usernames) must wrap inside headings
   instead of being clipped on phones (e.g. "Welcome back,
   admin@blendinvpn.com!" in the homepage hero). */
h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}

#heroWelcomeTitle {
  overflow-wrap: anywhere;
}

/* Translated FAQ answers can run longer than the default open
   height on phones; give the accordion room before clipping. */
@media (max-width: 640px) {
  .faq-item[data-open="true"] .faq-a {
    max-height: 560px;
  }
}

/* === accessibility.min.css === */
/**
 * Accessibility Styles for SecureVPN
 * WCAG 2.1 Level AA Compliant
 * Enhanced focus indicators, screen reader support, and improved contrast
 */
*:focus-visible{outline:3px solid #0a2540;outline-offset:2px;border-radius:4px;transition:outline .2s ease-in-out}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:3px solid #0a2540;outline-offset:2px;box-shadow:0 0 0 1px #0a2540,0 0 0 4px rgba(10,37,64,.3)}.dark *:focus-visible{outline-color:#00c4ff}.dark button:focus-visible,.dark input:focus-visible,.dark select:focus-visible,.dark textarea:focus-visible,.dark a:focus-visible{outline-color:#00c4ff;box-shadow:0 0 0 1px #00c4ff,0 0 0 4px rgba(0,196,255,.3)}.focus-visible{outline:3px solid #0a2540;outline-offset:2px;border-radius:4px}.dark .focus-visible{outline-color:#00c4ff}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only:focus{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal;background:rgba(255,255,255,.95);border:2px solid #0a2540;border-radius:4px;padding:8px 12px;box-shadow:0 4px 12px rgba(0,0,0,.3);z-index:9999}.dark .sr-only:focus{background:rgba(10,37,64,.95);border-color:#00c4ff;color:#fff}.skip-links{position:absolute;top:-40px;left:6px;z-index:1e4}.skip-links:focus-within{top:6px}.skip-link{position:absolute;top:-40px;left:6px;background:#0a2540;color:#fff;padding:8px 16px;text-decoration:none;border-radius:4px;font-weight:600;font-size:14px;z-index:1e4;transition:top .3s ease-in-out;box-shadow:0 2px 8px rgba(0,0,0,.3)}.skip-link:focus{top:6px;outline:3px solid #00c4ff;outline-offset:2px}.skip-link:hover{background:#1a365d}.skip-link:nth-child(2){top:-80px}.skip-link:nth-child(2):focus{top:46px}.skip-link:nth-child(3){top:-120px}.skip-link:nth-child(3):focus{top:86px}.dark .skip-link{background:#00c4ff;color:#0a2540}.dark .skip-link:hover{background:#67e8ff}@media (prefers-contrast:high){*:focus-visible{outline:3px solid currentColor;outline-offset:2px}button,input,select,textarea{border:2px solid currentColor}}@media (prefers-reduced-motion:reduce){*:focus-visible{transition:none}.skip-link{transition:none}[aria-live]{position:absolute;left:-1e4px;width:1px;height:1px;overflow:hidden}}.contrast-enhanced{color:#000}.dark .contrast-enhanced{color:#fff}a:not(.skip-link){text-decoration-thickness:2px;text-underline-offset:2px}a:not(.skip-link):focus-visible{text-decoration:underline;text-decoration-color:#0a2540}.dark a:not(.skip-link):focus-visible{text-decoration-color:#00c4ff}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:#0a2540;box-shadow:0 0 0 3px rgba(10,37,64,.1)}.dark input:focus-visible,.dark select:focus-visible,.dark textarea:focus-visible{border-color:#00c4ff;box-shadow:0 0 0 3px rgba(0,196,255,.1)}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:#dc2626;box-shadow:0 0 0 3px rgba(220,38,38,.1)}input[aria-invalid=true]:focus-visible,select[aria-invalid=true]:focus-visible,textarea[aria-invalid=true]:focus-visible{border-color:#dc2626;box-shadow:0 0 0 3px rgba(220,38,38,.2)}[aria-live]{position:absolute;left:-1e4px;width:1px;height:1px;overflow:hidden}.keyboard-user button,.keyboard-user input,.keyboard-user select,.keyboard-user textarea,.keyboard-user a{}.keyboard-user .focus-indicator{position:relative}.keyboard-user .focus-indicator::before{content:'';position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border:2px solid #0a2540;border-radius:6px;pointer-events:none;z-index:1}.dark .keyboard-user .focus-indicator::before{border-color:#00c4ff}@media (max-width:768px){button,.btn,a.btn,input[type=submit],input[type=button]{min-height:48px;min-width:48px}*:focus-visible{outline-width:4px;outline-offset:3px}}@media print{.skip-links,[aria-live],.sr-only{display:none}*:focus-visible{outline:none;box-shadow:none}}.visually-hidden{@extend .sr-only}.skip-to-content{@extend .skip-link}.focus-trap:focus-within{}.announce{position:absolute;left:-1e4px;width:1px;height:1px;overflow:hidden}.error-message{color:#dc2626;font-weight:600;font-size:14px;margin-top:4px}.dark .error-message{color:#fca5a5}.success-message{color:#16a34a;font-weight:600;font-size:14px;margin-top:4px}.dark .success-message{color:#86efac}.loading-indicator{display:inline-block;width:16px;height:16px;border:2px solid #e5e7eb;border-radius:50%;border-top-color:#0a2540;animation:spin 1s ease-in-out infinite}.dark .loading-indicator{border-color:rgba(255,255,255,.2);border-top-color:#00c4ff}@keyframes spin{to{transform:rotate(360deg)}}.accessibility-debug [aria-label]:after,.accessibility-debug [aria-labelledby]:after,.accessibility-debug [aria-describedby]:after{content:attr(aria-label) " [" attr(aria-labelledby) "] {" attr(aria-describedby) "}"display:inline-block;background:rgba(255,0,0,.1);border:1px solid red;padding:2px 4px;margin:0 4px;font-size:10px;color:red;border-radius:2px}.accessibility-debug *:focus-visible{position:relative;z-index:9999}.accessibility-debug *:focus-visible::after{content:counter(focus-order);counter-increment:focus-order;position:absolute;top:-20px;left:-20px;background:red;color:#fff;padding:2px 6px;border-radius:50%;font-size:12px;font-weight:700;z-index:1e4}.accessibility-debug{body{counter-reset:focus-order}}
