/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[2].use[1]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/next-font-loader/index.js??ruleSet[1].rules[14].oneOf[2].use[2]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/font/google/target.css?{"path":"app/layout.tsx","import":"Space_Grotesk","arguments":[{"subsets":["latin"],"variable":"--font-display-src","display":"swap"}],"variableName":"display"} ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* vietnamese */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/_next/static/media/e1aab0933260df4d-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/_next/static/media/b7387a63dd068245-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/_next/static/media/36966cca54120369-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}@font-face {font-family: 'Space Grotesk Fallback';src: local("Arial");ascent-override: 89.71%;descent-override: 26.62%;line-gap-override: 0.00%;size-adjust: 109.69%
}.__className_dd5b2f {font-family: 'Space Grotesk', 'Space Grotesk Fallback';font-style: normal
}.__variable_dd5b2f {--font-display-src: 'Space Grotesk', 'Space Grotesk Fallback'
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[2].use[1]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/next-font-loader/index.js??ruleSet[1].rules[14].oneOf[2].use[2]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/font/google/target.css?{"path":"app/layout.tsx","import":"IBM_Plex_Sans","arguments":[{"subsets":["latin"],"weight":["300","400","500","600","700"],"variable":"--font-sans-src","display":"swap"}],"variableName":"sans"} ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/7b19b489dc6743ba-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/28793f5c5e3d822d-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/c9c3823090ec8b55-s.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/b3bf17a9041d9433-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/2801417b65625cf5-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/7b19b489dc6743ba-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/28793f5c5e3d822d-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/c9c3823090ec8b55-s.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/b3bf17a9041d9433-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/2801417b65625cf5-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/7b19b489dc6743ba-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/28793f5c5e3d822d-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/c9c3823090ec8b55-s.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/b3bf17a9041d9433-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/2801417b65625cf5-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/7b19b489dc6743ba-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/28793f5c5e3d822d-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/c9c3823090ec8b55-s.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/b3bf17a9041d9433-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/2801417b65625cf5-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/7b19b489dc6743ba-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/28793f5c5e3d822d-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/c9c3823090ec8b55-s.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/b3bf17a9041d9433-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/2801417b65625cf5-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}@font-face {font-family: 'IBM Plex Sans Fallback';src: local("Arial");ascent-override: 101.32%;descent-override: 27.18%;line-gap-override: 0.00%;size-adjust: 101.17%
}.__className_6d343d {font-family: 'IBM Plex Sans', 'IBM Plex Sans Fallback';font-style: normal
}.__variable_6d343d {--font-sans-src: 'IBM Plex Sans', 'IBM Plex Sans Fallback'
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[2].use[1]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/next-font-loader/index.js??ruleSet[1].rules[14].oneOf[2].use[2]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/font/google/target.css?{"path":"app/layout.tsx","import":"IBM_Plex_Mono","arguments":[{"subsets":["latin"],"weight":["400","500","600"],"variable":"--font-mono-src","display":"swap"}],"variableName":"mono"} ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/011e180705008d6f-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/92eeb95d069020cc-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/ef4d5661765d0e49-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/d29838c109ef09b4-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/e40af3453d7c920a-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/99dcf268bda04fe5-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/98e207f02528a563-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/73cb51aac9c97f90-s.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/d26bbd13d6b70f89-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/20535187d867b7b9-s.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/5356a6a4f2c8c8d8-s.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/db96af6b531dc71f-s.p.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}@font-face {font-family: 'IBM Plex Mono Fallback';src: local("Arial");ascent-override: 76.16%;descent-override: 20.43%;line-gap-override: 0.00%;size-adjust: 134.59%
}.__className_595324 {font-family: 'IBM Plex Mono', 'IBM Plex Mono Fallback';font-style: normal
}.__variable_595324 {--font-mono-src: 'IBM Plex Mono', 'IBM Plex Mono Fallback'
}

/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[2]!../../node_modules/.pnpm/next@15.5.18_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./app/globals.css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* ============================================================
   OVE GPT — global styles.
   Built on the OVE Design System (claude.ai/design handoff,
   May 2026 redesign). Light theme is the default; dark mode
   activates via [data-theme="dark"] or <html class="dark">.
   ============================================================ */

:root {
  color-scheme: light;

  /* ---------- Brand colours (bright, instrument-panel) ---------- */
  --ove-blue-900: #0a2e6e;   /* deep cobalt — headlines, inverse bg */
  --ove-blue-800: #0f47c2;   /* PRIMARY brand blue — electric cobalt */
  --ove-blue-700: #1463e6;   /* hover / link */
  --ove-blue-600: #2f7bff;
  --ove-blue-500: #5396ff;
  --ove-blue-200: #b6ceff;
  --ove-blue-100: #d8e5ff;
  --ove-blue-50:  #eef4ff;

  --ove-red:      #e5202e;   /* Austrian-flag red — alert only */
  --ove-red-dark: #b7141f;

  /* ---------- Signal accents (live-circuit, instrument) ---------- */
  --signal-yellow:    #ffd60a;
  --signal-yellow-bg: #fff8d6;
  --signal-cyan:      #00c2d7;
  --signal-cyan-bg:   #dbf7fb;

  /* ---------- Neutrals (cool, near-pure-white) ---------- */
  --neutral-0:   #ffffff;
  --neutral-50:  #fafbfd;
  --neutral-100: #eef1f6;
  --neutral-200: #dee4ed;
  --neutral-300: #bfc8d6;
  --neutral-400: #8893a6;
  --neutral-500: #5a6478;
  --neutral-600: #424b5e;
  --neutral-700: #2d3447;
  --neutral-800: #1a2030;
  --neutral-900: #0e1322;

  /* ---------- Semantic colours ---------- */
  --color-success:    #1e8c5a;
  --color-success-bg: #e4f4ec;
  --color-warning:    #c77800;
  --color-warning-bg: #fbefd9;
  --color-danger:     var(--ove-red);
  --color-danger-bg:  #fce3e5;
  --color-info:       var(--ove-blue-700);
  --color-info-bg:    var(--ove-blue-50);

  /* ---------- Surface roles ---------- */
  --bg-canvas:      var(--neutral-0);
  --bg-subtle:      var(--neutral-50);
  --bg-muted:       var(--neutral-100);
  --bg-inverse:     var(--ove-blue-900);

  --fg-default:     var(--neutral-900);
  --fg-muted:       var(--neutral-500);
  --fg-subtle:      var(--neutral-400);
  --fg-on-brand:    #ffffff;
  --fg-on-inverse:  #ffffff;
  --fg-link:        var(--ove-blue-700);

  --border-default: var(--neutral-200);
  --border-strong:  var(--neutral-300);
  --border-muted:   var(--neutral-100);

  /* ---------- Typography (next/font variables come first) ---------- */
  --font-display: var(--font-display-src), "Space Grotesk", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-sans:    var(--font-sans-src), "IBM Plex Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-mono:    var(--font-mono-src), "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  --text-2xs:  11px;
  --text-xs:   12px;
  --text-sm:   14px;
  --text-base: 16px;
  --text-md:   18px;
  --text-lg:   20px;
  --text-xl:   24px;
  --text-2xl:  30px;
  --text-3xl:  36px;
  --text-4xl:  48px;
  --text-5xl:  64px;
  --text-6xl:  88px;

  --leading-tight:   1.1;
  --leading-snug:    1.25;
  --leading-normal:  1.5;
  --leading-relaxed: 1.65;

  --tracking-tight:  -0.02em;
  --tracking-snug:   -0.01em;
  --tracking-normal: 0;
  --tracking-wide:   0.04em;
  --tracking-caps:   0.14em;

  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  /* ---------- Spacing (4px base) ---------- */
  --space-0:   0;
  --space-1:   4px;
  --space-2:   8px;
  --space-3:   12px;
  --space-4:   16px;
  --space-5:   20px;
  --space-6:   24px;
  --space-7:   32px;
  --space-8:   40px;
  --space-9:   48px;
  --space-10:  64px;
  --space-11:  80px;
  --space-12:  96px;
  --space-13:  128px;

  /* ---------- Radii ---------- */
  --radius-none: 0;
  --radius-xs:   2px;
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   8px;
  --radius-xl:   12px;
  --radius-2xl:  16px;
  --radius-pill: 999px;

  /* ---------- Shadows ---------- */
  --shadow-xs:  0 1px 2px rgba(15, 18, 24, 0.04);
  --shadow-sm:  0 1px 2px rgba(15, 18, 24, 0.06), 0 1px 1px rgba(15, 18, 24, 0.04);
  --shadow-md:  0 4px 8px -2px rgba(15, 18, 24, 0.06), 0 2px 4px -2px rgba(15, 18, 24, 0.04);
  --shadow-lg:  0 12px 24px -6px rgba(15, 18, 24, 0.10), 0 4px 8px -4px rgba(15, 18, 24, 0.06);
  --shadow-xl:  0 24px 48px -12px rgba(15, 18, 24, 0.16);
  --shadow-focus: 0 0 0 3px rgba(20, 99, 230, 0.40);

  /* ---------- Motion ---------- */
  --ease-out:     cubic-bezier(0.2, 0.7, 0.2, 1);
  --ease-in-out:  cubic-bezier(0.65, 0, 0.35, 1);
  --duration-1:   120ms;
  --duration-2:   180ms;
  --duration-3:   240ms;
  --duration-4:   360ms;

  /* ---------- Layout ---------- */
  --container-sm:  640px;
  --container-md:  880px;
  --container-lg:  1120px;
  --container-xl:  1320px;
  --container-2xl: 1440px;
  --grid-gutter:   24px;

  /* ---------- Z-index ---------- */
  --z-base:    0;
  --z-raised:  10;
  --z-sticky:  100;
  --z-overlay: 500;
  --z-modal:   1000;
  --z-toast:   2000;

  /* ---------- RAG / chat-specific surfaces ---------- */
  --bg-bubble-user:        var(--ove-blue-50);
  --border-bubble-user:    var(--ove-blue-200);
  --bg-citation:           var(--neutral-0);
  --border-citation:       var(--neutral-200);
  --bg-citation-hover:     var(--ove-blue-50);
  --bg-crosssell:          #fbf6ec;   /* warm parchment */
  --border-crosssell:      #ead9b0;
  --fg-crosssell-label:    #7a5b12;
  --bg-flag-low-conf:      #fbefd9;
  --bg-flag-glossary:      #efe7fa;
  --fg-flag-low-conf:      #7a5400;
  --fg-flag-glossary:      #4b2e84;
  --color-streaming-cursor: var(--signal-cyan);
}

/* ============================================================
   Dark mode — semantic role re-mapping
   ============================================================ */
:root[data-theme="dark"],
:root.dark {
  color-scheme: dark;

  --neutral-0:   #0a0e16;
  --neutral-50:  #0f141d;
  --neutral-100: #161c27;
  --neutral-200: #1f2734;
  --neutral-300: #2a3344;
  --neutral-400: #4a5466;
  --neutral-500: #7f8a9d;
  --neutral-600: #a4adbd;
  --neutral-700: #c6cdda;
  --neutral-800: #dee3ec;
  --neutral-900: #f2f4f8;

  --ove-blue-50:  #0f1e36;
  --ove-blue-100: #15294a;
  --ove-blue-200: #1b3866;
  --ove-blue-500: #4d90f0;
  --ove-blue-600: #5fa0f6;
  --ove-blue-700: #7cb2fa;
  --ove-blue-800: #9cc4fb;
  --ove-blue-900: #d2e2fb;

  --bg-canvas:    #0a0e16;
  --bg-subtle:    #0f141d;
  --bg-muted:     #161c27;
  --bg-inverse:   #f2f4f8;

  --fg-default:   #e5e9f2;
  --fg-muted:     #9aa3b5;
  --fg-subtle:    #6a7488;
  --fg-on-brand:  #0a0e16;
  --fg-on-inverse:#0a0e16;
  --fg-link:      #7cb2fa;

  --border-default: #1f2734;
  --border-strong:  #2a3344;
  --border-muted:   #161c27;

  --color-success-bg: #0f2a1e;
  --color-warning-bg: #2a1f08;
  --color-danger-bg:  #2a0f12;
  --color-info-bg:    var(--ove-blue-50);

  --bg-bubble-user:     #15294a;
  --border-bubble-user: #1b3866;
  --bg-citation:        #0f141d;
  --border-citation:    #1f2734;
  --bg-citation-hover:  #15294a;
  --bg-crosssell:       #1f1a11;
  --border-crosssell:   #3a2f1b;
  --fg-crosssell-label: #d7b86a;
  --bg-flag-low-conf:   #2a1f08;
  --bg-flag-glossary:   #1b1330;
  --fg-flag-low-conf:   #e6be6e;
  --fg-flag-glossary:   #b69be6;

  --shadow-xs:  0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-sm:  0 1px 2px rgba(0, 0, 0, 0.5), 0 1px 1px rgba(0, 0, 0, 0.4);
  --shadow-md:  0 4px 8px -2px rgba(0, 0, 0, 0.5), 0 2px 4px -2px rgba(0, 0, 0, 0.4);
  --shadow-lg:  0 12px 24px -6px rgba(0, 0, 0, 0.6), 0 4px 8px -4px rgba(0, 0, 0, 0.4);
  --shadow-xl:  0 24px 48px -12px rgba(0, 0, 0, 0.7);
  --shadow-focus: 0 0 0 3px rgba(124, 178, 250, 0.35);
}

/* Bright is the default; dark mode only activates when the host opts
   in explicitly via [data-theme="dark"]. We do not auto-follow the OS. */

/* ============================================================
   Base reset / element defaults
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--fg-default);
  background: var(--bg-canvas);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
  margin: 0;
  color: var(--ove-blue-900);
}
p { margin: 0; }
a {
  color: var(--fg-link);
  text-decoration: none;
  text-underline-offset: 2px;
}
a:hover { text-decoration: underline; }
::selection { background: var(--ove-blue-200); color: var(--ove-blue-900); }

/* Standard-token style — used inline for normative codes */
.std {
  font-family: var(--font-mono);
  font-size: 0.92em;
  background: var(--bg-muted);
  padding: 1px 6px;
  border-radius: var(--radius-xs);
  color: var(--fg-default);
  white-space: nowrap;
}

/* ============================================================
   App shell + appbar
   ============================================================ */
.app {
  min-height: 100vh;
  background: var(--bg-subtle);
  color: var(--fg-default);
  display: grid;
  grid-template-rows: auto 1fr;
}
.app__main { display: grid; min-height: 0; }

.appbar {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: var(--z-sticky);
  background: var(--bg-canvas);
  border-bottom: 1px solid var(--border-default);
  display: flex;
  align-items: center;
  gap: var(--space-6);
  padding: 0 var(--space-7);
  height: 56px;
}
.appbar__brand { display: flex; align-items: center; gap: var(--space-4); text-decoration: none; }
.appbar__brand:hover { text-decoration: none; }
.appbar__logo { height: 22px; width: auto; display: block; }
.appbar__product {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-muted);
  padding-left: var(--space-4);
  border-left: 1px solid var(--border-default);
  display: flex; align-items: center;
  height: 22px;
}
.appbar__product b { color: var(--fg-default); font-weight: var(--weight-medium); letter-spacing: var(--tracking-caps); }
.appbar__nav { display: flex; gap: var(--space-2); margin-left: var(--space-4); }
.appbar__nav a {
  font-size: var(--text-sm);
  color: var(--fg-muted);
  font-weight: var(--weight-medium);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  text-decoration: none;
}
.appbar__nav a:hover { color: var(--fg-default); background: var(--bg-subtle); text-decoration: none; }
.appbar__nav a.is-active { color: var(--ove-blue-700); background: var(--ove-blue-50); }
.appbar__spacer { flex: 1 1; }
.appbar__meta {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--fg-muted);
  display: flex; align-items: center; gap: var(--space-3);
}
.appbar__meta .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--signal-cyan);
  display: inline-block;
  box-shadow: 0 0 0 0 rgba(0, 194, 215, 0.6);
  animation: appbar-pulse 2.2s var(--ease-out) infinite;
}
@keyframes appbar-pulse {
  0% { box-shadow: 0 0 0 0 rgba(0, 194, 215, 0.55); }
  60%, 100% { box-shadow: 0 0 0 8px rgba(0, 194, 215, 0); }
}

/* ============================================================
   Chat layout
   ============================================================ */
.chat {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  min-height: 0;
}
.chat__rail {
  background: var(--bg-canvas);
  border-right: 1px solid var(--border-default);
  padding: var(--space-6) var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
  overflow-y: auto;
  height: calc(100vh - 56px);
  position: -webkit-sticky;
  position: sticky;
  top: 56px;
}
.chat__main {
  display: grid;
  grid-template-rows: auto 1fr auto;
  min-height: 0;
  height: calc(100vh - 56px);
  background: var(--bg-subtle);
}
.chat__messages {
  overflow-y: auto;
  padding: var(--space-7) var(--space-8) var(--space-8);
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
  scrollbar-gutter: stable;
}
.chat__inner {
  width: 100%;
  max-width: 820px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}

/* Empty state */
.chat__empty {
  flex: 1 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--space-7);
  padding: var(--space-10) 0;
}
.chat__empty-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--ove-blue-700);
  display: flex; align-items: center; gap: var(--space-3);
}
.chat__empty-eyebrow::before {
  content: ""; display: inline-block;
  width: 24px; height: 1px; background: var(--ove-blue-700);
}
.chat__empty-title {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-semibold);
  letter-spacing: -0.02em;
  color: var(--fg-default);
  max-width: 22ch;
  line-height: 1.1;
}
.chat__empty-sub {
  font-size: var(--text-md);
  color: var(--fg-muted);
  max-width: 56ch;
  line-height: var(--leading-relaxed);
}
.chat__empty-suggest {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: var(--space-3);
  gap: var(--space-3);
  margin-top: var(--space-3);
}
.chat__empty-suggest button {
  font: inherit;
  text-align: left;
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  cursor: pointer;
  color: var(--fg-default);
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  transition: border-color var(--duration-2) var(--ease-out), background var(--duration-2) var(--ease-out);
}
.chat__empty-suggest button:hover {
  border-color: var(--ove-blue-700);
  background: var(--ove-blue-50);
}
.chat__empty-suggest .k {
  display: block;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-subtle);
  margin-bottom: var(--space-2);
}

/* Chat form */
.chat__form {
  background: var(--bg-canvas);
  border-top: 1px solid var(--border-default);
  padding: var(--space-5) var(--space-8) var(--space-6);
}
.chat__form-inner { max-width: 820px; margin: 0 auto; position: relative; }
.chat__form textarea {
  width: 100%;
  resize: none;
  min-height: 56px;
  max-height: 200px;
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  padding: var(--space-4) 110px var(--space-4) var(--space-5);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  background: var(--bg-canvas);
  color: var(--fg-default);
  transition: border-color var(--duration-1) var(--ease-out), box-shadow var(--duration-1) var(--ease-out);
}
.chat__form textarea:focus {
  outline: none;
  border-color: var(--ove-blue-700);
  box-shadow: var(--shadow-focus);
}
.chat__form-submit { position: absolute; right: var(--space-3); bottom: var(--space-3); }
.chat__form-hint {
  margin-top: var(--space-3);
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--fg-subtle);
  letter-spacing: 0.04em;
}
.kbd {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  background: var(--bg-muted);
  border: 1px solid var(--border-default);
  border-bottom-width: 2px;
  padding: 1px 6px;
  border-radius: var(--radius-xs);
  color: var(--fg-default);
}

/* ============================================================
   Messages + bubbles
   ============================================================ */
.msg { display: flex; flex-direction: column; gap: var(--space-3); }
.msg--user { align-items: flex-end; }
.msg--assistant { align-items: stretch; }
.msg__role {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-subtle);
  display: flex; align-items: center; gap: var(--space-3);
}
.msg__role .who { display: inline-flex; align-items: center; gap: var(--space-2); }
.msg__role .who .avatar {
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--ove-blue-800);
  color: #fff;
  display: grid; place-items: center;
  font-size: 10px; font-weight: var(--weight-semibold);
  font-family: var(--font-sans);
}
.msg__role .when { color: var(--fg-subtle); }

.bubble {
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  color: var(--fg-default);
}
.bubble p { margin: 0; }
.bubble p + p { margin-top: var(--space-3); }
.bubble strong { font-weight: var(--weight-semibold); color: var(--fg-default); }
.bubble code, .bubble .std {
  font-family: var(--font-mono);
  font-size: 0.92em;
  background: var(--bg-muted);
  padding: 1px 6px;
  border-radius: var(--radius-xs);
  color: var(--fg-default);
  white-space: nowrap;
}
.bubble--user {
  max-width: 78%;
  background: var(--bg-bubble-user);
  border: 1px solid var(--border-bubble-user);
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-lg);
  border-top-right-radius: var(--radius-xs);
}
.bubble--assistant {
  background: transparent;
  padding: 0;
  width: 100%;
}
/* Assistant prose — markdown headings, lists, code blocks rendered by
   react-markdown. We don't use bigger-than-body sizes; the answer is the
   content, not a marketing page. */
.bubble--assistant h1,
.bubble--assistant h2,
.bubble--assistant h3,
.bubble--assistant h4 {
  font-family: var(--font-display);
  font-weight: var(--weight-semibold);
  letter-spacing: -0.01em;
  color: var(--fg-default);
  margin-top: var(--space-6);
  margin-bottom: var(--space-2);
  line-height: 1.25;
}
.bubble--assistant h1 { font-size: var(--text-xl); }
.bubble--assistant h2 {
  font-size: var(--text-md);
  padding-bottom: var(--space-2);
  border-bottom: 1px solid var(--border-muted);
}
.bubble--assistant h3 { font-size: var(--text-base); color: var(--ove-blue-900); }
.bubble--assistant h4 {
  font-size: var(--text-sm);
  font-family: var(--font-mono);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-muted);
  font-weight: var(--weight-medium);
}
.bubble--assistant > :first-child { margin-top: 0; }
.bubble--assistant ul,
.bubble--assistant ol {
  margin: var(--space-3) 0 var(--space-3) 0;
  padding-left: var(--space-6);
  display: flex; flex-direction: column; gap: var(--space-2);
}
.bubble--assistant ul { list-style: none; }
.bubble--assistant ul > li { position: relative; }
.bubble--assistant ul > li::before {
  content: ""; position: absolute;
  left: calc(-1 * var(--space-5));
  top: 0.65em;
  width: 6px; height: 1px;
  background: var(--ove-blue-700);
}
.bubble--assistant ol { list-style: decimal; color: var(--fg-default); }
.bubble--assistant ol > li::marker {
  font-family: var(--font-mono);
  font-size: 0.85em;
  color: var(--ove-blue-700);
  font-weight: var(--weight-medium);
}
.bubble--assistant li { line-height: var(--leading-relaxed); }
.bubble--assistant li p { margin: 0; }
.bubble--assistant blockquote {
  margin: var(--space-4) 0;
  padding: var(--space-2) var(--space-5);
  border-left: 3px solid var(--ove-blue-200);
  color: var(--fg-muted);
  font-style: italic;
}
.bubble--assistant pre {
  background: var(--bg-muted);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  overflow-x: auto;
  font-size: var(--text-xs);
  margin: var(--space-3) 0;
}
.bubble--assistant table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--text-sm);
  margin: var(--space-4) 0;
}
.bubble--assistant th,
.bubble--assistant td {
  text-align: left;
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--border-muted);
}
.bubble--assistant th {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-muted);
  font-weight: var(--weight-medium);
  border-bottom: 1px solid var(--border-strong);
}
.bubble--assistant a {
  color: var(--ove-blue-700);
  text-decoration: underline;
  -webkit-text-decoration-color: var(--ove-blue-200);
          text-decoration-color: var(--ove-blue-200);
  text-underline-offset: 3px;
}
.bubble--assistant a:hover { -webkit-text-decoration-color: var(--ove-blue-700); text-decoration-color: var(--ove-blue-700); }

/* Inline citation superscript — generated from (Speaker, Event, ca. mm:ss)
   parentheticals so each statement carries an anchor to its source pill. */
.cite-ref {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: super;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: var(--weight-medium);
  line-height: 1;
  height: 16px;
  min-width: 16px;
  padding: 0 4px;
  margin: 0 2px;
  border-radius: var(--radius-xs);
  background: var(--ove-blue-50);
  color: var(--ove-blue-800);
  border: 1px solid var(--ove-blue-100);
  text-decoration: none;
  letter-spacing: 0;
  cursor: pointer;
  transition: background var(--duration-1) var(--ease-out), color var(--duration-1) var(--ease-out);
}
.cite-ref:hover {
  background: var(--ove-blue-800);
  color: #fff;
  border-color: var(--ove-blue-800);
  text-decoration: none;
}
.bubble--assistant .streaming {
  display: inline-block;
  width: 8px;
  height: 1.05em;
  background: var(--color-streaming-cursor);
  margin-left: 3px;
  vertical-align: text-bottom;
  animation: cursor-blink 1s steps(2, start) infinite;
}
@keyframes cursor-blink { to { visibility: hidden; } }

/* Source-pill flash animation when an inline citation anchor jumps to one */
.source-pill--flash {
  animation: pill-flash 0.9s var(--ease-out);
}
@keyframes pill-flash {
  0% {
    border-color: var(--ove-blue-800);
    background: var(--ove-blue-100);
    box-shadow: 0 0 0 3px rgba(20, 99, 230, 0.30);
  }
  100% {
    border-color: var(--border-default);
    background: var(--bg-canvas);
    box-shadow: 0 0 0 0 transparent;
  }
}

/* ============================================================
   Sources + Citation cards
   ============================================================ */
.sources {
  margin-top: var(--space-5);
  padding-top: var(--space-4);
  border-top: 1px solid var(--border-muted);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.sources__label {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-muted);
  display: flex; align-items: center; gap: var(--space-3);
}
.sources__label::before {
  content: ""; display: inline-block;
  width: 18px; height: 1px; background: var(--border-strong);
}
.sources__label .toggle {
  margin-left: auto;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  text-transform: none;
  color: var(--ove-blue-700);
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 0;
}
.sources__label .toggle:hover { color: var(--ove-blue-800); }

/* Pill row — the compact default view. Tiny inline chips, one per source. */
.sources__pills {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.source-pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 4px 10px 4px 4px;
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-pill);
  font-size: var(--text-xs);
  text-decoration: none;
  color: var(--fg-default);
  font: inherit;
  font-size: var(--text-xs);
  line-height: 1.2;
  cursor: pointer;
  transition: border-color var(--duration-1) var(--ease-out), background var(--duration-1) var(--ease-out);
  max-width: 360px;
}
.source-pill:hover {
  border-color: var(--ove-blue-700);
  background: var(--ove-blue-50);
  text-decoration: none;
}
.source-pill__num {
  display: grid;
  place-items: center;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--ove-blue-50);
  color: var(--ove-blue-800);
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: var(--weight-semibold);
  flex: 0 0 20px;
}
.source-pill:hover .source-pill__num {
  background: var(--ove-blue-800);
  color: #fff;
}
.source-pill__icon {
  display: inline-grid;
  place-items: center;
  color: var(--fg-muted);
  flex: 0 0 12px;
}
.source-pill:hover .source-pill__icon { color: var(--ove-blue-700); }
.source-pill__speaker {
  font-weight: var(--weight-medium);
  color: var(--fg-default);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 200px;
}
.source-pill__loc {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.04em;
  color: var(--fg-muted);
  padding-left: var(--space-2);
  border-left: 1px solid var(--border-default);
  white-space: nowrap;
}

/* Expanded grid — old big-card view, kept behind a toggle for users who
   want the slide thumbnail. Stays the same as before. */
.sources__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  grid-gap: var(--space-3);
  gap: var(--space-3);
}

.citation {
  display: grid;
  grid-template-columns: 96px 1fr;
  grid-gap: 0;
  gap: 0;
  background: var(--bg-citation);
  border: 1px solid var(--border-citation);
  border-radius: var(--radius-md);
  overflow: hidden;
  text-decoration: none;
  color: var(--fg-default);
  cursor: pointer;
  text-align: left;
  font: inherit;
  padding: 0;
  transition: border-color var(--duration-2) var(--ease-out), background var(--duration-2) var(--ease-out), transform var(--duration-2) var(--ease-out);
}
.citation:hover {
  border-color: var(--ove-blue-700);
  background: var(--bg-citation-hover);
  text-decoration: none;
}
.citation:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.citation .thumb {
  background: repeating-linear-gradient(135deg, var(--neutral-100) 0 6px, var(--neutral-50) 6px 12px);
  position: relative;
  min-height: 100%;
  display: grid; place-items: center;
}
.citation .thumb::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.12));
}
.citation .thumb__no {
  position: relative;
  z-index: 1;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  color: var(--fg-subtle);
  text-transform: uppercase;
}
.citation .thumb__badge {
  position: absolute;
  left: 6px; top: 6px;
  z-index: 2;
  font-family: var(--font-mono);
  font-size: 10px;
  background: rgba(7,35,76,0.85);
  color: #fff;
  padding: 2px 6px;
  border-radius: var(--radius-xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.citation__body {
  padding: var(--space-3) var(--space-4);
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.citation__meta {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-subtle);
  display: flex; gap: var(--space-2); align-items: center;
}
.citation__meta .sep { color: var(--border-strong); }
.citation__speaker {
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--fg-default);
  line-height: 1.3;
  letter-spacing: -0.005em;
}
.citation__talk {
  font-size: var(--text-xs);
  color: var(--fg-muted);
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.citation__loc {
  margin-top: auto;
  padding-top: var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--ove-blue-700);
  display: flex; align-items: center; gap: var(--space-2);
}
.citation__loc::after { content: "↗"; }

/* Slide overlay (lightbox) */
.slide-overlay {
  position: fixed;
  inset: 0;
  background: rgba(7, 35, 76, 0.78);
  -webkit-backdrop-filter: blur(8px);
          backdrop-filter: blur(8px);
  z-index: var(--z-modal);
  display: grid;
  place-items: center;
  padding: var(--space-9);
}
.slide-overlay__panel {
  width: min(1100px, 100%);
  max-height: 90vh;
  background: var(--bg-canvas);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: grid;
  grid-template-rows: auto 1fr auto;
  box-shadow: var(--shadow-xl);
}
.slide-overlay__hd {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-4) var(--space-6);
  border-bottom: 1px solid var(--border-default);
}
.slide-overlay__hd .left { display: flex; flex-direction: column; gap: 2px; }
.slide-overlay__hd .title { font-family: var(--font-display); font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--fg-default); }
.slide-overlay__hd .meta { font-family: var(--font-mono); font-size: var(--text-2xs); letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--fg-muted); }
.slide-overlay__img {
  background:
    repeating-linear-gradient(135deg, var(--neutral-100) 0 14px, var(--neutral-50) 14px 28px);
  display: grid; place-items: center;
  min-height: 480px;
  color: var(--fg-subtle);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
}
.slide-overlay__img img { max-width: 100%; max-height: 70vh; display: block; }

/* Audio/video lightbox body — used by MediaLightbox. */
.media-panel { display: grid; grid-template-rows: auto 1fr auto; }
.media-panel__body {
  padding: var(--space-6) var(--space-7);
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  background: var(--bg-subtle);
}
.media-panel__body audio { width: 100%; height: 44px; }
.media-panel__quote {
  margin: 0;
  padding: var(--space-4) var(--space-5);
  border-left: 3px solid var(--ove-blue-200);
  background: var(--bg-canvas);
  color: var(--fg-default);
  border-radius: var(--radius-sm);
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  font-style: italic;
}
.slide-overlay__ft {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-4) var(--space-6);
  border-top: 1px solid var(--border-default);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--fg-muted);
}

/* ============================================================
   Cross-sell card
   ============================================================ */
.crosssell {
  margin-top: var(--space-3);
  background: var(--bg-crosssell);
  border: 1px solid var(--border-crosssell);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.crosssell__label {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-crosssell-label);
  display: flex; align-items: center; gap: var(--space-3);
}
.crosssell__label::before {
  content: ""; width: 14px; height: 1px; background: currentColor; display: inline-block;
}
.crosssell__list { display: flex; flex-direction: column; gap: var(--space-1); }
.crosssell__item {
  display: grid;
  grid-template-columns: 1fr auto auto;
  grid-gap: var(--space-4);
  gap: var(--space-4);
  align-items: center;
  padding: var(--space-3) 0;
  border-bottom: 1px dashed var(--border-crosssell);
}
.crosssell__item:last-child { border-bottom: 0; }
.crosssell__link {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--fg-default);
  text-decoration: none;
}
.crosssell__link:hover { color: var(--ove-blue-700); text-decoration: underline; }
.crosssell__meta {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--fg-muted);
  letter-spacing: 0.04em;
  text-align: right;
  white-space: nowrap;
}
.crosssell__price {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--fg-default);
  font-weight: var(--weight-medium);
  white-space: nowrap;
}

/* ============================================================
   Buttons
   ============================================================ */
.btn {
  font-family: var(--font-sans);
  font-weight: var(--weight-medium);
  font-size: var(--text-sm);
  padding: 10px 16px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  line-height: 1.2;
  white-space: nowrap;
  text-decoration: none;
  transition: background var(--duration-1) var(--ease-out),
              border-color var(--duration-1) var(--ease-out),
              color var(--duration-1) var(--ease-out),
              box-shadow var(--duration-1) var(--ease-out);
}
.btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.btn[disabled], .btn[aria-disabled="true"] { opacity: 0.45; pointer-events: none; }
.btn--primary {
  background: var(--ove-blue-800);
  color: #fff;
  border-color: var(--ove-blue-800);
}
.btn--primary:hover { background: var(--ove-blue-700); border-color: var(--ove-blue-700); color: #fff; text-decoration: none; }
.btn--secondary {
  background: var(--bg-canvas);
  color: var(--fg-default);
  border-color: var(--border-strong);
}
.btn--secondary:hover { border-color: var(--ove-blue-700); color: var(--ove-blue-700); background: var(--bg-canvas); text-decoration: none; }
.btn--ghost {
  background: transparent;
  color: var(--fg-default);
  border-color: transparent;
}
.btn--ghost:hover { background: var(--bg-muted); text-decoration: none; }
.btn--danger {
  background: var(--ove-red);
  color: #fff;
  border-color: var(--ove-red);
}
.btn--danger:hover { background: var(--ove-red-dark); border-color: var(--ove-red-dark); color: #fff; }
.btn--sm { padding: 6px 10px; font-size: var(--text-xs); }
.btn--lg { padding: 14px 22px; font-size: var(--text-base); }
.btn--block { display: flex; width: 100%; }
.btn .arrow { font-family: var(--font-mono); transition: transform var(--duration-2) var(--ease-out); }
.btn:hover .arrow { transform: translateX(2px); }

/* ============================================================
   Inputs + fields
   ============================================================ */
.field { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; }
.field > label {
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--fg-default);
}
.field .hint, .field__hint { font-size: var(--text-xs); color: var(--fg-muted); }
.field .error, .field__error { font-size: var(--text-xs); color: var(--color-danger); }
.input, .textarea, .select {
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  padding: 10px 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--bg-canvas);
  color: var(--fg-default);
  width: 100%;
  transition: border-color var(--duration-1) var(--ease-out),
              box-shadow var(--duration-1) var(--ease-out);
}
.input:focus, .textarea:focus, .select:focus {
  outline: none;
  border-color: var(--ove-blue-700);
  box-shadow: var(--shadow-focus);
}
.input[aria-invalid="true"], .input.is-error { border-color: var(--color-danger); }
.input--mono { font-family: var(--font-mono); letter-spacing: 0.04em; }

/* ============================================================
   Badges + alerts + placeholders
   ============================================================ */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: var(--radius-xs);
  background: var(--bg-muted);
  color: var(--fg-default);
  border: 1px solid var(--border-muted);
  line-height: 1.4;
  white-space: nowrap;
}
.badge .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.badge--brand { background: var(--ove-blue-50); color: var(--ove-blue-800); border-color: var(--ove-blue-100); }
.badge--success { background: var(--color-success-bg); color: var(--color-success); border-color: transparent; }
.badge--warning { background: var(--color-warning-bg); color: var(--color-warning); border-color: transparent; }
.badge--danger { background: var(--color-danger-bg); color: var(--color-danger); border-color: transparent; }
.badge--solid { background: var(--ove-blue-800); color: #fff; border-color: transparent; }
.badge--ghost { background: transparent; }

.alert {
  width: 100%;
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-md);
  display: flex; gap: var(--space-4); align-items: flex-start;
  border: 1px solid var(--border-default);
  background: var(--bg-canvas);
}
.alert__glyph {
  flex: 0 0 24px; height: 24px;
  border-radius: 50%;
  display: grid; place-items: center;
  font-family: var(--font-mono); font-weight: 600; font-size: 12px;
  color: #fff;
}
.alert__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1; }
.alert__title { font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--fg-default); }
.alert__text { font-size: var(--text-sm); color: var(--fg-muted); line-height: var(--leading-normal); }
.alert--info { background: var(--color-info-bg); border-color: var(--ove-blue-100); }
.alert--info .alert__glyph { background: var(--ove-blue-700); }
.alert--success { background: var(--color-success-bg); border-color: transparent; }
.alert--success .alert__glyph { background: var(--color-success); }
.alert--warn,
.alert--warning { background: var(--color-warning-bg); border-color: transparent; }
.alert--warn .alert__glyph,
.alert--warning .alert__glyph { background: var(--color-warning); }
.alert--danger { background: var(--color-danger-bg); border-color: transparent; }
.alert--danger .alert__glyph { background: var(--ove-red); }

.placeholder {
  background:
    repeating-linear-gradient(135deg,
      var(--neutral-100) 0 14px,
      var(--neutral-50) 14px 28px);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-md);
  display: grid;
  place-items: center;
  color: var(--fg-subtle);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  padding: var(--space-7);
  min-height: 120px;
}

/* ============================================================
   Auth screens
   ============================================================ */
.auth {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: var(--bg-canvas);
}
.auth__aside {
  background:
    radial-gradient(900px 700px at 85% -10%, rgba(83, 150, 255, 0.55), transparent 55%),
    linear-gradient(155deg, var(--ove-blue-800) 0%, var(--ove-blue-700) 60%, #1D7BFF 100%);
  color: #fff;
  padding: var(--space-9) var(--space-9);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  position: relative;
  overflow: hidden;
}
.auth__aside::after {
  content: "";
  position: absolute; inset: 0;
  background:
    repeating-linear-gradient(90deg, rgba(255,255,255,0.10) 0 1px, transparent 1px 96px),
    repeating-linear-gradient(0deg, rgba(255,255,255,0.06) 0 1px, transparent 1px 96px);
  pointer-events: none;
}
.auth__aside > * { position: relative; z-index: 1; }
.auth__brand { display: flex; align-items: center; gap: var(--space-4); }
.auth__logo { height: 32px; width: auto; filter: brightness(0) invert(1); }
.auth__brand-label {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: rgba(255,255,255,0.6);
  padding-left: var(--space-4);
  border-left: 1px solid rgba(255,255,255,0.2);
}
.auth__brand-label b { color: #fff; font-weight: var(--weight-medium); }
.auth__pitch { max-width: 36ch; display: flex; flex-direction: column; gap: var(--space-6); }
.auth__pitch h2 {
  font-family: var(--font-display);
  font-size: clamp(36px, 4vw, 56px);
  line-height: 1.04;
  letter-spacing: -0.03em;
  font-weight: var(--weight-semibold);
  color: #fff;
}
.auth__pitch p {
  font-size: var(--text-md);
  color: rgba(255,255,255,0.78);
  line-height: var(--leading-relaxed);
}
.auth__pitch ul {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: var(--space-3);
}
.auth__pitch li {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.7);
  display: flex; align-items: center; gap: var(--space-3);
}
.auth__pitch li::before {
  content: ""; width: 18px; height: 1px; background: rgba(255,255,255,0.4);
}
.auth__foot {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: rgba(255,255,255,0.5);
  display: flex; justify-content: space-between;
}

.auth__main {
  display: grid;
  place-items: center;
  padding: var(--space-9);
  background: var(--bg-canvas);
}
.auth__card {
  width: min(440px, 100%);
  display: flex;
  flex-direction: column;
  gap: var(--space-7);
}
.auth__title {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-semibold);
  letter-spacing: -0.02em;
  color: var(--fg-default);
  line-height: 1.1;
}
.auth__intro {
  font-size: var(--text-md);
  color: var(--fg-muted);
  line-height: var(--leading-relaxed);
}
.auth__form { display: flex; flex-direction: column; gap: var(--space-5); }
.auth__step {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--ove-blue-700);
  display: flex; align-items: center; gap: var(--space-3);
}
.auth__step::before {
  content: ""; width: 24px; height: 1px; background: var(--ove-blue-700);
}
.auth__qr {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  display: grid;
  grid-template-columns: 168px 1fr;
  grid-gap: var(--space-6);
  gap: var(--space-6);
  align-items: center;
  background: var(--bg-canvas);
}
.auth__qr-img {
  width: 168px;
  height: 168px;
  background:
    linear-gradient(var(--fg-default) 0 0) padding-box,
    var(--bg-canvas);
  border-radius: var(--radius-sm);
  padding: 8px;
  display: grid;
  place-items: center;
  border: 1px solid var(--border-default);
}
.auth__qr-img svg, .auth__qr-img img { display: block; width: 100%; height: 100%; }
.auth__qr-copy { display: flex; flex-direction: column; gap: var(--space-3); }
.auth__qr-copy h4 { font-family: var(--font-display); font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--fg-default); }
.auth__qr-copy p { font-size: var(--text-sm); color: var(--fg-muted); line-height: var(--leading-relaxed); }
.auth__qr-copy code {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  background: var(--bg-muted);
  padding: 4px 8px;
  border-radius: var(--radius-xs);
  word-break: break-all;
}

.otp {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-gap: var(--space-2);
  gap: var(--space-2);
}
.otp input {
  font-family: var(--font-mono);
  font-size: 36px;
  font-weight: var(--weight-semibold);
  text-align: center;
  padding: var(--space-4) 0;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-md);
  background: var(--bg-canvas);
  color: var(--fg-default);
  width: 100%;
  letter-spacing: 0;
  transition: border-color var(--duration-1) var(--ease-out), box-shadow var(--duration-1) var(--ease-out);
}
.otp input:focus { outline: none; border-color: var(--ove-blue-700); box-shadow: var(--shadow-focus); }
.otp input.is-filled { border-color: var(--ove-blue-700); color: var(--ove-blue-800); }
.otp input.is-error { border-color: var(--color-danger); color: var(--color-danger); }

/* ============================================================
   Chat rail panels (PodcastPlayer, UserUploads, Agenda)
   ============================================================ */
.rail-panel { display: flex; flex-direction: column; gap: var(--space-3); }
.rail-panel__hd {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--space-3);
}
.rail-panel__title {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-muted);
  display: flex; align-items: center; gap: var(--space-3);
}
.rail-panel__title::before {
  content: ""; width: 14px; height: 1px; background: currentColor;
}
.rail-panel__title b { color: var(--fg-default); font-weight: var(--weight-medium); letter-spacing: var(--tracking-caps); }
.rail-panel__count { font-family: var(--font-mono); font-size: var(--text-2xs); color: var(--fg-subtle); }

.podcast {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--bg-canvas);
  padding: var(--space-4);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.podcast__event {
  font-family: var(--font-display);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--fg-default);
  line-height: 1.3;
  letter-spacing: -0.005em;
}
.podcast__date {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.podcast__track {
  display: flex; flex-direction: column; gap: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px dashed var(--border-default);
}
.podcast__track:first-of-type { border-top: 0; padding-top: 0; }
.podcast__lang {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--ove-blue-700);
  display: flex; align-items: center; justify-content: space-between;
}
.podcast__lang .dur { color: var(--fg-subtle); }
.podcast audio { width: 100%; height: 32px; }

/* Agenda panel — list of talks per event */
.agenda {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--bg-canvas);
  overflow: hidden;
}
.agenda__hd {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border-muted);
  display: flex; flex-direction: column; gap: 2px;
}
.agenda__event {
  font-family: var(--font-display);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--fg-default);
  line-height: 1.25;
  letter-spacing: -0.005em;
}
.agenda__date {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.agenda__list { display: flex; flex-direction: column; }
.agenda__item {
  display: grid;
  grid-template-columns: 44px 1fr;
  grid-gap: var(--space-3);
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-top: 1px dashed var(--border-muted);
  align-items: start;
  text-align: left;
  background: transparent;
  border-left: 0;
  border-right: 0;
  border-bottom: 0;
  width: 100%;
  cursor: pointer;
  font: inherit;
  color: inherit;
  transition: background var(--duration-1) var(--ease-out);
}
.agenda__item:hover { background: var(--bg-subtle); }
.agenda__item:first-child { border-top: 0; }
.agenda__time {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  color: var(--ove-blue-700);
  padding-top: 2px;
}
.agenda__title {
  font-size: var(--text-xs);
  color: var(--fg-default);
  font-weight: var(--weight-medium);
  line-height: 1.35;
  margin-bottom: 2px;
}
.agenda__speaker {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-subtle);
}
.agenda__empty {
  padding: var(--space-4);
  font-size: var(--text-xs);
  color: var(--fg-muted);
  text-align: center;
}

/* User uploads list */
.user-uploads__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}
.user-uploads__list li {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  grid-gap: var(--space-3);
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-3);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--bg-canvas);
}
.user-uploads__list .icon {
  width: 24px; height: 24px;
  border-radius: var(--radius-xs);
  background: var(--ove-blue-50);
  color: var(--ove-blue-800);
  display: grid; place-items: center;
}
.user-uploads__list .name {
  font-size: var(--text-xs);
  color: var(--fg-default);
  font-weight: var(--weight-medium);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.user-uploads__list .meta {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--fg-subtle);
  letter-spacing: 0.04em;
  white-space: nowrap;
}
.user-uploads__list .remove {
  background: transparent; border: 0; color: var(--fg-subtle);
  cursor: pointer; padding: 0; line-height: 1;
  font-size: 16px;
}
.user-uploads__list .remove:hover { color: var(--color-danger); }
.user-uploads__picker {
  display: flex; align-items: center; gap: var(--space-2);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-sm);
  padding: var(--space-3);
  font-size: var(--text-xs);
  color: var(--fg-muted);
  background: var(--bg-subtle);
  cursor: pointer;
  transition: border-color var(--duration-2) var(--ease-out), color var(--duration-2) var(--ease-out);
}
.user-uploads__picker:hover { border-color: var(--ove-blue-700); color: var(--ove-blue-700); }
.user-uploads__privacy {
  display: flex; align-items: center; gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-success);
  padding-top: var(--space-2);
}
.user-uploads__privacy .lock { width: 12px; height: 12px; display: inline-grid; place-items: center; }

/* Refusal block */
.refusal {
  border: 1px solid var(--color-warning);
  background: var(--color-warning-bg);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
  display: flex; flex-direction: column; gap: var(--space-3);
}
.refusal__label {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--color-warning);
  display: flex; align-items: center; gap: var(--space-2);
}
.refusal__text { font-size: var(--text-sm); color: var(--fg-default); line-height: var(--leading-relaxed); }

/* ============================================================
   Admin: tabs + page shell
   ============================================================ */
.admin-tabs {
  display: flex;
  gap: var(--space-1);
  border-bottom: 1px solid var(--border-default);
  padding: 0 var(--space-7);
  background: var(--bg-canvas);
}
.admin-tabs a, .admin-tabs button {
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--fg-muted);
  padding: var(--space-4) var(--space-4);
  text-decoration: none;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  cursor: pointer;
  transition: color var(--duration-1) var(--ease-out), border-color var(--duration-1) var(--ease-out);
}
.admin-tabs a:hover, .admin-tabs button:hover { color: var(--fg-default); text-decoration: none; }
.admin-tabs a.is-active, .admin-tabs button.is-active {
  color: var(--ove-blue-700);
  border-bottom-color: var(--ove-blue-700);
}
.admin-tabs .count {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  color: var(--fg-subtle);
  margin-left: var(--space-2);
}

.admin-page {
  padding: var(--space-8) var(--space-7);
  max-width: 1280px;
  margin: 0 auto;
}
.admin-page__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-5);
  margin-bottom: var(--space-7);
}
.admin-page__title {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-semibold);
  color: var(--fg-default);
  letter-spacing: -0.02em;
  line-height: 1.1;
}
.admin-page__sub {
  font-size: var(--text-sm);
  color: var(--fg-muted);
  margin-top: var(--space-2);
  max-width: 64ch;
  line-height: var(--leading-relaxed);
}

/* ---------- Event list / podcasts tab ---------- */
.event-list {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--bg-canvas);
  overflow: hidden;
}
.event-list__row {
  display: grid;
  grid-template-columns: 64px 1fr auto auto auto;
  grid-gap: var(--space-5);
  gap: var(--space-5);
  padding: var(--space-5) var(--space-6);
  align-items: center;
  border-bottom: 1px solid var(--border-muted);
  transition: background var(--duration-2) var(--ease-out);
}
.event-list__row:last-child { border-bottom: 0; }
.event-list__row:hover { background: var(--bg-subtle); }
.event-list__date {
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-2);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  background: var(--bg-subtle);
}
.event-list__date .d { font-family: var(--font-display); font-size: var(--text-lg); font-weight: var(--weight-semibold); line-height: 1; color: var(--ove-blue-900); }
.event-list__date .m { font-family: var(--font-mono); font-size: 10px; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--fg-muted); }
.event-list__title {
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--fg-default);
  line-height: 1.3;
  letter-spacing: -0.005em;
  margin-bottom: 2px;
}
.event-list__meta {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--fg-muted);
  letter-spacing: 0.02em;
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.event-list__meta .sep { color: var(--border-strong); }
.event-list__meta b { color: var(--fg-default); font-weight: var(--weight-medium); }
.event-list__status { display: flex; gap: var(--space-2); }
.podcast-state {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: var(--radius-xs);
  border: 1px solid;
}
.podcast-state--ok { background: var(--color-success-bg); color: var(--color-success); border-color: transparent; }
.podcast-state--busy { background: var(--color-warning-bg); color: var(--color-warning); border-color: transparent; }
.podcast-state--missing { background: var(--bg-muted); color: var(--fg-muted); border-color: var(--border-default); }

/* ---------- Upload wizard ---------- */
.wizard { display: flex; flex-direction: column; gap: var(--space-7); }
.wizard__steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: var(--space-3);
  gap: var(--space-3);
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-3);
}
.wizard__step {
  display: flex;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-sm);
  background: transparent;
}
.wizard__step .n {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--bg-muted);
  color: var(--fg-muted);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  display: grid; place-items: center;
  border: 1px solid var(--border-default);
}
.wizard__step .l { display: flex; flex-direction: column; gap: 1px; }
.wizard__step .l b {
  font-size: var(--text-sm);
  color: var(--fg-default);
  font-weight: var(--weight-medium);
  letter-spacing: -0.005em;
}
.wizard__step .l span {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fg-subtle);
}
.wizard__step.is-active { background: var(--ove-blue-50); }
.wizard__step.is-active .n { background: var(--ove-blue-800); color: #fff; border-color: var(--ove-blue-800); }
.wizard__step.is-active .l b { color: var(--ove-blue-800); }
.wizard__step.is-done .n { background: var(--color-success); color: #fff; border-color: var(--color-success); }
.wizard__step.is-done .l span { color: var(--color-success); }

.upload-slots {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: var(--space-5);
  gap: var(--space-5);
}
.upload-slot {
  background: var(--bg-canvas);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  transition: border-color var(--duration-2) var(--ease-out), background var(--duration-2) var(--ease-out);
  min-height: 220px;
}
.upload-slot:hover { border-color: var(--ove-blue-700); }
.upload-slot.is-active { border-color: var(--ove-blue-700); border-style: solid; background: var(--bg-canvas); }
.upload-slot.is-done { border-color: var(--color-success); border-style: solid; }
.upload-slot__hd { display: flex; align-items: center; justify-content: space-between; }
.upload-slot__title {
  font-family: var(--font-display);
  font-size: var(--text-md);
  font-weight: var(--weight-semibold);
  color: var(--fg-default);
  letter-spacing: -0.005em;
}
.upload-slot__hint {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-subtle);
}
.upload-slot__body {
  flex: 1 1;
  display: flex; flex-direction: column; gap: var(--space-3);
  justify-content: center;
  text-align: center;
}
.upload-slot__filename { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--fg-default); word-break: break-all; }
.upload-slot__sub { font-size: var(--text-xs); color: var(--fg-muted); }

.progress {
  width: 100%;
  height: 4px;
  background: var(--bg-muted);
  border-radius: var(--radius-pill);
  overflow: hidden;
}
.progress > span {
  display: block;
  height: 100%;
  background: var(--ove-blue-700);
  border-radius: inherit;
  transition: width var(--duration-3) var(--ease-out);
}
.progress--success > span { background: var(--color-success); }

.upload-wizard__buttons {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
  padding-top: var(--space-5);
  border-top: 1px solid var(--border-default);
}
.wizard__form {
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-7);
  display: flex; flex-direction: column; gap: var(--space-6);
}
.wizard__form-section { display: flex; flex-direction: column; gap: var(--space-4); }
.wizard__form-section h4 {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-muted);
  font-weight: var(--weight-medium);
}
.wizard__form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: var(--space-4) var(--space-5);
  gap: var(--space-4) var(--space-5);
}
.talk-row {
  display: grid;
  grid-template-columns: 32px 1fr 220px 220px auto;
  grid-gap: var(--space-4);
  gap: var(--space-4);
  align-items: start;
  padding: var(--space-4);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  background: var(--bg-subtle);
}
.talk-row__n { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--fg-subtle); padding-top: 10px; }
.talk-row__main { display: flex; flex-direction: column; gap: var(--space-2); }
.talk-row__title input {
  font-family: var(--font-display);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  background: transparent;
  border: 1px solid transparent;
  padding: 6px 8px;
  margin: -6px -8px;
  border-radius: var(--radius-xs);
  color: var(--fg-default);
  width: 100%;
}
.talk-row__title input:hover { border-color: var(--border-default); background: var(--bg-canvas); }
.talk-row__title input:focus { outline: none; border-color: var(--ove-blue-700); background: var(--bg-canvas); box-shadow: var(--shadow-focus); }
.talk-row__speaker input {
  font-size: var(--text-xs);
  background: transparent;
  border: 1px solid transparent;
  padding: 4px 8px;
  margin: -4px -8px;
  border-radius: var(--radius-xs);
  color: var(--fg-muted);
  width: 100%;
}
.talk-row__speaker input:hover { border-color: var(--border-default); background: var(--bg-canvas); }
.talk-row__speaker input:focus { outline: none; border-color: var(--ove-blue-700); background: var(--bg-canvas); color: var(--fg-default); box-shadow: var(--shadow-focus); }
.talk-row__inferred {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg-subtle);
  display: flex;
  gap: var(--space-2);
}
.talk-row__inferred .conf { color: var(--color-warning); }
.talk-row__remove {
  background: transparent; border: 0;
  color: var(--fg-subtle);
  width: 28px; height: 28px;
  display: grid; place-items: center;
  cursor: pointer;
  border-radius: var(--radius-xs);
}
.talk-row__remove:hover { background: var(--color-danger-bg); color: var(--color-danger); }

/* ============================================================
   Review queue
   ============================================================ */
.review-queue { display: flex; flex-direction: column; gap: var(--space-4); }
.review-queue__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-5);
}
.review-queue__toolbar-left { display: flex; gap: var(--space-3); align-items: center; }
.review-queue__filters { display: flex; gap: var(--space-1); }
.review-queue__filters button {
  font-family: var(--font-sans);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  padding: 4px 10px;
  border-radius: var(--radius-xs);
  background: transparent;
  border: 1px solid var(--border-default);
  color: var(--fg-muted);
  cursor: pointer;
}
.review-queue__filters button.is-active { background: var(--ove-blue-50); border-color: var(--ove-blue-200); color: var(--ove-blue-800); }
.review-run {
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.review-run__hd {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  grid-gap: var(--space-5);
  gap: var(--space-5);
  padding: var(--space-5) var(--space-6);
  align-items: center;
  background: var(--bg-canvas);
  border-bottom: 1px solid var(--border-default);
  cursor: pointer;
}
.review-run__title { font-family: var(--font-display); font-size: var(--text-md); font-weight: var(--weight-semibold); color: var(--fg-default); line-height: 1.2; }
.review-run__meta {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--fg-muted);
  margin-top: var(--space-1);
  display: flex; gap: var(--space-3); flex-wrap: wrap;
}
.review-run__meta b { color: var(--fg-default); font-weight: var(--weight-medium); }
.review-run__stat { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.review-run__stat .v { font-family: var(--font-display); font-size: var(--text-lg); font-weight: var(--weight-semibold); color: var(--fg-default); letter-spacing: -0.01em; }
.review-run__stat .l { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--fg-subtle); }

.review-queue__spans { display: flex; flex-direction: column; }
.review-queue__span {
  display: grid;
  grid-template-columns: 140px 1fr 280px;
  grid-gap: var(--space-6);
  gap: var(--space-6);
  padding: var(--space-5) var(--space-6);
  border-top: 1px solid var(--border-muted);
  background: var(--bg-subtle);
  align-items: start;
}
.review-queue__span:first-child { border-top: 0; }
.review-queue__span.is-focused { background: var(--ove-blue-50); border-left: 3px solid var(--ove-blue-700); padding-left: calc(var(--space-6) - 3px); }
.span__meta { display: flex; flex-direction: column; gap: var(--space-2); }
.span__time { font-family: var(--font-mono); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--fg-default); }
.span__reason {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 3px 6px;
  border-radius: var(--radius-xs);
  width: -moz-fit-content;
  width: fit-content;
}
.span__reason--low { background: var(--bg-flag-low-conf); color: var(--fg-flag-low-conf); }
.span__reason--glossary { background: var(--bg-flag-glossary); color: var(--fg-flag-glossary); }
.span__grounded {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-success);
  display: inline-flex; align-items: center; gap: 4px;
}
.span__grounded::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.span__text { display: flex; flex-direction: column; gap: var(--space-3); }
.span__flagged {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  color: var(--fg-default);
  line-height: 1.55;
}
.span__flagged mark { background: var(--bg-flag-low-conf); color: var(--fg-flag-low-conf); padding: 1px 4px; border-radius: 2px; }
.span__flagged mark.gloss { background: var(--bg-flag-glossary); color: var(--fg-flag-glossary); }
.span__suggestion {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  background: var(--ove-blue-50);
  border: 1px solid var(--ove-blue-100);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  color: var(--ove-blue-800);
  display: flex; gap: var(--space-3);
}
.span__suggestion .lbl {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--ove-blue-700);
}
.span__deepgram {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--fg-muted);
  padding-left: var(--space-3);
  border-left: 2px solid var(--border-strong);
}
.span__deepgram .lbl {
  font-size: 10px;
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--fg-subtle);
  margin-right: var(--space-2);
}
.review-queue__buttons { display: flex; flex-direction: column; gap: var(--space-2); }
.review-queue__buttons .correction { display: flex; flex-direction: column; gap: var(--space-2); }
.review-queue__buttons .correction textarea {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--bg-canvas);
  color: var(--fg-default);
  min-height: 56px;
  resize: vertical;
  width: 100%;
}
.review-queue__buttons .correction textarea:focus { outline: none; border-color: var(--ove-blue-700); box-shadow: var(--shadow-focus); }

/* ============================================================
   Glossary
   ============================================================ */
.glossary__add {
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-5) var(--space-6);
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 2fr auto;
  grid-gap: var(--space-4);
  gap: var(--space-4);
  align-items: end;
}
.glossary__row {
  background: var(--bg-canvas);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-6);
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 2fr auto;
  grid-gap: var(--space-4);
  gap: var(--space-4);
  align-items: center;
}
.glossary__row + .glossary__row { margin-top: var(--space-2); }
.glossary__term { font-family: var(--font-display); font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--fg-default); letter-spacing: -0.005em; }
.glossary__kind {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.glossary__kind--speaker { color: var(--ove-blue-700); }
.glossary__kind--term { color: var(--fg-muted); }
.glossary__weight { font-family: var(--font-mono); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--fg-default); }
.glossary__weight-bar {
  width: 60px; height: 4px;
  background: var(--bg-muted);
  border-radius: var(--radius-pill);
  overflow: hidden;
  display: inline-block;
  vertical-align: middle;
  margin-left: var(--space-2);
}
.glossary__weight-bar > span { display: block; height: 100%; background: var(--ove-blue-700); border-radius: inherit; }
.glossary__sounds { display: flex; gap: var(--space-2); flex-wrap: wrap; align-items: center; }
.chip {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  background: var(--bg-muted);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-pill);
  padding: 2px 4px 2px 10px;
  color: var(--fg-default);
}
.chip__x {
  width: 16px; height: 16px;
  border-radius: 50%;
  display: grid; place-items: center;
  background: transparent;
  border: 0;
  cursor: pointer;
  color: var(--fg-subtle);
  font-size: 12px; line-height: 1;
}
.chip__x:hover { background: var(--border-default); color: var(--color-danger); }
.chip--add {
  background: transparent;
  border: 1px dashed var(--border-strong);
  color: var(--fg-muted);
  cursor: pointer;
  padding: 2px 10px;
}
.chip--add:hover { border-color: var(--ove-blue-700); color: var(--ove-blue-700); }
.glossary__buttons { display: flex; gap: var(--space-2); justify-content: flex-end; }

/* ============================================================
   Misc utilities
   ============================================================ */
.divider { height: 1px; background: var(--border-default); border: 0; margin: var(--space-5) 0; }
.icon { width: 16px; height: 16px; display: inline-block; vertical-align: middle; flex: 0 0 16px; }
.icon-stroke { fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.row { display: flex; gap: var(--space-3); align-items: center; flex-wrap: wrap; }
.row--end { justify-content: flex-end; }
.col { display: flex; flex-direction: column; gap: var(--space-3); }
.stack-1 { display: flex; flex-direction: column; gap: var(--space-1); }
.stack-2 { display: flex; flex-direction: column; gap: var(--space-2); }
.stack-3 { display: flex; flex-direction: column; gap: var(--space-3); }
.stack-4 { display: flex; flex-direction: column; gap: var(--space-4); }
.stack-5 { display: flex; flex-direction: column; gap: var(--space-5); }
.stack-6 { display: flex; flex-direction: column; gap: var(--space-6); }
.stack-7 { display: flex; flex-direction: column; gap: var(--space-7); }
.eyebrow {
  font-family: var(--font-mono);
  font-size: var(--text-2xs);
  letter-spacing: var(--tracking-caps);
  text-transform: uppercase;
  color: var(--ove-blue-700);
  display: inline-flex; align-items: center; gap: var(--space-3);
}
.eyebrow::before { content: ""; width: 18px; height: 1px; background: currentColor; display: inline-block; }
.mono { font-family: var(--font-mono); }
.muted { color: var(--fg-muted); }
.subtle { color: var(--fg-subtle); }

/* ============================================================
   Skeleton + spinner (light functional motion only)
   ============================================================ */
.skeleton {
  background: linear-gradient(90deg,
    var(--bg-muted) 0%,
    var(--neutral-200) 50%,
    var(--bg-muted) 100%);
  background-size: 200% 100%;
  animation: skel 1.6s linear infinite;
  border-radius: var(--radius-xs);
}
@keyframes skel { from { background-position: 200% 0; } to { background-position: -200% 0; } }
.spinner {
  width: 14px; height: 14px;
  border-radius: 50%;
  border: 2px solid var(--ove-blue-100);
  border-top-color: var(--ove-blue-700);
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0ms !important;
    transition-duration: 0ms !important;
  }
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 1100px) {
  .chat { grid-template-columns: 240px minmax(0,1fr); }
  .auth { grid-template-columns: 1fr; }
  .auth__aside { display: none; }
  .upload-slots { grid-template-columns: 1fr; }
  .glossary__add, .glossary__row { grid-template-columns: 1fr; gap: var(--space-3); }
  .review-queue__span { grid-template-columns: 1fr; }
  .talk-row { grid-template-columns: 1fr; }
  .event-list__row { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .chat { grid-template-columns: 1fr; }
  .chat__rail { display: none; }
}

