@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.27"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}@layer reset,tokens,base,layouts,components,features,utilities;@layer tokens.tokens{:root{--clr-brass-100: #f9f1d7;--clr-brass-200: #f0e3b0;--clr-brass-300: #e8c162;--clr-brass-400: #deb64f;--clr-brass-500: #d4a942;--clr-brass-600: #c99935;--clr-brass-700: #b89637;--clr-brass-800: #a17f2f;--clr-brass-900: #8a6f2a;--clr-parchment-100: #3d342a;--clr-parchment-200: #342d21;--clr-parchment-300: #312b1f;--clr-parchment-400: #2a2419;--clr-parchment-500: #2a2419;--clr-parchment-600: #1e1914;--clr-parchment-700: #1a1510;--clr-parchment-800: #161310;--clr-parchment-900: #0f0c09;--clr-wood-base: #0f0c09;--clr-wood-medium: #1a1510;--clr-burgundy-300: #e89aa5;--clr-burgundy-400: #d07582;--clr-burgundy-500: #b85967;--clr-text-primary: #e5dcc8;--clr-text-muted: #bfaf93;--clr-text-light: #9f8f77;--clr-success: #6b8c5f;--clr-warning: #c99520;--clr-error: #b85d5d;--alpha-subtle: .05;--alpha-light: .1;--alpha-medium: .15;--alpha-strong: .2;--alpha-heavy: .3;--color-bg-page: var(--clr-parchment-900);--color-bg-deep: var(--clr-wood-base);--color-bg-atmospheric: var(--clr-wood-medium);--color-bg-surface: var(--clr-parchment-500);--color-bg-elevated: var(--clr-parchment-100);--color-bg-paper: var(--clr-parchment-200);--color-accent-primary: var(--clr-brass-500);--color-accent-hover: var(--clr-brass-300);--color-accent-light: var(--clr-brass-300);--color-accent-subtle: color-mix(in oklch, var(--clr-brass-500) var(--alpha-medium), transparent);--color-accent-border: color-mix(in oklch, var(--clr-brass-500) var(--alpha-strong), transparent);--color-secondary: var(--clr-burgundy-500);--color-secondary-hover: var(--clr-burgundy-400);--color-secondary-light: var(--clr-burgundy-300);--color-text: var(--clr-text-primary);--color-text-muted: var(--clr-text-muted);--color-text-light: var(--clr-text-light);--color-border: var(--clr-parchment-100);--color-border-subtle: var(--clr-parchment-600);--color-border-accent: color-mix(in oklch, var(--clr-brass-500) var(--alpha-heavy), transparent);--color-success: var(--clr-success);--color-warning: var(--clr-warning);--color-error: var(--clr-error);--shadow-color-light: rgba(0, 0, 0, .3);--shadow-color-medium: rgba(0, 0, 0, .4);--shadow-color-heavy: rgba(0, 0, 0, .5);--color-paper: var(--clr-parchment-200);--color-ink: var(--clr-text-primary);--color-ink-muted: var(--clr-text-muted);--color-parchment: var(--clr-parchment-500);--color-parchment-light: var(--clr-parchment-300);--color-parchment-dark: var(--clr-parchment-600);--color-wood: var(--clr-wood-base);--color-wood-medium: var(--clr-wood-medium);--color-wood-dark: var(--clr-parchment-600);--color-brass: var(--clr-brass-500);--color-brass-hover: var(--clr-brass-300);--color-brass-light: var(--clr-brass-300);--color-burgundy: var(--clr-burgundy-500);--color-burgundy-hover: var(--clr-burgundy-400);--color-burgundy-light: var(--clr-burgundy-300)}}@layer tokens.tokens{:root{--font-serif: "Iowan Old Style", "Palatino Linotype", "URW Palladio L", P052, serif;--font-sans: "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono: "SF Mono", Consolas, Monaco, monospace;--font-dyslexic: "OpenDyslexic", sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: clamp(1.125rem, 1rem + .25vw, 1.25rem);--text-xl: clamp(1.25rem, 1.125rem + .375vw, 1.5rem);--text-2xl: clamp(1.5rem, 1.25rem + .625vw, 1.875rem);--text-3xl: clamp(1.875rem, 1.5rem + .75vw, 2.25rem);--text-4xl: clamp(2rem, 1.75rem + .5vw, 2.25rem);--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 1.8;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wide: .025em;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700}}@layer tokens.tokens{:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px var(--shadow-color-light), 0 1px 3px var(--shadow-color-light);--shadow-md: 0 2px 4px var(--shadow-color-light), 0 4px 8px var(--shadow-color-medium);--shadow-lg: 0 4px 6px var(--shadow-color-medium), 0 8px 16px var(--shadow-color-heavy);--shadow-inner: inset 0 2px 4px var(--shadow-color-light);--z-base: 0;--z-dropdown: 100;--z-sticky: 200;--z-modal-backdrop: 900;--z-modal: 1000;--z-toast: 1100}}@layer tokens.tokens{:root{--ease-out: cubic-bezier(.25, .46, .45, .94);--ease-in: cubic-bezier(.55, .05, .68, .19);--ease-in-out: cubic-bezier(.65, .05, .36, 1);--duration-fast: .2s;--duration-normal: .35s;--duration-slow: .5s;--duration-slower: .7s}}@layer tokens.tokens{:root{--bp-mobile: 320px;--bp-tablet: 768px;--bp-desktop: 1024px;--bp-wide: 1440px;--grid-gap: 1rem;--card-height-mobile: 360px;--card-height-tablet: 320px;--card-height-desktop: 280px;--touch-target-min: 48px;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--safe-area-right: env(safe-area-inset-right, 0px)}}@layer reset.reset{*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}}@layer base.base{@font-face{font-family:OpenDyslexic;src:url(/fonts/OpenDyslexic-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:OpenDyslexic;src:url(/fonts/OpenDyslexic-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:OpenDyslexic;src:url(/fonts/OpenDyslexic-Italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}}@layer base.base{body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text);background:var(--color-bg-deep);min-height:100vh;position:relative}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse 1200px 800px at 30% 20%,rgba(212,169,66,.08) 0%,transparent 50%),radial-gradient(ellipse at 50% 50%,var(--color-bg-atmospheric) 0%,var(--color-bg-deep) 70%,rgba(0,0,0,.3) 100%);z-index:var(--z-base)}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);font-weight:600;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--color-text)}h1{font-size:var(--text-4xl);margin-bottom:var(--space-4)}h2{font-size:var(--text-3xl);margin-bottom:var(--space-3)}h3{font-size:var(--text-2xl);margin-bottom:var(--space-3)}h4{font-size:var(--text-xl);margin-bottom:var(--space-2)}h5{font-size:var(--text-lg);margin-bottom:var(--space-2)}h6{font-size:var(--text-base);margin-bottom:var(--space-2)}p{margin-bottom:var(--space-4)}a{color:var(--color-accent-primary);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--color-accent-hover)}:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px;box-shadow:0 0 0 4px #b8860b33;transition:box-shadow var(--duration-fast)}::selection{background:var(--color-accent-subtle);color:var(--color-text)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}}@layer layouts.layouts{main{max-width:1400px;margin:0 auto;padding:var(--space-12) var(--space-8);min-height:calc(100vh - 80px);position:relative;z-index:1;background:var(--color-parchment-light);border-radius:var(--radius-xl);box-shadow:0 0 0 1px var(--color-accent-subtle),0 8px 32px #0006,0 4px 16px #0000004d,inset 0 1px #fff6}@media(max-width:767px){main{padding:var(--space-6) var(--space-4);padding-bottom:calc(var(--space-6) + 70px + var(--safe-area-bottom));border-radius:0;min-height:calc(100vh - 60px)}}.parchment-panel{background:var(--color-paper);border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-sm);padding:var(--space-8);position:relative}.parchment-panel:before{content:"";position:absolute;inset:0;background-image:radial-gradient(ellipse at 15% 25%,rgba(58,47,40,.08) 0%,transparent 40%),radial-gradient(ellipse at 75% 65%,rgba(58,47,40,.06) 0%,transparent 35%),radial-gradient(ellipse at 35% 75%,rgba(58,47,40,.05) 0%,transparent 30%),radial-gradient(ellipse at 85% 15%,rgba(58,47,40,.07) 0%,transparent 25%),radial-gradient(ellipse at 50% 50%,rgba(58,47,40,.04) 0%,transparent 45%);border-radius:inherit;pointer-events:none}.panel-header{margin-bottom:var(--space-6);border-bottom:1px solid var(--color-border-subtle);padding-bottom:var(--space-4)}.panel-title{font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:600;color:var(--color-text);margin-bottom:var(--space-2)}.panel-subtitle{font-size:var(--text-base);color:var(--color-text-muted);font-style:italic;margin-bottom:0}.page-header{margin-bottom:var(--space-8);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.page-header h1{font-family:var(--font-serif);font-size:var(--text-4xl);margin-bottom:var(--space-3);color:var(--color-text);font-weight:600;letter-spacing:-.02em}.page-header p{color:var(--color-text-muted);font-size:var(--text-sm);letter-spacing:.04em;text-transform:uppercase;font-variant:small-caps}@media(max-width:767px){.page-header{margin-bottom:var(--space-6);padding-bottom:var(--space-4)}.page-header h1{font-size:var(--text-2xl);margin-bottom:var(--space-2);display:flex;align-items:center;gap:var(--space-2)}.page-header p{font-size:var(--text-xs)}}}@layer layouts.layouts{.book-grid{display:grid;grid-template-columns:1fr;gap:var(--grid-gap);margin-top:var(--space-6)}.book-grid-virtual{margin-top:var(--space-6);-webkit-overflow-scrolling:touch}.book-grid-virtual .book-grid{margin-top:0}.book-card{height:var(--card-height-mobile)}@media(min-width:768px){.book-grid{grid-template-columns:repeat(2,1fr)}.book-card{height:var(--card-height-tablet)}}@media(min-width:1024px){.book-grid{grid-template-columns:repeat(3,1fr)}.book-card{height:var(--card-height-desktop)}}@media(min-width:1440px){.book-grid{grid-template-columns:repeat(4,1fr)}}@media(hover:none){button,a,[role=button]{min-height:var(--touch-target-min);min-width:var(--touch-target-min)}.book-card:hover{transform:none;box-shadow:var(--shadow-sm)}.book-card:active{transform:scale(.98);transition:transform .1s ease}}.main-layout{padding-top:var(--safe-area-top);padding-bottom:var(--safe-area-bottom);padding-left:var(--safe-area-left);padding-right:var(--safe-area-right)}.book-card{content-visibility:auto;contain-intrinsic-size:auto var(--card-height-mobile)}@media(min-width:768px){.book-card{contain-intrinsic-size:auto var(--card-height-tablet)}}@media(min-width:1024px){.book-card{contain-intrinsic-size:auto var(--card-height-desktop)}}}@layer components.components{.navbar{background:var(--color-wood);background-image:linear-gradient(90deg,rgba(92,74,61,.3) 0%,transparent 50%,rgba(92,74,61,.3) 100%);border-bottom:2px solid var(--color-wood-medium);padding:var(--space-4) var(--space-8);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:var(--z-sticky);box-shadow:var(--shadow-md)}.nav-brand a{font-family:var(--font-serif);font-size:var(--text-2xl);font-weight:700;color:var(--color-brass-light);text-decoration:none;letter-spacing:var(--tracking-wide);font-variant:small-caps;text-transform:lowercase;transition:color var(--duration-normal) var(--ease-out)}.nav-brand a:hover{color:var(--color-brass)}.nav-links{display:flex;gap:var(--space-6);align-items:center}.nav-links a{color:var(--color-brass);text-decoration:none;font-weight:500;font-size:var(--text-base);transition:color var(--duration-normal) var(--ease-out),background-color var(--duration-normal) var(--ease-out);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm)}.nav-links a:hover{color:var(--color-brass-light);background:var(--color-accent-subtle)}.nav-user{display:flex;align-items:center;gap:var(--space-2);margin-left:var(--space-4);padding-left:var(--space-4);border-left:1px solid var(--color-wood-medium)}.nav-username{color:var(--color-brass);font-size:var(--text-sm);opacity:.8}.nav-username-link{color:var(--color-brass);font-size:var(--text-sm);text-decoration:none;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:color var(--duration-normal) var(--ease-out),background-color var(--duration-normal) var(--ease-out)}.nav-username-link:hover{color:var(--color-brass-light);background:var(--color-accent-subtle)}.nav-logout{display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--color-brass);padding:var(--space-2);border-radius:var(--radius-sm);cursor:pointer;transition:color var(--duration-normal) var(--ease-out),background-color var(--duration-normal) var(--ease-out)}.nav-logout:hover{color:var(--color-brass-light);background:var(--color-accent-subtle)}.reader-theme-toggle{font-size:1.25rem!important;line-height:1;min-width:42px}.reader-theme-toggle span{display:block}.nav-toggle{display:none}@media(max-width:767px){.nav-links{display:none}.navbar{padding:var(--space-3) var(--space-4)}}.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--color-wood);border-top:2px solid var(--color-wood-medium);padding-bottom:var(--safe-area-bottom);z-index:var(--z-sticky);box-shadow:0 -2px 10px #0000004d}@media(max-width:767px){.bottom-nav{display:flex;justify-content:space-around;align-items:stretch}}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);color:var(--color-brass);text-decoration:none;transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out);min-height:var(--touch-target-min)}.bottom-nav-item:active{background:var(--color-accent-subtle)}.bottom-nav-item.active{color:var(--color-brass-light)}.bottom-nav-item.active .bottom-nav-icon{transform:scale(1.1)}.bottom-nav-icon{width:24px;height:24px;transition:transform var(--duration-fast) var(--ease-out)}.bottom-nav-label{font-size:var(--text-xs);font-weight:500}}@layer components.components{.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);border:none;border-radius:var(--radius-lg);font-family:var(--font-sans);font-size:var(--text-base);font-weight:500;line-height:var(--leading-tight);cursor:pointer;transition:all var(--duration-normal) var(--ease-out);text-decoration:none;position:relative;overflow:hidden;text-shadow:0 1px 2px rgba(0,0,0,.1);background:var(--color-brass);color:#1a1510;box-shadow:0 2px 4px var(--shadow-color-medium)}.btn:hover{background:var(--color-brass-light);box-shadow:0 3px 8px var(--shadow-color-heavy);transform:translateY(-1px)}.btn:active{transform:translateY(0);box-shadow:0 1px 2px var(--shadow-color-light)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-primary{background:var(--color-brass);color:#1a1510;box-shadow:0 2px 4px var(--shadow-color-medium);letter-spacing:.02em;font-weight:600}.btn-primary:hover{background:var(--color-brass-light);box-shadow:0 3px 8px var(--shadow-color-heavy);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0);box-shadow:0 1px 2px var(--shadow-color-light)}.btn-primary:focus-visible{outline:2px solid var(--color-brass);outline-offset:3px}.btn-secondary{background:var(--color-brass);color:#1a1510;border:none;box-shadow:0 2px 4px var(--shadow-color-medium);letter-spacing:.02em;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.btn-secondary:hover{background:var(--color-brass-light);box-shadow:0 3px 8px var(--shadow-color-heavy);transform:translateY(-1px)}.btn-danger{background:var(--color-burgundy);color:var(--color-parchment-light);box-shadow:var(--shadow-sm)}.btn-danger:hover{background:var(--color-burgundy-hover);box-shadow:var(--shadow-md)}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--text-lg)}.btn-icon{width:44px;height:44px;padding:0;border-radius:var(--radius-md);background:transparent;border:1.5px solid var(--color-brass);color:var(--color-brass);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .2s ease;text-decoration:none}.btn-icon:hover{background:var(--color-parchment-dark);border-color:var(--color-brass-light);color:var(--color-brass-light);transform:translateY(-1px)}.btn-icon:active{transform:translateY(0)}.btn-icon:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-icon:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px}.btn-icon-danger{border-color:var(--color-text-muted);color:var(--color-text-muted)}.btn-icon-danger:hover{background:#d32f2f26;border-color:#ef5350;color:#ef5350}.btn-icon-sm{width:36px;height:36px}}@layer components.components{.card{background:var(--color-paper);border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-sm);padding:var(--space-6);position:relative;transition:all var(--duration-normal) var(--ease-out)}.card:before{content:"";position:absolute;inset:0;background-image:radial-gradient(ellipse at 15% 25%,rgba(58,47,40,.08) 0%,transparent 40%),radial-gradient(ellipse at 75% 65%,rgba(58,47,40,.06) 0%,transparent 35%),radial-gradient(ellipse at 35% 75%,rgba(58,47,40,.05) 0%,transparent 30%),radial-gradient(ellipse at 85% 15%,rgba(58,47,40,.07) 0%,transparent 25%),radial-gradient(ellipse at 50% 50%,rgba(58,47,40,.04) 0%,transparent 45%);border-radius:inherit;pointer-events:none}.card:hover{box-shadow:var(--shadow-md);border-color:var(--color-border);transform:translateY(-2px)}.book-grid{transition:opacity .2s ease-in-out}.book-grid.loading{opacity:.6}.book-card{background:var(--color-paper);border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);overflow:hidden;transition:all var(--duration-normal) var(--ease-out);text-decoration:none;color:inherit;display:flex;flex-direction:column;box-shadow:var(--shadow-sm);position:relative;contain:layout style paint}.book-card:before{content:"";position:absolute;inset:0;background-image:radial-gradient(ellipse at 15% 25%,rgba(58,47,40,.08) 0%,transparent 40%),radial-gradient(ellipse at 75% 65%,rgba(58,47,40,.06) 0%,transparent 35%),radial-gradient(ellipse at 35% 75%,rgba(58,47,40,.05) 0%,transparent 30%),radial-gradient(ellipse at 85% 15%,rgba(58,47,40,.07) 0%,transparent 25%),radial-gradient(ellipse at 50% 50%,rgba(58,47,40,.04) 0%,transparent 45%);border-radius:inherit;pointer-events:none;z-index:1}.book-card:after{content:"";position:absolute;inset-block-start:-50%;inset-inline-start:-50%;inline-size:200%;block-size:200%;background:radial-gradient(ellipse at top left,rgba(255,253,247,.4) 0%,transparent 50%);opacity:0;transition:opacity var(--duration-normal) var(--ease-out);pointer-events:none;z-index:2}.book-card:hover{box-shadow:0 12px 32px #00000080,0 0 40px #d4a94226,inset 0 1px #d4a94233;border-color:var(--color-brass-light);transform:translateY(-6px) scale(1.02);z-index:10}.book-card:hover:after{opacity:1}.book-card:active{transform:translateY(-4px) scale(1.01);transition-duration:50ms}.book-card:focus-within{box-shadow:0 12px 32px #00000080,0 0 40px #d4a94226,inset 0 1px #d4a94233;border-color:var(--color-brass-light);transform:translateY(-6px) scale(1.02);z-index:10}.book-card:focus-within:after{opacity:1}.book-card>*{position:relative;z-index:3}.book-card h3{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600;margin-bottom:var(--space-2);line-height:var(--leading-snug);color:var(--color-text)}.book-card .authors{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-1)}.book-card img{width:100%;height:250px;object-fit:cover;background:var(--color-parchment);border-bottom:1px solid var(--color-border-subtle)}.book-card-link{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit;outline:none}.book-card-link:focus-visible{outline:3px solid var(--color-brass-light);outline-offset:-3px;border-radius:var(--radius-lg)}.book-card-remove{position:absolute;top:var(--space-2);right:var(--space-2);z-index:20;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:#000000b3;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-full);color:var(--color-parchment);cursor:pointer;opacity:0;transform:scale(.8);transition:all .2s ease}.book-card:hover .book-card-remove,.book-card:focus-within .book-card-remove{opacity:1;transform:scale(1)}.book-card-remove:hover{background:var(--color-error);border-color:var(--color-error);transform:scale(1.1)}.book-card-remove:disabled{opacity:.5;cursor:not-allowed}.book-cover{width:100%;flex:1 1 auto;min-height:0;overflow:hidden;background:var(--color-parchment);border-bottom:1px solid var(--color-border-subtle);position:relative}.book-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s var(--ease-out),opacity .4s var(--ease-out),filter .4s var(--ease-out);opacity:0;filter:blur(10px)}.book-cover img.loaded{opacity:1;filter:blur(0)}.book-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 0%,rgba(212,169,66,.1) 50%,transparent 100%);opacity:0;transition:opacity .4s ease;pointer-events:none}.book-cover-skeleton{position:absolute;inset:0;background:linear-gradient(90deg,var(--color-parchment) 0%,var(--color-parchment-dark) 50%,var(--color-parchment) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite ease-in-out}.book-card:hover .book-cover img{transform:scale(1.05)}.book-card:hover .book-cover:after{opacity:1}.book-cover-placeholder{width:100%;flex:1 1 auto;min-height:0;background:linear-gradient(135deg,var(--color-parchment-dark) 0%,var(--color-parchment) 100%);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--color-border-subtle)}.book-cover-placeholder span{font-family:var(--font-serif);font-size:var(--text-4xl);color:var(--color-text-muted);font-weight:600}.book-progress-bar{position:absolute;bottom:0;left:0;right:0;height:4px;background:#0000004d;overflow:hidden}.book-progress-fill{height:100%;background:linear-gradient(90deg,var(--color-brass) 0%,var(--color-brass-light) 100%);transition:width .3s ease}.book-progress-text{color:var(--color-brass-light);font-weight:600;font-size:var(--text-xs)}.book-card-content{padding:var(--space-4);background:var(--color-paper)}.book-info{padding:var(--space-4);flex:0 0 auto;overflow:hidden}.book-info .book-title{font-family:var(--font-serif);font-size:var(--text-base);font-weight:600;margin-bottom:var(--space-2);line-height:var(--leading-snug);color:var(--color-text);position:relative;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.book-info .book-title:after{content:"";position:absolute;inset-block-end:-2px;inset-inline-start:0;inline-size:100%;block-size:2px;background:var(--color-brass);transform:scaleX(0);transition:transform .2s ease;transform-origin:inline-start}.book-card:hover .book-title:after{transform:scaleX(1)}.book-info .book-author,.book-info .book-publisher,.book-info .book-year{font-size:var(--text-base);color:var(--color-text-muted);margin-bottom:var(--space-1)}.book-info .book-meta{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-block-start:var(--space-2)}.book-info .book-meta span{font-size:var(--text-sm);padding:var(--space-1) var(--space-2);background:var(--color-parchment-dark);border-radius:var(--radius-sm);color:var(--color-text-muted)}.book-title-link{color:var(--color-text);text-decoration:none;transition:color .2s ease}.book-title-link:hover{color:var(--color-brass)}.author-link{color:var(--color-text-muted);text-decoration:none;transition:color .2s ease;font-style:italic}.author-link:hover{color:var(--color-brass);text-decoration:underline}.author-separator{color:var(--color-text-muted);font-style:normal}@supports selector(:has(*)){.book-card:not(:has(.book-cover img)) .book-cover-placeholder{background:linear-gradient(135deg,rgba(184,134,11,.1) 0%,var(--color-parchment) 100%)}.book-grid:not(:has(.book-card)):before{content:"No books found";display:block;text-align:center;padding:var(--space-8);color:var(--color-text-muted);font-size:var(--text-lg);font-style:italic}}.skeleton{background:linear-gradient(90deg,var(--color-parchment) 0%,var(--color-parchment-dark) 50%,var(--color-parchment) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite ease-in-out}.skeleton-rectangular{border-radius:var(--radius-md)}.skeleton-text{border-radius:var(--radius-sm);height:1em}.skeleton-circular{border-radius:50%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{pointer-events:none}.skeleton-card:before{display:none}.skeleton-cover{width:100%;height:100%;min-height:200px}.skeleton-title{height:1.25rem;margin-bottom:var(--space-2)}.skeleton-author{height:1rem;margin-bottom:var(--space-1)}.skeleton-meta{height:.875rem}.skeleton-description{height:2.5rem;margin-bottom:var(--space-2)}.skeleton-header{display:flex;flex-direction:column;gap:var(--space-2)}.book-card.skeleton-card .book-cover{background:var(--color-parchment)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-16) var(--space-8);text-align:center;min-height:50vh}.empty-state-icon{width:4rem;height:4rem;color:var(--color-brass);opacity:.6;margin-bottom:var(--space-2)}.empty-state-link{display:flex;align-items:center;justify-content:center;padding:var(--space-3);border-radius:var(--radius-md);background:transparent;border:1.5px solid var(--color-brass);color:var(--color-brass);transition:all .2s ease;cursor:pointer;text-decoration:none}.empty-state-link:hover{background:var(--color-parchment-dark);border-color:var(--color-brass-light);color:var(--color-brass-light);transform:translateY(-1px)}.empty-state-link .empty-state-icon{width:6rem;height:6rem;margin-bottom:0;opacity:1;color:inherit}.empty-state h2{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-text);margin:0}.empty-state p{font-size:var(--text-base);color:var(--color-text-muted);margin:0;max-width:400px;line-height:var(--leading-relaxed)}.empty-state p strong{color:var(--color-text)}.empty-state .btn{margin-top:var(--space-4)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.book-card:nth-child(n+21){animation-delay:.6s}.book-badge{position:relative;overflow:hidden;text-transform:uppercase;letter-spacing:.05em;font-weight:600;font-size:.75rem;padding:.25rem .625rem;border-radius:var(--radius-sm);box-shadow:0 2px 4px #0003;transition:all .2s ease}.book-badge:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .4s ease}.book-card:hover .book-badge:before{left:100%}.book-badge.badge-epub{background:linear-gradient(135deg,var(--color-brass),var(--color-brass-dark));color:var(--color-parchment-dark)}.book-badge.badge-pdf{background:linear-gradient(135deg,#c94520,#a83a1a);color:var(--color-parchment-light)}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-3);margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border-subtle)}.pagination-btn{position:relative;display:flex;align-items:center;justify-content:center;min-width:2.5rem;height:2.5rem;padding:0 var(--space-4);background:var(--color-paper);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-weight:500;cursor:pointer;transition:all .2s ease;overflow:hidden;min-height:44px;min-width:44px}.pagination-btn:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(212,169,66,.3) 0%,transparent 70%);opacity:0;transform:scale(0);transition:all .3s ease}.pagination-btn:hover:before{opacity:1;transform:scale(1)}.pagination-btn:hover{border-color:var(--color-brass);color:var(--color-brass);transform:translateY(-2px);box-shadow:0 4px 12px #0003}.pagination-btn:active{transform:translateY(0);transition-duration:50ms}.pagination-btn.active{background:var(--color-brass);border-color:var(--color-brass);color:var(--color-parchment-dark);font-weight:600;box-shadow:0 2px 8px #d4a9424d}.pagination-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.pagination-btn:disabled:hover{border-color:var(--color-border);color:var(--color-text);box-shadow:none}.pagination-info{font-size:var(--text-base);color:var(--color-text-muted);font-weight:500;padding:0 var(--space-3)}*:focus-visible{outline:3px solid var(--color-brass-light);outline-offset:2px;box-shadow:0 0 0 5px #d4a94233;scroll-margin:var(--space-8)}.book-card:focus-visible{outline:3px solid var(--color-brass-light);outline-offset:4px;box-shadow:0 0 0 7px #d4a94233,0 12px 32px #00000080;z-index:20}.pagination-btn:focus-visible{outline-offset:2px}.search-clear{min-height:44px;min-width:44px}@media(max-width:768px){.pagination-btn,.book-badge{min-height:48px;padding:var(--space-3) var(--space-5)}}@media(prefers-contrast:high){.pagination-btn.active{border:2px solid currentColor}.book-card{border-width:2px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.book-card{animation:none}}}@layer components.components{.search-bar{position:relative;display:flex;align-items:center}.search-bar input{flex:1;min-width:0;padding:var(--space-3) var(--space-4);padding-inline-start:calc(var(--space-4) + 1.25rem + var(--space-4));padding-inline-end:calc(var(--space-4) + 1.5rem);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-paper);background-image:linear-gradient(to bottom,var(--color-parchment-light),var(--color-paper));border:1.5px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-inner);transition:all var(--duration-normal) var(--ease-out)}.search-bar input::-webkit-search-cancel-button,.search-bar input::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}.search-bar input::placeholder{color:var(--color-text-light);font-style:italic}.search-bar input:focus{outline:none;border-color:var(--color-brass);box-shadow:var(--shadow-inner),0 0 0 3px var(--color-accent-subtle);background-image:none;background-color:var(--color-paper)}.search-icon{position:absolute;inset-inline-start:var(--space-4);width:1.25rem;height:1.25rem;color:var(--color-text-muted);pointer-events:none;z-index:1;transition:color var(--duration-fast) var(--ease-out)}.search-bar:focus-within .search-icon{color:var(--color-brass)}.search-spinner{position:absolute;inset-inline-end:var(--space-3);width:1.25rem;height:1.25rem;color:var(--color-brass)}input[type=text],input[type=search],input[type=email],input[type=password],textarea{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);padding:var(--space-3) var(--space-4);background:var(--color-paper);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);transition:all var(--duration-normal) var(--ease-out);box-shadow:var(--shadow-inner)}.search-bar input[type=search]{padding-left:calc(var(--space-4) + 1.25rem + var(--space-4))}input:focus,textarea:focus{outline:none;border-color:var(--color-brass);box-shadow:var(--shadow-inner),0 0 0 3px var(--color-accent-subtle)}.search-clear{position:absolute;inset-inline-end:var(--space-2);display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease-out)}.search-clear:hover{background:color-mix(in oklch,var(--color-brass) 10%,transparent);color:var(--color-text)}.search-clear:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px}.search-container{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0}.search-container .search-bar{flex:1;min-width:0}.semantic-toggle{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-paper);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--duration-normal) var(--ease-out);white-space:nowrap;flex-shrink:0}.semantic-toggle svg{flex-shrink:0}.semantic-toggle:hover{border-color:var(--color-brass);color:var(--color-text);background:var(--color-parchment-light)}.semantic-toggle:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px}.semantic-toggle.active{background:color-mix(in oklch,var(--color-brass) 15%,var(--color-paper));border-color:var(--color-brass);color:var(--color-brass-dark)}.semantic-toggle.active svg{color:var(--color-brass)}.toggle-label{display:none}@media(min-width:480px){.toggle-label{display:inline}}.search-mode-badge{display:inline-flex;align-items:center;margin-left:var(--space-2);padding:var(--space-1) var(--space-2);background:color-mix(in oklch,var(--color-brass) 15%,transparent);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:500;color:var(--color-brass-dark);text-transform:uppercase;letter-spacing:.05em}@media(max-width:767px){.search-bar{margin-bottom:var(--space-4)}.search-bar input{font-size:16px;padding:var(--space-3);padding-inline-start:calc(var(--space-4) + 1.25rem + var(--space-3));min-height:var(--touch-target-min);touch-action:manipulation}.search-clear{width:var(--touch-target-min);height:var(--touch-target-min)}input[type=text],input[type=search],input[type=email],input[type=password],textarea,select{min-height:var(--touch-target-min);font-size:16px}.search-container{gap:var(--space-2)}.search-container .search-bar{margin-bottom:0}.semantic-toggle{min-height:var(--touch-target-min);padding:var(--space-2)}}}@layer components.components{.badge,.stamp{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;font-variant:small-caps;letter-spacing:var(--tracking-wide);text-transform:lowercase;border:1px solid}.badge-pending,.stamp-pending{background:var(--color-accent-subtle);color:var(--color-brass);border-color:var(--color-brass-light)}.badge-processing,.stamp-processing{background:#6d29321a;color:var(--color-burgundy);border-color:var(--color-burgundy-light)}.badge-completed,.stamp-completed{background:#4a67411a;color:var(--color-success);border-color:var(--color-success)}.badge-failed,.stamp-failed{background:#8b3a3a1a;color:var(--color-error);border-color:var(--color-error)}.badge-drm,.stamp-drm{background:#a67c001a;color:var(--color-warning);border-color:var(--color-warning)}.badge-clean,.stamp-clean{background:#4a67411a;color:var(--color-success);border-color:var(--color-success)}}@layer components.components{.pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-2);margin-top:var(--space-8);flex-wrap:wrap}.pagination a,.pagination span{min-width:2.5rem;height:2.5rem;display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-paper);color:var(--color-text);text-decoration:none;font-size:var(--text-sm);font-weight:500;transition:all var(--duration-normal) var(--ease-out)}.pagination a:hover{background:var(--color-parchment-light);border-color:var(--color-brass);color:var(--color-brass);box-shadow:var(--shadow-sm)}.pagination .current{background:var(--color-brass);color:var(--color-parchment-light);border-color:var(--color-brass);box-shadow:var(--shadow-sm)}.pagination .disabled,.pagination a[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}}@layer components.components{.table-container{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-lg)}.table,.data-table{width:100%;border-collapse:collapse;min-width:500px;contain:layout}:is(.table,.data-table) th,:is(.table,.data-table) td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border)}:is(.table,.data-table) th{font-weight:600;font-family:var(--font-serif);background:var(--color-parchment-dark);white-space:nowrap;color:var(--color-text)}:is(.table,.data-table) tbody tr:nth-child(2n){background:#b8860b08}:is(.table,.data-table) tr:hover{background:var(--color-parchment-light);box-shadow:inset 0 0 20px #b8860b0d}:is(.table,.data-table) tr:hover td{border-bottom-color:var(--color-brass-light)}.card-list{display:none}.card-list-item{background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4)}.card-list-item .item-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3)}.card-list-item .item-title{font-weight:600;font-family:var(--font-serif);flex:1}.card-list-item .item-meta{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-2)}.card-list-item .item-actions{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);display:flex;gap:var(--space-2);flex-wrap:wrap}}@layer components.components{.toast-container{position:fixed;bottom:var(--space-4);right:var(--space-4);display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-3);z-index:var(--z-toast);pointer-events:none;max-width:calc(100vw - var(--space-8))}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);background:var(--color-paper);box-shadow:var(--shadow-xl);border-left:4px solid var(--color-brass);animation:slideIn var(--duration-normal) var(--ease-out);pointer-events:auto;max-width:400px;min-width:280px;color:var(--color-text)}.toast-dismissing{animation:slideOut var(--duration-normal) var(--ease-in) forwards}.toast-icon{flex-shrink:0;width:20px;height:20px}.toast-message{flex:1;font-size:var(--text-sm);line-height:var(--leading-snug)}.toast-close{flex-shrink:0;padding:var(--space-1);margin:calc(-1 * var(--space-1));background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-muted);transition:color var(--duration-fast),background var(--duration-fast)}.toast-close:hover{color:var(--color-text);background:#ffffff1a}.toast-close:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px}.toast-success{border-left-color:var(--color-success, #4caf50);background:linear-gradient(to right,rgba(76,175,80,.1) 0%,var(--color-paper) 30%)}.toast-success .toast-icon{color:var(--color-success, #4caf50)}.toast-error{border-left-color:var(--color-error, #f44336);background:linear-gradient(to right,rgba(244,67,54,.1) 0%,var(--color-paper) 30%)}.toast-error .toast-icon{color:var(--color-error, #f44336)}.toast-warning{border-left-color:var(--color-warning, #ff9800);background:linear-gradient(to right,rgba(255,152,0,.1) 0%,var(--color-paper) 30%)}.toast-warning .toast-icon{color:var(--color-warning, #ff9800)}.toast-info{border-left-color:var(--color-brass);background:linear-gradient(to right,rgba(184,134,11,.1) 0%,var(--color-paper) 30%)}.toast-info .toast-icon{color:var(--color-brass)}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@media(max-width:480px){.toast-container{left:var(--space-4);right:var(--space-4);align-items:stretch}.toast{max-width:none;min-width:0}}@media(prefers-reduced-motion:reduce){.toast{animation:fadeIn var(--duration-normal) var(--ease-out)}.toast-dismissing{animation:fadeOut var(--duration-normal) var(--ease-in) forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}}}@layer components.components{.modal-backdrop,.modal-overlay{position:fixed;inset:0;background:#1a1510d9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:9998;animation:fadeIn .2s ease-out}.modal-dialog,.modal-content{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--color-parchment-dark);border:2px solid var(--color-brass);border-radius:var(--radius-lg);box-shadow:0 20px 60px #000000b3,0 0 0 1px var(--color-accent-border);max-width:700px;width:90%;max-height:85vh;display:flex;flex-direction:column;z-index:9999;animation:slideIn .25s var(--ease-out)}:is(.modal-dialog,.modal-content).modal-sm{max-width:500px}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.75rem;border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-header h2{margin:0;color:var(--color-brass);font-size:1.375rem;font-weight:600;letter-spacing:var(--tracking-tight)}.modal-close,.btn-close{background:none;border:none;font-size:1.75rem;color:var(--color-text-muted);cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;transition:all .2s ease;border-radius:var(--radius-sm)}:is(.modal-close,.btn-close):hover{color:var(--color-brass);background:var(--color-accent-subtle)}.modal-body{padding:1.75rem;overflow-y:auto;flex:1}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1.25rem 1.75rem;border-top:1px solid var(--color-border);flex-shrink:0;background:var(--color-parchment)}.modal-form{display:flex;flex-direction:column;gap:1.5rem}.form-section{display:flex;flex-direction:column;gap:.875rem;padding-bottom:1.25rem;border-bottom:1px solid var(--color-border-subtle)}.form-section:last-child{border-bottom:none;padding-bottom:0}.form-section h3{margin:0 0 .5rem;color:var(--color-brass);font-size:1.0625rem;font-weight:600;letter-spacing:var(--tracking-tight);border-bottom:1px solid var(--color-brass-dark);padding-bottom:.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;color:var(--color-brass);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-hint{font-weight:400;color:var(--color-parchment);text-transform:none;letter-spacing:normal;font-size:.75rem;font-style:italic}.modal-form input[type=text],.modal-form input[type=email],.modal-form input[type=password],.modal-form input[type=number],.modal-form input[type=date],.modal-form textarea,.modal-form select{width:100%;padding:.625rem .875rem;background:var(--color-paper);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-sans);font-size:.9375rem;transition:all var(--duration-normal) var(--ease-out);box-shadow:var(--shadow-inner)}:is(.modal-form input[type=text],.modal-form input[type=email],.modal-form input[type=password],.modal-form input[type=number],.modal-form input[type=date],.modal-form textarea,.modal-form select):focus{outline:none;border-color:var(--color-brass);box-shadow:var(--shadow-inner),0 0 0 3px var(--color-accent-subtle)}:is(.modal-form input[type=text],.modal-form input[type=email],.modal-form input[type=password],.modal-form input[type=number],.modal-form input[type=date],.modal-form textarea,.modal-form select)::placeholder{color:var(--color-text-light);font-style:italic}.modal-form textarea{min-height:100px;resize:vertical}.modal-form select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23d4a942' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.5rem}.file-input-wrapper{position:relative;overflow:hidden;display:inline-block;width:100%}.file-input-button{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1rem;background:var(--color-brass);color:var(--color-parchment-dark);border:none;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--duration-normal) var(--ease-out);width:100%;justify-content:center}.file-input-button:hover{background:var(--color-brass-light);box-shadow:var(--shadow-sm)}.file-input-wrapper input[type=file]{position:absolute;left:0;top:0;opacity:0;cursor:pointer;width:100%;height:100%}.file-name{margin-top:.5rem;font-size:.8125rem;color:var(--color-text-muted);font-style:italic}.warning-box{background:#c995201a;border-left:4px solid var(--color-warning);padding:1rem 1.25rem;border-radius:var(--radius-md);margin:1rem 0;color:var(--color-text)}.warning-box strong{color:var(--color-warning);display:block;margin-bottom:.5rem}.error-message{background:#b85d5d1a;border-left:4px solid var(--color-error);padding:.875rem 1.125rem;border-radius:var(--radius-md);margin-top:.75rem;color:var(--color-error);font-size:.875rem}.modal-footer .btn-danger{background:var(--color-burgundy);color:var(--color-parchment-light)}.modal-footer .btn-danger:hover{background:var(--color-burgundy-hover);box-shadow:var(--shadow-md)}.quality-warning-modal{max-width:600px;z-index:10000}.warning-message{background:#c995201a;border:2px solid var(--color-warning);border-radius:var(--radius-md);padding:var(--space-5);color:var(--color-text)}.warning-message p{margin:0 0 var(--space-3) 0;line-height:var(--leading-relaxed)}.quality-details{background:var(--color-parchment-dark);border-radius:var(--radius-sm);padding:var(--space-4);margin:var(--space-4) 0;border-left:3px solid var(--color-brass)}.quality-details p{margin:var(--space-2) 0;font-size:var(--text-sm)}.quality-details strong{color:var(--color-brass)}.quality-explanation{font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic;margin-top:var(--space-4)}.btn-warning{background:var(--color-warning);color:var(--color-parchment-dark);font-weight:600}.btn-warning:hover{background:var(--color-warning-hover);box-shadow:var(--shadow-md)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{transform:translate(-50%,-48%);opacity:0}to{transform:translate(-50%,-50%);opacity:1}}.add-to-collection-modal{max-width:500px}.collection-list{display:flex;flex-direction:column;gap:var(--space-3);max-height:400px;overflow-y:auto;margin-top:var(--space-4)}.collection-item{width:100%;padding:var(--space-3) var(--space-4);background:var(--color-paper);border:1.5px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);text-align:left}.collection-item:hover:not(:disabled){background:var(--color-parchment-light);border-color:var(--color-brass);box-shadow:var(--shadow-sm)}.collection-item:active:not(:disabled){transform:scale(.99)}.collection-item:disabled{opacity:.5;cursor:not-allowed}.collection-item-content{display:flex;flex-direction:column;gap:var(--space-1)}.collection-item-name{font-family:var(--font-serif);font-size:var(--text-base);font-weight:600;color:var(--color-text)}.collection-item-description{font-size:var(--text-sm);color:var(--color-text-muted);line-height:var(--leading-relaxed);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.collection-item-meta{font-size:var(--text-xs);color:var(--color-brass);font-weight:500}@media(max-width:640px){.modal-dialog,.modal-content{width:95%;max-height:90vh}.modal-header,.modal-body,.modal-footer{padding:1rem 1.25rem}.modal-footer{flex-direction:column-reverse}.modal-footer .btn{width:100%}.form-row{grid-template-columns:1fr}.form-section{gap:.75rem}.collection-list{max-height:300px}}}@layer components.components{.progress-container{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);contain:layout style paint}.progress-file-info{font-size:var(--text-sm);color:var(--color-text);text-align:center;font-weight:500}.progress-file-name{color:var(--color-brass-light);font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.progress-file-count{color:var(--color-text-muted);font-size:var(--text-xs);margin-top:var(--space-1);display:block}.progress-bar{height:8px;background:#1e191480;border-radius:var(--radius-full);overflow:hidden;position:relative;border:1px solid rgba(184,134,11,.2)}.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-brass) 0%,var(--color-brass-light) 50%,var(--color-brass) 100%);background-size:200% 100%;border-radius:var(--radius-full);transition:width .3s var(--ease-out);will-change:width;animation:shimmer 2s ease-in-out infinite}@keyframes shimmer{0%{background-position:-100% 0}to{background-position:200% 0}}.progress-percentage{margin-top:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--color-brass);text-align:center;font-variant-numeric:tabular-nums}.progress-container.success .progress-bar{background:#6b8c5f33;border-color:#6b8c5f4d}.progress-container.success .progress-fill{background:var(--color-success, #6b8c5f);animation:none}.progress-container.success .progress-percentage{color:var(--color-success, #6b8c5f)}.progress-container.error .progress-bar{background:#b85d5d33;border-color:#b85d5d4d}.progress-container.error .progress-fill{background:var(--color-error, #b85d5d);animation:none}.progress-container.error .progress-percentage{color:var(--color-error, #b85d5d)}@media(prefers-reduced-motion:reduce){.progress-fill{animation:none;transition:width .01ms}}@container upload-container (max-width: 500px){.progress-file-info{font-size:var(--text-xs)}.progress-file-count{font-size:.65rem}.progress-percentage{font-size:var(--text-xs)}}@supports not (container-type: inline-size){@media(max-width:500px){.progress-file-info{font-size:var(--text-xs)}.progress-file-count{font-size:.65rem}.progress-percentage{font-size:var(--text-xs)}}}}@layer components.components{.icon{display:inline-block;vertical-align:middle}.icon-sm{width:1rem;height:1rem}.icon-md{width:1.25rem;height:1.25rem}.icon-lg{width:2rem;height:2rem}.icon-xl{width:4rem;height:4rem}.icon-checkmark{display:inline-flex;align-items:center;justify-content:center;width:1.5em;height:1.5em;position:relative}.icon-checkmark:before{content:"";width:.4em;height:.8em;border:solid currentColor;border-width:0 .15em .15em 0;transform:rotate(45deg);position:absolute;top:.15em}.icon-close{display:inline-flex;align-items:center;justify-content:center;width:1.5em;height:1.5em;position:relative}.icon-close:before,.icon-close:after{content:"";position:absolute;width:.125rem;height:100%;background:currentColor;border-radius:1px}.icon-close:before{transform:rotate(45deg)}.icon-close:after{transform:rotate(-45deg)}}@layer features.features{.stats-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-5);margin-bottom:var(--space-8)}.stat-card{display:flex;align-items:center;gap:var(--space-4);background:linear-gradient(135deg,#1e1914f2,#14100dfa);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);border:1px solid rgba(184,134,11,.25);box-shadow:0 2px 8px #0006,inset 0 1px #ffffff0d;position:relative;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all var(--duration-normal) var(--ease-out)}.stat-card:hover{transform:translateY(-2px);border-color:var(--color-brass);box-shadow:0 4px 16px #00000080,0 0 20px #d4a94226}.stat-card:before{content:"";position:absolute;inset:0;background-image:radial-gradient(ellipse at 20% 30%,rgba(0,0,0,.2) 0%,transparent 40%),radial-gradient(ellipse at 80% 70%,rgba(0,0,0,.15) 0%,transparent 35%);border-radius:inherit;pointer-events:none;opacity:.5}.stat-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#d4a9421a;border:1px solid rgba(212,169,66,.3);border-radius:var(--radius-md);color:var(--color-brass);flex-shrink:0;position:relative;z-index:1}.stat-card:hover .stat-icon{background:#d4a94226;border-color:var(--color-brass);color:var(--color-brass-light)}.stat-content{position:relative;z-index:1;min-width:0}.stat-number{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:700;color:var(--color-brass);line-height:1.1;margin:0;letter-spacing:-.02em}.stat-card:hover .stat-number{color:var(--color-brass-light)}.stat-label{font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin:var(--space-1) 0 0 0}.stat-card.stat-highlight{border-color:#4caf504d}.stat-card.stat-highlight .stat-icon{background:#4caf501a;border-color:#4caf504d;color:#4caf50}.stat-card.stat-highlight .stat-number{color:#4caf50}.stat-card.stat-highlight:hover{border-color:#4caf50}.stat-card.stat-highlight:hover .stat-icon{background:#4caf5026;border-color:#4caf50;color:#66bb6a}.stat-card.stat-highlight:hover .stat-number{color:#66bb6a}.stats-showcase{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-6);margin-bottom:var(--space-8)}.stat-card.stat-warning h3,.stat-card.processing h3{color:var(--color-warning)}.stat-card.stat-error h3,.stat-card.failed h3{color:var(--color-error)}.stat-card.stat-info h3{color:var(--color-brass)}.stat-card.selected{border:2px solid var(--color-brass);box-shadow:0 0 0 3px #d4a94233,var(--shadow-md);transform:scale(1.02)}.error-cell details,.item-error details{margin-top:var(--space-2)}.error-cell summary,.item-error summary{cursor:pointer;color:var(--color-error);font-size:var(--text-sm);-webkit-user-select:none;user-select:none}.error-cell summary:hover,.item-error summary:hover{color:var(--color-burgundy-hover)}.error-cell code,.item-error code{display:block;margin-top:var(--space-2);padding:var(--space-3);background:#b85d5d1a;border-left:3px solid var(--color-error);border-radius:var(--radius-sm);color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-relaxed);white-space:pre-wrap;word-break:break-word}.admin-stats,.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-6);margin-bottom:var(--space-12)}.stats-grid .card{text-align:left;background:linear-gradient(135deg,#1e1914f2,#14100dfa);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);border:1px solid rgba(184,134,11,.2);border-left:3px solid var(--color-brass);box-shadow:0 2px 8px #0006,inset 0 1px #ffffff0d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.stats-grid .card:before{content:"";position:absolute;inset:0;background-image:radial-gradient(ellipse at 20% 30%,rgba(0,0,0,.2) 0%,transparent 40%),radial-gradient(ellipse at 80% 70%,rgba(0,0,0,.15) 0%,transparent 35%),radial-gradient(ellipse at 40% 80%,rgba(0,0,0,.1) 0%,transparent 30%),radial-gradient(ellipse at 90% 20%,rgba(0,0,0,.12) 0%,transparent 25%);border-radius:inherit;pointer-events:none;opacity:.6}.stats-grid .card h3{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-brass-light);font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5);position:relative;z-index:1;margin-bottom:var(--space-2)}.stats-grid .card p{color:#e5dcc8e6;font-size:var(--text-xs);font-variant:small-caps;letter-spacing:.08em;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5);position:relative;z-index:1;margin:0}.quick-actions{display:flex;gap:var(--space-4);justify-content:center;margin-top:var(--space-6)}.page-header h1{position:relative;display:inline-block;font-size:clamp(var(--text-3xl),4vw,var(--text-4xl));font-weight:700;color:var(--color-brass);letter-spacing:var(--tracking-tight);text-shadow:0 2px 4px rgba(0,0,0,.3);padding-bottom:.75rem}.page-header h1:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-brass) 0%,var(--color-brass-light) 50%,var(--color-brass) 100%);border-radius:var(--radius-full);box-shadow:0 2px 8px #d4a9424d;pointer-events:none}.stats-card{transition:all var(--duration-normal) var(--ease-out);cursor:default}.stats-card:hover{transform:translateY(-4px) scale(1.02);border-color:var(--color-brass-light);box-shadow:0 8px 24px #0006,0 0 40px #d4a94233,inset 0 1px #d4a9424d}.stats-card:hover .stats-value{color:var(--color-brass-light);text-shadow:0 0 20px rgba(212,169,66,.5)}.stats-card:hover .stats-label{color:var(--color-parchment-light)}.search-bar{position:relative;display:flex;align-items:center;gap:var(--space-2)}.search-input{transition:all var(--duration-normal) var(--ease-out)}.search-input:focus{box-shadow:var(--shadow-inner),0 0 0 3px #d4a94233,0 4px 12px #0000004d}.search-clear{position:absolute;right:.75rem;background:none;border:none;color:var(--color-text-muted);font-size:1.25rem;cursor:pointer;padding:.25rem;border-radius:var(--radius-sm);transition:all .2s ease;opacity:0;pointer-events:none}.search-bar:has(.search-input:not(:placeholder-shown)) .search-clear{opacity:1;pointer-events:auto}.search-clear:hover{color:var(--color-brass);background:#d4a9421a;transform:scale(1.1)}.search-spinner{position:absolute;right:3rem;width:1rem;height:1rem;border:2px solid rgba(212,169,66,.2);border-top-color:var(--color-brass);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.search-results-info{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:#d4a9421a;border-left:3px solid var(--color-brass);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text)}.search-results-info strong{color:var(--color-brass);font-weight:600}.books-controls{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.view-mode-toggle{display:flex;gap:0;border:1.5px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-parchment-dark)}.view-mode-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-3) var(--space-5);background:transparent;border:none;color:var(--color-text-muted);font-size:var(--text-base);font-weight:500;cursor:pointer;transition:all .2s ease;border-right:1px solid var(--color-border);min-height:44px;min-width:80px}.view-mode-btn:last-child{border-right:none}.view-mode-btn:hover{background:#d4a9421a;color:var(--color-brass)}.view-mode-btn.active{background:var(--color-brass);color:var(--color-parchment-dark);font-weight:600}.sort-select{padding:var(--space-3) var(--space-5);background:var(--color-paper);border:1.5px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-base);font-weight:500;cursor:pointer;transition:all .2s ease;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23d4a942' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.5rem;min-height:44px}.sort-select:hover{border-color:var(--color-brass);box-shadow:0 2px 8px #0003}.sort-select:focus{outline:none;border-color:var(--color-brass);box-shadow:0 0 0 3px #d4a94226}.keyboard-hints{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:#d4a9420d;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--color-text-muted);justify-content:center}.keyboard-hints kbd{display:inline-block;padding:.125rem .375rem;background:var(--color-parchment-dark);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--color-brass);box-shadow:0 1px 2px #0003}@media(max-width:768px){.keyboard-hints{display:none}.view-mode-btn,.sort-select{min-height:48px;padding:var(--space-3) var(--space-5)}.stats-section{grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.stat-card{padding:var(--space-3) var(--space-4);gap:var(--space-3)}.stat-icon{width:40px;height:40px}.stat-number{font-size:var(--text-xl)}}@media(max-width:640px){.books-controls{flex-direction:column;align-items:stretch}.view-mode-toggle,.sort-select{width:100%}}@media(max-width:480px){.stats-section{grid-template-columns:1fr}.stat-card{padding:var(--space-4)}.stat-icon{width:44px;height:44px}.stat-number{font-size:var(--text-2xl)}}}@layer features{@layer features{.book-detail-page{max-width:1400px;margin:0 auto;padding:var(--space-6)}.book-detail-header{margin-bottom:var(--space-6)}.book-detail-title{font-family:var(--font-serif);font-size:clamp(var(--text-2xl),4vw,var(--text-4xl));font-weight:700;line-height:var(--leading-tight);color:var(--color-text);margin:0 0 var(--space-2) 0}.book-detail-author{font-size:var(--text-xl);color:var(--color-brass-light);font-style:italic;margin:0}.book-detail-year{font-size:var(--text-base);color:var(--color-text-muted);display:block;margin-top:var(--space-1)}.book-detail-layout{display:grid;grid-template-columns:minmax(200px,260px) 1fr;gap:clamp(var(--space-6),3vw,var(--space-8));align-items:start}.book-detail-sidebar{position:sticky;top:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.book-detail-cover img{width:100%;height:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);background:var(--color-parchment-dark);transition:transform .3s ease,box-shadow .3s ease}.book-cover-placeholder-large{width:100%;aspect-ratio:2/3;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-parchment-light) 0%,var(--color-paper) 100%);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-size:var(--text-6xl)}.skeleton-cover-large{width:100%;aspect-ratio:2/3;border-radius:var(--radius-lg)}.book-reading-progress{padding:var(--space-4);background:#b8860b1a;border:1px solid var(--color-brass);border-radius:var(--radius-md)}.progress-bar-large{height:8px;background:#0000004d;border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-3)}.progress-bar-large .progress-fill{height:100%;background:linear-gradient(90deg,var(--color-brass) 0%,var(--color-brass-light) 100%);transition:width .3s ease;border-radius:inherit}.progress-info{display:flex;flex-direction:column;gap:var(--space-1)}.progress-percentage{display:flex;align-items:center;gap:var(--space-2);font-weight:600;font-size:var(--text-sm);color:var(--color-brass-light)}.progress-updated{font-size:var(--text-xs);color:var(--color-text-muted)}.book-detail-actions{display:flex;gap:var(--space-2);align-items:center;justify-content:center;flex-wrap:wrap}.book-detail-actions .btn-icon{width:44px;height:44px;border-radius:var(--radius-md);background:transparent;border:1.5px solid var(--color-brass);color:var(--color-brass);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;text-decoration:none}.book-detail-actions .btn-icon:hover{background:var(--color-parchment-dark);border-color:var(--color-brass-light);color:var(--color-brass-light);transform:translateY(-1px)}.book-detail-actions .btn-icon-danger{border-color:var(--color-text-muted);color:var(--color-text-muted)}.book-detail-actions .btn-icon-danger:hover{background:#d32f2f26;border:1.5px solid #ef5350;color:#ef5350}.book-detail-main{min-width:0;max-width:none;margin:0;padding:0;background:none;border-radius:0;box-shadow:none}.book-detail-main .book-tabs{display:flex;gap:var(--space-1);border-bottom:2px solid var(--color-border-subtle);margin:0 0 var(--space-6) 0;padding:0;align-items:flex-end}.book-tab-settings{margin-left:auto;padding:var(--space-2);background:none;border:none;color:var(--color-text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .2s ease;align-self:center}.book-tab-settings:hover{color:var(--color-brass)}.book-tab-settings .icon{width:20px;height:20px}.book-tab{padding:0 var(--space-6) var(--space-2) var(--space-6);margin:0;background:none;border:none;border-bottom:3px solid transparent;color:var(--color-text-muted);font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600;line-height:1;cursor:pointer;transition:all .2s ease;position:relative;bottom:-2px}.book-tab:before{content:"";position:absolute;bottom:-2px;left:0;right:0;height:3px;background:var(--color-brass);transform:scaleX(0);transition:transform .2s ease}.book-tab:hover{color:var(--color-brass-light);background:#b8860b14;border-radius:var(--radius-sm) var(--radius-sm) 0 0}.book-tab:hover:before{transform:scaleX(1)}.book-tab-active{color:var(--color-brass);border-bottom-color:transparent}.book-tab-active:before{transform:scaleX(1)}.book-tab-content{min-height:400px;width:100%;opacity:1;transition:opacity .2s ease}.book-tab-content[data-pending=true]{opacity:.6}.book-overview{display:flex;flex-direction:column;gap:var(--space-6)}.book-description h2{font-family:var(--font-serif);font-size:var(--text-2xl);font-weight:600;color:var(--color-brass);margin-bottom:var(--space-4)}.book-description p{color:var(--color-text);font-size:var(--text-lg);line-height:var(--leading-relaxed)}.book-quality-badge{padding:var(--space-3) var(--space-4);background:#b8860b1a;border:1px solid var(--color-brass);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-sm);width:fit-content;font-weight:600;letter-spacing:.02em}.book-metadata-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--space-4);width:100%}.metadata-item{padding:var(--space-4);background:var(--color-parchment-dark);border-radius:var(--radius-md);border:1px solid var(--color-border);transition:all .2s ease}.metadata-item:hover{transform:translateY(-2px);border-color:var(--color-brass);box-shadow:0 4px 12px #0003}.metadata-item dt{font-size:var(--text-sm);color:var(--color-text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.metadata-item dd{font-size:var(--text-lg);color:var(--color-text);margin:0;font-weight:500}.book-detail-content{display:grid;grid-template-columns:300px 1fr;gap:var(--space-10);align-items:start}.book-detail-cover{position:sticky;top:var(--space-6)}.book-detail-cover img{width:100%;height:auto;max-height:450px;object-fit:contain;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);background:var(--color-parchment-dark);transition:transform .3s ease,box-shadow .3s ease}.book-detail-cover img:hover{transform:scale(1.02);box-shadow:0 15px 40px #00000080,0 0 60px #b8860b26}.book-detail-info{min-width:0;display:flex;flex-direction:column;gap:var(--space-4)}.book-detail-info h1{font-family:var(--font-serif);font-size:var(--text-4xl);font-weight:700;line-height:var(--leading-tight);color:var(--color-text);margin:0 0 var(--space-3) 0}.book-detail-info .book-publisher,.book-detail-info .book-year,.book-detail-info .book-language{color:var(--color-text-muted);font-size:var(--text-base);margin:var(--space-1) 0}.book-detail-info .book-description{margin-top:var(--space-4)}.book-detail-info .book-description h2{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:600;color:var(--color-brass);margin-bottom:var(--space-3)}.book-detail-info .book-meta{display:flex;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-3);background:var(--color-parchment-dark);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-muted)}.book-detail-info .book-quality{padding:var(--space-2) var(--space-3);background:var(--color-parchment-light);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-muted)}.book-detail-info .book-actions{display:flex;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-4)}.book-chat-section{margin-top:var(--space-8);background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6)}.book-chat-section h2{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--color-brass);margin-bottom:var(--space-4)}.book-detail-container{max-width:1400px;margin:0 auto;padding:var(--space-6)}.book-detail-grid{display:grid;grid-template-columns:300px 1fr;gap:var(--space-10);align-items:start}.book-detail-cover-column{position:sticky;top:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.book-detail-cover-img{width:100%;height:auto;max-height:450px;object-fit:contain;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);background:var(--color-parchment-dark)}.book-cover-placeholder.large{width:100%;aspect-ratio:2/3;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-parchment-light) 0%,var(--color-paper) 100%);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.book-cover-placeholder.large span{font-size:var(--text-6xl);font-weight:700;color:var(--color-brass);font-family:var(--font-serif)}.book-actions{display:flex;flex-direction:column;gap:var(--space-3)}.book-actions .btn{width:100%;justify-content:center}.book-actions .stamp{width:100%;text-align:center}.book-detail-content-column{min-width:0;display:flex;flex-direction:column;gap:.5rem}.book-header{border-bottom:2px solid var(--color-border-subtle);padding-bottom:var(--space-6)}.book-title{font-family:var(--font-serif);font-size:var(--text-4xl);font-weight:700;line-height:var(--leading-tight);color:var(--color-text);margin:0 0 var(--space-3) 0}.book-authors{font-size:var(--text-xl);color:var(--color-brass-light);font-style:italic;font-weight:500;margin:0}.section-title{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:600;color:var(--color-brass);margin:0 0 var(--space-4) 0;border-bottom:1px solid var(--color-border-subtle);padding-bottom:var(--space-2)}.book-enrichment-section{background:linear-gradient(135deg,#1e191466,#14100d80);padding:var(--space-6);border-radius:var(--radius-lg);border:1px solid rgba(184,134,11,.2);box-shadow:var(--shadow-md);position:relative}.book-enrichment-section:before{content:"";position:absolute;inset:0;background-image:radial-gradient(ellipse at 15% 25%,rgba(58,47,40,.08) 0%,transparent 40%),radial-gradient(ellipse at 75% 65%,rgba(58,47,40,.06) 0%,transparent 35%);border-radius:inherit;pointer-events:none}.enrichment-content{position:relative;display:flex;flex-direction:column;gap:var(--space-4)}.enrichment-item{display:flex;align-items:flex-start;gap:var(--space-3)}.enrichment-label{font-weight:600;color:var(--color-text-muted);font-variant:small-caps;letter-spacing:var(--tracking-wide);min-width:80px;flex-shrink:0}.badge-genre{background:#b8860b26;color:var(--color-brass-light);border:1px solid var(--color-brass);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 2px 4px #0003}.series-info{color:var(--color-text);font-weight:500}.series-position{color:var(--color-brass-light);font-weight:700;margin-left:var(--space-1)}.subjects-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag{display:inline-block;padding:var(--space-1) var(--space-3);background:#b8860b1a;color:var(--color-brass);border:1px solid rgba(184,134,11,.3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500}.enrichment-meta{margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px solid rgba(184,134,11,.2)}.enrichment-meta small{color:var(--color-text-light);font-size:var(--text-xs);font-style:italic}.book-description-section{line-height:var(--leading-loose)}.description-text{color:var(--color-text);font-size:var(--text-base);white-space:pre-wrap}.book-metadata{display:grid;gap:var(--space-3)}.metadata-row{display:grid;grid-template-columns:120px 1fr;gap:var(--space-3);align-items:baseline;font-size:var(--text-sm);padding:var(--space-2) 0;border-bottom:1px solid rgba(184,134,11,.1)}.metadata-row:last-child{border-bottom:none}.metadata-row dt{color:var(--color-text-muted);font-weight:600;font-variant:small-caps;letter-spacing:var(--tracking-wide)}.metadata-row dd{color:var(--color-text);margin:0}.book-stats-section{background:linear-gradient(135deg,#1e191480,#14100d99);padding:var(--space-6);border-radius:var(--radius-lg);border-left:3px solid var(--color-brass);box-shadow:var(--shadow-md)}.stats-grid-small{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4)}.stat-card{background:#2a241980;padding:var(--space-5);border-radius:var(--radius-md);border:1px solid rgba(184,134,11,.2);text-align:center}.stat-value{font-size:var(--text-3xl);font-weight:700;color:var(--color-brass-light);font-family:var(--font-serif);margin-bottom:var(--space-2)}.stat-label{font-size:var(--text-sm);color:var(--color-text-muted);font-variant:small-caps;letter-spacing:var(--tracking-wide);margin-bottom:var(--space-3)}.stat-meta{margin-top:var(--space-2)}.badge-success{background:#2e7d3233;color:#81c784;border:1px solid rgba(129,199,132,.3);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600}.badge-muted{background:#9e9e9e1a;color:var(--color-text-light);border:1px solid rgba(158,158,158,.2);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600}.badge-error{background:#d32f2f33;color:#ef5350;border:1px solid rgba(239,83,80,.3);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600}.stamp-success{background:#2e7d3226;color:#81c784;border-color:#81c784}.stamp-error{background:#d32f2f26;color:#ef5350;border-color:#ef5350}.book-section{margin-bottom:var(--space-4);border-radius:var(--radius-lg);background:linear-gradient(135deg,#1e19144d,#14100d66);border:1px solid rgba(184,134,11,.15);overflow:hidden;transition:all .2s ease}.book-section:hover{border-color:#b8860b66;box-shadow:0 2px 8px #0003,0 0 20px #b8860b1a}.section-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);background:none;border:none;cursor:pointer;text-align:left;transition:background-color .2s ease}.section-header:hover{background-color:#b8860b14}.section-header:focus{outline:2px solid var(--color-brass);outline-offset:-2px}.section-header .section-title{margin:0;border:none;padding:0;font-family:var(--font-serif);font-size:var(--text-xl);font-weight:600;color:var(--color-brass);transition:color .2s ease}.section-header:hover .section-title{color:var(--color-brass-light)}.section-toggle{font-size:var(--text-2xl);font-weight:300;color:var(--color-brass);line-height:1;min-width:1.5rem;text-align:center;transition:transform .3s ease,color .2s ease}.section-header:hover .section-toggle{color:var(--color-brass-light);transform:scale(1.2)}.section-header[aria-expanded=true] .section-toggle{transform:rotate(180deg)}.section-header[aria-expanded=true]:hover .section-toggle{transform:rotate(180deg) scale(1.2)}.section-content{padding:0 var(--space-6) var(--space-6) var(--space-6)}.section-content>*:first-child{margin-top:0}.section-content>*:last-child{margin-bottom:0}.chat-placeholder{padding:var(--space-8) var(--space-4);text-align:center;color:var(--color-text-muted);font-style:italic}.text-muted{color:var(--color-text-muted)}@media(max-width:768px){.book-detail-page{padding:var(--space-4)}.book-detail-header{text-align:center}.book-detail-title{font-size:var(--text-2xl)}.book-detail-author{font-size:var(--text-lg)}.book-detail-layout{grid-template-columns:1fr;gap:var(--space-6)}.book-detail-sidebar{position:static;max-width:200px;margin:0 auto}.book-detail-actions{justify-content:center}.btn-icon{width:44px;height:44px}.book-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:0}.book-tabs::-webkit-scrollbar{display:none}.book-tab{flex-shrink:0;padding:var(--space-3) var(--space-4)}.book-tab-content{min-height:300px}.book-metadata-grid{grid-template-columns:1fr}}@media(max-width:768px){.book-detail-grid{grid-template-columns:1fr;gap:var(--space-6)}.book-detail-cover-column{position:static;max-width:250px;margin:0 auto}.book-title{font-size:var(--text-3xl)}.metadata-row{grid-template-columns:100px 1fr}.stats-grid-small{grid-template-columns:1fr}}.subjects-heading{font-size:var(--text-lg);margin-bottom:var(--space-3)}.subject-tags{display:flex;gap:var(--space-2);flex-wrap:wrap}}.section-header[aria-expanded=true] .section-toggle{transform:rotate(180deg)}.section-header[aria-expanded=true]:hover .section-toggle{transform:rotate(180deg) scale(1.2)}.book-tab:focus-visible{outline:3px solid var(--color-brass-light);outline-offset:-3px;box-shadow:0 0 0 5px #b8860b33}.btn-hero:focus-visible,.btn-icon:focus-visible{outline:3px solid var(--color-brass-light);outline-offset:3px;box-shadow:0 0 0 6px #b8860b33}*:focus-visible{scroll-margin:var(--space-8)}@media(prefers-contrast:high){.book-tab-active{border-bottom-width:4px}.btn-hero{border:2px solid currentColor}}@media(prefers-reduced-motion:reduce){.book-hero-cover img,.book-detail-cover img,.btn-hero,.btn-hero-primary,.btn-hero-secondary,.book-tab,.metadata-item,.section-toggle{transition:none;animation:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media(max-width:768px){.book-tab,.btn-hero{min-height:48px}}}@layer features.features{.author-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.author-card{background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);text-decoration:none;color:inherit;display:flex;align-items:center;gap:var(--space-4);transition:all var(--duration-normal) var(--ease-out);box-shadow:var(--shadow-sm)}.author-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-brass);transform:translateY(-2px)}.author-name{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:600;color:var(--color-text);margin-bottom:var(--space-1)}.author-book-count{font-weight:400;color:var(--color-text-muted)}}@layer features.features{.admin-page{max-width:1200px;margin:0 auto}.admin-page .page-header .subtitle{color:var(--color-text-muted);font-size:var(--text-base);margin-top:var(--space-2)}.admin-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-5);margin-bottom:var(--space-8)}.queue-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin-bottom:var(--space-4)}.admin-stats-grid .stat-card{display:flex;align-items:center;gap:var(--space-4);background:linear-gradient(135deg,#1e1914f2,#14100dfa);padding:var(--space-4) var(--space-5);border-radius:var(--radius-md);border:1px solid rgba(184,134,11,.25);box-shadow:0 2px 8px #0006,inset 0 1px #ffffff0d;position:relative;transition:all var(--duration-normal) var(--ease-out)}.admin-stats-grid .stat-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#d4a9421a;border:1px solid rgba(212,169,66,.3);border-radius:var(--radius-md);color:var(--color-brass);flex-shrink:0}.admin-stats-grid .stat-content{min-width:0}.admin-stats-grid .stat-content .stat-value{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:700;color:var(--color-brass);line-height:1.1;margin:0}.admin-stats-grid .stat-content .stat-label{font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin:var(--space-1) 0 0 0}.queue-stats-grid .stat-card{display:flex;flex-direction:column;gap:var(--space-1);background:linear-gradient(135deg,#1e1914f2,#14100dfa);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid rgba(184,134,11,.25);box-shadow:0 2px 8px #0006,inset 0 1px #ffffff0d;position:relative;transition:all var(--duration-normal) var(--ease-out)}.admin-stats-grid .stat-card:hover,.queue-stats-grid .stat-card:hover{transform:translateY(-2px);border-color:var(--color-brass);box-shadow:0 4px 16px #00000080,0 0 20px #d4a94226}.queue-stats-grid .stat-card .stat-label{font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin:0}.queue-stats-grid .stat-card .stat-value{font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:700;color:var(--color-brass);line-height:1.1;margin:0}.stat-card.clickable{cursor:pointer;border:1.5px solid rgba(184,134,11,.25)}.stat-card.clickable:hover{border-color:var(--color-brass)}.stat-card.clickable.active{border-color:var(--color-brass);background:linear-gradient(135deg,#28231cf2,#1e1914fa)}.stat-card.clickable.active .stat-value{color:var(--color-brass-light)}.admin-section{margin-top:var(--space-10)}.admin-section h2{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:600;color:var(--color-brass);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.queue-container{background:var(--color-paper);border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);overflow:hidden}.queue-loading{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-6);color:var(--color-text-muted)}.table-container{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:1px solid var(--color-border-subtle)}.table th{font-size:var(--text-xs);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;background:var(--color-parchment)}.table td{font-size:var(--text-sm);color:var(--color-text)}.table tbody tr{transition:background var(--duration-fast)}.table tbody tr:hover{background:var(--color-parchment)}.table tbody tr.clickable-row{cursor:pointer}.table a{color:var(--color-brass);text-decoration:none}.table a:hover{color:var(--color-brass-light);text-decoration:underline}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:600;border-radius:var(--radius-sm);text-transform:capitalize}.badge-pending{background:#d4a94226;color:var(--color-brass)}.badge-processing,.badge-active{background:#2196f326;color:#2196f3}.badge-completed{background:#4caf5026;color:#4caf50}.badge-failed{background:#f4433626;color:#f44336}.error-hint{font-size:var(--text-xs);color:var(--color-text-muted);margin-left:var(--space-2)}.table details,.item-error details{margin-top:var(--space-1)}.table summary,.item-error summary{cursor:pointer;color:var(--color-error);font-size:var(--text-xs);-webkit-user-select:none;user-select:none}.table summary:hover,.item-error summary:hover{color:var(--color-burgundy-hover)}.table code,.item-error code{display:block;margin-top:var(--space-2);padding:var(--space-2);background:#b85d5d1a;border-left:3px solid var(--color-error);border-radius:var(--radius-sm);color:var(--color-text);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-relaxed);white-space:pre-wrap;word-break:break-word;max-height:150px;overflow-y:auto}.card-list{display:none}.card-list-item{display:block;padding:var(--space-4);border-bottom:1px solid var(--color-border-subtle);text-decoration:none;color:var(--color-text);transition:background var(--duration-fast)}.card-list-item:hover{background:var(--color-parchment)}.card-list-item:last-child{border-bottom:none}.item-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)}.item-title{font-weight:500;color:var(--color-text)}.item-meta{font-size:var(--text-sm);color:var(--color-text-muted)}.item-actions{display:flex;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle)}.item-link{display:block;text-decoration:none;color:inherit}.job-actions{display:flex;gap:var(--space-2)}.queue-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-4);border-bottom:1px solid var(--color-border-subtle);background:var(--color-parchment)}.item-error{margin-top:var(--space-2)}.queue-container .empty-state{min-height:auto;padding:var(--space-8)}.queue-container .empty-state p{margin:0}@media(max-width:768px){.queue-stats-grid{grid-template-columns:repeat(2,1fr)}.table-container{display:none}.card-list{display:block}}@media(max-width:480px){.queue-stats-grid{grid-template-columns:1fr 1fr;gap:var(--space-2)}.queue-stats-grid .stat-card{padding:var(--space-3)}.queue-stats-grid .stat-card .stat-value{font-size:var(--text-xl)}}}@layer features.features{.chat-container{display:flex;flex-direction:column;gap:var(--space-4);width:100%}.chat-toolbar{display:flex;justify-content:flex-end;gap:var(--space-2)}.btn-icon-sm{width:36px;height:36px}.chat-suggestions{text-align:center;padding:var(--space-6) var(--space-4)}.chat-suggestions h3{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-brass);margin-bottom:var(--space-5);font-weight:600}.suggestion-chips{display:flex;flex-direction:column;gap:var(--space-3);max-width:600px;margin:0 auto}.suggestion-chip{padding:var(--space-3) var(--space-4);background:#1e191480;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;transition:all .2s ease;font-size:var(--text-base);text-align:left;line-height:1.4;position:relative;overflow:hidden;min-height:44px}.suggestion-chip:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(184,134,11,.2),transparent);transition:left .4s ease}.suggestion-chip:hover{background:var(--color-parchment-dark);border-color:var(--color-brass);transform:translateY(-2px)}.suggestion-chip:hover:before{left:100%}.chat-messages{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);background:#14100d33;border-radius:var(--radius-md);border:1px solid var(--color-border);scroll-behavior:smooth;scroll-padding-block:var(--space-4);scrollbar-width:thin;scrollbar-color:var(--color-brass) rgba(20,16,13,.5)}.chat-messages::-webkit-scrollbar{width:8px}.chat-messages::-webkit-scrollbar-track{background:#14100d80;border-radius:var(--radius-md)}.chat-messages::-webkit-scrollbar-thumb{background:var(--color-brass);border-radius:var(--radius-md);border:2px solid rgba(20,16,13,.5)}.message{position:relative;padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);max-width:min(85%,700px);line-height:1.6;animation:chatMessageSlideIn .3s ease-out;overflow-wrap:anywhere;word-break:break-word;contain:layout paint;user-select:text;-webkit-user-select:text;cursor:text}.message-content{user-select:text;-webkit-user-select:text}.message::selection,.message *::selection,.message-content::selection,.message-content *::selection{background:#b8860b;color:#1a1510}.message::-moz-selection,.message *::-moz-selection,.message-content::-moz-selection,.message-content *::-moz-selection{background:#b8860b;color:#1a1510}.message-copy-btn{position:absolute;bottom:var(--space-2);right:var(--space-2);padding:var(--space-2);background:#14100dcc;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;opacity:0;transition:all .2s ease}.message:hover .message-copy-btn{opacity:1}.message-copy-btn:hover{background:#d4a9421a;border-color:var(--color-brass);color:var(--color-brass)}.message-copy-btn.copied{color:#4caf50;border-color:#4caf50;background:#4caf501a}.code-block-wrapper{position:relative;margin:var(--space-3) 0}.code-block-wrapper pre.hljs{margin:0}.code-copy-btn{position:absolute;top:var(--space-2);right:var(--space-2);padding:var(--space-2);background:#00000080;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;opacity:0;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.code-block-wrapper:hover .code-copy-btn{opacity:1}.code-copy-btn:hover{background:#d4a94233;border-color:var(--color-brass);color:var(--color-brass)}.code-copy-btn.copied{color:#4caf50;border-color:#4caf50;background:#4caf5033}@keyframes chatMessageSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.message.user{align-self:flex-end;background:#b8860b26;border:1px solid rgba(184,134,11,.3);color:var(--color-text);padding-bottom:var(--space-10)}.message.user .message-copy-btn{background:#b8860b33}.message.user .message-copy-btn:hover{background:#b8860b4d}.message.assistant{align-self:flex-start;background:var(--color-parchment-dark);border:1px solid var(--color-border);color:var(--color-text);padding-bottom:var(--space-10)}.message.error{align-self:flex-start;background:#d32f2f33;border:1px solid rgba(239,83,80,.3);color:#ef5350}.message.loading{animation:chatMessagePulse 2s ease-in-out infinite}.message.status{align-self:flex-start;background:#b8860b1a;border:1px solid rgba(184,134,11,.2);color:var(--color-brass);padding:var(--space-3) var(--space-4);max-width:fit-content}.message.streaming{position:relative}.message.streaming:after{content:"";position:absolute;bottom:var(--space-4);left:var(--space-5);width:2px;height:1em;background:var(--color-brass);animation:streamingCursor 1s steps(2) infinite}@keyframes streamingCursor{0%,to{opacity:1}50%{opacity:0}}@keyframes chatMessagePulse{0%,to{opacity:.7}50%{opacity:1}}.status-indicator{display:flex;align-items:center;gap:var(--space-2)}.status-text{font-size:var(--text-sm);font-weight:500}.spin{animation:spin 2s linear infinite}.tool-timeline{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:#b8860b14;border:1px solid rgba(184,134,11,.2);border-radius:var(--radius-md);max-width:fit-content;animation:chatMessageSlideIn .2s ease-out}.tool-status{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted)}.tool-status--running{color:var(--color-brass)}.tool-status--completed{color:var(--color-text-muted)}.tool-status--completed .icon{color:#4caf50}.tool-status--failed{color:#ef5350}.tool-label{font-weight:500}.tool-input{color:var(--color-brass);font-size:var(--text-sm);font-style:italic;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-preview{color:var(--color-text-muted);font-size:var(--text-xs);opacity:.8}.tool-preview:before{content:"· "}.message-content p{margin:0 0 var(--space-2) 0}.message-content p:last-child{margin-bottom:0}.message-content strong{color:var(--color-brass-light);font-weight:600}.message-content em{font-style:italic;color:var(--color-brass)}.message-content code{background:#0000004d;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:monospace;font-size:var(--text-sm)}.message-content pre{background:#0006;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:var(--space-3);margin:var(--space-3) 0;overflow-x:auto;max-width:100%}.message-content pre code{background:none;padding:0;display:block;font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-relaxed);white-space:pre;overflow-wrap:normal;word-break:normal}.message-content h1,.message-content h2,.message-content h3{color:var(--color-brass-light);font-family:var(--font-serif);margin:var(--space-4) 0 var(--space-2) 0;line-height:var(--leading-tight)}.message-content h1{font-size:var(--text-2xl);font-weight:700}.message-content h2{font-size:var(--text-xl);font-weight:600}.message-content h3{font-size:var(--text-lg);font-weight:600}.message-content h1:first-child,.message-content h2:first-child,.message-content h3:first-child{margin-top:0}.message-content ul,.message-content ol{margin:var(--space-3) 0;padding-left:var(--space-6)}.message-content ul{list-style-type:disc}.message-content ol{list-style-type:decimal}.message-content li{margin:var(--space-1) 0;line-height:var(--leading-normal)}.message-content a{color:var(--color-brass-light);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color var(--duration-fast) var(--ease-out);overflow-wrap:anywhere;word-break:break-word}.message-content a:hover{color:var(--color-brass-hover);text-decoration-thickness:2px}.thinking-indicator{display:flex;flex-direction:column;gap:var(--space-2)}.thinking-text{font-size:var(--text-sm);color:var(--color-brass);font-weight:500;animation:thinkingPulse 2s ease-in-out infinite}@keyframes thinkingPulse{0%,to{opacity:.6}50%{opacity:1}}.typing-indicator{display:flex;gap:var(--space-2);padding:var(--space-2)}.typing-indicator span{width:8px;height:8px;background:var(--color-brass);border-radius:50%;animation:chatTyping 1.4s infinite}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes chatTyping{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-10px)}}.chat-input-area{display:flex;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-border);align-items:center}.chat-textarea{flex:1;resize:none;min-height:44px;max-height:120px;padding:var(--space-3) var(--space-4);background:#1e191480;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-base);font-family:inherit;line-height:1.5;overflow-y:auto;scrollbar-width:none;transition:border-color .2s ease,box-shadow .2s ease}.chat-textarea::-webkit-scrollbar{display:none}.chat-textarea::placeholder{color:var(--color-text-muted)}.chat-textarea:focus{outline:none;border-color:var(--color-brass);box-shadow:0 0 0 3px #b8860b26}.chat-textarea:disabled{opacity:.5;cursor:not-allowed}.chat-send-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:var(--color-brass);color:var(--color-parchment);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color .2s ease;flex-shrink:0}.chat-send-btn:hover:not(:disabled){background:var(--color-brass-light)}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.chat-send-btn .icon{width:20px;height:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.chat-container--standalone{max-width:100%}.chat-container--standalone .chat-messages{min-height:200px;max-height:60vh}.chat-container--panel{min-height:400px;max-height:600px;width:100%}.chat-container--embedded{min-height:300px;max-height:500px}.chat-container--embedded .chat-suggestions{padding:var(--space-4)}.chat-container--embedded .chat-suggestions h3{font-size:var(--text-xl);margin-bottom:var(--space-4)}.chat-container--embedded .suggestion-chips{max-width:500px}.chat-page{max-width:900px;margin:0 auto}.chat-page .page-header{margin-bottom:var(--space-6)}.chat-textarea:focus-visible{outline:2px solid var(--color-brass-light);outline-offset:2px}.chat-send-btn:focus-visible{outline:2px solid var(--color-brass-light);outline-offset:2px}.suggestion-chip:focus-visible{outline:2px solid var(--color-brass-light);outline-offset:2px}@media(max-width:768px){.chat-page{padding:var(--space-4)}.chat-container--standalone{min-height:350px}.chat-container--panel,.chat-container--embedded{min-height:250px;max-height:450px}.message{max-width:92%}.chat-input-area{flex-direction:row;gap:var(--space-2)}.suggestion-chip{min-height:48px}.chat-suggestions h3{font-size:var(--text-xl)}.suggestion-chips{gap:var(--space-2)}}@media(prefers-reduced-motion:reduce){.suggestion-chip,.message,.chat-textarea,.chat-send-btn{transition:none}.message{animation:none}.typing-indicator span{animation:none;opacity:.6}}@media(prefers-contrast:high){.message,.chat-textarea{border-width:2px}.chat-send-btn{border:2px solid currentColor}}.chat-settings-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-4)}.chat-settings-panel{background:var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-lg);max-width:400px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0006}.chat-settings-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);border-bottom:1px solid var(--color-border)}.chat-settings-header h2{font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-brass);margin:0}.chat-settings-content{padding:var(--space-4)}.chat-settings-content .settings-section{margin-bottom:var(--space-6)}.chat-settings-content .settings-section:last-child{margin-bottom:0}.chat-settings-content .settings-section h3{font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3)}.chat-settings-content .font-size-control{display:flex;align-items:center;justify-content:center;gap:var(--space-4);margin-bottom:var(--space-3)}.chat-settings-content .font-size-preview{min-width:80px;text-align:center;padding:var(--space-2);background:#14100d4d;border-radius:var(--radius-sm)}.chat-settings-content .font-size-value{font-family:var(--font-mono);font-weight:600;color:var(--color-brass)}.chat-settings-content .font-size-slider{width:100%;accent-color:var(--color-brass)}.chat-settings-content .font-options{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.chat-settings-content .font-option{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3);background:#14100d4d;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease}.chat-settings-content .font-option:hover{border-color:var(--color-brass)}.chat-settings-content .font-option.active{border-color:var(--color-brass);background:#b8860b26}.chat-settings-content .font-preview{font-size:var(--text-xl);font-weight:500;color:var(--color-text)}.chat-settings-content .font-label{font-size:var(--text-xs);color:var(--color-text-muted)}.chat-settings-content .text-preview{padding:var(--space-4);background:#14100d80;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text)}@media(max-width:480px){.chat-settings-content .font-options{grid-template-columns:repeat(2,1fr)}}}@layer features.features{.reader-page{--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--controls-transition: .25s cubic-bezier(.4, 0, .2, 1);display:flex;flex-direction:column;height:100dvh;width:100%;background:var(--color-paper)}@supports not (height: 100dvh){.reader-page{height:100vh}}.reader-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);padding-top:max(var(--space-3),var(--safe-area-top));padding-left:max(var(--space-4),var(--safe-area-left));padding-right:max(var(--space-4),var(--safe-area-right));background:var(--color-wood);border-bottom:2px solid var(--color-wood-medium);transition:transform var(--controls-transition),opacity var(--controls-transition);will-change:transform,opacity;contain:layout style paint}.reader-title-section{min-width:0;flex:1}.reader-title{font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-brass-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.reader-chapter-indicator{font-size:var(--text-sm);color:var(--color-brass);margin:0;opacity:.8}.reader-header-actions{display:flex;align-items:center;gap:var(--space-2)}.offline-indicator{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:color-mix(in oklch,var(--color-warning) 20%,transparent);color:var(--color-warning);border-radius:var(--radius-sm);font-size:var(--text-sm)}.offline-saved-indicator{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:color-mix(in oklch,var(--color-success) 20%,transparent);color:var(--color-success);border-radius:var(--radius-sm);font-size:var(--text-sm)}.reader-main{flex:1;display:flex;min-height:0;position:relative;background:var(--color-paper);overflow:hidden;padding:0 var(--space-6)}.reader-viewport{flex:1;position:relative;overflow:hidden;cursor:pointer;user-select:text;-webkit-user-select:text;touch-action:pan-x;overscroll-behavior:none;contain:layout style paint;-webkit-touch-callout:none}.reader-viewport iframe{-webkit-user-select:text;user-select:text}.reader-viewport>div[style*="position: absolute"]{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.minimal-progress-bar{position:fixed;bottom:0;left:0;height:3px;background:var(--color-brass);border:none;padding:0;cursor:pointer;transition:width .3s ease-out,height .15s ease;z-index:100;contain:strict}.minimal-progress-bar:hover,.minimal-progress-bar:focus{height:6px;outline:none}.minimal-progress-bar:after{content:"";position:absolute;left:0;right:0;bottom:0;height:44px;transform:translateY(50%)}.gesture-hint-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:200;animation:gestureHintFadeInOut 3s ease-out forwards}.gesture-hint{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);background:#000000d9;color:#fff;border-radius:var(--radius-lg);font-size:var(--text-sm);text-align:center;max-width:280px}.gesture-hint-zones{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);opacity:.8}.gesture-hint-zone{padding:var(--space-1) var(--space-2);background:#ffffff1a;border-radius:var(--radius-sm)}@keyframes gestureHintFadeInOut{0%{opacity:0}10%{opacity:1}80%{opacity:1}to{opacity:0}}.reader-footer{background:var(--color-wood);border-top:2px solid var(--color-wood-medium);padding:var(--space-2) var(--space-4);padding-bottom:max(var(--space-2),var(--safe-area-bottom));padding-left:max(var(--space-4),var(--safe-area-left));padding-right:max(var(--space-4),var(--safe-area-right));transition:transform var(--controls-transition),opacity var(--controls-transition);will-change:transform,opacity;contain:layout style paint}.reader-page:not(.controls-animating) .reader-header,.reader-page:not(.controls-animating) .reader-footer{will-change:auto}.reader-viewport .reader-loading,.reader-viewport .reader-error{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--color-paper)}.reader-viewport .reader-error{color:var(--color-error)}.reader-page>.reader-loading,.reader-page>.reader-error{flex:1;display:flex;align-items:center;justify-content:center;background:var(--color-paper)}.reader-page>.reader-error{flex-direction:column;gap:var(--space-4);color:var(--color-error)}.reader-page.controls-minimal .reader-header,.reader-page.controls-hidden .reader-header{transform:translateY(-100%);opacity:0;pointer-events:none}.reader-page.controls-minimal .reader-footer,.reader-page.controls-hidden .reader-footer{transform:translateY(100%);opacity:0;pointer-events:none}.reader-page.controls-minimal .reader-chat-toggle,.reader-page.controls-hidden .reader-chat-toggle{opacity:.3}.reader-page.controls-standard .reader-header,.reader-page.controls-standard .reader-footer{transform:translateY(0);opacity:1;pointer-events:auto}.reader-page.controls-advanced .reader-header{transform:translateY(0);opacity:1}@media(prefers-reduced-motion:reduce){.reader-header,.reader-footer,.minimal-progress-bar,.bottom-sheet{transition-duration:1ms!important}}@media(hover:none){.reader-viewport:before,.reader-viewport:after{content:"";position:absolute;top:0;bottom:0;width:20%;pointer-events:none;opacity:0;transition:opacity var(--duration-fast) var(--ease-out);z-index:1}.reader-viewport:before{left:0;background:linear-gradient(90deg,rgba(0,0,0,.05),transparent)}.reader-viewport:after{right:0;background:linear-gradient(-90deg,rgba(0,0,0,.05),transparent)}.reader-viewport:active:before,.reader-viewport:active:after{opacity:1}}.reader-chat-toggle{position:absolute;bottom:var(--space-4);right:var(--space-4);width:48px;height:48px;border-radius:50%;background:var(--color-wood);border:2px solid var(--color-brass);color:var(--color-brass-light);font-size:var(--text-xl);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),right var(--duration-normal) var(--ease-out);z-index:25}.reader-chat-toggle:hover{background:var(--color-wood-dark)}.reader-chat-toggle.active{background:var(--color-brass);color:var(--color-wood-dark)}.reader-chat-toggle:active{transform:scale(.95)}.bottom-sheet-overlay{position:fixed;inset:0;background:#00000080;z-index:150;animation:fadeIn var(--duration-fast) var(--ease-out)}.bottom-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--color-paper);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:0 -4px 20px #00000026;max-height:70vh;transform:translateY(0);transition:transform .3s cubic-bezier(.32,.72,0,1);overflow:hidden;display:flex;flex-direction:column;padding-bottom:var(--safe-area-bottom)}.bottom-sheet.closing{transform:translateY(100%)}.bottom-sheet-handle{width:40px;height:4px;background:var(--color-wood-medium);border-radius:2px;margin:var(--space-3) auto var(--space-2);flex-shrink:0}.bottom-sheet-header{display:flex;justify-content:space-between;align-items:center;padding:0 var(--space-4) var(--space-3);border-bottom:1px solid var(--color-wood-medium)}.bottom-sheet-header h3{margin:0;font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-ink)}.bottom-sheet-content{flex:1;overflow-y:auto;padding:var(--space-4);overscroll-behavior:contain}.mobile-quick-controls{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);padding:var(--space-2) 0}.mobile-control-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-3);background:var(--color-paper-warm);border:1.5px solid var(--color-wood-medium);border-radius:var(--radius-md);color:var(--color-ink);cursor:pointer;transition:all .15s ease;position:relative}.mobile-control-btn:hover,.mobile-control-btn:active{background:var(--color-wood);border-color:var(--color-brass)}.mobile-control-btn.active{background:color-mix(in oklch,var(--color-brass) 15%,var(--color-paper));border-color:var(--color-brass)}.mobile-control-btn span{font-size:var(--text-xs);color:var(--color-ink-muted)}@media(pointer:coarse){.reader-header-actions .btn,.reader-font-controls .btn,.reader-bookmark-controls .btn,.reader-nav-controls .btn,.mobile-control-btn{position:relative}.reader-header-actions .btn:after,.reader-font-controls .btn:after,.reader-bookmark-controls .btn:after,.reader-nav-controls .btn:after{content:"";position:absolute;inset:-4px}.reader-chat-toggle:after,.bookmark-item .btn-delete:after{content:"";position:absolute;inset:-8px}}@media(max-width:767px){.reader-page{min-height:100dvh;min-height:-webkit-fill-available}.reader-header{padding:var(--space-2) var(--space-3);padding-top:max(var(--space-2),var(--safe-area-top));min-height:44px}.reader-footer{padding:var(--space-2) var(--space-3);padding-bottom:max(var(--space-2),var(--safe-area-bottom));min-height:44px}.reader-title{font-size:var(--text-base)}.reader-chapter-indicator{display:none}.reader-chat-toggle{bottom:calc(var(--space-3) + var(--safe-area-bottom));right:calc(var(--space-3) + var(--safe-area-right))}.reader-page.controls-minimal .reader-chat-toggle{bottom:calc(var(--space-8) + var(--safe-area-bottom))}.offline-indicator{display:none}}.settings-panel-overlay{position:fixed;inset:0;background:#00000080;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-4);animation:fadeIn var(--duration-fast) var(--ease-out)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.settings-panel{background:var(--color-paper);border-radius:var(--radius-lg);border:2px solid var(--color-wood-medium);width:100%;max-width:420px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;animation:slideUp var(--duration-normal) var(--ease-out);box-shadow:0 25px 50px -12px #00000080}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.settings-panel-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4);background:var(--color-wood);border-bottom:2px solid var(--color-wood-medium)}.settings-panel-header h2{margin:0;font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-brass-light)}.settings-close-btn{background:transparent;border:none;color:var(--color-brass);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm)}.settings-close-btn:hover{background:var(--color-wood-dark)}.settings-panel-content{padding:var(--space-4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-5);background:var(--color-paper)}.settings-section h3{margin:0 0 var(--space-3) 0;font-size:var(--text-sm);font-weight:600;color:var(--color-ink-muted);text-transform:uppercase;letter-spacing:.05em}.theme-options{display:flex;gap:var(--space-2)}.theme-option{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--color-paper);border:2px solid var(--color-wood-medium);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.theme-option:hover{border-color:var(--color-brass)}.theme-option.active{border-color:var(--color-brass);background:color-mix(in oklch,var(--color-brass) 10%,var(--color-paper))}.theme-option:active{transform:scale(.98)}.theme-preview{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--theme-bg);color:var(--theme-fg);display:flex;align-items:center;justify-content:center;border:1px solid var(--color-wood-medium)}.theme-option span{font-size:var(--text-sm);color:var(--color-ink)}.font-size-control{display:flex;align-items:center;gap:var(--space-3);justify-content:center}.font-size-preview{display:flex;align-items:center;justify-content:center;min-width:80px;padding:var(--space-2) var(--space-3);background:var(--color-paper-warm);border:1px solid var(--color-wood-medium);border-radius:var(--radius-sm)}.font-size-value{font-weight:600;color:var(--color-ink)}.font-size-slider{width:100%;margin-top:var(--space-2);accent-color:var(--color-brass);height:4px;cursor:pointer}.font-options{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.font-option{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2);background:var(--color-paper);border:2px solid var(--color-wood-medium);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out)}.font-option:hover{border-color:var(--color-brass)}.font-option.active{border-color:var(--color-brass);background:color-mix(in oklch,var(--color-brass) 10%,var(--color-paper))}.font-preview{font-size:var(--text-xl);color:var(--color-ink);line-height:1}.font-label{font-size:var(--text-xs);color:var(--color-ink-muted)}.line-height-options{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-2)}.line-height-option{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);padding:var(--space-2);background:var(--color-paper);border:2px solid var(--color-wood-medium);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out)}.line-height-option:hover{border-color:var(--color-brass)}.line-height-option.active{border-color:var(--color-brass);background:color-mix(in oklch,var(--color-brass) 10%,var(--color-paper))}.line-height-preview{display:flex;flex-direction:column;align-items:center;font-size:var(--text-sm);color:var(--color-ink)}.line-height-option span:last-child{font-size:var(--text-xs);color:var(--color-ink-muted)}.settings-preview .text-preview{padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-wood-medium);transition:all var(--duration-fast) var(--ease-out)}@media(max-width:480px){.settings-panel{max-height:95vh;margin:var(--space-2)}.font-options{grid-template-columns:repeat(2,1fr)}.line-height-options{grid-template-columns:repeat(3,1fr)}.theme-options{flex-wrap:wrap}.theme-option{flex:1 1 calc(33% - var(--space-2));min-width:80px}}.reader-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.reader-nav-controls{display:flex;align-items:center;gap:var(--space-2)}.reader-nav-controls .btn{width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-brass);cursor:pointer;transition:all .15s ease}.reader-nav-controls .btn:hover{background:var(--color-wood-dark);border-color:var(--color-brass-light);color:var(--color-brass-light)}.reader-chapter-select{min-width:120px;max-width:200px;padding:var(--space-2) var(--space-3);background:var(--color-paper);border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-ink);font-family:var(--font-serif);font-size:var(--text-sm);cursor:pointer;height:40px}.reader-chapter-select:focus{outline:none;border-color:var(--color-brass-light);box-shadow:0 0 0 2px #b8860b33}.reader-progress-text{margin:0;font-family:var(--font-serif);font-size:var(--text-sm);color:var(--color-brass-light);white-space:nowrap;min-width:40px}.reader-bookmark-controls,.reader-font-controls{display:flex;align-items:center;gap:var(--space-1)}.reader-font-controls .btn,.reader-bookmark-controls .btn{width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-brass);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all .15s ease}.reader-font-controls .btn:hover,.reader-bookmark-controls .btn:hover{background:var(--color-wood-dark);border-color:var(--color-brass-light);color:var(--color-brass-light)}.reader-font-select{padding:var(--space-2) var(--space-3);background:var(--color-paper);border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-ink);font-family:var(--font-serif);font-size:var(--text-sm);cursor:pointer;height:40px}.reader-font-select:focus{outline:none;border-color:var(--color-brass-light);box-shadow:0 0 0 2px #b8860b33}.bookmark-count{position:absolute;top:-4px;right:-4px;background:var(--color-brass);color:var(--color-wood-dark);font-size:var(--text-xs);font-weight:600;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center}.reader-bookmark-controls .btn{position:relative}.reader-search-inline{position:relative;display:flex;align-items:center;flex:1;max-width:300px}.reader-search-inline .search-icon{position:absolute;left:var(--space-3);color:var(--color-brass);pointer-events:none}.reader-search-input{width:100%;padding:var(--space-2) var(--space-3);padding-left:calc(var(--space-3) + 1rem + var(--space-2));background:var(--color-wood-dark);border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-brass);font-family:var(--font-serif);font-size:var(--text-sm);height:40px}.reader-search-input:focus{outline:none;border-color:var(--color-brass-light);box-shadow:0 0 0 2px #b8860b33}.reader-search-input::placeholder{color:var(--color-brass);opacity:.6}.reader-search-inline .search-status{position:absolute;right:var(--space-3);color:var(--color-brass);font-size:var(--text-sm)}.search-results-dropdown{position:absolute;bottom:100%;left:0;right:0;margin-bottom:var(--space-2);background:var(--color-wood);border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);max-height:300px;overflow-y:auto;z-index:30}.search-results-header{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-brass);border-bottom:1px solid var(--color-wood-medium)}.search-results-dropdown .search-results-list{display:flex;flex-direction:column}.search-results-dropdown .search-result-item{width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:none;border-radius:0;text-align:left;cursor:pointer;transition:background .15s ease}.search-results-dropdown .search-result-item:hover{background:var(--color-wood-dark)}.search-result-excerpt{font-size:var(--text-sm);color:var(--color-text);line-height:1.4;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-result-excerpt mark{background:var(--color-brass);color:var(--color-wood-dark);padding:0 2px;border-radius:2px}.reader-bookmark-sidebar{position:absolute;top:0;left:0;bottom:0;width:280px;background:var(--color-wood);border-right:2px solid var(--color-wood-medium);display:flex;flex-direction:column;z-index:20;transform:translate(0);transition:transform .3s ease}.reader-bookmark-sidebar.collapsed{transform:translate(-100%)}.reader-chat-sidebar{position:absolute;top:0;right:0;bottom:0;width:320px;background:var(--color-wood);border-left:2px solid var(--color-wood-medium);display:flex;flex-direction:column;z-index:20;transform:translate(0);transition:transform .3s ease}.reader-chat-sidebar.collapsed{transform:translate(100%)}.reader-chat-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-wood-medium)}.reader-chat-header h2{margin:0;font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-brass-light)}.reader-chat-header-actions{display:flex;gap:var(--space-2);align-items:center}.reader-chat-context{padding:var(--space-2) var(--space-4);font-size:var(--text-xs);color:var(--color-brass);border-bottom:1px solid var(--color-wood-medium)}.reader-chat-context p{margin:0}.reader-chat-messages{flex:1;overflow-y:auto;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.reader-chat-input{padding:var(--space-3);border-top:1px solid var(--color-wood-medium)}.reader-chat-input .chat-input-form{display:flex;gap:var(--space-2)}.reader-chat-input input{flex:1;padding:var(--space-2) var(--space-3);background:var(--color-paper);border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-ink);font-family:var(--font-serif);font-size:var(--text-sm)}.reader-chat-input input:focus{outline:none;border-color:var(--color-brass-light)}.reader-chat-input .btn{padding:var(--space-2) var(--space-3);background:var(--color-brass);border:none;border-radius:var(--radius-sm);color:var(--color-wood-dark);font-family:var(--font-serif);font-size:var(--text-sm);font-weight:600;cursor:pointer}.reader-chat-input .btn:hover{background:var(--color-brass-light)}.reader-chat-input .btn:disabled{opacity:.5;cursor:not-allowed}.reader-selection-quote{margin-bottom:var(--space-2);padding:var(--space-2);background:var(--color-wood-dark);border-left:3px solid var(--color-brass);border-radius:var(--radius-sm);font-size:var(--text-sm);font-style:italic;color:var(--color-parchment)}.reader-selection-quote p{margin:0}@media(max-width:767px){.reader-chat-sidebar{position:absolute;top:0;right:0;bottom:0;width:100%;min-width:100%}.reader-bookmark-sidebar{position:absolute;top:0;left:0;bottom:0}.reader-bookmark-sidebar:not(.collapsed){width:100%;min-width:100%}.reader-main{padding:0 var(--space-4)}}.reader-bookmark-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-wood-medium)}.reader-bookmark-header h2{margin:0;font-family:var(--font-serif);font-size:var(--text-lg);color:var(--color-brass-light)}.reader-bookmark-header .btn-close{background:transparent;border:none;color:var(--color-brass);font-size:var(--text-xl);cursor:pointer;padding:var(--space-1);line-height:1;border-radius:var(--radius-sm)}.reader-bookmark-header .btn-close:hover{background:var(--color-wood-dark)}.reader-bookmark-list{flex:1;overflow-y:auto;padding:var(--space-3)}.reader-bookmark-list .empty-state{color:var(--color-brass);font-size:var(--text-sm);text-align:center;padding:var(--space-4)}.bookmark-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--color-wood-dark);border-radius:var(--radius-sm);margin-bottom:var(--space-2);cursor:pointer;transition:background .15s ease}.bookmark-item:hover{background:var(--color-wood-medium)}.bookmark-info{flex:1;min-width:0}.bookmark-note{color:var(--color-parchment);font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bookmark-meta{color:var(--color-brass);font-size:var(--text-xs);margin-top:var(--space-1)}.bookmark-item .btn-delete{background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);opacity:.6;transition:all .15s ease}.bookmark-item .btn-delete:hover{background:#d32f2f33;color:#ef5350;opacity:1}.reader-header-actions .btn{padding:var(--space-2) var(--space-3);font-family:var(--font-serif);font-size:var(--text-sm);min-height:36px;display:inline-flex;align-items:center;gap:var(--space-2);background:transparent;border:1.5px solid var(--color-brass);border-radius:var(--radius-sm);color:var(--color-brass);text-decoration:none;cursor:pointer;transition:all .15s ease}.reader-header-actions .btn:hover{background:var(--color-wood-dark);border-color:var(--color-brass-light);color:var(--color-brass-light)}@media(max-width:767px){.reader-toolbar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:var(--space-2)}.reader-toolbar::-webkit-scrollbar{display:none}.reader-nav-controls{flex-shrink:0;gap:var(--space-1)}.reader-chapter-select{min-width:100px;max-width:140px}.reader-nav-controls .btn{width:36px;height:36px}.reader-search-inline{display:none}.reader-font-controls{flex-shrink:0;gap:var(--space-1)}.reader-font-controls .btn{width:36px;height:36px}.reader-font-select{display:none}.reader-bookmark-controls{flex-shrink:0}.reader-bookmark-controls .btn{width:36px;height:36px}}@media(max-width:767px)and (hover:none){.reader-viewport:before,.reader-viewport:after{content:"";position:absolute;top:0;bottom:0;width:3px;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:5}.reader-viewport:before{left:0;background:linear-gradient(to bottom,transparent,var(--color-brass) 50%,transparent)}.reader-viewport:after{right:0;background:linear-gradient(to bottom,transparent,var(--color-brass) 50%,transparent)}.reader-viewport.touch-left:before{opacity:.4}.reader-viewport.touch-right:after{opacity:.4}}}@layer features.features{.upload-page .page-header{margin-bottom:var(--space-8)}.upload-page .subtitle{color:var(--color-text-muted);font-size:var(--text-lg);margin-top:var(--space-2)}.upload-container{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);margin-top:var(--space-6);container-type:inline-size;container-name:upload-container}.upload-box{background:var(--color-paper);border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;transition:all var(--duration-normal) var(--ease-out);position:relative;min-height:300px;display:flex;align-items:center;justify-content:center}.upload-box:hover{border-color:var(--color-brass);background:var(--color-parchment-light);box-shadow:0 0 24px #b8860b26}.upload-box.uploading{border:2px solid var(--color-brass);border-style:solid;background:var(--color-parchment-light);box-shadow:0 0 32px #d4a94233}.upload-box.uploading:hover{transform:none}.upload-box.success{border-color:var(--color-success, #6b8c5f);animation:success-pulse .5s ease-in-out}@keyframes success-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.upload-box.error{border-color:var(--color-error, #b85d5d);animation:shake .4s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@media(prefers-reduced-motion:reduce){.upload-box.success,.upload-box.error{animation:none}}.file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.file-label{cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:var(--space-4);width:100%;padding:var(--space-6);transition:all var(--duration-normal) var(--ease-out)}.file-label:hover{transform:scale(1.02)}.upload-icon{width:4rem;height:4rem;color:var(--color-brass);margin-bottom:var(--space-4);stroke-width:1.5}.file-label>span:nth-child(2){font-size:var(--text-xl);font-weight:600;color:var(--color-text);font-family:var(--font-serif)}.upload-hint{font-size:var(--text-sm);color:var(--color-text-muted)}.upload-icon-success{width:5rem;height:5rem;color:var(--color-success);animation:success-scale .3s ease-out}@keyframes success-scale{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.upload-icon-success{animation:none}}.file-input:disabled+.file-label{opacity:.6;cursor:not-allowed}.file-input:disabled+.file-label:hover{transform:none}.upload-info{background:var(--color-paper);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:var(--space-6)}.upload-info h3{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--color-brass);margin-bottom:var(--space-4);font-weight:600}.upload-info ul,.upload-info ol{margin:0;padding-left:var(--space-6);color:var(--color-text)}.upload-info li{margin-bottom:var(--space-2);line-height:var(--leading-relaxed)}.upload-info ul{list-style-type:disc}.upload-info ol{list-style-type:decimal}.upload-info h3:not(:first-child){margin-top:var(--space-6)}@container upload-container (max-width: 700px){.upload-container{grid-template-columns:1fr;gap:var(--space-6)}.upload-box{min-height:250px}}@supports not (container-type: inline-size){@media(max-width:768px){.upload-container{grid-template-columns:1fr;gap:var(--space-6)}.upload-box{min-height:250px}}}}@layer features.features{.lists-page .page-header h1{margin-bottom:0}.lists-page .page-controls{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.collections-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}.collection-card{background:var(--color-paper);border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);overflow:hidden;transition:all var(--duration-normal) var(--ease-out);box-shadow:var(--shadow-sm)}.collection-card:hover{box-shadow:var(--shadow-lg);border-color:var(--color-brass);transform:translateY(-4px)}.collection-card-link{display:block;text-decoration:none}.collection-cover-empty,.collection-cover-single,.collection-cover-duo,.collection-cover-grid{aspect-ratio:4/3;background:var(--color-parchment-dark);overflow:hidden}.collection-cover-empty{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted)}.collection-cover-single{display:flex}.collection-cover-single .collection-cover-img,.collection-cover-single .collection-cover-placeholder{width:100%;height:100%;object-fit:cover}.collection-cover-duo{display:grid;grid-template-columns:1fr 1fr;gap:2px}.collection-cover-duo .collection-cover-img,.collection-cover-duo .collection-cover-placeholder{width:100%;height:100%;object-fit:cover}.collection-cover-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px}.collection-cover-grid .collection-cover-img,.collection-cover-grid .collection-cover-placeholder{width:100%;height:100%;object-fit:cover}.collection-cover-img{transition:transform .3s ease,opacity .3s ease;opacity:0}.collection-cover-img.loaded{opacity:1}.collection-card:hover .collection-cover-img{transform:scale(1.05)}.collection-cover-placeholder{background:linear-gradient(135deg,var(--color-parchment) 0%,var(--color-parchment-dark) 100%)}.collection-cover-skeleton{width:100%;height:100%;background:linear-gradient(90deg,var(--color-parchment) 0%,var(--color-parchment-dark) 50%,var(--color-parchment) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.collection-card-content{padding:var(--space-4)}.collection-card-content h3{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600;margin-bottom:var(--space-2);line-height:var(--leading-snug)}.collection-card-content h3 a{color:var(--color-text);text-decoration:none;transition:color var(--duration-fast)}.collection-card-content h3 a:hover{color:var(--color-brass-light)}.collection-description{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.collection-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-3)}.collection-meta .book-count{font-weight:600;color:var(--color-brass)}.collection-actions{display:flex;gap:var(--space-2)}.list-detail-page .page-controls{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.list-detail-header{margin-bottom:var(--space-6)}.list-detail-title{font-family:var(--font-serif);font-size:var(--text-3xl);font-weight:700;color:var(--color-text);margin-bottom:var(--space-2)}.list-detail-description{color:var(--color-text-muted);font-size:var(--text-lg);margin-bottom:var(--space-4)}.list-detail-meta{display:flex;gap:var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted)}@media(max-width:640px){.collections-grid{grid-template-columns:1fr}.collection-cover-empty,.collection-cover-single,.collection-cover-duo,.collection-cover-grid{aspect-ratio:16/9}}}@layer features.features{.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-page);padding:var(--space-4);position:relative;z-index:1}.login-container{width:100%;max-width:24rem;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-8)}.login-header{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);margin-bottom:var(--space-6)}.login-header h1{font-family:var(--font-serif);font-size:var(--text-2xl);color:var(--color-text);margin:0}.login-icon{width:3rem;height:3rem;color:var(--color-brass)}.login-form{display:flex;flex-direction:column;gap:var(--space-4)}.login-error{background:color-mix(in oklch,var(--color-error) 20%,transparent);color:var(--color-error);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);text-align:center;border:1px solid var(--color-error)}.login-form .form-group{display:flex;flex-direction:column;gap:var(--space-2)}.login-form .form-group.checkbox{flex-direction:row;align-items:center}.login-form .form-group.checkbox label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;color:var(--color-text-muted)}.login-form .form-group.checkbox input[type=checkbox]{width:auto;accent-color:var(--color-brass)}.login-form>.form-group>label{font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);display:block}.login-form input[type=text],.login-form input[type=password]{width:100%;padding:var(--space-3);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);background:var(--color-bg-paper);color:var(--color-text);transition:border-color .15s,box-shadow .15s}.login-form input[type=text]::placeholder,.login-form input[type=password]::placeholder{color:var(--color-text-light)}.login-form input[type=text]:focus,.login-form input[type=password]:focus{outline:none;border-color:var(--color-brass);box-shadow:0 0 0 3px var(--color-accent-subtle)}.login-form button[type=submit]{width:100%;margin-top:var(--space-2)}}@layer features.features{.settings-page{max-width:800px;margin:0 auto}.settings-page .page-header .subtitle{color:var(--color-text-muted);font-size:var(--text-base);margin-top:var(--space-2)}.settings-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-6);border-bottom:1px solid var(--color-border-subtle);padding-bottom:var(--space-2)}.settings-tab{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast)}.settings-tab:hover{color:var(--color-text);background:var(--color-parchment)}.settings-tab.active{color:var(--color-brass);background:#d4a9421a}.settings-content{background:var(--color-paper);border-radius:var(--radius-lg);border:1px solid var(--color-border-subtle);padding:var(--space-6);margin-bottom:var(--space-6)}.settings-section h2{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:600;color:var(--color-brass);margin-bottom:var(--space-2)}.settings-section .section-description{color:var(--color-text-muted);font-size:var(--text-sm);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.form-group{margin-bottom:var(--space-5)}.form-group label{display:block;font-size:var(--text-sm);font-weight:500;color:var(--color-text);margin-bottom:var(--space-2)}.form-group .form-help{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.form-input,.form-select{width:100%;padding:var(--space-3);font-size:var(--text-base);color:var(--color-text);background:var(--color-parchment);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);transition:border-color var(--duration-fast)}.form-input:focus,.form-select:focus{outline:none;border-color:var(--color-brass)}.form-input:disabled,.form-select:disabled{opacity:.5;cursor:not-allowed}.form-select{cursor:pointer}.form-range{width:100%;height:6px;background:var(--color-border-subtle);border-radius:var(--radius-sm);appearance:none;cursor:pointer}.form-range::-webkit-slider-thumb{appearance:none;width:18px;height:18px;background:var(--color-brass);border-radius:50%;cursor:pointer;transition:transform var(--duration-fast)}.form-range::-webkit-slider-thumb:hover{transform:scale(1.1)}.form-range::-moz-range-thumb{width:18px;height:18px;background:var(--color-brass);border:none;border-radius:50%;cursor:pointer}.form-group-checkbox{margin-bottom:var(--space-4)}.checkbox-label{display:flex!important;align-items:center;gap:var(--space-3);cursor:pointer}.form-checkbox{width:18px;height:18px;accent-color:var(--color-brass);cursor:pointer}.checkbox-label span{font-weight:400}.info-box{margin-top:var(--space-6);padding:var(--space-4);background:#d4a9420d;border:1px solid rgba(212,169,66,.2);border-radius:var(--radius-md)}.info-box h4{font-size:var(--text-sm);font-weight:600;color:var(--color-brass);margin-bottom:var(--space-3)}.info-box ol{margin:0;padding-left:var(--space-5);font-size:var(--text-sm);color:var(--color-text-muted)}.info-box li{margin-bottom:var(--space-2)}.info-box a{color:var(--color-brass);text-decoration:underline}.info-box a:hover{color:var(--color-brass-light)}.settings-actions{display:flex;justify-content:flex-end;gap:var(--space-3)}@media(max-width:640px){.settings-tabs{flex-wrap:wrap}.settings-tab{flex:1;min-width:calc(50% - var(--space-2));text-align:center}.settings-content{padding:var(--space-4)}.settings-actions{flex-direction:column}.settings-actions button{width:100%}}}@layer utilities.utilities{.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-brass);color:var(--color-parchment-dark);padding:var(--space-2) var(--space-4);text-decoration:none;border-radius:var(--radius-md);z-index:var(--z-toast)}.skip-link:focus{top:var(--space-2)}.focus-visible-ring:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px;border-radius:var(--radius-sm)}@media(prefers-contrast:high){*{border-color:currentColor!important}}}@layer utilities.utilities{.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);min-height:50vh;color:var(--color-text-muted)}.loading-message{font-size:var(--text-lg);color:var(--color-text-muted);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}.spinner{color:var(--color-brass)}.animate-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.w-4{width:1rem}.w-8{width:2rem}.w-12{width:3rem}.h-4{height:1rem}.h-8{height:2rem}.h-12{height:3rem}.btn.loading{pointer-events:none;opacity:.7}.btn.loading:after{content:"";width:1em;height:1em;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite;margin-left:var(--space-2)}.fade-enter{opacity:0;transform:translateY(10px)}.fade-enter-active{opacity:1;transform:translateY(0);transition:opacity var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.fade-exit{opacity:1}.fade-exit-active{opacity:0;transition:opacity var(--duration-fast) var(--ease-out)}[style*=--stagger-index]{animation-delay:calc(var(--stagger-index, 0) * 50ms)}.pressable{transition:transform var(--duration-fast) var(--ease-out);cursor:pointer}.pressable:active{transform:scale(.97)}@media(hover:none){.pressable:active{transform:scale(.95)}}.pull-to-refresh-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);overflow:hidden;color:var(--color-brass);transition:height .2s var(--ease-out)}.pull-to-refresh-icon{transition:transform .1s linear}.pull-to-refresh-icon.refreshing{animation:spin 1s linear infinite}.pull-to-refresh-text{font-size:var(--text-sm);color:var(--color-text-muted)}@media(hover:hover){.pull-to-refresh-indicator{display:none}}.route-error-fallback{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-8);background:var(--color-parchment)}.route-error-content{text-align:center;max-width:500px}.route-error-icon{width:64px;height:64px;color:var(--color-brass);margin-bottom:var(--space-6)}.route-error-title{font-family:var(--font-serif);font-size:var(--text-3xl);color:var(--color-text);margin-bottom:var(--space-3)}.route-error-message{font-size:var(--text-lg);color:var(--color-text-muted);margin-bottom:var(--space-8);line-height:var(--leading-relaxed)}.route-error-actions{display:flex;gap:var(--space-4);justify-content:center;flex-wrap:wrap}@media(max-width:767px){.route-error-title{font-size:var(--text-2xl)}.route-error-message{font-size:var(--text-base)}.route-error-actions{flex-direction:column}.route-error-actions .btn{width:100%}}}
