@ -39,16 +39,17 @@
--_calendar-accent-track : var ( --color-primary-track ) ;
--_calendar-accent-border : var ( --color-primary-border ) ;
--_calendar-accent-text : var ( --color-primary-text ) ;
/ * Start endpoint defaults to ` affirm ` semantic ( range opens ) . End
endpoint follows the ` data-color ` cascade . * /
--_calendar-range-start-solid : var ( --color-affirm-solid ) ;
--_calendar-range-start-solid-hover : var ( --color-affirm-solid-hover ) ;
--_calendar-range-start-border : var ( --color-affirm-border ) ;
--_calendar-range-start-text : var ( --color-affirm-contrast ) ;
--_calendar-range-end-solid : var ( --_calendar-accent-solid ) ;
--_calendar-range-end-solid-hover : var ( --_calendar-accent-solid-hover ) ;
--_calendar-range-end-border : var ( --_calendar-accent-solid ) ;
--_calendar-range-end-text : var ( --calendar-day-selected-color ) ;
/ * Range endpoints — the calendar-surface public API ` --calendar-range- * ` . The
asymmetry below is DELIBERATE : START defaults live in the recipe ( ` : root ` ,
= affirm — the range "opens" ) so a theme can override them via config ; the host
only swaps start per data-color further down . END binds to the LIVE accent , so it
MUST sit on the host where ` --_calendar-accent- * ` cascades — the recipe ' s ` : root `
end defaults are the nominal public default ( start is independently themeable ,
end tracks the accent ) . * /
--calendar-range-end-solid : var ( --_calendar-accent-solid ) ;
--calendar-range-end-solid-hover : var ( --_calendar-accent-solid-hover ) ;
--calendar-range-end-border : var ( --_calendar-accent-solid ) ;
--calendar-range-end-text : var ( --calendar-day-selected-color ) ;
display : inline-flex ;
flex-direction : column ;
@ -124,10 +125,10 @@
--_calendar-accent-text : var ( --color-affirm-text ) ;
/ * When the end accent IS ` affirm ` , swap the start endpoint to
secondary so the two endpoints stay visually distinct . * /
-- _ calendar-range-start-solid: var ( --color-secondary-solid ) ;
-- _ calendar-range-start-solid-hover: var ( --color-secondary-solid-hover ) ;
-- _ calendar-range-start-border: var ( --color-secondary-border ) ;
-- _ calendar-range-start-text: var ( --color-secondary-contrast ) ;
-- calendar-range-start-solid: var ( --color-secondary-solid ) ;
-- calendar-range-start-solid-hover: var ( --color-secondary-solid-hover ) ;
-- calendar-range-start-border: var ( --color-secondary-border ) ;
-- calendar-range-start-text: var ( --color-secondary-contrast ) ;
}
[ data-range-calendar ] [ data-color = 'fulfill' ] {
@ -136,10 +137,10 @@
--_calendar-accent-track : var ( --color-fulfill-track ) ;
--_calendar-accent-border : var ( --color-fulfill-border ) ;
--_calendar-accent-text : var ( --color-fulfill-text ) ;
-- _ calendar-range-start-solid: var ( --color-secondary-solid ) ;
-- _ calendar-range-start-solid-hover: var ( --color-secondary-solid-hover ) ;
-- _ calendar-range-start-border: var ( --color-secondary-border ) ;
-- _ calendar-range-start-text: var ( --color-secondary-contrast ) ;
-- calendar-range-start-solid: var ( --color-secondary-solid ) ;
-- calendar-range-start-solid-hover: var ( --color-secondary-solid-hover ) ;
-- calendar-range-start-border: var ( --color-secondary-border ) ;
-- calendar-range-start-text: var ( --color-secondary-contrast ) ;
}
[ data-range-calendar ] [ data-color = 'risk' ] {
@ -309,60 +310,60 @@
}
[ data-range-calendar-day ] [ data-selected ] {
border-color : var ( -- _ calendar-range-end-border) ;
background : var ( -- _ calendar-range-end-solid) ;
border-color : var ( -- calendar-range-end-border) ;
background : var ( -- calendar-range-end-solid) ;
color : var ( --calendar-day-selected-color ) ;
}
[ data-range-calendar-day ] [ data-range-start ] {
/ * Start endpoint : solid background + left-edge accent stripe so it reads
as the * opening * of the range , never blending with the end . * /
border-color : var ( -- _ calendar-range-start-border) ;
background : var ( -- _ calendar-range-start-solid) ;
color : var ( -- _ calendar-range-start-text) ;
box-shadow : inset 2px 0 0 0 var ( -- _ calendar-range-start-border) ;
border-color : var ( -- calendar-range-start-border) ;
background : var ( -- calendar-range-start-solid) ;
color : var ( -- calendar-range-start-text) ;
box-shadow : inset 2px 0 0 0 var ( -- calendar-range-start-border) ;
font-weight : var ( --font-weight-semibold ) ;
}
[ data-range-calendar-day ] [ data-range-end ] {
/* End endpoint: solid background + right-edge accent stripe. */
border-color : var ( -- _ calendar-range-end-border) ;
background : var ( -- _ calendar-range-end-solid) ;
color : var ( -- _ calendar-range-end-text) ;
box-shadow : inset -2px 0 0 0 var ( -- _ calendar-range-end-border) ;
border-color : var ( -- calendar-range-end-border) ;
background : var ( -- calendar-range-end-solid) ;
color : var ( -- calendar-range-end-text) ;
box-shadow : inset -2px 0 0 0 var ( -- calendar-range-end-border) ;
font-weight : var ( --font-weight-semibold ) ;
}
[ data-range-calendar-day ] [ data-range-start ] [ data-range-end ] {
border-color : var ( -- _ calendar-range-end-border) ;
border-color : var ( -- calendar-range-end-border) ;
background : linear-gradient (
135deg ,
var ( -- _ calendar-range-start-solid) 0 50 % ,
var ( -- _ calendar-range-end-solid) 50 % 100 %
var ( -- calendar-range-start-solid) 0 50 % ,
var ( -- calendar-range-end-solid) 50 % 100 %
) ;
color : var ( --calendar-day-selected-color ) ;
}
[ data-range-calendar-day ] [ data-selected ] : hover {
border-color : var ( -- _ calendar-range-end-solid-hover) ;
background : var ( -- _ calendar-range-end-solid-hover) ;
border-color : var ( -- calendar-range-end-solid-hover) ;
background : var ( -- calendar-range-end-solid-hover) ;
}
[ data-range-calendar-day ] [ data-range-start ] : hover {
border-color : var ( -- _ calendar-range-start-solid-hover) ;
background : var ( -- _ calendar-range-start-solid-hover) ;
border-color : var ( -- calendar-range-start-solid-hover) ;
background : var ( -- calendar-range-start-solid-hover) ;
}
[ data-range-calendar-day ] [ data-range-end ] : hover {
border-color : var ( -- _ calendar-range-end-solid-hover) ;
background : var ( -- _ calendar-range-end-solid-hover) ;
border-color : var ( -- calendar-range-end-solid-hover) ;
background : var ( -- calendar-range-end-solid-hover) ;
}
[ data-range-calendar-day ] [ data-range-start ] [ data-range-end ] : hover {
background : linear-gradient (
135deg ,
var ( -- _ calendar-range-start-solid-hover) 0 50 % ,
var ( -- _ calendar-range-end-solid-hover) 50 % 100 %
var ( -- calendar-range-start-solid-hover) 0 50 % ,
var ( -- calendar-range-end-solid-hover) 50 % 100 %
) ;
}