[data-card-loading="true"]{position:relative;isolation:isolate}
[data-card-loading="true"]>*{filter:blur(2px);opacity:.68;transition:filter .18s ease,opacity .18s ease}
[data-card-loading="true"]::after{content:"";position:absolute;z-index:2;top:50%;left:50%;width:32px;height:32px;margin:-16px 0 0 -16px;border:3px solid color-mix(in srgb,var(--orange,#c83d1b) 22%,transparent);border-top-color:var(--orange,#c83d1b);border-radius:50%;box-shadow:0 0 0 8px color-mix(in srgb,var(--paper,#fff) 82%,transparent);animation:card-loading-spin .8s linear infinite;pointer-events:none}
@keyframes card-loading-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){[data-card-loading="true"]::after{animation:none}}
html[data-theme="dark"] .app-hub-card{--hub-tint:#493024}
html[data-theme="dark"] .app-hub-icon,html[data-theme="dark"] .link-app-icon{background:#3b281f;border-color:#76503c;box-shadow:inset 0 1px 0 #ffffff12,0 4px 12px #0003}
html[data-theme="dark"] .app-hub-icon img[src$=".svg"],html[data-theme="dark"] .link-app-icon img[src$=".svg"]{filter:none}
html[data-theme="dark"] .app-hub-item:is(:hover,:focus-visible,:active){background:#493024!important;color:#f7e7d9!important}
html[data-theme="dark"] .app-hub-item:is(:hover,:focus-visible,:active) .app-hub-label{color:#f7e7d9!important}
html[data-theme="dark"] .app-hub-item:active{background:#5a3928!important}
html[data-theme] body:has(.section-nav) .link-row{gap:12px;min-height:78px}
html[data-theme] body:has(.section-nav) .link-row .link-app-icon{display:grid!important;place-items:center!important;visibility:visible!important;opacity:1!important;flex:0 0 56px;width:56px;height:56px;border-radius:var(--ts-r-lg);background:#fff9f4;border:1px solid #e9c7ae;box-shadow:var(--ts-elev-2)}
html[data-theme] body:has(.section-nav) .link-row .link-app-icon img{display:block!important;visibility:visible!important;opacity:1!important;width:44px!important;height:44px!important;max-width:none!important;object-fit:contain}
html[data-theme="dark"] body:has(.section-nav) .link-row .link-app-icon{background:#3b281f!important;border-color:#76503c!important;box-shadow:inset 0 1px 0 #ffffff12,0 4px 12px #0003}
html[data-theme="dark"] body:has(.section-nav) .link-row .link-app-icon img[src$=".svg"]{filter:none!important}
html[data-theme] body:has(.section-nav)>.top .links-account .account-avatar{display:grid!important;place-items:center!important;flex:none;width:30px;height:30px}
html[data-theme] body:has(.section-nav)>.top .links-account .account-avatar svg,html[data-theme] body:has(.section-nav)>.top .links-back svg{display:block!important;flex:none;width:19px;height:19px}
html[data-theme] body:has(.section-nav)>.top :is(.links-account,.links-back){width:auto!important;min-width:44px;gap:6px;padding:5px 9px!important}
html[data-theme] body:has(.section-nav)>.top :is(.links-account-label,.links-back-label){display:inline!important;font-size:var(--ts-text-xs);font-weight:700}
:is(.app-hub-item,.app-hub-switch,.link-row,.section-nav a,.links-account,.links-back,.action-tile,.primary,.secondary){transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .22s cubic-bezier(.2,.75,.25,1)}
@media(hover:hover){.app-hub-item:hover .app-hub-icon{transform:translateY(-3px) scale(1.04);box-shadow:var(--ts-elev-2)}
.link-row:hover .link-app-icon{transform:translateY(-2px) rotate(-3deg);box-shadow:var(--ts-elev-2)}
.link-row:hover>svg:last-child{transform:translateX(4px)}}
.app-hub-icon,.link-app-icon,.link-row>svg:last-child{transition:transform .25s cubic-bezier(.2,.75,.25,1),box-shadow .25s ease}
.app-hub-item:active .app-hub-icon,.link-row:active .link-app-icon{transform:scale(.93)}
.app-hub-switch:active,.links-account:active,.links-back:active,.section-nav a:active{transform:scale(.96)}
:is(.app-hub-item,.link-row,.app-hub-switch,.links-account,.links-back):focus-visible{outline:3px solid #e8793b;outline-offset:2px}
@media(max-width:380px){html[data-theme] body:has(.section-nav)>.top .brand span{font-size:var(--ts-text-sm)}
html[data-theme] body:has(.section-nav)>.top :is(.links-account,.links-back){padding-inline:6px!important}
html[data-theme] body:has(.section-nav)>.top .links-account .account-avatar{width:23px;height:23px}
html[data-theme] body:has(.section-nav) .link-row .link-app-icon{flex-basis:52px;width:52px;height:52px}
html[data-theme] body:has(.section-nav) .link-row .link-app-icon img{width:41px!important;height:41px!important}}
@media(max-width:355px){html[data-theme] body:has(.section-nav)>.top :is(.links-account,.links-back){width:44px!important;padding:5px!important}
html[data-theme] body:has(.section-nav)>.top :is(.links-account-label,.links-back-label){display:none!important}}
@media(prefers-reduced-motion:reduce){:is(.app-hub-item,.app-hub-switch,.link-row,.section-nav a,.links-account,.links-back,.action-tile,.primary,.secondary,.app-hub-icon,.link-app-icon,.link-row>svg:last-child){transition:none!important;animation:none!important}
.app-hub-item:active .app-hub-icon,.link-row:active .link-app-icon,.app-hub-switch:active,.links-account:active,.links-back:active,.section-nav a:active{transform:none!important}}
@media(prefers-reduced-motion:no-preference){:is(.schedule-card,.shift-card,.booknow-card,.visit-card,.reconciliation-card,.not-conducted-card,.link-section,.admin-card,.account-setting-form){transition:transform .32s cubic-bezier(.2,.75,.25,1),box-shadow .32s ease,border-color .32s ease,background-color .35s ease}
:is(.btn,.primary,.secondary,.account-menu,.schedule-day,.shift-person,.class-item,.admission-person,.link-row,.app-hub-item,.action-tile,.section-nav a){transition:transform .24s cubic-bezier(.2,.75,.25,1),box-shadow .24s ease,background-color .3s ease,border-color .3s ease,color .3s ease}
:is(.field input,.account-setting-form .input,.att-dialog input,.reconciliation-form input){transition:border-color .24s ease,box-shadow .24s ease,background-color .3s ease}
:is(.field input,.account-setting-form .input,.att-dialog input,.reconciliation-form input):focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--orange) 18%,transparent)}
:is(.btn,.secondary,.account-menu,.schedule-day,.shift-person,.class-item,.admission-person,.link-row,.app-hub-item,.section-nav a):active{transform:scale(.97)}
.account-dialog .account-section{animation:accountSectionIn .42s cubic-bezier(.2,.75,.25,1) both}
.account-dialog .account-section:nth-of-type(2){animation-delay:45ms}
.account-dialog .account-section:nth-of-type(3){animation-delay:90ms}
@keyframes accountSectionIn{from{opacity:.72;transform:translateY(8px)}to{opacity:1;transform:none}}
.site-enter{opacity:0;transform:translateY(14px)}
.site-enter.site-visible{opacity:1;transform:none;transition:opacity .55s ease,transform .55s cubic-bezier(.2,.75,.25,1)}
@media(hover:hover){:is(.schedule-card,.shift-card,.booknow-card,.visit-card,.reconciliation-card,.not-conducted-card,.link-section,.admin-card):hover{transform:translateY(-2px);box-shadow:var(--ts-elev-3)}
:is(.class-item,.admission-person,.link-row,.app-hub-item):hover{transform:translateY(-2px)}}}
@media(prefers-reduced-motion:reduce){.site-enter{opacity:1;transform:none}
.account-dialog :is(.page-view-choices,.account-format-choices,.theme-choices) .choice-flow-indicator{will-change:auto}}
.segmented[data-flow-ready]{position:relative!important;isolation:isolate}
.segmented[data-flow-ready] .segment-flow-indicator{position:absolute;z-index:0;top:0;left:0;pointer-events:none;border-radius:var(--ts-r-sm);background:var(--orange);box-shadow:0 4px 12px color-mix(in srgb,var(--orange) 28%,transparent);transition:none;will-change:transform,width,height,background-color}
.segmented[data-flow-ready].flow-ready .segment-flow-indicator{transition:transform .42s cubic-bezier(.22,.8,.24,1),width .42s cubic-bezier(.22,.8,.24,1),height .42s cubic-bezier(.22,.8,.24,1),background-color .35s ease}
html[data-theme] .segmented[data-flow-ready] button{position:relative;z-index:1}
html[data-theme] .segmented[data-flow-ready] button.active{background:transparent!important;box-shadow:none!important;color:#fff!important}
html[data-theme] .segmented[data-flow-ready] button:not(.active):hover{background:color-mix(in srgb,var(--orange) 12%,transparent)!important}
@media(prefers-reduced-motion:reduce){.segmented[data-flow-ready] .segment-flow-indicator{transition:none!important;will-change:auto}}
/* Medals */
.tsm-medal{--s:120px;position:relative;width:var(--s);height:var(--s);perspective:900px;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.tsm-medal *{-webkit-user-select:none;user-select:none}
.tsm-medal-body{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.tsm-medal-face,.tsm-medal-edge,.tsm-medal-back,.tsm-medal-shine{position:absolute;inset:0;clip-path:var(--shape)}
.tsm-medal-edge{background:var(--edge)}
.tsm-medal-face svg,.tsm-medal-back svg{display:block;width:100%;height:100%}
.tsm-medal-face,.tsm-medal-back,.tsm-medal-shine{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.tsm-medal-shine{background:linear-gradient(115deg,transparent 34%,rgba(255,255,255,.22) 47%,transparent 58%);background-size:280% 100%;background-position:var(--sheen,50%) 0;pointer-events:none}
.tsm-medal-floor{position:absolute;left:14%;right:14%;bottom:-16%;height:12%;border-radius:50%;background:radial-gradient(closest-side,var(--glow,rgba(255,120,60,.34)),transparent);filter:blur(4px);transform:scaleX(var(--floor,1))}
body.is-turning{-webkit-user-select:none;user-select:none}
html.tsm-locked{overflow:hidden}
dialog.tsm-reveal{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:max(24px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(24px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));border:0;background:rgba(0,0,0,.9);color:#f6efe9;display:grid;place-items:center;overflow:auto}
dialog.tsm-reveal:not([open]){display:none}
dialog.tsm-reveal::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(8px)}
.tsm-reveal-inner{display:grid;justify-items:center;gap:16px;max-width:420px;text-align:center}
.tsm-reveal-kicker{font-size:var(--ts-text-md);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#ff8a5c}
.tsm-reveal-stage{position:relative;padding:10px 0 34px;-webkit-user-select:none;user-select:none}
.tsm-reveal-copy{display:grid;gap:8px;opacity:0;transform:translateY(8px);transition:opacity .4s ease,transform .4s ease}
.tsm-reveal.is-settled .tsm-reveal-copy{opacity:1;transform:none}
.tsm-reveal h2{margin:0;font-size:clamp(28px,7.5vw,36px);line-height:1.12;color:#fff}
.tsm-reveal p{margin:0;color:#d6c9c1;font-size:var(--ts-text-2xl);line-height:1.45}
.tsm-reveal-hint{font-size:var(--ts-text-md);color:#9d918a}
.tsm-reveal-close{min-height:52px;min-width:200px;padding:0 30px;border-radius:var(--ts-r-full);border:0;background:#ff6a3d;color:#1a0b05;font-size:var(--ts-text-xl);font-weight:700}
.tsm-sparks{position:absolute;inset:-30%;pointer-events:none}
.tsm-spark{position:absolute;left:50%;top:45%;width:6px;height:6px;border-radius:50%;background:var(--c);opacity:0}
.tsm-reveal.is-settled .tsm-spark{animation:tsmSpark 1s cubic-bezier(.15,.7,.3,1) forwards}
@keyframes tsmSpark{0%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y)))}}
@media (prefers-reduced-motion:reduce){.tsm-reveal-copy{transition:none}.tsm-reveal.is-settled .tsm-spark{animation:none}}

/* Not earned yet: the outline under a draped grey cloth with soft folds */
.tsm-veil{--s:120px;position:relative;width:var(--s);height:calc(var(--s) * 1.18);filter:drop-shadow(0 6px 8px rgba(0,0,0,.35))}
.tsm-veil svg{display:block;width:100%;height:100%;overflow:visible}
.tsm-card .tsm-card-medal{padding:4px 0 14px}
/* Shared header on links, calculator and admin: the same look as the main page */
header.site-top{position:sticky;top:0;z-index:50;display:grid;gap:8px;width:auto;max-width:none;height:auto;min-height:0;margin:0 0 16px;padding:max(10px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 12px max(16px,env(safe-area-inset-left,0px));border:0;border-bottom:1px solid var(--line);border-radius:0 0 24px 24px;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--ts-elev-3);color:var(--ink)}
header.site-top .site-top-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}
header.site-top .site-brand{display:flex;align-items:center;gap:10px;min-width:0;color:var(--ink);text-decoration:none}
header.site-top .site-logo{width:40px;height:40px;border-radius:var(--ts-r-md);flex:none}
header.site-top .site-title{margin:0;padding:0;font-size:var(--ts-text-2xl);font-weight:800;letter-spacing:-.02em;white-space:nowrap;color:var(--ink)}
header.site-top .site-top-actions{display:flex;align-items:center;gap:8px;flex:none}
header.site-top :is(.site-avatar,.site-settings){display:grid;place-items:center;width:46px;height:46px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);text-decoration:none;overflow:hidden}
header.site-top .site-avatar{padding:3px}
header.site-top .site-settings svg{width:20px;height:20px}
header.site-top .site-avatar-face{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;overflow:hidden;background:color-mix(in srgb,var(--orange) 16%,var(--paper));color:var(--orange);font-size:var(--ts-text-md);font-weight:800}
header.site-top .site-avatar-face.has-emoji{font-size:var(--ts-text-3xl)}
header.site-top .site-avatar-face img{display:block;width:100%;height:100%;object-fit:cover}
header.site-top .header-schedule{display:flex;align-items:center;gap:8px;width:100%;max-width:none;min-height:38px;padding:6px 12px;border:1px solid var(--line);border-radius:var(--ts-r-lg);text-decoration:none;font-size:var(--ts-text-sm)}
header.site-top .header-schedule-code{font-weight:800;font-size:var(--ts-text-base)}
header.site-top .header-schedule-day{font-size:var(--ts-text-xs);opacity:.88}
header.site-top .header-schedule-label{margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--ts-text-xs)}
header.site-top .site-banner{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:var(--ts-r-lg);background:color-mix(in srgb,var(--orange) 8%,var(--paper));color:var(--ink);font-size:var(--ts-text-sm);font-weight:600}
header.site-top .site-banner[hidden]{display:none}
header.site-top .site-banner .notification-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
header.site-top .site-banner .btn{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border:0;border-radius:var(--ts-r-full);background:var(--orange);color:var(--md-sys-color-on-primary,#fff);font-size:var(--ts-text-xs);font-weight:700;text-decoration:none;white-space:nowrap}
header.site-top .site-banner .notification-hide{width:32px;height:32px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--ink);font-size:var(--ts-text-2xl);line-height:1;cursor:pointer}
@media (max-width:420px){header.site-top .site-title{font-size:var(--ts-text-xl)}}
header.site-top .site-settings{background:color-mix(in srgb,var(--orange) 14%,var(--paper));border-color:color-mix(in srgb,var(--orange) 35%,var(--line));color:var(--orange)}
/* Photo cropper */
dialog.avatar-crop{width:min(360px,calc(100vw - 24px));max-width:none;padding:0;border:0;border-radius:var(--ts-r-2xl);background:var(--paper);color:var(--ink);box-shadow:var(--ts-elev-4)}
dialog.avatar-crop::backdrop{background:rgba(0,0,0,.6);backdrop-filter:blur(6px)}
.avatar-crop-box{display:grid;justify-items:center;gap:14px;padding:18px}
.avatar-crop-box h2{margin:0;font-size:var(--ts-text-2xl)}
.avatar-crop-view{position:relative;width:min(280px,calc(100vw - 72px));aspect-ratio:1;overflow:hidden;border-radius:var(--ts-r-xl);background:#000;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}
.avatar-crop-view:active{cursor:grabbing}
.avatar-crop-view img{position:absolute;left:0;top:0;max-width:none;transform-origin:0 0;pointer-events:none}
.avatar-crop-ring{position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 999px rgba(0,0,0,.55);outline:2px solid rgba(255,255,255,.85);outline-offset:-2px;pointer-events:none}
.avatar-crop-zoom{display:flex;align-items:center;gap:10px;width:100%;font-size:var(--ts-text-2xl);color:var(--muted)}
.avatar-crop-zoom input{flex:1;accent-color:var(--orange)}
.avatar-crop-hint{margin:0;font-size:var(--ts-text-sm);color:var(--muted)}
.avatar-crop-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
.avatar-crop-actions .btn{min-height:44px;justify-content:center}
html[data-theme] .avatar-crop-actions .avatar-crop-save{background:var(--orange);color:var(--md-sys-color-on-primary,#fff);border-color:var(--orange)}

/* Mango Talker window: instructions, logins and passwords with copy buttons */
dialog.mango-dialog{width:min(480px,calc(100vw - 16px));max-height:calc(100dvh - 16px);padding:0;border:1px solid var(--line);border-radius:var(--ts-r-2xl);background:var(--paper);color:var(--ink);overflow:hidden;display:none;box-shadow:var(--ts-elev-4)}
dialog.mango-dialog[open]{display:flex;flex-direction:column}
dialog.mango-dialog::backdrop{background:rgba(20,10,5,.45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.mg-head{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px 16px 12px;border-bottom:1px solid var(--line)}
.mg-head img{width:48px;height:48px;border-radius:var(--ts-r-md)}
.mg-head h2{margin:0;font-size:var(--ts-text-2xl);line-height:1.2}
.mg-head p{margin:2px 0 0;font-size:var(--ts-text-sm);color:var(--muted)}
html[data-theme] button.mg-close{width:38px;height:38px;min-height:0;padding:0;border:1px solid var(--line);background:transparent;color:var(--ink);font-size:var(--ts-text-3xl);line-height:1}
.mg-body{flex:1;overflow:auto;padding:4px 16px 12px;overscroll-behavior:contain}
.mg-body section{padding:12px 0;border-bottom:1px solid var(--line)}
.mg-body section:last-child{border-bottom:0}
.mg-body h3{margin:0 0 8px;font-size:var(--ts-text-base)}
.mg-body p,.mg-body li{font-size:var(--ts-text-md);line-height:1.45}
.mg-body p{margin:0}
.mg-steps{margin:0 0 10px;padding-left:20px;display:grid;gap:4px}
.mg-platforms{margin:0;padding-left:18px;display:grid;gap:8px}
.mg-body a{color:var(--orange);font-weight:700;text-decoration:underline;text-underline-offset:2px;word-break:break-word}
.mg-account{display:grid;gap:6px;margin-top:8px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--orange) 30%,var(--line));border-radius:var(--ts-r-lg);background:color-mix(in srgb,var(--orange) 7%,var(--paper))}
.mg-account strong{font-size:var(--ts-text-md)}
.mg-field{display:grid;grid-template-columns:62px minmax(0,1fr) 36px;align-items:center;gap:8px}
.mg-field-label{font-size:var(--ts-text-sm);font-weight:700;color:var(--muted)}
.mg-field-value{display:block;overflow-x:auto;white-space:nowrap;padding:7px 10px;border-radius:var(--ts-r-md);background:var(--paper);border:1px solid var(--line);font:700 14.5px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--ink);user-select:all;-webkit-user-select:all}
html[data-theme] button.mg-copy{display:grid;place-items:center;width:36px;height:36px;min-height:0;padding:0;border:1px solid var(--line);border-radius:var(--ts-r-md)!important;background:var(--paper);color:var(--ink)}
html[data-theme] button.mg-copy.is-done{background:var(--orange);border-color:var(--orange);color:var(--md-sys-color-on-primary,#fff)}
.mg-copy svg{width:17px;height:17px}
.mg-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper)}
html[data-theme] .mg-foot .mg-web{display:flex;justify-content:center;align-items:center;width:100%;min-height:46px;border-radius:var(--ts-r-full);background:var(--orange);color:var(--md-sys-color-on-primary,#fff);font-weight:800;text-decoration:none;border:0}
.links-locked{text-align:center;display:grid;gap:10px;justify-items:center;padding:28px 18px}
.links-locked h2{margin:0;font-size:var(--ts-text-2xl)}
.links-locked p{margin:0;color:var(--muted)}

/* Onboarding windows: notifications and home-screen icon */
dialog.ob-sheet{width:min(440px,calc(100vw - 16px));max-height:calc(100dvh - 16px);padding:20px 16px 16px;border:1px solid var(--line);border-radius:var(--ts-r-2xl);background:var(--paper);color:var(--ink);overflow:auto;display:none;box-shadow:var(--ts-elev-4)}
dialog.ob-sheet[open]{display:block;animation:ob-in .4s cubic-bezier(.3,1.3,.5,1)}
dialog.ob-sheet::backdrop{background:rgba(20,10,5,.45);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
@keyframes ob-in{from{opacity:0;transform:translateY(24px) scale(.96)}}
@media (prefers-reduced-motion:reduce){dialog.ob-sheet[open]{animation:none}}
.ob-hero{display:grid;justify-items:center;gap:6px;text-align:center;margin-bottom:12px}
.ob-hero h2{margin:4px 0 0;font-size:var(--ts-text-3xl);line-height:1.15}
.ob-hero p{margin:0;font-size:var(--ts-text-md);line-height:1.45;color:var(--muted)}
.ob-bell{display:grid;place-items:center;width:64px;height:64px;border-radius:var(--ts-r-xl);background:color-mix(in srgb,var(--orange) 15%,var(--paper));color:var(--orange)}
.ob-bell svg{width:32px;height:32px;animation:ob-ring 2.4s ease-in-out 1s infinite;transform-origin:50% 10%}
@keyframes ob-ring{0%,60%,100%{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-12deg)}}
.ob-hero-icon{width:72px;height:72px;border-radius:22.5%;box-shadow:var(--ts-elev-2)}
.ob-list{display:grid;gap:8px;margin:0 0 12px;padding:0;list-style:none}
.ob-list li{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:var(--ts-r-lg);font-size:var(--ts-text-md);line-height:1.35;background:color-mix(in srgb,var(--ink) 3%,var(--paper))}
.ob-list b{font-size:var(--ts-text-2xl);text-align:center}
.ob-note{margin:0 0 12px;padding:10px 12px;border-radius:var(--ts-r-lg);background:color-mix(in srgb,var(--orange) 9%,var(--paper));font-size:var(--ts-text-sm);line-height:1.4}
.ob-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:8px}
html[data-theme] .ob-actions .btn{min-height:46px;font-weight:800;border:1px solid var(--line);background:transparent;color:var(--ink)}
html[data-theme] .ob-actions .ob-primary{background:var(--orange);border-color:var(--orange);color:var(--md-sys-color-on-primary,#fff)}
.ob-actions :only-child{grid-column:1/-1}
.ob-status{margin:8px 0 0;font-size:var(--ts-text-sm);color:var(--muted);text-align:center}
.ob-status:empty{display:none}
.ob-steps{display:grid;grid-auto-flow:column;grid-auto-columns:150px;gap:12px;overflow-x:auto;padding:4px 2px 12px;margin:0 -4px 12px;scroll-snap-type:x mandatory;scrollbar-width:thin}
.ob-step{margin:0;display:grid;gap:8px;scroll-snap-align:start}
.ob-step figcaption{font-size:var(--ts-text-sm);line-height:1.35}
.ob-phone{position:relative;height:250px;border-radius:var(--ts-r-2xl);border:6px solid #1c1917;background:linear-gradient(160deg,#2b3a67,#6b4fa8 50%,#e5451a);overflow:hidden;box-shadow:var(--ts-elev-2)}
.ob-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:22px 10px 0}
.ob-slot{display:block;aspect-ratio:1;border-radius:var(--ts-r-sm);background:rgba(255,255,255,.28)}
.ob-slot.is-target{background:none}
.ob-app{display:block;width:100%;height:100%;border-radius:22.5%;box-shadow:var(--ts-elev-1)}
.ob-menu{position:absolute;left:10px;right:10px;bottom:22px;display:grid;border-radius:var(--ts-r-md);background:rgba(245,245,245,.96);overflow:hidden;font-size:10.5px;color:#111}
.ob-menu span{padding:7px 9px;border-top:1px solid #ddd}
.ob-menu span:first-child{border-top:0}
.ob-menu .is-danger{color:#d70015}
.is-hit{box-shadow:inset 0 0 0 2px #ff9f0a;animation:ob-hit 1.4s ease-in-out infinite}
@keyframes ob-hit{50%{box-shadow:inset 0 0 0 2px #ff9f0a,0 0 0 4px rgba(255,159,10,.35)}}
.ob-safari,.ob-chrome{position:absolute;left:0;right:0;top:0;padding:10px;background:#f2f2f7}
.ob-chrome{display:flex;align-items:center;gap:6px}
.ob-chrome b{display:grid;place-items:center;width:20px;height:20px;border-radius:var(--ts-r-sm);font-size:var(--ts-text-md);color:#333}
.ob-url{display:block;flex:1;padding:5px 8px;border-radius:var(--ts-r-sm);background:#fff;font-size:10.5px;color:#333;text-align:center}
.ob-bar{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-around;padding:10px 6px 14px;background:#f2f2f7}
.ob-bar i{display:block;width:16px;height:16px;border-radius:var(--ts-r-xs);background:#c7c7cc}
.ob-bar .ob-share{background:#0a84ff;border-radius:var(--ts-r-xs)}
.ob-share-sheet{position:absolute;left:0;right:0;bottom:0;display:grid;padding:10px 8px 14px;border-radius:var(--ts-r-lg) 16px 0 0;background:#f2f2f7;font-size:10.5px;color:#111}
.ob-share-sheet span{padding:7px 8px;border-radius:var(--ts-r-sm);background:#fff;margin-top:5px}
@media (prefers-reduced-motion:reduce){.is-hit,.ob-bell svg{animation:none}}

/* «Спасибо» коллегам */
.th-sheet{position:relative}
.th-close{position:absolute;top:10px;right:10px;width:40px;height:40px;border:0;border-radius:var(--ts-r-full);background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink);font-size:var(--ts-text-3xl);line-height:1;cursor:pointer}
.th-badge{display:grid;place-items:center;width:64px;height:64px;border-radius:var(--ts-r-xl);background:color-mix(in srgb,#f2b705 18%,var(--paper));font-size:32px;animation:th-beat 1.6s var(--ts-ease) .4s 2}
@keyframes th-beat{0%,100%{transform:scale(1)}30%{transform:scale(1.14)}60%{transform:scale(.96)}}
.th-form{display:grid;gap:8px;margin-bottom:16px}
.th-label{font-size:var(--ts-text-sm);font-weight:700}
.th-label span{font-weight:400;color:var(--muted)}
.th-field{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--ts-r-md);background:var(--bg);color:var(--ink);font:inherit;font-size:var(--ts-text-lg)}
.th-field:focus-visible{outline:2px solid var(--orange);outline-offset:1px}
textarea.th-field{resize:vertical;min-height:80px;line-height:1.4}
.th-chips{display:flex;flex-wrap:wrap;gap:6px}
.th-chip{min-height:34px;padding:6px 12px;border:1px solid var(--line);border-radius:var(--ts-r-full);background:transparent;color:var(--ink);font:inherit;font-size:var(--ts-text-sm);cursor:pointer}
.th-chip:hover{border-color:var(--orange);color:var(--orange)}
.th-send{min-height:48px;margin-top:4px;border:1px solid var(--orange);border-radius:var(--ts-r-md);background:var(--orange);color:var(--md-sys-color-on-primary,#fff);font-weight:800}
.th-send:disabled{opacity:.5}
.th-left{margin:0;font-size:var(--ts-text-sm);color:var(--muted);text-align:center}
.th-left:empty{display:none}
.th-received h3{margin:0 0 8px;font-size:var(--ts-text-xl)}
.th-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.th-item{display:grid;grid-template-columns:28px 1fr;gap:8px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--ts-r-lg);background:color-mix(in srgb,var(--ink) 3%,var(--paper))}
.th-item.is-new{border-color:color-mix(in srgb,#f2b705 55%,var(--line));background:color-mix(in srgb,#f2b705 9%,var(--paper))}
.th-heart{font-size:var(--ts-text-2xl);line-height:1.2}
.th-item b{display:block;font-size:var(--ts-text-md)}
.th-item q{display:block;margin-top:2px;font-size:var(--ts-text-md);line-height:1.4;quotes:"«" "»"}
.th-item q.is-plain{quotes:none;color:var(--muted)}
.th-item small{display:block;margin-top:4px;font-size:var(--ts-text-xs);color:var(--muted)}
.th-empty{padding:12px;border:1px dashed var(--line);border-radius:var(--ts-r-lg);color:var(--muted);font-size:var(--ts-text-sm);text-align:center}
.th-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.th-count{font-size:var(--ts-text-md);color:var(--muted)}
.th-count b{font-size:var(--ts-text-2xl);color:var(--ink)}
.th-new{padding:2px 10px;border-radius:var(--ts-r-full);background:color-mix(in srgb,#f2b705 22%,var(--paper));font-size:var(--ts-text-xs);font-weight:800}
.th-cta{width:100%;min-height:44px;margin-top:10px;border:1px solid var(--line);border-radius:var(--ts-r-md);background:transparent;color:var(--ink);font-weight:800}
.th-cta:hover{border-color:var(--orange);color:var(--orange)}
.acc-thanks-say{border-color:color-mix(in srgb,#f2b705 55%,var(--line))!important}
.th-fly{position:fixed;z-index:200;pointer-events:none;font-size:22px;transform:translate(-50%,0);animation:th-fly 1s var(--ts-ease-out) forwards}
@keyframes th-fly{to{transform:translate(calc(-50% + var(--dx)),var(--dy)) scale(.6);opacity:0}}
@media (prefers-reduced-motion:reduce){.th-badge{animation:none}}
.acc-person-grid>.acc-empty{grid-column:1/-1}

/* «Итоги» в Уведомлениях */
.rc-entry{display:grid;gap:8px;margin:0 0 12px}
.rc-entry-title{margin:0;font-size:var(--ts-text-sm);font-weight:800;color:var(--muted)}
.rc-entry-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.rc-entry-btn{position:relative;display:flex;align-items:center;gap:10px;min-height:60px;padding:10px 12px;border:0;border-radius:var(--ts-r-lg);color:#fff;font:inherit;text-align:left;cursor:pointer;box-shadow:var(--ts-elev-2);transition:transform var(--ts-fast)}
.rc-entry-btn:active{transform:scale(.97)}
.rc-entry-week{background:linear-gradient(140deg,#ff7a1a,#e5451a 60%,#b8321a)}
.rc-entry-month{background:linear-gradient(140deg,#7b4dff,#4a2bd8)}
.rc-entry-ico{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.2);font-size:20px;flex:none}
.rc-entry-btn b{display:block;font-size:var(--ts-text-md)}
.rc-entry-btn small{display:block;font-size:var(--ts-text-xs);opacity:.9}
.rc-entry-btn i{position:absolute;top:6px;right:8px;padding:1px 7px;border-radius:var(--ts-r-full);background:#fff;color:#c2361a;font-style:normal;font-size:10px;font-weight:800}
