/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/font/google/target.css?{"path":"app/layout.tsx","import":"Instrument_Serif","arguments":[{"weight":["400"],"style":["normal","italic"],"subsets":["latin"],"variable":"--font-display","display":"swap"}],"variableName":"instrumentSerif"} ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* latin-ext */
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/5ece437c7024c161-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: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/9cc5b37ab1350db7-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;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/35f3de0ebb1cfc70-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: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/e6099e249fd938cc-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: 'Instrument Serif Fallback';src: local("Times New Roman");ascent-override: 117.94%;descent-override: 36.93%;line-gap-override: 0.00%;size-adjust: 83.94%
}.__className_1f5468 {font-family: 'Instrument Serif', 'Instrument Serif Fallback';font-weight: 400
}.__variable_1f5468 {--font-display: 'Instrument Serif', 'Instrument Serif Fallback'
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/font/google/target.css?{"path":"app/layout.tsx","import":"Inter_Tight","arguments":[{"weight":["300","400","500","600","700"],"subsets":["latin"],"variable":"--font-ui","display":"swap"}],"variableName":"interTight"} ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* cyrillic-ext */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/c95a17d6aa1ccc69-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: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/84792440f5374347-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/10735954b8957dce-s.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/69c8297e91a203ed-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: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/32ec8d161d520037-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: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/ceda3e828136e1b8-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: 'Inter Tight';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/_next/static/media/103fc5fac08dcb15-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: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/c95a17d6aa1ccc69-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: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/84792440f5374347-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/10735954b8957dce-s.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/69c8297e91a203ed-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: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/32ec8d161d520037-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: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/ceda3e828136e1b8-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: 'Inter Tight';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/103fc5fac08dcb15-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: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/c95a17d6aa1ccc69-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: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/84792440f5374347-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/10735954b8957dce-s.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/69c8297e91a203ed-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: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/32ec8d161d520037-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: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/ceda3e828136e1b8-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: 'Inter Tight';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/103fc5fac08dcb15-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: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/c95a17d6aa1ccc69-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: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/84792440f5374347-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/10735954b8957dce-s.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/69c8297e91a203ed-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: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/32ec8d161d520037-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: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/ceda3e828136e1b8-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: 'Inter Tight';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/_next/static/media/103fc5fac08dcb15-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: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/c95a17d6aa1ccc69-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: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/84792440f5374347-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/10735954b8957dce-s.woff2) format('woff2');
  unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
  font-family: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/69c8297e91a203ed-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: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/32ec8d161d520037-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: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/ceda3e828136e1b8-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: 'Inter Tight';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/_next/static/media/103fc5fac08dcb15-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: 'Inter Tight Fallback';src: local("Arial");ascent-override: 100.51%;descent-override: 25.03%;line-gap-override: 0.00%;size-adjust: 96.39%
}.__className_cf896d {font-family: 'Inter Tight', 'Inter Tight Fallback';font-style: normal
}.__variable_cf896d {--font-ui: 'Inter Tight', 'Inter Tight Fallback'
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/font/google/target.css?{"path":"app/layout.tsx","import":"JetBrains_Mono","arguments":[{"weight":["400","500"],"subsets":["latin"],"variable":"--font-mono","display":"swap"}],"variableName":"jetbrainsMono"} ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/edc640959b0c7826-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/64d784ea54a4acde-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/ff71da380fbe67dd-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/6d831b18ae5b01dc-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/_next/static/media/558ca1a6aa3cb55e-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/edc640959b0c7826-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/64d784ea54a4acde-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/ff71da380fbe67dd-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/6d831b18ae5b01dc-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: 'JetBrains Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/_next/static/media/558ca1a6aa3cb55e-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: 'JetBrains Mono Fallback';src: local("Arial");ascent-override: 75.79%;descent-override: 22.29%;line-gap-override: 0.00%;size-adjust: 134.59%
}.__className_6d24ac {font-family: 'JetBrains Mono', 'JetBrains Mono Fallback';font-style: normal
}.__variable_6d24ac {--font-mono: 'JetBrains Mono', 'JetBrains Mono Fallback'
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/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@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[10].use[3]!./app/globals.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*//*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
.container {
  width: 100%;
}
@media (min-width: 640px) {

  .container {
    max-width: 640px;
  }
}
@media (min-width: 768px) {

  .container {
    max-width: 768px;
  }
}
@media (min-width: 1024px) {

  .container {
    max-width: 1024px;
  }
}
@media (min-width: 1280px) {

  .container {
    max-width: 1280px;
  }
}
@media (min-width: 1536px) {

  .container {
    max-width: 1536px;
  }
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
.visible {
  visibility: visible;
}
.collapse {
  visibility: collapse;
}
.static {
  position: static;
}
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.sticky {
  position: sticky;
}
.inset-0 {
  inset: 0px;
}
.left-\[50\%\] {
  left: 50%;
}
.right-4 {
  right: 1rem;
}
.top-4 {
  top: 1rem;
}
.top-\[50\%\] {
  top: 50%;
}
.z-50 {
  z-index: 50;
}
.block {
  display: block;
}
.inline-block {
  display: inline-block;
}
.inline {
  display: inline;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.table {
  display: table;
}
.grid {
  display: grid;
}
.inline-grid {
  display: inline-grid;
}
.contents {
  display: contents;
}
.hidden {
  display: none;
}
.h-10 {
  height: 2.5rem;
}
.h-4 {
  height: 1rem;
}
.h-8 {
  height: 2rem;
}
.h-9 {
  height: 2.25rem;
}
.w-4 {
  width: 1rem;
}
.w-9 {
  width: 2.25rem;
}
.w-full {
  width: 100%;
}
.max-w-lg {
  max-width: 32rem;
}
.grow {
  flex-grow: 1;
}
.translate-x-\[-50\%\] {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.translate-y-\[-50\%\] {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.resize {
  resize: both;
}
.flex-col {
  flex-direction: column;
}
.items-center {
  align-items: center;
}
.justify-center {
  justify-content: center;
}
.gap-4 {
  gap: 1rem;
}
.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
}
.whitespace-nowrap {
  white-space: nowrap;
}
.break-all {
  word-break: break-all;
}
.rounded {
  border-radius: 0.25rem;
}
.rounded-md {
  border-radius: 0.375rem;
}
.rounded-sm {
  border-radius: 0.125rem;
}
.rounded-xl {
  border-radius: 0.75rem;
}
.border {
  border-width: 1px;
}
.border-white\/10 {
  border-color: rgb(255 255 255 / 0.1);
}
.border-white\/15 {
  border-color: rgb(255 255 255 / 0.15);
}
.border-white\/20 {
  border-color: rgb(255 255 255 / 0.2);
}
.bg-\[var\(--accent\)\] {
  background-color: var(--accent);
}
.bg-black\/60 {
  background-color: rgb(0 0 0 / 0.6);
}
.bg-red-600 {
  --tw-bg-opacity: 1;
  background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));
}
.bg-transparent {
  background-color: transparent;
}
.bg-white\/5 {
  background-color: rgb(255 255 255 / 0.05);
}
.p-6 {
  padding: 1.5rem;
}
.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}
.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
.px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}
.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}
.py-2 {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}
.pt-0 {
  padding-top: 0px;
}
.text-center {
  text-align: center;
}
.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}
.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}
.font-medium {
  font-weight: 500;
}
.font-semibold {
  font-weight: 600;
}
.uppercase {
  text-transform: uppercase;
}
.italic {
  font-style: italic;
}
.tabular-nums {
  --tw-numeric-spacing: tabular-nums;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
.leading-none {
  line-height: 1;
}
.tracking-tight {
  letter-spacing: -0.025em;
}
.text-\[var\(--text\)\] {
  color: var(--text);
}
.text-\[var\(--text-muted\)\] {
  color: var(--text-muted);
}
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.underline {
  text-decoration-line: underline;
}
.opacity-70 {
  opacity: 0.7;
}
.shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-lg {
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.shadow-sm {
  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.outline {
  outline-style: solid;
}
.blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
.duration-200 {
  transition-duration: 200ms;
}

:root {
  /* Backgrounds */
  --bg: #fafaf7;
  --bg-elev: #ffffff;
  --bg-sunk: #f4f3ef;
  --bg-hover: #f0efea;

  /* Borders */
  --border: #e8e6df;
  --border-strong: #d6d3c9;

  /* Text */
  --text: #1a1a17;
  --text-muted: #6b6b62;
  --text-subtle: #9a9a90;

  /* Accent (orange) */
  --accent: #f5a524;
  --accent-strong: #d68910;
  --accent-soft: #fef3d6;
  --accent-text: #6b4506;

  /* Status */
  --green: #16a34a;
  --green-soft: #dcfce7;
  --green-text: #14532d;
  --red: #dc2626;
  --red-soft: #fee2e2;
  --red-text: #7f1d1d;
  --blue: #2563eb;
  --blue-soft: #dbeafe;
  --blue-text: #1e3a8a;
  --violet: #7c3aed;
  --violet-soft: #ede9fe;

  /* Radii */
  --r-sm: 4px;
  --r-md: 6px;
  --r-lg: 10px;
  --r-xl: 14px;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgba(20,20,16,0.04);
  --shadow-md: 0 2px 8px rgba(20,20,16,0.06), 0 1px 2px rgba(20,20,16,0.04);
  --shadow-lg: 0 8px 32px rgba(20,20,16,0.08), 0 2px 8px rgba(20,20,16,0.04);

  /* Fonts */
  --font-display: 'Instrument Serif', Times New Roman, serif;
  --font-ui: 'Inter Tight', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, monospace;
}

* { box-sizing: border-box; }

input, textarea, select {
  outline: none;
  font-family: var(--font-ui);
}
input:focus, textarea:focus, select:focus {
  border-color: var(--accent-strong);
  box-shadow: 0 0 0 2px var(--accent-soft);
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-ui);
  font-size: 13px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* ── Utility classes ── */
.font-display { font-family: var(--font-display); }
.font-mono    { font-family: var(--font-mono); }

/* ── Button ── */
.b-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  background: var(--bg-elev);
  color: var(--text);
  font-size: 12px;
  font-weight: 500;
  font-family: var(--font-ui);
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s;
  text-decoration: none;
}
.b-btn:hover { background: var(--bg-hover); }
.b-btn.primary { background: var(--text); color: var(--bg); border-color: var(--text); }
.b-btn.primary:hover { opacity: 0.9; }
.b-btn.accent { background: var(--accent); color: #1a1a17; border-color: var(--accent-strong); }
.b-btn.accent:hover { background: var(--accent-strong); }
.b-btn.ghost { background: transparent; border-color: transparent; }
.b-btn.ghost:hover { background: var(--bg-hover); }
.b-btn.sm { padding: 3px 7px; font-size: 11px; }
.b-btn.danger { background: var(--red, #dc2626); color: #fff; border-color: var(--red, #dc2626); }
.b-btn.danger:hover { opacity: 0.9; }
.b-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* ── Card ── */
.b-card {
  background: var(--bg-elev);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
}

/* ── Chip ── */
.b-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: -0.005em;
  background: var(--bg-sunk);
  color: var(--text-muted);
  border: 1px solid var(--border);
}
.b-chip.green { background: var(--green-soft); color: var(--green-text); border-color: transparent; }
.b-chip.red   { background: var(--red-soft);   color: var(--red-text);   border-color: transparent; }
.b-chip.blue  { background: var(--blue-soft);  color: var(--blue-text);  border-color: transparent; }
.b-chip.amber { background: var(--accent-soft); color: var(--accent-text); border-color: transparent; }
.b-chip.violet { background: var(--violet-soft); color: var(--violet); border-color: transparent; }

/* ── Keyboard shortcut ── */
.b-kbd {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 5px; border-radius: 4px;
  background: var(--bg-sunk); border: 1px solid var(--border); border-bottom-width: 2px;
  font-size: 10px; font-weight: 500; color: var(--text-muted); font-family: var(--font-ui);
}

/* ── Input ── */
.b-input {
  width: 100%;
  padding: 5px 8px;
  border: 1px solid var(--border);
  border-radius: 5px;
  background: var(--bg-elev);
  font-size: 12px;
  color: var(--text);
  font-family: var(--font-ui);
  outline: none;
}
.b-input:focus {
  border-color: var(--accent-strong);
  box-shadow: 0 0 0 2px var(--accent-soft);
}
.b-input::-moz-placeholder { color: var(--text-subtle); }
.b-input::placeholder { color: var(--text-subtle); }

/* ── Section label ── */
.section-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-subtle);
  margin-bottom: 8px;
}

/* ── Cross-cutting: empty state + loading skeleton ── */
.display { font-family: var(--font-display); line-height: 1; color: var(--text); }
.b-grid-bg {
  background-image:
    linear-gradient(var(--border) 1px, transparent 1px),
    linear-gradient(90deg, var(--border) 1px, transparent 1px);
  background-size: 28px 28px;
  background-position: -1px -1px; background-color: var(--bg);
}
.b-skel {
  border-radius: 4px;
  background: linear-gradient(90deg, var(--bg-sunk) 25%, var(--bg-hover) 37%, var(--bg-sunk) 63%);
  background-size: 400% 100%;
  animation: invShimmer 1.4s ease infinite;
}
@keyframes invShimmer { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* ── BOQ ── */
.mono { font-family: var(--font-mono); font-size: 0.92em; }
.num { font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
/* horizontal scroll wrapper — only the tower/Qty columns scroll; fixed columns are sticky */
.boq-tree-scroll { overflow-x: auto; overflow-y: visible; }
.boq-tree {
  border-collapse: separate; border-spacing: 0;
  table-layout: fixed;
  --bt-w-code: 90px; --bt-w-desc: 240px; --bt-w-uom: 60px; --bt-w-rate: 80px;
  --bt-w-mcost: 100px; --bt-w-mtax: 128px; --bt-w-lcost: 100px; --bt-w-ltax: 128px;
  --bt-w-amount: 100px; --bt-w-costsqft: 100px; --bt-w-actions: 56px; --bt-w-tower: 120px;
  --bt-left-code: 0px;                                          /* Code @ left edge */
  --bt-left-desc: var(--bt-w-code);                             /* after Code */
  --bt-right-actions: 0px;                                      /* actions @ right edge */
  --bt-right-costsqft: var(--bt-w-actions);                     /* before actions */
  --bt-right-amount: calc(var(--bt-w-actions) + var(--bt-w-costsqft)); /* before Cost/sqft */
}
/* colgroup is the single source of column widths (table-layout: fixed) */
.boq-tree col.bt-col-code { width: var(--bt-w-code); }
.boq-tree col.bt-col-desc { width: var(--bt-w-desc); }
.boq-tree col.bt-col-uom { width: var(--bt-w-uom); }
.boq-tree col.bt-col-mcost { width: var(--bt-w-mcost); }
.boq-tree col.bt-col-mtax { width: var(--bt-w-mtax); }
.boq-tree col.bt-col-lcost { width: var(--bt-w-lcost); }
.boq-tree col.bt-col-ltax { width: var(--bt-w-ltax); }
.boq-tree col.bt-col-rate { width: var(--bt-w-rate); }
.boq-tree col.bt-col-amount { width: var(--bt-w-amount); }
.boq-tree col.bt-col-costsqft { width: var(--bt-w-costsqft); }
.boq-tree col.bt-col-actions { width: var(--bt-w-actions); }
.boq-tree col.bt-col-tower { width: var(--bt-w-tower); }
.boq-tree tr.section-row { background: var(--bg-sunk); }
.boq-tree tr.trade-row { background: var(--bg-elev); }
.boq-tree tr.item-row { background: var(--bg-elev); }
.boq-tree tr.item-row:hover { background: var(--bg-hover); }
.boq-tree td, .boq-tree th { padding: 6px 8px; font-size: 12px; vertical-align: middle; border-bottom: 1px solid var(--border); }
.boq-tree th { font-weight: 600; color: var(--text-muted); text-align: left; background: var(--bg-elev); position: sticky; top: 0; z-index: 3; white-space: nowrap; }
.boq-tree th.right, .boq-tree td.right { text-align: right; font-variant-numeric: tabular-nums; }
.boq-tree thead tr:first-child th { border-bottom: none; }
.boq-tree td.code, .boq-tree td.uom { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); }
.boq-tree tr.editing { outline: 2px solid var(--accent); outline-offset: -1px; background: var(--bg-elev); box-shadow: 0 4px 14px rgba(245,165,36,0.18); position: relative; z-index: 1; }
/* pinned columns — left (Code+Desc) & right (Amount+Actions) groups.
   UOM, Rate and the cost/tax columns are NOT sticky → they scroll with Qty. */
.boq-tree td.col-code, .boq-tree th.col-code { position: sticky; left: var(--bt-left-code); }
.boq-tree td.col-desc, .boq-tree th.col-desc { position: sticky; left: var(--bt-left-desc); }
.boq-tree td.col-amount, .boq-tree th.col-amount { position: sticky; right: var(--bt-right-amount); }
.boq-tree td.col-costsqft, .boq-tree th.col-costsqft { position: sticky; right: var(--bt-right-costsqft); }
.boq-tree td.col-actions, .boq-tree th.col-actions { position: sticky; right: var(--bt-right-actions); }
/* GroupRow description spans Desc+UOM+cost/tax+Rate; pinned cell stays at desc offset */
.boq-tree td.col-desc-span { left: var(--bt-left-desc); }
/* body pinned cells: opaque over scrolling columns, follow row background, above scrolling cells */
.boq-tree td.col-code, .boq-tree td.col-desc,
.boq-tree td.col-amount, .boq-tree td.col-costsqft, .boq-tree td.col-actions { background: inherit; z-index: 2; }
/* desc cells must clip, not widen the fixed table, and must NOT become a
   horizontal scroll container — overflow:clip clips like hidden but never
   creates a scrollable box, so the long text can't be wheel/drag-scrolled
   inside the cell (the live symptom). */
.boq-tree td.col-desc, .boq-tree th.col-desc, .boq-tree td.col-desc-span {
  max-width: 0; overflow: clip; text-overflow: ellipsis; white-space: nowrap;
}
/* the inner text span also clips (it carries the ellipsis) and likewise must
   not scroll its overflowing content */
.boq-tree td.col-desc .builder-cell-text {
  max-width: var(--bt-w-desc); overflow: clip;
}
/* header pinned cells: opaque header bg, above the scrolling sub-headings */
.boq-tree th.col-code, .boq-tree th.col-desc,
.boq-tree th.col-amount, .boq-tree th.col-costsqft, .boq-tree th.col-actions { background: var(--bg-elev); z-index: 5; }
/* subtle dividers on the freeze seams (right of Desc, left of Amount) */
.boq-tree td.col-desc, .boq-tree th.col-desc { box-shadow: 1px 0 0 var(--border); }
.boq-tree td.col-amount, .boq-tree th.col-amount { box-shadow: -1px 0 0 var(--border); }
/* section/trade rows span full width — no scrolling content under the frozen
   columns, so the seam shadows would show as stray vertical borders. Drop them. */
.boq-tree tr.section-row td.col-desc, .boq-tree tr.trade-row td.col-desc,
.boq-tree tr.section-row td.col-amount, .boq-tree tr.trade-row td.col-amount { box-shadow: none; }
.boq-tree td.editing-cell { padding: 4px 6px; }
/* has-comment only needs a positioning context for the absolute .comment-dot.
   It must NOT clobber position:sticky on frozen columns (Code/Desc/UOM/Rate/
   Amount/Actions) — sticky already establishes a containing block for the dot.
   Scope relative to non-frozen cells so commented frozen cells stay pinned. */
.boq-tree td.has-comment:not(.col-code):not(.col-desc):not(.col-amount):not(.col-actions) { position: relative; }
.boq-tree .comment-dot {
  position: absolute; top: 2px; right: 2px; z-index: 3;
  width: 14px; height: 14px; border-radius: 999px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; border: none; background: transparent; padding: 0;
}
.boq-tree .comment-dot::after {
  content: ''; width: 7px; height: 7px; border-radius: 999px;
  background: var(--accent); box-shadow: 0 0 0 2px var(--bg-elev);
}
.boq-tree td.comment-open { outline: 1.5px dashed var(--accent-strong); outline-offset: -2px; background: var(--accent-soft); }
.boq-tree tr.add-row { color: var(--text-subtle); font-style: italic; }
.boq-tree tr.add-row:hover { background: var(--bg-hover); color: var(--text); cursor: pointer; }
/* full-span add-row label stays at the viewport left while the row spans the scroll area */
.boq-tree td.col-addrow { position: relative; }
.boq-tree td.col-addrow .add-row-label {
  position: sticky; left: 28px; display: inline-flex; align-items: center;
}
.boq-cmp-wrap { overflow-x: auto; scrollbar-width: none; }
.boq-cmp-wrap::-webkit-scrollbar { display: none; }
.boq-cmp { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 12px; }
.boq-cmp th, .boq-cmp td { padding: 7px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; white-space: nowrap; }
.boq-cmp th { background: var(--bg-elev); color: var(--text-muted); font-weight: 600; text-align: left; position: sticky; top: 0; z-index: 2; }
.boq-cmp td.right, .boq-cmp th.right { text-align: right; font-variant-numeric: tabular-nums; }
.boq-cmp tr:hover td { background: var(--bg-hover); }
.boq-cmp td.lowest { background: var(--green-soft); color: var(--green-text); }
.boq-cmp td.highest { background: var(--red-soft); color: var(--red-text); }
.boq-cmp td.empty { color: var(--text-subtle); text-align: center; padding: 32px 0; }
.builder-input { width: 100%; padding: 5px 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--bg-elev); font-size: 12px; font-family: inherit; color: var(--text); }
.builder-input.num { text-align: right; font-variant-numeric: tabular-nums; }
.builder-input:focus { outline: none; border-color: var(--accent-strong); box-shadow: 0 0 0 2px var(--accent-soft); }
.builder-input.active { border-color: var(--accent-strong); box-shadow: 0 0 0 2px var(--accent-soft); }
.builder-cell-text { display: block; width: 100%; max-width: 100%; min-height: 24px; padding: 4px 6px; font-size: 12px; color: var(--text); overflow: clip; white-space: nowrap; text-overflow: ellipsis; }
.builder-cell-text.num { text-align: right; font-family: var(--font-mono); }
.bld-check { -moz-appearance: none; appearance: none; -webkit-appearance: none; width: 14px; height: 14px; border: 1px solid var(--border); border-radius: 3px; background: var(--bg-elev); cursor: pointer; position: relative; flex: none; vertical-align: middle; }
.bld-check:checked { background: #f5a524; border-color: #f5a524; }
.bld-check:checked::after { content: ''; position: absolute; left: 4px; top: 1px; width: 4px; height: 8px; border: solid #fff; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); }
.bld-check:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--accent-soft); }

/* ── Inventory: line-items table (GRN / Issue / Indent) ── */
.inv-table { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 12px; }
.inv-table th { background: var(--bg-sunk); color: var(--text-muted); font-weight: 600; text-align: left; padding: 7px 10px; border-bottom: 1px solid var(--border); white-space: nowrap; font-size: 11px; letter-spacing: 0.01em; }
.inv-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
.inv-table th.right, .inv-table td.right { text-align: right; font-variant-numeric: tabular-nums; }
.inv-table tr:last-child td { border-bottom: none; }
.inv-table .item-name { font-weight: 500; color: var(--text); }
.inv-table .item-code { font-family: var(--font-mono); font-size: 10.5px; color: var(--text-subtle); }
.inv-num { width: 100%; max-width: 90px; padding: 5px 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--bg-elev); font-size: 12px; text-align: right; font-variant-numeric: tabular-nums; font-family: var(--font-mono); color: var(--text); }
.inv-num:focus { outline: none; border-color: var(--accent-strong); box-shadow: 0 0 0 2px var(--accent-soft); }
.inv-num.accepted { border-color: var(--accent); background: var(--accent-soft); font-weight: 600; color: var(--accent-text); }
.inv-num.rejected { color: var(--red); font-weight: 400; }
.inv-num.rejected:focus { color: var(--text); font-weight: 400; }
.inv-num.conflict { border-color: var(--red); background: var(--red-soft); }
.add-line-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; font-size: 12px; color: var(--text-muted); background: transparent; border: 1px dashed var(--border-strong); border-radius: var(--r-md); cursor: pointer; }
.add-line-btn:hover { background: var(--bg-hover); color: var(--text); }

/* ── Totals footer ── */
.inv-totals { display: flex; align-items: center; gap: 28px; padding: 14px 16px; border-top: 2px solid var(--border-strong); background: var(--bg-sunk); }
.inv-total-label { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-subtle); }
.inv-total-val { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.inv-grand { font-family: var(--font-display); font-size: 26px; line-height: 1; color: var(--text); }

/* ── Stepper (Draft → Received → Review → Approved) ── */
.inv-stepper { display: flex; align-items: center; gap: 0; }
.inv-step { display: flex; flex-direction: column; align-items: center; gap: 5px; flex: 1; position: relative; }
.inv-step .dot { width: 22px; height: 22px; border-radius: 999px; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; background: var(--bg-sunk); color: var(--text-subtle); border: 1px solid var(--border-strong); z-index: 1; }
.inv-step.done .dot { background: var(--green); color: #fff; border-color: var(--green); }
.inv-step.active .dot { background: var(--accent); color: #1a1a17; border-color: var(--accent-strong); }
.inv-step .label { font-size: 10px; color: var(--text-muted); font-weight: 500; }
.inv-step .meta { font-size: 9.5px; color: var(--text-subtle); }
.inv-step.active .label { color: var(--text); }
.inv-step.rejected .dot { background: var(--red); color: #fff; border-color: var(--red); }
.inv-step.rejected .label { color: var(--text); }
.inv-step:not(:last-child)::after { content: ''; position: absolute; top: 11px; left: 50%; width: 100%; height: 2px; background: var(--border); z-index: 0; }
.inv-step.done:not(:last-child)::after { background: var(--green); }

/* ── Stock-warning banner (issue exceeds stock) ── */
.inv-warn { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--red); background: var(--red-soft); border-radius: var(--r-md); color: var(--red-text); font-size: 12px; }
.inv-warn .grow { flex: 1; }

/* ── Approval timeline (Indent: SE → QS → PM) ── */
.inv-timeline { position: relative; padding-left: 26px; }
.inv-timeline .node { position: relative; padding-bottom: 18px; }
.inv-timeline .node:last-child { padding-bottom: 0; }
.inv-timeline .node::before { content: ''; position: absolute; left: -19px; top: 2px; width: 14px; height: 14px; border-radius: 999px; background: var(--bg-elev); border: 2px solid var(--border-strong); }
.inv-timeline .node.done::before { background: var(--green); border-color: var(--green); }
.inv-timeline .node.active::before { background: var(--accent); border-color: var(--accent-strong); }
.inv-timeline .node:not(:last-child)::after { content: ''; position: absolute; left: -13px; top: 16px; width: 2px; height: calc(100% - 14px); background: var(--border); }
.inv-timeline .node.done:not(:last-child)::after { background: var(--green); }

/* ── Bedrock calendar (date picker popover) ── */
.b-section-label { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-subtle); }
.b-cal-pop { display: flex; background: var(--bg-elev); border: 1px solid var(--border-strong); border-radius: var(--r-md); box-shadow: var(--shadow-lg); overflow: hidden; }
.b-cal { padding: 10px; width: 254px; }
.b-cal-head { display: flex; align-items: center; gap: 2px; margin-bottom: 6px; }
.b-cal-title { flex: 1; display: flex; align-items: center; justify-content: center; gap: 4px; border: none; background: transparent; padding: 4px 6px; border-radius: var(--r-sm); font-size: 12px; font-weight: 600; color: var(--text); font-family: var(--font-ui); cursor: pointer; }
.b-cal-title:hover:not(:disabled) { background: var(--bg-hover); }
.b-cal-title:disabled { cursor: default; }
.b-cal.editorial .b-cal-title { justify-content: flex-start; font-family: var(--font-display); font-size: 15px; font-weight: 400; }
.b-cal-nav { width: 24px; height: 24px; flex: none; display: flex; align-items: center; justify-content: center; border: none; border-radius: var(--r-sm); background: transparent; color: var(--text-subtle); cursor: pointer; }
.b-cal-nav:hover { background: var(--bg-hover); color: var(--text); }
.b-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.b-cal-grid.weeks { grid-template-columns: 22px repeat(7, 1fr); }
.b-cal-dow { font-size: 9.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-subtle); text-align: center; padding: 4px 0; }
.b-cal-wk { font-size: 9px; color: var(--text-subtle); font-variant-numeric: tabular-nums; display: flex; align-items: center; justify-content: center; }
.b-cal-day { height: 26px; display: flex; align-items: center; justify-content: center; font-size: 11.5px; font-family: var(--font-mono); font-variant-numeric: tabular-nums; border: 1px solid transparent; border-radius: var(--r-sm); background: transparent; color: var(--text); cursor: pointer; }
.b-cal-day:hover:not(:disabled) { background: var(--bg-hover); }
.b-cal-day.muted { color: var(--text-subtle); opacity: 0.55; }
.b-cal-day.disabled { opacity: 0.3; cursor: default; }
.b-cal-day.today { border-color: var(--accent-strong); }
.b-cal-day.selected { background: var(--accent); color: #1a1a17; font-weight: 600; }
.b-cal-cells { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.b-cal-cell { height: 34px; display: flex; align-items: center; justify-content: center; font-size: 11.5px; font-family: var(--font-ui); font-variant-numeric: tabular-nums; border: 1px solid transparent; border-radius: var(--r-sm); background: transparent; color: var(--text); cursor: pointer; }
.b-cal-cell:hover:not(:disabled) { background: var(--bg-hover); }
.b-cal-cell.disabled { opacity: 0.3; cursor: default; }
.b-cal-cell.today { border-color: var(--accent-strong); }
.b-cal-cell.selected { background: var(--accent); color: #1a1a17; font-weight: 600; }
.b-cal-foot { display: flex; align-items: center; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
.b-cal-presets { width: 138px; flex: none; display: flex; flex-direction: column; gap: 2px; padding: 8px 6px; border-right: 1px solid var(--border); background: var(--bg-sunk); }
.b-cal-preset { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 5px 8px; border: none; border-radius: var(--r-sm); background: transparent; font-size: 11.5px; font-family: var(--font-ui); color: var(--text); cursor: pointer; text-align: left; }
.b-cal-preset:hover { background: var(--bg-hover); }
.b-cal-preset.active { background: var(--accent-soft); color: var(--accent-text); font-weight: 600; }
.b-cal-preset .mono { font-size: 10px; color: var(--text-subtle); font-family: var(--font-mono); }

/* ── Searchable select (vendor/item/store, 10k+ lists) ── */
.ss-wrap { position: relative; width: 100%; }
.ss-trigger {
  width: 100%; display: flex; align-items: center; gap: 8px;
  padding: 5px 8px; border: 1px solid var(--border); border-radius: 5px;
  background: var(--bg-elev); font-size: 12px; color: var(--text);
  font-family: var(--font-ui); cursor: pointer; text-align: left;
}
.ss-trigger:hover { background: var(--bg-hover); }
.ss-trigger.open { border-color: var(--accent-strong); box-shadow: 0 0 0 2px var(--accent-soft); }
.ss-trigger .ss-val { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ss-trigger .ss-placeholder { color: var(--text-subtle); }
.ss-trigger .ss-caret { color: var(--text-subtle); flex: none; }
.ss-trigger .ss-lead { color: var(--text-subtle); flex: none; }
.ss-val-2line { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.ss-val-2line .ss-val-label { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ss-val-2line .ss-val-sub { font-family: var(--font-mono); font-size: 10px; color: var(--text-subtle); }
.ss-pop {
  position: absolute; z-index: 50; top: calc(100% + 4px); left: 0; right: 0;
  background: var(--bg-elev); border: 1px solid var(--border-strong);
  border-radius: var(--r-md); box-shadow: var(--shadow-lg); overflow: hidden;
  display: flex; flex-direction: column; max-height: 280px;
}
.ss-search {
  display: flex; align-items: center; gap: 8px; padding: 8px 10px;
  border-bottom: 1px solid var(--border); color: var(--text-subtle);
}
.ss-search input {
  flex: 1; border: none; background: transparent; outline: none; box-shadow: none;
  font-size: 12.5px; color: var(--text); font-family: var(--font-ui);
}
.ss-search input::-moz-placeholder { color: var(--text-subtle); }
.ss-search input::placeholder { color: var(--text-subtle); }
.ss-list { overflow-y: auto; padding: 4px; }
.ss-opt {
  display: flex; align-items: center; gap: 8px; width: 100%;
  padding: 6px 8px; border: none; border-radius: var(--r-sm);
  background: transparent; cursor: pointer; text-align: left;
  font-size: 12.5px; color: var(--text); font-family: var(--font-ui);
}
.ss-opt:hover, .ss-opt.active { background: var(--bg-hover); }
.ss-opt.selected { background: var(--accent-soft); color: var(--accent-text); }
.ss-opt .ss-opt-main { flex: 1; overflow: hidden; }
.ss-opt .ss-opt-label { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ss-opt .ss-opt-sub { display: block; font-size: 11px; color: var(--text-subtle); font-family: var(--font-mono); }
.ss-opt .ss-check { color: var(--accent-strong); flex: none; }
.ss-empty { padding: 16px 10px; text-align: center; font-size: 12px; color: var(--text-subtle); }
.ss-count { padding: 6px 10px; border-top: 1px solid var(--border); font-size: 10.5px; color: var(--text-subtle); letter-spacing: 0.02em; }
.ss-add {
  display: flex; align-items: center; gap: 6px; width: 100%;
  padding: 8px 10px; border: none; border-top: 1px solid var(--border);
  background: transparent; cursor: pointer; text-align: left;
  font-size: 12px; font-weight: 600; color: var(--accent-text);
  font-family: var(--font-ui);
}
.ss-add:hover { background: var(--accent-soft); }
.ss-add svg { color: var(--accent-strong); }

/* ── Mobile device shell (GRN at the gate) ── */
.inv-phone { width: 340px; border-radius: 40px; background: #1a1a17; padding: 10px; box-shadow: var(--shadow-lg); }
.inv-phone-screen { background: var(--bg); border-radius: 30px; overflow: hidden; min-height: 640px; display: flex; flex-direction: column; }
.inv-phone-status { display: flex; align-items: center; justify-content: space-between; padding: 8px 18px 4px; font-size: 11px; font-weight: 600; }
.inv-mobile-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--r-lg); padding: 12px; }
.inv-mobile-field-label { font-size: 9px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-subtle); margin-bottom: 4px; }

/* ── Right-side drawer (reusable record forms) ── */
.drawer-overlay {
  position: fixed; inset: 0; z-index: 60; background: rgba(0,0,0,0.45);
  backdrop-filter: blur(2px);
}
.drawer-overlay[data-state='open'] { animation: drawerFade 160ms ease-out; }
.drawer-overlay[data-state='closed'] { animation: drawerFade 140ms ease-in reverse; }
.drawer-panel {
  position: fixed; z-index: 61; top: 0; right: 0; bottom: 0;
  width: 480px; max-width: calc(100vw - 32px);
  background: var(--bg-elev); border-left: 1px solid var(--border-strong);
  box-shadow: var(--shadow-lg); display: flex; flex-direction: column;
  color: var(--text);
}
.drawer-panel[data-state='open'] { animation: drawerInRight 200ms cubic-bezier(0.32, 0.72, 0, 1); }
.drawer-panel[data-state='closed'] { animation: drawerInRight 180ms cubic-bezier(0.32, 0.72, 0, 1) reverse; }
.drawer-head {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 16px 18px; border-bottom: 1px solid var(--border);
}
.drawer-title { font-family: var(--font-display); font-size: 18px; letter-spacing: -0.01em; color: var(--text); }
.drawer-desc { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.drawer-body { flex: 1; overflow-y: auto; padding: 18px; }

@keyframes drawerFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes drawerInRight { from { transform: translateX(100%); } to { transform: translateX(0); } }

/* ════════════════════════════════════════════════════════════════════════
   Inventory · Flat Allocation (project setup → /setup/inventory)
   Per-unit availability grid synthesized from saved flat configs.
   Status = Available · Allocated · Blocked · Sold.
   ════════════════════════════════════════════════════════════════════════ */
.b-divider { height: 1px; background: var(--border); border: none; }
.b-vdiv { width: 1px; background: var(--border); align-self: center; }
.b-dot { width: 4px; height: 4px; border-radius: 50%; display: inline-block; }

.inv-alloc { display: flex; flex-direction: column; flex: 1; min-height: 0; }

/* palette / status filter row */
.inv-palette {
  flex: none; display: flex; align-items: center; gap: 7px;
  padding: 8px 18px; border-bottom: 1px solid var(--border);
  background: var(--bg-sunk); flex-wrap: wrap;
}
.inv-ptool {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--font-ui); font-size: 12px; font-weight: 500; color: var(--text);
  background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--r-md);
  padding: 5px 10px; cursor: pointer; white-space: nowrap;
  transition: background .12s, border-color .12s, box-shadow .12s;
}
.inv-ptool:hover { background: var(--bg-hover); }
.inv-ptool.active { border-color: var(--text); box-shadow: 0 0 0 1px var(--text); }

/* main split */
.inv-alloc-main { flex: 1; display: flex; min-height: 0; }
.inv-alloc-body { flex: 1; min-width: 0; overflow: auto; padding: 22px 18px 60px; position: relative; }
.inv-alloc-body.painting { cursor: crosshair; }
.inv-alloc-body.painting .inv-cell { cursor: inherit; }
.inv-towers-row { display: flex; gap: 30px; align-items: flex-start; min-width: -moz-min-content; min-width: min-content; }

/* tower */
.inv-tower { flex: none; }
.inv-tower-head {
  display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px;
  padding-bottom: 7px; border-bottom: 1px solid var(--border);
}
.inv-tower-name { font-size: 21px; }
.inv-tower-meta { font-size: 11px; color: var(--text-subtle); }
.inv-grid { display: flex; flex-direction: column; gap: 4px; }
.inv-grow { display: grid; gap: 4px; align-items: center; }
.inv-glabel { font-size: 10px; color: var(--text-subtle); text-align: center; }
.inv-glabel.row { text-align: right; padding-right: 6px; }

/* cell */
.inv-cell {
  width: var(--inv-cz, 42px); height: var(--inv-cz, 42px);
  display: grid; place-items: center;
  border: 1px solid var(--border); border-radius: var(--r-sm);
  background: var(--bg-sunk); color: var(--text-subtle);
  font-family: var(--font-ui); cursor: pointer; padding: 0;
  transition: transform .08s, box-shadow .08s, border-color .1s;
  position: relative;
}
.inv-cell:hover { border-color: var(--border-strong); transform: translateY(-1px); z-index: 2; }
.inv-cell.sel { box-shadow: 0 0 0 2px var(--text); z-index: 3; }
.inv-cell-n { font-size: 10.5px; letter-spacing: -0.02em; }
.inv-cell.absent {
  background: transparent; border: 1px dashed var(--border-strong); color: var(--text-subtle);
}
.inv-cell.absent:hover { background: var(--bg-hover); transform: none; }
.inv-cell-x { font-size: 13px; color: var(--text-subtle); opacity: .55; }

/* status fills (6-status allocation model):
   available green · available-landlord blue · landlord-mortgage blue+hatch ·
   developer-mortgage amber+hatch · blocked red · sold dark */
.inv-cell[data-status="available"] {
  background: var(--green-soft); color: var(--green-text);
  border-color: color-mix(in srgb, var(--green) 30%, transparent);
}
.inv-cell[data-status="available_landlord"] {
  background: var(--blue-soft); color: var(--blue-text);
  border-color: color-mix(in srgb, var(--blue) 35%, transparent);
}
.inv-cell[data-status="landlord_mortgage"] {
  background: var(--blue-soft); color: var(--blue-text);
  border-color: color-mix(in srgb, var(--blue) 40%, transparent);
  background-image: repeating-linear-gradient(45deg,
    color-mix(in srgb, var(--blue) 32%, transparent) 0 1.5px, transparent 1.5px 6px);
}
.inv-cell[data-status="developer_mortgage"] {
  background: var(--accent-soft); color: var(--accent-text);
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  background-image: repeating-linear-gradient(45deg,
    color-mix(in srgb, var(--accent) 38%, transparent) 0 1.5px, transparent 1.5px 6px);
}
.inv-cell[data-status="blocked"] {
  background: var(--red-soft); color: var(--red-text);
  border-color: color-mix(in srgb, var(--red) 35%, transparent);
}
.inv-cell[data-status="sold"] {
  background: var(--text); color: var(--bg-elev);
  border-color: var(--text);
}

/* swatch */
.inv-sw {
  width: 13px; height: 13px; flex: none; border-radius: 3px;
  border: 1px solid var(--border-strong); display: inline-block;
}
.inv-sw[data-status="available"] { background: var(--green-soft); border-color: color-mix(in srgb, var(--green) 30%, transparent); }
.inv-sw[data-status="available_landlord"] { background: var(--blue-soft); border-color: color-mix(in srgb, var(--blue) 35%, transparent); }
.inv-sw[data-status="landlord_mortgage"] {
  background-color: var(--blue-soft); border-color: color-mix(in srgb, var(--blue) 40%, transparent);
  background-image: repeating-linear-gradient(45deg,
    color-mix(in srgb, var(--blue) 45%, transparent) 0 1.5px, transparent 1.5px 5px);
}
.inv-sw[data-status="developer_mortgage"] {
  background-color: var(--accent-soft); border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  background-image: repeating-linear-gradient(45deg,
    color-mix(in srgb, var(--accent) 50%, transparent) 0 1.5px, transparent 1.5px 5px);
}
.inv-sw[data-status="blocked"] { background: var(--red-soft); border-color: color-mix(in srgb, var(--red) 35%, transparent); }
.inv-sw[data-status="sold"] { background: var(--text); border-color: var(--text); }

/* legend */
.inv-legend {
  display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
  margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--border);
}
.inv-leg-item { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--text-muted); }

/* right rail */
.inv-rail {
  flex: none; width: 326px; border-left: 1px solid var(--border);
  background: var(--bg-elev); overflow: auto; padding: 14px;
  display: flex; flex-direction: column; gap: 12px;
}
.inv-card { background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--r-lg); padding: 13px; }
.inv-card-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }

/* tally */
.inv-tl-progress { font-size: 10.5px; color: var(--text-subtle); }
.inv-tally { display: flex; flex-direction: column; gap: 3px; }
.inv-tally-row { display: grid; grid-template-columns: 13px 1fr auto auto; align-items: center; gap: 9px; padding: 3px 0; }
.inv-tally-row .inv-tl-label { color: var(--text); }
.inv-tally-row.head { padding-bottom: 2px; }
.inv-tally-row.head .inv-tl-n, .inv-tally-row.head .inv-tl-sft { text-align: right; }
.inv-tally-row .inv-tl-n { width: 30px; text-align: right; color: var(--text); }
.inv-tally-row .inv-tl-sft { width: 58px; text-align: right; color: var(--text-muted); font-size: 12px; }
.inv-tally-row.total .inv-tl-label { font-weight: 600; }
.inv-tally-row.total .inv-tl-n { font-weight: 600; }

/* detail card */
.inv-chip-unit { font-size: 11px; background: var(--bg-sunk); border: 1px solid var(--border); border-radius: 999px; padding: 2px 9px; }
.inv-dt-pos { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-muted); }
.inv-cat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.inv-cat-opt {
  display: inline-flex; align-items: center; gap: 7px; text-align: left;
  font-family: var(--font-ui); font-size: 11.5px; color: var(--text);
  background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--r-md);
  padding: 7px 9px; cursor: pointer; transition: background .1s, border-color .1s;
}
.inv-cat-opt:hover { background: var(--bg-hover); }
.inv-cat-opt.on { border-color: var(--text); box-shadow: inset 0 0 0 1px var(--text); }
.inv-fld { display: flex; flex-direction: column; gap: 4px; margin-top: 10px; }
.inv-fld-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.inv-fld-row .inv-fld { margin-top: 0; }
.inv-fld-row + .inv-fld { margin-top: 10px; }
.inv-dt-note { font-size: 11px; color: var(--text-subtle); line-height: 1.4; margin: 10px 0 0; }
.inv-empty { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; padding: 22px 16px; }
.inv-empty-h { font-size: 19px; line-height: 1.15; color: var(--text-muted); }
.inv-empty-p { font-size: 12px; color: var(--text-subtle); line-height: 1.5; }

/* ─── Inventory · Flat Allocation dashboard (Project → Phase → Tower drill) ──── */
.inv-dash { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.inv-dash-body { flex: 1; overflow: auto; min-height: 0; }
.inv-dash-scroll { padding: 18px 20px 64px; }

/* breadcrumb */
.inv-crumbs {
  flex: none; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 9px 20px; border-bottom: 1px solid var(--border); background: var(--bg-sunk);
  font-size: 12.5px;
}
.inv-crumb {
  display: inline-flex; align-items: center; gap: 7px;
  background: none; border: none; padding: 3px 7px; border-radius: var(--r-sm);
  font-family: var(--font-ui); font-size: 12.5px; color: var(--text-muted);
  cursor: pointer; transition: background .12s, color .12s;
}
.inv-crumb:hover:not(:disabled) { background: var(--bg-hover); color: var(--text); }
.inv-crumb.current { color: var(--text); font-weight: 600; cursor: default; }
.inv-crumb:disabled { cursor: default; }
.inv-crumb-sep { color: var(--text-subtle); font-size: 11px; }
.inv-crumb-tag { font-size: 10.5px; color: var(--text-subtle); margin-left: auto; }

/* project / phase / tower summary strip */
.inv-sumstrip { margin-bottom: 18px; }
.inv-sumstrip-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 11px; gap: 12px; }
.inv-sumstrip-title { font-size: 13px; font-weight: 600; }
.inv-sumstrip-sub { font-size: 11px; color: var(--text-subtle); }
.inv-kpi-row {
  display: grid; grid-template-columns: repeat(6, 1fr) 0.92fr; gap: 0;
  border: 1px solid var(--border); border-radius: var(--r-lg); overflow: hidden; background: var(--bg-elev);
}
.inv-kpi {
  padding: 12px 14px; border-right: 1px solid var(--border);
  display: flex; flex-direction: column; gap: 7px;
}
.inv-kpi:last-child { border-right: none; }
.inv-kpi.total { background: var(--bg-sunk); }
.inv-kpi-top { display: flex; align-items: center; gap: 7px; }
.inv-kpi-label { font-size: 10.5px; color: var(--text-muted); line-height: 1.15; }
.inv-kpi-num { display: flex; align-items: baseline; gap: 5px; }
.inv-kpi-n { font-size: 27px; line-height: 1; }
.inv-kpi-pct { font-size: 11px; color: var(--text-subtle); }
.inv-kpi-sft { font-size: 10.5px; color: var(--text-subtle); }

/* stacked proportion bar */
.inv-statbar { display: flex; height: 9px; border-radius: 999px; overflow: hidden; background: var(--bg-sunk); width: 100%; }
.inv-statbar.lg { height: 12px; }
.inv-statbar-seg { height: 100%; min-width: 0; }
.inv-statbar-wrap { margin-top: 12px; }
.inv-statbar-seg[data-status="available"] { background: var(--green); }
.inv-statbar-seg[data-status="available_landlord"] { background: var(--blue); }
.inv-statbar-seg[data-status="landlord_mortgage"] { background: var(--blue); }
.inv-statbar-seg[data-status="developer_mortgage"] { background: var(--accent); }
.inv-statbar-seg[data-status="blocked"] { background: var(--red); }
.inv-statbar-seg[data-status="sold"] { background: var(--text); }
.inv-statbar-seg[data-status="landlord_mortgage"],
.inv-statbar-seg[data-status="developer_mortgage"] {
  background-image: repeating-linear-gradient(45deg, rgba(0,0,0,0.28) 0 1.5px, transparent 1.5px 5px);
}

/* section heading */
.inv-sec-head { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 12px; gap: 12px; }
.inv-sec-title { font-size: 13px; font-weight: 600; }
.inv-sec-count { font-size: 11px; color: var(--text-subtle); }

/* phase / tower card grids */
.inv-card-grid { display: grid; gap: 12px; }
.inv-card-grid.phases { grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
.inv-card-grid.towers { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); }

.inv-ncard {
  text-align: left; background: var(--bg-elev); border: 1px solid var(--border);
  border-radius: var(--r-lg); padding: 15px; cursor: pointer; font-family: var(--font-ui);
  transition: border-color .12s, box-shadow .12s, transform .08s; color: var(--text);
  display: flex; flex-direction: column; gap: 12px;
}
.inv-ncard:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.inv-ncard-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.inv-ncard-kicker { font-size: 9.5px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-subtle); margin-bottom: 3px; }
.inv-ncard-name { font-size: 19px; line-height: 1.1; }
.inv-ncard-meta { font-size: 11.5px; color: var(--text-muted); margin-top: 6px; }
.inv-ncard-go { font-size: 11px; color: var(--text-subtle); display: inline-flex; align-items: center; gap: 4px; }
.inv-ncard-soldpct { display: flex; align-items: baseline; gap: 5px; flex: none; }
.inv-ncard-soldpct .n { font-size: 24px; line-height: 1; }
.inv-ncard-soldpct .l { font-size: 10.5px; color: var(--text-subtle); }

/* mini tally inside cards (2-col) */
.inv-minitally { display: grid; grid-template-columns: 1fr 1fr; gap: 3px 16px; }
.inv-mt-row { display: flex; align-items: center; gap: 7px; font-size: 11.5px; min-width: 0; }
.inv-mt-row .mt-l { color: var(--text-muted); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inv-mt-row .mt-n { color: var(--text); flex: none; margin-left: auto; }

/* selectable tower card (add-phase / assign picker) */
.inv-ncard.pick { gap: 11px; }
.inv-ncard.pick.picked { border-color: var(--text); box-shadow: inset 0 0 0 1px var(--text); }
.inv-ncard.pick.disabled { opacity: 0.55; cursor: not-allowed; background: var(--bg-sunk); }
.inv-ncard.pick.disabled:hover { transform: none; box-shadow: none; border-color: var(--border); }
.inv-pick-box {
  flex: none; width: 22px; height: 22px; border-radius: var(--r-sm);
  border: 1px solid var(--border-strong); background: var(--bg);
  display: grid; place-items: center; font-size: 13px; color: var(--bg-elev);
}
.inv-pick-box.on { background: var(--text); border-color: var(--text); }
.inv-pick-lock { font-size: 9px; color: var(--text-subtle); padding: 0 5px; white-space: nowrap; }

/* add tile */
.inv-ncard.addtile {
  align-items: center; justify-content: center; text-align: center; gap: 6px;
  border-style: dashed; background: var(--bg-sunk); min-height: 148px;
}
.inv-ncard.addtile:hover { border-color: var(--accent-strong); background: var(--bg-hover); }
.inv-addtile-plus { font-size: 26px; color: var(--text-muted); line-height: 1; }
.inv-addtile-l { font-size: 15px; font-weight: 600; }
.inv-addtile-s { font-size: 11px; color: var(--text-subtle); max-width: 200px; line-height: 1.4; }

/* split view: grid + detail rail (tower drill reuses the editor) */
.inv-twview { display: flex; gap: 22px; align-items: flex-start; }
.inv-twview-main { flex: 1; min-width: 0; overflow-x: auto; }

/* add-phase screen */
.inv-addph { max-width: 1080px; }
.inv-addph-note { font-size: 12.5px; color: var(--text-muted); line-height: 1.5; margin: 8px 0 0; max-width: 560px; }
.inv-addph-form { padding: 16px; margin-top: 14px; }
.inv-addph-bar {
  flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 11px 20px; border-top: 1px solid var(--border); background: var(--bg-elev);
}
.inv-addph-bar-sum { font-size: 12px; color: var(--text-muted); }
.placeholder\:text-\[var\(--text-muted\)\]::-moz-placeholder {
  color: var(--text-muted);
}
.placeholder\:text-\[var\(--text-muted\)\]::placeholder {
  color: var(--text-muted);
}
.hover\:bg-red-700:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));
}
.hover\:bg-white\/5:hover {
  background-color: rgb(255 255 255 / 0.05);
}
.hover\:opacity-100:hover {
  opacity: 1;
}
.hover\:opacity-90:hover {
  opacity: 0.9;
}
.focus-visible\:outline-none:focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.focus-visible\:ring-1:focus-visible {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
.focus-visible\:ring-\[var\(--accent\)\]:focus-visible {
  --tw-ring-color: var(--accent);
}
.disabled\:pointer-events-none:disabled {
  pointer-events: none;
}
.disabled\:cursor-not-allowed:disabled {
  cursor: not-allowed;
}
.disabled\:opacity-50:disabled {
  opacity: 0.5;
}
.peer:disabled ~ .peer-disabled\:cursor-not-allowed {
  cursor: not-allowed;
}
.peer:disabled ~ .peer-disabled\:opacity-70 {
  opacity: 0.7;
}
@media (min-width: 640px) {

  .sm\:text-left {
    text-align: left;
  }
}

