@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-opsz-normal-BjhtXyW2.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-opsz-normal-BQn1nviT.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-normal-s-izfB6B.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-vietnamese-opsz-italic-DTr-ymY4.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-ext-opsz-italic-CSPGnFdO.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/assets/newsreader-latin-opsz-italic-kJKFiXvB.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAAQgABAAAAAAB+wAAAPGAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbahwoBmA/U1RBVEgAXBEICoJ8gkMLFAABNgIkAyIEIAWFCgdiDAcbhQbIPg1vjKH/SZAjGKk6g0Cz4ZDoqIq9ujYKvX+56LMpeKqx39u9+yKCiGazJpasMYQkFiKJSmhkKiQRqyQSleGnud+7DTG5L6jJGPdNJriH5JbwBBG6JVISgmK/170QegCQmWgmlyggSYrYRiVCU8mVdSoUqdZWfpsHE7m10AI7gL2xGtH/pVj0d/045f9hYeqMUicC2WdxoPzP5fhug8y4jw3gwAJO/G57a1i0nm8KMKFeYGdNPGoNsbVxiQSWuba48mH8gQtyCg5ZGAvDD5agO4oAPwBQQhhCgFe5RFRvaXUzOG0xggGcWMA/AWSTcAawAQKEpdyEm4qzANWCIApAGEIZSsgghakUSrjFgCREbxu/cRzQGwWAUWtGFiE8qqmDC6iWQ71FdfCqquouvdcYFiOuCtAtgPxPewaK0aS0ggxDgXLUnlIlIIClbUaH7BBxFsMkfAAIGOGXWNkB/QSAAgPiaALiLAwBgtyUU7EC+w6DKv6QgJ+R/PPNsuFpiK5bSEIxAA+AKMALZgHrgCwgDgCl77kplpAM67LJDJl10GcCuuhI+33L9mq73u62NvsWZu3rMWb3cgvn12x/P8lffyqb/HglnFmEf+rjy4X7/ql37b5+6vY78+HB0UP1UoRu7ouL/fbFUbnaWt23vt79XKns2uzimnswMDd4/sV5T+tRyfifEJTXp0rO6M72e3+7lt5c7R9a9l9j3tdUtXfNZMugZxqkJWfd0l8q27px4E9LcXRh+Fpfy289JTldsUkNKfimSnyrbqPraoPjv2PDRXk54d4RkT5h2QXVBUA1QMDF5ccP6u/k3oV4ABGgm/SiDaYEBEz6xGt/Ouacs1M038DXTWWO5d+ncE1S92PgXGCNBfLTfYd+nQZUqml3/MkRYQsLL6dd3AEtEiDg0c5CBh22pgT47TIkwwMcReIOIh9JUMFwg9HlDax62+CQNQdOtdrtQZ2kDgJ+SbAEww1e/LyL8uEFY4z0GAYVBAwdNVYbQk1JRcB/FpjwMsWJw2Nx1EwEvFg8NZ1YRhylOHVKVSvHMNAiDMpwjAQETytGI0JJpMPgtCI4PDUjAyxJrHgJkuK1sHjCUuBqyVKuWJE6WQVKqfrUwiJGJqO4dr4JliheogRYMxUC19bqGdFobDRUQGxZM7ZQHwtvPKSkdvNFA2KxD6bEIcTgSNEBUTYW8eKokr1jKFMRKOrzf9Xm4AHl3oPChBErDnE6uwc4MkSsRYM6Pr4g3g5MjC9Mtl1gRYF8TUNxOCXjk+JT/6qR+4TujRUA) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/hanken-grotesk-vietnamese-400-normal-BLrFBAHj.woff2) format("woff2"),url(/assets/hanken-grotesk-vietnamese-400-normal-C-iWyKLC.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/hanken-grotesk-latin-ext-400-normal-DR7lHpW4.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-ext-400-normal-DI-aIsWt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/hanken-grotesk-latin-400-normal-BG6hkEXj.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-400-normal-CjyVwvJV.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAAQIABAAAAAACAQAAAOvAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbahwoBmA/U1RBVEQAXBEICoJ8gkILFAABNgIkAyIEIAWFKAdiDAcbngYoLgpsW7F2EW5iaDHUuE4MfK2EiuDJv6h63X9mQfCkiMhBhsvo5EiaqbW2d/+I+KtIQl7tBEmQGRKRRIOu1qgM08UaQyggDm7nRPJEQ8yt/i+kPxzR/3NNvjVI8z4uSAc88SqLKssyHUVb097RKkT3pocLQBwwzNwaPrRPwsDGVWMcQ0JC6POwBxWoCUhCyEKguo4k4ImTfTHQv3MdVgf9CqgQiB2bkDroRCAUkqpCVUlDRHQ1D5JAyEKSJYGU4qidMYjDVkQilhfxV/yqRLoxLQXMUK3Eaqx0JRxVkEydutYguNe2j/N3/7OjjD5tAXQrxM/pRbRFEP1vS0MwOoKPbCliELZdqgpVFxoiFnfUoG4WEKX4FSRkNEQQ+IJTAbUDsClry2zfm5HaPlMBxKLylTdsMk58Oh9E7h2iQh1QDdQHVMcywAlAc0BDAEn61CcqhCiKKkXjYjt17Rq5VlpfK9essaPGtuqrVyaTPYvWbV+4EFc82GLJ4SPOvvlhjZsudlj0cm5z1LE76xb/63f4H3up+o2f9Fx8dDH2/HlnH2m6xk1ZuMYWNc6+eiJ9/fBDzvW/fNflgx0iu/P1135hTq0X9rzb8b2OffZaL/9ttxws1OTtcs2ifurg4aN54vRp2vBVpxF+zfPqLpPezVhxxNg+pnTtuPK4cx07sOdmLi627vZzbK74f/MIh3FRKIso5sp/ek5tZ9stN3vviznTbUYH/aNT55eOkyw+M4A7g1BFFb/4BK0uq3qaCKA26Xi+Rm22BYScFx5lvr6+ps7I36rm/B18emObqir5nt/W66/caaU8xXJTpJNusFD+f6j0OwWqxr/6J1HDioKXS30NAnrhg1DNQETNEDjokkBtj8miqIa3YiiA0D21IakdIBvtsbEwQklzh1DW1RbUNpgH6polYNfTq702JGLjxtIlUp1Y/T+ooTrma6hJqXPDpFSVZCTllBQUYfxyskpwNS4pdRU5dSROiAZMDqqiCINpQmkICaEyECVNGJQAqqRKoAFRIBTk4OOWKs38+GBCDkKSN2p7KQERManm13KxsQrWho5E+l+Aq0pBHtlMcudbNTRtQIb1TUgkRCTESGKKckhUeQgiZXmGgr0ZDlPUgECRsAZrLCjZ1sGlCWQ01AjVpCBIWm2QQhscSqioB0G+gpMNJkIr0xXKaujoKZIcOYooRbk8bv3K/ikdh3aXRCKzSD0pEVlkXes24Fju9xrSXuwQSUWKdTYSz6PSE8Ut) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/hanken-grotesk-vietnamese-500-normal-DxwlvJEc.woff2) format("woff2"),url(/assets/hanken-grotesk-vietnamese-500-normal-DkDHNoXI.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/hanken-grotesk-latin-ext-500-normal-DLb9JDK8.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-ext-500-normal-BNvrJ0Ju.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/hanken-grotesk-latin-500-normal-DrDcrrxK.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-500-normal-Bo-NxEKf.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(data:font/woff2;base64,d09GMgABAAAAAAQoABAAAAAACBQAAAPPAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbahwoBmA/U1RBVEQAXBEICoJ8gkQLFAABNgIkAyIEIAWFOAdiDAcbsAYArgZscK1wkCT3IhFNYz5DPm7qldBpMgqe/7f7d5878wHPl+fTgfT+owOgTZ10qYRSldRmpU2VVAIBtVb23O0DgSLUxDaggFgCgYsH4vL58iGQsX8lwzz/N2ssW5itSTCXRf3EepFFaWB193xtOsLr/8L5w/mRXT/9/eStz9e8ZyvSAU88yqPKhpE04lG0VVOmwL/pw8X5dE4v9dEEsYPKnNkNQhGQDgAUITRCQKo63dTwvCVryFxtiQXIpAP+E4CsskcCJAMBQqckE8mUfDpoUkkoAEIjFI0iiILdyA0acLkGYMdOAD38izUkQB3SSbC4EJlLU2gg2JKA0nbB8MxyHqitvY3+nLrSFwzttchpCMi/2EMIBo1EvyrkU6CO2uZ0xQS4N1t8ko7Ip1dbSIOxnAAkWW0AQAEN5NMIvDwLQCY/nESGKZe8DDHjzh8YjMRXe50B4TcNEuLSQhLkAEgBkAtSwUawD5SDfACK+qW3RCck0pP0wqjtOztNy1CzGfH0NG/aitS5W9avT5tpOTs5Ce+cKuorV+y4+jHj8LumfP8AcA6Bolz3+LoB7/Io/dChpXr8Dn5+gnZcKWx9iTO2G0PG4RWW7NSxHl3f863TFp6ZkFbwoMm/P7ygJSJbTkrgowKoyhzz9Y9smyi8OB6IhoZKaj5vF/sX9n5Z6ZQsPDx9dfaCtPHUQ27GxAeD+8aXHZ/Ltbv9rIHMFWPzprZ39q0ZKC16pbHJf2H7maPefE68ORPLay4JwmUhmlkyiaojIEmSHyKDk53CBKRBHUL36sstQ4AWX9O+/ms9L6v7P4Vqn4CPh1B65KUXSkvcz4DEWyzjFimpsxbEqcuxv5M7OfzGQjgzgg5vpzpkghYtBKTopSuhsSymCMh0VZxEKcCjML4GoiOUAyUzpAPNtKeZuh1IUOo6SNTmOMjUbxnIVq6bmSNbDYtAusJ8SXyGSsWlPi+NVLBKkJ9FwEIxFj5uVuvZuTm5xKxm5+c2LcjHZoHHbF52AYb5IoJi7KK87f9iQqKGdeoUZRXhFhIT1SHKzadDUIRTp+XmWcIaq+Zuj0CyDpNFuGTBGIr36GDq0rPiHbHAHDOWp44ftar6TnE+FpF3zW34q2YEu2GPyNn9EkM3U7cuhjVc7Axe2QoM5ZFZOeBPiYtxCYqIMjSdscbJbTVL3KwOVkF+nfwsIojEN6OcReKiOrlEwN/OaWmmCIH/p8GCKaDOkxBDC5rokiCJiVOzKfxHJW0JuE1zytRf7Dane1MWWOMxezYbknTUbPaY/elthN8PiW5ERwE=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/hanken-grotesk-vietnamese-600-normal-Cp8QQjQf.woff2) format("woff2"),url(/assets/hanken-grotesk-vietnamese-600-normal-DHaFH8q1.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/hanken-grotesk-latin-ext-600-normal-FY8kSObK.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-ext-600-normal-DHIm05DD.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/hanken-grotesk-latin-600-normal-CIXX6EOa.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-600-normal-NEn2C4Q3.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(data:font/woff2;base64,d09GMgABAAAAAAQQABAAAAAAB9AAAAO1AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbahwoBmA/U1RBVEQAXBEICoJ8gkULFAABNgIkAyIEIAWEcgdiDAcbawYAPgzYZKiDVf9AJG6cDDnBomS69KOW+n5qazEGz//bVff9qmloNUKNvSCjbbmmtQCzjTfck4MRlMqpcpgH+HHY+xMVmtIalHYAo5yoTKXFQ5zayVEoGWY92TdNoFQlCEmzUTTRuv4/nC9cFvmd4kJ9rcssgaOlihjv/5yLtwZp3scF6YAnvj6vsqOyCjrDgZ013RsdtWiVn8GJ6+k26YjeXEM1TLo9UgS4AIAihEYIcGgyQPUsXL4ez3JfPo2HDvhPALIslE1jAwKETrERNkoxHbSpJRQAoRGKRhEmQjSmRQsxMQNERMzXIzR1WzTUvohRYBkOImO0BbPJrED5ayzumbeKi8rKLke+/zfa+9BahhwC5EvEfTBohLBRoJgCTdSmSDQvgNh6X1IYUUynESo4ARAgAIlVtwEU0EAxjYBiusXAw0axMMxx0XiIMG79B/eJ/68FncKzfmIcWsh/UgHYAUwEDrAF7AHVoBiAor70keiEROlWvTRqrVucmlv53eRyJpznmM2bNjnbd2pqKmw9Vzhy6ZItlx8l7p8uHXrWwqCkZ3Tjw6sK2isPEvY9bRp+eenkpC2ns2bZ0rU1GxIP3Kedh3DcRMfM0ZllDXMOdbLl3psjjvjg/Z9X7bonrMNIitTwdN+skvyB49E9Cyvq3lSX9c/v+bq5o3rxwb7V7py4ZsKZ/oy1n0y/l5ftW1veeGxo4UxjdmLW4jm+/pENk8vun1XdYJ7deeKg8Rd9vfNnb647U1iSrtk8b+UcVA0BVlb/ZBbbnKcPYIM6EbkTr7YIAVrk+r+anJXqX+MitU/Ax32lcbj65NfY/t8uE1jK2KOMotRFDfrfhd4PVbSFXwxTikGHKtXGiVL/gAC7IboKGi/hFAEuF0SSKDtwJxScQVT7B4rNN9BMdRt0LS5AkUp7wKLJZsljRINMwKUUrNh8Awcujm05cYC1TCk+aUvk+STFBGwSEhMRlZe/Nm9MzlS9euUEZMWMycvpkROT1MOUFdFrlYWWW8wnLSEkbZEsU15ITkK3uUxJQRuFZOXEmNIMg3r06TfoYZixKMOyuWvTLDbfPKtMi27iwWO1z2Mas1M2G9/EMKDPgH6G9aJCjNt6qzkk7gV8VM9RkBfNV8AcQ5sMJyJiWssU+PUIMKX0SvHJMq8mmSJMBTm9ojfQd4sU2imb4f/UCWkHTR6HCLSgiS5FYrHM8XffX2P9dKyvb04fPnOgb+6QfQOFfKgRDcfF5vsG+0Y606i8Hv7vWtRBAAA=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/hanken-grotesk-vietnamese-700-normal-C4RNfQp6.woff2) format("woff2"),url(/assets/hanken-grotesk-vietnamese-700-normal-CslVg6dq.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/hanken-grotesk-latin-ext-700-normal-CK2OfQqO.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-ext-700-normal-BXHnjv6S.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/hanken-grotesk-latin-700-normal-CeQ8H3UY.woff2) format("woff2"),url(/assets/hanken-grotesk-latin-700-normal-6IGCzoPh.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-serif: "Newsreader Variable", "Newsreader", Georgia, "Times New Roman", serif;--font-sans: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--content-max: 1180px;--content-pad: 36px 28px 80px;--content-pad-bottom: 80px;--sticky-top: 96px;--label-col: 82px;--tap-target: 44px;--bottom-nav-space: 0px;--radius-ctrl: 3px;--radius-card: 6px;--radius-panel: 8px;--radius-pill: 12px;--radius-chip: 20px;--shadow-modal: 0 20px 60px rgba(0, 0, 0, .25);--shadow-preview: 0 8px 30px rgba(0, 0, 0, .14);--shadow-canvas: 0 4px 20px rgba(0, 0, 0, .1);--shadow-cover: 0 6px 18px rgba(0, 0, 0, .16);--transition-hover: .18s ease;--transition-nav: .15s ease}@media(max-width:700px){:root{--bottom-nav-space: calc(58px + env(safe-area-inset-bottom, 0px)) }}@media(max-width:640px){:root{--content-pad: 20px 16px 56px;--content-pad-bottom: 56px;--sticky-top: 76px}}@keyframes fadeup{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scanline{0%{top:0}to{top:100%}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}:root,:root[data-theme=bistro]{--paper: #f6f1eb;--card: #fffdf9;--ink: #241a1a;--ink2: #736059;--line: #e7dbd0;--accent: #8a2e24;--accent-soft: #f0e1da;--accent-ink: #fffdf9;--chip: #f1e7df;--accent2: #b58227;--accent2-ink: #241a1a}:root[data-theme=herb]{--paper: #f3f0e7;--card: #fcfbf6;--ink: #211e17;--ink2: #6e675a;--line: #e2dcce;--accent: #495230;--accent-soft: #e9e7d5;--accent-ink: #fcfbf6;--chip: #eceadf;--accent2: #946026;--accent2-ink: #fcfbf6}:root[data-theme=slate]{--paper: #eff1ef;--card: #fcfdfc;--ink: #1a1e1d;--ink2: #5d625f;--line: #dbdfdc;--accent: #1f5a50;--accent-soft: #dce7e3;--accent-ink: #fcfdfc;--chip: #e4e8e5;--accent2: #9c5a34;--accent2-ink: #fcfdfc}*{box-sizing:border-box}:root{font-family:var(--font-sans);font-size:15px;line-height:1.5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;background-color:var(--paper);color:var(--ink)}a{color:var(--accent);text-decoration:none}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:400;color:var(--ink);line-height:1.15;margin-top:0}h1{font-size:clamp(34px,5vw,52px);letter-spacing:-.02em}button{font-family:var(--font-sans);font-size:13.5px;font-weight:600;padding:10px 18px;border-radius:var(--radius-ctrl);border:1px solid var(--line);background-color:var(--card);color:var(--ink);cursor:pointer;transition:border-color var(--transition-nav),filter var(--transition-nav),background-color var(--transition-nav)}button:hover{border-color:var(--accent)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background-color:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover{filter:brightness(1.12)}button.quiet{background:transparent;border-color:transparent;color:var(--ink2)}button.quiet:hover{border-color:transparent;background-color:var(--chip)}input,textarea,select{font-family:var(--font-sans);font-size:14px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-ctrl);background-color:var(--card);color:var(--ink)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}input::placeholder,textarea::placeholder{color:var(--ink2)}@media(max-width:640px){input,textarea,select{font-size:16px}}.icon-btn,.icon-btn-inline{display:inline-flex;align-items:center;justify-content:center}.icon-btn-inline{position:relative}@media(pointer:coarse){.icon-btn{min-width:var(--tap-target);min-height:var(--tap-target)}.icon-btn-inline:after{content:"";position:absolute;left:50%;top:50%;width:36px;height:36px;transform:translate(-50%,-50%)}}label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--ink2);display:block;margin-bottom:.5rem}:root{--primary: var(--accent);--primary-dark: var(--accent);--primary-light: var(--accent-soft);--secondary: var(--chip);--secondary-dark: var(--line);--background: var(--paper);--accent-light: var(--accent-soft);--text-primary: var(--ink);--text-secondary: var(--ink2);--text-light: var(--ink2);--surface: var(--card);--surface-variant: var(--chip);--shadow-1: 0 1px 3px rgba(0, 0, 0, .1);--shadow-2: 0 3px 6px rgba(0, 0, 0, .12);--shadow-3: 0 10px 20px rgba(0, 0, 0, .12);--shadow-4: var(--shadow-modal);--radius-sm: var(--radius-ctrl);--radius-md: var(--radius-ctrl);--radius-lg: var(--radius-card);--radius-xl: var(--radius-panel);--transition-fast: var(--transition-nav);--transition-normal: var(--transition-hover)}.toast{position:fixed;display:flex;align-items:center;gap:14px;bottom:28px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--paper);padding:10px 22px;border-radius:30px;font-size:13.5px;font-weight:600;animation:fadeup .25s ease;z-index:200;pointer-events:none}.toast-action{pointer-events:auto;border:none;background:none;padding:2px 0;font-size:13px;font-weight:700;color:var(--paper);text-decoration:underline;text-underline-offset:3px}.toast-action:hover{background:none;color:var(--paper);opacity:.8}.modal-backdrop{position:fixed;inset:0;background:#140f0a66;display:flex;align-items:center;justify-content:center;z-index:150;animation:fadeup .2s ease}.modal-panel{background:var(--card);border-radius:var(--radius-panel);box-shadow:var(--shadow-modal);padding:26px 28px;width:min(480px,calc(100vw - 40px));max-height:min(640px,calc(100vh - 80px));overflow-y:auto}@media(max-width:640px){.modal-panel{width:calc(100vw - 24px);max-height:calc(100dvh - 48px);padding:20px 18px}}.modal-panel h3{font-family:var(--font-serif);font-size:24px;font-weight:500;margin:0 0 6px}.feedback-modal{display:flex;flex-direction:column}.feedback-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.feedback-close{padding:6px;line-height:0}.feedback-kind{display:flex;margin:10px 0 18px;border:1px solid var(--line);border-radius:var(--radius-ctrl);overflow:hidden}.feedback-kind button{flex:1;border:none;border-radius:0;padding:8px 12px;font-size:13px;background:var(--card);color:var(--ink2)}.feedback-kind button+button{border-left:1px solid var(--line)}.feedback-kind button.active{background:var(--accent);color:var(--accent-ink)}.feedback-modal input,.feedback-modal textarea,.feedback-modal select{width:100%;box-sizing:border-box;margin-bottom:16px}.feedback-modal textarea{resize:vertical;min-height:120px}.feedback-label{display:block;margin-bottom:.5rem;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--ink2)}.feedback-optional{font-weight:400;text-transform:none;letter-spacing:normal}.feedback-attach{display:inline-flex;align-items:center;gap:8px;align-self:flex-start}.feedback-screenshot{display:flex;align-items:center;gap:12px}.feedback-screenshot img{max-width:min(220px,60%);max-height:140px;object-fit:contain;border:1px solid var(--line);border-radius:var(--radius-ctrl);background:var(--paper)}.feedback-hint{margin:6px 0 16px;font-size:12.5px;color:var(--ink2)}.feedback-error{margin:-4px 0 12px;font-size:13px;font-weight:600;color:var(--accent)}.feedback-actions{display:flex;justify-content:flex-end;gap:10px}.masthead{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 28px;background:var(--paper);border-bottom:1px solid var(--line)}.masthead-wordmark{display:flex;align-items:center;gap:12px;color:var(--ink);line-height:1.1}.masthead-logo{flex-shrink:0}.masthead-wordmark-text{display:flex;flex-direction:column}.masthead-the{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.28em;color:var(--ink2)}.masthead-title{font-family:var(--font-serif);font-size:26px;font-weight:500}.masthead-nav{display:flex;align-items:center;gap:4px}.masthead-nav-link{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;font-size:13px;font-weight:600;color:var(--ink);border-radius:var(--radius-ctrl);transition:background-color var(--transition-nav)}.masthead-nav-link:hover{background-color:#0000000f;color:var(--ink)}.masthead-nav-link.active{background-color:var(--chip)}.masthead-bubble{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent2);color:var(--accent2-ink);font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.masthead-new{display:inline-flex;align-items:center;gap:7px;margin-left:8px;padding:9px 16px;font-size:13px;font-weight:600;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-ctrl);transition:filter var(--transition-nav)}.masthead-new:hover{filter:brightness(1.12);color:var(--accent-ink)}.masthead-divider{width:1px;height:22px;background:var(--line);margin:0 10px}.masthead-swatches{display:inline-flex;align-items:center;gap:8px}.masthead-swatch{position:relative;width:20px;height:20px;padding:0;border-radius:50%;border:1.5px solid var(--line);cursor:pointer;transition:transform var(--transition-nav)}@media(pointer:coarse){.masthead-swatch:after{content:"";position:absolute;left:50%;top:50%;width:36px;height:36px;transform:translate(-50%,-50%)}}.masthead-swatch:hover{transform:scale(1.15);border-color:var(--line)}.masthead-swatch.active{border-color:var(--ink)}.masthead-feedback{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;margin-left:10px;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--ink2)}.masthead-feedback:hover{border-color:transparent;background:var(--chip);color:var(--ink)}.masthead-account{position:relative;margin-left:10px}.masthead-account-button{width:30px;height:30px;padding:0;border-radius:50%;border:1px solid var(--line);background:var(--chip);color:var(--ink);font-size:13px;font-weight:700}.masthead-account-button:hover{border-color:var(--accent)}.masthead-account-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;max-width:calc(100vw - 24px);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-panel);box-shadow:var(--shadow-modal);padding:10px;display:flex;flex-direction:column;gap:6px;z-index:120}.masthead-account-email{font-size:12px;color:var(--ink2);padding:4px 6px 8px;border-bottom:1px solid var(--line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.masthead-account-menu button{text-align:left}.masthead-account-household{display:block;font-size:13px;font-weight:600;color:var(--ink);padding:6px;border-radius:var(--radius-ctrl)}.masthead-account-household:hover{background-color:#0000000f;color:var(--ink)}.masthead-account-link{display:block;font-size:13px;color:var(--ink);padding:6px;border-radius:var(--radius-ctrl)}.masthead-account-link:hover{background-color:#0000000f;color:var(--ink)}.masthead-account-switch{display:flex;flex-direction:column;gap:4px;padding-top:4px;border-top:1px solid var(--line)}.masthead-account-switch-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink2);padding:2px 6px 0}@media(max-width:700px){.masthead{flex-wrap:nowrap;padding:10px 16px}.masthead-nav{gap:12px}.masthead-nav-link,.masthead-new,.masthead-divider{display:none}.masthead-logo{width:28px;height:28px}.masthead-title{font-size:20px}.masthead-account-button,.masthead-feedback{width:36px;height:36px}.masthead-feedback,.masthead-account{margin-left:0}}@media(max-width:380px){.masthead-the{display:none}.masthead-nav{gap:8px}.masthead-swatches{gap:6px}.masthead-title{font-size:17px}}.masthead-account-name{display:block;font-size:13px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis}.bottom-nav{display:none}@media(max-width:700px){.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:100;display:flex;align-items:stretch;justify-content:space-around;background:var(--paper);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}.bottom-nav-link{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:58px;padding:6px 2px;color:var(--ink2);transition:color var(--transition-nav)}.bottom-nav-link.active{color:var(--accent)}.bottom-nav-label{font-size:10px;font-weight:600;letter-spacing:.04em}.bottom-nav-icon-wrap{position:relative;display:inline-flex}.bottom-nav-bubble{position:absolute;top:-6px;right:-10px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--accent2);color:var(--accent2-ink);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.bottom-nav-new{color:var(--ink2)}.bottom-nav-new-disc{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-top:-8px;border-radius:50%;background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-cover)}}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-main{flex:1;width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--content-pad);padding-bottom:calc(var(--content-pad-bottom) + var(--bottom-nav-space));animation:fadeup .3s ease}.monogram{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--chip)}.monogram-letter{font-family:var(--font-serif);font-size:clamp(40px,8vw,84px);font-weight:500;color:var(--ink);opacity:.14}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.modal-header .close-btn{padding:6px;line-height:0}.modal-subtitle{font-family:var(--font-serif);font-style:italic;font-size:14px;color:var(--ink2);margin:0 0 16px}.collections-list{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto}.no-collections-message{color:var(--ink2);font-size:13.5px;padding:16px 0;text-align:center}.collection-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-ctrl);cursor:pointer;transition:border-color var(--transition-nav),background-color var(--transition-nav)}.collection-item:hover{border-color:var(--accent)}.collection-item.selected{background:var(--accent-soft);border-color:var(--accent)}.collection-item .checkbox{width:18px;height:18px;border:1px solid var(--line);border-radius:5px;background:var(--card);display:inline-flex;align-items:center;justify-content:center;color:var(--accent-ink);flex-shrink:0}.collection-item.selected .checkbox{background:var(--accent);border-color:var(--accent)}.collection-item .collection-name{flex:1;font-size:14px;font-weight:600}.collection-item .recipe-count{font-size:12px;color:var(--ink2)}.modal-footer{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.quick-create-btn{display:inline-flex;align-items:center;gap:7px;width:100%;justify-content:center}.create-form input{width:100%}.create-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.confirm-create-btn{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.confirm-create-btn:hover{filter:brightness(1.12)}.create-error{color:var(--accent);font-size:12.5px;margin-top:8px}.cookbooks-choose-list{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto}.cookbooks-choose-empty{color:var(--ink2);font-size:13.5px;padding:16px 0;text-align:center}.cookbooks-choose-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 12px}.cookbooks-choose-item:disabled{opacity:.6;cursor:default}.cookbooks-choose-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;flex-shrink:0;color:var(--accent)}.cookbooks-choose-name{flex:1;font-size:14px;font-weight:600}.cookbooks-choose-count{font-size:12px;font-weight:500;color:var(--ink2)}.delete-confirmation-dialog .dialog-body{margin:10px 0 20px}.delete-confirmation-dialog .dialog-body p{color:var(--ink2);font-size:14px;margin:0 0 8px}.delete-confirmation-dialog .item-name{font-family:var(--font-serif);font-style:italic;font-size:16px;color:var(--ink)}.delete-confirmation-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px}.delete-confirmation-dialog .delete-btn{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.delete-confirmation-dialog .delete-btn:hover{filter:brightness(1.12)}.template-list{width:100%}.template-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.template-list-header h2{margin:0;color:var(--text-primary)}.create-template-btn{padding:.75rem 1.5rem;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:.875rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;transition:all var(--transition-fast);box-shadow:var(--shadow-1)}.create-template-btn:hover{background:var(--primary-dark);box-shadow:var(--shadow-2)}.template-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}.template-card{background:var(--surface);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-1);transition:all var(--transition-normal);border-left:4px solid transparent;cursor:pointer}.template-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-3);border-left-color:var(--accent)}.template-card.default{border-left-color:var(--primary)}.template-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.template-card-title{margin:0;font-size:1.125rem;font-weight:500;color:var(--text-primary)}.template-card-actions{display:flex;gap:.25rem}.template-action-btn{background:none;border:none;color:var(--text-light);cursor:pointer;padding:.375rem;font-size:1rem;line-height:1;border-radius:50%;transition:all var(--transition-fast);box-shadow:none}.template-action-btn:hover{color:var(--primary);background:#ff6b3514;box-shadow:none}.template-action-btn.delete:hover{color:#d32f2f;background:#d32f2f14}.template-card-size{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;background:var(--secondary);border-radius:12px;font-size:.75rem;color:var(--text-secondary);font-weight:500;margin-bottom:.75rem}.template-card-sections{color:var(--text-secondary);font-size:.875rem;margin-bottom:.5rem}.template-card-date{color:var(--text-light);font-size:.75rem}.default-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;background:var(--primary);color:#fff;border-radius:12px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.no-templates{grid-column:1 / -1;text-align:center;padding:4rem 2rem;color:var(--text-secondary);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}@media(max-width:768px){.template-list-header{flex-direction:column;gap:1rem;align-items:flex-start}.template-cards{grid-template-columns:1fr}}.template-editor{display:flex;flex-direction:column;height:calc(100vh - 120px);min-height:500px}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:var(--surface);border-bottom:1px solid #EFEBE9;flex-shrink:0}.editor-header h2{margin:0;color:var(--text-primary);font-weight:500}.editor-actions{display:flex;gap:.75rem}.cancel-btn,.save-btn{padding:.625rem 1.25rem;border-radius:var(--radius-md);font-size:.8125rem;cursor:pointer;transition:all var(--transition-fast);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.cancel-btn{background:var(--surface);border:1px solid #D7CCC8;color:var(--text-secondary);box-shadow:none}.cancel-btn:hover{background:var(--secondary);border-color:var(--text-light);box-shadow:none}.save-btn{background:var(--primary);border:none;color:#fff;box-shadow:var(--shadow-1)}.save-btn:hover:not(:disabled){background:var(--primary-dark);box-shadow:var(--shadow-2)}.save-btn:disabled{background:#bdbdbd;cursor:not-allowed;box-shadow:none}.editor-content{display:flex;flex:1;overflow:hidden}.editor-sidebar{width:280px;background:var(--surface);border-right:1px solid #EFEBE9;overflow-y:auto;flex-shrink:0}.sidebar-section{padding:1.25rem;border-bottom:1px solid #EFEBE9}.sidebar-section h3{margin:0 0 1rem;font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-weight:500}.form-group{margin-bottom:1rem}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:.75rem;color:var(--text-secondary);margin-bottom:.375rem;font-weight:500}.form-group input,.form-group select{width:100%;padding:.625rem .75rem;border:1px solid #D7CCC8;border-radius:var(--radius-sm);font-size:.875rem;background:var(--surface);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #ff6b3526}.form-group input:disabled,.form-group select:disabled{background:var(--secondary);cursor:not-allowed;color:var(--text-light)}.section-buttons{display:flex;flex-direction:column;gap:.5rem}.add-section-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem .875rem;background:var(--surface);border:1px solid #D7CCC8;border-radius:var(--radius-md);cursor:pointer;font-size:.8125rem;transition:all var(--transition-fast);color:var(--text-secondary);box-shadow:none;text-transform:none;letter-spacing:normal;font-weight:400}.add-section-btn:hover:not(:disabled){background:var(--secondary);border-color:var(--primary);color:var(--primary);box-shadow:none}.add-section-btn:disabled{opacity:.5;cursor:not-allowed}.section-color-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.selected-section-info{font-size:.875rem}.info-row{display:flex;justify-content:space-between;padding:.375rem 0;border-bottom:1px solid #EFEBE9}.info-row:last-of-type{border-bottom:none}.info-label{color:var(--text-secondary);font-size:.8125rem}.info-value{color:var(--text-primary);font-family:Roboto Mono,monospace;font-size:.8125rem}.info-row.warning{color:#f57c00}.remove-section-btn{width:100%;margin-top:1rem;padding:.625rem;background:transparent;color:#d32f2f;border:1px solid #D32F2F;border-radius:var(--radius-md);cursor:pointer;font-size:.8125rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;transition:all var(--transition-fast);box-shadow:none}.remove-section-btn:hover:not(:disabled){background:#d32f2f;color:#fff;box-shadow:none}.remove-section-btn:disabled{opacity:.5;cursor:not-allowed}.overlaps-warning{background:#f57c0014}.overlaps-warning h3{color:#e65100}.overlaps-warning p{margin:0 0 .5rem;color:#e65100;font-size:.875rem}.overlap-list{margin:0;padding-left:1.25rem;font-size:.8125rem;color:#e65100}.overlap-list li{margin-bottom:.25rem}.editor-canvas-container{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;background:#efebe9;overflow:auto}.editor-canvas{position:relative;width:100%;max-width:600px;background:var(--surface);box-shadow:var(--shadow-3);border-radius:var(--radius-sm)}.canvas-inner{position:absolute;inset:0}.canvas-info{margin-top:1rem;font-size:.875rem;color:var(--text-secondary)}.section-element{position:absolute;border:2px solid;border-radius:var(--radius-sm);cursor:move;transition:box-shadow var(--transition-fast);-webkit-user-select:none;user-select:none}.section-element:hover{box-shadow:var(--shadow-2)}.section-element.selected{box-shadow:0 0 0 3px #ff6b3566}.section-element.has-overlap{animation:pulse-warning 1.5s infinite}@keyframes pulse-warning{0%,to{box-shadow:0 0 #d32f2f66}50%{box-shadow:0 0 0 4px #d32f2f33}}.section-label{position:absolute;top:2px;left:2px;padding:2px 8px;font-size:10px;color:#fff;border-radius:2px;text-transform:capitalize;pointer-events:none;font-weight:500}.resize-handle{position:absolute;width:10px;height:10px;background:var(--surface);border:2px solid var(--primary);border-radius:2px;z-index:10}.resize-handle.nw{top:-5px;left:-5px;cursor:nw-resize}.resize-handle.n{top:-5px;left:50%;transform:translate(-50%);cursor:n-resize}.resize-handle.ne{top:-5px;right:-5px;cursor:ne-resize}.resize-handle.w{top:50%;left:-5px;transform:translateY(-50%);cursor:w-resize}.resize-handle.e{top:50%;right:-5px;transform:translateY(-50%);cursor:e-resize}.resize-handle.sw{bottom:-5px;left:-5px;cursor:sw-resize}.resize-handle.s{bottom:-5px;left:50%;transform:translate(-50%);cursor:s-resize}.resize-handle.se{bottom:-5px;right:-5px;cursor:se-resize}@media(max-width:768px){.editor-content{flex-direction:column}.editor-sidebar{width:100%;max-height:200px;border-right:none;border-bottom:1px solid #EFEBE9}.editor-canvas-container{padding:1rem}.editor-canvas{max-width:100%}}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.filter-search{position:relative;flex:1 1 240px}.filter-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink2);pointer-events:none}.filter-search input{width:100%;padding-left:34px}.filter-layout-toggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius-ctrl);overflow:hidden}.filter-layout-toggle button{border:none;border-radius:0;padding:9px 12px;background:var(--card);color:var(--ink2);display:inline-flex;align-items:center}.filter-layout-toggle button+button{border-left:1px solid var(--line)}.filter-layout-toggle button.active{background:var(--accent);color:var(--accent-ink)}@media(max-width:640px){.filter-bar{gap:10px}.filter-search{flex:1 1 100%}.filter-bar select{flex:1 1 28%;min-width:0}.filter-rating-view{flex:1 1 auto}.filter-rating-view button{flex:1 1 0;justify-content:center}}.filter-rating-view button{font-size:12.5px;font-weight:600}.filter-row{display:flex;align-items:flex-start;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.filter-row-label{flex:0 0 var(--label-col);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--ink2);padding-top:6px}.filter-row-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:1}.filter-chip{background:var(--chip);border:1px solid transparent;color:var(--ink2);font-size:12.5px;font-weight:600;padding:5px 14px;border-radius:var(--radius-chip)}.filter-chip:hover{border-color:var(--accent);color:var(--ink)}.filter-chip.active-accent{background:var(--accent);color:var(--accent-ink)}.filter-chip.active-accent2{background:var(--accent2);color:var(--accent2-ink)}.filter-row-mode{display:inline-flex;align-items:center;gap:0;margin-left:6px;border:1px solid var(--line);border-radius:var(--radius-ctrl);overflow:hidden}.filter-row-mode-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--ink2);padding:0 8px}.filter-row-mode button{border:none;border-radius:0;border-left:1px solid var(--line);padding:5px 12px;font-size:12px;background:var(--card);color:var(--ink2)}.filter-row-mode button.active{background:var(--accent);color:var(--accent-ink)}.filter-row-clear{border:none;background:transparent;color:var(--accent);font-size:12.5px;font-weight:600;padding:5px 8px}@media(max-width:640px){.filter-row{flex-direction:column;gap:8px}.filter-row-label{flex:none;padding-top:0}.filter-row-chips{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:4px;-webkit-overflow-scrolling:touch}.filter-chip,.filter-row-mode,.filter-row-clear{flex-shrink:0;white-space:nowrap}}.star-rating{display:inline-flex;align-items:center;vertical-align:middle;color:var(--accent2)}.star-rating.interactive{padding:6px 0;cursor:pointer;touch-action:manipulation;border-radius:var(--radius-ctrl)}.star-rating.interactive:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.star-rating-track{position:relative;display:inline-flex;line-height:0}.star-rating-track svg{display:block;flex:none;fill:var(--line)}.star-rating-fill{position:absolute;inset:0 auto 0 0;display:inline-flex;overflow:hidden;white-space:nowrap}.star-rating-fill svg{fill:currentColor}.star-rating.previewing .star-rating-fill{opacity:.7}.recipe-reactions{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none}.recipe-reactions>*{pointer-events:auto}.recipe-reactions>.recipe-reactions-rating{pointer-events:none}.recipe-reactions-rating{display:inline-flex;align-items:center;gap:6px;min-height:34px}.recipe-reactions-score{font-size:12.5px;font-weight:600;color:var(--ink2);font-variant-numeric:tabular-nums}.recipe-reactions-count{font-weight:400;opacity:.8}.favourite-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;margin-left:auto;border:none;border-radius:var(--radius-pill);background:transparent;color:var(--ink2);transition:color var(--transition-hover),background-color var(--transition-hover)}.favourite-toggle:hover{background:var(--chip);color:var(--accent)}.favourite-toggle.active{color:var(--accent)}.hero-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;color:var(--ink);margin:26px 0;transition:transform var(--transition-hover),border-color var(--transition-hover)}.hero-card:hover{transform:scale(1.008);border-color:var(--accent);color:var(--ink)}.hero-card:has(.hero-card-link:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.hero-card-link,.hero-card-link:hover{color:inherit}.hero-card-link:focus-visible{outline:none}.hero-card-link:after{content:"";position:absolute;inset:0}.hero-card .recipe-reactions{margin-top:14px;justify-content:flex-start}.hero-card .favourite-toggle{margin-left:0}.hero-card-image{position:relative;aspect-ratio:4 / 3;min-height:240px;max-height:340px;background:var(--chip);overflow:hidden}.hero-card-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.hero-card-image .monogram{position:absolute;inset:0}.hero-card-body{padding:34px 38px;display:flex;flex-direction:column;justify-content:center}.hero-card-eyebrow{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.22em;color:var(--accent);margin:0 0 10px}.hero-card-title{font-family:var(--font-serif);font-size:clamp(26px,3vw,36px);font-weight:400;letter-spacing:-.01em;margin:0 0 4px}.hero-card-byline{font-family:var(--font-serif);font-style:italic;font-size:16px;color:var(--ink2);margin:0 0 12px}.hero-card-description{font-family:var(--font-serif);font-size:16px;color:var(--ink);margin:0 0 14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.hero-card-added{font-size:12px;color:var(--ink2);opacity:.85;margin:0 0 6px}.hero-card-meta{font-size:12.5px;color:var(--ink2);margin:0}@media(max-width:720px){.hero-card{grid-template-columns:1fr}.hero-card-image{aspect-ratio:16 / 9;min-height:0;max-height:240px}}.recipe-card{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;color:var(--ink);transition:transform var(--transition-hover),border-color var(--transition-hover)}.recipe-card:hover{transform:scale(1.025);border-color:var(--accent);color:var(--ink)}.recipe-card:has(.recipe-card-link:focus-visible){border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}.recipe-card-link,.recipe-card-link:hover{color:inherit}.recipe-card-link:focus-visible{outline:none}.recipe-card-link:after{content:"";position:absolute;inset:0}.recipe-card .recipe-reactions{margin:auto 12px 8px 16px}.recipe-card-image{aspect-ratio:4 / 3;background:var(--chip);overflow:hidden}.recipe-card-image img{width:100%;height:100%;object-fit:cover;display:block}.recipe-card-title{font-family:var(--font-serif);font-size:20px;font-weight:500;margin:14px 16px 2px;line-height:1.2}.recipe-card-byline{font-family:var(--font-serif);font-style:italic;font-size:14px;color:var(--ink2);margin:0 16px 4px}.recipe-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin:8px 16px 6px}.tag-pill{background:var(--chip);color:var(--ink2);font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.recipe-card-added{font-family:var(--font-sans);font-style:normal;font-size:11.5px;color:var(--ink2);opacity:.8;white-space:nowrap}.recipe-row{position:relative;display:flex;align-items:center;gap:20px;padding:14px 10px;border-bottom:1px solid var(--line);color:var(--ink);border-radius:var(--radius-ctrl);transition:transform var(--transition-hover),background-color var(--transition-hover)}.recipe-row:hover{background:var(--chip);transform:scale(1.01);color:var(--ink)}.recipe-row:has(.recipe-row-link:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.recipe-row-link,.recipe-row-link:hover{color:inherit}.recipe-row-link:focus-visible{outline:none}.recipe-row-link:after{content:"";position:absolute;inset:0}.recipe-row .recipe-reactions{margin-top:2px;justify-content:flex-start}.recipe-row .favourite-toggle{margin-left:0}.recipe-row-thumb{flex:0 0 104px;width:104px;height:76px;border-radius:var(--radius-ctrl);overflow:hidden;background:var(--chip)}.recipe-row-thumb img{width:100%;height:100%;object-fit:cover;display:block}.recipe-row-thumb .monogram-letter{font-size:34px}.recipe-row-body{flex:1;min-width:0}.recipe-row-title{font-family:var(--font-serif);font-size:21px;font-weight:500;margin:0;line-height:1.2}.recipe-row-byline{font-family:var(--font-serif);font-style:italic;font-size:14px;color:var(--ink2);margin:2px 0 0}.recipe-row-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.recipe-row-meta{flex:0 0 auto;font-size:12.5px;color:var(--ink2);white-space:nowrap}@media(max-width:640px){.recipe-row{gap:12px;padding:12px 4px}.recipe-row-thumb{flex-basis:72px;width:72px;height:56px}.recipe-row-title{font-size:17px}.recipe-row-meta{display:none}}.recipe-row-added{font-size:11.5px;color:var(--ink2);opacity:.85;margin:2px 0 0}.library-empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:60px 24px;text-align:center;color:var(--ink2);margin-top:26px}.library-empty p{font-family:var(--font-serif);font-size:18px;margin:0 0 16px}.library-empty-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.library-empty-link{display:inline-block;padding:10px 18px;font-size:13.5px;font-weight:600;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-ctrl)}.library-empty-link:hover{filter:brightness(1.12);color:var(--accent-ink)}.library-header{margin-bottom:22px}.library-header h1.library-eyebrow{font-family:var(--font-sans);font-size:11px;font-weight:700;line-height:1.4;letter-spacing:.24em;text-transform:uppercase;color:var(--ink2);margin:0 0 6px}.library-subline{font-size:13.5px;color:var(--ink2);margin:0}.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:26px 24px;margin-top:26px}.library-list{margin-top:14px;border-top:1px solid var(--line)}.library-status{color:var(--ink2);padding:40px 0;text-align:center}.lightbox{position:fixed;inset:0;background:#0c0906eb;display:flex;align-items:center;justify-content:center;z-index:150;animation:fadeup .2s ease}.lightbox-image{max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);object-fit:contain;border-radius:4px}.lightbox-close{position:absolute;top:16px;right:16px;width:40px;height:40px;padding:0;border:none;border-radius:50%;background:#ffffff24;color:#fff;display:flex;align-items:center;justify-content:center}.lightbox-close:hover{background:#ffffff47}.lightbox-caret{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;padding:0;border:none;border-radius:50%;background:#ffffff24;color:#fff;display:flex;align-items:center;justify-content:center}.lightbox-caret:hover{background:#ffffff47}.lightbox-caret-left{left:16px}.lightbox-caret-right{right:16px}@media(hover:none){.lightbox-caret{display:none}}.lightbox-counter{position:absolute;bottom:14px;left:50%;transform:translate(-50%);margin:0;color:#fffc;font-size:13px;font-weight:600;letter-spacing:.08em}.gallery-main{position:relative;aspect-ratio:4 / 5;border-radius:var(--radius-card);overflow:hidden;background:var(--chip);border:1px solid var(--line);touch-action:pan-y}.gallery-zoom{display:block;width:100%;height:100%;padding:0;border:none;background:transparent;cursor:zoom-in}.gallery-main img{width:100%;height:100%;object-fit:cover;display:block}.gallery-caret{position:absolute;top:50%;transform:translateY(-50%);background:#ffffffd9;border:none;border-radius:50%;width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;color:var(--ink);opacity:0;transition:opacity var(--transition-nav)}.gallery-main:hover .gallery-caret,.gallery-caret:focus-visible{opacity:1}@media(hover:none){.gallery-caret{display:none}}@media(max-width:900px){.gallery-main{aspect-ratio:3 / 2}.gallery-empty .gallery-main{aspect-ratio:7 / 2}}.gallery-caret-left{left:12px}.gallery-caret-right{right:12px}.gallery-thumbs{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.gallery-thumb{width:58px;height:58px;padding:0;border:2px solid transparent;border-radius:var(--radius-ctrl);overflow:hidden;background:var(--chip)}.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}.gallery-thumb.active{border-color:var(--accent)}.action-panel{display:flex;flex-direction:column;gap:10px;margin-top:18px}.action-panel button{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%}.action-panel-row{display:flex;gap:10px}.action-panel-row button{flex:1}.action-panel-delete{align-self:center;width:auto}.stat-row{display:flex;gap:40px;margin:20px 0;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.stat dt{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--ink2);margin-bottom:3px}.stat dd{font-family:var(--font-serif);font-size:17px;margin:0}.detail-section-header{font-family:var(--font-sans);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:8px;margin:0 0 14px}.ingredient-list{list-style:none;padding:0;margin:0}.ingredient-list li{position:relative;padding:6px 0 6px 18px;font-size:14.5px;line-height:1.45}.ingredient-list li:before{content:"";position:absolute;left:0;top:13px;width:6px;height:6px;border-radius:50%;background:var(--accent)}.method-list{list-style:none;padding:0;margin:0}.method-list li{display:flex;gap:14px;padding:8px 0}.method-number{font-family:var(--font-serif);font-size:19px;font-weight:500;color:var(--accent);flex:0 0 22px;line-height:1.3}.method-text{font-size:14.5px;line-height:1.55;white-space:pre-line}.method-heading{display:block;font-weight:600;letter-spacing:.01em}.notes-callout{background:var(--accent-soft);border-radius:var(--radius-card);padding:18px 22px;margin-top:28px}.notes-callout-label{font-family:var(--font-sans);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin:0 0 8px}.notes-callout p{font-family:var(--font-serif);font-style:italic;font-size:15.5px;line-height:1.55;margin:0;white-space:pre-wrap}.reactions-bar{display:flex;flex-direction:column;gap:14px;margin:0 0 18px}.reactions-bar-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}.reactions-bar-rating{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}.reactions-bar-label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--ink2)}.reactions-bar-favourite{display:inline-flex;align-items:center;gap:7px}.reactions-bar-favourite.active{color:var(--accent);border-color:var(--accent)}.household-ratings{display:flex;flex-direction:column;gap:8px;max-width:360px;padding-top:12px;border-top:1px solid var(--line)}.household-ratings-empty{margin:0;font-size:13px;color:var(--ink2)}.household-ratings-average{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;color:var(--ink2)}.household-ratings-average strong{font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}.household-ratings-list{list-style:none;margin:0;padding:0}.household-ratings-row{display:grid;grid-template-columns:minmax(0,1fr) auto 2.2em;align-items:center;gap:10px;padding:5px 0;font-size:13.5px}.household-ratings-row+.household-ratings-row{border-top:1px dashed var(--line)}.household-ratings-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.household-ratings-figure{text-align:right;color:var(--ink2);font-variant-numeric:tabular-nums}.detail-back{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--ink2);margin-bottom:22px}.detail-back:hover{color:var(--accent)}.detail-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);grid-template-rows:auto 1fr;gap:0 44px;align-items:start}.detail-header{grid-column:2;grid-row:1}.detail-left{grid-column:1;grid-row:1 / 3;position:sticky;top:var(--sticky-top)}.detail-right{grid-column:2;grid-row:2}.detail-tags{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin:0 0 12px}.detail-title{font-size:clamp(32px,4.4vw,50px);margin:0 0 6px}.detail-byline{font-family:var(--font-serif);font-style:italic;font-size:18px;color:var(--ink2);margin:0 0 16px}.detail-description{font-family:var(--font-serif);font-size:19px;line-height:1.5;margin:0 0 8px}.detail-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:36px;margin-top:24px}.detail-status{color:var(--ink2);padding:40px 0;text-align:center}@media(max-width:900px){.detail-columns{grid-template-columns:1fr;grid-template-rows:none;gap:20px}.detail-header,.detail-left,.detail-right{grid-column:auto;grid-row:auto}.detail-header .detail-byline{margin-bottom:0}.detail-left{position:static}.detail-content{grid-template-columns:1fr;gap:28px}}.crop-modal{position:fixed;inset:0;background:#140f0a80;display:flex;align-items:center;justify-content:center;z-index:150;animation:fadeup .2s ease;padding:20px}.crop-panel{background:var(--card);border-radius:var(--radius-panel);box-shadow:var(--shadow-modal);padding:22px 24px;width:min(720px,100%);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;gap:12px}.crop-header{display:flex;align-items:center;justify-content:space-between}.crop-header h3{font-family:var(--font-serif);font-size:24px;font-weight:500;margin:0}.crop-close{padding:6px;line-height:0}.crop-hint{font-size:12.5px;color:var(--ink2);margin:0}.crop-stage{display:flex;justify-content:center;min-height:0;overflow:hidden}.crop-frame{position:relative;display:inline-block;max-width:100%}.crop-frame img{display:block;max-width:100%;max-height:min(56vh,520px);-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.crop-rect{position:absolute;border:2px solid #fff;outline:1px solid rgba(0,0,0,.4);box-shadow:0 0 0 9999px #00000073;cursor:move;touch-action:none}.crop-handle{position:absolute;width:22px;height:22px;touch-action:none}.crop-handle:after{content:"";position:absolute;inset:4px;background:#fff;border:1px solid rgba(0,0,0,.4);border-radius:3px}.crop-handle-nw{top:-11px;left:-11px;cursor:nwse-resize}.crop-handle-ne{top:-11px;right:-11px;cursor:nesw-resize}.crop-handle-sw{bottom:-11px;left:-11px;cursor:nesw-resize}.crop-handle-se{bottom:-11px;right:-11px;cursor:nwse-resize}.crop-error{color:var(--accent);font-size:13px;font-weight:600;margin:0}.crop-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.crop-actions-right{display:flex;gap:10px}.image-uploader-grid{display:flex;flex-wrap:wrap;gap:12px}.image-uploader-thumb{position:relative;width:200px;height:150px;border-radius:var(--radius-ctrl);overflow:hidden;border:1px solid var(--line);background:var(--chip)}.image-uploader-thumb img{width:100%;height:100%;object-fit:cover;display:block}.image-uploader-remove{position:absolute;top:8px;right:8px;width:26px;height:26px;padding:0;border-radius:50%;background:#ffffffe6;border:none;display:flex;align-items:center;justify-content:center;color:var(--ink)}.image-uploader-add{width:200px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1.5px dashed var(--line);background:transparent;color:var(--ink2);font-size:13px}.image-uploader-add:hover{border-color:var(--accent);color:var(--accent)}.image-uploader-cover{position:absolute;top:8px;left:8px;background:#ffffffeb;color:var(--ink);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:3px 8px;border-radius:var(--radius-pill)}.image-uploader-tools{position:absolute;bottom:8px;left:50%;transform:translate(-50%);display:flex;gap:6px}.image-uploader-tools button{width:26px;height:26px;padding:0;border:none;border-radius:50%;background:#ffffffe6;color:var(--ink);display:flex;align-items:center;justify-content:center}.image-uploader-tools button:disabled{opacity:.35}.image-uploader-hint{font-size:12.5px;color:var(--ink2);margin:8px 0 0}.image-uploader-error{color:var(--accent);font-size:12.5px;margin:8px 0 0}@media(max-width:640px){.image-uploader-thumb,.image-uploader-add{width:calc(50% - 6px);height:auto;aspect-ratio:4 / 3}}.image-uploader-thumb{touch-action:none;cursor:grab}.image-uploader-thumb.is-dragging{z-index:2;cursor:grabbing;opacity:.95;box-shadow:var(--shadow-preview)}.image-uploader-thumb.is-standing-aside{transition:transform .16s ease}@media(prefers-reduced-motion:reduce){.image-uploader-thumb.is-standing-aside{transition:none}}.tag-chip-input{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-ctrl);background:var(--card)}.tag-chip-input:focus-within{border-color:var(--accent)}.tag-chip{display:inline-flex;align-items:center;gap:6px;background:var(--chip);color:var(--ink);font-size:12.5px;font-weight:600;padding:4px 8px 4px 12px;border-radius:var(--radius-pill)}.tag-chip button{border:none;background:transparent;padding:2px;line-height:0;color:var(--ink2)}.tag-chip button:hover{color:var(--accent)}.tag-chip-input input{flex:1;min-width:140px;border:none;padding:4px 2px;background:transparent}.tag-chip-input input:focus{border:none;outline:none}.editor-rows{display:flex;flex-direction:column;gap:8px}.editor-row{display:flex;align-items:flex-start;gap:8px}.editor-row input,.editor-row textarea{flex:1}.editor-row-number{font-family:var(--font-serif);font-size:17px;font-weight:500;color:var(--accent);flex:0 0 20px;padding-top:10px;text-align:right}.editor-row-remove{padding:9px;line-height:0;flex-shrink:0}.editor-row-add{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;margin-top:2px}.auto-grow-textarea{width:100%;resize:none;line-height:1.5;min-height:calc(var(--auto-grow-rows, 2) * 1.5em + 22px);max-height:60vh;overflow-y:auto}.recipe-form{max-width:820px;margin:0 auto}.recipe-form-banner{background:var(--accent-soft);border-radius:var(--radius-card);padding:14px 18px;font-size:13.5px;margin-bottom:22px}.recipe-form-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:26px}.recipe-form-header h1{margin:0;font-size:clamp(30px,4vw,46px)}.recipe-form-header-actions{display:flex;gap:10px}.recipe-form-header-actions button{display:inline-flex;align-items:center;gap:8px}.recipe-form-errors{border:1px solid var(--accent);background:var(--accent-soft);border-radius:var(--radius-ctrl);padding:12px 16px;margin-bottom:20px}.recipe-form-errors p{margin:2px 0;font-size:13px;color:var(--accent);font-weight:600}.recipe-form-field{margin-bottom:24px}.recipe-form-field input,.recipe-form-field textarea{width:100%}.recipe-form-title{font-family:var(--font-serif);font-size:22px}.recipe-form-notes{font-family:var(--font-serif);font-style:italic}.recipe-form-collections{display:flex;flex-wrap:wrap;gap:8px}.collection-toggle{display:inline-flex;align-items:center;gap:6px;background:var(--chip);color:var(--ink);border:1px solid var(--line);font-size:12.5px;font-weight:600;padding:6px 14px;border-radius:var(--radius-pill)}.collection-toggle:hover{border-color:var(--accent)}.collection-toggle.selected{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.recipe-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:640px){.recipe-form-grid{grid-template-columns:1fr}}.scan-chooser{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:28px}.scan-choice{display:flex;flex-direction:column;align-items:center;gap:10px;padding:42px 28px;text-align:center;color:var(--accent)}.scan-choice:hover{border-color:var(--accent)}.scan-choice-title{font-family:var(--font-serif);font-size:22px;font-weight:500;color:var(--ink)}.scan-choice-sub{font-size:13px;font-weight:400;color:var(--ink2);max-width:30ch;line-height:1.5}@media(max-width:640px){.scan-chooser{grid-template-columns:1fr}}.scan-dropzone-stage{display:flex;flex-direction:column;gap:20px;align-items:flex-start;margin-top:28px}.scan-dropzone{width:100%;border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:56px 24px;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--accent);cursor:pointer;transition:border-color var(--transition-nav),background-color var(--transition-nav)}.scan-dropzone:hover,.scan-dropzone.drag-over{border-color:var(--accent);background:var(--accent-soft)}.scan-dropzone-title{font-family:var(--font-serif);font-size:19px;color:var(--ink);margin:6px 0 0}.scan-dropzone-sub{font-size:13px;color:var(--ink2);margin:0}.scan-dropzone-error{color:var(--accent);font-size:13px;font-weight:600;margin:0}.scan-pages{display:flex;flex-wrap:wrap;gap:10px}.scan-page{position:relative;width:84px;height:84px;border-radius:var(--radius-ctrl);overflow:hidden;border:1px solid var(--line);background:var(--chip)}.scan-page img{width:100%;height:100%;object-fit:cover;display:block}.scan-page-remove{position:absolute;top:4px;right:4px;background:#ffffffe6;border-radius:50%}.scan-camera-button{display:none}@media(hover:none)and (pointer:coarse){.scan-camera-button{display:inline-flex;align-items:center;gap:8px;align-self:stretch;justify-content:center}}.scan-engine-description{width:100%;font-size:12.5px;color:var(--ink2);margin:0}.scan-stepper{display:flex;flex-direction:column;align-items:center;gap:22px;margin-top:40px}.scan-doc{position:relative;width:180px;height:230px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:22px 18px;overflow:hidden;display:flex;flex-direction:column;gap:12px}.scan-doc-line{height:8px;border-radius:4px;background:var(--chip)}.scan-doc-line.w80{width:80%}.scan-doc-line.w70{width:70%}.scan-doc-line.w65{width:65%}.scan-doc-line.w60{width:60%}.scan-doc-line.w50{width:50%}.scan-line{position:absolute;left:0;right:0;height:3px;background:var(--accent);box-shadow:0 0 14px var(--accent);animation:scanline 1.3s ease-in-out infinite alternate}.scan-stepper-label{font-family:var(--font-serif);font-size:18px;font-style:italic;color:var(--ink2);margin:0;animation:pulse 1.6s ease-in-out infinite}.scan-progress{width:min(340px,80vw);height:6px;border-radius:3px;background:var(--chip);overflow:hidden}.scan-progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.new-recipe{max-width:760px;margin:0 auto}.new-recipe-header{text-align:center}.new-recipe-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.24em;color:var(--ink2);margin:0 0 10px}.new-recipe-header h1{margin:0;font-size:clamp(30px,4vw,44px)}.new-recipe-cancel{display:flex;justify-content:center;margin-top:24px}.template-manager-page{padding:0}.template-manager-page .loading,.template-manager-page .error{text-align:center;padding:4rem 2rem;color:var(--text-secondary);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.template-manager-page .error{color:#d32f2f;background:#d32f2f0d}.template-manager-page .error button{margin-top:1.5rem;padding:.75rem 1.5rem;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:.875rem;font-weight:500;text-transform:uppercase;letter-spacing:.5px;transition:all var(--transition-fast);box-shadow:var(--shadow-1)}.template-manager-page .error button:hover{background:var(--primary-dark);box-shadow:var(--shadow-2)}.is-repositionable{cursor:grab;touch-action:none}.is-repositionable:hover,.is-repositionable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.is-dragging{cursor:grabbing;outline:2px solid var(--accent);outline-offset:2px}.banner-input-preview{position:relative;border-radius:var(--radius-card);overflow:hidden;border:1px solid var(--line)}.banner-input-preview img{width:100%;height:120px;object-fit:cover;display:block}.banner-input-actions{position:absolute;top:8px;right:8px;display:flex;gap:6px}.banner-input-actions button{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;font-size:12px;background:#ffffffeb;border:none}.banner-input-add{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:18px;border:1.5px dashed var(--line);background:transparent;color:var(--ink2);font-size:13px}.banner-input-add:hover{border-color:var(--accent);color:var(--accent)}.banner-input-error{color:var(--accent);font-size:12.5px;margin:8px 0 0}.collections-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:30px}.collections-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.24em;color:var(--ink2);margin:0 0 10px}.collections-header h1{margin:0}.collections-new{display:inline-flex;align-items:center;gap:8px}.collections-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:26px 24px}.collection-card{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;color:var(--ink);padding-bottom:18px;transition:transform var(--transition-hover),border-color var(--transition-hover)}.collection-card:hover{transform:scale(1.02);border-color:var(--accent);color:var(--ink)}.collection-card-band{display:flex;height:110px;background:var(--chip)}.collection-card-band img,.collection-card-mono{flex:1;min-width:0;height:100%;object-fit:cover}.collection-card-mono .monogram-letter{font-size:42px}.collection-card h3{font-family:var(--font-serif);font-size:21px;font-weight:500;margin:14px 18px 4px}.collection-card p{font-size:13.5px;color:var(--ink2);margin:0 18px 8px}.collection-card-count{display:block;margin:0 18px;font-size:12.5px;font-weight:700;color:var(--accent)}.collections-empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:60px 24px;text-align:center;color:var(--ink2)}.collections-empty p{font-family:var(--font-serif);font-size:17px;max-width:46ch;margin:0 auto 16px}.collections-create-form{margin-top:12px;display:flex;flex-direction:column}.collections-create-form input,.collections-create-form .banner-input{margin-bottom:16px}.collections-create-error{color:var(--accent);font-size:12.5px;font-weight:600;margin:0 0 10px}.collections-create-actions{display:flex;justify-content:flex-end;gap:10px}.manage-recipes-list{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto}.manage-recipes-empty{color:var(--ink2);font-size:13.5px;text-align:center;padding:16px 0}.collection-detail-banner{margin-bottom:22px}.collection-detail-banner .banner-input-preview img{height:220px}.collection-detail-name{font-family:var(--font-serif);font-size:clamp(30px,4vw,46px);letter-spacing:-.02em;width:100%;border:none;border-bottom:1px solid transparent;border-radius:0;background:transparent;padding:4px 0;color:var(--ink)}.collection-detail-name:focus,.collection-detail-description:focus{outline:none;border-bottom-color:var(--accent)}.collection-detail-description{font-family:var(--font-serif);font-style:italic;font-size:16px;color:var(--ink2);width:100%;border:none;border-bottom:1px solid transparent;border-radius:0;background:transparent;padding:4px 0;margin-top:2px}.collection-detail-stats{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:20px 0 28px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.collection-detail-count{font-size:13px;font-weight:700;color:var(--accent);margin-right:6px}.collection-detail-stats button{display:inline-flex;align-items:center;gap:7px}.collection-detail-book{display:inline-flex;align-items:center;gap:7px;background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.collection-detail-book:hover:not(:disabled){filter:brightness(1.12);border-color:var(--accent)}.collection-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:26px 24px}.collection-detail-empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:50px 24px;text-align:center;color:var(--ink2)}.collection-detail-empty p{font-family:var(--font-serif);font-size:17px;margin:0 0 14px}.action-menu{position:relative}.action-menu-button{display:inline-flex;align-items:center;justify-content:center;padding:6px 8px;color:var(--ink2)}.action-menu-button:hover,.action-menu-button[aria-expanded=true]{color:var(--accent);background:var(--chip)}.action-menu-list{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:240px;max-width:calc(100vw - 24px);padding:6px;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-panel);box-shadow:var(--shadow-modal)}.action-menu-list.is-above{top:auto;bottom:calc(100% + 6px)}.action-menu-list button{display:grid;grid-template-columns:18px minmax(0,1fr) 16px;align-items:center;gap:10px;width:100%;padding:8px 9px;border:none;border-radius:var(--radius-ctrl);background:transparent;font-size:13px;font-weight:500;text-align:left;color:var(--ink)}.action-menu-list button:hover:not(:disabled){background:var(--chip);border-color:transparent}.action-menu-list button:disabled{opacity:.4}.action-menu-list button.is-separated{margin-top:5px;padding-top:11px;border-top:1px solid var(--line);border-radius:0 0 var(--radius-ctrl) var(--radius-ctrl)}.action-menu-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ink2)}.action-menu-list button[aria-pressed=true] .action-menu-icon,.action-menu-tick{color:var(--accent)}.action-menu-tick{display:inline-flex;justify-content:flex-end}.cookbooks-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:30px}.cookbooks-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.24em;color:var(--ink2);margin:0 0 10px}.cookbooks-header h1{margin:0}.cookbooks-new{display:inline-flex;align-items:center;gap:8px}.cookbooks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:26px 24px}.cookbook-card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;padding-bottom:18px;transition:transform var(--transition-hover),border-color var(--transition-hover)}.cookbook-card:hover{transform:scale(1.02);border-color:var(--accent)}.cookbook-card-open{display:block;color:var(--ink)}.cookbook-card-open:hover{color:var(--ink)}.cookbook-card-band{display:flex;height:110px;background:var(--chip)}.cookbook-card-band img,.cookbook-card-mono{flex:1;min-width:0;height:100%;object-fit:cover}.cookbook-card-mono .monogram-letter{font-size:42px}.cookbook-card h3{font-family:var(--font-serif);font-size:21px;font-weight:500;margin:14px 52px 4px 18px}.cookbook-card p{font-size:13.5px;color:var(--ink2);margin:0 18px 8px}.cookbook-card-count{display:block;margin:0 18px;font-size:12.5px;font-weight:700;color:var(--accent)}.cookbook-card-menu{position:absolute;top:74px;right:12px}.cookbook-card-menu .action-menu-button{width:30px;height:30px;padding:0;border-radius:50%;background:var(--card);border:1px solid var(--line);box-shadow:0 1px 4px #0000001f}.cookbook-card-menu .action-menu-button:hover{border-color:var(--accent);color:var(--accent)}.cookbooks-empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:52px 24px;text-align:center;color:var(--ink2)}.cookbooks-empty>p{font-family:var(--font-serif);font-size:17px;max-width:52ch;margin:0 auto 26px}.cookbooks-empty-seed{max-width:420px;margin:0 auto 22px;text-align:left}.cookbooks-empty-seed h2{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--ink2);margin:0 0 10px}.cookbooks-empty-seed ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.cookbooks-empty-seed button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px}.cookbooks-empty-seed button span{display:flex;flex-direction:column;gap:2px;font-weight:600;color:var(--ink)}.cookbooks-empty-seed button em{font-style:normal;font-size:12px;font-weight:500;color:var(--ink2)}.cookbooks-create-form{margin-top:12px;display:flex;flex-direction:column}.cookbooks-create-form input,.cookbooks-create-form select,.cookbooks-create-form .banner-input{margin-bottom:16px}.cookbooks-create-hint{font-size:12px;line-height:1.45;color:var(--ink2);margin:-8px 0 18px}.cookbooks-create-error{color:var(--accent);font-size:12.5px;font-weight:600;margin:0 0 10px}.cookbooks-create-actions{display:flex;justify-content:flex-end;gap:10px}.grocery-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:30px}.grocery-header button{display:inline-flex;align-items:center;gap:8px}.grocery-eyebrow{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.24em;color:var(--ink2);margin:0 0 10px}.grocery-header h1{margin:0 0 8px}.grocery-subline{font-size:13.5px;color:var(--ink2);margin:0}.grocery-columns{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px;align-items:start}.grocery-add{display:flex;gap:10px;margin-bottom:26px}.grocery-add input{flex:1}.grocery-add button{display:inline-flex;align-items:center;gap:7px}.grocery-group{margin-bottom:24px}.grocery-group-header{font-family:var(--font-serif);font-style:italic;font-size:17px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:6px;margin:0 0 8px}.grocery-group-header.editable{width:100%;background:transparent;border:none;border-bottom:1px solid var(--line);border-radius:0;padding:0 0 6px}.grocery-group-header.editable:focus{outline:none;border-bottom-color:var(--accent)}.grocery-items{list-style:none;padding:0;margin:0}.grocery-items li{display:flex;align-items:center;gap:12px;padding:7px 0}.grocery-check{width:20px;height:20px;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--card);display:inline-flex;align-items:center;justify-content:center;color:var(--accent-ink);flex-shrink:0}.grocery-items li.checked .grocery-check{background:var(--accent);border-color:var(--accent)}.grocery-item-text{flex:1;font-size:14.5px}.grocery-items li.checked .grocery-item-text{text-decoration:line-through;color:var(--ink2)}.grocery-remove{padding:6px;line-height:0}.grocery-clears{display:flex;gap:10px;margin-top:10px;padding-top:16px;border-top:1px solid var(--line)}.grocery-panel{position:sticky;top:var(--sticky-top);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:18px 20px;max-height:calc(100vh - 130px);overflow-y:auto}.grocery-panel-header{font-family:var(--font-sans);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:8px;margin:0 0 12px}.grocery-panel-empty{color:var(--ink2);font-size:13px}.grocery-panel-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.grocery-panel-row:last-child{border-bottom:none}.grocery-panel-thumb{width:44px;height:44px;border-radius:var(--radius-ctrl);overflow:hidden;background:var(--chip);flex-shrink:0}.grocery-panel-thumb img{width:100%;height:100%;object-fit:cover;display:block}.grocery-panel-thumb .monogram-letter{font-size:20px}.grocery-panel-body{flex:1;min-width:0;display:flex;flex-direction:column}.grocery-panel-title{font-family:var(--font-serif);font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grocery-panel-meta{font-size:12px;color:var(--ink2)}.grocery-panel-flag{color:var(--accent2);font-weight:700}.grocery-panel-add{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}@media(max-width:900px){.grocery-columns{grid-template-columns:1fr}.grocery-panel{position:static;max-height:none;overflow-y:visible}}.export-page{max-width:760px}.export-eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.22em;color:var(--ink2);margin:0 0 10px}.export-note{color:var(--ink2);max-width:56ch}.export-note strong{font-weight:600;color:var(--ink)}.export-inline-link{text-decoration:underline;text-underline-offset:2px}.export-actions{display:flex;gap:12px;margin-top:24px}.export-link{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;font-size:13.5px;font-weight:600;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-ctrl)}.export-link:hover{filter:brightness(1.12);color:var(--accent-ink)}.export-backup{margin-top:48px;padding-top:28px;border-top:1px solid var(--line)}.export-backup h2{font-size:24px;margin-bottom:8px}.export-actions button{display:inline-flex;align-items:center;gap:8px}.export-status{margin-top:14px;font-size:13px;color:var(--accent)}.print-sheet{--ps-gutter: 38mm;--ps-gutter-gap: 8mm;--ps-rule: color-mix(in srgb, var(--ink) 22%, transparent);--ps-rule-faint: color-mix(in srgb, var(--ink) 12%, transparent);--ps-scale: 1;--ps-body: calc(10.25pt * var(--ps-scale));--ps-lede: calc(11pt * var(--ps-scale));--ps-stat: calc(12pt * var(--ps-scale));--ps-numeral: calc(13pt * var(--ps-scale));--ps-notes: calc(10pt * var(--ps-scale));--ps-caption: calc(8.5pt * var(--ps-scale));background:#fff;color:var(--ink);font-family:var(--font-sans);font-size:10pt;line-height:1.5;orphans:2;widows:2}.print-paper-box{width:var(--ps-page-w);min-height:var(--ps-page-h);padding:var(--ps-margin-top) var(--ps-margin-side) var(--ps-margin-bottom);background:#fff;box-shadow:0 1px 3px #00000021,0 6px 16px #00000012}.ps-chapter-line{font-family:var(--font-sans);font-size:7.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--ink2);margin:0 0 2.5mm}.ps-head{border-top:1.5pt solid var(--ink);padding-top:5mm;break-after:avoid}.ps-kicker{font-size:7pt;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin:0 0 3mm}.print-sheet .ps-title{font-family:var(--font-serif);font-weight:400;font-size:30pt;line-height:1.04;letter-spacing:-.02em;margin:0 0 1.5mm}.ps-byline{font-family:var(--font-serif);font-style:italic;font-size:12pt;color:var(--ink2);margin:0}.ps-added-by{font-style:normal;font-family:var(--font-sans);font-size:8.5pt;letter-spacing:.01em;color:var(--ink2)}.ps-lede{font-family:var(--font-serif);font-size:var(--ps-lede);line-height:1.5;margin:3mm 0 0;max-width:145mm}.ps-writeup{font-family:var(--font-serif);font-size:calc(10.5pt * var(--ps-scale));line-height:1.5;color:var(--ink2);border-left:1.5pt solid var(--accent);padding-left:5mm;margin:4mm 0 0;max-width:140mm;white-space:pre-wrap;print-color-adjust:exact;-webkit-print-color-adjust:exact}.ps-stats{display:flex;gap:16mm;margin:6mm 0 0;padding:3mm 0;border-top:.5pt solid var(--ps-rule);border-bottom:.5pt solid var(--ps-rule);break-after:avoid;break-inside:avoid}.ps-stat dt{font-size:6.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.18em;color:var(--ink2);margin:0 0 .8mm}.ps-stat dd{font-family:var(--font-serif);font-size:var(--ps-stat);line-height:1.1;margin:0}.ps-figure{position:relative;margin:7mm 0 0;break-inside:avoid}.ps-figure img{display:block;width:100%;max-height:72mm;object-fit:cover;object-position:center}.ps-figure-picker{position:absolute;right:8px;bottom:8px;display:flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-ctrl);background:#ffffffeb;box-shadow:var(--shadow-canvas);opacity:0;transition:opacity var(--transition-hover)}.ps-figure:hover .ps-figure-picker,.ps-figure-picker:focus-within{opacity:1}.ps-figure-picker button{display:inline-flex;padding:4px 6px;border-color:transparent;background:transparent}.ps-figure-picker button:hover{background:var(--chip);border-color:transparent}.ps-figure-count{font-family:var(--font-sans);font-size:11px;color:var(--ink2);padding:0 2px}.ps-figure figcaption{font-family:var(--font-serif);font-style:italic;font-size:var(--ps-caption);color:var(--ink2);margin-top:2mm}.ps-columns-layout .ps-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);column-gap:11mm;margin-top:9mm;align-content:start}.ps-columns-layout .ps-section{padding-left:0;margin-top:0}.print-sheet.ps-columns-layout .ps-label{position:static;width:auto;text-align:left;border-bottom:.5pt solid var(--ps-rule);padding-bottom:2mm;margin-bottom:3.5mm}.ps-columns-layout .ps-section-notes{margin-top:6mm}.ps-spread .ps-running-head{break-before:page;break-after:avoid;border-top:1.5pt solid var(--ink);padding-top:5mm}.ps-spread .ps-section-method{margin-top:7mm}.print-sheet.ps-spread{--ps-gutter: 25mm;--ps-gutter-gap: 6mm}.ps-spread .ps-running-head{font-size:7pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--ink2);margin:0}.ps-spread .ps-section-notes{break-before:auto}.ps-section{position:relative;padding-left:var(--ps-gutter);margin-top:8mm}.print-sheet .ps-label{position:absolute;left:0;top:1mm;width:calc(var(--ps-gutter) - var(--ps-gutter-gap));margin:0;font-family:var(--font-sans);font-size:7pt;font-weight:700;text-transform:uppercase;letter-spacing:.18em;line-height:1.3;text-align:right;color:var(--accent);break-after:avoid}.ps-ingredients{list-style:none;padding:0;margin:0}.ps-ingredients-split{column-count:2;column-gap:9mm}.ps-ingredients li{position:relative;padding:0 0 2mm 4.5mm;font-size:var(--ps-body);line-height:1.42;break-inside:avoid}.ps-ingredients li:before{content:"";position:absolute;left:0;top:1.55mm;width:1.5mm;height:1.5mm;border-radius:50%;background:var(--accent);print-color-adjust:exact;-webkit-print-color-adjust:exact}.ps-method{list-style:none;padding:0;margin:0}.ps-method li{position:relative;padding:0 0 3.5mm 10mm;break-inside:avoid}.ps-method-number{position:absolute;left:0;top:0;width:7mm;font-family:var(--font-serif);font-size:var(--ps-numeral);line-height:1.2;color:var(--accent)}.ps-method-text{display:block;font-size:var(--ps-body);line-height:1.5;white-space:pre-line}.ps-method-heading{display:block;font-weight:600;letter-spacing:.01em}.ps-section-notes{break-inside:avoid}.ps-notes{background:var(--accent-soft);padding:3mm 4.5mm;font-family:var(--font-serif);font-style:italic;font-size:var(--ps-notes);line-height:1.5;white-space:pre-wrap;break-inside:avoid;print-color-adjust:exact;-webkit-print-color-adjust:exact}.ps-colophon{display:flex;align-items:center;gap:2mm;margin-top:7mm;padding-top:2.5mm;border-top:.5pt solid var(--ps-rule);font-size:6.5pt;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--ink2);break-inside:avoid;break-before:avoid}.ps-colophon-mark{color:var(--accent);flex:none}.print-book{--ps-rule: color-mix(in srgb, var(--ink) 22%, transparent);--ps-rule-faint: color-mix(in srgb, var(--ink) 12%, transparent);color:var(--ink);font-family:var(--font-sans)}.print-book>*+*{break-before:page}.print-book-preview>*+*{margin-top:22px}.pb-cover{display:flex;flex-direction:column;min-height:calc(var(--ps-page-h) - var(--ps-margin-top) - var(--ps-margin-bottom) - 4mm)}.pb-imprint{display:flex;align-items:center;gap:2.5mm;border-top:1.5pt solid var(--ink);padding-top:4mm;margin:0;font-size:7.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--accent)}.pb-imprint-mark{color:var(--accent);flex:none}.pb-cover-block{padding-top:22mm}.print-book .pb-cover-title{font-family:var(--font-serif);font-weight:400;font-size:44pt;line-height:1.02;letter-spacing:-.02em;margin:0;max-width:150mm}.pb-cover-lede{font-family:var(--font-serif);font-style:italic;font-size:14pt;line-height:1.45;color:var(--ink2);margin:6mm 0 0;max-width:130mm}.pb-cover-count{font-size:7.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--ink2);border-top:.5pt solid var(--ps-rule);padding-top:4mm;margin:10mm 0 0}.pb-cover-figure{--pb-cover-lead: 12mm;position:relative;margin:auto 0 0;padding-top:var(--pb-cover-lead);break-inside:avoid}.pb-cover-figure img{display:block;width:100%;height:var(--pb-cover-h, 90mm);object-fit:cover}.pb-cover-resize{position:absolute;left:0;right:0;top:calc(var(--pb-cover-lead) - 7px);height:14px;padding:0;border:none;border-radius:0;background:transparent;cursor:ns-resize;touch-action:none}.pb-cover-resize:after{content:"";position:absolute;left:50%;top:50%;width:46px;height:4px;transform:translate(-50%,-50%);border-radius:2px;background:var(--accent);opacity:0;transition:opacity var(--transition-nav)}.pb-cover-resize:hover:after,.pb-cover-resize:focus-visible:after,.pb-cover-resize:active:after{opacity:.85}.print-book .pb-contents-label{font-family:var(--font-sans);font-size:7.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--accent);border-top:1.5pt solid var(--ink);padding-top:4mm;margin:0 0 10mm}.pb-contents-list{list-style:none;padding:0;margin:0;counter-reset:pb-contents}.pb-contents-split{column-count:2;column-gap:14mm}.pb-contents-list li:not(.pb-contents-chapter){counter-increment:pb-contents}.pb-contents-list li{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 9mm;align-items:baseline;column-gap:4mm;padding:0 0 5mm 10mm;break-inside:avoid}.pb-contents-link{color:inherit;text-decoration:none}.pb-contents-page{font-family:var(--font-serif);font-size:11pt;line-height:1.25;text-align:right;color:var(--ink2)}.pb-contents-list li:before{content:counter(pb-contents);position:absolute;left:0;top:.6mm;width:7mm;font-family:var(--font-serif);font-size:11pt;line-height:1.2;color:var(--accent);text-align:right}.pb-contents-title{display:block;font-family:var(--font-serif);font-size:13pt;line-height:1.25}.pb-contents-author{display:block;font-size:8.5pt;color:var(--ink2);margin-top:.8mm}.pb-chapter-leaf-rule{border-top:1.5pt solid var(--ink)}.print-book .pb-chapter-title{font-family:var(--font-serif);font-weight:400;font-size:30pt;line-height:1.05;letter-spacing:-.02em;margin:30mm 0 0;max-width:140mm}.pb-chapter-writeup{font-family:var(--font-serif);font-size:calc(11.5pt * var(--ps-scale, 1));line-height:1.55;margin-top:9mm;white-space:pre-wrap;max-width:128mm;orphans:2;widows:2}.pb-contents-chapter{margin-top:4mm}.pb-contents-chapter:first-child{margin-top:0}.print-book .pb-contents-chapter .pb-contents-link{font-family:var(--font-sans);font-size:8pt;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:var(--accent)}.pb-contents-list li.pb-contents-chapter:before{content:none}.print-book .pb-index-label{font-family:var(--font-sans);font-size:7.5pt;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--accent);border-top:1.5pt solid var(--ink);padding-top:4mm;margin:0 0 9mm}.pb-index-list{max-width:120mm}.pb-index-split{max-width:none;column-count:2;column-gap:14mm}.pb-index-entry{break-inside:avoid;margin-bottom:6mm}.print-book .pb-index-tag{font-family:var(--font-sans);font-size:8pt;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin:0 0 2mm}.pb-index-entry ul{list-style:none;padding:0;margin:0}.pb-index-entry li{display:grid;grid-template-columns:minmax(0,1fr) 7mm;align-items:baseline;column-gap:3mm;padding-bottom:1.5mm;break-inside:avoid}.pb-index-link{font-family:var(--font-serif);font-size:10.5pt;line-height:1.3;color:inherit;text-decoration:none}.pb-index-page{font-family:var(--font-serif);font-size:10pt;text-align:right;color:var(--ink2)}.arrange-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.arrange-actions button{display:inline-flex;align-items:center;gap:8px}.arrange-count{font-size:12.5px;color:var(--ink2);margin-left:auto}.arrange-empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:32px 20px;text-align:center;color:var(--ink2)}.arrange-list{list-style:none;margin:0;border-left:2px solid var(--line);padding:0 0 0 18px}.arrange-row{position:relative;transition:transform .16s ease;touch-action:none;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);padding:12px 14px;margin-bottom:10px}.arrange-row:before{content:"";position:absolute;left:-24px;top:22px;width:9px;height:9px;border-radius:50%;background:var(--line)}.arrange-row.is-chapter{background:var(--accent-soft);border-color:transparent}.arrange-row.is-chapter:before{background:var(--accent)}.arrange-row.is-dragging{position:relative;z-index:2;box-shadow:var(--shadow-preview);transition:none}.arrange-row.is-standing-aside{transition:transform .16s ease}.arrange-grip{border:none;background:transparent;padding:6px 4px;color:var(--ink2);cursor:grab;touch-action:none;border-radius:var(--radius-ctrl)}.arrange-grip:hover{color:var(--accent);background:var(--chip)}.arrange-grip:active{cursor:grabbing}.arrange-body{min-width:0;padding-top:2px}.arrange-recipe{display:flex;flex-direction:column;gap:2px}.arrange-recipe-title{font-family:var(--font-serif);font-size:17px;line-height:1.25}.arrange-recipe-author{font-size:12.5px;color:var(--ink2)}.arrange-recipe-writeup{width:100%;margin-top:8px;font-family:var(--font-serif);font-size:14.5px;line-height:1.5;background:var(--card)}.arrange-chapter-label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:var(--accent);margin-bottom:6px}.arrange-chapter-title{display:block;width:100%;margin-top:5px;font-family:var(--font-serif);font-size:18px;text-transform:none;letter-spacing:normal;color:var(--ink);background:var(--card)}.arrange-chapter-writeup{width:100%;margin-top:8px;font-family:var(--font-serif);font-size:14.5px;line-height:1.5;background:var(--card)}.arrange-controls{display:flex;align-items:flex-start}.arrange-picker{margin-bottom:18px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--chip)}.arrange-picker-search{display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-ctrl);background:var(--card);color:var(--ink2)}.arrange-picker-search input{flex:1;min-width:0;border:none;background:none;padding:9px 0;font-size:14px}.arrange-picker-search input:focus{outline:none}.arrange-picker-list{list-style:none;margin:10px 0 0;padding:0;max-height:240px;overflow-y:auto}.arrange-picker-list button{display:flex;align-items:baseline;gap:10px;width:100%;padding:9px 10px;border-color:transparent;background:transparent;text-align:left}.arrange-picker-list button:hover{background:var(--card);border-color:var(--line)}.arrange-picker-title{font-family:var(--font-serif);font-size:15px;color:var(--ink)}.arrange-picker-author{flex:1;font-size:12px;color:var(--ink2)}.arrange-picker-empty{margin:10px 0 0;font-size:13px;color:var(--ink2)}.arrange-empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);padding:40px 20px;text-align:center;color:var(--ink2)}@media(max-width:640px){.arrange-list{padding-left:12px}.arrange-row:before{display:none}.arrange-count{margin-left:0;width:100%}}@media(prefers-reduced-motion:reduce){.arrange-row{transition:none}}.action-bar{display:flex;align-items:center;gap:2px}.action-bar button{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:6px 7px;border-color:transparent;background:transparent;color:var(--ink2)}.action-bar button:hover:not(:disabled){color:var(--accent);background:var(--chip);border-color:transparent}.action-bar button[aria-pressed=true]{color:var(--accent);background:var(--chip)}.action-bar button:disabled{opacity:.35}.action-bar button.is-separated{margin-left:5px;padding-left:11px;border-left:1px solid var(--line);border-radius:0}#print-root{display:none}@media print{body.has-print-sheet{background:#fff;margin:0;padding:0}body.has-print-sheet>#root{display:none!important}body.has-print-sheet>#print-root{display:block}}.print-page-frame{width:100%;border-collapse:collapse}.print-page-frame>*>tr>td{padding:0;vertical-align:top}.print-page .detail-back{display:flex;width:fit-content}.print-page-eyebrow{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.22em;color:var(--ink2);margin:0 0 20px}.print-page-title{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.print-page-view{display:flex;justify-content:flex-end;margin:0 0 16px}.print-page-width{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;font-size:13px;font-weight:600}.print-page-width[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:var(--chip)}@media(max-width:900px){.print-page-view{display:none}}.print-page-body{display:grid;grid-template-columns:260px minmax(0,1fr);gap:40px;align-items:start}.print-page.is-wide{width:calc(100vw - 48px);margin-left:calc(50% - 50vw + 24px)}@media(max-width:900px){.print-page.is-wide{width:auto;margin-left:0}.print-page-controls{max-height:none;overflow-y:visible;padding:0;margin:0}}.print-page-controls{position:sticky;top:calc(var(--sticky-top) - 6px);max-height:calc(100vh - var(--sticky-top) - 18px);overflow-y:auto;padding:6px;margin:0 -6px;display:flex;flex-direction:column;gap:24px}.print-page-actions{display:flex;flex-direction:column;gap:10px}.print-page-actions button{display:inline-flex;align-items:center;justify-content:center;gap:8px}.print-page-summary{font-size:12.5px;color:var(--ink2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 0;margin:0}.print-page-error{font-size:12.5px;color:var(--accent);margin:0}.print-page-field{border:none;padding:0;margin:0}.print-page-field legend{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--ink2);padding:0;margin-bottom:8px}.print-page-segmented{display:flex;border:1px solid var(--line);border-radius:var(--radius-ctrl);overflow:hidden}.print-page-segmented button{flex:1;border:none;border-radius:0;background:var(--card);padding:9px 10px}.print-page-segmented button+button{border-left:1px solid var(--line)}.print-page-segmented button:hover{background:var(--chip)}.print-page-segmented button.is-selected{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.print-page-hint{font-size:12px;line-height:1.45;color:var(--ink2);margin:8px 0 0}.print-page-check{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:400;text-transform:none;letter-spacing:normal;color:var(--ink);margin-bottom:8px;cursor:pointer}.print-page-check:has(input:disabled){color:var(--ink2);opacity:.55;cursor:not-allowed}.print-page-check input{accent-color:var(--accent);width:15px;height:15px;padding:0;margin:0}.print-page-binding{font-size:12px;line-height:1.5;color:var(--ink2);border-top:1px solid var(--line);padding-top:16px;margin:0}.print-page-binding a{text-decoration:underline;text-underline-offset:2px}.print-page-preview{background:var(--chip);border-radius:var(--radius-card);padding:24px;box-shadow:inset 0 0 0 1px var(--line);min-width:0}.print-page-preview-fit{min-width:0;position:relative}.print-page-guides{position:absolute;inset:0;pointer-events:none}.print-page-guides span{position:absolute;left:-10px;right:-10px;border-top:1px dashed color-mix(in srgb,var(--ink) 40%,transparent)}@media(max-width:900px){.print-page-body{grid-template-columns:minmax(0,1fr);gap:28px}.print-page-controls{position:static}.print-page-preview{padding:14px}}.print-page-edits{position:absolute;inset:0;pointer-events:none}.print-page-tools{position:absolute;right:8px;margin-top:8px;display:flex;gap:2px;padding:3px;border-radius:var(--radius-ctrl);background:var(--card);box-shadow:var(--shadow-canvas);pointer-events:auto;opacity:0;transition:opacity var(--transition-hover)}.print-page-preview:hover .print-page-tools,.print-page-tools:focus-within,.print-page-tools:has([aria-expanded=true]){opacity:1}.print-page-tools .action-menu-button{border-color:transparent;background:transparent}.print-note-modal{width:min(560px,calc(100vw - 40px))}.print-note-field{width:100%;font-family:var(--font-serif);font-size:15px;line-height:1.5}.print-chapter-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink2)}.print-chapter-field input{width:100%;font-family:var(--font-serif);font-size:16px;font-weight:400;letter-spacing:normal;text-transform:none;color:var(--ink)}.print-edit-modal{width:min(860px,calc(100vw - 40px));max-height:min(820px,calc(100vh - 64px))}.print-page-spread{margin-top:12px;margin-bottom:0}.print-page-segmented button:disabled{opacity:.45;cursor:not-allowed}.print-page-arrange{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%}.arrange-modal{width:min(720px,calc(100vw - 40px));max-height:min(760px,calc(100vh - 64px))}.arrange-modal-sub{font-size:13px;color:var(--ink2);margin:0 0 20px}.arrange-modal-actions{display:flex;justify-content:flex-end;border-top:1px solid var(--line);padding-top:16px;margin-top:18px}.print-page-identity .print-chapter-field{margin-bottom:12px}.print-page-identity .banner-input{margin-top:4px}.household{max-width:720px}.household-name{font-family:var(--font-serif);font-size:clamp(30px,4vw,46px);letter-spacing:-.02em;width:100%;border:none;border-bottom:1px solid transparent;border-radius:0;background:transparent;padding:4px 0;color:var(--ink)}.household-name:focus{outline:none;border-bottom-color:var(--accent)}.household-section{margin-top:34px}.household-section h2{font-family:var(--font-serif);font-size:21px;font-weight:500;margin:0 0 6px;padding-bottom:10px;border-bottom:1px solid var(--line)}.household-list{list-style:none;margin:0 0 14px;padding:0}.household-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line)}.household-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.household-email{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis}.household-you{margin-left:8px;font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.household-joined{font-size:12.5px;color:var(--ink2)}.household-chip{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:3px 10px;border-radius:999px;background:var(--chip);color:var(--ink);border:1px solid var(--line)}.household-chip.owner{border-color:var(--accent);color:var(--accent);background:transparent}.household-current{font-size:12px;font-weight:700;color:var(--accent)}.household-invite-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;letter-spacing:.06em}.household-empty{color:var(--ink2);font-size:14px;margin:10px 0 14px}.household-create{display:flex;flex-direction:column;gap:14px;min-width:min(320px,80vw)}.household-create h3{font-family:var(--font-serif);font-size:20px;font-weight:500;margin:0}.household-create-actions{display:flex;justify-content:flex-end;gap:10px}.household-create-confirm{background:var(--accent);color:var(--accent-ink)}.household-field{display:flex;flex-direction:column;gap:6px;padding-top:12px;max-width:420px}.household-field-hint{font-size:12.5px;color:var(--ink2)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--paper)}.auth-card{width:min(420px,100%);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-panel);padding:36px 34px;animation:fadeup .3s ease}.auth-brand{display:flex;flex-direction:column;align-items:center;color:var(--accent);margin-bottom:6px}.auth-the{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.28em;color:var(--ink2);margin-top:10px}.auth-title{font-size:30px;font-weight:500;margin:0;color:var(--ink)}.auth-sub{text-align:center;font-family:var(--font-serif);font-style:italic;font-size:15px;color:var(--ink2);margin:6px 0 24px}.auth-social{display:flex;flex-direction:column;gap:8px}.auth-social-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;width:100%}.auth-divider{display:flex;align-items:center;gap:12px;margin:18px 0 14px;color:var(--ink2);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em}.auth-divider:before,.auth-divider:after{content:"";flex:1;border-top:1px solid var(--line)}.auth-card form{display:flex;flex-direction:column}.auth-card input{margin-bottom:16px}.auth-submit{margin-top:4px}.auth-captcha:not(:empty){display:flex;justify-content:center;margin:0 0 12px}.auth-error{color:var(--accent);font-size:13px;font-weight:600;margin:0 0 12px}.auth-notice{color:var(--ink2);font-size:13px;margin:0 0 12px}.auth-alt{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
