/* Fixed companion, positioned clear of the site's support links and mobile dock. */
.tfsvc-sisi-float{position:fixed;right:12px;bottom:16px;z-index:76;display:flex;flex-direction:column;align-items:flex-end;gap:8px;width:210px;max-width:calc(100vw - 24px);pointer-events:none;color:#182f30;font:12px/1.6 system-ui,"Noto Sans TC",sans-serif}
.tfsvc-sisi-float a{color:inherit;text-decoration:none}.tfsvc-sisi-float .tfsvc-sisi-bubble{position:relative;padding:14px 30px 12px 14px;background:#fffffff5;border:1px solid #d4e3df;border-radius:14px 14px 3px 14px;box-shadow:0 6px 24px #132b2424;pointer-events:auto;text-align:left}.tfsvc-sisi-float .tfsvc-sisi-bubble[hidden]{display:none}.tfsvc-sisi-bubble a{display:block}.tfsvc-sisi-bubble strong,.tfsvc-sisi-bubble span{display:block}.tfsvc-sisi-float .tfsvc-sisi-close{position:absolute;top:0;right:0;display:grid;place-items:center;width:32px;height:36px;padding:0;border:0;background:transparent;color:#476565;font:23px/1 system-ui;cursor:pointer}.tfsvc-sisi-float .tfsvc-sisi-basis{display:block;font-size:10px;margin-top:6px;color:#476565}.tfsvc-sisi-float .tfsvc-sisi-link{display:flex;flex-direction:column;align-items:center;pointer-events:auto;width:84px;cursor:pointer}.tfsvc-sisi-float .tfsvc-sisi-holder{display:block;width:76px;height:94px;filter:drop-shadow(0 5px 7px #0004)}.tfsvc-sisi-float .tfsvc-sisi-holder svg{display:block;width:76px;height:92px;image-rendering:pixelated;animation:tfsvc-sisi-bob 3s ease-in-out infinite}.tfsvc-sisi-caption{display:block;background:#174b4b;color:#fff;padding:3px 8px;border-radius:20px;font-size:10px}.tfsvc-sisi-float :focus-visible{outline:3px solid #c6a15c;outline-offset:3px}
@media(max-width:760px){.tfsvc-sisi-float{width:190px}.tfsvc-sisi-float .tfsvc-sisi-link{width:66px}.tfsvc-sisi-float .tfsvc-sisi-holder{width:60px;height:74px}.tfsvc-sisi-float .tfsvc-sisi-holder svg{width:60px;height:72px}.tfsvc-sisi-float .tfsvc-sisi-bubble{font-size:11px;padding:10px 30px 10px 12px}}
.tfsvc .tfsvc-weather-body{grid-template-columns:112px minmax(0,1fr);align-items:start}
.tfsvc .tfsvc-avatar{background:none;border-radius:0;min-height:0;padding:0;gap:10px;align-content:start}
.tfsvc .tfsvc-avatar .tfsvc-sisi-portrait{width:92px;height:126px;background:linear-gradient(180deg,#e9f1f2,#d8e7ea);border:1px solid #c9dde0;border-radius:2px;display:grid;place-items:end center;padding-bottom:6px;position:relative;overflow:hidden}
.tfsvc .tfsvc-avatar .tfsvc-sisi-portrait::before{content:"";position:absolute;top:10px;left:50%;transform:translateX(-50%);width:26px;height:26px;border-radius:50%;background:#ffffff8c}
.tfsvc .tfsvc-avatar .tfsvc-sisi-portrait svg{position:relative;width:74px;height:98px;max-width:none;filter:none;image-rendering:pixelated;animation:tfsvc-sisi-bob 2.6s ease-in-out infinite}
.tfsvc .tfsvc-avatar>[data-season-label]{display:block;font-size:11px;line-height:1.6;max-width:112px;text-align:left;color:#476565}
@keyframes tfsvc-sisi-bob{50%{transform:translateY(-2.5px)}}
@media(prefers-reduced-motion:reduce){.tfsvc-sisi-float .tfsvc-sisi-holder svg,.tfsvc-sisi-float .tfsvc-sisi-holder img,.tfsvc .tfsvc-avatar .tfsvc-sisi-portrait svg{animation:none}.tfsvc-sisi-float .tfsvc-sisi-bubble{transition:none}}

/* Scale only the character; keep normal-size speech and caption text. */
.tfsvc-sisi-float{--tf-sisi-scale:1.5;--tf-sisi-width:76px;--tf-sisi-height:94px;--tf-sisi-svg-height:92px;--tf-sisi-link-width:84px;width:max(210px,calc(var(--tf-sisi-width)*var(--tf-sisi-scale) + 8px))}
.tfsvc-sisi-float .tfsvc-sisi-link{width:calc(var(--tf-sisi-link-width)*var(--tf-sisi-scale))}
.tfsvc-sisi-float .tfsvc-sisi-holder{width:calc(var(--tf-sisi-width)*var(--tf-sisi-scale));height:calc(var(--tf-sisi-height)*var(--tf-sisi-scale))}
.tfsvc-sisi-float .tfsvc-sisi-holder svg{width:calc(var(--tf-sisi-width)*var(--tf-sisi-scale));height:calc(var(--tf-sisi-svg-height)*var(--tf-sisi-scale))}
@media(max-width:760px){.tfsvc-sisi-float{--tf-sisi-width:60px;--tf-sisi-height:74px;--tf-sisi-svg-height:72px;--tf-sisi-link-width:66px;width:max(190px,calc(var(--tf-sisi-width)*var(--tf-sisi-scale) + 8px))}}
