@khipu/design-system 0.2.0-alpha.14 → 0.2.0-alpha.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/beercss/arch.svg +1 -0
- package/dist/beercss/arrow.svg +1 -0
- package/dist/beercss/boom.svg +1 -0
- package/dist/beercss/bun.svg +1 -0
- package/dist/beercss/burst.svg +1 -0
- package/dist/beercss/circle.svg +1 -0
- package/dist/beercss/clamshell.svg +1 -0
- package/dist/beercss/diamond.svg +1 -0
- package/dist/beercss/fan.svg +1 -0
- package/dist/beercss/flower.svg +1 -0
- package/dist/beercss/gem.svg +1 -0
- package/dist/beercss/ghost-ish.svg +1 -0
- package/dist/beercss/heart.svg +1 -0
- package/dist/beercss/khipu-beercss.css +2405 -264
- package/dist/beercss/khipu-beercss.js +152 -4
- package/dist/beercss/khipu-beercss.min.css +1 -1
- package/dist/beercss/khipu-beercss.min.js +1 -1
- package/dist/beercss/khipu-beercss.scoped.css +9183 -0
- package/dist/beercss/khipu-beercss.scoped.min.css +1 -0
- package/dist/beercss/leaf-clover4.svg +1 -0
- package/dist/beercss/leaf-clover8.svg +1 -0
- package/dist/beercss/loading-indicator.svg +1 -0
- package/dist/beercss/material-symbols-outlined.woff2 +0 -0
- package/dist/beercss/material-symbols-rounded.woff2 +0 -0
- package/dist/beercss/material-symbols-sharp.woff2 +0 -0
- package/dist/beercss/material-symbols-subset.woff2 +0 -0
- package/dist/beercss/metadata.json +8 -4
- package/dist/beercss/oval.svg +1 -0
- package/dist/beercss/pentagon.svg +1 -0
- package/dist/beercss/pill.svg +1 -0
- package/dist/beercss/pixel-circle.svg +1 -0
- package/dist/beercss/pixel-triangle.svg +1 -0
- package/dist/beercss/puffy-diamond.svg +1 -0
- package/dist/beercss/puffy.svg +1 -0
- package/dist/beercss/semicircle.svg +1 -0
- package/dist/beercss/sided-cookie12.svg +1 -0
- package/dist/beercss/sided-cookie4.svg +1 -0
- package/dist/beercss/sided-cookie6.svg +1 -0
- package/dist/beercss/sided-cookie7.svg +1 -0
- package/dist/beercss/sided-cookie9.svg +1 -0
- package/dist/beercss/slanted.svg +1 -0
- package/dist/beercss/soft-boom.svg +1 -0
- package/dist/beercss/soft-burst.svg +1 -0
- package/dist/beercss/square.svg +1 -0
- package/dist/beercss/sunny.svg +1 -0
- package/dist/beercss/triangle.svg +1 -0
- package/dist/beercss/very-sunny.svg +1 -0
- package/dist/beercss/wavy-circle.svg +1 -0
- package/dist/beercss/wavy.svg +1 -0
- package/dist/index.d.mts +1078 -266
- package/dist/index.d.ts +1078 -266
- package/dist/index.js +1582 -528
- package/dist/index.mjs +1533 -500
- package/package.json +14 -10
- package/dist/khipu-logo-color-TV75AKOV.svg +0 -19
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/* Khipu BeerCSS Bundle - Combined CSS */
|
|
2
2
|
|
|
3
|
+
@import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700&family=Roboto:wght@400;500;700&family=Inter:wght@400;500;600&display=swap');
|
|
4
|
+
|
|
3
5
|
/* BeerCSS v4.0.1 */
|
|
4
6
|
:root{--size: 1rem;--font: Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", "Noto Sans", Arial, sans-serif;--font-icon: "Material Symbols Outlined";--speed1: .1s;--speed2: .2s;--speed3: .3s;--speed4: .4s;--active: rgb(128 128 128 / .192);--overlay: rgb(0 0 0 / .5);--elevate1: 0 .125rem .125rem 0 rgb(0 0 0 / .32);--elevate2: 0 .25rem .5rem 0 rgb(0 0 0 / .4);--elevate3: 0 .375rem .75rem 0 rgb(0 0 0 / .48);--top: env(safe-area-inset-top);--bottom: env(safe-area-inset-bottom);--left: env(safe-area-inset-left);--right: env(safe-area-inset-right);--image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4AWJiYGAQBgAAAP//ZyYa+wAAAAZJREFUAwAAIgAWeX9MsQAAAABJRU5ErkJggg==)}body.dark{--image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4AWL6//+/FAAAAP//qSv5QwAAAAZJREFUAwAJIAMaJWjIvQAAAABJRU5ErkJggg==)}html{font-size:var(--size)}body{color:var(--on-surface);background-color:var(--surface);overflow-x:hidden;font-family:var(--font);font-size:.875rem;line-height:1.5rem;letter-spacing:.0313rem}@media(pointer:fine){body ::-webkit-scrollbar,body ::-webkit-scrollbar-thumb,body ::-webkit-scrollbar-button{background:none;inline-size:.4rem;block-size:.4rem}body :is(:focus,:hover)::-webkit-scrollbar-thumb,body :has(:focus,:hover)::-webkit-scrollbar-thumb{background:var(--outline);border-radius:1rem}}@media(pointer:coarse){body:has(dialog[open],dialog.active),body:has(input[type=range]:focus){overflow:hidden}}@keyframes to-page{0%{opacity:0;transform:var(--_transform)}to{opacity:1;transform:translate(0)}}@keyframes to-linear-progress{0%{margin:0 0 0 -100%}50%{margin:0}to{margin:0 0 0 100%}}@keyframes to-indeterminate-progress{0%{padding:0 100% 0 0}50%{padding:0}to{padding:0 0 0 100%}}@keyframes to-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes to-ripple{to{transform:scale(4);opacity:0}}:root,body.light{--primary: #6750a4;--on-primary: #ffffff;--primary-container: #e9ddff;--on-primary-container: #22005d;--secondary: #625b71;--on-secondary: #ffffff;--secondary-container: #e8def8;--on-secondary-container: #1e192b;--tertiary: #7e5260;--on-tertiary: #ffffff;--tertiary-container: #ffd9e3;--on-tertiary-container: #31101d;--error: #ba1a1a;--on-error: #ffffff;--error-container: #ffdad6;--on-error-container: #410002;--background: #fffbff;--on-background: #1c1b1e;--surface: #fdf8fd;--on-surface: #1c1b1e;--surface-variant: #e7e0eb;--on-surface-variant: #49454e;--outline: #7a757f;--outline-variant: #cac4cf;--shadow: #000000;--scrim: #000000;--inverse-surface: #313033;--inverse-on-surface: #f4eff4;--inverse-primary: #cfbcff;--surface-dim: #ddd8dd;--surface-bright: #fdf8fd;--surface-container-lowest: #ffffff;--surface-container-low: #f7f2f7;--surface-container: #f2ecf1;--surface-container-high: #ece7eb;--surface-container-highest: #e6e1e6}body.dark{--primary: #cfbcff;--on-primary: #381e72;--primary-container: #4f378a;--on-primary-container: #e9ddff;--secondary: #cbc2db;--on-secondary: #332d41;--secondary-container: #4a4458;--on-secondary-container: #e8def8;--tertiary: #efb8c8;--on-tertiary: #4a2532;--tertiary-container: #633b48;--on-tertiary-container: #ffd9e3;--error: #ffb4ab;--on-error: #690005;--error-container: #93000a;--on-error-container: #ffb4ab;--background: #1c1b1e;--on-background: #e6e1e6;--surface: #141316;--on-surface: #e6e1e6;--surface-variant: #49454e;--on-surface-variant: #cac4cf;--outline: #948f99;--outline-variant: #49454e;--shadow: #000000;--scrim: #000000;--inverse-surface: #e6e1e6;--inverse-on-surface: #313033;--inverse-primary: #6750a4;--surface-dim: #141316;--surface-bright: #3a383c;--surface-container-lowest: #0f0e11;--surface-container-low: #1c1b1e;--surface-container: #201f22;--surface-container-high: #2b292d;--surface-container-highest: #363438}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:400;font-display:swap;src:url(material-symbols-outlined.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@4.0.19/dist/cdn/material-symbols-outlined.woff2) format("woff2")}@font-face{font-family:Material Symbols Rounded;font-style:normal;font-weight:400;font-display:swap;src:url(material-symbols-rounded.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@4.0.19/dist/cdn/material-symbols-rounded.woff2) format("woff2")}@font-face{font-family:Material Symbols Sharp;font-style:normal;font-weight:400;font-display:swap;src:url(material-symbols-sharp.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@4.0.19/dist/cdn/material-symbols-sharp.woff2) format("woff2")}@font-face{font-family:Material Symbols Subset;font-style:normal;font-weight:400;font-display:swap;src:url(material-symbols-subset.woff2) format("woff2"),url(https://cdn.jsdelivr.net/npm/beercss@4.0.19/dist/cdn/material-symbols-subset.woff2) format("woff2")}*{-webkit-tap-highlight-color:transparent;position:relative;vertical-align:middle;color:inherit;margin:0;padding:0;border-radius:inherit;box-sizing:border-box}*:after,*:before{all:unset}label{font-size:.75rem;vertical-align:baseline}a,b,i,span,strong,em,code{vertical-align:baseline}a,button,.button{cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;border:none;font-family:inherit;outline:inherit;justify-content:center}:is(nav,.tabs,.field)>a,button,.button,.chip,i,label{-webkit-user-select:none;user-select:none}:not(.grid,nav,.row)>:not(progress.max)+:is(address,article,blockquote,code,.field,fieldset,form,.grid,h1,h2,h3,h4,h5,h6,nav,ol,p,pre,.row,section,aside,table,.tabs,ul):not([class*=margin],.right,.left,.top,.bottom){margin-block-start:1rem}:has(>[class*=margin]){padding:.1px}:is(a,button,.button,.chip,summary):focus-visible{outline:.125rem solid var(--primary);outline-offset:.25rem}:is(nav,.row,li).group>:focus-visible{z-index:1}:is(button,.button,.chip)>:is(span,i,img,svg){pointer-events:none}div:is(:not([class]),[class=active]):has(>:not(.responsive)~:is(menu,.tooltip,input)){display:inline-flex}.middle-align{display:flex;align-items:center!important}.bottom-align{display:flex;align-items:flex-end!important}.top-align{display:flex;align-items:flex-start!important}.left-align{text-align:start;justify-content:flex-start!important}.right-align{text-align:end;justify-content:flex-end!important}.center-align{text-align:center;justify-content:center!important}[class*=blur],[class*=blur].light{--_blur: 1rem;-webkit-backdrop-filter:blur(var(--_blur));backdrop-filter:blur(var(--_blur));color:var(--on-surface);background-color:#ffffff80!important}.dark [class*=blur],[class*=blur].dark{background-color:#00000080!important}.small-blur{--_blur: .5rem}.large-blur{--_blur: 1.5rem}.horizontal{display:inline-flex;flex-direction:row!important;gap:1rem;inline-size:auto!important;max-inline-size:none!important}.horizontal>*{margin-block:0!important}.vertical{display:flex;flex-direction:column!important}:is(a,button,.button,.chip).vertical{display:inline-flex;gap:.25rem;block-size:auto!important;max-block-size:none!important;padding-block:.5rem}.vertical>*{margin-inline:0!important}.no-elevate{box-shadow:none!important}.small-elevate,.elevate{box-shadow:var(--elevate1)!important}.medium-elevate{box-shadow:var(--elevate2)!important}.large-elevate{box-shadow:var(--elevate3)!important}.round,[class*=-round]{--_round: 2rem;border-radius:var(--_round)!important}.small-round{--_round: .5rem}.large-round{--_round: 3.5rem}.no-round,.square,.top-round,.bottom-round,.left-round,.right-round{border-radius:.5rem!important}.top-round{border-start-start-radius:var(--_round)!important;border-start-end-radius:var(--_round)!important}.bottom-round{border-end-end-radius:var(--_round)!important;border-end-start-radius:var(--_round)!important}.left-round{border-start-start-radius:var(--_round)!important;border-end-start-radius:var(--_round)!important}.right-round{border-start-end-radius:var(--_round)!important;border-end-end-radius:var(--_round)!important}.circle:not(.extend){border-radius:50%}:is(.circle,.square):is(button,.button,.chip){padding:0;block-size:var(--_size);inline-size:var(--_size)}:is(.circle,.square)>span:not([class]){display:none}:is(.circle,.square).round{border-radius:1rem!important}.border:not(table,.field,.list,menu,article){box-sizing:border-box;border:.0625rem solid var(--outline);background-color:transparent;box-shadow:none}.no-border{border-color:transparent!important}.margin,[class*=-margin]:not(.left-margin,.right-margin,.top-margin,.bottom-margin,.horizontal-margin,.vertical-margin){margin:var(--_margin)!important}.margin,[class*=-margin]{--_margin: 1rem}.no-margin{--_margin: 0}.auto-margin{--_margin: auto}.tiny-margin{--_margin: .25rem}.small-margin{--_margin: .5rem}.large-margin{--_margin: 1.5rem}.left-margin,.horizontal-margin{margin-inline-start:var(--_margin)!important}.right-margin,.horizontal-margin{margin-inline-end:var(--_margin)!important}.top-margin,.vertical-margin{margin-block-start:var(--_margin)!important}.bottom-margin,.vertical-margin{margin-block-end:var(--_margin)!important}.no-opacity{opacity:0!important}.small-opacity{opacity:.25!important}.medium-opacity{opacity:.5!important}.large-opacity{opacity:.75!important}.opacity{opacity:1!important}.padding,[class*=-padding]:not(.left-padding,.right-padding,.top-padding,.bottom-padding,.horizontal-padding,.vertical-padding){padding:var(--_padding)!important}.padding,[class*=-padding]{--_padding: 1rem}.no-padding{--_padding: 0 !important}.tiny-padding{--_padding: .25rem !important}.small-padding{--_padding: .5rem !important}.large-padding{--_padding: 1.5rem !important}.left-padding,.horizontal-padding{padding-inline-start:var(--_padding)!important}.right-padding,.horizontal-padding{padding-inline-end:var(--_padding)!important}.top-padding,.vertical-padding{padding-block-start:var(--_padding)!important}.bottom-padding,.vertical-padding{padding-block-end:var(--_padding)!important}.front{z-index:10!important}.back{z-index:-10!important}.left{inset-inline-start:0}.right{inset-inline-end:0}.top{inset-block-start:0}.bottom{inset-block-end:0}.center{inset-inline-start:50%;transform:translate(-50%)}[dir=rtl] .center{transform:translate(50%)}.middle{inset-block-start:50%;transform:translateY(-50%)}.middle.center{transform:translate(-50%,-50%)}[dir=rtl] .middle.center{transform:translate(50%,-50%)}[class*=ripple]:is(:hover,:focus-visible):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:currentColor;opacity:.1;border-radius:inherit}.ripple{--_duration: .6s}.fast-ripple{--_duration: .2s}.slow-ripple{--_duration: 1.8s}.ripple-js{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.ripple-js>div{position:absolute;border-radius:50%;background:currentColor;opacity:.3;transform:scale(0);animation:to-ripple var(--_duration) linear}.scroll{overflow:auto}.no-scroll{overflow:hidden}.shadow{background-color:#00000050}:is(.left-shadow,.right-shadow,.top-shadow,.bottom-shadow){background-color:transparent!important}.left-shadow{background-image:linear-gradient(to right,black,transparent)!important}.right-shadow{background-image:linear-gradient(to left,black,transparent)!important}.bottom-shadow{background-image:linear-gradient(to top,black,transparent)!important}.top-shadow{background-image:linear-gradient(to bottom,black,transparent)!important}[class*=-width]{max-inline-size:100%}.auto-width{inline-size:auto}.small-width{inline-size:12rem!important}.medium-width{inline-size:24rem!important}.large-width{inline-size:36rem!important}.auto-height{block-size:auto}.small-height{block-size:12rem!important}.medium-height{block-size:24rem!important}.large-height{block-size:36rem!important}.wrap{display:block;white-space:normal}.no-wrap:not(menu){display:flex;white-space:nowrap}.tiny-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:.5rem}:is(.space,.small-space):not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:1rem}.medium-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:2rem}.large-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:3rem}.extra-space:not(nav,.row,.grid,table,.tooltip,.list,menu,.shape){block-size:4rem}.responsive{inline-size:-webkit-fill-available;inline-size:-moz-available}@media only screen and (max-width:600px){:is(.m,.l):not(.s){display:none!important}}@media only screen and (min-width:601px)and (max-width:992px){:is(.s,.l):not(.m){display:none!important}}@media only screen and (min-width:993px){:is(.m,.s):not(.l){display:none!important}}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-weight:400;display:block;align-items:center;line-height:normal}h1,.h1{font-size:3.5625rem}h2,.h2{font-size:2.8125rem}h3,.h3{font-size:2.25rem}h4,.h4{font-size:2rem}h5,.h5{font-size:1.75rem}h6,.h6{font-size:1.5rem}:is(h1,.h1).small{font-size:3.0625rem}:is(h2,.h2).small{font-size:2.3125rem}:is(h3,.h3).small{font-size:1.75rem}:is(h4,.h4).small{font-size:1.5rem}:is(h5,.h5).small{font-size:1.25rem}:is(h6,.h6).small{font-size:1rem}:is(h1,.h1).large{font-size:4.0625rem}:is(h2,.h2).large{font-size:3.3125rem}:is(h3,.h3).large{font-size:2.75rem}:is(h4,.h4).large{font-size:2.5rem}:is(h5,.h5).large{font-size:2.25rem}:is(h6,.h6).large{font-size:2rem}.link{color:var(--primary)!important}.inverse-link{color:var(--inverse-primary)!important}.truncate{overflow:hidden;white-space:nowrap!important;text-overflow:ellipsis;flex:inherit}.truncate>*{white-space:nowrap!important}.small-text{font-size:.75rem}.medium-text{font-size:.875rem}.large-text{font-size:1rem}.upper{text-transform:uppercase}.lower{text-transform:lowercase}.capitalize{text-transform:capitalize}.bold{font-weight:700}.overline{text-decoration:line-through}.underline{text-decoration:underline}.italic{font-style:italic}p{margin:.5rem 0}.no-line{line-height:normal}.tiny-line{line-height:1.25rem}.small-line{line-height:1.5rem}.medium-line{line-height:1.75rem}.large-line{line-height:2rem}.extra-line{line-height:2.25rem}pre{border-radius:0;background-color:var(--surface-container);white-space:pre-wrap;padding:1rem;border-inline-start:.25rem solid var(--primary);font-family:inherit}blockquote{border-radius:0;padding:1rem;border-inline-start:.25rem solid var(--primary);font-family:inherit}code{border-radius:0;background-color:var(--surface-container);white-space:pre-wrap;padding:.25rem}pre>code,blockquote>code{padding:0}.scroll>code{white-space:pre}pre:has(>code){direction:ltr;text-align:start}sub{vertical-align:sub}sup{vertical-align:super}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a):not([class*=ripple]):after,nav:is(.left,.right,.bottom,.top).max>a:after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:after,nav:is(.left,.right,.bottom,.top):not(.max)>a>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a>i:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:inherit;inline-size:100%;block-size:100%;background-position:center;background-image:radial-gradient(circle,currentColor 1%,transparent 1%);opacity:0;transition:none;pointer-events:none}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a):not([class*=ripple]):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top).max>a:not(.button,.chip):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:not(.button,.chip):is(:focus-visible,:hover):after,nav:is(.left,.right,.bottom,.top):not(.max)>a:not(.button,.chip):is(:focus-visible,:hover)>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a:not(.button,.chip):is(:focus-visible,:hover)>i:after{background-size:22500%;opacity:.1;transition:background-size var(--speed2) linear}:is(.wave,.chip,.button,button,nav.tabbed>a,.tabs>a,nav.toolbar>a,nav.max>a):not([class*=ripple]):active:after,nav:is(.left,.right,.bottom,.top).max>a:active:after,nav:is(.left,.right,.bottom,.top).max>:is(ol,ul)>li>a:active:after,nav:is(.left,.right,.bottom,.top):not(.max)>a:active>i:after,nav:is(.left,.right,.bottom,.top):not(.max)>:is(ol,ul)>li>a:active>i:after{background-size:0%;opacity:0;transition:none}.no-wave:after,.no-wave:is(:hover,:active):after{display:none}.zoom,.tiny-zoom{zoom:2}.small-zoom{zoom:3}.medium-zoom{zoom:4}.large-zoom{zoom:5}.extra-zoom{zoom:6}.badge{--_x: 0;--_y: -100%;display:inline-flex;align-items:center;justify-content:center;position:absolute;font-size:.6875rem;z-index:2;padding:0 .25rem;min-block-size:1rem;min-inline-size:1rem;background-color:var(--error);color:var(--on-error);line-height:normal;border-radius:1rem;inset:50% auto auto 50%;transform:translate(var(--_x, 50%),var(--_y, -50%));font-family:var(--font)}.badge.top{--_y: -100%}.badge.bottom{--_y: 0}.badge.left{--_x: -100%}.badge.right{--_x: 0}.badge.border{border-color:var(--error);color:var(--error);background-color:var(--surface)}.badge:is(.circle,.square){text-align:center;inline-size:auto;block-size:auto;padding:0 .25rem;border-radius:1rem}.badge.square{border-radius:0}.badge.min>*{display:none}.badge.min{clip-path:circle(18.75% at 50% 50%)}nav:is(.left,.right,.top,.bottom)>a>.badge,nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a>.badge{inset:1rem auto auto 50%}.badge.none{inset:auto!important;transform:none;position:relative;margin:0 .125rem}header,footer{display:grid;align-content:center;border-radius:0;padding:0 1rem}:is(dialog,article)>:is(header,footer){padding-inline:0;top:0;right:0;bottom:0;left:0}header{min-block-size:4rem}footer{min-block-size:5rem}:is(header,footer,menu>*).fixed{position:sticky;top:0;right:0;bottom:0;left:0;z-index:11;background-color:inherit}header.fixed{inset:calc(-1 * var(--_padding, 0)) 0 0 0;margin-block-start:calc(-1 * var(--_padding, 0))}footer.fixed{inset:0 0 calc(-1 * var(--_padding, 0)) 0;margin-block-end:calc(-1 * var(--_padding, 0))}:is(header,footer).fixed.min{margin-inline:auto}dialog>:is(header,footer){background:none}dialog>:is(header,footer).fixed{background-color:inherit}:is(main,header,footer,section).responsive{max-inline-size:min(100vw,75rem);margin:0 auto}:is(main,header,footer,section).responsive.max{max-inline-size:none}:has(>main)>:is(header,footer).fixed{transform:none;box-sizing:content-box;position:sticky;top:0;right:0;bottom:0;left:0;z-index:12}:has(>main)>header{padding-block-start:var(--top, 0)}:has(>main)>footer{padding-block-end:var(--bottom, 0)}nav.top~header,nav.bottom~footer{padding-block:0}nav.top~header.fixed{inset-block:calc(var(--top, 0) + 4.5rem) 0}nav.bottom~footer.fixed{inset-block:0 calc(var(--bottom, 0) + 4.5rem)}:is(nav,.row)>header{background-color:inherit}.button,button{--_padding: 1rem;--_size: 2.5rem;--_round: calc(var(--_size) / 2) !important;box-sizing:content-box;display:inline-flex;align-items:center;justify-content:center;block-size:var(--_size);font-size:.875rem;font-weight:500;color:var(--on-primary);padding:0 var(--_padding);background-color:var(--primary);border-radius:1.25rem;transition:transform var(--speed3),border-radius var(--speed2),padding var(--speed3);-webkit-user-select:none;user-select:none;gap:.5rem;line-height:normal}:is(button,.button).small{--_size: 2rem;--_padding: .75rem}:is(button,.button).large{--_size: 3rem;--_padding: 1.25rem}:is(.button,button):is(.extra,.extend){--_size: 3.5rem;font-size:1rem;--_padding: 1.5rem}:is(button,.button):is(.square,.circle){--_padding: 0}:is(button,.button).border{border-color:var(--outline-variant);color:var(--primary)}.extend>span:not([class]){display:none}.extend:is(:hover,.active){inline-size:auto;--_padding: 1.5rem;padding:0 var(--_padding)}.extend:is(:hover,.active)>i+span{display:inherit;margin-inline-start:var(--_padding)}.extend:is(:hover,.active)>:is(img,svg)+span{display:inherit;margin-inline-start:calc(1rem + var(--_padding, 0))}:is(.button,button)[disabled]{opacity:.5;cursor:not-allowed}.button[disabled]{pointer-events:none}:is(.button,button)[disabled]:before,:is(.button,button)[disabled]:after{display:none}:is(.button,button):not(.chip,.extend).fill{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}:is(.button,button):not(.chip,.extend).active{background-color:var(--primary-container);color:var(--on-primary-container)}:is(.button,button):not(.chip,.extend).fill.active{background-color:var(--secondary)!important;color:var(--on-secondary)!important}:is(.button,button):not(.chip,.extend).border.active{background-color:var(--inverse-surface)!important;color:var(--inverse-on-surface)!important;border-color:var(--inverse-surface)!important}:is(.button,button):not(.chip):active,:is(.button,button):not(.chip).active{border-radius:.5rem!important}article{--_padding: 1rem;box-shadow:var(--elevate1);background-color:var(--surface-container-low);color:var(--on-surface);padding:var(--_padding);border-radius:.75rem;display:block;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3)}article.small{block-size:12rem}article.medium{block-size:20rem}article.large{block-size:32rem}article.border{box-shadow:none;border:.0625rem solid var(--outline-variant)}.chip{--_padding: .75rem;--_size: 2rem;--_round: calc(var(--_size) / 2) !important;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;block-size:var(--_size);min-inline-size:var(--_size);font-size:.875rem;font-weight:500;background-color:transparent;border:.0625rem solid var(--outline-variant);color:var(--on-surface-variant);padding:0 var(--_padding);border-radius:.5rem;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3);-webkit-user-select:none;user-select:none;gap:.5rem;line-height:normal;letter-spacing:normal}.chip.medium{--_size: 2.5rem;--_padding: 1rem}.chip.large{--_padding: 1.25rem;--_size: 3rem}.chip.fill{border:none}dialog{--_padding: 1.5rem;--_top: calc(var(--_padding, 0) + var(--top, 0));--_bottom: calc(var(--_padding, 0) + var(--bottom, 0));display:block;visibility:hidden;border:none;opacity:0;position:fixed;box-shadow:var(--elevate2);color:var(--on-surface);background-color:var(--surface-container-high);padding:var(--_padding);z-index:100;inset:10% auto auto 50%;min-inline-size:20rem;max-inline-size:100%;max-block-size:80%;overflow-x:hidden;overflow-y:auto;transition:all var(--speed3),0s background-color;border-radius:1.75rem;transform:translate(-50%,-4rem);outline:none}dialog.small{inline-size:25%;block-size:25%}dialog.medium{inline-size:50%;block-size:50%}dialog.large{inline-size:75%;block-size:75%}dialog:is(.active,[open]){visibility:visible;opacity:1;transform:translate(-50%)}dialog:popover-open{visibility:visible;opacity:1;transform:translate(-50%)}dialog:is(.top,.right,.bottom,.left,.max){--_padding: 1rem}dialog:is(.top,.bottom){opacity:1;block-size:auto;inline-size:100%;min-inline-size:auto;max-block-size:100%}dialog.top{inset:0 auto auto 0;transform:translateY(-100%);border-radius:0 0 1rem 1rem;padding-block-start:var(--_top)}dialog.bottom{inset:auto auto 0 0;transform:translateY(100%);border-radius:1rem 1rem 0 0;padding-block-end:var(--_bottom)}dialog:is(.left,.right){opacity:1;inset:0 auto auto 0;inline-size:auto;block-size:100%;max-block-size:100%;background-color:var(--surface);padding-block:var(--_top) var(--_bottom)}[dir=rtl] dialog.right,dialog.left{inset:0 auto auto 0;border-radius:0 1rem 1rem 0;transform:translate(-100%)}[dir=rtl] dialog.left,dialog.right{inset:0 0 auto auto;border-radius:1rem 0 0 1rem;transform:translate(100%)}dialog.max{inset:0 auto auto 0;inline-size:100%;block-size:100%;max-inline-size:100%;max-block-size:100%;transform:translateY(4rem);background-color:var(--surface);border-radius:0;padding-block:var(--_top) var(--_bottom)}dialog:is(.active,[open]):is(.left,.right,.top,.bottom,.max){transform:translate(0)}dialog:popover-open:is(.left,.right,.top,.bottom,.max){transform:translate(0)}dialog.small:is(.left,.right){inline-size:20rem}dialog.medium:is(.left,.right){inline-size:32rem}dialog.large:is(.left,.right){inline-size:44rem}dialog.small:is(.top,.bottom){block-size:16rem}dialog.medium:is(.top,.bottom){block-size:24rem}dialog.large:is(.top,.bottom){block-size:32rem}hr,[class*=divider]{all:unset;inline-size:-webkit-fill-available;min-block-size:auto;block-size:.0625rem;background-color:var(--outline-variant);display:block}hr+*,[class*=divider]+*{margin:0!important}hr.medium,.medium-divider{margin:1rem 0!important}hr.large,.large-divider{margin:1.5rem 0!important}hr.small,.small-divider{margin:.5rem 0!important}li:has(>:is(hr,.divider)){padding:0!important;align-self:normal!important;min-inline-size:auto!important;min-block-size:auto!important;inline-size:-webkit-fill-available;background:none!important}:is(hr,.divider).vertical,li:has(>:is(hr,.divider).vertical){padding:0!important;align-self:center!important;min-inline-size:auto;min-block-size:1.5rem;inline-size:.0625rem}summary{list-style-type:none;cursor:pointer}summary::-webkit-details-marker{display:none}summary>*{pointer-events:none;margin:0}li>details>summary+.list{margin:0!important}.field{--_input: 3rem;--_start: 1.2rem;--_middle: calc(var(--_input, 0) / 2);border-radius:.25rem .25rem 0 0;min-block-size:var(--_input);display:flex;flex-direction:column}.field.fill{--_background: var(--surface-variant);background-color:unset!important;color:unset!important}.field.fill>:is(input,select,textarea){background-color:var(--_background);z-index:0}.field.small{--_input: 2.5rem;--_start: 1rem}.field.large{--_input: 3.5rem;--_start: 1.4rem}.field.extra{--_input: 4rem;--_start: 1.6rem}.field.border{border-radius:.25rem}.field[class*=round].small{border-radius:1.25rem}.field[class*=round]{border-radius:1.5rem}.field[class*=round].large{border-radius:1.75rem}.field[class*=round].extra{border-radius:2rem}.field>:is(i,img,svg,progress.circle,a){position:absolute;inset:calc((var(--_input, 0) / 2) - .75rem) auto auto auto;cursor:pointer;z-index:10;inline-size:1.5rem;block-size:1.5rem;margin:auto 0;pointer-events:none}.field>:is(a,.front){pointer-events:all!important}.field>a>:is(i,img,svg,progress.circle,a){inline-size:1.5rem;block-size:1.5rem}.field>:is(i,img,svg,progress.circle,a),[dir=rtl] .field>:is(i,img,svg,progress.circle,a):first-child{inset:calc(var(--_middle, 0) - .75rem) 1rem auto auto}.field>:is(i,img,svg,progress.circle,a):first-child,[dir=rtl] .field>:is(i,img,svg,progress.circle,a){inset:calc(var(--_middle, 0) - .75rem) auto auto 1rem}.field.invalid>i{color:var(--error)}.field>progress.circle{border-width:.1875rem}.field>:is(input,textarea,select){all:unset;position:relative;display:flex;align-items:center;box-sizing:border-box;border-radius:inherit;border:.0625rem solid transparent;padding:0 .9375rem;font-family:inherit;font-size:1rem;min-block-size:var(--_input);outline:none;z-index:1;background:none;resize:none;text-align:start;cursor:text}input::-webkit-date-and-time-value{text-align:start}:is(input,select,textarea):is(:-webkit-autofill,:autofill){-webkit-background-clip:text;-webkit-text-fill-color:var(--on-surface)}.field>:is(input,textarea,select):focus{border:.125rem solid transparent;padding-inline:.875rem}.field>textarea:not([rows]){field-sizing:content;max-block-size:12rem}input[type=file],input[type=color],:not(.field)>input:is([type^=date],[type^=time],[type=month],[type=week]),input::-webkit-calendar-picker-indicator{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;margin:0;padding:0;border:0;outline:0;z-index:2!important}@media(pointer:fine){.field>input::-webkit-calendar-picker-indicator{z-index:-1!important}}input::-webkit-search-decoration,input::-webkit-search-cancel-button,input::-webkit-search-results-button,input::-webkit-search-results-decoration,input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{display:none}input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.field.border>:is(input,textarea,select){border-color:var(--outline)}.field.border>:is(input,textarea,select):focus{border-color:var(--primary)}.field[class*=round]>:is(input,textarea,select){padding-inline:1.4376rem}.field[class*=round]>:is(input,textarea,select):focus{padding-inline:1.375rem}.field.prefix>:is(input,textarea,select){padding-inline-start:2.9375rem}.field.prefix>.slider{margin-inline-start:3.5rem}.field.prefix>:is(input,textarea,select):focus{padding-inline-start:2.875rem}.field.suffix>:is(input,textarea,select){padding-inline-end:2.9375rem}.field.suffix>.slider{margin-inline-end:3.5rem}.field.suffix>:is(input,textarea,select):focus{padding-inline-end:2.875rem}.field:not(.border,[class*=round])>:is(input,textarea,select){border-block-end-color:var(--outline)}.field:not(.border,[class*=round])>:is(input,textarea,select):focus{border-block-end-color:var(--primary)}.field[class*=round]:not(.border,.fill)>:is(input,textarea,select),.field[class*=round]:not(.border)>:is(input,textarea,select):focus{box-shadow:var(--elevate1)}.field[class*=round]:not(.border,.fill)>:is(input,textarea,select):focus{box-shadow:var(--elevate2)}.field.invalid:not(.border,[class*=round])>:is(input,textarea,select),.field.invalid:not(.border,[class*=round])>:is(input,textarea,select):focus{border-block-end-color:var(--error)}.field.invalid.border>:is(input,textarea,select),.field.invalid.border>:is(input,textarea,select):focus{border-color:var(--error)}.field:has(>:disabled){opacity:.5;cursor:not-allowed}.field>:disabled{cursor:not-allowed}.field>select{-webkit-user-select:none;user-select:none}@-moz-document url-prefix(){.field>select:focus{background-color:var(--surface)}.field.fill>select:focus{background-color:var(--surface-variant)}.field>select:focus+label{z-index:1}}.field>select>option{background-color:var(--surface)}.field>:is(input,select){padding-block-start:1rem}.field:not(.label)>:is(input,select),.field.border:not(.fill)>:is(input,select){padding-block-start:0}.field>textarea{padding-block-start:var(--_start)!important}.field>textarea:focus{padding-block-start:calc(var(--_start, 0) - .01rem)!important}.field:not(.label)>textarea,.field.border:not(.fill)>textarea{padding-block-start:calc(var(--_start, 0) - .5rem)!important}.field:not(.label)>textarea:focus,.field.border:not(.fill)>textarea:focus{padding-block-start:calc(var(--_start, 0) - .51rem)!important}.field.label>label{--_start: 1rem;position:absolute;inset:-.5rem .9375rem 0 var(--_start);display:flex;block-size:calc(var(--_input, 0) + 1rem);line-height:calc(var(--_input, 0) + 1rem);font-size:1rem;transition:all .2s;gap:.25rem;white-space:nowrap;pointer-events:none}[dir=rtl] .field.label>label{inset:-.5rem calc(var(--_start) - .0625rem) 0 .9375rem}.field.label[class*=round]>label{inset:-.5rem 1.9375rem 0 var(--_start)}[dir=rtl] .field.label[class*=round]>label{inset:-.5rem var(--_start) 0 1.9375rem}.field.label.border.prefix:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){--_start: 1rem}.field.label[class*=round]>label,.field.label.border.prefix[class*=round]:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){--_start: 1.5rem}.field.label.prefix>label{--_start: 3rem}.field.label>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){block-size:2.5rem;line-height:2.5rem;font-size:.75rem}.field.label.border:not(.fill)>:is(label.active,:focus+label,[placeholder]:not(:placeholder-shown)+label,select+label){block-size:1rem;line-height:1rem}.field.label.border:not(.fill)>label:after{content:"";display:block;margin:.5rem 0 0;border-block-start:.0625rem solid var(--outline);block-size:1rem;transition:none;flex:auto}.field.label.border:not(.fill)>:focus+label:after{border-block-start:.125rem solid var(--primary)}.field.label.border:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),.field.label.border:not(.fill)>select{clip-path:polygon(-2% -2%,.75rem -2%,.75rem .5rem,calc(100% - 1rem) .5rem,calc(100% - 1rem) -2%,102% -2%,102% 102%,-2% 102%)}[dir=rtl] .field.label.border:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),[dir=rtl] .field.label.border:not(.fill)>select{clip-path:polygon(-2% -2%,1rem -2%,1rem .5rem,calc(100% - .75rem) .5rem,calc(100% - .75rem) -2%,102% -2%,102% 102%,-2% 102%)}.field.label.border[class*=round]:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),.field.label.border[class*=round]:not(.fill)>select{clip-path:polygon(-2% -2%,1.25rem -2%,1.25rem .5rem,calc(100% - 2rem) .5rem,calc(100% - 2rem) -2%,102% -2%,102% 102%,-2% 102%)}[dir=rtl] .field.label.border[class*=round]:not(.fill)>:is(input,textarea):is(:focus,[placeholder]:not(:placeholder-shown),.active),[dir=rtl] .field.label.border[class*=round]:not(.fill)>select{clip-path:polygon(-2% -2%,2rem -2%,2rem .5rem,calc(100% - 1.25rem) .5rem,calc(100% - 1.25rem) -2%,102% -2%,102% 102%,-2% 102%)}.field.label>:focus+label{color:var(--primary)}.field.label.invalid>label,.field.label.invalid>label:after{color:var(--error)!important;border-color:var(--error)!important}.field.label>label>a{block-size:inherit;line-height:inherit;inline-size:1rem}.field.label>label>a>:is(i,img,svg){block-size:1rem;line-height:1rem;inline-size:1rem;font-size:1rem}.field>output{display:inline-block;font-size:.75rem;background:none!important;padding:.25rem 1rem;line-height:1.25rem;align-self:start}.field>output.invalid{color:var(--error)!important}.field[class*=round]>output{padding:.25rem 1.5rem}.field.invalid>output:not(.invalid),.field:not(.invalid)>output.invalid{display:none}.field.invalid>output.invalid~menu,.field:not(.invalid)>output:not(.invalid)~menu{inset:auto auto 1.75rem 0}table td>.field{margin:0}fieldset{border-radius:.25rem;padding:1rem;border:.0625rem solid var(--outline-variant)}fieldset>legend{margin:0 -.25rem;padding:0 .25rem}fieldset>legend+*{margin-block-start:0!important}.grid{--_gap: 1rem;display:grid;grid-template-columns:repeat(12,1fr);gap:var(--_gap);block-size:auto}.grid.no-space{--_gap: 0rem}.grid.medium-space{--_gap: 1.5rem}.grid.large-space{--_gap: 2rem}.grid>*{margin:0}.s1{grid-area:auto/span 1}.s2{grid-area:auto/span 2}.s3{grid-area:auto/span 3}.s4{grid-area:auto/span 4}.s5{grid-area:auto/span 5}.s6{grid-area:auto/span 6}.s7{grid-area:auto/span 7}.s8{grid-area:auto/span 8}.s9{grid-area:auto/span 9}.s10{grid-area:auto/span 10}.s11{grid-area:auto/span 11}.s12{grid-area:auto/span 12}@media only screen and (min-width:601px){.m1{grid-area:auto/span 1}.m2{grid-area:auto/span 2}.m3{grid-area:auto/span 3}.m4{grid-area:auto/span 4}.m5{grid-area:auto/span 5}.m6{grid-area:auto/span 6}.m7{grid-area:auto/span 7}.m8{grid-area:auto/span 8}.m9{grid-area:auto/span 9}.m10{grid-area:auto/span 10}.m11{grid-area:auto/span 11}.m12{grid-area:auto/span 12}}@media only screen and (min-width:993px){.l1{grid-area:auto/span 1}.l2{grid-area:auto/span 2}.l3{grid-area:auto/span 3}.l4{grid-area:auto/span 4}.l5{grid-area:auto/span 5}.l6{grid-area:auto/span 6}.l7{grid-area:auto/span 7}.l8{grid-area:auto/span 8}.l9{grid-area:auto/span 9}.l10{grid-area:auto/span 10}.l11{grid-area:auto/span 11}.l12{grid-area:auto/span 12}}i,:is(.checkbox,.radio,.switch)>span:before,:is(.checkbox,.radio,.switch)>span>i{--_size: 1.5rem;font-family:var(--font-icon);font-weight:400;font-style:normal;font-size:var(--_size);letter-spacing:normal;text-transform:none;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle;text-align:center;overflow:hidden;inline-size:var(--_size);min-inline-size:var(--_size);block-size:var(--_size);min-block-size:var(--_size);box-sizing:content-box;line-height:normal;border-radius:0}i:has(.badge){overflow:unset}i.tiny{--_size: 1rem}.chip>i,i.small{--_size: 1.25rem}i.medium{--_size: 1.5rem}i.large{--_size: 1.75rem}i.extra{--_size: 2rem}i.fill,a.active>i,button.active>i{font-variation-settings:"FILL" 1}i>:is(img,svg){inline-size:100%;block-size:100%;background-size:100%;border-radius:inherit;position:absolute;inset:0 auto auto 0;padding:inherit}i[class*=fa-]{font-size:calc(var(--_size, 0) * .85);line-height:normal;block-size:auto;min-block-size:auto}.absolute{position:absolute}.fixed{position:fixed}:is(.absolute,.fixed).left.right{inline-size:auto}:is(.absolute,.fixed).left.right.small{block-size:20rem}:is(.absolute,.fixed).left.right.medium{block-size:28rem}:is(.absolute,.fixed).left.right.large{block-size:44rem}:is(.absolute,.fixed).top.bottom.small{inline-size:20rem}:is(.absolute,.fixed).top.bottom.medium{inline-size:28rem}:is(.absolute,.fixed).top.bottom.large{inline-size:44rem}.list{display:flex;flex-direction:column;padding:0;margin:0;flex:1}.list>li,.list>li>details>summary,.list>li>a:only-child{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;align-self:normal;text-align:start;justify-content:flex-start;white-space:nowrap;gap:1rem;min-block-size:3.5rem;padding:.5rem 1rem;cursor:pointer;flex:1}.list>li:has(ul,ol,details[open],a:only-child){padding:0}.list>li>.list{padding:0 0 0 1rem}.list>li>*,.list>li>a:only-child>*{margin:0}.list>li>:is(details,.max),.list>li>a:only-child>.max,.list>li>details>summary>.max{flex:1}.list.border>li:not(:last-child):before,.list.border>li>details[open]>summary:before{content:"";position:absolute;background-color:var(--outline-variant);inset:auto 0 0 0;block-size:.0625rem;inline-size:auto}.list.no-space>li,.list.no-space>li>details>summary{min-block-size:2.5rem}.list.medium-space>li,.list.medium-space>li>details>summary{min-block-size:4.5rem}.list.large-space>li,.list.large-space>li>details>summary{min-block-size:5.5rem}.list>li:focus-visible,.list>li>a:only-child:focus-visible{outline:.125rem solid var(--primary);outline-offset:-.25rem}:has(>main){display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-areas:"left top right" "left header right" "left main right" "left footer right" "left bottom right";min-block-size:100dvh;box-sizing:border-box;background-color:var(--surface)}nav.left{grid-area:left}nav.right{grid-area:right}nav.top{grid-area:top}nav.bottom{grid-area:bottom}header{grid-area:header}footer{grid-area:footer}main{--_padding: .5rem;grid-area:main;padding:var(--_padding);overflow:clip}aside{z-index:1}aside:not(.fixed,.absolute).right{float:right}aside:not(.fixed,.absolute).left{float:left}svg{fill:currentcolor}:is(img,svg,video):is(.small,.medium,.large,.tiny,.extra,.round,.circle,.square,.responsive){--_size: 3rem;object-fit:cover;object-position:center;transition:transform var(--speed3),border-radius var(--speed3),padding var(--speed3);block-size:var(--_size);inline-size:var(--_size)}:is(img,svg,video).round{--_round: .5rem}:is(img,svg,video).tiny{--_size: 2rem}:is(img,svg,video).small{--_size: 2.5rem}:is(img,svg,video).large{--_size: 3.5rem}:is(img,svg,video).extra{--_size: 4rem}:is(img,svg,video).responsive{--_size: 100%;margin:0 auto}:is(img,svg,video).responsive.tiny{inline-size:100%;block-size:4rem}:is(img,svg,video).responsive.small{inline-size:100%;block-size:8rem}:is(img,svg,video).responsive.medium{inline-size:100%;block-size:12rem}:is(img,svg,video).responsive.large{inline-size:100%;block-size:16rem}:is(img,svg,video).responsive.extra{inline-size:100%;block-size:20rem}:is(img,svg,video).responsive.round{--_round: 2rem}:is(img,svg,video).empty-state{max-inline-size:100%;inline-size:24rem}:is(button,.button,.chip):not(.transparent)>.responsive{border:.25rem solid transparent}:is(button,.button,.chip,.field)>:is(img,svg):not(.responsive),.tabs :is(img,svg):not(.responsive){min-inline-size:1.5rem;max-inline-size:1.5rem;min-block-size:1.5rem;max-block-size:1.5rem}:is(button,.button,.chip):not(.extend)>.responsive:first-child{margin-inline-start:calc(-1 * var(--_padding, 0))}:is(button,.button,.chip):not(.extend)>.responsive:not(:first-child){margin-inline-end:calc(-1 * var(--_padding, 0))}:is(button,.button,.chip,.circle,.square,.extend)>.responsive{--_size: inherit;margin:0 auto}.extend>:is(.responsive,i){margin:0;position:absolute;inset-inline:1rem;z-index:1}.extend>.responsive{inset-inline:0;inline-size:3.5rem}.extend.border>.responsive{inline-size:3.375rem}menu{opacity:0;visibility:hidden;position:absolute;box-shadow:var(--elevate2);background-color:var(--surface-container);z-index:13;inset:auto auto 0 0;inline-size:100%;max-block-size:50vh;max-inline-size:none!important;overflow-x:hidden;overflow-y:auto;font-size:.875rem;font-weight:400;text-transform:none;color:var(--on-surface);line-height:normal;text-align:start;border-radius:1rem;transform:scale(.8) translateY(120%);transition:all var(--speed2) var(--speed2);justify-content:flex-start;padding:.25rem;display:flex;flex-direction:column;gap:.125rem}menu.no-space{gap:0}menu.small-space{gap:.25rem}menu.medium-space{gap:.375rem}menu.large-space{gap:.5rem}menu.extra-space{gap:.625rem}[dir=rtl] menu{inset:auto 0 0 auto}menu.no-wrap{inline-size:max-content!important;white-space:nowrap!important}menu.active,:not([data-ui]):focus-within>menu,menu>li:hover>menu,menu>li>menu:hover{opacity:1;visibility:visible;transform:scale(1) translateY(100%);transition:all var(--speed2),background-color 0s}menu.top.active,:not([data-ui]):focus-within>menu.top,menu>li:hover>menu.top,menu>li>menu.top:hover{transform:scale(1) translateY(-100%)}menu:is(.min,.max).active,:not([data-ui]):focus-within>menu:is(.min,.max){transform:scale(1)}menu *{white-space:inherit!important}menu>li,menu>li>a:only-child{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;align-self:normal;text-align:start;justify-content:inherit;white-space:nowrap;gap:1rem;padding:.5rem 1rem;min-block-size:2.75rem;flex:1;margin:0!important;cursor:pointer;border-radius:.25rem;transition:border-radius var(--speed2)}menu>li:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}menu>li:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}menu>li:hover{background-color:color-mix(in srgb,currentColor 10%,transparent)}menu>li.active{background-color:var(--tertiary-container);color:var(--on-tertiary-container)}menu>li:is(.active,:active){border-radius:.75rem}menu>li>:is(.max,.field),menu>li>a:only-child>.max,menu>li:has(.field,a:only-child){flex:1;padding:0;margin:0}menu.min{inset:0 0 auto 0;transform:scale(.8)}[dir=rtl] menu.min.right,menu.min.left,menu.top.left{inset:0 0 auto auto}[dir=rtl] menu.min.left,menu.min.right,menu.top,menu.top.right{inset:0 auto auto 0}menu.max{position:fixed;top:0;right:0;bottom:0;left:0;block-size:100%;max-block-size:none;min-block-size:auto;z-index:100;transform:scale(.8);border-radius:0}menu.max>li{flex:none!important}menu.no-wrap:is(.min,.max){min-inline-size:16rem}[dir=rtl] menu.right,[dir=rtl] menu.top.min.right,menu.left,menu.top.min.left{inset:auto 0 0 auto}[dir=rtl] menu.left,[dir=rtl] menu.top.min.left,menu.right,menu.top.min{inset:auto auto 0 0}menu.top{transform:scale(.8) translateY(-120%)}menu:has(menu){--_child: 1;--_type: 0;overflow:unset;white-space:nowrap;inline-size:auto;min-inline-size:12rem;max-block-size:none}menu>li>:is(menu,menu.right),[dir=rtl] menu>li>menu.left{inset:auto auto calc(3rem * (var(--_child, 0) - var(--_type, 0))) 100%}[dir=rtl] menu>li>:is(menu,menu.right),menu>li>menu.left{inset:auto 100% calc(3rem * (var(--_child, 0) - var(--_type, 0))) auto}menu>li>:is(menu.top,menu.top.right),[dir=rtl] menu>li>menu.top.left{inset:calc(3rem * (var(--_child, 0) - var(--_type, 0))) auto auto 100%}[dir=rtl] menu>li>:is(menu.top,menu.top.right),menu>li>menu.top.left{inset:calc(3rem * (var(--_child, 0) - var(--_type, 0))) 100% auto auto}menu.group{padding:.5rem 0;inline-size:100%;min-inline-size:auto;max-block-size:none;overflow:unset;background:none;box-shadow:none}menu.group>li{box-shadow:none;padding:0;min-block-size:auto}menu.group>li:hover{background:none}menu.group>li>menu,menu.group>li>menu:hover{opacity:1;visibility:visible;position:relative;top:0;right:0;bottom:0;left:0;max-block-size:none;transform:none;transition:none;border-radius:1rem 1rem .5rem .5rem;z-index:auto;flex:1}menu.group>li:last-child>menu{border-radius:.5rem .5rem 1rem 1rem}menu>li:nth-last-child(2){--_child: 2}menu>li:nth-last-child(3){--_child: 3}menu>li:nth-last-child(4){--_child: 4}menu>li:nth-last-child(5){--_child: 5}menu>li:nth-last-child(6){--_child: 6}menu>li:nth-last-child(7){--_child: 7}menu>li:nth-last-child(8){--_child: 8}menu>li:nth-last-child(9){--_child: 9}menu>li:nth-last-child(10){--_child: 10}menu>li:nth-last-child(11){--_child: 11}menu>li:nth-last-of-type(2){--_type: 1}menu>li:nth-last-of-type(3){--_type: 2}menu>li:nth-last-of-type(4){--_type: 3}menu>li:nth-last-of-type(5){--_type: 4}menu>li:nth-last-of-type(6){--_type: 5}menu>li:nth-last-of-type(7){--_type: 6}menu>li:nth-last-of-type(8){--_type: 7}menu>li:nth-last-of-type(9){--_type: 8}menu>li:nth-last-of-type(10){--_type: 9}menu>li:nth-last-of-type(11){--_type: 10}@media(pointer:coarse){:not(menu,[data-ui]):hover>menu{opacity:1;visibility:visible;transform:scale(1) translateY(100%)}:not(menu,[data-ui]):hover>menu.top{transform:scale(1) translateY(-100%)}}nav>:is(ol,ul),nav>:is(ol,ul)>li{all:unset}nav,.row,a.row{display:flex;align-items:center;align-self:normal;text-align:start;justify-content:flex-start;white-space:nowrap;gap:1rem;border-radius:0}a.row,nav.row{min-block-size:3rem;margin:0}:is(nav,.row,.max)>:only-child,:is(nav,.row,.max)>span>*,nav>:is(ol,ul)>li>:only-child,nav>:is(ol,ul)>li>span>*{margin:0}:is(nav,.row)>:not(ul,ol,header,footer){margin:0;white-space:normal;flex:none}:is(nav,.row).min{display:inline-flex}:is(nav,.row,li).no-space{gap:0}:is(nav,.row,li).tiny-space{gap:.5rem}:is(nav,.row,li).medium-space{gap:1.5rem}:is(nav,.row,li).large-space{gap:2rem}:is(nav,.row)>.max,:is(nav,.row)>:is(ol,ul)>.max{flex:1}:is(nav,.row).wrap{display:flex;flex-wrap:wrap}:is(header,footer)>:is(nav,.row){min-block-size:inherit}nav:is(.left,.right,.top,.bottom){--_padding: .5rem;--_top: calc(var(--_padding, 0) + var(--top, 0));--_bottom: calc(var(--_padding, 0) + var(--bottom, 0));position:sticky;top:0;right:0;bottom:0;left:0;border:0;color:var(--on-surface);transform:none;z-index:100;text-align:center;padding:var(--_padding);margin:0}nav:is(.left,.right){justify-content:flex-start;flex-direction:column;background-color:var(--surface);block-size:100dvh;min-inline-size:6rem;padding-block:var(--_top) var(--_bottom)}nav:is(.top,.bottom){position:sticky;top:0;right:0;bottom:0;left:0;padding:.5rem;justify-content:center;flex-direction:row;background-color:var(--surface-container);block-size:auto;min-block-size:4.5rem}nav.top{block-size:calc(var(--top, 0) + 4.5rem);padding-block-start:var(--_top)}nav.bottom{block-size:calc(var(--bottom, 0) + 4.5rem);padding-block-end:var(--_bottom)}nav>header{min-block-size:auto;padding:0;margin:0 0 1rem;align-items:flex-start;gap:1rem;background:none!important}nav:is(.top,.bottom)>header{flex-direction:row;align-items:center;margin:0 1rem 0 0}nav>header>*{margin:0;transition:none}nav.max>header>*{transition:all var(--speed1)}nav>header>.extend:hover{--_padding: 0;inline-size:var(--_size)}nav>header>.extend:hover>span:not([class]){display:none}nav>:is(ol,ul){all:inherit;min-inline-size:auto;margin:0;padding:0;flex:auto}nav.max:is(.left,.right,.top,.bottom){gap:0;inline-size:auto;align-items:flex-start;min-inline-size:12.75rem;padding:var(--_top) 1.25rem var(--_bottom) 1.25rem}nav.max>:is(ol,ul){padding:0}nav.max>header{margin:0 0 1.25rem}nav.max:is(.top,.bottom)>header{margin:0 1.25rem 0 0}nav.max>header>.extend{--_padding: 1.5rem;inline-size:auto;padding:0 var(--_padding)}nav.max>header>.extend>span:not([class]){display:block;margin-inline-start:var(--_padding)}nav.max>header>.extend>:is(img,svg)+span{margin-inline-start:calc(1rem + var(--_padding, 0))}nav.max:is(.top,.bottom){padding:0 .5rem;align-items:center;min-inline-size:auto;max-inline-size:none}nav:is(.left,.right,.top,.bottom)>a:not(.button,.chip),nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){display:flex;flex-direction:column;gap:.25rem;line-height:normal;inline-size:3.5rem;font-size:.8rem}nav:not(.max):is(.left,.right,.top,.bottom)>a:not(.button,.chip)>i,nav:not(.max):is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip)>i{padding:.25rem 1rem;border-radius:2rem;margin:0 auto}nav.max:is(.left,.right,.top,.bottom)>a:not(.button,.chip),nav.max:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){flex-direction:row;gap:.5rem;inline-size:auto;block-size:3.5rem;padding:0 1rem;border-radius:2rem;font-size:inherit}nav:is(.left,.right,.top,.bottom)>a.active:not(.button,.chip),nav:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a.active:not(.button,.chip){transition:padding var(--speed1) linear}nav.max:is(.top,.bottom)>a:not(.button,.chip),nav.max:is(.top,.bottom)>:is(ol,ul)>li>a:not(.button,.chip){gap:.25rem;block-size:2.5rem;font-size:.8rem}nav.max:is(.left,.right,.top,.bottom)>a.active:not(.button,.chip),nav.max:is(.left,.right,.top,.bottom)>:is(ol,ul)>li>a.active:not(.button,.chip),nav:is(.left,.right,.top,.bottom):not(.max)>a.active:not(.button,.chip)>i,nav:is(.left,.right,.top,.bottom):not(.max)>:is(ol,ul)>li>a.active:not(.button,.chip)>i{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.vertical>:is(ol,ul){align-items:normal}:is(nav,.row):is(.left-align,.top-align,.vertical){justify-content:flex-start}:is(nav,.row):is(.right-align,.bottom-align){justify-content:flex-end}:is(nav,.row):is(.center-align,.middle-align){justify-content:center}:is(nav,.row):is(.left-align,.top-align,.vertical).vertical{align-items:flex-start}:is(nav,.row):is(.right-align,.bottom-align).vertical{align-items:flex-end}:is(nav,.row):is(.center-align,.middle-align).vertical{align-items:center}nav:not(.left,.right)>.space{inline-size:.5rem}nav:not(.left,.right)>.medium-space{inline-size:1rem}nav:not(.left,.right)>.large-space{inline-size:1.5rem}nav.tabbed{background-color:var(--surface-container);border-radius:4rem!important;gap:0rem;block-size:4rem}nav.tabbed.small{block-size:3rem}nav.tabbed.large{block-size:5rem}nav.tabbed>a{border-radius:inherit;block-size:inherit;display:inline-flex;align-items:center;padding-inline:1rem;gap:.5rem;font-size:1rem;flex:1}nav.tabbed>a.active{background-color:var(--primary-container)}nav.toolbar{display:inline-flex;justify-content:space-around;border-radius:2rem;background-color:var(--surface-container);color:var(--on-surface);padding:0 1rem;gap:.5rem;min-block-size:4rem;min-inline-size:4rem}nav.toolbar>a{display:inline-flex;gap:.5rem;min-inline-size:2.5rem;min-block-size:2.5rem;border-radius:1.75rem}nav.toolbar>a:has(>:not(i)){padding:0 1rem}nav.toolbar>a.active{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.toolbar.fill{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}nav.toolbar.fill>a.active{background-color:var(--surface-container)!important;color:var(--on-surface)!important}nav.toolbar.vertical{flex-direction:column!important;min-inline-size:4rem;padding:1rem 0;align-self:center;align-items:center!important}nav.toolbar.vertical>a{inline-size:2.5rem;block-size:2.5rem}nav.toolbar.vertical>a>:is(div,span):not(.badge,.tooltip){display:none}nav.toolbar.max{border-radius:0;display:flex}nav.group{background:none!important}nav.group:is(.connected,.split){gap:.125rem}nav.group:not(.split)>:is(.button,button):not(.border){background-color:var(--surface-container);color:var(--on-surface-container)}nav.group:not(.split)>:is(.button,button).active{background-color:var(--primary);color:var(--on-primary)}nav.group.connected>:is(.button,button):not(.border){background-color:var(--surface-container);color:var(--on-surface-container)}nav.group.connected>:is(.button,button).active{background-color:var(--secondary-container);color:var(--on-secondary-container)}nav.group:is(.connected,.split)>:is(.button,button).active,nav.split>:is(.button,button):active{border-radius:2rem!important}:not(nav)>:is(ul,ol){all:revert}:is(.scroll,.no-scroll,.no-space,.tabs,.tabbed)>:focus-visible{outline:.125rem solid var(--primary);outline-offset:-.125rem}nav.split>:is(.button,button):not(.chip,.fill,.border){background-color:var(--primary);color:var(--on-primary)}@media only screen and (max-width:600px){nav.top,nav.bottom{justify-content:space-around}}.overlay,dialog::backdrop{display:block!important;opacity:0;visibility:hidden;position:fixed;top:0;right:0;bottom:0;left:0;color:var(--on-surface);background-color:var(--overlay);z-index:100;transition:all var(--speed3),0s background-color;border-radius:0}.overlay.active{opacity:1;visibility:visible}dialog:popover-open::backdrop{opacity:1;visibility:visible}.overlay+dialog::backdrop,.snackbar::backdrop{display:none}[popover]{border:0}.page{--_transform: translate(0, 0);opacity:0;position:absolute;display:none}.page.active{opacity:1;position:relative;display:block;animation:var(--speed4) to-page ease}.page.active.top{--_transform: translate(0, -4rem)}.page.active.bottom{--_transform: translate(0, 4rem)}.page.active.left{--_transform: translate(-4rem, 0)}.page.active.right{--_transform: translate(4rem, 0)}progress{--_size: .25rem;position:relative;inline-size:100%;block-size:var(--_size);color:var(--primary);background:var(--image);border-radius:1rem;flex:none;border:none;overflow:hidden;writing-mode:horizontal-tb;direction:ltr;-webkit-appearance:none;-moz-appearance:none;appearance:none}progress.small{--_size: .25rem}progress.medium{--_size: .35rem}progress.large{--_size: .45rem}progress.indeterminate{--_value: 100;animation:3.2s to-indeterminate-progress ease infinite}progress:not(.circle,[value]):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;clip-path:none;background:currentcolor;animation:3.2s to-linear-progress ease infinite}progress:not(.circle,[value])::-moz-progress-bar{animation:3.2s to-linear-progress ease infinite}progress:not(.circle,[value])::-webkit-progress-value{animation:3.2s to-linear-progress ease infinite}progress::-webkit-progress-bar{background:none}progress::-webkit-progress-value{background:currentColor}progress::-moz-progress-bar{background:currentColor}progress.wavy{block-size:calc(var(--_size, 0) * 2);background:none;background-image:var(--image);background-repeat:repeat-x;background-position:0 50%;background-size:auto calc(var(--_size, 0) / 2)}progress.wavy::-webkit-progress-value,progress.wavy:not(.circle,[value]):after{-webkit-mask-image:url(wavy.svg);mask-image:url(wavy.svg);-webkit-mask-position:0 50%;mask-position:0 50%;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-size:auto 100%;mask-size:auto 100%}progress.wavy::-moz-progress-bar{-webkit-mask-image:url(wavy.svg);mask-image:url(wavy.svg);-webkit-mask-position:0 50%;mask-position:0 50%;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-size:auto 100%;mask-size:auto 100%}progress.circle{--_value: attr(value type(<number>), 50);inline-size:2.5rem;block-size:2.5rem;background:conic-gradient(currentColor calc(var(--_value, 0) * 1%),var(--active) 0%);border-radius:50%;-webkit-mask-image:radial-gradient(circle at center,transparent 57%,currentColor 60%);mask-image:radial-gradient(circle at center,transparent 57%,currentColor 60%)}progress.circle::-webkit-progress-value{background:none}progress.circle::-moz-progress-bar{background:none}progress.circle.wavy{background:conic-gradient(currentColor calc(var(--_value, 0) * 1%),var(--active) 0);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(wavy-circle.svg);mask-image:url(wavy-circle.svg)}progress.circle.small{inline-size:1.5rem;block-size:1.5rem}progress.circle.large{inline-size:3.5rem;block-size:3.5rem}progress.circle:not([value]),progress.circle.indeterminate{--_value: 50;animation:to-rotate 1s infinite linear}:is(nav,.row,.field)>progress:not(.circle,.small,.medium,.large){flex:auto}progress.max{display:unset;position:absolute;inline-size:100%!important;block-size:100%!important;color:currentColor;background:none;top:0;right:0;bottom:0;left:0;border-radius:inherit;animation:none;writing-mode:horizontal-tb;opacity:.33}progress.max[class*=-text]{opacity:1}progress.max+*{margin-block-start:0}:is(.button,button,.chip)>progress.circle{color:inherit}.shape{display:flex;align-items:center;justify-content:center;color:var(--on-primary);background-color:var(--primary);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;border-radius:0;block-size:3.5rem;inline-size:3.5rem;margin:0!important;padding:0!important;border:0!important}.transparent>.shape>i{filter:invert(1)}.shape.tiny-space{-webkit-mask-size:90%;mask-size:90%}.shape.space,.shape.small-space{-webkit-mask-size:80%;mask-size:80%}.shape.medium-space{-webkit-mask-size:70%;mask-size:70%}.shape.large-space{-webkit-mask-size:60%;mask-size:60%}.shape.extra-space{-webkit-mask-size:50%;mask-size:50%}.shape.tiny{block-size:2.5rem;inline-size:2.5rem}.shape.medium{block-size:4.5rem;inline-size:4.5rem}.shape.large{block-size:5.5rem;inline-size:5.5rem}.shape.extra{block-size:6.5rem;inline-size:6.5rem}.shape.max,.shape>.responsive,.shape>.responsive>.responsive{position:absolute;top:0;right:0;bottom:0;left:0;block-size:100%;inline-size:100%;margin:0!important;padding:0!important;border:0!important}.shape>.responsive{background:inherit;color:inherit}.shape.rotate{animation:linear to-rotate infinite 12s}.shape.rotate>*{animation:linear to-rotate infinite 12s reverse}.shape.fast-rotate{animation:linear to-rotate infinite 6s}.shape.fast-rotate>*{animation:linear to-rotate infinite 6s reverse}.shape.slow-rotate{animation:linear to-rotate infinite 24s}.shape.slow-rotate>*{animation:linear to-rotate infinite 24s reverse}:is(button,.button,.chip):has(>.shape)>.responsive{border:none}.shape.arch{-webkit-mask-image:url(arch.svg);mask-image:url(arch.svg)}.shape.arrow{-webkit-mask-image:url(arrow.svg);mask-image:url(arrow.svg)}.shape.boom{-webkit-mask-image:url(boom.svg);mask-image:url(boom.svg)}.shape.bun{-webkit-mask-image:url(bun.svg);mask-image:url(bun.svg)}.shape.burst{-webkit-mask-image:url(burst.svg);mask-image:url(burst.svg)}.shape.circle{-webkit-mask-image:url(circle.svg);mask-image:url(circle.svg)}.shape.clamshell{-webkit-mask-image:url(clamshell.svg);mask-image:url(clamshell.svg)}.shape.diamond{-webkit-mask-image:url(diamond.svg);mask-image:url(diamond.svg)}.shape.fan{-webkit-mask-image:url(fan.svg);mask-image:url(fan.svg)}.shape.flower{-webkit-mask-image:url(flower.svg);mask-image:url(flower.svg)}.shape.gem{-webkit-mask-image:url(gem.svg);mask-image:url(gem.svg)}.shape.ghost-ish{-webkit-mask-image:url(ghost-ish.svg);mask-image:url(ghost-ish.svg)}.shape.heart{-webkit-mask-image:url(heart.svg);mask-image:url(heart.svg)}.shape.leaf-clover4{-webkit-mask-image:url(leaf-clover4.svg);mask-image:url(leaf-clover4.svg)}.shape.leaft-clover8{-webkit-mask-image:url(leaf-clover8.svg);mask-image:url(leaf-clover8.svg)}.shape.loading-indicator{-webkit-mask-image:url(loading-indicator.svg);mask-image:url(loading-indicator.svg)}.shape.oval{-webkit-mask-image:url(oval.svg);mask-image:url(oval.svg)}.shape.pentagon{-webkit-mask-image:url(pentagon.svg);mask-image:url(pentagon.svg)}.shape.pill{-webkit-mask-image:url(pill.svg);mask-image:url(pill.svg)}.shape.pixel-circle{-webkit-mask-image:url(pixel-circle.svg);mask-image:url(pixel-circle.svg)}.shape.pixel-triangle{-webkit-mask-image:url(pixel-triangle.svg);mask-image:url(pixel-triangle.svg)}.shape.puffy{-webkit-mask-image:url(puffy.svg);mask-image:url(puffy.svg)}.shape.puffy-diamond{-webkit-mask-image:url(puffy-diamond.svg);mask-image:url(puffy-diamond.svg)}.shape.semicircle{-webkit-mask-image:url(semicircle.svg);mask-image:url(semicircle.svg)}.shape.sided-cookie4{-webkit-mask-image:url(sided-cookie4.svg);mask-image:url(sided-cookie4.svg)}.shape.sided-cookie6{-webkit-mask-image:url(sided-cookie6.svg);mask-image:url(sided-cookie6.svg)}.shape.sided-cookie7{-webkit-mask-image:url(sided-cookie7.svg);mask-image:url(sided-cookie7.svg)}.shape.sided-cookie9{-webkit-mask-image:url(sided-cookie9.svg);mask-image:url(sided-cookie9.svg)}.shape.sided-cookie12{-webkit-mask-image:url(sided-cookie12.svg);mask-image:url(sided-cookie12.svg)}.shape.slanted{-webkit-mask-image:url(slanted.svg);mask-image:url(slanted.svg)}.shape.soft-boom{-webkit-mask-image:url(soft-boom.svg);mask-image:url(soft-boom.svg)}.shape.soft-burst{-webkit-mask-image:url(soft-burst.svg);mask-image:url(soft-burst.svg)}.shape.square{-webkit-mask-image:url(square.svg);mask-image:url(square.svg)}.shape.sunny{-webkit-mask-image:url(sunny.svg);mask-image:url(sunny.svg)}.shape.triangle{-webkit-mask-image:url(triangle.svg);mask-image:url(triangle.svg)}.shape.very-sunny{-webkit-mask-image:url(very-sunny.svg);mask-image:url(very-sunny.svg)}.checkbox,.radio,.switch{--_size: 1.5rem;inline-size:auto;block-size:auto;line-height:normal;white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center}.switch{direction:ltr}:is(.checkbox,.radio,.switch).small{--_size: 1rem}:is(.checkbox,.radio,.switch).large{--_size: 2rem}:is(.checkbox,.radio,.switch).extra{--_size: 2.5rem}:is(.checkbox,.radio)>input{inline-size:var(--_size);block-size:var(--_size);opacity:0}.switch>input{inline-size:3.25rem;block-size:2rem;opacity:0}:is(.checkbox,.radio,.switch)>span{display:inline-flex;align-items:center;color:var(--on-surface);font-size:.875rem}:is(.checkbox,.radio)>span:not(:empty){padding-inline-start:.25rem}:is(.checkbox,.radio,.switch)>span:before,:is(.checkbox,.radio,.switch)>span>i,:is(.checkbox,.radio)>span:after{--_size: inherit;content:"";inline-size:var(--_size);block-size:var(--_size);box-sizing:border-box;margin:0 auto;outline:none;color:var(--primary);position:absolute;inset:auto auto auto calc(var(--_size, 0) * -1);border-radius:50%;-webkit-user-select:none;user-select:none;z-index:1}[dir=rtl] :is(.checkbox,.radio)>span:before,[dir=rtl] :is(.checkbox,.radio)>span>i,[dir=rtl] :is(.checkbox,.radio)>span:after{--_size: inherit;inset:auto calc(var(--_size, 0) * -1) auto auto}.switch>span:before,.switch.icon>span>i{position:absolute;inset:50% auto auto 0;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;transition:all var(--speed2);font-size:calc(var(--_size, 0) - .5rem);-webkit-user-select:none;user-select:none;min-inline-size:var(--_size);min-block-size:var(--_size);content:"";color:var(--surface-variant);background-color:var(--outline)}.switch>span:before,.switch.icon>span>i{transform:translate(-3rem,-50%) scale(.6)}.switch.icon>span>i{transform:translate(-3rem,-50%) scale(1)}.checkbox>span:before{content:"check_box_outline_blank"}.checkbox>input:checked+span:before{content:"check_box";font-variation-settings:"FILL" 1}.checkbox>input:indeterminate+span:before{content:"indeterminate_check_box"}.radio>span:before{content:"radio_button_unchecked"}.radio>input:checked+span:before{content:"radio_button_checked"}:is(.radio,.checkbox,.switch).icon>span:before{content:""!important;font-variation-settings:unset!important}:is(.checkbox,.radio)>span:after{transition:all var(--speed1);background-color:currentColor;box-shadow:0 0 0 0 currentColor;opacity:0}:is(.checkbox,.radio):is(:hover)>input:not(:disabled)+span:after,:is(.checkbox,.radio)>input:not(:disabled):is(:focus)+span:after{box-shadow:0 0 0 .5rem currentColor;opacity:.1}.switch>input:not(:disabled):is(:focus,:hover)+span:before,.switch.icon>input:not(:disabled):is(:focus,:hover)+span>i{box-shadow:0 0 0 .5rem var(--active)}:is(.checkbox,.radio)>input:checked+span:before,:is(.checkbox,.radio).icon>input:checked+span>i{color:var(--primary)}.icon>input:checked+span>i:first-child,.icon>span>i:last-child{opacity:0}.icon>input:checked+span>i:last-child,.icon>span>i:first-child{opacity:1}.switch>input:checked+span:after{border:none;background-color:var(--primary)}.switch>input:checked+span:before,.switch.icon>input:checked+span>i{content:"check";color:var(--primary);background-color:var(--on-primary);transform:translate(-1.75rem,-50%) scale(1)}.switch>input:active:not(:disabled)+span:before,.switch.icon>input:active:not(:disabled)+span>i{transform:translate(-3rem,-50%) scale(1.2)}[dir=rtl] .switch>input:active:not(:disabled)+span:before,[dir=rtl] .switch.icon>input:active:not(:disabled)+span>i{transform:translate(-3rem,-50%) scale(-1.2)}.switch>input:active:checked:not(:disabled)+span:before,.switch.icon>input:active:checked:not(:disabled)+span>i{transform:translate(-1.75rem,-50%) scale(1.2)}[dir=rtl] .switch>input:active:checked:not(:disabled)+span:before,[dir=rtl] .switch.icon>input:active:checked:not(:disabled)+span>i{transform:translate(-1.75rem,-50%) scale(-1.2)}:is(.checkbox,.radio,.switch)>input:disabled+span{opacity:.5;cursor:not-allowed}.switch>span:after{content:"";position:absolute;inset:50% auto auto 0;background-color:var(--active);border:.125rem solid var(--outline);box-sizing:border-box;inline-size:3.25rem;block-size:2rem;border-radius:2rem;transform:translate(-3.25rem,-50%)}.field>:is(nav,.row){flex-grow:1;padding:0 1rem}.field.round>:is(nav,.row){flex-grow:1;padding:0 1.5rem}[dir=rtl] .switch{transform:scale(-1)}[dir=rtl] .switch>span:before,[dir=rtl] .switch.icon>span>i{transform:translate(-3rem,-50%) scale(-.6)}[dir=rtl] .switch.icon>span>i{transform:translate(-3rem,-50%) scale(-1)}[dir=rtl] .switch>input:checked+span:before,[dir=rtl] .switch.icon>input:checked+span>i{transform:translate(-1.75rem,-50%) scale(-1)}.switch>:focus-visible+span:after{outline:.125rem solid var(--primary);outline-offset:.25rem}:is(.checkbox,.radio)>:focus-visible+span:before{outline:.125rem solid var(--primary);outline-offset:.375rem}.slider{--_start: 0%;--_end: 0%;--_value1: "";--_value2: "";--_track: 1rem;--_thumb: max(2.5rem, calc(var(--_track, 0) + .5rem));display:flex;align-items:center!important;inline-size:auto;block-size:var(--_thumb);flex:none;direction:ltr;margin:0 1.25rem;color:var(--primary)}[dir=rtl] .slider{transform:scaleX(-1)}.slider.vertical{flex-direction:row!important;margin:.5rem auto!important;padding:50% 0;transform:rotate(-90deg);inline-size:100%}.slider.tiny{--_track: 1rem}.slider.small{--_track: 1.5rem}.slider.medium{--_track: 2.5rem}.slider.large{--_track: 3.5rem}.slider.extra{--_track: 6rem}.slider>input{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:none;inline-size:100%;block-size:var(--_track);background:none;z-index:1;padding:0;margin:0;transform:rotate(0);touch-action:none}.slider>input:only-of-type{pointer-events:all}.slider>input~input{position:absolute}.slider>input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:all;block-size:var(--_thumb);inline-size:.25rem;border-radius:.25rem;background:currentColor;cursor:grab;margin:0;z-index:1}.slider>input::-webkit-slider-thumb:active{cursor:grabbing}.slider>input::-moz-range-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;border:none;outline:none;pointer-events:all;block-size:2.75rem;inline-size:.25rem;border-radius:.25rem;background:var(--primary);cursor:grab;margin:0}.slider>input::-moz-range-thumb:active{cursor:grabbing}.slider>input:not(:disabled):is(:focus)::-webkit-slider-thumb{transform:scaleX(.6)}.slider>input:not(:disabled):is(:focus)::-moz-range-thumb{transform:scaleX(.6)}.slider>input:disabled{cursor:not-allowed;opacity:1}.slider>input:disabled::-webkit-slider-thumb{background:var(--outline);cursor:not-allowed}.slider>input:disabled::-moz-range-thumb{background:var(--outline);cursor:not-allowed}.slider>input:disabled~span:not([class]){background:var(--outline)}.slider>span:not([class]){position:absolute;block-size:var(--_track);border-radius:1rem 0 0 1rem;background:currentColor;color:currentColor;z-index:0;inset:calc(50% - (var(--_track, 0) / 2)) calc(var(--_end) + .5rem) auto var(--_start)}.slider>input[type=range]+input[type=range]~span:not([class]){border-radius:0;inset:calc(50% - (var(--_track, 0) / 2)) calc(var(--_end) + .5rem) auto calc(var(--_start) + .5rem)}.field>.slider{inline-size:100%}.slider:before{content:"";position:absolute;inline-size:100%;block-size:var(--_track);border-radius:1rem;background:var(--active);clip-path:polygon(calc(var(--_start, 0) - .5rem) 0,0 0,0 100%,calc(var(--_start, 0) - .5rem) 100%,calc(var(--_start, 0) - .5rem) 0,calc(100% - var(--_end, 0) + .5rem) 0,100% 0,100% 100%,calc(100% - var(--_end, 0) + .5rem) 100%,calc(100% - var(--_end, 0) + .5rem) 0)}.slider:has(>[disabled]):before{background:var(--active)}.slider:has([disabled]){opacity:.62}.slider>span>i{position:absolute;block-size:auto;inset:0 auto 0 .5rem;color:var(--inverse-primary);z-index:1}.slider:not(.medium,.large,.extra)>span>i{display:none}.slider.vertical>i{transform:rotate(90deg)}.slider>.tooltip{visibility:hidden!important;opacity:0!important;inset:0 auto auto calc(100% - var(--_end, 0));border-radius:2rem;transition:top var(--speed2) ease,opacity var(--speed2) ease;transform:translate(-50%,-25%)!important;padding:.75rem 1rem}.slider>.tooltip.bottom{inset:auto auto 0 calc(100% - var(--_end, 0));transition:bottom var(--speed2) ease,opacity var(--speed2) ease;transform:translate(-50%,25%)!important}[dir=rtl] .slider>.tooltip{transform:translate(-50%,-25%) scaleX(-1)!important}[dir=rtl] .slider>.tooltip.bottom{transform:translate(-50%,25%) scaleX(-1)!important}.slider>.tooltip+.tooltip{inset:.25rem calc(100% - var(--_start, 0)) auto auto;transform:translate(50%,-25%)!important}.slider>.tooltip+.tooltip.bottom{inset:auto calc(100% - var(--_start, 0)) -.25rem auto;transform:translate(50%,25%)!important}[dir=rtl] .slider>.tooltip+.tooltip{transform:translate(50%,-25%) scaleX(-1)!important}[dir=rtl] .slider>.tooltip+.tooltip.bottom{transform:translate(50%,25%) scaleX(-1)!important}.slider>.tooltip:before{content:var(--_value1)}.slider>.tooltip+.tooltip:before{content:var(--_value2)}.slider>:focus~.tooltip{inset-block:-1rem auto;opacity:1!important;visibility:visible!important}.slider>:focus~.tooltip.bottom{inset-block:auto -1rem}.slider.vertical>.tooltip{inset-block:auto;block-size:2.5rem;inline-size:2.5rem;margin-block:calc(-1 * var(--_thumb, 0)) 0!important;transform:rotate(90deg) translate(-75%,50%)!important}.slider.vertical>.tooltip.bottom{inset-block:auto;margin-block:0 calc(-1 * var(--_thumb, 0))!important;transform:rotate(90deg) translate(75%,50%)!important}.slider.vertical>.tooltip+.tooltip{transform:rotate(90deg) translate(-75%,-50%)!important}.slider.vertical>.tooltip+.tooltip.bottom{transform:rotate(90deg) translate(75%,-50%)!important}:is(nav,.row,.field)>.slider:not(.circle,.small,.medium,.large){flex:auto}.slider.max,.slider.max.vertical,.slider.max>input,.slider.max.vertical>input{all:unset;margin:0!important;position:absolute;color:var(--primary);top:0;right:0;bottom:0;left:0;border-radius:inherit;overflow:hidden;z-index:2;cursor:grab;inline-size:100%;block-size:100%}.slider.max:before{display:none}.slider.max.vertical>input{writing-mode:vertical-lr;transform:rotate(-180deg)}.slider.max>input::-webkit-slider-thumb{opacity:0;inline-size:1rem;block-size:100vh;transform:none!important}.slider.max>input::-moz-range-thumb{opacity:0;inline-size:1rem;block-size:100vh;transform:none!important}.slider.max>span:not([class]){block-size:auto!important;inset:0 var(--_end) 0 var(--_start);background:currentcolor;color:inherit;border-radius:0}.slider.max.vertical>span:not([class]){inset:var(--_end) 0 var(--_start) 0}.slider>input:focus-visible::-webkit-slider-thumb{outline:.1875rem solid var(--primary);outline-offset:.25rem}.slider>input:focus-visible::-moz-range-thumb{outline:.1875rem solid var(--primary);outline-offset:.25rem}.slider.max>input:focus-visible{outline:.1875rem solid var(--primary);outline-offset:-.125rem}@media(pointer:coarse){.slider>:hover~.tooltip{inset-block:-1rem auto!important;opacity:1!important;visibility:visible!important}.slider>:hover~.tooltip.bottom{inset-block:auto -1rem!important}}.snackbar{position:fixed;inset:auto auto 6rem 50%;inline-size:80%;block-size:auto;z-index:200;visibility:hidden;display:flex;box-shadow:var(--elevate2);color:var(--inverse-on-surface);background-color:var(--inverse-surface);padding:1rem;cursor:pointer;text-align:start;align-items:center;border-radius:.25rem;gap:.5rem;transition:all var(--speed2);transform:translate(-50%,1rem);opacity:0}.snackbar.top{inset:6rem auto auto 50%}.snackbar:is(.active){visibility:visible;transform:translate(-50%);opacity:1}.snackbar:popover-open{visibility:visible;transform:translate(-50%);opacity:1}.snackbar>.max{flex:auto}@media only screen and (min-width:993px){.snackbar{inline-size:40%}}table{inline-size:100%;border-spacing:0;font-size:.875rem;text-align:start}.scroll>table,table :is(thead,tbody,tfoot,tr,th,td){background-color:inherit;color:inherit}:is(th,td){inline-size:auto;text-align:inherit;padding:.5rem;border-radius:0}:is(th,td)>*{vertical-align:middle}table.border>tbody>tr:not(:last-child)>td,thead>tr>th{border-block-end:.0625rem solid var(--outline)}tfoot>tr>th{border-block-start:.0625rem solid var(--outline)}table.stripes>tbody>tr:nth-child(odd){background-color:var(--active)}table.no-space :is(th,td){padding:0}table.medium-space :is(th,td){padding:.75rem}table.large-space :is(th,td){padding:1rem}table>.fixed,th.fixed{position:sticky;z-index:1;inset-block-start:0}tfoot.fixed,tfoot th.fixed{inset-block-end:0}:is(td,th).min{inline-size:.1%;white-space:nowrap}.tabs{display:flex;white-space:nowrap;border-block-end:.0625rem solid var(--surface-variant);border-radius:0}.tabs:not(.left-align,.right-align,.center-align){justify-content:space-around}.tabs>a{display:flex;font-size:.875rem;font-weight:500;color:var(--on-surface-variant);padding:.5rem 1rem;text-align:center;min-block-size:3rem;inline-size:100%;gap:.25rem}.tabs.small>a{min-block-size:2rem}.tabs.large>a{min-block-size:4rem}.tabs>a.active,.tabs>a.active>i{color:var(--primary)}.tabs>a.active:before{content:"";position:absolute;inset:auto 0 0 0;block-size:.125rem;background-color:var(--primary)}.tabs.min>a.active:before{margin:0 auto;max-inline-size:min(100%,4rem)}.tabs:is(.left-align,.center-align,.right-align)>a{inline-size:auto}.tooltip{--_space: -.5rem;visibility:hidden;display:flex;align-items:center;justify-content:center;gap:.5rem;background-color:var(--inverse-surface);color:var(--inverse-on-surface);font-size:.75rem;text-align:center;border-radius:.25rem;padding:.5rem;position:absolute;z-index:200;inset:0 auto auto 50%;inline-size:auto;white-space:nowrap;font-weight:500;opacity:0;transition:all var(--speed2);line-height:normal;transform:translate(-50%,-100%) scale(.9)}.tooltip:not(.max):hover{visibility:hidden;opacity:0}.tooltip.left{inset:50% auto auto 0;transform:translate(-100%,-50%) scale(.9)}.tooltip.right{inset:50% 0 auto auto;transform:translate(100%,-50%) scale(.9)}.tooltip.bottom{inset:auto auto 0 50%;transform:translate(-50%,100%) scale(.9)}.tooltip.small{inline-size:8rem;white-space:normal}.tooltip.medium{inline-size:12rem;white-space:normal}.tooltip.large{inline-size:16rem;white-space:normal}:hover>.tooltip{visibility:visible;opacity:1;transform:translate(-50%,-100%) scale(1)}:hover>.tooltip.left{transform:translate(-100%,-50%) scale(1)}:hover>.tooltip.right{transform:translate(100%,-50%) scale(1)}:hover>.tooltip.bottom{transform:translate(-50%,100%) scale(1)}.tooltip.no-space{--_space: 0}.tooltip.medium-space{--_space: -1rem}.tooltip.large-space{--_space: -1.5rem}.tooltip:not(.left,.right,.bottom){margin-block-start:var(--_space)!important}.tooltip.left,.tooltip.right{margin-inline:var(--_space)!important}.tooltip.bottom{margin-block-end:var(--_space)!important}menu:active~.tooltip,:is(button,.button):focus>menu~.tooltip,.field>:focus~menu~.tooltip{visibility:hidden}.slider>.tooltip{--_space: -1.25rem}.slider.vertical>.tooltip{--_space: -.75rem}.slider.vertical>.tooltip:is(.left,.right){--_space: -.5rem}.tooltip.max{display:block;font-size:inherit;white-space:normal;text-align:start;inline-size:20rem;border-radius:.5rem;padding:1rem;box-shadow:var(--elevate2)}.transparent{background-color:transparent!important;box-shadow:none!important;color:inherit!important}.primary{background-color:var(--primary)!important;color:var(--on-primary)!important}.primary-text{color:var(--primary)!important}.primary-border{border-color:var(--primary)!important}.primary-container{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}.secondary{background-color:var(--secondary)!important;color:var(--on-secondary)!important}.secondary-text{color:var(--secondary)!important}.secondary-border{border-color:var(--secondary)!important}.secondary-container{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}.tertiary{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}.tertiary-text{color:var(--tertiary)!important}.tertiary-border{border-color:var(--tertiary)!important}.tertiary-container{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}.error{background-color:var(--error)!important;color:var(--on-error)!important}.error-text{color:var(--error)!important}.error-border{border-color:var(--error)!important}.error-container{background-color:var(--error-container)!important;color:var(--on-error-container)!important}.background{background-color:var(--background)!important;color:var(--on-background)!important}.surface,.surface-dim,.surface-bright,.surface-container-lowest,.surface-container-low,.surface-container,.surface-container-high,.surface-container-highest{background-color:var(--surface)!important;color:var(--on-surface)!important}.surface-variant{background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}.inverse-surface{background-color:var(--inverse-surface);color:var(--inverse-on-surface)}.inverse-primary{background-color:var(--inverse-primary);color:var(--primary)}.inverse-primary-text{color:var(--inverse-primary)!important}.inverse-primary-border{border-color:var(--inverse-primary)!important}.surface-dim{background-color:var(--surface-dim)!important}.surface-bright{background-color:var(--surface-bright)!important}.surface-container-lowest{background-color:var(--surface-container-lowest)!important}.surface-container{background-color:var(--surface-container)!important}.surface-container-high{background-color:var(--surface-container-high)!important}.surface-container-highest{background-color:var(--surface-container-highest)!important}.surface-container-low{background-color:var(--surface-container-low)!important}.black{background-color:#000!important}.black-border{border-color:#000!important}.black-text{color:#000!important}.white{background-color:#fff!important}.white-border{border-color:#fff!important}.white-text{color:#fff!important}.transparent-border{border-color:transparent!important}.transparent-text{color:transparent!important}.fill:not(i){background-color:var(--surface-variant)!important;color:var(--on-surface-variant)!important}nav.primary-container>button,:is(nav,menu).primary>:is(button,a,li).active{background-color:var(--primary-container)!important;color:var(--on-primary-container)!important}nav.primary>button,:is(nav,menu).primary-container>:is(button,a,li).active{background-color:var(--primary)!important;color:var(--on-primary)!important}nav.secondary-container>button,:is(nav,menu).secondary>:is(button,a,li).active{background-color:var(--secondary-container)!important;color:var(--on-secondary-container)!important}nav.secondary>button,:is(nav,menu).secondary-container>:is(button,a,li).active{background-color:var(--secondary)!important;color:var(--on-secondary)!important}nav.tertiary-container>button,:is(nav,menu).tertiary>:is(button,a,li).active{background-color:var(--tertiary-container)!important;color:var(--on-tertiary-container)!important}nav.tertiary>button,:is(nav,menu).tertiary-container>:is(button,a,li).active{background-color:var(--tertiary)!important;color:var(--on-tertiary)!important}.red,.red6{background-color:#f44336!important}.red-border{border-color:#f44336!important}.red-text{color:#f44336!important}.red1{background-color:#ffebee!important}.red2{background-color:#ffcdd2!important}.red3{background-color:#ef9a9a!important}.red4{background-color:#e57373!important}.red5{background-color:#ef5350!important}.red7{background-color:#e53935!important}.red8{background-color:#d32f2f!important}.red9{background-color:#c62828!important}.red10{background-color:#b71c1c!important}.pink,.pink6{background-color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-text{color:#e91e63!important}.pink1{background-color:#fce4ec!important}.pink2{background-color:#f8bbd0!important}.pink3{background-color:#f48fb1!important}.pink4{background-color:#f06292!important}.pink5{background-color:#ec407a!important}.pink7{background-color:#d81b60!important}.pink8{background-color:#c2185b!important}.pink9{background-color:#ad1457!important}.pink10{background-color:#880e4f!important}.purple,.purple6{background-color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-text{color:#9c27b0!important}.purple1{background-color:#f3e5f5!important}.purple2{background-color:#e1bee7!important}.purple3{background-color:#ce93d8!important}.purple4{background-color:#ba68c8!important}.purple5{background-color:#ab47bc!important}.purple7{background-color:#8e24aa!important}.purple8{background-color:#7b1fa2!important}.purple9{background-color:#6a1b9a!important}.purple10{background-color:#4a148c!important}.deep-purple,.deep-purple6{background-color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-text{color:#673ab7!important}.deep-purple1{background-color:#ede7f6!important}.deep-purple2{background-color:#d1c4e9!important}.deep-purple3{background-color:#b39ddb!important}.deep-purple4{background-color:#9575cd!important}.deep-purple5{background-color:#7e57c2!important}.deep-purple7{background-color:#5e35b1!important}.deep-purple8{background-color:#512da8!important}.deep-purple9{background-color:#4527a0!important}.deep-purple10{background-color:#311b92!important}.indigo,.indigo6{background-color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-text{color:#3f51b5!important}.indigo1{background-color:#e8eaf6!important}.indigo2{background-color:#c5cae9!important}.indigo3{background-color:#9fa8da!important}.indigo4{background-color:#7986cb!important}.indigo5{background-color:#5c6bc0!important}.indigo7{background-color:#3949ab!important}.indigo8{background-color:#303f9f!important}.indigo9{background-color:#283593!important}.indigo10{background-color:#1a237e!important}.blue,.blue6{background-color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-text{color:#2196f3!important}.blue1{background-color:#e3f2fd!important}.blue2{background-color:#bbdefb!important}.blue3{background-color:#90caf9!important}.blue4{background-color:#64b5f6!important}.blue5{background-color:#42a5f5!important}.blue7{background-color:#1e88e5!important}.blue8{background-color:#1976d2!important}.blue9{background-color:#1565c0!important}.blue10{background-color:#0d47a1!important}.light-blue,.light-blue6{background-color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-text{color:#03a9f4!important}.light-blue1{background-color:#e1f5fe!important}.light-blue2{background-color:#b3e5fc!important}.light-blue3{background-color:#81d4fa!important}.light-blue4{background-color:#4fc3f7!important}.light-blue5{background-color:#29b6f6!important}.light-blue7{background-color:#039be5!important}.light-blue8{background-color:#0288d1!important}.light-blue9{background-color:#0277bd!important}.light-blue10{background-color:#01579b!important}.cyan,.cyan6{background-color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-text{color:#00bcd4!important}.cyan1{background-color:#e0f7fa!important}.cyan2{background-color:#b2ebf2!important}.cyan3{background-color:#80deea!important}.cyan4{background-color:#4dd0e1!important}.cyan5{background-color:#26c6da!important}.cyan7{background-color:#00acc1!important}.cyan8{background-color:#0097a7!important}.cyan9{background-color:#00838f!important}.cyan10{background-color:#006064!important}.teal,.teal6{background-color:#009688!important}.teal-border{border-color:#009688!important}.teal-text{color:#009688!important}.teal1{background-color:#e0f2f1!important}.teal2{background-color:#b2dfdb!important}.teal3{background-color:#80cbc4!important}.teal4{background-color:#4db6ac!important}.teal5{background-color:#26a69a!important}.teal7{background-color:#00897b!important}.teal8{background-color:#00796b!important}.teal9{background-color:#00695c!important}.teal10{background-color:#004d40!important}.green,.green6{background-color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-text{color:#4caf50!important}.green1{background-color:#e8f5e9!important}.green2{background-color:#c8e6c9!important}.green3{background-color:#a5d6a7!important}.green4{background-color:#81c784!important}.green5{background-color:#66bb6a!important}.green7{background-color:#43a047!important}.green8{background-color:#388e3c!important}.green9{background-color:#2e7d32!important}.green10{background-color:#1b5e20!important}.light-green,.light-green6{background-color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-text{color:#8bc34a!important}.light-green1{background-color:#f1f8e9!important}.light-green2{background-color:#dcedc8!important}.light-green3{background-color:#c5e1a5!important}.light-green4{background-color:#aed581!important}.light-green5{background-color:#9ccc65!important}.light-green7{background-color:#7cb342!important}.light-green8{background-color:#689f38!important}.light-green9{background-color:#558b2f!important}.light-green10{background-color:#33691e!important}.lime,.lime6{background-color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-text{color:#cddc39!important}.lime1{background-color:#f9fbe7!important}.lime2{background-color:#f0f4c3!important}.lime3{background-color:#e6ee9c!important}.lime4{background-color:#dce775!important}.lime5{background-color:#d4e157!important}.lime7{background-color:#c0ca33!important}.lime8{background-color:#afb42b!important}.lime9{background-color:#9e9d24!important}.lime10{background-color:#827717!important}.yellow,.yellow6{background-color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-text{color:#ffeb3b!important}.yellow1{background-color:#fffde7!important}.yellow2{background-color:#fff9c4!important}.yellow3{background-color:#fff59d!important}.yellow4{background-color:#fff176!important}.yellow5{background-color:#ffee58!important}.yellow7{background-color:#fdd835!important}.yellow8{background-color:#fbc02d!important}.yellow9{background-color:#f9a825!important}.yellow10{background-color:#f57f17!important}.amber,.amber6{background-color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-text{color:#ffc107!important}.amber1{background-color:#fff8e1!important}.amber2{background-color:#ffecb3!important}.amber3{background-color:#ffe082!important}.amber4{background-color:#ffd54f!important}.amber5{background-color:#ffca28!important}.amber7{background-color:#ffb300!important}.amber8{background-color:#ffa000!important}.amber9{background-color:#ff8f00!important}.amber10{background-color:#ff6f00!important}.orange,.orange6{background-color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-text{color:#ff9800!important}.orange1{background-color:#fff3e0!important}.orange2{background-color:#ffe0b2!important}.orange3{background-color:#ffcc80!important}.orange4{background-color:#ffb74d!important}.orange5{background-color:#ffa726!important}.orange7{background-color:#fb8c00!important}.orange8{background-color:#f57c00!important}.orange9{background-color:#ef6c00!important}.orange10{background-color:#e65100!important}.deep-orange,.deep-orange6{background-color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-text{color:#ff5722!important}.deep-orange1{background-color:#fbe9e7!important}.deep-orange2{background-color:#ffccbc!important}.deep-orange3{background-color:#ffab91!important}.deep-orange4{background-color:#ff8a65!important}.deep-orange5{background-color:#ff7043!important}.deep-orange7{background-color:#f4511e!important}.deep-orange8{background-color:#e64a19!important}.deep-orange9{background-color:#d84315!important}.deep-orange10{background-color:#bf360c!important}.brown,.brown6{background-color:#795548!important}.brown-border{border-color:#795548!important}.brown-text{color:#795548!important}.brown1{background-color:#efebe9!important}.brown2{background-color:#d7ccc8!important}.brown3{background-color:#bcaaa4!important}.brown4{background-color:#a1887f!important}.brown5{background-color:#8d6e63!important}.brown7{background-color:#6d4c41!important}.brown8{background-color:#5d4037!important}.brown9{background-color:#4e342e!important}.brown10{background-color:#3e2723!important}.blue-grey,.blue-grey6{background-color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-text{color:#607d8b!important}.blue-grey1{background-color:#eceff1!important}.blue-grey2{background-color:#cfd8dc!important}.blue-grey3{background-color:#b0bec5!important}.blue-grey4{background-color:#90a4ae!important}.blue-grey5{background-color:#78909c!important}.blue-grey7{background-color:#546e7a!important}.blue-grey8{background-color:#455a64!important}.blue-grey9{background-color:#37474f!important}.blue-grey10{background-color:#263238!important}.grey,.grey6{background-color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-text{color:#9e9e9e!important}.grey1{background-color:#fafafa!important}.grey2{background-color:#f5f5f5!important}.grey3{background-color:#eee!important}.grey4{background-color:#e0e0e0!important}.grey5{background-color:#bdbdbd!important}.grey7{background-color:#757575!important}.grey8{background-color:#616161!important}.grey9{background-color:#424242!important}.grey10{background-color:#212121!important}
|
|
5
7
|
|
|
@@ -11,15 +13,13 @@
|
|
|
11
13
|
*
|
|
12
14
|
* AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
|
|
13
15
|
* Source: design-system/src/tokens/tokens.json
|
|
14
|
-
* Generated: 2026-
|
|
16
|
+
* Generated: 2026-08-04T15:24:23.823Z
|
|
15
17
|
*
|
|
16
18
|
* To regenerate:
|
|
17
19
|
* cd design-system && npm run tokens:generate
|
|
18
20
|
*/
|
|
19
21
|
|
|
20
22
|
/* Font imports - must be at the top of the file */
|
|
21
|
-
@import url('https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;600;700&family=Roboto:wght@400;500;700&family=Inter:wght@400;500;600&display=swap');
|
|
22
|
-
|
|
23
23
|
:root {
|
|
24
24
|
/* ==========================================================================
|
|
25
25
|
COLOR TOKENS
|
|
@@ -48,15 +48,21 @@
|
|
|
48
48
|
--kds-color-success-main: #2E7D32;
|
|
49
49
|
--kds-color-success-light: #4CAF50;
|
|
50
50
|
--kds-color-success-dark: #1B5E20;
|
|
51
|
+
--kds-color-success-contrast: #FFFFFF;
|
|
51
52
|
--kds-color-warning-main: #EF6C00;
|
|
52
53
|
--kds-color-warning-light: #FF9800;
|
|
53
54
|
--kds-color-warning-dark: #E65100;
|
|
55
|
+
--kds-color-warning-contrast: #FFFFFF;
|
|
56
|
+
--kds-color-warning-warm: #8A6D1A;
|
|
54
57
|
--kds-color-error-main: #D32F2F;
|
|
55
58
|
--kds-color-error-light: #EF5350;
|
|
56
59
|
--kds-color-error-dark: #C62828;
|
|
60
|
+
--kds-color-error-contrast: #FFFFFF;
|
|
57
61
|
--kds-color-info-main: #0288D1;
|
|
58
62
|
--kds-color-info-light: #03A9F4;
|
|
59
63
|
--kds-color-info-dark: #01579B;
|
|
64
|
+
--kds-color-info-contrast: #FFFFFF;
|
|
65
|
+
--kds-color-info-blue: #5A5FE0;
|
|
60
66
|
|
|
61
67
|
/* Text colors */
|
|
62
68
|
--kds-color-text-primary: #333333;
|
|
@@ -69,6 +75,7 @@
|
|
|
69
75
|
--kds-color-background-paper: #FFFFFF;
|
|
70
76
|
--kds-color-background-elevated: #FAFAFA;
|
|
71
77
|
--kds-color-background-muted: #F4F4F7;
|
|
78
|
+
--kds-color-background-brand-subtle: #F0F0FA;
|
|
72
79
|
|
|
73
80
|
/* Action colors */
|
|
74
81
|
--kds-color-action-active: rgba(0, 0, 0, 0.56);
|
|
@@ -134,6 +141,8 @@
|
|
|
134
141
|
--kds-font-weight-bold: 700;
|
|
135
142
|
|
|
136
143
|
/* Font sizes (base scale xs–4xl: see responsive section below) */
|
|
144
|
+
--kds-font-size-decimal-sup: 0.5em;
|
|
145
|
+
|
|
137
146
|
/* Line heights */
|
|
138
147
|
--kds-line-height-tight: 1.2;
|
|
139
148
|
--kds-line-height-snug: 1.375;
|
|
@@ -355,6 +364,7 @@
|
|
|
355
364
|
RESPONSIVE TYPOGRAPHY (MOBILE BASE)
|
|
356
365
|
========================================================================== */
|
|
357
366
|
|
|
367
|
+
--kds-font-size-2xs: 0.5625rem;
|
|
358
368
|
|
|
359
369
|
/* Base font-size scale */
|
|
360
370
|
--kds-font-size-xs: 0.6875rem;
|
|
@@ -384,6 +394,112 @@
|
|
|
384
394
|
|
|
385
395
|
}
|
|
386
396
|
|
|
397
|
+
/* ============================================================================
|
|
398
|
+
DARK MODE COLOR TOKENS
|
|
399
|
+
Override only color variables; everything else inherits from :root.
|
|
400
|
+
Activated via [data-theme="dark"] on <html>, <body>, or a wrapper.
|
|
401
|
+
============================================================================ */
|
|
402
|
+
|
|
403
|
+
[data-theme="dark"] {
|
|
404
|
+
|
|
405
|
+
/* Primary palette - Khipu brand */
|
|
406
|
+
--kds-color-primary-main: #E3B5FF;
|
|
407
|
+
--kds-color-primary-light: #F1D6FF;
|
|
408
|
+
--kds-color-primary-dark: #4C0676;
|
|
409
|
+
--kds-color-primary-contrast: rgba(76, 6, 118, 0.87);
|
|
410
|
+
--kds-color-primary-hover: rgba(227, 181, 255, 0.08);
|
|
411
|
+
--kds-color-primary-selected: rgba(227, 181, 255, 0.16);
|
|
412
|
+
--kds-color-primary-focus: rgba(227, 181, 255, 0.24);
|
|
413
|
+
--kds-color-primary-focus-visible: rgba(227, 181, 255, 0.40);
|
|
414
|
+
--kds-color-primary-outlined-border: rgba(227, 181, 255, 0.50);
|
|
415
|
+
|
|
416
|
+
/* Secondary palette */
|
|
417
|
+
--kds-color-secondary-main: #B5EAFF;
|
|
418
|
+
--kds-color-secondary-light: #D6F3FF;
|
|
419
|
+
--kds-color-secondary-dark: #065676;
|
|
420
|
+
--kds-color-secondary-contrast: rgba(6, 86, 118, 0.87);
|
|
421
|
+
|
|
422
|
+
/* Semantic colors */
|
|
423
|
+
--kds-color-success-main: #2E7D32;
|
|
424
|
+
--kds-color-success-light: #4CAF50;
|
|
425
|
+
--kds-color-success-dark: #1B5E20;
|
|
426
|
+
--kds-color-success-contrast: #FFFFFF;
|
|
427
|
+
--kds-color-warning-main: #EF6C00;
|
|
428
|
+
--kds-color-warning-light: #FF9800;
|
|
429
|
+
--kds-color-warning-dark: #E65100;
|
|
430
|
+
--kds-color-warning-contrast: #FFFFFF;
|
|
431
|
+
--kds-color-warning-warm: #8A6D1A;
|
|
432
|
+
--kds-color-error-main: #D32F2F;
|
|
433
|
+
--kds-color-error-light: #EF5350;
|
|
434
|
+
--kds-color-error-dark: #C62828;
|
|
435
|
+
--kds-color-error-contrast: #FFFFFF;
|
|
436
|
+
--kds-color-info-main: #0288D1;
|
|
437
|
+
--kds-color-info-light: #03A9F4;
|
|
438
|
+
--kds-color-info-dark: #01579B;
|
|
439
|
+
--kds-color-info-contrast: #FFFFFF;
|
|
440
|
+
--kds-color-info-blue: #5A5FE0;
|
|
441
|
+
|
|
442
|
+
/* Text colors */
|
|
443
|
+
--kds-color-text-primary: rgba(255, 255, 255, 1);
|
|
444
|
+
--kds-color-text-secondary: rgba(255, 255, 255, 0.70);
|
|
445
|
+
--kds-color-text-disabled: rgba(255, 255, 255, 0.38);
|
|
446
|
+
--kds-color-text-hint: rgba(255, 255, 255, 0.38);
|
|
447
|
+
|
|
448
|
+
/* Background colors */
|
|
449
|
+
--kds-color-background-default: #181818;
|
|
450
|
+
--kds-color-background-paper: #121212;
|
|
451
|
+
--kds-color-background-elevated: #2C2C2C;
|
|
452
|
+
--kds-color-background-muted: #1E1E1E;
|
|
453
|
+
--kds-color-background-brand-subtle: #1E1030;
|
|
454
|
+
|
|
455
|
+
/* Action colors */
|
|
456
|
+
--kds-color-action-active: rgba(255, 255, 255, 0.56);
|
|
457
|
+
--kds-color-action-hover: rgba(255, 255, 255, 0.08);
|
|
458
|
+
--kds-color-action-selected: rgba(255, 255, 255, 0.16);
|
|
459
|
+
--kds-color-action-disabled: rgba(255, 255, 255, 0.38);
|
|
460
|
+
--kds-color-action-disabled-bg: rgba(255, 255, 255, 0.12);
|
|
461
|
+
--kds-color-action-focus: rgba(255, 255, 255, 0.12);
|
|
462
|
+
|
|
463
|
+
/* Divider */
|
|
464
|
+
--kds-color-divider: rgba(255, 255, 255, 0.12);
|
|
465
|
+
|
|
466
|
+
/* Gray palette - Neutral colors */
|
|
467
|
+
--kds-color-gray-50: #F9FAFB;
|
|
468
|
+
--kds-color-gray-100: #F3F4F6;
|
|
469
|
+
--kds-color-gray-200: #E5E7EB;
|
|
470
|
+
--kds-color-gray-300: #D1D5DB;
|
|
471
|
+
--kds-color-gray-400: #9CA3AF;
|
|
472
|
+
--kds-color-gray-500: #6B7280;
|
|
473
|
+
--kds-color-gray-600: #4B5563;
|
|
474
|
+
--kds-color-gray-700: #374151;
|
|
475
|
+
--kds-color-gray-800: #1F2937;
|
|
476
|
+
--kds-color-gray-900: #111827;
|
|
477
|
+
|
|
478
|
+
/* Input borders */
|
|
479
|
+
--kds-color-input-enabled-border: rgba(255, 255, 255, 0.23);
|
|
480
|
+
--kds-color-input-hover-border: rgba(255, 255, 255, 1);
|
|
481
|
+
|
|
482
|
+
/* Snackbar backgrounds */
|
|
483
|
+
--kds-snackbar-success-bg: rgba(76, 175, 80, 0.16);
|
|
484
|
+
--kds-snackbar-warning-bg: rgba(255, 152, 0, 0.16);
|
|
485
|
+
--kds-snackbar-error-bg: rgba(239, 83, 80, 0.16);
|
|
486
|
+
--kds-snackbar-info-bg: rgba(3, 169, 244, 0.16);
|
|
487
|
+
|
|
488
|
+
/* Alert backgrounds */
|
|
489
|
+
--kds-alert-info-bg: rgba(2, 136, 209, 0.12);
|
|
490
|
+
--kds-alert-warning-bg: rgba(239, 108, 0, 0.12);
|
|
491
|
+
--kds-alert-success-bg: rgba(46, 125, 50, 0.12);
|
|
492
|
+
--kds-alert-error-bg: rgba(211, 47, 47, 0.12);
|
|
493
|
+
--kds-alert-success-text: #6AE079;
|
|
494
|
+
--kds-alert-warning-text: #FFB74D;
|
|
495
|
+
--kds-alert-error-text: #EF9A9A;
|
|
496
|
+
--kds-alert-info-text: #4FC3F7;
|
|
497
|
+
--kds-alert-success-border: #4CAF50;
|
|
498
|
+
--kds-alert-warning-border: #FF9800;
|
|
499
|
+
--kds-alert-error-border: #EF5350;
|
|
500
|
+
--kds-alert-info-border: #03A9F4;
|
|
501
|
+
}
|
|
502
|
+
|
|
387
503
|
/* ============================================================================
|
|
388
504
|
RESPONSIVE TOKENS (Mobile-First)
|
|
389
505
|
============================================================================ */
|
|
@@ -402,6 +518,7 @@
|
|
|
402
518
|
/* Tablet (600px+) - Typography */
|
|
403
519
|
@media (min-width: 600px) {
|
|
404
520
|
:root {
|
|
521
|
+
--kds-font-size-2xs: 0.625rem;
|
|
405
522
|
|
|
406
523
|
/* Base font-size scale */
|
|
407
524
|
--kds-font-size-xs: 0.75rem;
|
|
@@ -439,6 +556,7 @@
|
|
|
439
556
|
/* Desktop (840px+) - Typography */
|
|
440
557
|
@media (min-width: 840px) {
|
|
441
558
|
:root {
|
|
559
|
+
--kds-font-size-2xs: 0.625rem;
|
|
442
560
|
|
|
443
561
|
/* Base font-size scale */
|
|
444
562
|
--kds-font-size-xs: 0.75rem;
|
|
@@ -510,7 +628,8 @@
|
|
|
510
628
|
/* Import core design tokens (auto-generated) */
|
|
511
629
|
:root,
|
|
512
630
|
body.light,
|
|
513
|
-
body.dark
|
|
631
|
+
body.dark,
|
|
632
|
+
[data-theme="dark"] {
|
|
514
633
|
/* ========================================
|
|
515
634
|
Map core tokens to BeerCSS-specific names
|
|
516
635
|
(BeerCSS may use different naming conventions)
|
|
@@ -688,7 +807,8 @@ body.dark {
|
|
|
688
807
|
--kds-color-danger-soft: var(--kds-alert-error-bg); /* #FEF2F2 */
|
|
689
808
|
|
|
690
809
|
/* Bottom Sheet */
|
|
691
|
-
|
|
810
|
+
/* Mismo ancho que la card principal del flujo (stage narrow). */
|
|
811
|
+
--kds-bottom-sheet-max-width: var(--kds-stage-narrow-max-width);
|
|
692
812
|
--kds-bottom-sheet-shadow: 0 -8px var(--kds-spacing-3-5) rgba(0, 0, 0, 0.18);
|
|
693
813
|
|
|
694
814
|
/* Status Block */
|
|
@@ -707,26 +827,70 @@ body.dark {
|
|
|
707
827
|
--kds-qr-avatar-radius: 10px; /* Avatar border radius */
|
|
708
828
|
--kds-qr-badge-bg: var(--kds-color-primary-main); /* Badge background */
|
|
709
829
|
--kds-qr-badge-text: #FFFFFF; /* Badge text color */
|
|
830
|
+
|
|
831
|
+
/* Highlighted Field */
|
|
832
|
+
--kds-field-highlight-bg: var(--kds-color-info-soft); /* Header band surface */
|
|
833
|
+
--kds-field-highlight-border: rgba(2, 136, 209, 0.5); /* Dashed accent border (info @ 50%) */
|
|
834
|
+
--kds-field-highlight-label: var(--kds-color-info-dark); /* Eyebrow label */
|
|
835
|
+
/* Doubles as the band's own padding, so its text lines up with the fields */
|
|
836
|
+
--kds-field-highlight-padding: var(--kds-spacing-2);
|
|
837
|
+
--kds-field-highlight-radius: var(--kds-radius-card);
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
/* ========================================
|
|
841
|
+
Dark mode overrides — extended payment-flow tokens
|
|
842
|
+
These were authored as light-only literals in the group above (subtle
|
|
843
|
+
surfaces, soft backgrounds, borders, hovers, shell). Give them dark-aware
|
|
844
|
+
values so selected states / rows / hovers adapt. Additive: the light
|
|
845
|
+
:root / body.light values above are unchanged. Tokens already defined as
|
|
846
|
+
var() refs (warning-soft, danger-soft) adapt on their own and are omitted.
|
|
847
|
+
body.dark is included on purpose: the light group above also matches
|
|
848
|
+
body.dark (specificity 0,1,1), so a bare [data-theme] override (0,1,0)
|
|
849
|
+
would lose on a body that carries the transitional dark class.
|
|
850
|
+
======================================== */
|
|
851
|
+
body.dark,
|
|
852
|
+
[data-theme="dark"] {
|
|
853
|
+
--kds-color-primary-faint: #1E1030; /* dark brand-tinted subtle surface (selected rows/cards) */
|
|
854
|
+
--kds-color-info-soft: var(--kds-alert-info-bg); /* dark translucent blue */
|
|
855
|
+
--kds-color-success-soft: var(--kds-alert-success-bg); /* dark translucent green */
|
|
856
|
+
--kds-color-border-subtle: rgba(255, 255, 255, 0.08); /* subtle divider on dark */
|
|
857
|
+
--kds-color-border-default: rgba(255, 255, 255, 0.16); /* standard border on dark */
|
|
858
|
+
--kds-color-hover-bg: rgba(255, 255, 255, 0.04); /* subtle row hover on dark */
|
|
859
|
+
--kds-color-shell: var(--kds-color-background-default); /* neutral page background */
|
|
860
|
+
|
|
861
|
+
/* QR featured row — dark mirror of the light purple→blue gradient (the
|
|
862
|
+
light literals painted a light surface under adaptive white text). */
|
|
863
|
+
--kds-qr-bg-gradient: linear-gradient(135deg, #1E1030 0%, #101C2C 100%);
|
|
864
|
+
--kds-qr-border: rgba(227, 181, 255, 0.28); /* dark primary @ same alpha as light */
|
|
865
|
+
--kds-qr-focus-ring: rgba(227, 181, 255, 0.35);
|
|
866
|
+
--kds-qr-avatar-bg: var(--kds-color-background-elevated);
|
|
867
|
+
--kds-qr-avatar-border: rgba(227, 181, 255, 0.3);
|
|
868
|
+
--kds-qr-badge-text: var(--kds-color-primary-contrast); /* dark text on the lavender badge */
|
|
869
|
+
|
|
870
|
+
/* Highlighted field — info-soft still resolves to a near-white band on
|
|
871
|
+
dark, so mirror it as translucent info over the dark background. */
|
|
872
|
+
--kds-field-highlight-bg: rgba(2, 136, 209, 0.12);
|
|
873
|
+
--kds-field-highlight-border: rgba(125, 211, 252, 0.45);
|
|
874
|
+
--kds-field-highlight-label: #7DD3FC; /* light info, readable on dark */
|
|
710
875
|
}
|
|
711
876
|
|
|
712
877
|
/* ========================================
|
|
713
|
-
|
|
878
|
+
Color Scheme (explicit opt-in to dark)
|
|
714
879
|
======================================== */
|
|
715
880
|
|
|
716
|
-
/*
|
|
881
|
+
/* Default to light regardless of OS preference. Because we use `light` (not
|
|
882
|
+
`light dark`), the system dark-mode preference never auto-applies — dark is
|
|
883
|
+
reached only by an explicit [data-theme="dark"] / body.dark opt-in. */
|
|
717
884
|
:root,
|
|
718
885
|
html,
|
|
719
886
|
body {
|
|
720
|
-
color-scheme: light
|
|
887
|
+
color-scheme: light;
|
|
721
888
|
}
|
|
722
889
|
|
|
723
|
-
/*
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
body {
|
|
728
|
-
color-scheme: light only;
|
|
729
|
-
}
|
|
890
|
+
/* Explicit dark theme: let native UI (form controls, scrollbars) render dark. */
|
|
891
|
+
[data-theme="dark"],
|
|
892
|
+
body.dark {
|
|
893
|
+
color-scheme: dark;
|
|
730
894
|
}
|
|
731
895
|
|
|
732
896
|
/* ========================================
|
|
@@ -838,7 +1002,13 @@ a.kds-btn {
|
|
|
838
1002
|
|
|
839
1003
|
/* Spacing - Using design tokens */
|
|
840
1004
|
padding: var(--kds-spacing-button-padding); /* 0 16px */
|
|
841
|
-
|
|
1005
|
+
/* Respiro vertical solo relevante con label multilinea; en una linea manda min-height. */
|
|
1006
|
+
padding-block: var(--kds-spacing-1);
|
|
1007
|
+
/* height:auto + min-height (no height fija): si el label envuelve en pantallas
|
|
1008
|
+
angostas el botón crece en vez de recortar el texto; min-height ademas impide
|
|
1009
|
+
que flex-shrink lo colapse como flex-item en contenedores flex-column. */
|
|
1010
|
+
height: auto;
|
|
1011
|
+
min-height: var(--kds-spacing-button-min-height); /* 44px */
|
|
842
1012
|
|
|
843
1013
|
/* Border - Using design token */
|
|
844
1014
|
border-radius: var(--kds-radius-button); /* 10px */
|
|
@@ -846,11 +1016,25 @@ a.kds-btn {
|
|
|
846
1016
|
|
|
847
1017
|
/* Interaction */
|
|
848
1018
|
cursor: pointer;
|
|
849
|
-
transition: background
|
|
1019
|
+
transition: background-color var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
1020
|
+
color var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
1021
|
+
box-shadow var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
1022
|
+
transform var(--kds-transition-shortest) var(--kds-easing-standard);
|
|
850
1023
|
box-sizing: border-box;
|
|
851
1024
|
vertical-align: middle;
|
|
852
1025
|
}
|
|
853
1026
|
|
|
1027
|
+
/* Sin anillo de focus en botones: decision de diseno (KTUF-210) — el estado de
|
|
1028
|
+
focus/active se comunica solo con el cambio de fondo de cada variante. */
|
|
1029
|
+
button.kds-btn:focus,
|
|
1030
|
+
button.kds-btn:focus-visible,
|
|
1031
|
+
a.kds-btn:focus,
|
|
1032
|
+
a.kds-btn:focus-visible,
|
|
1033
|
+
button.kds-fab:focus,
|
|
1034
|
+
button.kds-fab:focus-visible {
|
|
1035
|
+
outline: none;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
854
1038
|
/* Active state - add subtle press effect */
|
|
855
1039
|
button.kds-btn:active:not(:disabled),
|
|
856
1040
|
a.kds-btn:active:not(:disabled) {
|
|
@@ -872,7 +1056,7 @@ a.kds-btn:disabled {
|
|
|
872
1056
|
button.kds-btn-primary,
|
|
873
1057
|
a.kds-btn-primary {
|
|
874
1058
|
background: var(--kds-color-primary-main); /* #8347AD */
|
|
875
|
-
color:
|
|
1059
|
+
color: var(--kds-color-primary-contrast); /* #FFF light / dark-purple on dark (lavender bg) */
|
|
876
1060
|
border: none;
|
|
877
1061
|
box-shadow: 0 1px 2px rgba(131, 71, 173, .25);
|
|
878
1062
|
}
|
|
@@ -889,8 +1073,18 @@ button.kds-btn-primary:focus-visible:not(:disabled),
|
|
|
889
1073
|
a.kds-btn-primary:active:not(:disabled),
|
|
890
1074
|
a.kds-btn-primary:focus-visible:not(:disabled) {
|
|
891
1075
|
background: var(--kds-color-primary-dark);
|
|
892
|
-
|
|
893
|
-
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
/* Dark mode: the button is a light lavender with dark text, so hover/active must
|
|
1079
|
+
LIGHTEN (not darken) — else primary-dark bg + dark contrast text = invisible.
|
|
1080
|
+
Additive override; the light-mode rules above stay unchanged. */
|
|
1081
|
+
[data-theme="dark"] button.kds-btn-primary:hover:not(:disabled),
|
|
1082
|
+
[data-theme="dark"] a.kds-btn-primary:hover:not(:disabled),
|
|
1083
|
+
[data-theme="dark"] button.kds-btn-primary:active:not(:disabled),
|
|
1084
|
+
[data-theme="dark"] button.kds-btn-primary:focus-visible:not(:disabled),
|
|
1085
|
+
[data-theme="dark"] a.kds-btn-primary:active:not(:disabled),
|
|
1086
|
+
[data-theme="dark"] a.kds-btn-primary:focus-visible:not(:disabled) {
|
|
1087
|
+
background: var(--kds-color-primary-light);
|
|
894
1088
|
}
|
|
895
1089
|
|
|
896
1090
|
/* Override disabled para primary */
|
|
@@ -965,20 +1159,25 @@ a.kds-btn-outlined-white:hover:not(:disabled) {
|
|
|
965
1159
|
opacity: 0.9;
|
|
966
1160
|
}
|
|
967
1161
|
|
|
968
|
-
/* Text button
|
|
1162
|
+
/* Text button — mismo tamaño que el resto de variantes (hereda min-height/padding
|
|
1163
|
+
del base): solo cambia la superficie, no la caja. */
|
|
969
1164
|
button.kds-btn-text,
|
|
970
1165
|
a.kds-btn-text {
|
|
971
1166
|
background: transparent;
|
|
972
1167
|
color: var(--kds-color-primary-main);
|
|
973
1168
|
border: none;
|
|
974
|
-
padding: 6px var(--kds-spacing-2); /* Menor padding para text variant */
|
|
975
|
-
min-height: 32px; /* Menor altura para text variant */
|
|
976
1169
|
box-shadow: none;
|
|
977
1170
|
}
|
|
978
1171
|
|
|
979
1172
|
button.kds-btn-text:hover:not(:disabled),
|
|
980
1173
|
a.kds-btn-text:hover:not(:disabled) {
|
|
981
|
-
|
|
1174
|
+
color: var(--kds-color-primary-dark);
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
/* Dark: hover must lighten — primary-dark text is near-invisible on dark bg. */
|
|
1178
|
+
[data-theme="dark"] button.kds-btn-text:hover:not(:disabled),
|
|
1179
|
+
[data-theme="dark"] a.kds-btn-text:hover:not(:disabled) {
|
|
1180
|
+
color: var(--kds-color-primary-light);
|
|
982
1181
|
}
|
|
983
1182
|
|
|
984
1183
|
button.kds-btn-text:disabled,
|
|
@@ -988,9 +1187,38 @@ a.kds-btn-text:disabled {
|
|
|
988
1187
|
box-shadow: none;
|
|
989
1188
|
}
|
|
990
1189
|
|
|
1190
|
+
/* Error text (destructive, ghost) — red text, no fill/border. Para acciones
|
|
1191
|
+
destructivas secundarias que no deben competir con el CTA primario. */
|
|
1192
|
+
button.kds-btn-error-text,
|
|
1193
|
+
a.kds-btn-error-text {
|
|
1194
|
+
background: transparent;
|
|
1195
|
+
color: var(--kds-color-error-main);
|
|
1196
|
+
border: none;
|
|
1197
|
+
box-shadow: none;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
button.kds-btn-error-text:hover:not(:disabled),
|
|
1201
|
+
a.kds-btn-error-text:hover:not(:disabled) {
|
|
1202
|
+
color: var(--kds-color-error-dark);
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
button.kds-btn-error-text:disabled,
|
|
1206
|
+
a.kds-btn-error-text:disabled {
|
|
1207
|
+
background: transparent;
|
|
1208
|
+
color: var(--kds-color-action-disabled);
|
|
1209
|
+
box-shadow: none;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
/* Label: al envolver en pantallas angostas las lineas quedan parejas y el icono
|
|
1213
|
+
(inline, dentro del label) fluye con el texto en vez de anclarse al borde. */
|
|
1214
|
+
button.kds-btn .kds-btn-label,
|
|
1215
|
+
a.kds-btn .kds-btn-label {
|
|
1216
|
+
text-wrap: balance;
|
|
1217
|
+
}
|
|
1218
|
+
|
|
991
1219
|
/* Icon wrapper - control size via span container */
|
|
992
|
-
button.kds-btn
|
|
993
|
-
a.kds-btn
|
|
1220
|
+
button.kds-btn .kds-icon,
|
|
1221
|
+
a.kds-btn .kds-icon {
|
|
994
1222
|
min-width: var(--kds-spacing-button-icon-size);
|
|
995
1223
|
min-height: var(--kds-spacing-button-icon-size);
|
|
996
1224
|
width: var(--kds-spacing-button-icon-size);
|
|
@@ -1001,10 +1229,22 @@ a.kds-btn > .kds-icon {
|
|
|
1001
1229
|
display: inline-flex;
|
|
1002
1230
|
align-items: center;
|
|
1003
1231
|
justify-content: center;
|
|
1232
|
+
vertical-align: middle;
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
/* El gap del boton no aplica al icono inline: el respiro icono-texto sale del margen. */
|
|
1236
|
+
button.kds-btn .kds-icon-start,
|
|
1237
|
+
a.kds-btn .kds-icon-start {
|
|
1238
|
+
margin-inline-end: var(--kds-spacing-1);
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
button.kds-btn .kds-icon-end,
|
|
1242
|
+
a.kds-btn .kds-icon-end {
|
|
1243
|
+
margin-inline-start: var(--kds-spacing-1);
|
|
1004
1244
|
}
|
|
1005
1245
|
|
|
1006
|
-
button.kds-btn
|
|
1007
|
-
a.kds-btn
|
|
1246
|
+
button.kds-btn .kds-icon > i,
|
|
1247
|
+
a.kds-btn .kds-icon > i {
|
|
1008
1248
|
font-size: var(--kds-spacing-button-icon-size);
|
|
1009
1249
|
min-width: var(--kds-spacing-button-icon-size);
|
|
1010
1250
|
min-height: var(--kds-spacing-button-icon-size);
|
|
@@ -1073,63 +1313,90 @@ a.kds-btn.kds-btn-md {
|
|
|
1073
1313
|
}
|
|
1074
1314
|
}
|
|
1075
1315
|
|
|
1076
|
-
/* Selection card
|
|
1316
|
+
/* Selection card.
|
|
1317
|
+
IMPORTANTE: este componente se renderiza como `<button>`. BeerCSS aplica al
|
|
1318
|
+
`button` base: `display: inline-flex; align-items: center; justify-content: center;
|
|
1319
|
+
block-size: 2.5rem; padding: 0 1rem; background: var(--primary); color: on-primary`.
|
|
1320
|
+
Todas esas reglas hay que sobreescribirlas para que el card-selector funcione como
|
|
1321
|
+
un contenedor flex column de altura variable y alineado a la izquierda.
|
|
1322
|
+
|
|
1323
|
+
Convención del DS: spacing entre hijos via `gap` del flex padre + padding.
|
|
1324
|
+
Los elementos internos (.kds-card-selector-icon/-title/-description) NO usan margin. */
|
|
1077
1325
|
.kds-card-selector {
|
|
1326
|
+
/* Reset BeerCSS button */
|
|
1327
|
+
display: flex;
|
|
1328
|
+
flex-direction: column;
|
|
1329
|
+
align-items: stretch;
|
|
1330
|
+
justify-content: flex-start;
|
|
1331
|
+
block-size: auto;
|
|
1332
|
+
inline-size: 100%;
|
|
1333
|
+
text-align: left;
|
|
1334
|
+
line-height: 1.5;
|
|
1335
|
+
color: var(--kds-color-text-primary);
|
|
1336
|
+
/* Estilos propios del card-selector */
|
|
1078
1337
|
padding: var(--kds-spacing-3);
|
|
1338
|
+
gap: var(--kds-spacing-1-5);
|
|
1079
1339
|
border-radius: var(--kds-radius-md);
|
|
1080
|
-
border:
|
|
1340
|
+
border: var(--kds-border-width-md) solid var(--kds-border-light);
|
|
1081
1341
|
background: var(--kds-color-background-paper);
|
|
1082
1342
|
transition: all 0.3s ease;
|
|
1083
|
-
text-align: left;
|
|
1084
1343
|
cursor: pointer;
|
|
1085
|
-
display: flex;
|
|
1086
|
-
flex-direction: column;
|
|
1087
1344
|
}
|
|
1088
1345
|
|
|
1089
|
-
.kds-card-selector:hover {
|
|
1090
|
-
border-color:
|
|
1346
|
+
.kds-card-selector:hover:not(.selected) {
|
|
1347
|
+
border-color: var(--kds-color-primary-light);
|
|
1348
|
+
background: var(--kds-color-primary-hover);
|
|
1349
|
+
}
|
|
1350
|
+
|
|
1351
|
+
/* Override del ripple/overlay default de BeerCSS:
|
|
1352
|
+
`:is(.wave,.chip,.button,button,nav.tabbed>a,...):not([class*=ripple])::after`
|
|
1353
|
+
tiene specificity (0,2,4) según DevTools (Chrome cuenta cada selector dentro
|
|
1354
|
+
de :is() individualmente para algunos motores). Usamos !important — consistente
|
|
1355
|
+
con cómo se overridean otros estilos de BeerCSS en este archivo (67 usos previos).
|
|
1356
|
+
Antes pintaba negro porque `currentColor` resolvía a text-primary del card. */
|
|
1357
|
+
.kds-card-selector::after {
|
|
1358
|
+
background-image: radial-gradient(circle, var(--kds-color-primary-main) 1%, transparent 1%) !important;
|
|
1091
1359
|
}
|
|
1092
1360
|
|
|
1093
1361
|
.kds-card-selector.selected {
|
|
1094
|
-
border-color:
|
|
1095
|
-
background:
|
|
1362
|
+
border-color: var(--kds-color-primary-main);
|
|
1363
|
+
background: var(--kds-color-primary-faint);
|
|
1096
1364
|
box-shadow: var(--kds-shadow-md);
|
|
1097
1365
|
}
|
|
1098
1366
|
|
|
1099
|
-
/* Icon container */
|
|
1367
|
+
/* Icon container — spacing manejado por gap del padre, no margin */
|
|
1100
1368
|
.kds-card-selector-icon {
|
|
1101
|
-
width:
|
|
1102
|
-
height:
|
|
1103
|
-
background:
|
|
1104
|
-
border-radius:
|
|
1369
|
+
width: var(--kds-spacing-6);
|
|
1370
|
+
height: var(--kds-spacing-6);
|
|
1371
|
+
background: var(--kds-color-primary-focus);
|
|
1372
|
+
border-radius: var(--kds-radius-sm);
|
|
1105
1373
|
display: flex;
|
|
1106
1374
|
align-items: center;
|
|
1107
1375
|
justify-content: center;
|
|
1108
|
-
margin-bottom: 16px;
|
|
1109
1376
|
}
|
|
1110
1377
|
|
|
1111
1378
|
.kds-card-selector-icon i,
|
|
1112
1379
|
.kds-card-selector-icon svg {
|
|
1113
|
-
width:
|
|
1114
|
-
height:
|
|
1115
|
-
min-width:
|
|
1116
|
-
min-height:
|
|
1117
|
-
|
|
1380
|
+
width: var(--kds-spacing-3);
|
|
1381
|
+
height: var(--kds-spacing-3);
|
|
1382
|
+
min-width: var(--kds-spacing-3);
|
|
1383
|
+
min-height: var(--kds-spacing-3);
|
|
1384
|
+
font-size: var(--kds-spacing-3);
|
|
1385
|
+
color: var(--kds-color-primary-main);
|
|
1118
1386
|
}
|
|
1119
1387
|
|
|
1120
|
-
/* Title */
|
|
1388
|
+
/* Title — spacing manejado por gap del padre, no margin */
|
|
1121
1389
|
.kds-card-selector-title {
|
|
1122
|
-
font-weight:
|
|
1390
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
1123
1391
|
color: var(--kds-color-text-primary);
|
|
1124
|
-
|
|
1125
|
-
font-size: 16px;
|
|
1392
|
+
font-size: var(--kds-font-size-lg);
|
|
1126
1393
|
}
|
|
1127
1394
|
|
|
1128
1395
|
/* Description */
|
|
1129
1396
|
.kds-card-selector-description {
|
|
1130
|
-
font-size:
|
|
1131
|
-
color:
|
|
1132
|
-
line-height:
|
|
1397
|
+
font-size: var(--kds-font-size-sm);
|
|
1398
|
+
color: var(--kds-color-text-secondary);
|
|
1399
|
+
line-height: var(--kds-line-height-normal);
|
|
1133
1400
|
}
|
|
1134
1401
|
|
|
1135
1402
|
/* Selected state - visual feedback via border only */
|
|
@@ -1141,14 +1408,22 @@ a.kds-btn.kds-btn-md {
|
|
|
1141
1408
|
display: flex;
|
|
1142
1409
|
flex-direction: column;
|
|
1143
1410
|
gap: var(--kds-spacing-2);
|
|
1144
|
-
padding: var(--kds-spacing-
|
|
1411
|
+
padding: var(--kds-spacing-2);
|
|
1145
1412
|
border-radius: var(--kds-radius-lg);
|
|
1146
1413
|
border: 2px solid var(--kds-border-medium);
|
|
1147
|
-
|
|
1414
|
+
/* Ancho mínimo aplicado a TODOS los planes — así un plan sin badge en una
|
|
1415
|
+
grilla con un plan recomendado mantiene la misma anchura, y el badge nunca
|
|
1416
|
+
se superpone al título por estrechez del card. */
|
|
1417
|
+
min-width: 260px;
|
|
1418
|
+
max-width: 400px;
|
|
1148
1419
|
background: var(--kds-surface-base);
|
|
1149
1420
|
transition: all 0.3s ease;
|
|
1150
1421
|
cursor: pointer;
|
|
1151
|
-
|
|
1422
|
+
/* Alto fijo: el card se estira al alto de su row del grid (align-items stretch
|
|
1423
|
+
es el default) — todas las cards de la misma fila quedan a la misma altura
|
|
1424
|
+
sin importar el contenido. `align-self: stretch` lo hace explícito. */
|
|
1425
|
+
height: 100%;
|
|
1426
|
+
align-self: stretch;
|
|
1152
1427
|
}
|
|
1153
1428
|
|
|
1154
1429
|
.kds-card-plan:hover {
|
|
@@ -1168,18 +1443,19 @@ a.kds-btn.kds-btn-md {
|
|
|
1168
1443
|
box-shadow: var(--kds-shadow-elevation-4);
|
|
1169
1444
|
}
|
|
1170
1445
|
|
|
1171
|
-
/* Recommended Badge
|
|
1446
|
+
/* Recommended Badge — inline dentro del card (no flotante).
|
|
1447
|
+
Es el primer hijo del .kds-card-plan, así que aparece arriba de todo
|
|
1448
|
+
el contenido, alineado a la izquierda. */
|
|
1172
1449
|
.kds-card-plan-badge {
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
right: var(--kds-spacing-6);
|
|
1176
|
-
padding: var(--kds-spacing-1) var(--kds-spacing-4);
|
|
1450
|
+
align-self: flex-start;
|
|
1451
|
+
padding: var(--kds-spacing-0-5) var(--kds-spacing-1-5);
|
|
1177
1452
|
background: var(--primary);
|
|
1178
|
-
color:
|
|
1179
|
-
font-size: var(--kds-font-size-
|
|
1453
|
+
color: var(--kds-color-primary-contrast); /* contrast adapts: #FFF light / dark on dark */
|
|
1454
|
+
font-size: var(--kds-font-size-xs);
|
|
1180
1455
|
font-weight: var(--kds-font-weight-semibold);
|
|
1456
|
+
line-height: 1;
|
|
1181
1457
|
border-radius: var(--kds-radius-full);
|
|
1182
|
-
|
|
1458
|
+
white-space: nowrap;
|
|
1183
1459
|
}
|
|
1184
1460
|
|
|
1185
1461
|
/* Plan Header */
|
|
@@ -1207,13 +1483,11 @@ a.kds-btn.kds-btn-md {
|
|
|
1207
1483
|
display: flex;
|
|
1208
1484
|
align-items: baseline;
|
|
1209
1485
|
gap: var(--kds-spacing-2);
|
|
1210
|
-
padding: var(--kds-spacing-4) 0;
|
|
1211
1486
|
border-bottom: 1px solid var(--kds-border-light);
|
|
1212
|
-
min-height: 88px; /* Standardize price area height */
|
|
1213
1487
|
}
|
|
1214
1488
|
|
|
1215
1489
|
.kds-price {
|
|
1216
|
-
font-size:
|
|
1490
|
+
font-size: var(--kds-font-size-4xl);
|
|
1217
1491
|
font-weight: var(--kds-font-weight-bold);
|
|
1218
1492
|
color: var(--primary);
|
|
1219
1493
|
line-height: 1.1;
|
|
@@ -1440,6 +1714,10 @@ a.kds-btn.kds-btn-md {
|
|
|
1440
1714
|
flex-wrap: wrap;
|
|
1441
1715
|
}
|
|
1442
1716
|
|
|
1717
|
+
.kds-grow {
|
|
1718
|
+
flex-grow: 1;
|
|
1719
|
+
}
|
|
1720
|
+
|
|
1443
1721
|
.kds-justify-start {
|
|
1444
1722
|
justify-content: flex-start;
|
|
1445
1723
|
}
|
|
@@ -1468,7 +1746,63 @@ a.kds-btn.kds-btn-md {
|
|
|
1468
1746
|
align-items: flex-end;
|
|
1469
1747
|
}
|
|
1470
1748
|
|
|
1749
|
+
.kds-self-center {
|
|
1750
|
+
align-self: center;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
/* Botón "pelado": neutraliza el chrome de button de BeerCSS (pill 2.5rem,
|
|
1754
|
+
radius, fondo y hover) para botones de terceros con su propio look,
|
|
1755
|
+
p.ej. los share buttons de react-share (ícono circular). */
|
|
1756
|
+
.kds-btn-bare,
|
|
1757
|
+
.kds-btn-bare:hover,
|
|
1758
|
+
.kds-btn-bare:focus,
|
|
1759
|
+
.kds-btn-bare:active {
|
|
1760
|
+
background: none !important;
|
|
1761
|
+
block-size: auto !important;
|
|
1762
|
+
inline-size: auto !important;
|
|
1763
|
+
min-inline-size: 0 !important;
|
|
1764
|
+
padding: 0 !important;
|
|
1765
|
+
margin: 0 !important;
|
|
1766
|
+
border: 0 !important;
|
|
1767
|
+
border-radius: var(--kds-radius-full) !important;
|
|
1768
|
+
box-sizing: border-box !important;
|
|
1769
|
+
box-shadow: none !important;
|
|
1770
|
+
transform: none !important;
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1773
|
+
.kds-btn-bare::before,
|
|
1774
|
+
.kds-btn-bare::after {
|
|
1775
|
+
display: none !important;
|
|
1776
|
+
}
|
|
1777
|
+
|
|
1778
|
+
/* BeerCSS también encoge los íconos hijos de button a 1.5rem (min/max);
|
|
1779
|
+
un botón pelado respeta el tamaño propio del ícono. */
|
|
1780
|
+
.kds-btn-bare > :is(img, svg) {
|
|
1781
|
+
max-block-size: none !important;
|
|
1782
|
+
max-inline-size: none !important;
|
|
1783
|
+
min-block-size: 0 !important;
|
|
1784
|
+
min-inline-size: 0 !important;
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
/* Versión de la app anclada al fondo del card body (flex column): margin-top
|
|
1788
|
+
auto absorbe el espacio libre; el padding garantiza respiro mínimo cuando el
|
|
1789
|
+
contenido llena la card. */
|
|
1790
|
+
.kds-card-version {
|
|
1791
|
+
margin-top: auto;
|
|
1792
|
+
padding-top: var(--kds-spacing-2);
|
|
1793
|
+
text-align: center;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1796
|
+
/* Separador vertical (entre chips/logos hermanos en una fila). */
|
|
1797
|
+
.kds-vr {
|
|
1798
|
+
width: 1px;
|
|
1799
|
+
height: var(--kds-spacing-3);
|
|
1800
|
+
background: var(--kds-color-divider);
|
|
1801
|
+
flex: 0 0 auto;
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1471
1804
|
/* Gap utilities */
|
|
1805
|
+
.kds-gap-0-25 { gap: var(--kds-spacing-0-25); }
|
|
1472
1806
|
.kds-gap-1 { gap: var(--kds-spacing-1); }
|
|
1473
1807
|
.kds-gap-2 { gap: var(--kds-spacing-2); }
|
|
1474
1808
|
.kds-gap-3 { gap: var(--kds-spacing-3); }
|
|
@@ -1504,6 +1838,7 @@ a.kds-btn.kds-btn-md {
|
|
|
1504
1838
|
/* Spacing utilities - Margin */
|
|
1505
1839
|
.kds-m-0 { margin: 0; }
|
|
1506
1840
|
.kds-m-2 { margin: var(--kds-spacing-2); }
|
|
1841
|
+
.kds-m-2-5 { margin: var(--kds-spacing-2-5); }
|
|
1507
1842
|
.kds-m-4 { margin: var(--kds-spacing-4); }
|
|
1508
1843
|
.kds-m-6 { margin: var(--kds-spacing-6); }
|
|
1509
1844
|
.kds-m-8 { margin: var(--kds-spacing-8); }
|
|
@@ -1517,6 +1852,7 @@ a.kds-btn.kds-btn-md {
|
|
|
1517
1852
|
.kds-mt-8 { margin-top: var(--kds-spacing-8); }
|
|
1518
1853
|
|
|
1519
1854
|
.kds-mb-0 { margin-bottom: 0; }
|
|
1855
|
+
.kds-mb-0-5 { margin-bottom: var(--kds-spacing-0-5); }
|
|
1520
1856
|
.kds-mb-1 { margin-bottom: var(--kds-spacing-1); }
|
|
1521
1857
|
.kds-mb-2 { margin-bottom: var(--kds-spacing-2); }
|
|
1522
1858
|
.kds-mb-3 { margin-bottom: var(--kds-spacing-3); }
|
|
@@ -1753,33 +2089,35 @@ a.kds-btn.kds-btn-md {
|
|
|
1753
2089
|
opacity: 1 !important;
|
|
1754
2090
|
}
|
|
1755
2091
|
|
|
1756
|
-
/* Snackbar semantic variants
|
|
1757
|
-
|
|
2092
|
+
/* Snackbar semantic variants — white text on solid semantic backgrounds.
|
|
2093
|
+
Use each semantic's own *-contrast token (always #FFFFFF, both modes) rather
|
|
2094
|
+
than --kds-color-primary-contrast, which flips to dark purple in dark mode
|
|
2095
|
+
and made the text illegible on the colored surface. */
|
|
1758
2096
|
.snackbar.error {
|
|
1759
2097
|
background-color: var(--kds-color-error-main) !important;
|
|
1760
|
-
color: var(--kds-color-
|
|
2098
|
+
color: var(--kds-color-error-contrast) !important;
|
|
1761
2099
|
}
|
|
1762
2100
|
|
|
1763
2101
|
.snackbar.error i {
|
|
1764
|
-
color: var(--kds-color-
|
|
2102
|
+
color: var(--kds-color-error-contrast) !important;
|
|
1765
2103
|
}
|
|
1766
2104
|
|
|
1767
2105
|
.snackbar.info {
|
|
1768
2106
|
background-color: var(--kds-color-info-main) !important;
|
|
1769
|
-
color: var(--kds-color-
|
|
2107
|
+
color: var(--kds-color-info-contrast) !important;
|
|
1770
2108
|
}
|
|
1771
2109
|
|
|
1772
2110
|
.snackbar.info i {
|
|
1773
|
-
color: var(--kds-color-
|
|
2111
|
+
color: var(--kds-color-info-contrast) !important;
|
|
1774
2112
|
}
|
|
1775
2113
|
|
|
1776
2114
|
.snackbar.success {
|
|
1777
2115
|
background-color: var(--kds-color-success-main) !important;
|
|
1778
|
-
color: var(--kds-color-
|
|
2116
|
+
color: var(--kds-color-success-contrast) !important;
|
|
1779
2117
|
}
|
|
1780
2118
|
|
|
1781
2119
|
.snackbar.success i {
|
|
1782
|
-
color: var(--kds-color-
|
|
2120
|
+
color: var(--kds-color-success-contrast) !important;
|
|
1783
2121
|
}
|
|
1784
2122
|
|
|
1785
2123
|
/* Snackbar progress bar — animated timer for auto-dismiss */
|
|
@@ -2030,92 +2368,340 @@ a.kds-btn-google:disabled {
|
|
|
2030
2368
|
}
|
|
2031
2369
|
|
|
2032
2370
|
/* ========================================
|
|
2033
|
-
|
|
2371
|
+
KDS LINEAR PROGRESS
|
|
2372
|
+
Native <progress> (KdsLinearProgress). Additive over BeerCSS `progress`,
|
|
2373
|
+
scoped to .kds-progress so other consumers are unaffected.
|
|
2034
2374
|
======================================== */
|
|
2035
2375
|
|
|
2036
|
-
/*
|
|
2037
|
-
.
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
cursor: pointer;
|
|
2041
|
-
transition: color var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2042
|
-
}
|
|
2043
|
-
|
|
2044
|
-
.kds-link:hover {
|
|
2045
|
-
color: var(--kds-color-primary-dark);
|
|
2046
|
-
text-decoration: underline;
|
|
2376
|
+
/* `progress` is inline-block by default → leaves a baseline (descender) gap
|
|
2377
|
+
below the bar. Block removes that gap so it sits flush with siblings. */
|
|
2378
|
+
.kds-progress {
|
|
2379
|
+
display: block;
|
|
2047
2380
|
}
|
|
2048
2381
|
|
|
2049
|
-
/*
|
|
2050
|
-
.
|
|
2051
|
-
.kds-
|
|
2052
|
-
|
|
2053
|
-
text-decoration: none;
|
|
2054
|
-
transition: color var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2382
|
+
/* Animate the filled value when it changes (e.g. advancing a step). BeerCSS
|
|
2383
|
+
sets the value background but no transition, so the width jumps abruptly. */
|
|
2384
|
+
.kds-progress::-webkit-progress-value {
|
|
2385
|
+
transition: width var(--kds-transition-standard) var(--kds-easing-standard);
|
|
2055
2386
|
}
|
|
2056
2387
|
|
|
2057
|
-
.kds-
|
|
2058
|
-
|
|
2059
|
-
color: var(--kds-color-primary-dark);
|
|
2060
|
-
text-decoration: underline;
|
|
2388
|
+
.kds-progress::-moz-progress-bar {
|
|
2389
|
+
transition: width var(--kds-transition-standard) var(--kds-easing-standard);
|
|
2061
2390
|
}
|
|
2062
2391
|
|
|
2063
2392
|
/* ========================================
|
|
2064
|
-
|
|
2393
|
+
KDS SECURE LOADER
|
|
2394
|
+
Loader de espera: anillo circular + candado centrado + frases opcionales.
|
|
2395
|
+
El anillo reutiliza el spinner circular de BeerCSS, escalado.
|
|
2065
2396
|
======================================== */
|
|
2066
2397
|
|
|
2067
|
-
|
|
2068
|
-
body.kds-layout {
|
|
2398
|
+
.kds-secure-loader {
|
|
2069
2399
|
display: flex;
|
|
2070
2400
|
flex-direction: column;
|
|
2071
|
-
|
|
2072
|
-
|
|
2401
|
+
align-items: center;
|
|
2402
|
+
justify-content: center;
|
|
2403
|
+
gap: var(--kds-spacing-4);
|
|
2404
|
+
text-align: center;
|
|
2405
|
+
/* Llena y centra dentro de contenedores flex (pantalla de carga); en flujo
|
|
2406
|
+
normal (contenedor no-flex) se reduce a su contenido. */
|
|
2407
|
+
flex: 1 1 auto;
|
|
2073
2408
|
}
|
|
2074
2409
|
|
|
2075
|
-
|
|
2076
|
-
.kds-layout-container {
|
|
2410
|
+
.kds-secure-loader-text {
|
|
2077
2411
|
display: flex;
|
|
2078
|
-
flex-direction:
|
|
2079
|
-
|
|
2080
|
-
overflow: hidden;
|
|
2412
|
+
flex-direction: column;
|
|
2413
|
+
gap: var(--kds-spacing-0-25);
|
|
2081
2414
|
}
|
|
2082
|
-
/* ========================================
|
|
2083
|
-
Footer Customization
|
|
2084
|
-
======================================== */
|
|
2085
2415
|
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2416
|
+
.kds-secure-loader-title {
|
|
2417
|
+
margin: 0;
|
|
2418
|
+
font-family: var(--kds-font-family-primary);
|
|
2419
|
+
font-size: var(--kds-font-size-h6);
|
|
2420
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
2421
|
+
line-height: var(--kds-line-height-snug);
|
|
2422
|
+
color: var(--kds-color-text-primary);
|
|
2090
2423
|
}
|
|
2091
2424
|
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2425
|
+
.kds-secure-loader-message {
|
|
2426
|
+
margin: 0;
|
|
2427
|
+
/* !important: anula el auto-espaciado de hermanos de BeerCSS (0,5,1);
|
|
2428
|
+
la separación con el título la da el gap del contenedor (spacing-0-25). */
|
|
2429
|
+
margin-top: 0 !important;
|
|
2430
|
+
font-family: var(--kds-font-family-secondary);
|
|
2431
|
+
font-size: var(--kds-font-size-body1);
|
|
2432
|
+
line-height: var(--kds-line-height-normal);
|
|
2433
|
+
color: var(--kds-color-primary-main);
|
|
2096
2434
|
}
|
|
2097
2435
|
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2436
|
+
/* Caja del spinner con tamaño fijo: la animación no altera el layout.
|
|
2437
|
+
6.25rem (100px) = tamaño del loader original (CircularProgress size=100). */
|
|
2438
|
+
.kds-secure-loader-spinner {
|
|
2439
|
+
position: relative;
|
|
2440
|
+
display: inline-grid;
|
|
2441
|
+
place-items: center;
|
|
2442
|
+
inline-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2443
|
+
block-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2105
2444
|
}
|
|
2106
2445
|
|
|
2107
|
-
|
|
2108
|
-
|
|
2446
|
+
/* Anillo: SVG nativo con arco vía stroke-dasharray. Replica el CircularProgress
|
|
2447
|
+
original (viewBox 44u, thickness 2, arco ~63%, disableShrink). El giro se anima
|
|
2448
|
+
con stroke-dashoffset (el círculo queda estático y nítido); rotar el SVG con
|
|
2449
|
+
transform rasteriza el anillo y se ve irregular durante el giro. */
|
|
2450
|
+
.kds-secure-loader-ring {
|
|
2451
|
+
inline-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2452
|
+
block-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2109
2453
|
}
|
|
2110
2454
|
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2455
|
+
.kds-secure-loader-ring circle {
|
|
2456
|
+
fill: none;
|
|
2457
|
+
stroke: var(--kds-color-primary-main);
|
|
2458
|
+
stroke-width: 2;
|
|
2459
|
+
stroke-linecap: round;
|
|
2460
|
+
/* circunferencia = 2π·20.2 ≈ 126.92; arco visible 80 (~63%) + hueco 46.92 */
|
|
2461
|
+
stroke-dasharray: 80 46.92;
|
|
2462
|
+
animation: kds-secure-loader-dash 1.2s linear infinite;
|
|
2463
|
+
}
|
|
2114
2464
|
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2465
|
+
@keyframes kds-secure-loader-dash {
|
|
2466
|
+
to {
|
|
2467
|
+
stroke-dashoffset: -126.92;
|
|
2468
|
+
}
|
|
2469
|
+
}
|
|
2470
|
+
|
|
2471
|
+
/* Candado centrado sobre el anillo (~0.3 del diámetro). Centrado explícito
|
|
2472
|
+
(top/left 50% + translate) para que no dependa del grid ni se recorte. */
|
|
2473
|
+
.kds-secure-loader-lock {
|
|
2474
|
+
position: absolute;
|
|
2475
|
+
top: 50%;
|
|
2476
|
+
left: 50%;
|
|
2477
|
+
transform: translate(-50%, -50%);
|
|
2478
|
+
color: var(--kds-color-text-secondary);
|
|
2479
|
+
font-size: calc(var(--kds-secure-loader-size, 6.25rem) * 0.3);
|
|
2480
|
+
line-height: 1;
|
|
2481
|
+
pointer-events: none;
|
|
2482
|
+
}
|
|
2483
|
+
|
|
2484
|
+
/* ========================================
|
|
2485
|
+
KDS COPY BUTTON
|
|
2486
|
+
Chip compacto que muestra un valor + icono copy y lo copia al click.
|
|
2487
|
+
Acción inline (distinto de KdsCopyRow). Look del copy button de khenshin.
|
|
2488
|
+
======================================== */
|
|
2489
|
+
|
|
2490
|
+
.kds-copy-button {
|
|
2491
|
+
display: inline-flex;
|
|
2492
|
+
align-items: center;
|
|
2493
|
+
gap: var(--kds-spacing-1);
|
|
2494
|
+
padding: var(--kds-spacing-0-25) var(--kds-spacing-1-5);
|
|
2495
|
+
/* No usar el alto de botón táctil de BeerCSS (~44px): es un chip compacto,
|
|
2496
|
+
su alto lo define el contenido + padding. */
|
|
2497
|
+
block-size: auto;
|
|
2498
|
+
min-block-size: 0;
|
|
2499
|
+
border: none;
|
|
2500
|
+
border-radius: var(--kds-radius-button);
|
|
2501
|
+
background: var(--kds-alert-info-bg);
|
|
2502
|
+
color: var(--kds-color-info-dark);
|
|
2503
|
+
font-family: var(--kds-font-family-secondary);
|
|
2504
|
+
font-size: var(--kds-font-size-sm);
|
|
2505
|
+
font-weight: var(--kds-font-weight-medium);
|
|
2506
|
+
line-height: var(--kds-line-height-normal);
|
|
2507
|
+
cursor: pointer;
|
|
2508
|
+
transition: background-color var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
2509
|
+
color var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2510
|
+
}
|
|
2511
|
+
|
|
2512
|
+
/* active = hover: sin el aro de focus/active (outline morado de BeerCSS). */
|
|
2513
|
+
.kds-copy-button:focus,
|
|
2514
|
+
.kds-copy-button:focus-visible,
|
|
2515
|
+
.kds-copy-button:active {
|
|
2516
|
+
outline: none;
|
|
2517
|
+
}
|
|
2518
|
+
|
|
2519
|
+
/* value y copiedText se apilan en la MISMA celda de grid: la celda toma el
|
|
2520
|
+
ancho del texto más largo, por lo que el botón conserva su ancho al alternar
|
|
2521
|
+
entre "valor" y "copiado" (sin reflow). */
|
|
2522
|
+
.kds-copy-button-label {
|
|
2523
|
+
display: inline-grid;
|
|
2524
|
+
}
|
|
2525
|
+
|
|
2526
|
+
.kds-copy-button-value,
|
|
2527
|
+
.kds-copy-button-copied {
|
|
2528
|
+
grid-area: 1 / 1;
|
|
2529
|
+
white-space: nowrap;
|
|
2530
|
+
}
|
|
2531
|
+
|
|
2532
|
+
/* Estado por defecto: visible el valor, oculto (pero ocupando espacio) el copiado */
|
|
2533
|
+
.kds-copy-button-copied {
|
|
2534
|
+
visibility: hidden;
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
/* Al copiar se invierte la visibilidad; el ancho no cambia */
|
|
2538
|
+
.kds-copy-button.copied .kds-copy-button-value {
|
|
2539
|
+
visibility: hidden;
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
.kds-copy-button.copied .kds-copy-button-copied {
|
|
2543
|
+
visibility: visible;
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2546
|
+
.kds-copy-button .material-symbols-outlined {
|
|
2547
|
+
font-size: 1rem;
|
|
2548
|
+
color: var(--kds-color-info-main);
|
|
2549
|
+
flex-shrink: 0;
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
/* Dark mode: info-dark text is near-invisible on the dark translucent chip.
|
|
2553
|
+
Use the alert info text token (light blue in dark), same pattern as KdsAlert;
|
|
2554
|
+
the copied state already uses alert-success-text and adapts on its own. */
|
|
2555
|
+
[data-theme="dark"] .kds-copy-button {
|
|
2556
|
+
color: var(--kds-alert-info-text);
|
|
2557
|
+
}
|
|
2558
|
+
|
|
2559
|
+
[data-theme="dark"] .kds-copy-button .material-symbols-outlined {
|
|
2560
|
+
color: var(--kds-alert-info-text);
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
.kds-copy-button.copied {
|
|
2564
|
+
background: var(--kds-alert-success-bg);
|
|
2565
|
+
color: var(--kds-alert-success-text);
|
|
2566
|
+
animation: kds-copy-button-pulse var(--kds-transition-short) var(--kds-easing-standard);
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2569
|
+
.kds-copy-button.copied .material-symbols-outlined {
|
|
2570
|
+
color: var(--kds-color-success-main);
|
|
2571
|
+
/* el check entra con un pop al copiar */
|
|
2572
|
+
animation: kds-copy-button-pop var(--kds-transition-short) var(--kds-easing-standard);
|
|
2573
|
+
}
|
|
2574
|
+
|
|
2575
|
+
@keyframes kds-copy-button-pulse {
|
|
2576
|
+
0% {
|
|
2577
|
+
transform: scale(1);
|
|
2578
|
+
}
|
|
2579
|
+
50% {
|
|
2580
|
+
transform: scale(1.04);
|
|
2581
|
+
}
|
|
2582
|
+
100% {
|
|
2583
|
+
transform: scale(1);
|
|
2584
|
+
}
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
@keyframes kds-copy-button-pop {
|
|
2588
|
+
0% {
|
|
2589
|
+
transform: scale(0.3);
|
|
2590
|
+
opacity: 0;
|
|
2591
|
+
}
|
|
2592
|
+
60% {
|
|
2593
|
+
transform: scale(1.25);
|
|
2594
|
+
opacity: 1;
|
|
2595
|
+
}
|
|
2596
|
+
100% {
|
|
2597
|
+
transform: scale(1);
|
|
2598
|
+
}
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
/* ========================================
|
|
2602
|
+
Link Styles
|
|
2603
|
+
======================================== */
|
|
2604
|
+
|
|
2605
|
+
/* Explicit link class */
|
|
2606
|
+
.kds-link {
|
|
2607
|
+
color: var(--kds-color-primary-main);
|
|
2608
|
+
text-decoration: none;
|
|
2609
|
+
cursor: pointer;
|
|
2610
|
+
transition: color var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2611
|
+
}
|
|
2612
|
+
|
|
2613
|
+
.kds-link:hover {
|
|
2614
|
+
color: var(--kds-color-primary-dark);
|
|
2615
|
+
text-decoration: underline;
|
|
2616
|
+
}
|
|
2617
|
+
|
|
2618
|
+
/* Dark: hover lightens (primary-dark is near-invisible on dark surfaces). */
|
|
2619
|
+
[data-theme="dark"] .kds-link:hover {
|
|
2620
|
+
color: var(--kds-color-primary-light);
|
|
2621
|
+
}
|
|
2622
|
+
|
|
2623
|
+
/* Contextual links inside cards and stage forms */
|
|
2624
|
+
.kds-card-body a:not(.kds-btn):not([class*="kds-btn"]),
|
|
2625
|
+
.kds-stage-content a:not(.kds-btn):not([class*="kds-btn"]),
|
|
2626
|
+
label.checkbox a:not(.kds-btn):not([class*="kds-btn"]),
|
|
2627
|
+
label.radio a:not(.kds-btn):not([class*="kds-btn"]) {
|
|
2628
|
+
color: var(--kds-color-primary-main);
|
|
2629
|
+
text-decoration: none;
|
|
2630
|
+
transition: color var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2631
|
+
}
|
|
2632
|
+
|
|
2633
|
+
.kds-card-body a:not(.kds-btn):not([class*="kds-btn"]):hover,
|
|
2634
|
+
.kds-stage-content a:not(.kds-btn):not([class*="kds-btn"]):hover,
|
|
2635
|
+
label.checkbox a:not(.kds-btn):not([class*="kds-btn"]):hover,
|
|
2636
|
+
label.radio a:not(.kds-btn):not([class*="kds-btn"]):hover {
|
|
2637
|
+
color: var(--kds-color-primary-dark);
|
|
2638
|
+
text-decoration: underline;
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2641
|
+
/* Dark: hover must lighten (primary-dark is near-invisible on a dark surface). */
|
|
2642
|
+
[data-theme="dark"] .kds-card-body a:not(.kds-btn):not([class*="kds-btn"]):hover,
|
|
2643
|
+
[data-theme="dark"] .kds-stage-content a:not(.kds-btn):not([class*="kds-btn"]):hover,
|
|
2644
|
+
[data-theme="dark"] label.checkbox a:not(.kds-btn):not([class*="kds-btn"]):hover,
|
|
2645
|
+
[data-theme="dark"] label.radio a:not(.kds-btn):not([class*="kds-btn"]):hover {
|
|
2646
|
+
color: var(--kds-color-primary-light);
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
/* ========================================
|
|
2650
|
+
Flex Layout System (Body + Container + Sidebar)
|
|
2651
|
+
======================================== */
|
|
2652
|
+
|
|
2653
|
+
/* Body flex-column layout */
|
|
2654
|
+
body.kds-layout {
|
|
2655
|
+
display: flex;
|
|
2656
|
+
flex-direction: column;
|
|
2657
|
+
min-height: 100vh;
|
|
2658
|
+
margin: 0;
|
|
2659
|
+
}
|
|
2660
|
+
|
|
2661
|
+
/* Layout container (flex-row) - below header */
|
|
2662
|
+
.kds-layout-container {
|
|
2663
|
+
display: flex;
|
|
2664
|
+
flex-direction: row;
|
|
2665
|
+
flex: 1;
|
|
2666
|
+
overflow: hidden;
|
|
2667
|
+
}
|
|
2668
|
+
/* ========================================
|
|
2669
|
+
Footer Customization
|
|
2670
|
+
======================================== */
|
|
2671
|
+
|
|
2672
|
+
footer.primary {
|
|
2673
|
+
background: var(--primary);
|
|
2674
|
+
padding: var(--kds-spacing-4) var(--kds-spacing-3);
|
|
2675
|
+
color: var(--on-primary);
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2678
|
+
footer.primary h6 {
|
|
2679
|
+
color: var(--on-primary);
|
|
2680
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
2681
|
+
margin-bottom: var(--kds-spacing-2);
|
|
2682
|
+
}
|
|
2683
|
+
|
|
2684
|
+
footer.primary a {
|
|
2685
|
+
color: var(--on-primary);
|
|
2686
|
+
text-decoration: none;
|
|
2687
|
+
display: block;
|
|
2688
|
+
padding: var(--kds-spacing-0-5) 0;
|
|
2689
|
+
transition: opacity var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2690
|
+
text-align: center;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
footer.primary a:hover {
|
|
2694
|
+
opacity: 0.8;
|
|
2695
|
+
}
|
|
2696
|
+
|
|
2697
|
+
/* ========================================
|
|
2698
|
+
Form Inputs (Material Design 3)
|
|
2699
|
+
======================================== */
|
|
2700
|
+
|
|
2701
|
+
/* Form labels */
|
|
2702
|
+
.field label,
|
|
2703
|
+
.kds-form-label {
|
|
2704
|
+
font-size: 14px;
|
|
2119
2705
|
font-weight: 500;
|
|
2120
2706
|
color: var(--kds-color-text-primary);
|
|
2121
2707
|
margin-bottom: 8px;
|
|
@@ -2130,6 +2716,16 @@ footer.primary a:hover {
|
|
|
2130
2716
|
margin-right: var(--kds-spacing-2);
|
|
2131
2717
|
}
|
|
2132
2718
|
|
|
2719
|
+
/* Ícono(s) en color primary. Para íconos MUI/SVG dentro del scope que, por el reset
|
|
2720
|
+
`.kds-theme-root svg { fill: currentColor }`, terminan heredando el color de texto
|
|
2721
|
+
(#333) en vez de su color propio — el `color="primary"` de MUI no le gana al contexto.
|
|
2722
|
+
Aplica al contenedor y a sus i/svg hijos. */
|
|
2723
|
+
.kds-icon-primary,
|
|
2724
|
+
.kds-icon-primary i,
|
|
2725
|
+
.kds-icon-primary svg {
|
|
2726
|
+
color: var(--kds-color-primary-main);
|
|
2727
|
+
}
|
|
2728
|
+
|
|
2133
2729
|
/* Section title icon */
|
|
2134
2730
|
.kds-stage-section-title i {
|
|
2135
2731
|
vertical-align: middle;
|
|
@@ -2144,7 +2740,8 @@ footer.primary a:hover {
|
|
|
2144
2740
|
/* === VARIABLES GLOBALES === */
|
|
2145
2741
|
:root,
|
|
2146
2742
|
body.light,
|
|
2147
|
-
body.dark
|
|
2743
|
+
body.dark,
|
|
2744
|
+
[data-theme="dark"] {
|
|
2148
2745
|
--primary: var(--kds-color-primary-main); /* Purple Khipu - Focus */
|
|
2149
2746
|
--outline: var(--kds-color-input-enabled-border); /* Gris normal - Unfocused */
|
|
2150
2747
|
--error: var(--kds-color-error-main); /* Rojo - Invalid */
|
|
@@ -2172,6 +2769,14 @@ body.dark {
|
|
|
2172
2769
|
padding-block-start: 1.5rem;
|
|
2173
2770
|
}
|
|
2174
2771
|
|
|
2772
|
+
/* Label en reposo (estado "abajo", como placeholder): font-size menor al 1rem de BeerCSS
|
|
2773
|
+
para que un label largo no estorbe con un ícono (prefix/suffix) del input. Token sm
|
|
2774
|
+
(13–14px, siempre < 1rem del input incluso en desktop). Al flotar, BeerCSS lo reduce a
|
|
2775
|
+
.75rem con mayor especificidad, así que esto solo afecta el reposo. */
|
|
2776
|
+
.field.label > label {
|
|
2777
|
+
font-size: var(--kds-font-size-sm);
|
|
2778
|
+
}
|
|
2779
|
+
|
|
2175
2780
|
/* ==========================================
|
|
2176
2781
|
NOTCH VISIBILITY (opacity)
|
|
2177
2782
|
========================================== */
|
|
@@ -2293,6 +2898,23 @@ body.dark {
|
|
|
2293
2898
|
color: var(--error); /* Rojo error */
|
|
2294
2899
|
}
|
|
2295
2900
|
|
|
2901
|
+
/* ==========================================
|
|
2902
|
+
PASSWORD REVEAL TOGGLE (KdsTextField `revealable`)
|
|
2903
|
+
El <a role="button"> reusa el posicionamiento de icono de BeerCSS
|
|
2904
|
+
(.field > a, pointer-events: all). Aquí solo: color del icono
|
|
2905
|
+
(on-surface-variant) y un focus ring accesible para el toggle
|
|
2906
|
+
navegable por teclado (BeerCSS hace `outline: inherit` en <a>).
|
|
2907
|
+
========================================== */
|
|
2908
|
+
.field > a.kds-field-reveal {
|
|
2909
|
+
color: var(--on-surface-variant);
|
|
2910
|
+
}
|
|
2911
|
+
|
|
2912
|
+
.field > a.kds-field-reveal:focus-visible {
|
|
2913
|
+
outline: 2px solid var(--primary);
|
|
2914
|
+
outline-offset: 2px;
|
|
2915
|
+
border-radius: 50%;
|
|
2916
|
+
}
|
|
2917
|
+
|
|
2296
2918
|
/* ==========================================
|
|
2297
2919
|
LABEL COLOR
|
|
2298
2920
|
Mantener sincronizado con border
|
|
@@ -2303,9 +2925,9 @@ body.dark {
|
|
|
2303
2925
|
color: var(--kds-color-text-secondary);
|
|
2304
2926
|
}
|
|
2305
2927
|
|
|
2306
|
-
/* Hover SIN focus:
|
|
2928
|
+
/* Hover SIN focus: máxima emphasis (adapta a blanco en dark) */
|
|
2307
2929
|
.field.label:hover:not(:focus-within) > label {
|
|
2308
|
-
color:
|
|
2930
|
+
color: var(--kds-color-text-primary);
|
|
2309
2931
|
}
|
|
2310
2932
|
|
|
2311
2933
|
/* Focus: primary purple (BeerCSS ya lo hace, pero aseguramos) */
|
|
@@ -2400,6 +3022,71 @@ body.dark {
|
|
|
2400
3022
|
display: inline-flex;
|
|
2401
3023
|
}
|
|
2402
3024
|
|
|
3025
|
+
/* ========================================
|
|
3026
|
+
Radix Tooltip (.kds-tooltip)
|
|
3027
|
+
Espejo de `.tooltip` pero para popovers de Radix:
|
|
3028
|
+
bg oscuro, texto blanco, sombra + animación fade/slide direccional.
|
|
3029
|
+
======================================== */
|
|
3030
|
+
|
|
3031
|
+
.kds-tooltip {
|
|
3032
|
+
background-color: var(--kds-color-text-primary);
|
|
3033
|
+
color: var(--kds-color-background-paper);
|
|
3034
|
+
font-family: var(--kds-font-family-primary);
|
|
3035
|
+
font-size: var(--kds-font-size-xs);
|
|
3036
|
+
font-weight: var(--kds-font-weight-medium);
|
|
3037
|
+
line-height: var(--kds-line-height-normal);
|
|
3038
|
+
border-radius: var(--kds-radius-sm);
|
|
3039
|
+
padding: var(--kds-spacing-0-75) var(--kds-spacing-1-5);
|
|
3040
|
+
box-shadow: var(--kds-shadow-4);
|
|
3041
|
+
max-width: 280px;
|
|
3042
|
+
z-index: var(--kds-z-index-tooltip, 1500);
|
|
3043
|
+
user-select: none;
|
|
3044
|
+
/* Animación direccional según Radix data-side — coordinada con copy-row
|
|
3045
|
+
(cubic-bezier 0.2, 0.8, 0.2, 1) para un feel consistente del DS. */
|
|
3046
|
+
animation-duration: 240ms;
|
|
3047
|
+
animation-timing-function: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
3048
|
+
will-change: transform, opacity;
|
|
3049
|
+
}
|
|
3050
|
+
|
|
3051
|
+
.kds-tooltip[data-state='closed'] {
|
|
3052
|
+
animation-duration: 140ms;
|
|
3053
|
+
animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
|
|
3054
|
+
}
|
|
3055
|
+
|
|
3056
|
+
/* Direccional según data-side (Radix añade el attr en runtime).
|
|
3057
|
+
Cada lado entra desde su dirección con ~8px de offset (más visible que 4px). */
|
|
3058
|
+
.kds-tooltip[data-side='top'][data-state='delayed-open'],
|
|
3059
|
+
.kds-tooltip[data-side='top'][data-state='instant-open'] { animation-name: kds-tooltip-in-top; }
|
|
3060
|
+
.kds-tooltip[data-side='bottom'][data-state='delayed-open'],
|
|
3061
|
+
.kds-tooltip[data-side='bottom'][data-state='instant-open'] { animation-name: kds-tooltip-in-bottom; }
|
|
3062
|
+
.kds-tooltip[data-side='left'][data-state='delayed-open'],
|
|
3063
|
+
.kds-tooltip[data-side='left'][data-state='instant-open'] { animation-name: kds-tooltip-in-left; }
|
|
3064
|
+
.kds-tooltip[data-side='right'][data-state='delayed-open'],
|
|
3065
|
+
.kds-tooltip[data-side='right'][data-state='instant-open'] { animation-name: kds-tooltip-in-right; }
|
|
3066
|
+
|
|
3067
|
+
/* Fallback cuando no hay data-side resuelto aún */
|
|
3068
|
+
.kds-tooltip[data-state='delayed-open']:not([data-side]),
|
|
3069
|
+
.kds-tooltip[data-state='instant-open']:not([data-side]) {
|
|
3070
|
+
animation-name: kds-tooltip-in-top;
|
|
3071
|
+
}
|
|
3072
|
+
|
|
3073
|
+
.kds-tooltip[data-state='closed'] { animation-name: kds-tooltip-out; }
|
|
3074
|
+
|
|
3075
|
+
@keyframes kds-tooltip-in-top { from { opacity: 0; transform: translateY(8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
3076
|
+
@keyframes kds-tooltip-in-bottom { from { opacity: 0; transform: translateY(-8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
3077
|
+
@keyframes kds-tooltip-in-left { from { opacity: 0; transform: translateX(8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
3078
|
+
@keyframes kds-tooltip-in-right { from { opacity: 0; transform: translateX(-8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
3079
|
+
|
|
3080
|
+
@keyframes kds-tooltip-out {
|
|
3081
|
+
from { opacity: 1; transform: none; }
|
|
3082
|
+
to { opacity: 0; transform: scale(0.96); }
|
|
3083
|
+
}
|
|
3084
|
+
|
|
3085
|
+
/* Arrow (SVG path generado por Radix) */
|
|
3086
|
+
.kds-tooltip-arrow {
|
|
3087
|
+
fill: var(--kds-color-text-primary);
|
|
3088
|
+
}
|
|
3089
|
+
|
|
2403
3090
|
/* ========================================
|
|
2404
3091
|
Material Symbols Icon Sizing
|
|
2405
3092
|
======================================== */
|
|
@@ -2410,8 +3097,13 @@ body.dark {
|
|
|
2410
3097
|
'wght' 400,
|
|
2411
3098
|
'GRAD' 0,
|
|
2412
3099
|
'opsz' 24;
|
|
2413
|
-
|
|
2414
|
-
|
|
3100
|
+
/* La caja debe seguir al font-size (1em): una caja fija (30px, o el --_size de Beer via
|
|
3101
|
+
overflow:hidden en `i`) recorta los glifos mayores y descentra los menores junto a texto. */
|
|
3102
|
+
width: 1em;
|
|
3103
|
+
height: 1em;
|
|
3104
|
+
min-width: 1em;
|
|
3105
|
+
min-height: 1em;
|
|
3106
|
+
line-height: 1;
|
|
2415
3107
|
display: inline-flex;
|
|
2416
3108
|
align-items: center;
|
|
2417
3109
|
justify-content: center;
|
|
@@ -2434,6 +3126,16 @@ body.dark {
|
|
|
2434
3126
|
width: 100%;
|
|
2435
3127
|
}
|
|
2436
3128
|
|
|
3129
|
+
/* Truncado en una línea con ellipsis. Incluye min-width:0 para que funcione
|
|
3130
|
+
dentro de contenedores flex/grid (el ítem puede encogerse por debajo de su
|
|
3131
|
+
contenido). Útil para nombres/asuntos largos en headers y filas. */
|
|
3132
|
+
.kds-truncate {
|
|
3133
|
+
min-width: 0;
|
|
3134
|
+
overflow: hidden;
|
|
3135
|
+
text-overflow: ellipsis;
|
|
3136
|
+
white-space: nowrap;
|
|
3137
|
+
}
|
|
3138
|
+
|
|
2437
3139
|
.kds-max-w-sm {
|
|
2438
3140
|
max-width: 400px;
|
|
2439
3141
|
}
|
|
@@ -2477,6 +3179,11 @@ body.dark {
|
|
|
2477
3179
|
display: flex;
|
|
2478
3180
|
flex-direction: column;
|
|
2479
3181
|
gap: var(--kds-spacing-3);
|
|
3182
|
+
/* Reset del fieldset nativo: sin borde/padding/margin por defecto del navegador. */
|
|
3183
|
+
margin: 0;
|
|
3184
|
+
padding: 0;
|
|
3185
|
+
border: 0;
|
|
3186
|
+
min-inline-size: 0;
|
|
2480
3187
|
}
|
|
2481
3188
|
|
|
2482
3189
|
/* Checkbox Label - BeerCSS override */
|
|
@@ -2488,7 +3195,7 @@ label.radio {
|
|
|
2488
3195
|
border-radius: 8px;
|
|
2489
3196
|
cursor: pointer;
|
|
2490
3197
|
transition: background-color 0.2s;
|
|
2491
|
-
font-size:
|
|
3198
|
+
font-size: var(--kds-font-size-sm);
|
|
2492
3199
|
line-height: 1.5;
|
|
2493
3200
|
color: var(--kds-color-text-primary);
|
|
2494
3201
|
}
|
|
@@ -2526,6 +3233,42 @@ label.radio:has(input:disabled) {
|
|
|
2526
3233
|
opacity: 0.6;
|
|
2527
3234
|
}
|
|
2528
3235
|
|
|
3236
|
+
/* ========================================
|
|
3237
|
+
RADIO GROUP — variante card (.kds-radio-group--card)
|
|
3238
|
+
Cada opción como fila con borde (estilo selección de banco/cuenta),
|
|
3239
|
+
manteniendo el control radio. Hover + opción seleccionada resaltada.
|
|
3240
|
+
======================================== */
|
|
3241
|
+
.kds-radio-group--card {
|
|
3242
|
+
gap: var(--kds-spacing-2);
|
|
3243
|
+
}
|
|
3244
|
+
|
|
3245
|
+
.kds-radio-group--card label.radio {
|
|
3246
|
+
gap: var(--kds-spacing-1-5);
|
|
3247
|
+
/* Vertical con un poco más de aire; horizontal reducido para pegar el radio a la izquierda. */
|
|
3248
|
+
padding: var(--kds-spacing-2) var(--kds-spacing-1-5);
|
|
3249
|
+
/* Bordes con los valores del bank selector. */
|
|
3250
|
+
border: 1px solid var(--kds-color-border-subtle);
|
|
3251
|
+
border-radius: var(--kds-radius-card);
|
|
3252
|
+
background: var(--kds-color-surface);
|
|
3253
|
+
transition: border-color 0.2s, background 0.2s;
|
|
3254
|
+
}
|
|
3255
|
+
|
|
3256
|
+
/* Leve separación extra entre el radio y el texto de la opción. */
|
|
3257
|
+
.kds-radio-group--card label.radio span {
|
|
3258
|
+
margin-left: var(--kds-spacing-0-5);
|
|
3259
|
+
}
|
|
3260
|
+
|
|
3261
|
+
.kds-radio-group--card label.radio:hover {
|
|
3262
|
+
border-color: var(--kds-color-border-default);
|
|
3263
|
+
}
|
|
3264
|
+
|
|
3265
|
+
/* Seleccionada: poco color primario — solo un fondo faint sutil + borde gris
|
|
3266
|
+
(el punto del radio ya comunica la selección). */
|
|
3267
|
+
.kds-radio-group--card label.radio:has(input:checked) {
|
|
3268
|
+
border-color: var(--kds-color-border-default);
|
|
3269
|
+
background: var(--kds-color-primary-faint);
|
|
3270
|
+
}
|
|
3271
|
+
|
|
2529
3272
|
/* ========================================
|
|
2530
3273
|
ONBOARDING COMPONENTS
|
|
2531
3274
|
Multi-stage onboarding flow with form validation
|
|
@@ -2722,7 +3465,7 @@ dialog.modal .field.border:focus-within {
|
|
|
2722
3465
|
background: var(--kds-accordion-bg-open);
|
|
2723
3466
|
font-size: var(--kds-font-size-sm);
|
|
2724
3467
|
line-height: 1.6;
|
|
2725
|
-
color:
|
|
3468
|
+
color: var(--kds-color-text-primary);
|
|
2726
3469
|
}
|
|
2727
3470
|
|
|
2728
3471
|
.kds-contract-accordion-content h4 {
|
|
@@ -3023,19 +3766,17 @@ footer > .kds-container-center {
|
|
|
3023
3766
|
display: flex;
|
|
3024
3767
|
align-items: center;
|
|
3025
3768
|
gap: var(--kds-spacing-1);
|
|
3026
|
-
|
|
3769
|
+
/* Padding compacto: vertical spacing-1 (8px), horizontal spacing-2 (16px). */
|
|
3770
|
+
padding: var(--kds-spacing-1) var(--kds-spacing-2);
|
|
3027
3771
|
border-radius: var(--kds-radius-md);
|
|
3028
3772
|
border: 1px solid;
|
|
3029
3773
|
font-family: var(--kds-font-family-primary);
|
|
3030
3774
|
min-width: 0;
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
padding: var(--kds-spacing-2);
|
|
3037
|
-
flex: 1 1 auto;
|
|
3038
|
-
}
|
|
3775
|
+
/* Banner: ocupa siempre el ancho del contenedor. width explícito porque como
|
|
3776
|
+
flex item de una columna con align-items:center el cross-axis no se estira.
|
|
3777
|
+
Sin flex-grow para no estirarse verticalmente en contenedores flex-column. */
|
|
3778
|
+
width: 100%;
|
|
3779
|
+
flex: 0 1 auto;
|
|
3039
3780
|
}
|
|
3040
3781
|
|
|
3041
3782
|
.kds-alert:last-child {
|
|
@@ -3061,7 +3802,9 @@ footer > .kds-container-center {
|
|
|
3061
3802
|
font-size: var(--kds-font-size-sm);
|
|
3062
3803
|
font-weight: var(--kds-font-weight-semibold);
|
|
3063
3804
|
line-height: var(--kds-line-height-normal);
|
|
3064
|
-
margin-bottom:
|
|
3805
|
+
/* Solo margin-bottom: el padding del alert da el espaciado. Reset del resto para
|
|
3806
|
+
evitar el margin-block que BeerCSS aplica a <p> dentro del scope. */
|
|
3807
|
+
margin: 0 0 var(--kds-spacing-0-5);
|
|
3065
3808
|
word-break: normal;
|
|
3066
3809
|
overflow-wrap: break-word;
|
|
3067
3810
|
}
|
|
@@ -3071,6 +3814,9 @@ footer > .kds-container-center {
|
|
|
3071
3814
|
font-size: var(--kds-font-size-sm);
|
|
3072
3815
|
font-weight: var(--kds-font-weight-regular);
|
|
3073
3816
|
line-height: var(--kds-line-height-relaxed);
|
|
3817
|
+
/* Sin margen propio: el padding del alert es el único espaciado (evita el
|
|
3818
|
+
margin-block de <p> de BeerCSS dentro del scope). */
|
|
3819
|
+
margin: 0;
|
|
3074
3820
|
word-break: normal;
|
|
3075
3821
|
overflow-wrap: break-word;
|
|
3076
3822
|
}
|
|
@@ -3116,11 +3862,58 @@ footer > .kds-container-center {
|
|
|
3116
3862
|
color: var(--kds-color-error-dark);
|
|
3117
3863
|
}
|
|
3118
3864
|
|
|
3119
|
-
/*
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3865
|
+
/* Dark mode: the semantic *-dark shades used for text/icons above are too dark
|
|
3866
|
+
on the dark translucent alert surfaces (poor visibility). Use the alert
|
|
3867
|
+
*-text tokens (light shades in dark) so title, description and icon stay
|
|
3868
|
+
legible. Title/description inherit this color. Additive — light unchanged. */
|
|
3869
|
+
[data-theme="dark"] .kds-alert.kds-info,
|
|
3870
|
+
[data-theme="dark"] .kds-alert.kds-info .kds-alert-icon {
|
|
3871
|
+
color: var(--kds-alert-info-text);
|
|
3872
|
+
}
|
|
3873
|
+
[data-theme="dark"] .kds-alert.kds-success,
|
|
3874
|
+
[data-theme="dark"] .kds-alert.kds-success .kds-alert-icon {
|
|
3875
|
+
color: var(--kds-alert-success-text);
|
|
3876
|
+
}
|
|
3877
|
+
[data-theme="dark"] .kds-alert.kds-warning,
|
|
3878
|
+
[data-theme="dark"] .kds-alert.kds-warning .kds-alert-icon {
|
|
3879
|
+
color: var(--kds-alert-warning-text);
|
|
3880
|
+
}
|
|
3881
|
+
[data-theme="dark"] .kds-alert.kds-error,
|
|
3882
|
+
[data-theme="dark"] .kds-alert.kds-error .kds-alert-icon {
|
|
3883
|
+
color: var(--kds-alert-error-text);
|
|
3884
|
+
}
|
|
3885
|
+
|
|
3886
|
+
/* Close button — icon-only, discreto, no usa kds-btn para no romper el flex layout del alert */
|
|
3887
|
+
.kds-alert-close {
|
|
3888
|
+
flex-shrink: 0;
|
|
3889
|
+
display: inline-flex;
|
|
3890
|
+
align-items: center;
|
|
3891
|
+
justify-content: center;
|
|
3892
|
+
width: 28px;
|
|
3893
|
+
height: 28px;
|
|
3894
|
+
padding: 0;
|
|
3895
|
+
background: transparent;
|
|
3896
|
+
border: 0;
|
|
3897
|
+
border-radius: 50%;
|
|
3898
|
+
color: inherit;
|
|
3899
|
+
cursor: pointer;
|
|
3900
|
+
transition: background-color 0.15s ease;
|
|
3901
|
+
}
|
|
3902
|
+
|
|
3903
|
+
.kds-alert-close:hover {
|
|
3904
|
+
background: rgba(0, 0, 0, 0.06);
|
|
3905
|
+
}
|
|
3906
|
+
|
|
3907
|
+
.kds-alert-close i {
|
|
3908
|
+
font-size: 18px;
|
|
3909
|
+
line-height: 1;
|
|
3910
|
+
}
|
|
3911
|
+
|
|
3912
|
+
/* Lists inside alerts */
|
|
3913
|
+
.kds-alert ul {
|
|
3914
|
+
padding-left: var(--kds-spacing-2);
|
|
3915
|
+
margin-top: var(--kds-spacing-1);
|
|
3916
|
+
margin-bottom: 0;
|
|
3124
3917
|
}
|
|
3125
3918
|
|
|
3126
3919
|
/* Links inside alerts */
|
|
@@ -3718,6 +4511,11 @@ footer > .kds-container-center {
|
|
|
3718
4511
|
color: var(--kds-color-primary-dark);
|
|
3719
4512
|
}
|
|
3720
4513
|
|
|
4514
|
+
/* Dark: hover lightens (primary-dark is near-invisible on dark surfaces). */
|
|
4515
|
+
[data-theme="dark"] .page-card-link:hover {
|
|
4516
|
+
color: var(--kds-color-primary-light);
|
|
4517
|
+
}
|
|
4518
|
+
|
|
3721
4519
|
.page-card-link i {
|
|
3722
4520
|
font-size: var(--kds-font-size-xl);
|
|
3723
4521
|
transition: transform var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
@@ -4112,6 +4910,14 @@ dialog#surveyModal button.circle {
|
|
|
4112
4910
|
text-align: center;
|
|
4113
4911
|
}
|
|
4114
4912
|
|
|
4913
|
+
.kds-text-left {
|
|
4914
|
+
text-align: left;
|
|
4915
|
+
}
|
|
4916
|
+
|
|
4917
|
+
.kds-text-right {
|
|
4918
|
+
text-align: right;
|
|
4919
|
+
}
|
|
4920
|
+
|
|
4115
4921
|
.kds-text-underline {
|
|
4116
4922
|
text-decoration: underline;
|
|
4117
4923
|
}
|
|
@@ -4124,10 +4930,62 @@ dialog#surveyModal button.circle {
|
|
|
4124
4930
|
color: var(--on-surface-variant);
|
|
4125
4931
|
}
|
|
4126
4932
|
|
|
4933
|
+
.kds-text-primary {
|
|
4934
|
+
color: var(--kds-color-primary-main);
|
|
4935
|
+
}
|
|
4936
|
+
|
|
4127
4937
|
.kds-text-sm {
|
|
4128
4938
|
font-size: var(--kds-font-size-sm);
|
|
4129
4939
|
}
|
|
4130
4940
|
|
|
4941
|
+
/* ── Font-size scale utilities (additive — opt-in companions to .kds-text-sm) ── */
|
|
4942
|
+
.kds-text-base {
|
|
4943
|
+
font-size: var(--kds-font-size-base);
|
|
4944
|
+
}
|
|
4945
|
+
|
|
4946
|
+
.kds-text-lg {
|
|
4947
|
+
font-size: var(--kds-font-size-lg);
|
|
4948
|
+
}
|
|
4949
|
+
|
|
4950
|
+
.kds-text-xl {
|
|
4951
|
+
font-size: var(--kds-font-size-xl);
|
|
4952
|
+
}
|
|
4953
|
+
|
|
4954
|
+
.kds-text-2xl {
|
|
4955
|
+
font-size: var(--kds-font-size-2xl);
|
|
4956
|
+
}
|
|
4957
|
+
|
|
4958
|
+
/* ── Font-weight utilities ── */
|
|
4959
|
+
.kds-fw-regular {
|
|
4960
|
+
font-weight: var(--kds-font-weight-regular);
|
|
4961
|
+
}
|
|
4962
|
+
|
|
4963
|
+
.kds-fw-medium {
|
|
4964
|
+
font-weight: var(--kds-font-weight-medium);
|
|
4965
|
+
}
|
|
4966
|
+
|
|
4967
|
+
.kds-fw-semibold {
|
|
4968
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
4969
|
+
}
|
|
4970
|
+
|
|
4971
|
+
.kds-fw-bold {
|
|
4972
|
+
font-weight: var(--kds-font-weight-bold);
|
|
4973
|
+
}
|
|
4974
|
+
|
|
4975
|
+
/* ── Text-transform utilities ── */
|
|
4976
|
+
.kds-text-transform-none {
|
|
4977
|
+
text-transform: none;
|
|
4978
|
+
}
|
|
4979
|
+
|
|
4980
|
+
/* ── Soft background utilities (semantic muted backgrounds for callouts) ── */
|
|
4981
|
+
.kds-bg-warning-soft {
|
|
4982
|
+
background-color: var(--kds-color-warning-soft);
|
|
4983
|
+
}
|
|
4984
|
+
|
|
4985
|
+
.kds-bg-info-soft {
|
|
4986
|
+
background-color: var(--kds-color-info-soft);
|
|
4987
|
+
}
|
|
4988
|
+
|
|
4131
4989
|
/* ── Typography variants ── */
|
|
4132
4990
|
.kds-text-display1 {
|
|
4133
4991
|
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
@@ -4205,7 +5063,50 @@ dialog#surveyModal button.circle {
|
|
|
4205
5063
|
text-transform: uppercase;
|
|
4206
5064
|
}
|
|
4207
5065
|
|
|
5066
|
+
/* KV label — label del par clave↔valor (letra del dt de .kds-kv: "PAGO A" / "ASUNTO").
|
|
5067
|
+
line-height tight: en pares apilados el relaxed infla la separación de tinta. */
|
|
5068
|
+
.kds-text-kv-label {
|
|
5069
|
+
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5070
|
+
font-size: var(--kds-font-size-xs);
|
|
5071
|
+
font-weight: var(--kds-font-weight-regular);
|
|
5072
|
+
line-height: var(--kds-line-height-tight);
|
|
5073
|
+
letter-spacing: normal;
|
|
5074
|
+
text-transform: uppercase;
|
|
5075
|
+
color: var(--kds-color-text-secondary);
|
|
5076
|
+
}
|
|
5077
|
+
|
|
5078
|
+
/* Value — dato/valor destacado (ej. nombre del comercio en el header del cobro).
|
|
5079
|
+
line-height tight: se usa en pares apilados y el relaxed infla la separación. */
|
|
5080
|
+
.kds-text-value {
|
|
5081
|
+
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5082
|
+
font-size: var(--kds-font-size-sm);
|
|
5083
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5084
|
+
line-height: var(--kds-line-height-tight);
|
|
5085
|
+
color: var(--kds-color-gray-800);
|
|
5086
|
+
}
|
|
5087
|
+
|
|
5088
|
+
/* Code — texto tipo código/referencia (mono, uppercase, gris), como el "CÓDIGO" del header. */
|
|
5089
|
+
.kds-text-code {
|
|
5090
|
+
font-family: var(--kds-font-family-mono);
|
|
5091
|
+
font-size: var(--kds-font-size-xs);
|
|
5092
|
+
font-weight: var(--kds-font-weight-regular);
|
|
5093
|
+
letter-spacing: var(--kds-letter-spacing-wider);
|
|
5094
|
+
font-variant-numeric: tabular-nums;
|
|
5095
|
+
color: var(--kds-color-gray-400);
|
|
5096
|
+
text-transform: uppercase;
|
|
5097
|
+
}
|
|
5098
|
+
|
|
5099
|
+
/* Caption — texto muy chico y liviano para pie de página (ej. número de versión). */
|
|
5100
|
+
.kds-text-caption {
|
|
5101
|
+
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5102
|
+
font-size: var(--kds-font-size-2xs);
|
|
5103
|
+
font-weight: var(--kds-font-weight-regular);
|
|
5104
|
+
line-height: var(--kds-line-height-normal);
|
|
5105
|
+
color: var(--kds-color-gray-400);
|
|
5106
|
+
}
|
|
5107
|
+
|
|
4208
5108
|
.kds-text-link {
|
|
5109
|
+
cursor: pointer;
|
|
4209
5110
|
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
4210
5111
|
font-size: inherit;
|
|
4211
5112
|
font-weight: var(--kds-font-weight-medium, 500);
|
|
@@ -4218,6 +5119,12 @@ dialog#surveyModal button.circle {
|
|
|
4218
5119
|
color: var(--kds-color-primary-dark, #5B3179);
|
|
4219
5120
|
}
|
|
4220
5121
|
|
|
5122
|
+
/* Inline emphasis: bold weight only, inherits size/color/family from context so it
|
|
5123
|
+
works as a highlighted fragment inside any other variant (body, heading, etc.). */
|
|
5124
|
+
.kds-text-strong {
|
|
5125
|
+
font-weight: var(--kds-font-weight-bold, 700);
|
|
5126
|
+
}
|
|
5127
|
+
|
|
4221
5128
|
/* Display utilities */
|
|
4222
5129
|
.kds-hidden {
|
|
4223
5130
|
display: none;
|
|
@@ -4243,13 +5150,13 @@ dialog#surveyModal button.circle {
|
|
|
4243
5150
|
|
|
4244
5151
|
/* Color utilities (solo para casos específicos de demo) */
|
|
4245
5152
|
.kds-text-warning {
|
|
4246
|
-
color: #
|
|
5153
|
+
color: var(--kds-alert-warning-text); /* #663C00 light / #FFB74D dark */
|
|
4247
5154
|
}
|
|
4248
5155
|
|
|
4249
5156
|
.kds-list-warning {
|
|
4250
5157
|
margin: 0;
|
|
4251
5158
|
padding-left: var(--kds-spacing-5);
|
|
4252
|
-
color: #
|
|
5159
|
+
color: var(--kds-alert-warning-text); /* #663C00 light / #FFB74D dark */
|
|
4253
5160
|
}
|
|
4254
5161
|
|
|
4255
5162
|
/* ========================================
|
|
@@ -4307,7 +5214,25 @@ dialog#surveyModal button.circle {
|
|
|
4307
5214
|
flex-shrink: 0;
|
|
4308
5215
|
}
|
|
4309
5216
|
|
|
5217
|
+
/* Versión de la app anclada al fondo del card body (flex column): margin-top
|
|
5218
|
+
auto absorbe el espacio libre; el padding garantiza respiro mínimo cuando el
|
|
5219
|
+
contenido llena la card. */
|
|
5220
|
+
.kds-card-version {
|
|
5221
|
+
margin-top: auto;
|
|
5222
|
+
padding-top: var(--kds-spacing-2);
|
|
5223
|
+
text-align: center;
|
|
5224
|
+
}
|
|
5225
|
+
|
|
5226
|
+
/* Separador vertical (entre chips/logos hermanos en una fila). */
|
|
5227
|
+
.kds-vr {
|
|
5228
|
+
width: 1px;
|
|
5229
|
+
height: var(--kds-spacing-3);
|
|
5230
|
+
background: var(--kds-color-divider);
|
|
5231
|
+
flex: 0 0 auto;
|
|
5232
|
+
}
|
|
5233
|
+
|
|
4310
5234
|
/* Gap utilities */
|
|
5235
|
+
.kds-gap-0-25 { gap: var(--kds-spacing-0-25); }
|
|
4311
5236
|
.kds-gap-1 { gap: var(--kds-spacing-1); }
|
|
4312
5237
|
.kds-gap-2 { gap: var(--kds-spacing-2); }
|
|
4313
5238
|
.kds-gap-3 { gap: var(--kds-spacing-3); }
|
|
@@ -4338,7 +5263,9 @@ dialog#surveyModal button.circle {
|
|
|
4338
5263
|
======================================== */
|
|
4339
5264
|
|
|
4340
5265
|
.kds-badge {
|
|
4341
|
-
display: inline-
|
|
5266
|
+
display: inline-flex;
|
|
5267
|
+
align-items: center;
|
|
5268
|
+
gap: 4px;
|
|
4342
5269
|
padding: 2px 8px;
|
|
4343
5270
|
border-radius: var(--kds-radius-sm);
|
|
4344
5271
|
font-size: var(--kds-font-size-xs);
|
|
@@ -4346,6 +5273,40 @@ dialog#surveyModal button.circle {
|
|
|
4346
5273
|
line-height: 1.5;
|
|
4347
5274
|
}
|
|
4348
5275
|
|
|
5276
|
+
/* Icon prefix inside chip — small inline icon */
|
|
5277
|
+
.kds-badge > i.material-symbols-outlined {
|
|
5278
|
+
font-size: 14px;
|
|
5279
|
+
line-height: 1;
|
|
5280
|
+
}
|
|
5281
|
+
|
|
5282
|
+
/* Deletable chip close button — discreto, sin kds-btn (eso lo agrandaba ridículo) */
|
|
5283
|
+
.kds-badge-close {
|
|
5284
|
+
display: inline-flex;
|
|
5285
|
+
align-items: center;
|
|
5286
|
+
justify-content: center;
|
|
5287
|
+
width: 16px;
|
|
5288
|
+
height: 16px;
|
|
5289
|
+
margin-right: -2px;
|
|
5290
|
+
padding: 0;
|
|
5291
|
+
background: transparent;
|
|
5292
|
+
border: 0;
|
|
5293
|
+
border-radius: 50%;
|
|
5294
|
+
color: inherit;
|
|
5295
|
+
cursor: pointer;
|
|
5296
|
+
opacity: 0.7;
|
|
5297
|
+
transition: opacity 0.15s, background-color 0.15s;
|
|
5298
|
+
}
|
|
5299
|
+
|
|
5300
|
+
.kds-badge-close:hover {
|
|
5301
|
+
opacity: 1;
|
|
5302
|
+
background: rgba(0, 0, 0, 0.1);
|
|
5303
|
+
}
|
|
5304
|
+
|
|
5305
|
+
.kds-badge-close i {
|
|
5306
|
+
font-size: 14px;
|
|
5307
|
+
line-height: 1;
|
|
5308
|
+
}
|
|
5309
|
+
|
|
4349
5310
|
.kds-badge.success {
|
|
4350
5311
|
background-color: var(--kds-color-success-container);
|
|
4351
5312
|
color: var(--kds-color-success-dark);
|
|
@@ -4371,6 +5332,30 @@ dialog#surveyModal button.circle {
|
|
|
4371
5332
|
color: var(--kds-color-primary-dark);
|
|
4372
5333
|
}
|
|
4373
5334
|
|
|
5335
|
+
/* Dark: semantic *-dark text is near-invisible on dark surfaces (and the
|
|
5336
|
+
*-container background tokens are not generated). Use the alert bg/text
|
|
5337
|
+
pairs, which are dark-aware; primary uses selected/light. */
|
|
5338
|
+
[data-theme="dark"] .kds-badge.success {
|
|
5339
|
+
background-color: var(--kds-alert-success-bg);
|
|
5340
|
+
color: var(--kds-alert-success-text);
|
|
5341
|
+
}
|
|
5342
|
+
[data-theme="dark"] .kds-badge.error {
|
|
5343
|
+
background-color: var(--kds-alert-error-bg);
|
|
5344
|
+
color: var(--kds-alert-error-text);
|
|
5345
|
+
}
|
|
5346
|
+
[data-theme="dark"] .kds-badge.warning {
|
|
5347
|
+
background-color: var(--kds-alert-warning-bg);
|
|
5348
|
+
color: var(--kds-alert-warning-text);
|
|
5349
|
+
}
|
|
5350
|
+
[data-theme="dark"] .kds-badge.info {
|
|
5351
|
+
background-color: var(--kds-alert-info-bg);
|
|
5352
|
+
color: var(--kds-alert-info-text);
|
|
5353
|
+
}
|
|
5354
|
+
[data-theme="dark"] .kds-badge.primary {
|
|
5355
|
+
background-color: var(--kds-color-primary-selected);
|
|
5356
|
+
color: var(--kds-color-primary-light);
|
|
5357
|
+
}
|
|
5358
|
+
|
|
4374
5359
|
/* ========================================
|
|
4375
5360
|
DIVIDER WITH TEXT
|
|
4376
5361
|
Separator with optional text
|
|
@@ -4557,21 +5542,46 @@ dialog#surveyModal button.circle {
|
|
|
4557
5542
|
flex-shrink: 0;
|
|
4558
5543
|
}
|
|
4559
5544
|
|
|
4560
|
-
/* Merchant tile with logo variant
|
|
5545
|
+
/* Merchant tile with logo variant — el logo (avatar del comercio) llena TODO el tile.
|
|
5546
|
+
`display: block` evita el desborde del auto-grid; `overflow: hidden` recorta la imagen
|
|
5547
|
+
a las esquinas redondeadas del tile. La imagen va CUADRADA (sin border-radius propio):
|
|
5548
|
+
solo el contenedor recorta, evitando el hairline sub-pixel del doble redondeo. El fondo
|
|
5549
|
+
se deja transparente bajo el logo como respaldo (no debe verse púrpura en los bordes). */
|
|
4561
5550
|
.kds-merchant-tile.logo {
|
|
4562
|
-
padding:
|
|
5551
|
+
padding: 0;
|
|
5552
|
+
display: block;
|
|
5553
|
+
overflow: hidden;
|
|
5554
|
+
background: transparent;
|
|
4563
5555
|
}
|
|
4564
5556
|
|
|
4565
5557
|
.kds-merchant-tile.logo img {
|
|
4566
5558
|
width: 100%;
|
|
4567
5559
|
height: 100%;
|
|
4568
5560
|
object-fit: cover;
|
|
4569
|
-
border-radius:
|
|
5561
|
+
border-radius: 0;
|
|
5562
|
+
display: block;
|
|
5563
|
+
}
|
|
5564
|
+
|
|
5565
|
+
/* Variante para logos que traen su propio marco/forma (logos de comercio/servicio,
|
|
5566
|
+
no fotos): `contain` + padding para que el logo entre completo sin recortar sus
|
|
5567
|
+
esquinas. Opt-in: pasar className="kds-merchant-tile--contain". */
|
|
5568
|
+
.kds-merchant-tile.logo.kds-merchant-tile--contain {
|
|
5569
|
+
padding: var(--kds-spacing-1);
|
|
5570
|
+
}
|
|
5571
|
+
.kds-merchant-tile.logo.kds-merchant-tile--contain img {
|
|
5572
|
+
object-fit: contain;
|
|
4570
5573
|
}
|
|
4571
5574
|
|
|
4572
5575
|
.kds-merchant-meta {
|
|
4573
5576
|
display: flex;
|
|
4574
5577
|
flex-direction: column;
|
|
5578
|
+
gap: var(--kds-spacing-0-5);
|
|
5579
|
+
}
|
|
5580
|
+
|
|
5581
|
+
/* El meta controla su propio espaciado: anula el margin sibling de BeerCSS
|
|
5582
|
+
(`… + :is(p,h*,…) { margin-block-start: 1rem }`) que separaba de más las líneas. */
|
|
5583
|
+
.kds-merchant-meta > * {
|
|
5584
|
+
margin-block: 0 !important;
|
|
4575
5585
|
}
|
|
4576
5586
|
|
|
4577
5587
|
.kds-merchant-label {
|
|
@@ -4624,6 +5634,11 @@ dialog#surveyModal button.circle {
|
|
|
4624
5634
|
color: var(--kds-color-text-primary);
|
|
4625
5635
|
}
|
|
4626
5636
|
|
|
5637
|
+
/* Opt-in color modifier — switches the value to the LigoPay/khipu-blue tone */
|
|
5638
|
+
.kds-amount-value--info {
|
|
5639
|
+
color: var(--kds-color-info-blue); /* #5A5FE0 */
|
|
5640
|
+
}
|
|
5641
|
+
|
|
4627
5642
|
.kds-amount-value small {
|
|
4628
5643
|
font-size: 18px;
|
|
4629
5644
|
font-weight: 500;
|
|
@@ -4830,6 +5845,26 @@ dialog#surveyModal button.circle {
|
|
|
4830
5845
|
background: var(--kds-color-hover-bg);
|
|
4831
5846
|
}
|
|
4832
5847
|
|
|
5848
|
+
/* BeerCSS forces `border-radius: .5rem !important` on button:active
|
|
5849
|
+
(:is(.button,button):not(.chip):active — specificity 0,3,0). Keep each
|
|
5850
|
+
row-button's own radius in the active state: doubled class matches that
|
|
5851
|
+
specificity and this file loads after beer.css, so these win. */
|
|
5852
|
+
.kds-bank-row.kds-bank-row:active {
|
|
5853
|
+
border-radius: var(--kds-radius-card) !important;
|
|
5854
|
+
}
|
|
5855
|
+
.kds-qr-row.kds-qr-row:active {
|
|
5856
|
+
border-radius: var(--kds-radius-card) !important;
|
|
5857
|
+
}
|
|
5858
|
+
.kds-copy-row.kds-copy-row:active {
|
|
5859
|
+
border-radius: var(--kds-radius-row) !important;
|
|
5860
|
+
}
|
|
5861
|
+
.kds-copyable-table-row.kds-copyable-table-row:active {
|
|
5862
|
+
border-radius: var(--kds-spacing-0-75) !important;
|
|
5863
|
+
}
|
|
5864
|
+
.kds-bank-item.kds-bank-item:active {
|
|
5865
|
+
border-radius: var(--kds-radius-lg) !important;
|
|
5866
|
+
}
|
|
5867
|
+
|
|
4833
5868
|
.kds-bank-row-logo {
|
|
4834
5869
|
width: 40px;
|
|
4835
5870
|
height: 40px;
|
|
@@ -4887,7 +5922,7 @@ dialog#surveyModal button.circle {
|
|
|
4887
5922
|
display: flex;
|
|
4888
5923
|
gap: var(--kds-spacing-1-25);
|
|
4889
5924
|
padding: var(--kds-spacing-2);
|
|
4890
|
-
background: #
|
|
5925
|
+
background: var(--kds-color-background-default); /* #FFF light / #181818 dark */
|
|
4891
5926
|
border-top: 1px solid var(--kds-color-divider);
|
|
4892
5927
|
padding-bottom: calc(var(--kds-spacing-2) + env(safe-area-inset-bottom));
|
|
4893
5928
|
z-index: 100;
|
|
@@ -4909,6 +5944,144 @@ dialog#surveyModal button.circle {
|
|
|
4909
5944
|
box-shadow: 0 -4px 16px rgba(16,24,40,.08);
|
|
4910
5945
|
}
|
|
4911
5946
|
|
|
5947
|
+
/* ========================================
|
|
5948
|
+
08b - FAB (.kds-fab)
|
|
5949
|
+
Circular, icon-only floating action button with an animated hide state.
|
|
5950
|
+
Presentational: drive `.kds-fab--hidden` from useHideOnScroll for scroll-away.
|
|
5951
|
+
======================================== */
|
|
5952
|
+
|
|
5953
|
+
.kds-fab {
|
|
5954
|
+
display: inline-flex;
|
|
5955
|
+
align-items: center;
|
|
5956
|
+
justify-content: center;
|
|
5957
|
+
width: var(--kds-spacing-5);
|
|
5958
|
+
height: var(--kds-spacing-5);
|
|
5959
|
+
padding: 0;
|
|
5960
|
+
border: none;
|
|
5961
|
+
border-radius: var(--kds-radius-full);
|
|
5962
|
+
background: var(--kds-color-background-paper);
|
|
5963
|
+
color: var(--kds-color-text-primary);
|
|
5964
|
+
box-shadow: var(--kds-shadow-elevated);
|
|
5965
|
+
cursor: pointer;
|
|
5966
|
+
z-index: 100;
|
|
5967
|
+
/* Neutralize native button rendering so the pressed state doesn't flash a square. */
|
|
5968
|
+
-webkit-appearance: none;
|
|
5969
|
+
appearance: none;
|
|
5970
|
+
-webkit-tap-highlight-color: transparent;
|
|
5971
|
+
transition: opacity var(--kds-transition-short) ease, transform var(--kds-transition-short) ease,
|
|
5972
|
+
background-color var(--kds-transition-shorter) ease;
|
|
5973
|
+
}
|
|
5974
|
+
|
|
5975
|
+
/* Keep the circle in EVERY interaction state. BeerCSS forces
|
|
5976
|
+
`border-radius: .5rem !important` on button:active (specificity 0,3,0), so
|
|
5977
|
+
plain specificity is not enough — match it with a doubled class AND
|
|
5978
|
+
!important; this file loads after beer.css, so these win. */
|
|
5979
|
+
button.kds-fab.kds-fab,
|
|
5980
|
+
button.kds-fab.kds-fab:hover,
|
|
5981
|
+
button.kds-fab.kds-fab:active,
|
|
5982
|
+
button.kds-fab.kds-fab.active,
|
|
5983
|
+
button.kds-fab.kds-fab:focus,
|
|
5984
|
+
button.kds-fab.kds-fab:focus-visible {
|
|
5985
|
+
border-radius: var(--kds-radius-full) !important;
|
|
5986
|
+
background: var(--kds-color-background-paper);
|
|
5987
|
+
}
|
|
5988
|
+
|
|
5989
|
+
button.kds-fab:hover:not(:disabled) {
|
|
5990
|
+
background: var(--kds-color-background-muted);
|
|
5991
|
+
}
|
|
5992
|
+
|
|
5993
|
+
/* Subtle press feedback that preserves the round shape. */
|
|
5994
|
+
button.kds-fab:active:not(:disabled) {
|
|
5995
|
+
transform: translateY(var(--kds-spacing-0-25));
|
|
5996
|
+
}
|
|
5997
|
+
|
|
5998
|
+
|
|
5999
|
+
|
|
6000
|
+
.kds-fab > i.material-symbols-outlined {
|
|
6001
|
+
font-size: var(--kds-spacing-button-icon-size);
|
|
6002
|
+
line-height: 1;
|
|
6003
|
+
}
|
|
6004
|
+
|
|
6005
|
+
/* Pinned corners — fixed to the viewport (stays visible on scroll-up, iframe-friendly).
|
|
6006
|
+
Horizontally the top-right FAB hugs the right edge of the centered content column set via
|
|
6007
|
+
`--kds-fab-column-width` (default 100% → viewport edge). The consumer sets that var to its
|
|
6008
|
+
widget width so on desktop the FAB overlaps the header's top-right corner instead of drifting
|
|
6009
|
+
to the far viewport edge. `max(...)` keeps at least a token inset on narrow (mobile) viewports. */
|
|
6010
|
+
.kds-fab--top-right,
|
|
6011
|
+
.kds-fab--top-left,
|
|
6012
|
+
.kds-fab--bottom-right,
|
|
6013
|
+
.kds-fab--bottom-left {
|
|
6014
|
+
position: fixed;
|
|
6015
|
+
}
|
|
6016
|
+
|
|
6017
|
+
.kds-fab--top-right {
|
|
6018
|
+
top: var(--kds-spacing-2);
|
|
6019
|
+
right: max(var(--kds-spacing-2), calc((100% - var(--kds-fab-column-width, 100%)) / 2 + var(--kds-spacing-2)));
|
|
6020
|
+
}
|
|
6021
|
+
|
|
6022
|
+
.kds-fab--top-left {
|
|
6023
|
+
top: var(--kds-spacing-2);
|
|
6024
|
+
left: max(var(--kds-spacing-2), calc((100% - var(--kds-fab-column-width, 100%)) / 2 + var(--kds-spacing-2)));
|
|
6025
|
+
}
|
|
6026
|
+
|
|
6027
|
+
.kds-fab--bottom-right {
|
|
6028
|
+
bottom: var(--kds-spacing-2);
|
|
6029
|
+
right: max(var(--kds-spacing-2), calc((100% - var(--kds-fab-column-width, 100%)) / 2 + var(--kds-spacing-2)));
|
|
6030
|
+
}
|
|
6031
|
+
|
|
6032
|
+
.kds-fab--bottom-left {
|
|
6033
|
+
bottom: var(--kds-spacing-2);
|
|
6034
|
+
left: max(var(--kds-spacing-2), calc((100% - var(--kds-fab-column-width, 100%)) / 2 + var(--kds-spacing-2)));
|
|
6035
|
+
}
|
|
6036
|
+
|
|
6037
|
+
/* Desktop: nudge the top-right FAB up so it sits partially over the header's top edge. */
|
|
6038
|
+
@media (min-width: 768px) {
|
|
6039
|
+
.kds-fab--top-right {
|
|
6040
|
+
top: var(--kds-spacing-1);
|
|
6041
|
+
}
|
|
6042
|
+
}
|
|
6043
|
+
|
|
6044
|
+
/* Corner-overlap: mount the FAB centered OVER the top-right corner of the content column
|
|
6045
|
+
(`--kds-fab-column-width`), overlapping outward — vs `--top-right` which insets inside the
|
|
6046
|
+
column. Mobile keeps a small inset from the viewport via the `--kds-fab-inset` token. */
|
|
6047
|
+
.kds-fab--corner {
|
|
6048
|
+
--kds-fab-inset: 5px;
|
|
6049
|
+
position: fixed;
|
|
6050
|
+
top: var(--kds-fab-inset);
|
|
6051
|
+
right: var(--kds-fab-inset);
|
|
6052
|
+
}
|
|
6053
|
+
|
|
6054
|
+
@media (min-width: 768px) {
|
|
6055
|
+
.kds-fab--corner {
|
|
6056
|
+
right: max(
|
|
6057
|
+
var(--kds-fab-inset),
|
|
6058
|
+
calc((100% - var(--kds-fab-column-width, 100%)) / 2 - var(--kds-spacing-5) / 2)
|
|
6059
|
+
);
|
|
6060
|
+
}
|
|
6061
|
+
}
|
|
6062
|
+
|
|
6063
|
+
/* Hidden (scroll-away) state — fade + slide toward the nearest edge */
|
|
6064
|
+
.kds-fab--hidden {
|
|
6065
|
+
opacity: 0;
|
|
6066
|
+
transform: translateY(calc(-1 * var(--kds-spacing-1))) scale(0.9);
|
|
6067
|
+
pointer-events: none;
|
|
6068
|
+
}
|
|
6069
|
+
|
|
6070
|
+
.kds-fab--bottom-right.kds-fab--hidden,
|
|
6071
|
+
.kds-fab--bottom-left.kds-fab--hidden {
|
|
6072
|
+
transform: translateY(var(--kds-spacing-1)) scale(0.9);
|
|
6073
|
+
}
|
|
6074
|
+
|
|
6075
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6076
|
+
.kds-fab {
|
|
6077
|
+
transition: opacity var(--kds-transition-short) ease;
|
|
6078
|
+
}
|
|
6079
|
+
|
|
6080
|
+
.kds-fab--hidden {
|
|
6081
|
+
transform: none;
|
|
6082
|
+
}
|
|
6083
|
+
}
|
|
6084
|
+
|
|
4912
6085
|
/* ========================================
|
|
4913
6086
|
09 - SUCCESS MARK (.kds-success-mark)
|
|
4914
6087
|
Large success icon for completion screens
|
|
@@ -4988,22 +6161,22 @@ dialog#surveyModal button.circle {
|
|
|
4988
6161
|
padding: var(--kds-spacing-1) 0;
|
|
4989
6162
|
}
|
|
4990
6163
|
|
|
4991
|
-
/*
|
|
6164
|
+
/* Footer SIEMPRE fuera del card body (desktop y mobile): el footer interno
|
|
6165
|
+
(variant="inside") queda oculto en todos los breakpoints; se muestra el
|
|
6166
|
+
externo, hermano directo del card bajo `.kds-screen`. */
|
|
4992
6167
|
.kds-card-elevated > .kds-secure-footer {
|
|
4993
6168
|
display: none;
|
|
4994
6169
|
}
|
|
4995
6170
|
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
}
|
|
5000
|
-
.kds-screen > .kds-secure-footer {
|
|
5001
|
-
display: none;
|
|
5002
|
-
}
|
|
6171
|
+
.kds-screen > form {
|
|
6172
|
+
margin-block-start: 0 !important;
|
|
6173
|
+
}
|
|
5003
6174
|
|
|
5004
|
-
|
|
5005
|
-
|
|
5006
|
-
|
|
6175
|
+
/* Footer externo adyacente a la card: cancela el gap del .kds-screen para que
|
|
6176
|
+
quede pegado debajo de la card y no flotando lejos. Las dos cards
|
|
6177
|
+
(header/body) sí conservan su separación. */
|
|
6178
|
+
.kds-screen > .kds-secure-footer {
|
|
6179
|
+
margin-top: calc(-1 * var(--kds-spacing-3));
|
|
5007
6180
|
}
|
|
5008
6181
|
|
|
5009
6182
|
.kds-secure-footer-lock {
|
|
@@ -5025,6 +6198,32 @@ dialog#surveyModal button.circle {
|
|
|
5025
6198
|
display: block;
|
|
5026
6199
|
object-fit: contain;
|
|
5027
6200
|
overflow: visible;
|
|
6201
|
+
/* Corrección óptica: la masa visible del wordmark (el cuerpo de "Khipu") queda sobre el
|
|
6202
|
+
centro geométrico de su viewBox (45x15) porque el descendente de la "p" ocupa la parte
|
|
6203
|
+
baja. Al centrar por caja (align-items:center) el logo se ve ~1px alto respecto al texto,
|
|
6204
|
+
así que se baja 0.75px para alinear el centro óptico. Alto fijo (11px) → nudge consistente. */
|
|
6205
|
+
position: relative;
|
|
6206
|
+
top: 0.75px;
|
|
6207
|
+
}
|
|
6208
|
+
|
|
6209
|
+
/* Divisor entre el logo de Khipu y el del PSP ("Khipu | klap") */
|
|
6210
|
+
.kds-secure-footer-sep {
|
|
6211
|
+
width: 1px;
|
|
6212
|
+
height: 0.85em;
|
|
6213
|
+
background: currentColor;
|
|
6214
|
+
opacity: 0.35;
|
|
6215
|
+
flex: 0 0 auto;
|
|
6216
|
+
}
|
|
6217
|
+
|
|
6218
|
+
/* Logo del PSP (proveedor de pagos): lo provee el consumidor, lo alineamos al mismo
|
|
6219
|
+
alto que el mark de Khipu. Sirve para <img> o un elemento con .kds-psp-mark. */
|
|
6220
|
+
.kds-secure-footer img,
|
|
6221
|
+
.kds-secure-footer .kds-psp-mark {
|
|
6222
|
+
height: 11px;
|
|
6223
|
+
width: auto;
|
|
6224
|
+
flex: 0 0 auto;
|
|
6225
|
+
display: block;
|
|
6226
|
+
object-fit: contain;
|
|
5028
6227
|
}
|
|
5029
6228
|
|
|
5030
6229
|
.kds-secure-footer-code {
|
|
@@ -5040,6 +6239,11 @@ dialog#surveyModal button.circle {
|
|
|
5040
6239
|
background: none;
|
|
5041
6240
|
border: 0;
|
|
5042
6241
|
padding: 0;
|
|
6242
|
+
/* Reset del bare `button { height: 2.5rem }` de BeerCSS (scoped en .kds-theme-root):
|
|
6243
|
+
sin esto el toggle quedaba en una caja de 40px con el texto centrado → espacio
|
|
6244
|
+
irregular arriba (pegado al resumen) y abajo (~26px hasta el panel). Con height
|
|
6245
|
+
auto el botón ajusta a su contenido y el ritmo lo gobiernan los márgenes. */
|
|
6246
|
+
height: auto;
|
|
5043
6247
|
color: var(--kds-color-primary-main);
|
|
5044
6248
|
font-weight: var(--kds-font-weight-medium);
|
|
5045
6249
|
font-size: var(--kds-font-size-sm);
|
|
@@ -5049,16 +6253,36 @@ dialog#surveyModal button.circle {
|
|
|
5049
6253
|
gap: 0;
|
|
5050
6254
|
}
|
|
5051
6255
|
|
|
5052
|
-
.kds-expand-toggle:hover
|
|
6256
|
+
.kds-expand-toggle:hover,
|
|
6257
|
+
.kds-expand-toggle:focus,
|
|
6258
|
+
.kds-expand-toggle:active {
|
|
5053
6259
|
background: transparent;
|
|
6260
|
+
outline: none;
|
|
6261
|
+
box-shadow: none;
|
|
5054
6262
|
}
|
|
5055
6263
|
|
|
5056
|
-
.kds-expand-toggle:hover span
|
|
6264
|
+
.kds-expand-toggle:hover span,
|
|
6265
|
+
.kds-expand-toggle:focus span,
|
|
6266
|
+
.kds-expand-toggle:active span {
|
|
5057
6267
|
text-decoration: underline;
|
|
5058
6268
|
}
|
|
5059
6269
|
|
|
5060
6270
|
.kds-expand-toggle i {
|
|
5061
6271
|
font-size: var(--kds-font-size-base);
|
|
6272
|
+
/* BeerCSS estiliza el `i` bare como caja flex de 30px (height/width/min: 30px), que
|
|
6273
|
+
inflaba el toggle y dejaba aire vertical de más alrededor del label. La achicamos a
|
|
6274
|
+
1.25em MANTENIENDO el centrado flex de BeerCSS (display:flex/align/justify) — así el
|
|
6275
|
+
caret queda compacto Y ópticamente centrado con el texto (no usar height:auto ni
|
|
6276
|
+
line-height:1: descentran el glifo). */
|
|
6277
|
+
width: 1.25em;
|
|
6278
|
+
height: 1.25em;
|
|
6279
|
+
min-width: 0;
|
|
6280
|
+
min-height: 0;
|
|
6281
|
+
/* Correccion optica: la tinta de expand_more vive en la zona alta del em, asi que
|
|
6282
|
+
centrado geometrico contra el label (con ascendentes) se percibe montado; este
|
|
6283
|
+
nudge lo baja al centro de las minusculas. No usar transform: lo pisa el rotate. */
|
|
6284
|
+
position: relative;
|
|
6285
|
+
top: 0.09em;
|
|
5062
6286
|
transition: transform var(--kds-transition-shorter, 0.2s);
|
|
5063
6287
|
}
|
|
5064
6288
|
|
|
@@ -5078,7 +6302,10 @@ dialog#surveyModal button.circle {
|
|
|
5078
6302
|
}
|
|
5079
6303
|
|
|
5080
6304
|
.kds-expand-panel.open {
|
|
5081
|
-
|
|
6305
|
+
/* Fallback cap for no-JS consumers. With JS (React useExpandToggle / vanilla
|
|
6306
|
+
initExpandToggle) the panel's inline max-height is set to its exact scrollHeight,
|
|
6307
|
+
which overrides this and prevents clipping regardless of content length. */
|
|
6308
|
+
max-height: 2000px;
|
|
5082
6309
|
margin-top: 0;
|
|
5083
6310
|
}
|
|
5084
6311
|
|
|
@@ -5196,13 +6423,27 @@ dialog#surveyModal button.circle {
|
|
|
5196
6423
|
|
|
5197
6424
|
.kds-status-block {
|
|
5198
6425
|
text-align: center;
|
|
5199
|
-
|
|
6426
|
+
/* Padding vertical estándar: spacing-2 (16px), el mismo rhythm inter-elementos
|
|
6427
|
+
que usan kds-btn-stack y kds-hr-dashed. NO usar spacing-6 (48px): genera
|
|
6428
|
+
demasiado espacio cuando el bloque se compone con header/divider alrededor. */
|
|
6429
|
+
padding: var(--kds-spacing-2) 0;
|
|
6430
|
+
}
|
|
6431
|
+
|
|
6432
|
+
/* En el borde compartido con el card el rhythm lo aporta el padding del propio card:
|
|
6433
|
+
como primer/último hijo directo el padding del bloque no debe sumarse al del padre. */
|
|
6434
|
+
.kds-card-elevated > .kds-status-block:first-child {
|
|
6435
|
+
padding-top: 0;
|
|
6436
|
+
}
|
|
6437
|
+
|
|
6438
|
+
.kds-card-elevated > .kds-status-block:last-child {
|
|
6439
|
+
padding-bottom: 0;
|
|
5200
6440
|
}
|
|
5201
6441
|
|
|
5202
6442
|
.kds-status-block-icon {
|
|
5203
6443
|
width: var(--kds-status-icon-size);
|
|
5204
6444
|
height: var(--kds-status-icon-size);
|
|
5205
|
-
|
|
6445
|
+
/* spacing-1 (8px) icono→título: elementos relacionados dentro del bloque. */
|
|
6446
|
+
margin: 0 auto var(--kds-spacing-1);
|
|
5206
6447
|
border-radius: var(--kds-radius-full);
|
|
5207
6448
|
display: grid;
|
|
5208
6449
|
place-items: center;
|
|
@@ -5215,15 +6456,22 @@ dialog#surveyModal button.circle {
|
|
|
5215
6456
|
|
|
5216
6457
|
.kds-status-block-title {
|
|
5217
6458
|
font-size: var(--kds-font-size-xl);
|
|
5218
|
-
font-weight: var(--kds-font-weight-
|
|
6459
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5219
6460
|
color: var(--kds-color-text-primary);
|
|
5220
6461
|
margin: 0 0 var(--kds-spacing-1);
|
|
6462
|
+
/* El reset global :where(h2) usa estas vars con !important; así se overridea. */
|
|
6463
|
+
--kds-typography-h2-margin-block-end: var(--kds-spacing-1);
|
|
5221
6464
|
}
|
|
5222
6465
|
|
|
5223
6466
|
.kds-status-block-description {
|
|
5224
6467
|
font-size: var(--kds-font-size-sm);
|
|
5225
|
-
color:
|
|
6468
|
+
/* Mismo color que el título: título y subtítulo parejos en resultados. */
|
|
6469
|
+
color: var(--kds-color-text-primary);
|
|
5226
6470
|
margin: 0;
|
|
6471
|
+
/* !important: anula el auto-espaciado de hermanos de BeerCSS
|
|
6472
|
+
(margin-block-start: 1rem, especificidad 0,5,1 imposible de igualar).
|
|
6473
|
+
La separación título→descripción la da el margin-bottom del título. */
|
|
6474
|
+
margin-top: 0 !important;
|
|
5227
6475
|
}
|
|
5228
6476
|
|
|
5229
6477
|
/* Variant: success */
|
|
@@ -5233,11 +6481,11 @@ dialog#surveyModal button.circle {
|
|
|
5233
6481
|
color: var(--kds-color-success-main);
|
|
5234
6482
|
}
|
|
5235
6483
|
|
|
5236
|
-
/* Variant: pending (animated spinner) */
|
|
6484
|
+
/* Variant: pending (animated blue spinner, sin icono interno) */
|
|
5237
6485
|
.kds-status-block[data-status="pending"] .kds-status-block-icon {
|
|
5238
6486
|
background: transparent;
|
|
5239
6487
|
border: 3px solid var(--kds-color-divider);
|
|
5240
|
-
border-top-color: var(--kds-color-
|
|
6488
|
+
border-top-color: var(--kds-color-info-main);
|
|
5241
6489
|
animation: kds-spin 1s linear infinite;
|
|
5242
6490
|
}
|
|
5243
6491
|
|
|
@@ -5255,7 +6503,9 @@ dialog#surveyModal button.circle {
|
|
|
5255
6503
|
color: var(--kds-color-error-main);
|
|
5256
6504
|
}
|
|
5257
6505
|
|
|
5258
|
-
/* Variant: info
|
|
6506
|
+
/* Variant: info — usar SIEMPRE con icon "info_i" (i minúscula sin glyph circular)
|
|
6507
|
+
para que solo se vea nuestro círculo decorativo. Iconos como "info" tienen
|
|
6508
|
+
su propio círculo built-in → causarían doble círculo. */
|
|
5259
6509
|
.kds-status-block[data-status="info"] .kds-status-block-icon {
|
|
5260
6510
|
background: var(--kds-color-info-soft);
|
|
5261
6511
|
border: var(--kds-border-width-md) solid var(--kds-color-info-main);
|
|
@@ -5267,7 +6517,7 @@ dialog#surveyModal button.circle {
|
|
|
5267
6517
|
text-align: left;
|
|
5268
6518
|
display: flex;
|
|
5269
6519
|
align-items: center;
|
|
5270
|
-
gap: var(--kds-spacing-
|
|
6520
|
+
gap: var(--kds-spacing-2);
|
|
5271
6521
|
padding: var(--kds-spacing-1) 0;
|
|
5272
6522
|
}
|
|
5273
6523
|
|
|
@@ -5309,6 +6559,9 @@ dialog#surveyModal button.circle {
|
|
|
5309
6559
|
.kds-bottom-sheet {
|
|
5310
6560
|
width: 100%;
|
|
5311
6561
|
max-width: var(--kds-bottom-sheet-max-width);
|
|
6562
|
+
max-height: 90dvh;
|
|
6563
|
+
display: flex;
|
|
6564
|
+
flex-direction: column;
|
|
5312
6565
|
background: var(--kds-color-background-paper);
|
|
5313
6566
|
border-radius: var(--kds-radius-2xl) var(--kds-radius-2xl) 0 0;
|
|
5314
6567
|
padding: var(--kds-spacing-3-5) var(--kds-spacing-3) var(--kds-spacing-3);
|
|
@@ -5329,6 +6582,42 @@ dialog#surveyModal button.circle {
|
|
|
5329
6582
|
background: var(--kds-color-divider);
|
|
5330
6583
|
}
|
|
5331
6584
|
|
|
6585
|
+
/* Close button — top-right discreto, NO usa kds-btn (rompía el flex layout) */
|
|
6586
|
+
.kds-bottom-sheet-close {
|
|
6587
|
+
position: absolute;
|
|
6588
|
+
top: var(--kds-spacing-1);
|
|
6589
|
+
right: var(--kds-spacing-1);
|
|
6590
|
+
width: 32px;
|
|
6591
|
+
height: 32px;
|
|
6592
|
+
display: inline-flex;
|
|
6593
|
+
align-items: center;
|
|
6594
|
+
justify-content: center;
|
|
6595
|
+
padding: 0;
|
|
6596
|
+
background: transparent;
|
|
6597
|
+
border: 0;
|
|
6598
|
+
border-radius: 50%;
|
|
6599
|
+
color: var(--kds-color-text-secondary);
|
|
6600
|
+
cursor: pointer;
|
|
6601
|
+
transition: background-color 0.15s ease;
|
|
6602
|
+
}
|
|
6603
|
+
|
|
6604
|
+
.kds-bottom-sheet-close:hover {
|
|
6605
|
+
background: rgba(0, 0, 0, 0.06);
|
|
6606
|
+
}
|
|
6607
|
+
|
|
6608
|
+
.kds-bottom-sheet-close i {
|
|
6609
|
+
font-size: 20px;
|
|
6610
|
+
line-height: 1;
|
|
6611
|
+
}
|
|
6612
|
+
|
|
6613
|
+
/* Body container — separa el content del title/actions */
|
|
6614
|
+
.kds-bottom-sheet-body {
|
|
6615
|
+
text-align: left;
|
|
6616
|
+
margin-top: var(--kds-spacing-1);
|
|
6617
|
+
overflow-y: auto;
|
|
6618
|
+
min-height: 0;
|
|
6619
|
+
}
|
|
6620
|
+
|
|
5332
6621
|
.kds-bottom-sheet-icon {
|
|
5333
6622
|
font-size: var(--kds-font-size-4xl);
|
|
5334
6623
|
}
|
|
@@ -5375,6 +6664,19 @@ dialog#surveyModal button.circle {
|
|
|
5375
6664
|
to { opacity: 1; }
|
|
5376
6665
|
}
|
|
5377
6666
|
|
|
6667
|
+
/* Botón con llenado progresivo (feedback visual de auto-cierre).
|
|
6668
|
+
Duración parametrizable con --kds-fill-duration (default 12s). */
|
|
6669
|
+
.kds-btn-fill-progress {
|
|
6670
|
+
background-image: linear-gradient(to right, var(--kds-color-primary-dark), var(--kds-color-primary-dark));
|
|
6671
|
+
background-repeat: no-repeat;
|
|
6672
|
+
background-size: 0% 100%;
|
|
6673
|
+
animation: kds-btn-fill var(--kds-fill-duration, 12s) linear forwards;
|
|
6674
|
+
}
|
|
6675
|
+
|
|
6676
|
+
@keyframes kds-btn-fill {
|
|
6677
|
+
to { background-size: 100% 100%; }
|
|
6678
|
+
}
|
|
6679
|
+
|
|
5378
6680
|
@keyframes kds-rise {
|
|
5379
6681
|
from { transform: translateY(var(--kds-spacing-2-5)); opacity: 0.4; }
|
|
5380
6682
|
to { transform: none; opacity: 1; }
|
|
@@ -5476,6 +6778,65 @@ dialog#surveyModal button.circle {
|
|
|
5476
6778
|
}
|
|
5477
6779
|
|
|
5478
6780
|
|
|
6781
|
+
/* ========================================
|
|
6782
|
+
17 - HIGHLIGHTED FIELD (.kds-field-highlight)
|
|
6783
|
+
Calls out an optional or conditional block of
|
|
6784
|
+
fields inside a form. The colour lives in a
|
|
6785
|
+
header band, never behind the fields: BeerCSS
|
|
6786
|
+
floats the label ONTO the field outline (it cuts
|
|
6787
|
+
the input with clip-path and redraws that
|
|
6788
|
+
stretch of border in label::after), so anything
|
|
6789
|
+
painted behind a field shows through the notch,
|
|
6790
|
+
right under the label. Keeping the fields on the
|
|
6791
|
+
page surface means they render exactly as they
|
|
6792
|
+
do anywhere else in the form, with no override.
|
|
6793
|
+
======================================== */
|
|
6794
|
+
|
|
6795
|
+
.kds-field-highlight {
|
|
6796
|
+
padding-inline: var(--kds-field-highlight-padding);
|
|
6797
|
+
padding-block-end: var(--kds-field-highlight-padding);
|
|
6798
|
+
border: var(--kds-border-width-sm) dashed var(--kds-field-highlight-border);
|
|
6799
|
+
border-radius: var(--kds-field-highlight-radius);
|
|
6800
|
+
}
|
|
6801
|
+
|
|
6802
|
+
/* Optional — omit it and the fields sit alone in the box. Breaks out to the box
|
|
6803
|
+
edges so it reads as a header band, then takes the box's own inset back as
|
|
6804
|
+
padding: the eyebrow ends up flush with the fields below, and the band's
|
|
6805
|
+
horizontal padding matches the fields' own. */
|
|
6806
|
+
.kds-field-highlight-header {
|
|
6807
|
+
display: flex;
|
|
6808
|
+
align-items: center;
|
|
6809
|
+
gap: var(--kds-spacing-1);
|
|
6810
|
+
margin-inline: calc(-1 * var(--kds-field-highlight-padding));
|
|
6811
|
+
margin-block-end: var(--kds-field-highlight-padding);
|
|
6812
|
+
padding-block: var(--kds-spacing-1-25);
|
|
6813
|
+
padding-inline: var(--kds-field-highlight-padding);
|
|
6814
|
+
background: var(--kds-field-highlight-bg);
|
|
6815
|
+
border-start-start-radius: calc(
|
|
6816
|
+
var(--kds-field-highlight-radius) - var(--kds-border-width-sm)
|
|
6817
|
+
);
|
|
6818
|
+
border-start-end-radius: calc(
|
|
6819
|
+
var(--kds-field-highlight-radius) - var(--kds-border-width-sm)
|
|
6820
|
+
);
|
|
6821
|
+
}
|
|
6822
|
+
|
|
6823
|
+
.kds-field-highlight-eyebrow {
|
|
6824
|
+
font-family: var(--kds-font-family-primary);
|
|
6825
|
+
font-size: var(--kds-font-size-xs);
|
|
6826
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
6827
|
+
letter-spacing: var(--kds-letter-spacing-widest);
|
|
6828
|
+
line-height: 1.4;
|
|
6829
|
+
text-transform: uppercase;
|
|
6830
|
+
color: var(--kds-field-highlight-label);
|
|
6831
|
+
}
|
|
6832
|
+
|
|
6833
|
+
/* The header already supplies the gap — the first field must not add its own */
|
|
6834
|
+
.kds-field-highlight > .kds-field-highlight-header + .kds-field-group,
|
|
6835
|
+
.kds-field-highlight > .kds-field-group:first-child {
|
|
6836
|
+
margin-block-start: 0;
|
|
6837
|
+
}
|
|
6838
|
+
|
|
6839
|
+
|
|
5479
6840
|
/* ========================================
|
|
5480
6841
|
PAYMENT FLOW — DOMAIN COMPONENTS
|
|
5481
6842
|
Invoice header, KV grid, dividers,
|
|
@@ -5562,6 +6923,30 @@ dialog#surveyModal button.circle {
|
|
|
5562
6923
|
/* No max-height — clip-path on parent handles visual collapse without layout changes */
|
|
5563
6924
|
.kds-invoice-sticky .kds-invoice-collapsible {
|
|
5564
6925
|
opacity: calc(1 - var(--collapse-progress) * 1.5);
|
|
6926
|
+
|
|
6927
|
+
/* Scroll interno discreto (mobile): cuando el detalle abierto excede el viewport, el
|
|
6928
|
+
collapsible scrollea internamente (monto/merchant quedan fijos arriba) para poder leer
|
|
6929
|
+
todo el detalle. Al tocar el fondo, `overscroll-behavior: auto` ENCADENA el gesto al
|
|
6930
|
+
scroll del body → dispara useStickyInvoiceCollapse → colapsa el header y aparece el form
|
|
6931
|
+
(flujo natural). Se auto-desactiva con el detalle cerrado (contenido más corto que el
|
|
6932
|
+
max-height → sin scroll ni efecto visual). */
|
|
6933
|
+
max-height: calc(100vh - var(--kds-spacing-12) - var(--kds-spacing-4));
|
|
6934
|
+
max-height: calc(100dvh - var(--kds-spacing-12) - var(--kds-spacing-4));
|
|
6935
|
+
overflow-y: auto;
|
|
6936
|
+
overflow-x: hidden;
|
|
6937
|
+
overscroll-behavior-y: auto;
|
|
6938
|
+
scrollbar-width: thin;
|
|
6939
|
+
scrollbar-color: var(--kds-color-gray-300) transparent;
|
|
6940
|
+
}
|
|
6941
|
+
.kds-invoice-sticky .kds-invoice-collapsible::-webkit-scrollbar {
|
|
6942
|
+
width: 4px;
|
|
6943
|
+
}
|
|
6944
|
+
.kds-invoice-sticky .kds-invoice-collapsible::-webkit-scrollbar-thumb {
|
|
6945
|
+
background: var(--kds-color-gray-300);
|
|
6946
|
+
border-radius: var(--kds-radius-full);
|
|
6947
|
+
}
|
|
6948
|
+
.kds-invoice-sticky .kds-invoice-collapsible::-webkit-scrollbar-track {
|
|
6949
|
+
background: transparent;
|
|
5565
6950
|
}
|
|
5566
6951
|
|
|
5567
6952
|
/* Amount: 30px → 24px (progressive) */
|
|
@@ -5633,6 +7018,14 @@ dialog#surveyModal button.circle {
|
|
|
5633
7018
|
margin-top: var(--kds-spacing-1);
|
|
5634
7019
|
}
|
|
5635
7020
|
|
|
7021
|
+
/* Ritmo uniforme alrededor del toggle: spacing-2 arriba (resumen↔"Ver detalle")
|
|
7022
|
+
iguala el padding-top spacing-2 que la .kds-detail-list da debajo
|
|
7023
|
+
("Ver detalle"↔primer label del panel). Antes el alto fijo del bare button
|
|
7024
|
+
(40px) hacía que el espacio de arriba y de abajo fueran distintos. */
|
|
7025
|
+
.kds-invoice-collapsible > .kds-expand-toggle {
|
|
7026
|
+
margin-top: var(--kds-spacing-2);
|
|
7027
|
+
}
|
|
7028
|
+
|
|
5636
7029
|
/* -- Invoice Summary -- */
|
|
5637
7030
|
.kds-invoice-summary {
|
|
5638
7031
|
display: flex;
|
|
@@ -5656,6 +7049,22 @@ div.kds-invoice-header,
|
|
|
5656
7049
|
padding: 0;
|
|
5657
7050
|
border-radius: 0;
|
|
5658
7051
|
align-content: initial;
|
|
7052
|
+
/* Override BeerCSS `header { min-height: ... }` — el header debe ajustarse a su
|
|
7053
|
+
contenido (sigue el alto del merchant tile: 64px→50px al colapsar). Sin esto
|
|
7054
|
+
quedaba un min-height fijo de 64px → hueco muerto debajo al colapsar en mobile. */
|
|
7055
|
+
min-height: 0;
|
|
7056
|
+
}
|
|
7057
|
+
|
|
7058
|
+
/* Mobile: center-align el header (merchant tile vs bloque monto+código) tanto
|
|
7059
|
+
expandido como colapsado. Al quitar el logo del header, el bloque de texto quedaba
|
|
7060
|
+
más bajo que el merchant tile y con `flex-start` dejaba hueco abajo; centrado los
|
|
7061
|
+
alinea. CSS-only (no depende de la clase .is-collapsed, que el JS de collapse no setea). */
|
|
7062
|
+
@media (max-width: 767px) {
|
|
7063
|
+
header.kds-invoice-header,
|
|
7064
|
+
div.kds-invoice-header,
|
|
7065
|
+
.kds-invoice-header {
|
|
7066
|
+
align-items: center;
|
|
7067
|
+
}
|
|
5659
7068
|
}
|
|
5660
7069
|
|
|
5661
7070
|
/* Reset BeerCSS sibling margin on <p> inside invoice header — specificity (0,4,1) ties BeerCSS, wins by source order */
|
|
@@ -5677,6 +7086,16 @@ div.kds-invoice-header,
|
|
|
5677
7086
|
color: var(--kds-color-success-main);
|
|
5678
7087
|
}
|
|
5679
7088
|
|
|
7089
|
+
/* Sufijo inline del monto, ej. "$25.000 por cargo" */
|
|
7090
|
+
.kds-invoice-amount small {
|
|
7091
|
+
/* Spec kw-2: 14px / 700 / ls 0.4 — la altura de linea la da el propio monto (inline). */
|
|
7092
|
+
font-size: var(--kds-font-size-sm);
|
|
7093
|
+
font-weight: var(--kds-font-weight-bold);
|
|
7094
|
+
letter-spacing: var(--kds-letter-spacing-wide);
|
|
7095
|
+
color: var(--kds-color-text-secondary);
|
|
7096
|
+
margin-left: var(--kds-spacing-0-5);
|
|
7097
|
+
}
|
|
7098
|
+
|
|
5680
7099
|
.kds-invoice-code {
|
|
5681
7100
|
font-family: var(--kds-font-family-mono);
|
|
5682
7101
|
font-size: var(--kds-font-size-xs);
|
|
@@ -5684,15 +7103,19 @@ div.kds-invoice-header,
|
|
|
5684
7103
|
letter-spacing: var(--kds-letter-spacing-wider);
|
|
5685
7104
|
font-variant-numeric: tabular-nums;
|
|
5686
7105
|
color: var(--kds-color-gray-400);
|
|
5687
|
-
text-transform:
|
|
7106
|
+
text-transform: uppercase;
|
|
5688
7107
|
margin: 0;
|
|
5689
7108
|
margin-block: unset;
|
|
5690
|
-
|
|
7109
|
+
display: flex;
|
|
7110
|
+
gap: var(--kds-spacing-1-5);
|
|
5691
7111
|
}
|
|
5692
7112
|
|
|
5693
7113
|
.kds-invoice-code-value {
|
|
7114
|
+
color: var(--kds-color-gray-400);
|
|
7115
|
+
}
|
|
7116
|
+
|
|
7117
|
+
.kds-invoice-code-value--lowercase {
|
|
5694
7118
|
text-transform: lowercase;
|
|
5695
|
-
color: var(--kds-text-primary);
|
|
5696
7119
|
}
|
|
5697
7120
|
|
|
5698
7121
|
.kds-invoice-merchant {
|
|
@@ -5704,6 +7127,7 @@ div.kds-invoice-header,
|
|
|
5704
7127
|
place-items: center;
|
|
5705
7128
|
color: #fff;
|
|
5706
7129
|
flex-shrink: 0;
|
|
7130
|
+
overflow: hidden;
|
|
5707
7131
|
}
|
|
5708
7132
|
|
|
5709
7133
|
.kds-invoice-merchant i {
|
|
@@ -5716,6 +7140,12 @@ div.kds-invoice-header,
|
|
|
5716
7140
|
color: var(--kds-color-text-primary);
|
|
5717
7141
|
}
|
|
5718
7142
|
|
|
7143
|
+
/* Neutro oscuro para logos claros (detección de luminancia — KTUF-204). */
|
|
7144
|
+
.kds-invoice-merchant-neutral.dark {
|
|
7145
|
+
background: var(--kds-color-gray-800);
|
|
7146
|
+
border-color: var(--kds-color-gray-700);
|
|
7147
|
+
}
|
|
7148
|
+
|
|
5719
7149
|
.kds-invoice-merchant.initials {
|
|
5720
7150
|
font-weight: 700;
|
|
5721
7151
|
font-size: 11px;
|
|
@@ -5723,27 +7153,42 @@ div.kds-invoice-header,
|
|
|
5723
7153
|
}
|
|
5724
7154
|
|
|
5725
7155
|
.kds-invoice-merchant img {
|
|
7156
|
+
/* `contain` sobre el fondo neutro: el logo se muestra completo y las
|
|
7157
|
+
transparencias no quedan sobre el color de marca (KTUF-204). */
|
|
5726
7158
|
width: 100%;
|
|
5727
7159
|
height: 100%;
|
|
5728
|
-
object-fit:
|
|
5729
|
-
|
|
7160
|
+
object-fit: contain;
|
|
7161
|
+
padding: var(--kds-spacing-0-5);
|
|
5730
7162
|
}
|
|
5731
7163
|
|
|
5732
7164
|
/* -- Card Title -- */
|
|
5733
7165
|
.kds-card-title {
|
|
5734
|
-
font-weight:
|
|
7166
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5735
7167
|
font-size: var(--kds-font-size-base);
|
|
5736
7168
|
line-height: 1.5;
|
|
5737
7169
|
letter-spacing: -0.31px;
|
|
5738
7170
|
color: var(--kds-color-text-primary);
|
|
5739
|
-
margin-bottom
|
|
7171
|
+
/* sin !important: no hay regla de margin-bottom para h1 en BeerCSS que competir, y así un
|
|
7172
|
+
consumidor puede anularlo (p.ej. FormTitle dentro de un Stack que ya da el espacio). */
|
|
7173
|
+
margin-bottom: var(--kds-spacing-2);
|
|
7174
|
+
}
|
|
7175
|
+
|
|
7176
|
+
/* Opt-in size modifiers (additive — do NOT change default 16/600) */
|
|
7177
|
+
.kds-card-title--lg {
|
|
7178
|
+
font-size: var(--kds-font-size-xl); /* 20px */
|
|
7179
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
7180
|
+
}
|
|
7181
|
+
|
|
7182
|
+
.kds-card-title--xl {
|
|
7183
|
+
font-size: var(--kds-font-size-2xl); /* 24px */
|
|
7184
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5740
7185
|
}
|
|
5741
7186
|
|
|
5742
7187
|
/* -- Key-Value Grid -- */
|
|
5743
7188
|
.kds-kv {
|
|
5744
7189
|
display: grid;
|
|
5745
7190
|
grid-template-columns: auto 1fr;
|
|
5746
|
-
column-gap: var(--kds-spacing-1
|
|
7191
|
+
column-gap: var(--kds-spacing-1);
|
|
5747
7192
|
align-items: baseline;
|
|
5748
7193
|
}
|
|
5749
7194
|
|
|
@@ -5752,7 +7197,7 @@ div.kds-invoice-header,
|
|
|
5752
7197
|
line-height: var(--kds-line-height-relaxed);
|
|
5753
7198
|
letter-spacing: normal;
|
|
5754
7199
|
color: var(--kds-color-text-secondary);
|
|
5755
|
-
text-transform:
|
|
7200
|
+
text-transform: uppercase;
|
|
5756
7201
|
margin: 0;
|
|
5757
7202
|
}
|
|
5758
7203
|
|
|
@@ -5769,6 +7214,31 @@ div.kds-invoice-header,
|
|
|
5769
7214
|
text-overflow: ellipsis;
|
|
5770
7215
|
}
|
|
5771
7216
|
|
|
7217
|
+
/* Dark: these primary-content texts use absolute gray-800/900 (near-black in
|
|
7218
|
+
both modes) — switch to the adaptive text token so they read on dark cards.
|
|
7219
|
+
Covers the invoice amount ($X.XXX), kv values (PAGO A / ASUNTO) and the
|
|
7220
|
+
other gray-800 body texts. */
|
|
7221
|
+
[data-theme="dark"] .kds-invoice-amount,
|
|
7222
|
+
[data-theme="dark"] .kds-kv dd,
|
|
7223
|
+
[data-theme="dark"] .kds-text-value,
|
|
7224
|
+
[data-theme="dark"] .kds-share-copy {
|
|
7225
|
+
color: var(--kds-color-text-primary);
|
|
7226
|
+
}
|
|
7227
|
+
|
|
7228
|
+
/* -- Summary panel --
|
|
7229
|
+
Recuadro de datos del pago en pantallas de resultado: contenido en columna
|
|
7230
|
+
(gap spacing-2, típicamente pares kv) dentro de un borde sutil. */
|
|
7231
|
+
.kds-summary-panel {
|
|
7232
|
+
display: flex;
|
|
7233
|
+
flex-direction: column;
|
|
7234
|
+
gap: var(--kds-spacing-2);
|
|
7235
|
+
width: 100%;
|
|
7236
|
+
padding: var(--kds-spacing-2);
|
|
7237
|
+
border: var(--kds-border-width-sm) solid var(--kds-color-border-default);
|
|
7238
|
+
border-radius: var(--kds-radius-card);
|
|
7239
|
+
text-align: left;
|
|
7240
|
+
}
|
|
7241
|
+
|
|
5772
7242
|
/* -- Dividers -- */
|
|
5773
7243
|
.kds-hr {
|
|
5774
7244
|
height: 1px;
|
|
@@ -5788,16 +7258,28 @@ div.kds-invoice-header,
|
|
|
5788
7258
|
.kds-detail-list {
|
|
5789
7259
|
display: flex;
|
|
5790
7260
|
flex-direction: column;
|
|
5791
|
-
|
|
7261
|
+
/* spacing-2 entre grupos del detalle (separación estándar entre piezas de info
|
|
7262
|
+
distintas, ej. "Emisor cobro" vs "Descripción"). El padding-top da la misma
|
|
7263
|
+
separación spacing-2 arriba del primer grupo (Asunto↔Emisor cobro). */
|
|
7264
|
+
gap: var(--kds-spacing-2);
|
|
5792
7265
|
margin: 0;
|
|
5793
|
-
padding:
|
|
7266
|
+
padding: var(--kds-spacing-2) 0 0;
|
|
5794
7267
|
}
|
|
5795
7268
|
|
|
5796
|
-
|
|
5797
|
-
|
|
7269
|
+
@media (max-width: 767px) {
|
|
7270
|
+
.kds-detail-list {
|
|
7271
|
+
padding-bottom: var(--kds-spacing-2);
|
|
7272
|
+
}
|
|
5798
7273
|
}
|
|
5799
7274
|
|
|
5800
|
-
.kds-detail-group
|
|
7275
|
+
.kds-detail-group {
|
|
7276
|
+
/* El espacio ENTRE grupos lo da el `gap` de .kds-detail-list (spacing-2).
|
|
7277
|
+
Dentro del grupo, label↔value llevan un gap chico (spacing-0-5) para un
|
|
7278
|
+
ritmo parejo: antes el dt iba pegado al dd (0px) y se veía desigual frente
|
|
7279
|
+
a los 16px entre los demás elementos del panel. */
|
|
7280
|
+
display: flex;
|
|
7281
|
+
flex-direction: column;
|
|
7282
|
+
gap: var(--kds-spacing-0-5);
|
|
5801
7283
|
margin-bottom: 0;
|
|
5802
7284
|
}
|
|
5803
7285
|
|
|
@@ -5805,7 +7287,8 @@ div.kds-invoice-header,
|
|
|
5805
7287
|
font-size: var(--kds-font-size-xs);
|
|
5806
7288
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
5807
7289
|
color: var(--kds-color-text-hint);
|
|
5808
|
-
text-transform:
|
|
7290
|
+
text-transform: uppercase;
|
|
7291
|
+
margin: 0;
|
|
5809
7292
|
}
|
|
5810
7293
|
|
|
5811
7294
|
.kds-detail-group dd {
|
|
@@ -5815,6 +7298,19 @@ div.kds-invoice-header,
|
|
|
5815
7298
|
color: var(--kds-color-text-primary);
|
|
5816
7299
|
}
|
|
5817
7300
|
|
|
7301
|
+
/* Imagen adjunta del cobro dentro del panel de detalle (ej. comprobante/producto).
|
|
7302
|
+
Reemplaza los inline styles del antiguo modal MerchantInfo: ancho contenido, borde
|
|
7303
|
+
y radio del DS. Va como un grupo más de la .kds-detail-list (hereda su gap). */
|
|
7304
|
+
.kds-detail-image {
|
|
7305
|
+
display: block;
|
|
7306
|
+
max-width: 100%;
|
|
7307
|
+
width: 160px;
|
|
7308
|
+
height: auto;
|
|
7309
|
+
object-fit: contain;
|
|
7310
|
+
border-radius: var(--kds-radius-md);
|
|
7311
|
+
border: 1px solid var(--kds-color-border);
|
|
7312
|
+
}
|
|
7313
|
+
|
|
5818
7314
|
/* -- Amount Summary Row -- */
|
|
5819
7315
|
.kds-amount-row {
|
|
5820
7316
|
display: flex;
|
|
@@ -5874,16 +7370,16 @@ div.kds-invoice-header,
|
|
|
5874
7370
|
font-size: var(--kds-font-size-sm);
|
|
5875
7371
|
}
|
|
5876
7372
|
|
|
5877
|
-
.kds-recap-list .
|
|
7373
|
+
.kds-recap-list .kds-key {
|
|
5878
7374
|
color: var(--kds-color-text-secondary);
|
|
5879
7375
|
}
|
|
5880
7376
|
|
|
5881
|
-
.kds-recap-list .
|
|
7377
|
+
.kds-recap-list .kds-value {
|
|
5882
7378
|
color: var(--kds-color-text-primary);
|
|
5883
7379
|
font-weight: 500;
|
|
5884
7380
|
}
|
|
5885
7381
|
|
|
5886
|
-
.kds-recap-list .
|
|
7382
|
+
.kds-recap-list .kds-value.placeholder {
|
|
5887
7383
|
color: var(--kds-color-text-hint);
|
|
5888
7384
|
}
|
|
5889
7385
|
|
|
@@ -5910,6 +7406,68 @@ a.kds-btn-success:disabled {
|
|
|
5910
7406
|
box-shadow: none;
|
|
5911
7407
|
}
|
|
5912
7408
|
|
|
7409
|
+
/* -- Button Warning (amber CTA) -- */
|
|
7410
|
+
button.kds-btn-warning,
|
|
7411
|
+
a.kds-btn-warning {
|
|
7412
|
+
background: var(--kds-color-warning-main);
|
|
7413
|
+
color: var(--kds-color-warning-contrast);
|
|
7414
|
+
border: none;
|
|
7415
|
+
}
|
|
7416
|
+
|
|
7417
|
+
button.kds-btn-warning:hover:not(:disabled),
|
|
7418
|
+
a.kds-btn-warning:hover:not(:disabled) {
|
|
7419
|
+
background: var(--kds-color-warning-dark);
|
|
7420
|
+
}
|
|
7421
|
+
|
|
7422
|
+
button.kds-btn-warning:active:not(:disabled),
|
|
7423
|
+
button.kds-btn-warning:focus-visible:not(:disabled),
|
|
7424
|
+
a.kds-btn-warning:active:not(:disabled),
|
|
7425
|
+
a.kds-btn-warning:focus-visible:not(:disabled) {
|
|
7426
|
+
background: var(--kds-color-warning-dark);
|
|
7427
|
+
}
|
|
7428
|
+
|
|
7429
|
+
button.kds-btn-warning:disabled,
|
|
7430
|
+
a.kds-btn-warning:disabled {
|
|
7431
|
+
background-color: var(--kds-color-action-disabled-bg);
|
|
7432
|
+
color: var(--kds-color-action-disabled);
|
|
7433
|
+
box-shadow: none;
|
|
7434
|
+
}
|
|
7435
|
+
|
|
7436
|
+
button.kds-btn-warning::after {
|
|
7437
|
+
display: none;
|
|
7438
|
+
}
|
|
7439
|
+
|
|
7440
|
+
/* -- Button Error (red / destructive CTA) -- */
|
|
7441
|
+
button.kds-btn-error,
|
|
7442
|
+
a.kds-btn-error {
|
|
7443
|
+
background: var(--kds-color-error-main);
|
|
7444
|
+
color: var(--kds-color-error-contrast);
|
|
7445
|
+
border: none;
|
|
7446
|
+
}
|
|
7447
|
+
|
|
7448
|
+
button.kds-btn-error:hover:not(:disabled),
|
|
7449
|
+
a.kds-btn-error:hover:not(:disabled) {
|
|
7450
|
+
background: var(--kds-color-error-dark);
|
|
7451
|
+
}
|
|
7452
|
+
|
|
7453
|
+
button.kds-btn-error:active:not(:disabled),
|
|
7454
|
+
button.kds-btn-error:focus-visible:not(:disabled),
|
|
7455
|
+
a.kds-btn-error:active:not(:disabled),
|
|
7456
|
+
a.kds-btn-error:focus-visible:not(:disabled) {
|
|
7457
|
+
background: var(--kds-color-error-dark);
|
|
7458
|
+
}
|
|
7459
|
+
|
|
7460
|
+
button.kds-btn-error:disabled,
|
|
7461
|
+
a.kds-btn-error:disabled {
|
|
7462
|
+
background-color: var(--kds-color-action-disabled-bg);
|
|
7463
|
+
color: var(--kds-color-action-disabled);
|
|
7464
|
+
box-shadow: none;
|
|
7465
|
+
}
|
|
7466
|
+
|
|
7467
|
+
button.kds-btn-error::after {
|
|
7468
|
+
display: none;
|
|
7469
|
+
}
|
|
7470
|
+
|
|
5913
7471
|
/* -- Field Helper Text -- */
|
|
5914
7472
|
.kds-field-helper {
|
|
5915
7473
|
font-size: var(--kds-font-size-xs);
|
|
@@ -5952,6 +7510,8 @@ button.kds-btn-success::after {
|
|
|
5952
7510
|
/* -- Alert inline (borderless, used inside cards) -- */
|
|
5953
7511
|
.kds-alert-inline {
|
|
5954
7512
|
border: none;
|
|
7513
|
+
padding: var(--kds-spacing-1) var(--kds-spacing-1-5);
|
|
7514
|
+
margin-bottom: var(--kds-spacing-1-5);
|
|
5955
7515
|
}
|
|
5956
7516
|
|
|
5957
7517
|
/* -- Card dimmed (behind overlays) -- */
|
|
@@ -6020,6 +7580,25 @@ button.kds-btn-success::after {
|
|
|
6020
7580
|
fill: none;
|
|
6021
7581
|
}
|
|
6022
7582
|
|
|
7583
|
+
/* BeerCSS fuerza fill:currentcolor en todo svg, pisando el atributo de
|
|
7584
|
+
presentación; un SVG que declara fill="none" (ilustraciones de trazo)
|
|
7585
|
+
debe conservarlo. */
|
|
7586
|
+
svg[fill='none'] {
|
|
7587
|
+
fill: none;
|
|
7588
|
+
}
|
|
7589
|
+
|
|
7590
|
+
/* -- Bottom sheet centered content --
|
|
7591
|
+
Contenido escueto centrado verticalmente con altura mínima estable, para que
|
|
7592
|
+
el sheet no encoja cuando la vista tiene pocos elementos (p.ej. drawer de
|
|
7593
|
+
autorización: título + ilustración + timer). */
|
|
7594
|
+
.kds-bottom-sheet-centered-content {
|
|
7595
|
+
display: flex;
|
|
7596
|
+
flex-direction: column;
|
|
7597
|
+
align-items: center;
|
|
7598
|
+
justify-content: center;
|
|
7599
|
+
min-height: var(--kds-bottom-sheet-content-min-height, 21rem);
|
|
7600
|
+
}
|
|
7601
|
+
|
|
6023
7602
|
/* -- Bottom sheet description (subtle / smaller) -- */
|
|
6024
7603
|
.kds-bottom-sheet-description-subtle {
|
|
6025
7604
|
color: var(--kds-color-text-secondary);
|
|
@@ -6053,17 +7632,42 @@ button.kds-btn-success::after {
|
|
|
6053
7632
|
}
|
|
6054
7633
|
|
|
6055
7634
|
.kds-bill-description-picture {
|
|
6056
|
-
width:
|
|
6057
|
-
height: 120px;
|
|
7635
|
+
max-width: 100px;
|
|
6058
7636
|
object-fit: contain;
|
|
6059
7637
|
background: var(--kds-color-background-paper);
|
|
6060
|
-
|
|
6061
|
-
border-radius: var(--kds-radius-md);
|
|
6062
|
-
margin-top: var(--kds-spacing-1);
|
|
7638
|
+
margin-top: var(--kds-spacing-1-25);
|
|
6063
7639
|
display: block;
|
|
6064
7640
|
box-sizing: content-box;
|
|
6065
7641
|
}
|
|
6066
7642
|
|
|
7643
|
+
/* -- Bill Attachments -- */
|
|
7644
|
+
.kds-bill-attachments {
|
|
7645
|
+
display: flex;
|
|
7646
|
+
flex-direction: column;
|
|
7647
|
+
gap: var(--kds-spacing-0-75);
|
|
7648
|
+
}
|
|
7649
|
+
|
|
7650
|
+
.kds-bill-attachment {
|
|
7651
|
+
display: inline-flex;
|
|
7652
|
+
align-items: center;
|
|
7653
|
+
justify-content: flex-start;
|
|
7654
|
+
width: fit-content;
|
|
7655
|
+
color: var(--kds-color-info-main);
|
|
7656
|
+
font-size: var(--kds-font-size-sm);
|
|
7657
|
+
font-weight: var(--kds-font-weight-medium);
|
|
7658
|
+
text-decoration: none;
|
|
7659
|
+
}
|
|
7660
|
+
|
|
7661
|
+
.kds-bill-attachment:hover span {
|
|
7662
|
+
text-decoration: underline;
|
|
7663
|
+
}
|
|
7664
|
+
|
|
7665
|
+
.kds-bill-attachment i {
|
|
7666
|
+
font-size: var(--kds-font-size-lg);
|
|
7667
|
+
min-width: unset;
|
|
7668
|
+
justify-content: flex-start;
|
|
7669
|
+
}
|
|
7670
|
+
|
|
6067
7671
|
/* -- Share Card (mustContinue) -- */
|
|
6068
7672
|
.kds-share-card {
|
|
6069
7673
|
margin-top: var(--kds-spacing-2);
|
|
@@ -6173,8 +7777,10 @@ button.kds-btn-success::after {
|
|
|
6173
7777
|
Desktop (min-width: 768px) restores padding + full border-radius. */
|
|
6174
7778
|
.kds-payment-flow .kds-card-elevated {
|
|
6175
7779
|
margin-top: 0;
|
|
6176
|
-
|
|
6177
|
-
|
|
7780
|
+
/* Vertical > lateral: la card del flujo respira arriba/abajo (spacing-3)
|
|
7781
|
+
manteniendo el padding lateral del base (spacing-2 / spacing-3 mobile). */
|
|
7782
|
+
padding-top: var(--kds-spacing-3);
|
|
7783
|
+
padding-bottom: var(--kds-spacing-3);
|
|
6178
7784
|
}
|
|
6179
7785
|
|
|
6180
7786
|
/* Reset BeerCSS sibling margin on form/section inside payment cards.
|
|
@@ -6189,12 +7795,43 @@ button.kds-btn-success::after {
|
|
|
6189
7795
|
padding-bottom: 0;
|
|
6190
7796
|
}
|
|
6191
7797
|
|
|
6192
|
-
/*
|
|
7798
|
+
/* Body card: alto mínimo estable para que NO salte entre estados de distinta altura
|
|
7799
|
+
(loader/progress ↔ formulario). Solo la body card = hijo directo de `.kds-screen`
|
|
7800
|
+
(los headers van dentro de `.kds-invoice-sticky-wrap`, no la afecta).
|
|
7801
|
+
Flex-column para que el contenido quede arriba y el footer interno (versión / secure
|
|
7802
|
+
footer) pueda pinearse al fondo con `margin-top: auto` aunque el contenido sea corto. */
|
|
7803
|
+
.kds-screen > .kds-card-elevated {
|
|
7804
|
+
min-height: 36rem;
|
|
7805
|
+
display: flex;
|
|
7806
|
+
flex-direction: column;
|
|
7807
|
+
/* mismo radio que el header (invoice-sticky usa radius-card); el base card-elevated
|
|
7808
|
+
es radius-md (8px) y quedaba distinto al header en desktop. */
|
|
7809
|
+
border-radius: var(--kds-radius-card);
|
|
7810
|
+
}
|
|
7811
|
+
|
|
7812
|
+
/* Variante sin radio superior: pantallas de resultado (éxito/fallo/timeout) que van
|
|
7813
|
+
SIN header arriba — la body card va sola y su tope queda plano (flush) en vez de
|
|
7814
|
+
con esquinas redondeadas sueltas. El padding del card sigue manejando el inset. */
|
|
7815
|
+
/* Tope plano SOLO en mobile (< 768px): la body card se pega al borde superior del widget
|
|
7816
|
+
(igual que el header sticky, que también aplana el tope solo en mobile). En desktop la card
|
|
7817
|
+
va centrada y separada, así que conserva el border-radius superior redondeado. */
|
|
7818
|
+
@media (max-width: 767px) {
|
|
7819
|
+
.kds-screen > .kds-card-elevated.kds-card-elevated--flush-top,
|
|
7820
|
+
.kds-card-elevated.kds-card-elevated--flush-top {
|
|
7821
|
+
border-top-left-radius: 0;
|
|
7822
|
+
border-top-right-radius: 0;
|
|
7823
|
+
}
|
|
7824
|
+
}
|
|
7825
|
+
|
|
7826
|
+
/* Payment stage — full-viewport centered wrapper.
|
|
7827
|
+
Fondo muted (gris) para que las cards blancas (header + body) y el gap entre
|
|
7828
|
+
ellas se distingan; sin esto, card blanca sobre fondo blanco se funden. */
|
|
6193
7829
|
.kds-payment-stage {
|
|
6194
7830
|
min-height: 100vh;
|
|
6195
7831
|
display: flex;
|
|
6196
7832
|
justify-content: center;
|
|
6197
7833
|
padding: var(--kds-spacing-2-5) var(--kds-spacing-2) var(--kds-spacing-8);
|
|
7834
|
+
background: var(--kds-color-background-muted);
|
|
6198
7835
|
}
|
|
6199
7836
|
|
|
6200
7837
|
/* Payment flow — narrow column */
|
|
@@ -6228,23 +7865,23 @@ button.kds-btn-success::after {
|
|
|
6228
7865
|
width: 100%;
|
|
6229
7866
|
}
|
|
6230
7867
|
|
|
6231
|
-
|
|
6232
|
-
|
|
6233
|
-
|
|
6234
|
-
|
|
6235
|
-
|
|
6236
|
-
/* Invoice sticky card: progressive padding-top (expanded 20px → collapsed 8px).
|
|
6237
|
-
Overrides base rule at same specificity; source order wins here. */
|
|
7868
|
+
/* Invoice sticky card padding (mobile).
|
|
7869
|
+
Top: estático 12px. Bottom: progresivo 16px (expandido, = desktop) → 8px (colapsado).
|
|
7870
|
+
El padding-bottom animado se reduce al colapsar — sin depender de que el clip-path
|
|
7871
|
+
corte el padding abruptamente. */
|
|
6238
7872
|
.kds-payment-flow .kds-card-elevated.kds-invoice-sticky {
|
|
6239
7873
|
padding-top: var(--kds-spacing-1-5);
|
|
7874
|
+
padding-bottom: calc(
|
|
7875
|
+
var(--kds-spacing-2)
|
|
7876
|
+
- var(--kds-spacing-1) * var(--collapse-progress, 0)
|
|
7877
|
+
);
|
|
6240
7878
|
}
|
|
6241
7879
|
|
|
6242
7880
|
|
|
6243
7881
|
}
|
|
6244
7882
|
|
|
6245
|
-
/* Desktop: restore
|
|
7883
|
+
/* Desktop: restore sticky header padding and full border-radius on invoice sticky */
|
|
6246
7884
|
@media (min-width: 768px) {
|
|
6247
|
-
.kds-payment-flow .kds-card-elevated,
|
|
6248
7885
|
.kds-payment-flow .kds-card-elevated.kds-invoice-sticky {
|
|
6249
7886
|
padding-top: var(--kds-spacing-2);
|
|
6250
7887
|
padding-bottom: var(--kds-spacing-2);
|
|
@@ -6348,6 +7985,28 @@ button.kds-btn-success::after {
|
|
|
6348
7985
|
background: rgba(255, 255, 255, .08);
|
|
6349
7986
|
}
|
|
6350
7987
|
|
|
7988
|
+
/* Icon-only arrows: kill the BeerCSS button active/focus ring (stray halo). */
|
|
7989
|
+
.kds-proto-nav-arrow:active,
|
|
7990
|
+
.kds-proto-nav-arrow:focus,
|
|
7991
|
+
.kds-proto-nav-arrow:focus-visible {
|
|
7992
|
+
outline: none;
|
|
7993
|
+
border: 0;
|
|
7994
|
+
box-shadow: none;
|
|
7995
|
+
}
|
|
7996
|
+
|
|
7997
|
+
/* Dark: the pill inverts to a LIGHT surface (bg = text-primary = white), so
|
|
7998
|
+
its contents need dark ink — the white-alpha tokens above become invisible. */
|
|
7999
|
+
[data-theme="dark"] .kds-proto-nav-label {
|
|
8000
|
+
color: var(--kds-color-gray-500);
|
|
8001
|
+
}
|
|
8002
|
+
[data-theme="dark"] .kds-proto-nav-arrow {
|
|
8003
|
+
color: var(--kds-color-gray-600);
|
|
8004
|
+
}
|
|
8005
|
+
[data-theme="dark"] .kds-proto-nav-arrow:hover {
|
|
8006
|
+
color: var(--kds-color-gray-900);
|
|
8007
|
+
background: rgba(0, 0, 0, .08);
|
|
8008
|
+
}
|
|
8009
|
+
|
|
6351
8010
|
/* Tweaks panel — floating config panel */
|
|
6352
8011
|
.kds-proto-tweaks {
|
|
6353
8012
|
position: fixed;
|
|
@@ -6548,11 +8207,21 @@ button.kds-btn-success::after {
|
|
|
6548
8207
|
display: none;
|
|
6549
8208
|
}
|
|
6550
8209
|
|
|
6551
|
-
|
|
6552
|
-
|
|
8210
|
+
/* Icon-only close: kill the BeerCSS button active/focus ring (stray border). */
|
|
8211
|
+
.kds-bank-modal-close:active,
|
|
8212
|
+
.kds-bank-modal-close:focus,
|
|
8213
|
+
.kds-bank-modal-close:focus-visible {
|
|
8214
|
+
outline: none;
|
|
8215
|
+
border: 0;
|
|
8216
|
+
box-shadow: none;
|
|
8217
|
+
}
|
|
8218
|
+
|
|
8219
|
+
.kds-bank-modal-close:hover {
|
|
8220
|
+
background: var(--kds-color-action-hover);
|
|
6553
8221
|
}
|
|
6554
8222
|
|
|
6555
|
-
.
|
|
8223
|
+
/* Search field reutilizable (standalone o dentro del KdsBankModal). */
|
|
8224
|
+
.kds-search-field {
|
|
6556
8225
|
width: 100%;
|
|
6557
8226
|
padding: var(--kds-spacing-1-25) var(--kds-spacing-1-5);
|
|
6558
8227
|
border: 1px solid var(--kds-color-divider);
|
|
@@ -6564,15 +8233,57 @@ button.kds-btn-success::after {
|
|
|
6564
8233
|
background: var(--kds-color-surface);
|
|
6565
8234
|
}
|
|
6566
8235
|
|
|
6567
|
-
.kds-
|
|
8236
|
+
.kds-search-field::placeholder {
|
|
6568
8237
|
color: var(--kds-color-text-hint);
|
|
6569
8238
|
}
|
|
6570
8239
|
|
|
6571
|
-
.kds-
|
|
8240
|
+
.kds-search-field:focus {
|
|
6572
8241
|
border-color: var(--kds-color-primary-main);
|
|
6573
8242
|
box-shadow: 0 0 0 2px var(--kds-color-primary-faint);
|
|
6574
8243
|
}
|
|
6575
8244
|
|
|
8245
|
+
/* Variante con ícono (withIcon): lupa posicionada DENTRO del input, a la derecha. */
|
|
8246
|
+
.kds-search-field-wrapper {
|
|
8247
|
+
position: relative;
|
|
8248
|
+
width: 100%;
|
|
8249
|
+
}
|
|
8250
|
+
|
|
8251
|
+
.kds-search-field-icon {
|
|
8252
|
+
position: absolute;
|
|
8253
|
+
right: var(--kds-spacing-1-5);
|
|
8254
|
+
top: 50%;
|
|
8255
|
+
transform: translateY(-50%);
|
|
8256
|
+
font-size: 20px;
|
|
8257
|
+
color: var(--kds-color-text-hint);
|
|
8258
|
+
pointer-events: none;
|
|
8259
|
+
}
|
|
8260
|
+
|
|
8261
|
+
/* Espacio a la derecha del texto para no solaparse con la lupa. */
|
|
8262
|
+
.kds-search-field-wrapper .kds-search-field {
|
|
8263
|
+
padding-right: calc(var(--kds-spacing-1-5) + var(--kds-spacing-3));
|
|
8264
|
+
}
|
|
8265
|
+
|
|
8266
|
+
/* Variante angosta del field (prop `narrow` de KdsTextField): ancho reducido y texto
|
|
8267
|
+
centrado, para inputs de pocos caracteres dispuestos en fila (ej. segmentos de
|
|
8268
|
+
coordenadas o código). No crece ni se encoge dentro de un flex row. */
|
|
8269
|
+
.field.kds-field--narrow {
|
|
8270
|
+
width: 6rem;
|
|
8271
|
+
flex: 0 0 auto;
|
|
8272
|
+
/* En fila horizontal no aplica el margin vertical que BeerCSS da a fields
|
|
8273
|
+
hermanos (regla de "flow" `... + :is(.field,...)`, specificity ~0,3,1);
|
|
8274
|
+
sin el reset los siguientes quedan desalineados hacia abajo. `!important`
|
|
8275
|
+
para ganarle a esa regla de framework. */
|
|
8276
|
+
margin-block: 0 !important;
|
|
8277
|
+
}
|
|
8278
|
+
|
|
8279
|
+
.field.kds-field--narrow > input {
|
|
8280
|
+
text-align: center;
|
|
8281
|
+
}
|
|
8282
|
+
|
|
8283
|
+
.kds-bank-modal-search {
|
|
8284
|
+
padding: 0 var(--kds-spacing-2) var(--kds-spacing-1-5);
|
|
8285
|
+
}
|
|
8286
|
+
|
|
6576
8287
|
.kds-bank-modal-body {
|
|
6577
8288
|
flex: 1;
|
|
6578
8289
|
overflow-y: auto;
|
|
@@ -6670,7 +8381,7 @@ button.kds-btn-success::after {
|
|
|
6670
8381
|
min-width: 0;
|
|
6671
8382
|
}
|
|
6672
8383
|
|
|
6673
|
-
.kds-qr-text .title {
|
|
8384
|
+
.kds-qr-text .kds-qr-title {
|
|
6674
8385
|
font-family: var(--kds-font-family-primary);
|
|
6675
8386
|
font-weight: 600;
|
|
6676
8387
|
font-size: var(--kds-font-size-sm);
|
|
@@ -6678,10 +8389,15 @@ button.kds-btn-success::after {
|
|
|
6678
8389
|
color: var(--kds-color-text-primary);
|
|
6679
8390
|
}
|
|
6680
8391
|
|
|
6681
|
-
.kds-qr-text .
|
|
8392
|
+
.kds-qr-text .kds-qr-subtitle {
|
|
6682
8393
|
font-family: var(--kds-font-family-primary);
|
|
6683
8394
|
font-size: var(--kds-font-size-caption);
|
|
6684
8395
|
color: var(--kds-color-text-secondary);
|
|
8396
|
+
/* Trunca con ellipsis en lugar de wrap a 2 líneas — evita apretar el row
|
|
8397
|
+
cuando el contenedor es angosto (mobile o decorator constrained). */
|
|
8398
|
+
overflow: hidden;
|
|
8399
|
+
text-overflow: ellipsis;
|
|
8400
|
+
white-space: nowrap;
|
|
6685
8401
|
}
|
|
6686
8402
|
|
|
6687
8403
|
/* QR Badge - "Rápido" indicator */
|
|
@@ -6704,46 +8420,26 @@ button.kds-btn-success::after {
|
|
|
6704
8420
|
font-size: 20px;
|
|
6705
8421
|
}
|
|
6706
8422
|
|
|
6707
|
-
/* Mobile responsive:
|
|
8423
|
+
/* Mobile responsive (≤480px): respira más — mantenemos padding/gap/avatar igual
|
|
8424
|
+
que desktop y solo agregamos truncation al subtitle y `flex-shrink: 0` en los
|
|
8425
|
+
ítems que deben mantener su tamaño (avatar, badge, chevron). */
|
|
6708
8426
|
@media (max-width: 480px) {
|
|
6709
|
-
.kds-qr-row {
|
|
6710
|
-
gap: var(--kds-spacing-1-5);
|
|
6711
|
-
padding: var(--kds-spacing-1-5);
|
|
6712
|
-
}
|
|
6713
|
-
|
|
6714
8427
|
.kds-qr-avatar {
|
|
6715
|
-
width: var(--kds-spacing-4-5);
|
|
6716
|
-
height: var(--kds-spacing-4-5);
|
|
6717
8428
|
flex-shrink: 0;
|
|
6718
8429
|
}
|
|
6719
8430
|
|
|
6720
|
-
.kds-qr-avatar .material-symbols-outlined,
|
|
6721
|
-
.kds-qr-avatar .material-icons-round {
|
|
6722
|
-
font-size: var(--kds-font-size-lg);
|
|
6723
|
-
}
|
|
6724
|
-
|
|
6725
|
-
.kds-qr-text .title {
|
|
6726
|
-
font-size: var(--kds-font-size-xs);
|
|
6727
|
-
line-height: var(--kds-line-height-tight);
|
|
6728
|
-
}
|
|
6729
|
-
|
|
6730
8431
|
.kds-qr-text .sub {
|
|
6731
|
-
font-size: var(--kds-font-size-caption);
|
|
6732
|
-
line-height: var(--kds-line-height-tight);
|
|
6733
8432
|
overflow: hidden;
|
|
6734
8433
|
text-overflow: ellipsis;
|
|
6735
8434
|
white-space: nowrap;
|
|
6736
8435
|
}
|
|
6737
8436
|
|
|
6738
8437
|
.kds-qr-badge {
|
|
6739
|
-
font-size: var(--kds-font-size-caption);
|
|
6740
|
-
padding: var(--kds-spacing-0-25) var(--kds-spacing-0-75);
|
|
6741
8438
|
flex-shrink: 0;
|
|
6742
8439
|
}
|
|
6743
8440
|
|
|
6744
8441
|
.kds-qr-row .material-symbols-outlined:last-child,
|
|
6745
8442
|
.kds-qr-row .material-icons-round:last-child {
|
|
6746
|
-
font-size: var(--kds-font-size-base);
|
|
6747
8443
|
flex-shrink: 0;
|
|
6748
8444
|
}
|
|
6749
8445
|
}
|
|
@@ -6772,7 +8468,11 @@ button.kds-btn-success::after {
|
|
|
6772
8468
|
border-radius: var(--kds-spacing-0-75);
|
|
6773
8469
|
font-size: var(--kds-font-size-sm);
|
|
6774
8470
|
cursor: pointer;
|
|
6775
|
-
|
|
8471
|
+
/* Transición más amplia y suave: bg + color + border ease-out */
|
|
8472
|
+
transition:
|
|
8473
|
+
background-color 280ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
8474
|
+
color 280ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
8475
|
+
border-top-color 280ms ease-out;
|
|
6776
8476
|
position: relative;
|
|
6777
8477
|
user-select: none;
|
|
6778
8478
|
}
|
|
@@ -6781,19 +8481,21 @@ button.kds-btn-success::after {
|
|
|
6781
8481
|
border-top: 0;
|
|
6782
8482
|
}
|
|
6783
8483
|
|
|
6784
|
-
|
|
8484
|
+
/* Hover NO aplica mientras la row esté en `.copied` o `.settling`
|
|
8485
|
+
(evita el flicker del hover state al desaparecer el verde de "copiado") */
|
|
8486
|
+
.kds-copyable-table-row:not(.copied):not(.settling):hover {
|
|
6785
8487
|
background: var(--kds-color-primary-faint);
|
|
6786
8488
|
}
|
|
6787
8489
|
|
|
6788
|
-
.kds-copyable-table-row:hover + .kds-copyable-table-row {
|
|
8490
|
+
.kds-copyable-table-row:not(.copied):not(.settling):hover + .kds-copyable-table-row {
|
|
6789
8491
|
border-top-color: transparent;
|
|
6790
8492
|
}
|
|
6791
8493
|
|
|
6792
|
-
.kds-copyable-table-row:active {
|
|
8494
|
+
.kds-copyable-table-row:not(.copied):not(.settling):active {
|
|
6793
8495
|
background: var(--kds-color-primary-selected);
|
|
6794
8496
|
}
|
|
6795
8497
|
|
|
6796
|
-
.kds-copyable-table-row .
|
|
8498
|
+
.kds-copyable-table-row .kds-key {
|
|
6797
8499
|
color: var(--kds-color-text-secondary);
|
|
6798
8500
|
font-size: var(--kds-font-size-caption);
|
|
6799
8501
|
letter-spacing: 0.3px;
|
|
@@ -6802,7 +8504,7 @@ button.kds-btn-success::after {
|
|
|
6802
8504
|
flex: 0 0 auto;
|
|
6803
8505
|
}
|
|
6804
8506
|
|
|
6805
|
-
.kds-copyable-table-row .
|
|
8507
|
+
.kds-copyable-table-row .kds-value {
|
|
6806
8508
|
color: var(--kds-color-text-primary);
|
|
6807
8509
|
font-family: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace;
|
|
6808
8510
|
font-weight: var(--kds-font-weight-medium);
|
|
@@ -6818,17 +8520,18 @@ button.kds-btn-success::after {
|
|
|
6818
8520
|
flex: 1 1 auto;
|
|
6819
8521
|
}
|
|
6820
8522
|
|
|
6821
|
-
.kds-copyable-table-row .
|
|
8523
|
+
.kds-copyable-table-row .kds-value::after {
|
|
6822
8524
|
content: 'content_copy';
|
|
6823
8525
|
font-family: 'Material Symbols Outlined';
|
|
6824
8526
|
font-size: var(--kds-font-size-sm);
|
|
6825
8527
|
color: var(--kds-color-primary-main);
|
|
6826
8528
|
opacity: 0;
|
|
6827
|
-
|
|
8529
|
+
/* Transición coordinada con la row */
|
|
8530
|
+
transition: opacity 280ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
6828
8531
|
flex: 0 0 auto;
|
|
6829
8532
|
}
|
|
6830
8533
|
|
|
6831
|
-
.kds-copyable-table-row:hover .
|
|
8534
|
+
.kds-copyable-table-row:not(.copied):not(.settling):hover .kds-value::after {
|
|
6832
8535
|
opacity: 0.7;
|
|
6833
8536
|
}
|
|
6834
8537
|
|
|
@@ -6836,22 +8539,83 @@ button.kds-btn-success::after {
|
|
|
6836
8539
|
background: var(--kds-color-success-soft);
|
|
6837
8540
|
}
|
|
6838
8541
|
|
|
6839
|
-
.kds-copyable-table-row.copied .
|
|
8542
|
+
.kds-copyable-table-row.copied .kds-value {
|
|
6840
8543
|
color: var(--kds-color-success-dark);
|
|
6841
8544
|
}
|
|
6842
8545
|
|
|
6843
|
-
.kds-copyable-table-row.copied .
|
|
8546
|
+
.kds-copyable-table-row.copied .kds-value::after {
|
|
6844
8547
|
content: 'check';
|
|
6845
8548
|
font-family: 'Material Symbols Outlined';
|
|
6846
8549
|
color: var(--kds-color-success-dark);
|
|
6847
8550
|
opacity: 1;
|
|
6848
8551
|
}
|
|
6849
8552
|
|
|
8553
|
+
/* Dark: success-dark text is near-invisible on the dark translucent success
|
|
8554
|
+
surface — use the alert success text token (light green in dark). */
|
|
8555
|
+
[data-theme="dark"] .kds-copyable-table-row.copied .kds-value,
|
|
8556
|
+
[data-theme="dark"] .kds-copyable-table-row.copied .kds-value::after {
|
|
8557
|
+
color: var(--kds-alert-success-text);
|
|
8558
|
+
}
|
|
8559
|
+
|
|
8560
|
+
/* `.settling`: estado de "recién copiado" — la row vuelve al normal sin
|
|
8561
|
+
activar hover. Dura lo mismo que la transición (~300ms) y se aplica
|
|
8562
|
+
desde React tras quitar `.copied`. */
|
|
8563
|
+
.kds-copyable-table-row.settling .kds-value::after {
|
|
8564
|
+
/* Mantén el check con opacity 0 mientras settling, fade out suave */
|
|
8565
|
+
opacity: 0;
|
|
8566
|
+
}
|
|
8567
|
+
|
|
6850
8568
|
/* Disable BeerCSS ripple on copyable table rows */
|
|
6851
8569
|
.kds-copyable-table-row::after {
|
|
6852
8570
|
display: none;
|
|
6853
8571
|
}
|
|
6854
8572
|
|
|
8573
|
+
/* ========================================
|
|
8574
|
+
GRID VARIANT (.kds-copyable-table--grid)
|
|
8575
|
+
Read-only grid of N text cells per row. No copy,
|
|
8576
|
+
no role=button, no "copy all". Cells share the row
|
|
8577
|
+
width equally. Used inside radio options, etc.
|
|
8578
|
+
======================================== */
|
|
8579
|
+
|
|
8580
|
+
/* La grilla es solo columnas de texto (como el DataTable original): sin caja,
|
|
8581
|
+
borde, fondo ni sombra del contenedor copyable. */
|
|
8582
|
+
.kds-copyable-table--grid {
|
|
8583
|
+
border: 0;
|
|
8584
|
+
border-radius: 0;
|
|
8585
|
+
background: none;
|
|
8586
|
+
padding: 0;
|
|
8587
|
+
box-shadow: none;
|
|
8588
|
+
}
|
|
8589
|
+
|
|
8590
|
+
.kds-copyable-table-row--grid {
|
|
8591
|
+
display: flex;
|
|
8592
|
+
align-items: center;
|
|
8593
|
+
gap: var(--kds-spacing-1-5);
|
|
8594
|
+
padding: 0;
|
|
8595
|
+
/* Sin el divisor border-top que trae la fila base del copyable. */
|
|
8596
|
+
border-top: 0;
|
|
8597
|
+
cursor: default;
|
|
8598
|
+
user-select: text;
|
|
8599
|
+
}
|
|
8600
|
+
|
|
8601
|
+
/* Separación entre filas de la grilla (sin divisores). */
|
|
8602
|
+
.kds-copyable-table-row--grid + .kds-copyable-table-row--grid {
|
|
8603
|
+
margin-top: var(--kds-spacing-0-5);
|
|
8604
|
+
}
|
|
8605
|
+
|
|
8606
|
+
.kds-grid-cell {
|
|
8607
|
+
flex: 1 1 0;
|
|
8608
|
+
min-width: 0;
|
|
8609
|
+
font-size: var(--kds-font-size-sm);
|
|
8610
|
+
font-weight: var(--kds-font-weight-medium);
|
|
8611
|
+
color: var(--kds-color-text-primary);
|
|
8612
|
+
word-break: break-word;
|
|
8613
|
+
}
|
|
8614
|
+
|
|
8615
|
+
.kds-grid-cell--disabled {
|
|
8616
|
+
color: var(--kds-color-text-disabled);
|
|
8617
|
+
}
|
|
8618
|
+
|
|
6855
8619
|
/* ========================================
|
|
6856
8620
|
COPY-ALL BUTTON (.kds-copy-all-btn)
|
|
6857
8621
|
Modifier for kds-btn kds-btn-outlined that adds
|
|
@@ -6883,6 +8647,15 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
6883
8647
|
border-color: var(--kds-color-success-border-light);
|
|
6884
8648
|
}
|
|
6885
8649
|
|
|
8650
|
+
/* Dark: lighten the "Datos copiados" text/border on the dark success surface. */
|
|
8651
|
+
[data-theme="dark"] button.kds-copy-all-btn.copied,
|
|
8652
|
+
[data-theme="dark"] button.kds-copy-all-btn.copied:hover,
|
|
8653
|
+
[data-theme="dark"] a.kds-copy-all-btn.copied,
|
|
8654
|
+
[data-theme="dark"] a.kds-copy-all-btn.copied:hover {
|
|
8655
|
+
color: var(--kds-alert-success-text);
|
|
8656
|
+
border-color: var(--kds-alert-success-border);
|
|
8657
|
+
}
|
|
8658
|
+
|
|
6886
8659
|
/* ========================================
|
|
6887
8660
|
SECTION NOTE (.kds-section-note)
|
|
6888
8661
|
Lightweight inline note for contextual caveats.
|
|
@@ -6917,6 +8690,17 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
6917
8690
|
.kds-section-note.kds-error { color: var(--kds-color-error-dark); }
|
|
6918
8691
|
.kds-section-note.kds-error > i { color: var(--kds-color-error-dark); }
|
|
6919
8692
|
|
|
8693
|
+
/* Dark: the semantic *-dark shades are near-invisible on the dark page bg —
|
|
8694
|
+
use the alert *-text tokens (light shades in dark). Base note is warning. */
|
|
8695
|
+
[data-theme="dark"] .kds-section-note,
|
|
8696
|
+
[data-theme="dark"] .kds-section-note > i { color: var(--kds-alert-warning-text); }
|
|
8697
|
+
[data-theme="dark"] .kds-section-note.kds-info,
|
|
8698
|
+
[data-theme="dark"] .kds-section-note.kds-info > i { color: var(--kds-alert-info-text); }
|
|
8699
|
+
[data-theme="dark"] .kds-section-note.kds-success,
|
|
8700
|
+
[data-theme="dark"] .kds-section-note.kds-success > i { color: var(--kds-alert-success-text); }
|
|
8701
|
+
[data-theme="dark"] .kds-section-note.kds-error,
|
|
8702
|
+
[data-theme="dark"] .kds-section-note.kds-error > i { color: var(--kds-alert-error-text); }
|
|
8703
|
+
|
|
6920
8704
|
/* ========================================
|
|
6921
8705
|
INFO TOOLTIP (.kds-info-tip)
|
|
6922
8706
|
Inline info button with hover/click tooltip bubble.
|
|
@@ -7012,7 +8796,7 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
7012
8796
|
.kds-monto-row {
|
|
7013
8797
|
display: flex;
|
|
7014
8798
|
justify-content: space-between;
|
|
7015
|
-
align-items: flex-
|
|
8799
|
+
align-items: flex-start;
|
|
7016
8800
|
padding: var(--kds-spacing-1-75) 0 var(--kds-spacing-1);
|
|
7017
8801
|
border-top: 1px dashed var(--kds-color-divider);
|
|
7018
8802
|
margin-top: var(--kds-spacing-1-75);
|
|
@@ -7036,3 +8820,360 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
7036
8820
|
color: var(--kds-color-text-primary);
|
|
7037
8821
|
}
|
|
7038
8822
|
|
|
8823
|
+
/* ========================================
|
|
8824
|
+
PAYMENT TOTAL (.kds-payment-total)
|
|
8825
|
+
Bloque "monto a pagar" para QR view y email templates.
|
|
8826
|
+
Portado desde paylink-ligopay → <kh:paymentTotal> + materialize-config.css.
|
|
8827
|
+
Variantes:
|
|
8828
|
+
- default: amount grande (3rem) en color primario Khipu.
|
|
8829
|
+
- email: amount compacto (1.5rem) en color texto primario.
|
|
8830
|
+
Responsive (default): mobile (≤ 1024px) centra y oculta titleMobile.
|
|
8831
|
+
======================================== */
|
|
8832
|
+
|
|
8833
|
+
.kds-payment-total {
|
|
8834
|
+
/* Component-scoped tokens — overrideables sin tocar el CSS global. */
|
|
8835
|
+
--kds-payment-total-title-size: var(--kds-font-size-2xl); /* 24px */
|
|
8836
|
+
--kds-payment-total-label-size: var(--kds-font-size-xl); /* 20px */
|
|
8837
|
+
--kds-payment-amount-size: 3rem; /* 48px — destacado */
|
|
8838
|
+
--kds-payment-amount-line-height: var(--kds-line-height-snug);
|
|
8839
|
+
--kds-payment-amount-color: var(--kds-color-primary-main);
|
|
8840
|
+
--kds-payment-amount-weight: var(--kds-font-weight-medium);
|
|
8841
|
+
|
|
8842
|
+
text-align: left;
|
|
8843
|
+
}
|
|
8844
|
+
|
|
8845
|
+
.kds-payment-total-title,
|
|
8846
|
+
.kds-payment-total-title-mobile {
|
|
8847
|
+
font-size: var(--kds-payment-total-title-size);
|
|
8848
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
8849
|
+
color: var(--kds-color-text-primary);
|
|
8850
|
+
margin-bottom: var(--kds-spacing-4);
|
|
8851
|
+
}
|
|
8852
|
+
|
|
8853
|
+
.kds-payment-total-title-mobile {
|
|
8854
|
+
display: none;
|
|
8855
|
+
}
|
|
8856
|
+
|
|
8857
|
+
.kds-payment-total .kds-payment-label {
|
|
8858
|
+
font-size: var(--kds-payment-total-label-size);
|
|
8859
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
8860
|
+
color: var(--kds-color-text-primary);
|
|
8861
|
+
margin-bottom: var(--kds-spacing-1);
|
|
8862
|
+
padding-top: 0;
|
|
8863
|
+
}
|
|
8864
|
+
|
|
8865
|
+
.kds-payment-total .kds-payment-amount {
|
|
8866
|
+
font-size: var(--kds-payment-amount-size);
|
|
8867
|
+
font-weight: var(--kds-payment-amount-weight);
|
|
8868
|
+
line-height: var(--kds-payment-amount-line-height);
|
|
8869
|
+
color: var(--kds-payment-amount-color);
|
|
8870
|
+
margin-bottom: var(--kds-spacing-4);
|
|
8871
|
+
}
|
|
8872
|
+
|
|
8873
|
+
.kds-payment-total .kds-payment-amount .kds-payment-total-decimal-sup,
|
|
8874
|
+
.kds-invoice-amount .kds-payment-total-decimal-sup {
|
|
8875
|
+
font-size: var(--kds-font-size-decimal-sup);
|
|
8876
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
8877
|
+
position: relative;
|
|
8878
|
+
top: 0;
|
|
8879
|
+
}
|
|
8880
|
+
|
|
8881
|
+
/* Variante email: amount compacto en color texto primario, alineación izquierda fija */
|
|
8882
|
+
.kds-payment-total--email {
|
|
8883
|
+
--kds-payment-amount-size: var(--kds-font-size-2xl); /* 24px */
|
|
8884
|
+
--kds-payment-amount-line-height: var(--kds-line-height-snug);
|
|
8885
|
+
--kds-payment-amount-color: var(--kds-color-text-primary);
|
|
8886
|
+
--kds-payment-amount-weight: var(--kds-font-weight-semibold);
|
|
8887
|
+
}
|
|
8888
|
+
|
|
8889
|
+
/* Tone modifier: swaps the amount color to the khipu-blue / LigoPay info blue.
|
|
8890
|
+
Combinable with --email or with the default variant. */
|
|
8891
|
+
.kds-payment-total--tone-info {
|
|
8892
|
+
--kds-payment-amount-color: var(--kds-color-info-blue); /* #5A5FE0 */
|
|
8893
|
+
}
|
|
8894
|
+
|
|
8895
|
+
/* Centered modifier: removes the asymmetric desktop padding (which exists for
|
|
8896
|
+
LigoPay QR view) and centers all internal text. Composable with --email and
|
|
8897
|
+
--tone-info. */
|
|
8898
|
+
.kds-payment-total--centered {
|
|
8899
|
+
padding-left: 0;
|
|
8900
|
+
padding-top: 0;
|
|
8901
|
+
text-align: center;
|
|
8902
|
+
}
|
|
8903
|
+
.kds-payment-total--centered .kds-payment-total-title,
|
|
8904
|
+
.kds-payment-total--centered .kds-payment-total-title-mobile,
|
|
8905
|
+
.kds-payment-total--centered .kds-payment-label,
|
|
8906
|
+
.kds-payment-total--centered .kds-payment-amount {
|
|
8907
|
+
text-align: center;
|
|
8908
|
+
}
|
|
8909
|
+
|
|
8910
|
+
/* Responsive: mobile ≤ 1024px — centra y conmuta los títulos (sólo variante default) */
|
|
8911
|
+
@media (max-width: 1024px) {
|
|
8912
|
+
.kds-payment-total {
|
|
8913
|
+
text-align: center;
|
|
8914
|
+
}
|
|
8915
|
+
|
|
8916
|
+
.kds-payment-total .kds-payment-total-title {
|
|
8917
|
+
display: none;
|
|
8918
|
+
}
|
|
8919
|
+
|
|
8920
|
+
.kds-payment-total .kds-payment-total-title-mobile {
|
|
8921
|
+
display: block;
|
|
8922
|
+
text-align: center;
|
|
8923
|
+
}
|
|
8924
|
+
|
|
8925
|
+
.kds-payment-total .kds-payment-label,
|
|
8926
|
+
.kds-payment-total .kds-payment-amount {
|
|
8927
|
+
text-align: center;
|
|
8928
|
+
}
|
|
8929
|
+
|
|
8930
|
+
/* Email mantiene alineación izquierda incluso en mobile (matchea email clients) */
|
|
8931
|
+
.kds-payment-total--email,
|
|
8932
|
+
.kds-payment-total--email .kds-payment-label,
|
|
8933
|
+
.kds-payment-total--email .kds-payment-amount {
|
|
8934
|
+
text-align: left;
|
|
8935
|
+
}
|
|
8936
|
+
}
|
|
8937
|
+
|
|
8938
|
+
/* ==========================================================================
|
|
8939
|
+
GRID UTILITIES — semantic aliases for BeerCSS .grid / .s* / .m* / .l*
|
|
8940
|
+
|
|
8941
|
+
Estas utilidades son ALIAS de las clases cortas de BeerCSS para que
|
|
8942
|
+
consumers (payment, LigoPay, Grails legacy) puedan escribir markup con
|
|
8943
|
+
nombres descriptivos sin renunciar al grid de 12 columnas de BeerCSS.
|
|
8944
|
+
|
|
8945
|
+
Convención (estilo Bootstrap responsive):
|
|
8946
|
+
- kds-grid → .grid (12-col CSS grid + 1rem gap)
|
|
8947
|
+
- kds-col-sm-{1..12} → .s{1..12} (mobile, siempre aplica)
|
|
8948
|
+
- kds-col-md-{1..12} → .m{1..12} (>=601px)
|
|
8949
|
+
- kds-col-lg-{1..12} → .l{1..12} (>=993px)
|
|
8950
|
+
|
|
8951
|
+
Las definiciones originales de BeerCSS NO se tocan; estas son aditivas.
|
|
8952
|
+
========================================================================== */
|
|
8953
|
+
|
|
8954
|
+
.kds-grid {
|
|
8955
|
+
--_gap: 1rem;
|
|
8956
|
+
display: grid;
|
|
8957
|
+
grid-template-columns: repeat(12, 1fr);
|
|
8958
|
+
gap: var(--_gap);
|
|
8959
|
+
block-size: auto;
|
|
8960
|
+
}
|
|
8961
|
+
|
|
8962
|
+
.kds-grid.kds-grid-no-space { --_gap: 0rem; }
|
|
8963
|
+
.kds-grid.kds-grid-medium-space { --_gap: 1.5rem; }
|
|
8964
|
+
.kds-grid.kds-grid-large-space { --_gap: 2rem; }
|
|
8965
|
+
|
|
8966
|
+
.kds-grid > * { margin: 0; }
|
|
8967
|
+
|
|
8968
|
+
.kds-col-sm-1 { grid-area: auto/span 1; }
|
|
8969
|
+
.kds-col-sm-2 { grid-area: auto/span 2; }
|
|
8970
|
+
.kds-col-sm-3 { grid-area: auto/span 3; }
|
|
8971
|
+
.kds-col-sm-4 { grid-area: auto/span 4; }
|
|
8972
|
+
.kds-col-sm-5 { grid-area: auto/span 5; }
|
|
8973
|
+
.kds-col-sm-6 { grid-area: auto/span 6; }
|
|
8974
|
+
.kds-col-sm-7 { grid-area: auto/span 7; }
|
|
8975
|
+
.kds-col-sm-8 { grid-area: auto/span 8; }
|
|
8976
|
+
.kds-col-sm-9 { grid-area: auto/span 9; }
|
|
8977
|
+
.kds-col-sm-10 { grid-area: auto/span 10; }
|
|
8978
|
+
.kds-col-sm-11 { grid-area: auto/span 11; }
|
|
8979
|
+
.kds-col-sm-12 { grid-area: auto/span 12; }
|
|
8980
|
+
|
|
8981
|
+
@media only screen and (min-width: 601px) {
|
|
8982
|
+
.kds-col-md-1 { grid-area: auto/span 1; }
|
|
8983
|
+
.kds-col-md-2 { grid-area: auto/span 2; }
|
|
8984
|
+
.kds-col-md-3 { grid-area: auto/span 3; }
|
|
8985
|
+
.kds-col-md-4 { grid-area: auto/span 4; }
|
|
8986
|
+
.kds-col-md-5 { grid-area: auto/span 5; }
|
|
8987
|
+
.kds-col-md-6 { grid-area: auto/span 6; }
|
|
8988
|
+
.kds-col-md-7 { grid-area: auto/span 7; }
|
|
8989
|
+
.kds-col-md-8 { grid-area: auto/span 8; }
|
|
8990
|
+
.kds-col-md-9 { grid-area: auto/span 9; }
|
|
8991
|
+
.kds-col-md-10 { grid-area: auto/span 10; }
|
|
8992
|
+
.kds-col-md-11 { grid-area: auto/span 11; }
|
|
8993
|
+
.kds-col-md-12 { grid-area: auto/span 12; }
|
|
8994
|
+
}
|
|
8995
|
+
|
|
8996
|
+
@media only screen and (min-width: 993px) {
|
|
8997
|
+
.kds-col-lg-1 { grid-area: auto/span 1; }
|
|
8998
|
+
.kds-col-lg-2 { grid-area: auto/span 2; }
|
|
8999
|
+
.kds-col-lg-3 { grid-area: auto/span 3; }
|
|
9000
|
+
.kds-col-lg-4 { grid-area: auto/span 4; }
|
|
9001
|
+
.kds-col-lg-5 { grid-area: auto/span 5; }
|
|
9002
|
+
.kds-col-lg-6 { grid-area: auto/span 6; }
|
|
9003
|
+
.kds-col-lg-7 { grid-area: auto/span 7; }
|
|
9004
|
+
.kds-col-lg-8 { grid-area: auto/span 8; }
|
|
9005
|
+
.kds-col-lg-9 { grid-area: auto/span 9; }
|
|
9006
|
+
.kds-col-lg-10 { grid-area: auto/span 10; }
|
|
9007
|
+
.kds-col-lg-11 { grid-area: auto/span 11; }
|
|
9008
|
+
.kds-col-lg-12 { grid-area: auto/span 12; }
|
|
9009
|
+
}
|
|
9010
|
+
|
|
9011
|
+
/* === Form icon chip ================================================== */
|
|
9012
|
+
/* Chip cuadrado con el icono del formulario (SecureForm, headers OIDC). */
|
|
9013
|
+
|
|
9014
|
+
.kds-form-icon-container {
|
|
9015
|
+
align-items: center;
|
|
9016
|
+
align-self: stretch;
|
|
9017
|
+
display: flex;
|
|
9018
|
+
flex-direction: column;
|
|
9019
|
+
gap: var(--kds-spacing-1);
|
|
9020
|
+
justify-content: center;
|
|
9021
|
+
padding: 0 var(--kds-spacing-2);
|
|
9022
|
+
}
|
|
9023
|
+
|
|
9024
|
+
.kds-form-icon-box {
|
|
9025
|
+
align-items: center;
|
|
9026
|
+
background: var(--kds-color-background-brand-subtle, #f0f0fa);
|
|
9027
|
+
border-radius: var(--kds-radius-md);
|
|
9028
|
+
display: flex;
|
|
9029
|
+
height: 52px;
|
|
9030
|
+
justify-content: center;
|
|
9031
|
+
padding: var(--kds-spacing-1);
|
|
9032
|
+
width: 52px;
|
|
9033
|
+
}
|
|
9034
|
+
|
|
9035
|
+
.kds-form-icon-box .kds-form-icon,
|
|
9036
|
+
.kds-form-icon-box > img,
|
|
9037
|
+
.kds-form-icon-box > svg {
|
|
9038
|
+
aspect-ratio: 1 / 1;
|
|
9039
|
+
flex-shrink: 0;
|
|
9040
|
+
height: 32px;
|
|
9041
|
+
width: 32px;
|
|
9042
|
+
}
|
|
9043
|
+
|
|
9044
|
+
@media (min-width: 600px) {
|
|
9045
|
+
.kds-form-icon-box {
|
|
9046
|
+
height: 56px;
|
|
9047
|
+
width: 56px;
|
|
9048
|
+
}
|
|
9049
|
+
|
|
9050
|
+
.kds-form-icon-box .kds-form-icon,
|
|
9051
|
+
.kds-form-icon-box > img,
|
|
9052
|
+
.kds-form-icon-box > svg {
|
|
9053
|
+
height: 30px;
|
|
9054
|
+
width: 30px;
|
|
9055
|
+
}
|
|
9056
|
+
}
|
|
9057
|
+
|
|
9058
|
+
@media (min-width: 900px) {
|
|
9059
|
+
.kds-form-icon-box {
|
|
9060
|
+
height: 60px;
|
|
9061
|
+
width: 60px;
|
|
9062
|
+
}
|
|
9063
|
+
|
|
9064
|
+
.kds-form-icon-box .kds-form-icon,
|
|
9065
|
+
.kds-form-icon-box > img,
|
|
9066
|
+
.kds-form-icon-box > svg {
|
|
9067
|
+
height: 32px;
|
|
9068
|
+
width: 32px;
|
|
9069
|
+
}
|
|
9070
|
+
}
|
|
9071
|
+
|
|
9072
|
+
/* === Accordion (componente KdsAccordion) ============================= */
|
|
9073
|
+
/* El bundle solo estilaba .kds-contract-accordion; estas son las clases
|
|
9074
|
+
que emite el componente React (details/summary con chevron propio). */
|
|
9075
|
+
|
|
9076
|
+
.kds-accordion {
|
|
9077
|
+
border: 1px solid var(--kds-accordion-border);
|
|
9078
|
+
border-radius: var(--kds-radius-md);
|
|
9079
|
+
overflow: hidden;
|
|
9080
|
+
}
|
|
9081
|
+
|
|
9082
|
+
.kds-accordion + .kds-accordion {
|
|
9083
|
+
margin-top: var(--kds-spacing-1);
|
|
9084
|
+
}
|
|
9085
|
+
|
|
9086
|
+
.kds-accordion-summary {
|
|
9087
|
+
align-items: center;
|
|
9088
|
+
background: var(--kds-accordion-header-bg);
|
|
9089
|
+
color: var(--kds-color-text-primary);
|
|
9090
|
+
cursor: pointer;
|
|
9091
|
+
display: flex;
|
|
9092
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
9093
|
+
justify-content: space-between;
|
|
9094
|
+
list-style: none;
|
|
9095
|
+
padding: var(--kds-spacing-1) var(--kds-spacing-2);
|
|
9096
|
+
transition: background 0.2s ease;
|
|
9097
|
+
}
|
|
9098
|
+
|
|
9099
|
+
.kds-accordion-summary::-webkit-details-marker {
|
|
9100
|
+
display: none;
|
|
9101
|
+
}
|
|
9102
|
+
|
|
9103
|
+
.kds-accordion-summary:hover {
|
|
9104
|
+
background: var(--kds-color-background-elevated);
|
|
9105
|
+
}
|
|
9106
|
+
|
|
9107
|
+
.kds-accordion-summary > .material-symbols-outlined {
|
|
9108
|
+
transition: transform 0.3s ease;
|
|
9109
|
+
}
|
|
9110
|
+
|
|
9111
|
+
.kds-accordion[open] > .kds-accordion-summary > .material-symbols-outlined {
|
|
9112
|
+
transform: rotate(180deg);
|
|
9113
|
+
}
|
|
9114
|
+
|
|
9115
|
+
.kds-accordion[open] > .kds-accordion-summary {
|
|
9116
|
+
background: var(--kds-accordion-bg-open);
|
|
9117
|
+
border-bottom: 1px solid var(--kds-accordion-border);
|
|
9118
|
+
}
|
|
9119
|
+
|
|
9120
|
+
.kds-accordion-details {
|
|
9121
|
+
background: var(--kds-accordion-bg-open);
|
|
9122
|
+
color: var(--kds-color-text-secondary);
|
|
9123
|
+
font-size: var(--kds-font-size-sm);
|
|
9124
|
+
line-height: var(--kds-line-height-relaxed);
|
|
9125
|
+
padding: var(--kds-spacing-1) var(--kds-spacing-2);
|
|
9126
|
+
}
|
|
9127
|
+
|
|
9128
|
+
.kds-accordion-details ul,
|
|
9129
|
+
.kds-accordion-details ol {
|
|
9130
|
+
margin: 0;
|
|
9131
|
+
padding-inline-start: var(--kds-spacing-2);
|
|
9132
|
+
}
|
|
9133
|
+
|
|
9134
|
+
/* === Display utilities ================================================ */
|
|
9135
|
+
|
|
9136
|
+
.kds-block {
|
|
9137
|
+
display: block;
|
|
9138
|
+
}
|
|
9139
|
+
|
|
9140
|
+
.kds-inline {
|
|
9141
|
+
display: inline;
|
|
9142
|
+
}
|
|
9143
|
+
|
|
9144
|
+
.kds-inline-block {
|
|
9145
|
+
display: inline-block;
|
|
9146
|
+
}
|
|
9147
|
+
|
|
9148
|
+
.kds-pre-wrap {
|
|
9149
|
+
white-space: pre-wrap;
|
|
9150
|
+
}
|
|
9151
|
+
|
|
9152
|
+
/* -- Empty State (sin resultados en búsquedas/listas filtradas) -- */
|
|
9153
|
+
.kds-empty-state {
|
|
9154
|
+
display: flex;
|
|
9155
|
+
flex-direction: column;
|
|
9156
|
+
align-items: center;
|
|
9157
|
+
text-align: center;
|
|
9158
|
+
gap: var(--kds-spacing-1);
|
|
9159
|
+
}
|
|
9160
|
+
|
|
9161
|
+
.kds-empty-state > i {
|
|
9162
|
+
/* La caja del material-symbol sigue al font-size (1em). */
|
|
9163
|
+
font-size: var(--kds-font-size-4xl);
|
|
9164
|
+
color: var(--kds-color-text-secondary);
|
|
9165
|
+
}
|
|
9166
|
+
|
|
9167
|
+
/* Textos agrupados con el mismo ritmo compacto que kds-secure-loader-text. */
|
|
9168
|
+
.kds-empty-state-text {
|
|
9169
|
+
display: flex;
|
|
9170
|
+
flex-direction: column;
|
|
9171
|
+
gap: var(--kds-spacing-0-25);
|
|
9172
|
+
}
|
|
9173
|
+
|
|
9174
|
+
.kds-empty-state-text p {
|
|
9175
|
+
/* BeerCSS aplica margin-block-start !important a los <p>; hay que igualarlo. */
|
|
9176
|
+
margin: 0 !important;
|
|
9177
|
+
line-height: var(--kds-line-height-snug);
|
|
9178
|
+
}
|
|
9179
|
+
|