:root { --tap-size: 140px; --widget-width: 380px; } .main-wrap { gap: 0; } .main-hero { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--section-gap); flex: 1; min-height: min(60vh, 400px); } .main-center, .banner-slot { width: 100%; max-width: var(--widget-width); box-sizing: border-box; } .main-center { display: flex; flex-direction: column; align-items: center; gap: var(--section-gap); } .banner-slot { display: flex; justify-content: center; } .container { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow); padding: 28px 32px; width: 100%; max-width: var(--widget-width); text-align: center; } .container h1 { margin: 0 0 14px; font-size: 1.375rem; font-weight: 600; letter-spacing: -0.02em; } .subtitle { color: var(--text-muted); margin: 0 0 20px; font-size: 0.875rem; } .tt { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; margin-left: 4px; border-radius: 50%; background: rgba(255, 255, 255, 0.12); color: var(--text-muted); font-size: 10px; font-weight: 600; cursor: help; vertical-align: middle; } .bpm-label .tt { margin-left: 6px; } .controls-row { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 12px; } .controls-row.controls-unit { margin-bottom: 14px; } .controls-row.controls-label { margin-bottom: 20px; } .ctrl-btn { background: rgba(255, 255, 255, 0.06); border: 1px solid var(--border); color: var(--text-muted); padding: 8px 14px; border-radius: 8px; font-size: 12px; font-weight: 500; cursor: pointer; transition: border-color 0.2s, color 0.2s, background 0.2s; } .ctrl-btn:hover { border-color: rgba(255, 255, 255, 0.15); color: var(--text); } .ctrl-btn.active, .ctrl-btn[aria-pressed="true"] { border-color: var(--primary); color: var(--primary); background: var(--primary-dim); } .bpm-row { margin: 8px 0 4px; } .bpm-display-wrap { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; } .bpm-display-wrap .bpm-display { margin: 0; cursor: pointer; } .bpm-display-wrap .bpm-display:focus { outline: none; } .bpm-display-wrap .bpm-display:focus-visible { outline: 2px solid var(--primary); outline-offset: 4px; border-radius: 6px; } .btn-copy { background: transparent; border: 1px solid var(--border); color: var(--text-muted); padding: 6px 14px; border-radius: 8px; font-size: 12px; font-weight: 500; cursor: pointer; transition: border-color 0.2s, color 0.2s, background 0.2s; } .btn-copy:hover { border-color: var(--primary); color: var(--primary); background: var(--primary-dim); } .btn-copy.copied { border-color: var(--primary); color: var(--primary); } .actions-row { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; } .btn-metro { background: var(--primary-dim); border: 1px solid var(--primary); color: var(--primary); padding: 10px 20px; border-radius: 999px; font-size: 13px; font-weight: 500; cursor: pointer; transition: opacity 0.2s, transform 0.1s; } .btn-metro:hover { opacity: 0.9; } .btn-metro:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; } .btn-metro.playing { animation: pulse-metro 1s ease-in-out infinite; } @keyframes pulse-metro { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } .tap-area { width: var(--tap-size); height: var(--tap-size); margin: 0 auto 20px; border-radius: 50%; border: 2px solid var(--border); background: rgba(255, 255, 255, 0.03); display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; transition: transform 0.12s ease, border-color 0.2s, box-shadow 0.2s; user-select: none; -webkit-tap-highlight-color: transparent; } .tap-area:hover { border-color: rgba(255, 255, 255, 0.12); } .tap-area:active, .tap-area.active { transform: scale(0.95); border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-dim); } .tap-text { font-size: 0.9375rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.12em; color: var(--text-muted); } .tap-sub { font-size: 0.75rem; color: var(--text-muted); opacity: 0.8; margin-top: 2px; } .bpm-display { font-size: 2.875rem; font-weight: 700; color: var(--primary); margin: 10px 0 6px; min-height: 56px; display: flex; align-items: center; justify-content: center; gap: 2px; letter-spacing: -0.03em; } .bpm-display.locked { opacity: 1; } .bpm-lock-badge { font-size: 0.4em; font-weight: 500; color: var(--text-muted); } .bpm-label { color: var(--text-muted); margin: 0 0 18px; font-size: 0.75rem; letter-spacing: 0.15em; text-transform: uppercase; } .btn-reset { background: transparent; border: 1px solid var(--border); color: var(--text-muted); padding: 10px 24px; border-radius: 999px; font-size: 13px; font-weight: 500; letter-spacing: 0.05em; cursor: pointer; transition: border-color 0.2s, color 0.2s, background 0.2s; min-height: 44px; } .btn-reset:hover { border-color: rgba(255, 255, 255, 0.2); color: var(--text); background: rgba(255, 255, 255, 0.04); } .btn-reset:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; } .ad-banner { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 6px; padding: 16px 36px 14px 16px; width: 100%; max-width: 100%; box-sizing: border-box; border-radius: var(--radius); border: 1px solid rgba(255, 255, 255, 0.1); color: #fff; text-decoration: none; transition: transform 0.2s ease, box-shadow 0.2s; } .ad-banner:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); } .ad-telegram { position: absolute; top: 10px; right: 10px; opacity: 0.85; } .ad-telegram svg { display: block; } .ad-banner-inner { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; gap: 4px; } .ad-title { font-weight: 600; font-size: 0.9375rem; display: block; margin: 0; text-align: center; width: 100%; } .ad-desc { font-size: 0.75rem; opacity: 0.9; margin: 0; text-align: center; width: 100%; } .ad-arrow { font-size: 1.2rem; font-weight: 600; opacity: 0.9; margin-top: 2px; } .content-bottom { width: 100%; max-width: 640px; padding: var(--section-gap) 16px var(--section-gap); margin-top: var(--section-gap); } .content-body p { font-size: 0.875rem; line-height: 1.6; color: var(--text-muted); margin: 0 0 12px; } .content-body p:last-child { margin-bottom: 0; } .faq-list { display: flex; flex-direction: column; gap: 0; } .faq-item { border: none; border-bottom: 1px solid rgba(255, 255, 255, 0.06); border-radius: 0; background: transparent; } .faq-item:first-of-type { border-radius: 0; } .faq-item:last-of-type { border-bottom: none; border-radius: 0; } .faq-item summary { font-size: 0.875rem; font-weight: 500; color: var(--text); padding: 14px 16px; cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; } .faq-item summary::-webkit-details-marker { display: none; } .faq-item summary::after { content: "+"; font-size: 1.1rem; font-weight: 400; color: var(--text-muted); flex-shrink: 0; } .faq-item[open] summary::after { content: "−"; } .faq-answer { padding: 0 16px 14px; } .faq-answer p { font-size: 0.8125rem; line-height: 1.6; color: var(--text-muted); margin: 0; } @media (max-width: 768px) { :root { --section-gap: 20px; } .content-bottom { padding: var(--section-gap) 14px var(--section-gap); } .tap-text { font-size: 0.875rem; } .tap-sub { font-size: 0.6875rem; } } @media (max-width: 480px) { :root { --header-h: 52px; --tap-size: 126px; --widget-width: 100%; --section-gap: 18px; } .container { padding: 22px 24px; } .bpm-display { font-size: 2.5rem; min-height: 52px; } .controls-row { flex-wrap: wrap; } .tap-text { font-size: 0.8125rem; } .tap-sub { font-size: 0.625rem; } .content-bottom { padding: var(--section-gap) 12px var(--section-gap); } } @media (min-width: 600px) { .main-wrap { padding: 32px 24px; } .main-hero { gap: var(--section-gap); } .container { padding: 30px 36px; } }