:root {
  color-scheme: dark;
  --background: #090909;
  --surface: #121212;
  --surface-hover: #191919;
  --border: #2a2a2a;
  --text: #f5f5f5;
  --muted: #9b9b9b;
  --red: #ef2b2d;
  --red-dark: #b91517;
  --accent-soft: #ff7474;
  --accent-rgb: 239, 43, 45;
  --accent-surface: #211719;
  --accent-border: #744244;
  --theme-hue: 0deg;
  --hero-grayscale: 0;
  --page-glow: rgba(239,43,45,.12);
  --header-bg: rgba(16,8,9,.94);
  --panel: #171011;
  --panel-raised: #211517;
  --field: #100a0b;
}

html[data-accent="blue"] { --background:#050b15; --surface:#0c1625; --surface-hover:#12233a; --border:#24364e; --red:#2f7df4; --red-dark:#1d56b4; --accent-soft:#75a9ff; --accent-rgb:47,125,244; --accent-surface:#101e33; --accent-border:#375d91; --theme-hue:225deg; --page-glow:rgba(47,125,244,.15); --header-bg:rgba(5,11,21,.94); --panel:#0b1728; --panel-raised:#102139; --field:#07111f; }
html[data-accent="green"] { --background:#04110b; --surface:#0a1c13; --surface-hover:#102b1e; --border:#214333; --red:#10a96b; --red-dark:#087548; --accent-soft:#59d59a; --accent-rgb:16,169,107; --accent-surface:#0d2519; --accent-border:#2f7455; --theme-hue:125deg; --page-glow:rgba(16,169,107,.15); --header-bg:rgba(4,17,11,.94); --panel:#0a1e14; --panel-raised:#0e2b1d; --field:#06150e; }
html[data-accent="gold"] { --background:#120d03; --surface:#1d1608; --surface-hover:#2a200c; --border:#4a3a18; --red:#d49a19; --red-dark:#956b0d; --accent-soft:#f2c354; --accent-rgb:212,154,25; --accent-surface:#271f0f; --accent-border:#846825; --theme-hue:42deg; --page-glow:rgba(212,154,25,.14); --header-bg:rgba(18,13,3,.94); --panel:#211806; --panel-raised:#2c220d; --field:#171003; }
html[data-accent="black"] { --background:#000; --surface:#0a0a0a; --surface-hover:#151515; --border:#343434; --red:#1b1b1b; --red-dark:#080808; --accent-soft:#d8d8d8; --accent-rgb:27,27,27; --accent-surface:#121212; --accent-border:#626262; --theme-hue:0deg; --hero-grayscale:1; --page-glow:rgba(255,255,255,.055); --header-bg:rgba(0,0,0,.96); --panel:#090909; --panel-raised:#151515; --field:#050505; }

* { box-sizing: border-box; }

html { scroll-behavior: smooth; scroll-padding-top: 90px; }

body {
  margin: 0;
  min-height: 100vh;
  background: radial-gradient(circle at 82% 8%, var(--page-glow), transparent 28rem), var(--background);
  color: var(--text);
  font-family: "Poppins", Arial, sans-serif;
  display: grid;
  grid-template-rows: auto 1fr auto;
}

html.site-is-loading,
html.site-is-loading body { overflow: hidden; }

.site-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 15px;
  padding: 24px;
  color: var(--text);
  background: var(--background);
  opacity: 1;
  visibility: visible;
  transition: opacity .42s ease, visibility .42s ease;
}

.site-loader.is-leaving { opacity: 0; visibility: hidden; pointer-events: none; }

.loader-spinner {
  width: 44px;
  height: 44px;
  border: 3px solid rgba(255,255,255,.14);
  border-top-color: var(--red);
  border-radius: 50%;
  animation: loader-spin .8s linear infinite;
}

.loader-label { color: var(--muted); font-size: .78rem; font-weight: 500; }

@keyframes loader-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .loader-spinner { animation-duration: 1.8s; }
}

button, a { font: inherit; }

:where(a, button, input, textarea, select, label) {
  -webkit-tap-highlight-color: transparent;
}

:where(a, button, input, textarea, select) {
  touch-action: pan-x pan-y;
}

html, body {
  touch-action: pan-x pan-y;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  backdrop-filter: blur(16px);
  min-height: 62px;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 24px;
  padding: 0 5vw;
  border-bottom: 1px solid var(--border);
  background: var(--header-bg);
}

.main-nav { display: flex; align-items: center; gap: 30px; }
.main-nav a { color: var(--muted); text-decoration: none; font-size: .94rem; }
.main-nav a:hover, .main-nav a.active { color: var(--text); }

.auth-actions { display: flex; justify-content: flex-end; gap: 9px; }
.auth-actions button, .auth-actions a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  min-height: 40px;
  border-radius: 9px;
  padding: 0 16px;
  cursor: pointer;
}
.login-button { color: var(--text); border: 1px solid var(--border); background: transparent; }
.signin-button { color: white; border: 1px solid var(--red); background: var(--red); font-weight: 700; }
.login-button:hover { border-color: #555; }
.signin-button:hover { background: var(--red-dark); border-color: var(--red-dark); }

main {
  width: 100%;
  margin: 0;
  padding: 0 0 64px;
  display: flex;
  flex-direction: column;
  gap: 28px;
}

.hero {
  position: relative;
  isolation: isolate;
  min-height: calc(100vh - 62px);
  overflow: hidden;
  border: 0;
  border-bottom: 1px solid #2a2a2a;
  border-radius: 0;
  padding: clamp(30px, 4vw, 54px);
  display: grid;
  place-items: center;
  text-align: center;
  background: #080808;
}

.hero::before,
.hero::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

.hero::before {
  z-index: -2;
  inset: -7%;
  background:
    linear-gradient(180deg, rgba(0,0,0,.04), rgba(0,0,0,.18)),
    url("hero-flow.png") center / cover no-repeat;
  transform: scale(1.06);
  animation: hero-flow 14s ease-in-out infinite alternate;
  filter: grayscale(var(--hero-grayscale)) hue-rotate(var(--theme-hue));
  will-change: transform, filter;
}

.hero::after {
  z-index: -1;
  inset: 0;
  background:
    radial-gradient(circle at 22% 45%, rgba(var(--accent-rgb),.14), transparent 34%),
    radial-gradient(circle at 78% 58%, rgba(var(--accent-rgb),.10), transparent 36%),
    linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.25));
  animation: hero-glow 9s ease-in-out infinite alternate;
}

@keyframes hero-flow {
  0% { transform: scale(1.06) translate3d(-1.5%, -1%, 0); filter: grayscale(var(--hero-grayscale)) hue-rotate(var(--theme-hue)) saturate(.9) brightness(.86); }
  50% { transform: scale(1.11) translate3d(1.3%, .6%, 0); filter: grayscale(var(--hero-grayscale)) hue-rotate(var(--theme-hue)) saturate(1.12) brightness(.98); }
  100% { transform: scale(1.08) translate3d(-.4%, 1.4%, 0); filter: grayscale(var(--hero-grayscale)) hue-rotate(var(--theme-hue)) saturate(1) brightness(.9); }
}

@keyframes hero-glow {
  from { opacity: .62; transform: scale(1); }
  to { opacity: 1; transform: scale(1.08); }
}

.hero-center {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 980px;
}

.hero-kicker {
  display: block;
  margin-bottom: 20px;
  color: rgba(255,255,255,.72);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.hero h1 {
  margin: 0;
  color: #f4f4f4;
  font-size: clamp(4rem, 10vw, 8.7rem);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -.045em;
  text-shadow: 0 8px 40px rgba(0,0,0,.55);
}

.hero h1 em { color: #fff; font-style: normal; font-weight: 500; }

.hero-description { max-width: 680px; margin: 24px auto 0; color: rgba(255,255,255,.78); font-size: 1rem; line-height: 1.7; text-align: center; text-shadow: 0 3px 18px rgba(0,0,0,.7); }

.hero-center a {
  margin-top: 26px;
  display: inline-flex;
  align-items: center;
  gap: 16px;
  min-height: 44px;
  padding: 0 8px 0 18px;
  border: 1px solid #343434;
  border-radius: 999px;
  color: #f4f4f4;
  text-decoration: none;
  font-size: .88rem;
  font-weight: 650;
  transition: border-color .2s ease, background .2s ease;
}

.hero-center a span {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: var(--red);
}

.hero-center a:hover { border-color: #777; background: rgba(15,15,15,.82); }

.tools-grid {
  width: min(1320px, 92vw);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.tool-card {
  text-decoration: none;
  color: var(--text);
  background-color: var(--surface);
  isolation: isolate;
  border: 1px solid var(--border);
  position: relative;
  overflow: hidden;
  border-radius: 5px;
  min-height: 72px;
  padding: 12px 18px;
  text-align: left;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  cursor: pointer;
  transition: border-color .22s ease, box-shadow .22s ease;
}

.tool-card:nth-child(1) {
  --tool-photo: url("https://freerangestock.com/sample/32368/close-up-of-buttons-on-a-calculator.jpg");
}

.tool-card:nth-child(2) {
  --tool-photo: url("https://www.publicdomainpictures.net/pictures/540000/velka/healthy-salad-16974637495sD.jpg");
}

.tool-card:nth-child(3) {
  --tool-photo: url("https://images.unsplash.com/photo-1654444290377-5cccc6b15717?auto=format&fit=crop&w=1200&q=75");
}

.tool-card:nth-child(4) {
  --tool-photo: url("https://images.unsplash.com/photo-1563509769909-174be967b5df?auto=format&fit=crop&w=1200&q=75");
}

.tool-card.qr-tool-card {
  --tool-photo: linear-gradient(135deg, var(--surface), var(--accent-surface));
  grid-template-columns: auto minmax(0, 1fr) 52px auto;
}
.tool-card.qr-tool-card::before {
  left: 45%;
  background-size: cover;
  background-position: center;
}
.qr-card-image {
  position: relative;
  z-index: 2;
  display: block;
  width: 52px;
  height: 52px;
  object-fit: contain;
  border-radius: 3px;
  background: #fff;
  box-shadow: 0 5px 16px rgba(0,0,0,.3);
}
.qr-tool-card .tool-copy,
.qr-tool-card .tool-symbol,
.qr-tool-card .arrow { position: relative; z-index: 2; }
.tool-card.converter-tool-card { --tool-photo: url("converter-card.svg"); }
.tool-card.lorem-tool-card { --tool-photo: url("lorem-card.svg"); }
.tool-card.url-tool-card { --tool-photo: url("url-card.svg"); }
.tool-card.shadow-tool-card { --tool-photo: url("shadow-card.svg"); }
.tool-card.messenger-tool-card { --tool-photo: url("messenger-card.svg"); }

.tool-card::before {
  content: "";
  position: absolute;
  inset: 0 0 0 28%;
  z-index: -2;
  background: var(--tool-photo) center / cover no-repeat;
  transition: transform .35s ease;
}

.tool-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, #121212 0%, rgba(18,18,18,.98) 35%, rgba(18,18,18,.82) 53%, rgba(18,18,18,.12) 80%, rgba(18,18,18,.08));
}

.tool-card:hover, .tool-card:focus-visible {
  border-color: var(--accent-border);
  box-shadow: inset 3px 0 var(--red);
}

.tool-card:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.tool-card:hover::before { transform: scale(1.06); }

.tool-card.selected { border-color: var(--accent-border); box-shadow: inset 3px 0 var(--red); }
.tool-symbol {
  position: relative;
  width: 24px;
  height: 28px;
  display: grid;
  place-items: center;
  color: var(--accent-soft);
  align-self: center;
  isolation: isolate;
}
.tool-symbol i { font-size: 1.15rem; }
.tool-copy { display: flex; flex-direction: column; gap: 2px; text-shadow: 0 1px 5px #000; }
.tool-copy strong { font-size: 1rem; font-weight: 500; letter-spacing: -.015em; }
.tool-copy small { color: #ddd; font-size: .875rem; line-height: 1.4; }
.arrow { color: #fff; font-size: .8rem; background: rgba(0,0,0,.6); padding: 9px; border-radius: 50%; transition: transform .22s ease; }
.tool-card:hover .arrow { transform: translateX(3px); }

.tool-card-soon {
  font: inherit;
  opacity: 1;
  cursor: default;
  border-style: dashed;
  border-color: color-mix(in srgb, var(--red) 45%, var(--border));
  background: color-mix(in srgb, var(--surface) 92%, var(--red));
}
.tool-card-soon::before {
  inset: 0;
  background:
    radial-gradient(circle at 82% 28%, color-mix(in srgb, var(--red) 35%, transparent) 0 7%, transparent 8%),
    linear-gradient(125deg, transparent 45%, color-mix(in srgb, var(--red) 16%, transparent));
}
.tool-card-soon::after { background: linear-gradient(90deg, var(--surface) 0%, color-mix(in srgb, var(--surface) 86%, transparent) 58%, transparent); }
.tool-card-soon:hover,
.tool-card-soon:focus-visible { border-color: color-mix(in srgb, var(--red) 45%, var(--border)); box-shadow: none; }
.tool-card-soon:hover::before { transform: none; }
.soon-badge {
  color: var(--accent-soft);
  border: 1px solid color-mix(in srgb, var(--red) 50%, var(--border));
  background: color-mix(in srgb, var(--red) 15%, transparent);
  border-radius: 999px;
  padding: 5px 10px;
  font-size: .72rem;
  font-weight: 600;
}

footer {
  min-height: 68px;
  border-top: 1px solid var(--border);
  padding: 0 5vw;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  color: #777;
  font-size: .82rem;
}

@media (max-width: 760px) {
  .site-header { grid-template-columns: 1fr auto; padding: 14px 5vw; }
  .main-nav { gap: 18px; }
  .auth-actions button, .auth-actions a { padding: 0 12px; }
  main { padding: 0 0 40px; }
  .tools-grid { grid-template-columns: 1fr; }
  .tool-card { min-height: 72px; }
  .hero { min-height: calc(100vh - 68px); }
  footer { padding-block: 20px; flex-direction: column; align-items: flex-start; }
}

@media (max-width: 470px) {
  .auth-actions { gap: 6px; }
  .auth-actions button, .auth-actions a { min-height: 36px; padding: 0 9px; font-size: .82rem; }
  .tools-grid { grid-template-columns: 1fr; }
  .tool-card { min-height: 72px; padding: 10px 12px; gap: 10px; }
  .hero { min-height: calc(100vh - 64px); }
  .hero h1 { font-size: clamp(2.5rem, 11vw, 4rem); }
  .main-nav { gap:12px; }
  .tool-card.qr-tool-card { grid-template-columns: auto minmax(0, 1fr) 46px auto; }
  .qr-card-image { width: 46px; height: 46px; }
}

@media (hover: none) {
  .main-nav a:not(.active):hover { color: var(--muted); }
  .login-button:hover { border-color: var(--border); }
  .signin-button:hover { background: var(--red); border-color: var(--red); }
  .hero-center a:hover { border-color: #343434; background: transparent; }
  .tool-card:hover { border-color: var(--border); box-shadow: none; }
  .tool-card.selected { border-color: var(--accent-border); box-shadow: inset 3px 0 var(--red); }
  .tool-card:hover::before { transform: none; }
  .tool-card:hover .arrow { transform: none; }
  :where(a, button):active { opacity: .82; }
}

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
:root .extra-card { text-decoration: none; }
.tool-card:nth-child(5) { --tool-photo: url("https://images.squarespace-cdn.com/content/v1/52449106e4b098f57c7a9472/1753309914414-DG92H99AQ7K5Z8XWUSBQ/unsplash-image-FQ7cRFUU1y0.jpg"); }
.tool-card:nth-child(6) { --tool-photo: url("https://images.unsplash.com/photo-1707758967860-19106a5e9ab7?auto=format&fit=crop&w=1200&q=78"); }
.tool-card:nth-child(7) { --tool-photo: url("https://framerusercontent.com/images/jtEO4l6iUSjVFjGuDvcfkgCtCMM.jpg?height=900&width=1200"); }
.tool-card:nth-child(8) { --tool-photo: url("https://images.unsplash.com/photo-1573310128680-d1579b98b4f1?auto=format&fit=crop&w=1200&q=78"); }
.tool-card:nth-child(9) { --tool-photo: url("https://static.polza.ru/medialibrary/b97/b9705d377eeb6fb294841c5d35f5ecf3/e18b1945af89de72a2125d540770033d.png"); }
.tool-card:nth-child(10) { --tool-photo: url("https://static.wixstatic.com/media/be69a7_c9bad4b3b8974c08909d19aae3c0cc95~mv2.jpg/v1/fill/w_1200,h_700,al_c,q_85/be69a7_c9bad4b3b8974c08909d19aae3c0cc95~mv2.jpg"); }
:root .extra-card:nth-child(even)::before { background-position: right center; }
:root .extra-card:nth-child(3n)::before { background-position: left bottom; }
.profile-button { color: #fff; border: 0; background: transparent; gap: 11px; max-width: 250px; padding: 0 4px!important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-weight:600; }
.profile-button > span { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; flex-shrink: 0; background: var(--red); color: #fff; font-size: .76rem; font-weight: 700; box-shadow:0 0 0 3px color-mix(in srgb,var(--red) 18%,transparent); }
.profile-button > span img { width: 100%; height: 100%; display: block; object-fit: cover; border-radius: inherit; }
.profile-button:hover, .profile-button.active { color:var(--accent-soft); background:transparent; }
.global-flash { position: fixed; z-index: 200; left: 50%; top: 76px; width: min(92vw, 560px); transform: translateX(-50%); padding: 13px 16px; border: 1px solid var(--accent-border); border-radius: 7px; background: var(--panel-raised); color: var(--text); box-shadow: 0 14px 40px #0009; font-size: .85rem; opacity:1; transition:opacity .24s ease,transform .24s ease; }
.global-flash.is-leaving { opacity:0; transform:translate(-50%,-8px); pointer-events:none; }
.global-flash.success { border-color: #315b46; background: #12231a; color: #c9edd9; }
.tool-card::after { background:linear-gradient(90deg,var(--surface) 0%,color-mix(in srgb,var(--surface) 98%,transparent) 35%,color-mix(in srgb,var(--surface) 82%,transparent) 53%,color-mix(in srgb,var(--surface) 12%,transparent) 80%,transparent); }
