/* bundle-signature: ae4cc12e898662c2d3747bad5631e39ef327a9ead65536c863728784135e412f */
/* Generated by WebThemeCssBundleService; do not edit. */
@layer cms.vendor, cms.platform, cms.theme, cms.chrome, cms.brand, cms.explicit;
/* source: vendor/bootstrap5/css/bootstrap.min.css */
@layer cms.vendor {
/*!
 * Bootstrap  v5.2.3 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.375rem;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:#212529;--bs-accordion-bg:#fff;--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:0.375rem;--bs-accordion-inner-border-radius:calc(0.375rem - 1px);--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:#212529;--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:0.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:0.5rem}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:0.25rem}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:0.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, 0.85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:0.375rem;--bs-toast-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, 0.85);--bs-toast-header-border-color:rgba(0, 0, 0, 0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:0.375rem;--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:0.5rem;--bs-popover-inner-border-radius:calc(0.5rem - 1px);--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: ;--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(-.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
/*# sourceMappingURL=bootstrap.min.css.map */
}
/* source: vendor/fontawesome/css/all.min.css */
@layer cms.vendor {
/*!
 * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 */
.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url("/vendor/fontawesome/webfonts/fa-brands-400.eot");src:url("/vendor/fontawesome/webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"),url("/vendor/fontawesome/webfonts/fa-brands-400.woff2") format("woff2"),url("/vendor/fontawesome/webfonts/fa-brands-400.woff") format("woff"),url("/vendor/fontawesome/webfonts/fa-brands-400.ttf") format("truetype"),url("/vendor/fontawesome/webfonts/fa-brands-400.svg#fontawesome") format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url("/vendor/fontawesome/webfonts/fa-regular-400.eot");src:url("/vendor/fontawesome/webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"),url("/vendor/fontawesome/webfonts/fa-regular-400.woff2") format("woff2"),url("/vendor/fontawesome/webfonts/fa-regular-400.woff") format("woff"),url("/vendor/fontawesome/webfonts/fa-regular-400.ttf") format("truetype"),url("/vendor/fontawesome/webfonts/fa-regular-400.svg#fontawesome") format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url("/vendor/fontawesome/webfonts/fa-solid-900.eot");src:url("/vendor/fontawesome/webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"),url("/vendor/fontawesome/webfonts/fa-solid-900.woff2") format("woff2"),url("/vendor/fontawesome/webfonts/fa-solid-900.woff") format("woff"),url("/vendor/fontawesome/webfonts/fa-solid-900.ttf") format("truetype"),url("/vendor/fontawesome/webfonts/fa-solid-900.svg#fontawesome") format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
}
/* source: vendor/material-design-iconic-font/css/material-design-iconic-font.min.css */
@layer cms.vendor {
@font-face{font-family:Material-Design-Iconic-Font;src:url("/vendor/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2?v=2.2.0") format('woff2'),url("/vendor/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff?v=2.2.0") format('woff'),url("/vendor/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf?v=2.2.0") format('truetype')}.zmdi{display:inline-block;font:normal normal normal 14px/1 'Material-Design-Iconic-Font';font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.zmdi-hc-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.zmdi-hc-2x{font-size:2em}.zmdi-hc-3x{font-size:3em}.zmdi-hc-4x{font-size:4em}.zmdi-hc-5x{font-size:5em}.zmdi-hc-fw{width:1.28571429em;text-align:center}.zmdi-hc-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.zmdi-hc-ul>li{position:relative}.zmdi-hc-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.zmdi-hc-li.zmdi-hc-lg{left:-1.85714286em}.zmdi-hc-border{padding:.1em .25em;border:solid .1em #9e9e9e;border-radius:2px}.zmdi-hc-border-circle{padding:.1em .25em;border:solid .1em #9e9e9e;border-radius:50%}.zmdi.pull-left{float:left;margin-right:.15em}.zmdi.pull-right{float:right;margin-left:.15em}.zmdi-hc-spin{-webkit-animation:zmdi-spin 1.5s infinite linear;animation:zmdi-spin 1.5s infinite linear}.zmdi-hc-spin-reverse{-webkit-animation:zmdi-spin-reverse 1.5s infinite linear;animation:zmdi-spin-reverse 1.5s infinite linear}@-webkit-keyframes zmdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes zmdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes zmdi-spin-reverse{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}@keyframes zmdi-spin-reverse{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}.zmdi-hc-rotate-90{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.zmdi-hc-rotate-180{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.zmdi-hc-rotate-270{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.zmdi-hc-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.zmdi-hc-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}.zmdi-hc-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.zmdi-hc-stack-1x,.zmdi-hc-stack-2x{position:absolute;left:0;width:100%;text-align:center}.zmdi-hc-stack-1x{line-height:inherit}.zmdi-hc-stack-2x{font-size:2em}.zmdi-hc-inverse{color:#fff}.zmdi-3d-rotation:before{content:'\f101'}.zmdi-airplane-off:before{content:'\f102'}.zmdi-airplane:before{content:'\f103'}.zmdi-album:before{content:'\f104'}.zmdi-archive:before{content:'\f105'}.zmdi-assignment-account:before{content:'\f106'}.zmdi-assignment-alert:before{content:'\f107'}.zmdi-assignment-check:before{content:'\f108'}.zmdi-assignment-o:before{content:'\f109'}.zmdi-assignment-return:before{content:'\f10a'}.zmdi-assignment-returned:before{content:'\f10b'}.zmdi-assignment:before{content:'\f10c'}.zmdi-attachment-alt:before{content:'\f10d'}.zmdi-attachment:before{content:'\f10e'}.zmdi-audio:before{content:'\f10f'}.zmdi-badge-check:before{content:'\f110'}.zmdi-balance-wallet:before{content:'\f111'}.zmdi-balance:before{content:'\f112'}.zmdi-battery-alert:before{content:'\f113'}.zmdi-battery-flash:before{content:'\f114'}.zmdi-battery-unknown:before{content:'\f115'}.zmdi-battery:before{content:'\f116'}.zmdi-bike:before{content:'\f117'}.zmdi-block-alt:before{content:'\f118'}.zmdi-block:before{content:'\f119'}.zmdi-boat:before{content:'\f11a'}.zmdi-book-image:before{content:'\f11b'}.zmdi-book:before{content:'\f11c'}.zmdi-bookmark-outline:before{content:'\f11d'}.zmdi-bookmark:before{content:'\f11e'}.zmdi-brush:before{content:'\f11f'}.zmdi-bug:before{content:'\f120'}.zmdi-bus:before{content:'\f121'}.zmdi-cake:before{content:'\f122'}.zmdi-car-taxi:before{content:'\f123'}.zmdi-car-wash:before{content:'\f124'}.zmdi-car:before{content:'\f125'}.zmdi-card-giftcard:before{content:'\f126'}.zmdi-card-membership:before{content:'\f127'}.zmdi-card-travel:before{content:'\f128'}.zmdi-card:before{content:'\f129'}.zmdi-case-check:before{content:'\f12a'}.zmdi-case-download:before{content:'\f12b'}.zmdi-case-play:before{content:'\f12c'}.zmdi-case:before{content:'\f12d'}.zmdi-cast-connected:before{content:'\f12e'}.zmdi-cast:before{content:'\f12f'}.zmdi-chart-donut:before{content:'\f130'}.zmdi-chart:before{content:'\f131'}.zmdi-city-alt:before{content:'\f132'}.zmdi-city:before{content:'\f133'}.zmdi-close-circle-o:before{content:'\f134'}.zmdi-close-circle:before{content:'\f135'}.zmdi-close:before{content:'\f136'}.zmdi-cocktail:before{content:'\f137'}.zmdi-code-setting:before{content:'\f138'}.zmdi-code-smartphone:before{content:'\f139'}.zmdi-code:before{content:'\f13a'}.zmdi-coffee:before{content:'\f13b'}.zmdi-collection-bookmark:before{content:'\f13c'}.zmdi-collection-case-play:before{content:'\f13d'}.zmdi-collection-folder-image:before{content:'\f13e'}.zmdi-collection-image-o:before{content:'\f13f'}.zmdi-collection-image:before{content:'\f140'}.zmdi-collection-item-1:before{content:'\f141'}.zmdi-collection-item-2:before{content:'\f142'}.zmdi-collection-item-3:before{content:'\f143'}.zmdi-collection-item-4:before{content:'\f144'}.zmdi-collection-item-5:before{content:'\f145'}.zmdi-collection-item-6:before{content:'\f146'}.zmdi-collection-item-7:before{content:'\f147'}.zmdi-collection-item-8:before{content:'\f148'}.zmdi-collection-item-9-plus:before{content:'\f149'}.zmdi-collection-item-9:before{content:'\f14a'}.zmdi-collection-item:before{content:'\f14b'}.zmdi-collection-music:before{content:'\f14c'}.zmdi-collection-pdf:before{content:'\f14d'}.zmdi-collection-plus:before{content:'\f14e'}.zmdi-collection-speaker:before{content:'\f14f'}.zmdi-collection-text:before{content:'\f150'}.zmdi-collection-video:before{content:'\f151'}.zmdi-compass:before{content:'\f152'}.zmdi-cutlery:before{content:'\f153'}.zmdi-delete:before{content:'\f154'}.zmdi-dialpad:before{content:'\f155'}.zmdi-dns:before{content:'\f156'}.zmdi-drink:before{content:'\f157'}.zmdi-edit:before{content:'\f158'}.zmdi-email-open:before{content:'\f159'}.zmdi-email:before{content:'\f15a'}.zmdi-eye-off:before{content:'\f15b'}.zmdi-eye:before{content:'\f15c'}.zmdi-eyedropper:before{content:'\f15d'}.zmdi-favorite-outline:before{content:'\f15e'}.zmdi-favorite:before{content:'\f15f'}.zmdi-filter-list:before{content:'\f160'}.zmdi-fire:before{content:'\f161'}.zmdi-flag:before{content:'\f162'}.zmdi-flare:before{content:'\f163'}.zmdi-flash-auto:before{content:'\f164'}.zmdi-flash-off:before{content:'\f165'}.zmdi-flash:before{content:'\f166'}.zmdi-flip:before{content:'\f167'}.zmdi-flower-alt:before{content:'\f168'}.zmdi-flower:before{content:'\f169'}.zmdi-font:before{content:'\f16a'}.zmdi-fullscreen-alt:before{content:'\f16b'}.zmdi-fullscreen-exit:before{content:'\f16c'}.zmdi-fullscreen:before{content:'\f16d'}.zmdi-functions:before{content:'\f16e'}.zmdi-gas-station:before{content:'\f16f'}.zmdi-gesture:before{content:'\f170'}.zmdi-globe-alt:before{content:'\f171'}.zmdi-globe-lock:before{content:'\f172'}.zmdi-globe:before{content:'\f173'}.zmdi-graduation-cap:before{content:'\f174'}.zmdi-home:before{content:'\f175'}.zmdi-hospital-alt:before{content:'\f176'}.zmdi-hospital:before{content:'\f177'}.zmdi-hotel:before{content:'\f178'}.zmdi-hourglass-alt:before{content:'\f179'}.zmdi-hourglass-outline:before{content:'\f17a'}.zmdi-hourglass:before{content:'\f17b'}.zmdi-http:before{content:'\f17c'}.zmdi-image-alt:before{content:'\f17d'}.zmdi-image-o:before{content:'\f17e'}.zmdi-image:before{content:'\f17f'}.zmdi-inbox:before{content:'\f180'}.zmdi-invert-colors-off:before{content:'\f181'}.zmdi-invert-colors:before{content:'\f182'}.zmdi-key:before{content:'\f183'}.zmdi-label-alt-outline:before{content:'\f184'}.zmdi-label-alt:before{content:'\f185'}.zmdi-label-heart:before{content:'\f186'}.zmdi-label:before{content:'\f187'}.zmdi-labels:before{content:'\f188'}.zmdi-lamp:before{content:'\f189'}.zmdi-landscape:before{content:'\f18a'}.zmdi-layers-off:before{content:'\f18b'}.zmdi-layers:before{content:'\f18c'}.zmdi-library:before{content:'\f18d'}.zmdi-link:before{content:'\f18e'}.zmdi-lock-open:before{content:'\f18f'}.zmdi-lock-outline:before{content:'\f190'}.zmdi-lock:before{content:'\f191'}.zmdi-mail-reply-all:before{content:'\f192'}.zmdi-mail-reply:before{content:'\f193'}.zmdi-mail-send:before{content:'\f194'}.zmdi-mall:before{content:'\f195'}.zmdi-map:before{content:'\f196'}.zmdi-menu:before{content:'\f197'}.zmdi-money-box:before{content:'\f198'}.zmdi-money-off:before{content:'\f199'}.zmdi-money:before{content:'\f19a'}.zmdi-more-vert:before{content:'\f19b'}.zmdi-more:before{content:'\f19c'}.zmdi-movie-alt:before{content:'\f19d'}.zmdi-movie:before{content:'\f19e'}.zmdi-nature-people:before{content:'\f19f'}.zmdi-nature:before{content:'\f1a0'}.zmdi-navigation:before{content:'\f1a1'}.zmdi-open-in-browser:before{content:'\f1a2'}.zmdi-open-in-new:before{content:'\f1a3'}.zmdi-palette:before{content:'\f1a4'}.zmdi-parking:before{content:'\f1a5'}.zmdi-pin-account:before{content:'\f1a6'}.zmdi-pin-assistant:before{content:'\f1a7'}.zmdi-pin-drop:before{content:'\f1a8'}.zmdi-pin-help:before{content:'\f1a9'}.zmdi-pin-off:before{content:'\f1aa'}.zmdi-pin:before{content:'\f1ab'}.zmdi-pizza:before{content:'\f1ac'}.zmdi-plaster:before{content:'\f1ad'}.zmdi-power-setting:before{content:'\f1ae'}.zmdi-power:before{content:'\f1af'}.zmdi-print:before{content:'\f1b0'}.zmdi-puzzle-piece:before{content:'\f1b1'}.zmdi-quote:before{content:'\f1b2'}.zmdi-railway:before{content:'\f1b3'}.zmdi-receipt:before{content:'\f1b4'}.zmdi-refresh-alt:before{content:'\f1b5'}.zmdi-refresh-sync-alert:before{content:'\f1b6'}.zmdi-refresh-sync-off:before{content:'\f1b7'}.zmdi-refresh-sync:before{content:'\f1b8'}.zmdi-refresh:before{content:'\f1b9'}.zmdi-roller:before{content:'\f1ba'}.zmdi-ruler:before{content:'\f1bb'}.zmdi-scissors:before{content:'\f1bc'}.zmdi-screen-rotation-lock:before{content:'\f1bd'}.zmdi-screen-rotation:before{content:'\f1be'}.zmdi-search-for:before{content:'\f1bf'}.zmdi-search-in-file:before{content:'\f1c0'}.zmdi-search-in-page:before{content:'\f1c1'}.zmdi-search-replace:before{content:'\f1c2'}.zmdi-search:before{content:'\f1c3'}.zmdi-seat:before{content:'\f1c4'}.zmdi-settings-square:before{content:'\f1c5'}.zmdi-settings:before{content:'\f1c6'}.zmdi-shield-check:before{content:'\f1c7'}.zmdi-shield-security:before{content:'\f1c8'}.zmdi-shopping-basket:before{content:'\f1c9'}.zmdi-shopping-cart-plus:before{content:'\f1ca'}.zmdi-shopping-cart:before{content:'\f1cb'}.zmdi-sign-in:before{content:'\f1cc'}.zmdi-sort-amount-asc:before{content:'\f1cd'}.zmdi-sort-amount-desc:before{content:'\f1ce'}.zmdi-sort-asc:before{content:'\f1cf'}.zmdi-sort-desc:before{content:'\f1d0'}.zmdi-spellcheck:before{content:'\f1d1'}.zmdi-storage:before{content:'\f1d2'}.zmdi-store-24:before{content:'\f1d3'}.zmdi-store:before{content:'\f1d4'}.zmdi-subway:before{content:'\f1d5'}.zmdi-sun:before{content:'\f1d6'}.zmdi-tab-unselected:before{content:'\f1d7'}.zmdi-tab:before{content:'\f1d8'}.zmdi-tag-close:before{content:'\f1d9'}.zmdi-tag-more:before{content:'\f1da'}.zmdi-tag:before{content:'\f1db'}.zmdi-thumb-down:before{content:'\f1dc'}.zmdi-thumb-up-down:before{content:'\f1dd'}.zmdi-thumb-up:before{content:'\f1de'}.zmdi-ticket-star:before{content:'\f1df'}.zmdi-toll:before{content:'\f1e0'}.zmdi-toys:before{content:'\f1e1'}.zmdi-traffic:before{content:'\f1e2'}.zmdi-translate:before{content:'\f1e3'}.zmdi-triangle-down:before{content:'\f1e4'}.zmdi-triangle-up:before{content:'\f1e5'}.zmdi-truck:before{content:'\f1e6'}.zmdi-turning-sign:before{content:'\f1e7'}.zmdi-wallpaper:before{content:'\f1e8'}.zmdi-washing-machine:before{content:'\f1e9'}.zmdi-window-maximize:before{content:'\f1ea'}.zmdi-window-minimize:before{content:'\f1eb'}.zmdi-window-restore:before{content:'\f1ec'}.zmdi-wrench:before{content:'\f1ed'}.zmdi-zoom-in:before{content:'\f1ee'}.zmdi-zoom-out:before{content:'\f1ef'}.zmdi-alert-circle-o:before{content:'\f1f0'}.zmdi-alert-circle:before{content:'\f1f1'}.zmdi-alert-octagon:before{content:'\f1f2'}.zmdi-alert-polygon:before{content:'\f1f3'}.zmdi-alert-triangle:before{content:'\f1f4'}.zmdi-help-outline:before{content:'\f1f5'}.zmdi-help:before{content:'\f1f6'}.zmdi-info-outline:before{content:'\f1f7'}.zmdi-info:before{content:'\f1f8'}.zmdi-notifications-active:before{content:'\f1f9'}.zmdi-notifications-add:before{content:'\f1fa'}.zmdi-notifications-none:before{content:'\f1fb'}.zmdi-notifications-off:before{content:'\f1fc'}.zmdi-notifications-paused:before{content:'\f1fd'}.zmdi-notifications:before{content:'\f1fe'}.zmdi-account-add:before{content:'\f1ff'}.zmdi-account-box-mail:before{content:'\f200'}.zmdi-account-box-o:before{content:'\f201'}.zmdi-account-box-phone:before{content:'\f202'}.zmdi-account-box:before{content:'\f203'}.zmdi-account-calendar:before{content:'\f204'}.zmdi-account-circle:before{content:'\f205'}.zmdi-account-o:before{content:'\f206'}.zmdi-account:before{content:'\f207'}.zmdi-accounts-add:before{content:'\f208'}.zmdi-accounts-alt:before{content:'\f209'}.zmdi-accounts-list-alt:before{content:'\f20a'}.zmdi-accounts-list:before{content:'\f20b'}.zmdi-accounts-outline:before{content:'\f20c'}.zmdi-accounts:before{content:'\f20d'}.zmdi-face:before{content:'\f20e'}.zmdi-female:before{content:'\f20f'}.zmdi-male-alt:before{content:'\f210'}.zmdi-male-female:before{content:'\f211'}.zmdi-male:before{content:'\f212'}.zmdi-mood-bad:before{content:'\f213'}.zmdi-mood:before{content:'\f214'}.zmdi-run:before{content:'\f215'}.zmdi-walk:before{content:'\f216'}.zmdi-cloud-box:before{content:'\f217'}.zmdi-cloud-circle:before{content:'\f218'}.zmdi-cloud-done:before{content:'\f219'}.zmdi-cloud-download:before{content:'\f21a'}.zmdi-cloud-off:before{content:'\f21b'}.zmdi-cloud-outline-alt:before{content:'\f21c'}.zmdi-cloud-outline:before{content:'\f21d'}.zmdi-cloud-upload:before{content:'\f21e'}.zmdi-cloud:before{content:'\f21f'}.zmdi-download:before{content:'\f220'}.zmdi-file-plus:before{content:'\f221'}.zmdi-file-text:before{content:'\f222'}.zmdi-file:before{content:'\f223'}.zmdi-folder-outline:before{content:'\f224'}.zmdi-folder-person:before{content:'\f225'}.zmdi-folder-star-alt:before{content:'\f226'}.zmdi-folder-star:before{content:'\f227'}.zmdi-folder:before{content:'\f228'}.zmdi-gif:before{content:'\f229'}.zmdi-upload:before{content:'\f22a'}.zmdi-border-all:before{content:'\f22b'}.zmdi-border-bottom:before{content:'\f22c'}.zmdi-border-clear:before{content:'\f22d'}.zmdi-border-color:before{content:'\f22e'}.zmdi-border-horizontal:before{content:'\f22f'}.zmdi-border-inner:before{content:'\f230'}.zmdi-border-left:before{content:'\f231'}.zmdi-border-outer:before{content:'\f232'}.zmdi-border-right:before{content:'\f233'}.zmdi-border-style:before{content:'\f234'}.zmdi-border-top:before{content:'\f235'}.zmdi-border-vertical:before{content:'\f236'}.zmdi-copy:before{content:'\f237'}.zmdi-crop:before{content:'\f238'}.zmdi-format-align-center:before{content:'\f239'}.zmdi-format-align-justify:before{content:'\f23a'}.zmdi-format-align-left:before{content:'\f23b'}.zmdi-format-align-right:before{content:'\f23c'}.zmdi-format-bold:before{content:'\f23d'}.zmdi-format-clear-all:before{content:'\f23e'}.zmdi-format-clear:before{content:'\f23f'}.zmdi-format-color-fill:before{content:'\f240'}.zmdi-format-color-reset:before{content:'\f241'}.zmdi-format-color-text:before{content:'\f242'}.zmdi-format-indent-decrease:before{content:'\f243'}.zmdi-format-indent-increase:before{content:'\f244'}.zmdi-format-italic:before{content:'\f245'}.zmdi-format-line-spacing:before{content:'\f246'}.zmdi-format-list-bulleted:before{content:'\f247'}.zmdi-format-list-numbered:before{content:'\f248'}.zmdi-format-ltr:before{content:'\f249'}.zmdi-format-rtl:before{content:'\f24a'}.zmdi-format-size:before{content:'\f24b'}.zmdi-format-strikethrough-s:before{content:'\f24c'}.zmdi-format-strikethrough:before{content:'\f24d'}.zmdi-format-subject:before{content:'\f24e'}.zmdi-format-underlined:before{content:'\f24f'}.zmdi-format-valign-bottom:before{content:'\f250'}.zmdi-format-valign-center:before{content:'\f251'}.zmdi-format-valign-top:before{content:'\f252'}.zmdi-redo:before{content:'\f253'}.zmdi-select-all:before{content:'\f254'}.zmdi-space-bar:before{content:'\f255'}.zmdi-text-format:before{content:'\f256'}.zmdi-transform:before{content:'\f257'}.zmdi-undo:before{content:'\f258'}.zmdi-wrap-text:before{content:'\f259'}.zmdi-comment-alert:before{content:'\f25a'}.zmdi-comment-alt-text:before{content:'\f25b'}.zmdi-comment-alt:before{content:'\f25c'}.zmdi-comment-edit:before{content:'\f25d'}.zmdi-comment-image:before{content:'\f25e'}.zmdi-comment-list:before{content:'\f25f'}.zmdi-comment-more:before{content:'\f260'}.zmdi-comment-outline:before{content:'\f261'}.zmdi-comment-text-alt:before{content:'\f262'}.zmdi-comment-text:before{content:'\f263'}.zmdi-comment-video:before{content:'\f264'}.zmdi-comment:before{content:'\f265'}.zmdi-comments:before{content:'\f266'}.zmdi-check-all:before{content:'\f267'}.zmdi-check-circle-u:before{content:'\f268'}.zmdi-check-circle:before{content:'\f269'}.zmdi-check-square:before{content:'\f26a'}.zmdi-check:before{content:'\f26b'}.zmdi-circle-o:before{content:'\f26c'}.zmdi-circle:before{content:'\f26d'}.zmdi-dot-circle-alt:before{content:'\f26e'}.zmdi-dot-circle:before{content:'\f26f'}.zmdi-minus-circle-outline:before{content:'\f270'}.zmdi-minus-circle:before{content:'\f271'}.zmdi-minus-square:before{content:'\f272'}.zmdi-minus:before{content:'\f273'}.zmdi-plus-circle-o-duplicate:before{content:'\f274'}.zmdi-plus-circle-o:before{content:'\f275'}.zmdi-plus-circle:before{content:'\f276'}.zmdi-plus-square:before{content:'\f277'}.zmdi-plus:before{content:'\f278'}.zmdi-square-o:before{content:'\f279'}.zmdi-star-circle:before{content:'\f27a'}.zmdi-star-half:before{content:'\f27b'}.zmdi-star-outline:before{content:'\f27c'}.zmdi-star:before{content:'\f27d'}.zmdi-bluetooth-connected:before{content:'\f27e'}.zmdi-bluetooth-off:before{content:'\f27f'}.zmdi-bluetooth-search:before{content:'\f280'}.zmdi-bluetooth-setting:before{content:'\f281'}.zmdi-bluetooth:before{content:'\f282'}.zmdi-camera-add:before{content:'\f283'}.zmdi-camera-alt:before{content:'\f284'}.zmdi-camera-bw:before{content:'\f285'}.zmdi-camera-front:before{content:'\f286'}.zmdi-camera-mic:before{content:'\f287'}.zmdi-camera-party-mode:before{content:'\f288'}.zmdi-camera-rear:before{content:'\f289'}.zmdi-camera-roll:before{content:'\f28a'}.zmdi-camera-switch:before{content:'\f28b'}.zmdi-camera:before{content:'\f28c'}.zmdi-card-alert:before{content:'\f28d'}.zmdi-card-off:before{content:'\f28e'}.zmdi-card-sd:before{content:'\f28f'}.zmdi-card-sim:before{content:'\f290'}.zmdi-desktop-mac:before{content:'\f291'}.zmdi-desktop-windows:before{content:'\f292'}.zmdi-device-hub:before{content:'\f293'}.zmdi-devices-off:before{content:'\f294'}.zmdi-devices:before{content:'\f295'}.zmdi-dock:before{content:'\f296'}.zmdi-floppy:before{content:'\f297'}.zmdi-gamepad:before{content:'\f298'}.zmdi-gps-dot:before{content:'\f299'}.zmdi-gps-off:before{content:'\f29a'}.zmdi-gps:before{content:'\f29b'}.zmdi-headset-mic:before{content:'\f29c'}.zmdi-headset:before{content:'\f29d'}.zmdi-input-antenna:before{content:'\f29e'}.zmdi-input-composite:before{content:'\f29f'}.zmdi-input-hdmi:before{content:'\f2a0'}.zmdi-input-power:before{content:'\f2a1'}.zmdi-input-svideo:before{content:'\f2a2'}.zmdi-keyboard-hide:before{content:'\f2a3'}.zmdi-keyboard:before{content:'\f2a4'}.zmdi-laptop-chromebook:before{content:'\f2a5'}.zmdi-laptop-mac:before{content:'\f2a6'}.zmdi-laptop:before{content:'\f2a7'}.zmdi-mic-off:before{content:'\f2a8'}.zmdi-mic-outline:before{content:'\f2a9'}.zmdi-mic-setting:before{content:'\f2aa'}.zmdi-mic:before{content:'\f2ab'}.zmdi-mouse:before{content:'\f2ac'}.zmdi-network-alert:before{content:'\f2ad'}.zmdi-network-locked:before{content:'\f2ae'}.zmdi-network-off:before{content:'\f2af'}.zmdi-network-outline:before{content:'\f2b0'}.zmdi-network-setting:before{content:'\f2b1'}.zmdi-network:before{content:'\f2b2'}.zmdi-phone-bluetooth:before{content:'\f2b3'}.zmdi-phone-end:before{content:'\f2b4'}.zmdi-phone-forwarded:before{content:'\f2b5'}.zmdi-phone-in-talk:before{content:'\f2b6'}.zmdi-phone-locked:before{content:'\f2b7'}.zmdi-phone-missed:before{content:'\f2b8'}.zmdi-phone-msg:before{content:'\f2b9'}.zmdi-phone-paused:before{content:'\f2ba'}.zmdi-phone-ring:before{content:'\f2bb'}.zmdi-phone-setting:before{content:'\f2bc'}.zmdi-phone-sip:before{content:'\f2bd'}.zmdi-phone:before{content:'\f2be'}.zmdi-portable-wifi-changes:before{content:'\f2bf'}.zmdi-portable-wifi-off:before{content:'\f2c0'}.zmdi-portable-wifi:before{content:'\f2c1'}.zmdi-radio:before{content:'\f2c2'}.zmdi-reader:before{content:'\f2c3'}.zmdi-remote-control-alt:before{content:'\f2c4'}.zmdi-remote-control:before{content:'\f2c5'}.zmdi-router:before{content:'\f2c6'}.zmdi-scanner:before{content:'\f2c7'}.zmdi-smartphone-android:before{content:'\f2c8'}.zmdi-smartphone-download:before{content:'\f2c9'}.zmdi-smartphone-erase:before{content:'\f2ca'}.zmdi-smartphone-info:before{content:'\f2cb'}.zmdi-smartphone-iphone:before{content:'\f2cc'}.zmdi-smartphone-landscape-lock:before{content:'\f2cd'}.zmdi-smartphone-landscape:before{content:'\f2ce'}.zmdi-smartphone-lock:before{content:'\f2cf'}.zmdi-smartphone-portrait-lock:before{content:'\f2d0'}.zmdi-smartphone-ring:before{content:'\f2d1'}.zmdi-smartphone-setting:before{content:'\f2d2'}.zmdi-smartphone-setup:before{content:'\f2d3'}.zmdi-smartphone:before{content:'\f2d4'}.zmdi-speaker:before{content:'\f2d5'}.zmdi-tablet-android:before{content:'\f2d6'}.zmdi-tablet-mac:before{content:'\f2d7'}.zmdi-tablet:before{content:'\f2d8'}.zmdi-tv-alt-play:before{content:'\f2d9'}.zmdi-tv-list:before{content:'\f2da'}.zmdi-tv-play:before{content:'\f2db'}.zmdi-tv:before{content:'\f2dc'}.zmdi-usb:before{content:'\f2dd'}.zmdi-videocam-off:before{content:'\f2de'}.zmdi-videocam-switch:before{content:'\f2df'}.zmdi-videocam:before{content:'\f2e0'}.zmdi-watch:before{content:'\f2e1'}.zmdi-wifi-alt-2:before{content:'\f2e2'}.zmdi-wifi-alt:before{content:'\f2e3'}.zmdi-wifi-info:before{content:'\f2e4'}.zmdi-wifi-lock:before{content:'\f2e5'}.zmdi-wifi-off:before{content:'\f2e6'}.zmdi-wifi-outline:before{content:'\f2e7'}.zmdi-wifi:before{content:'\f2e8'}.zmdi-arrow-left-bottom:before{content:'\f2e9'}.zmdi-arrow-left:before{content:'\f2ea'}.zmdi-arrow-merge:before{content:'\f2eb'}.zmdi-arrow-missed:before{content:'\f2ec'}.zmdi-arrow-right-top:before{content:'\f2ed'}.zmdi-arrow-right:before{content:'\f2ee'}.zmdi-arrow-split:before{content:'\f2ef'}.zmdi-arrows:before{content:'\f2f0'}.zmdi-caret-down-circle:before{content:'\f2f1'}.zmdi-caret-down:before{content:'\f2f2'}.zmdi-caret-left-circle:before{content:'\f2f3'}.zmdi-caret-left:before{content:'\f2f4'}.zmdi-caret-right-circle:before{content:'\f2f5'}.zmdi-caret-right:before{content:'\f2f6'}.zmdi-caret-up-circle:before{content:'\f2f7'}.zmdi-caret-up:before{content:'\f2f8'}.zmdi-chevron-down:before{content:'\f2f9'}.zmdi-chevron-left:before{content:'\f2fa'}.zmdi-chevron-right:before{content:'\f2fb'}.zmdi-chevron-up:before{content:'\f2fc'}.zmdi-forward:before{content:'\f2fd'}.zmdi-long-arrow-down:before{content:'\f2fe'}.zmdi-long-arrow-left:before{content:'\f2ff'}.zmdi-long-arrow-return:before{content:'\f300'}.zmdi-long-arrow-right:before{content:'\f301'}.zmdi-long-arrow-tab:before{content:'\f302'}.zmdi-long-arrow-up:before{content:'\f303'}.zmdi-rotate-ccw:before{content:'\f304'}.zmdi-rotate-cw:before{content:'\f305'}.zmdi-rotate-left:before{content:'\f306'}.zmdi-rotate-right:before{content:'\f307'}.zmdi-square-down:before{content:'\f308'}.zmdi-square-right:before{content:'\f309'}.zmdi-swap-alt:before{content:'\f30a'}.zmdi-swap-vertical-circle:before{content:'\f30b'}.zmdi-swap-vertical:before{content:'\f30c'}.zmdi-swap:before{content:'\f30d'}.zmdi-trending-down:before{content:'\f30e'}.zmdi-trending-flat:before{content:'\f30f'}.zmdi-trending-up:before{content:'\f310'}.zmdi-unfold-less:before{content:'\f311'}.zmdi-unfold-more:before{content:'\f312'}.zmdi-apps:before{content:'\f313'}.zmdi-grid-off:before{content:'\f314'}.zmdi-grid:before{content:'\f315'}.zmdi-view-agenda:before{content:'\f316'}.zmdi-view-array:before{content:'\f317'}.zmdi-view-carousel:before{content:'\f318'}.zmdi-view-column:before{content:'\f319'}.zmdi-view-comfy:before{content:'\f31a'}.zmdi-view-compact:before{content:'\f31b'}.zmdi-view-dashboard:before{content:'\f31c'}.zmdi-view-day:before{content:'\f31d'}.zmdi-view-headline:before{content:'\f31e'}.zmdi-view-list-alt:before{content:'\f31f'}.zmdi-view-list:before{content:'\f320'}.zmdi-view-module:before{content:'\f321'}.zmdi-view-quilt:before{content:'\f322'}.zmdi-view-stream:before{content:'\f323'}.zmdi-view-subtitles:before{content:'\f324'}.zmdi-view-toc:before{content:'\f325'}.zmdi-view-web:before{content:'\f326'}.zmdi-view-week:before{content:'\f327'}.zmdi-widgets:before{content:'\f328'}.zmdi-alarm-check:before{content:'\f329'}.zmdi-alarm-off:before{content:'\f32a'}.zmdi-alarm-plus:before{content:'\f32b'}.zmdi-alarm-snooze:before{content:'\f32c'}.zmdi-alarm:before{content:'\f32d'}.zmdi-calendar-alt:before{content:'\f32e'}.zmdi-calendar-check:before{content:'\f32f'}.zmdi-calendar-close:before{content:'\f330'}.zmdi-calendar-note:before{content:'\f331'}.zmdi-calendar:before{content:'\f332'}.zmdi-time-countdown:before{content:'\f333'}.zmdi-time-interval:before{content:'\f334'}.zmdi-time-restore-setting:before{content:'\f335'}.zmdi-time-restore:before{content:'\f336'}.zmdi-time:before{content:'\f337'}.zmdi-timer-off:before{content:'\f338'}.zmdi-timer:before{content:'\f339'}.zmdi-android-alt:before{content:'\f33a'}.zmdi-android:before{content:'\f33b'}.zmdi-apple:before{content:'\f33c'}.zmdi-behance:before{content:'\f33d'}.zmdi-codepen:before{content:'\f33e'}.zmdi-dribbble:before{content:'\f33f'}.zmdi-dropbox:before{content:'\f340'}.zmdi-evernote:before{content:'\f341'}.zmdi-facebook-box:before{content:'\f342'}.zmdi-facebook:before{content:'\f343'}.zmdi-github-box:before{content:'\f344'}.zmdi-github:before{content:'\f345'}.zmdi-google-drive:before{content:'\f346'}.zmdi-google-earth:before{content:'\f347'}.zmdi-google-glass:before{content:'\f348'}.zmdi-google-maps:before{content:'\f349'}.zmdi-google-pages:before{content:'\f34a'}.zmdi-google-play:before{content:'\f34b'}.zmdi-google-plus-box:before{content:'\f34c'}.zmdi-google-plus:before{content:'\f34d'}.zmdi-google:before{content:'\f34e'}.zmdi-instagram:before{content:'\f34f'}.zmdi-language-css3:before{content:'\f350'}.zmdi-language-html5:before{content:'\f351'}.zmdi-language-javascript:before{content:'\f352'}.zmdi-language-python-alt:before{content:'\f353'}.zmdi-language-python:before{content:'\f354'}.zmdi-lastfm:before{content:'\f355'}.zmdi-linkedin-box:before{content:'\f356'}.zmdi-paypal:before{content:'\f357'}.zmdi-pinterest-box:before{content:'\f358'}.zmdi-pocket:before{content:'\f359'}.zmdi-polymer:before{content:'\f35a'}.zmdi-share:before{content:'\f35b'}.zmdi-stackoverflow:before{content:'\f35c'}.zmdi-steam-square:before{content:'\f35d'}.zmdi-steam:before{content:'\f35e'}.zmdi-twitter-box:before{content:'\f35f'}.zmdi-twitter:before{content:'\f360'}.zmdi-vk:before{content:'\f361'}.zmdi-wikipedia:before{content:'\f362'}.zmdi-windows:before{content:'\f363'}.zmdi-aspect-ratio-alt:before{content:'\f364'}.zmdi-aspect-ratio:before{content:'\f365'}.zmdi-blur-circular:before{content:'\f366'}.zmdi-blur-linear:before{content:'\f367'}.zmdi-blur-off:before{content:'\f368'}.zmdi-blur:before{content:'\f369'}.zmdi-brightness-2:before{content:'\f36a'}.zmdi-brightness-3:before{content:'\f36b'}.zmdi-brightness-4:before{content:'\f36c'}.zmdi-brightness-5:before{content:'\f36d'}.zmdi-brightness-6:before{content:'\f36e'}.zmdi-brightness-7:before{content:'\f36f'}.zmdi-brightness-auto:before{content:'\f370'}.zmdi-brightness-setting:before{content:'\f371'}.zmdi-broken-image:before{content:'\f372'}.zmdi-center-focus-strong:before{content:'\f373'}.zmdi-center-focus-weak:before{content:'\f374'}.zmdi-compare:before{content:'\f375'}.zmdi-crop-16-9:before{content:'\f376'}.zmdi-crop-3-2:before{content:'\f377'}.zmdi-crop-5-4:before{content:'\f378'}.zmdi-crop-7-5:before{content:'\f379'}.zmdi-crop-din:before{content:'\f37a'}.zmdi-crop-free:before{content:'\f37b'}.zmdi-crop-landscape:before{content:'\f37c'}.zmdi-crop-portrait:before{content:'\f37d'}.zmdi-crop-square:before{content:'\f37e'}.zmdi-exposure-alt:before{content:'\f37f'}.zmdi-exposure:before{content:'\f380'}.zmdi-filter-b-and-w:before{content:'\f381'}.zmdi-filter-center-focus:before{content:'\f382'}.zmdi-filter-frames:before{content:'\f383'}.zmdi-filter-tilt-shift:before{content:'\f384'}.zmdi-gradient:before{content:'\f385'}.zmdi-grain:before{content:'\f386'}.zmdi-graphic-eq:before{content:'\f387'}.zmdi-hdr-off:before{content:'\f388'}.zmdi-hdr-strong:before{content:'\f389'}.zmdi-hdr-weak:before{content:'\f38a'}.zmdi-hdr:before{content:'\f38b'}.zmdi-iridescent:before{content:'\f38c'}.zmdi-leak-off:before{content:'\f38d'}.zmdi-leak:before{content:'\f38e'}.zmdi-looks:before{content:'\f38f'}.zmdi-loupe:before{content:'\f390'}.zmdi-panorama-horizontal:before{content:'\f391'}.zmdi-panorama-vertical:before{content:'\f392'}.zmdi-panorama-wide-angle:before{content:'\f393'}.zmdi-photo-size-select-large:before{content:'\f394'}.zmdi-photo-size-select-small:before{content:'\f395'}.zmdi-picture-in-picture:before{content:'\f396'}.zmdi-slideshow:before{content:'\f397'}.zmdi-texture:before{content:'\f398'}.zmdi-tonality:before{content:'\f399'}.zmdi-vignette:before{content:'\f39a'}.zmdi-wb-auto:before{content:'\f39b'}.zmdi-eject-alt:before{content:'\f39c'}.zmdi-eject:before{content:'\f39d'}.zmdi-equalizer:before{content:'\f39e'}.zmdi-fast-forward:before{content:'\f39f'}.zmdi-fast-rewind:before{content:'\f3a0'}.zmdi-forward-10:before{content:'\f3a1'}.zmdi-forward-30:before{content:'\f3a2'}.zmdi-forward-5:before{content:'\f3a3'}.zmdi-hearing:before{content:'\f3a4'}.zmdi-pause-circle-outline:before{content:'\f3a5'}.zmdi-pause-circle:before{content:'\f3a6'}.zmdi-pause:before{content:'\f3a7'}.zmdi-play-circle-outline:before{content:'\f3a8'}.zmdi-play-circle:before{content:'\f3a9'}.zmdi-play:before{content:'\f3aa'}.zmdi-playlist-audio:before{content:'\f3ab'}.zmdi-playlist-plus:before{content:'\f3ac'}.zmdi-repeat-one:before{content:'\f3ad'}.zmdi-repeat:before{content:'\f3ae'}.zmdi-replay-10:before{content:'\f3af'}.zmdi-replay-30:before{content:'\f3b0'}.zmdi-replay-5:before{content:'\f3b1'}.zmdi-replay:before{content:'\f3b2'}.zmdi-shuffle:before{content:'\f3b3'}.zmdi-skip-next:before{content:'\f3b4'}.zmdi-skip-previous:before{content:'\f3b5'}.zmdi-stop:before{content:'\f3b6'}.zmdi-surround-sound:before{content:'\f3b7'}.zmdi-tune:before{content:'\f3b8'}.zmdi-volume-down:before{content:'\f3b9'}.zmdi-volume-mute:before{content:'\f3ba'}.zmdi-volume-off:before{content:'\f3bb'}.zmdi-volume-up:before{content:'\f3bc'}.zmdi-n-1-square:before{content:'\f3bd'}.zmdi-n-2-square:before{content:'\f3be'}.zmdi-n-3-square:before{content:'\f3bf'}.zmdi-n-4-square:before{content:'\f3c0'}.zmdi-n-5-square:before{content:'\f3c1'}.zmdi-n-6-square:before{content:'\f3c2'}.zmdi-neg-1:before{content:'\f3c3'}.zmdi-neg-2:before{content:'\f3c4'}.zmdi-plus-1:before{content:'\f3c5'}.zmdi-plus-2:before{content:'\f3c6'}.zmdi-sec-10:before{content:'\f3c7'}.zmdi-sec-3:before{content:'\f3c8'}.zmdi-zero:before{content:'\f3c9'}.zmdi-airline-seat-flat-angled:before{content:'\f3ca'}.zmdi-airline-seat-flat:before{content:'\f3cb'}.zmdi-airline-seat-individual-suite:before{content:'\f3cc'}.zmdi-airline-seat-legroom-extra:before{content:'\f3cd'}.zmdi-airline-seat-legroom-normal:before{content:'\f3ce'}.zmdi-airline-seat-legroom-reduced:before{content:'\f3cf'}.zmdi-airline-seat-recline-extra:before{content:'\f3d0'}.zmdi-airline-seat-recline-normal:before{content:'\f3d1'}.zmdi-airplay:before{content:'\f3d2'}.zmdi-closed-caption:before{content:'\f3d3'}.zmdi-confirmation-number:before{content:'\f3d4'}.zmdi-developer-board:before{content:'\f3d5'}.zmdi-disc-full:before{content:'\f3d6'}.zmdi-explicit:before{content:'\f3d7'}.zmdi-flight-land:before{content:'\f3d8'}.zmdi-flight-takeoff:before{content:'\f3d9'}.zmdi-flip-to-back:before{content:'\f3da'}.zmdi-flip-to-front:before{content:'\f3db'}.zmdi-group-work:before{content:'\f3dc'}.zmdi-hd:before{content:'\f3dd'}.zmdi-hq:before{content:'\f3de'}.zmdi-markunread-mailbox:before{content:'\f3df'}.zmdi-memory:before{content:'\f3e0'}.zmdi-nfc:before{content:'\f3e1'}.zmdi-play-for-work:before{content:'\f3e2'}.zmdi-power-input:before{content:'\f3e3'}.zmdi-present-to-all:before{content:'\f3e4'}.zmdi-satellite:before{content:'\f3e5'}.zmdi-tap-and-play:before{content:'\f3e6'}.zmdi-vibration:before{content:'\f3e7'}.zmdi-voicemail:before{content:'\f3e8'}.zmdi-group:before{content:'\f3e9'}.zmdi-rss:before{content:'\f3ea'}.zmdi-shape:before{content:'\f3eb'}.zmdi-spinner:before{content:'\f3ec'}.zmdi-ungroup:before{content:'\f3ed'}.zmdi-500px:before{content:'\f3ee'}.zmdi-8tracks:before{content:'\f3ef'}.zmdi-amazon:before{content:'\f3f0'}.zmdi-blogger:before{content:'\f3f1'}.zmdi-delicious:before{content:'\f3f2'}.zmdi-disqus:before{content:'\f3f3'}.zmdi-flattr:before{content:'\f3f4'}.zmdi-flickr:before{content:'\f3f5'}.zmdi-github-alt:before{content:'\f3f6'}.zmdi-google-old:before{content:'\f3f7'}.zmdi-linkedin:before{content:'\f3f8'}.zmdi-odnoklassniki:before{content:'\f3f9'}.zmdi-outlook:before{content:'\f3fa'}.zmdi-paypal-alt:before{content:'\f3fb'}.zmdi-pinterest:before{content:'\f3fc'}.zmdi-playstation:before{content:'\f3fd'}.zmdi-reddit:before{content:'\f3fe'}.zmdi-skype:before{content:'\f3ff'}.zmdi-slideshare:before{content:'\f400'}.zmdi-soundcloud:before{content:'\f401'}.zmdi-tumblr:before{content:'\f402'}.zmdi-twitch:before{content:'\f403'}.zmdi-vimeo:before{content:'\f404'}.zmdi-whatsapp:before{content:'\f405'}.zmdi-xbox:before{content:'\f406'}.zmdi-yahoo:before{content:'\f407'}.zmdi-youtube-play:before{content:'\f408'}.zmdi-youtube:before{content:'\f409'}.zmdi-3d-rotation:before{content:'\f101'}.zmdi-airplane-off:before{content:'\f102'}.zmdi-airplane:before{content:'\f103'}.zmdi-album:before{content:'\f104'}.zmdi-archive:before{content:'\f105'}.zmdi-assignment-account:before{content:'\f106'}.zmdi-assignment-alert:before{content:'\f107'}.zmdi-assignment-check:before{content:'\f108'}.zmdi-assignment-o:before{content:'\f109'}.zmdi-assignment-return:before{content:'\f10a'}.zmdi-assignment-returned:before{content:'\f10b'}.zmdi-assignment:before{content:'\f10c'}.zmdi-attachment-alt:before{content:'\f10d'}.zmdi-attachment:before{content:'\f10e'}.zmdi-audio:before{content:'\f10f'}.zmdi-badge-check:before{content:'\f110'}.zmdi-balance-wallet:before{content:'\f111'}.zmdi-balance:before{content:'\f112'}.zmdi-battery-alert:before{content:'\f113'}.zmdi-battery-flash:before{content:'\f114'}.zmdi-battery-unknown:before{content:'\f115'}.zmdi-battery:before{content:'\f116'}.zmdi-bike:before{content:'\f117'}.zmdi-block-alt:before{content:'\f118'}.zmdi-block:before{content:'\f119'}.zmdi-boat:before{content:'\f11a'}.zmdi-book-image:before{content:'\f11b'}.zmdi-book:before{content:'\f11c'}.zmdi-bookmark-outline:before{content:'\f11d'}.zmdi-bookmark:before{content:'\f11e'}.zmdi-brush:before{content:'\f11f'}.zmdi-bug:before{content:'\f120'}.zmdi-bus:before{content:'\f121'}.zmdi-cake:before{content:'\f122'}.zmdi-car-taxi:before{content:'\f123'}.zmdi-car-wash:before{content:'\f124'}.zmdi-car:before{content:'\f125'}.zmdi-card-giftcard:before{content:'\f126'}.zmdi-card-membership:before{content:'\f127'}.zmdi-card-travel:before{content:'\f128'}.zmdi-card:before{content:'\f129'}.zmdi-case-check:before{content:'\f12a'}.zmdi-case-download:before{content:'\f12b'}.zmdi-case-play:before{content:'\f12c'}.zmdi-case:before{content:'\f12d'}.zmdi-cast-connected:before{content:'\f12e'}.zmdi-cast:before{content:'\f12f'}.zmdi-chart-donut:before{content:'\f130'}.zmdi-chart:before{content:'\f131'}.zmdi-city-alt:before{content:'\f132'}.zmdi-city:before{content:'\f133'}.zmdi-close-circle-o:before{content:'\f134'}.zmdi-close-circle:before{content:'\f135'}.zmdi-close:before{content:'\f136'}.zmdi-cocktail:before{content:'\f137'}.zmdi-code-setting:before{content:'\f138'}.zmdi-code-smartphone:before{content:'\f139'}.zmdi-code:before{content:'\f13a'}.zmdi-coffee:before{content:'\f13b'}.zmdi-collection-bookmark:before{content:'\f13c'}.zmdi-collection-case-play:before{content:'\f13d'}.zmdi-collection-folder-image:before{content:'\f13e'}.zmdi-collection-image-o:before{content:'\f13f'}.zmdi-collection-image:before{content:'\f140'}.zmdi-collection-item-1:before{content:'\f141'}.zmdi-collection-item-2:before{content:'\f142'}.zmdi-collection-item-3:before{content:'\f143'}.zmdi-collection-item-4:before{content:'\f144'}.zmdi-collection-item-5:before{content:'\f145'}.zmdi-collection-item-6:before{content:'\f146'}.zmdi-collection-item-7:before{content:'\f147'}.zmdi-collection-item-8:before{content:'\f148'}.zmdi-collection-item-9-plus:before{content:'\f149'}.zmdi-collection-item-9:before{content:'\f14a'}.zmdi-collection-item:before{content:'\f14b'}.zmdi-collection-music:before{content:'\f14c'}.zmdi-collection-pdf:before{content:'\f14d'}.zmdi-collection-plus:before{content:'\f14e'}.zmdi-collection-speaker:before{content:'\f14f'}.zmdi-collection-text:before{content:'\f150'}.zmdi-collection-video:before{content:'\f151'}.zmdi-compass:before{content:'\f152'}.zmdi-cutlery:before{content:'\f153'}.zmdi-delete:before{content:'\f154'}.zmdi-dialpad:before{content:'\f155'}.zmdi-dns:before{content:'\f156'}.zmdi-drink:before{content:'\f157'}.zmdi-edit:before{content:'\f158'}.zmdi-email-open:before{content:'\f159'}.zmdi-email:before{content:'\f15a'}.zmdi-eye-off:before{content:'\f15b'}.zmdi-eye:before{content:'\f15c'}.zmdi-eyedropper:before{content:'\f15d'}.zmdi-favorite-outline:before{content:'\f15e'}.zmdi-favorite:before{content:'\f15f'}.zmdi-filter-list:before{content:'\f160'}.zmdi-fire:before{content:'\f161'}.zmdi-flag:before{content:'\f162'}.zmdi-flare:before{content:'\f163'}.zmdi-flash-auto:before{content:'\f164'}.zmdi-flash-off:before{content:'\f165'}.zmdi-flash:before{content:'\f166'}.zmdi-flip:before{content:'\f167'}.zmdi-flower-alt:before{content:'\f168'}.zmdi-flower:before{content:'\f169'}.zmdi-font:before{content:'\f16a'}.zmdi-fullscreen-alt:before{content:'\f16b'}.zmdi-fullscreen-exit:before{content:'\f16c'}.zmdi-fullscreen:before{content:'\f16d'}.zmdi-functions:before{content:'\f16e'}.zmdi-gas-station:before{content:'\f16f'}.zmdi-gesture:before{content:'\f170'}.zmdi-globe-alt:before{content:'\f171'}.zmdi-globe-lock:before{content:'\f172'}.zmdi-globe:before{content:'\f173'}.zmdi-graduation-cap:before{content:'\f174'}.zmdi-home:before{content:'\f175'}.zmdi-hospital-alt:before{content:'\f176'}.zmdi-hospital:before{content:'\f177'}.zmdi-hotel:before{content:'\f178'}.zmdi-hourglass-alt:before{content:'\f179'}.zmdi-hourglass-outline:before{content:'\f17a'}.zmdi-hourglass:before{content:'\f17b'}.zmdi-http:before{content:'\f17c'}.zmdi-image-alt:before{content:'\f17d'}.zmdi-image-o:before{content:'\f17e'}.zmdi-image:before{content:'\f17f'}.zmdi-inbox:before{content:'\f180'}.zmdi-invert-colors-off:before{content:'\f181'}.zmdi-invert-colors:before{content:'\f182'}.zmdi-key:before{content:'\f183'}.zmdi-label-alt-outline:before{content:'\f184'}.zmdi-label-alt:before{content:'\f185'}.zmdi-label-heart:before{content:'\f186'}.zmdi-label:before{content:'\f187'}.zmdi-labels:before{content:'\f188'}.zmdi-lamp:before{content:'\f189'}.zmdi-landscape:before{content:'\f18a'}.zmdi-layers-off:before{content:'\f18b'}.zmdi-layers:before{content:'\f18c'}.zmdi-library:before{content:'\f18d'}.zmdi-link:before{content:'\f18e'}.zmdi-lock-open:before{content:'\f18f'}.zmdi-lock-outline:before{content:'\f190'}.zmdi-lock:before{content:'\f191'}.zmdi-mail-reply-all:before{content:'\f192'}.zmdi-mail-reply:before{content:'\f193'}.zmdi-mail-send:before{content:'\f194'}.zmdi-mall:before{content:'\f195'}.zmdi-map:before{content:'\f196'}.zmdi-menu:before{content:'\f197'}.zmdi-money-box:before{content:'\f198'}.zmdi-money-off:before{content:'\f199'}.zmdi-money:before{content:'\f19a'}.zmdi-more-vert:before{content:'\f19b'}.zmdi-more:before{content:'\f19c'}.zmdi-movie-alt:before{content:'\f19d'}.zmdi-movie:before{content:'\f19e'}.zmdi-nature-people:before{content:'\f19f'}.zmdi-nature:before{content:'\f1a0'}.zmdi-navigation:before{content:'\f1a1'}.zmdi-open-in-browser:before{content:'\f1a2'}.zmdi-open-in-new:before{content:'\f1a3'}.zmdi-palette:before{content:'\f1a4'}.zmdi-parking:before{content:'\f1a5'}.zmdi-pin-account:before{content:'\f1a6'}.zmdi-pin-assistant:before{content:'\f1a7'}.zmdi-pin-drop:before{content:'\f1a8'}.zmdi-pin-help:before{content:'\f1a9'}.zmdi-pin-off:before{content:'\f1aa'}.zmdi-pin:before{content:'\f1ab'}.zmdi-pizza:before{content:'\f1ac'}.zmdi-plaster:before{content:'\f1ad'}.zmdi-power-setting:before{content:'\f1ae'}.zmdi-power:before{content:'\f1af'}.zmdi-print:before{content:'\f1b0'}.zmdi-puzzle-piece:before{content:'\f1b1'}.zmdi-quote:before{content:'\f1b2'}.zmdi-railway:before{content:'\f1b3'}.zmdi-receipt:before{content:'\f1b4'}.zmdi-refresh-alt:before{content:'\f1b5'}.zmdi-refresh-sync-alert:before{content:'\f1b6'}.zmdi-refresh-sync-off:before{content:'\f1b7'}.zmdi-refresh-sync:before{content:'\f1b8'}.zmdi-refresh:before{content:'\f1b9'}.zmdi-roller:before{content:'\f1ba'}.zmdi-ruler:before{content:'\f1bb'}.zmdi-scissors:before{content:'\f1bc'}.zmdi-screen-rotation-lock:before{content:'\f1bd'}.zmdi-screen-rotation:before{content:'\f1be'}.zmdi-search-for:before{content:'\f1bf'}.zmdi-search-in-file:before{content:'\f1c0'}.zmdi-search-in-page:before{content:'\f1c1'}.zmdi-search-replace:before{content:'\f1c2'}.zmdi-search:before{content:'\f1c3'}.zmdi-seat:before{content:'\f1c4'}.zmdi-settings-square:before{content:'\f1c5'}.zmdi-settings:before{content:'\f1c6'}.zmdi-shield-check:before{content:'\f1c7'}.zmdi-shield-security:before{content:'\f1c8'}.zmdi-shopping-basket:before{content:'\f1c9'}.zmdi-shopping-cart-plus:before{content:'\f1ca'}.zmdi-shopping-cart:before{content:'\f1cb'}.zmdi-sign-in:before{content:'\f1cc'}.zmdi-sort-amount-asc:before{content:'\f1cd'}.zmdi-sort-amount-desc:before{content:'\f1ce'}.zmdi-sort-asc:before{content:'\f1cf'}.zmdi-sort-desc:before{content:'\f1d0'}.zmdi-spellcheck:before{content:'\f1d1'}.zmdi-storage:before{content:'\f1d2'}.zmdi-store-24:before{content:'\f1d3'}.zmdi-store:before{content:'\f1d4'}.zmdi-subway:before{content:'\f1d5'}.zmdi-sun:before{content:'\f1d6'}.zmdi-tab-unselected:before{content:'\f1d7'}.zmdi-tab:before{content:'\f1d8'}.zmdi-tag-close:before{content:'\f1d9'}.zmdi-tag-more:before{content:'\f1da'}.zmdi-tag:before{content:'\f1db'}.zmdi-thumb-down:before{content:'\f1dc'}.zmdi-thumb-up-down:before{content:'\f1dd'}.zmdi-thumb-up:before{content:'\f1de'}.zmdi-ticket-star:before{content:'\f1df'}.zmdi-toll:before{content:'\f1e0'}.zmdi-toys:before{content:'\f1e1'}.zmdi-traffic:before{content:'\f1e2'}.zmdi-translate:before{content:'\f1e3'}.zmdi-triangle-down:before{content:'\f1e4'}.zmdi-triangle-up:before{content:'\f1e5'}.zmdi-truck:before{content:'\f1e6'}.zmdi-turning-sign:before{content:'\f1e7'}.zmdi-wallpaper:before{content:'\f1e8'}.zmdi-washing-machine:before{content:'\f1e9'}.zmdi-window-maximize:before{content:'\f1ea'}.zmdi-window-minimize:before{content:'\f1eb'}.zmdi-window-restore:before{content:'\f1ec'}.zmdi-wrench:before{content:'\f1ed'}.zmdi-zoom-in:before{content:'\f1ee'}.zmdi-zoom-out:before{content:'\f1ef'}.zmdi-alert-circle-o:before{content:'\f1f0'}.zmdi-alert-circle:before{content:'\f1f1'}.zmdi-alert-octagon:before{content:'\f1f2'}.zmdi-alert-polygon:before{content:'\f1f3'}.zmdi-alert-triangle:before{content:'\f1f4'}.zmdi-help-outline:before{content:'\f1f5'}.zmdi-help:before{content:'\f1f6'}.zmdi-info-outline:before{content:'\f1f7'}.zmdi-info:before{content:'\f1f8'}.zmdi-notifications-active:before{content:'\f1f9'}.zmdi-notifications-add:before{content:'\f1fa'}.zmdi-notifications-none:before{content:'\f1fb'}.zmdi-notifications-off:before{content:'\f1fc'}.zmdi-notifications-paused:before{content:'\f1fd'}.zmdi-notifications:before{content:'\f1fe'}.zmdi-account-add:before{content:'\f1ff'}.zmdi-account-box-mail:before{content:'\f200'}.zmdi-account-box-o:before{content:'\f201'}.zmdi-account-box-phone:before{content:'\f202'}.zmdi-account-box:before{content:'\f203'}.zmdi-account-calendar:before{content:'\f204'}.zmdi-account-circle:before{content:'\f205'}.zmdi-account-o:before{content:'\f206'}.zmdi-account:before{content:'\f207'}.zmdi-accounts-add:before{content:'\f208'}.zmdi-accounts-alt:before{content:'\f209'}.zmdi-accounts-list-alt:before{content:'\f20a'}.zmdi-accounts-list:before{content:'\f20b'}.zmdi-accounts-outline:before{content:'\f20c'}.zmdi-accounts:before{content:'\f20d'}.zmdi-face:before{content:'\f20e'}.zmdi-female:before{content:'\f20f'}.zmdi-male-alt:before{content:'\f210'}.zmdi-male-female:before{content:'\f211'}.zmdi-male:before{content:'\f212'}.zmdi-mood-bad:before{content:'\f213'}.zmdi-mood:before{content:'\f214'}.zmdi-run:before{content:'\f215'}.zmdi-walk:before{content:'\f216'}.zmdi-cloud-box:before{content:'\f217'}.zmdi-cloud-circle:before{content:'\f218'}.zmdi-cloud-done:before{content:'\f219'}.zmdi-cloud-download:before{content:'\f21a'}.zmdi-cloud-off:before{content:'\f21b'}.zmdi-cloud-outline-alt:before{content:'\f21c'}.zmdi-cloud-outline:before{content:'\f21d'}.zmdi-cloud-upload:before{content:'\f21e'}.zmdi-cloud:before{content:'\f21f'}.zmdi-download:before{content:'\f220'}.zmdi-file-plus:before{content:'\f221'}.zmdi-file-text:before{content:'\f222'}.zmdi-file:before{content:'\f223'}.zmdi-folder-outline:before{content:'\f224'}.zmdi-folder-person:before{content:'\f225'}.zmdi-folder-star-alt:before{content:'\f226'}.zmdi-folder-star:before{content:'\f227'}.zmdi-folder:before{content:'\f228'}.zmdi-gif:before{content:'\f229'}.zmdi-upload:before{content:'\f22a'}.zmdi-border-all:before{content:'\f22b'}.zmdi-border-bottom:before{content:'\f22c'}.zmdi-border-clear:before{content:'\f22d'}.zmdi-border-color:before{content:'\f22e'}.zmdi-border-horizontal:before{content:'\f22f'}.zmdi-border-inner:before{content:'\f230'}.zmdi-border-left:before{content:'\f231'}.zmdi-border-outer:before{content:'\f232'}.zmdi-border-right:before{content:'\f233'}.zmdi-border-style:before{content:'\f234'}.zmdi-border-top:before{content:'\f235'}.zmdi-border-vertical:before{content:'\f236'}.zmdi-copy:before{content:'\f237'}.zmdi-crop:before{content:'\f238'}.zmdi-format-align-center:before{content:'\f239'}.zmdi-format-align-justify:before{content:'\f23a'}.zmdi-format-align-left:before{content:'\f23b'}.zmdi-format-align-right:before{content:'\f23c'}.zmdi-format-bold:before{content:'\f23d'}.zmdi-format-clear-all:before{content:'\f23e'}.zmdi-format-clear:before{content:'\f23f'}.zmdi-format-color-fill:before{content:'\f240'}.zmdi-format-color-reset:before{content:'\f241'}.zmdi-format-color-text:before{content:'\f242'}.zmdi-format-indent-decrease:before{content:'\f243'}.zmdi-format-indent-increase:before{content:'\f244'}.zmdi-format-italic:before{content:'\f245'}.zmdi-format-line-spacing:before{content:'\f246'}.zmdi-format-list-bulleted:before{content:'\f247'}.zmdi-format-list-numbered:before{content:'\f248'}.zmdi-format-ltr:before{content:'\f249'}.zmdi-format-rtl:before{content:'\f24a'}.zmdi-format-size:before{content:'\f24b'}.zmdi-format-strikethrough-s:before{content:'\f24c'}.zmdi-format-strikethrough:before{content:'\f24d'}.zmdi-format-subject:before{content:'\f24e'}.zmdi-format-underlined:before{content:'\f24f'}.zmdi-format-valign-bottom:before{content:'\f250'}.zmdi-format-valign-center:before{content:'\f251'}.zmdi-format-valign-top:before{content:'\f252'}.zmdi-redo:before{content:'\f253'}.zmdi-select-all:before{content:'\f254'}.zmdi-space-bar:before{content:'\f255'}.zmdi-text-format:before{content:'\f256'}.zmdi-transform:before{content:'\f257'}.zmdi-undo:before{content:'\f258'}.zmdi-wrap-text:before{content:'\f259'}.zmdi-comment-alert:before{content:'\f25a'}.zmdi-comment-alt-text:before{content:'\f25b'}.zmdi-comment-alt:before{content:'\f25c'}.zmdi-comment-edit:before{content:'\f25d'}.zmdi-comment-image:before{content:'\f25e'}.zmdi-comment-list:before{content:'\f25f'}.zmdi-comment-more:before{content:'\f260'}.zmdi-comment-outline:before{content:'\f261'}.zmdi-comment-text-alt:before{content:'\f262'}.zmdi-comment-text:before{content:'\f263'}.zmdi-comment-video:before{content:'\f264'}.zmdi-comment:before{content:'\f265'}.zmdi-comments:before{content:'\f266'}.zmdi-check-all:before{content:'\f267'}.zmdi-check-circle-u:before{content:'\f268'}.zmdi-check-circle:before{content:'\f269'}.zmdi-check-square:before{content:'\f26a'}.zmdi-check:before{content:'\f26b'}.zmdi-circle-o:before{content:'\f26c'}.zmdi-circle:before{content:'\f26d'}.zmdi-dot-circle-alt:before{content:'\f26e'}.zmdi-dot-circle:before{content:'\f26f'}.zmdi-minus-circle-outline:before{content:'\f270'}.zmdi-minus-circle:before{content:'\f271'}.zmdi-minus-square:before{content:'\f272'}.zmdi-minus:before{content:'\f273'}.zmdi-plus-circle-o-duplicate:before{content:'\f274'}.zmdi-plus-circle-o:before{content:'\f275'}.zmdi-plus-circle:before{content:'\f276'}.zmdi-plus-square:before{content:'\f277'}.zmdi-plus:before{content:'\f278'}.zmdi-square-o:before{content:'\f279'}.zmdi-star-circle:before{content:'\f27a'}.zmdi-star-half:before{content:'\f27b'}.zmdi-star-outline:before{content:'\f27c'}.zmdi-star:before{content:'\f27d'}.zmdi-bluetooth-connected:before{content:'\f27e'}.zmdi-bluetooth-off:before{content:'\f27f'}.zmdi-bluetooth-search:before{content:'\f280'}.zmdi-bluetooth-setting:before{content:'\f281'}.zmdi-bluetooth:before{content:'\f282'}.zmdi-camera-add:before{content:'\f283'}.zmdi-camera-alt:before{content:'\f284'}.zmdi-camera-bw:before{content:'\f285'}.zmdi-camera-front:before{content:'\f286'}.zmdi-camera-mic:before{content:'\f287'}.zmdi-camera-party-mode:before{content:'\f288'}.zmdi-camera-rear:before{content:'\f289'}.zmdi-camera-roll:before{content:'\f28a'}.zmdi-camera-switch:before{content:'\f28b'}.zmdi-camera:before{content:'\f28c'}.zmdi-card-alert:before{content:'\f28d'}.zmdi-card-off:before{content:'\f28e'}.zmdi-card-sd:before{content:'\f28f'}.zmdi-card-sim:before{content:'\f290'}.zmdi-desktop-mac:before{content:'\f291'}.zmdi-desktop-windows:before{content:'\f292'}.zmdi-device-hub:before{content:'\f293'}.zmdi-devices-off:before{content:'\f294'}.zmdi-devices:before{content:'\f295'}.zmdi-dock:before{content:'\f296'}.zmdi-floppy:before{content:'\f297'}.zmdi-gamepad:before{content:'\f298'}.zmdi-gps-dot:before{content:'\f299'}.zmdi-gps-off:before{content:'\f29a'}.zmdi-gps:before{content:'\f29b'}.zmdi-headset-mic:before{content:'\f29c'}.zmdi-headset:before{content:'\f29d'}.zmdi-input-antenna:before{content:'\f29e'}.zmdi-input-composite:before{content:'\f29f'}.zmdi-input-hdmi:before{content:'\f2a0'}.zmdi-input-power:before{content:'\f2a1'}.zmdi-input-svideo:before{content:'\f2a2'}.zmdi-keyboard-hide:before{content:'\f2a3'}.zmdi-keyboard:before{content:'\f2a4'}.zmdi-laptop-chromebook:before{content:'\f2a5'}.zmdi-laptop-mac:before{content:'\f2a6'}.zmdi-laptop:before{content:'\f2a7'}.zmdi-mic-off:before{content:'\f2a8'}.zmdi-mic-outline:before{content:'\f2a9'}.zmdi-mic-setting:before{content:'\f2aa'}.zmdi-mic:before{content:'\f2ab'}.zmdi-mouse:before{content:'\f2ac'}.zmdi-network-alert:before{content:'\f2ad'}.zmdi-network-locked:before{content:'\f2ae'}.zmdi-network-off:before{content:'\f2af'}.zmdi-network-outline:before{content:'\f2b0'}.zmdi-network-setting:before{content:'\f2b1'}.zmdi-network:before{content:'\f2b2'}.zmdi-phone-bluetooth:before{content:'\f2b3'}.zmdi-phone-end:before{content:'\f2b4'}.zmdi-phone-forwarded:before{content:'\f2b5'}.zmdi-phone-in-talk:before{content:'\f2b6'}.zmdi-phone-locked:before{content:'\f2b7'}.zmdi-phone-missed:before{content:'\f2b8'}.zmdi-phone-msg:before{content:'\f2b9'}.zmdi-phone-paused:before{content:'\f2ba'}.zmdi-phone-ring:before{content:'\f2bb'}.zmdi-phone-setting:before{content:'\f2bc'}.zmdi-phone-sip:before{content:'\f2bd'}.zmdi-phone:before{content:'\f2be'}.zmdi-portable-wifi-changes:before{content:'\f2bf'}.zmdi-portable-wifi-off:before{content:'\f2c0'}.zmdi-portable-wifi:before{content:'\f2c1'}.zmdi-radio:before{content:'\f2c2'}.zmdi-reader:before{content:'\f2c3'}.zmdi-remote-control-alt:before{content:'\f2c4'}.zmdi-remote-control:before{content:'\f2c5'}.zmdi-router:before{content:'\f2c6'}.zmdi-scanner:before{content:'\f2c7'}.zmdi-smartphone-android:before{content:'\f2c8'}.zmdi-smartphone-download:before{content:'\f2c9'}.zmdi-smartphone-erase:before{content:'\f2ca'}.zmdi-smartphone-info:before{content:'\f2cb'}.zmdi-smartphone-iphone:before{content:'\f2cc'}.zmdi-smartphone-landscape-lock:before{content:'\f2cd'}.zmdi-smartphone-landscape:before{content:'\f2ce'}.zmdi-smartphone-lock:before{content:'\f2cf'}.zmdi-smartphone-portrait-lock:before{content:'\f2d0'}.zmdi-smartphone-ring:before{content:'\f2d1'}.zmdi-smartphone-setting:before{content:'\f2d2'}.zmdi-smartphone-setup:before{content:'\f2d3'}.zmdi-smartphone:before{content:'\f2d4'}.zmdi-speaker:before{content:'\f2d5'}.zmdi-tablet-android:before{content:'\f2d6'}.zmdi-tablet-mac:before{content:'\f2d7'}.zmdi-tablet:before{content:'\f2d8'}.zmdi-tv-alt-play:before{content:'\f2d9'}.zmdi-tv-list:before{content:'\f2da'}.zmdi-tv-play:before{content:'\f2db'}.zmdi-tv:before{content:'\f2dc'}.zmdi-usb:before{content:'\f2dd'}.zmdi-videocam-off:before{content:'\f2de'}.zmdi-videocam-switch:before{content:'\f2df'}.zmdi-videocam:before{content:'\f2e0'}.zmdi-watch:before{content:'\f2e1'}.zmdi-wifi-alt-2:before{content:'\f2e2'}.zmdi-wifi-alt:before{content:'\f2e3'}.zmdi-wifi-info:before{content:'\f2e4'}.zmdi-wifi-lock:before{content:'\f2e5'}.zmdi-wifi-off:before{content:'\f2e6'}.zmdi-wifi-outline:before{content:'\f2e7'}.zmdi-wifi:before{content:'\f2e8'}.zmdi-arrow-left-bottom:before{content:'\f2e9'}.zmdi-arrow-left:before{content:'\f2ea'}.zmdi-arrow-merge:before{content:'\f2eb'}.zmdi-arrow-missed:before{content:'\f2ec'}.zmdi-arrow-right-top:before{content:'\f2ed'}.zmdi-arrow-right:before{content:'\f2ee'}.zmdi-arrow-split:before{content:'\f2ef'}.zmdi-arrows:before{content:'\f2f0'}.zmdi-caret-down-circle:before{content:'\f2f1'}.zmdi-caret-down:before{content:'\f2f2'}.zmdi-caret-left-circle:before{content:'\f2f3'}.zmdi-caret-left:before{content:'\f2f4'}.zmdi-caret-right-circle:before{content:'\f2f5'}.zmdi-caret-right:before{content:'\f2f6'}.zmdi-caret-up-circle:before{content:'\f2f7'}.zmdi-caret-up:before{content:'\f2f8'}.zmdi-chevron-down:before{content:'\f2f9'}.zmdi-chevron-left:before{content:'\f2fa'}.zmdi-chevron-right:before{content:'\f2fb'}.zmdi-chevron-up:before{content:'\f2fc'}.zmdi-forward:before{content:'\f2fd'}.zmdi-long-arrow-down:before{content:'\f2fe'}.zmdi-long-arrow-left:before{content:'\f2ff'}.zmdi-long-arrow-return:before{content:'\f300'}.zmdi-long-arrow-right:before{content:'\f301'}.zmdi-long-arrow-tab:before{content:'\f302'}.zmdi-long-arrow-up:before{content:'\f303'}.zmdi-rotate-ccw:before{content:'\f304'}.zmdi-rotate-cw:before{content:'\f305'}.zmdi-rotate-left:before{content:'\f306'}.zmdi-rotate-right:before{content:'\f307'}.zmdi-square-down:before{content:'\f308'}.zmdi-square-right:before{content:'\f309'}.zmdi-swap-alt:before{content:'\f30a'}.zmdi-swap-vertical-circle:before{content:'\f30b'}.zmdi-swap-vertical:before{content:'\f30c'}.zmdi-swap:before{content:'\f30d'}.zmdi-trending-down:before{content:'\f30e'}.zmdi-trending-flat:before{content:'\f30f'}.zmdi-trending-up:before{content:'\f310'}.zmdi-unfold-less:before{content:'\f311'}.zmdi-unfold-more:before{content:'\f312'}.zmdi-apps:before{content:'\f313'}.zmdi-grid-off:before{content:'\f314'}.zmdi-grid:before{content:'\f315'}.zmdi-view-agenda:before{content:'\f316'}.zmdi-view-array:before{content:'\f317'}.zmdi-view-carousel:before{content:'\f318'}.zmdi-view-column:before{content:'\f319'}.zmdi-view-comfy:before{content:'\f31a'}.zmdi-view-compact:before{content:'\f31b'}.zmdi-view-dashboard:before{content:'\f31c'}.zmdi-view-day:before{content:'\f31d'}.zmdi-view-headline:before{content:'\f31e'}.zmdi-view-list-alt:before{content:'\f31f'}.zmdi-view-list:before{content:'\f320'}.zmdi-view-module:before{content:'\f321'}.zmdi-view-quilt:before{content:'\f322'}.zmdi-view-stream:before{content:'\f323'}.zmdi-view-subtitles:before{content:'\f324'}.zmdi-view-toc:before{content:'\f325'}.zmdi-view-web:before{content:'\f326'}.zmdi-view-week:before{content:'\f327'}.zmdi-widgets:before{content:'\f328'}.zmdi-alarm-check:before{content:'\f329'}.zmdi-alarm-off:before{content:'\f32a'}.zmdi-alarm-plus:before{content:'\f32b'}.zmdi-alarm-snooze:before{content:'\f32c'}.zmdi-alarm:before{content:'\f32d'}.zmdi-calendar-alt:before{content:'\f32e'}.zmdi-calendar-check:before{content:'\f32f'}.zmdi-calendar-close:before{content:'\f330'}.zmdi-calendar-note:before{content:'\f331'}.zmdi-calendar:before{content:'\f332'}.zmdi-time-countdown:before{content:'\f333'}.zmdi-time-interval:before{content:'\f334'}.zmdi-time-restore-setting:before{content:'\f335'}.zmdi-time-restore:before{content:'\f336'}.zmdi-time:before{content:'\f337'}.zmdi-timer-off:before{content:'\f338'}.zmdi-timer:before{content:'\f339'}.zmdi-android-alt:before{content:'\f33a'}.zmdi-android:before{content:'\f33b'}.zmdi-apple:before{content:'\f33c'}.zmdi-behance:before{content:'\f33d'}.zmdi-codepen:before{content:'\f33e'}.zmdi-dribbble:before{content:'\f33f'}.zmdi-dropbox:before{content:'\f340'}.zmdi-evernote:before{content:'\f341'}.zmdi-facebook-box:before{content:'\f342'}.zmdi-facebook:before{content:'\f343'}.zmdi-github-box:before{content:'\f344'}.zmdi-github:before{content:'\f345'}.zmdi-google-drive:before{content:'\f346'}.zmdi-google-earth:before{content:'\f347'}.zmdi-google-glass:before{content:'\f348'}.zmdi-google-maps:before{content:'\f349'}.zmdi-google-pages:before{content:'\f34a'}.zmdi-google-play:before{content:'\f34b'}.zmdi-google-plus-box:before{content:'\f34c'}.zmdi-google-plus:before{content:'\f34d'}.zmdi-google:before{content:'\f34e'}.zmdi-instagram:before{content:'\f34f'}.zmdi-language-css3:before{content:'\f350'}.zmdi-language-html5:before{content:'\f351'}.zmdi-language-javascript:before{content:'\f352'}.zmdi-language-python-alt:before{content:'\f353'}.zmdi-language-python:before{content:'\f354'}.zmdi-lastfm:before{content:'\f355'}.zmdi-linkedin-box:before{content:'\f356'}.zmdi-paypal:before{content:'\f357'}.zmdi-pinterest-box:before{content:'\f358'}.zmdi-pocket:before{content:'\f359'}.zmdi-polymer:before{content:'\f35a'}.zmdi-share:before{content:'\f35b'}.zmdi-stackoverflow:before{content:'\f35c'}.zmdi-steam-square:before{content:'\f35d'}.zmdi-steam:before{content:'\f35e'}.zmdi-twitter-box:before{content:'\f35f'}.zmdi-twitter:before{content:'\f360'}.zmdi-vk:before{content:'\f361'}.zmdi-wikipedia:before{content:'\f362'}.zmdi-windows:before{content:'\f363'}.zmdi-aspect-ratio-alt:before{content:'\f364'}.zmdi-aspect-ratio:before{content:'\f365'}.zmdi-blur-circular:before{content:'\f366'}.zmdi-blur-linear:before{content:'\f367'}.zmdi-blur-off:before{content:'\f368'}.zmdi-blur:before{content:'\f369'}.zmdi-brightness-2:before{content:'\f36a'}.zmdi-brightness-3:before{content:'\f36b'}.zmdi-brightness-4:before{content:'\f36c'}.zmdi-brightness-5:before{content:'\f36d'}.zmdi-brightness-6:before{content:'\f36e'}.zmdi-brightness-7:before{content:'\f36f'}.zmdi-brightness-auto:before{content:'\f370'}.zmdi-brightness-setting:before{content:'\f371'}.zmdi-broken-image:before{content:'\f372'}.zmdi-center-focus-strong:before{content:'\f373'}.zmdi-center-focus-weak:before{content:'\f374'}.zmdi-compare:before{content:'\f375'}.zmdi-crop-16-9:before{content:'\f376'}.zmdi-crop-3-2:before{content:'\f377'}.zmdi-crop-5-4:before{content:'\f378'}.zmdi-crop-7-5:before{content:'\f379'}.zmdi-crop-din:before{content:'\f37a'}.zmdi-crop-free:before{content:'\f37b'}.zmdi-crop-landscape:before{content:'\f37c'}.zmdi-crop-portrait:before{content:'\f37d'}.zmdi-crop-square:before{content:'\f37e'}.zmdi-exposure-alt:before{content:'\f37f'}.zmdi-exposure:before{content:'\f380'}.zmdi-filter-b-and-w:before{content:'\f381'}.zmdi-filter-center-focus:before{content:'\f382'}.zmdi-filter-frames:before{content:'\f383'}.zmdi-filter-tilt-shift:before{content:'\f384'}.zmdi-gradient:before{content:'\f385'}.zmdi-grain:before{content:'\f386'}.zmdi-graphic-eq:before{content:'\f387'}.zmdi-hdr-off:before{content:'\f388'}.zmdi-hdr-strong:before{content:'\f389'}.zmdi-hdr-weak:before{content:'\f38a'}.zmdi-hdr:before{content:'\f38b'}.zmdi-iridescent:before{content:'\f38c'}.zmdi-leak-off:before{content:'\f38d'}.zmdi-leak:before{content:'\f38e'}.zmdi-looks:before{content:'\f38f'}.zmdi-loupe:before{content:'\f390'}.zmdi-panorama-horizontal:before{content:'\f391'}.zmdi-panorama-vertical:before{content:'\f392'}.zmdi-panorama-wide-angle:before{content:'\f393'}.zmdi-photo-size-select-large:before{content:'\f394'}.zmdi-photo-size-select-small:before{content:'\f395'}.zmdi-picture-in-picture:before{content:'\f396'}.zmdi-slideshow:before{content:'\f397'}.zmdi-texture:before{content:'\f398'}.zmdi-tonality:before{content:'\f399'}.zmdi-vignette:before{content:'\f39a'}.zmdi-wb-auto:before{content:'\f39b'}.zmdi-eject-alt:before{content:'\f39c'}.zmdi-eject:before{content:'\f39d'}.zmdi-equalizer:before{content:'\f39e'}.zmdi-fast-forward:before{content:'\f39f'}.zmdi-fast-rewind:before{content:'\f3a0'}.zmdi-forward-10:before{content:'\f3a1'}.zmdi-forward-30:before{content:'\f3a2'}.zmdi-forward-5:before{content:'\f3a3'}.zmdi-hearing:before{content:'\f3a4'}.zmdi-pause-circle-outline:before{content:'\f3a5'}.zmdi-pause-circle:before{content:'\f3a6'}.zmdi-pause:before{content:'\f3a7'}.zmdi-play-circle-outline:before{content:'\f3a8'}.zmdi-play-circle:before{content:'\f3a9'}.zmdi-play:before{content:'\f3aa'}.zmdi-playlist-audio:before{content:'\f3ab'}.zmdi-playlist-plus:before{content:'\f3ac'}.zmdi-repeat-one:before{content:'\f3ad'}.zmdi-repeat:before{content:'\f3ae'}.zmdi-replay-10:before{content:'\f3af'}.zmdi-replay-30:before{content:'\f3b0'}.zmdi-replay-5:before{content:'\f3b1'}.zmdi-replay:before{content:'\f3b2'}.zmdi-shuffle:before{content:'\f3b3'}.zmdi-skip-next:before{content:'\f3b4'}.zmdi-skip-previous:before{content:'\f3b5'}.zmdi-stop:before{content:'\f3b6'}.zmdi-surround-sound:before{content:'\f3b7'}.zmdi-tune:before{content:'\f3b8'}.zmdi-volume-down:before{content:'\f3b9'}.zmdi-volume-mute:before{content:'\f3ba'}.zmdi-volume-off:before{content:'\f3bb'}.zmdi-volume-up:before{content:'\f3bc'}.zmdi-n-1-square:before{content:'\f3bd'}.zmdi-n-2-square:before{content:'\f3be'}.zmdi-n-3-square:before{content:'\f3bf'}.zmdi-n-4-square:before{content:'\f3c0'}.zmdi-n-5-square:before{content:'\f3c1'}.zmdi-n-6-square:before{content:'\f3c2'}.zmdi-neg-1:before{content:'\f3c3'}.zmdi-neg-2:before{content:'\f3c4'}.zmdi-plus-1:before{content:'\f3c5'}.zmdi-plus-2:before{content:'\f3c6'}.zmdi-sec-10:before{content:'\f3c7'}.zmdi-sec-3:before{content:'\f3c8'}.zmdi-zero:before{content:'\f3c9'}.zmdi-airline-seat-flat-angled:before{content:'\f3ca'}.zmdi-airline-seat-flat:before{content:'\f3cb'}.zmdi-airline-seat-individual-suite:before{content:'\f3cc'}.zmdi-airline-seat-legroom-extra:before{content:'\f3cd'}.zmdi-airline-seat-legroom-normal:before{content:'\f3ce'}.zmdi-airline-seat-legroom-reduced:before{content:'\f3cf'}.zmdi-airline-seat-recline-extra:before{content:'\f3d0'}.zmdi-airline-seat-recline-normal:before{content:'\f3d1'}.zmdi-airplay:before{content:'\f3d2'}.zmdi-closed-caption:before{content:'\f3d3'}.zmdi-confirmation-number:before{content:'\f3d4'}.zmdi-developer-board:before{content:'\f3d5'}.zmdi-disc-full:before{content:'\f3d6'}.zmdi-explicit:before{content:'\f3d7'}.zmdi-flight-land:before{content:'\f3d8'}.zmdi-flight-takeoff:before{content:'\f3d9'}.zmdi-flip-to-back:before{content:'\f3da'}.zmdi-flip-to-front:before{content:'\f3db'}.zmdi-group-work:before{content:'\f3dc'}.zmdi-hd:before{content:'\f3dd'}.zmdi-hq:before{content:'\f3de'}.zmdi-markunread-mailbox:before{content:'\f3df'}.zmdi-memory:before{content:'\f3e0'}.zmdi-nfc:before{content:'\f3e1'}.zmdi-play-for-work:before{content:'\f3e2'}.zmdi-power-input:before{content:'\f3e3'}.zmdi-present-to-all:before{content:'\f3e4'}.zmdi-satellite:before{content:'\f3e5'}.zmdi-tap-and-play:before{content:'\f3e6'}.zmdi-vibration:before{content:'\f3e7'}.zmdi-voicemail:before{content:'\f3e8'}.zmdi-group:before{content:'\f3e9'}.zmdi-rss:before{content:'\f3ea'}.zmdi-shape:before{content:'\f3eb'}.zmdi-spinner:before{content:'\f3ec'}.zmdi-ungroup:before{content:'\f3ed'}.zmdi-500px:before{content:'\f3ee'}.zmdi-8tracks:before{content:'\f3ef'}.zmdi-amazon:before{content:'\f3f0'}.zmdi-blogger:before{content:'\f3f1'}.zmdi-delicious:before{content:'\f3f2'}.zmdi-disqus:before{content:'\f3f3'}.zmdi-flattr:before{content:'\f3f4'}.zmdi-flickr:before{content:'\f3f5'}.zmdi-github-alt:before{content:'\f3f6'}.zmdi-google-old:before{content:'\f3f7'}.zmdi-linkedin:before{content:'\f3f8'}.zmdi-odnoklassniki:before{content:'\f3f9'}.zmdi-outlook:before{content:'\f3fa'}.zmdi-paypal-alt:before{content:'\f3fb'}.zmdi-pinterest:before{content:'\f3fc'}.zmdi-playstation:before{content:'\f3fd'}.zmdi-reddit:before{content:'\f3fe'}.zmdi-skype:before{content:'\f3ff'}.zmdi-slideshare:before{content:'\f400'}.zmdi-soundcloud:before{content:'\f401'}.zmdi-tumblr:before{content:'\f402'}.zmdi-twitch:before{content:'\f403'}.zmdi-vimeo:before{content:'\f404'}.zmdi-whatsapp:before{content:'\f405'}.zmdi-xbox:before{content:'\f406'}.zmdi-yahoo:before{content:'\f407'}.zmdi-youtube-play:before{content:'\f408'}.zmdi-youtube:before{content:'\f409'}.zmdi-import-export:before{content:'\f30c'}.zmdi-swap-vertical-:before{content:'\f30c'}.zmdi-airplanemode-inactive:before{content:'\f102'}.zmdi-airplanemode-active:before{content:'\f103'}.zmdi-rate-review:before{content:'\f103'}.zmdi-comment-sign:before{content:'\f25a'}.zmdi-network-warning:before{content:'\f2ad'}.zmdi-shopping-cart-add:before{content:'\f1ca'}.zmdi-file-add:before{content:'\f221'}.zmdi-network-wifi-scan:before{content:'\f2e4'}.zmdi-collection-add:before{content:'\f14e'}.zmdi-format-playlist-add:before{content:'\f3ac'}.zmdi-format-queue-music:before{content:'\f3ab'}.zmdi-plus-box:before{content:'\f277'}.zmdi-tag-backspace:before{content:'\f1d9'}.zmdi-alarm-add:before{content:'\f32b'}.zmdi-battery-charging:before{content:'\f114'}.zmdi-daydream-setting:before{content:'\f217'}.zmdi-more-horiz:before{content:'\f19c'}.zmdi-book-photo:before{content:'\f11b'}.zmdi-incandescent:before{content:'\f189'}.zmdi-wb-iridescent:before{content:'\f38c'}.zmdi-calendar-remove:before{content:'\f330'}.zmdi-refresh-sync-disabled:before{content:'\f1b7'}.zmdi-refresh-sync-problem:before{content:'\f1b6'}.zmdi-crop-original:before{content:'\f17e'}.zmdi-power-off:before{content:'\f1af'}.zmdi-power-off-setting:before{content:'\f1ae'}.zmdi-leak-remove:before{content:'\f38d'}.zmdi-star-border:before{content:'\f27c'}.zmdi-brightness-low:before{content:'\f36d'}.zmdi-brightness-medium:before{content:'\f36e'}.zmdi-brightness-high:before{content:'\f36f'}.zmdi-smartphone-portrait:before{content:'\f2d4'}.zmdi-live-tv:before{content:'\f2d9'}.zmdi-format-textdirection-l-to-r:before{content:'\f249'}.zmdi-format-textdirection-r-to-l:before{content:'\f24a'}.zmdi-arrow-back:before{content:'\f2ea'}.zmdi-arrow-forward:before{content:'\f2ee'}.zmdi-arrow-in:before{content:'\f2e9'}.zmdi-arrow-out:before{content:'\f2ed'}.zmdi-rotate-90-degrees-ccw:before{content:'\f304'}.zmdi-adb:before{content:'\f33a'}.zmdi-network-wifi:before{content:'\f2e8'}.zmdi-network-wifi-alt:before{content:'\f2e3'}.zmdi-network-wifi-lock:before{content:'\f2e5'}.zmdi-network-wifi-off:before{content:'\f2e6'}.zmdi-network-wifi-outline:before{content:'\f2e7'}.zmdi-network-wifi-info:before{content:'\f2e4'}.zmdi-layers-clear:before{content:'\f18b'}.zmdi-colorize:before{content:'\f15d'}.zmdi-format-paint:before{content:'\f1ba'}.zmdi-format-quote:before{content:'\f1b2'}.zmdi-camera-monochrome-photos:before{content:'\f285'}.zmdi-sort-by-alpha:before{content:'\f1cf'}.zmdi-folder-shared:before{content:'\f225'}.zmdi-folder-special:before{content:'\f226'}.zmdi-comment-dots:before{content:'\f260'}.zmdi-reorder:before{content:'\f31e'}.zmdi-dehaze:before{content:'\f197'}.zmdi-sort:before{content:'\f1ce'}.zmdi-pages:before{content:'\f34a'}.zmdi-stack-overflow:before{content:'\f35c'}.zmdi-calendar-account:before{content:'\f204'}.zmdi-paste:before{content:'\f109'}.zmdi-cut:before{content:'\f1bc'}.zmdi-save:before{content:'\f297'}.zmdi-smartphone-code:before{content:'\f139'}.zmdi-directions-bike:before{content:'\f117'}.zmdi-directions-boat:before{content:'\f11a'}.zmdi-directions-bus:before{content:'\f121'}.zmdi-directions-car:before{content:'\f125'}.zmdi-directions-railway:before{content:'\f1b3'}.zmdi-directions-run:before{content:'\f215'}.zmdi-directions-subway:before{content:'\f1d5'}.zmdi-directions-walk:before{content:'\f216'}.zmdi-local-hotel:before{content:'\f178'}.zmdi-local-activity:before{content:'\f1df'}.zmdi-local-play:before{content:'\f1df'}.zmdi-local-airport:before{content:'\f103'}.zmdi-local-atm:before{content:'\f198'}.zmdi-local-bar:before{content:'\f137'}.zmdi-local-cafe:before{content:'\f13b'}.zmdi-local-car-wash:before{content:'\f124'}.zmdi-local-convenience-store:before{content:'\f1d3'}.zmdi-local-dining:before{content:'\f153'}.zmdi-local-drink:before{content:'\f157'}.zmdi-local-florist:before{content:'\f168'}.zmdi-local-gas-station:before{content:'\f16f'}.zmdi-local-grocery-store:before{content:'\f1cb'}.zmdi-local-hospital:before{content:'\f177'}.zmdi-local-laundry-service:before{content:'\f1e9'}.zmdi-local-library:before{content:'\f18d'}.zmdi-local-mall:before{content:'\f195'}.zmdi-local-movies:before{content:'\f19d'}.zmdi-local-offer:before{content:'\f187'}.zmdi-local-parking:before{content:'\f1a5'}.zmdi-local-parking:before{content:'\f1a5'}.zmdi-local-pharmacy:before{content:'\f176'}.zmdi-local-phone:before{content:'\f2be'}.zmdi-local-pizza:before{content:'\f1ac'}.zmdi-local-post-office:before{content:'\f15a'}.zmdi-local-printshop:before{content:'\f1b0'}.zmdi-local-see:before{content:'\f28c'}.zmdi-local-shipping:before{content:'\f1e6'}.zmdi-local-store:before{content:'\f1d4'}.zmdi-local-taxi:before{content:'\f123'}.zmdi-local-wc:before{content:'\f211'}.zmdi-my-location:before{content:'\f299'}.zmdi-directions:before{content:'\f1e7'}
}
/* source: vendor/textanimate/textanimate.css */
@layer cms.vendor {
/* CMS12 local scope patch (issue #1399)
 *
 * The upstream demo stylesheet originally reset *, html, body and a. Those
 * document-wide rules leaked the demo's typography and black background into
 * every storefront page. Platform base styles now own those concerns; this
 * file is intentionally limited to the text-animation component selectors.
 */

.cd-title {
  position: relative;
  height: 160px;
  line-height: 230px;
  text-align: center;
}
.cd-title h1 {
  font-size: 2.4rem;
  font-weight: 700;
}
@media only screen and (min-width: 768px) {
  .cd-title {
    line-height: 250px;
  }
}
@media only screen and (min-width: 1170px) {
  .cd-title {
    height: 200px;
    line-height: 300px;
  }
  .cd-title h1 {
    font-size: 3rem;
  }
}

.cd-intro {
  width: 90%;
  max-width: 768px;
  text-align: center;
}

.cd-intro {
  margin: 4em auto;
}
@media only screen and (min-width: 768px) {
  .cd-intro {
    margin: 5em auto;
  }
}
@media only screen and (min-width: 1170px) {
  .cd-intro {
    margin: 6em auto;
  }
}

.cd-headline {
  font-size: 3rem;
  line-height: 1.2;
}
@media only screen and (min-width: 768px) {
  .cd-headline {
    font-size: 4.4rem;
    font-weight: 300;
  }
}
@media only screen and (min-width: 1170px) {
  .cd-headline {
    font-size: 6rem;
  }
}

.cd-words-wrapper {
  display: inline-block;
  position: relative;
  text-align: left;
}
.cd-words-wrapper b {
  display: inline-block;
  position: absolute;
  white-space: nowrap;
  left: 0;
  top: 0;
}
.cd-words-wrapper b.is-visible {
  position: relative;
}
.no-js .cd-words-wrapper b {
  opacity: 0;
}
.no-js .cd-words-wrapper b.is-visible {
  opacity: 1;
}

/* -------------------------------- 

xrotate-1 

-------------------------------- */
.cd-headline.rotate-1 .cd-words-wrapper {
  -webkit-perspective: 300px;
  -moz-perspective: 300px;
  perspective: 300px;
}
.cd-headline.rotate-1 b {
  opacity: 0;
  -webkit-transform-origin: 50% 100%;
  -moz-transform-origin: 50% 100%;
  -ms-transform-origin: 50% 100%;
  -o-transform-origin: 50% 100%;
  transform-origin: 50% 100%;
  -webkit-transform: rotateX(180deg);
  -moz-transform: rotateX(180deg);
  -ms-transform: rotateX(180deg);
  -o-transform: rotateX(180deg);
  transform: rotateX(180deg);
}
.cd-headline.rotate-1 b.is-visible {
  opacity: 1;
  -webkit-transform: rotateX(0deg);
  -moz-transform: rotateX(0deg);
  -ms-transform: rotateX(0deg);
  -o-transform: rotateX(0deg);
  transform: rotateX(0deg);
  -webkit-animation: cd-rotate-1-in 1.2s;
  -moz-animation: cd-rotate-1-in 1.2s;
  animation: cd-rotate-1-in 1.2s;
}
.cd-headline.rotate-1 b.is-hidden {
  -webkit-transform: rotateX(180deg);
  -moz-transform: rotateX(180deg);
  -ms-transform: rotateX(180deg);
  -o-transform: rotateX(180deg);
  transform: rotateX(180deg);
  -webkit-animation: cd-rotate-1-out 1.2s;
  -moz-animation: cd-rotate-1-out 1.2s;
  animation: cd-rotate-1-out 1.2s;
}

@-webkit-keyframes cd-rotate-1-in {
  0% {
    -webkit-transform: rotateX(180deg);
    opacity: 0;
  }
  35% {
    -webkit-transform: rotateX(120deg);
    opacity: 0;
  }
  65% {
    opacity: 0;
  }
  100% {
    -webkit-transform: rotateX(360deg);
    opacity: 1;
  }
}
@-moz-keyframes cd-rotate-1-in {
  0% {
    -moz-transform: rotateX(180deg);
    opacity: 0;
  }
  35% {
    -moz-transform: rotateX(120deg);
    opacity: 0;
  }
  65% {
    opacity: 0;
  }
  100% {
    -moz-transform: rotateX(360deg);
    opacity: 1;
  }
}
@keyframes cd-rotate-1-in {
  0% {
    -webkit-transform: rotateX(180deg);
    -moz-transform: rotateX(180deg);
    -ms-transform: rotateX(180deg);
    -o-transform: rotateX(180deg);
    transform: rotateX(180deg);
    opacity: 0;
  }
  35% {
    -webkit-transform: rotateX(120deg);
    -moz-transform: rotateX(120deg);
    -ms-transform: rotateX(120deg);
    -o-transform: rotateX(120deg);
    transform: rotateX(120deg);
    opacity: 0;
  }
  65% {
    opacity: 0;
  }
  100% {
    -webkit-transform: rotateX(360deg);
    -moz-transform: rotateX(360deg);
    -ms-transform: rotateX(360deg);
    -o-transform: rotateX(360deg);
    transform: rotateX(360deg);
    opacity: 1;
  }
}
@-webkit-keyframes cd-rotate-1-out {
  0% {
    -webkit-transform: rotateX(0deg);
    opacity: 1;
  }
  35% {
    -webkit-transform: rotateX(-40deg);
    opacity: 1;
  }
  65% {
    opacity: 0;
  }
  100% {
    -webkit-transform: rotateX(180deg);
    opacity: 0;
  }
}
@-moz-keyframes cd-rotate-1-out {
  0% {
    -moz-transform: rotateX(0deg);
    opacity: 1;
  }
  35% {
    -moz-transform: rotateX(-40deg);
    opacity: 1;
  }
  65% {
    opacity: 0;
  }
  100% {
    -moz-transform: rotateX(180deg);
    opacity: 0;
  }
}
@keyframes cd-rotate-1-out {
  0% {
    -webkit-transform: rotateX(0deg);
    -moz-transform: rotateX(0deg);
    -ms-transform: rotateX(0deg);
    -o-transform: rotateX(0deg);
    transform: rotateX(0deg);
    opacity: 1;
  }
  35% {
    -webkit-transform: rotateX(-40deg);
    -moz-transform: rotateX(-40deg);
    -ms-transform: rotateX(-40deg);
    -o-transform: rotateX(-40deg);
    transform: rotateX(-40deg);
    opacity: 1;
  }
  65% {
    opacity: 0;
  }
  100% {
    -webkit-transform: rotateX(180deg);
    -moz-transform: rotateX(180deg);
    -ms-transform: rotateX(180deg);
    -o-transform: rotateX(180deg);
    transform: rotateX(180deg);
    opacity: 0;
  }
}
/* -------------------------------- 

xtype 

-------------------------------- */
.cd-headline.type .cd-words-wrapper {
  vertical-align: top;
  overflow: hidden;
}
.cd-headline.type .cd-words-wrapper::after {
  /* vertical bar */
  content: '';
  position: absolute;
  right: 0;
  top: 50%;
  bottom: auto;
  -webkit-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
  height: 90%;
  width: 1px;
  background-color: #aebcb9;
}
.cd-headline.type .cd-words-wrapper.waiting::after {
  -webkit-animation: cd-pulse 1s infinite;
  -moz-animation: cd-pulse 1s infinite;
  animation: cd-pulse 1s infinite;
}
.cd-headline.type .cd-words-wrapper.selected {
  background-color: #aebcb9;
}
.cd-headline.type .cd-words-wrapper.selected::after {
  visibility: hidden;
}
.cd-headline.type .cd-words-wrapper.selected b {
  color: #0d0d0d;
}
.cd-headline.type b {
  visibility: hidden;
}
.cd-headline.type b.is-visible {
  visibility: visible;
}
.cd-headline.type i {
  position: absolute;
  visibility: hidden;
}
.cd-headline.type i.in {
  position: relative;
  visibility: visible;
}

@-webkit-keyframes cd-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
    opacity: 1;
  }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
    opacity: 0;
  }
}
@-moz-keyframes cd-pulse {
  0% {
    -moz-transform: translateY(-50%) scale(1);
    opacity: 1;
  }
  40% {
    -moz-transform: translateY(-50%) scale(0.9);
    opacity: 0;
  }
  100% {
    -moz-transform: translateY(-50%) scale(0);
    opacity: 0;
  }
}
@keyframes cd-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
    -moz-transform: translateY(-50%) scale(1);
    -ms-transform: translateY(-50%) scale(1);
    -o-transform: translateY(-50%) scale(1);
    transform: translateY(-50%) scale(1);
    opacity: 1;
  }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
    -moz-transform: translateY(-50%) scale(0.9);
    -ms-transform: translateY(-50%) scale(0.9);
    -o-transform: translateY(-50%) scale(0.9);
    transform: translateY(-50%) scale(0.9);
    opacity: 0;
  }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
    -moz-transform: translateY(-50%) scale(0);
    -ms-transform: translateY(-50%) scale(0);
    -o-transform: translateY(-50%) scale(0);
    transform: translateY(-50%) scale(0);
    opacity: 0;
  }
}
/* -------------------------------- 

xrotate-2 

-------------------------------- */
.cd-headline.rotate-2 .cd-words-wrapper {
  -webkit-perspective: 300px;
  -moz-perspective: 300px;
  perspective: 300px;
}
.cd-headline.rotate-2 i, .cd-headline.rotate-2 em {
  display: inline-block;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
.cd-headline.rotate-2 b {
  opacity: 0;
}
.cd-headline.rotate-2 i {
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  transform-style: preserve-3d;
  -webkit-transform: translateZ(-20px) rotateX(90deg);
  -moz-transform: translateZ(-20px) rotateX(90deg);
  -ms-transform: translateZ(-20px) rotateX(90deg);
  -o-transform: translateZ(-20px) rotateX(90deg);
  transform: translateZ(-20px) rotateX(90deg);
  opacity: 0;
}
.is-visible .cd-headline.rotate-2 i {
  opacity: 1;
}
.cd-headline.rotate-2 i.in {
  -webkit-animation: cd-rotate-2-in 0.4s forwards;
  -moz-animation: cd-rotate-2-in 0.4s forwards;
  animation: cd-rotate-2-in 0.4s forwards;
}
.cd-headline.rotate-2 i.out {
  -webkit-animation: cd-rotate-2-out 0.4s forwards;
  -moz-animation: cd-rotate-2-out 0.4s forwards;
  animation: cd-rotate-2-out 0.4s forwards;
}
.cd-headline.rotate-2 em {
  -webkit-transform: translateZ(20px);
  -moz-transform: translateZ(20px);
  -ms-transform: translateZ(20px);
  -o-transform: translateZ(20px);
  transform: translateZ(20px);
}

.no-csstransitions .cd-headline.rotate-2 i {
  -webkit-transform: rotateX(0deg);
  -moz-transform: rotateX(0deg);
  -ms-transform: rotateX(0deg);
  -o-transform: rotateX(0deg);
  transform: rotateX(0deg);
  opacity: 0;
}
.no-csstransitions .cd-headline.rotate-2 i em {
  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  -ms-transform: scale(1);
  -o-transform: scale(1);
  transform: scale(1);
}

.no-csstransitions .cd-headline.rotate-2 .is-visible i {
  opacity: 1;
}

@-webkit-keyframes cd-rotate-2-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
  }
}
@-moz-keyframes cd-rotate-2-in {
  0% {
    opacity: 0;
    -moz-transform: translateZ(-20px) rotateX(90deg);
  }
  60% {
    opacity: 1;
    -moz-transform: translateZ(-20px) rotateX(-10deg);
  }
  100% {
    opacity: 1;
    -moz-transform: translateZ(-20px) rotateX(0deg);
  }
}
@keyframes cd-rotate-2-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
    -moz-transform: translateZ(-20px) rotateX(90deg);
    -ms-transform: translateZ(-20px) rotateX(90deg);
    -o-transform: translateZ(-20px) rotateX(90deg);
    transform: translateZ(-20px) rotateX(90deg);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
    -moz-transform: translateZ(-20px) rotateX(-10deg);
    -ms-transform: translateZ(-20px) rotateX(-10deg);
    -o-transform: translateZ(-20px) rotateX(-10deg);
    transform: translateZ(-20px) rotateX(-10deg);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
    -moz-transform: translateZ(-20px) rotateX(0deg);
    -ms-transform: translateZ(-20px) rotateX(0deg);
    -o-transform: translateZ(-20px) rotateX(0deg);
    transform: translateZ(-20px) rotateX(0deg);
  }
}
@-webkit-keyframes cd-rotate-2-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
  }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
  }
}
@-moz-keyframes cd-rotate-2-out {
  0% {
    opacity: 1;
    -moz-transform: translateZ(-20px) rotateX(0);
  }
  60% {
    opacity: 0;
    -moz-transform: translateZ(-20px) rotateX(-100deg);
  }
  100% {
    opacity: 0;
    -moz-transform: translateZ(-20px) rotateX(-90deg);
  }
}
@keyframes cd-rotate-2-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
    -moz-transform: translateZ(-20px) rotateX(0);
    -ms-transform: translateZ(-20px) rotateX(0);
    -o-transform: translateZ(-20px) rotateX(0);
    transform: translateZ(-20px) rotateX(0);
  }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
    -moz-transform: translateZ(-20px) rotateX(-100deg);
    -ms-transform: translateZ(-20px) rotateX(-100deg);
    -o-transform: translateZ(-20px) rotateX(-100deg);
    transform: translateZ(-20px) rotateX(-100deg);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
    -moz-transform: translateZ(-20px) rotateX(-90deg);
    -ms-transform: translateZ(-20px) rotateX(-90deg);
    -o-transform: translateZ(-20px) rotateX(-90deg);
    transform: translateZ(-20px) rotateX(-90deg);
  }
}
/* -------------------------------- 

xloading-bar 

-------------------------------- */
.cd-headline.loading-bar span {
  display: inline-block;
  padding: .2em 0;
}
.cd-headline.loading-bar .cd-words-wrapper {
  overflow: hidden;
  vertical-align: top;
}
.cd-headline.loading-bar .cd-words-wrapper::after {
  /* loading bar */
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  height: 3px;
  width: 0;
  background: #0096a7;
  z-index: 2;
  -webkit-transition: width 0.3s -0.1s;
  -moz-transition: width 0.3s -0.1s;
  transition: width 0.3s -0.1s;
}
.cd-headline.loading-bar .cd-words-wrapper.is-loading::after {
  width: 100%;
  -webkit-transition: width 3s;
  -moz-transition: width 3s;
  transition: width 3s;
}
.cd-headline.loading-bar b {
  top: .2em;
  opacity: 0;
  -webkit-transition: opacity 0.3s;
  -moz-transition: opacity 0.3s;
  transition: opacity 0.3s;
}
.cd-headline.loading-bar b.is-visible {
  opacity: 1;
  top: 0;
}

/* -------------------------------- 

xslide 

-------------------------------- */
.cd-headline.slide span {
  display: inline-block;
  padding: .2em 0;
}
.cd-headline.slide .cd-words-wrapper {
  overflow: hidden;
  vertical-align: top;
}
.cd-headline.slide b {
  opacity: 0;
  top: .2em;
}
.cd-headline.slide b.is-visible {
  top: 0;
  opacity: 1;
  -webkit-animation: slide-in 0.6s;
  -moz-animation: slide-in 0.6s;
  animation: slide-in 0.6s;
}
.cd-headline.slide b.is-hidden {
  -webkit-animation: slide-out 0.6s;
  -moz-animation: slide-out 0.6s;
  animation: slide-out 0.6s;
}

@-webkit-keyframes slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
  }
}
@-moz-keyframes slide-in {
  0% {
    opacity: 0;
    -moz-transform: translateY(-100%);
  }
  60% {
    opacity: 1;
    -moz-transform: translateY(20%);
  }
  100% {
    opacity: 1;
    -moz-transform: translateY(0);
  }
}
@keyframes slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
    -moz-transform: translateY(-100%);
    -ms-transform: translateY(-100%);
    -o-transform: translateY(-100%);
    transform: translateY(-100%);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
    -moz-transform: translateY(20%);
    -ms-transform: translateY(20%);
    -o-transform: translateY(20%);
    transform: translateY(20%);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}
@-webkit-keyframes slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
  }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
  }
}
@-moz-keyframes slide-out {
  0% {
    opacity: 1;
    -moz-transform: translateY(0);
  }
  60% {
    opacity: 0;
    -moz-transform: translateY(120%);
  }
  100% {
    opacity: 0;
    -moz-transform: translateY(100%);
  }
}
@keyframes slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
    -moz-transform: translateY(120%);
    -ms-transform: translateY(120%);
    -o-transform: translateY(120%);
    transform: translateY(120%);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
    -moz-transform: translateY(100%);
    -ms-transform: translateY(100%);
    -o-transform: translateY(100%);
    transform: translateY(100%);
  }
}
/* -------------------------------- 

xclip 

-------------------------------- */
.cd-headline.clip span {
  display: inline-block;
  padding: .2em 0;
}
.cd-headline.clip .cd-words-wrapper {
  overflow: hidden;
  vertical-align: top;
}
.cd-headline.clip .cd-words-wrapper::after {
  /* line */
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 2px;
  height: 100%;
  background-color: #aebcb9;
}
.cd-headline.clip b {
  opacity: 0;
}
.cd-headline.clip b.is-visible {
  opacity: 1;
}

/* -------------------------------- 

xzoom 

-------------------------------- */
.cd-headline.zoom .cd-words-wrapper {
  -webkit-perspective: 300px;
  -moz-perspective: 300px;
  perspective: 300px;
}
.cd-headline.zoom b {
  opacity: 0;
}
.cd-headline.zoom b.is-visible {
  opacity: 1;
  -webkit-animation: zoom-in 0.8s;
  -moz-animation: zoom-in 0.8s;
  animation: zoom-in 0.8s;
}
.cd-headline.zoom b.is-hidden {
  -webkit-animation: zoom-out 0.8s;
  -moz-animation: zoom-out 0.8s;
  animation: zoom-out 0.8s;
}

@-webkit-keyframes zoom-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
  }
}
@-moz-keyframes zoom-in {
  0% {
    opacity: 0;
    -moz-transform: translateZ(100px);
  }
  100% {
    opacity: 1;
    -moz-transform: translateZ(0);
  }
}
@keyframes zoom-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
    -moz-transform: translateZ(100px);
    -ms-transform: translateZ(100px);
    -o-transform: translateZ(100px);
    transform: translateZ(100px);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
  }
}
@-webkit-keyframes zoom-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
  }
}
@-moz-keyframes zoom-out {
  0% {
    opacity: 1;
    -moz-transform: translateZ(0);
  }
  100% {
    opacity: 0;
    -moz-transform: translateZ(-100px);
  }
}
@keyframes zoom-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
    -moz-transform: translateZ(-100px);
    -ms-transform: translateZ(-100px);
    -o-transform: translateZ(-100px);
    transform: translateZ(-100px);
  }
}
/* -------------------------------- 

xrotate-3 

-------------------------------- */
.cd-headline.rotate-3 .cd-words-wrapper {
  -webkit-perspective: 300px;
  -moz-perspective: 300px;
  perspective: 300px;
}
.cd-headline.rotate-3 b {
  opacity: 0;
}
.cd-headline.rotate-3 i {
  display: inline-block;
  -webkit-transform: rotateY(180deg);
  -moz-transform: rotateY(180deg);
  -ms-transform: rotateY(180deg);
  -o-transform: rotateY(180deg);
  transform: rotateY(180deg);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
.is-visible .cd-headline.rotate-3 i {
  -webkit-transform: rotateY(0deg);
  -moz-transform: rotateY(0deg);
  -ms-transform: rotateY(0deg);
  -o-transform: rotateY(0deg);
  transform: rotateY(0deg);
}
.cd-headline.rotate-3 i.in {
  -webkit-animation: cd-rotate-3-in 0.6s forwards;
  -moz-animation: cd-rotate-3-in 0.6s forwards;
  animation: cd-rotate-3-in 0.6s forwards;
}
.cd-headline.rotate-3 i.out {
  -webkit-animation: cd-rotate-3-out 0.6s forwards;
  -moz-animation: cd-rotate-3-out 0.6s forwards;
  animation: cd-rotate-3-out 0.6s forwards;
}

.no-csstransitions .cd-headline.rotate-3 i {
  -webkit-transform: rotateY(0deg);
  -moz-transform: rotateY(0deg);
  -ms-transform: rotateY(0deg);
  -o-transform: rotateY(0deg);
  transform: rotateY(0deg);
  opacity: 0;
}

.no-csstransitions .cd-headline.rotate-3 .is-visible i {
  opacity: 1;
}

@-webkit-keyframes cd-rotate-3-in {
  0% {
    -webkit-transform: rotateY(180deg);
  }
  100% {
    -webkit-transform: rotateY(0deg);
  }
}
@-moz-keyframes cd-rotate-3-in {
  0% {
    -moz-transform: rotateY(180deg);
  }
  100% {
    -moz-transform: rotateY(0deg);
  }
}
@keyframes cd-rotate-3-in {
  0% {
    -webkit-transform: rotateY(180deg);
    -moz-transform: rotateY(180deg);
    -ms-transform: rotateY(180deg);
    -o-transform: rotateY(180deg);
    transform: rotateY(180deg);
  }
  100% {
    -webkit-transform: rotateY(0deg);
    -moz-transform: rotateY(0deg);
    -ms-transform: rotateY(0deg);
    -o-transform: rotateY(0deg);
    transform: rotateY(0deg);
  }
}
@-webkit-keyframes cd-rotate-3-out {
  0% {
    -webkit-transform: rotateY(0);
  }
  100% {
    -webkit-transform: rotateY(-180deg);
  }
}
@-moz-keyframes cd-rotate-3-out {
  0% {
    -moz-transform: rotateY(0);
  }
  100% {
    -moz-transform: rotateY(-180deg);
  }
}
@keyframes cd-rotate-3-out {
  0% {
    -webkit-transform: rotateY(0);
    -moz-transform: rotateY(0);
    -ms-transform: rotateY(0);
    -o-transform: rotateY(0);
    transform: rotateY(0);
  }
  100% {
    -webkit-transform: rotateY(-180deg);
    -moz-transform: rotateY(-180deg);
    -ms-transform: rotateY(-180deg);
    -o-transform: rotateY(-180deg);
    transform: rotateY(-180deg);
  }
}
/* -------------------------------- 

xscale 

-------------------------------- */
.cd-headline.scale b {
  opacity: 0;
}
.cd-headline.scale i {
  display: inline-block;
  opacity: 0;
  -webkit-transform: scale(0);
  -moz-transform: scale(0);
  -ms-transform: scale(0);
  -o-transform: scale(0);
  transform: scale(0);
}
.is-visible .cd-headline.scale i {
  opacity: 1;
}
.cd-headline.scale i.in {
  -webkit-animation: scale-up 0.6s forwards;
  -moz-animation: scale-up 0.6s forwards;
  animation: scale-up 0.6s forwards;
}
.cd-headline.scale i.out {
  -webkit-animation: scale-down 0.6s forwards;
  -moz-animation: scale-down 0.6s forwards;
  animation: scale-down 0.6s forwards;
}

.no-csstransitions .cd-headline.scale i {
  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  -ms-transform: scale(1);
  -o-transform: scale(1);
  transform: scale(1);
  opacity: 0;
}

.no-csstransitions .cd-headline.scale .is-visible i {
  opacity: 1;
}

@-webkit-keyframes scale-up {
  0% {
    -webkit-transform: scale(0);
    opacity: 0;
  }
  60% {
    -webkit-transform: scale(1.2);
    opacity: 1;
  }
  100% {
    -webkit-transform: scale(1);
    opacity: 1;
  }
}
@-moz-keyframes scale-up {
  0% {
    -moz-transform: scale(0);
    opacity: 0;
  }
  60% {
    -moz-transform: scale(1.2);
    opacity: 1;
  }
  100% {
    -moz-transform: scale(1);
    opacity: 1;
  }
}
@keyframes scale-up {
  0% {
    -webkit-transform: scale(0);
    -moz-transform: scale(0);
    -ms-transform: scale(0);
    -o-transform: scale(0);
    transform: scale(0);
    opacity: 0;
  }
  60% {
    -webkit-transform: scale(1.2);
    -moz-transform: scale(1.2);
    -ms-transform: scale(1.2);
    -o-transform: scale(1.2);
    transform: scale(1.2);
    opacity: 1;
  }
  100% {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -ms-transform: scale(1);
    -o-transform: scale(1);
    transform: scale(1);
    opacity: 1;
  }
}
@-webkit-keyframes scale-down {
  0% {
    -webkit-transform: scale(1);
    opacity: 1;
  }
  60% {
    -webkit-transform: scale(0);
    opacity: 0;
  }
}
@-moz-keyframes scale-down {
  0% {
    -moz-transform: scale(1);
    opacity: 1;
  }
  60% {
    -moz-transform: scale(0);
    opacity: 0;
  }
}
@keyframes scale-down {
  0% {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    -ms-transform: scale(1);
    -o-transform: scale(1);
    transform: scale(1);
    opacity: 1;
  }
  60% {
    -webkit-transform: scale(0);
    -moz-transform: scale(0);
    -ms-transform: scale(0);
    -o-transform: scale(0);
    transform: scale(0);
    opacity: 0;
  }
}
/* -------------------------------- 

xpush 

-------------------------------- */
.cd-headline.push b {
  opacity: 0;
}
.cd-headline.push b.is-visible {
  opacity: 1;
  -webkit-animation: push-in 0.6s;
  -moz-animation: push-in 0.6s;
  animation: push-in 0.6s;
}
.cd-headline.push b.is-hidden {
  -webkit-animation: push-out 0.6s;
  -moz-animation: push-out 0.6s;
  animation: push-out 0.6s;
}

@-webkit-keyframes push-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
  }
}
@-moz-keyframes push-in {
  0% {
    opacity: 0;
    -moz-transform: translateX(-100%);
  }
  60% {
    opacity: 1;
    -moz-transform: translateX(10%);
  }
  100% {
    opacity: 1;
    -moz-transform: translateX(0);
  }
}
@keyframes push-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
    -moz-transform: translateX(-100%);
    -ms-transform: translateX(-100%);
    -o-transform: translateX(-100%);
    transform: translateX(-100%);
  }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
    -moz-transform: translateX(10%);
    -ms-transform: translateX(10%);
    -o-transform: translateX(10%);
    transform: translateX(10%);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
}
@-webkit-keyframes push-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
  }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
  }
}
@-moz-keyframes push-out {
  0% {
    opacity: 1;
    -moz-transform: translateX(0);
  }
  60% {
    opacity: 0;
    -moz-transform: translateX(110%);
  }
  100% {
    opacity: 0;
    -moz-transform: translateX(100%);
  }
}
@keyframes push-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
    -moz-transform: translateX(0);
    -ms-transform: translateX(0);
    -o-transform: translateX(0);
    transform: translateX(0);
  }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
    -moz-transform: translateX(110%);
    -ms-transform: translateX(110%);
    -o-transform: translateX(110%);
    transform: translateX(110%);
  }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
    -moz-transform: translateX(100%);
    -ms-transform: translateX(100%);
    -o-transform: translateX(100%);
    transform: translateX(100%);
  }
}

}
/* source: vendor/owl-carousel/owl.carousel.min.css */
@layer cms.vendor {
/**
 * Owl Carousel v2.3.4
 * Copyright 2013-2018 David Deutsch
 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
 */
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url("/vendor/owl-carousel/owl.video.play.png") no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
}
/* source: vendor/owl-carousel/owl.theme.default.min.css */
@layer cms.vendor {
/**
 * Owl Carousel v2.3.4
 * Copyright 2013-2018 David Deutsch
 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
 */
.owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791}
}
/* source: vendor/select2/css/select2.min.css */
@layer cms.vendor {
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}

}
/* source: web/css/common/tokens.css */
@layer cms.platform {
/* ============================================================================
 * common/tokens.css — 跨主題共用 Design Token 層
 * ============================================================================
 *
 * 用途：
 *   定義全站（所有主題共用）的 design token（CSS 自訂屬性），作為
 *   common 托底樣式與各主題覆寫的單一色彩／尺度來源。
 *   - common/*.css 引用 token 取得 default 基準值
 *   - themes/<theme>/base.css 於 :root 覆寫 token 值，即可整體換膚
 *
 * 命名規範（完整規範見 docs/front/css-development-guideline.md §4.4）：
 *   --cms-<類別>-<角色>[-<變體>]
 *   類別：color / font / text（字級）/ space（間距）/ container（容器寬度）/ radius / shadow
 *   主題私有 token：--cms-<主題縮寫>-...（如 3ffood 的 --cms-sf-color-primary），
 *   不得與全域 token 撞名。
 *
 * 載入順序：
 *   本檔為 webThemeCss 載入鏈第一支（所有 common / themes 檔之前），
 *   僅含 :root 變數定義，不得寫任何元件規則。
 *
 * 基準值原則（issue #698）：
 *   所有 token 初始值取自 common/base.css 現況實測值，屬純等價替換，
 *   不改變任何主題現有視覺；主題差異化覆寫屬母票 #695 後續階段。
 *
 * 選擇器為什麼是 `:root, :host`（issue #879）：
 *   後台的三欄式 Widget 編輯器把預覽畫布掛在 Shadow DOM 內，以隔離前台 CSS、
 *   避免 common/base.css 的 html／body／a／.btn 等全域選擇器改寫 AdminLTE 版面。
 *   `:root` 在 shadow tree 內**不匹配任何元素**（它指的是文件根 html），只寫 `:root`
 *   會讓畫布內所有 var(--cms-*) 全部落到 fallback 值，畫面與前台不一致。
 *   `:host` 指向 shadow root 的宿主元素，補上後畫布內即可取得同一組 token。
 *   前台（light DOM）不存在 shadow root，`:host` 不匹配任何元素，故對前台渲染零影響
 *   （已以逐像素基準圖比對驗證）。兩者特異性同為 (0,1,0)，選擇器清單不改變權重。
 *
 * 變更記錄：issue #698（母票 #695 階段一：建立 design token 層）
 *           issue #879（補 :host 使 token 可用於後台預覽畫布的 Shadow DOM）
 * ============================================================================ */

:root,
:host {
  /* ---- 色彩：品牌 ---- */
  --cms-color-primary: #4fc1f0;            /* 品牌主色（選取反白、按鈕 hover 底、強調邊框） */
  --cms-color-primary-rgb: 79, 193, 240;   /* 供 rgba(var(--cms-color-primary-rgb), α) 使用 */
  --cms-color-dark: #131313;               /* 深色底／連結 hover 深字 */
  --cms-color-accent: #007bff;             /* 動作藍（badge-primary、輪播箭頭 hover；源自 BS4 primary） */
  --cms-color-gold: #a06400;               /* 金棕強調（timeline／sgs 區塊） */

  /* ---- 色彩：表面與背景 ---- */
  --cms-color-surface: #ffffff;            /* 頁面／卡片底色 */
  --cms-color-bg-soft: #f6f6f6;            /* 淺灰區塊底（.gray-bg／.default-bg／.footer-top） */

  /* ---- 色彩：文字 ---- */
  --cms-color-text: #333333;               /* 內文（p） */
  --cms-color-text-secondary: #666666;     /* 次要文字（a／button／input 預設） */
  --cms-color-text-muted: #999999;         /* 輔助文字（label 等） */
  --cms-color-text-inverse: #ffffff;       /* 深色底上的反白文字 */
  --cms-color-ink: #1f2d3d;                /* 淺色 badge 上的深字 */

  /* ---- 色彩：邊框與分隔 ---- */
  --cms-color-border: #eeeeee;             /* 一般框線（select／pagination） */
  --cms-color-border-strong: #cccccc;      /* 較深框線 */
  --cms-color-divider: #eceff8;            /* hr 分隔線 */

  /* ---- 色彩：互動元件深色 ---- */
  --cms-color-btn-dark: #313131;           /* btnSummit／btnNormal／cart-action／pagination active 深色系 */

  /* ---- 色彩：狀態 ---- */
  --cms-color-secondary: #6c757d;
  --cms-color-success: #28a745;
  --cms-color-info: #17a2b8;
  --cms-color-warning: #ffc107;
  --cms-color-danger: #dc3545;

  /* ---- 色彩：柔和警示（黃色提醒區塊：淡底＋深字，供非阻斷性提醒使用，如贈品缺貨） ---- */
  --cms-color-warning-surface: #fff8e6;    /* 黃色提醒底 */
  --cms-color-warning-border: #f0d48a;     /* 黃色提醒框線 */
  --cms-color-warning-text: #8a6100;       /* 黃色提醒文字 */

  /* ---- 色彩：Widget 區塊背景橋接 token（issue #879）----
     後台「區塊背景色」的三個色板選項（淺灰／深色／主色）與其成對前景色。
     刻意獨立成一組橋接 token，而非讓 widget CSS 直接引用 --cms-color-primary 等全域 token：
     實測（2026-08-13）3ffood 與 shopLinerp 的 base.css 覆寫全域 --cms-color-* 的數量**皆為 0**，
     品牌色定義在各自的私有 token（--cms-sf-* / --cms-sl-*）；kgtwbeef 更把 --cms-color-dark
     借用為品牌橘 #ff7f00，直接綁全域 token 會讓「深色」底變成橘色。
     橋接層使「這個主題的主色／深色是哪個變數」成為各主題 base.css 裡的一行對映，
     widget CSS 不需逐主題寫 if，主題也不必改寫既有的私有 token 命名。

     前景色 MUST 與背景成對切換，且各主題自行決定用哪一個——不是所有主題的主色都是深色。
     下方 common 預設值取自實測對比（WCAG 2.1，白字 vs #333 字）：
       --cms-color-bg-soft #f6f6f6 ＋ #333 → 11.69（AA）
       --cms-color-dark    #131313 ＋ 白字 → 18.58（AA）
       --cms-color-primary #4fc1f0 ＋ 白字 → 2.06（不合格）／＋ #333 → 6.15（AA）
     故 common 的 --cms-widget-fg-on-brand 預設為深字而非反白；品牌色為深色的主題
     （3ffood／dgfactor／kgtwbeef／shopLinerp／zengarden）於自身 base.css 覆寫為反白。 */
  --cms-widget-bg-light: var(--cms-color-bg-soft);
  --cms-widget-bg-dark: var(--cms-color-dark);
  --cms-widget-bg-brand: var(--cms-color-primary);
  --cms-widget-fg-on-light: var(--cms-color-text);
  --cms-widget-fg-on-dark: var(--cms-color-text-inverse);
  --cms-widget-fg-on-brand: var(--cms-color-text);

  /* ---- 色彩：滿額贈品（gift.css：贈品卡／加購提示橫幅） ---- */
  --cms-color-gift-surface: #fffdf7;       /* 贈品卡淡金底 */
  --cms-color-gift-border: #efe3c8;        /* 贈品卡框線 */

  /* ---- 字型 ---- */
  --cms-font-family-base: 'Noto Sans TC', 'Raleway', sans-serif;
  --cms-font-family-ui: system-ui, -apple-system, 'Noto Sans TC', sans-serif;
  --cms-font-family-latin: 'Roboto', sans-serif;
  --cms-font-family-latin-display: 'Raleway', sans-serif;
  --cms-font-family-serif-tc: 'Noto Serif TC', serif;
  --cms-font-family-serif-jp: 'Noto Serif JP', serif;
  --cms-font-family-display: HGPMinchoE;
  --cms-font-family-decorative: Sitka;
  --cms-font-family-icon: 'Font Awesome 5 Free';

  /* ---- 字級尺度（common 現況實測值） ---- */
  --cms-root-font-size: 62.5%;             /* 既有 rem 契約：1rem = 10px；由平台層明確管理 */
  --cms-text-xs: 12px;
  --cms-text-sm: 13px;
  --cms-text-base: 14px;                   /* body 基準 */
  --cms-text-md: 15px;
  --cms-text-lg: 16px;
  --cms-text-xl: 18px;
  --cms-text-2xl: 20px;
  --cms-text-3xl: 24px;
  --cms-line-height-base: 24px;            /* body 基準行高 */
  --cms-text-h1: 48px;
  --cms-text-h2: 36px;
  --cms-text-h3: 28px;
  --cms-text-h4: 22px;

  /* ---- 間距尺度（母票 #695 階段三 #701：common/base.css 的 .mt-*／.pt-*／.plr-* 等
     間距 utility 已全數改接下列數值 token；主題於 :root 覆寫任一 --cms-space-<px>
     即可整體縮放對應間距。數值 token 為間距系統本體，語意別名（xs/sm/…）供設計參照。 ---- */
  --cms-space-0: 0;
  --cms-space-1: 1px;
  --cms-space-2: 2px;
  --cms-space-3: 3px;
  --cms-space-4: 4px;
  --cms-space-5: 5px;
  --cms-space-10: 10px;
  --cms-space-15: 15px;
  --cms-space-20: 20px;
  --cms-space-25: 25px;
  --cms-space-30: 30px;
  --cms-space-35: 35px;
  --cms-space-40: 40px;
  --cms-space-50: 50px;
  --cms-space-55: 55px;
  --cms-space-60: 60px;
  --cms-space-70: 70px;
  --cms-space-80: 80px;
  --cms-space-90: 90px;
  --cms-space-100: 100px;
  --cms-space-110: 110px;
  --cms-space-120: 120px;
  --cms-space-130: 130px;
  --cms-space-140: 140px;
  --cms-space-150: 150px;
  --cms-space-160: 160px;
  --cms-space-185: 185px;
  --cms-space-200: 200px;

  /* 語意別名（供設計參照與新碼引用；指向上方數值 token） */
  --cms-space-xs: var(--cms-space-5);
  --cms-space-sm: var(--cms-space-10);
  --cms-space-md: var(--cms-space-15);
  --cms-space-lg: var(--cms-space-20);
  --cms-space-xl: var(--cms-space-30);
  --cms-space-2xl: var(--cms-space-40);
  --cms-space-3xl: var(--cms-space-50);
  --cms-space-4xl: var(--cms-space-80);

  /* ---- 容器寬度（issue #694 phase 2）----
     Widget 容器與站台 .container 的寬度階梯單一來源。主題於自身 base.css 的 :root
     覆寫任一值即可整體調整版面寬度，毋須複製選擇器。
     階梯對應標準斷點：未達 992 為流體 → ≥992 md → ≥1200 lg → ≥1400 xl。 */
  --cms-container-narrow: 800px;   /* .container-800：長文內容用窄容器 */
  --cms-container-md: 1140px;      /* ≥992：widget 容器（較站台 .container 的 960 寬） */
  --cms-container-lg: 1170px;      /* ≥1200：站台 .container 與 widget 容器共用 */
  --cms-container-xl: 1320px;      /* ≥1400：同上 */
  --cms-container-max: 1600px;     /* widget 容器絕對上限（未達 992 時為流體，實際不受限） */

  /* ---- 圓角 ---- */
  --cms-radius-sm: 3px;
  --cms-radius-md: 10px;
  --cms-radius-lg: 20px;
  --cms-radius-pill: 99rem;

  /* ---- 陰影 ---- */
  --cms-shadow-btn-inset: 0 0 0 1px rgba(0, 0, 0, 0.03) inset;  /* a.button 系列內框線 */
  --cms-shadow-soft: 0 0 4px rgba(0, 0, 0, 0.1);                /* 輸入框／通用陰影 */

  /* ---- 統一下拉元件 web-select（issue #1014） ----
   * 全站前台下拉只有一套外觀，樣式本體在 common/form-select.css，這裡是它唯一的調色盤。
   * 主題換色 → 在 themes/<theme>/base.css 的 :root 覆寫 accent 兩支即可（欄位與展開面板
   * 一次同步；面板 append 在 body，只有 :root 層的覆寫吃得到）。
   * 單頁若要對齊該頁輸入框的高度／圓角，於該頁 CSS 對頁面容器覆寫 -height／-radius。 */
  --cms-select-accent: #111827;                     /* 聚焦框線、已選項文字與打勾 */
  --cms-select-accent-soft: rgba(17, 24, 39, 0.08); /* 聚焦光暈 */
  --cms-select-surface: #ffffff;
  --cms-select-text: #111827;
  --cms-select-text-muted: #9ca3af;                 /* placeholder／停用／提示列 */
  --cms-select-border: #dfe3e8;
  --cms-select-divider: #f1f3f5;                    /* 搜尋列下緣分隔線 */
  --cms-select-hover: #f3f4f6;                      /* 游標所在列底色 */
  --cms-select-scrollbar: #cbd5e1;
  --cms-select-danger: #dc2626;                     /* is-invalid 紅框 */
  --cms-select-height: 48px;                        /* 收合狀態高度（對齊該頁 .form-control） */
  --cms-select-radius: 10px;                        /* 收合狀態圓角 */
  --cms-select-radius-inner: 8px;                   /* 搜尋框與選項的圓角 */
  --cms-select-font-size: 15px;
  --cms-select-option-font-size: 14px;
  --cms-select-panel-radius: 10px;                  /* 展開面板圓角（全站一致，不隨頁面變） */
  --cms-select-panel-shadow: 0 14px 32px rgba(17, 24, 39, 0.14);

  /* ---- Bootstrap 接線 ----
   * 讓 BS 元件跟隨主題 token。BS 5.2.3 的 --bs-<theme-color>（非 -rgb）
   * 無任何執行期消費者（已驗證 bootstrap.css 內 var(--bs-primary) 出現 0 次），
   * 本階段接線對現況視覺零影響，屬前瞻接點。
   *
   * 刻意不接的變數（接了會改變現況視覺，違反 #698 驗收「五主題視覺完全不變」）：
   *   --bs-primary-rgb 等 -rgb 系列：.text-primary 等 utility 以
   *     rgba(var(--bs-primary-rgb), α) !important 即時消費，且前台 blade
   *     實際使用中（orders/cancel·return 的金額、商品頁登入提示連結）；
   *   --bs-body-* / --bs-link-*：body、表單等元件即時消費。
   *   待母票 #695 後續主題化階段有意識地啟用。 */
  --bs-primary: var(--cms-color-primary);
  --bs-secondary: var(--cms-color-secondary);
  --bs-success: var(--cms-color-success);
  --bs-info: var(--cms-color-info);
  --bs-warning: var(--cms-color-warning);
  --bs-danger: var(--cms-color-danger);
}

}
/* source: web/css/common/font-selection.css */
@layer cms.brand {
/* 全站字型選擇：只覆寫文字角色；icon 與主題等寬診斷字維持原字型。 */
body[data-web-font="ShinvoStandard"] {
    --cms-font-family-base: 'Noto Sans TC', system-ui, sans-serif;
    --cms-font-family-ui: system-ui, -apple-system, 'Noto Sans TC', sans-serif;
    --cms-font-family-latin: system-ui, sans-serif;
    --cms-font-family-latin-display: system-ui, sans-serif;
    --cms-font-family-serif-tc: 'Noto Serif TC', serif;
    --cms-font-family-serif-jp: 'Noto Serif JP', serif;
    --cms-font-family-display: 'Noto Serif TC', serif;
    --cms-font-family-decorative: 'Noto Serif TC', serif;
    --cms-dg-font-sans: 'Noto Sans TC', system-ui, sans-serif;
    --cms-dg-font-display: 'Noto Serif TC', serif;
}
body[data-web-font="GenWanMinJP"] { --cms-selected-font-family: "GenWanMinJP", serif; }
body[data-web-font="CEFFontsCJK"] { --cms-selected-font-family: "CEFFontsCJK", cursive; }
body[data-web-font="ChironHeiHKTextIt"] { --cms-selected-font-family: "ChironHeiHKTextIt", sans-serif; }
body[data-web-font="NotoSansTC"] { --cms-selected-font-family: "NotoSansTC", sans-serif; }
body[data-web-font="FusionPixelFont12px"] { --cms-selected-font-family: "FusionPixelFont12px", fantasy; }
body[data-web-font="975HazyGo"] { --cms-selected-font-family: "975HazyGo", sans-serif; }
body[data-web-font="GenWanMinTW"] { --cms-selected-font-family: "GenWanMinTW", serif; }
body[data-web-font="LXGWWenKaiTC"] { --cms-selected-font-family: "LXGWWenKaiTC", cursive; }
body[data-web-font="ChenYuLuoYan"] { --cms-selected-font-family: "ChenYuLuoYan", cursive; }
body[data-web-font="GlowSansSCCom"] { --cms-selected-font-family: "GlowSansSCCom", sans-serif; }
body[data-web-font="LXGWHeartSerif"] { --cms-selected-font-family: "LXGWHeartSerif", serif; }
body[data-web-font="LXGWMarkerGothic"] { --cms-selected-font-family: "LXGWMarkerGothic", sans-serif; }
body[data-web-font="GlowSansTC"] { --cms-selected-font-family: "GlowSansTC", sans-serif; }
body[data-web-font="ChironSungHKTextIt"] { --cms-selected-font-family: "ChironSungHKTextIt", serif; }
body[data-web-font="BpmfIansui"] { --cms-selected-font-family: "BpmfIansui", cursive; }
body[data-web-font="LXGWWenKaiTCMono"] { --cms-selected-font-family: "LXGWWenKaiTCMono", monospace; }
body[data-web-font="Tiejili"] { --cms-selected-font-family: "Tiejili", fantasy; }
body[data-web-font="MantouSans"] { --cms-selected-font-family: "MantouSans", sans-serif; }
body[data-web-font="GlowSansSCWide"] { --cms-selected-font-family: "GlowSansSCWide", sans-serif; }
body[data-web-font="LXGWWenKaiGB"] { --cms-selected-font-family: "LXGWWenKaiGB", cursive; }
body[data-web-font="GenRyuMinTC"] { --cms-selected-font-family: "GenRyuMinTC", serif; }
body[data-web-font="ChillBitmap16px"] { --cms-selected-font-family: "ChillBitmap16px", fantasy; }
body[data-web-font="NotoSerifTC"] { --cms-selected-font-family: "NotoSerifTC", serif; }
body[data-web-font="GlowSansTCWide"] { --cms-selected-font-family: "GlowSansTCWide", sans-serif; }
body[data-web-font="MuzaiPixel"] { --cms-selected-font-family: "MuzaiPixel", fantasy; }
body[data-web-font="XiaoLai"] { --cms-selected-font-family: "XiaoLai", cursive; }
body[data-web-font="UnboundedSans"] { --cms-selected-font-family: "UnboundedSans", sans-serif; }
body[data-web-font="LXGWWenKaiGBMono"] { --cms-selected-font-family: "LXGWWenKaiGBMono", monospace; }
body[data-web-font="GlowSansTCCon"] { --cms-selected-font-family: "GlowSansTCCon", sans-serif; }
body[data-web-font="GenJyuuGothicPX"] { --cms-selected-font-family: "GenJyuuGothicPX", sans-serif; }
body[data-web-font="Iansui"] { --cms-selected-font-family: "Iansui", cursive; }
body[data-web-font="TaipeiSansTC"] { --cms-selected-font-family: "TaipeiSansTC", sans-serif; }
body[data-web-font="PopGothicTC"] { --cms-selected-font-family: "PopGothicTC", sans-serif; }
body[data-web-font="BpmfHuninn"] { --cms-selected-font-family: "BpmfHuninn", sans-serif; }
body[data-web-font="BpmfZihiKaiStd"] { --cms-selected-font-family: "BpmfZihiKaiStd", cursive; }
body[data-web-font="CactusClassicalSerif"] { --cms-selected-font-family: "CactusClassicalSerif", serif; }
body[data-web-font="ChironGoRoundTC"] { --cms-selected-font-family: "ChironGoRoundTC", sans-serif; }
body[data-web-font="ChocolateClassicalSans"] { --cms-selected-font-family: "ChocolateClassicalSans", sans-serif; }
body[data-web-font="Huninn"] { --cms-selected-font-family: "Huninn", sans-serif; }
body[data-web-font="UoqMunThenKhung"] { --cms-selected-font-family: "UoqMunThenKhung", serif; }
body[data-web-font="WDXLLubrifontTC"] { --cms-selected-font-family: "WDXLLubrifontTC", sans-serif; }
body[data-web-font]:not([data-web-font=""]):not([data-web-font="ShinvoStandard"]) {
    --cms-font-family-base: var(--cms-selected-font-family);
    --cms-font-family-ui: var(--cms-selected-font-family);
    --cms-font-family-latin: var(--cms-selected-font-family);
    --cms-font-family-latin-display: var(--cms-selected-font-family);
    --cms-font-family-serif-tc: var(--cms-selected-font-family);
    --cms-font-family-serif-jp: var(--cms-selected-font-family);
    --cms-font-family-display: var(--cms-selected-font-family);
    --cms-font-family-decorative: var(--cms-selected-font-family);
    --cms-dg-font-sans: var(--cms-selected-font-family);
    --cms-dg-font-display: var(--cms-selected-font-family);
}

}
/* source: web/css/common/base.css */
@layer cms.platform {
/* ============================================================================
 * common/base.css — 跨主題共用基底層
 * ============================================================================
 *
 * 用途：
 *   提供 6 個前台主題共用的 reset、typography、utility class、表單基底、
 *   按鈕基底與通用元件樣式；各主題以 themes/{theme}/base.css 覆寫差異。
 *
 * 內容索引：
 *   1. Typography                body / h1~h6 / p / ul / li / hr / label
 *   2. Reset / browser normalize ::selection / button:focus / outline
 *   3. Image / Link transitions  .img / a / .btn focus / hover
 *   4. 文字 / 字體 utility       .uppercase / .capitalize / .g-font-1~2 / .font-w-5~7
 *   5. 浮動與裁切 utility        .f-left / .f-right / .fix
 *   6. 間距 utility              .m-0 / .p-0 / .mt-* / .mr-* / .mb-* / .ml-* /
 *                                 .pt-* / .pr-* / .pb-* / .pl-* / .ptb-* / .mtb-* /
 *                                 .plr-* / .ptblr-* / .p-20 / .p-30 / .mt--50
 *   7. 文字顏色 utility          .text-blue / .text-white / .text-black-1~5 /
 *                                 .text-gray / .text-theme
 *   8. 背景顏色 utility          .theme-bg / .black-bg / .white-bg / .gray-bg /
 *                                 .blue-bg / .default-bg / .transparent-bg
 *   9. 表單基底                  input[type=text/email/password] / select / option /
 *                                 textarea / button / .togglePassword / .submit-btn /
 *                                 .form-group .form-control
 *  10. 按鈕基底                  .btn / a.button.* / a.button-border / a.button-small /
 *                                 .btn-hover-1~2
 *  11. 通用元件                  .breadcrumb / .progress / .section / .container /
 *                                 .panel / .mark / span.tooltip-content / .browserupgrade /
 *                                 .box-shadow / .action-box-button / .share / .separator /
 *                                 #scrollUp
 *  12. 背景透明度 utility        .bg-opacity-black-10~90 / .bg-opacity-white-10~90
 *
 * 使用頁面：前台所有頁面（base 層全站共用）
 * 相依 vendor：無
 *
 * 載入順序（最先到最後，後者覆寫前者）：
 *   widgets.css -> default.css（舊單檔，凍結中）-> common/base.css（本檔）->
 *   themes/shinvo-standard/base.css -> 其他 common/themes 檔 -> custom.css
 *
 * 抽取來源：public/web/css/default.css line 29-1763 + line 1793-2042（line 1765-1791
 *   為 .footer-area 範圍規則，留給 task 5.4 footer 處理）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.1）
 * ============================================================================
 */

/* issue #726:首頁多個 widget(productA/imgTextC 等)沿用 BS .row 式負 margin
   (margin-x: -0.5*gutter),而其容器 padding 未完全吸收該負 margin,在部分斷點
   造成 8~15px 水平溢出、使用者可橫滑看到空白。gutter 值會隨 .container 系與斷點
   變動,逐 widget×斷點對齊易漏,故於 html 設 overflow-x:clip 作為全站水平護欄:
   徹底禁止橫向捲動(實測 4 寬度 window.scrollX 恆 0)。clip 不建立捲動容器
   (不破壞 position:sticky,有別於 overflow:hidden);寬內容(表格/程式碼)本就
   各自以 overflow-x:auto 容器捲動,不依賴 body 橫捲。個別 widget 負 margin 的
   徹底對齊屬 #706 範圍,clip 已消除其實際危害。 */
html {
  font-size: var(--cms-root-font-size);
  overflow-x: clip;
}

body {
  background: var(--cms-color-surface);
  font-family: var(--cms-font-family-base);
  font-weight: normal;
  font-style: normal;
  font-size: var(--cms-text-base);
  line-height: var(--cms-line-height-base);
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
  scroll-behavior: smooth;

}

.img {
  max-width: 100%;
  transition: all 0.3s ease-out 0s;
}

/* issue #762：共用圖片元件（components/web/responsive-image.blade.php）於 Image model
   width／height 欄位皆為空（極早期上傳、遷移前的舊資料）時的版面預留空間備援；
   一般情況下元件直接輸出 width/height 屬性，瀏覽器即可預留版面，不需要這個 class。 */
.responsive-image-aspect-fallback {
  aspect-ratio: 16 / 9;
  width: 100%;
  height: auto;
  object-fit: cover;
}

a,
.btn {
  -webkit-transition: all 0.3s ease-out 0s;
  -moz-transition: all 0.3s ease-out 0s;
  -ms-transition: all 0.3s ease-out 0s;
  -o-transition: all 0.3s ease-out 0s;
  transition: all 0.3s ease-out 0s;
}

.btn {
  border-radius: 0px;
  font-size: 14px;
  padding: 0px 15px;
  height: 30px;
  line-height: 30px;
}

a:focus,
.btn:focus {
  text-decoration: none;
}

/* 焦點可見性（#1389 a11y）：只在滑鼠點擊取得焦點時移除外框；
   鍵盤操作（:focus-visible）保留瀏覽器或元件自訂的焦點框 */
a:focus:not(:focus-visible),
.btn:focus:not(:focus-visible) {
  outline: none;
}

a:focus,
a:hover {
  color: var(--cms-color-dark);
  text-decoration: none;
}

a,
button,
input {
  color: var(--cms-color-text-secondary);
}

/* #1389 a11y：連結與按鈕的外框改由上方 :focus:not(:focus-visible) 規則只在滑鼠點擊時移除；
   輸入框維持既有無外框外觀，焦點由各表單的邊框色呈現 */
input {
  outline: medium none;
}

.uppercase {
  text-transform: uppercase
}

.capitalize {
  text-transform: capitalize
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin-bottom: 10px;
}

h1 a,
h2 a,
h3 a,
h4 a,
h5 a,
h6 a {
  color: inherit
}

h1 {
  font-size: 48px;
  line-height: 1;
  font-weight: 600;
}

@media screen and (max-width: 991.98px) {
  h1 {
    font-size: 30px;
  }
}

@media screen and (max-width: 767.98px) {
  h1 {
    font-size: 30px;
  }
}

h2 {
  font-size: 36px;
  font-weight: 600;
  line-height: 1;
}

@media screen and (max-width: 991.98px) {
  h2 {
    font-size: 26px;
  }
}

@media screen and (max-width: 767.98px) {
  h2 {
    font-size: 26px;
  }
}

h3 {
  font-size: 28px;
  font-weight: 600;
  line-height: 1;
}

@media screen and (max-width: 991.98px) {
  h3 {
    font-size: 22px;
  }
}

@media screen and (max-width: 767.98px) {
  h3 {
    font-size: 22px;
  }
}

h4 {
  font-size: 22px;
  font-weight: 600;
  line-height: 1;
}

@media screen and (max-width: 991.98px) {
  h4 {
    font-size: 18px;
  }
}

@media screen and (max-width: 767.98px) {
  h4 {
    font-size: 18px;
  }
}

h5 {
  font-size: 18px;
}

@media screen and (max-width: 991.98px) {
  h5 {
    font-size: 16px;
  }
}

@media screen and (max-width: 767.98px) {
  h5 {
    font-size: 14px;
  }
}

h6 {
  font-size: 14px;
}

@media screen and (max-width: 991.98px) {
  h6 {
    font-size: 12px;
  }
}

@media screen and (max-width: 767.98px) {
  h6 {
    font-size: 12px;
  }
}

p {
  font-size: 18px;
  /* font-weight: normal; */
  line-height: 1.5;
  color: var(--cms-color-text);
}

@media screen and (max-width: 991.98px) {
  p {
    font-size: 14px;
  }
}

@media screen and (max-width: 767.98px) {
  p {
    font-size: 14px;
  }
}

ul {
  margin: 0px;
  padding: 0px;
}

li {
  list-style: none;
}

hr {
  border-bottom: 1px solid #999999;
}

hr.style-2 {
  border-bottom: 1px dashed var(--cms-color-divider);
}

hr.mp-0 {
  margin: 0;
  border-bottom: 1px solid var(--cms-color-divider);
}

hr.mtb-40 {
  margin: 40px 0;
  border-bottom: 1px solid var(--cms-color-divider);
  border-top: 0px;
}

label {
  color: var(--cms-color-text-muted);
  font-size: 14px;
  font-weight: 400;
}

*::-moz-selection {
  background: var(--cms-brand-primary-action, var(--cms-color-primary));
  color: var(--cms-brand-on-primary-action, var(--cms-color-text-inverse));
  text-shadow: none;
}

::-moz-selection {
  background: var(--cms-brand-primary-action, var(--cms-color-primary));
  color: var(--cms-brand-on-primary-action, var(--cms-color-text-inverse));
  text-shadow: none;
}

::selection {
  background: var(--cms-brand-primary-action, var(--cms-color-primary));
  color: var(--cms-brand-on-primary-action, var(--cms-color-text-inverse));
  text-shadow: none;
}

button:focus:not(:focus-visible) {
  outline: none;
}

.mark,
mark {
  background: var(--cms-color-dark) none repeat scroll 0 0;
  color: var(--cms-color-text-inverse);
}

span.tooltip-content {
  color: var(--cms-color-dark);
  cursor: help;
  font-weight: 600;
}

.f-left {
  float: left
}

.f-right {
  float: right
}

.fix {
  overflow: hidden
}

.browserupgrade {
  margin: 0.2em 0;
  background: #ccc;
  color: #000;
  padding: 0.2em 0;
}

.g-font-1 {
  font-family: var(--cms-font-family-latin-display);
}

.g-font-2 {
  font-family: var(--cms-font-family-latin);
}

.font-w-5 {
  font-weight: 500;
}

.font-w-6 {
  font-weight: 600;
}

.font-w-7 {
  font-weight: 700;
}

.panel-group .panel {
  border-radius: 0;
  margin-bottom: 0;
}

.my-account-content .panel-body {
  padding: 0;
}

.panel {
  border-radius: 0;
}

.section {
  float: left;
  width: 100%;
}

/* issue #721：<main class="site-main"> 全站主內容語意地標（app.blade.php）。
   flow-root 建立 BFC 收容子層 .section 的 legacy float:left，否則 main 高度塌陷為 0、
   無法作為各主題「不改 blade 重排版面」的 CSS 錨點；對既有版面為等價渲染
   （滿寬 float 後方內容本就換行，收容前後排版座標不變，已逐像素驗證） */
.site-main {
  display: flow-root;
}

@media only screen and (min-width: 992px) {
  .container {
    --bs-gutter-x: 15px;
  }
}

@media only screen and (min-width: 992px) {
  /* issue #706：widgets 骨架語意化後，.container 內的格線改掛語意 class，
     本 legacy gutter 規則同步擴充選擇器（值與行為不變）；#709 增列 footer-kg-grid、
     #710 增列 member-layout、#712 增列 order-* 格線類 */
  .container .row,
  .container .widget-media-grid,
  .container .productA-grid,
  .container .productC-Row,
  .container .footer-kg-grid,
  .container .member-layout,
  .container .order-detail-grid,
  .container .order-info-grid,
  .container .order-info-row,
  .container .order-form-grid,
  .container .innerpage-single,
  .container .blog-list,
  .container .blog-item-2__row,
  .container .blog-pagination-row,
  .container .blog-detail-row,
  .container .blog-related-hidden__grid {
    --bs-gutter-x: 30px;
  }
}

.breadcrumb>li+li:before {
  padding: 0 5px;
  color: #ccc;
  content: "/\00a0";
}

.progress {
  height: 20px;
  line-height: 20px;
  font-size: 14px;
}

input[type="checkbox"] {
  vertical-align: middle;
  margin-right: 5px;
}

a.button::after,
a.button-small::after {
  -webkit-transition: all 0.3s ease-out 0s;
  -moz-transition: all 0.3s ease-out 0s;
  -ms-transition: all 0.3s ease-out 0s;
  -o-transition: all 0.3s ease-out 0s;
  transition: all 0.3s ease-out 0s;
}

.share ul,
.share:hover ul {
  transition: all 0.4s ease-in-out;
  -webkit-transition: all 0.4s ease-in-out;
  -ms-transition: all 0.4s ease-in-out;
  -moz-transition: all 0.4s ease-in-out;
  -o-transition: all 0.4s ease-in-out;
}

a.button-border span,
a.button-border-white span,
input,
select,
textarea {
  -webkit-transition: all 0.5s ease-out 0s;
  -moz-transition: all 0.5s ease-out 0s;
  -ms-transition: all 0.5s ease-out 0s;
  -o-transition: all 0.5s ease-out 0s;
  transition: all 0.5s ease-out 0s;
}

a.button {
  background: #ec3b05;
  border: 0 none;
  border-radius: 3px;
  box-shadow: var(--cms-shadow-btn-inset);
  color: var(--cms-color-text-inverse);
  cursor: pointer;
  display: inline-block;
  font-size: 20px;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
}

a.button span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: var(--cms-color-text-inverse);
  font-weight: normal;
}

a.button::after {
  background: rgba(0, 0, 0, 0.09) none repeat scroll 0 0;
  content: "";
  height: 100%;
  left: 0;
  margin: auto;
  position: absolute;
  right: 0;
  top: 0;
  width: 0;
  z-index: 1;
}

a.button:hover::after {
  width: 100%
}

a.button.button-white {
  border: 0 none;
  border-radius: 3px;
  box-shadow: var(--cms-shadow-btn-inset);
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: var(--cms-color-surface);
  color: var(--cms-color-primary);
  font-size: 15px;
}

a.button.button-white i {
  background: rgba(0, 0, 0, 0.09);
  display: block;
  float: left;
  padding: 14px;
  font-size: 16px;
  color: var(--cms-color-primary);
  font-weight: normal;
  width: 50px;
  text-align: center;
}

a.button.button-white span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: #434343;
  font-weight: normal;
}

a.button.button-grey {
  border: 0 none;
  border-radius: 3px;
  box-shadow: var(--cms-shadow-btn-inset);
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: #eceff7;
  color: var(--cms-color-primary);
  font-size: 15px;
}

a.button.button-grey i {
  background: rgba(0, 0, 0, 0.09);
  display: block;
  float: left;
  padding: 14px;
  font-size: 16px;
  color: var(--cms-color-primary);
  font-weight: normal;
  width: 50px;
  text-align: center;
}

a.button.button-grey span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: var(--cms-color-primary);
  font-weight: normal;
}

a.button.button-black {
  border: 0 none;
  border-radius: 3px;
  box-shadow: var(--cms-shadow-btn-inset);
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: #575757;
  color: var(--cms-color-primary);
  font-size: 15px;
}

a.button.button-black i {
  background: rgba(0, 0, 0, 0.3);
  display: block;
  float: left;
  padding: 14px;
  font-size: 16px;
  color: var(--cms-color-text-inverse);
  font-weight: normal;
  width: 50px;
  text-align: center;
}

a.button.button-black span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 11px 20px;
  font-size: 15px;
  color: var(--cms-color-text-inverse);
  font-weight: normal;
}

a.button-border span {
  border: 0 none;
  border-radius: 3px;
  cursor: pointer;
  display: inline-block;
  padding: 11px 20px;
  margin-right: 10px;
  overflow: hidden;
  position: relative;
  background-color: transparent;
  color: var(--cms-color-primary);
  font-size: 15px;
  border: 1px solid var(--cms-color-primary);
}

a.button-border span:hover {
  box-shadow: -200px 0 0 var(--cms-color-primary) inset;
  color: var(--cms-color-text-inverse);
  border-color: var(--cms-color-primary);
}

a.button-border-white span {
  border: 0 none;
  border-radius: 3px;
  cursor: pointer;
  display: inline-block;
  padding: 11px 20px;
  margin-right: 10px;
  overflow: hidden;
  position: relative;
  background-color: transparent;
  color: var(--cms-color-text-inverse);
  font-size: 15px;
  border: 1px solid #fff;
}

a.button-border-white span:hover {
  box-shadow: -200px 0 0 #fff inset;
  color: var(--cms-color-primary);
  border-color: #fff;
}

a.button-small {
  border: 0 none;
  border-radius: 3px;
  box-shadow: var(--cms-shadow-btn-inset);
  cursor: pointer;
  display: inline-block;
  margin-right: 10px;
  overflow: hidden;
  padding: 0;
  position: relative;
  background-color: var(--cms-color-primary);
  color: var(--cms-color-text-inverse);
  font-size: 15px;
}

a.button-small i {
  background: rgba(0, 0, 0, 0.09);
  display: block;
  float: left;
  padding: 10px;
  font-size: 13px;
  color: var(--cms-color-text-inverse);
  font-weight: normal;
  width: 40px;
  text-align: center;
}

a.button-small span {
  display: block;
  float: left;
  position: relative;
  z-index: 2;
  padding: 8px 10px;
  font-size: 13px;
  color: var(--cms-color-text-inverse);
  font-weight: normal;
}

a.button-small:after {
  background: rgba(0, 0, 0, 0.09) none repeat scroll 0 0;
  content: "";
  height: 100%;
  right: 0;
  position: absolute;
  top: 0;
  width: 0;
  z-index: 1;
}

a.button-small:hover::after {
  width: 100%
}

a.button.large {
  margin-right: 0px;
}

a.button.large span {
  padding: 16px 80px;
  font-size: 18px;
}

a.button.large i {
  padding: 20px;
  width: 60px;
  font-size: 18px;
}

a.button.medium span {
  padding: 14px 60px;
  font-size: 16px;
}

a.button.medium i {
  padding: 17px;
  width: 50px;
  font-size: 16px;
}

a.button.small span {
  padding: 12px 40px;
}

a.button.small i {
  padding: 15px;
  width: 45px;
}

a.button.extra-small span {
  padding: 8px 30px;
  font-size: 14px;
}

a.button.extra-small i {
  padding: 11px;
  width: 38px;
  font-size: 13px;
}

.text-blue {
  color: var(--cms-color-primary);
}

.text-white {
  color: var(--cms-color-text-inverse);
}

.text-black-1 {
  color: #575757;
}

.text-black-2 {
  color: #737373;
}

.text-black-3 {
  color: #434343;
}

.text-black-4 {
  color: var(--cms-color-text-muted);
}

.text-black-5 {
  color: var(--cms-color-text-secondary);
}

.text-gray {
  color: var(--cms-color-text-secondary);
}

.text-theme {
  color: var(--cms-color-dark);
}

/* issue #1389（收集簿 #1399 D 項）：元素＋屬性選擇器原為 (0,1,1)，任何單一 class 都蓋不過，
 * 各頁元件（如結帳頁 .dev-checkout-input）宣告的高度／邊框／字級對文字輸入框從未生效。
 * 以 :where() 降為零權重，只當全站基底；焦點規則刻意不降，避免被元件的 border 蓋掉焦點提示。 */
:where(input[type="text"], input[type="password"], input[type="email"]) {
  background: var(--cms-color-surface) none repeat scroll 0 0;
  border: 1px solid transparent;
  box-shadow: var(--cms-shadow-soft);
  color: var(--cms-color-text-muted);
  font-size: 16px;
  height: 40px;
  margin-bottom: 20px;
  padding-left: 20px;
  padding-right: 20px;
  width: 100%;
}

.form-group .form-control {
  font-size: 16px;
}

button {
  background: rgba(0, 0, 0, 0) none repeat scroll 0 0;
  border: medium none;
  font-family: var(--cms-font-family-latin-display);
}

select,
select.form-control {
  border: 1px solid var(--cms-color-border);
  color: var(--cms-color-text-muted);
  font-size: 16px;
  height: 40px;
  padding-left: 10px;
}

option {
  background: var(--cms-color-surface) none repeat scroll 0 0;
  border: 0 solid #626262;
  font-size: 16px;
  padding-left: 10px;
}

/* 原生下拉選單（含 .product-toolbar-select）展開時的選項反白色：未設定時會吃瀏覽器/OS
   預設強調色（在部分環境會顯示橘色等非預期色）。公版固定為中性深灰，避免出現品牌橘；
   主題若要品牌色可於各自 base 覆寫 select { accent-color }。 */
select {
  accent-color: #374151;
}

.togglePassword {
  font-size: 16px;
  padding: 2px 12px;
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus {
  /* common 為中性公版基準，focus 採近黑（對齊同檔 textarea:focus）；
     舊橘色 #FFBF7F 已移除，主題如需品牌色 focus 於各自 base 覆寫即可 */
  border: 1px solid var(--cms-color-dark);
}

textarea {
  background: var(--cms-color-surface) none repeat scroll 0 0;
  border: 1px solid transparent;
  box-shadow: var(--cms-shadow-soft);
  font-size: 16px;
  padding: 10px 10px 10px 20px;
  resize: vertical;
  width: 100%;
}

textarea:focus {
  border-color: var(--cms-color-dark);
  outline: none;
}

.height-80 {
  height: 80px;
}

::-moz-placeholder {
  color: #444;
  font-size: 14px;
}

.submit-btn {
  background: rgb(255, 127, 0) none repeat scroll 0 0;
  border: medium none;
  color: var(--cms-color-text-inverse);
  font-size: 14px;
  font-weight: 700;
  height: 35px;
  padding: 0 20px;
  text-transform: uppercase;
  transition: all 0.3s ease 0s;
}

.btn-hover-1,
.btn-hover-2 {
  position: relative;
}

.btn-hover-1::before,
.btn-hover-2::before {
  background: #434343 none repeat scroll 0 0;
  bottom: 0;
  content: "";
  height: 2px;
  left: 0;
  position: absolute;
  transition: all 0.5s ease 0s;
  width: 0;
  z-index: 9999;
}

.btn-hover-1:hover::before,
.btn-hover-2:hover::before {
  width: 100%;
}

.btn-hover-2::before {
  background: var(--cms-color-dark) none repeat scroll 0 0;
}

.m-0 {
  margin: 0;
}

.p-0 {
  padding: 0;
}

.mt-0 {
  margin-top: 0
}

.mt-1 {
  margin-top: var(--cms-space-1)
}

.mt-2 {
  margin-top: var(--cms-space-2)
}

.mt-3 {
  margin-top: var(--cms-space-3)
}

.mt-4 {
  margin-top: var(--cms-space-4)
}

.mt-5 {
  margin-top: var(--cms-space-5)
}

.mt-10 {
  margin-top: var(--cms-space-10)
}

.mt-15 {
  margin-top: var(--cms-space-15)
}

.mt-20 {
  margin-top: var(--cms-space-20)
}

.mt-30 {
  margin-top: var(--cms-space-30)
}

.mt-35 {
  margin-top: var(--cms-space-35)
}

.mt-40 {
  margin-top: var(--cms-space-40)
}

.mt-50 {
  margin-top: var(--cms-space-50)
}

.mt-60 {
  margin-top: var(--cms-space-60)
}

.mt-70 {
  margin-top: var(--cms-space-70)
}

.mt-80 {
  margin-top: var(--cms-space-80)
}

.mt-90 {
  margin-top: var(--cms-space-90)
}

.mt-100 {
  margin-top: var(--cms-space-100)
}

.mt-110 {
  margin-top: var(--cms-space-110)
}

.mt-120 {
  margin-top: var(--cms-space-120)
}

.mt-130 {
  margin-top: var(--cms-space-130)
}

.mt-140 {
  margin-top: var(--cms-space-140)
}

.mt-150 {
  margin-top: var(--cms-space-150)
}

.mr-0 {
  margin-right: 0
}

.mr-1 {
  margin-right: var(--cms-space-1)
}

.mr-2 {
  margin-right: var(--cms-space-2)
}

.mr-3 {
  margin-right: var(--cms-space-3)
}

.mr-4 {
  margin-right: var(--cms-space-4)
}

.mr-5 {
  margin-right: var(--cms-space-5)
}

.mr-10 {
  margin-right: var(--cms-space-10)
}

.mr-15 {
  margin-right: var(--cms-space-15)
}

.mr-20 {
  margin-right: var(--cms-space-20)
}

.mr-30 {
  margin-right: var(--cms-space-30)
}

.mr-40 {
  margin-right: var(--cms-space-40)
}

.mr-50 {
  margin-right: var(--cms-space-50)
}

.mr-60 {
  margin-right: var(--cms-space-60)
}

.mr-70 {
  margin-right: var(--cms-space-70)
}

.mr-80 {
  margin-right: var(--cms-space-80)
}

.mr-90 {
  margin-right: var(--cms-space-90)
}

.mr-100 {
  margin-right: var(--cms-space-100)
}

.mr-110 {
  margin-right: var(--cms-space-110)
}

.mr-120 {
  margin-right: var(--cms-space-120)
}

.mr-130 {
  margin-right: var(--cms-space-130)
}

.mr-140 {
  margin-right: var(--cms-space-140)
}

.mr-150 {
  margin-right: var(--cms-space-150)
}

.mb-0 {
  margin-bottom: 0
}

.mb-1 {
  margin-bottom: var(--cms-space-1)
}

.mb-2 {
  margin-bottom: var(--cms-space-2)
}

.mb-3 {
  margin-bottom: var(--cms-space-3)
}

.mb-4 {
  margin-bottom: var(--cms-space-4)
}

.mb-5 {
  margin-bottom: var(--cms-space-5)
}

.mb-10 {
  margin-bottom: var(--cms-space-10)
}

.mb-15 {
  margin-bottom: var(--cms-space-15)
}

.mb-20 {
  margin-bottom: var(--cms-space-20)
}

.mb-25 {
  margin-bottom: var(--cms-space-25)
}

.mb-30 {
  margin-bottom: var(--cms-space-30)
}

.mb-35 {
  margin-bottom: var(--cms-space-35)
}

.mb-40 {
  margin-bottom: var(--cms-space-40)
}

.mb-50 {
  margin-bottom: var(--cms-space-50)
}

.mb-60 {
  margin-bottom: var(--cms-space-60)
}

.mb-70 {
  margin-bottom: var(--cms-space-70)
}

.mb-80 {
  margin-bottom: var(--cms-space-80)
}

.mb-90 {
  margin-bottom: var(--cms-space-90)
}

.mb-100 {
  margin-bottom: var(--cms-space-100)
}

.mb-110 {
  margin-bottom: var(--cms-space-110)
}

.mb-120 {
  margin-bottom: var(--cms-space-120)
}

.mb-130 {
  margin-bottom: var(--cms-space-130)
}

.mb-140 {
  margin-bottom: var(--cms-space-140)
}

.mb-150 {
  margin-bottom: var(--cms-space-150)
}

.ml-0 {
  margin-left: 0
}

.ml-1 {
  margin-left: var(--cms-space-1)
}

.ml-2 {
  margin-left: var(--cms-space-2)
}

.ml-3 {
  margin-left: var(--cms-space-3)
}

.ml-4 {
  margin-left: var(--cms-space-4)
}

.ml-5 {
  margin-left: var(--cms-space-5)
}

.ml-10 {
  margin-left: var(--cms-space-10)
}

.ml-15 {
  margin-left: var(--cms-space-15)
}

.ml-20 {
  margin-left: var(--cms-space-20)
}

.ml-30 {
  margin-left: var(--cms-space-30)
}

.ml-40 {
  margin-left: var(--cms-space-40)
}

.ml-50 {
  margin-left: var(--cms-space-50)
}

.ml-60 {
  margin-left: var(--cms-space-60)
}

.ml-70 {
  margin-left: var(--cms-space-70)
}

.ml-80 {
  margin-left: var(--cms-space-80)
}

.ml-90 {
  margin-left: var(--cms-space-90)
}

.ml-100 {
  margin-left: var(--cms-space-100)
}

.ml-110 {
  margin-left: var(--cms-space-110)
}

.ml-120 {
  margin-left: var(--cms-space-120)
}

.ml-130 {
  margin-left: var(--cms-space-130)
}

.ml-140 {
  margin-left: var(--cms-space-140)
}

.ml-150 {
  margin-left: var(--cms-space-150)
}

.pt-0 {
  padding-top: 0
}

.pt-10 {
  padding-top: var(--cms-space-10)
}

.pt-15 {
  padding-top: var(--cms-space-15)
}

.pt-20 {
  padding-top: var(--cms-space-20)
}

.pt-30 {
  padding-top: var(--cms-space-30)
}

.pt-40 {
  padding-top: var(--cms-space-40)
}

.pt-50 {
  padding-top: var(--cms-space-50)
}

.pt-55 {
  padding-top: var(--cms-space-55)
}

.pt-60 {
  padding-top: var(--cms-space-60)
}

.pt-70 {
  padding-top: var(--cms-space-70)
}

.pt-80 {
  padding-top: var(--cms-space-80)
}

.pt-90 {
  padding-top: var(--cms-space-90)
}

.pt-100 {
  padding-top: var(--cms-space-100)
}

.pt-110 {
  padding-top: var(--cms-space-110)
}

.pt-120 {
  padding-top: var(--cms-space-120)
}

.pt-130 {
  padding-top: var(--cms-space-130)
}

.pt-140 {
  padding-top: var(--cms-space-140)
}

.pt-150 {
  padding-top: var(--cms-space-150)
}

.pt-160 {
  padding-top: var(--cms-space-160)
}

.pr-0 {
  padding-right: 0
}

.pr-10 {
  padding-right: var(--cms-space-10)
}

.pr-15 {
  padding-right: var(--cms-space-15)
}

.pr-20 {
  padding-right: var(--cms-space-20)
}

.pr-30 {
  padding-right: var(--cms-space-30)
}

.pr-40 {
  padding-right: var(--cms-space-40)
}

.pr-50 {
  padding-right: var(--cms-space-50)
}

.pr-60 {
  padding-right: var(--cms-space-60)
}

.pr-70 {
  padding-right: var(--cms-space-70)
}

.pr-80 {
  padding-right: var(--cms-space-80)
}

.pr-90 {
  padding-right: var(--cms-space-90)
}

.pr-100 {
  padding-right: var(--cms-space-100)
}

.pr-110 {
  padding-right: var(--cms-space-110)
}

.pr-120 {
  padding-right: var(--cms-space-120)
}

.pr-130 {
  padding-right: var(--cms-space-130)
}

.pr-140 {
  padding-right: var(--cms-space-140)
}

.pb-0 {
  padding-bottom: 0
}

.pb-10 {
  padding-bottom: var(--cms-space-10)
}

.pb-15 {
  padding-bottom: var(--cms-space-15)
}

.pb-20 {
  padding-bottom: var(--cms-space-20)
}

.pb-25 {
  padding-bottom: var(--cms-space-25)
}

.pb-30 {
  padding-bottom: var(--cms-space-30)
}

.pb-40 {
  padding-bottom: var(--cms-space-40)
}

.pb-50 {
  padding-bottom: var(--cms-space-50)
}

.pb-55 {
  padding-bottom: var(--cms-space-55)
}

.pb-60 {
  padding-bottom: var(--cms-space-60)
}

.pb-70 {
  padding-bottom: var(--cms-space-70)
}

.pb-80 {
  padding-bottom: var(--cms-space-80)
}

.pb-90 {
  padding-bottom: var(--cms-space-90)
}

.pb-100 {
  padding-bottom: var(--cms-space-100)
}

.pb-110 {
  padding-bottom: var(--cms-space-110)
}

.pb-120 {
  padding-bottom: var(--cms-space-120)
}

.pb-130 {
  padding-bottom: var(--cms-space-130)
}

.pb-140 {
  padding-bottom: var(--cms-space-140)
}

.pb-150 {
  padding-bottom: var(--cms-space-150)
}

.pb-160 {
  padding-bottom: var(--cms-space-160)
}

.pl-0 {
  padding-left: 0
}

.pl-10 {
  padding-left: var(--cms-space-10)
}

.pl-15 {
  padding-left: var(--cms-space-15)
}

.pl-20 {
  padding-left: var(--cms-space-20)
}

.pl-30 {
  padding-left: var(--cms-space-30)
}

.pl-40 {
  padding-left: var(--cms-space-40)
}

.pl-50 {
  padding-left: var(--cms-space-50)
}

.pl-60 {
  padding-left: var(--cms-space-60)
}

.pl-70 {
  padding-left: var(--cms-space-70)
}

.pl-80 {
  padding-left: var(--cms-space-80)
}

.pl-90 {
  padding-left: var(--cms-space-90)
}

.pl-100 {
  padding-left: var(--cms-space-100)
}

.pl-110 {
  padding-left: var(--cms-space-110)
}

.pl-120 {
  padding-left: var(--cms-space-120)
}

.pl-130 {
  padding-left: var(--cms-space-130)
}

.pl-140 {
  padding-left: var(--cms-space-140)
}

.pl-150 {
  padding-left: var(--cms-space-150)
}

.ptb-0 {
  padding: 0
}

.ptb-5 {
  padding: 5px 0
}

.ptb-10 {
  padding: 10px 0
}

.ptb-20 {
  padding: 20px 0
}

.ptb-30 {
  padding: 30px 0
}

.ptb-40 {
  padding: 40px 0
}

.ptb-50 {
  padding: 50px 0
}

.ptb-60 {
  padding: 60px 0
}

.ptb-70 {
  padding: 70px 0
}

.ptb-80 {
  padding: 80px 0
}

.ptb-90 {
  padding: 90px 0
}

.ptb-100 {
  padding: 100px 0
}

.ptb-110 {
  padding: 110px 0
}

.ptb-120 {
  padding: 120px 0
}

.ptb-130 {
  padding: 130px 0
}

.ptb-140 {
  padding: 140px 0
}

.ptb-150 {
  padding: 150px 0
}

.ptb-160 {
  padding: 160px 0
}

.mtb-0 {
  margin: 0
}

.mtb-5 {
  margin: 5px 0
}

.mtb-10 {
  margin: 10px 0
}

.mtb-15 {
  margin: 15px 0
}

.mtb-20 {
  margin: 20px 0
}

.mtb-30 {
  margin: 30px 0
}

.mtb-35 {
  margin: 35px 0
}

.mtb-40 {
  margin: 40px 0
}

.mtb-50 {
  margin: 50px 0
}

.mtb-60 {
  margin: 60px 0
}

.mtb-70 {
  margin: 70px 0
}

.mtb-80 {
  margin: 80px 0
}

.mtb-90 {
  margin: 90px 0
}

.mtb-100 {
  margin: 100px 0
}

.mtb-110 {
  margin: 110px 0
}

.mtb-120 {
  margin: 120px 0
}

.mtb-130 {
  margin: 130px 0
}

.mtb-140 {
  margin: 140px 0
}

.mtb-150 {
  margin: 150px 0;
}

.mtb-160 {
  margin: 160px 0;
}

/* issue #1389：全站共用左右留白（原 .plr-185 工具類），掛在各語意容器上。
   :where 讓本規則權重為 0，元件與主題以自身選擇器覆寫即生效，不必再疊工具類。
   各斷點值見下方 RWD 區段與 common/footer.css。 */
:where(.web-announcement-bar-inner, .product-shell, .footer-shell, .header-navbar-inner, .chrome-compact__inner, .chrome-stacked__utility, .chrome-stacked__brand-row, .chrome-stacked__nav) {
  padding: 0 var(--cms-space-185);
}

.ptblr-10-30 {
  padding: var(--cms-space-10) var(--cms-space-30);
}

.ptblr-20-30 {
  padding: var(--cms-space-20) var(--cms-space-30);
}

.p-20 {
  padding: var(--cms-space-20);
}

.p-30 {
  padding: var(--cms-space-30);
}

.mt--50 {
  margin-top: -50px;
}

#scrollUp {
  background: #ccc;
  bottom: 10px;
  color: var(--cms-color-text-inverse);
  font-size: 20px;
  height: 40px;
  right: 10px;
  text-align: center;
  transition: all 0.3s ease 0s;
  width: 40px;
}

#scrollUp i {
  line-height: 40px;
}

#scrollUp:hover {
  background: var(--cms-color-dark) none repeat scroll 0 0;
  color: var(--cms-color-text-inverse);
}

.action-box-button a.button span {
  font-size: 13px;
  padding: 11px 12px;
}

.box-shadow {
  box-shadow: var(--cms-shadow-soft);
}

.theme-bg {
  background: var(--cms-color-dark);
}

.black-bg {
  background: #222222;
}

.white-bg {
  background: var(--cms-color-surface);
}

.gray-bg {
  background: var(--cms-color-bg-soft);
}

.blue-bg {
  background: var(--cms-color-primary);
}

.default-bg {
  background: var(--cms-color-bg-soft);
}

.transparent-bg {
  background: transparent;
}

/* 註：原 default.css 第 1765~1791 行為 .footer-area 範圍規則，
 * 已留給 task 5.4 footer 處理，本檔跳過。 */

.bg-opacity-black-10,
.bg-opacity-black-20,
.bg-opacity-black-30,
.bg-opacity-black-40,
.bg-opacity-black-50,
.bg-opacity-black-60,
.bg-opacity-black-70,
.bg-opacity-black-80,
.bg-opacity-black-90,
.bg-opacity-white-10,
.bg-opacity-white-20,
.bg-opacity-white-30,
.bg-opacity-white-40,
.bg-opacity-white-50,
.bg-opacity-white-60,
.bg-opacity-white-70,
.bg-opacity-white-80,
.bg-opacity-white-90 {
  z-index: 9;
}

.bg-opacity-black-10:before,
.bg-opacity-black-20:before,
.bg-opacity-black-30:before,
.bg-opacity-black-40:before,
.bg-opacity-black-50:before,
.bg-opacity-black-60:before,
.bg-opacity-black-70:before,
.bg-opacity-black-80:before,
.bg-opacity-black-90:before,
.bg-opacity-white-10:before,
.bg-opacity-white-20:before,
.bg-opacity-white-30:before,
.bg-opacity-white-40:before,
.bg-opacity-white-50:before,
.bg-opacity-white-60:before,
.bg-opacity-white-70:before,
.bg-opacity-white-80:before,
.bg-opacity-white-90:before {
  content: "";
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: -1;
}

.bg-opacity-black-10:before {
  background: rgba(0, 0, 0, 0.1);
}

.bg-opacity-black-20:before {
  background: rgba(0, 0, 0, 0.2);
}

.bg-opacity-black-30:before {
  background: rgba(0, 0, 0, 0.3);
}

.bg-opacity-black-40:before {
  background: rgba(0, 0, 0, 0.4);
}

.bg-opacity-black-50:before {
  background: rgba(0, 0, 0, 0.5);
}

.bg-opacity-black-60:before {
  background: rgba(0, 0, 0, 0.6);
}

.bg-opacity-black-70:before {
  background: rgba(0, 0, 0, 0.7);
}

.bg-opacity-black-80:before {
  background: rgba(0, 0, 0, 0.8);
}

.bg-opacity-black-90:before {
  background: rgba(0, 0, 0, 0.9);
}

.bg-opacity-white-10:before {
  background: rgba(255, 255, 255, 0.1);
}

.bg-opacity-white-20:before {
  background: rgba(255, 255, 255, 0.2);
}

.bg-opacity-white-30:before {
  background: rgba(255, 255, 255, 0.3);
}

.bg-opacity-white-40:before {
  background: rgba(255, 255, 255, 0.4);
}

.bg-opacity-white-50:before {
  background: rgba(255, 255, 255, 0.5);
}

.bg-opacity-white-60:before {
  background: rgba(255, 255, 255, 0.6);
}

.bg-opacity-white-70:before {
  background: rgba(255, 255, 255, 0.7);
}

.bg-opacity-white-80:before {
  background: rgba(255, 255, 255, 0.8);
}

.bg-opacity-white-90:before {
  background: rgba(255, 255, 255, 0.9);
}

/* .bg-1 ~ .bg-10 圖片背景 utility 已於 2026-07-22 移除：引用的 ../../images/bg/1~10.jpg
   從未入庫（public/web/images/ 不存在，外購模板殘留），且全站 Blade/JS 無任何使用 */

.separator {
  position: relative;
  display: inline-block;
  clear: both;
  background: rgba(0, 0, 0, 0.07) none repeat scroll 0 0;
  bottom: 0;
  height: 1px;
  width: 33%;
}

.separator::before {
  background: var(--cms-color-primary) none repeat scroll 0 0;
  content: "";
  display: block;
  height: 1px;
  position: absolute;
  transition: all 0.4s ease 0s;
  width: 100px;
}

.section-title:hover .separator::before {
  width: 75%;
}

.separator i {
  background: #ECEFF7 none repeat scroll 0 0;
  color: var(--cms-color-primary);
  display: block;
  font-size: 20px;
  height: 40px;
  line-height: 40px;
  position: absolute;
  text-align: center;
  top: -20px;
  width: 40px;
}

.separator span {
  background: var(--cms-color-surface) none repeat scroll 0 0;
  border: 1px solid var(--cms-color-primary);
  border-radius: 100%;
  display: block;
  height: 10px;
  position: absolute;
  top: -5px;
  width: 10px;
}

.separator i,
.separator span {
  left: 0;
  transform: none;
}

.text-center .separator::before,
.text-center .separator i,
.text-center .separator span {
  left: 50%;
  transform: translateX(-50%);
}

.text-end .separator::before,
.text-end .separator i,
.text-end .separator span {
  left: auto;
  transform: none;
  right: 0;
}



/* ============================================================================
 * 補充區段：.btnSummit / .btnNormal 系列按鈕
 *   抽取自 default.css line 3391~3482
 *   原因：本檔 line 33 處的 .btn { height: 30px } 透過 common/base.css 再次套用後
 *   會覆寫 default.css 中 .btnNormal { height: fit-content }（後者勝原 cascade）。
 *   因此把 .btnNormal 系列規則同步複製到本檔（且位置在 .btn 之後）以保持
 *   原 cascade 結果：.btnNormal 的 height: fit-content 勝出。
 *   等到舊 default.css 真正廢除時，本區段可移至更適當位置。
 * ============================================================================
 */

.btnSummit,
.btnNormal {
  width: 100%;
  max-width: 200px;
  padding: 10px 20px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  margin: 4px auto;
  margin-right: 10px;
  cursor: pointer;
  border-radius: 0rem;
  height: fit-content;
  transition: all 0.3s ease 0s;
}

@media screen and (max-width: 767.98px) {

  .btnSummit,
  .btnNormal {
    max-width: 100%;
    margin-right: 0;
  }

  .product-item .btnLike {
    background-color: var(--cms-color-surface);
    border: 1px solid #2c2c2c;
    color: #2c2c2c;
    padding: 15px 15px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 14px;
    margin: 4px;
    cursor: pointer;
    border-radius: 0rem;
    width: auto;
    height: fit-content;
    aspect-ratio: auto;
  }

  .product-item .btnLike i {
    margin-right: 5px;
  }
}

.btnSummit.sm,
.btnNormal.sm {
  width: fit-content;
  padding: 5px 25px;
  font-size: 12px;
  border-radius: 99rem;
  height: fit-content;
}

.btnSummit.gold,
.btnNormal.gold {
  background-color: var(--cms-color-btn-dark);
  border: 1px solid var(--cms-color-btn-dark);
  color: var(--cms-color-text-inverse);
}

.btnSummit.gold:hover,
.btnNormal.gold:hover {
  background-color: #1e1e1e;
  color: var(--cms-color-text-inverse);
}

/* ② 導覽鈕（外框）common 托底：深色 #313131 外框，取代 Bootstrap 預設灰（issue #622）
 * ②＝btnNormal + btn-outline-secondary（繼續購物／返回／前往結帳 等導覽鈕）；
 * default／dgfactor 直接沿用此深色，其他主題於 themes/<theme>/base.css 覆寫各自品牌色。 */
.btnSummit.btn-outline-secondary,
.btnNormal.btn-outline-secondary {
  background-color: transparent;
  border: 1px solid var(--cms-color-btn-dark);
  color: var(--cms-color-btn-dark);
}

.btnSummit.btn-outline-secondary:hover,
.btnNormal.btn-outline-secondary:hover,
.btnSummit.btn-outline-secondary:focus-visible,
.btnNormal.btn-outline-secondary:focus-visible {
  background-color: var(--cms-color-btn-dark);
  border-color: var(--cms-color-btn-dark);
  color: var(--cms-color-text-inverse);
  outline: none;
}

/* #1389 a11y：btnNormal／btnSummit 不是 Bootstrap 色系按鈕，沒有 --bs-btn-focus-shadow-rgb，
   Bootstrap 的 .btn:focus-visible（outline:0 加焦點陰影）在這裡等於什麼都不畫；補一圈按鈕深色外框。
   btn-outline-secondary 變體已在上方以反白底色表示焦點，權重較高、不受本規則影響 */
.btnNormal:focus-visible,
.btnSummit:focus-visible {
  outline: 2px solid var(--cms-color-btn-dark);
  outline-offset: 2px;
}

.gold-sec {
  background-color: #b0b0b0;
  border: 1px solid #b0b0b0;
  color: var(--cms-color-text-inverse);
}

.gold-sec:hover {
  background-color: #838383;
  color: var(--cms-color-text-inverse);
}

.btnSummit.red,
.btnNormal.red {
  background-color: #2c2c2c;
  border: 1px solid #2c2c2c;
  color: var(--cms-color-text-inverse);
}

.btnSummit.red:hover,
.btnNormal.red:hover {
  background-color: #a72808;
  color: var(--cms-color-text-inverse);
}


/* ============================================================================
 * ③ 加入購物車鈕組（cart-action）— 跨商品／追蹤清單／購物車頁共用（issue #622）
 *   common 托底：外框深框 #313131、圓角 10px、hover 填滿；主題色於 themes/<theme>/base.css 覆寫。
 *   命名功能前綴 + BEM：加入購物車／選規格＝base、已選＝--selected、已售完＝--soldout，
 *   購物車頁「套用優惠券／明細摺疊」沿用 base 外框（語意鉤 --coupon／--collapse，外觀同 base），
 *   數量加減器＝stepper。
 * ============================================================================ */
.cart-action__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 22px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  border: 1.5px solid var(--cms-color-btn-dark);
  border-radius: 10px;
  background: transparent;
  color: var(--cms-color-btn-dark);
  cursor: pointer;
  transition: all 0.2s ease;
}

.cart-action__btn:hover,
.cart-action__btn:focus-visible {
  background: var(--cms-color-btn-dark);
  border-color: var(--cms-color-btn-dark);
  color: var(--cms-color-text-inverse);
  outline: none;
}

.cart-action__btn--selected {
  background: var(--cms-color-surface);
  border-color: var(--cms-color-btn-dark);
  color: var(--cms-color-btn-dark);
}

.cart-action__btn--selected:hover,
.cart-action__btn--selected:focus-visible {
  background: #1e1e1e;
  border-color: #1e1e1e;
  color: var(--cms-color-text-inverse);
  outline: none;
}

.cart-action__btn--soldout {
  background: transparent;
  border-color: #dee2e6;
  color: #c5ccd6;
  cursor: not-allowed;
}

.cart-action__stepper {
  display: inline-flex;
  align-items: center;
  overflow: hidden;
  border: 1.5px solid var(--cms-color-btn-dark);
  border-radius: 10px;
}

.cart-action__stepper button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 44px;
  border: 0;
  background: transparent;
  color: var(--cms-color-btn-dark);
  cursor: pointer;
  transition: all 0.2s ease;
}

.cart-action__stepper button:hover,
.cart-action__stepper button:focus-visible {
  background: var(--cms-color-btn-dark);
  color: var(--cms-color-text-inverse);
  outline: none;
}

.cart-action__qty {
  min-width: 46px;
  text-align: center;
  font-weight: 700;
  color: var(--cms-color-btn-dark);
}


/* ============================================================================
 * 補充區段：.message-box input cascade 修復
 *   原因：default.css line 2648 .message-box input { margin-bottom: 10px }
 *   在 cm12 原 cascade 中覆寫 line 751 input[type="text"] { margin-bottom: 20px }
 *   （後者 specificity 相同、後者勝）。
 *
 *   抽到 common/base.css 後，common/base.css 內的 input[type="text"] 規則
 *   載入順序晚於 default.css 的 .message-box input，反向覆寫 → 10px → 20px。
 *
 *   修法：把 .message-box input 規則加到本檔末尾（cascade 順序最末），
 *   確保所有頁面（含 contactUs 等不載入 common/pages/user.css 的路由）
 *   都能還原 cm12 cascade 結果。
 *
 *   抽取自 default.css line 2648~2650。
 * ============================================================================
 */

.message-box input {
  margin-bottom: 10px;
}


/* ============================================================================
 * Phase B Batch 1：default.css 未抽出的 base / utility / layout 規則補完
 * ============================================================================
 *
 * 目的：讓 default.css 最終可廢除時頁面仍能正確顯示。
 *
 * 抽取自 default.css 9 個 gap（與其他既有抽取範圍不重疊）：
 *   - line 3261~3363：.pagination .page-item 系列（含 active / hover）
 *   - line 3483~3531：.btnCanNotBuy / .delete-btn 等按鈕變體
 *   - line 5190~5271：.breadcrumbs-section + .overlay-bg + .breadcrumbs-inner /
 *                      -title / .breadcrumb-list（CRITICAL: 提供 fixed header
 *                      讓位 padding-top: 100px）
 *   - line 5305~5341：.pagination > li 第二處（與 3261 互補）
 *   - line 5907~6143：.wrapper / .text-warp / .text-muted / .badge 等通用 utility
 *   - line 6357~6491：.timelineBox 通用 timeline 元件（含 RWD）
 *   - line 6776~6790：.video-container 通用影片容器
 *   - line 7025~7041：.alertMessage 通用警示框
 *   - line 7063~7089：.banner-link 通用 banner 連結
 *
 * 載入順序：本批次規則在 common/base.css 末尾，cascade 順序最末
 * （勝於同檔內較早規則；其他 common/* 載入後再進一步處理）。
 *
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（Phase B Batch 1）
 * ============================================================================
 */


/* --- Gap 8 (5190~5271)：CRITICAL breadcrumbs section + fixed header 讓位 --- */

.breadcrumbs-section {
  padding-top: 100px;
  background: var(--cms-color-surface);
  background-position: 50% 18%;
  background-size: cover;
  margin-bottom: 20px;
}

.overlay-bg {
  position: relative;
}

.overlay-bg::before {
  background: linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
  content: "";
  height: 100%;
  left: 0;
  opacity: 0.6;
  position: absolute;
  top: 0;
  transition: all 0.3s ease 0s;
  width: 100%;
}

.breadcrumbs-inner {
  position: relative;
  z-index: 10;
}

.breadcrumbs-title {
  color: #2c2c2c;
  /* line-height: 45px; */
  margin-bottom: 0;
  padding: 24px 0;
  text-align: center;
  text-transform: uppercase;
  /* font-size: 35px; */
  font-display: swap;
}

@media (max-width: 767.98px) {
  .breadcrumbs-title {
    /* font-size: 28px;
    line-height: 40px; */
    padding: 8px 0;
  }

  /* 手機標題與內容間距收斂（桌機 40px 在小螢幕過大） */
  .breadcrumbs-section {
    margin-bottom: 16px;
  }
}

/* #1027 padding-left 歸零：<ol> 帶有清單預設的左內縮,會讓麵包屑文字比所在容器的
   內容左緣多縮排一段,對不齊(麵包屑無項目符號,不需要那段縮排)。 */
.breadcrumb-list {
  line-height: 1;
  padding-left: 0;
  padding-bottom: 20px;
}

.breadcrumb-list>li {
  color: var(--cms-color-text-muted);
  display: inline-block;
  font-size: 13px;
  font-weight: 600;
  margin-right: 15px;
  text-transform: uppercase;
}

/* 分隔符只出現在節點「之間」(li+li),不套在第一個節點前;原樣板的裝飾符號 "_"
   在 #794 麵包屑元件上線後直接曝光成可見字元,改用慣用的 "/" 並補上與後方文字
   的間距(節點之間的間距由上方 li 的 margin-right 提供)。原 left: 0 因元素無
   position 而無效,一併移除。(#1027) */
.breadcrumb-list>li+li::before {
  content: "/";
  margin-right: 15px;
  color: var(--cms-color-text-secondary);
  transition: all 0.3s ease 0s;
}

.breadcrumb-list>li+li:hover::before {
  color: var(--cms-color-dark);
}

.breadcrumb-list>li>a {
  color: var(--cms-color-text-secondary);
}

.breadcrumb-list>li:hover>a {
  color: var(--cms-color-dark);
}


/* --- Gap 1 (3261~3363)：.pagination .page-item 系列 --- */
.pagination .page-item {
  width: 35px;
  height: 35px;
  background: var(--cms-color-surface);
  border: 1px solid #ffffff;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-right: -1px;
}

.pagination>.page-item-btn {
  width: fit-content;
  min-width: 100px;
}

.pagination>.page-item-btn>span {
  width: fit-content;
}

.pagination .page-item .page-link:hover {
  background: #575757;
  color: var(--cms-color-text-inverse)
}

.pagination .page-item.active {
  background: var(--cms-color-btn-dark);
}

.pagination .page-item .page-link {
  width: 100%;
  height: 100%;
  border: none;
  background: none;
  color: #000;
  display: flex;
  justify-content: center;
  align-items: center;
  font-family: var(--cms-font-family-latin);
  font-size: 13px;
  font-weight: 400;
  line-height: 28px;
  text-align: center;
}

.pagination .page-item.active .page-link {
  color: var(--cms-color-text-inverse);
}

@media (max-width: 991.98px) {
  .pagination>.page-item-btn {
    width: fit-content;
    min-width: fit-content;
  }

  .pagination .page-item .page-link {
    width: 45px;
  }
}

.action-button-box {
  width: 100%;
  display: flex;
  justify-content: start;
  align-items: center;
}

@media screen and (max-width: 767.98px) {
  /* 收藏 / 加入購物車 / 直接購買 維持同一行（不再上下堆疊） */
  .action-button-box {
    flex-direction: row;
    align-items: center;
    gap: 8px;
  }

  .action-button-box .action-button {
    margin-bottom: 0;
  }

  .action-button-box .action-button .cart-action-box {
    margin-right: 0;
  }

  .action-button-box .btnLike {
    margin: 0;
  }
}

.action-button-box .action-button {
  display: flex;
  align-items: center;
  flex-grow: 1;
}

.action-button-box .action-button .cart-action-box {
  flex-grow: 1;
  margin-right: 10px;
}

.action-button-box .action-button .btnLike {
  padding: 10px 15px;
  margin-right: 0;
}


/* --- Gap 2 (3483~3531)：.btnCanNotBuy / .delete-btn --- */

.btnCanNotBuy {
  width: 100%;
  max-width: 200px;
  padding: 10px 20px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  font-size: 14px;
  margin: 4px auto;
  margin-right: 10px;
  cursor: pointer;
  border-radius: 0rem;
  height: fit-content;
  transition: all 0.3s ease 0s;
  background-color: #ff0000;
  border: 1px solid #ff0000;
  color: var(--cms-color-text-inverse);
}

.btnCanNotBuy:hover {
  background-color: #575757;
  color: var(--cms-color-text-inverse);
}

.delete-btn {
  border-radius: 20px;
  height: fit-content;
}

.text-primary {
  color: var(--cms-color-text);
}

.shop-section {
  min-height: 50vh;
}

.order-content-box {
  background: var(--cms-color-surface);
  padding: 20px;
  border-radius: 10px;
}

.order-content-box .divider {
  border-bottom: 1.5px solid #ecd6bf;
  padding-bottom: 24px;
}


/* --- Gap 9 (5305~5341)：.pagination > li 第二處 --- */

.pagination {
  padding: 10px;
  /* 頁碼過多時換行，避免在手機等窄畫面橫向溢出、撐開整個列表版面 */
  flex-wrap: wrap;
  row-gap: 6px;
}

.pagination>li {
  display: inline-block;
  margin-right: 3px;
}

.pagination>li:last-child {
  margin-right: 0;
}

.pagination>li>a {
  border: 1px solid var(--cms-color-border);
  color: var(--cms-color-text-muted);
  display: block;
  font-family: var(--cms-font-family-latin);
  font-size: 13px;
  font-weight: 400;
  height: 30px;
  line-height: 28px;
  text-align: center;
  width: 30px;
}

.pagination>li>a i {
  line-height: 28px;
}

.pagination>li.active a,
.pagination>li:hover a {
  border-color: var(--cms-color-dark);
  color: var(--cms-color-dark);
}


/* --- Gap 11 (5907~6143)：.wrapper / utility / .badge 等 --- */

.wrapper {
  background: var(--cms-color-surface) none repeat scroll 0 0;
}

.text-warp {
  word-break: break-all;
  word-wrap: break-word;
}

.text-muted {
  font-size: 16px;
  color: var(--cms-color-text) !important;
}

.badge {
  display: inline-block;
  padding: 0.25em 0.4em;
  font-size: 75%;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: 0.25rem;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

@media (prefers-reduced-motion: reduce) {
  .badge {
    transition: none;
  }
}

a.badge:hover,
a.badge:focus {
  text-decoration: none;
}

.badge:empty {
  display: none;
}

.btn .badge {
  position: relative;
  top: -1px;
}

.badge-pill {
  padding-right: 0.6em;
  padding-left: 0.6em;
  border-radius: 10rem;
}

.badge-primary {
  color: var(--cms-color-text-inverse);
  background-color: var(--cms-color-accent);
}

a.badge-primary:hover,
a.badge-primary:focus {
  color: var(--cms-color-text-inverse);
  background-color: #0062cc;
}

a.badge-primary:focus,
a.badge-primary.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}

.badge-secondary {
  color: var(--cms-color-text-inverse);
  background-color: var(--cms-color-secondary);
}

a.badge-secondary:hover,
a.badge-secondary:focus {
  color: var(--cms-color-text-inverse);
  background-color: #545b62;
}

a.badge-secondary:focus,
a.badge-secondary.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}

.badge-success {
  color: var(--cms-color-text-inverse);
  background-color: var(--cms-color-success);
}

a.badge-success:hover,
a.badge-success:focus {
  color: var(--cms-color-text-inverse);
  background-color: #1e7e34;
}

a.badge-success:focus,
a.badge-success.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}

.badge-info {
  color: var(--cms-color-text-inverse);
  background-color: var(--cms-color-info);
}

a.badge-info:hover,
a.badge-info:focus {
  color: var(--cms-color-text-inverse);
  background-color: #117a8b;
}

a.badge-info:focus,
a.badge-info.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}

.badge-warning {
  color: var(--cms-color-ink);
  background-color: var(--cms-color-warning);
}

a.badge-warning:hover,
a.badge-warning:focus {
  color: var(--cms-color-ink);
  background-color: #d39e00;
}

a.badge-warning:focus,
a.badge-warning.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}

.badge-danger {
  color: var(--cms-color-text-inverse);
  background-color: var(--cms-color-danger);
}

a.badge-danger:hover,
a.badge-danger:focus {
  color: var(--cms-color-text-inverse);
  background-color: #bd2130;
}

a.badge-danger:focus,
a.badge-danger.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}

.badge-light {
  color: var(--cms-color-ink);
  background-color: #f8f9fa;
}

a.badge-light:hover,
a.badge-light:focus {
  color: var(--cms-color-ink);
  background-color: #dae0e5;
}

a.badge-light:focus,
a.badge-light.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}

.badge-dark {
  color: var(--cms-color-text-inverse);
  background-color: #343a40;
}

a.badge-dark:hover,
a.badge-dark:focus {
  color: var(--cms-color-text-inverse);
  background-color: #1d2124;
}

a.badge-dark:focus,
a.badge-dark.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}

.badge-purple {
  color: var(--cms-color-text-inverse);
  background-color: #6f42c1;
}

a.badge-purple:hover,
a.badge-purple:focus {
  color: var(--cms-color-text-inverse);
  background-color: #492788;
}

a.badge-purple:focus,
a.badge-purple.focus {
  outline: 0;
  box-shadow: 0 0 0 0.2rem rgba(145, 44, 185, 0.5);
}

@media screen and (max-width: 479.98px) {
  .g-recaptcha {
    transform: scale(0.85);
    transform-origin: 0 0;
  }
}

.custom-arrow {
  font-size: 1.4rem;
  color: #888;
}

.custom-arrow:hover {
  color: var(--cms-color-accent);
}


/* --- Gap 13 (6357~6491)：.timelineBox 系列 --- */

.timelineBox .timelineTextBox {
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 99rem;
  padding: 50px;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: start;
  align-items: center;
}

@media screen and (max-width: 767.98px) {
  .timelineBox .timelineTextBox {
    padding: 30px 20px 20px;
  }
}

.timelineBox .timelineTextBox::after {
  content: "";
  position: absolute;
  width: 2px;
  height: 20%;
  background: var(--cms-color-surface);
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.timelineBox .timelineTextBox .year {
  font-size: 20px;
  color: var(--cms-color-text-inverse);
  background: var(--cms-color-gold);
  width: -moz-fit-content;
  width: fit-content;
  padding: 8px 20px;
  border-radius: 99rem;
  font-family: var(--cms-font-family-display);
  font-display: swap;
  margin-bottom: 40px;
}

@media screen and (max-width: 767.98px) {
  .timelineBox .timelineTextBox .year {
    font-size: 16px;
    margin-bottom: 16px;
  }
}

.timelineBox .timelineTextBox .text {
  font-size: 16px;
  line-height: 32px;
  color: #653F00;
}

@media screen and (max-width: 767.98px) {
  .timelineBox .timelineTextBox .text {
    font-size: 12px;
  }
}

.secSwiper .swiper-scrollbar-drag {
  background: var(--cms-color-gold);
}

.blockPSpacing {
  padding-top: 60px;
}

.blockTitleBox {
  margin-top: 20px;
  /* padding-top: 120px; */
  padding-top: 20px;
}

.blockTitleBox .blockTitle.orange {
  color: #2c2c2c;
}

.blockTitleBox .blockTitle {
  /* font-size: 35px; */
  /* font-family: HGPMinchoE; */
  font-display: swap;
}

@media screen and (max-width: 767.98px) {
  .blockTitleBox {
    margin-top: 10px;
    /* padding-top: 120px; */
    padding-top: 20px;
  }

  .blockTitleBox .blockTitle {
    /* font-size: 24px; */
  }
}

.blockLine-wrappe {
  display: flex;
  justify-content: center;
}

.blockLine {
  width: 2px;
  height: 80px;
  background: #2c2c2c;
  margin: 25px auto;
}

.containerText {
  max-width: 800px;
  margin: 0 auto;
}

.containerText p {
  color: var(--cms-color-text);
  /* font-size: 16px;
  line-height: 28px; */
}

.blockLineText {
  /* font-size: 60px; */
  color: #2c2c2c;
  font-family: var(--cms-font-family-display);
  font-display: swap;
}

/* @media screen and (max-width: 767.98px) {
  .blockLineText {
    font-size: 40px;
  }
} */


/* --- Gap 14 (6776~6790)：.video-container --- */

.video-container {
  position: relative;
  padding-bottom: 56.25%;
  height: 0;
}

.video-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}


/* --- Gap 15 (7025~7041)：.alertMessage --- */

.alertMessage {
  position: fixed;
  top: 120px;
  right: 50%;
  transform: translateX(50%);
  width: fit-content;
  border-radius: 99rem;
  overflow: hidden;
  z-index: 3000;
}

.alertMessage .alert {
  margin: 0;
  display: flex;
}


/* --- Gap 16 (7063~7089)：.banner-link --- */

.banner-link {
  display: block;
  position: relative;
  overflow: hidden;
}

.banner-link {
  border-radius: 99rem;
  overflow: hidden;
}

@media screen and (max-width: 991.98px) {
  .banner-link {
    width: 100%;
    height: auto;
    aspect-ratio: 1;
  }
}

.banner-link img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
}



/* === Phase B Batch 2: 跨 selector RWD + utility 補完（抽自 default.css 多個 gap）=== */

/* Gap 4 (4063-4166) @media (992-1199) + (768-991) RWD */
@media (min-width: 992px) and (max-width: 1199.98px) {
  :where(.web-announcement-bar-inner, .product-shell, .footer-shell, .header-navbar-inner, .chrome-compact__inner, .chrome-stacked__utility, .chrome-stacked__brand-row, .chrome-stacked__nav) {
    padding: 0 var(--cms-space-30);
  }

  .blog-desc p {
    margin-bottom: 10px;
  }

  .read-more {
    margin-bottom: 10px;
  }

  .widget-product .product-info {
    padding: 10px 0 0 10px;
  }

  .widget-product .product-title,
  .widget-product .pro-price {
    font-size: 13px;
  }

}

@media (min-width: 768px) and (max-width: 991.98px) {
  :where(.web-announcement-bar-inner, .product-shell, .footer-shell, .header-navbar-inner, .chrome-compact__inner, .chrome-stacked__utility, .chrome-stacked__brand-row, .chrome-stacked__nav) {
    padding: 0 var(--cms-space-30);
    height: fit-content;
  }

  .blog-desc p {
    margin-bottom: 10px;
  }

  .footer-top {
    background: var(--cms-color-bg-soft) none repeat scroll 0 0;
  }

  .footer-area :where(.footer-shell, .chrome-compact__inner) {
    padding: 0;
  }

  .footer-top-inner {
    padding: 30px 15px;
  }

  .pagination {
    margin-bottom: 30px;
  }

  .payment-details {
    margin-top: 30px;
  }

  .logo {
    padding: 38px 0;
  }
}

/* Gap 5 (4187-4322) @media (max-width: 767) 內含多 selector mobile RWD */
@media (max-width: 767.98px) {
  :where(.web-announcement-bar-inner, .product-shell, .footer-shell, .header-navbar-inner, .chrome-compact__inner, .chrome-stacked__utility, .chrome-stacked__brand-row, .chrome-stacked__nav) {
    padding: 0;
  }

  .mb-80 {
    margin-bottom: var(--cms-space-30);
  }

  .mb-40 {
    margin-bottom: var(--cms-space-30);
  }

  /* .product-title {
    font-size: 13px;
  } */

  .logo {
    padding: 2px 0;
    text-align: center;
  }

  .footer-area :where(.footer-shell, .chrome-compact__inner) {
    padding: 0;
  }

  .footer-top-inner {
    padding: 30px 15px;
  }

  .copyright {
    padding: 0 15px;
  }

  .copyright-text p {
    text-align: center;
    line-height: 2.1;
  }

  .breadcrumbs-title {
    /* font-size: 20px; */
    padding: 50px 0 30px;
  }

  .breadcrumb-list {
    text-align: center;
  }

  .breadcrumb-list>li {
    font-size: 10px;
  }

  .pagination {
    margin-bottom: 30px;
  }

  .imgs-zoom-area {
    margin-bottom: 30px;
  }

  .blog-section-title {
    font-size: 16px;
  }

  .billing-details.pr-10 {
    padding-right: 0;
  }

  .billing-details.p-30 {
    padding: 15px;
  }

  .payment-details {
    margin-top: 30px;
    padding: 10px;
  }

  .message-box {
    width: fit-content;
    padding: 20px;
    max-width: 100%;
  }
}


/* Gap 10 (5513-5593) .saparator / .color-title / .cart-plus-minus 等 */
.saparator {
  margin: auto 5px;
}

.color-title {
  color: #575757;
  line-height: 25px;
  margin-bottom: 0;
  text-transform: uppercase;
  width: 70px;
}

.cart-plus-minus {
  border: 1px solid var(--cms-color-border-strong);
  height: 32px;
  text-align: center;
  width: 90px;
  color: var(--cms-color-text-secondary);
  border-radius: 3px;
}

.sin-plus-minus p {
  font-size: 16px;
  color: var(--cms-color-text);
}

.qtybutton {
  background: #e6e6e6 none repeat scroll 0 0;
  height: 100%;
  width: 30%;
  line-height: 32px;
  cursor: pointer;
}

.dec.qtybutton {
  float: left;
}

.inc.qtybutton {
  float: right;
}

input.cart-plus-minus-box {
  background: transparent none repeat scroll 0 0;
  box-shadow: none;
  font-family: var(--cms-font-family-latin);
  height: 100%;
  margin-bottom: 0;
  padding: 4px;
  text-align: center;
  width: 40%;
}

table {
  width: 100%
}

/* .payment-details 訂單資訊表格（issue #562 還原）：模組化抽取時本選擇器被誤與下方
 * .cart-thumbnail-img 合併成 float:left，使 .payment-details 容器寬度塌縮；cart 頁有
 * shoppingCart.css 覆寫遮住，但只載 order pageKey 的 cancel/return/show 等頁吃到 float
 * 並缺 td padding 而表格脫版。自舊 default.css line 5604/5742-5753 還原至 base.css 跨頁托底。 */
.payment-details {
  width: 100%;
  overflow-x: auto;
}

.payment-details tr {
  border-bottom: 1px solid var(--cms-color-border);
}

.payment-details tr:last-child {
  border-bottom: 0 none;
}

.payment-details td {
  padding: 5px 0;
  color: var(--cms-color-text);
}

@media screen and (max-width: 767.98px) {

  .payment-details table th,
  .payment-details table td {
    min-width: 100px;
    padding: 10px 5px;
  }

  .payment-details table {
    width: 100%;
  }

  .payment-details table td[colspan="3"] {
    min-width: 250px;
  }
}

.page-wrapper {
  margin-top: 94px;
}

.swiperPaginationBox {
  padding: 30px 0;
  margin-bottom: 10px;
}

.blockTitleBox .blockTitle.gold {
  color: #D2AD4B;
}

.blockTitleBox .blockTitle {
  font-size: 35px;
  /* font-family: HGPMinchoE; */
  font-display: swap;
}

@media screen and (max-width: 767.98px) {
  .blockTitleBox .blockTitle {
    font-size: 24px;
  }
}

.blockTitleBox .blockTitleBgBox .blockTitleBg {
  color: rgba(112, 112, 112, 0.0901960784);
  font-size: 150px;
  /* font-family: Sitka; */
  margin-top: -60px;
}

@media screen and (max-width: 991.98px) {
  .blockTitleBox .blockTitleBgBox {
    margin-top: -40px;
  }
}

@media screen and (max-width: 767.98px) {
  .blockTitleBox .blockTitleBgBox {
    margin-top: -30px;
  }
}

@media screen and (max-width: 991.98px) {
  .blockTitleBox .blockTitleBgBox .blockTitleBg {
    font-size: 80px;
  }
}

@media screen and (max-width: 767.98px) {
  .blockTitleBox .blockTitleBgBox .blockTitleBg {
    font-size: 40px;
  }
}

.blockTitleBgHtml {
  font-size: 115px;
  margin-top: -40px;
}

@media screen and (max-width: 991.98px) {
  .page-wrapper {
    margin-top: 89px;
  }
}

@media screen and (max-width: 767.98px) {
  .blockTitleBox {
    margin-top: 20px;
    padding-top: 50px;
  }
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
}

.blockMSpacing {
  margin-top: 60px;
}

.sgsBox {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

.sgsBox .sgsBoxTitle {
  width: -moz-fit-content;
  width: fit-content;
  background: #F8F8F8;
  padding: 10px 20px;
  border-radius: 99rem;
  margin-bottom: 20px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.sgsBox .sgsBoxTitle .triangle-down {
  width: 0;
  height: 0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-top: 10px solid #DD8C06;
}

.sgsBox .sgsBoxTitle .sgsTitle {
  font-size: 16px;
  color: var(--cms-color-gold);
  font-family: var(--cms-font-family-display);
  font-display: swap;
  margin-bottom: 0px;
  margin-left: 10px;
  margin-right: 10px;
}

.blockMSpacingXL {
  margin-top: 100px;
}

.secSwiper .swiper-wrapper {
  margin-bottom: 60px;
}

.secSwiper .swiper-scrollbar {
  margin-top: 50px;
}

.timelineBox {
  width: 100%;
  height: 100%;
  background: antiquewhite;
  aspect-ratio: 1/1;
  border-radius: 99rem;
}

.timelineBox .timelineImgBox {
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 99rem;
}

.timelineBox .timelineImgBox .timelineImg {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
}


/* === Phase B Batch 3: RWD visibility utility + swiper baseline === */

/* .desktop / .mobile / .desktopImg / .mobileImg + @media 991px
 * 抽自 default.css line 2514-2546
 * 作用：viewport 切換顯示對應版本元素（桌面/行動 header logo + nav） */
.desktop {
  display: block;
}

.mobile {
  display: none;
}

.desktopImg {
  display: block;
}

.mobileImg {
  display: none;
}

@media (max-width: 991.98px) {
  .desktop {
    display: none;
  }

  .mobile {
    display: block;
  }

  .desktopImg {
    display: none;
  }

  .mobileImg {
    display: block;
  }
}

/* .swiper baseline，抽自 default.css line 6757-6760 */
.swiper {
  width: 100%;
  height: 100%;
}

/* ============================================================================
 * 補抽：.strong 工具類（抽自 default.css line 7889~7891；原誤置於 common/sidebar.css 末尾被截斷）
 * ============================================================================
 */

.strong {
  font-weight: 700;
}


/* ============================================================================
 * 共用 .message-box / .message-box-section / .custom-textarea
 *   原 default.css 中 .message-box 同時被 product.css（.single-product-area, .message-box）
 *   與 user.css（.message-box padding override）兩處規則合成；
 *   contactUs / login / register 等頁面亦使用 .message-box，但各自只載 single page CSS，
 *   無法跨檔合成。遷至 base.css（所有頁面皆載入）統一處理。
 *   抽自 default.css line 2599~2650 / line 5770
 * ============================================================================
 */

.message-box-section {
  position: relative;
}

@media screen and (max-width: 767.98px) {
  .message-box-section {
    padding: 10px;
  }
}

.message-box {
  background: var(--cms-color-surface);
  border-radius: 10px;
  padding: 40px 60px;
  height: fit-content;
  min-height: 400px;
}

@media screen and (max-width: 767.98px) {
  .message-box {
    padding: 5px;
    margin-bottom: 30px;
  }
}

.custom-textarea {
  height: 250px;
}


/* ============================================================================
 * .single-product-area — 跨頁表格 / 內容白卡 wrapper
 *   使用頁面：product（商品詳情）/ shoppingCarts（購物車）/ orders（訂單列表）/ wishList
 *   原僅存在於 common/pages/product.css（含完整白卡）與 common/pages/shoppingCart.css
 *   （僅 width/overflow），orders 路由 route_page_map 只載 order.css，兩者皆不載入，
 *   導致訂單列表的 .single-product-area 元素缺白底 / padding / border-radius 卡片樣式
 *   （DOM 有此層但無視覺 wrapper）。比照 .message-box 遷至 base.css 統一跨頁 cascade。
 *   抽自 kgtwbeef.css line 2339（白卡）+ line 4196（width/overflow，表格橫向捲動）
 * ============================================================================
 */
.single-product-area {
  background: var(--cms-color-surface);
  border-radius: 10px;
  padding: 20px 20px;
  height: fit-content;
  min-height: 400px;
  width: 100%;
  overflow-x: auto;
}

@media screen and (max-width: 767.98px) {
  .single-product-area {
    padding: 5px;
    margin-bottom: 30px;
  }
}


/* ============================================================================
 * .blog-section-title（contactUs 表單副標題、post.show 等共用）
 *   原位於 common/pages/post.css，但 contactUs.blade 的 h4.blog-section-title
 *   亦使用此 class（顏色 #575757 / font-weight 700）；contactUs 不載 post.css
 *   → 顏色 fallback 至 body color (#aebcb9) 看不見。遷至 base.css 跨頁共用。
 *   抽自 default.css line 5900~5906
 * ============================================================================
 */

.blog-section-title {
  color: #575757;
  font-weight: 700;
  text-transform: uppercase;
}


/* ============================================================================
 * 補充區段：.breadcrumbs-title 手機版 cascade 修復
 * ============================================================================
 *
 * 原因：
 *   舊 default.css 內 cascade（同 specificity 規則由線性掃描順序決勝）：
 *     - line 4271 @media (max-width: 767.98px) .breadcrumbs-title { padding: 50px 0 30px }（先）
 *     - line 5232 @media (max-width: 767.98px) .breadcrumbs-title { padding: 8px 0 }（後勝）
 *   最終手機版 padding = 8px 0（標題緊貼上方）
 *
 *   抽到 common/base.css 後 cascade 順序反轉：
 *     - line 2236-2242 padding: 8px 0（抽自舊 5232，被先載入）
 *     - line 3108-3111 padding: 50px 0 30px（抽自舊 4271，後載勝）
 *   最終手機版 padding = 50px 0 30px（banner 變高、標題位置偏下）
 *
 *   影響範圍：所有 breadcrumbs 頁面手機版，含 products / products.show /
 *   posts / posts.show / shoppingCarts / checkout / orders / login / register /
 *   profile / shipping / member / privacy / terms / payReturn / contactUs。
 *
 * 修法：
 *   本檔末段（cascade 順序最末）再次宣告 @media (max-width: 767.98px)
 *   .breadcrumbs-title padding: 8px 0，還原舊 default.css 線性掃描結果。
 *   仿 line 2162 .message-box input 補丁同模式。
 *
 * 抽取自：default.css line 5231-5237
 * ============================================================================
 */

@media (max-width: 767.98px) {
  .breadcrumbs-title {
    padding: 8px 0;
  }
}


/* ============================================================================
 * 補充區段：.blockTitleBox 手機版 cascade 修復
 * ============================================================================
 *
 * 原因：
 *   舊 default.css 內 @media screen and (max-width: 767.98px) .blockTitleBox 規則
 *   出現兩次（同 specificity，後者勝）：
 *     - line 6264-6268 .blockTitleBox { margin-top: 20px; padding-top: 50px }（先）
 *     - line 6445-6449 .blockTitleBox { margin-top: 10px; padding-top: 20px }（後勝）
 *   最終手機版：margin-top: 10px / padding-top: 20px
 *
 *   新 common/base.css 抽取時只抽到第一條（line 3382-3386 = margin-top: 20px /
 *   padding-top: 50px），第二條漏抽，導致新拆檔最終手機版顯示為 20px / 50px。
 *
 *   影響範圍：所有頁面含 .blockTitleBox 標題區塊的手機版視覺（margin/padding 偏大）。
 *
 * 修法：
 *   本檔末段（cascade 順序最末）補回舊 default.css line 6445-6449 規則。
 *   仿 line 2162 .message-box input 補丁同模式。
 *
 * 抽取自：default.css line 6445-6449
 * ============================================================================
 */

@media screen and (max-width: 767.98px) {
  .blockTitleBox {
    margin-top: 10px;
    /* padding-top: 120px; */
    padding-top: 20px;
  }
}

/* Fancybox lightbox 需高於 fixed #header (z-index: 3000)（issue480 由舊單檔遷入 base 全域層） */
.fancybox__container {
  z-index: 9999 !important;
}

/* issue #713：跨頁共用——表單必填星號（原 <span class="text-danger">*</span>）。
   BS text-danger 生效值 #dc3545；shopLinerp 主題級 text-danger 調色已同步增列本類。 */
.form-required-mark {
  color: #dc3545;
}

/* issue #713/#714：跨頁共用——認證/聯絡表單 CTA（原 py-2 fw-bold rounded-3 fs-5）；
   --center 對應 profile 的 mx-auto */
.auth-submit-btn {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  font-weight: 700;
  border-radius: var(--bs-border-radius-lg);
  font-size: 1.25rem;
}

.auth-submit-btn--center {
  margin-right: auto;
  margin-left: auto;
}

/* issue #695/#700 掃尾：分頁元件（components/web/pagination）預設置中。
   取代各呼叫端 wrapperClass 的 justify-content-center utility。這是可主題化的純外觀預設，
   不得再鏡射 Bootstrap utility 的 !important，讓 theme／custom 一般宣告即可覆寫。 */
.pagination-nav {
  justify-content: center;
}

/* issue #695/#700 掃尾：404 頁內容區置中（原 text-center utility）。
   pageNotFound route 僅載入 layout 群組 CSS（無 page CSS），故本規則置於 base 層。 */
.notfound-content {
  text-align: center;
}


/* #1399 E：分頁文字的 RWD 顯隱由元件語意 class 擁有，不依賴 Bootstrap display utility。 */
.pagination-label {
  display: none;
}

@media (min-width: 992px) {
  .pagination-label {
    display: inline;
  }
}


/* #1399 E/L：驗證訊息以原生 hidden 與語意 state 控制，不依賴 Bootstrap d-block。 */
.invalid-feedback[data-state="visible"],
.invalid-feedback.form-feedback--visible {
  display: block;
}


/* #1399 E：錯誤頁、訊息清單與表格數值改由語意角色承接純視覺設定。 */
.notfound-page { margin-top: var(--cms-space-40); }
.notfound-content__title { margin-bottom: 1rem; }
.notfound-content__message { margin-bottom: 1.5rem; }
.notfound-content__action {
  padding-block: 0.5rem;
  border-radius: 0.3rem;
  font-size: 1.25rem;
  font-weight: 700;
}
.alert-message__list {
  margin-top: 0.5rem;
  margin-bottom: 0;
}
/* issue #1389：錯誤訊息後附的連結（原 ms-2 工具類） */
.alert-message__link {
  margin-left: 0.5rem;
}
.order-total-value { text-align: right; }

}
/* source: web/css/common/richtext.css */
@layer cms.platform {
/*
 * ============================================================================
 * 富文本與自訂 HTML 的換膚契約（issue #1394）
 * ============================================================================
 *
 * 掛勾：前台四類富文本容器與後台 CKEditor 編輯區 body 一律帶
 *   .cms-richtext ＋ .cms-richtext--<context>（product／post／company／widget）
 * 本檔隨 common.layout 載入，前台、CKEditor 編輯區、Widget 預覽畫布吃到的是同一份。
 *
 * 優先規則（由低到高；完整說明見 docs/front/rich-content-theming.md）：
 *   1. 平台基線（本檔）    — 以 :where() 歸零特異性，任何主題規則都能覆寫
 *   2. 全站主題            — 調 --cms-richtext-* 變數，或以 .cms-richtext--<context> 為錨點寫規則；
 *                            MUST NOT 以 !important 或 overflow:hidden 壓掉／裁掉客戶內容
 *   3. 內容明確指定的外觀   — inline style 與表格 border／cellpadding／cellspacing 屬性，保留不改寫
 *   4. 站台 custom.css     — 載入鏈最後一支
 * 唯一的例外是「容納防護」：只約束寬度（max-width）與斷行，讓內容不撐開整頁；
 * 它不改顏色、字型、間距，也不刪除或隱藏任何內容。被它約束到的內容由後台診斷指出。
 */

/* ---------------------------------------------------------------------------
 * 1. 容納防護（零特異性）
 * ------------------------------------------------------------------------- */

/* 長網址、長英數字串在任意位置斷行，不撐開版面（中日文本來就能逐字斷行，不受影響） */
:where(.cms-richtext) {
  overflow-wrap: anywhere;
}

/* 固定寬度的區塊與媒體一律不超過容器：max-width 與 inline width 是不同屬性，
   不需要 !important 就能約束 style="width:900px"，而內容原本的寬度設定照樣保留在資料裡 */
:where(.cms-richtext) :where(div, section, article, figure, p, blockquote, pre, ul, ol, dl, h2, h3, h4, h5, h6, table, img, video, iframe, embed, object, canvas) {
  max-width: 100%;
}

/* 圖片與影片被寬度約束後依比例縮放；只覆寫 HTML height 屬性，inline height 仍以內容為準 */
:where(.cms-richtext) :where(img, video) {
  height: auto;
}

:where(.cms-richtext) pre {
  overflow-x: auto;
}

/* 寬表格先由瀏覽器壓縮欄寬放進容器（上方 overflow-wrap: anywhere 讓儲存格可逐字換行）；
   壓不下時（儲存格內有寬圖、固定寬度等）才在自己的區塊內左右捲動，而不是撐開整頁。
   外框由 web/js/main.js 包上，不改寫表格本身，表格語意完整保留。編輯區沒有外框，由編輯區自身捲動。 */
.cms-richtext__table-scroll {
  max-width: 100%;
  overflow-x: auto;
}

/* ---------------------------------------------------------------------------
 * 2. 表格 border／cellpadding／cellspacing 屬性（內容明確指定的外觀）
 * ---------------------------------------------------------------------------
 * Bootstrap reboot 會把 th／td 的框線歸零，瀏覽器對這三個屬性的原生呈現因此失效。
 * 原本只靠 web/js/main.js 把屬性改寫成 inline style 補回——編輯區不跑那支 JS，
 * 主題也無法調整框線色。改由本段依屬性呈現（全站適用，不限 .cms-richtext 內），
 * 支援進階 attr() 的瀏覽器直接使用屬性精確值；不支援者前台與編輯器一致採 1px fallback。
 * main.js 不再寫入 inline style 或 CSS 變數。屬性為 0 或空值視同未設定。
 *   --cms-rt-table-border-width ／ --cms-rt-table-spacing ／ --cms-rt-table-padding：屬性值（px）
 *   --cms-richtext-table-border-color：框線色，主題可覆寫；預設為文字色（與舊行為相同）
 */
table:is([border], [cellpadding], [cellspacing]) {
  border-collapse: collapse;
  border-spacing: 0;
}

table[cellspacing]:not([cellspacing="0"], [cellspacing=""]) {
  border-collapse: separate;
  border-spacing: var(--cms-rt-table-spacing, 1px);
}

table[border]:not([border="0"], [border=""]),
table[border]:not([border="0"], [border=""]) > :is(thead, tbody, tfoot) > tr > :is(th, td),
table[border]:not([border="0"], [border=""]) > tr > :is(th, td) {
  border: var(--cms-rt-table-border-width, 1px) solid var(--cms-richtext-table-border-color, currentColor);
}

table[cellpadding]:not([cellpadding="0"], [cellpadding=""]) > :is(thead, tbody, tfoot) > tr > :is(th, td),
table[cellpadding]:not([cellpadding="0"], [cellpadding=""]) > tr > :is(th, td) {
  padding: var(--cms-rt-table-padding, 1px);
}

/* 支援具型別 attr() 的瀏覽器直接讀屬性精確值；不支援者前台與編輯器都沿用上方 1px fallback */
@supports (border-width: attr(border px, 1px)) {
  table[border] {
    --cms-rt-table-border-width: attr(border px, 1px);
  }

  table[cellspacing] {
    --cms-rt-table-spacing: attr(cellspacing px, 1px);
  }

  table[cellpadding] {
    --cms-rt-table-padding: attr(cellpadding px, 1px);
  }
}

}
/* source: web/css/common/form-select.css */
@layer cms.platform {
/* ============================================================================
 * 前台統一下拉元件 web-select（issue #1014，2026-08-18）
 *
 * 【全站唯一一套下拉樣式】任何前台 <select> 只要標上 data-web-select 就是這個外觀。
 * 兩種形態的差別只有「有沒有搜尋框」：選項超過 10 個才出現搜尋，門檻由
 * public/web/js/web-select.js 的 SEARCH_THRESHOLD 決定，不由 CSS 控制。
 * 規範見 docs/frontendDevelop.md §「前台統一下拉元件（web-select）」——
 * 新頁面 MUST 沿用本元件，不得再為下拉另寫一套樣式。
 *
 * 【為什麼可以用最短選擇器】初始化時傳 theme: 'cms'，select2 掛上的是
 * .select2-container--cms，vendor 自帶的 default／bootstrap-5 主題規則一律選不到本元件；
 * 本檔又載於 select2.min.css 之後（layouts/css.blade.php 第三方區塊 → common.layout），
 * 故毋須與第三方比權重。本檔即本元件視覺的單一事實來源。
 *
 * 【改色與微調】一律只覆寫 --cms-select-* 變數（定義於 common/tokens.css）：
 *   - 主題換色 → themes/<theme>/base.css 的 :root 覆寫（欄位與展開面板一次同步）
 *   - 單頁對齊該頁輸入框的高度／圓角 → 該頁 common/pages/<feature>.css 對頁面容器覆寫
 *     （注意：面板由 select2 append 到 body，頁面層變數只影響收合狀態的欄位）
 * ============================================================================ */

/* --- 收合狀態：外觀對齊該頁的 .form-control --- */
.select2-container--cms .select2-selection--single {
  height: auto;
  min-height: var(--cms-select-height);
  padding: 0;
  font-size: var(--cms-select-font-size);
  color: var(--cms-select-text);
  background-color: var(--cms-select-surface);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.75' d='M2 5.5l6 6 6-6'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 13px center;
  background-size: 13px 10px;
  border: 1px solid var(--cms-select-border);
  border-radius: var(--cms-select-radius);
  box-shadow: none;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.select2-container--cms .select2-selection--single .select2-selection__rendered {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 34px 11px 14px;
  line-height: 1.5;
  color: var(--cms-select-text);
}

.select2-container--cms .select2-selection--single .select2-selection__placeholder {
  color: var(--cms-select-text-muted);
}

/* 箭頭改用上方的背景圖繪製，關掉 select2 原生的三角形容器 */
.select2-container--cms .select2-selection--single .select2-selection__arrow {
  display: none;
}

.select2-container--cms.select2-container--focus .select2-selection--single,
.select2-container--cms.select2-container--open .select2-selection--single {
  border-color: var(--cms-select-accent);
  box-shadow: 0 0 0 3px var(--cms-select-accent-soft);
}

/* 面板是浮起小卡、與欄位分離，故欄位展開時 MUST 保留完整外框與圓角
 * （select2 基礎樣式預設是連體式，會把貼合側的框線與圓角抹掉）。 */
.select2-container--cms.select2-container--open .select2-selection--single {
  border-radius: var(--cms-select-radius);
}

.select2-container--cms.select2-container--disabled .select2-selection--single {
  color: var(--cms-select-text-muted);
  background-color: var(--cms-select-hover);
  cursor: not-allowed;
}

/* 驗證失敗：原生 select 被 select2 隱藏，紅框改掛到它後面的容器上
 * （select2 一律把容器插在原 select 之後，故用相鄰兄弟選擇器） */
select.is-invalid + .select2-container--cms .select2-selection--single {
  border-color: var(--cms-select-danger);
}

select.is-invalid + .select2-container--cms.select2-container--focus .select2-selection--single,
select.is-invalid + .select2-container--cms.select2-container--open .select2-selection--single {
  border-color: var(--cms-select-danger);
  box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
}

/* --- 展開面板：與欄位留 4px 空隙的浮起小卡，全站同一種長相 --- */
.select2-container--cms .select2-dropdown {
  /* 蓋過 Bootstrap 5 的 modal（1055）：select2 基礎樣式只給 1051，面板會被 modal 蓋住。
     元件另於 modal 內把面板掛進 modal（見 web-select.js），此處為雙保險。 */
  z-index: 1056;
  /* dropdownAutoWidth（web-select.js，issue #1090）會把面板寬設為 auto、依最長選項撐開；
     此上限避免病態超長選項把面板撐出畫面。欄位本身比上限寬時 select2 設的 inline min-width
     權重高於 max-width、面板仍等於欄位寬，不受此限；只有「欄位窄且內容更長」時才封頂，
     封頂後由 .cms-select__label 的 ellipsis 優雅截斷。 */
  max-width: min(92vw, 560px);
  overflow: hidden;
  color: var(--cms-select-text);
  background-color: var(--cms-select-surface);
  border: 1px solid var(--cms-select-border);
  border-radius: var(--cms-select-panel-radius);
  box-shadow: var(--cms-select-panel-shadow);
}

.select2-container--cms .select2-dropdown--below {
  margin-top: 4px;
  border-top: 1px solid var(--cms-select-border);
  border-top-left-radius: var(--cms-select-panel-radius);
  border-top-right-radius: var(--cms-select-panel-radius);
}

.select2-container--cms .select2-dropdown--above {
  margin-top: -4px;
  border-bottom: 1px solid var(--cms-select-border);
  border-bottom-left-radius: var(--cms-select-panel-radius);
  border-bottom-right-radius: var(--cms-select-panel-radius);
}

/* 搜尋列固定在面板頂端（捲動容器是下方的 options，故毋須 sticky） */
.select2-container--cms .select2-search--dropdown {
  padding: 10px 10px 9px;
  background-color: var(--cms-select-surface);
  border-bottom: 1px solid var(--cms-select-divider);
}

/* 左側放大鏡以 SVG 背景圖呈現（純 CSS，不動 DOM） */
.select2-container--cms .select2-search--dropdown .select2-search__field {
  min-height: 38px;
  padding: 8px 12px 8px 34px;
  font-size: var(--cms-select-option-font-size);
  line-height: 1.5;
  color: var(--cms-select-text);
  background-color: var(--cms-select-surface);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-width='1.6'%3e%3ccircle cx='7' cy='7' r='4.5'/%3e%3cpath d='M10.6 10.6 14 14'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: left 11px center;
  background-size: 15px 15px;
  border: 1px solid var(--cms-select-border);
  border-radius: var(--cms-select-radius-inner);
  box-shadow: none;
}

.select2-container--cms .select2-search--dropdown .select2-search__field:focus {
  outline: none;
  border-color: var(--cms-select-accent);
  box-shadow: 0 0 0 3px var(--cms-select-accent-soft);
}

/* 清單容器：細捲軸取代瀏覽器預設的粗捲軸。
 * ⚠ max-height 與 overflow-y MUST 成對寫在這裡：本元件用自訂 theme，select2 自帶主題的
 * 「限高＋可捲動」那條規則選不到我們，只留 max-height 會變成清單被切掉又捲不動。
 * overscroll-behavior 讓清單捲到底時不會把整頁一起帶著捲。 */
.select2-container--cms .select2-results__options {
  max-height: 264px;
  padding: 6px;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--cms-select-scrollbar) transparent;
}

.select2-container--cms .select2-results__options::-webkit-scrollbar {
  width: 10px;
}

.select2-container--cms .select2-results__options::-webkit-scrollbar-track {
  background: transparent;
}

.select2-container--cms .select2-results__options::-webkit-scrollbar-thumb {
  background-color: var(--cms-select-scrollbar);
  border: 3px solid var(--cms-select-surface);
  border-radius: 99rem;
}

.select2-container--cms .select2-results__options::-webkit-scrollbar-thumb:hover {
  background-color: var(--cms-select-text-muted);
}

/* 選項 */
.select2-container--cms .select2-results__option {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 9px 34px 9px 12px;
  font-size: var(--cms-select-option-font-size);
  line-height: 1.5;
  color: var(--cms-select-text);
  border-radius: var(--cms-select-radius-inner);
  transition: background-color 0.15s ease;
}

/* 已選：不用整條色底，改為主色文字＋右側打勾（打勾以旋轉邊框畫，不依賴字型也不動 DOM） */
.select2-container--cms .select2-results__option--selected,
.select2-container--cms .select2-results__option[aria-selected="true"] {
  font-weight: 600;
  color: var(--cms-select-accent);
  background-color: transparent;
}

.select2-container--cms .select2-results__option--selected::after,
.select2-container--cms .select2-results__option[aria-selected="true"]::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 14px;
  width: 5px;
  height: 9px;
  margin-top: -6px;
  border: solid var(--cms-select-accent);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

/* 名稱與右側附註（issue #1014）
 *
 * <option> 帶 data-note 時，該列會排成「名稱靠左、附註靠右」。原生 <select> 只能塞純文字，
 * 早期靠補點點「.......」硬撐對齊，中英混排字寬算不準、實際仍參差；改為兩個元素分邊之後
 * 不論名稱多長都真的對齊，也不再需要那串點。名稱過長時省略號截斷，附註一律完整顯示。
 */
.select2-container--cms .cms-select__label {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.select2-container--cms .cms-select__note {
  flex: 0 0 auto;
  margin-left: auto;
  font-size: 13px;
  font-weight: 400;
  color: var(--cms-select-text-muted);
  white-space: nowrap;
}

/* 已選項的附註跟著轉主色，但維持較淡的字重，不與名稱搶視線 */
.select2-container--cms .select2-results__option[aria-selected="true"] .cms-select__note {
  color: var(--cms-select-accent);
}

/* 游標所在列（滑鼠或鍵盤上下鍵）。放在已選之後，同權重時後者勝出，
 * 讓「已選且正被指到」也吃得到底色；只給底色、不改字色，打勾與主色文字才留得住。 */
.select2-container--cms .select2-results__option--highlighted {
  background-color: var(--cms-select-hover);
}

.select2-container--cms .select2-results__option--disabled,
.select2-container--cms .select2-results__option[aria-disabled="true"] {
  color: var(--cms-select-text-muted);
}

/* 「查無符合的項目」「搜尋中…」等提示列：置中淡字，且不畫打勾 */
.select2-container--cms .select2-results__message {
  padding: 16px 12px;
  font-size: 13px;
  font-weight: 400;
  color: var(--cms-select-text-muted);
  text-align: center;
  background-color: transparent;
}

.select2-container--cms .select2-results__message::after {
  content: none;
}

@media (max-width: 767.98px) {
  /* 手機叫出軟鍵盤後可視高度會被吃掉，清單收短以免面板被推出畫面 */
  .select2-container--cms .select2-results__options {
    max-height: 216px;
  }
}

}
/* source: web/css/common/header.css */
@layer cms.platform {

/* ============================================================================
 * common/header.css — 跨主題共用頂部導覽列（Header）
 * ============================================================================
 *
 * 用途：
 *   提供 6 個前台主題共用的 #header 列、品牌 logo、多層主導覽（navbar-nav 含
 *   headerMenu1~6）、下拉選單樣式（dropdown-menu / dropdown-menu1~6 / dropdown-submenu）、
 *   桌面與行動裝置切換（offcanvas-body）以及行動列 mobile-function-menu。
 *
 * 內容索引：
 *   1. #header / #header.active     固定列容器、捲動 active 狀態陰影
 *   2. .navLogo                     品牌 logo 區
 *   3. .navbar-nav                  桌面版主導覽（含 headerMenu1~6 多層下拉）
 *      - .nav-item / .nav-link 基本樣式
 *      - headerMenu1 hover 變底線
 *      - dropdown-menu2~6 動態定位
 *   4. .dropdown-menu-login         會員登入選單
 *   5. .dropdown-menu1              第一層下拉容器
 *   6. .dropdown-menu2~6            第二層以下下拉容器（含背景、邊框、padding）
 *   7. .dropdown-submenu            側展開（右側 100%）子選單
 *   8. @media (max-width: 991.98px)    行動版：navbar-collapse 隱藏、offcanvas
 *      展開、子選單背景灰、mobile-function-menu 顯示
 *   9. .dropdown-menu / .dropdown-width    通用下拉容器 reset 與固定寬度
 *
 * 使用頁面：前台所有頁面（透過 web.layouts.app + sites/default/header.blade.php 載入）
 * 相依 vendor：Bootstrap 5 navbar / dropdown / offcanvas
 *
 * 載入順序（最先到最後，後者覆寫前者；issue #1391 起見 web-theme-css 規格 R.FUNC.27）：
 *   common.layout（含本檔）-> common.pages -> 主題 layout -> Header／Footer 元件資產
 *   -> 主題 pages -> 區塊配色 -> custom.css
 *   本檔是所有 Header 元件共用的基底；各款 Header 的差異寫在 chrome/headers/<key>/，
 *   全站主題 MUST NOT 改寫 Header 的版面（守門：check-web-theme-registry.php 規則 H）。
 *
 * 抽取來源：public/web/css/default.css 三個區段：
 *   - line 2043~2512：主 header / nav / dropdown / mobile 區段
 *   - line 5825~5836：.dropdown-menu reset / .dropdown-width
 *   - line 7090~7110：.dropdown-submenu / .headerMenu2~3 hover 展開
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.2）
 * ============================================================================
 */


/* ============================================================================
 * 區段 0：Header 對頁面公開的佔位 token（issue #1391，R.FUNC.27）
 * ----------------------------------------------------------------------------
 * --cms-chrome-header-offset：Header 在視窗頂端遮住內容的高度。內容區的 sticky 元素
 *   以它計算上緣讓位，而不是假設「頁首一定是固定頂欄」或「一定是側欄」——Header 與
 *   全站主題可自由組合後，內容區不知道自己搭配的是哪一款 Header。
 * 這裡是標準頂欄的值（實測 ≥768 約 95px、<768 約 97px，取整 96px）；形狀不同的 Header
 *   於自己的元件資產內覆寫（例：左側直欄頁首在 ≥1200 宣告 0）。只由 Header 宣告，
 *   全站主題 MUST NOT 覆寫（主題要調的是自己的間距，不是 Header 的佔位）。
 * 選擇器寫 :root, :host 的理由同 common/tokens.css（後台預覽畫布在 Shadow DOM 內）。
 * ============================================================================ */
:root,
:host {
  --cms-chrome-header-offset: 96px;
}

/* --cms-chrome-sticky-offset-mode：Header 宣告是否由 main.js 量測實際下緣，寫入
 *   --cms-chrome-sticky-offset 供購物車／訂單摘要的 sticky 讓位（issue #1389）。
 *   measure = 量測 #header 下緣；zero = 不佔視窗上緣（如左側直欄）回報 0；
 *   未宣告 = 不量測，沿用上方 --cms-chrome-header-offset。所有註冊 Header 都載入本檔，
 *   且共用基底為固定頂欄，因此預設 measure；改為正常文流或側欄的元件必須在自己的
 *   資產明確覆寫 zero。JS 不依 Header key 判斷，新增款式也不會漏掉 sticky 讓位。 */
#header {
  --cms-chrome-sticky-offset-mode: measure;
}

/* ============================================================================
 * 區段 1：主 header / nav / dropdown / mobile 區段
 *   抽取自 default.css line 2043~2512
 *   對應 blade：resources/views/sites/default/header.blade.php
 * ============================================================================
 */

#header {
  /* #1399 F：RWD 模式由 CSS 單一決定，JS 只讀此 computed token。 */
  --cms-nav-mode: mobile;
  background: rgb(255, 255, 255);
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 3000;
  border-bottom: 1px solid #33333312;
}

#header.active {
  background: rgb(255, 255, 255);
  box-shadow: rgba(17, 12, 46, 0.15) 0px 48px 100px 0px;
}

.navLogo {
  display: block;
  height: 60px;
  margin-right: 30px;
}

@media screen and (max-width: 767.98px) {
  .navLogo {
    height: 62px;
    margin-right: 12px;
  }
}

.navbar-nav {
  align-items: center;
}

.navbar-nav .nav-item {
  margin-right: 20px;
  font-size: 16px;
}

.navbar-nav .nav-item.headerMenu1 {
  border: none;
  min-width: auto;
  width: fit-content;
  text-align: center;
  position: relative;
}

#header.active .navbar-nav .nav-item.headerMenu1 {
  border: none;
}

.navbar-nav .nav-item .nav-link {
  color: #2c2c2c;
}

.navbar-nav .nav-item .nav-link p {
  font-size: 16px;
  color: #2c2c2c;
}

#header.active .navbar-nav .nav-item .nav-link {
  color: #2c2c2c;
}

.navbar-nav .nav-item:hover .nav-link {
  color: #2c2c2c;
}

/* 使用 inline-block 確保寬度正確計算 */
.navbar-nav .nav-item.headerMenu1>.nav-link {
  position: relative;
  display: inline-block;
}

/* 使用 scaleX 替代 width 動畫，效能更好且不會有寬度計算問題 */
.navbar-nav .nav-item.headerMenu1>.nav-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background: #2c2c2c;
  transition: transform 0.3s ease;
  transform: scaleX(0);
  transform-origin: center;
}

.navbar-nav .nav-item.headerMenu1:hover>.nav-link::after {
  transform: scaleX(1);
}

/* 確保子選單不繼承底線 */
.dropdown-menu .nav-link::after {
  display: none;
}

.navbar-nav .nav-item.headerMenu1:hover .nav-link {
  color: #2c2c2c;
  background: transparent;
}

.navbar-nav .nav-item.headerMenu1:hover .headerMenu2 .nav-link {
  background: #ffffff;
}

#header.active .navbar-nav .nav-item.headerMenu1:hover .nav-link {
  color: #2c2c2c;
  background: transparent;
}

#header.active .navbar-nav .nav-item.headerMenu1 .headerMenu2 .nav-link {
  background: #ffffff;
  color: #333333;
}

#header.active .navbar-nav .nav-item.headerMenu1 .headerMenu2:hover .nav-link {
  color: #2c2c2c;
}

.navbar-nav .nav-item:hover .nav-link p {
  color: #2c2c2c;
}

/* issue #723：.collapse.navbar-collapse 中介層已自 blade 移除（名存實亡——toggler 未綁
   BS collapse、行動選單走自訂 #mobile-sidebar），原 flex-grow:0 職責終結。
   主選單群組 margin-left:auto 吸收剩餘空間：logo 靠左、primary-nav＋actions 靠右，
   與移除前 space-between 兩端對齊的視覺完全等價；主題可覆寫此值自由重排四群組 */
.header-primary-nav {
  margin-left: auto;
}

/* issue #1399：功能入口拆成獨立 ul 後，不應沿用主選單每項 20px 的外距。
   標準頁首改由群組 gap 控制間距，避免會員、購物車、聯絡、語系圖示被過度拉開；
   其他 Header 仍由各自的元件資產決定功能列排列。 */
body[data-web-header="shinvo-standard"] #header .header-actions {
  gap: 8px;
  margin: 0;
}

body[data-web-header="shinvo-standard"] #header .header-actions > .nav-item {
  margin-right: 0;
}

/* #1399：會員與語言使用同一份功能 partial，但外觀跟隨所選公版 Header。
   這裡只定義共用尺寸、定位與互動；各 Header 資產再覆寫設計 token。 */
@media (min-width: 1200px) {
  body[data-web-header^="shinvo-"] #header .header-actions > .nav-item.dropdown {
    position: relative;
  }

  body[data-web-header^="shinvo-"] #header .header-actions > .nav-item.dropdown > .dropdown-menu {
    --cms-utility-menu-surface: var(--cms-mega-surface, #ffffff);
    --cms-utility-menu-ink: var(--cms-mega-ink, #222222);
    --cms-utility-menu-line: var(--cms-mega-line, #dedede);
    --cms-utility-menu-hover: var(--cms-mega-hover, #f3f4f4);
    --cms-utility-menu-hover-ink: var(--cms-mega-ink, #222222);
    --cms-utility-menu-radius: 10px;
    --cms-utility-menu-item-radius: 6px;
    --cms-utility-menu-shadow: 0 12px 28px rgb(0 0 0 / 12%);
    --cms-utility-menu-padding: 6px;
    --cms-utility-menu-item-padding: 9px 12px;
    --cms-utility-menu-min-width: 156px;
    top: 100%;
    right: 0;
    left: auto;
    width: max-content;
    min-width: var(--cms-utility-menu-min-width);
    max-width: min(280px, calc(100vw - 24px));
    margin-top: 0;
    padding: var(--cms-utility-menu-padding);
    border: 1px solid var(--cms-utility-menu-line);
    border-radius: var(--cms-utility-menu-radius);
    background: var(--cms-utility-menu-surface);
    box-shadow: var(--cms-utility-menu-shadow);
  }

  body[data-web-header^="shinvo-"] #header .header-actions > .nav-item.dropdown > .dropdown-menu > li + li {
    margin-top: 2px;
  }

  body[data-web-header^="shinvo-"] #header .header-actions > .nav-item.dropdown > .dropdown-menu .dropdown-item {
    display: block;
    min-height: 38px;
    padding: var(--cms-utility-menu-item-padding);
    border-radius: var(--cms-utility-menu-item-radius);
    background: transparent;
    color: var(--cms-utility-menu-ink);
    font-size: 14px;
    line-height: 1.4;
    overflow-wrap: anywhere;
    white-space: normal;
  }

  body[data-web-header^="shinvo-"] #header .header-actions > .nav-item.dropdown > .dropdown-menu .dropdown-item:is(:hover, :focus-visible) {
    background: var(--cms-utility-menu-hover);
    color: var(--cms-utility-menu-hover-ink);
  }

  /* 標準版維持 CMS12 既有中性色，不帶入品牌色。 */
  body[data-web-header="shinvo-standard"] #header .header-actions > .nav-item.dropdown > .dropdown-menu {
    --cms-utility-menu-surface: #ffffff;
    --cms-utility-menu-ink: #222222;
    --cms-utility-menu-line: #e5e5e5;
    --cms-utility-menu-hover: #f3f3f3;
    --cms-utility-menu-hover-ink: #222222;
    --cms-utility-menu-radius: 8px;
    --cms-utility-menu-item-radius: 4px;
    --cms-utility-menu-shadow: 0 10px 24px rgb(0 0 0 / 12%);
  }
}

/* 桌機門檻以下隱藏兩個導覽群組（原由 BS navbar-expand-xl 的 collapse 機制承擔；
   顯式化後同步修正歷史上 992~1199 規則錯位問題——該區間本就由 BS 隱藏） */
@media (max-width: 1199.98px) {
  .header-primary-nav,
  .header-actions {
    display: none;
  }
}

@media (min-width: 1200px) {
  #header {
    --cms-nav-mode: desktop;
  }
}

.dropdown:hover .dropdown-menu-login {
  display: block;
  margin-top: 0;
  padding: 8px 0;
  font-size: 15px;
  min-width: 120px;
  background: #ffffff;
  border: 1px solid #e5e5e5;
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
}

/* 登入選單項目樣式 */
.dropdown-menu-login .dropdown-item {
  padding: 10px 16px;
  color: #333333;
  transition: all 0.15s ease;
  font-size: 14px;
}

.dropdown-menu-login .dropdown-item:hover {
  background: #4a4a4a;
  color: #ffffff;
}

.dropdown:hover .dropdown-menu1 {
  display: block;
  margin-top: 0;
  padding-top: 8px;
  font-size: 15px;
  min-width: 120px;
}

.headerMenu1.dropdown:hover .dropdown-menu1 {
  display: block;
  margin-top: 0;
  padding-top: 8px;
  font-size: 15px;
  min-width: 120px;

}

.dropdown-menu.dropdown-menu2,
.dropdown-menu.dropdown-menu3,
.dropdown-menu.dropdown-menu4,
.dropdown-menu.dropdown-menu5,
.dropdown-menu.dropdown-menu6 {
  display: none;
  padding-top: 0;
}

.headerMenu2.dropdown.show .dropdown-menu2,
.headerMenu3.dropdown.show .dropdown-menu3,
.headerMenu4.dropdown.show .dropdown-menu4,
.headerMenu5.dropdown.show .dropdown-menu5,
.headerMenu6.dropdown.show .dropdown-menu6 {
  display: block;
  padding-top: 0;
  width: fit-content;
  min-width: 140px;
  background: #ffffff;
  border: 1px solid #e8e8e8;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  padding: 8px 0;
}

/* 第二、第三層選單美化 - 加強優先級 */
#header .navbar-nav .dropdown-menu,
#header .navbar-nav .dropdown-menu.dropdown-menu1,
#header .navbar-nav .dropdown-menu.dropdown-menu2,
#header .navbar-nav .dropdown-menu.dropdown-menu3 {
  background: #ffffff;
  border: 1px solid #e5e5e5;
  border-radius: 8px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12);
  padding: 8px 0;
  min-width: 140px;
  margin-top: 0;
}

/* 下拉選單項目樣式 - 加強優先級 */
#header .navbar-nav .dropdown-menu li.nav-item {
  padding: 0;
  margin: 0;
}

#header .navbar-nav .dropdown-menu .nav-link,
#header .navbar-nav .dropdown-menu .dropdown-item {
  padding: 10px 35px 10px 16px;
  color: #333333;
  transition: all 0.15s ease;
  display: block;
  font-size: 14px;
  position: relative;
  background: transparent;
  border-radius: 0;
}

/* 有子選單的項目顯示右箭頭 - 只針對有 dropdown-toggle 的項目 */
#header .navbar-nav .dropdown-menu .nav-link.dropdown-toggle::after {
  content: '›';
  font-family: inherit;
  font-weight: normal;
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 18px;
  border: none;
  color: #999999;
  margin: 0;
  width: auto;
  height: auto;
  display: inline-block;
  line-height: 1;
  pointer-events: none;
}

/* 沒有子選單的項目不顯示箭頭 */
#header .navbar-nav .dropdown-menu .nav-link:not(.dropdown-toggle)::after {
  display: none;
}

/* hover 效果 - 深灰色背景 + 白字 */
#header .navbar-nav .dropdown-menu .nav-link:hover,
#header .navbar-nav .dropdown-menu .nav-link:focus,
#header .navbar-nav .dropdown-menu .dropdown-item:hover,
#header .navbar-nav .dropdown-menu .dropdown-item:focus {
  background: #4a4a4a;
  color: #ffffff;
}

#header .navbar-nav .dropdown-menu .nav-link.dropdown-toggle:hover::after {
  color: #ffffff;
}

/* 語言選單和其他標準下拉選單 Hover 顯示 (桌面版) */
@media (min-width: 1200px) {
  #header .navbar-nav .nav-item.dropdown:hover>.dropdown-menu {
    display: block;
    margin-top: 0;
  }
}

.headerMenu2.dropdown.show .dropdown-menu2.show,
.headerMenu3.dropdown.show .dropdown-menu3.show,
.headerMenu4.dropdown.show .dropdown-menu4.show,
.headerMenu5.dropdown.show .dropdown-menu5.show,
.headerMenu6.dropdown.show .dropdown-menu6.show {
  display: block;
  padding-top: 0;
}

@media screen and (max-width: 991.98px) {

  .dropdown-menu.dropdown-menu2,
  .dropdown-menu.dropdown-menu3,
  .dropdown-menu.dropdown-menu4,
  .dropdown-menu.dropdown-menu5,
  .dropdown-menu.dropdown-menu6 {
    display: block;
    padding-top: 0;
  }
}

.dropdown:hover .dropdown-menu .nav-link.dropdown-toggle {
  position: relative;
}

.dropdown .dropdown-submenu {
  padding: 0;
  margin: 0;
}

.dropdown .dropdown-submenu .nav-link {
  padding: 10px 16px;
  font-size: 15px;
  color: #333333;
  transition: all 0.2s ease;
}

.dropdown .dropdown-submenu:hover>.nav-link {
  background: #f5f5f5;
  color: #2c2c2c;
}

.navbar-nav .nav-item:hover .dropdown-submenu .nav-link {
  color: #333333;
}

.navbar-nav .nav-item:hover .dropdown-submenu:hover .nav-link {
  color: #2c2c2c;
}

.dropdown .dropdown-submenu .nav-link {
  padding: 0;
  font-size: 15px;
  color: #333333;
}

.dropdown:hover>.dropdown.dropdown-submenu>.dropdown-menu {
  display: block;
  left: 100%;
  top: 0;
}

@media screen and (max-width: 991.98px) {
  .dropdown-menu.dropdown-menu2 {
    opacity: 1;
    padding-top: 0;
  }

  .navbar-nav .nav-item .dropdown-submenu .nav-link {
    color: #2c2c2c;
    border-color: #2c2c2c;
  }

  .offcanvas-body .headerMenu2.nav-item.dropdown-submenu .dropdown-submenu {
    background: #f7f7f7;
  }

  .offcanvas-body .headerMenu2.nav-item.dropdown-submenu .dropdown-submenu.dropdown-menu {
    background: #f7f7f7;
  }
}

.dropdown .dropdown-menu .dropdown-item {
  font-size: 15px;
  padding: 10px 15px;
  min-width: 120px;
}

.dropdown .dropdown-menu .dropdown-item:active {
  background: #ec3b05;
}

/* 已移至上方統一設定 */

@media screen and (max-width: 991.98px) {
  /* 箭頭樣式已在上方統一設定 */
}

@media screen and (max-width: 991.98px) {
  .navbar {
    padding: 12px 16px;
  }

  /* issue #723：原 .navbar-collapse 顯隱規則已隨中介層移除;
     群組隱藏改由上方 max-width:1199.98px 的顯式規則承擔 */

  .navbar-nav {
    width: fit-content;
    height: 100%;
    background: rgb(255, 255, 255);
    margin: 0;
  }

  .offcanvas-body {
    overflow-y: scroll;
    height: 80vh;
    flex-grow: 0;
  }

  .offcanvas-body .dropdown .dropdown-menu {
    display: block;
    margin-top: 0;
    padding-top: 8px;
  }

  .offcanvas-body .navbar-nav .nav-item {
    margin-right: 0;
    margin-bottom: 10px;
    padding: 5px 16px;
    background: #ffffff75;
    width: 100%;
    min-width: 200px;
    border-bottom: 1px solid #b5b5b5;

  }

  .offcanvas-body .headerMenu2.nav-item.dropdown-submenu {
    border-bottom: 1px solid #2c2c2c;
  }

  .offcanvas-body .headerMenu2.nav-item.dropdown-submenu.dropdown .nav-link {
    color: #2c2c2c;
  }

  .offcanvas-body .navbar-nav .nav-item .dropdown-menu {
    margin-right: 0;
    margin-bottom: 6px;
    background: #f7f7f7;
    width: 100%;
  }

  .offcanvas-body .navbar-nav .nav-item .dropdown-menu .dropdown-item {
    margin-right: 0;
    margin-bottom: 6px;
    border-bottom: 1px solid #2c2c2c;
    width: 100%;
    font-size: 14px;
    color: #2c2c2c;
  }

  .offcanvas {
    width: fit-content;
    height: 100vh;
  }

  .offcanvas-header {
    padding: 30px 16px;
    display: flex;
    justify-content: end;
  }
}


/* ============================================================================
 * 區段 2：通用 .dropdown-menu reset 與寬度 utility
 *   抽取自 default.css line 5825~5836
 * ============================================================================
 */

.dropdown-menu {
  border: 0 none;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
}


/* ============================================================================
 * 區段 3：.dropdown-submenu 側展開 + .headerMenu2~3 hover 顯示
 *   抽取自 default.css line 7090~7110
 * ============================================================================
 */

.dropdown-submenu {
  position: relative;
}

.dropdown-submenu>.dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -1px;
}

.dropdown-submenu:hover>.dropdown-menu {
  display: block;
}

.headerMenu2:hover>.dropdown-menu2,
.headerMenu3:hover>.dropdown-menu3 {
  display: block;
}




/* 註：.desktop / .mobile / .desktopImg / .mobileImg（default.css line 2514~2546）
 * 為 RWD 通用 visibility utility，非 header 專屬，留在 default.css；
 * 未來若整合進 base 可在 issue518 後續另案處理。 */

/* === Phase B Batch 2: .logo + @media（抽自 default.css 4337-4393）=== */

.logo {
  padding: 12px 0;
  transition: all 0.3s ease 0s;
}

@media (max-width: 767.98px) {
  .logo {
    padding: 2px 0;
    text-align: center;
  }
}

.logo img {
  transition: all 0.3s ease 0s;
}


/* ============================================================================
 * 補充區段：#header RWD 跨主題共用層
 * ============================================================================
 *
 * 原因：
 *   舊 default.css 三個 @media 區段（line 9072-9188 / 9582-9625）內含
 *   #header #navBar / #header .logo / #header .navLogo / #header .navbar-toggler
 *   / #header .lightMenu 跨 viewport RWD 規則，影響所有頁面 header 視覺。
 *
 *   原拆檔時誤抽到 common/pages/shoppingCart.css，導致僅 /shoppingCarts 路由
 *   生效，其他路由（products / posts / orders / login / register / profile 等）
 *   header 在 992-1199 / 768-991 / ≤480 三個 viewport 範圍下完全沒套用，
 *   logo 變小、navbar-toggler 位置偏移、container padding 錯誤。
 *
 *   特別：≤480px 的 #header #navBar>.header-navbar-inner padding 14px
 *   是 iPhone 14 Pro Max (430px) 等典型手機 viewport 的 header 寬度設定，
 *   若漏抽這條會 fallback 到 max-width:767 的 padding: 0，header
 *   橫向沒有 padding 造成 logo 緊貼左邊。
 *
 * 修法：
 *   把 #header * 規則抽到本檔末段（layout 共用層，所有頁面皆載入）。
 *   #page-content / #footer 規則暫留在 shoppingCart.css，未來如發現視覺
 *   差異再循同樣模式遷移到對應 common/widget/ / common/footer.css。
 *
 * 抽取自：default.css line 9072-9108 + 9136-9172 + 9582-9592
 * ============================================================================
 */

/* issue #1391：頁首內層左右留白由 Header 自己決定，不再隨全站主題的 .plr-185 工具類漂移。
 *   原本只有下方三個斷點（992–1199／768–991／≤479）釘在 Header 上，其餘斷點吃的是 .plr-185：
 *   某個全站主題一旦重新定義 .plr-185（例：Shop Linerp 的 clamp），標準頁首就跟著變寬變窄。
 *   這裡把其餘斷點也釘住，值與 common 現況完全等價（base.css 的 --cms-space-185、footer.css
 *   1200–1399 的 30px、base.css ≤767 的 0），原組合畫面不變。
 *   權重同下方三組，靠載入序讓下方的斷點規則勝出；各款 Header 元件要不同留白時，
 *   在自己的資產以同一選擇器、限定斷點覆寫（例：chrome/headers/internal-shop-linerp/header.css）。 */
#header #navBar>.header-navbar-inner {
  padding-left: var(--cms-space-185);
  padding-right: var(--cms-space-185);
}

@media (min-width: 1200px) and (max-width: 1399.98px) {
  #header #navBar>.header-navbar-inner {
    padding-left: 30px;
    padding-right: 30px;
  }
}

@media (max-width: 767.98px) {
  #header #navBar>.header-navbar-inner {
    padding-left: 0;
    padding-right: 0;
  }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
  #header #navBar>.header-navbar-inner {
    min-height: 82px;
    padding-left: 36px;
    padding-right: 36px;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  #header .logo {
    padding: 0;
    display: flex;
    align-items: center;
  }

  #header .navLogo {
    height: 56px;
    margin-right: 0;
  }

  #header .navbar-toggler {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
  }

  #header .navbar-toggler:focus {
    box-shadow: none;
  }

  #header .lightMenu {
    display: block;
    width: 34px;
    height: 34px;
  }
}

@media (min-width: 768px) and (max-width: 991.98px) {
  #header #navBar>.header-navbar-inner {
    min-height: 78px;
    padding-left: 24px;
    padding-right: 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  #header .logo {
    padding: 0;
    display: flex;
    align-items: center;
  }

  #header .navLogo {
    height: 54px;
    margin-right: 0;
  }

  #header .navbar-toggler {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
  }

  #header .navbar-toggler:focus {
    box-shadow: none;
  }

  #header .lightMenu {
    display: block;
    width: 32px;
    height: 32px;
  }
}

@media (max-width: 479.98px) {
  #header #navBar>.header-navbar-inner {
    min-height: 72px;
    padding-left: 14px;
    padding-right: 14px;
  }

  #header .navLogo {
    height: 52px;
    margin-right: 0;
  }
}

/* ============================================================================
 * 側欄索引式 Mega Menu（桌機 ≥1200px）
 * 第一層分類數量多時改用此版面：頂部搜尋框 + 左欄第一層索引（可捲動）
 * + 右欄第二層子分類面板。沿用 dropdown-menu1 的 hover 展開機制。
 * 自訂 class 一律 mega-menu- 前綴；顏色為 common 中性托底，主題僅於需要時覆寫。
 * 對應 partial：resources/views/components/web/mega-menu.blade.php
 * ==========================================================================*/
@media (min-width: 1200px) {
  /* 面板容器：寬版雙欄、靠右對齊（商品一覽位於導覽列右側，避免溢出視窗右緣）
     需搭配 partial 上 toggle 的 data-bs-display="static"，讓 CSS 定位生效而非 Popper */
  /* .mega-menu-item 設 position:relative 作為面板的定位基準（offsetParent），
     供 mega-menu.js 量測觸發位置後動態微調 left，使面板永遠留在視窗內 */
  .mega-menu-item {
    position: relative;
  }

  #header[data-adaptive-menu="true"] {
    --cms-mega-surface: #ffffff;
    --cms-mega-soft: #f7f7f8;
    --cms-mega-hover: #ececef;
    --cms-mega-ink: #1a1a1a;
    --cms-mega-muted: #666666;
    --cms-mega-line: #ececec;
    --cms-mega-focus: #333333;
    --cms-mega-shadow: 0 14px 38px rgba(0, 0, 0, 0.14);
  }

  #header .navbar-nav .dropdown-menu1.mega-menu-panel {
    /* 固定寬度：避免切換到長名稱分類時面板忽大忽小 */
    width: 760px;
    max-width: 92vw;
    padding: 0;
    /* 預設靠觸發點左緣展開（適用導覽列偏左/置中的主題）；
       若會溢出視窗右緣，由 mega-menu.js 量測後改以負 left 往左位移 */
    left: 0;
    right: auto;
    background: #ffffff;
    border: 1px solid #ececec;
    border-radius: 12px;
    box-shadow: 0 14px 38px rgba(0, 0, 0, 0.14);
    overflow: hidden;
  }

  /* 滑鼠短暫離開時由 JS 保留面板，避免跨欄操作時選單瞬間收合。 */
  #header[data-adaptive-menu="true"] .navbar-nav .mega-menu-item:not(.mega-menu-force-closed):hover > .dropdown-menu1.mega-menu-panel,
  #header[data-adaptive-menu="true"] .navbar-nav .mega-menu-item.mega-menu-hover-open > .dropdown-menu1.mega-menu-panel,
  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel.show {
    display: flex;
    max-height: var(--mega-menu-max-height, min(68vh, calc(100vh - 96px)));
    flex-direction: column;
  }

  /* Escape／Bootstrap close 必須能壓過既有桌機 :hover 展開規則；滑鼠離開後由 JS 解除。 */
  #header[data-adaptive-menu="true"] .navbar-nav .mega-menu-item.mega-menu-force-closed:hover > .dropdown-menu1.mega-menu-panel:not(.show) {
    display: none;
  }

  /* 搜尋框（面板頂部） */
  .mega-menu-search {
    flex: 0 0 auto;
    padding: 14px 16px;
    border-bottom: 1px solid #f0f0f0;
  }

  .mega-menu-search-input {
    width: 100%;
    padding: 9px 14px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.4;
    outline: none;
    background: #fafafa;
    color: #333333;
    transition: border-color 0.15s, background 0.15s;
  }

  .mega-menu-search-input:focus {
    border-color: #b5b5b5;
    background: #ffffff;
  }

  /* 雙欄主體 */
  .mega-menu-body {
    display: flex;
    flex: 1 1 auto;
    align-items: stretch;
    min-height: 0;
    position: relative;
  }

  /* 左欄：第一層索引（超出高度時自身捲動） */
  .mega-menu-rail {
    list-style: none;
    margin: 0;
    padding: 8px;
    flex: 0 0 232px;
    max-width: 232px;
    max-height: 64vh;
    overflow-y: auto;
    background: #f7f7f8;
    border-right: 1px solid #efefef;
    /* Firefox 細捲軸 */
    scrollbar-width: thin;
    scrollbar-color: #cdcdcd transparent;
  }

  /* 左欄／右欄 WebKit 細圓角捲軸（取代系統粗捲軸） */
  .mega-menu-rail::-webkit-scrollbar,
  .mega-menu-content::-webkit-scrollbar {
    width: 6px;
  }

  .mega-menu-rail::-webkit-scrollbar-track,
  .mega-menu-content::-webkit-scrollbar-track {
    background: transparent;
    margin: 4px 0;
  }

  .mega-menu-rail::-webkit-scrollbar-thumb,
  .mega-menu-content::-webkit-scrollbar-thumb {
    background-color: #d2d2d2;
    border-radius: 999px;
  }

  .mega-menu-rail:hover::-webkit-scrollbar-thumb,
  .mega-menu-content:hover::-webkit-scrollbar-thumb {
    background-color: #b9b9b9;
  }

  .mega-menu-rail-item {
    margin: 0;
  }

  .mega-menu-rail-link {
    display: flex;
    width: 100%;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border: 0;
    background: transparent;
    color: #444444;
    font: inherit;
    text-align: left;
    text-decoration: none;
    white-space: nowrap;
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.3;
    cursor: pointer;
    transition: background 0.12s, color 0.12s;
  }

  .mega-menu-rail-text {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .mega-menu-rail-arrow {
    flex: 0 0 auto;
    margin-left: auto;
    font-size: 11px;
    opacity: 0.45;
    transition: color 0.12s, opacity 0.12s;
  }

  .mega-menu-rail-item:hover > .mega-menu-rail-link {
    background: #ececef;
    color: #222222;
  }

  .mega-menu-rail-item.active > .mega-menu-rail-link {
    background: #ffffff;
    color: #111111;
    font-weight: 600;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
  }

  .mega-menu-rail-item.active > .mega-menu-rail-link .mega-menu-rail-arrow {
    opacity: 0.8;
  }

  /* JS 過濾時隱藏不相符項目 */
  .mega-menu-rail-item.mega-menu-hidden {
    display: none;
  }

  /* 右欄：第二層子分類面板 */
  .mega-menu-content {
    flex: 1 1 auto;
    min-width: 320px;
    max-height: 64vh;
    overflow-y: auto;
    padding: 18px 20px;
    /* Firefox 細捲軸 */
    scrollbar-width: thin;
    scrollbar-color: #cdcdcd transparent;
  }

  .mega-menu-content-panel {
    display: none;
    flex-direction: column;
    min-height: 100%;
  }

  .mega-menu-content-panel.active {
    display: flex;
  }

  /* 右欄標題：當前分類名稱（連結至分類頁） */
  .mega-menu-panel-title {
    display: inline-block;
    align-self: flex-start;
    max-width: 100%;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 2px solid #f0f0f0;
    color: #1a1a1a;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.4;
    text-decoration: none;
    overflow-wrap: anywhere;
  }

  .mega-menu-panel-title:hover {
    color: #000000;
  }

  /* 群組區：第二層為群組標題、第三層為其下連結，依 DOM 順序逐列掃讀。 */
  .mega-menu-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px 28px;
  }

  .mega-menu-group {
    min-width: 0;
    margin: 0;
  }

  /* 第二層：群組標題 */
  .mega-menu-group-title {
    display: block;
    margin-bottom: 6px;
    color: #1a1a1a;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .mega-menu-group-title:hover {
    color: #000000;
  }

  /* 第三層：群組內連結 */
  .mega-menu-grouplist {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .mega-menu-grouplist-item {
    margin: 0;
  }

  .mega-menu-grouplist-link {
    display: block;
    padding: 5px 0;
    color: #666666;
    text-decoration: none;
    font-size: 13px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.12s;
  }

  .mega-menu-grouplist-link:hover {
    color: #111111;
  }

  /* 「查看全部」膠囊連結；有子分類時推至面板底部 */
  .mega-menu-viewall {
    align-self: flex-start;
    max-width: 100%;
    margin-top: 16px;
    padding: 7px 14px;
    color: #555555;
    text-decoration: none;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border: 1px solid #e0e0e0;
    border-radius: 999px;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
  }

  .mega-menu-viewall:hover {
    background: #f3f3f3;
    border-color: #cccccc;
    color: #111111;
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail-link:focus-visible,
  #header[data-adaptive-menu="true"] .mega-menu-panel-title:focus-visible,
  #header[data-adaptive-menu="true"] .mega-menu-group-title:focus-visible,
  #header[data-adaptive-menu="true"] .mega-menu-grouplist-link:focus-visible,
  #header[data-adaptive-menu="true"] .mega-menu-viewall:focus-visible,
  #header[data-adaptive-menu="true"] .mega-menu-flat__title:focus-visible,
  #header[data-adaptive-menu="true"] .mega-menu-flat__link:focus-visible {
    outline: 2px solid var(--cms-mega-focus, currentColor);
    outline-offset: 2px;
  }

  .mega-menu-groups + .mega-menu-viewall {
    margin-top: 12px;
  }

  /* 搜尋無相符的空狀態：覆蓋右欄內容區置中 */
  .mega-menu-empty {
    display: none;
  }

  .mega-menu-empty:not([hidden]) {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    inset: 0 0 0 232px;
    padding: 24px;
    color: #999999;
    font-size: 14px;
    text-align: center;
  }

  /* ------------------------------------------------------------------------
   * #1399 公開 Header：雙層自適應版
   * 只有註冊 adaptive_menu 能力的 Header 會輸出此結構；分類數量只改變密度，
   * 不再因項目多就套用需要第三層資料的左右索引版。
   * ---------------------------------------------------------------------- */
  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--two-level {
    max-width: min(92vw, 920px);
  }

  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--two-level.mega-menu-panel--compact {
    width: max-content;
    min-width: 220px;
    max-width: min(92vw, 320px);
  }

  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--two-level.mega-menu-panel--regular {
    width: max-content;
    min-width: 400px;
    max-width: min(92vw, 560px);
  }

  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--two-level.mega-menu-panel--expanded {
    width: max-content;
    min-width: 600px;
    max-width: min(92vw, 760px);
  }

  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--two-level.mega-menu-panel--dense {
    width: max-content;
    min-width: 800px;
    max-width: min(92vw, 920px);
  }

  #header[data-adaptive-menu="true"] .mega-menu-body--flat {
    display: block;
    flex: 1 1 auto;
    max-height: none;
    min-height: 0;
    overflow-y: auto;
    padding: 12px;
    scrollbar-width: thin;
    scrollbar-color: #cdcdcd transparent;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-rail,
  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-content {
    max-height: none;
    min-height: 0;
  }

  /* 三層版與雙層版共用相同的內容節奏，只增加左側索引結構。 */
  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-content {
    padding: 12px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-groups {
    gap: 10px 14px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-group,
  #header[data-adaptive-menu="true"] .mega-menu-flat__group {
    padding: 10px 12px;
    border-bottom: 1px solid var(--cms-mega-line);
    border-radius: 0;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-group:is(:hover, :focus-within) {
    background: var(--cms-mega-hover);
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-panel-title {
    width: 100%;
    margin-bottom: 10px;
    padding: 10px 12px 12px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail-item.active > .mega-menu-rail-link .mega-menu-rail-arrow {
    color: #111111;
    opacity: 1;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__groups {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--regular .mega-menu-flat__groups {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 12px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--expanded .mega-menu-flat__groups {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px 14px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--dense .mega-menu-flat__groups {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px 14px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__group {
    min-width: 0;
    margin: 0;
    padding: 10px 12px;
    border-radius: 8px;
    transition: background 0.12s;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-group {
    border-radius: 8px;
    transition: background 0.12s;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__group:hover,
  #header[data-adaptive-menu="true"] .mega-menu-flat__group:focus-within {
    background: #f7f7f8;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__group[hidden] {
    display: none;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__title {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    color: #1a1a1a;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.45;
    text-decoration: none;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__title span {
    display: -webkit-box;
    min-width: 0;
    overflow: hidden;
    overflow-wrap: anywhere;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__links {
    margin: 7px 0 0;
    padding: 0 0 0 18px;
    list-style: none;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__link {
    display: block;
    padding: 4px 0;
    color: #666666;
    font-size: 13px;
    line-height: 1.45;
    text-decoration: none;
    overflow-wrap: anywhere;
  }

  #header[data-adaptive-menu="true"] .mega-menu-flat__title:hover,
  #header[data-adaptive-menu="true"] .mega-menu-flat__link:hover {
    color: #111111;
    text-decoration: underline;
    text-underline-offset: 3px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-body--flat .mega-menu-empty:not([hidden]) {
    position: static;
    min-height: 120px;
  }

  /* 自適應三層版允許長分類名稱換行兩行，避免名稱過早被省略。 */
  #header[data-adaptive-menu="true"] .mega-menu-rail-link {
    align-items: flex-start;
    white-space: normal;
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail-text,
  #header[data-adaptive-menu="true"] .mega-menu-group-title,
  #header[data-adaptive-menu="true"] .mega-menu-grouplist-link {
    display: -webkit-box;
    overflow: hidden;
    white-space: normal;
    overflow-wrap: anywhere;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  /* Common 提供最低可用視覺；各 Header 可覆寫設計家族外觀，結構、密度與互動契約維持同一份。 */
  #header[data-adaptive-menu="true"] .mega-menu-panel {
    background: var(--cms-mega-surface);
    border-color: var(--cms-mega-line);
    box-shadow: var(--cms-mega-shadow);
    color: var(--cms-mega-ink);
  }

  #header[data-adaptive-menu="true"] .mega-menu-search {
    border-color: var(--cms-mega-line);
  }

  #header[data-adaptive-menu="true"] .mega-menu-search-input {
    border-color: var(--cms-mega-line);
    background: var(--cms-mega-soft);
    color: var(--cms-mega-ink);
  }

  #header[data-adaptive-menu="true"] .mega-menu-search-input:focus {
    border-color: var(--cms-mega-focus);
    background: var(--cms-mega-surface);
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail {
    border-color: var(--cms-mega-line);
    background: var(--cms-mega-soft);
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail-link,
  #header[data-adaptive-menu="true"] .mega-menu-grouplist-link,
  #header[data-adaptive-menu="true"] .mega-menu-flat__link,
  #header[data-adaptive-menu="true"] .mega-menu-viewall {
    color: var(--cms-mega-muted);
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail-item:hover > .mega-menu-rail-link,
  #header[data-adaptive-menu="true"] .mega-menu-flat__group:hover,
  #header[data-adaptive-menu="true"] .mega-menu-flat__group:focus-within,
  #header[data-adaptive-menu="true"] .mega-menu-viewall:hover {
    background: var(--cms-mega-hover);
    color: var(--cms-mega-ink);
  }

  #header[data-adaptive-menu="true"] .mega-menu-rail-item.active > .mega-menu-rail-link {
    background: var(--cms-mega-surface);
    color: var(--cms-mega-ink);
  }

  #header[data-adaptive-menu="true"] :is(
    .mega-menu-panel-title,
    .mega-menu-group-title,
    .mega-menu-flat__title
  ) {
    color: var(--cms-mega-ink);
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel-title,
  #header[data-adaptive-menu="true"] .mega-menu-viewall {
    border-color: var(--cms-mega-line);
  }

  /* 三層版逐項互動提示：直接標示即將點擊的第二／第三層連結。 */
  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy :is(
    .mega-menu-group-title,
    .mega-menu-grouplist-link
  ) {
    border-radius: 4px;
    transition: background-color 0.12s, box-shadow 0.12s, color 0.12s,
      text-decoration-color 0.12s, transform 0.08s;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-group-title {
    margin: -3px -6px 3px;
    padding: 3px 6px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-grouplist-link {
    margin-inline: -6px;
    padding-inline: 6px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy :is(
    .mega-menu-group-title,
    .mega-menu-grouplist-link
  ):is(:hover, :focus-visible) {
    background: var(--cms-mega-hover);
    box-shadow: inset 0 0 0 1px var(--cms-mega-line);
    color: var(--cms-mega-ink);
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy :is(
    .mega-menu-group-title,
    .mega-menu-grouplist-link
  ):active {
    background: color-mix(in srgb, var(--cms-mega-ink) 16%, var(--cms-mega-surface));
    transform: translateY(1px);
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-panel-title {
    border-radius: 4px;
    transition: background-color 0.12s, color 0.12s, text-decoration-color 0.12s;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-panel-title:is(:hover, :focus-visible) {
    background: var(--cms-mega-hover);
    color: var(--cms-mega-ink);
    text-decoration: underline;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 4px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-rail-item:hover > .mega-menu-rail-link {
    box-shadow: inset 0 0 0 1px var(--cms-mega-line);
    font-weight: 700;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-rail-item.active > .mega-menu-rail-link {
    box-shadow: inset 0 0 0 1px var(--cms-mega-line), 0 3px 10px color-mix(in srgb, var(--cms-mega-ink) 10%, transparent);
    font-weight: 700;
  }
}

@media (min-width: 1440px) {
  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--two-level.mega-menu-panel--dense {
    width: 920px;
  }

  #header[data-adaptive-menu="true"] .navbar-nav .dropdown-menu1.mega-menu-panel--hierarchy {
    width: 920px;
  }

  #header[data-adaptive-menu="true"] .mega-menu-panel--hierarchy .mega-menu-groups {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ============================================================================
 * 骨架語意化（issue #709）：header blade 原 Bootstrap 佈局 utility 的等價規則。
 * 值一律取「原 utility 的實際生效值」（BS 5.2.3，utility 帶 !important 時亦同值）。
 * ============================================================================ */

/* 原 nav 上的 container-fluid：padding 被 .navbar 本體 padding（0.5rem 0）覆蓋，
   僅寬度／置中有效；justify-content-between 與 .navbar 原生 space-between 同值，一併收斂 */
.header-navbar {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
}

/* 原 .navbar > .container-fluid 的 flex 佈局＋寬度；padding 由 base.css 的共用留白與上方
   #navBar>.header-navbar-inner 釘選承擔，此處不得再宣告 padding） */
.header-navbar-inner {
  display: flex;
  flex-wrap: inherit;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin-right: auto;
  margin-left: auto;
}

/* 原 d-xl-none d-flex justify-content-center align-items-center（行動選單觸發鈕外框） */
.header-mobile-trigger {
  display: flex;
  justify-content: center;
  align-items: center;
}

@media (min-width: 1200px) {
  .header-mobile-trigger {
    display: none;
  }
}

/* issue #723 行為變體 fullscreen-overlay(以 data-nav-behavior 屬性選擇,非主題名):
   全寬度隱藏水平導覽群組、常駐觸發鈕,選單改走全螢幕遮罩(沿用 #mobile-sidebar
   元件與既有 JS,零行為分支;側欄滿版化見 common/sidebar.css 對應區塊) */
#header[data-nav-behavior="fullscreen-overlay"] .header-primary-nav,
#header[data-nav-behavior="fullscreen-overlay"] .header-actions {
  display: none;
}

#header[data-nav-behavior="fullscreen-overlay"] .header-mobile-trigger {
  display: flex;
}

/* 原 navbar-nav 上的 mb-2 mb-xl-0（<1200 時 collapse 為隱藏狀態，僅求值等價） */
.navbar-nav {
  margin-bottom: 0.5rem;
}

@media (min-width: 1200px) {
  .navbar-nav {
    margin-bottom: 0;
  }
}

/* 原 nav-link 上的 d-flex align-items-center（會員／購物車／登出／聯絡我們動作連結） */
.nav-action-link {
  display: flex;
  align-items: center;
}

/* 原 icon 上的 d-lg-block d-none（<992 隱藏、≥992 以 block 顯示；蓋過 FA 的 inline-block） */
.nav-action-icon {
  display: none;
}

@media (min-width: 992px) {
  .nav-action-icon {
    display: block;
  }
}

/* 原文字標籤的 d-block mb-0；--collapse 對應原 webCss!=6 三元 d-lg-none 分支
   （桌機隱藏文字標籤），3ffood 於 chrome/headers/custom-3ffood/header.css 覆寫為顯示 */
.nav-action-label {
  display: block;
  margin-bottom: 0;
}

@media (min-width: 992px) {
  .nav-action-label--collapse {
    display: none;
  }
}

/* 原語言切換文字的 webCss!=6 三元 d-none（3ffood 主題覆寫為顯示） */
.nav-lang-label {
  display: none;
}

/* issue #701：行動選單圖示基準尺寸（原 blade img width/height=30 屬性移除後於此承接；
   各斷點另有 34/32px 覆寫規則，本規則為桌機基準與 fallback） */
.lightMenu {
  width: 30px;
  height: 30px;
}

}
/* source: web/css/common/sidebar.css */
@layer cms.platform {
/* ============================================================================
 * common/sidebar.css — 跨主題共用行動裝置側邊選單（Mobile Sidebar）
 * ============================================================================
 *
 * 用途：
 *   行動裝置（小於 991px）開啟的側邊抽屜式選單，含 overlay 遮罩、
 *   3 層選單（Level 1 / Level 2 / Level 3）、System Menu 系統列、
 *   Footer 區與 Member Center Menu 會員中心區。
 *
 * 內容索引：
 *   1. .mobile-sidebar-overlay        全螢幕半透明遮罩（z-index 1040）
 *   2. .mobile-sidebar                側邊抽屜本體（位移開合動畫）
 *   3. .sidebar-header / -top / -title / -close-btn / -divider   標頭區
 *   4. .sidebar-content               主內容捲動區（含 scrollbar hide）
 *   5. .sidebar-menu-l1               第 1 層選單（含展開按鈕、跳轉連結）
 *   6. .sidebar-menu-l2               第 2 層選單（同 L1 結構）
 *   7. .sidebar-menu-l3               第 3 層選單
 *   8. .sidebar-system-menu           系統列選單
 *   9. .sidebar-footer                Footer 區
 *  10. .member-menu-header / -list   會員中心選單區（登入後顯示）
 *  11. .logout-btn-container / .logout-btn   登出按鈕（會員中心底部）
 *  12. .strong                       通用字重 utility（原 default.css 內附於本區段尾端）
 *
 * 使用頁面：行動裝置（< 991px）所有頁面的側邊抽屜選單
 *           （由 header bar 右上角的 hamburger 按鈕觸發開合）
 * 相依 vendor：無（自製 sidebar；非 Bootstrap offcanvas）
 *
 * 載入順序（最先到最後，後者覆寫前者；issue #1391 起見 web-theme-css 規格 R.FUNC.27）：
 *   common.layout（含 common/header.css -> 本檔 -> common/footer.css）-> common.pages
 *   -> 主題 layout -> Header 元件資產（含 chrome/headers/<key>/sidebar.css）-> Footer 元件資產
 *   -> 主題 pages -> 區塊配色 -> custom.css
 *   手機側欄屬 Header 元件：各款差異寫在 chrome/headers/<key>/sidebar.css，全站主題 MUST NOT 改寫；
 *   本檔下半的商品分類側欄（.product-side-menu）屬內容區，主題覆寫在 themes/<key>/sidebar.css。
 *
 * 抽取來源：public/web/css/default.css line 7378~7889（Mobile Sidebar 完整區段）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.3）
 * ============================================================================
 */



/* =========================================
   Mobile Sidebar Styles (Custom Implementation)
   ========================================= */

/* Overlay */
.mobile-sidebar-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 1040;
  /* Bootstrap offcanvas is 1045, modal is 1055 */
  opacity: 0;
  visibility: hidden;
  transition: all 0.5s ease;
  /* #548 遮罩開啟時阻止背景頁被觸控拖動捲動，並阻斷捲動串連（tap 關閉仍正常） */
  overscroll-behavior: contain;
  touch-action: none;
}

.mobile-sidebar-overlay.visible {
  opacity: 1;
  visibility: visible;
}

/* Sidebar Aside */
/* issue #723 行為變體 fullscreen-overlay:側欄滿版成全螢幕遮罩選單
   (開合動畫/JS 完全沿用,僅尺寸差異) */
#header[data-nav-behavior="fullscreen-overlay"] .mobile-sidebar {
  width: 100%;
  max-width: none;
}

.mobile-sidebar {
  position: fixed;
  top: 0;
  right: 0;
  height: 100%;
  width: 80%;
  /* Fallback for mobile mostly */
  max-width: 380px;
  /* Reasonable max width */
  background-color: #fff;
  z-index: 1050;
  box-shadow: -10px 0 30px rgba(0, 0, 0, 0.1);
  transform: translateX(100%);
  transition: transform 0.5s cubic-bezier(0.32, 0.72, 0, 1);
  display: flex;
  flex-direction: column;
  /* #548 整支側邊欄改為單一垂直捲動（取代「中段內捲 + 固定底部」分段） */
  overflow-y: auto;
  scrollbar-width: none; /* #548 Firefox 隱藏捲軸（WebKit 由下方 .mobile-sidebar::-webkit-scrollbar 處理） */
  /* #548 僅允許 sidebar 內垂直捲動：
     1) overflow-x:hidden — 關閉橫向溢出（overflow-y:auto 會連帶把 overflow-x 算成 auto，造成微小左右滑動）
     2) overscroll-behavior:contain — 捲到底不串連到背景頁，避免整頁上下晃動
     3) -webkit-overflow-scrolling:touch — 手機慣性捲動 */
  overflow-x: hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  border-left: 1px solid #f3f4f6;
}

@media (min-width: 768px) {
  .mobile-sidebar {
    width: 35%;
    min-width: 320px;
  }
}

.mobile-sidebar.open {
  transform: translateX(0);
}

/* Header */
.sidebar-header {
  padding: 3rem 1.5rem 1rem 1.5rem;
  /* pt-12 pb-4 px-6 */
  /* #548 整支捲動後，標頭（含關閉鈕）sticky 留頂，任何捲動位置皆可關閉 */
  position: sticky;
  top: 0;
  z-index: 5;
  background-color: #fff;
}

.sidebar-header-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
}

.sidebar-title {
  font-size: 13px;
  font-weight: 900;
  color: #9ca3af;
  /* gray-400 */
  text-transform: uppercase;
  letter-spacing: 3px;
}

.sidebar-close-btn {
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  color: #9ca3af;
  transition: color 0.3s;
}

.sidebar-close-btn:hover {
  color: #000;
}

/* ----------------------------------------------------------------------------
 * issue594：移除 sites/default/header.blade.php 行動側邊選單的 inline style，
 *   改以 class 承載。原 inline 對所有主題一致生效，搬至 common 後行為不變；
 *   主題僅覆寫品牌色，不涉以下 font-size／cursor／padding／flex／margin 結構屬性，
 *   無 cascade 源序衝突（id 與複合 class 選擇器特異性亦足以穩定生效）。
 * -------------------------------------------------------------------------- */
.sidebar-close-btn i {
  font-size: 24px;
}

.menu-btn-l1-link.menu-btn-l1-static {
  cursor: default;
}

/* 語言子選單容器：取代原 inline padding-left（PR #596 Claude 建議改 class 選擇器）。
   複合 class 特異性 0,2,0 穩定覆寫 .menu-container-l2；id 保留供 main.js 切換用 */
.menu-container-l2.menu-container-lang {
  padding-left: 0;
}

.user-info-section .user-details {
  flex: 1;
}

.logout-btn.logout-btn-register {
  margin-bottom: 10px;
}

.sidebar-divider {
  height: 2px;
  width: 2rem;
  background-color: #000;
}

/* Content Area */
.sidebar-content {
  /* #548 取消中段內捲，改隨內容流動，捲動交由 .mobile-sidebar 整體承擔 */
  flex: 0 0 auto;
  overflow: visible;
  padding: 0.5rem 1rem;
}

/* Scrollbar hide */
.custom-scrollbar::-webkit-scrollbar {
  width: 0px;
  background: transparent;
}

/* #548 捲動移至 .mobile-sidebar 後，同步隱藏其捲軸以維持原視覺 */
.mobile-sidebar::-webkit-scrollbar {
  width: 0px;
  background: transparent;
}

/* Menu Level 1 */
.sidebar-menu-l1 {
  list-style: none;
  padding: 0;
  margin: 0;
}

/* 骨架語意化（issue #701 item 1）：移除 .menu-item-l1-wrapper 包層，橫向列改由 .menu-item-l1
   直接以 flex 排出（連結 + 展開鈕），子選單 .menu-container-l2 靠 flex-basis:100% 換行至下一列 */
.menu-item-l1 {
  margin-bottom: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  transition: all 0.3s;
}

.menu-item-l1:hover {
  background-color: #f9fafb;
}

/* 左側：跳轉連結區域 */
.menu-btn-l1-link {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem;
  background: transparent;
  border: none;
  text-align: left;
  transition: all 0.3s;
  color: #6b7280;
  text-decoration: none;
}

.menu-btn-l1-link:hover {
  color: #111827;
}

/* 右側：展開按鈕區域 */
.menu-btn-l1-toggle {
  flex-shrink: 0;
  width: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-left: 1px solid rgba(0, 0, 0, 0.05);
  transition: all 0.3s;
  color: #6b7280;
  cursor: pointer;
}

.menu-btn-l1-toggle:hover {
  background-color: rgba(0, 0, 0, 0.05);
}

.menu-btn-l1-toggle.active {
  background-color: #000;
  color: #fff;
}

/* 展開時該列高亮：改指 .menu-item-l1 直接子連結（row 本身），避免波及展開後的
   .menu-container-l2 子選單（原掛在 wrapper 上，wrapper 只含 row）。展開鈕本身的
   底色由 .menu-btn-l1-toggle.active 負責，兩者合起來即整列高亮 */
.menu-item-l1:has(.menu-btn-l1-toggle.active) > .menu-btn-l1-link {
  background-color: #000;
  color: #fff;
}

.menu-icon-l1 {
  flex-shrink: 0;
  width: 18px;
  text-align: center;
}

.menu-label-l1 {
  flex: 1;
  font-size: 16px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.arrow-icon {
  font-size: 14px;
  transition: transform 0.3s;
}

.menu-btn-l1-toggle:not(.active) .arrow-icon {
  opacity: 0.3;
}

/* Menu Level 2 */
/* flex-basis:100% 使子選單容器於 .menu-item-l1 的 flex 列中換行、獨占整列（取代原 wrapper 分層） */
.menu-container-l2 {
  flex-basis: 100%;
  width: 100%;
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transition: all 0.3s ease-in-out;
}

.sidebar-menu-l2 {
  list-style: none;
  padding-left: 1rem;
  margin: 0;
}

/* 骨架語意化（issue #701 item 1）：L2 同 L1，橫向列改由 .menu-item-l2 直接 flex，
   子選單 .menu-container-l3 靠 flex-basis:100% 換行 */
.menu-item-l2 {
  margin-bottom: 0.25rem;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  transition: all 0.3s;
}

.menu-item-l2:hover {
  background-color: rgba(0, 0, 0, 0.03);
}

/* 左側：跳轉連結區域 */
.menu-btn-l2-link {
  flex: 1;
  display: flex;
  align-items: center;
  padding: 0.625rem;
  background: transparent;
  border: none;
  font-size: 14px;
  font-weight: 900;
  text-transform: uppercase;
  color: #9ca3af;
  text-decoration: none;
  transition: all 0.3s;
}

.menu-btn-l2-link:hover {
  color: #111827;
}

/* 右側：展開按鈕區域 */
.menu-btn-l2-toggle {
  flex-shrink: 0;
  width: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-left: 1px solid rgba(0, 0, 0, 0.05);
  transition: all 0.3s;
  color: #9ca3af;
  cursor: pointer;
}

.menu-btn-l2-toggle:hover {
  background-color: rgba(0, 0, 0, 0.05);
}

.menu-btn-l2-toggle.active {
  background-color: rgba(0, 0, 0, 0.1);
  color: #111827;
}

.arrow-icon-l2 {
  font-size: 12px;
  transition: transform 0.3s;
}

.menu-btn-l2-toggle:not(.active) .arrow-icon-l2 {
  opacity: 0.3;
}

/* Menu Level 3 */
/* flex-basis:100% 使 L3 容器於 .menu-item-l2 flex 列換行獨占整列（含 margin-left 內縮，不另設 width 免溢出） */
.menu-container-l3 {
  flex-basis: 100%;
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transition: all 0.3s ease-in-out;
  border-left: 2px solid #f3f4f6;
  /* border-gray-100 */
  margin-left: 0.5rem;
}

.sidebar-menu-l3 {
  list-style: none;
  padding-left: 1rem;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  margin: 0;
}

.menu-link-l3 {
  display: block;
  padding: 0.25rem 0;
  font-size: 13px;
  font-weight: 700;
  color: #9ca3af;
  /* gray-400 */
  text-transform: uppercase;
  letter-spacing: -0.025em;
  /* tracking-tight */
  text-decoration: none;
  transition: color 0.3s;
}

.menu-link-l3:hover {
  color: #000;
}

/* System Menu */
.sidebar-system-menu {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}

/* Footer */
/* #548 .sidebar-footer 的容器樣式統一定義於後方「登出固定最下方」區塊（改 display: contents），
   此處不再宣告 flex/border/background — 因 display: contents 不產生盒模型、那些屬性會全數失效。 */

.user-info-section {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.75rem;
  /* #548 會員中心改常駐顯示，此列不再作為展開觸發，游標還原為 default */
  cursor: default;
  background-color: #fff;
  transition: background-color 0.3s;
  /* #548 置於底部區塊最上方 */
  order: 0;
}

.user-info-section:hover {
  background-color: #f9fafb;
}

.user-info-section.active {
  background-color: #f9fafb;
}

.user-details {
  display: flex;
  flex-direction: column;
}

.user-name {
  font-size: 14px;
  font-weight: 900;
  text-transform: uppercase;
  color: #111827;
  letter-spacing: 0.025em;
}

.user-role {
  font-size: 10px;
  color: #9ca3af;
  text-transform: uppercase;
  font-weight: 900;
  letter-spacing: 0.1em;
  margin-top: 0.125rem;
}

.user-toggle-icon {
  color: #9ca3af;
  transition: transform 0.3s;
  /* #548 會員中心常駐顯示，隱藏展開箭頭以免暗示可再展開 */
  display: none;
}

.user-info-section.active .user-toggle-icon {
  transform: rotate(180deg);
}

/* Member Center Menu */
.member-center-menu {
  /* #548 會員中心改常駐顯示，免二次點擊（既有 .open 與 JS toggle 退化為視覺 no-op） */
  display: block;
  padding: 1.5rem;
  background-color: #fff;
  border-bottom: 1px solid #f3f4f6;
  /* #548 排於使用者列與登出之間 */
  order: 1;
}

.member-center-menu.open {
  display: block;
}

.member-menu-header {
  font-size: 14px;
  color: #9ca3af;
  font-weight: 700;
  margin-bottom: 2rem;
  letter-spacing: 0.05em;
}

.member-group {
  margin-bottom: 2rem;
}

.member-group-title {
  font-size: 14px;
  font-weight: 900;
  color: #111827;
  margin-bottom: 1rem;
}

.member-menu-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.member-menu-list li {
  margin-bottom: 0.75rem;
  padding-left: 1.5rem;
  border-left: 1px solid #f3f4f6;
}

.member-menu-list a {
  text-decoration: none;
  color: #9ca3af;
  font-size: 14px;
  font-weight: 700;
  transition: all 0.3s;
}

.member-menu-list a:hover {
  color: #000;
}

.logout-btn-container {
  padding: 0 1.5rem 1.5rem 1.5rem;
  /* #548 排於底部區塊最下方 */
  order: 2;
}

.logout-btn {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.75rem;
  border: 1px solid #e5e7eb;
  /* border-gray-200 */
  background: transparent;
  color: #6b7280;
  font-size: 14px;
  font-weight: 900;
  text-transform: uppercase;
  text-decoration: none;
  transition: all 0.3s;
}

.logout-btn:hover {
  background-color: #000;
  color: #fff;
  border-color: #000;
}


/* ============================================================================
 * #548 手機側邊欄整體質感 restyle（只改 CSS；接續上方「單一捲動 + 會員中心常駐」）
 *   目標：分區清楚、行距一致、字體克制、乾淨分隔線、紅色登出、加上通用頭像圈。
 *   作法：採與原規則同權重（單一 class）並置於其後，靠來源順序覆寫 → default 套用；
 *         各主題自有顏色覆寫載入於本檔之後，仍勝出（不被本區壓過品牌色）。
 * ============================================================================
 */

/* 標頭：分隔線由小黑條改為全寬細線，收斂底部間距 */
.sidebar-header {
  padding-bottom: 1.25rem;
}

.sidebar-divider {
  height: 1px;
  width: 100%;
  background-color: #eef0f2;
}

/* 主選單 L1：一致行距、克制字重、可讀深灰字 */
/* 骨架語意化（issue #701 item 1）：原 .menu-item-l1-wrapper 的圓角改掛 .menu-item-l1，
   overflow:hidden 讓展開列高亮底色沿圓角裁切（取代 wrapper 的圓角包覆） */
.menu-item-l1 {
  margin-bottom: 0.125rem;
  border-radius: 10px;
  overflow: hidden;
}

.menu-btn-l1-link {
  padding: 0.85rem 0.75rem;
  gap: 0.85rem;
  color: #374151;
}

.menu-icon-l1 {
  color: #9ca3af;
  font-size: 16px;
}

.menu-label-l1 {
  font-size: 15px;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
}

/* L1 展開狀態：由整列黑改為「淺底深字」，較乾淨 */
.menu-btn-l1-toggle {
  border-left: none;
}

.menu-btn-l1-toggle.active {
  background-color: #f3f4f6;
  color: #111827;
}

/* 展開列高亮改指 .menu-item-l1 直接子連結（row），不波及 .menu-container-l2 子選單 */
.menu-item-l1:has(.menu-btn-l1-toggle.active) > .menu-btn-l1-link {
  background-color: #f3f4f6;
  color: #111827;
}

/* L2 / L3：縮排清楚、字體克制 */
.menu-btn-l2-link {
  padding: 0.6rem 0.75rem;
  font-size: 14px;
  font-weight: 500;
  text-transform: none;
  color: #6b7280;
}

.menu-btn-l2-toggle {
  border-left: none;
}

.menu-link-l3 {
  padding: 0.4rem 0;
  font-size: 13px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: #9ca3af;
}

/* 系統選單（聯絡我們 / 語言）：與主選單分群，前置細分隔線 */
.sidebar-system-menu {
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid #eef0f2;
}

/* 底部：身份卡片（含 CSS 通用頭像圈）+ 乾淨會員清單 */
/* #548 登出固定最下方：footer 改 display:contents，使 user-info/member/logout 成為 .mobile-sidebar
   的直接 flex 子項 → logout 的 containing block＝.mobile-sidebar，sticky bottom 才能跨整個捲動範圍釘住 */
.sidebar-footer {
  display: contents;
}

.user-info-section {
  padding: 1.25rem 1.5rem;
  gap: 0.85rem;
  /* #548 footer 改 display:contents 後，於帳號區上方補回分隔線 */
  border-top: 1px solid #eef0f2;
}

/* 通用使用者頭像圈：以內嵌 SVG 人像呈現，不相依 Font Awesome 版本 */
.user-info-section::before {
  content: "";
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: #e5e7eb url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236b7280'%3E%3Cpath d='M12 12a5 5 0 1 0-5-5 5 5 0 0 0 5 5Zm0 2c-4.4 0-8 2.2-8 5v1h16v-1c0-2.8-3.6-5-8-5Z'/%3E%3C/svg%3E") center / 56% no-repeat;
}

.user-name {
  font-size: 15px;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
}

.user-role {
  font-size: 11px;
  letter-spacing: 0.04em;
}

.member-center-menu {
  /* #548 水平內距對齊主選單區（content 1rem），讓會員連結與上方選單左緣一致 */
  padding: 0.25rem 1rem 1.25rem;
  border-bottom: none;
}

.member-menu-header {
  /* #548 手機 sidebar 移除「會員中心」標題，避免冗餘資訊（使用者要求） */
  display: none;
}

.member-group {
  /* #548 標題已隱藏，移除群組間距，讓會員資料與其他項目等距（不再離太遠） */
  margin-bottom: 0;
}

.member-group-title {
  /* #548 手機 sidebar 移除「帳號管理 / 訂單紀錄」群組標題，避免冗餘資訊（使用者要求） */
  display: none;
}

.member-menu-list li {
  /* #548 與主選單 L1 項目間距一致 */
  margin-bottom: 0.125rem;
  padding-left: 0;
  border-left: none;
}

.member-menu-list a {
  /* #548 會員連結 UI 對齊主選單 L1（padding / 字級 / 字重 / 圓角 hover），上下風格一致 */
  display: block;
  padding: 0.85rem 0.75rem;
  font-size: 15px;
  font-weight: 600;
  color: #374151;
  border-radius: 10px;
}

.member-menu-list a:hover {
  color: #111827;
  background-color: #f9fafb;
}

/* 登出：紅字 + icon、去除重框、左對齊（貼近參考圖）；固定於 sidebar 最下方 */
.logout-btn-container {
  padding: 0.75rem 1.5rem 1.5rem;
  border-top: 1px solid #eef0f2;
  /* #548 登出 sticky 釘在最下方：內容短時 margin-top:auto 推到底；內容長時 sticky bottom 釘住，捲動皆可見 */
  position: sticky;
  bottom: 0;
  margin-top: auto;
  background-color: #fff;
  z-index: 5;
}

.logout-btn {
  justify-content: flex-start;
  gap: 0.75rem;
  padding: 0.85rem 0.5rem;
  border: none;
  background: transparent;
  color: #dc2626;
  font-weight: 700;
  text-transform: none;
}

.logout-btn:hover {
  background-color: #fef2f2;
  color: #b91c1c;
  border-color: transparent;
}


/* ============================================================================
 * 共用側邊欄分類選單（.product-cat / .product-side-menu）
 *   原位於 common/pages/product.css 區段 3，但因 posts.show 等其他頁面亦使用
 *   .product-side-menu / .product-cat 樣式，僅在 product.css 中無法跨頁面套用。
 *   遷移至 sidebar.css（所有頁面皆載入）以還原 cm12 之 cross-page 一致樣式。
 *   抽自 default.css line 3072~3260
 * ============================================================================
 */

/* ----------------------------------------------------------------------------
 * 商品分類側欄 — 公版重設計（互動手風琴）
 *   觸發頁：/products、posts.show、articles.show（共用 .product-side-menu .product-cat）
 *   行為：子分類預設收合，點 .product-cat-toggle 箭頭鈕展開/收合（不換頁）；
 *         載入時自動展開目前所在分類整支（public/web/js/main.js）；長標題自動換行。
 *   配套：components/web/category-item.blade.php（箭頭鈕＋.product-cat-submenu 外層）。
 *   範圍：本區為所有主題共用之新基準（收合行為一致）；kgtwbeef / 3ffood / shopLinerp
 *         自家顏色覆寫仍生效，視覺差異待各主題微調。色彩集中於 --cat-* 變數，主題
 *         可於自家 sidebar.css 覆寫變數調色。
 * ------------------------------------------------------------------------- */
.product-side-menu {
  --cat-card-bg: #ffffff;
  --cat-border: #e5e7eb;
  --cat-accent: #111827;
  --cat-accent-text: #ffffff;
  --cat-text: #1f2937;
  --cat-sub-text: #4b5563;
  --cat-hover: #f3f4f6;
  --cat-chevron: #9ca3af;

  background: var(--cat-card-bg);
  border: 1px solid var(--cat-border);
  border-radius: 14px;
  padding: 18px 16px;
  box-shadow: 0 6px 22px rgba(17, 24, 39, 0.07);
}

.product-side-menu .widget-title {
  position: relative;
  margin: 0 0 16px;
  padding: 0 0 12px;
  font-size: 17px;
  font-weight: 800;
  line-height: 1.3;
  color: var(--cat-text);
  text-transform: none;
  border-bottom: 1px solid var(--cat-border);
}

.product-side-menu .widget-title::before {
  display: none;
}

.product-side-menu .widget-title::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 42px;
  height: 3px;
  border-radius: 3px;
  background: var(--cat-accent);
}

.product-side-menu .product-cat {
  margin-top: 0;
}

.product-side-menu .product-cat ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* 列基底：第二層以後為一般區塊堆疊；第一層另設為 flex 列以容納箭頭鈕（見下） */
.product-side-menu .product-cat-item {
  position: relative;
  margin: 2px 0;
}

/* 第一層列：連結與箭頭鈕同列、子選單換行至整列下方（不依賴連結內距，跨主題穩定） */
.product-side-menu .product-cat > ul > .product-cat-item {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
}

.product-side-menu .product-cat-item > a {
  /* basis 設 0%（非 auto）：連結從 0 起算再 grow 撐滿，確保箭頭鈕永遠與連結同列、
     不因長標題的內容寬度被 flex-wrap 擠到下一行；長標題改由 min-width:0 允許換行消化。 */
  flex: 1 1 0%;
  min-width: 0;
  display: flex;
  align-items: center;
  margin: 0;
  padding: 11px 12px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: var(--cat-text);
  font-weight: 600;
  font-size: 14px;
  line-height: 1.45;
  text-decoration: none;
  white-space: normal;
  word-break: break-word;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.product-side-menu .product-cat-item > a:hover {
  background: var(--cat-hover);
}

/* 關閉舊版連結箭頭，展開指示改由 .product-cat-toggle 鈕提供 */
.product-side-menu .product-cat-item.has-children > a::after {
  content: none;
}

.product-side-menu .product-cat-item span {
  color: inherit;
  font-weight: inherit;
}

.product-side-menu .product-cat-item .text-danger {
  color: inherit !important;
}

/* 頂層目前所在分類：深色實心，清楚標示 */
.product-side-menu .product-cat > ul > .product-cat-item.is-active > a {
  background: var(--cat-accent);
  color: var(--cat-accent-text);
}

/* 展開/收合箭頭鈕：預設隱藏（手機分類下拉等情境不顯示），僅側欄顯示 */
.product-cat-toggle {
  display: none;
}

.product-side-menu .product-cat-toggle {
  flex: 0 0 auto;
  align-self: stretch;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  min-height: 40px;
  margin-left: 2px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 10px;
  color: var(--cat-chevron);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.product-side-menu .product-cat-toggle::after {
  content: "\f078";
  font-family: var(--cms-font-family-icon);
  font-weight: 900;
  font-size: 12px;
  line-height: 1;
}

.product-side-menu .product-cat-toggle:hover {
  background: var(--cat-hover);
  color: var(--cat-text);
}

.product-side-menu .product-cat-item.is-open > .product-cat-toggle {
  transform: rotate(180deg);
}

.product-side-menu .product-cat > ul > .product-cat-item.is-active > .product-cat-toggle {
  background: var(--cat-accent);
  color: var(--cat-accent-text);
}

.product-side-menu .product-cat > ul > .product-cat-item.is-active > .product-cat-toggle:hover {
  background: var(--cat-accent);
  opacity: 0.9;
}

/* 子選單收合容器（僅第一層）：CSS grid 0fr↔1fr 平滑展開、不裁切內容；
   打開後其下第二層以後一次全部展現（第二層起無個別收合鈕）。 */
.product-side-menu .product-cat-submenu {
  flex: 0 0 100%;
  min-height: 0;
  display: grid;
  grid-template-rows: 0fr;
}

.product-side-menu .product-cat-item.is-open > .product-cat-submenu {
  grid-template-rows: 1fr;
}

.product-side-menu .product-cat-submenu > ul {
  overflow: hidden;
  min-height: 0;
}

/* 子選單內各層 ul：縮排與層級導引線（第二層、第三層…一致遞進） */
.product-side-menu .product-cat-submenu ul {
  margin: 2px 0 2px 8px;
  padding-left: 12px;
  border-left: 1px solid var(--cat-border);
}

/* 子分類列（所有層級）：較小字級、次要色 */
.product-side-menu .product-cat-submenu .product-cat-item > a {
  padding: 9px 10px;
  font-size: 13px;
  font-weight: 500;
  color: var(--cat-sub-text);
}

.product-side-menu .product-cat-submenu .product-cat-item.is-active > a {
  background: var(--cat-hover);
  color: var(--cat-text);
  font-weight: 700;
}

/* 載入時不過場，待 main.js 設好初始展開狀態並補上 .acc-ready 後才啟用動畫，避免閃動 */
.product-side-menu .product-cat.acc-ready .product-cat-submenu {
  transition: grid-template-rows 0.28s ease;
}

.product-side-menu .product-cat.acc-ready .product-cat-toggle {
  transition: background-color 0.2s ease, color 0.2s ease, transform 0.25s ease;
}

@media (max-width: 991.98px) {
  .product-side-menu {
    padding: 16px 14px;
  }
}

/* ============================================================================
 * 骨架語意化（issue #710）：會員側欄兩欄殼——取代四個會員頁的
 * row ＋ col-lg-2/col-lg-10（--lg，斷點 992）與 col-md-2/col-md-10（--md，斷點 768）。
 * 鏡射 BS gutter 變數機制（--bs-gutter-x 自宣告＋calc），base.css legacy
 * 「.container 系 ≥992 gutter 30px」規則選擇器已同步增列。
 * ============================================================================ */

.member-layout {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}

/* 與 member-layout 的 30px gutter 對齊，避免桌機容器左右各超出 7.5px。 */
@media (min-width: 992px) {
  .member-center-container { --bs-gutter-x: 30px; }
}

.member-layout__side,
.member-layout__main {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

@media (min-width: 768px) {
  .member-layout--md > .member-layout__side {
    flex: 0 0 auto;
    width: 16.66666667%;
  }

  .member-layout--md > .member-layout__main {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
}

@media (min-width: 992px) {
  .member-layout--lg > .member-layout__side {
    flex: 0 0 auto;
    width: 16.66666667%;
  }

  .member-layout--lg > .member-layout__main {
    flex: 0 0 auto;
    width: 83.33333333%;
  }
}


/* #1399 E：商品／文章／會員側欄的間距由側欄元件擁有。 */
.product-side-menu,
.user-side-menu { margin-bottom: var(--cms-space-30); }
.product-side-menu__title { margin-bottom: var(--cms-space-20); }

}
/* source: web/css/common/footer.css */
@layer cms.platform {

/* ============================================================================
 * common/footer.css — 跨主題共用底部 Footer + 浮動按鈕
 * ============================================================================
 *
 * 用途：
 *   提供 6 個前台主題共用的 footer 區塊樣式（含舊版 .footer / .footer-area
 *   與新版 .footer-default-* 樣式）、社群連結、付款資訊、版權與浮動 Line/FB/Phone
 *   按鈕（function-btns-block）。本檔同時包含 .footer-area 內對 .theme-bg /
 *   .black-bg 的 footer 背景反白覆寫（深底白字）。
 *
 * 內容索引：
 *   1. .footer-area 反白覆寫        在深色背景的 footer 內 p / h4 / 連結 / 社群 icon 強制白字
 *   2. .footer-top-inner / .footer-title / .footer-info        Footer 頂部容器與標題
 *   3. .footer-about / .footer-logo                            關於我們 + logo 區
 *   4. .footer-default-* 系列                                  新版 footer：header / row / col /
 *                                                              logo-stack / map / block / list /
 *                                                              icon / social-list / line-qr / line-tip 等
 *   5. .footer-brief / .footer-social                          簡介 + 社群圖示連結
 *   6. .footer-social-link.footer-social-icon* 系列            社群按鈕的雙圖（一般 / hover）
 *   7. .footer-title / .footer-menu / .footer-message          舊版 footer 標題、選單、聯絡表單
 *   8. .footer-payment / .footer-social-2                      付款方式 + 第 2 套社群連結
 *   9. .footer / .footerLogo                                   新版 footer 主體容器
 *  10. .footerInfoBox / .footerInfo                            聯絡資訊區塊
 *  11. .footerLink                                             footer 連結樣式
 *  12. .footer .footerSocial .socialItem*                      社群區塊（含雙圖切換）
 *  13. .copyRight / .copyRight .elementorBox                   版權聲明
 *  14. .function-btns-block / .function-btns-area              浮動按鈕容器（右下角 Line/FB/Phone）
 *  15. .function-btns-block .btn-Line / .btn-Fb / .btn-Phone / .btn-Expand
 *                                                              個別按鈕樣式（含 hover、QR 展開、active 動畫）
 *
 * 使用頁面：前台所有頁面（透過 web.layouts.app + sites/default/footer.blade.php 載入）
 * 相依 vendor：無
 *
 * 載入順序（最先到最後，後者覆寫前者；issue #1391 起見 web-theme-css 規格 R.FUNC.27）：
 *   common.layout（含 common/header.css -> common/sidebar.css -> 本檔）-> common.pages
 *   -> 主題 layout -> Header 元件資產 -> Footer 元件資產（chrome/footers/<key>/）-> 主題 pages
 *   -> 區塊配色 -> custom.css
 *   本檔是各款 Footer 共用的基底；標準頁尾的專屬版面以 body[data-web-footer="shinvo-standard"] 限定。
 *
 * 抽取來源：public/web/css/default.css 四個區段：
 *   - line 1765~1791：.footer-area .theme-bg / .black-bg 反白覆寫
 *   - line 4394~4889：主 footer 區塊（.footer-top-inner、.footer-default-*、.footer-social、.footer-menu、.footer-payment、.footer-social-2 等）
 *   - line 6492~6755：新版 footer .footerBg / .footer / .footerInfo / .footerSocial / .copyRight
 *   - line 7112~7376：浮動按鈕 .function-btns-block / .btn-Line / .btn-Fb / .btn-Phone / .btn-Expand / .function-btns-area
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.4）
 * ============================================================================
 */


/* ============================================================================
 * 區段 1：.footer-area 深底反白覆寫（task 5.1 base 抽取時刻意保留給 footer）
 *   抽取自 default.css line 1765~1791
 * ============================================================================
 */

.footer-area .theme-bg p,
.footer-area .black-bg p,
.footer-area .theme-bg h4,
.footer-area .black-bg h4,
.footer-area .theme-bg .footer-social li a,
.footer-area .black-bg .footer-social li a {
  color: #fff;
}

.footer-area .theme-bg .footer-social li a,
.footer-area .black-bg .footer-social li a {
  border: 1px solid #fff;
}


/* ============================================================================
 * 區段 2：主 footer 區塊（含 .footer-default-* 新版樣式）
 *   抽取自 default.css line 4394~4889
 *   對應 blade：resources/views/sites/default/footer.blade.php
 *   註：原檔 line 4891 有一個遺漏的 @import 已被 CSS spec 忽略（必須在所有 rule 之前），
 *        不抽取至本檔，留在 default.css 不動。
 * ============================================================================
 */

.footer-top-inner {
  padding: 30px 50px;
}

@media (min-width: 768px) and (max-width: 991.98px) {
  .footer-top-inner {
    padding: 30px 15px;
  }
}

@media screen and (max-width: 767.98px) {
  .footer-top-inner {
    padding: 30px 15px;
  }

}

.hbnBox {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.footer-default-inner {
  padding: 32px 0 40px;
}

/* 版權與法務連結的語意群組。預設不建立盒子，讓既有 Footer 的子項仍直接
   參與 .footer-default-inner Grid；需要單列排版的款式可在自己的 CSS 啟用容器。 */
.footer-copy-row {
  display: contents;
}

.footer-default-header {
  display: grid;
  grid-template-columns: 1.5fr 10.5fr;
  align-items: center;
  margin-bottom: 20px;
  padding-bottom: 10px;
  border-bottom: 1px solid #1a1a1a;
}

.footer-default-header-title {
  min-width: 0;
}

.footer-default-row {
  display: grid;
  grid-template-columns: 1.5fr 3.5fr 2.5fr 2fr 2.5fr;
  gap: 24px;
}

.footer-default-col {
  min-width: 0;
}

.footer-default-col--logo {
  display: flex;
  align-items: flex-start;
}

.footer-default-logo--stack {
  display: flex;
  align-items: flex-start;
}

.footer-default-logo {
  width: 175px;
  height: 210px;
  max-width: 100%;
  flex: 0 0 auto;
}

.footer-default-logo img {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  display: block;
  object-fit: contain;
}

.footer-default-title {
  font-weight: 700;
  color: #1a1a1a;
  margin: 0;
}

.footer-default-map iframe {
  width: 100%;
  height: 200px;
  border: 0;
  border-radius: 10px;
}

.footer-default-block {
  height: 100%;
}

.footer-default-block-title {
  font-weight: 600;
  color: #1a1a1a;
  margin-bottom: 12px;
  padding-left: 14px;
  position: relative;
}

.footer-default-block-title::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 14px;
  background: #1a1a1a;
}

.footer-default-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-default-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: #666666;
  margin-bottom: 10px;
}

.footer-default-item p {
  line-height: 1.5;
}

.footer-default-icon {
  font-size: 20px;
  width: 20px;
  height: 20px;
  line-height: 20px;
  margin-top: 2px;
  color: #1a1a1a;
}

.footer-default-social-list {
  margin: 0 0 16px;
  padding: 0;
}

.footer-default-line {
  display: flex;
  align-items: center;
  gap: 16px;
}

.footer-default-line-info {
  min-width: 0;
}

.footer-default-line-label {
  color: #8a8a8a;
}

.footer-default-line-id {
  font-weight: 600;
  color: #00b900;
  word-break: break-all;
}

.footer-default-line-qr img {
  width: 92px;
  height: 92px;
  display: block;
  margin: 0 auto;
}

.footer-default-line-qr {
  padding: 8px;
  border: 1px solid #e0e0e0;
  border-radius: 10px;
  background: #f7f7f7;
  text-align: center;
}

/* LINE ID／QR 連結：維持原文字與 QR 外觀，僅加上滑鼠指標與 hover 微互動 */
.footer-default-line-link {
  display: block;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.footer-default-line-link:hover,
.footer-default-line-link:focus-visible {
  opacity: 0.85;
  outline: none;
}

@media (min-width: 992px) and (max-width: 1199.98px) {
  /* 平板（992-1199px）footer 收斂：自 common/pages/shoppingCart.css 歸位（footer 為各款共用基底，各款 Footer 以 chrome/footers/<key>/footer.css 覆蓋）。 */
  .footer-default-header {
    grid-template-columns: 1fr;
    gap: 16px;
    padding-bottom: 28px;
  }

  .footer-default-row {
    gap: 20px 24px;
  }
}

@media (max-width: 991.98px) {
  .footer-default-inner {
    padding: 24px 20px 32px;
  }

  .footer-default-header {
    grid-template-columns: 1fr;
    text-align: center;
  }

  .footer-default-map iframe {
    height: 180px;
  }

  .footer-default-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* 手機／平板：logo 框改為貼合圖片，取消桌機固定 210px 高，矮 logo 不再留下大片空白 */
  .footer-default-logo {
    width: auto;
    height: auto;
  }

  .footer-default-logo img {
    width: auto;
    height: auto;
    max-width: 175px;
    max-height: 100px;
    object-fit: contain;
  }
}

@media (max-width: 575.98px) {
  .footer-default-row {
    grid-template-columns: 1fr;
  }

  /* 手機 LINE 區：LINE ID 靠左對齊，QR 於其右側（以間距控制位置、不貼右邊緣） */
  .footer-default-line {
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: 32px;
  }
}

@media (max-width: 479.98px) {
  /* 手機（≤480px）footer 標題字級：自 common/pages/shoppingCart.css 歸位。 */
  .footer-default-title,
  .footer-default-block-title {
    font-size: 16px;
    line-height: 1.4;
  }
}

/* ============================================================================
 * issue #695 扁平化修復：社群圖示尺寸基底
 *   舊選擇器 .footer-social li a.footer-social-link 需要 <ul>/<li> 祖先；
 *   共用 footer HTML 扁平化後（resources/views/sites/default/footer.blade.php）
 *   DOM 已無 <li>，規則全數失配 → 圖示退回瀏覽器原生大小（爆版）。
 *   改用扁平選擇器，且僅保留「尺寸/結構」為各款 Footer 共用基底——顏色/外框/背景
 *   等外觀差異改由各款 Footer 決定（標準頁尾見下方 body[data-web-footer="shinvo-standard"] 區塊；
 *   卡吉牛羊頁尾已在 chrome/footers/custom-kgtwbeef/footer.css 完整覆寫這些屬性，不受影響）。
 * ============================================================================ */

.footer-social-link {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 45px;
  height: 45px;
  border-radius: 50%;
}

.footer-social-icon {
  display: block;
  position: relative;
  width: 24px;
  height: 24px;
}

.footer-social-icon-img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 1;
  transition: opacity 0.2s ease;
}

.footer-social-icon-img--mono {
  opacity: 0;
}

.footer-social-link:hover .footer-social-icon-img--mono {
  opacity: 1;
}

.footer-social-link:hover .footer-social-icon-img--color {
  opacity: 0;
}

.facebook:hover {
  background: #3B5998;
}

.google-plus:hover {
  background: #DD493D;
}

.twitter:hover {
  background: #1DA1F2;
}

.rss:hover {
  background: #F36F24;
}

.pinterest:hover {
  background: #cb2027 none repeat scroll 0 0;
}

.line {
  background: #00C300;
  color: #ffffff;
}

.line:hover {
  background: #02a802ff;
}

.message {
  background: #416bc6;
  color: #ffffff;
}

.message:hover {
  background: #3B5998;
}

.copyright {
  padding: 0 100px;
}

.copyright-text {
  padding: 14px 0;
}

.copyright-text p {
  line-height: 1.8;
  margin: 0;
}

@media screen and (max-width: 767.98px) {
  .copyright {
    padding: 0 50px;
  }

  .copyright-text p {
    text-align: center;
    line-height: 2.1;
  }

  .map>iframe {
    width: 100%;
  }

}


.copyright-text p a {
  color: #999999;
  margin: 0 5px;
}

.copyright-text p a:hover {
  color: #ffffff;
}


/* ============================================================================
 * 區段 3：新版 footer 背景與版權區
 *   抽取自 default.css line 6492~6755
 *   （.footerBg / ::after / .row 三條規則已於 2026-07-22 移除：引用的
 *     ../img/bg/bgFooter.png 不存在，且 footerBg class 僅剩 Git history 中的舊
 *     kgtwbeef footer 使用、現行 Blade 無使用）
 * ============================================================================
 */

.contactBox {
  background: rgba(255, 255, 255, 0.3725490196);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid #2c2c2c;
  padding: 15px 20px;
  border-radius: 20px;
  height: 100%;
}

.mapBox {
  display: flex;
  justify-content: center;
  align-items: center;
}

.mapBox .map {
  margin-right: 20px;
}


@media screen and (max-width: 767.98px) {
  .mapBox .map {
    margin-right: 0px;
  }
}

.mapBox .mapText {
  margin-top: 20px;
  color: #2c2c2c;
}

.mapBox .mapText h1 {
  color: #2c2c2c;
  margin: 0 0 20px;
  /* font-size: 25px;
  line-height: 45px; */
  font-weight: bold;
}

@media screen and (max-width: 767.98px) {
  .mapBox .mapText h1 {
    /* font-size: 18px; */
    line-height: 32px;
    margin: 0 0 12px;
  }
}

.mapBox .mapText p {
  color: #2c2c2c;
  /* font-size: 16px; */
}

.addfriendBox {
  display: flex;
  justify-content: flex-start;
  align-items: start;
}

.addfriendBox .addfriend {
  margin-right: 40px;
}

@media screen and (max-width: 767.98px) {
  .addfriendBox .addfriend {
    margin-right: 10px;
    width: 40%;
  }
}

.addfriendBox .addfriend .addfriendImg {
  width: 100%;
  height: 100%;
  max-height: 200px;
  -o-object-fit: contain;
  object-fit: contain;
}

.addfriendBox .addfriendText {
  margin-top: 20px;
}

.addfriendBox .addfriendText h1 {
  margin: 0 0 20px;
  font-size: 25px;
  font-weight: bold;
  color: #333333;
  line-height: 1.5;
}

@media screen and (max-width: 767.98px) {
  .addfriendBox .addfriendText h1 {
    font-size: 18px;
    line-height: 32px;
    margin: 0 0 12px;
  }
}

.addfriendBox .addfriendText p {
  margin-top: 0;
  margin-bottom: 1rem;
  font-size: 16px;
  color: #333333;
}

.footer {
  padding: 20px 0;
}

.footer .footerLogo {
  margin-bottom: 30px;
}

.footer .footerLogo .footerLogoImg {
  max-width: 120px;
  display: block;
}

.footerInfoBox {
  margin: 20px auto;
  flex-direction: row;
}

@media screen and (max-width: 767.98px) {
  .footerInfoBox {
    flex-direction: column;
    align-items: center;
  }
}

.footerInfo p {
  color: #313131;
  font-size: 16px;
  margin-right: 12px;
}

.footerInfo p:last-child {
  margin-right: 0;
}

.footerInfo {
  margin-right: 20px;
  position: relative;
}

.footerInfo::after {
  content: "";
  position: absolute;
  top: 50%;
  right: -10px;
  transform: translateY(-50%);
  width: 1px;
  height: 20px;
  background: #313131;
}

@media screen and (max-width: 767.98px) {
  .footerInfo {
    margin-right: 0;
    margin-bottom: 12px;
  }

  .footerInfo::after {
    display: none;
  }
}

.footerLink a {
  color: #313131;
  font-size: 16px;
  margin-right: 10px;
}

.footer .footerSocial .socialItem {
  width: 50px;
  height: 50px;
  margin-right: 15px;
}

.footer .footerSocial .socialItem .socialItemImgBox {
  width: 100%;
  height: 100%;
  display: block;
  position: relative;
}

.footer .footerSocial .socialItem .socialItemImgBox:hover .socialItemImgH {
  opacity: 1;
  transition: 0.5s;
}

.footer .footerSocial .socialItem .socialItemImgBox .socialItemImg {
  display: block;
}

.footer .footerSocial .socialItem:last-child {
  margin-right: 0;
}

.footer .footerSocial .socialItem .socialItemImgBox .socialItemImgH {
  opacity: 0;
  transition: 0.5s;
}

.footer .footerSocial .socialItem .socialItemImgBox .socialItemImg,
.footer .footerSocial .socialItem .socialItemImgBox .socialItemImgH {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
  object-fit: cover;
}

.copyRight {
  padding: 8px 0 20px;
}

.copyRight .elementorBox {
  display: block;
  text-decoration: none;
}

.copyRight .elementorBox .elementorText {
  font-size: 15px;
  color: #717171;
}


/* ============================================================================
 * 區段 4：浮動按鈕（右下角 Line / FB / Phone / Expand）
 *   抽取自 default.css line 7112~7376
 *   對應 blade：sites/default/footer.blade.php 的 .function-btns-area 容器
 * ============================================================================
 */

.function-btns-block {
  width: fit-content;
  margin: 0 auto;
  display: none;
  position: fixed;
  bottom: 80px;
  right: 10px;
  z-index: 10;
  transition: all 0.3s ease 0s;
}


.function-btns-block .btn-Fb {
  width: 60px;
  height: 60px;
  margin: 0 auto 10px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #0084ff;
  z-index: 10;
  border-radius: 99rem;
  transition: all 0.3s ease 0s;
}

.function-btns-block .btn-Fb:hover {
  background: #0070d9;
}

.function-btns-block .btn-Fb img {
  width: 28px;
  height: 28px;
  aspect-ratio: 1/1;

}

@media screen and (max-width: 767.98px) {
  .function-btns-block .btn-Fb {
    width: 48px;
    height: 48px;
  }

  .function-btns-block .btn-Fb img {
    width: 22px;
    height: 22px;
    aspect-ratio: 1/1;
  }
}


.function-btns-block .btn-Line {
  width: 60px;
  height: 60px;
  margin: 0 auto 10px;
  display: flex;
  position: relative;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #4cc764;
  border-radius: 99rem;
  z-index: 10;
  transition: all 0.3s ease 0s;
  cursor: pointer;
}

.function-btns-block .btn-Line:hover {
  background: #42b659;
}

.function-btns-block .btn-Line .Qrcode {
  width: 160px;
  height: auto;
  position: absolute;
  top: 0;
  left: -180px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #e4e4e4;
  padding: 10px;
  border-radius: 10px;
  z-index: 10;
  transition: all 0.3s ease 0s;
  opacity: 0;
}

.function-btns-block .btn-Line .Qrcode.active {
  opacity: 1;
}

.function-btns-block .btn-Line .Qrcode img {
  width: 100%;
  height: auto;
  aspect-ratio: 154/197;
}

.function-btns-block .btn-Line img {
  width: 30px;
  height: 30px;
  aspect-ratio: 1/1;

}

@media screen and (max-width: 767.98px) {
  .function-btns-block .btn-Line {
    width: 48px;
    height: 48px;
  }

  .function-btns-block .btn-Line img {
    width: 22px;
    height: 22px;
    aspect-ratio: 1/1;
  }
}

.function-btns-block .btn-Phone {
  width: 60px;
  height: 60px;
  margin: 0 auto 10px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: red;
  border-radius: 99rem;
  z-index: 10;
  transition: all 0.3s ease 0s;
}

.function-btns-block .btn-Phone:hover {
  background: #ce0000;
}


.function-btns-block .btn-Phone img {
  width: 28px;
  height: 28px;
  aspect-ratio: 1/1;
}

.function-btns-block .btn-Expand {
  width: 60px;
  height: 60px;
  margin: 0 auto 10px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: rgb(68, 68, 68);
  color: #ffffff;
  border-radius: 99rem;
  z-index: 10;
  transition: all 0.3s ease 0s;
}

.function-btns-block .btn-Expand:hover {
  background: #282828;
}

/* 購物車懸浮鈕（客服鈕下方）：base 黑白灰色系，與客服鈕同色；各主題可於 themes/<theme>/footer.css 覆寫品牌色 */
.function-btns-block .btn-Cart {
  width: 60px;
  height: 60px;
  margin: 0 auto 10px;
  display: flex;
  position: relative; /* btn-Cart-badge 絕對定位基準 */
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: rgb(68, 68, 68);
  color: #ffffff;
  border: none;
  border-radius: 99rem;
  z-index: 10;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.3s ease 0s;
}

.function-btns-block .btn-Cart:hover {
  background: #282828;
}

.function-btns-block .btn-Cart i {
  font-size: 24px;
}

/* 數字 badge：右上角深底白字＋白色外圈，品項數為 0 時 Blade 加 d-none 隱藏 */
.function-btns-block .btn-Cart-badge {
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  position: absolute;
  top: -2px;
  right: -2px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #222222;
  color: #ffffff;
  font-size: 12px;
  line-height: 1;
  border-radius: 99rem;
  box-shadow: 0 0 0 2px #ffffff;
}

@media screen and (max-width: 767.98px) {
  .function-btns-block .btn-Phone {
    width: 48px;
    height: 48px;
  }

  .function-btns-block .btn-Phone img {
    width: 22px;
    height: 22px;
    aspect-ratio: 1/1;
  }

  .function-btns-block .btn-Expand {
    width: 48px;
    height: 48px;
  }

  .function-btns-block .btn-Expand img {
    width: 22px;
    height: 22px;
    aspect-ratio: 1/1;
  }

  .function-btns-block .btn-Cart {
    width: 48px;
    height: 48px;
  }

  .function-btns-block .btn-Cart i {
    font-size: 20px;
  }
}

#scrollUp {
  width: 60px;
  height: 60px;
  border-radius: 99rem;
  margin-bottom: 10px;
  opacity: 0;
  transition: all 0.3s ease;
}

#scrollUp:hover {
  background: #555555;
}

#scrollUp.active {
  opacity: 1;
}

#scrollUp i {
  width: 60px;
  line-height: 60px;
}


@media screen and (max-width: 767.98px) {
  #scrollUp {
    width: 48px;
    height: 48px;
    border-radius: 99rem;
  }

  #scrollUp i {
    width: 48px;
    line-height: 48px;
  }
}

.function-btns-area {
  opacity: 1;
  transition: all 0.3s ease;
}

.function-btns-area.active .function-btns-block {
  transform: translateY(-70px);
}

.function-btns-block {
  position: fixed;
  right: 20px;
  bottom: -50px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  z-index: 1000;
}



.function-btns-block a,
.function-btns-block button {
  transition: all 0.3s ease;
  cursor: pointer;
}

.btn-Line,
.btn-Fb,
.btn-Phone {
  opacity: 0;
  transform: translateY(20px);
  pointer-events: none;
}

.function-btns-block.active .btn-Line,
.function-btns-block.active .btn-Fb,
.function-btns-block.active .btn-Phone {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

/* === Phase B Batch 2: @media (1170-1400) footer RWD（抽自 default.css 4032-4050）=== */
@media (min-width: 1200px) and (max-width: 1399.98px) {
  :where(.web-announcement-bar-inner, .product-shell, .footer-shell, .header-navbar-inner, .chrome-compact__inner, .chrome-stacked__utility, .chrome-stacked__brand-row, .chrome-stacked__nav) {
    padding: 0 30px;
  }

  .footer-top-inner {
    padding: 30px;
  }

  .copyright {
    padding: 0 60px;
  }
}


/* ============================================================================
 * 骨架語意化（issue #709）：footer blade 原 Bootstrap 佈局 utility 的等價規則。
 * ============================================================================ */

/* 原 container-fluid：寬度／置中。footer-top 的左右留白由 base.css 的共用留白規則與下方
   .footer-area .footer-shell 釘選承擔——本類不得在通用規則宣告 padding；footer-bottom
   以 --gutter 修飾類補回 container-fluid 的水平 padding */
.footer-shell {
  --bs-gutter-x: 1.5rem;
  width: 100%;
  margin-right: auto;
  margin-left: auto;
}

/* issue #1391：頁尾內層左右留白由 Footer 自己決定，不再隨全站主題對共用留白的覆寫漂移
 *   （#1389 前某主題一旦重新定義 .plr-185 工具類，標準頁尾就跟著變寬變窄）。值與 common 現況完全等價：
 *   ≥1400 為 base.css 的 --cms-space-185、1200–1399 為本檔的 30px（字面值）、992–1199 為 base.css 的
 *   --cms-space-30（token，主題可經 token 調整，例：Zen Garden）、≤991 為 base.css「.footer-area :where(...)」的 0。
 *   權重取 (0,2,0)：高於 base.css 的 :where 共用留白 (0,0,0)／.footer-area :where(...) (0,1,0)，又與卡吉牛羊頁尾
 *   的同名選擇器同權重——本檔載入在前，各款 Footer 元件的覆寫以載入序勝出，不必升權重。 */
.footer-area .footer-shell {
  padding-left: var(--cms-space-185);
  padding-right: var(--cms-space-185);
}

@media (min-width: 1200px) and (max-width: 1399.98px) {
  .footer-area .footer-shell {
    padding-left: 30px;
    padding-right: 30px;
  }
}

@media (min-width: 992px) and (max-width: 1199.98px) {
  .footer-area .footer-shell {
    padding-left: var(--cms-space-30);
    padding-right: var(--cms-space-30);
  }
}

@media (max-width: 991.98px) {
  .footer-area .footer-shell {
    padding-left: 0;
    padding-right: 0;
  }
}

.footer-shell--gutter {
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
}

/* 原聯絡／營業時間清單 p 的 mb-0 */
.footer-default-item p {
  margin-bottom: 0;
}

/* 原 LINE ID 區兩行文字的 mb-0 */
.footer-default-line-label,
.footer-default-line-id {
  margin-bottom: 0;
}

/* 原 copyright 外框的 text-center */
.copyright-text {
  text-align: center;
}

/* 原「|」分隔的 d-md-inline d-none（<768 隱藏） */
.copy-sep {
  display: none;
}

@media (min-width: 768px) {
  .copy-sep {
    display: inline;
  }
}

/* 原換行 br 的 d-md-none d-block（<768 顯示）與 d-lg-none d-block（<992 顯示） */
.copy-break-md {
  display: block;
}

@media (min-width: 768px) {
  .copy-break-md {
    display: none;
  }
}

.copy-break-lg {
  display: block;
}

@media (min-width: 992px) {
  .copy-break-lg {
    display: none;
  }
}

/* 原 Powered by 連結的 text-white。MUST 完全鏡射 BS utility 的特異性輪廓
   （單類 (0,1,0)＋!important）：dgfactor 以更高特異性＋!important 蓋過（沿用）、
   3ffood 的非 !important hook 維持被壓制（該 hook 歷來未生效，SOP 坑 3 現況保留）；
   改用複合選擇器或拿掉 !important 都會翻轉主題間勝負 */
.copy-link--light {
  color: var(--cms-color-text-inverse) !important;
}


/* ============================================================================
 * issue #695 細粒度彈性 footer：加入好友 CTA 與卡片底框
 *   共用 footer HTML 常駐這兩類元素，但預設隱藏；只有需要的主題（如 kgtwbeef）
 *   於自己的 themes/<theme>/footer.css 以 display 顯示並定位。其他主題不渲染，
 *   對版面零影響（維持既有五欄 grid，卡片底框不佔 grid 軌道）。
 * ============================================================================ */
.footer-default-addfriend,
.footer-default-card,
.footer-default-brand,
.footer-copy-taxid {
  display: none;
}


/* ============================================================================
 * issue #695 最大彈性：版權區移入主容器 footer-default-inner（不再獨立黑底 footer-bottom）。
 *   default 佈局：全寬置中、深色文字、上緣分隔線，於淺色 footer 上可讀。
 *   （dgfactor / shopLinerp / 3ffood 原針對黑底的版權樣式失效，需各自 CSS 再調——依使用者
 *   「以最大彈性 HTML 為主、其他主題後續 CSS 調整」指示，屬後續工項。）
 * ============================================================================ */
.footer-default-copyright {
  padding: 20px 0 8px;
  margin-top: 12px;
  border-top: 1px solid #e5e5e5;
  text-align: center;
}

.footer-default-copyright .copy-text {
  color: #666666;
  line-height: 1.8;
}

.footer-default-copyright .copy-link--light,
.footer-default-copyright .copy-text a {
  color: #888888 !important;
}

.footer-default-copyright .copy-text a:hover {
  color: #1a1a1a !important;
}


/* ============================================================================
 * issue #695 標準頁尾版面（Footer 元件 shinvo-standard）
 *   標準頁尾沒有自己的元件資產（原 themes/shinvo-standard/footer.css 空殼已於 issue #1391
 *   已退役，歷史內容由 Git history 查詢），因此標準頁尾專屬版面規則直接寫在本檔。
 *
 *   共用 footer HTML 已「真．最扁平」：每個內容片段是 .footer-default-inner
 *   的直接子元素，各帶 footer-piece--* 定位 hook。本區塊比照
 *   chrome/footers/custom-kgtwbeef/footer.css 的技術（唯一另一個已改用扁平 HTML 的主題）：
 *   .footer-default-inner 設 60 欄細顆粒度 grid，每個片段用 grid-column /
 *   grid-row 直接指定落點；column-gap/row-gap 為 0，片段間距一律用
 *   padding/margin，避免 gap 疊加進 span 造成比例跑掉。
 *
 *   範圍限定：本區塊所有規則以 body[data-web-footer="shinvo-standard"] 前綴，因為
 *   .footer-default-inner／.footer-piece--* 等 class 是多款 Footer 共用的 hook，
 *   若不限定會直接改到其他款的版面（卡吉牛羊頁尾對同一批 class 有自己完整
 *   的 grid 版面定義，見 chrome/footers/custom-kgtwbeef/footer.css）。唯一例外是上方已抽出
 *   的「社群圖示尺寸基底」——卡吉牛羊頁尾對該基底逐一完整覆寫，不受影響。
 *
 *   issue #1391：前綴原為 body[data-theme="shinvo-standard"]——標準頁尾只在「全站主題是
 *   標準版」時才排版，換任何其他主題就整組失效，那正是 Header／Footer 被主題綁住的根源。
 *   改為 body[data-web-footer]（layout 輸出的「所選 Footer 元件 key」），權重與原本相同
 *   （皆為一個屬性選擇器加 body），只換作用域、不改任何生效值；原組合畫面不變。
 * ============================================================================ */

/* 地圖：default 原本就是五欄版面（logo｜聯絡｜服務｜社群｜地圖），地圖是最右
   第五欄。注意 Google 地圖 iframe 在 headless 截圖不載入（一片空白），勿因截圖
   看不到就把它藏掉——以 DOM 位置確認落點即可，真實瀏覽器會正常顯示。
   限定 body[data-web-footer="shinvo-standard"]（卡吉牛羊頁尾有自己的地圖版面，不可波及） */
body[data-web-footer="shinvo-standard"] .footer-piece--map {
  /* #721：52/61（161px）→ 50/61（約 196px），貼齊扁平化前原版地圖寬（約 200px）；
     社群欄同步左移至 38 起（見下方），維持不重疊 */
  grid-column: 50 / 61;
  grid-row: 2 / 8;
  align-self: start;
}

body[data-web-footer="shinvo-standard"] .footer-default-inner {
  display: grid;
  grid-template-columns: repeat(60, minmax(0, 1fr));
  column-gap: 0;
  row-gap: 0;
  align-items: start;
  padding: 32px 0 0;
}

/* 店名標題（列 1，滿欄＋底線） */
body[data-web-footer="shinvo-standard"] .footer-default-title.footer-piece--name {
  grid-column: 1 / -1;
  grid-row: 1;
  /* devweb 基準:36px、文字縮排 12.5%(舊版 header 1.5fr/10.5fr 首欄留白),底線全寬 */
  padding-left: 12.5%;
  padding-bottom: 14px;
  margin-bottom: 17px;
  border-bottom: 1px solid #1a1a1a;
  font-size: 36px;
  line-height: 1;
}

/* 有設定品牌名稱時以品牌作為頁尾主標；公司名稱仍保留在 copyright。
   未設定品牌的站台繼續顯示公司名稱，避免標準頁尾出現空標題。 */
body[data-web-footer="shinvo-standard"] .footer-default-inner:has(.footer-piece--brand) > .footer-piece--name {
  display: none;
}

body[data-web-footer="shinvo-standard"] .footer-default-inner:has(.footer-piece--brand) > .footer-piece--brand {
  display: block;
  grid-column: 1 / -1;
  grid-row: 1;
  padding-left: 12.5%;
  padding-bottom: 14px;
  margin-bottom: 17px;
  border-bottom: 1px solid #1a1a1a;
  font-size: 36px;
  font-weight: 700;
  line-height: 1;
}

/* logo（欄 1~9，列 2；固定小尺寸——若沿用共用基底 175x210 的高盒子，會把
   同列（title 列）拉得很高，改用較小尺寸貼齊參考圖比例 */
body[data-web-footer="shinvo-standard"] .footer-piece--logo {
  grid-column: 1 / 9;
  /* 跨列:logo 高度不參與標題列(r2)高度計算,直式 logo 不撐版 */
  grid-row: 2 / 8;
  align-self: start;
}

body[data-web-footer="shinvo-standard"] .footer-default-logo.footer-piece--logo {
  width: auto;
  height: auto;
}

/* 原圖等比縮,上限 175×175(2026/07/21 使用者指定);欄寬(1440 約 143px)不足 175
   時以欄寬為界,避免壓到聯絡欄——寬幕自然放大至 175 */
body[data-web-footer="shinvo-standard"] .footer-default-logo.footer-piece--logo img {
  width: auto;
  height: auto;
  max-width: min(175px, 100%);
  max-height: 175px;
  object-fit: contain;
}

/* 聯絡我們欄（欄 10~30） */
body[data-web-footer="shinvo-standard"] .footer-piece--contact-title { grid-column: 9 / 25; grid-row: 2; }
body[data-web-footer="shinvo-standard"] .footer-piece--tel,
body[data-web-footer="shinvo-standard"] .footer-piece--fax,
body[data-web-footer="shinvo-standard"] .footer-piece--address,
body[data-web-footer="shinvo-standard"] .footer-piece--email,
body[data-web-footer="shinvo-standard"] .footer-piece--tax {
  grid-column: 9 / 25;
}
body[data-web-footer="shinvo-standard"] .footer-piece--contact-pos-1 { grid-row: 3; }
body[data-web-footer="shinvo-standard"] .footer-piece--contact-pos-2 { grid-row: 4; }
body[data-web-footer="shinvo-standard"] .footer-piece--contact-pos-3 { grid-row: 5; }
body[data-web-footer="shinvo-standard"] .footer-piece--contact-pos-4 { grid-row: 6; }
body[data-web-footer="shinvo-standard"] .footer-piece--contact-pos-5 { grid-row: 7; }
body[data-web-footer="shinvo-standard"] .footer-piece--tax { margin-bottom: 24px; }

/* 服務時間欄（欄 27~36）：營業時間長句折兩行與扁平化前原版一致（原版欄寬約
   205px 同樣折行），#721 依「與原版一致」原則維持折行、把欄寬讓給社群欄與地圖 */
body[data-web-footer="shinvo-standard"] .footer-piece--service-title { grid-column: 26 / 39; grid-row: 2; }
/* 服務欄與聯絡欄解耦(devweb 為獨立欄不牽連):營業時間常折兩行,若佔單列會把
   共用列撐高、聯絡欄憑空多出間隙。改跨列 span(跨距內固有高總和>自身高,不觸發
   列高分配)+ 後續項 margin-top 錨定在前項正下方 */
body[data-web-footer="shinvo-standard"] .footer-piece--hours          { grid-column: 26 / 39; grid-row: 3 / 8; align-self: start; }
body[data-web-footer="shinvo-standard"] .footer-piece--break          { grid-column: 26 / 39; grid-row: 3 / 8; align-self: start; }
body[data-web-footer="shinvo-standard"] .footer-piece--closed         { grid-column: 26 / 39; grid-row: 3 / 8; align-self: start; }

/* 社群連結欄（欄 48~61）：4 顆圖示同列排一橫排（欄寬 13 欄，每顆 3 欄剛好放得下）。
   icons 刻意放在列 3（與 tel/hours 同列），LINE ID+QR 刻意放在列 7（與 tax 同列、
   contact 欄最後一列）：兩者都是「contact/service 欄該列本來就有內容」的列，避免
   圖示/QR（比單行文字高）與 fax/break 這類常無資料的欄位共用同一列——那樣空列
   仍會被圖示/QR 撐高，在 tel 與 address 之間、或 address 與 email 之間憑空多出
   一段留白（60 欄共用同一組列高是本技法的已知限制，見 kgtwbeef 對應說明）。 */
/* #721 修正三處：①每顆圖示 2 欄（約 36px）小於圖示本體 45px 造成相鄰重疊
   → 改 3 欄（約 53px）；②整塊左移至 38 起，讓地圖加寬到 50/61；③LINE ID+QR
   從列 7（與統編同列、被 QR 高度撐出大段留白）改跨列 span 緊接圖示下方，
   跨列把 QR 高度分散到多列、貼齊扁平化前原版位置 */
body[data-web-footer="shinvo-standard"] .footer-piece--social-title     { grid-column: 39 / 48; grid-row: 2; }
/* devweb 基準:社群欄寬約 162px,四顆 45px 圖示為 3+1 兩列 */
/* 社群欄固定節距錨定:全部片段跨列 3/8 靠頂、同一起始欄,margin-left/top
   疊出固定 px 位置(圖示 45px+13px 間隙=58px 節距,devweb 實測值)——
   間距與視窗寬度徹底脫鉤;窄幕(<1600)messenger 換第二列(devweb 同行為) */
body[data-web-footer="shinvo-standard"] .footer-piece--social-fb,
body[data-web-footer="shinvo-standard"] .footer-piece--social-ig,
body[data-web-footer="shinvo-standard"] .footer-piece--social-line,
body[data-web-footer="shinvo-standard"] .footer-piece--social-messenger,
body[data-web-footer="shinvo-standard"] .footer-piece--line-info,
body[data-web-footer="shinvo-standard"] .footer-piece--qr {
  grid-column: 39 / 61;
  grid-row: 3 / 8;
  align-self: start;
  justify-self: start;
}

body[data-web-footer="shinvo-standard"] .footer-piece--social-fb,
body[data-web-footer="shinvo-standard"] .footer-piece--social-ig,
body[data-web-footer="shinvo-standard"] .footer-piece--social-line,
body[data-web-footer="shinvo-standard"] .footer-piece--social-messenger {
  margin-top: 14px;
}

body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-2 { transform: translateX(58px); }
body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-3 { transform: translateX(116px); }
body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-4 { transform: translateX(174px); }
body[data-web-footer="shinvo-standard"] .footer-piece--line-info {
  margin-top: 75px; /* 14+45+16 */
  transform: none;
}
/* 寬幕 QR 併於 LINE ID 右側(devweb 排法)，以 margin 參與排版，避免空欄位讓 QR 壓進版權列 */
body[data-web-footer="shinvo-standard"] .footer-piece--qr {
  margin-top: 75px;
  transform: none;
}

/* 有 LINE ID 文字時,QR 落在其下(label 15 + id 27 + 間 10 ≈ 66) */
body[data-web-footer="shinvo-standard"] .footer-piece--line-info ~ .footer-piece--qr {
  margin-left: 116px;
  margin-top: 75px;
  transform: none;
}

/* 沒有服務時間時，社群與 LINE 整組左移填補原服務欄，地圖維持右側。
   只在桌機套用，手機版由下方單欄 row 收合規則處理。 */
@media (min-width: 992px) {
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--social-title,
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--social-fb,
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--social-ig,
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--social-line,
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--social-messenger,
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--line-info,
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--qr {
    grid-column: 30 / 50;
  }
}

@media (min-width: 992px) and (max-width: 1599.98px) {
  /* 窄幕:messenger 換第二列(58px 下移),LINE 區順移 */
  body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-4 {
    transform: translateY(58px); /* 換第二列:45+13 */
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--line-info { grid-row: 6; transform: none; margin-top: 16px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--qr        { grid-row: 7; transform: none; margin-top: 10px; }

  body[data-web-footer="shinvo-standard"] .footer-piece--line-info ~ .footer-piece--qr {
    grid-row: 7;
    transform: none;
  }
}

/* 跨列 span 區域內貼齊頂部，避免在 span 區內垂直置中產生不均等留白 */
body[data-web-footer="shinvo-standard"] .footer-piece--social-fb,
body[data-web-footer="shinvo-standard"] .footer-piece--social-ig,
body[data-web-footer="shinvo-standard"] .footer-piece--social-line,
body[data-web-footer="shinvo-standard"] .footer-piece--social-messenger,
body[data-web-footer="shinvo-standard"] .footer-piece--line-info,
body[data-web-footer="shinvo-standard"] .footer-piece--qr {
  align-self: start;
  justify-self: start;
}

/* 欄內垂直間距:項目間隙統一由 .footer-default-item 的 margin-bottom:10 承擔
   (聯絡欄節距 = 服務欄錨定節距 = 27+10 = 37px;2026/07/21 使用者指定統一)。
   原 margin-top:8 已移除——它讓聯絡欄比服務欄多 8px、也把「標題→第一項」
   撐到 20px(devweb 為 12px = 標題 margin-bottom) */

/* 服務欄固定節距錨定(devweb 內容驅動間距,與視窗寬度脫鉤):
   全部跨列 3/8 靠頂,margin-top 疊出 37px 節距(單行項 27+10);
   桌機服務欄的營業時間會自然折兩行，後續項由下方 media 補足一行高度;
   break 存在與否用兄弟選擇器條件化,無資料不留洞 */
body[data-web-footer="shinvo-standard"] .footer-piece--break {
  transform: translateY(37px);
}

body[data-web-footer="shinvo-standard"] .footer-piece--closed {
  transform: translateY(37px);
}

body[data-web-footer="shinvo-standard"] .footer-piece--break ~ .footer-piece--closed {
  transform: translateY(74px);
}

@media (min-width: 992px) {
  /* 桌機服務欄的營業時間自然折兩行(h54)：後續項下移一行並保留 10px 間距。 */
  body[data-web-footer="shinvo-standard"] .footer-piece--break {
    transform: translateY(64px); /* 54+10 */
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--closed {
    transform: translateY(64px);
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--break ~ .footer-piece--closed {
    transform: translateY(101px);
  }
}

/* icons margin-top 已併入上方社群欄固定節距錨定區(#721 devweb 對齊) */



/* line-info/qr margin-top 已併入社群欄固定節距錨定區 */

/* 社群圖示 default 配色（白底灰框、hover 淺灰；尺寸/結構已在上方共用基底定義） */
body[data-web-footer="shinvo-standard"] .footer-social-link {
  background: #ffffff;
  border: 1px solid #e0e0e0;
  color: inherit;
  transition: background-color 0.2s ease, border-color 0.2s ease;
}

body[data-web-footer="shinvo-standard"] .footer-social-link:hover {
  background: #f5f5f5;
  border-color: #d6d6d6;
}

/* devweb 基準:LINE ID 18px(label 同步放大) */
body[data-web-footer="shinvo-standard"] .footer-default-line-id {
  font-size: 18px;
}

body[data-web-footer="shinvo-standard"] .footer-default-line-label {
  font-size: 15px;
}

/* --- 版權列（列 8）：深色滿版橫條 ---
   .footer-default-inner::before 產生跨滿欄的背景層：grid 容器的 ::before 會
   成為第一個 grid item，正常疊放順序下天生排在「真實子元素」之後才畫（越晚
   出現在文件順序中的同層級 in-flow 內容蓋在越上面），因此文字自然蓋在背景
   之上，不需要 z-index/isolation 這類額外機制。
   width:100vw + margin-left:calc(50% - 50vw) 是全站慣用的滿版破版手法：本
   片段作為 grid-column:1/-1 的 grid item，其 containing block 寬度＝
   .footer-default-inner 的內容寬度（由 .footer-shell 兩側等寬留白
   置中），故此手法在此可正確破出到視窗邊緣。
   勿改用 box-shadow 100vmax + clip-path：該手法在 Chromium 有「grid item
   兄弟文字消失」的已知 bug（上一輪修改已實測踩雷，記錄於此避免重蹈覆轍）。 */
body[data-web-footer="shinvo-standard"] .footer-default-inner::before {
  content: "";
  grid-column: 1 / -1;
  grid-row: 8;
  align-self: stretch;
  background: #222222;
  width: 100vw;
  margin-left: calc(50% - 50vw);
}

/* 上面那條滿版背景 MUST 由 #footer 收邊（issue #1014）
 *
 * 100vw **含垂直捲軸寬度**，版面寬度（clientWidth）不含，兩者差值就是捲軸寬（實測 15px）。
 * 因此這條背景帶實際會左右各突出 7.5px。橫向捲動本身已由 base.css 的 html overflow-x:clip
 * 擋掉、畫面上看不出來，但**文件的 scrollWidth 仍被撐大**，全頁截圖與部分手機瀏覽器會在右側
 * 露出一條空白帶（#1014 實測：485px 視窗下 scrollWidth 493）。
 *
 * 此處在 footer 收邊而非改寫上面那條規則：#footer 是 body 的區塊層級子元素，寬度恆等於版面
 * 寬度，突出的部分本來就在視窗外、裁掉後視覺完全相同；改用 100% 則拿不到滿版（containing
 * block 是扣掉 shell 與 inner 兩層 padding 後的內容寬），改用絕對定位又會破壞該片段「身為
 * grid item 才能自動跟著版權列高度伸縮、且天生疊在文字下方」的設計（見上方註解）。
 * 只收 x 軸：overflow-y 維持 visible，不影響任何垂直方向的溢出內容。
 */
body[data-web-footer="shinvo-standard"] #footer {
  overflow-x: clip;
}

/* devweb 基準:版權整串同一行、18px/1.8、固定間距(與視窗寬度脫鉤)。
   置中錨=col 34:版權句+Powered 右對齊於錨左側(公司名變長向左生長),
   五連結自錨右側以固定 margin-left 鏈式排開(連結文案為固定語系字串) */
body[data-web-footer="shinvo-standard"] .footer-piece--copyright,
body[data-web-footer="shinvo-standard"] .footer-piece--powered,
body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
  grid-row: 8;
  align-self: center;
  padding: 20px 0;
  font-size: 18px;
  line-height: 1.8;
  white-space: nowrap;
}

/* #721：版權列由「左右分散」改「置中群組」，貼齊扁平化前原版（整串置中一行）；
   相鄰欄 + justify-self 逼近置中，60 欄顆粒度下間距非像素精確（同 kgtwbeef 註記） */
body[data-web-footer="shinvo-standard"] .footer-piece--copyright {
  grid-column: 1 / 27;
  justify-self: end;
  /* 自訂主色的 palette 會重設 .footer-copy-text；法務深色帶固定使用白字。 */
  color: #ffffff !important;
}

body[data-web-footer="shinvo-standard"] .footer-piece--copyright::after {
  content: "｜";
  margin: 0 10px 0 8px;
  color: #999999;
}

body[data-web-footer="shinvo-standard"] .footer-piece--powered          { grid-column: 27 / 61; justify-self: start; }
/* 五連結:同錨同列,固定 margin-left 鏈式排開(Powered 176 + 間 24 起算,步距=字寬+24) */
body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
  grid-column: 27 / 61;
  justify-self: start;
}
body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-1 { margin-left: 200px; }
body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-2 { margin-left: 296px; }
body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-3 { margin-left: 392px; }
body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-4 { margin-left: 488px; }
body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-5 { margin-left: 602px; }

body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-1 + .footer-piece--link-member.footer-piece--copy-link-pos-2 { margin-left: 314px; }
body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-2 + .footer-piece--link-member.footer-piece--copy-link-pos-3 { margin-left: 410px; }
body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-3 + .footer-piece--link-member.footer-piece--copy-link-pos-4 { margin-left: 506px; }

body[data-web-footer="shinvo-standard"] .footer-piece--powered,
body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
  /* devweb 基準:連結與本文同為純白 */
  color: #ffffff !important;
}

body[data-web-footer="shinvo-standard"] .footer-piece--powered:hover,
body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy:hover,
body[data-web-footer="shinvo-standard"] .footer-piece--link-terms:hover,
body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping:hover,
body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn:hover,
body[data-web-footer="shinvo-standard"] .footer-piece--link-member:hover {
  color: #cccccc !important;
}

/* 桌機版權列改由語意群組本身排列，避免以固定 margin 推算各連結位置時，
   字型或文案寬度改變便互相黏住。空間不足時以完整連結為單位自然換行。 */
@media (min-width: 992px) {
  body[data-web-footer="shinvo-standard"] .footer-copy-row {
    display: flex;
    grid-column: 1 / -1;
    grid-row: 8;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0 18px;
    padding: 20px 0;
  }

  body[data-web-footer="shinvo-standard"] .footer-copy-row > .footer-piece {
    grid-column: auto;
    grid-row: auto;
    align-self: auto;
    justify-self: auto;
    margin-left: 0;
    padding: 0;
  }

  body[data-web-footer="shinvo-standard"] .footer-copy-row > .footer-piece--link-payreturn.footer-piece--copy-link-pos-1 + .footer-piece--link-member.footer-piece--copy-link-pos-2,
  body[data-web-footer="shinvo-standard"] .footer-copy-row > .footer-piece--link-payreturn.footer-piece--copy-link-pos-2 + .footer-piece--link-member.footer-piece--copy-link-pos-3,
  body[data-web-footer="shinvo-standard"] .footer-copy-row > .footer-piece--link-payreturn.footer-piece--copy-link-pos-3 + .footer-piece--link-member.footer-piece--copy-link-pos-4 {
    margin-left: 0;
  }

  body[data-web-footer="shinvo-standard"] .footer-copy-row > .footer-piece--copyright::after {
    margin: 0 0 0 16px;
  }
}


/* ============================================================================
 * issue #695 default 主題 footer RWD：斷點統一 480/576/768/992/1200/1400
 *   ≤991.98px：四欄收成單欄堆疊；社群圖示維持一列（#1027 起整體改靠左對齊，
 *   圖示依實際輸出的第幾顆自左緣往右排開，不再是固定四欄置中）
 *   992~1399.98px：共用左右留白於此區間降為 30px（見 base.css），內容欄若仍撐到
 *   grid 最右欄，QR 會貼近右側 function-btns-block（客服／購物車浮動鈕，
 *   right:20px）造成重疊，補 padding-right 讓出安全距離
 * ============================================================================ */

@media (min-width: 992px) and (max-width: 1399.98px) {
  body[data-web-footer="shinvo-standard"] .footer-default-inner {
    padding-right: 130px;
  }

  /* 內容寬縮小後 LINE ID 欄不足容納單行 ID（word-break:break-all 會拆字換行），
     改 LINE ID 滿社群欄寬、QR 移至其下方（#721） */
  /* line-info/qr 沿用基準(r6/r7 直落),不需覆寫 */

  /* 欄寬因右側保留空間而變窄，版權列改用較窄字級與較短欄寬，避免版權句／
     Powered by 擠在一起、連結被壓到換行 */
  body[data-web-footer="shinvo-standard"] .footer-piece--copyright,
  body[data-web-footer="shinvo-standard"] .footer-piece--powered,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
    font-size: 15px;
  }

  /* 15px 字級下鏈式 margin 重算(Powered~147+20;連結步距=60+20;payreturn 75) */
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-1 { margin-left: 167px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-2 { margin-left: 247px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-3 { margin-left: 327px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-4 { margin-left: 407px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-5 { margin-left: 502px; }

  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-1 + .footer-piece--link-member.footer-piece--copy-link-pos-2 { margin-left: 262px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-2 + .footer-piece--link-member.footer-piece--copy-link-pos-3 { margin-left: 342px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-3 + .footer-piece--link-member.footer-piece--copy-link-pos-4 { margin-left: 422px; }
}

@media (max-width: 991.98px) {
  /* #1027：手機版 footer 由置中改為靠左（使用者指定）。文字對齊在容器層一次切換，
     各片段的 justify-self 與社群圖示的水平位移另見下方。 */
  body[data-web-footer="shinvo-standard"] .footer-default-inner {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    text-align: left;
    padding: 24px 20px 0;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--name,
  body[data-web-footer="shinvo-standard"] .footer-piece--brand,
  body[data-web-footer="shinvo-standard"] .footer-piece--logo,
  body[data-web-footer="shinvo-standard"] .footer-piece--contact-title,
  body[data-web-footer="shinvo-standard"] .footer-piece--tel,
  body[data-web-footer="shinvo-standard"] .footer-piece--fax,
  body[data-web-footer="shinvo-standard"] .footer-piece--address,
  body[data-web-footer="shinvo-standard"] .footer-piece--email,
  body[data-web-footer="shinvo-standard"] .footer-piece--tax,
  body[data-web-footer="shinvo-standard"] .footer-piece--service-title,
  body[data-web-footer="shinvo-standard"] .footer-piece--hours,
  body[data-web-footer="shinvo-standard"] .footer-piece--break,
  body[data-web-footer="shinvo-standard"] .footer-piece--closed,
  body[data-web-footer="shinvo-standard"] .footer-piece--social-title,
  body[data-web-footer="shinvo-standard"] .footer-piece--line-info,
  body[data-web-footer="shinvo-standard"] .footer-piece--qr,
  body[data-web-footer="shinvo-standard"] .footer-piece--map,
  body[data-web-footer="shinvo-standard"] .footer-piece--copyright,
  body[data-web-footer="shinvo-standard"] .footer-piece--powered,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
    grid-column: 1 / 5;
    /* #1027：改靠左（原 center）。片段本身多為 width:max-content，靠 justify-self
       決定它在整列格內的水平位置，僅改 text-align 不足以移動它們。 */
    justify-self: start;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--name          { grid-row: 1; }
  body[data-web-footer="shinvo-standard"] .footer-piece--brand         { grid-row: 1; }
  body[data-web-footer="shinvo-standard"] .footer-piece--logo          { grid-row: 2; }

  /* 手機 logo 上限放寬 175×175(僅 default;共用規則維持 175×100 不動) */
  body[data-web-footer="shinvo-standard"] .footer-default-logo.footer-piece--logo img {
    max-width: 175px;
    max-height: 175px;
  }
  body[data-web-footer="shinvo-standard"] .footer-piece--contact-title { grid-row: 3; }
  body[data-web-footer="shinvo-standard"] .footer-piece--tel           { grid-row: 4; }
  body[data-web-footer="shinvo-standard"] .footer-piece--fax           { grid-row: 5; }
  body[data-web-footer="shinvo-standard"] .footer-piece--address       { grid-row: 6; }
  body[data-web-footer="shinvo-standard"] .footer-piece--email         { grid-row: 7; }
  body[data-web-footer="shinvo-standard"] .footer-piece--tax           { grid-row: 8; }
  body[data-web-footer="shinvo-standard"] .footer-piece--service-title { grid-row: 9; }
  body[data-web-footer="shinvo-standard"] .footer-piece--hours         { grid-row: 10; }
  body[data-web-footer="shinvo-standard"] .footer-piece--break         { grid-row: 11; }
  body[data-web-footer="shinvo-standard"] .footer-piece--closed        { grid-row: 12; }
  body[data-web-footer="shinvo-standard"] .footer-piece--social-title  { grid-row: 13; }

  /* #1027：社群圖示原本每顆釘死一欄(fb=1／ig=2／line=3／messenger=4),欄位是固定的,
     與實際輸出幾顆無關;blade 僅在後台有填該欄位時才輸出圖示,實際常是 2 顆
     (FB+LINE),此時 FB 落欄 1、LINE 落欄 3,兩者之間憑空空出一欄。
     改為全部共用整列滿欄的同一格 + justify-self:start 對齊左緣,再依「第幾顆」
     以固定節距往右排開,顆數多寡都能緊密相鄰。節距沿用本主題桌機的 58px
     (圓框 45px + 間隙 13px)。 */
  body[data-web-footer="shinvo-standard"] .footer-default-inner {
    --footer-social-pitch: 58px;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-1 { --footer-social-index: 1; }
  body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-2 { --footer-social-index: 2; }
  body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-3 { --footer-social-index: 3; }
  body[data-web-footer="shinvo-standard"] .footer-piece--social-pos-4 { --footer-social-index: 4; }

  body[data-web-footer="shinvo-standard"] .footer-piece--social-fb,
  body[data-web-footer="shinvo-standard"] .footer-piece--social-ig,
  body[data-web-footer="shinvo-standard"] .footer-piece--social-line,
  body[data-web-footer="shinvo-standard"] .footer-piece--social-messenger {
    grid-row: 14;
    grid-column: 1 / 5;
    margin-top: 14px;
    justify-self: start;
    /* 桌機那組依 pos 設的 translateX(58/116/174px) 是全域規則,手機版 MUST 歸零,
       否則會與本區段的位移相加。 */
    transform: none;
    /* #1035：位移用 margin-left 而非 transform。理由是「位移」與「收進同一格」
       (上方 grid-column: 1 / 5)是一體的——站台 custom.css 若以 !important 把圖示
       釘回各自的欄位,位移就必須跟著失效,否則圖示會留在自訂欄位上又被額外推開。
       站台覆寫欄位時慣用的寫法是 grid-column + justify-self + margin 一起釘死
       (margin: 0 !important),margin-left 因而會被同一條規則一併中和,transform
       則不會——它不在任何人的覆寫清單裡,那些 custom.css 撰寫時系統還沒有 transform
       位移。實測 yjj.com.tw 320 寬:改前第 3 顆被推到視窗外、scrollWidth 366
       (溢出 46px);改後 scrollWidth 320、零溢出,圖示回到該站自訂的 3 欄佈局。
       無自訂 CSS 的站(web.ping-pong.tw)位移行為與改前完全相同。
       附帶效果:margin 參與排版而 transform 不參與,圖示不再有溢出容器的可能。 */
    margin-left: calc(
      (var(--footer-social-index) - 1) * var(--footer-social-pitch)
    );
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--line-info { grid-row: 15; margin-top: 16px; }
  body[data-web-footer="shinvo-standard"] .footer-piece--qr         { grid-row: 16; margin-top: 16px; }

  /* #1027：桌機用 margin-left 把 QR 推到 LINE ID 右側,手機單欄堆疊時未歸零,
     QR 因而整塊右偏(當時手機版仍置中,實測偏離中線 58px＝116/2;之後整體改靠左
     對齊,同一個殘留左外距會直接把 QR 推離左緣 116px,歸零的必要性不變)。 */
  body[data-web-footer="shinvo-standard"] .footer-piece--line-info ~ .footer-piece--qr {
    margin-left: 0;
  }

  /* #721 修正：地圖原漏列於單欄堆疊清單，桌機的 grid-column:50/61 在 4 欄
     grid 下會產生隱式欄爆版；改滿寬置於 QR 之下、版權列之上 */
  body[data-web-footer="shinvo-standard"] .footer-piece--map {
    grid-row: 17;
    width: 100%;
    margin-top: 16px;
  }

  /* #1027：版權區背景條隨連結改為橫排而收窄。原本連結各佔一列（20~24），故涵蓋
     18/25；改排成一列後只需 18（版權句）、19（Powered by）、20（連結列）、
     21（第 5 個連結換行時才用到），取 18/22。連結不足 5 個時第 21 列沒有元素、
     高度為 0，背景條不會多出空白。 */
  body[data-web-footer="shinvo-standard"] .footer-default-inner::before {
    grid-row: 18 / 22;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--copyright {
    grid-row: 18;
    white-space: normal;
  }

  /* 手機:margin 錨定鏈全部歸零(單欄堆疊),字級收斂、店名取消縮排回 24px。
     #1035：social-ig／line／messenger 三顆**自本清單移除**——社群圖示的手機版位移
     自本次起改由 margin-left 承載(見上方社群圖示區段),留在此處會被歸零成 0,
     四顆全部疊在左緣。桌機社群只有 margin-top 與 transform、從未設過 margin-left,
     因此移出後沒有任何桌機殘留值需要清。這條清單正是 #1027 當初改用 transform
     而非 margin 的原因;本次把成因一併解掉,不再繞道 transform。 */
  body[data-web-footer="shinvo-standard"] .footer-piece--line-info,
  body[data-web-footer="shinvo-standard"] .footer-piece--qr,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-member,
  body[data-web-footer="shinvo-standard"] .footer-piece--break,
  body[data-web-footer="shinvo-standard"] .footer-piece--closed {
    margin-left: 0;
  }

  /* 上面那組歸零 MUST 連同「payreturn + member」三條複合規則一起做
   * （issue #1014 與 #1027 各自獨立撞到同一個成因，以下併記雙方實測）
   *
   * 那三條（本檔 body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.…-pos-N +
   * .footer-piece--link-member.…-pos-N+1）是桌機的鏈式排開基準、**沒有包在任何 @media 內**，
   * 因此在手機寬度照樣生效；權重 (0,5,1) 又高過上面那組單類選擇器 (0,2,1)，只歸零
   * .footer-piece--link-member 壓不過它。實測後果：會員專區連結在手機保留桌機左邊距
   * （314～506px）被推到畫面外右側，整站每一頁都因此多出一條橫向捲動、右側露出一條空白帶，
   * 連結本身也看不到——#1014 實測 485px 視窗下 scrollWidth 503；#1027 實測 450px 下
   * scrollWidth 486、溢出 36px。頁面一旦可橫向捲動，fixed 的浮動按鈕不跟著捲、static 的
   * 漢堡鈕跟著跑，兩者看起來就都偏掉了（#1027）。
   * 故此處以同結構、同特異性的複合選擇器歸零，權重才咬得住。
   */
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-1 + .footer-piece--link-member.footer-piece--copy-link-pos-2,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-2 + .footer-piece--link-member.footer-piece--copy-link-pos-3,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn.footer-piece--copy-link-pos-3 + .footer-piece--link-member.footer-piece--copy-link-pos-4 {
    margin-left: 0;
  }

  /* #1027／#1035：社群四顆不在本清單,但**同樣要歸零**桌機的 transform——它們改在
     上方的社群圖示區段內自行 transform:none,因為那裡同時要設 margin-left 位移,
     兩者寫在一起才看得出「歸零舊位移、改用新載體」是同一件事。其餘片段
     (line-info／qr／break／closed)維持在此歸零。
     **本次回併注意**：develop 側（#1014）原本把 social-ig／line／messenger
     三顆列在本清單，已依 #1035 的新架構移除——本清單位置在社群區段之後，
     留著會蓋掉那裡的設定。 */
  body[data-web-footer="shinvo-standard"] .footer-piece--line-info,
  body[data-web-footer="shinvo-standard"] .footer-piece--qr,
  body[data-web-footer="shinvo-standard"] .footer-piece--break,
  body[data-web-footer="shinvo-standard"] .footer-piece--closed,
  body[data-web-footer="shinvo-standard"] .footer-piece--break ~ .footer-piece--closed,
  body[data-web-footer="shinvo-standard"] .footer-piece--line-info ~ .footer-piece--qr {
    transform: none;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--break,
  body[data-web-footer="shinvo-standard"] .footer-piece--closed,
  body[data-web-footer="shinvo-standard"] .footer-piece--break ~ .footer-piece--closed {
    margin-top: 8px;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--line-info ~ .footer-piece--qr {
    margin-top: 16px;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--copyright,
  body[data-web-footer="shinvo-standard"] .footer-piece--powered,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
    white-space: normal;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--copyright,
  body[data-web-footer="shinvo-standard"] .footer-piece--powered,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-privacy,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-terms,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-shipping,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-payreturn,
  body[data-web-footer="shinvo-standard"] .footer-piece--link-member {
    font-size: 15px;
    padding: 6px 0;
  }

  body[data-web-footer="shinvo-standard"] .footer-default-title.footer-piece--name {
    padding-left: 0;
    font-size: 24px;
  }

  body[data-web-footer="shinvo-standard"] .footer-default-inner:has(.footer-piece--brand) > .footer-default-brand.footer-piece--brand {
    padding-left: 0;
    font-size: 24px;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--copyright::after {
    content: none;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--powered        { grid-row: 19; }

  /* #1027：版權連結原本每個獨佔一列（20~24），手機版因此多吃 4~5 行、約 156px，
     而每個連結文字僅約 60px 寬、右側 275px 全是空白，浪費的是橫向而非縱向空間。
     改為同一列、依實際輸出序號各佔一欄（4 欄 grid 剛好排 4 個，第 5 個換下一列）。
     用 --copy-link-pos-N 而非 link-* 定位是關鍵：blade 只在後台有開該連結時才輸出，
     pos 是「實際輸出的連號」，因此不論開幾個都緊密相鄰，不會像固定欄位那樣留空格。
     以 4 個連結計，由 4 行壓成 1 行，省約 117px。 */
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-1,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-2,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-3,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-4 {
    grid-row: 20;
  }

  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-1 { grid-column: 1; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-2 { grid-column: 2; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-3 { grid-column: 3; }
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-4 { grid-column: 4; }

  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-5 {
    grid-row: 21;
    grid-column: 1;
  }

  /* #1027：橫排後每個連結只有約 83px 欄寬(375 扣內距 ÷4),而桌機基準對這五個連結
     設了 white-space:nowrap(整串同一行的版權列),grid item 的寬度不受欄寬約束,
     長語系文案會直接跨欄壓到隔壁。lang/ 下 en／jp／kr 皆已有文案(如
     "Return & Exchange Policy"、"プライバシーポリシー"),不是未來才會發生的情境。
     手機版解除 nowrap 並允許長字斷行,超長文案改為折行而非溢出重疊。 */
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-1,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-2,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-3,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-4,
  body[data-web-footer="shinvo-standard"] .footer-piece--copy-link-pos-5 {
    white-space: normal;
    overflow-wrap: anywhere;
    max-width: 100%;
  }

  /* 服務時間整段不存在時，後續內容上移四列，手機版不留下空白高度。 */
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--social-title { grid-row: 9; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > :is(
    .footer-piece--social-fb,
    .footer-piece--social-ig,
    .footer-piece--social-line,
    .footer-piece--social-messenger
  ) { grid-row: 10; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--line-info { grid-row: 11; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--qr { grid-row: 12; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--map { grid-row: 13; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title))::before { grid-row: 14 / 18; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--copyright { grid-row: 14; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--powered { grid-row: 15; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > :is(
    .footer-piece--copy-link-pos-1,
    .footer-piece--copy-link-pos-2,
    .footer-piece--copy-link-pos-3,
    .footer-piece--copy-link-pos-4
  ) { grid-row: 16; }
  body[data-web-footer="shinvo-standard"] .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--copy-link-pos-5 { grid-row: 17; }
}

}
/* source: web/css/common/footer-optional-section-flow.css */
@layer cms.platform {
/*
 * Footer optional-section flow
 *
 * The shared Footer views omit contact, service, social and map sections when
 * their backing company data is empty. This final component asset runs after
 * each selected Footer stylesheet and closes the explicit grid tracks that
 * would otherwise remain visually empty on desktop layouts.
 */

@media (min-width: 992px) {
  /* 標準頁尾：保留 Logo 欄，依實際存在的資訊欄重新分配中段空間。 */
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) {
    grid-column: 9 / 29;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) {
    grid-column: 29 / 50;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr),
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--social-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) {
    grid-column: 9 / 50;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)) > .footer-piece--social-title {
    grid-column-end: 61;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-title):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 9 / 26; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-title):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 26 / 43; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-title):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 43 / 61; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 9 / 34; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title):has(.footer-piece--social-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 34 / 61; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title):has(.footer-piece--social-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 9 / 34; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title):has(.footer-piece--social-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 34 / 61; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--social-title)):has(.footer-piece--contact-title):has(.footer-piece--service-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 9 / 34; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--social-title)):has(.footer-piece--contact-title):has(.footer-piece--service-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 34 / 61; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr),
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--social-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed),
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--service-title)):not(:has(.footer-piece--social-title)) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 9 / 61; }

  /* 聯絡欄不存在時，不再借用它的列高；每個剩餘項目直接建立自己的列。 */
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--hours { grid-row: 3; transform: none; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--break { grid-row: 4; transform: none; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--closed { grid-row: 5; transform: none; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > :is(.footer-piece--social-fb, .footer-piece--social-ig, .footer-piece--social-line, .footer-piece--social-messenger) { grid-row: 3; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--line-info { grid-row: 4; margin-top: 14px; }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--qr { grid-row: 4 / 7; margin-top: 14px; }

  /* 編輯選物：三個資訊欄缺一時改為二等分，只剩一欄時使用全寬。 */
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed),
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--social-title)):has(.footer-piece--contact-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--address, .footer-piece--email) {
    grid-column: 1 / 7;
  }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--address, .footer-piece--email),
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--social-title)):has(.footer-piece--service-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) {
    grid-column: 7 / 13;
  }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--social-title) > .footer-piece--social-title,
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--social-title) > .footer-piece--social-title {
    grid-column: 7 / 13;
  }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-1,
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-1 { grid-column: 7; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-2,
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-2 { grid-column: 8; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-3,
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-3 { grid-column: 9; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-4,
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--social-title) > .footer-piece--social-pos-4 { grid-column: 10; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--social-title) > .footer-piece--line-info,
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--social-title) > .footer-piece--line-info { grid-column: 7 / 13; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-piece--line-info) { grid-column: 1 / 13; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > .footer-piece--social-pos-1 { grid-column: 1; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > .footer-piece--social-pos-2 { grid-column: 2; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > .footer-piece--social-pos-3 { grid-column: 3; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > .footer-piece--social-pos-4 { grid-column: 4; }
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--social-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed),
  body[data-web-footer="shinvo-editorial"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):not(:has(.footer-piece--social-title)) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--address, .footer-piece--email) {
    grid-column: 1 / 13;
  }

  /* 靜謐展間：品牌區固定在左，右側現有資訊自動擴展。 */
  body[data-web-footer="shinvo-gallery"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed),
  body[data-web-footer="shinvo-gallery"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) {
    grid-column: 5 / 13;
  }
  body[data-web-footer="shinvo-gallery"] #footer .footer-default-inner:not(:has(.footer-piece--social-title)) > .footer-piece--map { grid-column: 1 / 13; }
  body[data-web-footer="shinvo-gallery"] #footer .footer-default-inner:not(:has(.footer-piece--map)) > .footer-copy-row { grid-row: 9; }

  /* 資訊索引：品牌欄固定，缺少的索引欄由後續資訊平均補上。 */
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 5 / 12; }
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 12 / 21; }
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 5 / 13; }
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 13 / 21; }
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 5 / 21; }
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--map))::after,
  body[data-web-footer="shinvo-index"] #footer .footer-default-inner:not(:has(.footer-piece--map)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 2; }

  /* 品牌留白：缺少聯絡或服務欄時，另一欄吃滿右側資訊區。 */
  body[data-web-footer="shinvo-story"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 5 / 13; }
  body[data-web-footer="shinvo-story"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--address, .footer-piece--email) { grid-column: 5 / 13; }
  body[data-web-footer="shinvo-story"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info) { grid-column: 5 / 13; }

  /* 公版資訊帶：固定品牌欄，缺少的資訊欄由其餘欄位補滿。 */
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-piece--hours, .footer-piece--closed) { grid-column: 7 / 15; }
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-social-link, .footer-piece--line-info) { grid-column: 15 / 25; }
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-piece--tel, .footer-piece--address, .footer-piece--email) { grid-column: 7 / 16; }
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-social-link, .footer-piece--line-info) { grid-column: 16 / 25; }
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-social-link, .footer-piece--line-info) { grid-column: 7 / 25; }
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--logo))::after,
  body[data-web-footer="shinvo-band"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--logo)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 3; }

  /* 資訊卡片：沒有服務時間時，社群內容移到右卡頂端；沒有地圖時法務列緊接卡片。 */
  body[data-web-footer="shinvo-cards"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-social-link { grid-row: 1; }
  body[data-web-footer="shinvo-cards"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)) > .footer-piece--line-info { grid-row: 2; }
  body[data-web-footer="shinvo-cards"] #footer .footer-default-inner:not(:has(.footer-piece--map))::after,
  body[data-web-footer="shinvo-cards"] #footer .footer-default-inner:not(:has(.footer-piece--map)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 6; }
  body[data-web-footer="shinvo-cards"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):not(:has(.footer-piece--social-title)) > .footer-piece--card-right { display: none; }
  body[data-web-footer="shinvo-cards"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):not(:has(.footer-piece--social-title)) > .footer-piece--card-left { grid-column: 1 / 13; }

  /* 置中極簡：依實際存在的區段縮短資訊列，不保留固定空列。 */
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--hours { grid-row: 3; }
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-social-link { grid-row: 4; }
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > .footer-social-link { grid-row: 6; }
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > .footer-social-link { grid-row: 3; }
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title)::after,
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 5; }
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title)::after,
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 7; }
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title))::after,
  body[data-web-footer="shinvo-centered"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 4; }

  /* 聯絡側欄與拼貼頁尾：地圖不存在時，法務列接在實際最後一列之後。 */
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)) {
    grid-template-rows: minmax(24px, auto) 44px repeat(3, minmax(32px, auto));
  }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map))::after,
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 5; }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--qr) { grid-template-rows: minmax(24px, auto) 44px repeat(4, minmax(32px, auto)); }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--qr)::after,
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--qr) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 6; }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-3) { grid-template-rows: minmax(24px, auto) 44px repeat(5, minmax(32px, auto)); }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-3)::after,
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-3) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 7; }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-4) { grid-template-rows: minmax(24px, auto) 44px repeat(6, minmax(32px, auto)); }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-4)::after,
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-4) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 8; }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-5) { grid-template-rows: minmax(24px, auto) 44px repeat(7, minmax(32px, auto)); }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-5)::after,
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-pos-5) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 9; }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 2 / 10; }
  body[data-web-footer="shinvo-contact"] #footer .footer-default-inner:not(:has(.footer-piece--social-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 2 / 10; }
  body[data-web-footer="shinvo-mosaic"] #footer .footer-default-inner:not(:has(.footer-piece--map))::after,
  body[data-web-footer="shinvo-mosaic"] #footer .footer-default-inner:not(:has(.footer-piece--map)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 5; }
  body[data-web-footer="shinvo-mosaic"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--card-left,
  body[data-web-footer="shinvo-mosaic"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--brand { grid-column: 1 / 5; }
  body[data-web-footer="shinvo-mosaic"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--card-right { grid-column: 5 / 13; }
  body[data-web-footer="shinvo-mosaic"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 5 / 13; }

  /* 三福頁尾：保留地圖時在前三欄補位；無地圖時把現有資訊平均鋪滿。 */
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--map) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 1 / 22; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--map) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 22 / 43; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--map) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 1 / 22; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--map) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 22 / 43; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-title):has(.footer-piece--service-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 1 / 21; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-title):has(.footer-piece--service-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 21 / 41; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):has(.footer-piece--contact-title):has(.footer-piece--service-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 41 / 61; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--contact-title)) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 1 / 31; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--contact-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 31 / 61; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 1 / 31; }
  body[data-web-footer="custom-3ffood"] #footer .footer-default-inner:not(:has(.footer-piece--map)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 31 / 61; }

  /* 卡吉頁尾：地圖未設定時，左卡文字吃滿整張卡片。 */
  body[data-web-footer="custom-kgtwbeef"] #footer .footer-default-inner:not(:has(.footer-piece--map)) > :is(.footer-piece--brand, .footer-piece--address, .footer-piece--hours, .footer-piece--closed) {
    grid-column: 1 / 31;
    padding-left: 28px;
  }

  /* Dgfactor 內部頁尾採 dense grid；缺欄時只需重新分配三欄寬度。 */
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-piece--service-title, .footer-piece--hours, .footer-piece--break, .footer-piece--closed) { grid-column: 1 / 12; }
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):has(.footer-piece--service-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 13 / 25; }
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-piece--contact-title, .footer-piece--tel, .footer-piece--fax, .footer-piece--address, .footer-piece--email, .footer-piece--tax) { grid-column: 1 / 12; }
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)):has(.footer-piece--contact-title) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 13 / 25; }
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) > :is(.footer-piece--social-title, .footer-social-link, .footer-piece--line-info, .footer-piece--qr) { grid-column: 1 / 25; }
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--map))::after { grid-row: 30; margin-top: 48px; }
  body[data-web-footer="internal-dgfactor"] #footer .footer-default-inner:not(:has(.footer-piece--map)) :is(.footer-piece--copyright, .footer-piece--powered, .footer-copy-link) { grid-row: 31; }
}

/* 標準頁尾手機版仍使用既有四欄 Grid；以變數統一收合可選區段的列號。 */
@media (max-width: 991.98px) {
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner {
    --footer-standard-service-title-row: 9;
    --footer-standard-social-title-row: 13;
    --footer-standard-social-icons-row: 14;
    --footer-standard-line-row: 15;
    --footer-standard-qr-row: 16;
    --footer-standard-map-row: 17;
    --footer-standard-legal-row: 18;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--service-title)) {
    --footer-standard-social-title-row: 9;
    --footer-standard-social-icons-row: 10;
    --footer-standard-line-row: 11;
    --footer-standard-qr-row: 12;
    --footer-standard-map-row: 13;
    --footer-standard-legal-row: 14;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) {
    --footer-standard-service-title-row: 3;
    --footer-standard-social-title-row: 7;
    --footer-standard-social-icons-row: 8;
    --footer-standard-line-row: 9;
    --footer-standard-qr-row: 10;
    --footer-standard-map-row: 11;
    --footer-standard-legal-row: 12;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)):not(:has(.footer-piece--service-title)) {
    --footer-standard-social-title-row: 3;
    --footer-standard-social-icons-row: 4;
    --footer-standard-line-row: 5;
    --footer-standard-qr-row: 6;
    --footer-standard-map-row: 7;
    --footer-standard-legal-row: 8;
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--social-title)) {
    --footer-standard-map-row: var(--footer-standard-social-title-row);
    --footer-standard-legal-row: calc(var(--footer-standard-social-title-row) + 1);
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--map)) {
    --footer-standard-legal-row: var(--footer-standard-map-row);
  }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--service-title { grid-row: var(--footer-standard-service-title-row); }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--hours { grid-row: calc(var(--footer-standard-service-title-row) + 1); }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--break { grid-row: calc(var(--footer-standard-service-title-row) + 2); }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner:not(:has(.footer-piece--contact-title)) > .footer-piece--closed { grid-row: calc(var(--footer-standard-service-title-row) + 3); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--social-title { grid-row: var(--footer-standard-social-title-row); }
  body[data-web-footer="shinvo-standard"] #footer :is(.footer-piece--social-fb, .footer-piece--social-ig, .footer-piece--social-line, .footer-piece--social-messenger) { grid-row: var(--footer-standard-social-icons-row); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--line-info { grid-row: var(--footer-standard-line-row); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--qr { grid-row: var(--footer-standard-qr-row); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--map { grid-row: var(--footer-standard-map-row); }
  body[data-web-footer="shinvo-standard"] #footer .footer-default-inner::before { grid-row: var(--footer-standard-legal-row) / calc(var(--footer-standard-legal-row) + 4); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--copyright { grid-row: var(--footer-standard-legal-row); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--powered { grid-row: calc(var(--footer-standard-legal-row) + 1); }
  body[data-web-footer="shinvo-standard"] #footer :is(.footer-piece--copy-link-pos-1, .footer-piece--copy-link-pos-2, .footer-piece--copy-link-pos-3, .footer-piece--copy-link-pos-4) { grid-row: calc(var(--footer-standard-legal-row) + 2); }
  body[data-web-footer="shinvo-standard"] #footer .footer-piece--copy-link-pos-5 { grid-row: calc(var(--footer-standard-legal-row) + 3); }
}

}
/* source: web/css/common/widget/01-shell.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/ — 跨主題共用 Widget 基底（baseline = default 完整內容）
 * 本檔為模組目錄的第一支，兼作目錄索引；載入序 01 / 20
 * ============================================================================
 *
 * 用途：
 *   提供前台各主題共用的 Widget 基底樣式。內容為原 widgets.css 全部 +
 *   default.css 中所有 widget 相關規則（含對 widget 容器寬度的限制、swiper
 *   擴充、default 獨有的 widget-categories/-product 側欄等；原一併搬入的
 *   widget-search 一組已於 #862 B-1 判死移除，markup 全站零引用）。
 *
 * 設計意圖（重要）：
 *   - default 主題是「未來所有網站的基礎標準」，本目錄即為該標準的完整呈現
 *   - themes/shinvo-standard/widget.css 故意保持空殼（default 不需要對自己的 baseline 覆寫）
 *   - 其他主題（3ffood / kgtwbeef / dgfactor / shopLinerp）透過各自的
 *     themes/{theme}/widget.css 覆寫本目錄，達成主題差異化
 *
 * 目錄結構（issue #694）：
 *   原單檔 common/widget.css（3,334 行）依 widget 模組拆為 19 支（phase 1）。
 *   拆檔為「純行範圍搬移」，19 支依載入序 concat 後與拆檔前的原檔 byte-identical，
 *   cascade 結果與拆檔前完全等價（原檔歷史由 Git 保留供比對）。
 *   phase 2 逐模組整理後，19-layout-hooks.css 內容全數回收至各模組本體而移除
 *   （原始內容由 Git history 保留）。其後再做三件收尾：
 *     - 抽出 20-carousel-compat.css，承接原本寄居在 11／16 的 Swiper 套件全域覆寫
 *     - 抽出 21-user-side-menu.css，承接原本寄居在 17 的會員中心側選單基底
 *     - 18-sidebar-post.css 與 17 定義的是同一組側欄選擇器，逐字併入 17 後歸檔
 *   18／19 兩個編號刻意留空不重複使用，避免與已移除的同號檔在歷史紀錄上混淆。
 *   issue #879 再追加 22-style-params.css（受控樣式參數：上下留白／區塊背景色），現為 20 支。
 *   **該檔是本目錄唯一仍有順序相依的成員**：它必須排在所有模組之後才能覆寫各模組自身的
 *   padding 與文字顏色預設值，MUST NOT 調前（理由與特異性寫法見該檔檔頭）。
 *   issue #1392／#1393 追加 23-carousel.css（輪播呈現契約：每屏張數／間距／少量不輪播門檻／
 *   靜態排列），排在 22 之後，現為 21 支。22 的「最後」是指它要勝過各模組的 padding／文字色，
 *   23 不宣告這兩類屬性，排在其後不影響 22。
 *
 *   ┌ 檔名                      模組                     原 widget.css 行範圍
 *   │ 01-shell.css              容器外殼（本檔）          1~88
 *   │ 02-banner.css             輪播 A~E ＋ 圖片顯隱      89~463
 *   │ 03-container.css          容器寬度與外距            464~632
 *   │ 04-title.css              標題 widget               633~752
 *   │ 05-text.css               內文 widget               753~874
 *   │ 06-img-text-a.css         圖文 A（A1~A4）           875~1251
 *   │ 07-img-text-b.css         圖文 B（含 B2）           1252~1336
 *   │ 08-img-text-c.css         圖文 C                    1337~1471
 *   │ 09-img-text-d.css         圖文 D                    1472~1817
 *   │ 10-video.css              影片 widget               1818~1878
 *   │ 11-image.css              純圖片 widget             1879~2068（swiper 段已移出）
 *   │ 12-product-a.css          商品 A                    2069~2182
 *   │ 13-product-b.css          商品 B                    2183~2403
 *   │ 14-product-c.css          商品 C                    2404~2534
 *   │ 15-one-image.css          單圖 ＋ 圖文B靜態置中     2535~2606
 *   │ 16-baseline-override.css  default baseline 覆寫     2607~2678
 *   │ 17-sidebar-product.css    側欄 widget（商品＋貼文） 2679~2969 ＋ 2970~3100
 *   │ 20-carousel-compat.css            Swiper 套件全域覆寫       （自 11 尾段 ＋ 16 區段 3 彙整）
 *   │ 21-user-side-menu.css    會員中心側選單基底        （自 17 抽出）
 *   │ 22-style-params.css      受控樣式參數（issue #879）（data-pad／data-bg，MUST 在各模組之後）
 *   └ 23-carousel.css          輪播呈現契約（#1393）     （原 widget.js 寫死的張數與斷點）
 *     已移除，歷史由 Git 保留：
 *       18-sidebar-post.css    貼文側欄 widget           2970~3100（併入 17）
 *       19-layout-hooks.css    骨架語意化佈局 hook       3101~3334（phase 2 回收至各模組）
 *
 * 檔名數字前綴的意義（重要）：
 *   前綴 = 載入順序。phase 2 完成後，**跨模組的「後段壓前段」覆寫關係已全數解除**：
 *   各檔選擇器互不重疊，載入序對調不改變生效值（已逐組實測），前綴僅表達閱讀順序。
 *   解除過程（phase 2 六組）：
 *     - 03-container.css ↔ 16-baseline-override.css 原本的順序相依已消除，
 *       改以複合選擇器分流「文字 widget 容器」與「版面容器」兩套用途；
 *       實測對調兩者載入序，24 個視口 × 6 種容器用法生效值完全不變。
 *     - 06-img-text-a.css ↔ 19-layout-hooks.css：imgTextA 的三條 hook（按鈕列置中／
 *       按鈕內部 flex／內文下外距）已併回 06 本體，19 不再含 imgTextA 規則。
 *     - 07-img-text-b.css ↔ 15-one-image.css／19-layout-hooks.css：imgTextB 的靜態排列
 *       （原在 15 尾段）與輪播項外殼 .imgTextB-cell（原在 19）已收攏至 07。
 *     - 08-img-text-c.css ↔ 19-layout-hooks.css：imgTextC 的兩欄格線、欄寬、文字盒與
 *       按鈕規則（共 6 條）已收攏至 08。
 *     - 10-video.css ↔ 19-layout-hooks.css：圖片／影片共用的 .widget-media-grid 系列
 *       已收攏至 10（影片與圖片兩個 widget 共用，置於較早載入者）。
 *     - 09-img-text-d.css ↔ 19-layout-hooks.css：imgTextD 的標題列 flex、卡片標題與內文
 *       靠左、內文下外距（共 3 條，含 3ffood 專屬 markup）已收攏至 09。
 *     - 12／13／14 ↔ 19-layout-hooks.css：商品 A 格線（.productA-grid 系列）、商品 B
 *       卡片文字、商品 C 圖文列（.productC-Row／-cell 系列）已分別收攏至 12／13／14；
 *       19 至此清空，已自 common.layout 移除，歷史由 Git 保留。
 *   新增／調整順序一律改 config/webThemeCss.php 的 common.layout，勿依賴檔名排序。
 *
 * 使用頁面：
 *   - 首頁所有 widget
 *   - 商品列表 / 詳情頁 / 新聞貼文頁的側邊欄 widget
 *   - 後台 CKEditor 預覽（透過 ViewServiceProvider 注入 getWebThemeCssUrlsForEditor）
 *     ↑ 前台與後台預覽共用同一份 common.layout 陣列，順序改錯兩邊會一起錯
 *
 * 相依 vendor：owl-carousel / swiper
 *
 * 載入順序（最先到最後，後者覆寫前者）：
 *   common/tokens.css -> common/base.css -> common/header.css -> common/sidebar.css ->
 *   common/footer.css -> common/widget/（本目錄 19 支）-> common/announcement.css ->
 *   common/pages/*.css -> themes/{theme}/*.css（default 為空殼）->
 *   themes/{theme}/pages/*.css -> custom.css
 *
 * 抽取來源（原 widget.css 的來源，拆檔後仍成立）：
 *   - widgets.css line 30~end（line 1~28 為 FROZEN 警示）
 *   - default.css line 4048~4062 + 4167~4175 + 4332~4336（.container max-width 覆寫）
 *   - default.css line 6351~6356 + 6762~6775（.swiper-slide 擴充）
 *   - default.css line 2791~3070（cluster A：商品列表側欄 widget）
 *   - default.css line 5342~5462（cluster B：新聞貼文側欄 widget）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.5 重規劃版 v2）
 *           issue #694（本次拆檔）
 * ============================================================================
 */

/* ============================================================================
 * widget 容器外殼（issue #706 骨架語意化）
 * MUST 置於本檔最前：外殼 padding 僅為 Bootstrap container 等價底線，
 * 後續的 .imgTextC-padding 等區塊級 padding 規則需能以 cascade 順序覆寫。
 *
 * [好覆蓋，issue #874] 外殼的左右內距改由自訂屬性承載，主題覆寫
 * .widget-shell-fluid（0,1,0）內的 --widget-shell-pad 即可調整，毋須複製規則。
 * ==========================================================================*/

/* 取代 .container-fluid.p-0（滿版無留白外殼；banner A/C/E、imgTextA） */
.widget-shell-flush {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding: 0;
}

/* 取代 .container-fluid（imgTextC；padding 交由後載的 imgTextC-padding 覆寫） */
.widget-shell-fluid {
  --widget-shell-pad: 0.75rem; /* 外殼左右內距 */
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: var(--widget-shell-pad, 0.75rem);
  padding-left: var(--widget-shell-pad, 0.75rem);
}

/* 取代 .container 上的 p-0（banner B/D、imgTextB）。
   複合 .container 提高特異性：shopLinerp 主題有 bare .container 的 padding 規則
   （手機 padding: 10px 16px），原被 p-0 的 !important 壓制，等價替換需維持勝出 */
.container.container-flush {
  padding: 0;
}

}
/* source: web/css/common/widget/02-banner.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/02-banner.css — 輪播 widget（bannerA~E ＋ 輪播通用 ＋ widget 圖片顯隱／響應式基準）
 * ============================================================================
 *   載入序：02 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L89~463 切出；phase 2 已完成斷點對齊
 *   本檔開頭保留原「區段 1」總說明註解（描述的是整個 widgets.css 來源，非僅本模組）。
 *   .widgetImgDesktop／.widgetImgMobile 顯隱切換與 .widgetImgResponsive（issue #762 共用
 *   響應式圖片元件的流體寬高基準）位於本檔尾端，供 imgTextA~D 與 oneImage 共用。
 *
 *   [斷點] 原用 992（2 處）／768（5 處）整數 max-width，已改為 991.98／767.98。
 *   七個區塊的選擇器互不重疊，無可合併的重複區塊。
 *   其中尾端 .widgetImgDesktop／.widgetImgMobile 的切換點與 resources/views/components/
 *   web/responsive-image.blade.php 的 <source media> 是同一個「桌機／手機圖」概念的兩條
 *   路徑（class 顯隱 vs picture 元素），本次一併對齊為 767.98px。
 *
 *   [好覆蓋，issue #874] bannerA~E 的可調值（比例／高度／導覽鈕尺寸與配色／coverflow
 *   的淡出與模糊）已改由 .widget-bannerX 上的自訂屬性承載，主題覆寫該單一 class（0,1,0）
 *   即可，毋須複製 .widget-bannerX .owl-item（0,2,0）或
 *   .owl-carousel-bannerX .owl-nav button.owl-prev（0,3,1）這類長選擇器。
 *   選擇器本身刻意不降權：.owl-item／.owl-nav／.owl-stage-outer 是 owl 套件的共用 class，
 *   去掉 widget 範圍限定會誤傷 imgTextB／imgTextD 等其他 owl 輪播。
 * ==========================================================================*/

/* ============================================================================
 * 區段 1：widgets.css 全部內容（baseline 跨主題共用 widget 元件）
 *   抽取自 widgets.css line 30~end
 *   首頁 widget 元件：imgTextA~D / bannerA~E / 訂閱表單 / 倒數計時 /
 *   swiper / owl-carousel 整合 / container 變體 等
 * ============================================================================
 */

/* 輪播A~E 共通說明（issue #874「好覆蓋」）
   .owl-item／.owl-nav／.owl-stage-outer 都是 owl 套件的共用 class，選擇器**必須**維持
   widget 範圍限定（否則會誤傷 imgTextB／imgTextD 等其他 owl 輪播），無法單純降特異性。
   因此改以「把可調值搬到 .widget-bannerX 上的自訂屬性」達成降權：
   主題只要覆寫 .widget-bannerX（0,1,0）內的變數，就能改比例／高度／導覽鈕外觀，
   毋須複製 .widget-bannerX .owl-item（0,2,0）或
   .owl-carousel-bannerX .owl-nav button.owl-prev（0,3,1）這類長選擇器。
   各 var() 皆帶 fallback，即使變數未定義也維持原值。 */

/* 輪播A */

.widget-bannerA {
    --bannerA-ratio: 21/9;
    --bannerA-nav-size: 50px;
    --bannerA-nav-radius: 0px;
    --bannerA-nav-bg: #00000061;
    --bannerA-nav-bg-hover: rgba(0, 0, 0, .1);
    --bannerA-nav-color: #ffffff;
    --bannerA-nav-inset: 0px; /* 導覽鈕列（.owl-nav）的內距 */
    --bannerA-img-fit: contain; /* 輪播圖片的填滿方式 */
    --bannerA-img-position: center; /* 輪播圖片的定位點 */
    position: relative;
    width: 100%;
}

/* 手機維持固定橫向比例，避免直向圖片撐高輪播（原 aspect-ratio 被註解掉、
   只剩 height:auto 會隨圖高變動）。主題若要單一比例，覆寫 --bannerA-ratio 即可
   （主題層宣告不在 @media 內、同特異性且載入序在後，所有寬度都勝出）。 */
@media (max-width: 991.98px) {
    .widget-bannerA {
        --bannerA-ratio: 16/9;
    }
}

.widget-banner-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

.owl-carousel-bannerA {
    position: relative;
    width: 100%;
}

.widget-bannerA .owl-stage-outer {
    overflow: hidden;
    width: 100%;
}

.widget-bannerA .owl-item {
    width: 100%;
    height: auto;
    aspect-ratio: var(--bannerA-ratio, 21/9);
}

.widget-bannerA .owl-item .item {
    width: 100%;
    height: 100%;
}

.owl-carousel-bannerA .owl-nav {
    position: absolute;
    top: 50%;
    width: 100%;
    display: flex;
    justify-content: space-between;
    transform: translateY(-50%);
    padding: var(--bannerA-nav-inset, 0px);
    box-sizing: border-box;
    z-index: 100;
}

.owl-carousel-bannerA .owl-nav button.owl-prev,
.owl-carousel-bannerA .owl-nav button.owl-next {
    background: var(--bannerA-nav-bg, #00000061);
    color: var(--bannerA-nav-color, #ffffff);
    width: var(--bannerA-nav-size, 50px);
    height: var(--bannerA-nav-size, 50px);
    margin: 0;
    border-radius: var(--bannerA-nav-radius, 0px);
    transition: all 0.3s ease;
}

.owl-carousel-bannerA .owl-nav button.owl-next:hover,
.owl-carousel-bannerA .owl-nav button.owl-prev:hover {
    background: var(--bannerA-nav-bg-hover, rgba(0, 0, 0, .1));
    color: var(--bannerA-nav-color, #ffffff);
}

@media (max-width: 767.98px) {
    .owl-carousel-bannerA .owl-nav {
        display: none;
    }
}



/* 輪播B */

.widget-bannerB {
    --bannerB-height: 550px;
    --bannerB-radius: 99rem;
    --bannerB-nav-size: 35px;
    --bannerB-nav-bg: #aeaeae;
    --bannerB-nav-bg-hover: #c9c8c8;
    --bannerB-nav-color: #ffffff;
    --bannerB-nav-bottom: 0; /* 導覽鈕列（.owl-nav）距底部距離 */
    --bannerB-nav-gap: 10px; /* 導覽鈕左右間距 */
    --bannerB-img-fit: cover; /* 輪播圖片的填滿方式 */
    --bannerB-img-position: center; /* 輪播圖片的定位點 */
    position: relative;
    width: 100%;
}

@media (max-width: 991.98px) {
    .widget-bannerB {
        --bannerB-height: auto;
    }
}

.widget-bannerB .owl-stage-outer {
    overflow: hidden;
    width: 100%;
    border-radius: var(--bannerB-radius, 99rem);
}

.owl-carousel-bannerB .owl-item {
    height: var(--bannerB-height, 550px);
}

.owl-carousel-bannerB .owl-item .item,
.owl-carousel-bannerB .owl-item .item > a {
    display: block;
    width: 100%;
    height: 100%;
}

.owl-carousel-bannerB .owl-item .item img {
    width: 100%;
    height: 100%;
    object-fit: var(--bannerB-img-fit, cover);
    object-position: var(--bannerB-img-position, center);
}

.owl-carousel-bannerB .owl-nav {
    position: absolute;
    bottom: var(--bannerB-nav-bottom, 0);
    margin-top: 0;
    display: flex;
    justify-content: start;
}

.owl-carousel-bannerB .owl-nav button.owl-prev,
.owl-carousel-bannerB .owl-nav button.owl-next {
    background: var(--bannerB-nav-bg, #aeaeae);
    color: var(--bannerB-nav-color, #ffffff);
    width: var(--bannerB-nav-size, 35px);
    height: var(--bannerB-nav-size, 35px);
    margin: 0;
    border-radius: 99rem;
    transition: all 0.3s ease;
    margin-right: var(--bannerB-nav-gap, 10px);
}

.owl-carousel-bannerB .owl-nav button.owl-prev:hover,
.owl-carousel-bannerB .owl-nav button.owl-next:hover {
    background: var(--bannerB-nav-bg-hover, #c9c8c8);
    color: var(--bannerB-nav-color, #ffffff);
}


/* 輪播C */

.widget-bannerC {
    --bannerC-ratio: 21/9;
    --bannerC-side-opacity: 0.4;
    --bannerC-side-blur: 3px;
    --bannerC-dots-bottom: 0; /* 分頁點（.owl-dots）距底部距離 */
    position: relative;
    width: 100%;
}

@media (max-width: 767.98px) {
    .widget-bannerC {
        --bannerC-ratio: 1/1;
    }
}

/* coverflow：非中央的項目淡出＋模糊 */
.owl-carousel-bannerC .owl-item {
    opacity: var(--bannerC-side-opacity, 0.4);
    filter: blur(var(--bannerC-side-blur, 3px));
    transition: all 0.3s ease;
}

.widget-bannerC .owl-item {
    width: 100%;
    height: auto;
    aspect-ratio: var(--bannerC-ratio, 21/9);
}

.widget-bannerC .owl-item .item {
    width: 100%;
    height: 100%;
}

.owl-carousel-bannerC .owl-item.center {
    opacity: 1;
    filter: blur(0);
}

.owl-carousel-bannerC .owl-dots {
    position: absolute;
    bottom: var(--bannerC-dots-bottom, 0);
    left: 50%;
    transform: translateX(-50%);
}

/* 輪播D */

.widget-bannerD {
    --bannerD-ratio: 16/9;
    --bannerD-nav-size: 50px;
    --bannerD-nav-bg: #ffffff;
    --bannerD-nav-color: #000000;
    --bannerD-nav-shadow: rgba(149, 157, 165, 0.47) 0px 8px 24px;
    --bannerD-nav-shadow-hover: rgba(41, 41, 41, 0.47) 0px 8px 24px;
    --bannerD-nav-inset: 15px; /* 導覽鈕列（.owl-nav）的內距 */
    --bannerD-img-fit: contain; /* 輪播圖片的填滿方式 */
    --bannerD-img-position: center; /* 輪播圖片的定位點 */
    position: relative;
    width: 100%;
}

.widget-bannerD .owl-stage-outer {
    overflow: hidden;
    width: 100%;
}

.owl-carousel-bannerD {
    position: relative;
    width: 100%;
}

/* bannerD 原未設 owl-item 固定高／比例，直向圖片會撐高輪播（桌機與手機皆然）；補固定橫向比例框 */
.widget-bannerD .owl-item {
    width: 100%;
    aspect-ratio: var(--bannerD-ratio, 16/9);
}

.widget-bannerD .owl-item .item {
    width: 100%;
    height: 100%;
}

.owl-carousel-bannerD .owl-nav {
    position: absolute;
    top: 50%;
    width: 100%;
    display: flex;
    justify-content: space-between;
    transform: translateY(-50%);
    padding: var(--bannerD-nav-inset, 15px);
    margin-top: 0px;
    box-sizing: border-box;
    z-index: 100;
}

/* 註：原 prev／next 為兩條逐字相同的規則，已合併 */
.owl-carousel-bannerD .owl-nav button.owl-prev,
.owl-carousel-bannerD .owl-nav button.owl-next {
    background: var(--bannerD-nav-bg, #ffffff);
    box-shadow: var(--bannerD-nav-shadow, rgba(149, 157, 165, 0.47) 0px 8px 24px);
    color: var(--bannerD-nav-color, #000000);
    width: var(--bannerD-nav-size, 50px);
    height: var(--bannerD-nav-size, 50px);
    margin: 0;
    border-radius: 99rem;
    transition: all 0.3s ease;
}

.owl-carousel-bannerD .owl-nav button.owl-prev:hover,
.owl-carousel-bannerD .owl-nav button.owl-next:hover {
    box-shadow: var(--bannerD-nav-shadow-hover, rgba(41, 41, 41, 0.47) 0px 8px 24px);
}

@media (max-width: 767.98px) {
    .owl-carousel-bannerD .owl-nav {
        display: none;
    }
}

/* 輪播E */

.widget-bannerE {
    --bannerE-ratio: 960/403;
    --bannerE-side-opacity: 0.4;
    --bannerE-side-blur: 3px;
    --bannerE-dots-bottom: 0; /* 分頁點（.owl-dots）距底部距離 */
    position: relative;
    width: 100%;
}

.widget-bannerE .owl-item {
    width: 100%;
    height: auto;
    aspect-ratio: var(--bannerE-ratio, 960/403);
}

.widget-bannerE .owl-item .item {
    width: 100%;
    height: 100%;
}

/* coverflow：非中央的項目淡出＋模糊 */
.owl-carousel-bannerE .owl-item {
    opacity: var(--bannerE-side-opacity, 0.4);
    filter: blur(var(--bannerE-side-blur, 3px));
    transition: all 0.3s ease;
}

.owl-carousel-bannerE .owl-item.center {
    opacity: 1;
    filter: blur(0);
}

.owl-carousel-bannerE .owl-dots {
    position: absolute;
    bottom: var(--bannerE-dots-bottom, 0);
    left: 50%;
    transform: translateX(-50%);
}

@media (max-width: 767.98px) {
    .owl-carousel-bannerE .owl-dots {
        display: none;
    }
}

/* 輪播通用 */


.owl-carousel .owl-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* banner 輪播圖片：等比例縮小到固定高、置中不裁切（直向圖不撐框、不被裁掉，只在固定橫向比例框內留白）。
   覆蓋通用 .owl-item img 的 cover。範圍限本次回報的 bannerA／bannerD（首頁使用者所見）；
   bannerC／E 已有固定比例且屬 coverflow 客製（3ffood 有覆寫）維持 cover、bannerB 圓形設計維持 cover，皆不在此列。 */
.widget-bannerA .owl-item img {
    object-fit: var(--bannerA-img-fit, contain);
    object-position: var(--bannerA-img-position, center);
}

.widget-bannerD .owl-item img {
    object-fit: var(--bannerD-img-fit, contain);
    object-position: var(--bannerD-img-position, center);
}

/* 桌機/手機圖切換：每個 widget 同時輸出 .widgetImgDesktop 與 .widgetImgMobile 兩張圖，
   靠這組規則只顯示其一。

   [issue #694 phase 2：原本的 !important 改以特異性接手]
   基礎規則只有單一 class（0,1,0），會被兩條「輪播容器內的圖」規則壓過，故原先四條宣告
   都加了 !important（等於任何主題想改就也得加 !important，違背本票「好覆蓋」目標）：
     1. owl 套件 vendor：.owl-carousel .owl-item img { display: block }（0,2,1）
        → 影響 imgTextB／imgTextD／banner
     2. 本目錄 16-baseline-override.css：.swiper-slide img { display: block }（0,1,1，
        且載入序在本檔之後）→ 影響 imgTextA／商品 B／圖片 widget
   改為「基礎規則維持 0,1,0 ＋ 兩個容器各自補一條較高特異性的規則」後，勝出關係不變，
   而主題層用同等特異性的選擇器即可覆寫。
   MUST 成組維護：新增／修改任一條時，基礎版與兩個容器版都要同步；日後若再出現
   「某容器 img { display }」的新規則，也要比照補一條，否則該容器內兩張圖會同時顯示。 */
.widgetImgDesktop {
    width: 100%;
    height: auto;
    display: block;
}

.widgetImgMobile {
    width: 100%;
    height: auto;
    display: none;
}

/* 容器內接手（取代原 !important）：勝過 owl vendor 與 16 的 .swiper-slide img */
.owl-carousel .owl-item img.widgetImgDesktop,
.swiper-slide img.widgetImgDesktop {
    display: block;
}

.owl-carousel .owl-item img.widgetImgMobile,
.swiper-slide img.widgetImgMobile {
    display: none;
}

@media (max-width: 767.98px) {
    .widgetImgDesktop {
        display: none;
    }

    .widgetImgMobile {
        display: block;
    }

    .owl-carousel .owl-item img.widgetImgDesktop,
    .swiper-slide img.widgetImgDesktop {
        display: none;
    }

    .owl-carousel .owl-item img.widgetImgMobile,
    .swiper-slide img.widgetImgMobile {
        display: block;
    }
}

/* 單張輸出的 widget 響應式圖（issue #762）：imgTextA～D 與 oneImage 改用共用圖片元件的
   <picture><source media> 後，由瀏覽器依 viewport 只下載其中一張，不再需要上方兩個 class 的
   顯隱切換；但原本同時由那兩個 class 承擔的流體寬高仍必須保留——imgTextB 與 oneImage 的圖片
   沒有任何其他規則提供寬度，只靠 .widgetImgDesktop 的 width:100%。
   刻意不加 !important 也刻意維持單一 class 特異性（0,1,0）：低於各 widget 自身的
   object-fit 規則（如 .imgTextA-Box .imgTextA-ImgBox .imgTextA-Img），讓既有版型維持原樣，
   本規則僅在沒有其他來源時提供寬高基準。 */
/* #1027 補 max-width：width:100% 的 100% 相對於父層,輪播圖的父層是 optional-link 的
   inline <a>,其寬度反過來由圖片內容撐開,形成循環後兩者一起退回原生尺寸(實測 1920px)
   把整頁撐破。max-width:100% 以包含塊為準,才真正封住溢出;僅在圖片超寬時生效,不影響
   既有版型。 */
.widgetImgResponsive {
    width: 100%;
    max-width: 100%;
    height: auto;
    display: block;
}

}
/* source: web/css/common/widget/03-container.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/03-container.css — Widget 容器寬度與外距
 * ============================================================================
 *   載入序：03 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L464~632 切出；phase 2 已完成結構整理
 *
 *   本檔管兩套容器，**用途不同、寬度也不同，勿混為一談**：
 *
 *   (A) 文字 widget 專用（單獨使用，不併 .container）
 *       resources/views/components/web/widgets.blade.php L136 / L149：
 *         <div class="container-{{ data_get($widgetLang, 'width', '1600') }}">
 *       寬度由**後台每則 widget 自行設定**（預設 1600），class 以字串拼接產生，
 *       故 grep 字面 "container-1600" 找不到——修改本區前務必先讀本段。
 *
 *   (B) 其他 widget 的版面容器（一律與 .container 併用）
 *       banner／imgText／product 等，markup 為 class="container container-1600"，
 *       實際寬度受站台 .container 基準（16-baseline-override.css）節制為 1170／1320。
 *
 *   [順序相依已解除] phase 1 時 (B) 的寬度需靠 16-baseline-override.css 後載入壓制
 *   才會正確，形成「16 MUST 載於 03 之後」的隱性相依。phase 2 改以複合選擇器
 *   .container.container-1600（0,2,0）與 .container-1600:not(.container)（0,2,0）
 *   明確分流兩套容器，兩檔載入順序對調亦不改變任何生效值。
 *
 *   [已收斂，2026-08-06 Olivia 決議] (A) 原用 1300／1440／1530／1620 四個刻度外斷點，
 *   走「1140 → 1200 → 1300 → 1400 → 1460 → 1600」六階漸進放寬；現收斂為標準刻度
 *   992／1200／1400 三階，且直接引用與 (B) 相同的 --cms-container-md／-lg／-xl。
 *   **兩套容器的寬度階梯自此完全一致**，差異只剩內距（(A) 自帶手機與平板內距，
 *   (B) 的手機內距由 16-baseline-override.css 的 .container 承接），故複合選擇器
 *   分流仍需保留。
 *   收斂後文字 widget 在寬螢幕變窄（1600 視口 1460 → 1320），屬預期中的客戶可見變更；
 *   逐段差異見 Git history 中舊 ChangeLog 的 2026/08/06 條目。
 *
 *   [好覆蓋，issue #874] 兩套容器的寬度階梯與內距改由 .container-1600／.container-800
 *   （皆 0,1,0）上的自訂屬性承載，預設值即全域 --cms-container-* token。
 *   主題若只想改「widget 容器」而不動全站容器基準，覆寫本層變數即可，
 *   毋須複製 .container-1600:not(.container)（0,2,0）或 .container.container-1600（0,2,0）
 *   這類複合選擇器；要連同全站容器一起改，則照舊覆寫 --cms-container-* 全域 token。
 *   兩層皆保留 fallback，變數未定義時維持原值。
 * ==========================================================================*/


/* ----------------------------------------------------------------------------
 * container-800：窄容器（文字 widget 可於後台選用；亦供長文內容頁併用 .container）
 * -------------------------------------------------------------------------- */

.container-800 {
    --widget-container-narrow: var(--cms-container-narrow); /* 窄容器寬度 */
    --widget-container-narrow-pad-sm: 10px 15px; /* 窄容器手機內距（單獨使用時） */
    max-width: var(--widget-container-narrow, var(--cms-container-narrow));
    width: 100%;
    margin: 0 auto;
    overflow-wrap: anywhere;
}

/* 覆蓋 Bootstrap .container 在大螢幕的 max-width（例如 1320），使窄容器維持 800 */
.container.container-800 {
    max-width: var(--widget-container-narrow, var(--cms-container-narrow));
    width: 100%;
    margin-left: auto;
    margin-right: auto;
}

/* 手機內距：併用 .container 者由 16-baseline-override 的 .container 規則統一承接，
   本規則僅供單獨使用（文字 widget）的情境，避免兩檔互相覆寫 */
@media (max-width: 767.98px) {
    .container-800:not(.container) {
        padding: var(--widget-container-narrow-pad-sm, 10px 15px);
        overflow-wrap: anywhere;
    }
}

/* 讓圖片「跟著容器撐滿」，而不是只限制上限 */
.container.container-800 img,
.container-800 img {
    width: 100%;
    max-width: 100%;
    height: auto;
    display: block;
}


/* ----------------------------------------------------------------------------
 * container-1600：共同基礎
 * -------------------------------------------------------------------------- */

.container-1600 {
    --widget-container-max: var(--cms-container-max); /* <992 基礎寬度 */
    --widget-container-md: var(--cms-container-md); /* ≥992 寬度 */
    --widget-container-lg: var(--cms-container-lg); /* ≥1200 寬度 */
    --widget-container-xl: var(--cms-container-xl); /* ≥1400 寬度 */
    --widget-container-pad-sm: 0 20px; /* ≤767.98 內距（僅單獨使用時） */
    --widget-container-pad-md: 20px; /* ≥768 內距 */
    --widget-container-pad-lg: 0; /* ≥1200 內距 */
    max-width: var(--widget-container-max, var(--cms-container-max));
    width: 100%;
    margin: 0 auto;
    overflow-wrap: anywhere;
}

/* 手機全出血變體：取消左右留白。
   （註：本 class 並非後台設定，資料表無對應欄位、app/ 亦無任何引用；由 Blade 硬編輸出於
   imgTextD 全部情況與商品模組 B 的 width=1600 情況。原註解誤記為「後台勾選時輸出」，
   已於 issue #879 前置查證更正。）
   特異性 0,2,0，勝過站台 .container 的手機內距 */
@media (max-width: 575.98px) {
    .container-1600.container-1600-mobilefluid {
        padding: 0;
        overflow-wrap: anywhere;
    }
}

.container-1600 img {
    max-width: var(--widget-container-max, var(--cms-container-max));
}


/* ----------------------------------------------------------------------------
 * (A) 文字 widget 容器：單獨使用 .container-1600（不併 .container）
 *
 * 寬度階梯原為 issue #518 併檔前 widgets.css 的設計（1140→1200→1300→1400→1460→1600，
 * 六階、含四個刻度外斷點）。2026-08-06 收斂為標準刻度三階，並改引用與 (B) 相同的
 * --cms-container-* token；內距維持原本的「手機 0 20px／平板 20px／≥1200 歸零」。
 * -------------------------------------------------------------------------- */

@media (max-width: 767.98px) {
    .container-1600:not(.container) {
        padding: var(--widget-container-pad-sm, 0 20px);
    }
}

@media (min-width: 768px) {
    .container-1600:not(.container) {
        padding: var(--widget-container-pad-md, 20px);
    }
}

@media (min-width: 992px) {
    .container-1600:not(.container) {
        max-width: var(--widget-container-md, var(--cms-container-md));
    }
}

@media (min-width: 1200px) {
    .container-1600:not(.container) {
        max-width: var(--widget-container-lg, var(--cms-container-lg));
        padding: var(--widget-container-pad-lg, 0);
    }
}

@media (min-width: 1400px) {
    .container-1600:not(.container) {
        max-width: var(--widget-container-xl, var(--cms-container-xl));
    }
}


/* ----------------------------------------------------------------------------
 * (B) 版面容器：.container 與 .container-1600 併用（banner／imgText／product 等）
 *
 * 寬度與站台 .container 基準一致（16-baseline-override.css 同源 token），
 * 複合選擇器 0,2,0 確保不受兩檔載入順序影響。斷點全數為標準刻度。
 * 手機內距不在此宣告，交由 16-baseline-override 的 .container 統一承接。
 * -------------------------------------------------------------------------- */

@media (min-width: 768px) {
    .container.container-1600 {
        padding: var(--widget-container-pad-md, 20px);
    }
}

@media (min-width: 992px) {
    .container.container-1600 {
        max-width: var(--widget-container-md, var(--cms-container-md));
    }
}

@media (min-width: 1200px) {
    .container.container-1600 {
        max-width: var(--widget-container-lg, var(--cms-container-lg));
        padding: var(--widget-container-pad-lg, 0);
    }
}

@media (min-width: 1400px) {
    .container.container-1600 {
        max-width: var(--widget-container-xl, var(--cms-container-xl));
    }
}


/* ----------------------------------------------------------------------------
 * Margin 工具
 * 註：blade 與 js 皆無引用，但屬 CKEditor 內容可套用的 utility（見
 * issue #862 死碼清除的 B 類裁決），需正式站內容查證後裁決。
 * -------------------------------------------------------------------------- */

.ml-25vw {
    margin-left: 25vw;
}

.mr-25vw {
    margin-right: 25vw;
}

}
/* source: web/css/common/widget/04-title.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/04-title.css — 標題 widget
 * ============================================================================
 *   載入序：04 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L633~752 切出；phase 2 已完成斷點對齊
 *   字級選擇器已於 issue #757 由 .widget-block-title h1~h4 改為 .widget-title-size1~size4。
 *
 *   [好覆蓋] issue #694：四個字級規則原寫 .widget-block-title .widget-title-sizeN（0,2,0），
 *   已降為單一 class .widget-title-sizeN（0,1,0）。祖先為冗餘範圍限定——
 *   widgets.blade.php 只在 <div class="widget-block-title"> 內輸出
 *   widget-title-{{ format }}，該 class 不可能出現在別處（實測首頁該類元素
 *   closest('.widget-block-title') 命中率 100%）。降權後主題只要寫
 *   .widget-title-sizeN 即可靠載入序接管，不必複製 common 的兩層選擇器。
 *
 *   [好覆蓋，issue #874] 四個字級的可調值（文字色／內距／字級／行高／大小寫轉換）
 *   已改由各 .widget-title-sizeN（0,1,0）上的自訂屬性承載，RWD 差異一律改為在
 *   @media 內覆寫變數。主題覆寫 MUST 寫在 .widget-title-sizeN 本身：
 *   四級共用同一組變數名，宣告在 .widget-block-title（父層）會被子元素自身的
 *   宣告蓋掉而無效。主題宣告不在 @media 內、同特異性且載入序在後，
 *   覆寫後所有寬度都勝出。
 *
 *   [斷點] 原用 992／768 各 4 個整數 max-width，已改為 991.98／767.98。
 *   四級字級各有「桌機／≤992／≤768」三段，值互不相同，無可合併的重複區塊。
 *   size4 兩個區塊內原有的 padding: 10px 為死宣告（同規則兩行後即被 padding 簡寫覆蓋），
 *   已刪除。size1~size3 各 @media 區塊原有的 padding: 10px 與基礎值相同，改為變數承載後
 *   該冗餘宣告已無存在必要，一併刪除（生效值不變）。
 * ==========================================================================*/

/* 標題 widget */

.widget-block-title {
    --widget-title-block-margin: 0px auto; /* 標題區塊外距 */
    margin: var(--widget-title-block-margin, 0px auto);
    position: relative;
}

.widget-block-title-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

.widget-title-size1 {
    --widget-title-color: #333333; /* 標題文字色 */
    --widget-title-pad: 10px; /* 標題內距 */
    --widget-title-font: 30px; /* 標題字級 */
    --widget-title-lh: 55px; /* 標題行高 */
    --widget-title-transform: uppercase; /* 英文大小寫轉換 */
    color: var(--widget-title-color, #333333);
    margin-bottom: 0;
    padding: var(--widget-title-pad, 10px);
    font-size: var(--widget-title-font, 30px);
    line-height: var(--widget-title-lh, 55px);
    text-transform: var(--widget-title-transform, uppercase);
}

@media (max-width: 991.98px) {
    .widget-title-size1 {
        --widget-title-font: 24px;
        --widget-title-lh: 43px;
    }
}

@media (max-width: 767.98px) {
    .widget-title-size1 {
        --widget-title-font: 20px;
        --widget-title-lh: 36px;
    }
}

.widget-title-size2 {
    --widget-title-color: #333333;
    --widget-title-pad: 10px;
    --widget-title-font: 24px;
    --widget-title-lh: 43px;
    --widget-title-transform: uppercase;
    color: var(--widget-title-color, #333333);
    margin-bottom: 0;
    padding: var(--widget-title-pad, 10px);
    font-size: var(--widget-title-font, 24px);
    line-height: var(--widget-title-lh, 43px);
    text-transform: var(--widget-title-transform, uppercase);
}

@media (max-width: 991.98px) {
    .widget-title-size2 {
        --widget-title-font: 20px;
        --widget-title-lh: 32px;
    }
}

@media (max-width: 767.98px) {
    .widget-title-size2 {
        --widget-title-font: 18px;
        --widget-title-lh: 28px;
    }
}

.widget-title-size3 {
    --widget-title-color: #333333;
    --widget-title-pad: 10px;
    --widget-title-font: 20px;
    --widget-title-lh: 36px;
    --widget-title-transform: uppercase;
    color: var(--widget-title-color, #333333);
    margin-bottom: 0;
    padding: var(--widget-title-pad, 10px);
    font-size: var(--widget-title-font, 20px);
    line-height: var(--widget-title-lh, 36px);
    text-transform: var(--widget-title-transform, uppercase);
}

@media (max-width: 991.98px) {
    .widget-title-size3 {
        --widget-title-font: 18px;
        --widget-title-lh: 30px;
    }
}

@media (max-width: 767.98px) {
    .widget-title-size3 {
        --widget-title-font: 16px;
        --widget-title-lh: 27px;
    }
}

.widget-title-size4 {
    --widget-title-color: #333333;
    --widget-title-pad: 10px;
    --widget-title-font: 18px;
    --widget-title-lh: 32px;
    --widget-title-transform: uppercase;
    color: var(--widget-title-color, #333333);
    margin-bottom: 0;
    padding: var(--widget-title-pad, 10px);
    line-height: var(--widget-title-lh, 32px);
    font-size: var(--widget-title-font, 18px);
    text-transform: var(--widget-title-transform, uppercase);
}

@media (max-width: 991.98px) {
    .widget-title-size4 {
        --widget-title-lh: 30px;
        --widget-title-pad: 16px 0 18px;
        --widget-title-font: 15px;
    }
}

@media (max-width: 767.98px) {
    .widget-title-size4 {
        --widget-title-lh: 27px;
        --widget-title-pad: 10px 0 12px;
        --widget-title-font: 14px;
    }
}

}
/* source: web/css/common/widget/05-text.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/05-text.css — 內文 widget
 * ============================================================================
 *   載入序：05 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L753~874 切出；phase 2 已完成斷點對齊
 *
 *   [斷點] 原用 992／768 各一個整數 max-width，已改為 991.98／767.98。
 *   ≤768 原為 ≤992 的整段複製，只有段落下外距（14px／12px）與圖片外距（10px／5px）
 *   不同，其餘重複宣告已刪除；.widget-text 的 margin 兩段皆與基礎值相同，一併刪除，
 *   圖片的 width／max-width／height 亦與基礎規則同值同 !important，僅留 margin 差異。
 *
 *   [好覆蓋，issue #874] 內文 widget 的可調值（區塊內距與文字色、段落下外距、
 *   內文圖片外距）已改由 .widget-text（0,1,0）上的自訂屬性承載。
 *   .widget-text p（0,1,1）與 .widget-text p img（0,1,2）這類含元素選擇器的規則
 *   刻意不降權——p／img 是通用元素，去掉 .widget-text 範圍限定會波及全站段落與圖片；
 *   改以變數承載後，主題寫 .widget-text { --widget-text-p-gap: 20px } 即可接管。
 *   RWD 差異一律改為在 @media 內覆寫變數：主題宣告不在 @media 內、同特異性且載入序
 *   在後，覆寫後所有寬度都勝出。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */

/* 內文通用 */

.widget-text {
    --widget-text-pad: 30px 0; /* 內文區塊上下內距 */
    --widget-text-color: #000000; /* 區塊文字色 */
    --widget-text-p-color: #333333; /* 段落文字色 */
    --widget-text-p-gap: 16px; /* 段落下外距 */
    --widget-text-img-gap: 16px auto; /* 內文圖片外距 */
    margin: 0px auto;
    padding: var(--widget-text-pad, 30px 0);
    position: relative;
    color: var(--widget-text-color, #000000);
}

/* body:where(.cms-richtext--widget)：CKEditor 編輯區的富文本容器就是 <body>，前台由外層容器提供的區塊文字色（只對齊預設值；後台個別區塊的自訂色不在編輯區呈現）編輯區吃不到，
   補同值讓兩邊一致；前台 body 不帶此 class，不受影響（#1394）。
   這裡用 body.cms-richtext--widget 而非 :where()：前台 .widget-text 是自身宣告、不受主題 body 文字色影響，
   編輯區要贏過主題的 body／html, body 文字色規則才一致；主題覆寫時沿用同一個選擇器 */
body.cms-richtext--widget {
    color: var(--widget-text-color, #000000);
}

.text-break {
    white-space: pre-line;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.max35words {
    max-inline-size: 70ch;
}

.max40words {
    max-inline-size: 80ch;
}

.widget-text-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

.widget-text-bg {
    width: 100%;
    height: 100%;
    z-index: 2;
}

.widget-text p,
body:where(.cms-richtext--widget) p {
    margin-bottom: var(--widget-text-p-gap, 16px);
    color: var(--widget-text-p-color, #333333);
}

.widget-text p:last-child,
body:where(.cms-richtext--widget) p:last-child {
    margin-bottom: 0px;
}

/* [issue #694 phase 2：!important 經評估後保留]
   本規則的對象是 CKEditor 內文中的圖片，其寬高多半帶 inline style（編輯器縮放會寫
   style="width:XXXpx"）。inline 樣式的優先序高於任何選擇器，**唯有 !important 蓋得掉**，
   拉高特異性無效。此處的設計意圖是「內文圖一律撐滿容器寬、高度自動」，移除 !important
   會讓後台已編好的內容改用編輯器當時的像素寬，屬客戶可見的內容變更，故保留。 */
.widget-text p img {
    width: 100% !important;
    max-width: 100%;
    height: auto !important;
    margin: var(--widget-text-img-gap, 16px auto);
}

/* RWD 差異改為覆寫 .widget-text 上的變數（見檔頭 [好覆蓋]）：
   主題若要單一間距，覆寫變數即可勝出所有寬度 */
@media (max-width: 991.98px) {

    .widget-text,
    body.cms-richtext--widget {
        --widget-text-p-gap: 14px;
        --widget-text-img-gap: 10px auto;
    }

    .widget-text-bg {
        padding: 0;
    }
}

/* 手機：原為 ≤992 區塊的整段複製，僅段落下外距與圖片外距不同，故只保留差異項 */
@media (max-width: 767.98px) {

    .widget-text,
    body.cms-richtext--widget {
        --widget-text-p-gap: 12px;
        --widget-text-img-gap: 5px auto;
    }
}

.widget-text .img-box {
    width: 100%;
    height: auto;
    margin: 0px auto;
}

.widget-text .img-box img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ------------------------------------------------------------------------------------------------ */

/* 文字段落的「文字大小」（issue #879）
 *
 * MUST 同時指定段落本身：.widget-text p 有自己的字級（實測 16px），
 * 只設在外層容器會被它蓋掉——使用者選了字級，畫面上只有內距變、字沒變（2026-08-19 回報）。
 *
 * 刻意不沿用 .widget-title-sizeN：那組是標題用的，除了字級還帶 padding: 10px、
 * text-transform: uppercase 與標題色，套在內文上會多出一圈內距、英文全轉大寫。
 * 級距沿用標題的四階（30／24／20／18）與同一組斷點，數字上與標題一致，
 * 但只動字級與行高，其餘一律交給 .widget-text 既有的規則。
 *
 * 沒有這組 class 時（format 為空）＝沿用佈景主題的內文字級，輸出與改版前逐字相同。
 */
.widget-text-size1,
.widget-text-size1 p {
    font-size: var(--widget-text-font, 30px);
    line-height: var(--widget-text-lh, 1.6);
}

.widget-text-size1 {
    --widget-text-font: 30px;
}

.widget-text-size2,
.widget-text-size2 p {
    font-size: var(--widget-text-font, 24px);
    line-height: var(--widget-text-lh, 1.6);
}

.widget-text-size2 {
    --widget-text-font: 24px;
}

.widget-text-size3,
.widget-text-size3 p {
    font-size: var(--widget-text-font, 20px);
    line-height: var(--widget-text-lh, 1.7);
}

.widget-text-size3 {
    --widget-text-font: 20px;
}

.widget-text-size4,
.widget-text-size4 p {
    font-size: var(--widget-text-font, 18px);
    line-height: var(--widget-text-lh, 1.7);
}

.widget-text-size4 {
    --widget-text-font: 18px;
}

@media (max-width: 991.98px) {
    .widget-text-size1 {
        --widget-text-font: 24px;
    }

    .widget-text-size2 {
        --widget-text-font: 20px;
    }

    .widget-text-size3 {
        --widget-text-font: 18px;
    }

    .widget-text-size4 {
        --widget-text-font: 16px;
    }
}

@media (max-width: 767.98px) {
    .widget-text-size1 {
        --widget-text-font: 20px;
    }

    .widget-text-size2 {
        --widget-text-font: 18px;
    }

    .widget-text-size3 {
        --widget-text-font: 16px;
    }

    .widget-text-size4 {
        --widget-text-font: 15px;
    }
}

}
/* source: web/css/common/widget/06-img-text-a.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/06-img-text-a.css — 圖文 A（含 A1~A4 變體與手機統一修正）
 * ============================================================================
 *   載入序：06 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L875~1251 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] 原有三條 imgTextA 規則（按鈕列置中、按鈕內部 flex、內文下外距）
 *   位於 19-layout-hooks.css，靠「載入序在後」才能勝過本檔的等價宣告。phase 2 已將三者
 *   直接併入本檔對應規則（以下皆標註「#706 併入」），19-layout-hooks.css 不再含 imgTextA
 *   規則，本模組與 19 之間無順序相依。
 *
 *   [容器寬度] blade 以 .widget-shell-flush 讓圖文 A **滿版**（無寬度上限），此為預設與既有
 *   資料的行為。phase 2 曾把標準容器階梯（--cms-container-* token）無條件套上，導致既有站台
 *   由滿版變成置中窄框；現改為後台每則 widget 自選（widgets.width_mode），僅「寬版」
 *   （.widget-imgTextA--wide）才套階梯。未達 992 兩種模式皆滿版（輪播在窄螢幕滿版較合理）。
 *
 *   [斷點] 四處 max-width: 768px 已改為 767.98px，消除與 min-width: 768 的 1px 重疊。
 *
 *   [好覆蓋] issue #694：三條基底規則的祖先 .imgTextA-Box 移除，降為單一 class——
 *   .imgTextA-ImgBox / .imgTextA-TextBox / .imgTextA-BtnBox（0,2,0 → 0,1,0，含 ≤767.98
 *   的 TextBox／BtnBox 共 5 條）。實測三者的元素 100% 位於 .imgTextA-Box 內（6/6、8/8、4/4），
 *   移除祖先不改變匹配集。
 *   A1~A4 變體規則（.imgTextAN-Box .imgTextA-*，0,2,0，共 25 條）**刻意維持原樣**：
 *   變體元素同時帶 .imgTextA-Box 與 .imgTextAN-Box（實測 class 為「imgTextA-Box imgTextA1-Box」），
 *   基底降權後變體仍以較高特異性勝出，「基底低、變體高」正是期望的層級結構。
 *
 *   [好覆蓋，issue #874] 本模組所有可調值改由 .widget-imgTextA（0,1,0）上的自訂屬性承載：
 *   區塊內距／容器寬度階梯／卡片底色與比例／文字盒與按鈕列內距／標題與內文的字級行高
 *   顏色間距／按鈕配色內距字級（含 hover）／A1~A4 的圓角與 clip-path／變體上下留白。
 *   祖先範圍限定刻意保留：.title／.text／.btnA 都是通用 class（.item 內與其他 widget 共用），
 *   去掉 .imgTextA-Box 會誤傷；改以變數承載後，主題寫
 *   .widget-imgTextA { --imgTextA-title-font: 30px } 即可接管，毋須複製 0,3,0 長選擇器。
 *
 *   RWD 差異一律改為在 @media 內覆寫 .widget-imgTextA 上的變數，主題宣告不在 @media 內、
 *   同特異性且載入序在後，覆寫後所有寬度都勝出。變體的手機留白（原 A1~A4 四條
 *   padding-top: 25px 與四條 padding-bottom: 25px、四條 is-no-btn padding-bottom: 25px）
 *   改由 --imgTextA-variant-pad-top／-bottom 承接後已無存在必要，一併移除（生效值不變）；
 *   手機強制按鈕 fit-content 那組屬結構性重置（A2／A3 桌機為 width: 100%），維持原樣。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */

/* 圖文widget */

.widget-imgTextA {
    --imgTextA-pad: 20px 0; /* 區塊上下內距 */
    --imgTextA-container-md: var(--cms-container-md); /* ≥992 容器寬 */
    --imgTextA-container-lg: var(--cms-container-lg); /* ≥1200 容器寬 */
    --imgTextA-container-xl: var(--cms-container-xl); /* ≥1400 容器寬 */
    --imgTextA-box-bg: rgb(235, 235, 235); /* 卡片底色 */
    --imgTextA-box-ratio: 1/1; /* 卡片長寬比 */
    --imgTextA-text-pad: 80px 50px 10px 50px; /* 文字盒內距 */
    --imgTextA-btn-pad: 10px 50px 50px 50px; /* 按鈕列內距 */
    --imgTextA-title-font: 24px; /* 標題字級 */
    --imgTextA-title-color: #000000; /* 標題文字色 */
    --imgTextA-title-pad: 8px 20px; /* 標題內距 */
    --imgTextA-title-radius: 99rem; /* 標題圓角 */
    --imgTextA-title-family: var(--cms-font-family-display); /* 標題字體 */
    --imgTextA-title-gap: 20px; /* 標題下外距 */
    --imgTextA-text-font: 16px; /* 內文字級 */
    --imgTextA-text-lh: 32px; /* 內文行高 */
    --imgTextA-text-color: #333333; /* 內文顏色 */
    --imgTextA-text-gap: 1.5rem; /* 內文下外距 */
    --imgTextA-text-max: 14em; /* 變體內文最大行寬 */
    --imgTextA-text-clamp: 4; /* 內文最多顯示行數 */
    --imgTextA-variant-text-lh: 1.5; /* 變體內文行高 */
    --imgTextA-variant-pad-top: 65px; /* 變體文字盒上留白 */
    --imgTextA-variant-pad-bottom: 65px; /* 變體按鈕列下留白 */
    --imgTextA-btn-bg: #ffffff; /* 按鈕底色 */
    --imgTextA-btn-border: 1px solid #303030; /* 按鈕外框 */
    --imgTextA-btn-color: #5a5a5a; /* 按鈕文字色 */
    --imgTextA-btn-inner-pad: 10px 20px; /* 按鈕內距 */
    --imgTextA-btn-font: 14px; /* 按鈕字級 */
    --imgTextA-btn-bg-hover: #303030; /* 按鈕 hover 底色 */
    --imgTextA-btn-border-hover: 1px solid #ffffff; /* 按鈕 hover 外框 */
    --imgTextA-btn-color-hover: #fefefe; /* 按鈕 hover 文字色 */
    --imgTextA-btn2-color: #5a5a5a; /* 次要按鈕文字色 */
    --imgTextA-btn2-pad: 10px 20px; /* 次要按鈕內距 */
    --imgTextA-btn2-font: 16px; /* 次要按鈕字級 */
    --imgTextA-btn2-bg-hover: #303030; /* 次要按鈕 hover 底色 */
    --imgTextA-btn2-color-hover: #fefefe; /* 次要按鈕 hover 文字色 */
    --imgTextA1-radius: 99rem; /* A1 卡片圓角 */
    --imgTextA1-btn-radius: 99rem; /* A1 按鈕圓角 */
    --imgTextA2-radius: 20px; /* A2 卡片圓角 */
    --imgTextA2-btn-radius: 0rem; /* A2 按鈕圓角 */
    --imgTextA3-clip: polygon(15% 0, 85% 0, 100% 15%, 100% 85%, 85% 100%, 15% 100%, 0 85%, 0 15%); /* A3 切角外形 */
    --imgTextA3-btn-radius: 0rem; /* A3 按鈕圓角 */
    --imgTextA4-clip: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); /* A4 六角外形 */
    --imgTextA4-btn-radius: 99rem; /* A4 按鈕圓角 */
    --imgTextA4-title-gap: 5px; /* A4 標題下外距 */
    padding: var(--imgTextA-pad, 20px 0);
    position: relative;
}

/* RWD：改為覆寫上方變數（見檔頭 [好覆蓋]） */
@media (max-width: 767.98px) {
    .widget-imgTextA {
        --imgTextA-text-pad: 30px 20px 20px;
        --imgTextA-btn-pad: 5px 20px 10px;
        --imgTextA-title-font: 16px;
        --imgTextA-title-gap: 2px;
        --imgTextA-text-font: 12px;
        --imgTextA-text-lh: 1.4;
        --imgTextA-btn-font: 12px;
        --imgTextA-btn-inner-pad: 5px 15px;
        --imgTextA-variant-pad-top: 25px;
        --imgTextA-variant-pad-bottom: 25px;
    }
}

.widget-imgTextA-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

/* 容器寬度（issue #694）：blade 的 .widget-shell-flush 本身無寬度上限＝滿版，為預設與既有資料
   （widgets.width_mode 為 null）的行為，即 phase 2 之前的原始樣式。
   phase 2 曾將容器階梯無條件套用於所有圖文 A，使既有站台由滿版變為置中窄框；現改為後台每則
   widget 自選，僅在選了「寬版」（blade 輸出 .widget-imgTextA--wide）時才套用階梯，與 banner／
   product 等其他 widget 對齊左右邊界。背景圖（.widget-imgTextA-bgImg）不受限，兩種模式皆滿版。
   註：原有一組 Volvo（webCss=4）例外——該版型輸出 .container-fluid.p-0 而非 .widget-shell-flush，
   本組規則對其不匹配。該分支已於 issue #962 移除，現全部主題一致走本組規則。 */
.widget-imgTextA--wide .widget-shell-flush {
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 992px) {
    .widget-imgTextA--wide .widget-shell-flush {
        max-width: var(--imgTextA-container-md, var(--cms-container-md));
    }
}

@media (min-width: 1200px) {
    .widget-imgTextA--wide .widget-shell-flush {
        max-width: var(--imgTextA-container-lg, var(--cms-container-lg));
    }
}

@media (min-width: 1400px) {
    .widget-imgTextA--wide .widget-shell-flush {
        max-width: var(--imgTextA-container-xl, var(--cms-container-xl));
    }
}

/* 窄版（issue #879）：內容寬度推廣為通用區塊參數後，圖文 A 也可選「窄」。
   對映其他 widget 的 .container-800 行為——上限固定 --cms-container-narrow（800px）、
   置中，未達該寬度時自然為流體，與 03-container.css 的窄容器一致（該檔亦無斷點分支）。
   與 --wide 一樣只作用於 .widget-shell-flush，背景圖不受限、維持滿版。 */
.widget-imgTextA--narrow .widget-shell-flush {
    max-width: var(--imgTextA-container-narrow, var(--cms-container-narrow));
    margin-left: auto;
    margin-right: auto;
}



/* 圖+文A通用 */

.imgTextA-Box {
    width: 100%;
    height: 100%;
    background: var(--imgTextA-box-bg, rgb(235, 235, 235));
    aspect-ratio: var(--imgTextA-box-ratio, 1/1);
}

.imgTextA-ImgBox {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.imgTextA-Box .imgTextA-ImgBox .imgTextA-Img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
}

.item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.imgTextA-TextBox {
    width: 100%;
    height: 100%;
    overflow: hidden;
    padding: var(--imgTextA-text-pad, 80px 50px 10px 50px);
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: start;
    align-items: center;
}

.imgTextA-BtnBox {
    width: 100%;
    height: fit-content;
    overflow: hidden;
    padding: var(--imgTextA-btn-pad, 10px 50px 50px 50px);
    position: relative;
    display: flex;
    flex-direction: column;
    /* #706 併入：原為 start，由 19-layout-hooks.css 後載入覆寫為 center
       （取代 blade 移除的 d-flex justify-content-center utility），此處直接採最終值 */
    justify-content: center;
    align-items: center;
}

.imgTextA-Box .imgTextA-BtnBox .btnA {
    width: fit-content;
    background-color: var(--imgTextA-btn-bg, #ffffff);
    border: var(--imgTextA-btn-border, 1px solid #303030);
    color: var(--imgTextA-btn-color, #5a5a5a);
    padding: var(--imgTextA-btn-inner-pad, 10px 20px);
    text-align: center;
    text-decoration: none;
    /* #706 併入：原為 inline-block，由 19-layout-hooks.css 後載入覆寫為 flex 並補
       justify-content／align-items（取代 blade 移除的 d-flex 系 utility），此處直接採最終值 */
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: var(--imgTextA-btn-font, 14px);
    margin: 4px auto;
    cursor: pointer;
    height: fit-content;
}

.imgTextA-Box .imgTextA-BtnBox .btnA:hover {
    background-color: var(--imgTextA-btn-bg-hover, #303030);
    border: var(--imgTextA-btn-border-hover, 1px solid #ffffff);
    color: var(--imgTextA-btn-color-hover, #fefefe);
}

.btnA2 {
    width: fit-content;
    color: var(--imgTextA-btn2-color, #5a5a5a);
    padding: var(--imgTextA-btn2-pad, 10px 20px);
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: var(--imgTextA-btn2-font, 16px);
    margin: 4px auto;
    cursor: pointer;
    height: fit-content;
}

.btnA2:hover {
    background-color: var(--imgTextA-btn2-bg-hover, #303030);
    color: var(--imgTextA-btn2-color-hover, #fefefe);
}



.imgTextA-Box .imgTextA-TextBox .title {
    font-size: var(--imgTextA-title-font, 24px);
    color: var(--imgTextA-title-color, #000000);
    width: fit-content;
    padding: var(--imgTextA-title-pad, 8px 20px);
    border-radius: var(--imgTextA-title-radius, 99rem);
    font-family: var(--imgTextA-title-family, var(--cms-font-family-display));
    font-display: swap;
    margin-bottom: var(--imgTextA-title-gap, 20px);
    font-weight: 700;
}

.imgTextA-Box .imgTextA-TextBox .text {
    font-size: var(--imgTextA-text-font, 16px);
    line-height: var(--imgTextA-text-lh, 32px);
    color: var(--imgTextA-text-color, #333333);
    /* #706 併入：原位於 19-layout-hooks.css，取代 blade 移除的 mb-4 utility
       （Bootstrap 值 1.5rem 生效，非專案 .mb-4 的 4px）。各變體規則未覆寫本屬性 */
    margin-bottom: var(--imgTextA-text-gap, 1.5rem);
}

/* 手機：字級與行高已改由變數承接，本區塊只留桌機沒有的行數裁切宣告 */
@media (max-width: 767.98px) {
    .imgTextA-Box .imgTextA-TextBox .text {
        display: -webkit-box;
        -webkit-line-clamp: var(--imgTextA-text-clamp, 4);
        line-clamp: var(--imgTextA-text-clamp, 4);
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
}

/* ---- 文字對齊（widget_imgtext_langs.align，issue #879 2026-08-25）------------
   使用者：「圖文A 文字樣式 文字預覽靠左靠右好像沒差?」——實測他是對的。

   `text-start` / `text-center` / `text-end` 是 Bootstrap 的工具類，computed 的
   `text-align` 一直都正確；沒作用的原因在版面：`.imgTextA-TextBox` 是 column flex 且
   `align-items: center`，內文又有 `max-inline-size: 14em` 的行長上限，於是文字方塊被縮成
   固定 224px 並置中，`text-align` 沒有任何空餘寬度可以對齊。多行時只有折行的尾巴會動，
   單行或剛好填滿的文字則完全看不出差別。

   使用者選定的解法：**行長上限保留**（那是 #706 刻意加的可讀性限制），改由對齊決定
   **整個文字方塊**擺左／中／右，標題與內文一起動。

   **選擇器刻意提高到 (0,4,0)**：主題會把標題寫成 `margin: 0 auto` 強制置中（kgtwbeef），
   而 flex 容器裡的 auto margin **勝過 align-items**，(0,3,0) 壓不住；寫在 common 以更高
   特異性一次涵蓋所有主題，才不必每個主題各補一份、也不會漏掉之後新增的主題。

   **按鈕列（.imgTextA-BtnBox）刻意不跟著動**：它是文字方塊之外的另一個容器，本設定的名稱
   與說明都是「本區塊內文字的水平對齊」。要連按鈕一起移是另一個決定。 */

.imgTextA-Box .imgTextA-TextBox.text-start {
    align-items: flex-start;
}

.imgTextA-Box .imgTextA-TextBox.text-center {
    align-items: center;
}

.imgTextA-Box .imgTextA-TextBox.text-end {
    align-items: flex-end;
}

/* 標題的置中是主題以 auto margin 做的，非置中時 MUST 歸零，否則它會無視 align-items */
.imgTextA-Box .imgTextA-TextBox.text-start .title,
.imgTextA-Box .imgTextA-TextBox.text-end .title {
    margin-inline: 0;
}

/* 圖+文A-1 */

.imgTextA1-Box {
    border-radius: var(--imgTextA1-radius, 99rem);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.imgTextA1-Box .imgTextA-ImgBox {
    border-radius: var(--imgTextA1-radius, 99rem);
}

.imgTextA1-Box .imgTextA-TextBox {
    height: fit-content;
    padding-top: var(--imgTextA-variant-pad-top, 65px);
    padding-bottom: 0px;
}

.imgTextA1-Box .imgTextA-BtnBox {
    height: fit-content;
    padding-bottom: var(--imgTextA-variant-pad-bottom, 65px);
    padding-top: 0px;
}

.imgTextA1-Box .imgTextA-BtnBox .btnA {
    border-radius: var(--imgTextA1-btn-radius, 99rem);
}

.imgTextA1-Box .imgTextA-TextBox .text {
    max-inline-size: var(--imgTextA-text-max, 14em);
    display: -webkit-box;
    -webkit-line-clamp: var(--imgTextA-text-clamp, 4);
    line-clamp: var(--imgTextA-text-clamp, 4);
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: var(--imgTextA-variant-text-lh, 1.5);
}

/* 圖+文A-2 */


.imgTextA2-Box {
    border-radius: var(--imgTextA2-radius, 20px);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.imgTextA2-Box .imgTextA-ImgBox {
    border-radius: var(--imgTextA2-radius, 20px);
}

.imgTextA2-Box .imgTextA-TextBox {
    height: fit-content;
    padding-top: var(--imgTextA-variant-pad-top, 65px);
    padding-bottom: 0px;
}

.imgTextA2-Box .imgTextA-BtnBox {
    height: fit-content;
    padding-bottom: var(--imgTextA-variant-pad-bottom, 65px);
    padding-top: 0px;
}

.imgTextA2-Box .imgTextA-BtnBox .btnA {
    border-radius: var(--imgTextA2-btn-radius, 0rem);
    width: 100%;
}

.imgTextA2-Box .imgTextA-TextBox .text {
    max-inline-size: var(--imgTextA-text-max, 14em);
    display: -webkit-box;
    -webkit-line-clamp: var(--imgTextA-text-clamp, 4);
    line-clamp: var(--imgTextA-text-clamp, 4);
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: var(--imgTextA-variant-text-lh, 1.5);
}

/* 圖+文A-3 */


.imgTextA3-Box {
    clip-path: var(--imgTextA3-clip, polygon(15% 0, 85% 0, 100% 15%, 100% 85%, 85% 100%, 15% 100%, 0 85%, 0 15%));
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.imgTextA3-Box .imgTextA-ImgBox {
    clip-path: var(--imgTextA3-clip, polygon(15% 0, 85% 0, 100% 15%, 100% 85%, 85% 100%, 15% 100%, 0 85%, 0 15%));
}

.imgTextA3-Box .imgTextA-TextBox {
    height: fit-content;
    padding-top: var(--imgTextA-variant-pad-top, 65px);
    padding-bottom: 0px;
}

.imgTextA3-Box .imgTextA-BtnBox {
    height: fit-content;
    padding-bottom: var(--imgTextA-variant-pad-bottom, 65px);
    padding-top: 0px;
}

.imgTextA3-Box .imgTextA-BtnBox .btnA {
    border-radius: var(--imgTextA3-btn-radius, 0rem);
    width: 100%;
}

.imgTextA3-Box .imgTextA-TextBox .text {
    max-inline-size: var(--imgTextA-text-max, 14em);
    display: -webkit-box;
    -webkit-line-clamp: var(--imgTextA-text-clamp, 4);
    line-clamp: var(--imgTextA-text-clamp, 4);
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: var(--imgTextA-variant-text-lh, 1.5);
}

/* 圖+文A-4 */


.imgTextA4-Box {
    clip-path: var(--imgTextA4-clip, polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%));
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.imgTextA4-Box .imgTextA-ImgBox {
    clip-path: var(--imgTextA4-clip, polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%));
}

.imgTextA4-Box .imgTextA-TextBox {
    height: fit-content;
    padding-top: var(--imgTextA-variant-pad-top, 65px);
    padding-bottom: 0px;
}

.imgTextA4-Box .imgTextA-TextBox .title {
    margin-bottom: var(--imgTextA4-title-gap, 5px);
}

.imgTextA4-Box .imgTextA-TextBox .text {
    max-inline-size: var(--imgTextA-text-max, 14em);
    display: -webkit-box;
    -webkit-line-clamp: var(--imgTextA-text-clamp, 4);
    line-clamp: var(--imgTextA-text-clamp, 4);
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: var(--imgTextA-variant-text-lh, 1.5);
}

.imgTextA4-Box .imgTextA-BtnBox {
    height: fit-content;
    padding-bottom: var(--imgTextA-variant-pad-bottom, 65px);
    padding-top: 0px;
}

.imgTextA4-Box .imgTextA-BtnBox .btnA {
    border-radius: var(--imgTextA4-btn-radius, 99rem);
}

/* 圖文A 無按鈕時補齊底部留白，避免文字區塊下沉 */
.imgTextA1-Box .imgTextA-TextBox.is-no-btn,
.imgTextA2-Box .imgTextA-TextBox.is-no-btn,
.imgTextA3-Box .imgTextA-TextBox.is-no-btn,
.imgTextA4-Box .imgTextA-TextBox.is-no-btn {
    padding-bottom: var(--imgTextA-variant-pad-bottom, 65px);
}

/* 圖文A 手機版統一樣式修正 - 確保所有變體 A1-A4 在手機上都能顯示四行且不跑版
   上下留白已改由 --imgTextA-variant-pad-top／-bottom 承接，本區塊只留結構性重置：
   A2／A3 桌機把按鈕拉成 width: 100%，手機需強制回 fit-content */
@media (max-width: 767.98px) {

    .imgTextA1-Box .imgTextA-BtnBox .btnA,
    .imgTextA2-Box .imgTextA-BtnBox .btnA,
    .imgTextA3-Box .imgTextA-BtnBox .btnA,
    .imgTextA4-Box .imgTextA-BtnBox .btnA {
        width: fit-content;
    }
}

}
/* source: web/css/common/widget/07-img-text-b.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/07-img-text-b.css — 圖文 B（含 B2 上下顛倒與共用輪播骨架）
 * ============================================================================
 *   載入序：07 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L1252~1336 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] .imgTextB-cell（輪播項外殼，#706 取代 .col-12）
 *   原位於 19-layout-hooks.css，phase 2 已收攏至本檔。
 *
 *   [容器寬度] 圖文 B 的 blade 外殼為 .container.container-flush，寬度本就跟隨站台
 *   .container 標準階梯（1170／1320），phase 2 無需另行收斂。
 *
 *   [斷點] 靜態排列原用 1000／600 兩個刻度外斷點，已收斂為標準刻度 992／576。
 *
 *   #1399 Q 起所有資料量都輸出 .owl-carousel-imgTextB 與 .imgTextB-cell；
 *   少量資料由輪播契約寫入 data-carousel-state="static"，不再切換 DOM。
 *
 *   [好覆蓋] issue #694：.imgTextB-Box .imgTextB-BoxTitle（0,2,0）降為 .imgTextB-BoxTitle（0,1,0）。
 *   祖先為冗餘範圍限定——實測該 class 的元素 100%% 位於 .imgTextB-Box 內（14/14），
 *   移除祖先不改變匹配集。B2 變體規則 .imgTextB2-Box .imgTextB-BoxTitle（0,2,0）仍在後方，
 *   維持勝出；其子代規則（.triangle-down / .imgTextB-Title）目標為通用 class，保留範圍限定。
 *
 *   [好覆蓋，issue #874] 本模組內容樣式由 .widget-imgTextB（0,1,0）上的自訂屬性承載；
 *   欄數與間距則統一由 23-carousel.css 的 --carousel-* 契約提供。
 *   .triangle-down 與 .imgTextB-Title 的規則刻意保留祖先範圍限定（前者是通用形狀 class、
 *   後者的 B2 變體需靠祖先分流）。
 * ==========================================================================*/

/* 圖+文B通用 */

.widget-imgTextB {
    --imgTextB-pad: 20px 0; /* 區塊上下內距 */
    --imgTextB-gap: 16px; /* 卡片下外距 */
    --imgTextB-title-bg: #ffffff; /* 標題膠囊底色 */
    --imgTextB-title-pad: 10px 20px; /* 標題膠囊內距 */
    --imgTextB-title-radius: 99rem; /* 標題膠囊圓角 */
    --imgTextB-title-gap: 20px; /* 標題膠囊下外距 */
    --imgTextB2-title-gap: 20px; /* B2（上下顛倒）標題膠囊上外距 */
    --imgTextB-triangle-size: 6px; /* 三角形半寬 */
    --imgTextB-triangle-height: 10px; /* 三角形高 */
    --imgTextB-triangle-color: #202020; /* 三角形顏色 */
    --imgTextB-title-family: var(--cms-font-family-display); /* 標題字體 */
    --imgTextB-title-inline-gap: 10px; /* 標題左右間距 */
}

.imgTextB-Box {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    margin-bottom: var(--imgTextB-gap, 16px);
}

.imgTextB-BoxTitle {
    width: -moz-fit-content;
    width: fit-content;
    background: var(--imgTextB-title-bg, #ffffff);
    padding: var(--imgTextB-title-pad, 10px 20px);
    border-radius: var(--imgTextB-title-radius, 99rem);
    margin-bottom: var(--imgTextB-title-gap, 20px);
    display: flex;
    justify-content: center;
    align-items: center;
}

.imgTextB-Box .imgTextB-BoxTitle .triangle-down {
    width: 0;
    height: 0;
    border-left: var(--imgTextB-triangle-size, 6px) solid transparent;
    border-right: var(--imgTextB-triangle-size, 6px) solid transparent;
    border-top: var(--imgTextB-triangle-height, 10px) solid var(--imgTextB-triangle-color, #202020);
}

/* phase 2 清理：移除註解狀態的廢棄宣告 font-size: 16px / color: #252525
   （字級與顏色實際由 common/base.css 承接，啟用會改變現況視覺） */
/* [好覆蓋 #874] 原 .imgTextB-Box .imgTextB-BoxTitle .imgTextB-Title（0,3,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.imgTextB-Title {
    font-family: var(--imgTextB-title-family, var(--cms-font-family-display));
    font-display: swap;
    margin-bottom: 0px;
    margin-left: var(--imgTextB-title-inline-gap, 10px);
    margin-right: var(--imgTextB-title-inline-gap, 10px);
}

.imgTextB-imgBox {
    position: relative;
    flex: 0 0 auto;
    width: 100%;
    height: auto;
    aspect-ratio: var(--imgTextB-image-ratio, 4 / 3);
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    clip-path: none;
}

.imgTextB-imgBox > :is(a, picture, .imgTextB-img, .imgTextB-Img),
.imgTextB-imgBox > a > picture {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
}

.imgTextB-imgBox > a > :is(.imgTextB-img, .imgTextB-Img),
.imgTextB-imgBox > picture > :is(.imgTextB-img, .imgTextB-Img),
.imgTextB-imgBox > a > picture > :is(.imgTextB-img, .imgTextB-Img) {
    position: static;
}

/* 圖文 B 專供去背 PNG：所有主題只能調整比例與排列，不得替圖片加框或裁成造型。 */
.imgTextB-img,
.imgTextB-Img {
    display: block;
    width: 100%;
    height: 100%;
    -o-object-fit: contain;
    object-fit: contain;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    clip-path: none;
    object-position: center;
}

.widget-imgTextB {
    padding: var(--imgTextB-pad, 20px 0);
    position: relative;
}

.widget-imgTextB-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

/* 圖+文B2 上下顛倒 */

.imgTextB2-Box {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column-reverse;
}

.imgTextB2-Box .imgTextB-BoxTitle {
    margin-top: var(--imgTextB2-title-gap, 20px);
}

.imgTextB2-Box .imgTextB-BoxTitle .triangle-down {
    transform: rotate(180deg);
}


/* 靜態與輪播共用同一個項目外殼；欄寬、間距與換列由 23-carousel.css 的
   --carousel-* 契約處理，這裡只保留模組內容寬度。 */

/* ----------------------------------------------------------------------------
 * 共用項目外殼（所有資料量；phase 2 自 19-layout-hooks.css 收攏至此）
 *
 * 骨架語意化（issue #706）：取代 blade 移除的 .col-12。單獨使用的 col-12 僅供寬度，
 * 無 .row 父層即無 gutter padding，故不補 padding。
 * -------------------------------------------------------------------------- */

.imgTextB-cell {
    width: 100%;
}

}
/* source: web/css/common/widget/08-img-text-c.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/08-img-text-c.css — 圖文 C（1:1 與 16:9 兩種比例）
 * ============================================================================
 *   載入序：08 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L1337~1471 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] 原位於 19-layout-hooks.css 的 imgTextC 兩欄格線與文字盒／按鈕
 *   規則（共 6 條，#706 取代 blade 移除的 .row + col-lg-* + d-flex 系 utility）已併入本檔；
 *   09~18 各檔皆無 imgTextC 選擇器，提前載入不改變生效值（已實測）。
 *
 *   [容器寬度統一] 原本 blade 以 .widget-shell-fluid 讓圖文 C **滿版**，再以
 *   .imgTextC-padding 的 0 100px／1.5rem 兩段內距內縮。phase 2 起改為與其他 widget 相同
 *   的標準容器階梯（--cms-container-*），內距統一為單一數值，避免雙重內縮。
 *
 *   [斷點] 原用 1440／740 兩個刻度外斷點，已收斂為標準刻度 1400／768。
 *
 *   [rem 注意] 專案 root font-size 由 common token 設為 62.5%，1rem = 10px。
 *   原 padding: 1.5rem 實際等於 15px；本檔已改寫為 px，避免受 root 字級變動影響。
 *
 *   [好覆蓋] issue #694：.imgTextC-textBox 的三條子代規則降為單一 class——
 *   .imgTextC-Title / .imgTextC-Content / .imgTextC-BtnBox（0,2,0 → 0,1,0）。
 *   三者皆為 imgTextC 專有 class，實測匹配集與帶祖先時相同。
 *   .imgTextC-BtnBox .btnC 維持不動：.btnC 是跨 widget 共用的按鈕 class，需要範圍限定。
 * ==========================================================================*/

/* 圖+文c通用 */

.widget-imgTextC {
    position: relative;
    padding: 20px 0;
}

.widget-imgTextC-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

/* 容器寬度統一（issue #694 phase 2）：blade 的 .widget-shell-fluid 本身無寬度上限，
   於圖文 C 情境下改套用標準容器階梯，與其他 widget 對齊左右邊界。
   背景圖（.widget-imgTextC-bgImg）不受限，維持滿版。 */
.widget-imgTextC .widget-shell-fluid {
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 992px) {
    .widget-imgTextC .widget-shell-fluid {
        max-width: var(--cms-container-md);
    }
}

@media (min-width: 1200px) {
    .widget-imgTextC .widget-shell-fluid {
        max-width: var(--cms-container-lg);
    }
}

@media (min-width: 1400px) {
    .widget-imgTextC .widget-shell-fluid {
        max-width: var(--cms-container-xl);
    }
}

/* 內距：原為「>1440 用 0 100px、741~1440 用 1.5rem、≤740 用 15px 0」三段。
   容器寬度已由上方階梯負責外緣內縮，此處只保留單一內距；手機維持左右不留白。 */
.imgTextC-padding {
    padding: 15px;
}

@media (max-width: 767.98px) {
    .imgTextC-padding {
        padding: 15px 0;
    }
}

/* 負 gutter 的收邊（issue #1014）
 *
 * .imgTextC-row 鏡射 BS .row 的做法帶 margin: 0 -7.5px 來抵銷欄的內距；桌機由
 * .imgTextC-padding 的 15px 左右內距吃掉，但上面的手機規則把左右內距歸零，負 gutter
 * 就直接突出容器左右各 7.5px，把文件 scrollWidth 撐大（#1014 實測：485px 視窗下 493），
 * 全頁截圖與部分手機瀏覽器右側會露出一條空白帶。
 *
 * 突出的 7.5px 是欄內距的空白區、不含任何內容，故用 overflow-x 收邊而非補回內距——
 * 補內距會讓手機版的圖文 C 從貼齊螢幕邊緣變成內縮 15px，那是視覺變更不是修 bug。
 * 只收 x 軸，overflow-y 維持 visible。 */
.imgTextC-padding {
    overflow-x: clip;
}

/* 圖片盒：原有 width: 650px 與 ≤1440 改 100% 兩段。650px 在任何視口下都大於實際欄寬，
   恆被 flex 收縮至欄寬，與 100% 等價，故統一為 100%（已於 20 個視口實測確認）。 */
.imgTextC-imgBox {
    width: 100%;
    height: auto;
    aspect-ratio: 1/1;
}

.imgTextC-img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
}

/* phase 2 清理：移除註解狀態的廢棄宣告 max-width: 80% / 70% / 85%
   （現行為 max-width: 100%，啟用註解值會改變現況版面） */
.imgTextC-textBox {
    max-width: 100%;
}

@media (max-width: 1399.98px) {
    .imgTextC-textBox {
        padding: 30px 0;
    }
}

@media (max-width: 767.98px) {
    .imgTextC-textBox {
        padding: 30px 15px;
    }
}

/* phase 2 清理：移除註解狀態的廢棄宣告 font-size: 24px（字級由 common/base.css 承接） */
.imgTextC-Title {
    color: #333333;
    padding: 10px;
}

/* phase 2 清理：移除註解狀態的廢棄宣告 font-size: 14px / line-height: 28px */
.imgTextC-Content {
    color: #333333;
    margin-bottom: 30px;
}

.imgTextC-textBox .imgTextC-BtnBox .btnC {
    width: fit-content;
    background-color: #ffffff;
    border: 1px solid #303030;
    color: #5a5a5a;
    padding: 10px 20px;
    text-align: center;
    text-decoration: none;
    /* #706 併入：原為 inline-block，由 19-layout-hooks.css 後載入覆寫為 flex 並補
       justify-content／align-items（取代 blade 移除的 d-flex 系 utility），此處直接採最終值 */
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 14px;
    margin: 4px auto;
    cursor: pointer;
    height: fit-content;
}

.imgTextC-textBox .imgTextC-BtnBox .btnC:hover {
    background-color: #303030;
    border: 1px solid #303030;
    color: #FFFFFF;
}

/* 圖+文c3、4（16:9 比例）
   註：原有 ≤1440 的重複宣告（width/height/aspect-ratio 與基礎值相同）已移除。 */

.imgTextC3-imgBox,
.imgTextC4-imgBox {
    width: 100%;
    height: auto;
    aspect-ratio: 16/9;
}


/* ----------------------------------------------------------------------------
 * 兩欄格線與文字盒（phase 2 自 19-layout-hooks.css 收攏至此）
 *
 * 骨架語意化（issue #706）：取代 blade 移除的 .row + 動態 col-lg-8/7/5/4 + d-flex 系。
 *   --square（1:1）：文字 8/12、圖片 4/12
 *   --wide（16:9） ：文字 7/12、圖片 5/12
 * -------------------------------------------------------------------------- */

.imgTextC-row {
    /* 鏡射 BS .row 的 gutter 變數機制，讓既有 .container 系 gutter 覆寫（base.css legacy
       30px 規則、主題 container 變數）對本格線持續生效。
       註：受 root 62.5% 影響，1.5rem 實際為 15px */
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    /* 欄寬以自訂屬性承載（issue #874）：手機一律各自滿寬，≥992 依比例修飾類切換。
       主題覆寫這幾個變數（或直接覆寫 .imgTextC-col-text／-img）即可改欄寬配比。 */
    --imgTextC-col-text: 100%;
    --imgTextC-col-img: 100%;
    --imgTextC-col-text-lg: 100%;
    --imgTextC-col-img-lg: 100%;
    display: flex;
    flex-wrap: wrap;
    margin-right: calc(-0.5 * var(--bs-gutter-x));
    margin-left: calc(-0.5 * var(--bs-gutter-x));
}

.imgTextC-row--square {
    --imgTextC-col-text-lg: 66.666667%;
    --imgTextC-col-img-lg: 33.333333%;
}

.imgTextC-row--wide {
    --imgTextC-col-text-lg: 58.333333%;
    --imgTextC-col-img-lg: 41.666667%;
}

@media (min-width: 992px) {
    .imgTextC-row {
        --imgTextC-col-text: var(--imgTextC-col-text-lg);
        --imgTextC-col-img: var(--imgTextC-col-img-lg);
    }
}

.imgTextC-col {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 0 0 auto;
    max-width: 100%;
    padding-right: calc(var(--bs-gutter-x) * 0.5);
    padding-left: calc(var(--bs-gutter-x) * 0.5);
}

/* [好覆蓋，issue #874] 原寫法為 .imgTextC-row--square|--wide > .imgTextC-col-*（0,2,0），
   主題無法以單一 class 覆寫欄寬；改為單一 class ＋ 變數，主題以同名選擇器即可勝出。
   註：原基礎 .imgTextC-col 的 flex-shrink: 0 與 ≥992 的 flex: 0 0 auto 計算結果相同。 */
.imgTextC-col-text {
    width: var(--imgTextC-col-text);
}

.imgTextC-col-img {
    width: var(--imgTextC-col-img);
}

/* 文字盒與按鈕列：取代 blade 移除的 flex-column／d-flex 系 utility */
/* [好覆蓋 #874] 原 .imgTextC-col .imgTextC-textBox（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.imgTextC-textBox {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.imgTextC-BtnBox {
    display: flex;
    justify-content: center;
}

}
/* source: web/css/common/widget/09-img-text-d.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/09-img-text-d.css — 圖文 D（含淺色圖片變體、無連結覆蓋版）
 * ============================================================================
 *   載入序：09 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L1472~1817 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] 原位於 19-layout-hooks.css 的 imgTextD 三條規則（#706 取代 blade
 *   移除的 d-flex 系與 text-start／mb-0 utility）已併入本檔：標題列 flex 排列、卡片
 *   標題與內文靠左、內文下外距歸零。10~18 各檔皆無 imgTextD 選擇器（僅 15-one-image.css
 *   有 .bgTransparent .imgTextD-Box 的背景色，屬不同屬性），提前載入不改變生效值。
 *   [issue #1392] 原 3ffood 專屬 markup（.imgTextD3ffood-*）已移除，所有主題共用同一份 DOM；
 *   三福外觀改由 themes/custom-3ffood/widget.css §6 以共用 class 呈現。
 *   [issue #1393] 卡片相關的輪播規則由 .owl-item 改掛在 .item 上：少量內容改為靜態排列時
 *   （data-carousel-state="static"，不初始化 owl、沒有 .owl-item），卡片仍取得同一組樣式。
 *   每屏張數、間距、少量不輪播門檻見 23-carousel.css。
 *
 *   [容器寬度] 本模組的版面容器是 blade 的 .container.container-1600，寬度已於 phase 2
 *   第一組統一為 03-container.css 的 --cms-container-* 階梯，本檔不另行限制寬度。
 *
 *   [斷點] 原用 992／768 兩個整數 max-width，已改為 991.98／767.98。整併兩處重複：
 *     - .widget-imgTextD 的 ≤768 內距與 ≤992 同值（16px 0），整段移除
 *     - .imgTextD-TitleBox 的 ≤768 區塊僅 margin-bottom 與 ≤992 不同（30px／24px），
 *       其餘重複宣告刪除，只留差異項
 *
 *   [勿改寫] .imgTextD-TitleBox ::after 是後代選擇器（等同 *::after），實際命中的是
 *   h3.imgTextD-Title 的 ::after，而非標題盒自身。看似筆誤，但三個主題都已相依，**兩種
 *   改寫方向都會造成主題破圖**，經 issue #694 phase 2 評估後確定維持原樣：
 *     - 改為 .imgTextD-TitleBox::after（移到標題盒自身）：themes/custom-3ffood/base.css 的
 *       .widget-imgTextD .imgTextD-TitleBox .imgTextD-Title::after 是為了中和 3ffood 全域
 *       h3::after 的 margin-left 而寫，明確依賴飾線長在 h3 上；dgfactor／kgtwbeef 亦以
 *       .imgTextD-TitleBox ::after 改色，改寫後三者全部失準。
 *     - 改為 .imgTextD-TitleBox .imgTextD-Title::after（同一元素、寫法明確化）：特異性由
 *       (0,1,1) 升為 (0,2,1)，會反過來壓過 dgfactor／kgtwbeef 的 (0,1,1) 改色規則。
 *   issue #874 的「裝旋鈕」只替換宣告值、**不動選擇器與特異性**，故上述限制不受影響：
 *   飾線的長度／粗細／顏色／位置改由變數承載後，三主題現有的覆寫規則勝負關係完全不變。
 *
 *   [已移除] owl 內建分頁點的四條規則（.owl-dots／.owl-dots.disabled／.owl-dot span／
 *   .owl-dot.active span，含 ≤992 的縮小版）為死碼：widget.js 對本輪播設 dots: false，
 *   實站量測 .owl-dot 元素不存在，分頁點一律由 JS 另建的 .imgTextD-custom-dots 承擔。
 *
 *   [好覆蓋，issue #874] 本模組所有可調值改由 .widget-imgTextD（0,1,0）上的自訂屬性承載：
 *   區塊內距／標題盒內距與間距／飾線四項／標題色與間距／卡片底色比例與 hover 放大倍率／
 *   覆蓋文字盒內距背景與文字色（含淺色變體）／左右箭頭尺寸間距／分頁點尺寸配色。
 *   RWD 差異（標題盒與飾線在 ≤991.98／≤767.98 的變化）一律改為在 @media 內覆寫變數；
 *   原 ≤991.98 的 ::after 區塊四個屬性全數變數化後已無存在必要，整段移除（生效值不變）。
 * ==========================================================================*/

/* 圖+文D通用 */

.widget-imgTextD {
    --imgTextD-img-fit: cover; /* 卡片圖片的填滿方式 */
    --imgTextD-img-position: center; /* 卡片圖片的定位點 */
    --imgTextD-pad: 20px 0; /* 區塊上下內距 */
    --imgTextD-titlebox-pad: 12px 0; /* 標題盒內距 */
    --imgTextD-titlebox-gap: 10px; /* 標題盒下外距 */
    --imgTextD-line-top: 50%; /* 飾線垂直位置 */
    --imgTextD-line-right: -300px; /* 飾線水平位置 */
    --imgTextD-line-w: 268px; /* 飾線長度 */
    --imgTextD-line-h: 1.2px; /* 飾線粗細 */
    --imgTextD-line-color: #231815; /* 飾線顏色 */
    --imgTextD-title-color: #595757; /* 標題文字色 */
    --imgTextD-title-gap: 0px; /* 標題下外距 */
    --imgTextD-box-bg: rgb(235, 235, 235); /* 卡片底色 */
    --imgTextD-box-ratio: 458/354; /* 卡片長寬比 */
    --imgTextD-hover-scale: 1.05; /* 滑過時圖片放大倍率 */
    --imgTextD-cover-transition: 0.2s ease-in-out; /* 圖片轉場 */
    --imgTextD-textbox-pad: 20px; /* 覆蓋文字盒內距 */
    --imgTextD-textbox-bg: transparent; /* 覆蓋文字盒背景 */
    --imgTextD-text-color: #ffffff; /* 覆蓋文字色 */
    --imgTextD-text-gap: 4px; /* 覆蓋標題下外距 */
    --imgTextD-light-pad: 20px 20px 10px 20px; /* 淺色版文字盒內距 */
    --imgTextD-light-bg: linear-gradient(to top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); /* 淺色版漸層 */
    --imgTextD-light-color: #333333; /* 淺色版文字色 */
    --imgTextD-arrow-pad: 1px 6px; /* 左右箭頭內距 */
    --imgTextD-arrow-min-h: 44px; /* 左右箭頭最小高（觸控範圍） */
    --imgTextD-arrow-gap: 10px; /* 左右箭頭間距 */
    --imgTextD-arrow-size: 16px; /* 箭頭圖示尺寸 */
    --imgTextD-dots-gap: 20px; /* 分頁點列上外距 */
    --imgTextD-dot-size: 20px; /* 分頁點尺寸 */
    --imgTextD-dot-radius: 30px; /* 分頁點圓角 */
    --imgTextD-dot-bg: #e0dedc; /* 分頁點顏色 */
    --imgTextD-dot-margin: 5px 7px; /* 分頁點間距 */
    --imgTextD-dot-active-outline: 2px solid #3e3a39; /* 目前頁的外框 */
    padding: var(--imgTextD-pad, 20px 0);
    position: relative;
}

.widget-imgTextD-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

/* RWD：改為覆寫上方變數（見檔頭 [好覆蓋]） */
@media (max-width: 991.98px) {

    .widget-imgTextD {
        --imgTextD-pad: 16px 0;
        --imgTextD-titlebox-pad: 10px 0;
        --imgTextD-titlebox-gap: 24px;
        --imgTextD-line-top: 80%;
        --imgTextD-line-right: 50%;
        --imgTextD-line-w: 1.2px;
        --imgTextD-line-h: 24px;
        --imgTextD-title-gap: 4px;
    }
}

/* 手機：原為 ≤992 區塊的整段複製，僅標題盒下外距不同，故只保留差異項 */
@media (max-width: 767.98px) {

    .widget-imgTextD {
        --imgTextD-titlebox-gap: 30px;
    }
}


/* ----------------------------------------------------------------------------
 * 標題列（標題盒 ＋ 左右箭頭）
 * -------------------------------------------------------------------------- */

/* 取代 blade 移除的 d-flex.justify-content-between.align-items-center
   （issue #706；phase 2 自 19-layout-hooks.css 收攏） */
.imgTextD-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.imgTextD-TitleBox {
    width: fit-content;
    padding: var(--imgTextD-titlebox-pad, 12px 0);
    margin-bottom: var(--imgTextD-titlebox-gap, 10px);
    position: relative;
}

.imgTextD-TitleBox ::after {
    content: "";
    position: absolute;
    top: var(--imgTextD-line-top, 50%);
    right: var(--imgTextD-line-right, -300px);
    width: var(--imgTextD-line-w, 268px);
    height: var(--imgTextD-line-h, 1.2px);
    background: var(--imgTextD-line-color, #231815);
}


/* [好覆蓋 #874] 原 .imgTextD-TitleBox .imgTextD-Title（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.imgTextD-Title {
    color: var(--imgTextD-title-color, #595757);
    margin-bottom: var(--imgTextD-title-gap, 0px);
}

/* 平板以下：標題盒改為滿寬置中（內距／下外距／飾線已由變數承接，此處只留結構性宣告） */
@media (max-width: 991.98px) {

    .imgTextD-TitleBox {
        width: 100%;
        text-align: center;
        position: relative;
    }
}


/* ----------------------------------------------------------------------------
 * 卡片（圖片 ＋ 覆蓋文字）
 * -------------------------------------------------------------------------- */

.imgTextD-Box {
    width: 100%;
    background: var(--imgTextD-box-bg, rgb(235, 235, 235));
    aspect-ratio: var(--imgTextD-box-ratio, 458/354);
    position: relative;
    text-decoration: none;
    display: block;
    cursor: pointer;
}

.imgTextD-Box:hover .imgTextD-ImgBox .imgTextD-Cover {
    transform: scale(var(--imgTextD-hover-scale, 1.05));
}

/* [好覆蓋 #874] 原 .imgTextD-Box .imgTextD-ImgBox（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.imgTextD-ImgBox {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

/* [好覆蓋 #874] 原 .imgTextD-Box .imgTextD-ImgBox .imgTextD-Cover（0,3,0）降為單一 class。
   本條降權會讓 themes/internal-shop-linerp/widget.css 的同名 .imgTextD-Cover（0,1,0，
   transition: transform 0.25s ease）翻轉勝出——該主題規則原本被本條壓住、寫了卻從未生效，
   正是「主題改不動 common」的實例。經產品決策（2026-08-06）確認放行，shopLinerp 的
   imgTextD 圖片 hover 動畫由 all 0.2s ease-in-out 變為 transform 0.25s ease，
   為本次唯一的刻意視覺變更（24 元素 × 3 屬性 = 72 處），其餘五主題零差異。 */
.imgTextD-Cover {
    width: 100%;
    height: 100%;
    -o-object-fit: var(--imgTextD-img-fit, cover);
    object-fit: var(--imgTextD-img-fit, cover);
    object-position: var(--imgTextD-img-position, center);
    transition: var(--imgTextD-cover-transition, 0.2s ease-in-out);
}

/* 深色 .imgTextD-TextBox 變體原僅 Volvo（webCss=4）輸出，該分支已於 issue #962 移除；
   本檔原有的 .imgTextD-TextBox 與其 .title／.text 三條規則因此成為死碼，一併刪除。
   目前 Blade 僅輸出下方的 -Light 變體。 */

/* 淺色圖片專用樣式: 白色漸層背景 + 黑色文字 */
.imgTextD-TextBox-Light {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: var(--imgTextD-light-pad, 20px 20px 10px 20px);
    background: var(--imgTextD-light-bg, linear-gradient(to top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%));
}

.imgTextD-TextBox-Light .title {
    margin-bottom: var(--imgTextD-text-gap, 4px);
    color: var(--imgTextD-light-color, #333333);
    width: fit-content;
    font-weight: 700;
    text-align: left;
}

.imgTextD-TextBox-Light .text {
    color: var(--imgTextD-light-color, #333333);
    width: fit-content;
    font-weight: 400;
    text-align: left;
    margin-bottom: 0;
}


/* ----------------------------------------------------------------------------
 * 輪播（owl-carousel）
 * -------------------------------------------------------------------------- */

.owl-carousel-imgTextD .owl-item {
    height: auto;
}

.owl-carousel-imgTextD .owl-item .item {
    position: relative;
    height: 100%;
}

/* 以下三條掛在 .item 而非 .owl-item：靜態排列（無 owl 包裝）時卡片尺寸與輪播時相同（issue #1393） */
.owl-carousel-imgTextD .item .imgTextD-Box {
    position: relative;
    height: auto;
}

.owl-carousel-imgTextD .item .imgTextD-ImgBox {
    position: relative;
    height: auto;
    aspect-ratio: var(--imgTextD-box-ratio, 458/354);
    overflow: hidden;
}

.owl-carousel-imgTextD .item .imgTextD-Cover {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    max-height: none;
    object-fit: var(--imgTextD-img-fit, cover);
    object-position: var(--imgTextD-img-position, center);
    display: block;
}

/* 無連結時 ImgBox 與 TextBox 為兄弟節點，TextBox 需相對 .item 定位覆蓋在圖片上
   （原併列的深色 .imgTextD-TextBox 選擇器已隨 issue #962 刪除，見本檔上方說明）*/
.owl-carousel-imgTextD .owl-item .item > .imgTextD-TextBox-Light {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
}


/* ----------------------------------------------------------------------------
 * 左右箭頭
 * -------------------------------------------------------------------------- */

/* [好覆蓋 #874] 原 .widget-imgTextD .imgTextD-btn-prev, , .widget-imgTextD .imgTextD-btn-next（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.imgTextD-btn-prev,
.imgTextD-btn-next {
    position: static;
    margin-top: 0;
    background: none;
    border: none;
    padding: var(--imgTextD-arrow-pad, 1px 6px);
    min-height: var(--imgTextD-arrow-min-h, 44px);
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    transition: 0.5s;
}

/* [好覆蓋 #874] 原 .widget-imgTextD .imgTextD-btn-prev（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.imgTextD-btn-prev {
    margin-right: var(--imgTextD-arrow-gap, 10px);
}

.widget-imgTextD .imgTextD-btn-prev img,
.widget-imgTextD .imgTextD-btn-next img {
    width: var(--imgTextD-arrow-size, 16px);
    height: var(--imgTextD-arrow-size, 16px);
    display: block;
}

.owl-nav-custom {
    display: flex;
}

/* issue #706：blade 移除 d-md-flex/d-none 後，斷點對齊 BS md（原 768px 與 d-md-flex 的
   min-width:768 重疊一像素寬度，在 768 恰好由 utility 的 !important 蓋回顯示）；
   767.98 同時符合專案 RWD 慣例（max-width 用下一階 −0.02px），legacy markup 行為不變 */
@media (max-width: 767.98px) {

    .owl-nav-custom {
        display: none;
    }
}


/* ----------------------------------------------------------------------------
 * 分頁點（widget.js 以 JS 產生 .imgTextD-custom-dots；owl 內建 dots 已停用）
 * -------------------------------------------------------------------------- */

.imgTextD-custom-dots {
    display: flex;
    align-items: center;
    margin-top: var(--imgTextD-dots-gap, 20px);
}

.imgTextD-dot {
    width: var(--imgTextD-dot-size, 20px);
    height: var(--imgTextD-dot-size, 20px);
    border-radius: var(--imgTextD-dot-radius, 30px);
    background: var(--imgTextD-dot-bg, #e0dedc);
    margin: var(--imgTextD-dot-margin, 5px 7px);
    display: block;
    cursor: pointer;
    transition: background 0.2s ease;
}

.imgTextD-dot.active {
    outline: var(--imgTextD-dot-active-outline, 2px solid #3e3a39);
    background: var(--imgTextD-dot-bg, #e0dedc);
}

/* 平板以下：自訂點列置中 */
@media (max-width: 991.98px) {

    .imgTextD-custom-dots {
        justify-content: center;
    }
}

}
/* source: web/css/common/widget/10-video.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/10-video.css — 影片 widget（HTML 內嵌 / YouTube）
 *                              ＋ 圖片／影片共用格線
 * ============================================================================
 *   載入序：10 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L1818~1878 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] .widget-media-grid 系列（#706 取代 blade 移除的 .row + 動態
 *   col-md-6／col-md-4／col-12）原位於 19-layout-hooks.css，phase 2 收攏至本檔尾段。
 *   該格線由**影片與圖片兩個 widget 共用**（widgets.blade.php L55／L84），置於兩者
 *   之中較早載入的本檔；11-image.css 檔頭亦有交叉註記。
 *   09~18 各檔皆無同選擇器規則，提前載入不改變生效值（已實測）。
 *
 *   [容器寬度] 影片 widget 的 blade 外殼為 .container.container-{width}，寬度本就
 *   跟隨站台標準階梯（1170／1320），phase 2 無需另行收斂。
 *
 *   [清理] 原有一個只含註解掉規則的空 @media (max-width: 768px) 區塊已移除。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */

/* 影片 */

.widget-video {
    width: 100%;
    height: 100%;
    margin: 0px auto;
    padding: 30px 0;
    position: relative;
}


.widget-video-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

.widget-video-bg {
    width: 100%;
    height: 100%;
}

.video-Box {
    width: 100%;
    height: auto;
    aspect-ratio: 16/9;
    overflow: hidden;
    margin-bottom: 24px;
}


/* 影片html */

/* [好覆蓋 #874] 原 .video-Box .video-Video（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.video-Video {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
}

/* 影片YT */

.video-Box iframe {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
}


/* ----------------------------------------------------------------------------
 * 圖片／影片 widget 共用格線（phase 2 自 19-layout-hooks.css 收攏至此）
 *
 * 骨架語意化（issue #706）：取代 blade 移除的 .row + 動態 col-md-6／col-md-4／col-12。
 *   --1 單欄、--2 兩欄、--3 三欄；欄寬與 gutter 與 Bootstrap 等價。
 * 使用者：.widget-video 與 .widget-image（widgets.blade.php L55／L84）。
 * -------------------------------------------------------------------------- */

.widget-media-grid {
    /* 鏡射 BS .row 的 gutter 變數機制，讓既有 .container 系 gutter 覆寫（base.css legacy
       30px 規則、主題 container 變數）對本格線持續生效。
       註：專案 root font-size 由 common token 設為 62.5%，1.5rem 實際為 15px */
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    /* 欄寬以自訂屬性承載（issue #874）：手機一律單欄，≥768 依修飾類切換。
       主題覆寫這兩個變數（或直接覆寫 .widget-media-grid__item）即可改欄數。 */
    --media-grid-col: 100%;
    --media-grid-col-md: 100%;
    display: flex;
    flex-wrap: wrap;
    margin-right: calc(-0.5 * var(--bs-gutter-x));
    margin-left: calc(-0.5 * var(--bs-gutter-x));
}

.widget-media-grid--2 {
    --media-grid-col-md: 50%;
}

.widget-media-grid--3 {
    --media-grid-col-md: 33.333333%;
}

@media (min-width: 768px) {
    .widget-media-grid {
        --media-grid-col: var(--media-grid-col-md);
    }
}

/* [好覆蓋，issue #874] 原寫法為 .widget-media-grid > *（0,1,0 但帶子代組合器）＋
   .widget-media-grid--2|--3 > *（0,2,0），主題無法以單一 class 覆寫欄寬。
   改為直接命中 blade 輸出的 .widget-media-grid__item（0,1,0）。
   註：原基礎規則的 flex-shrink: 0 與 ≥768 的 flex: 0 0 auto 計算結果相同，統一寫簡寫。 */
.widget-media-grid__item {
    flex: 0 0 auto;
    width: var(--media-grid-col);
    max-width: 100%;
    padding-right: calc(var(--bs-gutter-x) * 0.5);
    padding-left: calc(var(--bs-gutter-x) * 0.5);
}

}
/* source: web/css/common/widget/11-image.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/11-image.css — 純圖片 widget
 * ============================================================================
 *   載入序：11 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L1879~2068 切出；phase 2 已完成斷點統一
 *
 *   [共用格線] 本 widget 的多欄排列使用 .widget-media-grid，該格線與影片 widget 共用，
 *   phase 2 起收攏於 10-video.css 尾段（兩者中較早載入者）。
 *
 *   [容器寬度] blade 外殼為 .container.container-{width}，寬度本就跟隨站台標準階梯
 *   （1170／1320），phase 2 無需另行收斂。
 *
 *   [斷點] 768 → 767.98、992 → 991.98。前者原與格線的 min-width: 768 重疊一像素：
 *   恰好 768px 時格線已切成多欄、widget 卻仍套用手機內距與圖距，修正後一致。
 *
 *   [已移出] 本檔下半部原有一整組 Swiper 套件全域覆寫（.swiper-wrapper／
 *   .swiper-nav-custom／.swiper-other-button-*／.swiper-button-lock／.swiper-pagination*），
 *   並非圖片 widget 專有（圖文 A、商品 B 等其他 swiper 也吃），僅因舊單檔順序落在此處。
 *   已與 16-baseline-override.css 的 .swiper-slide 系一併彙整至 20-carousel-compat.css。
 *   本檔自此只剩純圖片 widget 自身的規則。
 *
 *   [好覆蓋，issue #874] 可調值（區塊上下內距、圖框長寬比與下外距）改由
 *   .widget-image（0,1,0）上的自訂屬性承載，RWD 差異改為在 @media 內覆寫變數。
 *   .img-Box 是與 CKEditor 內容共用的通用 class，選擇器維持原樣不降權。
 * ==========================================================================*/

/* 純圖片 */

.widget-image {
    --widget-image-pad: 30px 0; /* 區塊上下內距 */
    --widget-image-ratio: 16/9; /* 圖框長寬比 */
    --widget-image-gap: 0px; /* 圖框下外距 */
    width: 100%;
    height: 100%;
    margin: 0px auto;
    padding: var(--widget-image-pad, 30px 0);
    position: relative;
}

.widget-image-bgImg {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}

.widget-image-bg {
    width: 100%;
    height: 100%;
}

.img-Box {
    width: 100%;
    height: auto;
    aspect-ratio: var(--widget-image-ratio, 16/9);
    overflow: hidden;
    margin-bottom: var(--widget-image-gap, 0px);
}

/* RWD 改為覆寫 .widget-image 上的變數（見檔頭 [好覆蓋]） */
@media (max-width: 767.98px) {
    .widget-image {
        --widget-image-pad: 15px 0;
        --widget-image-gap: 30px;
    }
}

.img-Box img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover;
}

/* 圖片 widget 內容圖（issue #706）：取代 Bootstrap w-100 工具 class 的語意 class，
   等價 width:100%；高度與裁切仍由上方 .img-Box img 規則承接，各主題均載入本檔，
   視覺不變。 */
/* #1027 補 max-width：同 .widgetImgResponsive,父層為 inline <a> 時 width:100% 會與
   內容互相取值而退回原生尺寸撐破版面,需以 max-width 封住。 */
.widget-image__img {
    width: 100%;
    max-width: 100%;
}

/* 每格圖片可帶連結（issue #879）：連結包在圖框（.img-Box）外層，而 <a> 預設是 inline，
   會讓帶 aspect-ratio 的比例盒落進行內格式化脈絡、與沒有連結的那幾格差一點高度。
   宣告成 block 之後，有連結與沒連結的格子輸出完全一致。
   選擇器限定在圖片／影片共用的格線項目底下，不影響其他 widget 的連結。 */
.widget-media-grid__item > a {
    display: block;
}

}
/* source: web/css/common/widget/12-product-a.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/12-product-a.css — 商品 widget A
 * ============================================================================
 *   載入序：12 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L2069~2182 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] 原位於 19-layout-hooks.css 的 .productA-grid 商品格線（#706 取代
 *   blade 移除的 .row + 動態 col-lg-2／col-lg-3 + col-6）已併入本檔；13~18 各檔皆無
 *   productA 選擇器，提前載入不改變生效值（已實測）。
 *
 *   [容器寬度] 版面容器為 blade 的 .container.container-{1600|800}.shop-content，寬度已於
 *   phase 2 第一組統一為 03-container.css 的 --cms-container-* 階梯，本檔不另行限制寬度。
 *
 *   [斷點] 本檔僅一處 @media（.productA-grid 的 --productA-col 於 min-width: 992px 切換為
 *   桌機欄寬），992 已是標準刻度，無須調整。
 *
 *   [好覆蓋] issue #694：.productA-info .productA-size（0,2,0）降為 .productA-size（0,1,0）。
 *   .productA-size 為 productA 專有 class，全 common 僅此一條規則，祖先純屬特異性灌水。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */
.productA {
    margin: 0px auto;
    padding-top: 30px;
    padding-bottom: 18px;
    position: relative;
}

.productA .shop-content {
    position: relative;
    z-index: 1;
    border-radius: 0;
    background: transparent;
    /* issue #726:左右補 gutter/2(=0.75rem)吸收 .productA-grid 的 BS row 式
       負 margin(-0.5*--bs-gutter-x);#706 扁平化時漏補此吸收層,負 margin 使
       6 欄格柵右緣溢出容器 0.75rem(root 10px 下約 8px),造成全站水平溢出。
       補 padding 後負 margin 被抵消、商品位置不變(零視覺變化),溢出根除。
       上下維持 0(格柵無縱向 gutter)。 */
    padding: 0 calc(0.5 * var(--bs-gutter-x, 1.5rem));
}

/* 商品格線：取代 blade 移除的 .row + 動態 col-lg-2／col-lg-3 + col-6
   （issue #706；phase 2 自 19-layout-hooks.css 收攏）
   --6 = 寬版 1600 六欄、--4 = 800 四欄；手機一律兩欄。
   --bs-gutter-x 沿用 BS 的 1.5rem 寫法。原因是當時需與 Volvo legacy markup 的 .row／col-*
   utility 同值才等價，該分支已於 issue #962 移除，此處僅保留現值不動（改寫為 px 屬獨立的
   數值調整，需另行驗證各主題）。專案 root 為 62.5%（1rem = 10px）故實際
   為 15px；≥992 另由 common/base.css 的 .container .productA-grid 覆寫為 30px。 */
.productA-grid {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    /* 欄寬以自訂屬性承載（issue #874）：手機一律兩欄，≥992 依修飾類切換。
       主題只要覆寫這兩個變數（或直接覆寫 .productA-cell）即可改欄數，
       毋須複製 common 的長選擇器，見下方 [好覆蓋] 說明。 */
    --productA-col: 50%;
    --productA-col-lg: 16.666667%;
    display: flex;
    flex-wrap: wrap;
    margin-right: calc(-0.5 * var(--bs-gutter-x));
    margin-left: calc(-0.5 * var(--bs-gutter-x));
}

/* 寬版 1600 六欄為預設值；資料層只輸出穩定 data-widget-width，欄數由 CSS 決定。 */
.productA-grid[data-widget-width="800"] {
    --productA-col-lg: 25%;
}

@media (min-width: 992px) {
    .productA-grid {
        --productA-col: var(--productA-col-lg);
    }
}

/* [好覆蓋，issue #874] 本規則刻意維持單一 class（0,1,0）：原寫法為
   .productA-grid > .productA-cell（0,2,0）＋舊版寬度 modifier > .productA-cell（0,2,0），
   主題層即使寫 .productA-cell 也蓋不掉（zengarden 想做的單欄雜誌式在 ≥992 就是這樣失效的）。
   改成單一 class 後，主題以同名選擇器即可靠載入序勝出。
   註：原基礎規則寫的是 flex-shrink: 0（flex-grow 預設 0、flex-basis 預設 auto），
   與 ≥992 區塊的 flex: 0 0 auto 計算結果相同，故此處統一寫 flex 簡寫。 */
.productA-cell {
    flex: 0 0 auto;
    width: var(--productA-col);
    max-width: 100%;
    padding-right: calc(var(--bs-gutter-x) * 0.5);
    padding-left: calc(var(--bs-gutter-x) * 0.5);
}

.productA-Bg {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 0;
    object-fit: cover;
}

.productA-item {
    width: 100%;
    height: fit-content;
    background: #fff;
    padding: 5px;
    margin-bottom: 12px;
    cursor: pointer;
    transition: all 0.3s ease-in-out;
}

.productA-item:hover {
    background: #f8f8f8;
}

.productA-item:hover .productA-img img {
    filter: brightness(1.08);
}


.productA-imgBox {
    width: 100%;
    height: fit-content;
    background: #ffffff;
    margin-bottom: 20px;
}

.productA-img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1/1;
    overflow: hidden;
}

.productA-img img {
    width: 100%;
    height: 100%;
    -o-object-fit: contain;
    object-fit: contain;
    transition: all 0.3s ease-in-out;
}

.productA-size {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 12px;
}

.size-item {
    flex-grow: 1;
    width: fit-content;
    height: fit-content;
    border: 1px solid #303030;
    color: #5a5a5a;
    padding: 8px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 12px;
    margin: 4px 2px;
    cursor: pointer;
}

.productA-title {
    text-align: center;
    color: #333333;
    margin-bottom: 8px;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}

.productA-price {
    text-align: center;
    font-size: 16px;
    color: #353535;
    font-weight: 300;
}

}
/* source: web/css/common/widget/13-product-b.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/13-product-b.css — 商品 widget B
 * ============================================================================
 *   載入序：13 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L2183~2403 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] 原位於 19-layout-hooks.css 的 productB 卡片文字規則（#706 取代
 *   blade 移除的 text-start／mb-0 utility）已併入本檔 .text／.price 的規則本體；
 *   14~18 各檔皆無 productB 選擇器，提前載入不改變生效值（已實測）。
 *
 *   [容器寬度] 版面容器為 blade 的 .container.container-{1600|800}，寬度已於 phase 2
 *   第一組統一為 03-container.css 的 --cms-container-* 階梯，本檔不另行限制寬度。
 *
 *   [斷點] 原用 992／768 三個整數 max-width，已改為 991.98／767.98。整併兩處重複：
 *     - .productB 的 ≤768 內距與 ≤992 同值（16px 0），整段移除
 *     - .productB-TitleBox 的 ≤768 區塊僅 margin-bottom 與 ≤992 不同（30px／24px），
 *       其餘重複宣告刪除，只留差異項
 *
 *   [保留裁決，issue #862] .productB-TitleBox／.productB-Title 沒有 Blade／JS 輸出，正式站
 *   後台可見內容亦為 0 命中；但它們與 blockTitle*／timeline* 同屬 CKEditor legacy 內容版型
 *   詞彙，依 B 類最終裁決保留為可復用相容樣式庫，不再列為待驗死碼。themes/kgtwbeef 的
 *   對應品牌覆寫亦須一併保留，避免歷史或重新貼入的編輯器內容失去樣式。
 *
 *   [勿改寫] .productB-TitleBox ::after 與圖文 D 同屬 legacy 後代選擇器（等同 *::after），
 *   命中的是 h3.productB-Title 的 ::after。本檔未給它 position，且桌機無基礎規則，
 *   ::after 維持 display: inline 使寬高不生效——實際不算繪任何東西；
 *   themes/custom-kgtwbeef/widget.css 仍以同選擇器改色。移除或改寫都會動到主題相依，暫不動。
 *   issue #874 只把宣告值換成變數、不動選擇器與特異性，主題相依不受影響。
 *
 *   [好覆蓋] issue #694：兩組降為單一 class——.productB-TitleBox .productB-Title → .productB-Title
 *   （含 ≤991.98 區塊共 2 條）、.productB-Box .productB-ImgBox → .productB-ImgBox。
 *   兩者皆為 productB 專有 class；.productB-Cover 的 hover/子代規則（0,3,0 / 0,4,0）
 *   維持原樣，它們要靠祖先表達「卡片 hover 時」的狀態語意。
 *
 *   [好覆蓋，issue #874] 本模組所有可調值改由 .productB（0,1,0）上的自訂屬性承載：
 *   區塊內距／標題盒內距間距與飾線／標題字級與配色／卡片比例與 hover 放大倍率／
 *   覆蓋文字盒內距漸層與文字色／窄容器（container-800）下的字級／價格字級與外距／
 *   分頁點尺寸。RWD 差異一律改為在 @media 內覆寫變數。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */


.productB {
    --productB-nav-offset: -48%; /* 左右導覽鈕（swiper button）的垂直位移 */
    --productB-img-fit: contain; /* 卡片圖片的填滿方式 */
    --productB-img-position: center; /* 卡片圖片的定位點 */
    --productB-pad: 40px 0 20px; /* 區塊內距 */
    --productB-titlebox-pad: 12px 0; /* 標題盒內距 */
    --productB-titlebox-gap: 10px; /* 標題盒下外距 */
    --productB-title-font: 28px; /* 標題字級 */
    --productB-title-color: #595757; /* 標題文字色 */
    --productB-title-gap: 0px; /* 標題下外距 */
    --productB-line-top: 80%; /* 飾線垂直位置（平板以下才有規則） */
    --productB-line-right: 50%; /* 飾線水平位置 */
    --productB-line-w: 1.2px; /* 飾線寬 */
    --productB-line-h: 24px; /* 飾線高 */
    --productB-line-color: #231815; /* 飾線顏色 */
    --productB-box-ratio: 1/1; /* 卡片長寬比 */
    --productB-hover-scale: 1.05; /* 滑過時圖片放大倍率 */
    --productB-cover-transition: 0.2s ease-in-out; /* 圖片轉場 */
    --productB-textbox-pad: 20px; /* 覆蓋文字盒內距 */
    --productB-textbox-bg: linear-gradient(0deg, rgb(0 0 0 / 70%) 9%, rgba(255, 255, 255, 0) 100%); /* 覆蓋文字盒漸層 */
    --productB-text-color: #ffffff; /* 卡片文字色 */
    --productB-card-title-gap: 4px; /* 卡片標題下外距 */
    --productB-text-font: 16px; /* 卡片副標字級 */
    --productB-text-lh: 28px; /* 卡片副標行高 */
    --productB-narrow-title-font: 16px; /* 窄容器標題字級 */
    --productB-narrow-title-lh: 28px; /* 窄容器標題行高 */
    --productB-narrow-text-font: 14px; /* 窄容器副標字級 */
    --productB-price-font: 18px; /* 價格字級 */
    --productB-price-lh: 28px; /* 價格行高 */
    --productB-price-margin: 8px 0 0 0; /* 價格外距 */
    --productB-bullet-size: 16px; /* 分頁點尺寸 */
    padding: var(--productB-pad, 40px 0 20px);
    position: relative;
}

/* RWD：改為覆寫上方變數（見檔頭 [好覆蓋]）。
   原有 ≤992 與 ≤768 兩段內距值相同（16px 0），合併為單一斷點 */
@media (max-width: 991.98px) {

    .productB {
        --productB-pad: 16px 0;
        --productB-titlebox-pad: 10px 0;
        --productB-titlebox-gap: 24px;
        --productB-title-font: 16px;
        --productB-title-gap: 4px;
    }
}

/* 手機：原為 ≤992 區塊的整段複製，僅標題盒下外距不同，故只保留差異項 */
@media (max-width: 767.98px) {

    .productB {
        --productB-titlebox-gap: 30px;
        --productB-price-font: 13px;
    }
}

.productB-Bg {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 0;
    object-fit: cover;
}

.productB-TitleBox {
    width: fit-content;
    padding: var(--productB-titlebox-pad, 12px 0);
    margin-bottom: var(--productB-titlebox-gap, 10px);
    position: relative;
}



.productB-Title {
    font-size: var(--productB-title-font, 28px);
    color: var(--productB-title-color, #595757);
    margin-bottom: var(--productB-title-gap, 0px);
}

/* 平板以下：標題盒改為滿寬置中（內距／下外距／字級已由變數承接，此處只留結構性宣告與飾線） */
@media (max-width: 991.98px) {

    .productB-TitleBox {
        width: 100%;
        text-align: center;
        position: relative;
    }

    .productB-TitleBox ::after {
        content: "";
        top: var(--productB-line-top, 80%);
        right: var(--productB-line-right, 50%);
        width: var(--productB-line-w, 1.2px);
        height: var(--productB-line-h, 24px);
        background: var(--productB-line-color, #231815);
    }
}

.productB-Box {
    width: 100%;
    aspect-ratio: var(--productB-box-ratio, 1/1);
    position: relative;
    text-decoration: none;
    display: block;
    cursor: pointer;
}

.productB-Box:hover .productB-ImgBox .productB-Cover {
    transform: scale(var(--productB-hover-scale, 1.05));
}

.productB-ImgBox {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

/* [不可降權 #874] 本條維持 (0,3,0)。20-carousel-compat.css 的 .swiper-slide img（0,1,1）同樣設 object-fit
   且載入序在後，一旦降為單一 class，productB 圖片的 contain 會被 swiper 的 cover 蓋掉（實測 56 處差異）。
   主題若要調整 productB 圖片填滿方式，改由自訂屬性承載（見 #874 第二批）。 */
.productB-Box .productB-ImgBox .productB-Cover {
    width: 100%;
    height: 100%;
    -o-object-fit: var(--productB-img-fit, contain);
    object-fit: var(--productB-img-fit, contain);
    object-position: var(--productB-img-position, center);
    transition: var(--productB-cover-transition, 0.2s ease-in-out);
}

.productB-TextBox {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: var(--productB-textbox-pad, 20px);
    background: var(--productB-textbox-bg, linear-gradient(0deg, rgb(0 0 0 / 70%) 9%, rgba(255, 255, 255, 0) 100%));
}

/* 註：以下四條原本都同時宣告 width: fit-content 與 width: 100%，後者恆勝出，
   已刪除前者。.text／.price 的 text-align 與 margin-bottom 則是取代 blade 移除的
   text-start／mb-0 utility（issue #706），phase 2 自 19-layout-hooks.css 收攏至規則本體。 */
.productB-TextBox .title {
    margin-bottom: var(--productB-card-title-gap, 4px);
    color: var(--productB-text-color, #ffffff);
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    width: 100%;
    text-align: left;
}

.container-800 .productB-TextBox .title {
    font-size: var(--productB-narrow-title-font, 16px);
    line-height: var(--productB-narrow-title-lh, 28px);
    margin-bottom: var(--productB-card-title-gap, 4px);
    color: var(--productB-text-color, #ffffff);
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    width: 100%;
    text-align: left;
}

.productB-TextBox .text {
    font-size: var(--productB-text-font, 16px);
    line-height: var(--productB-text-lh, 28px);
    color: var(--productB-text-color, #ffffff);
    font-weight: 400;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    width: 100%;
    text-align: left;
    margin-bottom: 0;
}


.container-800 .productB-TextBox .text {
    font-size: var(--productB-narrow-text-font, 14px);
    line-height: var(--productB-text-lh, 28px);
    color: var(--productB-text-color, #ffffff);
    font-weight: 400;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    width: 100%;
}

/* margin 簡寫已含 margin-bottom: 0，即 #706 的 mb-0 等價值 */
.productB-TextBox .price {
    font-size: var(--productB-price-font, 18px);
    line-height: var(--productB-price-lh, 28px);
    color: var(--productB-text-color, #ffffff);
    width: fit-content;
    font-weight: 800;
    margin: var(--productB-price-margin, 8px 0 0 0);
    text-align: left;
}

.swiper-productB-button-prev::after,
.swiper-productB-button-next::after {
    display: none;
}

/* Swiper runtime 移除後，原套件不再替這個外殼建立 containing block。
   導覽鈕必須以實際卡片軌道外殼定位，不能退回整個滿版 .productB 的左右邊緣。 */
.productB :is(.productBSwiper, .productBSwiper1600) {
    position: relative;
}

.swiper-productB-button-prev,
.swiper-productB-button-next {
    position: absolute;
    top: 50%;
    width: 44px;
    height: 44px;
    border: 0;
    background: transparent;
    display: inline-grid;
    place-items: center;
    transform: translateY(var(--productB-nav-offset, -48%));
    z-index: 10;
}

.swiper-productB-button-prev { left: 10px; }
.swiper-productB-button-next { right: 10px; }

.productB .swiper-slide {
    width: 100%;
}


.productB .swiper-pagination-bullet {
    width: var(--productB-bullet-size, 16px);
    height: var(--productB-bullet-size, 16px);
}

}
/* source: web/css/common/widget/14-product-c.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/14-product-c.css — 商品 widget C
 * ============================================================================
 *   載入序：14 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L2404~2534 切出；phase 2 已完成本模組整理
 *
 *   [跨模組依賴已解除] 原位於 19-layout-hooks.css 的 productC 圖文列規則（#706 取代 blade
 *   移除的 .row + col-lg-5／col-lg-7 + col-12 + mb-3 + flex-row-reverse，共 5 條）已併入
 *   本檔；15~18 各檔皆無 productC 選擇器，提前載入不改變生效值（已實測）。
 *
 *   [容器寬度] 版面容器為 blade 的 .container.container-800，寬度已於 phase 2 第一組
 *   統一為 03-container.css 的 --cms-container-narrow，本檔不另行限制寬度。
 *
 *   [斷點] 原用 992／768 兩個整數 max-width，內距值完全相同（16px 0），
 *   ≤768 整段移除、≤992 改為 991.98。
 *
 *   [已知冗餘，未動] .productC-ImgBox 同時給 height: 300px 與 aspect-ratio: 1/1，
 *   兩軸都已確定時 aspect-ratio 不生效；但主題（dgfactor／shopLinerp）可能改寫 height
 *   讓比例接手，故保留。issue #874 起兩者皆為變數，主題把 --productC-img-h 設為 auto
 *   即可讓 --productC-img-ratio 接手，不必再覆寫整條規則。
 *
 *   [好覆蓋] issue #694：.productC-ImgBox .productC-Cover → .productC-Cover、
 *   .productC-TextBox .productC-desc → .productC-desc（皆 0,2,0 → 0,1,0）。
 *   .productC-Row 系列（.productC-Row--reverse 變體）維持原樣：祖先承載「反轉欄序」
 *   的變體語意，移除會讓正向與反向共用同一組值。
 *   （原併列的 .flex-row-reverse 變體專供 Volvo legacy markup，已隨 issue #962 全數刪除）
 *
 *   [好覆蓋，issue #874] 本模組所有可調值改由 .productC（0,1,0）上的自訂屬性承載：
 *   區塊內距／≥992 圖文兩欄的欄寬／欄下外距／圖框高度比例底色／圖片填滿方式與轉場／
 *   文字盒內距底色／標題與內文的配色字級行高與裁切行數／價格字級與外距。
 *   欄間距沿用 Bootstrap 的 --bs-gutter-x（本就是自訂屬性），維持與 legacy markup 等價。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */

.productC {
    --productC-pad: 30px 0; /* 區塊上下內距 */
    --productC-col-img: 41.666667%; /* ≥992 圖片欄寬 */
    --productC-col-text: 58.333333%; /* ≥992 文字欄寬 */
    --productC-cell-gap: 1rem; /* 欄下外距（取代 mb-3） */
    --productC-img-h: 300px; /* 圖框高度 */
    --productC-img-ratio: 1/1; /* 圖框長寬比（高度設 auto 時才接手） */
    --productC-img-bg: #ebebeb; /* 圖框底色 */
    --productC-cover-fit: contain; /* 圖片填滿方式 */
    --productC-cover-transition: 0.2s ease-in-out; /* 圖片轉場 */
    --productC-textbox-pad: 25px 22px; /* 文字盒內距 */
    --productC-textbox-bg: #ebebeb; /* 文字盒底色 */
    --productC-text-color: #333333; /* 文字色 */
    --productC-title-gap: 4px; /* 標題下外距 */
    --productC-title-clamp: 2; /* 標題最多顯示行數 */
    --productC-text-font: 16px; /* 內文字級 */
    --productC-text-lh: 28px; /* 內文行高 */
    --productC-text-clamp: 5; /* 內文最多顯示行數 */
    --productC-price-font: 18px; /* 價格字級 */
    --productC-price-lh: 28px; /* 價格行高 */
    --productC-price-margin: 8px 0; /* 價格外距 */
    padding: var(--productC-pad, 30px 0);
    position: relative;
}

/* RWD：改為覆寫上方變數（見檔頭 [好覆蓋]）。
   原有 ≤992 與 ≤768 兩段內距值相同（16px 0），合併為單一斷點 */
@media (max-width: 991.98px) {

    .productC {
        --productC-pad: 16px 0;
    }
}

.productC-Bg {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 0;
    object-fit: cover;
}

/* 圖文列格線：取代 blade 移除的 .row + col-lg-5／col-lg-7 + col-12 + mb-3 + flex-row-reverse
   （issue #706；phase 2 自 19-layout-hooks.css 收攏，原本的 position/z-index 亦併入本規則）
   --bs-gutter-x 與 .productC-cell 的 margin-bottom 沿用 BS 的 rem 寫法。原因是當時需與
   Volvo legacy markup 的 .row／col-*／mb-3 utility 同值才等價，該分支已於 issue #962 移除，
   此處僅保留現值不動（改寫為 px 屬獨立的數值調整，需另行驗證各主題）。
   專案 root 為 62.5%（1rem = 10px），故實際為 gutter 15px、下外距 10px；≥992 另由
   common/base.css 的 .container .productC-Row 將 gutter 覆寫為 30px。 */
.productC-Row {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    display: flex;
    flex-wrap: wrap;
    margin-right: calc(-0.5 * var(--bs-gutter-x));
    margin-left: calc(-0.5 * var(--bs-gutter-x));
    position: relative;
    z-index: 1;
}

.productC-Row--reverse {
    flex-direction: row-reverse;
}

.productC-cell {
    flex-shrink: 0;
    width: 100%;
    max-width: 100%;
    padding-right: calc(var(--bs-gutter-x) * 0.5);
    padding-left: calc(var(--bs-gutter-x) * 0.5);
    /* 取代 mb-3 utility */
    margin-bottom: var(--productC-cell-gap, 1rem);
}

@media (min-width: 992px) {
    .productC-cell--img {
        flex: 0 0 auto;
        width: var(--productC-col-img, 41.666667%);
    }

    .productC-cell--text {
        flex: 0 0 auto;
        width: var(--productC-col-text, 58.333333%);
    }
}


.productC-ImgBox {
    width: 100%;
    height: var(--productC-img-h, 300px);
    aspect-ratio: var(--productC-img-ratio, 1/1);
    overflow: hidden;
    background: var(--productC-img-bg, #ebebeb);
}

.productC-Cover {
    width: 100%;
    height: 100%;
    -o-object-fit: var(--productC-cover-fit, contain);
    object-fit: var(--productC-cover-fit, contain);
    transition: var(--productC-cover-transition, 0.2s ease-in-out);
}

.productC-TextBox {
    width: 100%;
    height: 100%;
    padding: var(--productC-textbox-pad, 25px 22px);
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: start;
    align-items: start;
    background: var(--productC-textbox-bg, #ebebeb);
}


/* [好覆蓋 #874] 原 .productC-Row .productC-TextBox（0,2,0）降為單一 class：主題寫同名選擇器即可靠載入序接管 */
.productC-TextBox {
    align-self: start;
}

/* issue #706：選擇器同步——blade 反轉列已改 .productC-Row--reverse。原併列的
   .flex-row-reverse hook 專供 Volvo legacy markup，已隨 issue #962 移除該分支一併刪除；
   複合寫法維持原特異性 */
.productC-Row.productC-Row--reverse .productC-TextBox {
    align-items: end;
}



/* 註：.title 與 .text 原本都同時宣告 width: fit-content 與 width: 100%，
   後者恆勝出，已刪除前者 */
.productC-TextBox .title {
    margin-bottom: var(--productC-title-gap, 4px);
    color: var(--productC-text-color, #333333);
    font-weight: 700;
    width: 100%;
    text-align: left;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: var(--productC-title-clamp, 2);
    overflow: hidden;
}

.productC-Row .productC-TextBox .title {
    text-align: left;
}

.productC-Row.productC-Row--reverse .title {
    text-align: right;
}

.productC-Row.productC-Row--reverse .text {
    text-align: right;
}

.productC-TextBox .text {
    font-size: var(--productC-text-font, 16px);
    line-height: var(--productC-text-lh, 28px);
    color: var(--productC-text-color, #333333);
    font-weight: 400;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: var(--productC-text-clamp, 5);
    overflow: hidden;
    width: 100%;
}

.productC-TextBox .price {
    font-size: var(--productC-price-font, 18px);
    line-height: var(--productC-price-lh, 28px);
    color: var(--productC-text-color, #333333);
    width: fit-content;
    font-weight: 800;
    margin: var(--productC-price-margin, 8px 0);
}

/* 取代 blade 移除的 mb-0 utility（issue #706；phase 2 自 19-layout-hooks.css 收攏） */
.productC-desc {
    margin-bottom: 0;
}

}
/* source: web/css/common/widget/15-one-image.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/15-one-image.css — 單圖 widget（oneImage）
 * ============================================================================
 *   載入序：15 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L2535~2606 切出
 *   phase 2：原尾段的 .imgTextB-static-*（依內容屬圖文 B 模組，因原單檔順序才落在此）
 *   已收攏至 07-img-text-b.css；本檔現為純 oneImage 模組。
 *
 *   [好覆蓋] issue #694：.oneImage .oneImage-Bg（0,2,0）降為 .oneImage-Bg（0,1,0）。
 *   .oneImage-Bg 為 oneImage 專有 class，全 common 僅此一條規則。
 *
 *   [好覆蓋，issue #874] 可調值（區塊上下內距、圖框外距、圖片填滿方式）改由
 *   .oneImage（0,1,0）上的自訂屬性承載。.oneImageBox img 含元素選擇器，
 *   刻意不降權（img 為通用元素），改以變數承載後主題仍可用單一 class 接管。
 * ==========================================================================*/

/* ------------------------------------------------------------------------------------------------ */

.oneImage {
    --oneImage-pad: 20px 0; /* 區塊上下內距 */
    --oneImage-box-margin: 0px 0; /* 圖框外距 */
    --oneImage-fit: contain; /* 圖片填滿方式 */
    width: 100%;
    height: 100%;
    margin: 0px auto;
    position: relative;
    padding: var(--oneImage-pad, 20px 0);
}

.oneImage-Bg {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
    object-fit: cover;
}

.oneImageBox {
    width: 100%;
    height: auto;
    margin: var(--oneImage-box-margin, 0px 0);
}

.oneImageBox img {
    width: 100%;
    height: 100%;
    object-fit: var(--oneImage-fit, contain);
}

.bgTransparent {
    background: transparent;
}

.bgTransparent .imgTextD-Box {
    background: transparent;
}

/* 註：.imgTextB-static-* 靜態排列規則已於 issue #694 phase 2 收攏至 07-img-text-b.css */

}
/* source: web/css/common/widget/16-baseline-override.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/16-baseline-override.css — default baseline 覆寫（站台 .container 基準）
 * ============================================================================
 *   載入序：16 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L2607~2678 切出；phase 2 已完成斷點統一
 *
 *   [順序相依已解除] phase 1 時本檔的 .container 寬度規則會壓掉 03-container.css
 *   的 .container-1600 階梯，形成「16 MUST 載於 03 之後」的隱性相依。phase 2 已將
 *   兩檔的寬度收斂為同一組 --cms-container-* token，且 03 不再對併用 .container 的
 *   元素設定手機內距，兩檔載入順序對調亦不改變任何生效值。
 *
 *   本檔的 .container 規則是**站台層級**的容器基準（自凍結 default.css 抽出），
 *   作用對象為全站所有 .container，不限 widget；日後若整理 common/base.css 的
 *   容器規則，此區段為優先遷入對象（本票不擴大範圍）。
 *
 *   [好覆蓋，issue #874] 手機內距改由 .container（0,1,0）上的 --container-pad-sm 承載
 *   （寬度階梯本就走 --cms-container-* 全域 token，無須再加一層）。本檔作用於全站容器，
 *   主題覆寫 --container-pad-sm 會一併影響非 widget 的容器，屬預期行為。
 * ==========================================================================*/

/* ============================================================================
 * 區段 2：default.css .container max-width / width 主題層（baseline 容器限制）
 *   抽取自 default.css line 4051~4061 + 4167~4172 + 4332~4336
 *   作用：站台 .container 的寬度與手機內距基準（覆蓋 Bootstrap 預設 1140/1320）
 *
 *   註：原 default.css line 4173~4186 為大段註解掉的 h3/h4/p RWD 規則、
 *       line 4187~4322 為其他非 .container 規則（.plr-185 / .mb-80 / .logo 等），
 *       本區段精準重組僅保留 .container 相關的 @media 區塊，避免帶入未閉合註解
 *       或不相關規則破壞 cascade。
 *
 *   phase 2 斷點統一：max-width 一律改為「下一階 − 0.02px」（767 → 767.98），
 *   與 03-container.css 及 guideline §4.6 標準刻度一致。整數視口寬度下生效值不變。
 * ============================================================================
 */

@media (min-width: 1200px) {
  .container {
    max-width: var(--cms-container-lg);
  }
}

@media (min-width: 1400px) {
  .container {
    max-width: var(--cms-container-xl);
  }
}

@media (max-width: 767.98px) {
  .container {
    --container-pad-sm: 10px 16px; /* 站台容器手機內距 */
    width: 100%;
    padding: var(--container-pad-sm, 10px 16px);
  }
}

/* 註：本規則的 width: 100% 與上一組 max-width:767.98 區塊重複，
   為忠實保留自 default.css 抽出的原始結構而不合併（480 以下另有其他來源規則）。 */
@media (min-width: 480px) and (max-width: 767.98px) {
  .container {
    width: 100%;
  }
}


/* 區段 3（default.css 的 .swiper-slide / .swiper-slide img 主題層擴充）已於 issue #694
   移出：那組規則屬 Swiper 套件層級的全域覆寫、由多個 widget 共吃，與本檔「站台 .container
   基準」的定位無關，已與 11-image.css 的 swiper 區塊一併彙整至 20-carousel-compat.css。 */

}
/* source: web/css/common/widget/17-sidebar-product.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/17-sidebar-widget.css — 側欄 widget（商品列表／詳情頁 ＋ 新聞貼文頁共用）
 * ============================================================================
 *   載入序：17 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *   來源：issue #694 自 common/widget.css L2679~2969（default.css cluster A）切出；
 *         phase 2 已完成斷點對齊，並於本次併入原 18-sidebar-post.css（cluster B）。
 *
 *   [為什麼併檔] 原 17（cluster A）與 18（cluster B）是同一組側欄元件在 default.css 裡
 *   的兩段歷史堆疊，**都在定義同一批 .widget-* / .widget-product 選擇器**，只是分別
 *   出現在商品頁與貼文頁的區段。分兩支檔會讓「改側欄要看哪支」無從判斷，故合併為一支。
 *   合併時**逐字保留原順序**（先 cluster A、後 cluster B），cascade 結果與併檔前完全相同。
 *
 *   [A/B 衝突已裁決，issue #862] cluster B 在現行 Blade 的 .product-item 結構下，部分版面值
 *   會被 cluster A 較高特異性規則蓋掉；但它仍提供 overflow／background／text-align／標題
 *   樣式／line-height／margin，且在沒有 .product-item 中介層的 legacy／CKEditor DOM 中，
 *   35%／65% 欄寬、padding、價格色與字重也會生效。合成 selector 探針已證明刪除會產生
 *   computed-style 差異，故整段與 legacy 變數皆保留為相容 fallback，不再列為待裁決死碼。
 *
 *   [已移出] .user-side-menu*（會員中心側選單）與商品側欄無關，已抽至 21-user-side-menu.css。
 *
 *   [斷點] 原用 992／768 各一個整數 max-width，已改為 991.98／767.98。
 *   ≤768 區塊內與基礎規則同值的三條宣告（-webkit-line-clamp／line-clamp／min-height）
 *   已刪除，只留差異項。
 *
 *   [好覆蓋，issue #874] 可調值改由各自的側欄外層 class（皆 0,1,0）上的自訂屬性承載：
 *     .widget-categories / .widget-product — 卡片配色圓角間距、商品圖比例、角標、
 *                                            標題與價格配色字級行數、cluster B 的舊版排法值
 *     .btn-group-category（平板以下才有規則）— 下拉選單與三層分類的配色字級圓角
 *     .widget / .widget-title / .product-cat — 側欄外距、標題配色、分類樹字級行高配色
 *   .product-item／.product-img／.product-info／.product-title 等都是與商品列表頁共用的
 *   通用 class，選擇器刻意維持祖先範圍限定（去掉會誤傷列表頁），改以變數承載達成單一
 *   class 覆寫。RWD 差異一律改為在 @media 內覆寫變數。
 * ==========================================================================*/

/* ============================================================================
 * 區段 4：default.css .widget-categories / -product 商品列表側欄
 *   抽取自 default.css line 2791~3070（cluster A）
 *   .widget-categories / .widget-product 多層 product-* 子選擇器
 *   （原含的 .widget-search / .widget-categories-select 已於 #862 B-1 判死移除）
 *   對應 blade：商品列表 / 商品詳情頁側邊欄 widget
 * ============================================================================
 */

.widget-categories {
  --sidebar-card-bg: #ffffff; /* 卡片底色 */
  --sidebar-categories-radius: 0px; /* 分類區塊圓角 */
  --sidebar-item-radius: 8px; /* 項目圓角 */
  --sidebar-item-gap: 10px; /* 項目右外距 */
  --sidebar-item-pad: 12px; /* 項目內距 */
  background: var(--sidebar-card-bg, #ffffff);
  border-radius: var(--sidebar-categories-radius, 0px);
}

.widget-categories .categories-item {
  display: flex;
  flex-direction: column;
  background: var(--sidebar-card-bg, #ffffff);
  border-radius: var(--sidebar-item-radius, 8px);
  margin-bottom: 0;
  margin-right: var(--sidebar-item-gap, 10px);
  padding: var(--sidebar-item-pad, 12px);
}

.widget-product {
  --sidebar-card-bg: #ffffff; /* 卡片底色 */
  --sidebar-product-radius: 10px; /* 商品區塊圓角 */
  --sidebar-item-radius: 8px; /* 卡片圓角 */
  --sidebar-item-gap: 10px; /* 卡片右外距 */
  --sidebar-item-gap-y: 0; /* 卡片下外距 */
  --sidebar-item-pad: 12px; /* 卡片內距 */
  --sidebar-img-ratio: 1/1; /* 商品圖比例 */
  --sidebar-tag-size: 52px; /* 角標尺寸 */
  --sidebar-tag-bg: #2c2c2c; /* 角標底色 */
  --sidebar-tag-color: #ffffff; /* 角標文字色 */
  --sidebar-tag-pad: 8px; /* 角標內距 */
  --sidebar-tag-radius: 99rem; /* 角標圓角 */
  --sidebar-tag-font: 12px; /* 角標字級 */
  --sidebar-tag-top: 10px; /* 角標上位移 */
  --sidebar-tag-left: 12px; /* 角標左位移 */
  --sidebar-info-pad: 16px 10px; /* 商品資訊內距 */
  --sidebar-title-color: #1d1d1d; /* 商品標題色 */
  --sidebar-title-gap: 8px; /* 商品標題上外距 */
  --sidebar-title-lh: inherit; /* 商品標題行高（預設 inherit：原規則無此宣告，靠繼承） */
  --sidebar-title-clamp: 3; /* 商品標題最多行數 */
  --sidebar-title-min-h: 72px; /* 商品標題最小高 */
  --sidebar-price-color: #2c2c2c; /* 價格顏色 */
  --sidebar-legacy-img-w: 35%; /* cluster B 舊版圖片欄寬 */
  --sidebar-legacy-info-w: 65%; /* cluster B 舊版資訊欄寬 */
  --sidebar-legacy-info-pad: 15px 0 0 10px; /* cluster B 舊版資訊內距 */
  --sidebar-legacy-title-color: #666; /* cluster B 舊版標題色 */
  --sidebar-legacy-price-color: #999999; /* cluster B 舊版價格色 */
  border-radius: var(--sidebar-product-radius, 10px);
}

.widget-product .product-item {
  display: flex;
  flex-direction: column;
  background: var(--sidebar-card-bg, #ffffff);
  border-radius: var(--sidebar-item-radius, 8px);
  margin-bottom: var(--sidebar-item-gap-y, 0);
  margin-right: var(--sidebar-item-gap, 10px);
  padding: var(--sidebar-item-pad, 12px);
}

@media (max-width: 991.98px) {
  .widget-product {
    --sidebar-item-gap-y: 20px;
    --sidebar-item-gap: 0px;
  }

  .btn-group-category {
    --sidebar-cat-bg: #e2e2e2; /* 分類鈕列底色 */
    --sidebar-cat-radius: 10px; /* 分類鈕列圓角 */
    --sidebar-cat-btn-h: 48px; /* 分類鈕高度 */
    --sidebar-cat-font: 16px; /* 分類文字字級 */
    --sidebar-cat-color: #333333; /* 分類文字色 */
    --sidebar-cat-menu-bg: #ffffff; /* 下拉選單底色 */
    --sidebar-cat-menu-pad: 20px 16px; /* 下拉選單內距 */
    --sidebar-cat-menu-border: 1px solid #b8b8b8; /* 下拉選單外框 */
    --sidebar-cat-item-pad: 12px; /* 分類項目內距 */
    --sidebar-cat-item-gap: 10px; /* 分類項目下外距 */
    --sidebar-cat-item-radius: 8px; /* 分類項目圓角 */
    --sidebar-cat-l1-bg: #c5c5c5; /* 第一層項目底色 */
    --sidebar-cat-l2-bg: #d9d9d9; /* 第二層項目底色 */
    --sidebar-cat-l2-color: #000000; /* 第二層項目文字色 */
    --sidebar-cat-l3-bg: #f2f2f2; /* 第三層項目底色 */
    --sidebar-cat-indent: 20px; /* 子層縮排 */
    width: 100%;
    background: var(--sidebar-cat-bg, #e2e2e2);
    border-radius: var(--sidebar-cat-radius, 10px);
  }

  .btn-group-category .btn {
    width: 100%;
    height: var(--sidebar-cat-btn-h, 48px);
    font-size: var(--sidebar-cat-font, 16px);
    color: var(--sidebar-cat-color, #333333);
    border-radius: var(--sidebar-cat-radius, 10px);
    text-align: left;
  }

  .btn-group-category .dropdown-menu {
    width: 100%;
    padding: var(--sidebar-cat-menu-pad, 20px 16px);
    background: var(--sidebar-cat-menu-bg, #ffffff);
    border-radius: var(--sidebar-cat-radius, 10px);
    border: var(--sidebar-cat-menu-border, 1px solid #b8b8b8);
  }

  .btn-group-category .dropdown-item {
    width: 100%;
    padding: var(--sidebar-cat-item-pad, 12px);
    font-size: var(--sidebar-cat-font, 16px);
    color: var(--sidebar-cat-color, #333333);
  }

  .btn-group-category .product-cat-item a {
    font-size: var(--sidebar-cat-font, 16px);
    padding: var(--sidebar-cat-item-pad, 12px);
    margin-bottom: var(--sidebar-cat-item-gap, 10px);
    display: block;
    background: var(--sidebar-cat-l1-bg, #c5c5c5);
    color: var(--sidebar-cat-color, #333333);
    border-radius: var(--sidebar-cat-item-radius, 8px);
  }

  .btn-group-category .product-cat-item ul .product-cat-item {
    padding-left: var(--sidebar-cat-indent, 20px);
  }

  .btn-group-category .product-cat-item ul .product-cat-item a {
    font-size: var(--sidebar-cat-font, 16px);
    padding: var(--sidebar-cat-item-pad, 12px);
    margin-bottom: var(--sidebar-cat-item-gap, 10px);
    display: block;
    background: var(--sidebar-cat-l2-bg, #d9d9d9);
    color: var(--sidebar-cat-l2-color, #000000);
    border-radius: var(--sidebar-cat-item-radius, 8px);
  }

  .btn-group-category .product-cat-item ul .product-cat-item ul .product-cat-item a {
    font-size: var(--sidebar-cat-font, 16px);
    padding: var(--sidebar-cat-item-pad, 12px);
    margin-bottom: var(--sidebar-cat-item-gap, 10px);
    display: block;
    background: var(--sidebar-cat-l3-bg, #f2f2f2);
    color: var(--sidebar-cat-l2-color, #000000);
    border-radius: var(--sidebar-cat-item-radius, 8px);
  }
}

.widget-product .product-item .product-img {
  width: 100%;
  position: relative;
  aspect-ratio: var(--sidebar-img-ratio, 1/1);
}

.widget-product .product-item .product-tag {
  position: absolute;
  top: var(--sidebar-tag-top, 10px);
  left: var(--sidebar-tag-left, 12px);
  width: var(--sidebar-tag-size, 52px);
  height: var(--sidebar-tag-size, 52px);
  background: var(--sidebar-tag-bg, #2c2c2c);
  color: var(--sidebar-tag-color, #ffffff);
  padding: var(--sidebar-tag-pad, 8px);
  border-radius: var(--sidebar-tag-radius, 99rem);
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: var(--sidebar-tag-font, 12px);
}

.widget-product .product-item .product-info {
  width: 100%;
  padding: var(--sidebar-info-pad, 16px 10px);
}

.widget-product .product-item .product-info .product-title .product-title-link {
  color: var(--sidebar-title-color, #1d1d1d);
  margin-top: var(--sidebar-title-gap, 8px);
  line-height: var(--sidebar-title-lh, inherit);
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: var(--sidebar-title-clamp, 3);
  line-clamp: var(--sidebar-title-clamp, 3);
  text-wrap: wrap;
  min-height: var(--sidebar-title-min-h, 72px);
}

/* 手機：-webkit-line-clamp／line-clamp／min-height 與基礎規則同值，屬重複宣告已刪除，
   僅保留真正的差異項（上外距與行高），並改為覆寫變數 */
@media (max-width: 767.98px) {
  .widget-product {
    --sidebar-title-gap: 10px;
    --sidebar-title-lh: 24px;
  }
}

.widget-product .product-item .product-info .pro-price {
  color: var(--sidebar-price-color, #2c2c2c);
  font-weight: 600;
}


/* ============================================================================
 * 區段 5：default.css .widget / .widget-title / .widget-product 新聞貼文側欄
 *   抽取自 default.css line 5342~5462（cluster B）
 *   .widget / .widget-title（含 ::before）/
 *   .widget-product .product-item / .product-img / .product-info / .product-title / .pro-price
 *   （原含的 .widget-search input/button 已於 #862 B-1 判死移除）
 * ============================================================================
 */

.widget {
  --sidebar-widget-pad: 20px 8px; /* 側欄區塊內距 */
  padding: var(--sidebar-widget-pad, 20px 8px);
}

.widget-title {
  --sidebar-heading-color: #000000; /* 側欄標題文字色 */
  --sidebar-heading-pad: 5px; /* 側欄標題左內距 */
  --sidebar-heading-transform: uppercase; /* 側欄標題大小寫轉換 */
  --sidebar-heading-mark-bg: #312525; /* 側欄標題前飾塊顏色 */
  color: var(--sidebar-heading-color, #000000);
  font-display: swap;
  /* font-size: 20px; */
  font-weight: 800;
  text-transform: var(--sidebar-heading-transform, uppercase);
  position: relative;
  padding-left: var(--sidebar-heading-pad, 5px);
}

.widget-title::before {
  background: var(--sidebar-heading-mark-bg, #312525);
  content: "";
  display: none;
}

.product-cat>ul>li>ul {
  padding-left: 20px;
}

.product-cat {
  --sidebar-tree-color: #999999; /* 分類樹文字色 */
  --sidebar-tree-l1-font: 14px; /* 分類樹第一層字級 */
  --sidebar-tree-l1-lh: 30px; /* 分類樹第一層行高 */
  --sidebar-tree-l2-font: 13px; /* 分類樹第二層字級 */
  --sidebar-tree-l2-lh: 25px; /* 分類樹第二層行高 */
  --sidebar-tree-open-color: #131313; /* 展開中項目文字色 */
}

.product-cat .treeview>li>a,
.product-cat .treeview>li>ul>li>a {
  color: var(--sidebar-tree-color, #999999);
  display: inline-block;
  text-transform: capitalize;
}

.product-cat .treeview>li>a {
  font-size: var(--sidebar-tree-l1-font, 14px);
  line-height: var(--sidebar-tree-l1-lh, 30px);
}

.product-cat .treeview>li>ul>li>a {
  font-size: var(--sidebar-tree-l2-font, 13px);
  line-height: var(--sidebar-tree-l2-lh, 25px);
}

.product-cat .treeview li {
  position: relative;
}

.product-cat .hitarea {
  cursor: pointer;
  height: 30px;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}

.product-cat .treeview .collapsable>a {
  color: var(--sidebar-tree-open-color, #131313);
}

.widget-product .product-item {
  overflow: hidden;
}

.widget-product .product-item:last-child {
  margin-bottom: 0;
}

.widget-product .product-img {
  float: left;
  width: var(--sidebar-legacy-img-w, 35%);
}

.widget-product .product-info {
  background: #fff none repeat scroll 0 0;
  float: left;
  padding: var(--sidebar-legacy-info-pad, 15px 0 0 10px);
  text-align: left;
  width: var(--sidebar-legacy-info-w, 65%);
}

.widget-product .product-title {
  color: var(--sidebar-legacy-title-color, #666);
  font-weight: 500;
  text-transform: capitalize;
}

.widget-product .pro-price {
  color: var(--sidebar-legacy-price-color, #999999);
  /* font-size: 16px; */
  font-weight: 500;
  line-height: 1;
  margin-bottom: 0;
}

}
/* source: web/css/common/widget/20-carousel-compat.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/20-carousel-compat.css — 輪播相容呈現 hook（跨 widget 共用）
 * ============================================================================
 *   載入序：20 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *
 *   [為什麼是 20 而不是 19] 19 號原為 19-layout-hooks.css，已於 issue #694 phase 2
 *   內容全數回收至各模組本體後移除，歷史由 Git 保留。
 *   為免與 git 歷史、既有文件混淆，該編號刻意留空不重複使用。
 *
 *   [本檔的定位] 這裡放的是 **輪播控制項與既有 class 的相容呈現**，不屬於任何單一 widget：
 *   分頁點（.swiper-pagination*）、導覽鈕（.swiper-nav-custom / .swiper-other-button-*）、
 *   lock 狀態、以及 .swiper-slide / .swiper-wrapper 的版面基準。
 *   圖文 A、商品 B 已統一改由 Owl 執行；既有 class 暫留作主題相容 hook，不再載入 Swiper runtime。
 *
 *   [來源，issue #694] 原先散落兩處、且都寄居在與自己無關的模組檔內：
 *     - 11-image.css L80~209（該檔檔頭早已標記「宜彙整為獨立 swiper 模組」）
 *     - 16-baseline-override.css 區段 3（.swiper-slide / .swiper-slide img，
 *       抽自凍結的 default.css L6351~6356 + L6762~6775）
 *   本檔依原載入序合併：先 11 的內容，後 16 的內容，cascade 結果不變。
 *
 *   [不收進本檔的] widget 自身對 swiper 的專屬覆寫維持原地：
 *     - 13-product-b.css 的 .productB .swiper-slide／.swiper-pagination-bullet／
 *       .swiper-productB-button-*（皆為該 widget 專有，特異性亦高於本檔）
 *     - 02-banner.css 的 .swiper-slide img.widgetImg*（桌機／手機圖切換，
 *       屬圖片顯隱機制而非 swiper 版面）
 *
 *   [載入序] 本檔規則與 02~18 各檔無同特異性衝突，實測置於最後不改變任何生效值。
 *
 *   [好覆蓋，issue #874] 本檔沒有 widget 外層 class 可掛（這些相容 hook 跨 widget），
 *   故自訂屬性一律**宣告在消費它的選擇器自身**，而非某個祖先——
 *   .swiper-pagination-bullet 自帶 --swiper-bullet-size，主題覆寫同一個 class 即可，
 *   不必先找到某個容器。RWD 差異同樣改為在 @media 內覆寫該選擇器上的變數，
 *   主題宣告不在 @media 內、同特異性且載入序在後，覆寫後所有寬度都勝出。
 *   選擇器本身刻意不降權：.swiper-* 為既有主題共用相容 class，改動範圍限定會誤傷其他輪播。
 * ==========================================================================*/


/* ----------------------------------------------------------------------------
 * 版面基準（slide / wrapper）
 * -------------------------------------------------------------------------- */

/* 註：原 widgets.css 為 .swiper-slide, .swiper-wrapper 聯合 selector，
   拆檔時因 .swiper-slide 與 default 來源重複而分列兩處，本檔重新收在一起。 */
.swiper-wrapper {
    height: fit-content;
}

.swiper-slide {
    --swiper-slide-font: 18px; /* slide 內文字級 */
    --swiper-slide-img-fit: cover; /* slide 圖片填滿方式 */
    text-align: center;
    font-size: var(--swiper-slide-font, 18px);
    display: flex;
    justify-content: center;
    align-items: center;
    height: fit-content;
}

.swiper-slide img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: var(--swiper-slide-img-fit, cover);
}


/* ----------------------------------------------------------------------------
 * 導覽鈕
 * -------------------------------------------------------------------------- */

.swiper-nav-custom .swiper-main-button-next,
.swiper-other-button-prev {
    position: static;
    margin-top: 0px;
    transition: 0.5s;
}

.swiper-nav-custom .swiper-main-button-next::after,
.swiper-other-button-prev::after {
    content: "";
    display: none;
}

.swiper-nav-custom .swiper-main-button-prev,
.swiper-other-button-next {
    --swiper-nav-gap: 10px; /* 導覽鈕右側間距 */
    position: static;
    margin-top: 0px;
    margin-right: var(--swiper-nav-gap, 10px);
    transition: 0.5s;
}

.swiper-nav-custom .swiper-main-button-prev::after,
.swiper-other-button-next::after {
    content: "";
    display: none;
}

.swiper-button-lock,
.swiper-pagination-lock,
.swiper-pagination-lock .swiper-pagination-bullet:only-child {
    display: flex;
}


/* ----------------------------------------------------------------------------
 * 分頁點
 * -------------------------------------------------------------------------- */

.swiper-pagination {
    --swiper-pagination-gap: 30px; /* 分頁點列上外距 */
    position: static;
    text-align: center;
    transition: .3s opacity;
    transform: translate3d(0, 0, 0);
    z-index: 10;
    justify-content: start;
    display: flex;
    margin-top: var(--swiper-pagination-gap, 30px);
}

.swiper-pagination-bullet {
    --swiper-bullet-size: 20px; /* 分頁點尺寸 */
    --swiper-bullet-bg: #e0dedc; /* 分頁點顏色 */
    --swiper-bullet-margin: 5px 7px; /* 分頁點間距 */
    --swiper-bullet-radius: 30px; /* 分頁點圓角 */
    width: var(--swiper-bullet-size, 20px);
    height: var(--swiper-bullet-size, 20px);
    background: var(--swiper-bullet-bg, #e0dedc);
    margin: var(--swiper-bullet-margin, 5px 7px);
    display: block;
    transition: opacity .2s ease;
    border-radius: var(--swiper-bullet-radius, 30px);
    opacity: 1;
    border: 0;
    padding: 0;
}

.swiper-pagination-bullet-active {
    --swiper-bullet-size: 20px;
    --swiper-bullet-bg: #e0dedc;
    --swiper-bullet-margin: 5px 7px;
    --swiper-bullet-radius: 30px;
    --swiper-bullet-active-outline: 2px solid #3e3a39; /* 目前頁的外框 */
    width: var(--swiper-bullet-size, 20px);
    height: var(--swiper-bullet-size, 20px);
    outline: var(--swiper-bullet-active-outline, 2px solid #3e3a39);
    background: var(--swiper-bullet-bg, #e0dedc);
    margin: var(--swiper-bullet-margin, 5px 7px);
    display: block;
    transition: opacity .2s ease;
    border-radius: var(--swiper-bullet-radius, 30px);
}

.swiper-other-pagination .swiper-pagination-bullet {
    --swiper-bullet-size: 20px;
    --swiper-bullet-bg: #898989;
    --swiper-bullet-margin: 5px 7px;
    --swiper-bullet-radius: 30px;
    width: var(--swiper-bullet-size, 20px);
    height: var(--swiper-bullet-size, 20px);
    background: var(--swiper-bullet-bg, #898989);
    margin: var(--swiper-bullet-margin, 5px 7px);
    display: block;
    transition: opacity .2s ease;
    border-radius: var(--swiper-bullet-radius, 30px);
    opacity: 1;
}

.swiper-other-pagination .swiper-pagination-bullet-active {
    --swiper-bullet-size: 20px;
    --swiper-bullet-bg: #898989;
    --swiper-bullet-margin: 5px 7px;
    --swiper-bullet-radius: 30px;
    --swiper-bullet-active-outline: 2px solid #ffffff;
    width: var(--swiper-bullet-size, 20px);
    height: var(--swiper-bullet-size, 20px);
    outline: var(--swiper-bullet-active-outline, 2px solid #ffffff);
    background: var(--swiper-bullet-bg, #898989);
    margin: var(--swiper-bullet-margin, 5px 7px);
    display: block;
    transition: opacity .2s ease;
    border-radius: var(--swiper-bullet-radius, 30px);
}

/* RWD：改為覆寫各選擇器自身的變數（見檔頭 [好覆蓋]）。
   分頁點列的置中屬結構性宣告，維持直接寫在 @media 內。 */
@media (max-width: 991.98px) {

    .swiper-pagination {
        --swiper-pagination-gap: 20px;
        justify-content: center;
        display: flex;
    }

    .swiper-pagination-bullet {
        --swiper-bullet-size: 10px;
    }

    .swiper-pagination-bullet-active {
        --swiper-bullet-size: 10px;
        --swiper-bullet-active-outline: 1.5px solid #3e3a39;
    }

    .swiper-other-pagination .swiper-pagination-bullet {
        --swiper-bullet-size: 10px;
    }

    .swiper-other-pagination .swiper-pagination-bullet-active {
        --swiper-bullet-size: 10px;
        --swiper-bullet-active-outline: 1.5px solid #ffffff;
    }
}

}
/* source: web/css/common/widget/21-user-side-menu.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/21-user-side-menu.css — 會員中心側選單基底
 * ============================================================================
 *   載入序：21 / 20（順序定義於 config/webThemeCss.php 的 common.layout）
 *
 *   [來源與搬移理由] 本區塊原寄居在 17-sidebar-product.css（商品側欄 widget）內，
 *   但 .user-side-menu 是**會員中心的側選單**（訂單列表／訂單詳情／個人資料／收藏清單
 *   四支 blade 透過 components/web/user-side-menu.blade.php 輸出），與商品側欄 widget
 *   無關，僅因舊單檔（default.css cluster A）順序落在該處。issue #694 抽出獨立成檔。
 *
 *   [載入序無相依] common/widget/ 內其餘各檔皆無 .user-side-menu 選擇器，
 *   自 17 移到 21 不改變任何生效值（已實測）。
 *
 *   [與 pages/user.css 的關係] 本元件另有一組規則位於 common/pages/user.css，
 *   該層載入序在 common/widget/ 之後，衝突時由它勝出——本檔只是基底。
 *   是否進一步把基底也遷入 pages/user.css 尚待評估：需先確認 route_page_map 對
 *   orders／wishList／profile 等路由都對映到 user page key，否則未對映的路由會整組
 *   失去基底樣式。本次不動。
 *
 *   [主題覆寫] 3ffood／dgfactor／kgtwbeef／shopLinerp 各自的 base／sidebar／widget／
 *   pages 皆有品牌覆寫，載入序都在本檔之後，不受本次搬移影響。
 *
 *   [好覆蓋，issue #874] 全部可調值（底色與主色、內距、標題副標字級配色、項目間距、
 *   連結內距圓角配色、圖示與文字字級、hover 與目前項的配色、分隔線）改由
 *   .user-side-menu（0,1,0）上的自訂屬性承載。
 *   .user-side-menu__item a（0,1,1）等含元素選擇器的規則刻意不降權，
 *   改以變數承載後主題寫 .user-side-menu { --user-menu-accent: #123456 } 即可換色。
 * ==========================================================================*/

.user-side-menu {
  --user-menu-bg: #ffffff; /* 側選單底色 */
  --user-menu-accent: #2C2C2C; /* 主色（左側線條與目前項底色） */
  --user-menu-border-w: 4px; /* 左側線條粗細 */
  --user-menu-pad: 24px 20px; /* 側選單內距 */
  --user-menu-header-gap: 16px; /* 標頭下方留白 */
  --user-menu-header-line: #f3f4f6; /* 標頭分隔線顏色 */
  --user-menu-title-font: 18px; /* 標題字級 */
  --user-menu-title-color: #111111; /* 標題文字色 */
  --user-menu-subtitle-font: 12px; /* 副標字級 */
  --user-menu-subtitle-color: #9ca3af; /* 副標文字色 */
  --user-menu-item-gap: 8px; /* 項目間距 */
  --user-menu-link-pad: 12px 14px; /* 連結內距 */
  --user-menu-link-radius: 6px; /* 連結圓角 */
  --user-menu-link-color: #111111; /* 連結文字色 */
  --user-menu-link-gap: 10px; /* 連結內元素間距 */
  --user-menu-icon-size: 20px; /* 圖示欄寬 */
  --user-menu-icon-font: 16px; /* 圖示字級 */
  --user-menu-icon-color: #c1c4cc; /* 圖示顏色 */
  --user-menu-text-font: 14px; /* 項目文字字級 */
  --user-menu-arrow-font: 12px; /* 箭頭字級 */
  --user-menu-arrow-color: #ffffff; /* 箭頭顏色 */
  --user-menu-hover-bg: #f4f4f4; /* 滑過底色 */
  --user-menu-hover-icon-color: #111111; /* 滑過圖示色 */
  --user-menu-active-color: #ffffff; /* 目前項文字色 */
  --user-menu-divider-color: #e5e7eb; /* 分隔線顏色 */
  --user-menu-divider-margin: 12px 0; /* 分隔線外距 */
  background: var(--user-menu-bg, #ffffff);
  border-left: var(--user-menu-border-w, 4px) solid var(--user-menu-accent, #2C2C2C);
  padding: var(--user-menu-pad, 24px 20px);
}

.user-side-menu__header {
  padding-bottom: var(--user-menu-header-gap, 16px);
  margin-bottom: var(--user-menu-header-gap, 16px);
  border-bottom: 1px solid var(--user-menu-header-line, #f3f4f6);
}

.user-side-menu__title {
  margin: 0;
  font-size: var(--user-menu-title-font, 18px);
  font-weight: 800;
  color: var(--user-menu-title-color, #111111);
}

.user-side-menu__subtitle {
  margin: 6px 0 0 0;
  font-size: var(--user-menu-subtitle-font, 12px);
  font-weight: 600;
  color: var(--user-menu-subtitle-color, #9ca3af);
}

.user-side-menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.user-side-menu__item {
  margin-bottom: var(--user-menu-item-gap, 8px);
}

.user-side-menu__item:last-child {
  margin-bottom: 0;
}

.user-side-menu__item a {
  display: flex;
  align-items: center;
  gap: var(--user-menu-link-gap, 10px);
  padding: var(--user-menu-link-pad, 12px 14px);
  border-radius: var(--user-menu-link-radius, 6px);
  text-decoration: none;
  color: var(--user-menu-link-color, #111111);
  border: 1px solid transparent;
  transition: background-color 0.3s, color 0.3s, border-color 0.3s;
}

.user-side-menu__icon {
  width: var(--user-menu-icon-size, 20px);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--user-menu-icon-color, #c1c4cc);
  font-size: var(--user-menu-icon-font, 16px);
}

.user-side-menu__text {
  flex: 1;
  font-size: var(--user-menu-text-font, 14px);
  font-weight: 600;
}

.user-side-menu__arrow {
  margin-left: auto;
  font-size: var(--user-menu-arrow-font, 12px);
  color: var(--user-menu-arrow-color, #ffffff);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 0.3s, transform 0.3s;
}

.user-side-menu__item a:hover {
  background: var(--user-menu-hover-bg, #f4f4f4);
  border-color: var(--user-menu-hover-bg, #f4f4f4);
}

.user-side-menu__item a:hover .user-side-menu__icon {
  color: var(--user-menu-hover-icon-color, #111111);
}

.user-side-menu__item.is-active a {
  background: var(--user-menu-accent, #2C2C2C);
  color: var(--user-menu-active-color, #ffffff);
}

.user-side-menu__item.is-active .user-side-menu__icon {
  color: var(--user-menu-active-color, #ffffff);
}

.user-side-menu__item.is-active .user-side-menu__arrow {
  opacity: 1;
  transform: translateX(0);
}

.user-side-menu__item.is-active a:hover {
  background: var(--user-menu-accent, #2C2C2C);
  border-color: var(--user-menu-accent, #2C2C2C);
}

.user-side-menu__divider {
  height: 1px;
  background: var(--user-menu-divider-color, #e5e7eb);
  margin: var(--user-menu-divider-margin, 12px 0);
}

}
/* source: web/css/common/widget/22-style-params.css */
@layer cms.explicit {
/* ============================================================================
 * common/widget/22-style-params.css — Widget 受控樣式參數（issue #879）
 * 載入序 22（widget 模組目錄最後一支）
 * ============================================================================
 *
 * 用途：
 *   承接後台「區塊設定」的兩個受控樣式參數，讓客戶不需再去 /cssSettings 手寫 CSS：
 *     data-pad="none|sm|md|lg"   上下留白（widget_langs.padding）
 *     data-bg="light|dark|brand" 區塊背景色（widgets.bg_color）
 *   兩者皆由 resources/views/components/web/widgets.blade.php 輸出在各 widget 的
 *   **最外層容器**上（.widget-imgTextB／.productA／.oneImage…）。
 *
 * 設計決策見 openspec/changes/issue879-widget-preview-first-editor/design.md：
 *   D2 以資料屬性選擇器承接（同一維度的值天然互斥，不需擔心多個 class 並存）
 *   D8 留白四級的值取自既有 --cms-space-* 刻度，並隨斷點縮放
 *   D9 背景取自橋接 token --cms-widget-bg-*，前景 MUST 成對切換
 *
 * 【null 不輸出屬性，這是 legacy 相容的關鍵】
 *   padding 為 null（欄位新增前的所有既有資料）時 blade **不輸出 data-pad**，
 *   本檔任何規則都不匹配，各模組自身的 padding（07 與 08 為 20px 0、10 為 30px 0、
 *   12 為 30px/18px…）完全不被覆寫，既有站台升級後間距不變。
 *   使用者明選的「無」是另一個值（none），輸出 data-pad="none" 才真的歸零。
 *   兩者若混同，所有既有站台的區塊間距會在上線當下一起縮掉。
 *
 * 【為什麼選擇器要重複寫兩次屬性】
 *   [data-pad="lg"][data-pad] 的特異性是 (0,2,0)，比單寫一次的 (0,1,0) 高一階。
 *   這是刻意的：主題層（themes/{theme}/widget.css）載入序在本檔**之後**，且實測
 *   3ffood 與 shopLinerp 都以 (0,1,0) 的裸容器選擇器設定 widget 外層的 padding
 *   與 background（如 3ffood 的 .widget-imgTextC { padding: 120px 0 }、shopLinerp 的
 *   .widget-bannerA { padding-top: 32px }）。若本檔也只寫 (0,1,0)，同分時後載入者勝，
 *   客戶在這兩個主題上調留白與背景會完全沒有反應。
 *   刻意不用 !important：主題若確有理由要壓過使用者的選擇，仍可用 (0,3,0) 以上的
 *   選擇器接管；!important 會把這條路一併封死。
 *
 * 相依：common/tokens.css（--cms-space-* 間距刻度、--cms-widget-bg-*／-fg-* 橋接 token）
 * 斷點：480 / 576 / 768 / 992 / 1200 / 1400（docs/front/css-development-guideline.md §4.6）
 * ============================================================================ */

/* ============================================================================
 * 1. 上下留白
 *   桌機 20 / 40 / 80，手機收斂為 15 / 25 / 40——80px 上下留白在 375px 裝置會吃掉
 *   整個首屏。左右內距不在本參數範圍，仍由 container 負責（區段層級留白的既有分工）。
 * ==========================================================================*/

[data-pad="none"][data-pad] {
    padding-top: var(--cms-space-0);
    padding-bottom: var(--cms-space-0);
}

[data-pad="sm"][data-pad] {
    padding-top: var(--cms-space-20);
    padding-bottom: var(--cms-space-20);
}

[data-pad="md"][data-pad] {
    padding-top: var(--cms-space-40);
    padding-bottom: var(--cms-space-40);
}

[data-pad="lg"][data-pad] {
    padding-top: var(--cms-space-80);
    padding-bottom: var(--cms-space-80);
}

@media (max-width: 767.98px) {
    /* none 不需要行動版分支：0 在任何斷點都是 0 */
    [data-pad="sm"][data-pad] {
        padding-top: var(--cms-space-15);
        padding-bottom: var(--cms-space-15);
    }

    [data-pad="md"][data-pad] {
        padding-top: var(--cms-space-25);
        padding-bottom: var(--cms-space-25);
    }

    [data-pad="lg"][data-pad] {
        padding-top: var(--cms-space-40);
        padding-bottom: var(--cms-space-40);
    }
}

/* ============================================================================
 * 2. 區塊背景色
 *   背景與前景成對切換：預設內文 #333333 在 #131313 底上不可讀，缺此配套會使
 *   「深色」選項實際不可用。實際色值由各主題於 base.css 覆寫橋接 token 決定。
 *
 *   背景色與背景圖為二擇一（服務層強制，見 WidgetService::applyBackgroundExclusivity），
 *   故本檔不需處理兩者並存時的優先序。
 * ==========================================================================*/

[data-bg="light"][data-bg] {
    background-color: var(--cms-widget-bg-light);
    color: var(--cms-widget-fg-on-light);
}

[data-bg="dark"][data-bg] {
    background-color: var(--cms-widget-bg-dark);
    color: var(--cms-widget-fg-on-dark);
}

[data-bg="brand"][data-bg] {
    background-color: var(--cms-widget-bg-brand);
    color: var(--cms-widget-fg-on-brand);
}

/* 各模組的文字顏色改跟隨區塊前景色。
   這裡改寫的是模組自己的「好覆蓋」自訂屬性（issue #874 的既有機制），不是 color 宣告——
   自訂屬性會沿 DOM 繼承並在**使用端**求值，因此完全不需要跟模組規則比特異性，
   也不受主題層載入序影響。currentColor 在使用端即等於該元素繼承到的區塊前景色。
   只改寫預設值為深色文字的變數；預設為 #ffffff 者（如 --productB-text-color）不動，
   那些是給本來就有深色底的卡片用的，改了反而會在淺色底上變成白字。 */
[data-bg="light"][data-bg],
[data-bg="dark"][data-bg],
[data-bg="brand"][data-bg] {
    --widget-title-color: currentColor;
    --widget-text-color: currentColor;
    --widget-text-p-color: currentColor;
    --imgTextD-light-color: currentColor;
    --productC-text-color: currentColor;
}

/* 「自訂屬性宣告在文字元素自己身上」或「硬編色」的既有文字，一律以 :where() 列舉承接：
   - [class*="widget-title-size"]：04-title.css 把 --widget-title-color:#333 宣告在標題元素
     本身，元素自身的宣告永遠壓過容器繼承（實測深色底出現深灰標題），MUST 在此直接改 color
   - .imgTextC-Title／.imgTextC-Content／.productA-title：08／12 的硬編 #333
   :where() 特異性為 0，整條選擇器維持 (0,2,0)，勝過模組的 (0,1,0)～同分規則（本檔載入序最後）。
   按鈕（.btnC）與規格標籤（.size-item）刻意不納入：兩者有自己的底色與框線，
   跟著區塊前景色翻白會在自己的白底上消失。 */
[data-bg="light"][data-bg] :where(h1, h2, h3, h4, h5, h6, p, li, .title, .text, [class*="widget-title-size"], .imgTextC-Title, .imgTextC-Content, .productA-title),
[data-bg="dark"][data-bg] :where(h1, h2, h3, h4, h5, h6, p, li, .title, .text, [class*="widget-title-size"], .imgTextC-Title, .imgTextC-Content, .productA-title),
[data-bg="brand"][data-bg] :where(h1, h2, h3, h4, h5, h6, p, li, .title, .text, [class*="widget-title-size"], .imgTextC-Title, .imgTextC-Content, .productA-title) {
    color: inherit;
}

}
/* source: web/css/common/widget/23-carousel.css */
@layer cms.platform {
/* ============================================================================
 * common/widget/23-carousel.css — 輪播呈現契約（issue #1392／#1393）
 * ============================================================================
 *   本檔是「每屏幾張、間距、幾張以上才輪播、要不要內建前後鈕／分頁點、要不要改靜態排列」
 *   的唯一預設來源。public/web/js/widget.js 只讀下列自訂屬性，不寫死任何張數或斷點，
 *   也不判斷主題名稱（守門：scripts/check-web-theme-registry.php 規則 I）。
 *
 *   掛載點：每個輪播容器的 [data-carousel="<元件代號>"]（Blade 輸出，穩定 hook）。
 *   JS 寫回：同一容器的 [data-carousel-state="carousel|static"]。
 *
 *   --carousel-mode       carousel（預設）| static：主題強制改為靜態排列
 *   --carousel-direction  horizontal（預設）| vertical；Owl 不支援垂直軸時安全降級為靜態直列
 *   --carousel-per-view   每屏項數，可為小數（露出下一張的一部分）
 *   --carousel-gap        項目間距，MUST 帶單位（JS 以 parseFloat 讀 px 值）
 *   --carousel-min-items  實際項數少於此值時改靜態（「少量內容不輪播」），0＝不設門檻
 *   --carousel-nav        on | off：套件內建前後鈕
 *   --carousel-dots       on | off：套件內建分頁點
 *
 *   [主題怎麼改] 在主題 widget.css 以同一個屬性選擇器覆寫變數即可，例如
 *       [data-carousel="imgTextD"] { --carousel-per-view: 2; }
 *   RWD 差異一律寫成「在 @media 內覆寫變數」。主題寫在 @media 外的值會勝出所有寬度
 *   （同特異性、載入序在後），只想改某一段寬度時，主題自己也要包同一個 @media。
 *
 *   [斷點] 一律 480/576/768/992/1200/1400（使用者 2026-10-02 裁決收斂原 600/700/900/
 *   1000/1350/1700 等散值）。唯一例外見圖文 A 的 [BREAKPOINT] 註記。
 *   圖文 A 以 @container 依「輪播容器寬度」判定（沿用原 Swiper breakpointsBase:'container'），
 *   其餘元件依視窗寬（與原 Owl responsive 的判定基準相同）。
 * ==========================================================================*/


/* JS 初始化前先用第一張保留輪播高度。Owl vendor 預設 .owl-carousel { display:none }，
   若等到 JS 完成才顯示，後續所有 Widget 會整頁下移；先呈現第一張可維持相同高度，
   其餘張暫時隱藏，避免初始化前縱向堆疊。static 模式由下方 grid 規則接手。 */
.owl-carousel[data-carousel]:not(.owl-loaded):not([data-carousel-state="static"]) {
    display: block;
    overflow: hidden;
}

.owl-carousel[data-carousel]:not(.owl-loaded):not([data-carousel-state="static"]) > :not(:first-child) {
    display: none;
}

/* ----------------------------------------------------------------------------
 * 靜態排列（data-carousel-state="static"）
 *   不初始化套件、不搬動節點，閱讀與 Tab 順序即輸出順序。
 *   欄寬與輪播時同一公式（套件的單項寬＝(容器寬＋間距)／每屏項數－間距），
 *   故「少量內容不輪播」的卡片尺寸與輪播時一致；項數超過一列時自動換列。
 *   主題要讓少量卡片平分整列，覆寫 grid-template-columns 即可（例：三福圖文 D）。
 * -------------------------------------------------------------------------- */

/* 數值型變數註冊型別：computed value 會被正規化（例 2rem → 32px、calc(...) → 算出的數字），
   widget.js 以 parseFloat 讀到的就是 CSS 實際使用的值；寫錯型別時整條宣告無效、退回初始值，
   不會出現「CSS 用真值、JS 讀到別的數」的靜默不一致 */
@property --carousel-per-view {
    syntax: '<number>';
    inherits: true;
    initial-value: 1;
}

@property --carousel-gap {
    syntax: '<length>';
    inherits: true;
    initial-value: 0px;
}

@property --carousel-min-items {
    syntax: '<integer>';
    inherits: true;
    initial-value: 0;
}

/* 所有元件都在同一個 [data-carousel] 容器讀取契約，靜態與輪播不換 DOM。 */
[data-carousel][data-carousel-state="static"] {
    --carousel-static-col: calc((100% + var(--carousel-gap, 0px)) / var(--carousel-per-view, 1) - var(--carousel-gap, 0px));
}

/* Owl vendor 在未初始化時會把 .owl-carousel 設為 display:none，靜態時由本規則接手。 */
.owl-carousel[data-carousel-state="static"] {
    display: grid;
    grid-template-columns: repeat(auto-fill, var(--carousel-static-col));
    gap: var(--carousel-gap, 0px);
}

[data-carousel][data-carousel-state="static"] > :is(.swiper-slide, .item, .p-c) {
    width: auto;
    margin: 0;
}

/* controller 讓輪播容器可用方向鍵操作。移除瀏覽器套在整條 track 外圍的黑色矩形，
   鍵盤焦點改以左側品牌色內框表示，保留可見焦點且不切過圓形卡片。 */
[data-carousel][tabindex]:focus {
    outline: 0;
}

[data-carousel][tabindex]:focus-visible {
    position: relative;
}

[data-carousel][tabindex]:focus-visible::before {
    content: "";
    position: absolute;
    inset-inline-start: 4px;
    top: 50%;
    width: 4px;
    height: 32px;
    border-radius: 99rem;
    background: var(--cms-color-primary, #4fc1f0);
    transform: translateY(-50%);
    z-index: 15;
    pointer-events: none;
}


/* Owl 目前只處理水平軸；垂直方向維持原始 DOM 與閱讀順序，以可捲動直列安全呈現。 */
[data-carousel][data-carousel-state="static"][data-carousel-direction="vertical"] {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    max-height: var(--carousel-vertical-max-height, none);
}

[data-carousel][data-carousel-state="static"][data-carousel-direction="vertical"] > * {
    width: 100%;
}

/* 靜態時 widget.js 會替自製控制項加 hidden。這些元素各自的模組檔宣告了 display（例：.owl-nav-custom
   為 flex），會壓過瀏覽器內建的 [hidden]；不依賴 Bootstrap reboot 的 [hidden]{display:none!important}，
   在此明確收掉 */
.owl-nav-custom[hidden],
.owl-carousel-btn-suggestbox[hidden],
.productB .swiper-pagination[hidden],
.swiper-productB-button-prev[hidden],
.swiper-productB-button-next[hidden],
.product-thumbnails__control[hidden] {
    display: none;
}


/* ----------------------------------------------------------------------------
 * Banner（依視窗寬）
 * -------------------------------------------------------------------------- */

[data-carousel="bannerA"] {
    --carousel-per-view: 1;
    --carousel-gap: 0px;
    --carousel-min-items: 2;
    --carousel-nav: on;
    --carousel-dots: off;
}

[data-carousel="bannerB"] {
    --carousel-per-view: 1;
    --carousel-gap: 0px;
    --carousel-min-items: 2;
    --carousel-nav: on;
    --carousel-dots: off;
}

[data-carousel="bannerC"] {
    --carousel-per-view: 1.5;
    --carousel-gap: 10px;
    --carousel-min-items: 2;
    --carousel-nav: off;
    --carousel-dots: on;
}

@media (min-width: 992px) {
    [data-carousel="bannerC"] {
        --carousel-per-view: 3;
        --carousel-gap: 20px;
    }
}

[data-carousel="bannerD"] {
    --carousel-per-view: 1;
    --carousel-gap: 10px;
    --carousel-min-items: 2;
    --carousel-nav: on;
    --carousel-dots: off;
}

[data-carousel="bannerE"] {
    --carousel-per-view: 1.5;
    --carousel-gap: 10px;
    --carousel-min-items: 2;
    --carousel-nav: off;
    --carousel-dots: on;
}

@media (min-width: 992px) {
    [data-carousel="bannerE"] {
        --carousel-gap: 20px;
    }
}


/* ----------------------------------------------------------------------------
 * 圖文 A（Owl，依輪播外殼寬度）
 *   查詢容器維持 .imgTextASwiper，契約掛在其內層共用 track；主題只覆寫 --carousel-*。
 * -------------------------------------------------------------------------- */

.imgTextASwiper {
    container-type: inline-size;
}

[data-carousel="imgTextA"] {
    --carousel-per-view: 1.5;
    --carousel-gap: 20px;
    --carousel-min-items: 2;
}

@container (min-width: 768px) {
    [data-carousel="imgTextA"] { --carousel-per-view: 2.5; }
}

@container (min-width: 992px) {
    [data-carousel="imgTextA"] { --carousel-per-view: 3; }
}

@container (min-width: 1400px) {
    [data-carousel="imgTextA"] { --carousel-per-view: 4; }
}

/* [BREAKPOINT] 1700：維持 1920 桌機每屏 5 張的既有外觀。 */
@container (min-width: 1700px) {
    [data-carousel="imgTextA"] { --carousel-per-view: 5; }
}


/* ----------------------------------------------------------------------------
 * 圖文 B（所有筆數共用同一骨架；少於 5 筆由 adapter 切為靜態排列）
 * -------------------------------------------------------------------------- */

[data-carousel="imgTextB"] {
    --carousel-per-view: 2;
    --carousel-gap: 10px;
    --carousel-min-items: 5;
}

@media (min-width: 576px) {
    [data-carousel="imgTextB"] {
        --carousel-per-view: 3;
    }
}

@media (min-width: 992px) {
    [data-carousel="imgTextB"] {
        --carousel-per-view: 5;
    }
}


/* ----------------------------------------------------------------------------
 * 圖文 D：手機 2 張以上、桌機 4 張以上才輪播，其餘靜態排列
 * -------------------------------------------------------------------------- */

[data-carousel="imgTextD"] {
    --carousel-per-view: 1;
    --carousel-gap: 20px;
    --carousel-min-items: 2;
}

@media (min-width: 768px) {
    [data-carousel="imgTextD"] {
        --carousel-per-view: 2.5;
    }
}

@media (min-width: 992px) {
    [data-carousel="imgTextD"] {
        --carousel-per-view: 3.5;
        --carousel-min-items: 4;
    }
}


/* ----------------------------------------------------------------------------
 * 商品 B（Owl；寬版 1600 容器另一組張數）
 * -------------------------------------------------------------------------- */

[data-carousel="productB"] {
    --carousel-per-view: 2.5;
    --carousel-gap: 20px;
    --carousel-min-items: 3;
    --carousel-dots: on;
}

[data-carousel="productB"][data-carousel-state="static"] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
}

[data-carousel="productB"][data-carousel-state="static"] > .swiper-slide {
    flex: 0 0 var(--carousel-static-col);
}

@media (min-width: 768px) {
    [data-carousel="productB"] {
        --carousel-per-view: 3.2;
        --carousel-min-items: 4;
    }

    [data-carousel="productB"][data-widget-width="1600"] {
        --carousel-per-view: 3.5;
    }
}

@media (min-width: 992px) {
    [data-carousel="productB"][data-widget-width="1600"] {
        --carousel-per-view: 5.5;
        --carousel-min-items: 6;
    }
}

@media (forced-colors: active) {
    [data-carousel][tabindex]:focus-visible {
        outline: 2px solid CanvasText;
        outline-offset: 2px;
    }

    [data-carousel][tabindex]:focus-visible::before {
        display: none;
    }
}


/* ----------------------------------------------------------------------------
 * 商品／文章詳情頁的推薦輪播（內建前後鈕只在桌機出現）
 * -------------------------------------------------------------------------- */

[data-carousel="suggest"] {
    --carousel-per-view: 1.5;
    --carousel-gap: 10px;
    --carousel-min-items: 2;
    --carousel-nav: off;
}

@media (min-width: 576px) {
    [data-carousel="suggest"] {
        --carousel-per-view: 3;
    }
}

@media (min-width: 992px) {
    [data-carousel="suggest"] {
        --carousel-per-view: 5;
        --carousel-nav: on;
    }
}
/* ----------------------------------------------------------------------------
 * 商品詳情縮圖：桌機 4 張、較窄畫面 3 張；少於 5 張維持靜態，不建立 clone。
 * -------------------------------------------------------------------------- */

[data-carousel="productThumbnails"] {
    --carousel-per-view: 3;
    --carousel-gap: 10px;
    --carousel-min-items: 5;
    --carousel-nav: off;
    --carousel-dots: off;
    --carousel-direction: horizontal;
    --carousel-vertical-max-height: 36rem;
}

@media (min-width: 992px) {
    [data-carousel="productThumbnails"] {
        --carousel-per-view: 4;
    }
}

}
/* source: web/css/common/announcement.css */
@layer cms.platform {
/* ========================================================
   Issue #458 全站頂部公告列（Announcement Bar）
   --------------------------------------------------------
   模組化結構共用 layout 層（common.layout）——全站頂部元件，
   每頁載入；顏色由 data-driven 的 .color-* 控制，各主題無差異，
   故僅放 common、不需主題覆寫。原樣遷移自舊單檔 default.css
   （#518 模組化後舊單檔已凍結不載入），詳見 docs/front/css-theme-system.md。
   ======================================================== */
.web-announcement-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 44px;
  background: #212529;
  color: #fff;
  overflow: hidden;
  z-index: 3100;
  transition: background-color 0.4s ease, transform 0.3s ease;
}

.web-announcement-bar.is-hidden {
  transform: translateY(-100%);
}

/* #723 Phase 3:行動側欄開啟時公告列降層。
   側欄(.mobile-sidebar,z-index 1050)位於 #header(z-index 3000)堆疊環境內,
   恆低於公告列的 3100——側欄關閉鈕會被公告列遮蔽而點不到。
   側欄開啟時 main.js 於 body 掛 .mobile-sidebar-open,此處把公告列降到
   header 環境之下;關閉後還原 3100,不影響「公告列壓在 sticky header 上」的常態。 */
body.mobile-sidebar-open .web-announcement-bar {
  z-index: 1040;
}

/* #1027：商品分類抽屜開啟時同樣降層。抽屜(.mobile-cat-drawer,z-index 3050)雖然
   不在 #header 堆疊環境內、數值也高於側欄,但仍低於公告列的 3100,抽屜頂部與關閉鈕
   一樣會被蓋住(側欄之所以沒這問題,正是因為已有上方那條處理)。開啟時 main.js 於
   body 掛 .mobile-cat-drawer-open,關閉後還原 3100。 */
body.mobile-cat-drawer-open .web-announcement-bar {
  z-index: 1040;
}

/* 公告列可見時，Header 下移 44px */
#header {
  transition: top 0.3s ease;
}

.has-announcement-bar #header {
  top: 44px;
}

/* 色盤 key（對齊後台 bar_color：red/yellow/blue/green/purple/black/white；空＝無套用上方 base 深色） */
.web-announcement-bar.color-red    { background-color: #e74c3c; }
.web-announcement-bar.color-yellow { background-color: #f39c12; color: #212529; }
.web-announcement-bar.color-blue   { background-color: #2980b9; }
.web-announcement-bar.color-green  { background-color: #27ae60; }
.web-announcement-bar.color-purple { background-color: #8e44ad; }
.web-announcement-bar.color-black  { background-color: #212529; }
.web-announcement-bar.color-white  { background-color: #ffffff; color: #212529; }

.web-announcement-bar-inner {
  display: flex;
  align-items: center;
  height: 44px;
  max-width: none;
  margin: 0 auto;
  /* 內容寬度對齊各主題 header 容器：沿用 base.css 的共用左右留白（:where 規則已列入本類） */
}

.web-announcement-bar-nav {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex-shrink: 0;
  margin-right: 4px;
}

.web-announcement-nav-btn {
  background: none;
  border: none;
  color: rgba(255, 255, 255, 0.7);
  padding: 1px 6px;
  cursor: pointer;
  font-size: 10px;
  line-height: 1.2;
  transition: color 0.15s;
}

.web-announcement-nav-btn:hover {
  color: #fff;
}

.web-announcement-viewport {
  flex: 1;
  position: relative;
  overflow: hidden;
  height: 44px;
}

.web-announcement-item {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: translateY(100%);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}

.web-announcement-item.enter-from-above { transform: translateY(-100%); }
.web-announcement-item.is-active        { transform: translateY(0); }
.web-announcement-item.exit-to-up       { transform: translateY(-100%); }
.web-announcement-item.exit-to-down     { transform: translateY(100%); }

.web-announcement-item-inner {
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: 100%;
  min-width: 0;
}

.web-announcement-text {
  color: #fff;
  font-size: 14px;
  text-align: center;
  text-decoration: none;
  /* 單行置中、寬度隨字數擴展（最寬至 header 容器）。超過寬度時改為跑馬燈左捲（issue #458） */
  overflow: hidden;
  min-width: 0;
  max-width: 100%;
}

.web-announcement-text-scroll {
  display: inline-block;
  white-space: nowrap;
}

/* 文字超出容器寬度：左對齊並啟用跑馬燈左捲（is-scrolling 由 JS 量測後加上） */
.web-announcement-text.is-scrolling {
  text-align: left;
}

.web-announcement-text.is-scrolling .web-announcement-text-scroll {
  animation: web-announcement-marquee var(--scroll-duration, 12s) linear infinite;
}

@keyframes web-announcement-marquee {
  0%, 12%   { transform: translateX(0); }
  88%, 100% { transform: translateX(calc(-1 * var(--scroll-distance, 0px))); }
}

a.web-announcement-text:hover {
  color: rgba(255, 255, 255, 0.85);
  text-decoration: underline;
}

.web-announcement-countdown {
  background: rgba(0, 0, 0, 0.2);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 2px 10px;
  border-radius: 20px;
  white-space: nowrap;
  flex-shrink: 0;
}

.web-announcement-bar-right {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  margin-left: 8px;
}

.web-announcement-indicator {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.65);
  white-space: nowrap;
  min-width: 32px;
  text-align: center;
}

.web-announcement-close-btn {
  background: none;
  border: none;
  color: rgba(255, 255, 255, 0.6);
  padding: 4px 6px;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  transition: color 0.15s;
}

.web-announcement-close-btn:hover {
  color: #fff;
}

@media (max-width: 575.98px) {
  /* 手機版加高至 60px：容兩行（文字＋倒數）並上下各留約 10px padding */
  .web-announcement-bar,
  .web-announcement-bar-inner,
  .web-announcement-viewport {
    height: 60px;
  }

  .has-announcement-bar #header {
    top: 60px;
  }

  .web-announcement-bar-inner {
    padding: 0 16px;
  }

  /* 手機版：公告文字（上）與倒數（下）改上下兩行、置中 */
  .web-announcement-item-inner {
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    width: 100%;
  }

  .web-announcement-text {
    font-size: 13px;
    align-self: stretch;   /* 撐滿寬度，供置中／跑馬燈量測 */
  }

  /* 倒數放第二行、置中（取消桌機外的隱藏）*/
  .web-announcement-countdown {
    display: inline-block;
    font-size: 11px;
    padding: 1px 8px;
  }
}

/* 淡入淡出動畫覆寫（版本 B 專用） */
.web-announcement-bar--fade .web-announcement-item {
  transform: translateY(0);
  opacity: 0;
  transition: opacity 0.5s ease;
}

.web-announcement-bar--fade .web-announcement-item.is-active {
  opacity: 1;
}

.web-announcement-bar--fade .web-announcement-item.is-fading-out {
  opacity: 0;
}

/* body padding-top 由 JS syncHeaderOffset() 動態設為「公告列高度」即可：頁面內容本身
   已透過 .page-wrapper margin-top / .breadcrumbs-section padding-top 等為 fixed #header
   讓位，公告列開啟時 #header 僅再下移 barHeight，故 body 只補 barHeight、不重複加 header 高度 */

/* 模糊淡入動畫覆寫（版本 C 專用）*/
.web-announcement-bar--blur .web-announcement-item {
  transform: translateY(0);
  opacity: 0;
  filter: blur(6px);
  transition: opacity 0.5s ease, filter 0.5s ease;
}

.web-announcement-bar--blur .web-announcement-item.is-active {
  opacity: 1;
  filter: blur(0);
}

.web-announcement-bar--blur .web-announcement-item.is-fading-out {
  opacity: 0;
  filter: blur(6px);
}

}
/* source: web/css/common/pages/post.css */
@layer cms.platform {
/* ============================================================================
 * common/pages/post.css — 跨主題共用貼文頁面（列表 + 詳情）
 * ============================================================================
 *
 * 用途：
 *   提供 6 個前台主題共用的貼文頁面樣式 baseline：貼文列表頁
 *   （posts/index）的舊版與新版兩種卡片佈局、貼文詳情頁
 *   （posts/show）的標題、內文、章節標題、區段標題等。
 *
 * 設計意圖：
 *   - common/pages/post.css = default baseline（未來所有網站的基礎標準）
 *   - themes/shinvo-standard/pages/post.css 故意保持空殼（default 不需覆寫自己的 baseline）
 *   - 其他主題透過 themes/{theme}/pages/post.css 對 baseline 做差異化覆寫
 *
 * 內容索引：
 *   區段 1: 舊版列表卡片（.blog-img / .blog-title / .blog-desc / .blog-item /
 *           .blog-item .blog-desc::before/::after 裝飾 / hover 動畫 / .read-more）
 *   區段 2: 新版列表卡片（.blog-item-2 / .blog-title-2 / .blog-title-border /
 *           .blog-image / .blog-desc / .read-more / .blog-item-2:hover）
 *   區段 3: 貼文詳情頁（.blog-details-area / .blog-details-title /
 *           .blog-description（含 p img、img 巢狀規則）/ .blog-section-title）
 *
 * 使用頁面：
 *   - resources/views/web/posts/index.blade.php（貼文列表）
 *   - resources/views/web/posts/show.blade.php（貼文詳情）
 *
 * 載入順序：
 *   common/{base,header,sidebar,footer,widget}.css → themes/shinvo-standard/{同}.css →
 *   common/pages/post.css（本檔）→ themes/shinvo-standard/pages/post.css → custom.css
 *
 * 抽取來源：public/web/css/default.css 3 個區段：
 *   - line 4948~5041：舊版列表卡片
 *   - line 5098~5189：新版列表卡片
 *   - line 5836~5906：貼文詳情頁
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 6.2）
 * ============================================================================
 */


/* ============================================================================
 * 區段 1：舊版列表卡片（.blog-img / .blog-title / .blog-desc / .blog-item / .read-more）
 *   抽取自 default.css line 4948~5041
 *   對應 blade：posts/index.blade.php（舊版佈局）
 * ============================================================================
 */

.blog-desc p {
  margin-bottom: 25px;
}

.read-more a {
  color: #2c2c2c;
  font-size: 16px;
  padding: 10px 16px;
  text-transform: uppercase;
}

/* ============================================================================
 * 區段 2：新版列表卡片（.blog-item-2 系列）
 *   抽取自 default.css line 5098~5189
 *   對應 blade：posts/index.blade.php（新版佈局）
 * ============================================================================
 */

.blog-item-2 {
  margin-bottom: 30px;
  background: #ffffff;
  border-radius: 0px;
  overflow: hidden;
}

.blog-item-2 img {
  width: 100%;
  height: 100%;
  aspect-ratio: 4/3;
  object-fit: cover;
  transition: all 0.3s ease 0s;
}

.blog-item-2 .blog-desc {
  text-align: start;
  padding: 10px 20px 10px 0;
}

.blog-title-2 {
  color: #333333;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  text-transform: capitalize;
  white-space: nowrap;
}

.blog-title-2>a {
  padding-bottom: 4px;
}

.blog-title-2>a:hover {
  color: #2c2c2c;
}

.blog-desc>p {
  color: #333333;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}

.blog-item-2 .blog-image {
  overflow: hidden;
  width: 100%;
  height: 100%;
}

.date-box {
  margin: 8px;
  width: fit-content;
}

.date-text {
  margin-bottom: 0;
  /* font-size: 14px; */
  text-align: end;
}

.read-more {
  width: 100px;
}

/* .read-more a {
  padding: 10px 16px;
} */

@media screen and (max-width: 767.98px) {
  .blog-item-2 .blog-image {
    padding: 16px;
    border-radius: 10px;
    overflow: hidden;
  }

  .blog-item-2 .blog-image img {
    border-radius: 10px;
  }
}

.blog-item-2:hover img {
  opacity: 0.4;
  transform: scale3d(1.1, 1.1, 1);
}


/* ============================================================================
 * 區段 3：貼文詳情頁（.blog-details-area / .blog-details-title / .blog-description / .blog-section-title）
 *   抽取自 default.css line 5836~5906
 *   對應 blade：posts/show.blade.php
 * ============================================================================
 */

.blog-details-area {
  background: #ffffff;
  border-radius: 10px;
  min-height: 300px;
  height: fit-content;
  padding: 40px 20px;
}

/* #1399：貼文日期、封面與正文的共用編排骨架。主題只需改兩個變數即可切換
   大封面、左右雙欄或單欄閱讀；沒有封面時自動移除 cover 軌道。 */
/* #1395／#1399：主題的雙欄門檻以文章區塊實際可用寬度判定（@container post-detail），
   不看視窗寬度——側欄與內距已先吃掉一大段，視窗夠寬不代表正文欄夠寬 */
.blog-details-area {
  container: post-detail / inline-size;
}

.post-detail-layout {
  --cms-post-detail-columns: minmax(0, 1fr);
  --cms-post-detail-areas: "meta" "cover" "body";
  display: grid;
  grid-template-columns: var(--cms-post-detail-columns);
  grid-template-areas: var(--cms-post-detail-areas);
  gap: var(--cms-space-20, 20px);
  min-width: 0;
}

.post-detail-layout[data-has-cover="false"] {
  --cms-post-detail-areas: "meta" "body";
}

.post-detail__meta {
  grid-area: meta;
  min-width: 0;
}

.post-detail__meta > :last-child,
.post-detail__cover {
  margin-bottom: 0;
}

.post-detail__cover {
  grid-area: cover;
  min-width: 0;
  overflow: hidden;
}

.post-detail__cover :is(picture, img),
.post-detail__cover-image {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}

/* width:100% 不可省：主題對 .blog-description 設 margin-inline:auto 置中時，
   帶 auto 邊距的 grid 項目不會被拉伸，改依內容最小寬度計算，會撐出軌道並在手機被裁切 */
.post-detail__body {
  grid-area: body;
  width: 100%;
  min-width: 0;
}

/* body.cms-richtext--post：CKEditor 編輯區的富文本容器就是 <body>，零權重的 :where() 會輸給 base.css 與各主題 base.css
   的 body 字級、行高與文字色，以及未分層的 Bootstrap body 顏色。用 (0,1,1) 的 class 選擇器勝過那些 body 規則；
   文章樣式可獨立於全站主題選擇，主題的 base.css 一定載入、文章樣式檔卻不一定，只靠載入順序會讓搭配別款文章樣式時輸掉。
   文章樣式檔要調整編輯區時沿用同一個選擇器，靠載入在後勝出。前台 body 不帶此 class，不受影響（#1394） */
.blog-details-area .blog-description:not(.cms-richtext),
:where(.cms-richtext--post),
body.cms-richtext--post {
  font-size: 16px;
  line-height: 28px;
  color: #333333;
}

.blog-details-area .blog-description:not(.cms-richtext) p img {
  width: auto;
  max-width: 100%;
  height: auto !important; /* 保留 !important：編輯器內容的圖片常帶 inline 寬高，只有它蓋得過 */
  aspect-ratio: auto;

}

.blog-details-area .blog-description:not(.cms-richtext) img {
  width: auto;
  max-width: 100%;
  height: auto !important; /* 保留 !important：編輯器內容的圖片常帶 inline 寬高，只有它蓋得過 */
  aspect-ratio: auto;

}

:where(.cms-richtext--post) p img,
:where(.cms-richtext--post) img {
  width: auto;
  max-width: 100%;
  height: auto;
}

@media screen and (max-width: 767.98px) {

  .blog-details-area {
    overflow-x: hidden;
  }

  .blog-details-area .blog-description:not(.cms-richtext) p img {
    width: auto;
    max-width: 100%;
    height: auto !important; /* 保留 !important：編輯器內容的圖片常帶 inline 寬高，只有它蓋得過 */
    aspect-ratio: auto;
  }

}

/* .blog-section-title 已遷至 common/base.css；contactUs / 其他頁面亦使用 */

/* ============================================================================
 * 骨架語意化（issue #715）：posts/index 原 Bootstrap grid 的等價規則。
 * 客戶主題 3ffood 於 themes/custom-3ffood/pages/post.css 以原 grid 結構為 hook 完全
 * 覆寫本版面（水平卡），選擇器已同步遷移至本語意類；其餘主題沿用 BS 預設欄寬
 * （col-md-6=50%＠768、col-lg-6=50%＠992），故此處鏡射 BS 生效值。
 * ============================================================================ */

/* 原外層 row（貼文卡兩欄流）＋ col-md-6 */
.blog-list {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}

.blog-list__item {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

@media (min-width: 768px) {
  .blog-list__item {
    flex: 0 0 auto;
    width: 50%;
  }
}

/* 原 blog-item-2 內層 row ＋ col-lg-6 圖／文 */
.blog-item-2__row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}

.blog-item-2__col {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

@media (min-width: 992px) {
  .blog-item-2__col {
    flex: 0 0 auto;
    width: 50%;
  }
}

/* 原日期列 d-flex justify-content-end */
.blog-date-align {
  display: flex;
  justify-content: flex-end;
}

/* 原分頁 row ＋ col-lg-12 */
.blog-pagination-row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}

.blog-pagination-row__body {
  flex: 0 0 auto;
  width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
}

/* 原空狀態 col-md-12 ＋ text-center */
.blog-empty__inner {
  text-align: center;
}

/* ============================================================================
 * 骨架語意化（issue #716）：posts/show 原 Bootstrap grid／佈局 utility 的等價規則。
 * 3ffood 於 post.css 以 .col-lg-12.col-12.order-2.d-block 為 hook 覆寫關聯輪播,
 * 選擇器已同步遷移至 .blog-related。響應式顯示（d-lg-block/d-lg-flex/d-none）為
 * 版面骨架,轉語意類；圖片 desktopImg 的 d-none（BS 切換狀態）保留於 blade。
 * ============================================================================ */

/* 原主佈局 row justify-content-lg-start ＋ col-lg-9 主欄 ＋ col-lg-3 側欄 */
.blog-detail-row {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}

@media (min-width: 992px) {
  .blog-detail-row {
    justify-content: flex-start;
  }
}

.blog-detail-main,
.blog-detail-side,
.blog-related {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
  margin-top: var(--bs-gutter-y);
}

@media (min-width: 992px) {
  .blog-detail-main {
    flex: 0 0 auto;
    width: 75%;
  }

  .blog-detail-side {
    flex: 0 0 auto;
    width: 25%;
  }
}

/* 原側欄的 d-lg-block d-none（<992 隱藏、≥992 block） */
.blog-detail-side {
  display: none;
}

@media (min-width: 992px) {
  .blog-detail-side {
    display: block;
  }
}

/* 原關聯輪播的 col-lg-12 col-12 order-2 d-block（恆滿寬、order 2 排最後） */
.blog-related {
  order: 2;
  display: block;
}

/* 原關聯輪播標題列 d-flex justify-content-between align-items-center */
.blog-related__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* 原標題 h5 的 mb-0。舊註解擔心不帶 !important 會被 3ffood .widget-title 的 margin 蓋回；
   #1399 拿掉 !important 後以 9 主題 × 4 寬度逐元素比對文章頁，computed style 零差異 */
.blog-related__title {
  margin-bottom: 0;
}

/* 原輪播導航 d-lg-flex justify-content-end d-none（<992 隱藏、≥992 flex 靠右） */
.blog-related__nav {
  display: none;
}

@media (min-width: 992px) {
  .blog-related__nav {
    display: flex;
    justify-content: flex-end;
  }
}

/* 原隱藏 aside（本身 d-none）內的 row d-flex flex-wrap ＋ product-item col-lg-3 col-12 */
.blog-related-hidden__grid {
  --bs-gutter-x: 1.5rem;
  --bs-gutter-y: 0;
  display: flex;
  flex-wrap: wrap;
  margin-right: calc(-0.5 * var(--bs-gutter-x));
  margin-left: calc(-0.5 * var(--bs-gutter-x));
}

.blog-related-hidden__item {
  flex-shrink: 0;
  width: 100%;
  max-width: 100%;
  padding-right: calc(var(--bs-gutter-x) * 0.5);
  padding-left: calc(var(--bs-gutter-x) * 0.5);
}

@media (min-width: 992px) {
  .blog-related-hidden__item {
    flex: 0 0 auto;
    width: 25%;
  }
}

/* 原 content_type!=1 摘要欄的 col-md-6 text-center（dead branch,語意化保留） */
.blog-detail-summary-col {
  text-align: center;
}

/* ============================================================================
 * 外部連結型貼文（content_type=2）跳轉提示頁（issue #906）
 *   直連此類貼文的內部詳情網址時顯示：說明、目的網域、秒數倒數與「立即前往」連結。
 *   併入既有 post.css 而非另開功能檔：本頁是貼文功能的一個內容型態分支，不是獨立功能模組，
 *   另開新檔會迫使五個主題各自建立空殼覆寫檔（config/webThemeCss.php 的 common＋themes 結構）。
 * ============================================================================ */
.post-external {
  max-width: 640px;
  margin: 0 auto;
  padding: 48px 20px 64px;
  text-align: center;
}

.post-external__heading {
  margin-bottom: 16px;
  font-size: 24px;
  font-weight: 700;
}

.post-external__notice {
  margin-bottom: 24px;
  font-size: 16px;
  line-height: 1.8;
}

.post-external__seconds,
.post-external__domain {
  font-weight: 700;
  word-break: break-all;
}

.post-external__link {
  display: inline-block;
  padding: 12px 32px;
  border: 1px solid currentColor;
  border-radius: 4px;
  font-size: 16px;
  text-decoration: none;
}

.post-external__link:hover,
.post-external__link:focus-visible {
  text-decoration: underline;
}

.post-external__fallback {
  margin-top: 16px;
  font-size: 14px;
  opacity: 0.8;
}

@media (max-width: 576px) {
  .post-external {
    padding: 32px 16px 48px;
  }

  .post-external__heading {
    font-size: 20px;
  }
}


/* #1399 E：文章詳情與相關文章間距由語意角色擁有。 */
.blog-section--detail { margin-bottom: var(--cms-space-50); }
.blog-related-hidden,
.blog-related {
  margin-top: var(--cms-space-20);
  margin-bottom: var(--cms-space-30);
  /* Region 只負責佈局；可見內容 surface 由內層 panel／主題負責。 */
  background: transparent;
}
.blog-related-hidden__title,
.blog-related__header { margin-bottom: var(--cms-space-20); }
.widget-section--after-banner { margin-top: var(--cms-space-100); }

}
/* source: web/css/themes/shinvo-standard/base.css */
@layer cms.theme {
/* ============================================================================
 * themes/shinvo-standard/base.css — default 主題 base 覆寫層（空殼）
 * ============================================================================
 *
 * 用途：
 *   default 主題對 common/base.css 的覆寫層 — 但故意保持為空殼。
 *
 * 設計理由（重要）：
 *   default 主題是「未來所有網站的基礎標準」（baseline），common/base.css
 *   本身已是該標準的完整呈現。default 不需要對「自己的 baseline」做覆寫，
 *   因此本檔故意保持空殼。
 *
 *   其他主題（3ffood / kgtwbeef / dgfactor / shopLinerp）才需透過
 *   各自的 themes/{theme}/base.css 對 common baseline 做差異化覆寫。
 *
 * 載入順序：
 *   common/base.css -> 本檔（本檔目前為空殼，無覆寫）
 *
 * 何時需要在本檔加規則：
 *   - 若 default 站需要對 common/base.css 的某條規則做暫時性 hotfix
 *     且不適合改 common/base.css（如該規則仍是其他主題的合理 baseline）
 *   - 一般情況下「default 規則該動哪就改 common/base.css」即可
 *     （因為 common = default baseline）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.1 + 後續設計澄清）
 * ============================================================================
 */

}
/* source: web/css/themes/shinvo-standard/widget.css */
@layer cms.theme {
/* ============================================================================
 * themes/shinvo-standard/widget.css — default 主題 widget 覆寫層（空殼）
 * ============================================================================
 *
 * 用途：
 *   default 主題對 common/widget/ 的覆寫層 — 但故意保持為空殼。
 *
 * 設計理由（重要）：
 *   default 主題是「未來所有網站的基礎標準」（baseline），common/widget/
 *   本身已是該標準的完整呈現。default 不需要對「自己的 baseline」做覆寫，
 *   因此本檔故意保持空殼。
 *
 *   其他主題（3ffood / kgtwbeef / dgfactor / shopLinerp）才需透過
 *   各自的 themes/{theme}/widget.css 對 common baseline 做差異化覆寫。
 *
 * 載入順序：
 *   common/widget/ -> 本檔（本檔目前為空殼，無覆寫）
 *
 * 何時需要在本檔加規則：
 *   - 若 default 站需要對 common/widget/ 的某條規則做暫時性 hotfix
 *     且不適合改 common/widget/（如該規則仍是其他主題的合理 baseline）
 *   - 一般情況下「default 規則該動哪就改 common/widget/」即可
 *     （因為 common = default baseline）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.5 重規劃版 v2）
 * ============================================================================
 */

}
/* source: web/css/chrome/palettes.css */
@layer cms.brand {
/* #1399 三個品牌色角色共用精選 120 色；每個角色可獨立選擇並允許重複。 */
body[data-web-brand-primary="tone-warm-red-96"] {--cms-brand-primary:#FDF7F7;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#D14545;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-red-96"] {--cms-brand-secondary:#FDF7F7;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#D14545;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-red-96"] {--cms-brand-accent:#FDF7F7;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#D14545;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="cherry-mist"] {--cms-brand-primary:#FEE2E2;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#ED0808;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="cherry-mist"] {--cms-brand-secondary:#FEE2E2;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#ED0808;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="cherry-mist"] {--cms-brand-accent:#FEE2E2;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#ED0808;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-red-93"] {--cms-brand-primary:#FFDBE3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#ED0035;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-red-93"] {--cms-brand-secondary:#FFDBE3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#ED0035;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-red-93"] {--cms-brand-accent:#FFDBE3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#ED0035;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-red-90"] {--cms-brand-primary:#F9D4D2;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#E22E25;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-red-90"] {--cms-brand-secondary:#F9D4D2;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#E22E25;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-red-90"] {--cms-brand-accent:#F9D4D2;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#E22E25;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="soft-coral"] {--cms-brand-primary:#FECACA;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#EE0404;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="soft-coral"] {--cms-brand-secondary:#FECACA;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#EE0404;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="soft-coral"] {--cms-brand-accent:#FECACA;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#EE0404;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-red-87"] {--cms-brand-primary:#F2CAD3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#D04162;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-red-87"] {--cms-brand-secondary:#F2CAD3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#D04162;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-red-87"] {--cms-brand-accent:#F2CAD3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#D04162;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="coral"] {--cms-brand-primary:#FCA5A5;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#ED0808;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="coral"] {--cms-brand-secondary:#FCA5A5;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#ED0808;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="coral"] {--cms-brand-accent:#FCA5A5;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#ED0808;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="salmon"] {--cms-brand-primary:#F87171;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#ED0C0C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="salmon"] {--cms-brand-secondary:#F87171;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#ED0C0C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="salmon"] {--cms-brand-accent:#F87171;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#ED0C0C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="vermilion"] {--cms-brand-primary:#EF4444;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#EB1616;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="vermilion"] {--cms-brand-secondary:#EF4444;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#EB1616;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="vermilion"] {--cms-brand-accent:#EF4444;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#EB1616;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="crimson"] {--cms-brand-primary:#DC2626;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#DC2626;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="crimson"] {--cms-brand-secondary:#DC2626;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#DC2626;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="crimson"] {--cms-brand-accent:#DC2626;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#DC2626;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="burgundy"] {--cms-brand-primary:#B91C1C;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#B91C1C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="burgundy"] {--cms-brand-secondary:#B91C1C;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#B91C1C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="burgundy"] {--cms-brand-accent:#B91C1C;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#B91C1C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="oxblood"] {--cms-brand-primary:#7F1D1D;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#7F1D1D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="oxblood"] {--cms-brand-secondary:#7F1D1D;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#7F1D1D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="oxblood"] {--cms-brand-accent:#7F1D1D;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#7F1D1D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-apricot-orange-89"] {--cms-brand-primary:#FFFBF5;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#AA6600;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-apricot-orange-89"] {--cms-brand-secondary:#FFFBF5;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#AA6600;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-apricot-orange-89"] {--cms-brand-accent:#FFFBF5;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#AA6600;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="apricot"] {--cms-brand-primary:#FFEDD5;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#AF6400;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="apricot"] {--cms-brand-secondary:#FFEDD5;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#AF6400;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="apricot"] {--cms-brand-accent:#FFEDD5;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#AF6400;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-apricot-orange-92"] {--cms-brand-primary:#FFE4D6;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#D14700;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-apricot-orange-92"] {--cms-brand-secondary:#FFE4D6;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#D14700;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-apricot-orange-92"] {--cms-brand-accent:#FFE4D6;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#D14700;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-apricot-orange-86"] {--cms-brand-primary:#FFE2B8;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#AC6600;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-apricot-orange-86"] {--cms-brand-secondary:#FFE2B8;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#AC6600;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-apricot-orange-86"] {--cms-brand-accent:#FFE2B8;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#AC6600;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-apricot-orange-82"] {--cms-brand-primary:#FFDAA3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#AB6600;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-apricot-orange-82"] {--cms-brand-secondary:#FFDAA3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#AB6600;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-apricot-orange-82"] {--cms-brand-accent:#FFDAA3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#AB6600;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="peach"] {--cms-brand-primary:#FED7AA;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B46102;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="peach"] {--cms-brand-secondary:#FED7AA;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B46102;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="peach"] {--cms-brand-accent:#FED7AA;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B46102;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="sunrise-orange"] {--cms-brand-primary:#FDBA74;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B75F03;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="sunrise-orange"] {--cms-brand-secondary:#FDBA74;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B75F03;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="sunrise-orange"] {--cms-brand-accent:#FDBA74;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B75F03;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tangerine"] {--cms-brand-primary:#FB923C;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#BF5804;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tangerine"] {--cms-brand-secondary:#FB923C;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#BF5804;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tangerine"] {--cms-brand-accent:#FB923C;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#BF5804;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="vivid-orange"] {--cms-brand-primary:#F97316;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#C55405;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="vivid-orange"] {--cms-brand-secondary:#F97316;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#C55405;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="vivid-orange"] {--cms-brand-accent:#F97316;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#C55405;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="pumpkin"] {--cms-brand-primary:#EA580C;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#CD4D0B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="pumpkin"] {--cms-brand-secondary:#EA580C;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#CD4D0B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="pumpkin"] {--cms-brand-accent:#EA580C;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#CD4D0B;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="burnt-orange"] {--cms-brand-primary:#C2410C;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#C2410C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="burnt-orange"] {--cms-brand-secondary:#C2410C;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#C2410C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="burnt-orange"] {--cms-brand-accent:#C2410C;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#C2410C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="rust"] {--cms-brand-primary:#7C2D12;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#7C2D12;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="rust"] {--cms-brand-secondary:#7C2D12;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#7C2D12;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="rust"] {--cms-brand-accent:#7C2D12;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#7C2D12;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-cream-yellow-96"] {--cms-brand-primary:#FFFEF0;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A35F00;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-cream-yellow-96"] {--cms-brand-secondary:#FFFEF0;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A35F00;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-cream-yellow-96"] {--cms-brand-accent:#FFFEF0;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A35F00;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-cream-yellow-93"] {--cms-brand-primary:#FFFDDB;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A35F00;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-cream-yellow-93"] {--cms-brand-secondary:#FFFDDB;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A35F00;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-cream-yellow-93"] {--cms-brand-accent:#FFFDDB;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A35F00;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-cream-yellow-86"] {--cms-brand-primary:#FFFAB8;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A35F00;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-cream-yellow-86"] {--cms-brand-secondary:#FFFAB8;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A35F00;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-cream-yellow-86"] {--cms-brand-accent:#FFFAB8;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A35F00;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="lemon-cream"] {--cms-brand-primary:#FEF9C3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A25F03;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="lemon-cream"] {--cms-brand-secondary:#FEF9C3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A25F03;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="lemon-cream"] {--cms-brand-accent:#FEF9C3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A25F03;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-cream-yellow-90"] {--cms-brand-primary:#FFF8CC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A35F00;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-cream-yellow-90"] {--cms-brand-secondary:#FFF8CC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A35F00;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-cream-yellow-90"] {--cms-brand-accent:#FFF8CC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A35F00;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="butter"] {--cms-brand-primary:#FEF08A;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A25F01;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="butter"] {--cms-brand-secondary:#FEF08A;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A25F01;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="butter"] {--cms-brand-accent:#FEF08A;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A25F01;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="lemon"] {--cms-brand-primary:#FDE047;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A25F02;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="lemon"] {--cms-brand-secondary:#FDE047;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A25F02;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="lemon"] {--cms-brand-accent:#FDE047;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A25F02;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="sunflower"] {--cms-brand-primary:#FACC15;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A16003;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="sunflower"] {--cms-brand-secondary:#FACC15;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A16003;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="sunflower"] {--cms-brand-accent:#FACC15;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A16003;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="marigold"] {--cms-brand-primary:#EAB308;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A16006;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="marigold"] {--cms-brand-secondary:#EAB308;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A16006;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="marigold"] {--cms-brand-accent:#EAB308;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A16006;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="mustard"] {--cms-brand-primary:#CA8A04;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A15F03;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="mustard"] {--cms-brand-secondary:#CA8A04;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A15F03;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="mustard"] {--cms-brand-accent:#CA8A04;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A15F03;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="ochre"] {--cms-brand-primary:#A16207;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#A16207;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="ochre"] {--cms-brand-secondary:#A16207;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#A16207;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="ochre"] {--cms-brand-accent:#A16207;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#A16207;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="bronze-gold"] {--cms-brand-primary:#713F12;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#713F12;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="bronze-gold"] {--cms-brand-secondary:#713F12;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#713F12;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="bronze-gold"] {--cms-brand-accent:#713F12;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#713F12;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sprout-green-96"] {--cms-brand-primary:#FAFFFC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#008937;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sprout-green-96"] {--cms-brand-secondary:#FAFFFC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#008937;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sprout-green-96"] {--cms-brand-accent:#FAFFFC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#008937;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sprout-green-92"] {--cms-brand-primary:#D6FFE2;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#008A28;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sprout-green-92"] {--cms-brand-secondary:#D6FFE2;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#008A28;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sprout-green-92"] {--cms-brand-accent:#D6FFE2;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#008A28;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="mint"] {--cms-brand-primary:#DCFCE7;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0C8937;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="mint"] {--cms-brand-secondary:#DCFCE7;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0C8937;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="mint"] {--cms-brand-accent:#DCFCE7;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0C8937;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sprout-green-89"] {--cms-brand-primary:#C7FFDF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#00893B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sprout-green-89"] {--cms-brand-secondary:#C7FFDF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#00893B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sprout-green-89"] {--cms-brand-accent:#C7FFDF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#00893B;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sprout-green-87"] {--cms-brand-primary:#BDFFCC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#008A1F;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sprout-green-87"] {--cms-brand-secondary:#BDFFCC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#008A1F;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sprout-green-87"] {--cms-brand-accent:#BDFFCC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#008A1F;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="seafoam"] {--cms-brand-primary:#BBF7D0;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#10893B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="seafoam"] {--cms-brand-secondary:#BBF7D0;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#10893B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="seafoam"] {--cms-brand-accent:#BBF7D0;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#10893B;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="pistachio"] {--cms-brand-primary:#86EFAC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#12883D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="pistachio"] {--cms-brand-secondary:#86EFAC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#12883D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="pistachio"] {--cms-brand-accent:#86EFAC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#12883D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="apple-green"] {--cms-brand-primary:#4ADE80;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#198842;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="apple-green"] {--cms-brand-secondary:#4ADE80;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#198842;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="apple-green"] {--cms-brand-accent:#4ADE80;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#198842;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="leaf-green"] {--cms-brand-primary:#22C55E;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#178841;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="leaf-green"] {--cms-brand-secondary:#22C55E;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#178841;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="leaf-green"] {--cms-brand-accent:#22C55E;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#178841;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="emerald"] {--cms-brand-primary:#16A34A;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#12883E;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="emerald"] {--cms-brand-secondary:#16A34A;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#12883E;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="emerald"] {--cms-brand-accent:#16A34A;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#12883E;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="forest"] {--cms-brand-primary:#15803D;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#15803D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="forest"] {--cms-brand-secondary:#15803D;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#15803D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="forest"] {--cms-brand-accent:#15803D;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#15803D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="pine"] {--cms-brand-primary:#14532D;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#14532D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="pine"] {--cms-brand-secondary:#14532D;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#14532D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="pine"] {--cms-brand-accent:#14532D;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#14532D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-mist-teal-96"] {--cms-brand-primary:#F0FFFE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#00857C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-mist-teal-96"] {--cms-brand-secondary:#F0FFFE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#00857C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-mist-teal-96"] {--cms-brand-accent:#F0FFFE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#00857C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-mist-teal-93"] {--cms-brand-primary:#DBFFFE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#008480;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-mist-teal-93"] {--cms-brand-secondary:#DBFFFE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#008480;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-mist-teal-93"] {--cms-brand-accent:#DBFFFE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#008480;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-mist-teal-88"] {--cms-brand-primary:#C2FFFD;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#008480;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-mist-teal-88"] {--cms-brand-secondary:#C2FFFD;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#008480;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-mist-teal-88"] {--cms-brand-accent:#C2FFFD;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#008480;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-mist-teal-87"] {--cms-brand-primary:#BDFFF4;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#008670;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-mist-teal-87"] {--cms-brand-secondary:#BDFFF4;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#008670;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-mist-teal-87"] {--cms-brand-accent:#BDFFF4;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#008670;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="aqua-mist"] {--cms-brand-primary:#CCFBF1;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0B866C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="aqua-mist"] {--cms-brand-secondary:#CCFBF1;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0B866C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="aqua-mist"] {--cms-brand-accent:#CCFBF1;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0B866C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="aqua"] {--cms-brand-primary:#99F6E4;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0C866E;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="aqua"] {--cms-brand-secondary:#99F6E4;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0C866E;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="aqua"] {--cms-brand-accent:#99F6E4;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0C866E;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="turquoise"] {--cms-brand-primary:#5EEAD4;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#118573;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="turquoise"] {--cms-brand-secondary:#5EEAD4;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#118573;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="turquoise"] {--cms-brand-accent:#5EEAD4;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#118573;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="lagoon"] {--cms-brand-primary:#2DD4BF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#1B8477;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="lagoon"] {--cms-brand-secondary:#2DD4BF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#1B8477;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="lagoon"] {--cms-brand-accent:#2DD4BF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#1B8477;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="peacock"] {--cms-brand-primary:#14B8A6;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0F8578;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="peacock"] {--cms-brand-secondary:#14B8A6;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0F8578;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="peacock"] {--cms-brand-accent:#14B8A6;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0F8578;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="deep-teal"] {--cms-brand-primary:#0D9488;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0C857A;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="deep-teal"] {--cms-brand-secondary:#0D9488;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0C857A;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="deep-teal"] {--cms-brand-accent:#0D9488;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0C857A;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="ink-teal"] {--cms-brand-primary:#0F766E;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#0F766E;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="ink-teal"] {--cms-brand-secondary:#0F766E;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#0F766E;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="ink-teal"] {--cms-brand-accent:#0F766E;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#0F766E;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="night-teal"] {--cms-brand-primary:#134E4A;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#134E4A;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="night-teal"] {--cms-brand-secondary:#134E4A;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#134E4A;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="night-teal"] {--cms-brand-accent:#134E4A;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#134E4A;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sky-blue-89"] {--cms-brand-primary:#F0F8FF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0076DE;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sky-blue-89"] {--cms-brand-secondary:#F0F8FF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0076DE;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sky-blue-89"] {--cms-brand-accent:#F0F8FF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0076DE;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="sky-mist"] {--cms-brand-primary:#DBEAFE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#096FF8;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="sky-mist"] {--cms-brand-secondary:#DBEAFE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#096FF8;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="sky-mist"] {--cms-brand-accent:#DBEAFE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#096FF8;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sky-blue-92"] {--cms-brand-primary:#D7E2FE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#336BFA;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sky-blue-92"] {--cms-brand-secondary:#D7E2FE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#336BFA;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sky-blue-92"] {--cms-brand-accent:#D7E2FE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#336BFA;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="sky"] {--cms-brand-primary:#BFDBFE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0470F7;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="sky"] {--cms-brand-secondary:#BFDBFE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0470F7;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="sky"] {--cms-brand-accent:#BFDBFE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0470F7;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sky-blue-85"] {--cms-brand-primary:#C2D8F0;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#3178C7;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sky-blue-85"] {--cms-brand-secondary:#C2D8F0;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#3178C7;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sky-blue-85"] {--cms-brand-accent:#C2D8F0;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#3178C7;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sky-blue-84"] {--cms-brand-primary:#ADDAFF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0077D9;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sky-blue-84"] {--cms-brand-secondary:#ADDAFF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0077D9;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sky-blue-84"] {--cms-brand-accent:#ADDAFF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0077D9;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="cornflower"] {--cms-brand-primary:#93C5FD;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0472ED;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="cornflower"] {--cms-brand-secondary:#93C5FD;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0472ED;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="cornflower"] {--cms-brand-accent:#93C5FD;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0472ED;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="azure"] {--cms-brand-primary:#60A5FA;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#0871F3;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="azure"] {--cms-brand-secondary:#60A5FA;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#0871F3;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="azure"] {--cms-brand-accent:#60A5FA;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#0871F3;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="bright-blue"] {--cms-brand-primary:#3B82F6;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#1E6FF5;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="bright-blue"] {--cms-brand-secondary:#3B82F6;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#1E6FF5;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="bright-blue"] {--cms-brand-accent:#3B82F6;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#1E6FF5;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="royal-blue"] {--cms-brand-primary:#2563EB;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#2563EB;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="royal-blue"] {--cms-brand-secondary:#2563EB;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#2563EB;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="royal-blue"] {--cms-brand-accent:#2563EB;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#2563EB;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="cobalt"] {--cms-brand-primary:#1D4ED8;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#1D4ED8;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="cobalt"] {--cms-brand-secondary:#1D4ED8;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#1D4ED8;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="cobalt"] {--cms-brand-accent:#1D4ED8;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#1D4ED8;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="midnight-blue"] {--cms-brand-primary:#1E3A8A;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#1E3A8A;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="midnight-blue"] {--cms-brand-secondary:#1E3A8A;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#1E3A8A;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="midnight-blue"] {--cms-brand-accent:#1E3A8A;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#1E3A8A;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-lavender-purple-96"] {--cms-brand-primary:#FBF6FE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#AA41EA;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-lavender-purple-96"] {--cms-brand-secondary:#FBF6FE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#AA41EA;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-lavender-purple-96"] {--cms-brand-accent:#FBF6FE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#AA41EA;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="lavender-mist"] {--cms-brand-primary:#F3E8FF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#9D42FF;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="lavender-mist"] {--cms-brand-secondary:#F3E8FF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#9D42FF;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="lavender-mist"] {--cms-brand-accent:#F3E8FF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#9D42FF;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-lavender-purple-93"] {--cms-brand-primary:#F1DEFC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#AC3DED;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-lavender-purple-93"] {--cms-brand-secondary:#F1DEFC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#AC3DED;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-lavender-purple-93"] {--cms-brand-accent:#F1DEFC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#AC3DED;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="lavender"] {--cms-brand-primary:#E9D5FF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#9C43FF;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="lavender"] {--cms-brand-secondary:#E9D5FF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#9C43FF;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="lavender"] {--cms-brand-accent:#E9D5FF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#9C43FF;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-lavender-purple-90"] {--cms-brand-primary:#ECCDFE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B030FB;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-lavender-purple-90"] {--cms-brand-secondary:#ECCDFE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B030FB;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-lavender-purple-90"] {--cms-brand-accent:#ECCDFE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B030FB;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-lavender-purple-87"] {--cms-brand-primary:#DBC7F5;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#9356E1;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-lavender-purple-87"] {--cms-brand-secondary:#DBC7F5;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#9356E1;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-lavender-purple-87"] {--cms-brand-accent:#DBC7F5;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#9356E1;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="lilac"] {--cms-brand-primary:#D8B4FE;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#9D43FC;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="lilac"] {--cms-brand-secondary:#D8B4FE;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#9D43FC;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="lilac"] {--cms-brand-accent:#D8B4FE;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#9D43FC;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="orchid"] {--cms-brand-primary:#C084FC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#9F43FA;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="orchid"] {--cms-brand-secondary:#C084FC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#9F43FA;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="orchid"] {--cms-brand-accent:#C084FC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#9F43FA;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="amethyst"] {--cms-brand-primary:#A855F7;--cms-brand-on-primary:#000000;--cms-brand-primary-action:#A044F6;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="amethyst"] {--cms-brand-secondary:#A855F7;--cms-brand-on-secondary:#000000;--cms-brand-secondary-action:#A044F6;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="amethyst"] {--cms-brand-accent:#A855F7;--cms-brand-on-accent:#000000;--cms-brand-accent-action:#A044F6;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="violet"] {--cms-brand-primary:#9333EA;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#9333EA;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="violet"] {--cms-brand-secondary:#9333EA;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#9333EA;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="violet"] {--cms-brand-accent:#9333EA;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#9333EA;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="grape"] {--cms-brand-primary:#7E22CE;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#7E22CE;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="grape"] {--cms-brand-secondary:#7E22CE;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#7E22CE;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="grape"] {--cms-brand-accent:#7E22CE;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#7E22CE;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="aubergine"] {--cms-brand-primary:#581C87;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#581C87;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="aubergine"] {--cms-brand-secondary:#581C87;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#581C87;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="aubergine"] {--cms-brand-accent:#581C87;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#581C87;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sakura-pink-94"] {--cms-brand-primary:#FEF1F9;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#E01090;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sakura-pink-94"] {--cms-brand-secondary:#FEF1F9;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#E01090;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sakura-pink-94"] {--cms-brand-accent:#FEF1F9;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#E01090;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="blush"] {--cms-brand-primary:#FCE7F3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#DE1C8B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="blush"] {--cms-brand-secondary:#FCE7F3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#DE1C8B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="blush"] {--cms-brand-accent:#FCE7F3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#DE1C8B;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="sakura"] {--cms-brand-primary:#FBCFE8;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#E11388;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="sakura"] {--cms-brand-secondary:#FBCFE8;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#E11388;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="sakura"] {--cms-brand-accent:#FBCFE8;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#E11388;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sakura-pink-89"] {--cms-brand-primary:#F4D2E3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#CF3C86;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sakura-pink-89"] {--cms-brand-secondary:#F4D2E3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#CF3C86;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sakura-pink-89"] {--cms-brand-accent:#F4D2E3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#CF3C86;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sakura-pink-87"] {--cms-brand-primary:#F8C3E5;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#DC1A96;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sakura-pink-87"] {--cms-brand-secondary:#F8C3E5;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#DC1A96;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sakura-pink-87"] {--cms-brand-accent:#F8C3E5;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#DC1A96;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-sakura-pink-84"] {--cms-brand-primary:#EFBED6;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#CF3D85;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-sakura-pink-84"] {--cms-brand-secondary:#EFBED6;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#CF3D85;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-sakura-pink-84"] {--cms-brand-accent:#EFBED6;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#CF3D85;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="rose-pink"] {--cms-brand-primary:#F9A8D4;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#E31082;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="rose-pink"] {--cms-brand-secondary:#F9A8D4;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#E31082;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="rose-pink"] {--cms-brand-accent:#F9A8D4;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#E31082;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="bubblegum"] {--cms-brand-primary:#F472B6;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#E3127F;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="bubblegum"] {--cms-brand-secondary:#F472B6;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#E3127F;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="bubblegum"] {--cms-brand-accent:#F472B6;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#E3127F;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="hot-pink"] {--cms-brand-primary:#EC4899;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#E2187C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="hot-pink"] {--cms-brand-secondary:#EC4899;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#E2187C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="hot-pink"] {--cms-brand-accent:#EC4899;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#E2187C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="fuchsia"] {--cms-brand-primary:#DB2777;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#DB2777;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="fuchsia"] {--cms-brand-secondary:#DB2777;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#DB2777;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="fuchsia"] {--cms-brand-accent:#DB2777;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#DB2777;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="raspberry"] {--cms-brand-primary:#BE185D;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#BE185D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="raspberry"] {--cms-brand-secondary:#BE185D;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#BE185D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="raspberry"] {--cms-brand-accent:#BE185D;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#BE185D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="wine-pink"] {--cms-brand-primary:#831843;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#831843;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="wine-pink"] {--cms-brand-secondary:#831843;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#831843;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="wine-pink"] {--cms-brand-accent:#831843;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#831843;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-brown-88"] {--cms-brand-primary:#FFF6EB;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B36200;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-brown-88"] {--cms-brand-secondary:#FFF6EB;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B36200;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-brown-88"] {--cms-brand-accent:#FFF6EB;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B36200;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="oat"] {--cms-brand-primary:#FAEDE3;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B46020;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="oat"] {--cms-brand-secondary:#FAEDE3;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B46020;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="oat"] {--cms-brand-accent:#FAEDE3;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B46020;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-brown-87"] {--cms-brand-primary:#E9DFD2;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#917147;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-brown-87"] {--cms-brand-secondary:#E9DFD2;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#917147;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-brown-87"] {--cms-brand-accent:#E9DFD2;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#917147;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="sand"] {--cms-brand-primary:#EDD5C0;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A76830;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="sand"] {--cms-brand-secondary:#EDD5C0;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A76830;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="sand"] {--cms-brand-accent:#EDD5C0;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A76830;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-brown-83"] {--cms-brand-primary:#F8D2AF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B55F10;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-brown-83"] {--cms-brand-secondary:#F8D2AF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B55F10;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-brown-83"] {--cms-brand-accent:#F8D2AF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B55F10;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-warm-brown-79"] {--cms-brand-primary:#FFCF94;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#B26200;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-warm-brown-79"] {--cms-brand-secondary:#FFCF94;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#B26200;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-warm-brown-79"] {--cms-brand-accent:#FFCF94;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#B26200;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="camel"] {--cms-brand-primary:#D9B38C;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A06B35;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="camel"] {--cms-brand-secondary:#D9B38C;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A06B35;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="camel"] {--cms-brand-accent:#D9B38C;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A06B35;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="caramel"] {--cms-brand-primary:#C58B5B;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#A3693A;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="caramel"] {--cms-brand-secondary:#C58B5B;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#A3693A;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="caramel"] {--cms-brand-accent:#C58B5B;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#A3693A;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="terracotta"] {--cms-brand-primary:#A86B3C;--cms-brand-on-primary:#000000;--cms-brand-primary-action:#A4693B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="terracotta"] {--cms-brand-secondary:#A86B3C;--cms-brand-on-secondary:#000000;--cms-brand-secondary-action:#A4693B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="terracotta"] {--cms-brand-accent:#A86B3C;--cms-brand-on-accent:#000000;--cms-brand-accent-action:#A4693B;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="chestnut"] {--cms-brand-primary:#8A4F2D;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#8A4F2D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="chestnut"] {--cms-brand-secondary:#8A4F2D;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#8A4F2D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="chestnut"] {--cms-brand-accent:#8A4F2D;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#8A4F2D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="cocoa"] {--cms-brand-primary:#663A28;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#663A28;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="cocoa"] {--cms-brand-secondary:#663A28;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#663A28;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="cocoa"] {--cms-brand-accent:#663A28;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#663A28;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="espresso"] {--cms-brand-primary:#3F261C;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#3F261C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="espresso"] {--cms-brand-secondary:#3F261C;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#3F261C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="espresso"] {--cms-brand-accent:#3F261C;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#3F261C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="snow"] {--cms-brand-primary:#F8FAFC;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#497AAB;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="snow"] {--cms-brand-secondary:#F8FAFC;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#497AAB;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="snow"] {--cms-brand-accent:#F8FAFC;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#497AAB;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-neutral-gray-88"] {--cms-brand-primary:#F0F1F5;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#6B759C;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-neutral-gray-88"] {--cms-brand-secondary:#F0F1F5;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#6B759C;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-neutral-gray-88"] {--cms-brand-accent:#F0F1F5;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#6B759C;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="pearl"] {--cms-brand-primary:#E2E8F0;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#5678A6;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="pearl"] {--cms-brand-secondary:#E2E8F0;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#5678A6;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="pearl"] {--cms-brand-accent:#E2E8F0;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#5678A6;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="silver"] {--cms-brand-primary:#CBD5E1;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#5B799D;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="silver"] {--cms-brand-secondary:#CBD5E1;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#5B799D;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="silver"] {--cms-brand-accent:#CBD5E1;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#5B799D;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-neutral-gray-83"] {--cms-brand-primary:#D1D3D6;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#727780;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-neutral-gray-83"] {--cms-brand-secondary:#D1D3D6;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#727780;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-neutral-gray-83"] {--cms-brand-accent:#D1D3D6;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#727780;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-neutral-gray-79"] {--cms-brand-primary:#C4C7CF;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#6F7689;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-neutral-gray-79"] {--cms-brand-secondary:#C4C7CF;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#6F7689;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-neutral-gray-79"] {--cms-brand-accent:#C4C7CF;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#6F7689;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="tone-neutral-gray-76"] {--cms-brand-primary:#B7BECD;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#687696;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="tone-neutral-gray-76"] {--cms-brand-secondary:#B7BECD;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#687696;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="tone-neutral-gray-76"] {--cms-brand-accent:#B7BECD;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#687696;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="cool-gray"] {--cms-brand-primary:#94A3B8;--cms-brand-on-primary:#111827;--cms-brand-primary-action:#637896;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="cool-gray"] {--cms-brand-secondary:#94A3B8;--cms-brand-on-secondary:#111827;--cms-brand-secondary-action:#637896;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="cool-gray"] {--cms-brand-accent:#94A3B8;--cms-brand-on-accent:#111827;--cms-brand-accent-action:#637896;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="stone"] {--cms-brand-primary:#64748B;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#64748B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="stone"] {--cms-brand-secondary:#64748B;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#64748B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="stone"] {--cms-brand-accent:#64748B;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#64748B;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="slate"] {--cms-brand-primary:#475569;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#475569;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="slate"] {--cms-brand-secondary:#475569;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#475569;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="slate"] {--cms-brand-accent:#475569;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#475569;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="charcoal"] {--cms-brand-primary:#334155;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#334155;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="charcoal"] {--cms-brand-secondary:#334155;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#334155;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="charcoal"] {--cms-brand-accent:#334155;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#334155;--cms-brand-on-accent-action:#FFFFFF;}
body[data-web-brand-primary="ink"] {--cms-brand-primary:#1E293B;--cms-brand-on-primary:#FFFFFF;--cms-brand-primary-action:#1E293B;--cms-brand-on-primary-action:#FFFFFF;}
body[data-web-brand-secondary="ink"] {--cms-brand-secondary:#1E293B;--cms-brand-on-secondary:#FFFFFF;--cms-brand-secondary-action:#1E293B;--cms-brand-on-secondary-action:#FFFFFF;}
body[data-web-brand-accent="ink"] {--cms-brand-accent:#1E293B;--cms-brand-on-accent:#FFFFFF;--cms-brand-accent-action:#1E293B;--cms-brand-on-accent-action:#FFFFFF;}

/* 將三個品牌角色同步灌入所有公版 Header／Footer 的元件變數。元件仍保留各自構圖，
 * 顏色則統一由主色（主結構）、輔色（次要面板）、重點色（互動狀態）控制。 */
body:not([data-web-brand-primary="default"])[data-web-header^="shinvo-"] :is(#header,#mobile-sidebar) {
  --cms-hi-surface:var(--cms-brand-primary);
  --cms-hi-ink:var(--cms-brand-on-primary);
  --cms-hs-surface:var(--cms-brand-primary);
  --cms-hs-ink:var(--cms-brand-on-primary);
  --cms-hp-surface:var(--cms-brand-primary);
  --cms-hp-ink:var(--cms-brand-on-primary);
}
body:not([data-web-brand-secondary="default"])[data-web-header^="shinvo-"] :is(#header,#mobile-sidebar) {
  --cms-hi-hover:var(--cms-brand-secondary);
  --cms-hi-line:var(--cms-brand-secondary);
  --cms-hs-soft:var(--cms-brand-secondary);
  --cms-hs-line:var(--cms-brand-secondary);
  --cms-hp-soft:var(--cms-brand-secondary);
  --cms-hp-line:var(--cms-brand-secondary);
}
body:not([data-web-brand-accent="default"])[data-web-header^="shinvo-"] :is(#header,#mobile-sidebar) {
  --cms-hi-focus:var(--cms-brand-accent);
  --cms-hs-accent:var(--cms-brand-accent);
  --cms-hs-on-accent:var(--cms-brand-on-accent);
  --cms-hp-accent:var(--cms-brand-accent);
}
body:not([data-web-brand-primary="default"])[data-web-footer^="shinvo-"] #footer {
  --cms-fi-surface:var(--cms-brand-primary);
  --cms-fi-ink:var(--cms-brand-on-primary);
  --cms-fi-muted:var(--cms-brand-on-primary);
  --cms-fs-surface:var(--cms-brand-primary);
  --cms-fs-ink:var(--cms-brand-on-primary);
  --cms-fs-muted:var(--cms-brand-on-primary);
  --cms-fp-surface:var(--cms-brand-primary);
  --cms-fp-ink:var(--cms-brand-on-primary);
  --cms-fp-muted:var(--cms-brand-on-primary);
  --cms-color-text-inverse:var(--cms-brand-on-primary);
}
body:not([data-web-brand-secondary="default"])[data-web-footer^="shinvo-"] #footer {
  --cms-fi-line:var(--cms-brand-secondary);
  --cms-fs-line:var(--cms-brand-secondary);
  --cms-fp-panel:var(--cms-brand-secondary);
  --cms-fp-panel-ink:var(--cms-brand-on-secondary);
  --cms-fp-line:var(--cms-brand-secondary);
}
body:not([data-web-brand-accent="default"])[data-web-footer^="shinvo-"] #footer {
  --cms-fi-focus:var(--cms-brand-accent);
  --cms-fs-focus:var(--cms-brand-accent);
  --cms-fp-accent:var(--cms-brand-accent);
}
/* 置中極簡原先使用固定灰綠品牌字；自訂淺色主色時改用主色對比前景，避免低於文字對比門檻。 */
body:not([data-web-brand-primary="default"])[data-web-footer="shinvo-centered"] #footer .footer-piece--brand {
  color:var(--cms-brand-on-primary);
}

body:not([data-web-brand-primary="default"]) :is(#header,#header.active,#mobile-sidebar,#footer) { background:var(--cms-brand-primary);color:var(--cms-brand-on-primary);border-color:var(--cms-brand-secondary,var(--cms-brand-primary)); }
body:not([data-web-brand-primary="default"]) :is(#header,#mobile-sidebar,#footer) :is(a,button,p,h2,h3,h4,.nav-link,.dropdown-item,.header-icon,.footer-default-icon,.footer-default-item,.footer-copy-text,.footer-copy-powered) { color:var(--cms-brand-on-primary); }
body:not([data-web-brand-secondary="default"]) #header :is(.chrome-search__nav,.chrome-search__form,.navbar-nav .dropdown-menu,.navbar-nav .dropdown-menu .nav-link:hover,.navbar-nav .dropdown-menu .nav-link:focus-visible,.dropdown-item:hover,.dropdown-item:focus-visible) { background:var(--cms-brand-secondary);color:var(--cms-brand-on-secondary);border-color:var(--cms-brand-secondary); }
/* 搜尋版的下層導覽整列使用輔色。只替容器設 color 不會蓋過元件內既有的
 * --cms-hs-ink，因此深色輔色仍會顯示固定深色連結；在實際著色的容器重定義
 * 語意 token，讓文字、功能 icon、下拉箭頭與後續新增的導覽項目一起取得對比色。 */
body:not([data-web-brand-secondary="default"])[data-web-header="shinvo-search"] #header .chrome-search__nav {
  --cms-hs-ink:var(--cms-brand-on-secondary);
  --cms-hs-line:color-mix(in srgb,var(--cms-brand-on-secondary) 38%,transparent);
}
/* 下拉面板使用輔色及其自動對比文字色，避免深色品牌底仍沿用固定黑字。 */
body:not([data-web-brand-secondary="default"]) #header .navbar-nav .dropdown-menu:not(.mega-menu-panel) :is(.nav-link,.nav-link p,.dropdown-item),
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel .mega-menu-content,
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel .mega-menu-content :is(.mega-menu-panel-title,.mega-menu-group-title,.mega-menu-grouplist-link,.mega-menu-viewall,.mega-menu-empty),
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel .mega-menu-content :is(.mega-menu-panel-title,.mega-menu-group-title,.mega-menu-grouplist-link,.mega-menu-viewall):hover {
  color:var(--cms-brand-on-secondary);
}
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel .mega-menu-content .mega-menu-panel-title,
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel .mega-menu-content .mega-menu-viewall {
  border-color:color-mix(in srgb,var(--cms-brand-on-secondary) 45%,transparent);
}
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel .mega-menu-content .mega-menu-viewall:hover {
  background:color-mix(in srgb,var(--cms-brand-on-secondary) 14%,transparent);
}
body:not([data-web-brand-secondary="default"]) #header :is(.chrome-search__input,.chrome-search__input::placeholder) {
  color:var(--cms-brand-on-secondary);
}
body:not([data-web-brand-secondary="default"]) #header .mega-menu-panel {
  background:var(--cms-brand-secondary);
  border-color:var(--cms-brand-secondary);
}
body:not([data-web-brand-secondary="default"]) #header .mega-menu-search {
  background:var(--cms-brand-secondary);
  border-bottom-color:color-mix(in srgb,var(--cms-brand-on-secondary) 36%,transparent);
}
body:not([data-web-brand-secondary="default"]) #header .mega-menu-search-input {
  border-color:color-mix(in srgb,var(--cms-brand-on-secondary) 46%,transparent);
  background:#fff;
  color:#111827;
}
body:not([data-web-brand-primary="default"]) #header .mega-menu-rail {
  background:var(--cms-brand-primary);
  border-right-color:var(--cms-brand-secondary,var(--cms-brand-primary));
  scrollbar-color:var(--cms-brand-accent,var(--cms-brand-on-primary)) transparent;
}
body:not([data-web-brand-primary="default"]) #header .mega-menu-rail-link {
  color:var(--cms-brand-on-primary);
}
body:not([data-web-brand-primary="default"]) #header .mega-menu-rail-item:hover > .mega-menu-rail-link {
  background:color-mix(in srgb,var(--cms-brand-on-primary) 16%,transparent);
  color:var(--cms-brand-on-primary);
}
body:not([data-web-brand-primary="default"]) #header .mega-menu-rail-item.active > .mega-menu-rail-link {
  background:color-mix(in srgb,var(--cms-brand-on-primary) 22%,transparent);
  color:var(--cms-brand-on-primary);
}
body:not([data-web-brand-accent="default"]) #header .navbar-nav .dropdown-menu:not(.mega-menu-panel) :is(.nav-link,.dropdown-item):is(:hover,:focus-visible),
body:not([data-web-brand-accent="default"]) #header .navbar-nav .dropdown-menu:not(.mega-menu-panel) :is(.nav-link,.dropdown-item):is(:hover,:focus-visible) p,
body:not([data-web-brand-accent="default"]) #header .mega-menu-rail-item:is(:hover,.active) > .mega-menu-rail-link,
body:not([data-web-brand-accent="default"]) #header .mega-menu-panel .mega-menu-content .mega-menu-viewall:hover {
  background:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
  border-color:var(--cms-brand-accent);
}
body:not([data-web-brand-accent="default"]) #header .mega-menu-search-input:focus {
  border-color:var(--cms-brand-accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--cms-brand-accent) 28%,transparent);
}
body:not([data-web-brand-accent="default"]) #header :is(.mega-menu-rail,.mega-menu-content)::-webkit-scrollbar-thumb {
  background-color:var(--cms-brand-accent);
}
body:not([data-web-brand-secondary="default"]) #footer :is(.footer-piece--brand,.footer-piece--copyright) { border-color:var(--cms-brand-secondary); }
body:not([data-web-brand-secondary="default"]) #footer .footer-piece--copyright::before { background:var(--cms-brand-secondary); }
body:not([data-web-brand-accent="default"]) #header .chrome-search__submit { background:var(--cms-brand-accent);color:var(--cms-brand-on-accent); }
body:not([data-web-brand-accent="default"]) #footer .footer-copy-link:hover { color:inherit;text-decoration-color:var(--cms-brand-accent); }
body:not([data-web-brand-accent="default"]) #footer .footer-social-link:hover { color:var(--cms-brand-on-accent);background:var(--cms-brand-accent); }
body:not([data-web-brand-accent="default"]) :is(#header,#mobile-sidebar,#footer) :is(a,button,input):focus-visible { outline-color:var(--cms-brand-accent); }

/* 手機側欄沿用同一套品牌角色，移除舊版固定白底、灰底與黑色展開狀態。 */
body:not([data-web-brand-primary="default"])[data-web-header^="shinvo-"] #mobile-sidebar :is(.sidebar-header,.user-info-section,.member-center-menu,.logout-btn-container) {
  background:var(--cms-brand-primary);
  border-color:color-mix(in srgb,var(--cms-brand-on-primary) 28%,transparent);
}
body:not([data-web-brand-primary="default"])[data-web-header^="shinvo-"] #mobile-sidebar :is(.sidebar-title,.sidebar-close-btn,.menu-btn-l1-link,.menu-btn-l2-link,.menu-link-l3,.menu-icon-l1,.menu-btn-l1-toggle,.menu-btn-l2-toggle,.user-name,.user-role,.member-menu-list a) {
  color:var(--cms-brand-on-primary);
}
body:not([data-web-brand-secondary="default"])[data-web-header^="shinvo-"] #mobile-sidebar :is(.menu-item-l1,.menu-item-l2,.user-info-section,.member-menu-list a):hover,
body:not([data-web-brand-secondary="default"])[data-web-header^="shinvo-"] #mobile-sidebar :is(.menu-btn-l1-toggle,.menu-btn-l2-toggle).active,
body:not([data-web-brand-secondary="default"])[data-web-header^="shinvo-"] #mobile-sidebar .menu-item-l1:has(.menu-btn-l1-toggle.active) > .menu-btn-l1-link {
  background:var(--cms-brand-secondary);
  color:var(--cms-brand-on-secondary);
}
body:not([data-web-brand-secondary="default"])[data-web-header^="shinvo-"] #mobile-sidebar :is(.menu-item-l1,.menu-item-l2):hover > :is(.menu-btn-l1-link,.menu-btn-l2-link,.menu-btn-l1-toggle,.menu-btn-l2-toggle),
body:not([data-web-brand-secondary="default"])[data-web-header^="shinvo-"] #mobile-sidebar .member-menu-list a:hover {
  color:var(--cms-brand-on-secondary);
}
body:not([data-web-brand-accent="default"])[data-web-header^="shinvo-"] #mobile-sidebar :is(.menu-btn-l1-toggle,.menu-btn-l2-toggle).active,
body:not([data-web-brand-accent="default"])[data-web-header^="shinvo-"] #mobile-sidebar .menu-item-l1:has(.menu-btn-l1-toggle.active) > .menu-btn-l1-link {
  background:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
}

/* 公版 Footer 的固定米灰卡片改由品牌色控制；卡片文字同步使用對應前景色。 */
body:not([data-web-brand-secondary="default"])[data-web-footer="shinvo-cards"] #footer :is(.footer-piece--card-left,.footer-piece--card-right) {
  background:var(--cms-brand-secondary);
  border-color:var(--cms-brand-secondary);
}
body:not([data-web-brand-secondary="default"])[data-web-footer="shinvo-cards"] #footer :is(.footer-piece--name,.footer-piece--brand,.footer-piece--logo,.footer-piece--contact-title,.footer-piece--tel,.footer-piece--fax,.footer-piece--address,.footer-piece--email,.footer-piece--tax,.footer-piece--service-title,.footer-piece--hours,.footer-piece--break,.footer-piece--closed,.footer-piece--social-title,.footer-social-link,.footer-piece--line-info,.footer-piece--qr) {
  color:var(--cms-brand-on-secondary);
}
/* 拼貼分欄以主色的對比前景建立同色系深淺，不再把輔色與重點色放大成互相競爭的面板。 */
body:not([data-web-brand-primary="default"])[data-web-footer="shinvo-mosaic"] #footer :is(.footer-piece--card-left,.footer-piece--card-right) {
  border-color:color-mix(in srgb,var(--cms-brand-on-primary) 16%,transparent);
  box-shadow:0 10px 28px color-mix(in srgb,var(--cms-brand-on-primary) 7%,transparent);
}
body:not([data-web-brand-primary="default"])[data-web-footer="shinvo-mosaic"] #footer .footer-piece--card-left {
  background:color-mix(in srgb,var(--cms-brand-on-primary) 9%,transparent);
}
body:not([data-web-brand-primary="default"])[data-web-footer="shinvo-mosaic"] #footer .footer-piece--card-right {
  background:color-mix(in srgb,var(--cms-brand-on-primary) 5%,transparent);
}
body:not([data-web-brand-primary="default"])[data-web-footer="shinvo-mosaic"] #footer :is(.footer-piece--brand,.footer-piece--tel,.footer-piece--address,.footer-piece--email,.footer-piece--service-title,.footer-piece--hours,.footer-piece--break,.footer-piece--closed) {
  color:var(--cms-brand-on-primary);
}

/* 公版 Header 的頂層導覽以高對比品牌底線回應 hover／focus／選單展開，不以色塊蓋住文字或 icon。
 * 導覽列本身使用輔色底時，底線混合重點色與輔色對比前景，三個角色選到同色仍保持可見。
 * 下拉面板內的選項維持上方既有配色，兩者分開處理。 */
body[data-web-header^="shinvo-"] #header :is(.header-primary-nav,.header-actions) > .nav-item > .nav-link {
  position:relative;
  background:transparent;
}
body[data-web-header^="shinvo-"] #header :is(.header-primary-nav,.header-actions) > .nav-item > .nav-link::before {
  content:"";
  position:absolute;
  right:0;
  bottom:0;
  left:0;
  height:2px;
  background:color-mix(in srgb,var(--cms-brand-accent,currentColor) 70%,var(--cms-brand-on-secondary,currentColor) 30%);
  transform:scaleX(0);
  transform-origin:center;
  transition:transform .3s ease;
}
body[data-web-header^="shinvo-"] #header :is(.header-primary-nav,.header-actions) > .nav-item:hover > .nav-link,
body[data-web-header^="shinvo-"] #header :is(.header-primary-nav,.header-actions) > .nav-item > .nav-link:is(:hover,:focus,:focus-visible,[aria-expanded="true"]) {
  background:transparent;
}
body[data-web-header^="shinvo-"] #header :is(.header-primary-nav,.header-actions) > .nav-item:hover > .nav-link::before,
body[data-web-header^="shinvo-"] #header :is(.header-primary-nav,.header-actions) > .nav-item > .nav-link:is(:hover,:focus-visible,[aria-expanded="true"])::before {
  transform:scaleX(1);
}
/* common/header.css 的主選單黑色 ::after 底線由上方輔色 ::before 接手；
 * 功能 icon 的 dropdown caret 仍使用 ::after，因此不受影響。 */
body[data-web-header^="shinvo-"] #header .header-primary-nav > .nav-item.headerMenu1 > .nav-link::after {
  display:none;
}

/* 浮動膠囊只有膠囊本體著色；外圍保持透明，直接透出後方頁面內容。 */
body:not([data-web-brand-primary="default"])[data-web-header="shinvo-float"] #header { background:transparent;color:var(--cms-hp-ink,#24342d);border-color:transparent; }
body:not([data-web-brand-primary="default"])[data-web-header="shinvo-float"] #header #navBar { background:var(--cms-brand-primary);color:var(--cms-brand-on-primary);border-color:var(--cms-brand-secondary,var(--cms-brand-primary)); }
body:not([data-web-brand-primary="default"])[data-web-header="shinvo-float"] #header #navBar :is(.header-primary-nav,.header-actions) > .nav-item > .nav-link,
body:not([data-web-brand-primary="default"])[data-web-header="shinvo-float"] #header #navBar :is(.header-primary-nav,.header-actions) > .nav-item > .nav-link p { color:var(--cms-brand-on-primary); }

/* 公版內容區品牌色橋接：把三個品牌角色灌入既有的語意 token，讓頁面與 widget
 * 不再各自沿用固定白、灰、黑。色票只改公版主題；既有客製主題維持原樣。
 * 單一 widget 的自訂配色檔在本檔之後載入，仍可覆寫同權重的元件變數。 */
:where(body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"])) {
  --cms-brand-primary-soft:color-mix(in srgb,var(--cms-brand-primary) 18%,#fff);
  --cms-brand-primary-line:color-mix(in srgb,var(--cms-brand-primary) 58%,#fff);
  /* 自訂主色的內容表面階層：由頁面畫布往內容逐步變亮，避免深色系頁面上出現
   * 大片純白「貼紙」。圖片仍保留原色，只有承載內容的外殼與控制項接色。 */
  --cms-brand-surface-section:color-mix(in srgb,var(--cms-brand-primary) 10%,#fff);
  --cms-brand-surface-card:color-mix(in srgb,var(--cms-brand-primary) 6%,#fff);
  --cms-brand-surface-control:color-mix(in srgb,var(--cms-brand-primary-action) 8%,#fff);
  --cms-brand-surface-line:color-mix(in srgb,var(--cms-brand-primary-action) 85%,#fff);
  --cms-ed-canvas:var(--cms-brand-primary-soft);
  --cms-mk-canvas:var(--cms-brand-primary-soft);
  --cms-ga-canvas:var(--cms-brand-primary-soft);
  --cms-color-surface:var(--cms-brand-surface-card);
  --cms-widget-bg-brand:var(--cms-brand-primary);
  --cms-widget-fg-on-brand:var(--cms-brand-on-primary);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) {
  --cms-brand-secondary-soft:color-mix(in srgb,var(--cms-brand-secondary) 14%,#fff);
  --cms-brand-secondary-line:color-mix(in srgb,var(--cms-brand-secondary) 46%,#fff);
  --cms-color-bg-soft:var(--cms-brand-secondary-soft);
  --cms-color-border:var(--cms-brand-secondary-line);
  --cms-color-border-strong:var(--cms-brand-secondary);
  --cms-color-divider:var(--cms-brand-secondary-line);
  --cms-ed-surface:var(--cms-brand-secondary-soft);
  --cms-mk-surface:var(--cms-brand-secondary-soft);
  --cms-ga-surface:var(--cms-brand-secondary-soft);
  --cms-widget-bg-light:var(--cms-brand-secondary-soft);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) {
  --cms-brand-accent-soft:color-mix(in srgb,var(--cms-brand-accent) 14%,#fff);
  --cms-color-accent:var(--cms-brand-accent);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"])) .site-main {
  --cms-page-canvas-bg:var(--cms-brand-primary-soft);
  background:var(--cms-page-canvas-bg);
}
/* .site-main 是公版品牌頁面的唯一畫布底色 owner。標題／麵包屑外殼與內容外殼只負責
 * 結構與間距，背景一律透明承接同一個 --cms-page-canvas-bg；日後調整畫布顏色時只改上方
 * token，避免標題列與內容區分別維護而漏改。較高權重刻意覆蓋 gallery 的預設標題 surface。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .site-main > .breadcrumbs-section,
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #page-content {
  background:transparent;
}

/* 公版自訂主色的內容 surface 契約：頁面 CSS 只需維護結構，品牌橋接層集中決定
 * 區塊、卡片與控制項的明度。明確列出語意容器，避免把圖片或狀態色一起染色。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(
  .single-product-area,
  .product-related .widget-product,
  .blog-related .widget-product,
  .blog-details-area,
  .contact-card,
  .order-header-card,
  .order-card,
  .order-summary-card,
  .dev-checkout-card,
  .member-card,
  .auth-card,
  .message-box
) {
  background:var(--cms-brand-surface-section);
  border-color:var(--cms-brand-surface-line);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .product-related .widget-product.bg-white {
  background:var(--cms-brand-surface-section) !important;
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .blog-related .widget-product.bg-white {
  background:var(--cms-brand-surface-section) !important;
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-page {
  background:transparent;
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(
  .shop-content .product-item,
  .shop-content .product-item .product-img,
  .shop-content .product-item .product-info,
  .product-related .product-item,
  .product-related .product-img,
  .product-related .product-info,
  .blog-related .product-item,
  .blog-related .product-img,
  .blog-related .product-info,
  .blog-item-2,
  .order-list-card,
  .order-list-empty,
  .order-product-item,
  .dev-checkout-temperature-group,
  .dev-checkout-shipping-group,
  .dev-checkout-item-thumb,
  .dev-checkout-store-box,
  .member-form__tabs,
  .member-form__section,
  .member-form__footer,
  .member-form__social-row,
  .member-form__social-status,
  .auth-card__aside
) {
  background:var(--cms-brand-surface-card);
  border-color:var(--cms-brand-surface-line);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(
  .product-toolbar-select,
  .product-toolbar-search input,
  .single-product-info .cart-plus-minus,
  .single-product-info .cart-plus-minus-box,
  .contact-form .form-control,
  .dev-checkout-progress-index,
  .dev-checkout-collapse-btn,
  .dev-checkout-temperature-head,
  .dev-checkout-copy-toggle,
  .dev-checkout-input,
  .dev-checkout-select,
  .dev-checkout-textarea,
  .dev-checkout-page .select2-container--cms .select2-selection--single,
  .member-form .form-control,
  .member-form select.form-control,
  .member-form .select2-container--cms .select2-selection--single,
  .auth-form .form-control,
  .auth-form .select2-container--cms .select2-selection--single,
  .auth-form .input-group .togglePassword
) {
  /* 保留原元件的 background-image（例如商品排序箭頭），只覆寫底色。 */
  background-color:var(--cms-brand-surface-control);
  border-color:var(--cms-brand-surface-line);
}
/* 商品資訊面板可由版型指定自己的表面色；未指定時仍沿用品牌控制項底色。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .single-product-info {
  background-color:var(--cms-product-panel-bg,var(--cms-brand-surface-control));
  border-color:var(--cms-brand-surface-line);
}
/* 靜謐展間的商品資訊以留白與分隔線建立層次；購買區不能套用一般控制面板灰底。 */
body[data-theme="shinvo-gallery"]:not([data-web-brand-primary="default"]) :is(
  .site-main .product-detail__summary,
  .site-main .product-detail__purchase
) > .single-product-info {
  background-color:transparent;
}
/* 編輯選物的標題區維持留白、購買區維持墨色，避免品牌色表面規則把兩區重新染成同一張淺色卡。 */
body[data-theme="shinvo-editorial"]:not([data-web-brand-primary="default"]) .site-main .product-detail__summary > .single-product-info {
  background-color:var(--cms-product-panel-bg,transparent);
}
body[data-theme="shinvo-editorial"]:not([data-web-brand-primary="default"]) .site-main .product-detail__purchase > .single-product-info {
  background-color:var(--cms-product-panel-bg,var(--cms-ed-surface));
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-progress-text {
  background:transparent;
}

/* 搜尋版 Header 的輸入框原本固定白底；改用內容控制項表面並維持深色文字，避免
 * 主色或輔色較淺時，欄位和周圍品牌色脫節或文字失去對比。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #header .chrome-search__input {
  background-color:var(--cms-brand-surface-control);
  color:var(--cms-color-text,#111827);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #header .chrome-search__input::placeholder {
  color:var(--cms-color-text-muted,#6b7280);
}

body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .order-header-card {
  border-left-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) .order-list-card__status {
  background:var(--cms-brand-secondary-soft);
}
/* 購物車數量與移除控制項的頁面基礎規則帶有 #page-content，需以相同層級覆蓋，
 * 否則固定白底會因 specificity 較高而蓋過上方的共用 control surface。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #page-content :is(
  .dev-checkout-qty-editor,
  .dev-checkout-qty-input,
  .dev-checkout-item-remove-btn
) {
  background:var(--cms-brand-surface-control);
  border-color:var(--cms-brand-surface-line);
}

/* 商品／貼文相關內容的導覽控制也必須接上品牌互動色。既有左右箭頭 SVG 寫死灰底，
 * 自訂主色時改由 CSS 畫箭頭，才能讓一般、滑入與鍵盤焦點狀態共用相同對比 token。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .widget-title-more {
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .widget-title-more:is(:hover,:focus-visible) {
  color:var(--cms-brand-primary-action);
  text-decoration:underline;
  text-underline-offset:3px;
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .owl-carousel-btn-suggestbox .carousel-btn {
  position:relative;
  background-color:var(--cms-brand-primary);
  background-image:none;
  border:1px solid var(--cms-brand-primary-action);
  border-radius:50%;
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .owl-carousel-btn-suggestbox .carousel-btn::before {
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  width:8px;
  height:8px;
  border-top:2px solid currentColor;
  border-right:2px solid currentColor;
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .owl-carousel-btn-suggestbox .carousel-btn.left::before {
  transform:translate(-35%,-50%) rotate(-135deg);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .owl-carousel-btn-suggestbox .carousel-btn.right::before {
  transform:translate(-65%,-50%) rotate(45deg);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-related,.blog-related) .owl-carousel-btn-suggestbox .carousel-btn:is(:hover,:focus-visible) {
  background-color:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
  outline:2px solid var(--cms-brand-primary-soft);
  outline-offset:2px;
}

/* 標題與圖文卡片：淺色票可以留在面板與裝飾線，文字一律使用色票預先計算的
 * action 色，避免使用者選擇粉色、米色等淺輔色時失去可讀性。 */
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) :is(.widget-title-size1,.widget-title-size2,.widget-title-size3,.widget-title-size4) {
  --widget-title-color:var(--cms-brand-secondary-action);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) .widget-imgTextA {
  --imgTextA-box-bg:var(--cms-brand-secondary-soft);
  --imgTextA-title-color:var(--cms-color-text,#333);
  --imgTextA-text-color:var(--cms-color-text,#333);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"])) .widget-imgTextB {
  --imgTextB-title-bg:var(--cms-brand-primary);
  --imgTextB-triangle-color:var(--cms-brand-primary);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"])) .imgTextB-Title {
  color:var(--cms-brand-on-primary);
}
/* 編輯選物的圖文 B 以去背素材與留白構圖為主；品牌色不應重新灌成標題色塊。 */
body[data-theme="shinvo-editorial"] .widget-imgTextB .imgTextB-BoxTitle {
  background:transparent;
}
body[data-theme="shinvo-editorial"] .widget-imgTextB .imgTextB-Title {
  color:var(--cms-color-text);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) .widget-imgTextD {
  --imgTextD-line-color:color-mix(in srgb,var(--cms-brand-secondary-action) 34%,transparent);
  --imgTextD-title-color:var(--cms-brand-secondary-action);
  --imgTextD-box-bg:var(--cms-brand-secondary-soft);
  --imgTextD-light-bg:linear-gradient(to top,var(--cms-brand-secondary) 0%,color-mix(in srgb,var(--cms-brand-secondary) 72%,transparent) 64%,transparent 100%);
  --imgTextD-light-color:var(--cms-brand-on-secondary);
  --imgTextD-dot-bg:var(--cms-brand-primary,var(--cms-brand-secondary));
  --imgTextD-dot-active-outline:2px solid var(--cms-brand-accent,var(--cms-brand-secondary));
}

/* 商品卡與側欄：保留圖片原色，以輔色淺面板取代固定灰底。 */
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) :is(.productA-item,.productA-imgBox) {
  background:var(--cms-brand-secondary-soft);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"])) .productA-item:hover {
  background:var(--cms-brand-primary-soft);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) .productB {
  --productB-title-color:var(--cms-brand-secondary-action);
  --productB-line-color:color-mix(in srgb,var(--cms-brand-secondary-action) 34%,transparent);
  --productB-textbox-bg:linear-gradient(0deg,var(--cms-brand-secondary) 9%,color-mix(in srgb,var(--cms-brand-secondary) 74%,transparent) 62%,transparent 100%);
  --productB-text-color:var(--cms-brand-on-secondary);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) .productC {
  --productC-img-bg:var(--cms-brand-secondary-soft);
  --productC-textbox-bg:var(--cms-brand-secondary-soft);
  --productC-text-color:var(--cms-color-text,#333);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"])) :is(.product-categories,.widget-product) {
  --sidebar-card-bg:var(--cms-brand-secondary-soft);
  --sidebar-cat-bg:var(--cms-brand-secondary-soft);
  --sidebar-cat-menu-bg:var(--cms-brand-secondary-soft);
  --sidebar-cat-menu-border:1px solid var(--cms-brand-secondary-line);
  --sidebar-cat-l1-bg:color-mix(in srgb,var(--cms-brand-secondary) 24%,#fff);
  --sidebar-cat-l2-bg:color-mix(in srgb,var(--cms-brand-secondary) 18%,#fff);
  --sidebar-cat-l3-bg:color-mix(in srgb,var(--cms-brand-secondary) 10%,#fff);
  --sidebar-heading-mark-bg:var(--cms-brand-secondary);
}
/* 按鈕、輪播控制與目前狀態統一使用重點色，並套用色票預先計算的對比文字色。 */
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) .widget-imgTextA {
  --imgTextA-btn-bg:var(--cms-brand-accent);
  --imgTextA-btn-border:1px solid var(--cms-brand-accent);
  --imgTextA-btn-color:var(--cms-brand-on-accent);
  --imgTextA-btn-bg-hover:color-mix(in srgb,var(--cms-brand-accent) 84%,#000);
  --imgTextA-btn-border-hover:1px solid var(--cms-brand-accent);
  --imgTextA-btn-color-hover:var(--cms-brand-on-accent);
  --imgTextA-btn2-color:var(--cms-brand-accent-action);
  --imgTextA-btn2-bg-hover:var(--cms-brand-accent);
  --imgTextA-btn2-color-hover:var(--cms-brand-on-accent);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) .imgTextC-textBox .imgTextC-BtnBox .btnC,
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) .size-item {
  background:var(--cms-brand-accent);
  border-color:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) .imgTextC-textBox .imgTextC-BtnBox .btnC:hover,
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) .size-item:hover {
  background:color-mix(in srgb,var(--cms-brand-accent) 84%,#000);
  border-color:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) :is(.widget-bannerA,.widget-bannerB,.widget-bannerD) {
  --bannerA-nav-bg:var(--cms-brand-accent);
  --bannerA-nav-bg-hover:color-mix(in srgb,var(--cms-brand-accent) 84%,#000);
  --bannerA-nav-color:var(--cms-brand-on-accent);
  --bannerB-nav-bg:var(--cms-brand-accent);
  --bannerB-nav-bg-hover:color-mix(in srgb,var(--cms-brand-accent) 84%,#000);
  --bannerB-nav-color:var(--cms-brand-on-accent);
  --bannerD-nav-bg:var(--cms-brand-accent);
  --bannerD-nav-color:var(--cms-brand-on-accent);
}
:where(body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"])) :is(.swiper-pagination-bullet,.swiper-pagination-bullet-active,.swiper-other-pagination .swiper-pagination-bullet,.swiper-other-pagination .swiper-pagination-bullet-active) {
  --swiper-bullet-bg:var(--cms-brand-primary,var(--cms-brand-accent));
  --swiper-bullet-active-outline:2px solid var(--cms-brand-accent);
}

/* 公版全站互動元件：舊頁面仍有白／灰／黑的直接宣告，需用帶 body 屬性的
 * 選擇器確實蓋過，而不是只依賴低權重的 :where() token。主操作使用主色，
 * 淺色重點色只用於標籤與提示，並一律搭配後台預先計算的 on-color。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) {
  --cms-color-primary:var(--cms-brand-primary);
  --cms-color-btn-dark:var(--cms-brand-primary-action);
  --cms-select-accent:var(--cms-brand-primary);
  --cms-select-accent-soft:var(--cms-brand-primary-soft);
  --cms-widget-bg-dark:var(--cms-brand-primary);
  --cms-widget-fg-on-dark:var(--cms-brand-on-primary);
}

/* 商品分類與會員側欄：面板以輔色區隔，目前項目用主色維持足夠對比。 */
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) .product-side-menu {
  --cat-card-bg:var(--cms-brand-secondary-soft);
  --cat-border:var(--cms-brand-secondary-line);
  --cat-hover:color-mix(in srgb,var(--cms-brand-secondary) 24%,#fff);
  background:var(--cms-brand-secondary-soft);
  border-color:var(--cms-brand-secondary-line);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .product-side-menu {
  --cat-accent:var(--cms-brand-primary);
  --cat-accent-text:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) .user-side-menu {
  --user-menu-bg:var(--cms-brand-secondary-soft);
  --user-menu-header-line:var(--cms-brand-secondary-line);
  --user-menu-hover-bg:color-mix(in srgb,var(--cms-brand-secondary) 24%,#fff);
  --user-menu-divider-color:var(--cms-brand-secondary-line);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .user-side-menu {
  --user-menu-accent:var(--cms-brand-primary);
  --user-menu-active-color:var(--cms-brand-on-primary);
  --user-menu-arrow-color:var(--cms-brand-on-primary);
  border-left-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .user-side-menu__item.is-active a,
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .user-side-menu__item.is-active a:hover {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .user-side-menu__item.is-active :is(.user-side-menu__icon,.user-side-menu__arrow) {
  color:var(--cms-brand-on-primary);
}

/* 實心主操作、外框導覽與購物操作。停用狀態仍保留既有 opacity／cursor 行為。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.btnSummit.gold,.btnNormal.gold,.btnSummit.red,.btnNormal.red) {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.btnSummit.gold,.btnNormal.gold,.btnSummit.red,.btnNormal.red):is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.btnSummit.btn-outline-secondary,.btnNormal.btn-outline-secondary) {
  background:transparent;
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.btnSummit.btn-outline-secondary,.btnNormal.btn-outline-secondary):is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .cart-action__btn:is(:hover,:focus-visible),
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .cart-action__stepper button:is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .cart-action__btn--selected {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .cart-action__btn--selected:is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}

/* 商品卡收藏、規格與分頁。收藏是狀態而非錯誤，不再固定使用危險紅。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .btnLike,
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .card-action-row > .btnLike:not(.is-wished) {
  background:var(--cms-brand-surface-control);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .btnLike:not(.is-wished):is(:hover,:focus,:focus-visible,:active) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.btnLike.is-wished,.btnLike.like,.spec-button li a.active) {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.btnLike.is-wished,.btnLike.like,.spec-button li a.active):is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .pagination .page-item.active {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .pagination .page-item.active .page-link,
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .pagination .page-item .page-link:hover {
  background:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}

/* 商品標籤使用重點色；即使選擇接近白色，也以 on-accent 維持文字可讀性。 */
body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"]) :is(.product-item .product-img .product-tag,.single-product-image-tag,.productBox .productImgBox .productTag) {
  background:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
}

/* 商品工具列沿用品牌控制項表面，分隔線、聚焦與選中狀態接上品牌色。 */
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) .product-toolbar {
  border-color:var(--cms-brand-secondary-line);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.product-toolbar-select,.product-toolbar-search input):focus-visible {
  outline-color:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .product-toolbar .dropdown-menu .dropdown-item:is(:active,.active) {
  background:var(--cms-brand-primary);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .product-toolbar-search button:is(:hover,:focus-visible) {
  color:var(--cms-brand-primary-action);
}

/* Select2 的已選列改為實心主色，避免淺色字直接落在白底上。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .select2-container--cms :is(.select2-results__option--selected,.select2-results__option[aria-selected="true"]) {
  background:var(--cms-brand-primary);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .select2-container--cms :is(.select2-results__option--selected,.select2-results__option[aria-selected="true"])::after {
  border-color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .select2-container--cms .select2-results__option[aria-selected="true"] .cms-select__note {
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) .select2-container--cms .select2-results__option--highlighted:not([aria-selected="true"]) {
  background:var(--cms-brand-secondary-soft);
}

/* 會員訂單與購物車流程：主要動作及進度使用主色，警示／成功等語意色維持原設定。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .order-action__btn:not(.order-action__btn--repay) {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .order-action__btn:not(.order-action__btn--repay):is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .order-action__btn--ghost:not(.order-action__btn--repay) {
  background:transparent;
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .order-action__btn--ghost:not(.order-action__btn--repay):is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.order-summary-card,.dev-checkout-summary) {
  border-top-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-progress li.is-completed .dev-checkout-progress-index {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-progress li.is-current .dev-checkout-progress-index {
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-progress li:is(.is-completed,.is-current)::before {
  background:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #page-content .dev-checkout-summary-coupon-btn {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #page-content .dev-checkout-summary-coupon-btn:hover {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-collapse-btn {
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .dev-checkout-collapse-btn:hover {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) #page-content .dev-checkout-qty-btn {
  background:var(--cms-brand-secondary-soft);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #page-content .dev-checkout-qty-btn {
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) #page-content .dev-checkout-qty-btn:hover {
  background:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"]) .dev-checkout-mixed-badge {
  background:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
}

/* 右側懸浮客服／購物車按鈕隨主色；數量 badge 使用重點色，文字跟隨 on-accent。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .function-btns-block :is(.btn-Expand,.btn-Cart) {
  background:var(--cms-brand-primary);
  border:1px solid var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .function-btns-block :is(.btn-Expand,.btn-Cart):hover {
  background:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"][data-web-footer="shinvo-gallery"]:not([data-web-brand-primary="default"]) .function-btns-block :is(.btn-Expand,.btn-Cart,#scrollUp) {
  border-color:color-mix(in srgb,var(--cms-brand-primary-action) 62%,#fff);
  background:var(--cms-color-surface,#fff);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"][data-web-footer="shinvo-gallery"]:not([data-web-brand-primary="default"]) .function-btns-block :is(.btn-Expand,.btn-Cart,#scrollUp):hover {
  border-color:var(--cms-brand-primary-action);
  background:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-accent="default"]) .function-btns-block .btn-Cart-badge {
  background:var(--cms-brand-accent);
  color:var(--cms-brand-on-accent);
}

/* 登入、註冊與會員資料：標題記號、頁籤、勾選框及欄位 focus 共用主色。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.auth-form__title,.member-form__section-title)::before {
  background:var(--cms-brand-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.auth-form .form-control,.member-form .form-control,.member-form select.form-control):focus {
  border-color:var(--cms-brand-primary-action);
  box-shadow:0 0 0 3px var(--cms-brand-primary-soft);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .auth-form .terms-agree__field .form-check-input:checked {
  background-color:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .auth-form .terms-agree__field .form-check-input:focus {
  border-color:var(--cms-brand-primary-action);
  box-shadow:0 0 0 3px var(--cms-brand-primary-soft);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.auth-form .terms-agree__field .form-check-label a,.auth-form__link:hover,.auth-switch a) {
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .member-form__tab.is-active {
  background:var(--cms-brand-primary);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .member-form__social-action--primary {
  background:var(--cms-brand-primary);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .member-form__social-action--primary:is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}

/* 訂單進度、商品回購與商品頁其餘互動狀態。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.order-product-cart-btn,.quick-add-actions .quick-add-detail) {
  background:var(--cms-brand-surface-control);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.order-product-cart-btn,.quick-add-actions .quick-add-detail):is(:hover,:focus-visible) {
  background:var(--cms-brand-primary-action);
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .order-timeline li.is-current::before {
  background:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.reviews-tab li:where(.product-tabs > li) a.active,.wl-card__link:hover,.blog-title-2 > a:hover,.read-more a) {
  border-color:var(--cms-brand-primary-action);
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) :is(.quickAddTrigger.quick-add-selected,.cart-stepper) {
  background:var(--cms-brand-surface-control);
  border-color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-secondary="default"]) .quickAddTrigger.quick-add-selected {
  background:var(--cms-brand-secondary-soft);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .quickAddTrigger.quick-add-selected {
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .cart-stepper-btn {
  color:var(--cms-brand-primary-action);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .cart-stepper-btn:hover {
  background:var(--cms-brand-primary-action);
  color:var(--cms-brand-on-primary-action);
}

/* 聯絡表單沿用同一組 focus 與章節識別色。 */
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .contact-form__title::before {
  background:var(--cms-brand-primary);
}
body[data-theme^="shinvo-"]:not([data-web-brand-primary="default"]) .contact-form .form-control:focus {
  border-color:var(--cms-brand-primary-action);
  box-shadow:0 0 0 3px var(--cms-brand-primary-soft);
}

}
/* source: web/css/presentations/content-style-tokens.css */
@layer cms.theme {
/*
 * 商品／文章展示樣式私有 token。
 *
 * 展示樣式可以和全站主題交叉搭配，因此不能假設目前主題的 base.css 一定宣告了來源款式的
 * 私有變數。值與各來源主題原始 token 對齊；掛在 body 的展示樣式屬性上，只補內容區所需值。
 */
body:is([data-web-product-style="shinvo-editorial"], [data-web-post-style="shinvo-editorial"]) {
  --cms-ed-surface: #fffdf8;
  --cms-ed-ink: color-mix(in srgb, var(--cms-brand-accent-action, var(--cms-color-primary)) 36%, #231d1c);
  --cms-ed-on-ink: #fffdf8;
  --cms-ed-space: 24px;
  --cms-ed-card-pad: 24px;
  --cms-ed-radius: 2px;
  --cms-ed-rule: color-mix(in srgb, var(--cms-brand-accent-action, var(--cms-color-primary)) 34%, transparent);
}

body:is([data-web-product-style="shinvo-market"], [data-web-post-style="shinvo-market"]) {
  --cms-mk-surface: #ffffff;
  --cms-mk-soft: color-mix(in srgb, var(--cms-mk-action) 7%, #ffffff);
  --cms-mk-ink: #203235;
  --cms-mk-ink-rgb: 32, 50, 53;
  --cms-mk-on-ink-rgb: 255, 255, 255;
  --cms-mk-muted: #53686c;
  --cms-mk-card-pad: 20px;
  --cms-mk-rule: #cdd8da;
  --cms-mk-action: var(--cms-brand-accent-action, #125b63);
  --cms-mk-on-action: var(--cms-brand-on-accent-action, #ffffff);
}

body:is([data-web-product-style="shinvo-gallery"], [data-web-post-style="shinvo-gallery"]) {
  --cms-ga-surface: #ffffff;
  --cms-ga-mat: #f0f2ed;
  --cms-ga-ink: #262b28;
  --cms-ga-ink-rgb: 38, 43, 40;
  --cms-ga-on-ink-rgb: 255, 255, 255;
  --cms-ga-muted: #69716b;
  --cms-ga-rule: #d9ded8;
  --cms-ga-action: var(--cms-brand-accent-action, var(--cms-color-primary));
  --cms-ga-on-action: var(--cms-brand-on-accent-action, #ffffff);
}

body:is([data-web-product-style="internal-dgfactor"], [data-web-post-style="internal-dgfactor"]) {
  --cms-dg-font-display: 'Playfair Display', 'Noto Serif TC', 'Songti TC', serif;
  --cms-dg-font-mono: ui-monospace, 'JetBrains Mono', 'SFMono-Regular', Menlo, Consolas, monospace;
  --cms-dg-rule-hair: 1px solid var(--cms-color-border);
  --cms-dg-rule-ink: 1px solid var(--cms-color-text);
  --cms-dg-rule-strong: 2px solid var(--cms-color-text);
}

body:is([data-web-product-style="internal-shop-linerp"], [data-web-post-style="internal-shop-linerp"]) {
  --cms-sl-surface-soft: #ffffff;
  --cms-sl-text-primary: #1f2a37;
  --cms-sl-text-secondary: #465769;
  --cms-sl-accent: #4f8fd4;
  --cms-sl-accent-2: #3e78bf;
  --cms-sl-accent-rgb: 79, 143, 212;
  --cms-sl-border: rgba(56, 78, 104, 0.18);
  --cms-sl-shadow-sm: 0 8px 22px rgba(37, 60, 93, 0.08);
  --cms-sl-shadow-md: 0 14px 28px rgba(37, 60, 93, 0.12);
  --cms-sl-radius-lg: 16px;
  --cms-sl-radius-pill: 999px;
}

body:is([data-web-product-style="custom-3ffood"], [data-web-post-style="custom-3ffood"]) {
  --cms-sf-color-primary: #6a1d15;
  --cms-sf-color-primary-hover: #4f130d;
  --cms-sf-color-text: #5b3a1b;
  --cms-sf-color-text-light: #fff7ef;
}

}
/* source: web/css/themes/shinvo-standard/sidebar.css */
@layer cms.theme {
/* ============================================================================
 * themes/shinvo-standard/sidebar.css — default 主題 sidebar 覆寫層（空殼）
 * ============================================================================
 *
 * 用途：
 *   default 主題對 common/sidebar.css 的覆寫層 — 但故意保持為空殼。
 *
 * 設計理由（重要）：
 *   default 主題是「未來所有網站的基礎標準」（baseline），common/sidebar.css
 *   本身已是該標準的完整呈現。default 不需要對「自己的 baseline」做覆寫，
 *   因此本檔故意保持空殼。
 *
 *   其他主題（3ffood / kgtwbeef / dgfactor / shopLinerp）才需透過
 *   各自的 themes/{theme}/sidebar.css 對 common baseline 做差異化覆寫。
 *
 * issue #1391：主題層的 sidebar.css 只負責內容區的商品分類側欄（.product-side-menu）。
 *   手機側欄（mobile-sidebar）屬 Header 元件，差異寫在 chrome/headers/<key>/sidebar.css，
 *   全站主題 MUST NOT 改寫它。本主題原本的 header.css／footer.css 兩個空殼已隨之歸檔至
 *   已退役並改由 Git history 查詢（標準 Header／Footer 由 common 承擔）。
 *
 * 載入順序：
 *   common/sidebar.css -> 本檔（本檔目前為空殼，無覆寫）
 *
 * 何時需要在本檔加規則：
 *   - 若 default 站需要對 common/sidebar.css 的某條規則做暫時性 hotfix
 *     且不適合改 common/sidebar.css（如該規則仍是其他主題的合理 baseline）
 *   - 一般情況下「default 規則該動哪就改 common/sidebar.css」即可
 *     （因為 common = default baseline）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 5.3 + 後續設計澄清）
 * ============================================================================
 */

}
/* source: web/css/themes/shinvo-standard/pages/post.css */
@layer cms.theme {
/* ============================================================================
 * themes/shinvo-standard/pages/post.css — default 主題貼文頁面覆寫層（空殼）
 * ============================================================================
 *
 * 用途：
 *   default 主題對 common/pages/post.css 的覆寫層 — 但故意保持為空殼。
 *
 * 設計理由（重要）：
 *   default 主題是「未來所有網站的基礎標準」（baseline），common/pages/post.css
 *   本身已是該標準的完整呈現。default 不需要對「自己的 baseline」做覆寫，
 *   因此本檔故意保持空殼。
 *
 *   其他主題（3ffood / kgtwbeef / dgfactor / shopLinerp）才需透過
 *   各自的 themes/{theme}/pages/post.css 對 common baseline 做差異化覆寫。
 *
 * 載入順序：
 *   common/pages/post.css -> 本檔（本檔目前為空殼，無覆寫）
 *
 * 何時需要在本檔加規則：
 *   - 若 default 站需要對 common/pages/post.css 的某條規則做暫時性 hotfix
 *     且不適合改 common/pages/post.css（如該規則仍是其他主題的合理 baseline）
 *   - 一般情況下「default 規則該動哪就改 common/pages/post.css」即可
 *     （因為 common = default baseline）
 *
 * 詳細規格：openspec/specs/web-theme-css/spec.md（Requirement R.FUNC.1 / R.FUNC.8）
 * 變更記錄：openspec/changes/issue518-web-theme-css-modularization/（task 6.2）
 * ============================================================================
 */

}
