2026-10-03 13:33:50 +02:00
/* USWDS `sans` role resolves to "Public Sans Web"; faces declared here so Vite fingerprints the files. */
@ font-face { font-family : 'Public Sans Web' ; font-style : normal ; font-weight : 300 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-Light.woff2' ) format ( 'woff2' ) ; }
@ font-face { font-family : 'Public Sans Web' ; font-style : normal ; font-weight : 400 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-Regular.woff2' ) format ( 'woff2' ) ; }
@ font-face { font-family : 'Public Sans Web' ; font-style : italic ; font-weight : 400 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-Italic.woff2' ) format ( 'woff2' ) ; }
@ font-face { font-family : 'Public Sans Web' ; font-style : normal ; font-weight : 500 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-Medium.woff2' ) format ( 'woff2' ) ; }
@ font-face { font-family : 'Public Sans Web' ; font-style : normal ; font-weight : 600 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-SemiBold.woff2' ) format ( 'woff2' ) ; }
@ font-face { font-family : 'Public Sans Web' ; font-style : normal ; font-weight : 700 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-Bold.woff2' ) format ( 'woff2' ) ; }
@ font-face { font-family : 'Public Sans Web' ; font-style : italic ; font-weight : 700 ; font-display : swap ; src : url ( '../assets/fonts/public-sans/PublicSans-BoldItalic.woff2' ) format ( 'woff2' ) ; }
/* Layout glue only. Colour, type, spacing and components come from USWDS. */
* , * :: before , * :: after { box-sizing : border-box ; }
html , body , # root { height : 100 % ; }
body { margin : 0 ; }
. kbb-app { display : flex ; flex-direction : column ; height : 100 % ; min-height : 0 ; }
. kbb-main { flex : 1 ; min-height : 0 ; overflow : auto ; background : #fff ; }
. kbb-main : focus { outline : none ; }
. kbb-narrow { max-width : 44 rem ; }
. kbb-main--split { display : grid ; grid-template-columns : minmax ( 0 , 1 fr ) ; grid-template-rows : minmax ( 0 , 1 fr ) ; overflow : hidden ; }
. kbb-panel { overflow : auto ; padding : 1 rem 1 rem 2 rem ; background : #fff ; min-width : 0 ; }
. kbb-map-wrap { position : relative ; min-height : 0 ; height : 100 % ; }
. kbb-map { position : absolute ; inset : 0 ; }
@ media ( min-width : 64em ) {
. kbb-main--split { grid-template-columns : minmax ( 24 rem , 30 rem ) minmax ( 0 , 1 fr ) ; }
. kbb-panel { border-right : 1 px solid #dfe1e2 ; }
}
@ media ( max-width : 63 . 99em ) {
. kbb-main--split . is-list . kbb-map-wrap { display : none ; }
. kbb-main--split . is-map . kbb-panel { display : none ; }
}
. kbb-place-btn { appearance : none ; cursor : pointer ; font : inherit ; color : inherit ; }
. kbb-place-btn : hover { background : #f0f0f0 ; }
. kbb-place-btn : focus-visible , . kbb-pin : focus-visible { outline : 0.25 rem solid #2491ff ; outline-offset : 0 ; }
. kbb-source { display : flex ; flex-wrap : wrap ; gap : 0.25 rem 1.25 rem ; }
. kbb-source > div { display : flex ; align-items : center ; gap : 0.4 rem ; }
. kbb-source dt :: after { content : ':' ; }
. kbb-source dd { margin : 0 ; }
. kbb-legend { position : absolute ; left : 0.5 rem ; bottom : 1.75 rem ; z-index : 2 ; max-width : 17 rem ; padding : 0.5 rem 0.75 rem ; background : #fff ; border : 1 px solid #565c65 ; border-radius : 0.25 rem ; font-size : 0.875 rem ; }
. kbb-legend summary { cursor : pointer ; font-weight : 700 ; }
. kbb-legend ul { margin-top : 0.5 rem !important ; }
. kbb-legend li { padding : 0.15 rem 0 ; }
. kbb-swatch { flex : none ; width : 0.9 rem ; height : 0.9 rem ; border : 2 px solid ; border-radius : 50 % ; margin-right : 0.5 rem ; }
. kbb-map-note { position : absolute ; top : 0.5 rem ; left : 0.5 rem ; right : 3.5 rem ; z-index : 2 ; }
. kbb-pin { display : flex ; align-items : center ; justify-content : center ; width : 1.75 rem ; height : 1.75 rem ; border-radius : 50 % ; border : 2 px solid #1b1b1b ; background : #fff ; color : #1b1b1b ; font : 700 0.875 rem / 1 inherit ; padding : 0 ; }
. kbb-pin--start { background : #005ea2 ; color : #fff ; border-color : #fff ; }
. kbb-pin--end { background : #1b1b1b ; color : #fff ; border-color : #fff ; }
. kbb-pin--barrier { background : #ffbe2e ; cursor : pointer ; }
. kbb-pin--barrier . usa-icon { width : 1.1 rem ; height : 1.1 rem ; fill : currentColor ; }
. kbb-pin--hard { background : #b50909 ; color : #fff ; border-color : #fff ; }
@ media ( prefers-reduced-motion : reduce ) { * { scroll-behavior : auto !important ; } }
2026-10-03 14:29:28 +02:00
/* ---- profile / tooltips ---- */
. kbb-step { display : flex ; align-items : center ; gap : 0.6 rem ; margin : 0 0 0.5 rem ; }
. kbb-step__n { display : inline-flex ; align-items : center ; justify-content : center ; flex : none ; width : 2 rem ; height : 2 rem ; border-radius : 50 % ; background : #005ea2 ; color : #fff ; font-size : 1 rem ; font-weight : 700 ; }
. kbb-choice { display : grid ; grid-template-columns : repeat ( auto - fit , minmax ( 13 rem , 1 fr ) ) ; gap : 0.5 rem ; }
. kbb-choice . usa-radio { margin : 0 ; }
. kbb-choice . usa-radio__label { margin-top : 0 ; height : 100 % ; }
. kbb-tip { position : relative ; display : inline-flex ; margin-left : 0.25 rem ; }
. kbb-tip__btn { appearance : none ; display : inline-flex ; align-items : center ; justify-content : center ; min-width : 2.75 rem ; min-height : 2.75 rem ; padding : 0 ; background : none ; border : 0 ; border-radius : 50 % ; color : #005ea2 ; cursor : pointer ; }
. kbb-tip__btn : hover { background : #e7f6f8 ; }
. kbb-tip__btn : focus-visible { outline : 0.25 rem solid #2491ff ; }
. kbb-tip__bubble { position : absolute ; z-index : 20 ; top : 100 % ; left : -0.5 rem ; width : max-content ; max-width : min ( 19 rem , 78 vw ) ; padding : 0.6 rem 0.75 rem ; background : #1b1b1b ; color : #fff ; border-radius : 0.25 rem ; font-size : 0.9 rem ; line-height : 1.4 ; font-weight : 400 ; box-shadow : 0 2 px 8 px rgba ( 0 , 0 , 0 , 0.3 ) ; }
. kbb-tip__bubble [ hidden ] { display : none ; }
/* ---- dashboard ---- */
. kbb-wide { max-width : 64 rem ; }
. kbb-kpis { display : grid ; grid-template-columns : repeat ( auto - fit , minmax ( 11 rem , 1 fr ) ) ; gap : 0.75 rem ; margin-bottom : 1 rem !important ; }
. kbb-kpi { display : flex ; flex-direction : column ; padding : 0.9 rem 1 rem ; border : 1 px solid #dfe1e2 ; border-left : 0.35 rem solid #005ea2 ; border-radius : 0.25 rem ; background : #fff ; }
. kbb-kpi__v { font-size : 1.9 rem ; font-weight : 700 ; line-height : 1.1 ; color : #1b1b1b ; }
. kbb-kpi__l { font-size : 0.9 rem ; margin-top : 0.25 rem ; color : #3d4551 ; }
. kbb-kpi__s { font-size : 0.8 rem ; color : #565c65 ; }
. kbb-bar { min-width : 8 rem ; white-space : nowrap ; }
. kbb-bar span { display : inline-block ; height : 0.75 rem ; vertical-align : middle ; }
. kbb-bar__k { background : #00a91c ; }
. kbb-bar__s { background : #ffbe2e ; }
. kbb-bar__u { background : #a9aeb1 ; }
. kbb-rank { display : inline-flex ; align-items : center ; justify-content : center ; width : 1.9 rem ; height : 1.9 rem ; margin-right : 0.6 rem ; border-radius : 50 % ; background : #1b1b1b ; color : #fff ; font-weight : 700 ; }
/* ---- access card ---- */
. kbb-card { position : fixed ; inset : 0 ; z-index : 100 ; overflow : auto ; padding : 1 rem ; background : rgba ( 27 , 27 , 27 , 0.7 ) ; }
. kbb-card__sheet { max-width : 46 rem ; margin : 0 auto ; padding : 1.5 rem ; background : #fff ; border-radius : 0.25 rem ; }
. kbb-card__bar { display : flex ; flex-wrap : wrap ; gap : 0.5 rem ; margin-bottom : 1 rem ; }
. kbb-card__bar . usa-button { margin : 0 ; }
@ media print {
. kbb-app > : not ( . kbb-card ) { display : none !important ; }
. kbb-card { position : static ; padding : 0 ; background : none ; overflow : visible ; }
. kbb-card__sheet { max-width : none ; padding : 0 ; }
. kbb-card__bar { display : none ; }
}
/* ---- high contrast (settings) ---- */
: root [ data-contrast = 'high' ] { --kbb-border : #1b1b1b ; }
: root [ data-contrast = 'high' ] body { color : #000 ; }
: root [ data-contrast = 'high' ] . text-base-dark , : root [ data-contrast = 'high' ] . text-base , : root [ data-contrast = 'high' ] . usa-hint { color : #1b1b1b !important ; }
: root [ data-contrast = 'high' ] . border-base-lighter { border-color : #1b1b1b !important ; }
: root [ data-contrast = 'high' ] . usa-input , : root [ data-contrast = 'high' ] . usa-select , : root [ data-contrast = 'high' ] . usa-textarea { border-width : 2 px ; border-color : #000 ; }
: root [ data-contrast = 'high' ] . usa-button--outline { box-shadow : inset 0 0 0 3 px #1b1b1b ; color : #1b1b1b ; }
: root [ data-motion = 'reduce' ] * { transition : none !important ; animation : none !important ; }
/* ---- header ---- */
. kbb-head { display : flex ; flex-wrap : wrap ; align-items : center ; gap : 0.5 rem 1.25 rem ; padding : 0.6 rem 1 rem ; }
. kbb-head__nav { order : 3 ; width : 100 % ; overflow-x : auto ; }
. kbb-head__tools { display : flex ; align-items : center ; gap : 0.75 rem ; margin-left : auto ; }
. kbb-head__user { display : none ; }
@ media ( min-width : 40em ) { . kbb-head__user { display : inline-flex ; align-items : center ; } }
@ media ( min-width : 64em ) { . kbb-head__nav { order : 0 ; width : auto ; flex : 1 ; } }
. usa-range { max-width : 100 % ; width : 100 % ; }
. kbb-result : focus { outline : none ; }
. kbb-head__brand { font-size : 1.1 rem ; }
. kbb-banner-detail { display : none ; }
@ media ( min-width : 40em ) { . kbb-banner-detail { display : inline ; } . kbb-head__brand { font-size : 1.35 rem ; } }
. usa-site-alert . usa-alert { padding-top : 0.25 rem ; padding-bottom : 0.25 rem ; }
/* ---- evidence ---- */
. kbb-measure-canvas { display : block ; width : 100 % ; max-height : 22 rem ; object-fit : contain ; background : #1b1b1b ; border-radius : 0.25 rem ; touch-action : manipulation ; cursor : crosshair ; }
. kbb-thumb { width : 5.5 rem ; height : 5.5 rem ; object-fit : cover ; border-radius : 0.25 rem ; border : 1 px solid #a9aeb1 ; flex : none ; }
/* ---- live guidance banner ---- */
. kbb-guide { display : flex ; flex-wrap : wrap ; align-items : center ; gap : 0.5 rem 1 rem ; padding : 0.75 rem 1 rem ; background : #1b1b1b ; color : #fff ; border-bottom : 4 px solid #00bde3 ; }
. kbb-guide__main { flex : 1 1 18 rem ; min-width : 0 ; }
. kbb-guide__headline { margin : 0 ; font-size : 1.35 rem ; font-weight : 700 ; line-height : 1.25 ; display : flex ; align-items : center ; }
. kbb-guide__headline . usa-icon { flex : none ; fill : #00bde3 ; }
. kbb-guide__barrier { margin : 0.35 rem 0 0 ; padding : 0.3 rem 0.6 rem ; background : #ffbe2e ; color : #1b1b1b ; font-weight : 700 ; border-radius : 0.25 rem ; display : inline-flex ; align-items : center ; }
. kbb-guide__meta { margin : 0.25 rem 0 0 ; font-size : 0.9 rem ; color : #dfe1e2 ; }
. kbb-guide__actions { display : flex ; flex-wrap : wrap ; gap : 0.5 rem ; }
. kbb-guide . usa-button--inverse [ aria-pressed = 'true' ] { background : #fff ; color : #1b1b1b ; box-shadow : none ; }
/* ---- basemap switch ---- */
. kbb-basemap { position : absolute ; top : 0.5 rem ; left : 0.5 rem ; z-index : 2 ; display : flex ; background : #fff ; border-radius : 0.25 rem ; box-shadow : 0 1 px 4 px rgba ( 0 , 0 , 0 , 0.4 ) ; }
. kbb-basemap button { appearance : none ; border : 0 ; background : #fff ; color : #005ea2 ; font : inherit ; font-weight : 700 ; padding : 0.55 rem 0.9 rem ; min-height : 2.75 rem ; cursor : pointer ; }
. kbb-basemap button : first-child { border-radius : 0.25 rem 0 0 0.25 rem ; }
. kbb-basemap button : last-child { border-radius : 0 0.25 rem 0.25 rem 0 ; }
. kbb-basemap button [ aria-pressed = 'true' ] { background : #005ea2 ; color : #fff ; }
. kbb-basemap button : focus-visible { outline : 0.25 rem solid #2491ff ; outline-offset : -0.25 rem ; }
. kbb-me { width : 1.4 rem ; height : 1.4 rem ; border-radius : 50 % ; background : #1a73e8 ; border : 3 px solid #fff ; box-shadow : 0 0 0 3 px rgba ( 26 , 115 , 232 , 0.35 ) ; }
. kbb-guide__voice { display : flex ; }
. kbb-guide__select { margin : 0 ; min-height : 2.5 rem ; padding : 0.4 rem 2 rem 0.4 rem 0.6 rem ; background-color : transparent ; color : #fff ; border : 2 px solid #fff ; font-size : 0.95 rem ; }
. kbb-guide__select option { color : #1b1b1b ; }