/* Milodia - сторінка стікерів. Токени як на основному сайті (milodia-styles.css), сторінка самодостатня. */
/* Свои шрифты (04.11.2026): woff2 лежат на основном сайте (/fonts/), а не на Google; файлы - static/fonts, правила - bin/fonts_subset.py */
@font-face{font-family:'Onest';font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/onest.591690b4.woff2) format('woff2');unicode-range:U+20-7E, U+A0-A3, U+A5, U+A7-AB, U+AE-B4, U+B6-17F, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+301, U+401-40C, U+40E-44F, U+451-45C, U+45E-45F, U+490-491, U+2013-2014, U+2018-201A, U+201C-201E, U+2022, U+2026, U+2030, U+2039-203A, U+20AC, U+20B4, U+2116, U+2122, U+2190-2193, U+2212, U+2248, U+2264-2265}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600 800;font-display:swap;src:url(/fonts/montserrat.48bc8512.woff2) format('woff2');unicode-range:U+20-7E, U+A0-AC, U+AE-17F, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+301, U+400-45F, U+490-491, U+2010, U+2012-2015, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+20AC, U+20B4, U+2116, U+2122, U+2190-2193, U+2212, U+2248, U+2264-2265}

/* Запасные шрифты под веб-шрифты (03.11.2026). Пока Google Fonts грузится, текст стоит
   запасным шрифтом (Arial на iOS/Mac/Windows, Roboto на Android), подогнанным по ширине
   и высоте строки к настоящему: слова переносятся так же, и страница не прыгает, когда
   шрифт приезжает (CLS первого экрана). size-adjust = средняя ширина настоящего шрифта /
   запасного на реальных текстах первого экрана (uk/ru/en); ascent/descent = метрики
   настоящего шрифта. Если local() не нашёлся, шрифт просто пропускается - как было раньше. */
@font-face{font-family:"Onest Arial";font-weight:400;src:local("Arial"), local("ArialMT");
  size-adjust:102.5%;ascent-override:94.6%;descent-override:29.8%;line-gap-override:0%}
@font-face{font-family:"Onest Roboto";font-weight:400;src:local("Roboto"), local("Roboto-Regular");
  size-adjust:102.2%;ascent-override:94.9%;descent-override:29.8%;line-gap-override:0%}
@font-face{font-family:"Onest Arial";font-weight:500;src:local("Arial"), local("ArialMT");
  size-adjust:104.3%;ascent-override:93%;descent-override:29.2%;line-gap-override:0%}
@font-face{font-family:"Onest Roboto";font-weight:500;src:local("Roboto"), local("Roboto-Regular");
  size-adjust:103.5%;ascent-override:93.7%;descent-override:29.5%;line-gap-override:0%}
@font-face{font-family:"Onest Arial";font-weight:600;src:local("Arial Bold"), local("Arial-BoldMT");
  size-adjust:99.5%;ascent-override:97.5%;descent-override:30.7%;line-gap-override:0%}
@font-face{font-family:"Onest Roboto";font-weight:600;src:local("Roboto Bold"), local("Roboto-Bold");
  size-adjust:103.9%;ascent-override:93.4%;descent-override:29.4%;line-gap-override:0%}
@font-face{font-family:"Montserrat Arial";font-weight:700;src:local("Arial Bold"), local("Arial-BoldMT");
  size-adjust:109.6%;ascent-override:88.3%;descent-override:22.9%;line-gap-override:0%}
@font-face{font-family:"Montserrat Roboto";font-weight:700;src:local("Roboto Bold"), local("Roboto-Bold");
  size-adjust:114.3%;ascent-override:84.7%;descent-override:22%;line-gap-override:0%}
@font-face{font-family:"Montserrat Arial";font-weight:800;src:local("Arial Bold"), local("Arial-BoldMT");
  size-adjust:111.0%;ascent-override:87.2%;descent-override:22.6%;line-gap-override:0%}
@font-face{font-family:"Montserrat Roboto";font-weight:800;src:local("Roboto Bold"), local("Roboto-Bold");
  size-adjust:114.5%;ascent-override:84.5%;descent-override:21.9%;line-gap-override:0%}
:root{
  color-scheme:light;
  --bg:#F9FBFE;--surface:#FFFFFF;--ink:#0E1A33;--ink-soft:#545D6B;--rule:#DCE6F1;
  --accent:#1E3A6E;--accent-hover:#142B55;--on-accent:#FFFFFF;--tint:#DFF1FF;
  --band:#0B1733;--on-band:#EEF4FB;--on-band-soft:#A9B9D0;--gold:#E9C77E;--gold-hover:#F4DCA3;
  --pink:#B8336A;--ok:#1F7A4D;--err:#B42318;
  --shadow:0 1px 2px rgba(15,28,58,.05),0 12px 32px -12px rgba(15,28,58,.18);
  --display:"Montserrat","Montserrat Arial","Montserrat Roboto","Helvetica Neue",Arial,sans-serif;
  --body:"Onest","Onest Arial","Onest Roboto","Helvetica Neue",-apple-system,BlinkMacSystemFont,Arial,sans-serif;
  --wrap:1080px;--gutter:clamp(16px,5vw,40px);--r:16px;
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
[id]{scroll-margin-top:76px}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.6 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
.wrap{max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}
.band{padding-block:clamp(56px,8vw,96px)}
.band--tint{background:var(--tint)}
.band--dark{background:var(--band);color:var(--on-band)}
h1,h2,h3{font-family:var(--display);font-weight:800;letter-spacing:-.02em;text-wrap:balance;margin:0;line-height:1.12}
h1{font-size:clamp(34px,5.4vw,56px)}
h2{font-size:clamp(28px,3.8vw,40px)}
h3{font-size:19px}
.hl{color:var(--pink)}
.lede{font-size:clamp(17px,1.9vw,19px);color:var(--ink-soft);max-width:38.6em /* 58ch Onest; в em, чтобы не зависело от запасного шрифта */;margin:14px 0 0}
.band--dark .lede{color:var(--on-band-soft)}
.section-head{text-align:center;margin-bottom:clamp(28px,4vw,44px)}
.section-head .lede{margin-inline:auto}

/* кнопки */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 26px;border-radius:999px;border:2px solid transparent;font:600 16px/1 var(--body);text-decoration:none;cursor:pointer;transition:background .15s,transform .15s}
.btn:active{transform:scale(.98)}
.btn--primary{background:var(--accent);color:var(--on-accent)}
.btn--primary:hover{background:var(--accent-hover)}
.btn--ghost{background:transparent;border-color:var(--accent);color:var(--accent)}
.btn--ghost:hover{background:var(--tint)}
.btn--gold{background:var(--gold);color:var(--band)}
.btn--gold:hover{background:var(--gold-hover)}
.btn--sm{min-height:42px;padding:0 18px;font-size:15px}
.btn--big{width:100%;min-height:58px;font-size:18px}
.btn[disabled]{opacity:.6;cursor:wait}

/* шапка */
.hdr{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--rule)}
.hdr__in{display:flex;align-items:center;gap:24px;min-height:64px}
.logo img{height:34px;width:auto}
.hdr__nav{display:flex;gap:22px;margin-left:auto;font-size:15px;font-weight:500}
.hdr__nav a{text-decoration:none;color:var(--ink-soft)}
.hdr__nav a:hover{color:var(--ink)}
@media (max-width:760px){.hdr__nav{display:none}.hdr__in .btn{margin-left:auto}}

/* герой: заголовок → анімація «фото → стікер → чат» → текст → кнопка (варіант A + вставка 1, 22.10) */
.hero{max-width:720px;text-align:center;padding-block:clamp(24px,5vw,56px)}
.hero .lede{margin-inline:auto}
.promo-pill{display:inline-block;margin-bottom:14px;padding:7px 14px;border-radius:999px;background:#FDE7F0;color:var(--pink);font-size:14px;font-weight:600}
.hero__btns{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:22px}
.btn--cta{flex-direction:column;gap:2px;font-size:17px}
.hero__btns .btn{min-height:58px}
.btn--cta small{font-weight:400;font-size:13px;opacity:.8}
.ticks{list-style:none;padding:0;margin:20px 0 0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px 20px;font-size:15px;color:var(--ink-soft)}
.ticks li::before{content:"✓";color:var(--ok);font-weight:700;margin-right:6px}
@media (max-width:420px){.hero__btns .btn{width:100%}}

.scene{position:relative;height:250px;margin:18px auto 0;max-width:560px;border-radius:24px;background:linear-gradient(160deg,#E6F2FF,#FBEFF5);overflow:hidden}
.scene__box{position:absolute;left:50%;top:0;width:340px;height:250px;margin-left:-170px;transform-origin:50% 0}
@media (min-width:600px){.scene{height:320px}.scene__box{transform:scale(1.28)}}
.sc__photo{position:absolute;left:22px;top:30px;width:132px;height:160px;background:#fff;padding:8px 8px 26px;border-radius:6px;box-shadow:0 10px 24px -10px rgba(14,26,51,.35);animation:scPhoto 7s infinite}
.sc__photo i{display:block;height:100%;border-radius:3px;background:linear-gradient(165deg,#EEF6FF,#FCEFF5);overflow:hidden}
.sc__photo svg{display:block;width:100%;height:100%}
.sc__photo b{position:absolute;left:0;right:0;bottom:5px;font:600 11px var(--body);color:var(--ink-soft);text-align:center}
.sc__scan{position:absolute;left:8px;right:8px;top:8px;height:3px;background:linear-gradient(90deg,transparent,#fff,transparent);box-shadow:0 0 14px 4px rgba(255,255,255,.9);opacity:0;animation:scScan 7s infinite}
.sc__spark{position:absolute;left:88px;top:100px;font-size:26px;opacity:0;animation:scSpark 7s infinite}
.sc__stk{position:absolute;left:30px;top:40px;width:122px;opacity:0;animation:scStk 7s infinite}
.sc__chat{position:absolute;right:12px;top:22px;width:150px;padding:10px;border-radius:16px;background:#fff;box-shadow:0 8px 20px -12px rgba(14,26,51,.4);font-size:12px;text-align:left;line-height:1.35}
.sc__who{font-weight:600;margin-bottom:6px}
.sc__bub{display:inline-block;background:#EEF3F9;border-radius:12px 12px 12px 4px;padding:5px 9px;margin:2px 0}
.sc__got{width:84px;margin:4px 0 0 auto;opacity:0;animation:scGot 7s infinite}
.sc__re{opacity:0;animation:scRe 7s infinite}
@keyframes scPhoto{0%{transform:translateY(40px) rotate(-6deg);opacity:0}8%,40%{transform:rotate(-6deg);opacity:1}52%,100%{transform:scale(.6) rotate(-6deg);opacity:0}}
@keyframes scScan{0%,10%{top:8px;opacity:0}12%{opacity:1}40%{top:150px;opacity:1}44%,100%{opacity:0}}
@keyframes scSpark{0%,44%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.2)}58%,100%{opacity:0;transform:scale(1.6)}}
@keyframes scStk{0%,46%{opacity:0;transform:scale(.4)}54%{opacity:1;transform:scale(1.08)}58%,66%{opacity:1;transform:scale(1)}78%,100%{opacity:0;transform:translate(150px,-6px) scale(.55)}}
@keyframes scGot{0%,76%{opacity:0;transform:scale(.5)}82%,96%{opacity:1;transform:scale(1)}100%{opacity:0}}
@keyframes scRe{0%,86%{opacity:0;transform:translateY(6px)}90%,96%{opacity:1;transform:none}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.sc__photo,.sc__scan,.sc__spark{display:none}.sc__stk,.sc__got,.sc__re{opacity:1;animation:none}}

/* приклади */
.tabs{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-bottom:26px}
.tab{min-height:44px;padding:0 18px;border-radius:999px;border:1.5px solid var(--rule);background:#fff;font:600 15px var(--body);color:var(--ink-soft);cursor:pointer}
.tab.is-on{background:var(--accent);border-color:var(--accent);color:#fff}
.grid-stk{display:grid;grid-template-columns:repeat(6,1fr);gap:clamp(6px,1.4vw,14px)}
.grid-stk img{width:100%;aspect-ratio:1;object-fit:contain;transition:transform .2s}
.grid-stk img:hover{transform:scale(1.08) rotate(-2deg)}
@media (max-width:760px){.grid-stk{grid-template-columns:repeat(4,1fr)}}
@media (max-width:420px){.grid-stk{grid-template-columns:repeat(3,1fr)}}
.note{text-align:center;color:var(--ink-soft);font-size:15px;margin:22px auto 0;max-width:60ch}

/* кроки */
.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.steps li{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:26px 24px}
.steps p{margin:8px 0 0;color:var(--ink-soft);font-size:16px}
.steps__n{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--tint);color:var(--accent);font:800 18px var(--display);margin-bottom:14px}
@media (max-width:760px){.steps{grid-template-columns:1fr}}

/* встановлення */
.install{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(28px,5vw,64px);align-items:center}
.install__steps{margin:24px 0 0;padding-left:22px;display:grid;gap:10px;font-size:17px}
.install__steps b{color:#fff}
.safe{margin:22px 0 0;padding:14px 16px;border-radius:12px;background:rgba(255,255,255,.07);color:var(--on-band-soft);font-size:15px}
.phone{justify-self:center;width:min(300px,100%);padding:12px;border-radius:34px;background:#1d2a47;box-shadow:0 20px 50px -20px #000}
.phone__sheet{background:#fff;border-radius:24px;padding:16px;color:var(--ink)}
.phone__title{font:700 15px var(--body);text-align:center;margin-bottom:10px}
.phone__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.phone__btn{margin-top:12px;padding:12px;border-radius:12px;background:#3390EC;color:#fff;text-align:center;font-weight:600;font-size:15px}
@media (max-width:760px){.install{grid-template-columns:1fr}}

/* ціни */
.promo{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:4px 10px;margin-top:16px;padding:10px 18px;border-radius:12px;background:#FDE7F0;color:#7A1F45;font-size:15px}
.promo__left{font-weight:600}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:stretch}
.plan{position:relative;display:flex;flex-direction:column;background:var(--surface);border:2px solid var(--rule);border-radius:20px;padding:28px 24px 24px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.plan input{position:absolute;opacity:0;pointer-events:none}
.plan:hover{border-color:#b9cbe2}
.plan:has(input:checked){border-color:var(--accent);box-shadow:var(--shadow)}
.plan--hit{background:linear-gradient(180deg,#F2F8FF,#fff)}
.plan__badge{position:absolute;top:-13px;left:50%;translate:-50% 0;white-space:nowrap;padding:4px 12px;border-radius:999px;background:var(--pink);color:#fff;font-size:13px;font-weight:600}
.plan__name{font:800 22px var(--display)}
.plan__qty{color:var(--ink-soft);font-size:15px}
/* 28.10: подарунок - у рядку з кількістю, стара ціна - поруч із новою (картка коротша) */
.plan__qty b{color:var(--pink);font-weight:600;white-space:nowrap}
.plan__price{display:flex;align-items:baseline;gap:10px;margin-top:12px;font-family:var(--display)}
.plan__price b{font-size:36px;font-weight:800;line-height:1.05}
.plan__price s{font-size:16px;font-weight:500;color:#8A93A3;text-decoration-thickness:1px}
.plan__per{color:var(--ok);font-size:14px;font-weight:600}
.plan ul{list-style:none;padding:0;margin:16px 0 22px;display:grid;gap:8px;font-size:15px;color:var(--ink-soft);flex:1}
.plan li::before{content:"✓";color:var(--ok);font-weight:700;margin-right:8px}
.plan__btn{width:100%}
/* 28.10: на телефоні порядок як на комп'ютері - 12, 24, 54, «Родина» посередині */
@media (max-width:860px){.plans{grid-template-columns:1fr;gap:26px;max-width:440px;margin:0 auto}.plan{padding:24px 20px 20px}.plan ul{margin:14px 0 18px}}

/* форма */
.order{max-width:640px;margin:0 auto;background:var(--surface);border-radius:24px;padding:clamp(20px,4vw,36px);box-shadow:var(--shadow);display:grid;gap:22px}
.hp{position:absolute;left:-9999px}
.field{display:grid;gap:8px;min-width:0}
.field__l{font-weight:600;font-size:16px}
.field__l small{font-weight:400;color:var(--ink-soft);font-size:14px;margin-left:4px}
input[type=text],textarea{width:100%;font:16px/1.4 var(--body);color:var(--ink);padding:13px 14px;border:1.5px solid var(--rule);border-radius:12px;background:#fff}
input[type=text]:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(30,58,110,.12)}
textarea{resize:vertical;min-height:96px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:560px){.row2{grid-template-columns:1fr}}
.drop{display:grid;justify-items:center;gap:2px;padding:26px 16px;border:2px dashed #b9cbe2;border-radius:16px;background:#F6FAFF;text-align:center;cursor:pointer;transition:background .15s,border-color .15s}
.drop:hover,.drop.is-over{background:var(--tint);border-color:var(--accent)}
.drop input{position:absolute;width:1px;height:1px;opacity:0}
.drop__ic{font-size:30px}
.drop__t{font-weight:600;color:var(--accent)}
.drop__s{font-size:14px;color:var(--ink-soft)}
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px}
.thumb{position:relative;aspect-ratio:1;border-radius:10px;overflow:hidden;background:var(--tint)}
.thumb img{width:100%;height:100%;object-fit:cover}
.thumb button{position:absolute;top:4px;right:4px;width:26px;height:26px;border:0;border-radius:50%;background:rgba(14,26,51,.75);color:#fff;font-size:15px;line-height:1;cursor:pointer}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.seg input{position:absolute;opacity:0}
.seg span{display:grid;justify-items:center;padding:12px 6px;border:1.5px solid var(--rule);border-radius:12px;cursor:pointer;font-size:15px;color:var(--ink-soft)}
.seg b{font:800 18px var(--display);color:var(--ink)}
.seg s{font-size:12.5px;color:var(--ink-soft);opacity:.8}
.seg em{font-style:normal}
.seg i{font-style:normal;font-weight:600;color:var(--pink)}
.seg input:checked+span{border-color:var(--accent);background:#F2F8FF;box-shadow:inset 0 0 0 1px var(--accent)}
.seg input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.agree{display:flex;gap:10px;align-items:flex-start;font-size:15px;color:var(--ink-soft);cursor:pointer}
.agree input{width:20px;height:20px;margin:2px 0 0;flex:none;accent-color:var(--accent)}
.err{padding:12px 14px;border-radius:12px;background:#FEECEB;color:var(--err);font-size:15px}
.fine{margin:-8px 0 0;text-align:center;font-size:14px;color:var(--ink-soft)}

/* тест заявки 28.10 (html[data-v]): a - одразу в Telegram (.tgo), g - форма по кроках (.st); без data-v - уся форма */
.tgo,.only-a,.stbar,.stnav{display:none}
[data-v=a] .tgo{display:grid}
.tgo .btn{padding:0 16px;white-space:nowrap}
[data-v=a] #form,[data-v=a] .not-a{display:none}
[data-v=a] .only-a{display:inline}
.st{display:grid;gap:22px}
[data-v=g] .st:not(.is-on),[data-v=g] .fn{display:none}
.fn{font-style:normal}
[data-v=g] .stbar{display:grid;gap:8px;font-size:14px;font-weight:600;color:var(--ink-soft)}
.stbar i{display:block;height:6px;border-radius:999px;background:var(--rule);overflow:hidden}
.stbar b{display:block;width:33.4%;height:100%;border-radius:999px;background:var(--accent);transition:width .25s}
[data-v=g] .stnav{display:grid;gap:6px}
.stback{justify-self:center;padding:8px 12px;border:0;background:none;color:var(--ink-soft);font:500 15px var(--body);cursor:pointer}
.drop.is-bad{border-color:var(--err);background:#FEF6F5}

/* питання */
.faq{max-width:760px}
.faq details{border-bottom:1px solid var(--rule)}
.faq summary{list-style:none;cursor:pointer;padding:18px 36px 18px 0;font-weight:600;font-size:17px;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:12px;font-size:26px;color:var(--accent);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq p{margin:0 0 18px;color:var(--ink-soft)}

.final{text-align:center}
.final .lede{margin:12px auto 26px}

.ftr{padding:28px 0 96px;border-top:1px solid var(--rule);font-size:14px;color:var(--ink-soft)}
.ftr__in{display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:center}
.ftr a{text-decoration:none}
.ftr a:hover{color:var(--ink)}

/* нижня кнопка на телефоні */
/* 22.10: без transform и backdrop-filter - на iPhone (Safari/Brave) такая fixed-панель при сворачивании адресной строки
   «отрывалась» и всплывала посередине экрана. Прячем прозрачностью, фон сплошной, снизу место под полоску iPhone. */
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:10px 16px max(10px, env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--rule);box-shadow:0 -6px 20px -12px rgba(14,26,51,.25);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,visibility .2s}
.mbar .btn{width:100%;min-height:50px}
.mbar.is-on{opacity:1;visibility:visible;pointer-events:auto}
@media (min-width:761px){.mbar{display:none}.ftr{padding-bottom:28px}}

/* сторінка «Дякуємо»: стікер вистрибує */
@keyframes pop{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}

/* плаваюча кнопка Telegram, правий нижній кут (28.10.2026) - як на всьому milodia.com */
.tgfab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:35;width:56px;height:56px;border-radius:50%;
  background:#229ED9;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px -6px rgba(11,23,51,.45);transition:transform .15s,bottom .2s}
.tgfab:hover{transform:scale(1.07)}
.tgfab:focus-visible{outline:3px solid #F3D58E;outline-offset:3px}
.tgfab svg{display:block;width:30px;height:30px;margin-left:-3px}
@media (max-width:760px){body:has(.mbar.is-on) .tgfab{bottom:calc(86px + env(safe-area-inset-bottom))}}
@media print{.tgfab{display:none}}
