font-map / build /static /css /632.abaca8bf.chunk.css.map
tfrere's picture
tfrere HF Staff
feat(ui): warm paper backgrounds + about-modal layout rework
032b53a
Raw
History Blame Contribute Delete
117 kB
{"version":3,"file":"static/css/632.abaca8bf.chunk.css","mappings":"AACA,MAEE,0BAA2B,CAC3B,4BAA6B,CAC7B,2BAA4B,CAC5B,yBAA6B,CAC7B,2BAA+B,CAC/B,0BAA8B,CAC9B,8BAA+B,CAC/B,gCAAiC,CACjC,sBAAuB,CACvB,4BAA6B,CAG7B,+BAAgC,CAChC,iCAAkC,CAClC,gCAAiC,CACjC,8BAAkC,CAClC,gCAAoC,CACpC,+BAAmC,CACnC,mCAAoC,CACpC,kCAAsC,CACtC,2BAA4B,CAC5B,iCAAkC,CAGlC,gBAAiB,CACjB,gBAAiB,CACjB,iBAAkB,CAClB,iBAAkB,CAClB,iBAAkB,CAGlB,sBAAuB,CACvB,sBAAuB,CACvB,sBAAuB,CAGvB,+BAAyC,CACzC,+BAAyC,CACzC,gCAA0C,CAG1C,4BAA6B,CAC7B,6BAA8B,CAC9B,2BAA4B,CAG5B,2BAA4B,CAC5B,0BAA2B,CAG3B,qDACF,CAGA,gBACE,GAAK,sBAAyB,CAC9B,GAAO,uBAA2B,CACpC,CC3DA,mBAYE,kCAAmC,CAPnC,cAAe,CASf,YAAa,CACb,kBAAmB,CAZnB,YAAa,CAGb,QAAS,CAFT,eAAgB,CAGhB,SAAU,CANV,iBAAkB,CAYlB,mDAAoD,CALpD,gBAAiB,CACjB,wBAAyB,CACzB,qBAAsB,CACtB,oBAAqB,CATrB,WAcF,CAEA,6BACE,uCACF,CAEA,0BACE,eACF,CAEA,2BACE,cACF,CAGA,SAKE,oCAAqC,CACrC,kDAAmD,CACnD,YAAa,CACb,qBAAsB,CALtB,YAAa,CACb,gBAAiB,CAFjB,eAAgB,CAOhB,eAAgB,CAChB,iBAAkB,CATlB,WAAY,CAUZ,YACF,CAEA,oBACE,yCAA0C,CAC1C,mDACF,CAEA,gBAOE,mDAAoD,CALpD,YAAa,CACb,qBAAsB,CAEtB,aAAc,CADd,qBAAsB,CAEtB,8BAAuB,CAAvB,sBAAuB,CALvB,yBAOF,CAEA,2BACE,oDACF,CAGA,eAGE,WAAY,CAFZ,iBAAkB,CAClB,UAEF,CAGA,yBACE,sCACF,CAGA,WAcE,gDAAiD,CACjD,wCAAyC,CAPzC,+BAAgC,CAGhC,4BAA6B,CAL7B,cAAe,CACf,eAAgB,CAJhB,SAAU,CAOV,qBAAuB,CALvB,QAAS,CAWT,uBAAwB,CAJxB,mBAAoB,CAXpB,iBAAkB,CAgBlB,iBAAkB,CARlB,+BAAyC,CAPzC,QAAS,CAET,WAcF,CAEA,kBAOE,oDAAqD,CACrD,4CAA6C,CAF7C,WAAkB,CALlB,uBAAwB,CAGxB,MAAO,CAFP,iBAAkB,CAClB,KAAM,CAEN,UAIF,CAEA,sBAIE,qDAAsD,CACtD,6CAA8C,CAJ9C,oCAAqC,CACrC,+BAIF,CAEA,6BACE,yDAA0D,CAC1D,iDACF,CAEA,iBAIE,YAAa,CAHb,QAAO,CAIP,qBAAsB,CACtB,YAAa,CAHb,iBAAkB,CADlB,eAKF,CAEA,iCAOE,mDAAoD,CALpD,YAAa,CACb,qBAAsB,CAEtB,aAAc,CADd,qBAAsB,CAItB,+BAAgC,CAFhC,8BAAuB,CAAvB,sBAAuB,CALvB,yBAQF,CAEA,4CACE,oDACF,CAGA,gBAME,kBAAmB,CAHnB,oCAAqC,CADrC,gDAAiD,CAEjD,YAAa,CAGb,aAAc,CAFd,6BAA8B,CAG9B,8BAAuB,CAAvB,sBAAuB,CAPvB,yBAQF,CAEA,2BACE,yCAA0C,CAC1C,iDACF,CAEA,yBAEE,kBAAmB,CAEnB,eAAgB,CAChB,WAAY,CAMZ,qCAAsC,CALtC,iCAAkC,CAGlC,cAAe,CARf,YAAa,CAMb,cAAe,CACf,eAAgB,CALhB,qBAAsB,CAOtB,2CAA4C,CAG5C,oBAAqB,CADrB,uCAEF,CAEA,qCACE,kCAAmC,CACnC,+BAAgC,CAChC,0BACF,CAEA,+CACE,sCACF,CAEA,2DACE,uCAAwC,CACxC,oCACF,CAGA,WAME,oCAAqC,CAFrC,YAAa,CAHb,QAAO,CAIP,qBAAsB,CAFtB,eAAgB,CADhB,iBAKF,CAEA,sBACE,yCACF,CAEA,aAME,kCAAmC,CAKnC,0BAA2B,CAP3B,WAAY,CADZ,aAAc,CADd,WAAY,CAMZ,2BAA4B,CAD5B,iCAAkC,CAGlC,iBAAkB,CAElB,wBAAyB,CAIzB,gBAAiB,CAfjB,UAgBF,CAEA,oBACE,eACF,CAGA,mBACE,YACF,CAQA,8CACE,cACF,CAEA,cACE,UAAiB,CACjB,WAAY,CACZ,gCACF,CAEA,mDAEE,cAAyB,CACzB,gBAA2B,CAC3B,cACF,CAEA,yEAEE,cAA+B,CAC/B,gBAAiC,CACjC,cACF,CAEA,YAEE,kCAAmC,CAEnC,2BAA4B,CAH5B,mBAAoB,CAEpB,iCAEF,CAGA,gBACE,qBAKF,CAGA,iCAPE,kCAAmC,CAEnC,2BAA4B,CAD5B,iCAAkC,CAElC,oBASF,CAQA,kDACE,mBAAwB,CACxB,oBACF,CAGA,UACE,mBAAoB,CACpB,WACF,CAGA,SAME,iCAAkC,CAClC,mIAEY,CAJZ,cAAe,CAKf,eAAgB,CAPhB,QAAS,CAST,kBAAmB,CAXnB,iBAAkB,CAUlB,wBAAyB,CATzB,OAAQ,CAER,8BASF,CAEA,oBACE,sCACF,CAGA,mBAEE,sCAAuC,CADvC,UAAW,CAEX,0BACF,CAEA,8BACE,2CACF,CAGA,iBAIE,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CACtC,2BAA4B,CAN5B,YAAa,CACb,qBAAsB,CACtB,2CAKF,CAEA,4BACE,uCAAwC,CACxC,6CAA8C,CAC9C,8BACF,CAEA,wBAEE,kBAAmB,CAKnB,+BAAgC,CAHhC,cAAe,CAHf,YAAa,CASb,mIAEY,CAPZ,cAAe,CACf,eAAgB,CAHhB,OAAQ,CAWR,mBAAqB,CACrB,gBAAiB,CAFjB,wBAAyB,CALzB,wBAAiB,CAAjB,gBAAiB,CACjB,kBAOF,CAEA,mCACE,oCACF,CAEA,6CAKE,sCAAuC,CADvC,cAAe,CAFf,WAAY,CACZ,QAAS,CAFT,UAKF,CAEA,wDACE,2CACF,CAEA,uBACE,YAAa,CACb,cAAe,CACf,uCAAwC,CACxC,cACF,CAEA,sBAEE,kBAAmB,CADnB,YAAa,CAEb,OACF,CAEA,qBAGE,iBAAkB,CAClB,aAAc,CAFd,WAAY,CAGZ,8BAAgC,CAJhC,UAKF,CAEA,uBAEE,iCAAkC,CADlC,cAAe,CAEf,yBACF,CAEA,kCACE,sCACF,CChaA,aAEE,SAAU,CADV,mBAEF,CAgBA,cAEE,mIAEY,CAHZ,WAIF,CAKA,sBACE,UACF,CAGA,cACE,kCAAmC,CACnC,WAAY,CACZ,qCAAsC,CAKtC,2BAA4B,CAD5B,+BAAgC,CAEhC,mIAEY,CANZ,cAAe,CACf,eAAgB,CAOhB,eAAgB,CADhB,eAAgB,CAEhB,eAAgB,CAVhB,SAAU,CAcV,mBAAoB,CAFpB,gBAAiB,CACjB,wBAEF,CAOA,yBACE,oBACE,mBACF,CACF,CAGA,kBAOE,oCAAqC,CAFrC,0CAA2C,CAC3C,qCAAsC,CAEtC,6BAA8B,CAM9B,cAAe,CAbf,aAAc,CAQd,mBAAoB,CACpB,cAAe,CACf,eAAgB,CAChB,mBAAqB,CATrB,kBAAmB,CACnB,iBAAkB,CAWlB,mBAAoB,CAFpB,wBAAyB,CAXzB,uBAcF,CAEA,0CAEE,yCAA0C,CAD1C,2CAA4C,CAE5C,kCACF,CAGA,uBAEE,gBAAiB,CACjB,2BAAyC,CAFzC,sBAGF,CAGA,oBAEE,+BAAoC,CACpC,wCAAmD,CAFnD,sBAGF,CAEA,+BACE,+BAAoC,CACpC,oCACF,CAKA,gBAGE,yBAA0B,CAF1B,gBAAiB,CAGjB,0BAA0B,CAF1B,iBAGF,CAEA,mBAGE,+BAAgC,CAFhC,cAAe,CACf,eAAgB,CAEhB,iBACF,CAEA,0BAIE,kBAAmB,CAHnB,YAAa,CACb,sBAKF,CAWA,mEAbE,yBAA0B,CAC1B,0BAkBF,CANA,yBAGE,8CAGF,CAGA,iDARE,iDAAmD,CACnD,qBAWF,CAJA,wBAGE,oBACF,CAEA,8BACE,8CACF,CAOA,uFACE,oBACF,CAGA,gBAIE,qCAAsC,CAFtC,WAAY,CADZ,cAAe,CAEf,yBAEF,CAWA,6HACE,eACF,CAGA,uBACE,oCAAqC,CAGrC,mDAAoD,CAFpD,yBAA0B,CAC1B,iBAEF,CAEA,kCACE,yCAA0C,CAC1C,oDACF,CAEA,qBAGE,kBAAmB,CAFnB,YAAa,CAGb,WAAY,CAFZ,sBAGF,CAEA,yBACE,4CACF,CAEA,oCACE,kDACF,CAEA,iBACE,YACF,CAEA,gBACE,kBACF,CAEA,WACE,cAAe,CAEf,iBAEF,CAMA,eAEE,iCAAkC,CADlC,cAAe,CAGf,mBAAqB,CADrB,wBAEF,CAEA,0BACE,sCACF,CAEA,cACE,kBACF,CAEA,WACE,YAAa,CAGb,cAAe,CAFf,6BAA8B,CAC9B,iBAEF,CAEA,YACE,iCAAkC,CAClC,eACF,CAEA,uBACE,sCACF,CAEA,YACE,+BAAgC,CAChC,eACF,CAEA,uBACE,oCACF,CAEA,gBACE,gDAAiD,CACjD,6BACF,CAEA,2BACE,iDACF,CAEA,cAEE,gCAAiC,CADjC,cAAe,CAGf,iBAAkB,CADlB,iBAEF,CAEA,yBACE,qCACF,CAMA,cACE,uBACF,CAIA,yEAEE,0BACF,CAGA,+BACE,2CACF,CAEA,yCACE,gDACF,CAcA,sGACE,mBAAwB,CACxB,oBACF,CCpVA,cAME,sBAAuB,CADvB,YAAa,CAEb,OAAQ,CANR,iBAAkB,CAElB,UAAW,CADX,QAAS,CAET,WAIF,CAGA,kBACE,aACF,CAEA,YAIE,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CAYtC,2BAA4B,CAV5B,+BAAgC,CAGhC,cAAe,CAEf,mIAEY,CANZ,cAAe,CACf,eAAgB,CAOhB,mBAAqB,CAErB,YAAa,CAfb,2CAA4C,CAY5C,wBAAyB,CAJzB,uCAAwC,CAQxC,wBAAiB,CAAjB,gBACF,CAEA,kBACE,oCAAqC,CACrC,0CAA2C,CAC3C,2BAA4B,CAC5B,0BACF,CAEA,mBAEE,2BAA4B,CAD5B,uBAEF,CAEA,kBACE,gCAAiC,CACjC,8BACF,CAEA,uBAEE,uCAAwC,CADxC,6CAA8C,CAG9C,8BAA8C,CAD9C,oCAEF,CAEA,6BACE,wCAAyC,CACzC,+CAAgD,CAChD,8BACF,CAEA,6BACE,qCAAsC,CACtC,8BACF,CAGA,kBACE,aACF,CAEA,gBAIE,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CAatC,2BAA4B,CAX5B,+BAAgC,CAGhC,cAAe,CAEf,mIAEY,CANZ,cAAe,CACf,eAAgB,CAOhB,mBAAqB,CACrB,eAAgB,CAEhB,YAAa,CAhBb,2CAA4C,CAY5C,wBAAyB,CAJzB,uCASF,CAEA,sBACE,oCAAqC,CACrC,0CAA2C,CAC3C,2BACF,CAEA,sBACE,gCAAiC,CACjC,8BACF,CAEA,2BAEE,uCAAwC,CADxC,6CAA8C,CAG9C,8BAA8C,CAD9C,oCAEF,CAEA,iCACE,wCAAyC,CACzC,+CAAgD,CAChD,8BACF,CAEA,iCACE,qCAAsC,CACtC,8BACF,CAGA,gBACE,eACF,CAGA,8BAGE,qCAAsC,CAFtC,cAAe,CACf,2CAEF,CAGA,mBAIE,sBAAuB,CAIvB,gBAAuB,CACvB,WAAY,CACZ,eAAgB,CAChB,eAAgB,CAVhB,YAAa,CACb,qBAAsB,CACtB,qBAAsB,CAEtB,8BAA+B,CAE/B,yBAA0B,CAD1B,UAMF,CAEA,eAGE,gCAAiC,CAFjC,cAAe,CACf,eAAgB,CAGhB,mBAAqB,CACrB,iBAAkB,CAFlB,wBAGF,CAEA,0BACE,qCACF,CAGA,gBAGE,0BAAsB,CAEtB,iCAAkC,CAJlC,YAAa,CAGb,cAAe,CADf,qBAAsB,CADtB,mCAAqC,CAIrC,UACF,CAEA,2BACE,sCACF,CAEA,aASE,kBAAmB,CAHnB,oCAAqC,CACrC,4CAA6C,CAF7C,qCAAsC,CAJtC,cAAe,CAOf,YAAa,CALb,eAAgB,CAQhB,OAAQ,CADR,6BAA8B,CAG9B,eAAgB,CAThB,2CAA4C,CAQ5C,eAAgB,CAVhB,qCAYF,CAEA,mBAEE,mCAAoC,CACpC,0CAA2C,CAE3C,2BAA4B,CAJ5B,+BAAgC,CAGhC,0BAEF,CAEA,wBACE,yCAA0C,CAC1C,6CACF,CAEA,8BAEE,wCAAyC,CACzC,+CAAgD,CAChD,8BAA8C,CAH9C,oCAIF,CAEA,oBAGE,kCAAmC,CACnC,sCAAuC,CACvC,2BAA4B,CAH5B,+BAAgC,CADhC,eAKF,CAEA,+BAEE,uCAAwC,CACxC,2CAA4C,CAC5C,8BAA8C,CAH9C,oCAIF,CAEA,cAKE,mCAAoC,CAEpC,qCAAsC,CAJtC,iCAAkC,CAClC,cAAe,CAHf,eAAgB,CAQhB,cAAe,CAPf,UAAY,CAIZ,eAAgB,CAIhB,iBAAkB,CAFlB,qCAGF,CAEA,yBAEE,wCAAyC,CADzC,sCAAuC,CAEvC,UACF,CAEA,kCAGE,oCAAqC,CADrC,+BAAgC,CAEhC,6BAA8B,CAH9B,SAIF,CAEA,6CAEE,yCAA0C,CAD1C,oCAAqC,CAErC,kCACF,CAGA,YAGE,kBAAmB,CADnB,YAAa,CAEb,eAAgB,CAHhB,iBAIF,CAEA,cAME,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CAStC,2BAA4B,CAP5B,+BAAgC,CAGhC,mIAEY,CAJZ,cAAe,CACf,eAAgB,CAMhB,YAAa,CAbb,2CAA4C,CAC5C,kBAAmB,CAUnB,uCAAwC,CAZxC,UAeF,CAEA,oBACE,gCAAiC,CACjC,8BACF,CAEA,2BACE,gCACF,CAEA,mBACE,yCAA0C,CAC1C,6CAA8C,CAC9C,oCACF,CAEA,yBACE,qCAAsC,CACtC,8BACF,CAEA,gCACE,qCACF,CAGA,iBAME,kBAAmB,CADnB,YAAa,CAEb,qBAAsB,CANtB,iBAAkB,CAClB,uBAAwB,CACxB,OAAQ,CACR,0BAA2B,CAI3B,SACF,CAEA,gBACE,mCAAoC,CAKpC,qCAAsC,CAJtC,iCAAkC,CAClC,cAAe,CACf,eAAgB,CAChB,eAAgB,CAGhB,mBAAoB,CADpB,uCAEF,CAEA,yBACE,oCAAqC,CAErC,4CAA6C,CAD7C,+BAEF,CAEA,qBACE,wCAAyC,CACzC,sCACF,CAEA,8BACE,yCAA0C,CAE1C,iDAAkD,CADlD,oCAEF,CAEA,cASE,kBAAmB,CARnB,eAAgB,CAChB,WAAY,CAIZ,qCAAsC,CAHtC,gCAAiC,CACjC,cAAe,CAIf,YAAa,CAEb,sBAAuB,CALvB,yBAA0B,CAE1B,qCAIF,CAEA,oBAEE,mCAAoC,CADpC,iCAEF,CAEA,+BAEE,wCAAyC,CADzC,sCAEF,CAGA,iBAME,oBAAqB,CACrB,OAAQ,CAJR,UAKF,CAGA,6BATE,WAAY,CAGZ,YAAa,CAJb,iBAAkB,CAGlB,WAmBF,CAZA,YAOE,kBAAmB,CAEnB,gBAAuB,CADvB,QAAS,CAHT,WAAY,CAFZ,SAAU,CAOV,mBAAoB,CACpB,wBAAiB,CAAjB,gBACF,CAEA,iBAEE,kBAAmB,CADnB,YAAa,CAEb,OACF,CAEA,gBAEE,kBAAmB,CAMnB,eAAmB,CAFnB,qBAAyB,CACzB,iBAAkB,CAElB,UAAc,CARd,mBAAoB,CASpB,mBAAoB,CACpB,cAAe,CANf,WAAY,CAFZ,sBAAuB,CASvB,aAAc,CARd,UASF,CAEA,2BACE,eAAmB,CAEnB,iBAAqB,CADrB,UAEF,CAEA,kBACE,UAAc,CACd,cAAe,CACf,mBAAqB,CACrB,gBAAiB,CACjB,kDACF,CAEA,6BACE,UAAc,CACd,kDACF,CAGA,mCAEE,kBAAmB,CAGnB,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CACtC,2BAA4B,CAC5B,+BAAgC,CAEhC,cAAe,CAVf,YAAa,CAYb,aAAc,CADd,mBAAoB,CATpB,sBAAuB,CAOvB,aAAc,CANd,2CAUF,CAEA,8CACE,uCAAwC,CACxC,6CAA8C,CAE9C,8BAA8C,CAD9C,oCAEF,CAEA,uBAEE,kBAAmB,CADnB,mBAAoB,CAEpB,sBAAuB,CACvB,gDACF,CAGA,eACE,YAAa,CACb,qBAAsB,CACtB,qBACF,CAEA,UAIE,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CActC,2BAA4B,CAZ5B,+BAAgC,CAGhC,cAAe,CAEf,mIAEY,CANZ,cAAe,CACf,eAAgB,CAOhB,mBAAqB,CACrB,cAAe,CAGf,YAAa,CAjBb,2CAA4C,CAe5C,iBAAkB,CAHlB,wBAAyB,CAJzB,uCAUF,CAEA,qBAEE,uCAAwC,CADxC,6CAA8C,CAG9C,8BAA8C,CAD9C,oCAEF,CAEA,gBACE,oCAAqC,CACrC,0CAA2C,CAC3C,2BAA4B,CAC5B,0BACF,CAEA,2BACE,wCAAyC,CACzC,+CAAgD,CAChD,8BAA8C,CAC9C,0BACF,CAEA,qBACE,oCAAqC,CAErC,sCAAuC,CACvC,2BAA4B,CAF5B,6BAGF,CAEA,gCACE,yCAA0C,CAE1C,2CAA4C,CAC5C,8BAA8C,CAF9C,kCAGF,CAEA,2BACE,sCAAuC,CAEvC,2BAA4B,CAD5B,6BAA8B,CAE9B,0BACF,CAEA,sCACE,2CAA4C,CAE5C,+BAA+C,CAD/C,kCAAmC,CAEnC,0BACF,CAGA,kBAME,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CACtC,2BAA4B,CAR5B,YAAa,CACb,qBAAsB,CACtB,qBAAsB,CACtB,eAAgB,CAChB,yBAKF,CAEA,6BACE,uCAAwC,CACxC,6CAA8C,CAC9C,8BACF,CAEA,gBAGE,kBAAmB,CAFnB,YAAa,CAGb,cAAe,CACf,eAAgB,CAHhB,6BAA8B,CAK9B,mBAAqB,CADrB,wBAEF,CAGA,iBACE,cAAe,CACf,6BAA8B,CAC9B,UAAY,CACZ,yCACF,CAEA,uBAEE,aAAc,CADd,SAEF,CAEA,yBAGE,yCAA0C,CAD1C,aAAc,CADd,UAGF,CAEA,2BAEE,gCAAiC,CADjC,UAEF,CAEA,iBACE,MAAW,UAAc,CACzB,IAAM,UAAc,CACtB,CAEA,kCACE,aACF,CAEA,oCACE,aACF,CAEA,sCACE,qCACF,CAEA,YACE,+BACF,CAEA,uBACE,oCACF,CAEA,aACE,iCAAkC,CAClC,8CAAwD,CACxD,eACF,CAEA,wBACE,sCACF,CAEA,2BACE,YAAa,CACb,qBAAsB,CACtB,qBACF,CAEA,iBAOE,uBAAwB,CACxB,eAAgB,CAJhB,sCAAuC,CADvC,iBAAkB,CAGlB,cAAe,CAJf,UAAW,CAGX,YAAa,CAIb,uCAAwC,CARxC,UASF,CAEA,uCACE,uBAAwB,CACxB,eAAgB,CAIhB,oCAAqC,CAErC,wCAAyC,CAHzC,iBAAkB,CAIlB,2BAA4B,CAF5B,cAAe,CAHf,WAAY,CAMZ,+CAAwC,CAAxC,uCAAwC,CAPxC,UAQF,CAEA,6CAEE,2BAA4B,CAD5B,oBAEF,CAEA,mCAIE,oCAAqC,CAErC,wCAAyC,CAHzC,iBAAkB,CAIlB,2BAA4B,CAF5B,cAAe,CAHf,WAAY,CAMZ,4CAAwC,CAAxC,uCAAwC,CAPxC,UAQF,CAEA,yCAEE,2BAA4B,CAD5B,oBAEF,CAEA,sBACE,2CACF,CAEA,4CACE,yCAA0C,CAC1C,yCAA0C,CAC1C,8BACF,CAEA,wCACE,yCAA0C,CAC1C,yCAA0C,CAC1C,8BACF,CAEA,eAIE,iCAAkC,CAHlC,YAAa,CAEb,cAAe,CAIf,eAAgB,CALhB,6BAA8B,CAI9B,mBAAqB,CADrB,wBAGF,CAEA,0BACE,sCACF,CAEA,cACE,cACF,CAGA,cAME,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CACtC,2BAA4B,CAR5B,YAAa,CACb,qBAAsB,CACtB,qBAAsB,CACtB,eAAgB,CAChB,yBAKF,CAEA,yBACE,uCAAwC,CACxC,6CAA8C,CAC9C,8BACF,CAEA,YAGE,kBAAmB,CAFnB,YAAa,CAGb,cAAe,CACf,eAAgB,CAHhB,6BAA8B,CAK9B,mBAAqB,CADrB,wBAEF,CAEA,uBACE,YAAa,CACb,qBAAsB,CACtB,qBACF,CAEA,aAOE,uBAAwB,CACxB,eAAgB,CAJhB,sCAAuC,CADvC,iBAAkB,CAGlB,cAAe,CAJf,UAAW,CAGX,YAAa,CAIb,uCAAwC,CARxC,UASF,CAEA,mCACE,uBAAwB,CACxB,eAAgB,CAIhB,oCAAqC,CAErC,wCAAyC,CAHzC,iBAAkB,CAIlB,2BAA4B,CAF5B,cAAe,CAHf,WAAY,CAMZ,+CAAwC,CAAxC,uCAAwC,CAPxC,UAQF,CAEA,yCAEE,2BAA4B,CAD5B,oBAEF,CAEA,+BAIE,oCAAqC,CAErC,wCAAyC,CAHzC,iBAAkB,CAIlB,2BAA4B,CAF5B,cAAe,CAHf,WAAY,CAMZ,4CAAwC,CAAxC,uCAAwC,CAPxC,UAQF,CAEA,qCAEE,2BAA4B,CAD5B,oBAEF,CAEA,kBACE,2CACF,CAEA,wCACE,yCAA0C,CAC1C,yCAA0C,CAC1C,8BACF,CAEA,oCACE,yCAA0C,CAC1C,yCAA0C,CAC1C,8BACF,CClzBA,cAEE,YAAa,CADb,QAAO,CAEP,qBACF,CAGA,0BAGE,kBAAmB,CAInB,iCAAkC,CANlC,YAAa,CACb,qBAAsB,CAEtB,sBAAuB,CAKvB,gBAAiB,CAHjB,yBAA0B,CAE1B,iBAAkB,CAHlB,iBAKF,CAEA,qCACE,sCACF,CAGA,kBAIE,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAHvB,+BAAgC,CAsBhC,UAAY,CAFZ,iBAAkB,CAGlB,uBAAyB,CAFzB,SAfF,CAoBA,sBACE,gCAAiC,CACjC,4CACF,CAEA,iCACE,qCAAsC,CACtC,kDACF,CAIA,qBAGE,kBAAmB,CAFnB,YAAa,CACb,qBAAsB,CAEtB,qBAAsB,CACtB,eACF,CAEA,wBAIE,+BAAgC,CAGhC,mIAEY,CARZ,cAAe,CACf,eAAgB,CAGhB,qBAAuB,CACvB,eAAgB,CAHhB,QAOF,CAEA,mCACE,oCACF,CAEA,uBAIE,iCAAkC,CAHlC,cAAe,CAIf,eAAgB,CAHhB,eAAgB,CAChB,QAGF,CAEA,kCACE,sCACF,CAGA,qBACE,YAAa,CACb,wBAAyB,CACzB,+BACF,CAEA,WASE,kBAAmB,CALnB,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CAEtC,iCAAkC,CAClC,cAAe,CAEf,YAAa,CAEb,sBAAuB,CATvB,yBAA0B,CAM1B,uCAIF,CAEA,iBACE,mCAAoC,CAEpC,0CAA2C,CAD3C,+BAEF,CAEA,sBAEE,uCAAwC,CADxC,6CAA8C,CAE9C,sCACF,CAEA,4BACE,wCAAyC,CAEzC,+CAAgD,CADhD,oCAEF,CAEA,sBAEE,YAAa,CADb,QAAO,CAEP,qBAAsB,CACtB,qBAAsB,CACtB,+DACF,CAEA,cAIE,kBAAmB,CAEnB,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CACtC,2BAA4B,CAR5B,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CAEvB,yBAKF,CAEA,yBACE,uCAAwC,CACxC,6CAA8C,CAC9C,8BACF,CAEA,oBAEE,kBAAmB,CAInB,gBAAuB,CAEvB,WAAY,CADZ,eAAgB,CANhB,YAAa,CAIb,YAAa,CAFb,sBAAuB,CAMvB,iBAAkB,CAClB,uBAAyB,CANzB,WAOF,CAEA,0BACE,0BACF,CAEA,+BACE,gBAAuB,CACvB,WACF,CAEA,qCACE,0BACF,CAEA,wBACE,8CAAmD,CACnD,uBACF,CAEA,mCACE,oDACF,CAGA,uCACE,mBAAwB,CACxB,oBACF,CAGA,uBAGE,kBAAmB,CAGnB,eAAgB,CALhB,YAAa,CACb,sBAAuB,CAMvB,cAAe,CAJf,iBAAkB,CAKlB,iBACF,CAEA,yDAPE,gBAAuB,CAEvB,WAQF,CAEA,WACE,iBACF,CAEA,sBAIE,+BAAgC,CAHhC,cAAe,CACf,eAAgB,CAGhB,eAAgB,CAFhB,+BAGF,CAEA,iCACE,oCACF,CAEA,0BAEE,iCAAkC,CADlC,cAAe,CAGf,eAAgB,CADhB,mBAEF,CAEA,qCACE,sCACF,CAEA,mBAGE,gCAAiC,CAFjC,cAAe,CACf,eAAgB,CAEhB,mBAAqB,CACrB,yBACF,CAEA,8BACE,qCACF,CAEA,sBACE,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CAEtC,2BAA4B,CAD5B,yBAEF,CAEA,iCACE,uCAAwC,CACxC,6CAA8C,CAC9C,8BACF,CAEA,yBAIE,+BAAgC,CAHhC,cAAe,CACf,eAAgB,CAChB,+BAEF,CAEA,oCACE,oCACF,CAEA,cACE,YAAa,CACb,qBAAsB,CACtB,qBACF,CAEA,aAGE,kBAAmB,CAEnB,mDAAoD,CAJpD,YAAa,CACb,6BAA8B,CAE9B,2BAEF,CAEA,wBACE,kBACF,CAEA,wBACE,oDACF,CAEA,cAEE,iCAAkC,CADlC,cAAe,CAEf,eAAgB,CAChB,mBACF,CAEA,yBACE,sCACF,CAEA,cAEE,+BAAgC,CAEhC,8CAAwD,CAHxD,cAAe,CAEf,eAEF,CAEA,yBACE,oCACF,CAEA,cACE,YAAa,CACb,qBAAsB,CACtB,qBACF,CAEA,cAKE,gBAAuB,CACvB,WAAY,CACZ,eAAgB,CAJhB,+BAAgC,CAFhC,cAAe,CAOf,eAAgB,CAChB,oBAAsB,CAPtB,eAAgB,CAShB,QAAS,CACT,eAAgB,CARhB,SAAU,CAMV,iBAGF,CAEA,yBAEE,gBAAuB,CACvB,WAAY,CAFZ,oCAGF,CAEA,cAEE,qBAEF,CAEA,0BALE,YAAa,CAEb,qBAoBF,CAjBA,YAEE,kBAAmB,CAMnB,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CAEtC,+BAAgC,CAIhC,cAAe,CAHf,cAAe,CACf,eAAgB,CARhB,sBAAuB,CAavB,mBAAqB,CAXrB,2CAA4C,CAO5C,oBAAqB,CAGrB,wBAAyB,CADzB,uCAGF,CAEA,kBACE,oCAAqC,CACrC,0CAA2C,CAE3C,2BAA4B,CAD5B,0BAEF,CAEA,uBAEE,uCAAwC,CADxC,6CAA8C,CAE9C,oCACF,CAEA,6BACE,wCAAyC,CACzC,+CAAgD,CAChD,8BACF,CAEA,oBACE,8BAA+B,CAE/B,gCAAiC,CADjC,UAEF,CAEA,0BACE,oCAAqC,CACrC,sCAAuC,CACvC,8BACF,CAEA,+BACE,mCAAoC,CACpC,qCACF,CAEA,qCACE,yCAA0C,CAC1C,2CAA4C,CAC5C,8BACF,CAEA,kBACE,kCAAmC,CAEnC,4CAA6C,CAD7C,+BAAgC,CAEhC,4BACF,CAEA,wBACE,oCAAqC,CAErC,sCAAuC,CADvC,+BAAgC,CAEhC,0BACF,CAEA,6BACE,uCAAwC,CAExC,6CAA8C,CAD9C,oCAEF,CAEA,mCACE,yCAA0C,CAE1C,2CAA4C,CAD5C,oCAEF,CAGA,8CAEE,8CAAgD,CAEhD,iDAAmD,CAOnD,qDAA8D,CAL9D,2EAA6E,CAH7E,yCAA2C,CAF3C,sBAAuB,CAIvB,UAOF,CAEA,oDACE,6CAA+C,CAE/C,iDAAmD,CAEnD,yBAA2B,CAH3B,yCAA2C,CAE3C,wBAEF,CAEA,yDACE,mDAAqD,CAMrD,sDAA+D,CAL/D,8CAMF,CAEA,+DACE,kDAAoD,CAEpD,sDAAwD,CAExD,yBAA2B,CAH3B,8CAAgD,CAEhD,wBAEF,CAEA,uBACE,eACF,CAGA,kBACE,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CACtC,2BAA4B,CAE5B,+BAAgC,CADhC,eAAgB,CAEhB,iBAAkB,CAClB,uBACF,CAEA,6BACE,uCAAwC,CACxC,6CAA8C,CAC9C,8BACF,CAGA,qBAEE,kBAAmB,CAGnB,oCAAqC,CACrC,mDAAoD,CALpD,YAAa,CAEb,qBAAsB,CACtB,yBAGF,CAEA,gCACE,yCAA0C,CAC1C,oDACF,CAGA,qBAGE,kBAAmB,CAMnB,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CANtC,YAAa,CADb,aAAc,CAKd,YAAa,CAFb,sBAAuB,CACvB,WAKF,CAEA,gCACE,uCAAwC,CACxC,iDACF,CAEA,yBACE,4CACF,CAEA,oCACE,kDACF,CAGA,mBAEE,YAAa,CADb,QAAO,CAEP,qBAAsB,CACtB,OACF,CAEA,mBAIE,+BAAgC,CAEhC,mIAEY,CAPZ,cAAe,CACf,eAAgB,CAGhB,eAAgB,CAFhB,QAMF,CAEA,8BACE,oCACF,CAEA,uBAEE,iCAAkC,CADlC,cAAe,CAGf,eAAgB,CAChB,oBAAsB,CAFtB,QAAS,CAGT,wBACF,CAEA,kCACE,sCACF,CAGA,eACE,YAAa,CACb,qBAAsB,CACtB,OAAQ,CACR,cACF,CAEA,2BAEE,gCAAiC,CADjC,cAAe,CAEf,eAAgB,CAChB,oBAAsB,CACtB,UACF,CAEA,iDACE,qCACF,CAGA,uBAGE,kBAAmB,CAEnB,kCAAmC,CAHnC,YAAa,CAKb,YAAa,CAHb,sBAAuB,CAHvB,+DAAgE,CAKhE,iBAEF,CAEA,kCACE,uCACF,CAGA,qBAEE,kCAAmC,CACnC,YAAa,CACb,sBAAuB,CAHvB,SAIF,CAEA,gCACE,uCACF,CAGA,mBAIE,+BAAgC,CAChC,mIAEY,CALZ,cAAe,CACf,eAAgB,CAFhB,8BAOF,CAEA,8BACE,oCACF,CAGA,oBAGE,2FAA+F,CAD/F,mDAAoD,CADpD,sBAA4B,CAG5B,iBACF,CAEA,+BACE,qGAAyG,CACzG,oDACF,CAEA,+BAIE,+BAAgC,CAGhC,mIAEY,CAPZ,cAAe,CADf,eAAgB,CAIhB,qBAAuB,CACvB,eAAgB,CAHhB,cAOF,CAEA,0CACE,oCACF,CAEA,mCAEE,iCAAkC,CADlC,cAAe,CAGf,eAAgB,CAChB,mBAAqB,CAFrB,QAAS,CAGT,UACF,CAEA,8CACE,sCACF,CAGA,qBAIE,kBAAmB,CAEnB,kCAAmC,CAJnC,YAAa,CACb,qBAAsB,CAEtB,QAAS,CAJT,sBAA4B,CAM5B,iBACF,CAEA,gCACE,uCACF,CAIA,eACE,4BACF,CAEA,qBAIE,+BAAgC,CAChC,mIAEY,CALZ,cAAe,CACf,eAAgB,CAFhB,8BAOF,CAEA,gCACE,oCACF,CAEA,oBACE,YAAa,CACb,qBAAsB,CACtB,qBACF,CAEA,mBAEE,kBAAmB,CAMnB,kCAAmC,CAFnC,4CAA6C,CAC7C,qCAAsC,CAGtC,cAAe,CATf,YAAa,CAGb,qBAAsB,CADtB,WAAY,CAEZ,yBAA0B,CAI1B,uCAEF,CAEA,yBACE,oCAAqC,CACrC,0CAA2C,CAE3C,2BAA4B,CAD5B,0BAEF,CAEA,8BAEE,uCAAwC,CADxC,6CAEF,CAEA,oCACE,wCAAyC,CACzC,+CAAgD,CAChD,8BACF,CAIA,sBAOE,kBAAmB,CAFnB,mCAAoC,CAFpC,qCAAsC,CAGtC,YAAa,CAGb,aAAc,CAPd,WAAY,CAMZ,sBAAuB,CAJvB,eAAgB,CAHhB,UASF,CAEA,iCACE,wCACF,CAEA,aAEE,WAAY,CACZ,gBAAiB,CAFjB,UAGF,CAwBA,oKACE,mBAAwB,CACxB,oBACF,CAEA,eAGE,iCAAkC,CAFlC,cAAe,CACf,eAEF,CAEA,0BACE,sCACF,CAEA,oBAGE,kBAAmB,CADnB,YAAa,CADb,aAAc,CAKd,WAAY,CAFZ,sBAAuB,CAIvB,iBAAkB,CADlB,iBAAkB,CAFlB,UAIF,CAEA,sCAEE,WAAY,CADZ,UAEF,CAEA,mBAEE,YAAa,CADb,aAAc,CAEd,qBAAsB,CACtB,OAAQ,CACR,eACF,CAEA,uBAGE,kBAAmB,CADnB,YAAa,CADb,QAAO,CAGP,wBAAyB,CAGzB,eAAgB,CAFhB,WAAY,CACZ,iBAEF,CAEA,WAGE,+BAAgC,CAFhC,cAAe,CACf,eAAgB,CAGhB,eAAgB,CAChB,sBAAuB,CAFvB,kBAGF,CAEA,sBACE,oCACF,CAEA,aAEE,iCAAkC,CADlC,cAAe,CAGf,eAAgB,CAChB,sBAAuB,CAFvB,kBAGF,CAEA,wBACE,sCACF,CAEA,kBAIE,oBAAkC,CAElC,kBAAmB,CAHnB,yBAA0B,CAI1B,aAAc,CANd,cAAe,CACf,eAAgB,CAGhB,eAGF,CAEA,6BAEE,oBAAmC,CADnC,8BAEF,CAEA,YAEE,iCAAkC,CADlC,cAAe,CAEf,iBAAkB,CAElB,yBAA0B,CAD1B,iBAEF,CAEA,uBACE,sCACF,CC/4BA,0BACE,SAEE,eAAgB,CADhB,WAEF,CACF,CAEA,yBACE,mBACE,qBACF,CAGA,SAUE,mDAAoD,CADpD,iBAAkB,CAFlB,WAAY,CAJZ,MAAO,CAKP,eAAgB,CAFhB,WAAY,CAKZ,gBAAiB,CAVjB,cAAe,CAGf,OAAQ,CAFR,KAAM,CAGN,UAAW,CAOX,YACF,CAEA,oBACE,oDACF,CAEA,iBACE,gBAAiB,CACjB,SACF,CAEA,gBACE,YACF,CAGA,6BAEE,sBACF,CAGA,cAOE,kCAAmC,CAHnC,QAAS,CAET,YAAa,CAGb,eAAgB,CAGhB,gBAAiB,CAXjB,cAAe,CAEf,OAAQ,CADR,KAAM,CAQN,0BAA2B,CAC3B,8BAAgC,CANhC,UAAW,CAGX,YAKF,CAEA,yBACE,uCACF,CAEA,2CACE,uBACF,CAGA,mBAEE,kBAAmB,CAOnB,gBAAuB,CADvB,WAAY,CAEZ,+BAAgC,CAGhC,cAAe,CAZf,mBAAoB,CAUpB,mBAAoB,CACpB,cAAe,CATf,OAAQ,CAGR,SAAU,CACV,wBAAyB,CAHzB,iBAAkB,CAClB,QAAS,CAST,SACF,CAEA,8BACE,oCACF,CAGA,WACE,YAAa,CACb,UACF,CAEA,iDAKE,kBAAmB,CACnB,kBAAmB,CAHnB,kBAAmB,CACnB,6BAA8B,CAG9B,eAAgB,CALhB,yBAMF,CAEA,WAKE,gDAAiD,CACjD,wCAAyC,CALzC,cAAe,CAEf,SAAU,CADV,QAKF,CAEA,sBACE,qDAAsD,CACtD,6CACF,CAEA,kBACE,oDAAqD,CACrD,4CACF,CAEA,6BACE,yDAA0D,CAC1D,iDACF,CAEA,iBAEE,qBAAsB,CADtB,yBAEF,CAEA,mBACE,0BACF,CAEA,cAGE,OAAQ,CADR,UAAW,CADX,QAGF,CAEA,iBACE,WAAY,CAEZ,OAAQ,CADR,UAEF,CAEA,gBACE,cACF,CAEA,YAEE,cAAe,CADf,eAEF,CAEA,gBAEE,cAAe,CACf,eAAgB,CAFhB,eAGF,CAEA,UAEE,aAAc,CADd,eAEF,CAEA,sBACE,yBACF,CAEA,cACE,yBACF,CAEA,oBAEE,WAAY,CADZ,UAEF,CAEA,sBACE,cACF,CACF,CAEA,yBACE,gBAEE,qBAAsB,CACtB,qBAAsB,CAFtB,yBAGF,CAEA,WAKE,+CAAgD,CAChD,uCAAwC,CALxC,cAAe,CAEf,SAAU,CADV,QAKF,CAEA,sBACE,oDAAqD,CACrD,4CACF,CAEA,kBACE,mDAAoD,CACpD,2CACF,CAEA,6BACE,wDAAyD,CACzD,gDACF,CAEA,iBAEE,qBAAsB,CADtB,yBAEF,CAEA,mBACE,0BACF,CAEA,cAGE,OAAQ,CADR,SAAU,CADV,OAGF,CAEA,iBACE,UAAW,CAEX,OAAQ,CADR,SAEF,CAEA,gBACE,cACF,CAEA,YAEE,cAAe,CADf,eAEF,CAEA,gBAEE,aAAc,CACd,eAAgB,CAFhB,eAGF,CAEA,UAEE,aAAc,CADd,eAEF,CAEA,sBACE,yBACF,CAEA,cACE,yBACF,CAEA,oBAEE,WAAY,CADZ,UAEF,CAEA,sBACE,cACF,CAEA,cACE,cACF,CACF,CAGA,yBACE,gCAEE,eACF,CAEA,4BAEE,cACF,CAEA,eACE,aACF,CACF,CAEA,yBACE,gCAEE,eACF,CAEA,4BAEE,aACF,CAEA,eACE,aACF,CACF,CC9TA,iBAQE,kBAAmB,CAFnB,kDAAsD,CADtD,QAAS,CAET,YAAa,CAEb,sBAAuB,CANvB,MAAO,CAQP,SAAU,CAVV,cAAe,CAGf,OAAQ,CAFR,KAAM,CAQN,aAEF,CAEA,0BACE,UAAc,CACd,uEAAgF,CAChF,cAAe,CACf,eAAgB,CAOhB,SAAU,CALV,eAAgB,CAChB,QAAS,CACT,SAAU,CACV,eAAgB,CAJhB,iBAAkB,CAKlB,QAAS,CAET,cACF,CAEA,kCAME,kCAAoC,CAFpC,sBAA0B,CAC1B,iBAAkB,CADlB,qBAA0B,CAF1B,WAAY,CADZ,UAMF,CAEA,qCACE,UACF,CAIA,aAWE,wDAA+D,CAR/D,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CAKtC,2BAA4B,CAT5B,YAAa,CACb,qBAAsB,CAMtB,eAAgB,CAFhB,eAAgB,CAGhB,eAAgB,CAFhB,SAKF,CAEA,wBACE,uCAAwC,CACxC,6CACF,CAEA,6BACE,GACE,SAAU,CACV,qCACF,CACA,GACE,SAAU,CACV,gCACF,CACF,CAEA,qBAIE,YAAa,CADb,eAAgB,CAFhB,yBAA0B,CAC1B,iBAGF,CAEA,aAIE,+BAAgC,CAHhC,4BAA6B,CAC7B,cAAe,CACf,eAAgB,CAGhB,qBAAuB,CACvB,eAAgB,CAFhB,8BAGF,CAEA,wBACE,oCACF,CAEA,gBAIE,iCAAkC,CAHlC,uEAAgF,CAChF,cAAe,CACf,eAAgB,CAGhB,eAAgB,CADhB,8BAEF,CAEA,2BACE,sCACF,CAEA,mBAIE,gCAAiC,CAHjC,uEAAgF,CAChF,cAAe,CACf,eAAgB,CAGhB,eAAgB,CADhB,8BAEF,CAEA,8BACE,qCACF,CASA,sEAGE,yBAA2B,CAC3B,qBAAuB,CAHvB,iCAAmC,CACnC,eAGF,CAEA,gBAEE,qBAAsB,CACtB,qBAAsB,CACtB,+BAEF,CAEA,+BAHE,kBAAmB,CAJnB,YAeF,CARA,eAOE,iCAAkC,CAHlC,uEAAgF,CAChF,cAAe,CACf,eAAgB,CAHhB,qBAKF,CAEA,0BACE,sCACF,CAEA,oBAEE,kBAAmB,CAKnB,mCAAoC,CADpC,qCAAsC,CAEtC,gCAAiC,CAPjC,YAAa,CAQb,aAAc,CAJd,WAAY,CAFZ,sBAAuB,CACvB,UAMF,CAEA,+BACE,wCAAyC,CACzC,qCACF,CAEA,wBAEE,WAAY,CADZ,UAEF,CAEA,oBAEE,kBAAmB,CAOnB,eAAmB,CAFnB,qBAAyB,CACzB,qCAAsC,CAEtC,UAAc,CAId,cAAe,CAbf,YAAa,CAUb,cAAe,CACf,eAAgB,CARhB,qBAAsB,CADtB,sBAAuB,CAcvB,mBAAqB,CAXrB,2CAA4C,CAO5C,oBAAqB,CAGrB,wBAAyB,CADzB,uCAAwC,CAVxC,UAaF,CAEA,0BACE,eAAmB,CACnB,iBAAqB,CAErB,2BAA4B,CAD5B,0BAEF,CAEA,+BACE,eAAmB,CAEnB,iBAAqB,CADrB,UAEF,CAEA,qCACE,kBAAmB,CACnB,oBAAqB,CACrB,8BACF,CAIA,yBACE,aAEE,wBAAyB,CADzB,SAEF,CAEA,qBACE,yBACF,CAEA,aACE,cACF,CAEA,gBACE,cACF,CAEA,mBACE,cACF,CAEA,gBACE,qBACF,CAEA,eACE,cACF,CAEF,CCzPA,aAWE,mDAA0D,CAR1D,kCAAmC,CACnC,4CAA6C,CAC7C,qCAAsC,CAKtC,2BAA4B,CAT5B,YAAa,CACb,qBAAsB,CAMtB,eAAgB,CAFhB,eAAgB,CAGhB,eAAgB,CAFhB,SAKF,CAEA,wBACE,uCAAwC,CACxC,6CAA8C,CAC9C,2BACF,CAEA,qBACE,YAAa,CAEb,QAAO,CADP,qBAAsB,CAGtB,YACF,CAGA,oBAGE,kBAAmB,CAGnB,2FAA+F,CAD/F,mDAAoD,CAJpD,YAAa,CACb,6BAA8B,CAE9B,sBAGF,CAEA,+BACE,qGAAyG,CACzG,oDACF,CAEA,aAGE,+BAAgC,CAIhC,mIAEY,CARZ,cAAe,CACf,eAAgB,CAGhB,qBAAuB,CACvB,eAAgB,CAFhB,QAMF,CAEA,wBACE,oCACF,CAEA,oBASE,kBAAmB,CARnB,eAAgB,CAChB,WAAY,CAIZ,qCAAsC,CAHtC,iCAAkC,CAClC,cAAe,CAIf,YAAa,CAEb,sBAAuB,CALvB,WAAY,CAEZ,uCAIF,CAEA,0BACE,oCAAqC,CACrC,+BACF,CAEA,+BACE,sCACF,CAEA,qCACE,yCAA0C,CAC1C,oCACF,CAGA,kBAGE,QAAO,CACP,YAAa,CAFb,eAAgB,CADhB,iBAIF,CAGA,YACE,kBAAmB,CACnB,iBACF,CAEA,mBAGE,+BAAgC,CAFhC,cAAe,CACf,eAAgB,CAEhB,eAAkB,CAClB,eACF,CAEA,8BACE,oCACF,CAEA,eACE,kBACF,CAEA,0BACE,eACF,CAEA,qBAKE,gCAAiC,CAEjC,mIAEY,CARZ,cAAe,CACf,eAAgB,CAEhB,oBAAsB,CAEtB,QAAS,CAHT,wBAOF,CAEA,gCACE,qCACF,CAGA,sGAEE,eACF,CAEA,oBAGE,iCAAkC,CAFlC,cAAe,CACf,eAAgB,CAEhB,QACF,CAEA,+BACE,sCACF,CAGA,oBAIE,UAAM,CACN,iBAAkB,CAJlB,YAAa,CAGb,KAAM,CADN,+BAAgC,CAGhC,eACF,CAEA,cACE,YAAa,CACb,qBAAsB,CACtB,QACF,CAEA,0BACE,kBACF,CAEA,yBAEE,iDAAkD,CADlD,iBAEF,CAEA,oCACE,kDACF,CAGA,eAEE,kBAAmB,CAKnB,oCAAqC,CAErC,4CAA6C,CAD7C,qCAAsC,CAPtC,YAAa,CASb,cAAe,CANf,QAAS,CADT,sBAAuB,CAEvB,aAAc,CACd,YAKF,CAEA,0BACE,yCAA0C,CAC1C,6CACF,CAGA,gBACE,YAAa,CACb,qBAAsB,CACtB,KACF,CAEA,WAEE,kBAAmB,CADnB,YAAa,CAEb,QAAS,CACT,cACF,CAEA,uBACE,eACF,CAEA,sBACE,gDACF,CAEA,iCACE,iDACF,CAEA,cACE,QACF,CAEA,aAEE,kBAAmB,CAGnB,+BAAgC,CAJhC,YAAa,CAEb,OAAQ,CACR,iBAEF,CAEA,wBACE,oCACF,CAEA,aAEE,kBAAmB,CAInB,kCAAmC,CAEnC,4CAA6C,CAC7C,iBAAkB,CAFlB,+BAAgC,CANhC,YAAa,CASb,cAAe,CACf,eAAgB,CANhB,WAAY,CAFZ,sBAAuB,CACvB,UAQF,CAEA,wBACE,uCAAwC,CAExC,6CAA8C,CAD9C,oCAEF,CAEA,kBAGE,iCAAkC,CAFlC,cAAe,CACf,eAAgB,CAEhB,QACF,CAEA,6BACE,sCACF,CAEA,cAME,kBAAmB,CAFnB,YAAa,CACb,qBAAsB,CAJtB,aAAc,CAMd,sBAAuB,CAJvB,WAKF,CAGA,aAIE,kCAAmC,CAInC,4CAA6C,CAD7C,iBAAkB,CAFlB,+BAAgC,CAJhC,iCAAqC,CACrC,aAAc,CACd,aAAc,CAGd,WAGF,CAEA,wBACE,yCAA0C,CAC1C,6CAA8C,CAC9C,oCACF,CAEA,UAGE,eAAgB,CAChB,cAAkB,CAFlB,SAGF,CAEA,YACE,UACF,CAGA,gBAIE,kCAAmC,CAGnC,4CAA6C,CAD7C,iBAAkB,CAIlB,+BAAgC,CAThC,iCAAqC,CACrC,aAAc,CASd,eAAgB,CAChB,oBAAsB,CATtB,eAAgB,CAKhB,eAAgB,CAHhB,WAAY,CAIZ,oBAIF,CAEA,2BACE,uCAAwC,CACxC,6CAA8C,CAC9C,oCACF,CAGA,aAME,kCAAmC,CAGnC,4CAA6C,CAD7C,iBAAkB,CAPlB,YAAa,CACb,qBAAsB,CAEtB,iCAAqC,CACrC,aAAc,CAFd,OAAQ,CAIR,WAGF,CAEA,wBACE,uCAAwC,CACxC,6CACF,CAEA,OACE,yBAA0B,CAC1B,eACF,CAEA,kBACE,8BACF,CAGA,mBAGE,kBAAmB,CAEnB,kCAAmC,CAEnC,4CAA6C,CAD7C,iBAAkB,CALlB,YAAa,CACb,OAAQ,CAER,WAIF,CAEA,8BACE,uCAAwC,CACxC,6CACF,CAEA,aAGE,+BAAgC,CAFhC,cAAe,CACf,eAAgB,CAEhB,aACF,CAEA,wBACE,oCACF,CAGA,gBAGE,+BAAgC,CAFhC,cAAe,CACf,eAAgB,CAEhB,iBACF,CAEA,2BACE,oCACF,CAGA,WAEE,qBAAsB,CAMtB,8CAA+C,CAC/C,qCAAsC,CAJtC,+BAAgC,CAJhC,oBAAqB,CAErB,cAAe,CACf,eAAgB,CAGhB,gBAAiB,CADjB,oBAAqB,CAIrB,uCACF,CAEA,iBACE,sCAAuC,CACvC,2BACF,CAEA,sBAEE,+CAAgD,CADhD,oCAEF,CAEA,4BACE,2CACF,CAGA,aACE,+BAAgC,CAEhC,cAAe,CACf,eAAgB,CAFhB,yBAA0B,CAG1B,yCACF,CAEA,mBACE,iCACF,CAEA,wBACE,oCACF,CAEA,8BACE,sCACF,CAIA,kBAGE,kBAAmB,CAGnB,kCAAmC,CAEnC,4CAA6C,CAD7C,iBAAkB,CANlB,YAAa,CACb,qBAAsB,CAEtB,OAAQ,CACR,gBAIF,CAEA,6BACE,uCAAwC,CACxC,6CACF,CAEA,YAGE,+BAAgC,CAFhC,YAAa,CACb,OAEF,CAEA,uBACE,oCACF,CAEA,kBAGE,iCAAkC,CAFlC,iCAAqC,CACrC,aAAc,CAEd,UACF,CAEA,6BACE,sCACF,CAGA,eAEE,kBAAmB,CAInB,kCAAmC,CAGnC,4CAA6C,CAD7C,iBAAkB,CAPlB,YAAa,CAGb,iCAAqC,CACrC,cAAe,CAFf,OAAQ,CAIR,eAGF,CAEA,0BACE,uCAAwC,CACxC,6CACF,CAEA,eACE,+BAAgC,CAChC,eAAgB,CAChB,kBACF,CAEA,0BACE,oCACF,CAEA,gBACE,iCAAkC,CAClC,UACF,CAEA,2BACE,sCACF,CAGA,wBACE,GACE,SAAU,CACV,oCACF,CACA,GACE,SAAU,CACV,gCACF,CACF,CAGA,gCACE,+BAAgC,CAEhC,eAAgB,CADhB,yBAA0B,CAE1B,yCACF,CAEA,sCACE,iCACF,CAEA,2CACE,oCACF,CAEA,iDACE,sCACF,CAGA,iBAGE,eAAgB,CAFhB,kBAAqB,CACrB,cAEF,CAEA,oBAGE,iCAAkC,CAFlC,cAAe,CACf,eAAgB,CAEhB,iBAAkB,CAClB,iBAAkB,CAClB,iBACF,CAEA,2BAIE,yBAA0B,CAH1B,WAAY,CAIZ,eAAiB,CAFjB,MAAO,CADP,iBAIF,CAEA,+BACE,eACF,CAEA,+BACE,sCACF,CAEA,sCACE,8BACF,CAEA,wBACE,+BAAgC,CAChC,eACF,CAEA,mCACE,oCACF,CAGA,mBAEE,kBAAmB,CAKnB,oCAAqC,CAErC,4CAA6C,CAD7C,qCAAsC,CAPtC,YAAa,CASb,cAAe,CANf,QAAS,CADT,sBAAuB,CAEvB,aAAc,CACd,YAKF,CAEA,8BACE,yCAA0C,CAC1C,6CACF,CAEA,WAGE,kBAAmB,CAFnB,YAAa,CACb,qBAAsB,CAEtB,OAAQ,CACR,eACF,CAEA,YAGE,yBAA0B,CAF1B,cAAe,CACf,eAAgB,CAGhB,mBAAqB,CADrB,wBAEF,CAEA,uBACE,8BACF,CAEA,cAIE,eAAiB,CAGjB,4CAA6C,CAD7C,iBAAkB,CALlB,iCAAqC,CACrC,aAAc,CACd,aAAc,CAEd,WAGF,CAEA,yBACE,yCAA0C,CAC1C,6CACF,CAEA,WAGE,eAAgB,CAChB,cAAkB,CAFlB,SAGF,CAEA,aAIE,kCAAmC,CAGnC,4CAA6C,CAD7C,iBAAkB,CAIlB,iCAAkC,CATlC,iCAAqC,CACrC,aAAc,CACd,eAAgB,CAKhB,eAAgB,CAHhB,WAAY,CAIZ,oBAEF,CAEA,wBACE,uCAAwC,CACxC,6CAA8C,CAC9C,sCACF,CAEA,WAME,kCAAmC,CAGnC,4CAA6C,CAD7C,iBAAkB,CAPlB,YAAa,CACb,qBAAsB,CAEtB,iCAAqC,CACrC,cAAe,CAFf,OAAQ,CAIR,WAGF,CAEA,sBACE,uCAAwC,CACxC,6CACF,CAEA,YACE,yBAA0B,CAC1B,eACF,CAEA,uBACE,8BACF,CAEA,cAEE,iCAAkC,CADlC,cAAe,CAGf,iBAAkB,CADlB,iBAEF,CAEA,yBACE,sCACF,CAEA,YAEE,yBAA0B,CAD1B,cAAe,CAEf,eACF,CAEA,uBACE,8BACF,CAGA,yBACE,aACE,aAAc,CACd,SACF,CAEA,oBAEE,QAAS,CADT,yBAEF,CAEA,0BACE,eACF,CAEA,yBAEE,gBAAiB,CACjB,gDAAiD,CAFjD,cAAe,CAGf,gBACF,CAEA,oCACE,iDACF,CAEA,WAEE,sBAAuB,CADvB,qBAAsB,CAEtB,QACF,CAEA,cAKE,iBAAkB,CAJlB,UACF,CAMA,aACE,aACF,CAEA,gBACE,aAAc,CACd,eACF,CAEA,aACE,aACF,CACF,CAEA,yBACE,oBACE,sBACF,CAEA,kBACE,iBACF,CAEA,aACE,cACF,CAMA,0BACE,YACF,CACF","sources":["components/FontMap/styles/variables.css","components/FontMap/styles/layout.css","components/FontMap/styles/tooltip.css","components/FontMap/styles/controls.css","components/FontMap/styles/font-details.css","components/FontMap/styles/responsive.css","components/FontMap/styles/intro-modal.css","components/FontMap/styles/about-modal.css"],"sourcesContent":["/* CSS Variables for style normalization */\n:root {\n /* Primary colors — backgrounds are very slightly warm (paper feel) */\n --color-bg-primary: #fcfbf8;\n --color-bg-secondary: #f7f5f1;\n --color-bg-tertiary: #ece9e3;\n --color-text-primary: #000000;\n --color-text-secondary: #666666;\n --color-text-tertiary: #999999;\n --color-border-primary: #e3e0da;\n --color-border-secondary: #d5d2cb;\n --color-accent: #007acc;\n --color-accent-hover: #005a9e;\n \n /* Dark mode colors — same subtle warmth on charcoal */\n --color-bg-primary-dark: #121110;\n --color-bg-secondary-dark: #1c1a18;\n --color-bg-tertiary-dark: #363330;\n --color-text-primary-dark: #ffffff;\n --color-text-secondary-dark: #cccccc;\n --color-text-tertiary-dark: #999999;\n --color-border-primary-dark: #404040;\n --color-border-secondary-dark: #555555;\n --color-accent-dark: #4fc3f7;\n --color-accent-hover-dark: #29b6f6;\n \n /* Spacing */\n --spacing-xs: 4px;\n --spacing-sm: 8px;\n --spacing-md: 12px;\n --spacing-lg: 16px;\n --spacing-xl: 20px;\n \n /* Borders */\n --border-radius-sm: 4px;\n --border-radius-md: 6px;\n --border-radius-lg: 8px;\n \n /* Light shadows */\n --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);\n --shadow-md: 0 2px 6px rgba(0, 0, 0, 0.1);\n --shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.1);\n \n /* Transitions */\n --transition-fast: 0.15s ease;\n --transition-normal: 0.2s ease;\n --transition-slow: 0.3s ease;\n \n /* Overlay opacities */\n --overlay-opacity-light: 0.6;\n --overlay-opacity-dark: 0.5;\n \n /* Logo font */\n --font-logo: 'Source Sans Pro', 'Times New Roman', serif;\n}\n\n/* Spinner animation */\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n","/* Layout Styles */\n.fontmap-container {\n position: relative;\n width: 100vw;\n height: 100vh;\n overflow: hidden;\n cursor: default;\n margin: 0;\n padding: 0;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n background: var(--color-bg-primary);\n transition: background-color var(--transition-quick);\n display: flex;\n flex-direction: row;\n}\n\n.fontmap-container.dark-mode {\n background: var(--color-bg-primary-dark);\n}\n\n.fontmap-container:active {\n cursor: grabbing;\n}\n\n.fontmap-container.zooming {\n cursor: zoom-in;\n}\n\n/* Sidebar */\n.sidebar {\n width: 400px;\n min-width: 400px;\n height: 100vh;\n max-height: 100vh;\n background: var(--color-bg-secondary);\n border-right: 1px solid var(--color-border-primary);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n position: relative;\n z-index: 2000;\n}\n\n.dark-mode .sidebar {\n background: var(--color-bg-secondary-dark);\n border-right-color: var(--color-border-primary-dark);\n}\n\n.sidebar-header {\n padding: var(--spacing-lg);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n flex-shrink: 0;\n min-height: fit-content;\n border-bottom: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .sidebar-header {\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n/* Container de la carte */\n.map-container {\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n\n.dark-mode .loading-text {\n color: var(--color-text-secondary-dark);\n}\n\n/* Titre sur la carte */\n.map-title {\n position: absolute;\n top: 20px;\n left: 20px;\n z-index: 100;\n margin: 0;\n font-size: 32px;\n font-weight: 700;\n color: var(--color-text-primary);\n text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n letter-spacing: -0.02em;\n font-family: var(--font-logo);\n pointer-events: none;\n /* Bordure large avec la couleur du fond */\n -webkit-text-stroke: 16px var(--color-bg-primary);\n text-stroke: 16px var(--color-bg-primary);\n paint-order: stroke fill;\n position: relative;\n}\n\n.map-title::before {\n content: attr(data-text);\n position: absolute;\n top: 0;\n left: 0;\n z-index: -1;\n color: transparent;\n -webkit-text-stroke: 17px var(--color-border-primary);\n text-stroke: 17px var(--color-border-primary);\n}\n\n.dark-mode .map-title {\n color: var(--color-text-primary-dark);\n text-shadow: 0 2px 4px rgba(255, 255, 255, 0.1);\n /* Bordure large avec la couleur du fond en mode sombre */\n -webkit-text-stroke: 16px var(--color-bg-primary-dark);\n text-stroke: 16px var(--color-bg-primary-dark);\n}\n\n.dark-mode .map-title::before {\n -webkit-text-stroke: 17px var(--color-border-primary-dark);\n text-stroke: 17px var(--color-border-primary-dark);\n}\n\n.sidebar-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.sidebar-content .sidebar-header {\n padding: var(--spacing-lg);\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n flex-shrink: 0;\n min-height: fit-content;\n border-bottom: 1px solid var(--color-border-primary);\n margin-bottom: var(--spacing-lg);\n}\n\n.dark-mode .sidebar-content .sidebar-header {\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n/* Sidebar Footer */\n.sidebar-footer {\n padding: var(--spacing-lg);\n border-top: 1px solid var(--color-border-primary);\n background: var(--color-bg-secondary);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n min-height: fit-content;\n}\n\n.dark-mode .sidebar-footer {\n background: var(--color-bg-secondary-dark);\n border-top-color: var(--color-border-primary-dark);\n}\n\n.about-link, .source-link {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n background: none;\n border: none;\n color: var(--color-text-secondary);\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n padding: var(--spacing-sm) var(--spacing-md);\n border-radius: var(--border-radius-md);\n transition: all var(--transition-normal);\n text-decoration: none;\n}\n\n.about-link:hover, .source-link:hover {\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n transform: translateY(-1px);\n}\n\n.dark-mode .about-link, .dark-mode .source-link {\n color: var(--color-text-secondary-dark);\n}\n\n.dark-mode .about-link:hover, .dark-mode .source-link:hover {\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n}\n\n/* Main area */\n.main-area {\n flex: 1;\n position: relative;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n background: var(--color-bg-secondary);\n}\n\n.dark-mode .main-area {\n background: var(--color-bg-secondary-dark);\n}\n\n.fontmap-svg {\n width: 100%;\n height: 100%;\n display: block;\n cursor: grab;\n /* Rendu vectoriel optimisé */\n shape-rendering: geometricPrecision;\n text-rendering: geometricPrecision;\n image-rendering: crisp-edges;\n /* Zoom and pan */\n touch-action: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.fontmap-svg:active {\n cursor: grabbing;\n}\n\n/* Mobile-only back chevron inside the ActiveFont drawer (hidden on desktop) */\n.font-details-back {\n display: none;\n}\n\n/* Font glyphs with expanded hit area */\n.font-glyph-group,\n.glyph-group {\n cursor: pointer;\n}\n\n.font-hit-area {\n cursor: pointer;\n}\n\n.glyph-hitbox {\n fill: transparent;\n stroke: none;\n vector-effect: non-scaling-stroke;\n}\n\n.glyph-hitbox:hover,\n.highlight-group .glyph-hitbox {\n fill: rgba(0, 0, 0, 0.02);\n stroke: rgba(0, 0, 0, 0.14);\n stroke-width: 1;\n}\n\n.dark-mode .glyph-hitbox:hover,\n.dark-mode .highlight-group .glyph-hitbox {\n fill: rgba(255, 255, 255, 0.03);\n stroke: rgba(255, 255, 255, 0.18);\n stroke-width: 1;\n}\n\n.font-glyph {\n pointer-events: none;\n shape-rendering: geometricPrecision;\n text-rendering: geometricPrecision;\n image-rendering: crisp-edges;\n}\n\n/* Viewport group — aligné avec DebugUMAP */\n.viewport-group {\n will-change: transform;\n shape-rendering: geometricPrecision;\n text-rendering: geometricPrecision;\n image-rendering: crisp-edges;\n transform-origin: 0 0;\n}\n\n/* Highlight group — clone isolé de la font active, hors du dim */\n.highlight-group {\n shape-rendering: geometricPrecision;\n text-rendering: geometricPrecision;\n image-rendering: crisp-edges;\n transform-origin: 0 0;\n}\n\n/* Force glyph colors in dark mode */\n.dark-mode .font-glyph {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n.dark-mode .font-glyph use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n/* UI Layer - static */\n.ui-group {\n pointer-events: none;\n z-index: 100;\n}\n\n/* Loading */\n.loading {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 16px;\n color: var(--color-text-secondary);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n font-weight: 300;\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.dark-mode .loading {\n color: var(--color-text-secondary-dark);\n}\n\n/* Sidebar Separator */\n.sidebar-separator {\n height: 1px;\n background: var(--color-border-primary);\n margin: var(--spacing-lg) 0;\n}\n\n.dark-mode .sidebar-separator {\n background: var(--color-border-primary-dark);\n}\n\n/* Category Legend — small card on the map, aligned with zoom buttons */\n.category-legend {\n display: flex;\n flex-direction: column;\n padding: var(--spacing-sm) var(--spacing-md);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .category-legend {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.category-legend-toggle {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 10px;\n font-weight: 500;\n color: var(--color-text-primary);\n user-select: none;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n line-height: 14px;\n}\n\n.dark-mode .category-legend-toggle {\n color: var(--color-text-primary-dark);\n}\n\n.category-legend-toggle input[type=\"checkbox\"] {\n width: 12px;\n height: 12px;\n margin: 0;\n cursor: pointer;\n accent-color: var(--color-text-primary);\n}\n\n.dark-mode .category-legend-toggle input[type=\"checkbox\"] {\n accent-color: var(--color-text-primary-dark);\n}\n\n.category-legend-items {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-xs) var(--spacing-md);\n margin-top: 2px;\n}\n\n.category-legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.category-legend-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n transition: background 0.2s ease;\n}\n\n.category-legend-label {\n font-size: 12px;\n color: var(--color-text-secondary);\n text-transform: capitalize;\n}\n\n.dark-mode .category-legend-label {\n color: var(--color-text-secondary-dark);\n}\n","/* Tooltip Styles */\n/* SVG tooltip */\n.svg-tooltip {\n pointer-events: none;\n opacity: 0;\n}\n\n.tooltip-content {\n /* filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15)); */\n}\n\n.dark-mode .tooltip-content {\n /* filter: drop-shadow(0 4px 12px rgba(255, 255, 255, 0.15)); */\n}\n\n.tooltip-bg {\n}\n\n.tooltip-svg {\n}\n\n.tooltip-html {\n padding: 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.tooltip-html a {\n}\n\n.tooltip-html a:hover {\n opacity: 0.7;\n}\n\n/* Tooltip simplifié */\n.font-tooltip {\n background: var(--color-bg-primary);\n border: none;\n border-radius: var(--border-radius-md);\n padding: 0;\n font-size: 11px;\n line-height: 1.3;\n color: var(--color-text-primary);\n box-shadow: var(--shadow-lg);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n min-width: 160px;\n max-width: 280px;\n overflow: hidden;\n transform: translateY(0);\n user-select: none;\n -webkit-user-select: none;\n pointer-events: none;\n}\n\n/* Mobile: the hover tooltip absorbs taps so the user can reach the Open\n button without the surrounding tap-through closing the tooltip.\n The delegated click handler in useTooltipOptimized only fires on the\n button itself, so taps on the rest of the tooltip are inert (but\n don't propagate to the map either). */\n@media (max-width: 768px) {\n .font-tooltip-hover {\n pointer-events: auto;\n }\n}\n\n/* Mobile-only \"Open\" button inside the hover tooltip. */\n.tooltip-open-btn {\n display: block;\n width: calc(100% - 16px);\n margin: 4px 8px 8px;\n padding: 10px 12px;\n border: 1px solid var(--color-text-primary);\n border-radius: var(--border-radius-sm);\n background: var(--color-text-primary);\n color: var(--color-bg-primary);\n font-family: inherit;\n font-size: 12px;\n font-weight: 600;\n letter-spacing: 0.4px;\n text-transform: uppercase;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.font-tooltip.dark-mode .tooltip-open-btn {\n border-color: var(--color-text-primary-dark);\n background: var(--color-text-primary-dark);\n color: var(--color-bg-primary-dark);\n}\n\n/* Tooltip sélectionné (priorité normale) */\n.font-tooltip-selected {\n z-index: 1000 !important;\n border-width: 1px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n}\n\n/* Tooltip hover (priorité plus haute) */\n.font-tooltip-hover {\n z-index: 1001 !important;\n border: 3px solid #ffffff !important;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;\n}\n\n.dark-mode .font-tooltip-hover {\n border: 3px solid #ffffff !important;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2) !important;\n}\n\n/* Animation d'apparition */\n\n/* Tooltip simple avec nom et phrase */\n.simple-tooltip {\n padding: 12px 8px;\n text-align: center;\n margin-bottom: 0!important;\n padding-bottom: 0!important\n}\n\n.tooltip-font-name {\n font-size: 12px;\n font-weight: 600;\n color: var(--color-text-primary);\n text-align: center;\n}\n\n.tooltip-sentence-preview {\n display: flex;\n justify-content: center;\n\n align-items: center;\n margin-bottom: 0!important;\n padding-bottom: 0!important\n}\n\n.sentence-image {\n max-width: 100%;\n height: auto;\n border-radius: var(--border-radius-sm);\n margin-bottom: 0!important;\n padding-bottom: 0!important;\n}\n\n/* Mode sombre pour le tooltip */\n.dark-mode .font-tooltip {\n background: var(--color-bg-primary-dark) !important;\n border: none !important;\n color: var(--color-text-primary-dark) !important;\n margin-bottom: 0!important;\n padding-bottom: 0!important\n}\n\n/* Force dark mode styles */\n.font-tooltip.dark-mode {\n background: var(--color-bg-primary-dark) !important;\n border: none !important;\n color: #ffffff !important;\n}\n\n.dark-mode .tooltip-font-name {\n color: var(--color-text-primary-dark) !important;\n}\n\n/* Force text white in dark mode tooltip */\n.font-tooltip.dark-mode .tooltip-font-name {\n color: #ffffff !important;\n}\n\n.dark-mode .font-tooltip .tooltip-font-name {\n color: #ffffff !important;\n}\n\n/* Suppression des ombres pour les images de sentence */\n.sentence-image {\n max-width: 100%;\n height: auto;\n min-height: 40px!important;\n border-radius: var(--border-radius-sm);\n}\n\n/* Pas d'ombre pour les images de sentence dans tous les tooltips */\n.font-tooltip-selected .sentence-image {\n box-shadow: none;\n}\n\n.dark-mode .font-tooltip-selected .sentence-image {\n box-shadow: none;\n}\n\n.font-tooltip-hover .sentence-image {\n box-shadow: none;\n}\n\n\n.tooltip-preview-large {\n background: var(--color-bg-secondary);\n padding: var(--spacing-xl);\n text-align: center;\n border-bottom: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .tooltip-preview-large {\n background: var(--color-bg-secondary-dark);\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n.preview-glyph-large {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 80px;\n}\n\n.preview-glyph-large svg {\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));\n}\n\n.dark-mode .preview-glyph-large svg {\n filter: drop-shadow(0 2px 4px rgba(255, 255, 255, 0.1));\n}\n\n.tooltip-content {\n padding: 16px;\n}\n\n.tooltip-header {\n margin-bottom: 12px;\n}\n\n.font-name {\n font-size: 16px;\n font-weight: 600;\n margin-bottom: 4px;\n color: var(--color-text-primary);\n}\n\n.dark-mode .font-name {\n color: var(--color-text-primary-dark);\n}\n\n.font-category {\n font-size: 12px;\n color: var(--color-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.dark-mode .font-category {\n color: var(--color-text-secondary-dark);\n}\n\n.tooltip-info {\n margin-bottom: 12px;\n}\n\n.info-item {\n display: flex;\n justify-content: space-between;\n margin-bottom: 6px;\n font-size: 11px;\n}\n\n.info-label {\n color: var(--color-text-secondary);\n font-weight: 500;\n}\n\n.dark-mode .info-label {\n color: var(--color-text-secondary-dark);\n}\n\n.info-value {\n color: var(--color-text-primary);\n font-weight: 400;\n}\n\n.dark-mode .info-value {\n color: var(--color-text-primary-dark);\n}\n\n.tooltip-footer {\n border-top: 1px solid var(--color-border-primary);\n padding-top: var(--spacing-sm);\n}\n\n.dark-mode .tooltip-footer {\n border-top-color: var(--color-border-primary-dark);\n}\n\n.tooltip-hint {\n font-size: 10px;\n color: var(--color-text-tertiary);\n text-align: center;\n font-style: italic;\n}\n\n.dark-mode .tooltip-hint {\n color: var(--color-text-tertiary-dark);\n}\n\n\n\n\n/* Animation du tooltip */\n.font-tooltip {\n transform: translateY(0);\n}\n\n\n/* Dark mode overrides for tooltip images */\n.dark-mode .tooltip-sentence img,\n.font-tooltip.dark-mode .sentence-image {\n filter: invert(1) !important;\n}\n\n/* Spinner inherits tooltip color so it adapts to dark mode */\n.font-tooltip .tooltip-spinner {\n color: var(--color-text-secondary) !important;\n}\n\n.font-tooltip.dark-mode .tooltip-spinner {\n color: var(--color-text-secondary-dark) !important;\n}\n\n/* Dark mode overrides for tooltip SVG */\n.dark-mode .tooltip-fallback svg use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n/* Force SVG white in dark mode tooltip */\n.font-tooltip.dark-mode svg use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n.dark-mode .font-tooltip svg use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n","/* Controls Styles */\n/* Top controls container - now in sidebar */\n.top-controls {\n position: absolute;\n top: 16px;\n right: 16px;\n z-index: 200;\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n/* Dark mode toggle */\n.dark-mode-toggle {\n flex-shrink: 0;\n}\n\n.toggle-btn {\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-normal);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n box-shadow: var(--shadow-sm);\n outline: none;\n user-select: none;\n}\n\n.toggle-btn:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-secondary);\n box-shadow: var(--shadow-md);\n transform: translateY(-1px);\n}\n\n.toggle-btn:active {\n transform: translateY(0);\n box-shadow: var(--shadow-sm);\n}\n\n.toggle-btn:focus {\n border-color: var(--color-accent);\n box-shadow: 0 0 0 2px rgba(0, 122, 204, 0.2);\n}\n\n.dark-mode .toggle-btn {\n border-color: var(--color-border-primary-dark);\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.dark-mode .toggle-btn:hover {\n background: var(--color-bg-tertiary-dark);\n border-color: var(--color-border-secondary-dark);\n box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);\n}\n\n.dark-mode .toggle-btn:focus {\n border-color: var(--color-accent-dark);\n box-shadow: 0 0 0 2px rgba(79, 195, 247, 0.2);\n}\n\n/* Dataset selector */\n.dataset-selector {\n flex-shrink: 0;\n}\n\n.dataset-select {\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-normal);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n min-width: 200px;\n box-shadow: var(--shadow-sm);\n outline: none;\n}\n\n.dataset-select:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-secondary);\n box-shadow: var(--shadow-md);\n}\n\n.dataset-select:focus {\n border-color: var(--color-accent);\n box-shadow: 0 0 0 2px rgba(0, 122, 204, 0.2);\n}\n\n.dark-mode .dataset-select {\n border-color: var(--color-border-primary-dark);\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.dark-mode .dataset-select:hover {\n background: var(--color-bg-tertiary-dark);\n border-color: var(--color-border-secondary-dark);\n box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);\n}\n\n.dark-mode .dataset-select:focus {\n border-color: var(--color-accent-dark);\n box-shadow: 0 0 0 2px rgba(79, 195, 247, 0.2);\n}\n\n/* Search Section */\n.search-section {\n margin-bottom: 0;\n}\n\n/* Search Bar Big Mode */\n.search-bar-big .search-input {\n font-size: 16px;\n padding: var(--spacing-md) var(--spacing-lg);\n border-radius: var(--border-radius-lg);\n}\n\n/* Filters Container */\n.filters-container {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n align-items: flex-start;\n margin: var(--spacing-sm) 0 0 0;\n width: 100%;\n padding: var(--spacing-sm);\n background: transparent;\n border: none;\n border-radius: 0;\n box-shadow: none;\n}\n\n.filters-label {\n font-size: 11px;\n font-weight: 500;\n color: var(--color-text-tertiary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.dark-mode .filters-label {\n color: var(--color-text-tertiary-dark);\n}\n\n/* Filters Inline */\n.filters-inline {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: var(--spacing-xs);\n font-size: 11px;\n color: var(--color-text-secondary);\n width: 100%;\n}\n\n.dark-mode .filters-inline {\n color: var(--color-text-secondary-dark);\n}\n\n.filter-link {\n cursor: pointer;\n transition: all var(--transition-fast);\n font-weight: 500;\n padding: var(--spacing-xs) var(--spacing-sm);\n border-radius: var(--border-radius-sm);\n background: var(--color-bg-secondary);\n border: 1px solid var(--color-border-primary);\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 3px;\n text-align: left;\n min-height: 28px;\n}\n\n.filter-link:hover {\n color: var(--color-text-primary);\n background: var(--color-bg-tertiary);\n border-color: var(--color-border-secondary);\n transform: translateY(-1px);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .filter-link {\n background: var(--color-bg-secondary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.dark-mode .filter-link:hover {\n color: var(--color-text-primary-dark);\n background: var(--color-bg-tertiary-dark);\n border-color: var(--color-border-secondary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.filter-link.active {\n font-weight: 600;\n color: var(--color-text-primary);\n background: var(--color-bg-primary);\n border-color: var(--color-text-primary);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .filter-link.active {\n color: var(--color-text-primary-dark);\n background: var(--color-bg-primary-dark);\n border-color: var(--color-text-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.filter-count {\n font-weight: 500;\n opacity: 0.7;\n color: var(--color-text-secondary);\n font-size: 10px;\n background: var(--color-bg-tertiary);\n padding: 2px 6px;\n border-radius: var(--border-radius-sm);\n transition: all var(--transition-fast);\n min-width: 20px;\n text-align: center;\n}\n\n.dark-mode .filter-count {\n color: var(--color-text-secondary-dark);\n background: var(--color-bg-tertiary-dark);\n opacity: 0.8;\n}\n\n.filter-link.active .filter-count {\n opacity: 1;\n color: var(--color-text-primary);\n background: var(--color-text-primary);\n color: var(--color-bg-primary);\n}\n\n.dark-mode .filter-link.active .filter-count {\n color: var(--color-text-primary-dark);\n background: var(--color-text-primary-dark);\n color: var(--color-bg-primary-dark);\n}\n\n/* Search bar styles */\n.search-bar {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n}\n\n.search-input {\n width: 100%;\n padding: var(--spacing-sm) var(--spacing-md);\n padding-right: 10px;\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n font-size: 12px;\n font-weight: 500;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n transition: all var(--transition-normal);\n box-shadow: var(--shadow-sm);\n outline: none;\n}\n\n.search-input:focus {\n border-color: var(--color-accent);\n box-shadow: 0 0 0 2px rgba(0, 122, 204, 0.2);\n}\n\n.search-input::placeholder {\n color: var(--color-text-tertiary);\n}\n\n.search-input.dark {\n background: var(--color-bg-secondary-dark);\n border-color: var(--color-border-primary-dark);\n color: var(--color-text-primary-dark);\n}\n\n.search-input.dark:focus {\n border-color: var(--color-accent-dark);\n box-shadow: 0 0 0 2px rgba(79, 195, 247, 0.2);\n}\n\n.search-input.dark::placeholder {\n color: var(--color-text-tertiary-dark);\n}\n\n/* Conteneur pour les contrôles de recherche */\n.search-controls {\n position: absolute;\n right: var(--spacing-sm);\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n z-index: 1;\n}\n\n.search-counter {\n background: var(--color-bg-tertiary);\n color: var(--color-text-secondary);\n font-size: 10px;\n font-weight: 500;\n padding: 2px 6px;\n border-radius: var(--border-radius-sm);\n transition: all var(--transition-normal);\n pointer-events: none;\n}\n\n.search-counter.filtered {\n background: var(--color-bg-secondary);\n color: var(--color-text-primary);\n border: 1px solid var(--color-text-secondary);\n}\n\n.search-counter.dark {\n background: var(--color-bg-tertiary-dark);\n color: var(--color-text-secondary-dark);\n}\n\n.search-counter.dark.filtered {\n background: var(--color-bg-secondary-dark);\n color: var(--color-text-primary-dark);\n border: 1px solid var(--color-text-secondary-dark);\n}\n\n.search-clear {\n background: none;\n border: none;\n color: var(--color-text-tertiary);\n cursor: pointer;\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-sm);\n transition: all var(--transition-fast);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.search-clear:hover {\n color: var(--color-text-secondary);\n background: var(--color-bg-tertiary);\n}\n\n.dark-mode .search-clear:hover {\n color: var(--color-text-secondary-dark);\n background: var(--color-bg-tertiary-dark);\n}\n\n/* Bottom controls container */\n.bottom-controls {\n position: absolute;\n bottom: 16px;\n right: 16px;\n z-index: 200;\n display: flex;\n align-items: flex-end;\n gap: 8px;\n}\n\n/* Focus mode hint (shown when a font is selected) */\n.focus-hint {\n position: absolute;\n bottom: 16px;\n left: 16px;\n z-index: 200;\n height: 36px;\n display: flex;\n align-items: center;\n gap: 12px;\n background: transparent;\n pointer-events: none;\n user-select: none;\n}\n\n.focus-hint-keys {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.focus-hint kbd {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid #ffffff;\n border-radius: 4px;\n background: #ffffff;\n color: #000000;\n font-family: inherit;\n font-size: 14px;\n line-height: 1;\n}\n\n.dark-mode .focus-hint kbd {\n background: #000000;\n color: #ffffff;\n border-color: #ffffff;\n}\n\n.focus-hint-label {\n color: #000000;\n font-size: 12px;\n letter-spacing: 0.3px;\n line-height: 36px;\n text-shadow: 0 0 3px #ffffff, 0 0 3px #ffffff, 0 0 3px #ffffff;\n}\n\n.dark-mode .focus-hint-label {\n color: #ffffff;\n text-shadow: 0 0 3px #000000, 0 0 3px #000000, 0 0 3px #000000;\n}\n\n/* Dark mode toggle button (lives inside .bottom-controls — styled like .category-legend) */\n.bottom-controls .dark-mode-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-sm) var(--spacing-md);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n box-shadow: var(--shadow-sm);\n color: var(--color-text-primary);\n line-height: 1;\n cursor: pointer;\n font-family: inherit;\n flex-shrink: 0;\n}\n\n.dark-mode .bottom-controls .dark-mode-toggle {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n color: var(--color-text-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.dark-mode-toggle-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n/* Zoom Controls */\n.zoom-controls {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n}\n\n.zoom-btn {\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n font-size: 10px;\n font-weight: 500;\n cursor: pointer;\n transition: all var(--transition-normal);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n min-width: 24px;\n text-align: center;\n box-shadow: var(--shadow-sm);\n outline: none;\n}\n\n.dark-mode .zoom-btn {\n border-color: var(--color-border-primary-dark);\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.zoom-btn:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-secondary);\n box-shadow: var(--shadow-md);\n transform: translateY(-1px);\n}\n\n.dark-mode .zoom-btn:hover {\n background: var(--color-bg-tertiary-dark);\n border-color: var(--color-border-secondary-dark);\n box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);\n transform: translateY(-1px);\n}\n\n.zoom-btn.zoom-reset {\n background: var(--color-text-primary);\n color: var(--color-bg-primary);\n border-color: var(--color-text-primary);\n box-shadow: var(--shadow-md);\n}\n\n.dark-mode .zoom-btn.zoom-reset {\n background: var(--color-text-primary-dark);\n color: var(--color-bg-primary-dark);\n border-color: var(--color-text-primary-dark);\n box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);\n}\n\n.zoom-btn.zoom-reset:hover {\n background: var(--color-text-secondary);\n color: var(--color-bg-primary);\n box-shadow: var(--shadow-lg);\n transform: translateY(-1px);\n}\n\n.dark-mode .zoom-btn.zoom-reset:hover {\n background: var(--color-text-secondary-dark);\n color: var(--color-bg-primary-dark);\n box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);\n transform: translateY(-1px);\n}\n\n/* Dilation Control Styles */\n.dilation-control {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n min-width: 200px;\n padding: var(--spacing-md);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .dilation-control {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.dilation-label {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 12px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Cache indicator styles */\n.cache-indicator {\n font-size: 14px;\n margin-left: var(--spacing-sm);\n opacity: 0.7;\n transition: opacity var(--transition-fast);\n}\n\n.cache-indicator.ready {\n opacity: 1;\n color: #22c55e;\n}\n\n.cache-indicator.loading {\n opacity: 0.8;\n color: #f59e0b;\n animation: pulse 1.5s ease-in-out infinite;\n}\n\n.cache-indicator.not-ready {\n opacity: 0.5;\n color: var(--color-text-tertiary);\n}\n\n@keyframes pulse {\n 0%, 100% { opacity: 0.8; }\n 50% { opacity: 0.4; }\n}\n\n.dark-mode .cache-indicator.ready {\n color: #4ade80;\n}\n\n.dark-mode .cache-indicator.loading {\n color: #fbbf24;\n}\n\n.dark-mode .cache-indicator.not-ready {\n color: var(--color-text-tertiary-dark);\n}\n\n.label-text {\n color: var(--color-text-primary);\n}\n\n.dark-mode .label-text {\n color: var(--color-text-primary-dark);\n}\n\n.label-value {\n color: var(--color-text-secondary);\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-weight: 600;\n}\n\n.dark-mode .label-value {\n color: var(--color-text-secondary-dark);\n}\n\n.dilation-slider-container {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n}\n\n.dilation-slider {\n width: 100%;\n height: 4px;\n border-radius: 2px;\n background: var(--color-border-primary);\n outline: none;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n transition: all var(--transition-normal);\n}\n\n.dilation-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--color-text-primary);\n cursor: pointer;\n border: 2px solid var(--color-bg-primary);\n box-shadow: var(--shadow-sm);\n transition: all var(--transition-normal);\n}\n\n.dilation-slider::-webkit-slider-thumb:hover {\n transform: scale(1.1);\n box-shadow: var(--shadow-md);\n}\n\n.dilation-slider::-moz-range-thumb {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--color-text-primary);\n cursor: pointer;\n border: 2px solid var(--color-bg-primary);\n box-shadow: var(--shadow-sm);\n transition: all var(--transition-normal);\n}\n\n.dilation-slider::-moz-range-thumb:hover {\n transform: scale(1.1);\n box-shadow: var(--shadow-md);\n}\n\n.dilation-slider.dark {\n background: var(--color-border-primary-dark);\n}\n\n.dilation-slider.dark::-webkit-slider-thumb {\n background: var(--color-text-primary-dark);\n border-color: var(--color-bg-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.dilation-slider.dark::-moz-range-thumb {\n background: var(--color-text-primary-dark);\n border-color: var(--color-bg-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.slider-labels {\n display: flex;\n justify-content: space-between;\n font-size: 10px;\n color: var(--color-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: 500;\n}\n\n.dark-mode .slider-labels {\n color: var(--color-text-secondary-dark);\n}\n\n.slider-label {\n font-size: 10px;\n}\n\n/* Size Control Styles */\n.size-control {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n min-width: 200px;\n padding: var(--spacing-md);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .size-control {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.size-label {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-size: 12px;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.size-slider-container {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xs);\n}\n\n.size-slider {\n width: 100%;\n height: 4px;\n border-radius: 2px;\n background: var(--color-border-primary);\n outline: none;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n transition: all var(--transition-normal);\n}\n\n.size-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--color-text-primary);\n cursor: pointer;\n border: 2px solid var(--color-bg-primary);\n box-shadow: var(--shadow-sm);\n transition: all var(--transition-normal);\n}\n\n.size-slider::-webkit-slider-thumb:hover {\n transform: scale(1.1);\n box-shadow: var(--shadow-md);\n}\n\n.size-slider::-moz-range-thumb {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--color-text-primary);\n cursor: pointer;\n border: 2px solid var(--color-bg-primary);\n box-shadow: var(--shadow-sm);\n transition: all var(--transition-normal);\n}\n\n.size-slider::-moz-range-thumb:hover {\n transform: scale(1.1);\n box-shadow: var(--shadow-md);\n}\n\n.size-slider.dark {\n background: var(--color-border-primary-dark);\n}\n\n.size-slider.dark::-webkit-slider-thumb {\n background: var(--color-text-primary-dark);\n border-color: var(--color-bg-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.size-slider.dark::-moz-range-thumb {\n background: var(--color-text-primary-dark);\n border-color: var(--color-bg-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n","/* Font Details Component */\n.font-details {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n\n.font-details-placeholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: var(--spacing-xl);\n color: var(--color-text-secondary);\n position: relative;\n min-height: 400px;\n}\n\n.dark-mode .font-details-placeholder {\n color: var(--color-text-secondary-dark);\n}\n\n/* Placeholder icon */\n.placeholder-icon {\n position: relative;\n margin-bottom: var(--spacing-xl);\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.7;\n transition: all 0.3s ease;\n}\n\n.placeholder-icon svg {\n color: var(--color-text-tertiary);\n filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1));\n}\n\n.dark-mode .placeholder-icon svg {\n color: var(--color-text-tertiary-dark);\n filter: drop-shadow(0 2px 8px rgba(255, 255, 255, 0.1));\n}\n\n/* Simple icon animation */\n.placeholder-icon {\n position: relative;\n z-index: 2;\n opacity: 0.7;\n transition: all 0.3s ease;\n}\n\n.placeholder-icon svg {\n color: var(--color-text-tertiary);\n filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1));\n}\n\n.dark-mode .placeholder-icon svg {\n color: var(--color-text-tertiary-dark);\n filter: drop-shadow(0 2px 8px rgba(255, 255, 255, 0.1));\n}\n\n\n/* Content styling */\n.placeholder-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--spacing-md);\n max-width: 320px;\n}\n\n.placeholder-content h3 {\n font-size: 24px;\n font-weight: 700;\n margin: 0;\n color: var(--color-text-primary);\n letter-spacing: -0.02em;\n line-height: 1.2;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .placeholder-content h3 {\n color: var(--color-text-primary-dark);\n}\n\n.placeholder-content p {\n font-size: 16px;\n line-height: 1.5;\n margin: 0;\n color: var(--color-text-secondary);\n font-weight: 400;\n}\n\n.dark-mode .placeholder-content p {\n color: var(--color-text-secondary-dark);\n}\n\n\n.font-details-header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: var(--spacing-md);\n}\n\n.close-btn {\n padding: var(--spacing-sm);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n color: var(--color-text-secondary);\n cursor: pointer;\n transition: all var(--transition-normal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.close-btn:hover {\n background: var(--color-bg-tertiary);\n color: var(--color-text-primary);\n border-color: var(--color-border-secondary);\n}\n\n.dark-mode .close-btn {\n border-color: var(--color-border-primary-dark);\n background: var(--color-bg-primary-dark);\n color: var(--color-text-secondary-dark);\n}\n\n.dark-mode .close-btn:hover {\n background: var(--color-bg-tertiary-dark);\n color: var(--color-text-primary-dark);\n border-color: var(--color-border-secondary-dark);\n}\n\n.font-details-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-lg);\n padding: 0 var(--spacing-lg) var(--spacing-lg) var(--spacing-lg);\n}\n\n.font-preview {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: var(--spacing-xl);\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-lg);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .font-preview {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.font-preview-large {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100px;\n height: 100px;\n background: transparent;\n border-radius: 0;\n border: none;\n position: relative;\n transition: all 0.3s ease;\n}\n\n.font-preview-large:hover {\n transform: translateY(-2px);\n}\n\n.dark-mode .font-preview-large {\n background: transparent;\n border: none;\n}\n\n.dark-mode .font-preview-large:hover {\n transform: translateY(-2px);\n}\n\n.font-preview-large svg {\n filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.15));\n transition: all 0.3s ease;\n}\n\n.dark-mode .font-preview-large svg {\n filter: drop-shadow(0 4px 12px rgba(255, 255, 255, 0.15));\n}\n\n/* Force SVG fill in dark mode for font previews */\n.dark-mode .font-preview-large svg use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n/* Font sentence preview - Design épuré et compact */\n.font-sentence-preview {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 16px 20px;\n background: transparent;\n border-radius: 0;\n border: none;\n max-width: 100%;\n position: relative;\n}\n\n.dark-mode .font-sentence-preview {\n background: transparent;\n border: none;\n}\n\n.font-info {\n text-align: center;\n}\n\n.font-info .font-name {\n font-size: 24px;\n font-weight: 700;\n margin-bottom: var(--spacing-xs);\n color: var(--color-text-primary);\n line-height: 1.2;\n}\n\n.dark-mode .font-info .font-name {\n color: var(--color-text-primary-dark);\n}\n\n.font-info .font-category {\n font-size: 14px;\n color: var(--color-text-secondary);\n letter-spacing: 0.5px;\n font-weight: 500;\n}\n\n.dark-mode .font-info .font-category {\n color: var(--color-text-secondary-dark);\n}\n\n.active-font-label {\n font-size: 12px;\n font-weight: 500;\n color: var(--color-text-tertiary);\n letter-spacing: 0.5px;\n margin-bottom: 0!important;\n}\n\n.dark-mode .active-font-label {\n color: var(--color-text-tertiary-dark);\n}\n\n.font-details-section {\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-lg);\n padding: var(--spacing-lg);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .font-details-section {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n.font-details-section h3 {\n font-size: 16px;\n font-weight: 600;\n margin-bottom: var(--spacing-md);\n color: var(--color-text-primary);\n}\n\n.dark-mode .font-details-section h3 {\n color: var(--color-text-primary-dark);\n}\n\n.details-grid {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.detail-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--spacing-sm) 0;\n border-bottom: 1px solid var(--color-border-primary);\n}\n\n.detail-item:last-child {\n border-bottom: none;\n}\n\n.dark-mode .detail-item {\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n.detail-label {\n font-size: 12px;\n color: var(--color-text-secondary);\n font-weight: 500;\n letter-spacing: 0.3px;\n}\n\n.dark-mode .detail-label {\n color: var(--color-text-secondary-dark);\n}\n\n.detail-value {\n font-size: 12px;\n color: var(--color-text-primary);\n font-weight: 600;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n}\n\n.dark-mode .detail-value {\n color: var(--color-text-primary-dark);\n}\n\n.text-preview {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n}\n\n.preview-text {\n font-size: 16px;\n line-height: 1.4;\n color: var(--color-text-primary);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: 0;\n font-weight: 400;\n letter-spacing: 0.01em;\n text-align: center;\n margin: 0;\n max-width: 280px;\n}\n\n.dark-mode .preview-text {\n color: var(--color-text-primary-dark);\n background: transparent;\n border: none;\n}\n\n.font-actions {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-md) var(--spacing-lg);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n font-size: 14px;\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all var(--transition-normal);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.action-btn:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-secondary);\n transform: translateY(-1px);\n box-shadow: var(--shadow-md);\n}\n\n.dark-mode .action-btn {\n border-color: var(--color-border-primary-dark);\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n}\n\n.dark-mode .action-btn:hover {\n background: var(--color-bg-tertiary-dark);\n border-color: var(--color-border-secondary-dark);\n box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);\n}\n\n.action-btn.primary {\n background: var(--color-accent);\n color: #ffffff;\n border-color: var(--color-accent);\n}\n\n.action-btn.primary:hover {\n background: var(--color-accent-hover);\n border-color: var(--color-accent-hover);\n box-shadow: 0 2px 8px rgba(0, 122, 204, 0.3);\n}\n\n.dark-mode .action-btn.primary {\n background: var(--color-accent-dark);\n border-color: var(--color-accent-dark);\n}\n\n.dark-mode .action-btn.primary:hover {\n background: var(--color-accent-hover-dark);\n border-color: var(--color-accent-hover-dark);\n box-shadow: 0 2px 8px rgba(79, 195, 247, 0.3);\n}\n\n.action-btn.ghost {\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n border: 1px solid var(--color-text-secondary);\n margin-top: var(--spacing-md);\n}\n\n.action-btn.ghost:hover {\n background: var(--color-bg-secondary);\n color: var(--color-text-primary);\n border-color: var(--color-text-primary);\n transform: translateY(-1px);\n}\n\n.dark-mode .action-btn.ghost {\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n border-color: var(--color-text-secondary-dark);\n}\n\n.dark-mode .action-btn.ghost:hover {\n background: var(--color-bg-secondary-dark);\n color: var(--color-text-primary-dark);\n border-color: var(--color-text-primary-dark);\n}\n\n/* Style pour le lien Google Fonts intégré dans la carte */\n.font-action-section .google-fonts-link.ghost {\n margin-top: 0!important;\n background: var(--color-bg-secondary) !important;\n color: var(--color-text-primary) !important;\n border-color: var(--color-text-tertiary) !important;\n width: 100%;\n border-radius: 0 0 var(--border-radius-md) var(--border-radius-md) !important;\n border: 1px solid var(--color-text-tertiary) !important;\n border-top: 1px solid var(--color-text-tertiary) !important;\n border-left: 1px solid var(--color-text-tertiary) !important;\n border-right: 1px solid var(--color-text-tertiary) !important;\n border-bottom: 1px solid var(--color-text-tertiary) !important;\n}\n\n.font-action-section .google-fonts-link.ghost:hover {\n background: var(--color-bg-tertiary) !important;\n color: var(--color-text-primary) !important;\n border-color: var(--color-text-tertiary) !important;\n transform: none !important;\n box-shadow: none !important;\n}\n\n.dark-mode .font-action-section .google-fonts-link.ghost {\n background: var(--color-bg-secondary-dark) !important;\n color: var(--color-text-primary-dark) !important;\n border-color: var(--color-text-tertiary-dark) !important;\n border-top-color: var(--color-text-tertiary-dark) !important;\n border-left-color: var(--color-text-tertiary-dark) !important;\n border-right-color: var(--color-text-tertiary-dark) !important;\n border-bottom-color: var(--color-text-tertiary-dark) !important;\n}\n\n.dark-mode .font-action-section .google-fonts-link.ghost:hover {\n background: var(--color-bg-tertiary-dark) !important;\n color: var(--color-text-primary-dark) !important;\n border-color: var(--color-text-tertiary-dark) !important;\n transform: none !important;\n box-shadow: none !important;\n}\n\n.google-fonts-link svg {\n margin-left: 8px;\n}\n\n/* Active font card - Design compact */\n.active-font-card {\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n box-shadow: var(--shadow-sm);\n overflow: hidden;\n margin-bottom: var(--spacing-md);\n position: relative;\n transition: all 0.3s ease;\n}\n\n.dark-mode .active-font-card {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n/* Contenu principal avec lettre à gauche et info à droite */\n.active-font-content {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n padding: var(--spacing-md);\n background: var(--color-bg-secondary);\n border-bottom: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .active-font-content {\n background: var(--color-bg-secondary-dark);\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n/* Lettre à gauche */\n.font-letter-preview {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 120px;\n height: 120px;\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-sm);\n background: var(--color-bg-primary);\n}\n\n.dark-mode .font-letter-preview {\n background: var(--color-bg-primary-dark);\n border: 1px solid var(--color-border-primary-dark);\n}\n\n.font-letter-preview svg {\n filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));\n}\n\n.dark-mode .font-letter-preview svg {\n filter: drop-shadow(0 2px 4px rgba(255, 255, 255, 0.1));\n}\n\n/* Info à droite */\n.font-info-compact {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.font-name-compact {\n font-size: 18px;\n font-weight: 600;\n margin: 0;\n color: var(--color-text-primary);\n line-height: 1.2;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .font-name-compact {\n color: var(--color-text-primary-dark);\n}\n\n.font-category-compact {\n font-size: 12px;\n color: var(--color-text-secondary);\n margin: 0;\n font-weight: 500;\n letter-spacing: 0.05em;\n text-transform: uppercase;\n}\n\n.dark-mode .font-category-compact {\n color: var(--color-text-secondary-dark);\n}\n\n/* Font metadata (weights et styles) */\n.font-metadata {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-top: 4px;\n}\n\n.font-weights, .font-styles {\n font-size: 10px;\n color: var(--color-text-tertiary);\n font-weight: 400;\n letter-spacing: 0.02em;\n opacity: 0.8;\n}\n\n.dark-mode .font-weights, .dark-mode .font-styles {\n color: var(--color-text-tertiary-dark);\n}\n\n/* Sentence en dessous */\n.font-sentence-compact {\n padding: var(--spacing-sm) var(--spacing-md) 0 var(--spacing-md);\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--color-bg-primary);\n position: relative;\n height: 100px; /* Hauteur fixe des images SVG de sentence (165x49) */\n}\n\n.dark-mode .font-sentence-compact {\n background: var(--color-bg-primary-dark);\n}\n\n/* Section d'action intégrée dans la carte */\n.font-action-section {\n padding: 0;\n background: var(--color-bg-primary);\n display: flex;\n justify-content: center;\n}\n\n.dark-mode .font-action-section {\n background: var(--color-bg-primary-dark);\n}\n\n/* Label Active Font en dehors de la carte */\n.active-font-label {\n margin: 0 0 var(--spacing-md) 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--color-text-primary);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .active-font-label {\n color: var(--color-text-primary-dark);\n}\n\n/* Partie 1: Header avec nom et catégorie - Design typographique */\n.active-font-header {\n padding: 24px 28px 20px 28px;\n border-bottom: 1px solid var(--color-border-primary);\n background: linear-gradient(135deg, var(--color-bg-secondary) 0%, var(--color-bg-primary) 100%);\n position: relative;\n}\n\n.dark-mode .active-font-header {\n background: linear-gradient(135deg, var(--color-bg-secondary-dark) 0%, var(--color-bg-primary-dark) 100%);\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n.active-font-header .font-name {\n font-weight: 700;\n font-size: 28px;\n margin: 0 0 8px 0;\n color: var(--color-text-primary);\n letter-spacing: -0.02em;\n line-height: 1.2;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .active-font-header .font-name {\n color: var(--color-text-primary-dark);\n}\n\n.active-font-header .font-category {\n font-size: 14px;\n color: var(--color-text-secondary);\n margin: 0;\n font-weight: 500;\n letter-spacing: 0.1em;\n opacity: 0.8;\n}\n\n.dark-mode .active-font-header .font-category {\n color: var(--color-text-secondary-dark);\n}\n\n/* Partie 2: Preview avec image et phrase - Design compact et élégant */\n.active-font-preview {\n padding: 24px 28px 28px 28px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n background: var(--color-bg-primary);\n position: relative;\n}\n\n.dark-mode .active-font-preview {\n background: var(--color-bg-primary-dark);\n}\n\n\n/* Similar Fonts */\n.similar-fonts {\n margin-top: var(--spacing-lg);\n}\n\n.similar-fonts-title {\n margin: 0 0 var(--spacing-md) 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--color-text-primary);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .similar-fonts-title {\n color: var(--color-text-primary-dark);\n}\n\n.similar-fonts-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.similar-font-item {\n display: flex;\n align-items: center;\n height: 60px;\n gap: var(--spacing-md);\n padding: var(--spacing-md);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-md);\n background: var(--color-bg-primary);\n transition: all var(--transition-normal);\n cursor: pointer;\n}\n\n.similar-font-item:hover {\n background: var(--color-bg-secondary);\n border-color: var(--color-border-secondary);\n transform: translateY(-1px);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .similar-font-item {\n border-color: var(--color-border-primary-dark);\n background: var(--color-bg-primary-dark);\n}\n\n.dark-mode .similar-font-item:hover {\n background: var(--color-bg-tertiary-dark);\n border-color: var(--color-border-secondary-dark);\n box-shadow: 0 1px 3px rgba(255, 255, 255, 0.1);\n}\n\n/* État hover supprimé pour les similar fonts */\n\n.similar-font-preview {\n width: 80px;\n height: 32px;\n border-radius: var(--border-radius-sm);\n overflow: hidden;\n background: var(--color-bg-tertiary);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.dark-mode .similar-font-preview {\n background: var(--color-bg-tertiary-dark);\n}\n\n.font-sprite {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/* SVG sprites for dark mode */\n.dark-mode .font-sprite {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n.dark-mode .font-sprite use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n/* Force all font glyphs in sidebar to be white in dark mode */\n.dark-mode .font-letter-preview svg use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n.dark-mode .similar-font-glyph svg use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n.dark-mode .font-glyph-small use {\n fill: #ffffff !important;\n color: #ffffff !important;\n}\n\n.font-fallback {\n font-size: 14px;\n font-weight: 600;\n color: var(--color-text-secondary);\n}\n\n.dark-mode .font-fallback {\n color: var(--color-text-secondary-dark);\n}\n\n.similar-font-glyph {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n margin-right: -8px;\n margin-left: -12px;\n}\n\n.similar-font-glyph .font-glyph-small {\n width: 32px;\n height: 32px;\n}\n\n.similar-font-info {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 120px;\n}\n\n.similar-font-sentence {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n min-width: 0;\n position: relative;\n min-height: 49px; /* Hauteur fixe des images SVG de sentence (165x49) */\n}\n\n.font-name {\n font-size: 12px;\n font-weight: 600;\n color: var(--color-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dark-mode .font-name {\n color: var(--color-text-primary-dark);\n}\n\n.font-family {\n font-size: 10px;\n color: var(--color-text-secondary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dark-mode .font-family {\n color: var(--color-text-secondary-dark);\n}\n\n.similarity-score {\n font-size: 10px;\n font-weight: 600;\n color: var(--color-accent);\n background: rgba(0, 122, 204, 0.1);\n padding: 2px 6px;\n border-radius: 10px;\n flex-shrink: 0;\n}\n\n.dark-mode .similarity-score {\n color: var(--color-accent-dark);\n background: rgba(79, 195, 247, 0.1);\n}\n\n.no-similar {\n font-size: 12px;\n color: var(--color-text-secondary);\n font-style: italic;\n text-align: center;\n padding: var(--spacing-md);\n}\n\n.dark-mode .no-similar {\n color: var(--color-text-secondary-dark);\n}\n","/* Responsive Styles */\n/* Responsive */\n@media (max-width: 1200px) {\n .sidebar {\n width: 350px;\n min-width: 350px;\n }\n}\n\n@media (max-width: 768px) {\n .fontmap-container {\n flex-direction: column;\n }\n\n /* Sidebar becomes a sticky top strip with just search + filters */\n .sidebar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n width: 100%;\n min-width: 0;\n height: auto;\n max-height: none;\n border-right: none;\n border-bottom: 1px solid var(--color-border-primary);\n overflow: visible;\n z-index: 2000;\n }\n\n .dark-mode .sidebar {\n border-bottom-color: var(--color-border-primary-dark);\n }\n\n .sidebar-content {\n overflow: visible;\n padding: 0;\n }\n\n .sidebar-footer {\n display: none;\n }\n\n /* Hide focus hint and bottom controls on mobile */\n .focus-hint,\n .bottom-controls {\n display: none !important;\n }\n\n /* ActiveFont becomes a slide-in drawer when a font is selected */\n .font-details {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100vh;\n background: var(--color-bg-primary);\n z-index: 3000;\n overflow-y: auto;\n transform: translateX(100%);\n transition: transform 0.28s ease;\n padding-top: 48px;\n }\n\n .dark-mode .font-details {\n background: var(--color-bg-primary-dark);\n }\n\n .fontmap-container.has-focus .font-details {\n transform: translateX(0);\n }\n\n /* Mobile back chevron — visible only on mobile inside the drawer */\n .font-details-back {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n position: absolute;\n top: 12px;\n left: 12px;\n padding: 6px 10px 6px 6px;\n border: none;\n background: transparent;\n color: var(--color-text-primary);\n font-family: inherit;\n font-size: 13px;\n cursor: pointer;\n z-index: 1;\n }\n\n .dark-mode .font-details-back {\n color: var(--color-text-primary-dark);\n }\n\n /* Map fills full viewport beneath the sticky sidebar */\n .main-area {\n height: 100vh;\n width: 100%;\n }\n\n .sidebar-header,\n .sidebar-content .sidebar-header {\n padding: var(--spacing-md);\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n border-bottom: none;\n margin-bottom: 0;\n }\n \n .map-title {\n font-size: 24px;\n top: 15px;\n left: 15px;\n /* Maintenir la bordure sur les écrans moyens */\n -webkit-text-stroke: 12px var(--color-bg-primary);\n text-stroke: 12px var(--color-bg-primary);\n }\n \n .dark-mode .map-title {\n -webkit-text-stroke: 12px var(--color-bg-primary-dark);\n text-stroke: 12px var(--color-bg-primary-dark);\n }\n \n .map-title::before {\n -webkit-text-stroke: 13px var(--color-border-primary);\n text-stroke: 13px var(--color-border-primary);\n }\n \n .dark-mode .map-title::before {\n -webkit-text-stroke: 13px var(--color-border-primary-dark);\n text-stroke: 13px var(--color-border-primary-dark);\n }\n \n .sidebar-content {\n padding: var(--spacing-md);\n gap: var(--spacing-md);\n }\n \n .sidebar-separator {\n margin: var(--spacing-md) 0;\n }\n \n .top-controls {\n top: 12px;\n right: 12px;\n gap: 6px;\n }\n \n .bottom-controls {\n bottom: 12px;\n right: 12px;\n gap: 6px;\n }\n \n .filters-inline {\n font-size: 11px;\n }\n \n .toggle-btn {\n padding: 4px 8px;\n font-size: 12px;\n }\n \n .dataset-select {\n padding: 4px 8px;\n font-size: 10px;\n min-width: 150px;\n }\n \n .zoom-btn {\n padding: 3px 6px;\n font-size: 9px;\n }\n \n .font-details-section {\n padding: var(--spacing-md);\n }\n \n .font-preview {\n padding: var(--spacing-lg);\n }\n \n .font-preview-large {\n width: 80px;\n height: 80px;\n }\n \n .font-info .font-name {\n font-size: 20px;\n }\n}\n\n@media (max-width: 480px) {\n .sidebar-header {\n padding: var(--spacing-sm);\n flex-direction: column;\n gap: var(--spacing-sm);\n }\n \n .map-title {\n font-size: 20px;\n top: 10px;\n left: 10px;\n /* Maintenir la bordure sur les petits écrans */\n -webkit-text-stroke: 8px var(--color-bg-primary);\n text-stroke: 8px var(--color-bg-primary);\n }\n \n .dark-mode .map-title {\n -webkit-text-stroke: 8px var(--color-bg-primary-dark);\n text-stroke: 8px var(--color-bg-primary-dark);\n }\n \n .map-title::before {\n -webkit-text-stroke: 9px var(--color-border-primary);\n text-stroke: 9px var(--color-border-primary);\n }\n \n .dark-mode .map-title::before {\n -webkit-text-stroke: 9px var(--color-border-primary-dark);\n text-stroke: 9px var(--color-border-primary-dark);\n }\n \n .sidebar-content {\n padding: var(--spacing-sm);\n gap: var(--spacing-sm);\n }\n \n .sidebar-separator {\n margin: var(--spacing-sm) 0;\n }\n \n .top-controls {\n top: 8px;\n right: 8px;\n gap: 4px;\n }\n \n .bottom-controls {\n bottom: 8px;\n right: 8px;\n gap: 4px;\n }\n \n .filters-inline {\n font-size: 10px;\n }\n \n .toggle-btn {\n padding: 3px 6px;\n font-size: 11px;\n }\n \n .dataset-select {\n padding: 3px 6px;\n font-size: 9px;\n min-width: 120px;\n }\n \n .zoom-btn {\n padding: 2px 4px;\n font-size: 8px;\n }\n \n .font-details-section {\n padding: var(--spacing-sm);\n }\n \n .font-preview {\n padding: var(--spacing-md);\n }\n \n .font-preview-large {\n width: 60px;\n height: 60px;\n }\n \n .font-info .font-name {\n font-size: 18px;\n }\n \n .preview-text {\n font-size: 14px;\n }\n}\n\n/* Responsive adjustments for dilation control */\n@media (max-width: 768px) {\n .dilation-control,\n .size-control {\n min-width: 150px;\n }\n \n .dilation-label,\n .size-label {\n font-size: 10px;\n }\n \n .slider-labels {\n font-size: 9px;\n }\n}\n\n@media (max-width: 480px) {\n .dilation-control,\n .size-control {\n min-width: 120px;\n }\n \n .dilation-label,\n .size-label {\n font-size: 9px;\n }\n \n .slider-labels {\n font-size: 8px;\n }\n}\n","/* Unified Overlay Styles */\n.unified-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, var(--overlay-opacity-dark));\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 99999;\n opacity: 1;\n}\n\n.unified-overlay .loading {\n color: #ffffff;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n font-size: 18px;\n font-weight: 500;\n text-align: center;\n line-height: 1.2;\n margin: 0;\n padding: 0;\n position: static;\n top: auto;\n left: auto;\n transform: none;\n}\n\n.unified-overlay .overlay-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid rgba(255, 255, 255, 0.2);\n border-top: 3px solid #fff;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n}\n\n.dark-mode .unified-overlay .loading {\n color: #ffffff;\n}\n\n/* Intro Modal Styles */\n\n.intro-modal {\n display: flex;\n flex-direction: column;\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-lg);\n max-width: 420px;\n width: 90%;\n max-height: 80vh;\n overflow: hidden;\n box-shadow: var(--shadow-lg);\n animation: introModalSlideIn 0.6s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.dark-mode .intro-modal {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n@keyframes introModalSlideIn {\n from {\n opacity: 0;\n transform: translateY(30px) scale(0.95);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n\n.intro-modal-content {\n padding: var(--spacing-xl);\n text-align: center;\n overflow-y: auto;\n min-height: 0;\n}\n\n.intro-title {\n font-family: var(--font-logo);\n font-size: 36px;\n font-weight: 700;\n color: var(--color-text-primary);\n margin: 0 0 var(--spacing-sm) 0;\n letter-spacing: -0.02em;\n line-height: 1.1;\n}\n\n.dark-mode .intro-title {\n color: var(--color-text-primary-dark);\n}\n\n.intro-subtitle {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n font-size: 16px;\n font-weight: 400;\n color: var(--color-text-secondary);\n margin: 0 0 var(--spacing-md) 0;\n line-height: 1.4;\n}\n\n.dark-mode .intro-subtitle {\n color: var(--color-text-secondary-dark);\n}\n\n.intro-description {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: var(--color-text-tertiary);\n margin: 0 0 var(--spacing-lg) 0;\n line-height: 1.5;\n}\n\n.dark-mode .intro-description {\n color: var(--color-text-tertiary-dark);\n}\n\n.intro-modal .google-fonts-link {\n color: var(--text-color) !important;\n font-weight: bold;\n background: none !important;\n border: none !important;\n}\n\n.intro-modal .google-fonts-link:hover {\n color: var(--text-color) !important;\n font-weight: bold;\n background: none !important;\n border: none !important;\n}\n\n.intro-features {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n margin-bottom: var(--spacing-lg);\n align-items: center;\n}\n\n.intro-feature {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n font-size: 14px;\n font-weight: 400;\n color: var(--color-text-secondary);\n}\n\n.dark-mode .intro-feature {\n color: var(--color-text-secondary-dark);\n}\n\n.intro-feature-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: var(--border-radius-sm);\n background: var(--color-bg-tertiary);\n color: var(--color-text-tertiary);\n flex-shrink: 0;\n}\n\n.dark-mode .intro-feature-icon {\n background: var(--color-bg-tertiary-dark);\n color: var(--color-text-tertiary-dark);\n}\n\n.intro-feature-icon svg {\n width: 16px;\n height: 16px;\n}\n\n.intro-start-button {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-sm);\n width: 100%;\n padding: var(--spacing-md) var(--spacing-lg);\n border: 1px solid #000000;\n border-radius: var(--border-radius-md);\n background: #000000;\n color: #ffffff;\n font-size: 14px;\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all var(--transition-normal);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.intro-start-button:hover {\n background: #333333;\n border-color: #333333;\n transform: translateY(-1px);\n box-shadow: var(--shadow-md);\n}\n\n.dark-mode .intro-start-button {\n background: #ffffff;\n color: #000000;\n border-color: #ffffff;\n}\n\n.dark-mode .intro-start-button:hover {\n background: #e0e0e0;\n border-color: #e0e0e0;\n box-shadow: 0 2px 6px rgba(255, 255, 255, 0.1);\n}\n\n\n/* Responsive design */\n@media (max-width: 600px) {\n .intro-modal {\n width: 95%;\n margin: var(--spacing-lg);\n }\n \n .intro-modal-content {\n padding: var(--spacing-lg);\n }\n \n .intro-title {\n font-size: 28px;\n }\n \n .intro-subtitle {\n font-size: 14px;\n }\n \n .intro-description {\n font-size: 12px;\n }\n \n .intro-features {\n gap: var(--spacing-sm);\n }\n \n .intro-feature {\n font-size: 12px;\n }\n \n}\n","/* About Modal Styles */\n\n.about-modal {\n display: flex;\n flex-direction: column;\n background: var(--color-bg-primary);\n border: 1px solid var(--color-border-primary);\n border-radius: var(--border-radius-lg);\n max-width: 900px;\n width: 95%;\n max-height: 85vh;\n overflow: hidden;\n box-shadow: var(--shadow-lg);\n animation: modalSlideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.dark-mode .about-modal {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n}\n\n.about-modal-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n /* Allows the flex child to shrink below its content size so the body can scroll */\n min-height: 0;\n}\n\n/* Header */\n.about-modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px 16px 24px;\n border-bottom: 1px solid var(--color-border-primary);\n background: linear-gradient(135deg, var(--color-bg-secondary) 0%, var(--color-bg-primary) 100%);\n}\n\n.dark-mode .about-modal-header {\n background: linear-gradient(135deg, var(--color-bg-secondary-dark) 0%, var(--color-bg-primary-dark) 100%);\n border-bottom-color: var(--color-border-primary-dark);\n}\n\n.about-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--color-text-primary);\n margin: 0;\n letter-spacing: -0.02em;\n line-height: 1.2;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .about-title {\n color: var(--color-text-primary-dark);\n}\n\n.about-close-button {\n background: none;\n border: none;\n color: var(--color-text-secondary);\n cursor: pointer;\n padding: 8px;\n border-radius: var(--border-radius-sm);\n transition: all var(--transition-normal);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.about-close-button:hover {\n background: var(--color-bg-secondary);\n color: var(--color-text-primary);\n}\n\n.dark-mode .about-close-button {\n color: var(--color-text-secondary-dark);\n}\n\n.dark-mode .about-close-button:hover {\n background: var(--color-bg-secondary-dark);\n color: var(--color-text-primary-dark);\n}\n\n/* Body */\n.about-modal-body {\n padding: 20px 24px;\n overflow-y: auto;\n flex: 1;\n min-height: 0;\n}\n\n/* Hero Section */\n.about-hero {\n margin-bottom: 24px;\n text-align: center;\n}\n\n.about-description {\n font-size: 16px;\n line-height: 1.6;\n color: var(--color-text-primary);\n margin: 0 0 24px 0;\n text-align: left;\n}\n\n.dark-mode .about-description {\n color: var(--color-text-primary-dark);\n}\n\n.about-section {\n margin-bottom: 24px;\n}\n\n.about-section:last-child {\n margin-bottom: 0;\n}\n\n.about-section-title {\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--color-text-tertiary);\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n}\n\n.dark-mode .about-section-title {\n color: var(--color-text-tertiary-dark);\n}\n\n/* Second section in a column gets breathing room above */\n.about-column .about-section-title + .about-section-title,\n.about-column .code-link + .about-section-title {\n margin-top: 16px;\n}\n\n.about-section-text {\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-text-secondary);\n margin: 0;\n}\n\n.dark-mode .about-section-text {\n color: var(--color-text-secondary-dark);\n}\n\n/* Content Grid Layout */\n.about-content-grid {\n display: grid;\n /* Left column holds the dense technical steps, give it more room */\n grid-template-columns: 1.5fr 1fr;\n gap: 0;\n align-items: start;\n margin-top: 24px;\n}\n\n.about-column {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.about-column:first-child {\n padding-right: 32px;\n}\n\n.about-column:last-child {\n padding-left: 32px;\n border-left: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .about-column:last-child {\n border-left-color: var(--color-border-primary-dark);\n}\n\n/* Pipeline Demo */\n.pipeline-demo {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n margin: 16px 0;\n padding: 20px;\n background: var(--color-bg-secondary);\n border-radius: var(--border-radius-md);\n border: 1px solid var(--color-border-primary);\n flex-wrap: wrap;\n}\n\n.dark-mode .pipeline-demo {\n background: var(--color-bg-secondary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n/* Pipeline Steps */\n.pipeline-steps {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n.step-item {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 16px 0;\n}\n\n.step-item:first-child {\n padding-top: 8px;\n}\n\n.step-item + .step-item {\n border-top: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .step-item + .step-item {\n border-top-color: var(--color-border-primary-dark);\n}\n\n.step-content {\n flex: 1;\n}\n\n.step-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n color: var(--color-text-primary);\n}\n\n.dark-mode .step-header {\n color: var(--color-text-primary-dark);\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n border: 1px solid var(--color-text-secondary);\n border-radius: 50%;\n font-size: 12px;\n font-weight: 700;\n}\n\n.dark-mode .step-number {\n background: var(--color-bg-primary-dark);\n color: var(--color-text-primary-dark);\n border-color: var(--color-text-secondary-dark);\n}\n\n.step-description {\n font-size: 13px;\n line-height: 1.4;\n color: var(--color-text-secondary);\n margin: 0;\n}\n\n.dark-mode .step-description {\n color: var(--color-text-secondary-dark);\n}\n\n.step-example {\n flex-shrink: 0;\n /* Fixed column so the demos align vertically across steps */\n width: 150px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Mini Matrix */\n.mini-matrix {\n font-family: 'Courier New', monospace;\n font-size: 6px;\n line-height: 1;\n background: var(--color-bg-primary);\n color: var(--color-text-primary);\n padding: 4px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .mini-matrix {\n background: var(--color-bg-secondary-dark);\n border-color: var(--color-border-primary-dark);\n color: var(--color-text-primary-dark);\n}\n\n.mini-row {\n margin: 0;\n padding: 0;\n line-height: 1.1;\n margin-bottom: 1px;\n}\n\n.zero-value {\n opacity: .5;\n}\n\n/* Vector Preview */\n.vector-preview {\n font-family: 'Courier New', monospace;\n font-size: 8px;\n line-height: 1.2;\n background: var(--color-bg-primary);\n padding: 6px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n max-width: 120px;\n word-break: break-all;\n color: var(--color-text-primary);\n font-weight: 600;\n letter-spacing: -0.3px;\n}\n\n.dark-mode .vector-preview {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n color: var(--color-text-primary-dark);\n}\n\n/* Coordinates */\n.coordinates {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-family: 'Courier New', monospace;\n font-size: 9px;\n background: var(--color-bg-primary);\n padding: 6px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .coordinates {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.coord {\n color: var(--color-accent);\n font-weight: 600;\n}\n\n.dark-mode .coord {\n color: var(--color-accent-dark);\n}\n\n/* Font Cluster Demo */\n.font-cluster-demo {\n display: flex;\n gap: 6px;\n align-items: center;\n padding: 6px;\n background: var(--color-bg-primary);\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .font-cluster-demo {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.font-sample {\n font-size: 12px;\n font-weight: 600;\n color: var(--color-text-primary);\n line-height: 1;\n}\n\n.dark-mode .font-sample {\n color: var(--color-text-primary-dark);\n}\n\n/* Subtitle */\n.about-subtitle {\n font-size: 16px;\n font-weight: 600;\n color: var(--color-text-primary);\n margin: 20px 0 8px 0;\n}\n\n.dark-mode .about-subtitle {\n color: var(--color-text-primary-dark);\n}\n\n/* Code Link */\n.code-link {\n display: inline-block;\n align-self: flex-start;\n font-size: 13px;\n font-weight: 600;\n color: var(--color-text-primary);\n text-decoration: none;\n padding: 8px 14px;\n border: 1px solid var(--color-border-secondary);\n border-radius: var(--border-radius-md);\n transition: all var(--transition-normal);\n}\n\n.code-link:hover {\n border-color: var(--color-text-primary);\n box-shadow: var(--shadow-sm);\n}\n\n.dark-mode .code-link {\n color: var(--color-text-primary-dark);\n border-color: var(--color-border-secondary-dark);\n}\n\n.dark-mode .code-link:hover {\n border-color: var(--color-text-primary-dark);\n}\n\n/* Inline Link */\n.inline-link {\n color: var(--color-text-primary);\n text-decoration: underline;\n font-size: 12px;\n font-weight: 500;\n transition: color var(--transition-normal);\n}\n\n.inline-link:hover {\n color: var(--color-text-secondary);\n}\n\n.dark-mode .inline-link {\n color: var(--color-text-primary-dark);\n}\n\n.dark-mode .inline-link:hover {\n color: var(--color-text-secondary-dark);\n}\n\n\n/* Multi-Glyph Demo */\n.multi-glyph-demo {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px 10px;\n background: var(--color-bg-primary);\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .multi-glyph-demo {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.glyph-grid {\n display: flex;\n gap: 8px;\n color: var(--color-text-primary);\n}\n\n.dark-mode .glyph-grid {\n color: var(--color-text-primary-dark);\n}\n\n.glyph-grid-label {\n font-family: 'Courier New', monospace;\n font-size: 9px;\n color: var(--color-text-secondary);\n opacity: 0.6;\n}\n\n.dark-mode .glyph-grid-label {\n color: var(--color-text-secondary-dark);\n}\n\n/* Pipeline Flow */\n.pipeline-flow {\n display: flex;\n align-items: center;\n gap: 4px;\n font-family: 'Courier New', monospace;\n font-size: 10px;\n background: var(--color-bg-primary);\n padding: 6px 8px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .pipeline-flow {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.pipeline-node {\n color: var(--color-text-primary);\n font-weight: 500;\n white-space: nowrap;\n}\n\n.dark-mode .pipeline-node {\n color: var(--color-text-primary-dark);\n}\n\n.pipeline-arrow {\n color: var(--color-text-secondary);\n opacity: 0.5;\n}\n\n.dark-mode .pipeline-arrow {\n color: var(--color-text-secondary-dark);\n}\n\n/* Animation */\n@keyframes modalSlideIn {\n from {\n opacity: 0;\n transform: scale(0.9) translateY(20px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* Google Fonts link styling */\n.about-modal .google-fonts-link {\n color: var(--color-text-primary);\n text-decoration: underline;\n font-weight: 500;\n transition: color var(--transition-normal);\n}\n\n.about-modal .google-fonts-link:hover {\n color: var(--color-text-secondary);\n}\n\n.dark-mode .about-modal .google-fonts-link {\n color: var(--color-text-primary-dark);\n}\n\n.dark-mode .about-modal .google-fonts-link:hover {\n color: var(--color-text-secondary-dark);\n}\n\n/* Tech list styling */\n.about-tech-list {\n margin: 12px 0 16px 0;\n padding-left: 0;\n list-style: none;\n}\n\n.about-tech-list li {\n font-size: 14px;\n line-height: 1.5;\n color: var(--color-text-secondary);\n margin-bottom: 8px;\n padding-left: 20px;\n position: relative;\n}\n\n.about-tech-list li:before {\n content: \"→\";\n position: absolute;\n left: 0;\n color: var(--color-accent);\n font-weight: bold;\n}\n\n.about-tech-list li:last-child {\n margin-bottom: 0;\n}\n\n.dark-mode .about-tech-list li {\n color: var(--color-text-secondary-dark);\n}\n\n.dark-mode .about-tech-list li:before {\n color: var(--color-accent-dark);\n}\n\n.about-tech-list strong {\n color: var(--color-text-primary);\n font-weight: 600;\n}\n\n.dark-mode .about-tech-list strong {\n color: var(--color-text-primary-dark);\n}\n\n/* Legacy pixel matrix demo - now using pipeline-demo */\n.pixel-matrix-demo {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n margin: 20px 0;\n padding: 20px;\n background: var(--color-bg-secondary);\n border-radius: var(--border-radius-md);\n border: 1px solid var(--color-border-primary);\n flex-wrap: wrap;\n}\n\n.dark-mode .pixel-matrix-demo {\n background: var(--color-bg-secondary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.demo-step {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n min-width: 120px;\n}\n\n.demo-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--color-accent);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.dark-mode .demo-label {\n color: var(--color-accent-dark);\n}\n\n.pixel-matrix {\n font-family: 'Courier New', monospace;\n font-size: 8px;\n line-height: 1;\n background: white;\n padding: 4px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .pixel-matrix {\n background: var(--color-bg-secondary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.pixel-row {\n margin: 0;\n padding: 0;\n line-height: 1.2;\n margin-bottom: 1px;\n}\n\n.vector-demo {\n font-family: 'Courier New', monospace;\n font-size: 8px;\n line-height: 1.2;\n background: var(--color-bg-primary);\n padding: 6px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n max-width: 200px;\n word-break: break-all;\n color: var(--color-text-secondary);\n}\n\n.dark-mode .vector-demo {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n color: var(--color-text-secondary-dark);\n}\n\n.umap-demo {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-family: 'Courier New', monospace;\n font-size: 10px;\n background: var(--color-bg-primary);\n padding: 8px;\n border-radius: 2px;\n border: 1px solid var(--color-border-primary);\n}\n\n.dark-mode .umap-demo {\n background: var(--color-bg-primary-dark);\n border-color: var(--color-border-primary-dark);\n}\n\n.coordinate {\n color: var(--color-accent);\n font-weight: 600;\n}\n\n.dark-mode .coordinate {\n color: var(--color-accent-dark);\n}\n\n.demo-caption {\n font-size: 10px;\n color: var(--color-text-secondary);\n text-align: center;\n font-style: italic;\n}\n\n.dark-mode .demo-caption {\n color: var(--color-text-secondary-dark);\n}\n\n.demo-arrow {\n font-size: 16px;\n color: var(--color-accent);\n font-weight: bold;\n}\n\n.dark-mode .demo-arrow {\n color: var(--color-accent-dark);\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .about-modal {\n max-width: 95%;\n width: 95%;\n }\n \n .about-content-grid {\n grid-template-columns: 1fr;\n gap: 24px;\n }\n \n .about-column:first-child {\n padding-right: 0;\n }\n \n .about-column:last-child {\n padding-left: 0;\n border-left: none;\n border-top: 1px solid var(--color-border-primary);\n padding-top: 24px;\n }\n \n .dark-mode .about-column:last-child {\n border-top-color: var(--color-border-primary-dark);\n }\n \n .step-item {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n \n .step-example {\n width: 100%;\n }\n \n .step-example {\n align-self: center;\n }\n \n .mini-matrix {\n font-size: 5px;\n }\n \n .vector-preview {\n font-size: 7px;\n max-width: 100px;\n }\n \n .coordinates {\n font-size: 8px;\n }\n}\n\n@media (max-width: 480px) {\n .about-modal-header {\n padding: 16px 20px 12px 20px;\n }\n \n .about-modal-body {\n padding: 16px 20px;\n }\n \n .about-title {\n font-size: 20px;\n }\n \n .info-card {\n padding: 12px;\n }\n \n .pipeline-demo {\n padding: 12px;\n }\n}\n"],"names":[],"sourceRoot":""}