@font-face {
  font-family: "MontserratObf";
  src: url("/obf-montserrat.woff2") format("woff2");
  font-display: block;
  font-weight: normal;
  font-style: normal;
}

@font-face {
  font-family: "MontserratObf";
  src: url("/obf-montserrat-medium.woff2") format("woff2");
  font-display: block;
  font-weight: 500;
  font-style: normal;
}

@font-face {
  font-family: "MontserratObf";
  src: url("/obf-montserrat-semibold.woff2") format("woff2");
  font-display: block;
  font-weight: 600;
  font-style: normal;
}

@font-face {
  font-family: "MontserratObf";
  src: url("/obf-montserrat-bold.woff2") format("woff2");
  font-display: block;
  font-weight: 700;
  font-style: normal;
}

@font-face {
  font-family: "MontserratObf";
  src: url("/obf-montserrat-extrabold.woff2") format("woff2");
  font-display: block;
  font-weight: 800;
  font-style: normal;
}

:root {
  --ob-font-montserrat: "MontserratObf", sans-serif;
}

body.font-obfuscation-ready * {
  font-family: "MontserratObf", sans-serif !important;
  font-variant-ligatures: none !important;
  text-rendering: optimizeLegibility !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}

body.font-obfuscation-ready .tab-bar,
body.font-obfuscation-ready .tab-bar *,
body.font-obfuscation-ready .tabs-row,
body.font-obfuscation-ready .tabs-row * {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
  font-size: inherit;
  line-height: normal;
  letter-spacing: 0 !important;
}

body.font-obfuscation-ready .tab-bar {
  font-size: 12px !important;
}

body.font-obfuscation-ready .tab-bar .tab-title {
  font-weight: 500 !important;
}

body.font-obfuscation-ready .tab-bar .tab-bar-new-tab,
body.font-obfuscation-ready .tab-bar .new-tab {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
  font-size: 17px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
}

body.tab-layout-vertical.font-obfuscation-ready .tab-bar .tab-bar-new-tab,
body.tab-layout-vertical.font-obfuscation-ready .tab-bar .new-tab {
  font-size: 20px !important;
}

body.font-obfuscation-ready .rosin-shell-loading,
body.font-obfuscation-ready .rosin-shell-loading * {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
  letter-spacing: 0.08em !important;
}

body.font-obfuscation-ready .nav-btn,
body.font-obfuscation-ready .nav-btn * {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
}

body.font-obfuscation-ready svg,
body.font-obfuscation-ready [data-lucide],
body.font-obfuscation-ready .lucide,
body.font-obfuscation-ready .lucide-icon {
  font-family: inherit !important;
}

body.font-obfuscation-ready .tab-bar .tab-close,
body.font-obfuscation-ready .tab-bar .tab-favicon {
  flex-shrink: 0;
}

body.font-obfuscation-ready .tab-bar .tab-content {
  align-items: center;
  overflow: hidden;
}

body.font-obfuscation-ready .tab-bar .tab-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}

body.font-obfuscation-ready .tab-bar .tab-sidebar-toggle svg,
body.font-obfuscation-ready .tab-bar .tab-sidebar-toggle [data-lucide],
body.font-obfuscation-ready .nav-btn svg,
body.font-obfuscation-ready .nav-btn [data-lucide],
body.font-obfuscation-ready .rosin-socials-title svg,
body.font-obfuscation-ready .rosin-socials-title [data-lucide],
body.font-obfuscation-ready .rosin-transport-opt svg,
body.font-obfuscation-ready .rosin-transport-opt [data-lucide] {
  flex-shrink: 0 !important;
  font-family: inherit !important;
}

body.font-obfuscation-ready .rosin-socials-title span,
body.font-obfuscation-ready .rosin-socials-lead,
body.font-obfuscation-ready .rosin-transport-opt span,
body.font-obfuscation-ready .rosin-socials-close {
  font-family: "MontserratObf", sans-serif !important;
}

body.font-obfuscation-ready .rosin-socials-title span {
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
}

body.font-obfuscation-ready .rosin-socials-lead {
  font-weight: 500 !important;
  line-height: 1.45 !important;
}

body.font-obfuscation-ready .rosin-transport-opt {
  font-weight: 600 !important;
}

/* Onboarding: no stray page scrollbars while dialogs show */
html.font-obfuscation-ready.rosin-shell-onboarding-pending,
html.font-obfuscation-ready.rosin-shell-onboarding-pending body {
  height: 100%;
  overflow: hidden !important;
}

body.font-obfuscation-ready .rosin-shell-loading {
  overflow: hidden;
}

body.font-obfuscation-ready .rosin-socials-dlg {
  overflow-x: hidden;
  overflow-y: auto;
  max-height: min(calc(100vh - 32px), 560px);
  box-sizing: border-box;
  scrollbar-width: none;
}

body.font-obfuscation-ready .rosin-socials-dlg::-webkit-scrollbar {
  display: none;
}

body.font-obfuscation-ready .rosin-transport-actions,
body.font-obfuscation-ready .rosin-socials-list {
  overflow: hidden;
}

body.font-obfuscation-ready .rosin-transport-opt,
body.font-obfuscation-ready .rosin-socials-close,
body.font-obfuscation-ready .rosin-socials-link {
  min-width: 0;
  max-width: 100%;
}

body.font-obfuscation-ready .omnibar .search,
body.font-obfuscation-ready .omnibar-suggestion {
  font-family: "MontserratObf", sans-serif !important;
  font-weight: 500 !important;
}

body.font-obfuscation-ready .loom-logo,
body.font-obfuscation-ready .loom-logo-letter {
  font-family: "MontserratObf", "Montserrat", sans-serif !important;
  font-weight: 600 !important;
  letter-spacing: -0.04em !important;
  font-synthesis: none !important;
}

.ob-p,
body .ob-p,
html .ob-p,
.obfuscated,
body .obfuscated,
html .obfuscated,
.obfuscate,
body .obfuscate,
html .obfuscate {
  font-family: "MontserratObf", sans-serif !important;
  font-variant-ligatures: none !important;
  text-rendering: optimizeLegibility !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
  letter-spacing: 0 !important;
  word-spacing: normal !important;
}

.no-obfuscate,
[data-no-obfuscate],
code,
pre,
script,
style,
[data-lucide],
.lucide,
.lucide-icon,
svg[data-lucide],
svg {
  font-family: inherit !important;
}

input,
textarea,
select,
option {
}

input::placeholder,
textarea::placeholder {
  font-family: "MontserratObf", sans-serif !important;
  font-variant-ligatures: none !important;
}

.menu-text,
.ui-text,
[data-obfuscate] {
  font-family: "MontserratObf", sans-serif !important;
  font-variant-ligatures: none !important;
  text-rendering: optimizeLegibility !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}

.ob-p,
.obfuscated,
.obfuscate {
  line-height: inherit;
  font-feature-settings: normal !important;
}

body.font-obfuscation-ready .h-icon-box,
body.font-obfuscation-ready .bm-icon-box,
body.font-obfuscation-ready .icon-box {
  font-family: inherit !important;
  flex-shrink: 0;
}

body.font-obfuscation-ready .h-icon-box svg,
body.font-obfuscation-ready .bm-icon-box svg,
body.font-obfuscation-ready .icon-box svg,
body.font-obfuscation-ready .h-btn svg,
body.font-obfuscation-ready .h-search-icon,
body.font-obfuscation-ready .bm-search-icon,
body.font-obfuscation-ready .nav-btn [data-lucide],
body.font-obfuscation-ready .nav-btn svg {
  flex-shrink: 0 !important;
  font-family: inherit !important;
}

body.font-obfuscation-ready .h-title-block,
body.font-obfuscation-ready .bm-title-block {
  align-items: center;
}

body.font-obfuscation-ready .h-title-block > svg,
body.font-obfuscation-ready .h-title-block > [data-lucide],
body.font-obfuscation-ready .bm-title-block > svg,
body.font-obfuscation-ready .bm-title-block > [data-lucide] {
  flex-shrink: 0;
  margin-right: 0;
}

body.font-obfuscation-ready.view-g .g-search-icon,
body.font-obfuscation-ready.view-g .g-card-fav svg,
body.font-obfuscation-ready.view-g .g-card-cover-wrap svg {
  font-family: inherit !important;
  flex-shrink: 0;
}

body.font-obfuscation-ready.view-g .g-search-wrap {
  align-items: center;
}

body.font-obfuscation-ready.view-g .g-chip-row,
body.font-obfuscation-ready.view-g .g-toolbar-meta,
body.font-obfuscation-ready.view-g .g-card-meta,
body.font-obfuscation-ready.view-g .g-card-overlay {
  font-family: "MontserratObf", sans-serif !important;
}

body.font-obfuscation-ready .g-card-title,
body.font-obfuscation-ready .g-card-overlay-title,
body.font-obfuscation-ready .g-dialog-title,
body.font-obfuscation-ready strong,
body.font-obfuscation-ready b,
body.font-obfuscation-ready h1,
body.font-obfuscation-ready h2,
body.font-obfuscation-ready h3 {
  font-family: "MontserratObf", sans-serif !important;
}

body.font-obfuscation-ready.view-s h1,
body.font-obfuscation-ready.view-s h2,
body.font-obfuscation-ready.view-s h3,
body.font-obfuscation-ready #module-root.view-s h1,
body.font-obfuscation-ready #module-root.view-s h2,
body.font-obfuscation-ready #module-root.view-s h3 {
  font-family: "MontserratObf", sans-serif !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
}

body.font-obfuscation-ready.view-s .s-section-head p,
body.font-obfuscation-ready.view-s .s-card-head p,
body.font-obfuscation-ready.view-s .s-field-label,
body.font-obfuscation-ready.view-s .s-toggle-copy small,
body.font-obfuscation-ready.view-s .s-about-text,
body.font-obfuscation-ready #module-root.view-s .s-section-head p,
body.font-obfuscation-ready #module-root.view-s .s-card-head p,
body.font-obfuscation-ready #module-root.view-s .s-field-label,
body.font-obfuscation-ready #module-root.view-s .s-toggle-copy small,
body.font-obfuscation-ready #module-root.view-s .s-about-text {
  font-weight: 500 !important;
  line-height: 1.45 !important;
  color: rgba(255, 255, 255, 0.52) !important;
}

body.font-obfuscation-ready.view-s .s-toggle-copy strong,
body.font-obfuscation-ready.view-s .s-keybind-label,
body.font-obfuscation-ready #module-root.view-s .s-toggle-copy strong,
body.font-obfuscation-ready #module-root.view-s .s-keybind-label {
  font-weight: 600 !important;
  color: rgba(255, 255, 255, 0.92) !important;
}

body.font-obfuscation-ready.view-s .s-nav-item,
body.font-obfuscation-ready.view-s .s-input,
body.font-obfuscation-ready.view-s .s-select,
body.font-obfuscation-ready.view-s .s-btn,
body.font-obfuscation-ready.view-s .s-preset-btn,
body.font-obfuscation-ready.view-s .s-keybind-bind,
body.font-obfuscation-ready #module-root.view-s .s-nav-item,
body.font-obfuscation-ready #module-root.view-s .s-input,
body.font-obfuscation-ready #module-root.view-s .s-select,
body.font-obfuscation-ready #module-root.view-s .s-btn,
body.font-obfuscation-ready #module-root.view-s .s-preset-btn,
body.font-obfuscation-ready #module-root.view-s .s-keybind-bind {
  font-family: "MontserratObf", sans-serif !important;
  font-weight: 500 !important;
}

body.font-obfuscation-ready.view-s .s-nav-item svg,
body.font-obfuscation-ready.view-s .s-aside-toggle svg,
body.font-obfuscation-ready.view-s .switch,
body.font-obfuscation-ready.view-s .s-kbd,
body.font-obfuscation-ready #module-root.view-s .s-nav-item svg,
body.font-obfuscation-ready #module-root.view-s .s-aside-toggle svg,
body.font-obfuscation-ready #module-root.view-s .switch,
body.font-obfuscation-ready #module-root.view-s .s-kbd {
  font-family: inherit !important;
}

body.font-obfuscation-ready.view-s .s-main-inner,
body.font-obfuscation-ready #module-root.view-s .s-main-inner {
  font-family: "MontserratObf", sans-serif !important;
}

body.font-obfuscation-ready.view-s .switch,
body.font-obfuscation-ready #module-root.view-s .switch {
  flex-shrink: 0;
}

/* Bookmarks + Extensions: Montserrat body; obfuscate only .obfuscate labels */
body.font-obfuscation-ready .bm-wrap,
body.font-obfuscation-ready .ext-wrap,
body.font-obfuscation-ready .ext-dialog,
body.font-obfuscation-ready .bm-dialog,
body.font-obfuscation-ready #module-root .bm-wrap,
body.font-obfuscation-ready #module-root .ext-wrap,
body.font-obfuscation-ready #module-root .ext-dialog,
body.font-obfuscation-ready #module-root .bm-dialog {
  font-family: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}

body.font-obfuscation-ready .bm-wrap *:not(.obfuscate),
body.font-obfuscation-ready .ext-wrap *:not(.obfuscate),
body.font-obfuscation-ready .ext-dialog *:not(.obfuscate),
body.font-obfuscation-ready .bm-dialog *:not(.obfuscate),
body.font-obfuscation-ready #module-root .bm-wrap *:not(.obfuscate),
body.font-obfuscation-ready #module-root .ext-wrap *:not(.obfuscate),
body.font-obfuscation-ready #module-root .ext-dialog *:not(.obfuscate),
body.font-obfuscation-ready #module-root .bm-dialog *:not(.obfuscate) {
  font-family: inherit !important;
  font-variant-ligatures: normal !important;
  text-rendering: inherit !important;
}

/* History: fully obfuscated */
body.font-obfuscation-ready .h-wrap,
body.font-obfuscation-ready .h-wrap *:not(svg):not([data-lucide]):not(.lucide),
body.font-obfuscation-ready #module-root .h-wrap,
body.font-obfuscation-ready #module-root .h-wrap *:not(svg):not([data-lucide]):not(.lucide) {
  font-family: "MontserratObf", sans-serif !important;
  font-variant-ligatures: none !important;
  text-rendering: optimizeLegibility !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}

body.font-obfuscation-ready .h-header h1,
body.font-obfuscation-ready #module-root .h-header h1 {
  letter-spacing: -0.02em !important;
  font-weight: 700 !important;
}

body.font-obfuscation-ready .h-sub,
body.font-obfuscation-ready #module-root .h-sub {
  font-weight: 500 !important;
}

body.font-obfuscation-ready .h-btn,
body.font-obfuscation-ready #module-root .h-btn {
  font-weight: 600 !important;
}

body.font-obfuscation-ready .h-group-title,
body.font-obfuscation-ready #module-root .h-group-title {
  font-weight: 600 !important;
}

body.font-obfuscation-ready .h-row-title,
body.font-obfuscation-ready #module-root .h-row-title {
  font-weight: 600 !important;
  line-height: 1.35 !important;
}

body.font-obfuscation-ready .h-row-time,
body.font-obfuscation-ready #module-root .h-row-time {
  font-weight: 500 !important;
}

body.font-obfuscation-ready .bm-card-title,
body.font-obfuscation-ready .bm-group-title,
body.font-obfuscation-ready #module-root .bm-card-title,
body.font-obfuscation-ready #module-root .bm-group-title {
  font-weight: 400 !important;
  line-height: 1.35 !important;
}

body.font-obfuscation-ready .h-row-url,
body.font-obfuscation-ready .h-row-time,
body.font-obfuscation-ready .h-sub,
body.font-obfuscation-ready .bm-sub,
body.font-obfuscation-ready .bm-card-url,
body.font-obfuscation-ready .ext-wrap .sub,
body.font-obfuscation-ready #module-root .h-row-url,
body.font-obfuscation-ready #module-root .h-row-time,
body.font-obfuscation-ready #module-root .h-sub,
body.font-obfuscation-ready #module-root .bm-sub,
body.font-obfuscation-ready #module-root .bm-card-url,
body.font-obfuscation-ready #module-root .ext-wrap .sub {
  line-height: 1.4 !important;
}

body.font-obfuscation-ready .bm-header h1,
body.font-obfuscation-ready #module-root .bm-header h1 {
  letter-spacing: -0.02em !important;
}

body.font-obfuscation-ready .ext-wrap .card-code,
body.font-obfuscation-ready .ext-wrap .card-meta,
body.font-obfuscation-ready #module-root .ext-wrap .card-code,
body.font-obfuscation-ready #module-root .ext-wrap .card-meta {
  font-family: ui-monospace, "Cascadia Code", "Segoe UI Mono", monospace !important;
}

body.font-obfuscation-ready .bm-wrap .obfuscate,
body.font-obfuscation-ready .h-wrap .obfuscate,
body.font-obfuscation-ready .ext-wrap .obfuscate,
body.font-obfuscation-ready .ext-dialog .obfuscate,
body.font-obfuscation-ready .bm-dialog .obfuscate,
body.font-obfuscation-ready #module-root .bm-wrap .obfuscate,
body.font-obfuscation-ready #module-root .h-wrap .obfuscate,
body.font-obfuscation-ready #module-root .ext-wrap .obfuscate,
body.font-obfuscation-ready #module-root .ext-dialog .obfuscate,
body.font-obfuscation-ready #module-root .bm-dialog .obfuscate {
  font-family: "MontserratObf", sans-serif !important;
  text-rendering: optimizeLegibility !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}
