/* Norn Mono (variable) — embedded so the file stays self-contained */
@font-face{
  font-family:"Norn";
  src:url("data:font/woff2;base64,d09GMgABAAAAADXkABEAAAAAlMAAADV8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlgbEByCGj9IVkFSMAZgP1NUQVRIAIQEL0QKgZss+F8w8UQBNgIkA4YoC4YmAAQgBYMiByAbKH91QeSk1oOIatYPZaqqdWJwUzUg/PTLb3/89c9/f4QMc8P/k3//rj33/PeNaALCFagyRZl0IK7/uUy/dp918ltp77v2dUFBHgOUynsFJLz1OjwwE1Qqiw+wNHh78h/Nlf9LjMN7EjiUrkLucijakTSDgF1u2GM3t7ZphivBZU4bHFKu7nLR+3peZy4SMwOaQVwk7C8+JZRB4MoHU1w+h0gkXZAcEEHygFywT3KRi46Ss3DBhj+OiK1nI+xoc/zMATGi6WK4IldkzQxMon/XpYnhCleaXHDhStOM4edx0x4/ZULx35IqVRhlSz3UBGmdqsOMuaZTINiEg6lw6p3ZmcjEc1iHJQuN0vZE+UW8rMF3ai/FcdIo4DhWQOmqgdurBzkYnI8BoigZPGD6IjogH2TvXbp77noeaOCBCh6o61LwqXe1XnfG0gtkpZEgvbsVJMhQEMRyYoOpfm5PTlS/XH+ZrbtBPUiQPhmkkaz8vNm0dv6O1immepxxqK70Fe2VCd5/88f8P7Pjm9kFaZcg7yIUMOZgwZgg+88soL+DkHFGck5yDNpFDuCIQ8jdtSlXl7srr72itjuX115TXtGmprj7sbR3sNce6WZ7PDc/ta0xxBBEHGEEAsTNv6+xzFu9+/ulz++01nEo4xFKCBqCBJZ169R2RkACD+0dCYjp8OnPYAaOmWxAbGQjjk1sR+xgB46dPEe84CWOV0pASlQ2gXK0EmmVNhOIbI0jgSSxWJ9KLSbhmrVo142kcYOnTaAgtiMXhgSyVWPji4AoIkMHTx1OidfdTJwybALldjN1+qSpVDFFA+gCIV3jKMIYVn3oG4OIMBenaEsWEJGWiaMYtJZDpImAeoujCI03bWmI/I3VrqxPJU9CYyU6igbk8gPGMZoxal89jXQyWvKTMIYz/nl+YRShEo27XgIyeESDwCvJyuoudz8RW1qXbe5GsIwozK1xvQq7bdVBA6iicsNJEivk+EW4jizRRuTT89577uKLpLn3YYR7wWd+U4jsaU+XcDd3U/QQKVCnEiohPz9u5shR0/qYMXI+znUybQJtk+/WYAiq1SlYVoeKauAEWsww/WT/BubQiCjqMJAFHOAQRzjBac5ygSvc4LsCZauwiqu8Kqu66qiBmqmVOqq7BmuiFriagQUxQVyQEJQ0WcRiLME6WmfrYb2snw20rbbXDtg5e2CvfIbP8wV9EV/C1/En/a3CRYqkhSHaZQazT65+jJx/O65xh5+KKE/FVEqVVE21VV+N1VLt1EW9NEzTig0JIrqRJL3bMxtgW2yP7bfTdt9e+nSf4/N7Xxhq/8CGj8KH4e3wVngzvBFeC6+GV8Ie3sY38WV8EZ/FJ/FRfBDvxTvxZrwer8bL8UI8F8/EU/FY41sjNHwja7D8XXaVHWV72VJqWS1D6cvm0tW/1z/WP9Tf1S/Xj9Y21dbX1tXW1lbVFs3+nH0/u/nXDmp9CdfAhLpLS7tAHIXsk9RAejQZMWabNYkI/b5rUrD/0wn4XCH9o6SFiNkt0tYm0rWw6FbZL9L0VieRODyEC8f8dO0GSciYSOoiAfyOd04KyBtyH5V8CP2pJiLYJtDsJlKjDHOMWDeVHolualyH1BDOQNLWQL3qbiENX8GPIR0XNq5R5UUXQVKEIRUOC52IQ4xGHtchWjOAhkAjrfOkMu9s08LarZLKDBoMTCTQYJpN6mpyJFKgHwtAPAmqYlHFSbkZpQoQUqKqyRsklcQzVQNrLQBMA1BVnbHt7U12nfT2/bI5UfjhoeCGVYdC8eysA1yBKTqQrQXpOQEo0xmsBlV6vLwT067daU7v4By6qSyU7fRgtxLIQ97beux3SNk67dHqNIf1/ejvhy2AdoDAXFUtBp2rUq2ZEwUIfZwroCBXvcF8zgAroWeby6n8tKOSFjmeO7WyhxXvlV8Bcj/lc9qq65wJ6mC7Sa9emSs0iZ9SBegRusjWPTwf3i8Bzu0litOWoseUt7BoaTn2JHAkiH62UxVdEnad8e04Rj5QUOHE8f7hVbFn4UJmuCxbZSjbsmWGsvi1ZMjWcXu2jsurJr/7+LJw5Icxu77P33j/sTG7nmTZkUcimdn1nf7wV5Gd3+ZtuPdIZOdD8vBjYyg7v+1hoKIo/jYht7C6eE51/jy5fFakfQYll2dU56eBxUmR9tRaG8p2IfqWzo/o1S3U0LH1pzfLN7/Y57QpuaNYnFY7P0PqzhKmPcfA5QW13BMKl6fEtCeBaYplSEWJcHWKsQwhlu+edUqxLMsQUowNlQqFQBiOnM1encj5A2doFodqVeli2n2U/gS2k/iu5PZZcvm86vw5YPGMsKconNCAPXU6P7qx+Rth1MGlXidt968r/zgrE7A8QJN2xUspu6QRf0TPAuI0oxLPu5ZTf4bG88lt4QhCXwNHzpBbpzP5b9Vv9+nR5zreRdkcl9buo6o7W7ZyJvT90OzoCryAKWDdkqkY3H0Ie3pMG92W3NOu6Wk37emujGU1Uecv35i+/13JKCOnvdDnm0+komKHLqSgI4Fqn/QcmXgrJ0nruNTgyYRc4ZAjV3l1WQu32kSuYhHl7DTazhTN1CRLjxVXqfmFf27uknZDBZ1/J7yfSxbYKB9+4tU1LFD2tNuZs9csnHgz0uVoWbOfUcHanVfgfbnARMMCFfoP9+OasIDBcUpbSDROqHS68cdUxE5X+gb78Db9PAtqV6hxAneexXTu1K9ggBGymTW3jX1U9RL9jBIRtafT5NBHbQgxtffMJHgvNkW38xSeHF/shB1IZmJgHwFhuqVDEkIpUzk1EQhaLUdrwNDqXMirhWvJe/NZstPaELmYB1Q9p5K7eyz+4PopkMFtutjr6IC+gbnI3ZTDNOFAuFqGDxucwP2usUXFE2SCoAcIAHJ1Fr4nNJihhRWZY+XwCB6TFjwB/RDVeAi3tANUTAmWgSayxi5qZwCKHReUYAYzAGZPRyvGIw8B9aH24/anGeYEbbCNVaGzIOgV1BNpXKoYH9tbdYIDDSEqzf+TatSk858jU1ZKCXo0jXkx7GVW0qhRqsSPIkFKaX/AZJxqfsTlwbffkjzZxeF333X/Bd4SalkJtW9bEKOJPZPGRgCwGfBI0qw4NkInZ7y6gGTqs1u83sBm6fX49GbZ/2S22nl/5/oxn/CGvHhO7fx5+uWzYtpnPCP5Wfup7+IHMe2PzfLngxZ7BsgVHoc6/wlY/CDS/shpTUijtY+ju+ZPjJpQyrgS2XpnxPePyrafgKDJx2D6MZJpsgI5AUTzMenv3z8LgdlfnJTcoQrAwxcA71SKfpr3LFxwUDLnb5JGBClRJaeIffTMHE4EiJfjfq4ZQuUKOz7Wanqd3dqri1AQA++nJh0v62mcxITLUXKG4A4JIWNUkSLZFEguTiAf56PR0AwilZDw527Jx9rpRFKIy0m7H9TJ++yn/+46JtbHgugFGzF7nWuW3EJQWQraEJAPHpcrMQG367fl1W10kkItnpOXNGbyqfUrTM3HMGh09Wqx0VWaj+UZzEDCnEhCUPKaFnpxE+rzeKOCGVlBg9C2RO0NrKighIAUBcKBYgNIYDgpmC7QSUaCeas7JFAHsvDaNcfvRWhRuOqFT24C9eW3r8o0PqnhJlBdjoqZ6WrADQPUY2HpoXuwmAgKGk4J5ZcXrs3ssHCDF/ahQLbDonuJxCufPrseUy8nbJ1aOhxXH6Uzlk21s+igQDR4Jkmy1wTPo9jjAYhsMk6Qc+1OmJS6PjQXHCZxg9sFXFQeBQUZJh1+uGtb2iHMdSxQw6uYKhb7Iu0B16BucV51foF+HZmuVeCBXbohNa2dbtxETqYLshLZ5EYbS1YKArjzyA6PlCGnGTCf5MUBkab5iZlWSekypjRS/g2KCkMNYd3F/G7UQyFAXWFBlQskAMc0I7i2XhgODxyMBkYI4pFDw0eOw6elJYI71Q/GjWVpfDWYDDYkGKXeOOv6ToWvtUmzJhJOXM5Qk5nv0GxegfAk1j6JKuonWIypWZsyTHIg7ZGaeBnwZNuXR4U79dzpEKyxM5cB0LJiM6h4yfuxdTARCdIvWPwSm7+FUqh5YYxXI/CDaF7FFNTVFmR8TEnzGkZqzFhh1uEZTVsJ8eA0qRLLLJycAJ7Pmstl7jBY3q1hmTUQ4smzEjknrKdLJFOAI4HwvrOIMGPCLI2uj5iluwc+0A/5jJfmQVJuCJkTmcEzX60KkDSYN2VngenEz/XSw6cPr6xPXPnwc4fPyYtvn+h+Pnlj8v/nZS8ZzJ75fvbG93fv0NuXDHeH18yGu3u4E97N0RuN+m2spvambI1llJLTDjpIO+gULP6US7+6dS1EQSJrZyL7/D0OIpB0IhAwnz01dbYuJF+WF8iX5Sk/llrWaC7KKXo+W48qW9MQjJfW/iYO0g7azwi782lugnbQBYIoFVsXm38CfaZ/UWTgV5v0RiOka9sTCi3EvunxppOsl52QllOnWry3Y8BleaOQ3Z8lHFhTWaXT6XSVVRsNsk47Z5d13v69qbVif96aY/vyJqitRaY9W7Yf1m7Zrvvr6dR9eWuO7c9rrZDWlx5tKGfaA7JG9PmJ3/f6fsAnA+2Wcb8vCC6xl3jhp0gwAkWW0TT5mVEQu2gHrdIMVv4nruHyk4/WZqnuyuTHyezXVwBsA5ljLORd7wKwajKRSdlMYnV/hYnV29P/9K09i5m0gx6+KZtL3TQt/XGgwsTCvDjOfXviDFH/JWs6YURnT9vfoR20QQE05BPBA1Ticqqo9+K/PP3cjYNi+NNINLtIdquDdtDm/bE9ZudSQcRnJ5smERtGV5UySjvo8oNKw5sjz2zi1OQlEUQUu3ubVvMG0aI/U/8mcnFCU84xozuDVeqNbItwBFgSfD7VA4P/kMR/NjHBLwQFvwC/tQh+IeO/3K4wF/TDobILPSef6Tl5IW08ArWd6STdmU7SobYsbTySNt78FLAUxiTqm82tFfd3lLInQNzhyK9AQn2z2aWDfysTE3zEB4dC7TztoBnaQTtOR9anfu45NXnp2KQqk5TZl/7gByB2OPWkZVIm5PyQ2Xe0cPfRwr5LUw15j61oVniIRDBIhynUhhQv+YTLO4oJ97SMRoOdQbW4Fq2otELY5Y22mULgs9eh94J2M/Hige4D3V6yGQyoMBIjcROl0GuLlXGD5nskhAyvgMUAXpnCANb/w03cINMgg9OadJIewBSPsn26l0hb6+xIDvl7Rv5/TisHB1o81ZcdCWOJCAaG8AxCAfrjbQtW20K8HwP+zlxRZ64fWIyJVqz4BgMoEsXF+ZwrC+H9gs4xa2Y/zgc5e3B1R5B5cB6lmmOs0hKMmddtwaiOd7rJqbFz1FhwPSXIkVkgh8kCTilc6k16CdPb/s293nBhqq+lcHdLYR+oFoqyRUXZC6VTZE2hpLT0RmmpZE0hgcwxFItQPBbeH6ofI09E5MlYqB7kGP3xjrcvP74v3/vjHdAy5KCo6RUunWwTNb0Ct4/sIkKnQHbBWUua/MxomvwMPD3y0i4idAoEjDs9TeGCprBncOcHsGVATdQwL6hUErmqw6k3GvVOzkKZqFRpf6ecqTcaj3RRJkpCmagFK1R1yFUSlWqmmUdfuiYK6Nkj/TJwmIOU5pLjqxpTsXzUoUs3OPEYhUQB3ozq1DUK12relzDv5U65eObEzS4TqNTFlIkKUiaqGASck/4i8UK9PE8YwsA33s6x3vS5PV1Nak1v9XfB9eY1Aov8pPsHcLivTiogaGuIwLeSeeniJ/cncRJ6XpzEyZSh/xuPcfwsUXnLKa8FFucmXpwdG8j2iH0vTI+5EA6sJfHhIasivulh3UUm8lae8MXHbik/KjnaMbyotpOamCPhVd+ImRAR/XYUqtCYDk8f9ufRw8pLfxlHaRvTdIV/15uxxf6eg00LnyK/uq2lln9HPtwh4WMDfo9sJ/l+QWMx3rVKC17x2yS0DR4tuu23YCPbaE1Fak3/98NrhoBqz4Jgz4LgHjB8T8sRLf++QOXSBgU68gUdKdAGXZDyzJbTaMvpZ95IOks8v/IwWnn4+bMEKC7t/eHPvdNVlHPT6uDe4yowZbJVqDhyNI7NQcWRoLewLPUG1cUwYQzTRb1BsWzINn26LZthljNMtm36dBvILf6NflhmCdmmT7dlM8xyhsm2TZ9uC7Es9QbVxTBhDNNFvUGxwEyYG4ENGP9nPJtYoNcXZM+NwAaM/3vbByao2BC788c07ZzBZRbPN2dbsc1psuhsqJRCSGzsp/RNd9FsdvaWj9iPXLvsE/HXrdfDrluvw7uXiH73moRDFrT9DfXkkEQur6P0a5Djm5L0TBPyXVDTy5tj374ohopZtf3dxF/LgyMTMIenYA4vvFnO+nIv9QZVTr1BFU9YPkcpU6ablOFbw63hW8OXF12jTWlKmTLwPCUgPT+9p+W071WMSf6SsKOSvyT8b99TcUDLaSXw68DVSU9f+k1w6benD42NvDL24+XAN7SpU091NGR0q8xkhVKmfM24saYvfGt4EpytL08ptnQw/Io5nA07b+tenpWcZTWrZwRM/0s9bQKy3XI2uSZIK+kv6XPgpVjNW+2DxxZgwnI2+XYRDdf736O/pCuKx45Gc/qKvT2/oeEW0y5swCkFOdArwppCfwnX7+SHv0Nn/5Ge3TP+6WHFR/UQmDvyZbkZzvCApg9dFvMvB5+/rLe6f3vhQaA+P/kTB+cNm57ffICbHw52BHGe00juKzhFVlB6S4+RM8K8Zd8+q3XfS8w6FDG3lGpLV+obJV0QTvIdOabNJCF3DqQZaou0HYGNcSzfq+/getOcyx4kgj5fLAeDbqfEybRnGDJmAdTmydoTtd03QFK+K3MlKe3a2h23222sVQvXXf5Eq0OUox1JLr7JnMptzhHj34r+vnPtpTZa06cYuUPk/+7ihaRLPvYWqbacHHj5pKe9WiKip3DVRj1G4eYOpy12xXtvn97rb5yXD5zHvxS1yWv3Now+xthyA/e/ODeFkDnSrs7FJDOH8sUDYsPOOb77zw3CvPuWNqb1/NzX8/PtC5q+3ff4n32PIfiAe3d4smMS3+Ue9KjDgS7aQRvHd5IbMEjWqiRrVWvbcww5k4H1BNGVTgWJrGwvu642ykTpzwD+mUZlWAJ0XW7ZDe7GPveoqHqamwZNKMb6odCperMcS5moDvjiTb0WC8x2fayR7ogpZ92LHtg5RJzLYxQMAos5taP5pTYnSfcU+qNW8/mDARmeMCD3EDyJJEfLfLzyfxkyqvzDOOHVjOTNV72gIPlVWqW7oaWm2v1sQmUiSax8NsFdU93Q4tYqq/x+kMzUGrxiJCrHCzmw+lS33/7lhde704n3RCt0L2MAS0RxG3yQ0sz+QbNm5ZV3GQx8T4tWllLFwPb/2QbUkN3/9VS/8ekG11VHS//wU6DyiXUREFNc3Gom5hrvnpN0bja4qnXbDLBfaFcSmRiD8AADqFtc0PhYdtCkkNkZ6GVsDGFsTC9kyvjqCGN+bgWxKyjkyP5OV9ZCvy9nMRrfbYfxroj9XNb4W5dix49DouSHKRIgEHYl2OgAtK1eGkXspPAiebhWU6Q7Yt1mClCbKlc7oVVHO+h1VaPOaTvUWnVYSwKkts8rjuh+Yk99ASWCwj1Sa+fSifJ3ES3JxIQQdtgWKBOVTJmoB7NNc4nPVCgTdbhmQl1Xp5as7tktWryZKXlzFzyYkXeSdEJtyX+ZzGyc4A1In9bc1k2zF2uzNeLeDdPVM2SmesN0L9zz2uyLm2a3QkQhkMdevFRMwZ3BE9f32oeVgVz4DzMFc9V1dcD64qpFOlT64v4kqsZMVZuZLOUFVqXRy6kwj8ofUg/b2FQKUBVvC1ltoXgVKv2dP4o6f7wo663EK3moxPr6hd+4LPIKHpVqkCN/QdNGhYhgJvvFzUiwVtPN/v6nwUUpvpv024pHPsZXQlqJiyOfDuI8I9IDKnt5G094G9/EE978XAWxdkOKbtgYY93WGDEU0B3HEYR18ogy1R490AQKNVKEFaPrF2MqexaZSdwT85/E2mKQSZREUzPcPayebWHXJBqNzrajWJsGuK+UmYsOoPJe13a6PvB6Z+h1r+aW23xzbrAtuLVT80Kpb6ZXE8ppeN5gR8ZNlLV973DvAId8K0mwtMxys0vv7gVIcgyWb5ffSILuDJKcPX/xEAEu73njwr6u9HWDb6Am543T7ZfufK/xvy1ZCIUHef2epnhPU/+DvMz0Wm9sSSAJ7Sd4a78gXwyMzs3aZb1jk0nfOnF1qSZJ5sFtEx8dYp8B7iRlolInnLA+6dtyci+K8vzEk2afZYbgPN9L+u0N6w2oFf8240njAyQAb0+1N7qID+G3oV9xj1P9eWpN17sjOzHkOPZLfAKlZRZcmiEzMYzNkJkHIrTNz5AZYfPw8MW3scUYFAwGB7+9/TIatuXGpwNrllgWEs+1NrUmtja1fluJX70V9do5usqumoXW9btW+G0Ig2efpvohzHFO2vK+KQycofaNpY4lcOw0yK36HL39E5khKq5wsRUucdSwy9pDzRFUc8R6HfSdiLcIa51HzU4QW4QHzM6jMNEi3FJiHFdi3LLQGYKJz6KeDPqnIBn9cKGyoFRfoHn7+cJEi8K73AvS79GBrGVZeXOjMYebMIej5+ZlLQOpHj3nfw6inkUhf4jYGfKHIILIJYHUkEAWV57ZmEBPKwboDxMtgYXO0EJnL34skCZDMoAU8ba+v61gpyo4wOg0enSvnroKeVNXV9j6SQV7dgUHX/eoWvlGrVGramWqGaqomd2MmcbM6ExeFKHqmFFn1Kk6pha26xWjRO9vVXFTBQmoUjBG6JGqHjPVKM5oNBpVowj9o1GiP8oKYlMFSbQeoTcKqRyj2Wg2mlWz6kaz2t7N2G5sV9t51e52tbtE6qgsHqqsyehS5fRC7FW9OCxVB5aqhFd1MyM2+nTFNBVlSM1RLB9vVAubjC6j3Og24g19fA7lqBp1p1UpAmZ0GeVGt47VNBGkujvBc3BpkO0sqpMkQkoAVYs4MlXWZHQZ5ShVn7yyoynJE7LYIkFBxs7ZOPT6Rvt32W6K5prWWJsCTYg/glBQUs1UTDVjrmaCagY9R9iVVFtEYxOaUW1heu4qdo3eivTBsoLjHgICuqbaukWm+njRpCqtk6pDf1q73GRkjTKjyyg3evVIPR/Nrnaqqxayg+7WPXoRmkTtwQAZGhpBxbyqD0DXtQjeVo9bbHazijuIk6x12JK4yIq42/GA420TPgjEBBvhi9SjpKsEfcoq9hQ3BykbBQsfUl6h89hknqaFdvAhHUTaq56pZ+mpOq0X6BXCKEKv1uW6WW/S9Xq36FJLCso2IoMPNUzUitBrKS1H81rFnVEhrF/3A27t6gfc2nvcvxz34NuH6+6v4249HDsy9wfYWPkBjCFOTXl50D4iUEUdry/rPyjm8tF69BqYivO3nggAaTqks0Uxj3McDklgUG0SMBWRLYyQxVVxhTNNl5GouwiFTudnByEsoxSih0T2AGVtncLloyCWjkK3uNtB9fihqFgsRiKEhVO0oekkGVhKEGUSgWyYR9hsLh+tgvihqNg2S4VVuVPOVWo4xzF1VPW4O47ih6JiqVQfABNmThMAXBg7iKvYSDofVDEA2aFW8AbqhCIerArBSlx+Cr0G0eo2RyMKZTHKj1ylEl/vkhTWngYC8gxWrtAlGJVYHbBzl1ZRQhataLv6T2g97yOm+VdGarJ7RhKhYsTxTBAcRasQScTywtB63kuEArawapp1v4xGeNd7sDt0YRSiuietYyZczTpmVqAiSZxZa69h6oo2tQIPwwIYxTBMRMGK8YSIjMjAGLaXsDKo0iGiilEsAarAXczrJNBFyRAaZv0vZJWkirvCld2kZUL/nwEpu8i/MXaKBeX/Z2SVRGVX3dRm9UK90a5OocvpurqF7qB76oF6mz6iX1lsJbfKWH2tUdZ565tt2TF2KjubXdTuZK+wd9r3HctJ6mRxCjltnF7OSGeJs9U54FxxHrjKTeqWcVu7i9317gn3ivvYfe/+92K85F56L7dXyqvo9fCmefu8O95XH/y8fkW/kd/LH+3P9/f5V/0PAQfZgrLB0GBWsDHYG1wM7gavgu9hojBVWDpsG/YJV4dnwntRnqh+1DcaF62LLkYfITGkgVxQE1rDDJgPy2ANbIIdsA+uwR24C0/gNbyFL/AbNfqYHrNiHiyMJbE8VsUmOBon4Uycj0txDZ7Cz/iLNPlEFEeJqRxVodrUiFpQO+pKvWkQjaRttIcO0ym6QNfoDv1kxT4Tx3ESzs9FuTRX5Opcl5twa+7I3bkvD+ZRPJFn8A6+xh/4O/8VRyKJkYSSQtJLVsktBaW4lJXKUlPqS1NpI52kp/SXYTJGZslCWSHrZasckuvySL7KH2ObyMSYhCa5SWsym6pmiBltJpmZZoFZbtaZrWa3OWiOmz/kzfz7+f/ld+UnTdMsm32mbS42jzJXmSeap5vnmhebV5rXm7ea95gPm0+az5t1c435XfPH5i/N35t/NP9hvm6+Z643N5gj5qh5oLCgcERhWWF54fjCqYWLC1cWHi88W2gUvlX4QeEvhciKWT1WzrKtxdZR1irrdOtc62LrSusO6yvWt6xfWP+w3rdGrClcwsfgm/Fq/HP8WzyEZ4up4qKiUzy9+GLxs8UvF39S/HPx/aJf3FTcU5woqlKs1FNaVTqxdH7p5tJDpZdL3y39tdQpg/LS8gXly8ovlRvlteUvlL9e/m751+W/lN8ubyyPl+cqRqVYWVQ5tnJe5cnKNyv/ruyojFYOEkiyhJCl5GRyKbmFPEleIp8l3yQ/JUPkUBVX51X7q8uqx1VvrN5VfbW6tvq16l+rb70G6hD0AAsAkCJhSEgYBLbNmSaElGvqEPQAAwBQR23P0/XloNt1Xf7FOgQ9oI+VNvJS5vHEBEZKoefSfE0SoTAkRCle70ie/oROpEL4vu8f1MLdUkq5TxkWISQIgjCk1HEcJz1DShhjnENqn5TScRxKBFSxl8IbRaV2/vc/76CcZdWOcV3XPaaGEELcLF5N/wkXngWmJyc76z3P89Z3GFSqoQlBaUsyeey5Y7RJLQLTSik1DXCFUkorGK8p4se15S6R3SVB/Iiz4iwpIf8zHHe7UO9nPrEMHXa7e09fU8DQPgxHo+6cXs6c60aj4DYPsVejSR6ctwpJKXoyj1aw2KR98yYh5Yb2Y5dCCCkRgv8uDdWkiDcWKqXr/lC73W4P+TwUsQmcZcuXL1++zNF1hHi6rzzzkkNKNeWRVFon4Z3P130gi+dZQqhx/ZrHlRC6/054PeV53ieBvcR13YaWQOpwiztBRyRLKTK/LtNElDe0wwolGqmi8xI7+MTzPOOSM74Pmn1y9+5yGVPDMqh9uK8P790vAhGNRolsUW7bxpt9KlIqUtlw2w4jB0YPHkDpbM7YsS0EaXTg4ChHTMtlEzqMrSfRhRIUUR3RsBvSFp7VbTxHU8pxeAO22xqTZKc1GqVhqIqWeIQYhDEoaB20W3etLR9rF/ga7fYacNQUeHSR9c1bRJFSUwcUpgYAszrdNWw9blgXsz6wNq+h7elxPPopoK/Z/qiGlvH1uC7jxmVIbVrXPOB6emoX/9hgAEvp+/5GPwtOLKt08mW1/QBjztJQstudg6eeuQQjxK19WD+6GkYm9f67W1yNnO/aehz3z39CJTRfeilCQ6RDRoJpPciTTxh2XVfZOHMi6JhoIg7mWEuLwXGl42PsME0AQTQgp7vzZW3k+0oNVM69cV2Wt227j8iA/wNHXSqE6R+YkCL/uHvhDagUyyk2DklCfEJGKcDBwCQWTxtibQDhXvIfSnw0i7m0UaunwKlyLzExMTFBAsslQ8kSWk/zRpqfzcnT8WXOWQRmL3g4a16naQXPc1M9igAbagQaQzYyRY7U6bwB4USWQwhp2iEMleJmPwTgYMiYwjXkxTU69tdCEpJ6zHdYqgjCv0/Hg0c/6Dg8Jn3fMATzpKWCNf2UeRJ9PJU8UgW2uLuSWGKNCFt24PjBcxzYvR2oI5NTH1dfXvJB/5fdK7ds9TawF3rE5C6JS0sZH7+YxoGfJmeplStPPmFgPjXIXwnjxOJH2IQwKIQDkDsXP0Yp43hqH/28feqYaaWUJ4NpeQcSqP3+W2+99db7bcfh9Uyn0xkO7MFarVYbtBsgzsC0jeUaIM7f1LLUTrsjh5DnnMb+bMyRH61ASlDOoOtyzXGi6Bu5SBkIu9JG0NhwggjDMBx6jnIrGk5bdzKKvFkSYlVmdCHnVrAxC9dSTKEjOY9i3ii7ErMNhthSli9HiGuRw3biRJhaoM4ZpbxwN8zqQP3TlUIKSetxz4lcEPa28pWv8Ga2dEH8whskhHAcxWNEsm22gtkQAJ5WhABN+xlRQQWWHNIwpnBKz/xYZLgMeEBqdrGscMMNKBnCS0PWdQGCG8rSKuVBhgoxuUC8JRbOiEnvbNtNKGVLotYDAbMSjlVQX4ee3mT+nDQVYivw+cNMUwYPG09/9tlzznn2WQ7HxqKwlveSCV2ysRhM3C6HUlGHVxMG3xJCTiueP2qQ1TCTMewGFLNw3BSgvWx26GqtJDJ6LJGV5ShCqzuQs7mt/ODkD+aWAlmlkSTKJYFVgBnjrReC9vmv6SrwpoeiHcm9zooc82jtA8eUA6RMc8uvu3X9a+8e4+ITLzgzqhns2oTEtB5FaO4U6pASiYZJCoHc+qmSy9vSic36mHPoeS2KPDpcuJOlq5slNcDOKogELtLwpJPaXcYTI88VD7H4MtmRy1hsCNc4g4ODTTg8bCJSJvHnII9ksY8x5QxgBt99lwGMG+ntkMZSvvaasZ7otNMwZ5rneS7TXNfN8GRdVxbC8Ryc5lUbtMeW8xSPDk6klDKY6dAosBeySe8uCocHs3NzJ574fySZQPS2NfCkk1qU8hbilBvtbwY1SsykkRftsYr0nojOtcmUYhChRrxWqw3QRu4sO3+nMyJwr23boZmsyBBbrpGQbWFoh2EWjMsFIKLa9HKLmofXI5WSJiMykOWtJAgIOYSuE0RghvAW39UaGaWACBMfcnJTHxZi8LJcOhZ0fLKc9XSGTk+JSOQiOlBDxoxDZJFtZJeY3OQjKRFncSnzNXSEajWlpJFzlIWKdaJhGASBuqg4zRYzlKfOndiZTUefNEJR1O12FzCmKELHGlQseqjHFPFxgg6j1oKgp8NysYQKMMEBrutZs+0DOaK8ScOQ4igKwxDj8ySY0ff90zuJYG1KtcI06T+qAQBq5bJYSk19hMyZZPF52qi5bpAkK7OECrEslXToFwRBEEVRFPdlbWhipkFTguhXOaA9xP3gSmlwfkFCO9K/Jgy7wTrARHN/2tNwRruFm1yiK3QQjRON5imLlXQtslGCdc7mrIcd0XFo+D7eDoIOy+4Q3QNozjmsg6QBWgd+KwF2PLeXKt1gW/V0wVSk1YQdvpfVnRyP1CQwjKoNyV4MJdMGKsyrljDqqt0GGrVDgljoBqa56aBGSblaWlwp4LotHcxgVEspLw0bDgcXIk2Me6otb4f9DH5KgvlK8/aVym0XOD8ZktSEJMtMQrgOR5RyJbJhq6VhJ1y6ygay0sDAaiMjxPzNU4n3woFJMTtCjuRN6Hmrw/gqf/jDUV5xhXZ8V9ArhBoTaz52VSA1j8JO5mFez3q9NgQQzs3ZS+f0j5GMoT17SiU12wr4EPVNoMIaqNx+w7dfNUgUgBeuHCwrOatKpT17UKyRhVMttefmIAw2XEEgJ/q9ODnPqYP7D5ybZyKEcpBOZzP5QI5XEbIhr5K/RpMBSk2Bt2vimg6a0szwHg1CDeokJHYQxijAhY7J1SNeGsalq06DCeeBq0ygvaiIki5YKdCFDz3PFqczC4A/YTrrnodxEGifGAjQG9UY6lho2uMy4DA4PMwSjq5HEcZDkV8nT9UvBlv2K6WiN+fd6fgXzZAyCKNK1hZfqE4PhjuwkmWsqnfWHQ5qUx+0eSOllNy7Y+vWzb7PQIzl5uJx0jeiVu0jeRmEcLnvsJZQapYByJLhtpG10baQFZYBdu7cu7e/v9+u1tqnpm6a04ItoMGnZCH+qRLSsaSZksFvFSBJhm9JlvyhEmpYMvsimAQInqKvB6S2PC5g5vUS6M1GfHXOWCulR1tNdvWUUftZMKWmlD0NBAE4DeNl0vPkslYLTuRfo3qa7VuF3JGTfG5Ye/XYM3Iy16jW6Fbmu9FK6QdHH7yhH1CYW0ezt08dxW5OoCnX7UJkEW8d7qTkAruiX25Szc58ToVk2OwUQ8mXfXR9pgchzs6xE8zMJnuyetQyI6X0jI1/jIwOpg9PjU8caobxXJ6E6k1dODbmFH5DlzMryZJTe5HHedKQ3dpj+WMDfmUDP9x6oMuA4aclhG1diIWc6m2llI7QxSJgRAEzWdcPUpKVUFYbaGcOCQ+ucbDSRkqP8Wu/CvzZSj2vlXwN2DYYYvEh7Lrz1vz8RAvmJ9YCxRFgVDcV8YL5ASp0nHfYLd/9vxDT+jfhLPXhh2++M7JVREpxa4KPq9Ts9MYgDBmk1B0gLr16HXR5qxHXScxpGWPQLzTiZ9LoE7z5qwChlqZSx0oooVZgh+k10LFVjUFbyUAFhkfqFGwMoeIwvYYtowAwVyyABNxWDc0whOAKLiCjYbqwU7kTh7KKT2qIXSWjtGsQctaI7MjoClAlUHR0Gq1VM6RHqMGk9BlCJE/5Vm/Q9pE+i2fyWllMKSWF3HT6GtWiJoqAXbRIOSLYswbOSvsD40SJENWwHKQG/7E4cGJArr1mYtKABlwbxGPFDwlwOOoQknvSwlt6ECAGeXHbVkqFBzhTYGIugNKnfdNxsMfBqYKSWINc7i6OBcDceD9jx669NVWfRb1LoTt3Up6JBeZ01nssC+MKMbKh44OjtbmZqTj4q7VuIgyBq/8zzIrYVawmpxMhCfXCNJPpIXWxAQ69AF13wK4Q0iDH8j7Kk2XkAb9PuHnl6+FmNgqcsk9bs8A8KTnl1ICyKg1D23a/RkrpUcBti6albJxIKIphDU/x6bPDgZkWSOtltuoAhsYFZtsFaL8FWgdiF8AbAjQdCgxPnW6A0miCxjFy3R7PfNDROQN9HVkYkUcaLnnonXbzAWMaUvYSqFQkUAIB4p2YhlaCTwxPBiNMKbORECiB5T1Ptxmgq8BurvZI9QkwpHaJnWCnyEB4R8mpGgTGDESt6WSnEwpqa7WsnVVUQfHYVVuBOEtOrxRFXFEvZwTiIabBMCLkC1AfM8xQRALLsnCeoakLhauuFzeBEbAx6LjrC+OPSH9kAacIuAu+ttdJCVIdZSWmCtXjLnCpvBp2ycuvBZT6V8A0SqOIT+MF7AMWtR7GBmBmxAFDUMWCiCLIOhvN5rdYfDHQ5XdnSfE+h04FXpDqvDTpHgqzFWliIhzu3o9LNsGJ6PThw4e9Phkf1SolOguyTQ4Eka0a2TYpggUoQfSChrtF84gRBmgTi7QjFBCl2jAgygLCNIhaoRPeqYLNAvwCyr2oAt8sRNp0zlFAhkXJASGZIoNAa+uVMeJwiiRBCSWU7cvqVowV/y4e8GSmcEa99J2FQQVJvHvV346idE99SPdY+NT9IOvODty2M8z9JFHqYeI4/pfygsyo7bovXLhwISx7w6zf+iIRSCEze622RgiL0IzZQJgVQSIRroHAuS3I3LaS/IKJxXQjNR0tfqt07txF1ZK1QoUW45oaNAj3HLqpwKghjxjDX0l1GCTFkJ3wHI5GXfXh0lG7Oggo27dPghmUTPd62gsfkLkBB4HN12SsOhCfaino8JhkAeRxrnW+arlVOW+g7/tF3/cHessywpWgccIq1NjGUW4omLM6tQSHjBEfyyEdJCK+GKR9CYEqFLV0+aWGdmRHUga1FpV/ckpTWe2WHAU82cXuqvtVS+aHD6cBkLPL8cAsYCg0qtRStCzaJInnDVvdt8rYSmmZ8wd6wgSciUMxKccDcx+vDXKEliDGLaE0cTDBLTSc5HUi2iYqkpufoWzp4HixwtuqwxwbioAFiFMyIlH5M8atsUsZSlp86hWXhFLiMcumrAteBQkSXDqGBqUUtC/ESEqrq/rZUNr49hEiPOveG9cBB3FHJGvhh4fqXROG9E2sRehFgEnHBSgcypnww3CuM0a0sb6kRXjptzrnPclEl0IRVJ2wLCsNdf7EicyA14GXSrL59G3ghrcomc4j/agnNCqtfaZlC9xUgmakCW3x8EIyyWTyr/rCLi9vFlCoLxTqC/Fxwde7bO6li7pn4hvVcIB5bD+JrSqggd0WTGpzumhjAftCKdAqOH3bYI9mBrVpAC3+mvq6JRNA6ee4OAb3YW8PLAy7U7jBguCtmDMnIB98EJ4GSR5qPM1M5HvBv05smPzOteiCCJ3q6jy9pgbN2mk9IO7HTmbP5nz27NV27y7IZTmXHeVNB8RaCHQDGtKB2lEkDWzWk8bBs2WGp4Hb9gy+0Y4i3hum+vZjKTB6UDrR3OLDEFaHpJqWKbyAhr0viP8s7MkqgQhrQSQA/cWQAfWEDKjgoKHAcAhkwiHqHPCdzUpCgdbxdEKc9OCwQIDkONuZ/o6M5e18ZJZZFlMVDMzs6sQOYKcomGwcBFXU2MBPprIXZdfUzc2nrYQ40JiTGM3ew6k/GmWLnEm/figRGR/VLWY9epxrHWqiSE/YR6Yi+OkvQcwaYL5tBF7EpQ+CUO1eiLSsChxPBCItUc4oA5q56CqrDIrISt7XWL1uprPjKHXTI4WBbcV9HQxqGDR1ErmvHeXKhIhQ6DovR8GrKxUEJaHdgofJp58+Ollpa1NvmdpLXVoso+YE97zVAEoHYZKidDtI8PKG+dzAFReqy1Fu4l/mMZAMpMsVWWxQiP1qpTlXMGMtQNISnSSajCImyQwlJvj5DF+GHvNZ0w6PjYb6Y6E9UUb8ECfjED0Wy3AkUl+NQBK8R0AmPLjNAJrESidVxchZeiChJXSbx/8zSRW4LKIeEIAFl1+X6uK6Wh9ulKRYlBSQh9382MJN3zVOmSgcKqMPcQ2Z9jz0KtQd4t/hbwI61cHPwwetTYqZZFqWUmoW0mDVQJaJukww5Eh0KDC6ctvIJnYkYyQ7rUtwzRTqiyiuGQC9f4z0QL1vnx7IWEAQ07aO9VrXs2z2+TH6kcwQWOqTk50Zm/lSnqGV8bJbLeyHLB2u8uDpGWqTZWm9PJedrtipSq5QT+2eRnQK2eYNIgwTHfBqQvC4AiQThEhQ5RT59IkTjDnOmgSttwdKrIsKFK1JqThmqPeLY/2wJJy/W8V1lcCLhK6zgGazEYU2B4TCBnYYgZFKEF6ShqVOOIES2Eb8V9/BiuP4ZtzY1NSEhlKplEwmzaRhGBQJywo6WBZel+zUmgimK2yy0T834vU45hRkttxWccKV1iuDKsaEaM85r7JK/9QdLMtiAWUPzCuLY3WxhHYrL6o4lpARHh/ti2lhcM211mMMryKFfRoXw86vM8hy3uLsWAerNOMsiVgmtY5jrWXGtGAll5mkXII7J5QlUQoeXjaE6xdL49bqH1LzLf8GDOPiVe7syiNvfCr35ZefN//ZPJgeNa5uesxpC/TGTYDvMf2t+c/mkB7dJpbTTVjphqwtJl6AiDuenyCt8B2exlTMx3E8jRvw4O9U71PLHRzHBFjbh8BWkWu6/gfXFasEkW1kHLC++87hD3h4H1OL75M+NoecRHHfO5FtgODaDpy950gVdiBPTOGqXQniD+nt/0AeedyosKmKnQPJAPEJKtSrBHXHt2LRChDox2QsjL9rcXAfHPHhRafjKhLyLljnmv/EBCWlCs0rBAwHqagfM1fIDkw0nNtfMHuAmsW5Hbkw+at4C6/iE5LAY9iJV7FzeCdrXdfWLDMBnEXCoJjbvcWFDd7L8WyAAq7osfgscNNKovp9oJjrwIoMncXJWqHYcUSULckHBTPAnZ2+A2w/9wxcfAe3noGD4WmNBdmguGUKUrg/4gvUhMJKYv7FBq2phDnB8BtsCe70ge0NLMDdPPFPLUxoTKJ92/Yp9MK7ohzVR9i+Agz1DTZqujn5jxjO/m8KqXZHKDI4TYz4RZFQ5dMah/XYhHWowVisxzqsRw2mYSE2YSUWYhHWYClqcD/WYCEWYzUmYSmWY2uz3CZMw1JswmasFMuvQV/0Rp8dGcbkstvQW2P2L7th8NAHHvpjGHIYg8HoD09Y+rLs6ViKlViOFdiC+2HtNVjSdymWYCW2Yu3m87DtvBhs//ANswEAAAA=") format("woff2");
  font-weight:100 900;font-style:normal;font-display:swap;
}
/* ============================================================
   CORVUS — public site
   Tokens, substrates and accents ported verbatim from the
   /brief dossier system. Norn display face embedded above.
   ============================================================ */

:root{
  --font-display:"Norn","Inter Tight","Helvetica Neue",Arial,sans-serif;
  --font-sans:"Inter",-apple-system,"Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --gutter:32px;--maxw:1320px;
}

/* ---- LIGHT ---- */
:root,[data-theme="light"]{
  --paper:#f3f1ec;--paper-soft:#ece9e2;--paper-raised:#f8f7f3;
  --glass:rgba(243,241,236,.72);--glass-edge:rgba(22,22,26,.14);
  --ink:#16161a;--ink-soft:#34343a;--ink-mid:#5e5d5d;--ink-dim:#86868c;--ink-faint:#b4b4b9;
  --rule:rgba(22,22,26,.10);--rule-strong:rgba(22,22,26,.22);--rule-heavy:rgba(22,22,26,.85);
  --link:#2f4fa0;--stamp-edge:rgba(22,22,26,.14);--dot:rgba(22,22,26,.11);
  --shadow:0 8px 28px rgba(22,22,26,.14);
}
/* ---- DUSK ---- */
[data-theme="dusk"]{
  --paper:#36444f;--paper-soft:#2e3a44;--paper-raised:#46586a;
  --glass:rgba(40,51,60,.66);--glass-edge:rgba(227,234,239,.14);
  --ink:#e3eaef;--ink-soft:#c3d0d9;--ink-mid:#8ea0ad;--ink-dim:#6c7f8c;--ink-faint:#566873;
  --rule:rgba(221,233,241,.13);--rule-strong:rgba(221,233,241,.24);--rule-heavy:rgba(221,233,241,.72);
  --link:#9dc4ea;--stamp-edge:rgba(221,233,241,.16);--dot:rgba(221,233,241,.10);
  --shadow:0 10px 30px rgba(0,0,0,.34);
}
/* ---- DARK (raven-native, default) ---- */
[data-theme="dark"]{
  --paper:#0c0b0e;--paper-soft:#131318;--paper-raised:#16161c;
  --glass:rgba(9,9,12,.58);--glass-edge:rgba(233,233,233,.12);
  --ink:#e9e9e9;--ink-soft:#c6c6ca;--ink-mid:#9a9aa0;--ink-dim:#6f6f76;--ink-faint:#4a4a50;
  --rule:rgba(233,233,233,.10);--rule-strong:rgba(233,233,233,.20);--rule-heavy:rgba(233,233,233,.78);
  --link:#8fb0ff;--stamp-edge:rgba(233,233,233,.14);--dot:rgba(233,233,233,.09);
  --shadow:0 10px 30px rgba(0,0,0,.6);
}

/* ---- ACCENT PRESETS ---- */
[data-accent="oxblood"]{--accent:#a8322e;--accent-soft:rgba(168,50,46,.07);--accent-ink:#fff}
[data-theme="dusk"][data-accent="oxblood"]{--accent:#e0796d;--accent-soft:rgba(224,121,109,.12);--accent-ink:#241010}
[data-theme="dark"][data-accent="oxblood"]{--accent:#d65a4f;--accent-soft:rgba(214,90,79,.11);--accent-ink:#1a0f0e}
[data-accent="signal"]{--accent:#cf2020;--accent-soft:rgba(207,32,32,.07);--accent-ink:#fff}
[data-theme="dusk"][data-accent="signal"]{--accent:#f56a5e;--accent-soft:rgba(245,106,94,.12);--accent-ink:#240b09}
[data-theme="dark"][data-accent="signal"]{--accent:#ff5347;--accent-soft:rgba(255,83,71,.11);--accent-ink:#1a0a09}
[data-accent="ember"]{--accent:#b5781f;--accent-soft:rgba(181,120,31,.08);--accent-ink:#fff}
[data-theme="dark"][data-accent="ember"]{--accent:#e0a542;--accent-soft:rgba(224,165,66,.12);--accent-ink:#1a1208}
[data-accent="steel"]{--accent:#34659e;--accent-soft:rgba(52,101,158,.08);--accent-ink:#fff}
[data-theme="dark"][data-accent="steel"]{--accent:#6f9fd8;--accent-soft:rgba(111,159,216,.12);--accent-ink:#0a1018}

/* ---- HERO substrate tokens — the raven band adapts to each theme ---- */
:root,[data-theme="light"]{--hero-bg:#e7e4dc;--hero-scrim:231,228,220;--hero-ink:#16161a;--hero-sub:#4c4c52}
[data-theme="dusk"]{--hero-bg:#222c35;--hero-scrim:34,44,53;--hero-ink:#eef4f8;--hero-sub:#a1b2bf}
[data-theme="dark"]{--hero-bg:#050507;--hero-scrim:5,5,7;--hero-ink:#f4f4f6;--hero-sub:#b9b9c2}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--paper)}
body{margin:0;background:transparent;color:var(--ink);
  font-family:var(--font-sans);font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  transition:background .25s ease,color .25s ease;}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:700}
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gutter)}

/* ===== MASTHEAD ===== */
.masthead{border-bottom:1px solid var(--glass-edge);padding:16px var(--gutter);
  display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
  position:relative;z-index:20;background:var(--glass);
  backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4)}
[data-theme="dark"] .masthead{border-bottom-color:var(--glass-edge)}
.brand{display:flex;align-items:center;gap:13px}
.brand a{color:inherit;text-decoration:none;display:flex;align-items:center;gap:13px}
.stamp{width:42px;height:42px;flex:0 0 auto;color:var(--ink);display:block}
.stamp svg{display:block;width:100%;height:100%}
.brand-text h1{margin:0;font-size:25px;letter-spacing:.13em;color:var(--ink);line-height:1;text-indent:.13em}
.brand-text .tagline{margin-top:4px;font-family:var(--font-mono);font-size:9.5px;
  letter-spacing:.08em;color:var(--ink-mid);text-transform:uppercase}
.masthead-right{display:flex;align-items:center;gap:22px}
.pagenav{display:flex;align-items:center;gap:18px;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase}
.pagenav a{color:var(--ink-dim);padding-bottom:3px;border-bottom:1.5px solid transparent;transition:color .12s,border-color .12s}
.pagenav a:hover{color:var(--ink-mid);text-decoration:none}
.pagenav a.on{color:var(--ink);border-bottom-color:var(--accent)}
.pagenav a.nav-cta{color:var(--accent);border:1px solid var(--accent);padding:4px 10px;
  transition:background .15s,color .15s,border-color .15s}
.pagenav a.nav-cta:hover,.pagenav a.nav-cta.on{background:var(--accent);color:var(--accent-ink)}
.pagenav a.nav-cta:hover{animation:cv-glitch 2.2s linear infinite}
.seg{display:inline-flex;align-items:center;gap:1px;padding:2px;border:1px solid var(--rule)}
.seg button{display:flex;align-items:center;justify-content:center;background:transparent;border:none;
  color:var(--ink-faint);padding:4px 6px;cursor:pointer;transition:background .12s,color .12s}
.seg button svg{width:14px;height:14px;display:block}
.seg button:hover{color:var(--ink-mid)}
.seg button[aria-pressed="true"]{background:var(--paper-soft);color:var(--ink)}

/* ===== HERO (raven band — substrate follows the theme) ===== */
.hero{position:relative;height:clamp(520px,86vh,860px);background:var(--hero-bg);overflow:hidden;
  border-bottom:1.5px solid var(--ink)}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:crosshair}
.hero-scrim{position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(120% 100% at 18% 50%, rgba(var(--hero-scrim),.92) 0%, rgba(var(--hero-scrim),.55) 38%, rgba(var(--hero-scrim),0) 66%),
    linear-gradient(180deg, rgba(var(--hero-scrim),.55) 0%, rgba(var(--hero-scrim),0) 26%, rgba(var(--hero-scrim),0) 72%, rgba(var(--hero-scrim),.85) 100%)}
.hero-in{position:relative;z-index:3;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);
  height:100%;display:flex;flex-direction:column;justify-content:center;pointer-events:none}
.hero-in *{pointer-events:auto}
.hero-kicker{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:20px}
.hero-kicker::before{content:"";width:34px;height:1px;background:var(--accent);display:inline-block;opacity:.7}
.hero-title{font-family:var(--font-display);font-size:clamp(46px,8vw,104px);line-height:.92;
  letter-spacing:.02em;color:var(--hero-ink);margin:0 0 18px;text-shadow:0 2px 40px rgba(var(--hero-scrim),.8)}
.hero-sub{max-width:580px;font-family:"Inter Tight",var(--font-sans);
  font-size:clamp(20px,2.3vw,30px);font-weight:500;line-height:1.3;letter-spacing:-.01em;
  color:var(--hero-ink);margin:14px 0 34px}
.hero-sub strong{color:var(--hero-ink);font-weight:700}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap}
/* shared button hover: a subtle RGB-split text glitch (two quick bursts per cycle) */
@keyframes cv-glitch{
  0%,7%,43%,100%{text-shadow:none}
  1%{text-shadow:-1.5px 0 #16e0d8,1.5px 0 #ff3b5c}
  3%{text-shadow:1.5px 0 #16e0d8,-1.5px 0 #ff3b5c}
  5%{text-shadow:-1px 0 #16e0d8,1px 0 #ff3b5c}
  44%{text-shadow:1.2px 0 #16e0d8,-1.2px 0 #ff3b5c}
  46%{text-shadow:-1.2px 0 #16e0d8,1.2px 0 #ff3b5c}
}
.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-mono);font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;padding:13px 22px;border:1px solid;cursor:pointer;transition:.15s}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
/* filled -> outline: page background, accent text, accent outline (theme-aware) */
.btn-primary:hover{background:var(--paper);color:var(--accent);border-color:var(--accent);text-decoration:none;animation:cv-glitch 2.2s linear infinite}
.btn-ghost{background:transparent;border-color:var(--rule-strong);color:var(--hero-ink)}
/* outline -> filled (the inverse of primary) */
.btn-ghost:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);text-decoration:none;animation:cv-glitch 2.2s linear infinite}
@media (prefers-reduced-motion:reduce){
  .btn-primary:hover,.btn-ghost:hover,.waitlist button:hover,.cform button:hover,.pagenav a.nav-cta:hover{animation:none}
}
.hero-meta{position:absolute;left:var(--gutter);bottom:22px;z-index:3;font-family:var(--font-mono);
  font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim)}
.hero-meta b{color:var(--accent);font-weight:500}
.hero-hint{position:absolute;right:var(--gutter);bottom:22px;z-index:3;font-family:var(--font-mono);
  font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}

/* ===== GENERIC SECTIONS ===== */
.section{padding-block:64px}
.section-tight{padding-block:44px}
.eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:26px;height:1px;background:var(--accent);opacity:.6}
.lede{font-size:20px;line-height:1.6;font-weight:400;color:var(--ink-soft);max-width:720px;font-family:var(--font-display)}
.prose{max-width:680px;color:var(--ink-soft);font-size:14.5px;line-height:1.75}
.prose p{margin:0 0 16px}
.prose h3{font-size:17px;color:var(--ink);margin:30px 0 10px;letter-spacing:.01em}
.prose strong{color:var(--ink)}
.divider{height:1px;background:var(--rule);margin:0}

/* three-up feature row */
.features{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:38px}
.feature{border-top:1.5px solid var(--rule-strong);padding-top:16px}
.feature .ficon{display:block;width:26px;height:26px;color:var(--accent);margin-bottom:13px}
.feature .ficon svg{display:block;width:100%;height:100%}
.feature .fnum{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:var(--accent);margin-bottom:10px}
.feature h3{font-size:16px;margin:0 0 7px;color:var(--ink)}
.feature p{margin:0;font-size:13px;color:var(--ink-mid);line-height:1.65}

/* ===== REPORT COVER CARDS ===== */
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:30px;flex-wrap:wrap}
.section-head h2{font-size:30px;margin:0;letter-spacing:.01em}
.section-head .count{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:24px}

.cover{position:relative;display:block;aspect-ratio:16/10;background:#060608;overflow:hidden;--cov:#ff5347;
  border:1px solid rgba(255,255,255,.08);color:#fff;text-decoration:none;
  transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}
.cover:hover{transform:translateY(-4px);border-color:var(--cov);text-decoration:none;
  box-shadow:0 18px 50px rgba(0,0,0,.55)}
.cover-bg{position:absolute;inset:0;opacity:.9;
  background:
    radial-gradient(80% 120% at 78% 42%, color-mix(in srgb,var(--cov) 22%,transparent) 0%, transparent 55%),
    radial-gradient(60% 90% at 20% 90%, rgba(110,40,30,.16) 0%, rgba(0,0,0,0) 60%),
    linear-gradient(135deg,#0a0a0d 0%,#070708 60%,#0c0709 100%)}
.cover-art{position:absolute;inset:0;display:block}
.cover-grid{position:absolute;inset:0;opacity:.32;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:34px 34px;mask-image:radial-gradient(120% 90% at 70% 50%,#000 30%,transparent 80%)}
.cover-raven{position:absolute;right:-6%;top:50%;transform:translateY(-50%);width:62%;height:auto;
  color:var(--cov);opacity:.10;filter:drop-shadow(0 0 30px color-mix(in srgb,var(--cov) 25%,transparent));pointer-events:none}
.cover:hover .cover-raven{opacity:.16}
.cover-scan{position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,0) 0px,rgba(0,0,0,0) 2px,rgba(0,0,0,.18) 3px)}
.cover-ui{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;
  padding:18px 20px;z-index:2}
.cover-top{display:flex;align-items:center;gap:10px}
.cover-cat{font-family:var(--font-mono);font-size:8.5px;font-weight:700;letter-spacing:.16em;
  color:var(--cov);border:1px solid color-mix(in srgb,var(--cov) 50%,transparent);padding:2px 7px;text-transform:uppercase}
.cover-rid{font-family:var(--font-mono);font-size:8.5px;color:rgba(255,255,255,.34);letter-spacing:.1em;text-transform:uppercase}
.cover-mid{max-width:80%}
.cover-title{font-family:var(--font-display);font-size:23px;font-weight:700;color:#fff;line-height:1.12;
  letter-spacing:-.01em;margin-bottom:8px}
.cover-subtitle{font-size:10.5px;color:rgba(255,255,255,.4);letter-spacing:.02em;line-height:1.6;max-width:320px}
.cover-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.cover-chip{font-family:var(--font-mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.16);padding:3px 8px}
.cover-chip b{color:var(--cov);font-weight:500}
.cover-tags{font-family:var(--font-mono);font-size:8px;color:color-mix(in srgb,var(--cov) 55%,transparent);letter-spacing:.06em;margin-top:5px}
.cover-meta{text-align:right;flex:0 0 auto}
.cover-date{font-family:var(--font-mono);font-size:8.5px;color:rgba(255,255,255,.32);letter-spacing:.1em;text-transform:uppercase}
.cover-wm{font-family:var(--font-mono);font-size:8px;color:rgba(255,255,255,.14);letter-spacing:.24em;text-transform:uppercase;margin-top:4px}
.cover-open{position:absolute;right:18px;top:50%;transform:translateY(-50%) translateX(8px);z-index:3;
  font-family:var(--font-mono);font-size:11px;color:var(--cov);opacity:0;transition:.22s}
.cover:hover .cover-open{opacity:1;transform:translateY(-50%) translateX(0)}

/* featured (hero) cover */
.cover-feat{aspect-ratio:21/9;margin-bottom:26px}
.cover-feat .cover-ui{padding:26px 30px}
.cover-feat .cover-title{font-size:clamp(26px,3.4vw,40px)}
.cover-feat .cover-subtitle{font-size:13px;max-width:46%;line-height:1.65}
.cover-feat .cover-raven{width:44%;opacity:.13}
.cover-featured{position:absolute;right:18px;top:16px;z-index:3;font-family:var(--font-mono);font-size:8px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--cov);background:rgba(0,0,0,.32);
  border:1px solid color-mix(in srgb,var(--cov) 45%,transparent);padding:3px 9px}

/* library filter + sort controls */
.lib-controls{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px}
.lib-filters,.lib-sort{display:flex;gap:6px;flex-wrap:wrap}
.lib-chip{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  background:transparent;border:1px solid var(--rule-strong);color:var(--ink-dim);padding:6px 12px;cursor:pointer;
  transition:color .12s,background .12s,border-color .12s}
.lib-chip:hover{color:var(--ink-mid)}
.lib-chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* draft / unpublished cover (no link yet) */
.cover.draft{cursor:default;border-style:dashed;opacity:.62}
.cover.draft:hover{transform:none;border-color:rgba(255,255,255,.16);box-shadow:none}
.cover.draft .cover-cat{color:rgba(255,255,255,.4);border-color:rgba(255,255,255,.22)}
.badge-draft{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;
  font-family:var(--font-mono);font-size:9px;letter-spacing:.3em;text-transform:uppercase;
  color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.2);padding:6px 12px}

.empty{border:1px dashed var(--rule-strong);padding:42px;text-align:center;color:var(--ink-dim);
  font-family:var(--font-mono);font-size:12px;letter-spacing:.05em}

/* about split */
.about-grid{max-width:600px;position:relative;z-index:1}
/* giant wireframe globe — fixed behind the text, spilling off the right/top/bottom */
.globe-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.globe-layer .globe-wrap{position:absolute;top:50%;left:50vw;width:140vh;aspect-ratio:1/1;transform:translateY(-50%)}
.about-aside .mark{width:88px;height:88px;color:var(--accent);margin-bottom:22px}
.about-aside h4{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-dim);margin:22px 0 8px;font-weight:500}
.about-aside p{margin:0;font-size:13px;color:var(--ink-mid);line-height:1.6}
.about-aside a{font-size:13px}
/* wireframe Earth globe (About) */
.globe-layer canvas{display:block;width:100%;height:100%}
/* grading charts (About) */
.chart-cap{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:28px 0 13px}
.scale{display:flex;flex-direction:column;gap:8px;max-width:470px}
.scale-row{display:grid;grid-template-columns:152px 1fr 50px;align-items:center;gap:14px}
.scale-term{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);text-align:right;line-height:1.2}
.scale-track{position:relative;height:9px;background:var(--paper-soft);border:1px solid var(--rule)}
.scale-track i{position:absolute;top:0;bottom:0;background:var(--accent);opacity:.82}
.scale-pct{font-family:var(--font-mono);font-size:10px;color:var(--ink-dim);letter-spacing:.03em}
.adm{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:520px}
.adm-head{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:6px}
.adm-row{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:baseline;padding:6px 0;border-top:1px solid var(--rule)}
.adm-row b{font-family:var(--font-mono);font-size:12px;color:var(--accent);font-weight:600}
.adm-row span{font-size:12px;color:var(--ink-mid);line-height:1.3}
.adm-note{font-size:12.5px;color:var(--ink-mid);margin-top:16px}
@media (max-width:520px){.scale-row{grid-template-columns:108px 1fr 46px;gap:10px}}
.keylist{list-style:none;margin:8px 0 0;padding:0}
.keylist li{font-family:var(--font-mono);font-size:11px;color:var(--ink-mid);padding:5px 0;
  border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;gap:14px}
.keylist li b{color:var(--ink);font-weight:500}

/* ===== platform teaser (home) + platform page ===== */
.pt-in{display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
  border:1px solid var(--rule-strong);padding:28px 32px;background:var(--paper-soft)}
.pt-text{max-width:640px}
.pt-head{font-size:24px;margin:6px 0 9px;letter-spacing:.01em}
.pt-copy{font-size:14px;color:var(--ink-mid);line-height:1.6;margin:0}
.pt-cta{flex:0 0 auto}
.platform-title{font-family:var(--font-display);font-weight:700;font-size:clamp(40px,7vw,80px);line-height:.95;margin:8px 0 22px;letter-spacing:.01em;color:var(--ink)}
/* short pages (platform / briefings): pin the footer to the bottom so it never floats mid-viewport */
body.page-flush{display:flex;flex-direction:column;min-height:100vh}
body.page-flush>.foot{margin-top:auto}

/* waitlist form */
.waitlist{display:flex;flex-wrap:wrap;gap:10px;max-width:480px;margin-top:28px;align-items:center;position:relative}
.waitlist input[type=email]{flex:1 1 240px;background:var(--paper-soft);border:1px solid var(--rule-strong);color:var(--ink);
  font-family:var(--font-mono);font-size:13px;padding:11px 13px;letter-spacing:.02em}
.waitlist input[type=email]:focus{outline:2px solid var(--accent);outline-offset:1px}
.waitlist .wl-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.waitlist button{flex:0 0 auto;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:12px 20px;cursor:pointer;transition:.15s}
.waitlist button:hover{background:var(--paper);color:var(--accent);border-color:var(--accent);animation:cv-glitch 2.2s linear infinite}
.waitlist button:disabled{opacity:.55;cursor:default}
.wl-msg{flex-basis:100%;font-family:var(--font-mono);font-size:11px;letter-spacing:.03em;color:var(--ink-mid);min-height:14px}
.wl-msg.wl-ok{color:var(--accent)}.wl-msg.wl-err{color:#ff6b6b}

/* contact / briefing request form */
.cform{max-width:560px;margin-top:28px;display:flex;flex-direction:column;gap:16px;position:relative}
.cform .row{display:flex;gap:14px;flex-wrap:wrap}
.cform .field{display:flex;flex-direction:column;gap:6px;flex:1 1 220px;min-width:0}
.cform label{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mid)}
.cform label .opt{color:var(--ink-faint);text-transform:none;letter-spacing:0}
.cform input,.cform select,.cform textarea{box-sizing:border-box;width:100%;background:var(--paper-soft);
  border:1px solid var(--rule-strong);color:var(--ink);font-family:var(--font-mono);font-size:13px;
  padding:11px 13px;letter-spacing:.02em}
.cform textarea{min-height:128px;resize:vertical;line-height:1.5}
.cform select{cursor:pointer;-webkit-appearance:none;appearance:none}
.cform input:focus,.cform select:focus,.cform textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.cform .wl-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.cform button{align-self:flex-start;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:12px 22px;cursor:pointer;transition:.15s}
.cform button:hover{background:var(--paper);color:var(--accent);border-color:var(--accent);animation:cv-glitch 2.2s linear infinite}
.cform button:disabled{opacity:.55;cursor:default}
.form-note{max-width:560px;margin-top:20px;font-size:11px;line-height:1.6;color:var(--ink-faint)}

/* ===== FOOTER ===== */
.foot{border-top:1px solid var(--glass-edge);padding:14px var(--gutter);margin-top:20px;
  background:var(--glass);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4)}
.foot-in{max-width:var(--maxw);margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:8px 24px}
.foot-line{flex:1 1 100%;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;color:var(--ink-dim);line-height:1.6}
.foot-links{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;
  display:flex;flex-wrap:wrap;gap:0 8px;align-items:center}
.foot-links a{color:var(--ink-mid)}.foot-links .sep{color:var(--ink-faint)}
.foot-brand{display:flex;align-items:center;gap:10px}
.foot-brand .stamp{width:24px;height:24px;color:var(--ink-mid)}
.foot-brand span{font-family:var(--font-display);font-size:14px;letter-spacing:.18em;color:var(--ink-mid)}

@media (max-width:860px){
  .features{grid-template-columns:1fr;gap:18px}
  .about-grid{grid-template-columns:1fr;gap:32px}
  /* mobile: keep the globe as a huge, faint backdrop on the right so text stays legible */
  .globe-layer{display:block;opacity:.25}
  .globe-layer .globe-wrap{left:40vw;width:112vh}
  .masthead-right{gap:14px}
  .pagenav{gap:13px}
}
@media (max-width:520px){
  :root{--gutter:18px}
  .seg{display:none}
  .hero-title{font-size:46px}
}

/* ===== mobile hamburger nav ===== */
.navtoggle{display:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;
  width:40px;height:34px;background:transparent;border:1px solid var(--rule-strong);color:var(--ink);cursor:pointer;padding:0}
.navtoggle span{display:block;width:18px;height:1.5px;background:currentColor;transition:transform .2s,opacity .2s}
@media (max-width:640px){
  .navtoggle{display:flex}
  .masthead-right{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;align-items:flex-start;
    gap:16px;background:var(--paper);border-bottom:1.5px solid var(--ink);padding:18px var(--gutter);z-index:30}
  .masthead.nav-open .masthead-right{display:flex}
  .pagenav{flex-direction:column;gap:14px;font-size:13px}
  .masthead.nav-open .seg{display:inline-flex}
  .masthead.nav-open .navtoggle span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
  .masthead.nav-open .navtoggle span:nth-child(2){opacity:0}
  .masthead.nav-open .navtoggle span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
}

/* ============================================================
   PRICING PAGE
   Mounted on /pricing.html. Tier grid renders from window.PRICING
   via renderPricing() in this file. All other sections are static
   markup in pricing.html.
   ============================================================ */

/* --- semantic accents per theme (success / info / warn) --- */
:root,[data-theme="light"]{
  --pc-success:#1f8a59;
  --pc-success-soft:rgba(31,138,89,.08);
  --pc-success-edge:rgba(31,138,89,.22);
  --pc-info:#2f4fa0;
  --pc-info-soft:rgba(47,79,160,.08);
  --pc-info-edge:rgba(47,79,160,.28);
  --pc-warn:#a06e0f;
  --pc-warn-soft:rgba(160,110,15,.10);
  --pc-warn-edge:rgba(160,110,15,.32);
}
[data-theme="dusk"]{
  --pc-success:#5ed193;
  --pc-success-soft:rgba(94,209,147,.10);
  --pc-success-edge:rgba(94,209,147,.24);
  --pc-info:#9dc4ea;
  --pc-info-soft:rgba(157,196,234,.10);
  --pc-info-edge:rgba(157,196,234,.26);
  --pc-warn:#e0b96a;
  --pc-warn-soft:rgba(224,185,106,.10);
  --pc-warn-edge:rgba(224,185,106,.28);
}
[data-theme="dark"]{
  --pc-success:#3fcf8e;
  --pc-success-soft:rgba(63,207,142,.08);
  --pc-success-edge:rgba(63,207,142,.22);
  --pc-info:#6f9fd8;
  --pc-info-soft:rgba(111,159,216,.08);
  --pc-info-edge:rgba(111,159,216,.26);
  --pc-warn:#e0a542;
  --pc-warn-soft:rgba(224,165,66,.10);
  --pc-warn-edge:rgba(224,165,66,.28);
}

/* --- hero --- */
.pricing-hero{padding-bottom:0}
.pricing-h1{
  font:700 clamp(34px,5vw,56px) var(--font-display);
  letter-spacing:-.02em;line-height:1.05;
  margin:0 0 16px;color:var(--ink);
}
.pricing-lede{
  font:clamp(15px,1.4vw,17px) var(--font-sans);
  line-height:1.55;color:var(--ink-mid);max-width:560px;
}

/* --- free library strip --- */
.pricing-library-strip{
  background:var(--pc-success-soft);
  border:1px solid var(--pc-success-edge);
  border-radius:8px;padding:16px 22px;
  display:flex;justify-content:space-between;align-items:center;gap:18px;
}
.pricing-library-strip h4{
  margin:0 0 4px;font:600 15px var(--font-sans);
  color:var(--pc-success);
}
.pricing-library-strip p{
  margin:0;font:13px var(--font-sans);color:var(--ink-mid);
}
.pricing-strip-link{
  color:var(--pc-success);font:600 13px var(--font-sans);
  white-space:nowrap;text-decoration:none;
}
.pricing-strip-link:hover{text-decoration:underline}

/* --- tier grid --- */
.pricing-tiers{
  display:grid;grid-template-columns:repeat(4,1fr);gap:14px;
}
.pricing-tier{
  background:var(--paper-raised);
  border:1px solid var(--rule);
  border-radius:8px;padding:20px 16px;
  display:flex;flex-direction:column;
}
.pricing-tier-featured{
  border-color:var(--accent);
  background:var(--accent-soft);
}
.pricing-tier-name{
  font:600 14px var(--font-sans);
  color:var(--ink);margin-bottom:8px;
}
.pricing-tier-price{
  font:700 28px var(--font-display);
  color:var(--accent);line-height:1;margin-bottom:4px;
}
.pricing-tier-cached{
  font:12px var(--font-mono);color:var(--pc-info);margin-bottom:14px;
}
.pricing-tier ul{
  list-style:none;padding:0;margin:0;
  font:12px var(--font-sans);line-height:1.55;color:var(--ink-mid);
}
.pricing-tier ul li{
  padding-left:16px;position:relative;margin-bottom:5px;
}
.pricing-tier ul li::before{
  content:'·';position:absolute;left:4px;color:var(--ink-faint);
}

/* --- cache pricing callout --- */
.pricing-cache-note{
  background:var(--pc-info-soft);
  border-left:3px solid var(--pc-info);
  padding:14px 18px;margin-top:18px;
  border-radius:0 6px 6px 0;
  font:13px var(--font-sans);line-height:1.55;color:var(--ink-mid);
}
.pricing-cache-note strong{color:var(--pc-info)}
.pricing-cache-note code{
  font:12px var(--font-mono);
  background:var(--paper-soft);padding:1px 6px;border-radius:3px;color:var(--ink);
}

/* --- add-ons --- */
.pricing-addons{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px;
}
.pricing-addon-row{
  background:var(--paper-raised);border:1px solid var(--rule);
  border-radius:6px;padding:12px 16px;
  display:flex;justify-content:space-between;align-items:center;gap:12px;
}
.pricing-addon-row strong{
  font:600 14px var(--font-sans);color:var(--ink);
}
.pricing-addon-row p{
  margin:2px 0 0;font:12px var(--font-sans);color:var(--ink-faint);
}
.pricing-addon-price{
  color:var(--accent);font:600 14px var(--font-mono);white-space:nowrap;
}
.pricing-adversarial-note{
  font:13px var(--font-sans);line-height:1.55;color:var(--ink-mid);
  margin-top:14px;
}
.pricing-adversarial-note strong{color:var(--ink)}

/* --- email signup callout --- */
.pricing-email-signup{
  background:var(--accent-soft);
  border:1px solid var(--accent);
  border-radius:8px;padding:28px 24px;text-align:center;
}
.pricing-email-signup h3{
  font:700 22px var(--font-display);
  color:var(--ink);margin:0 0 8px;letter-spacing:-.01em;
}
.pricing-email-signup p{
  font:14px var(--font-sans);color:var(--ink-mid);
  margin:0 auto;max-width:460px;
}
.pricing-signup-form{
  display:flex;gap:8px;max-width:480px;margin:18px auto 12px;
}
.pricing-signup-form input{
  flex:1;background:var(--paper);
  border:1px solid var(--rule-strong);border-radius:5px;
  padding:11px 14px;color:var(--ink);font:14px var(--font-sans);
}
.pricing-signup-form input:focus{outline:2px solid var(--accent);outline-offset:1px}
.pricing-signup-form button{
  background:var(--accent);color:var(--accent-ink);border:0;
  border-radius:5px;padding:11px 22px;
  font:600 14px var(--font-sans);cursor:pointer;
}
.pricing-signup-form button[disabled]{opacity:.55;cursor:not-allowed}
.pricing-trust-list{
  font:11px var(--font-mono);color:var(--ink-faint);
  margin-top:8px;letter-spacing:.06em;
}

/* --- 3-step payment block --- */
.pricing-payment-block{
  background:var(--paper-raised);
  border:1px solid var(--rule);
  border-radius:8px;padding:26px 28px;
}
.pricing-payment-header{
  font:700 22px var(--font-display);
  color:var(--ink);margin:0 0 20px;letter-spacing:-.01em;
}
.pricing-steps{
  display:grid;grid-template-columns:repeat(3,1fr);gap:16px;
}
.pricing-step{
  background:var(--paper-soft);
  border-radius:6px;padding:16px;
}
.pricing-step-num{
  font:700 11px var(--font-mono);
  color:var(--accent);letter-spacing:.12em;margin-bottom:6px;
}
.pricing-step h4{
  font:600 14px var(--font-sans);color:var(--ink);margin:0 0 6px;
}
.pricing-step p{
  font:12px var(--font-sans);line-height:1.55;color:var(--ink-mid);margin:0;
}

/* --- quality + SLA side-by-side --- */
.pricing-quality-sla{
  display:grid;grid-template-columns:320px 1fr;gap:22px;
}
.pricing-quality{
  background:var(--pc-success-soft);
  border:1px solid var(--pc-success-edge);
  border-radius:8px;padding:20px;
}
.pricing-quality-eyebrow{color:var(--pc-success) !important}
.pricing-quality h3{
  font:600 15px var(--font-sans);
  color:var(--ink);margin:6px 0 8px;
}
.pricing-quality p{
  font:13px var(--font-sans);line-height:1.55;color:var(--ink-mid);margin:0;
}
.pricing-sla h3{
  font:600 15px var(--font-sans);
  color:var(--ink);margin:6px 0 12px;
}
.pricing-sla-table{
  width:100%;border-collapse:collapse;font:13px var(--font-sans);
}
.pricing-sla-table th{
  text-align:left;color:var(--ink-faint);
  font:11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;
  padding:4px 14px 10px 0;border-bottom:1px solid var(--rule-strong);
}
.pricing-sla-table td{
  padding:10px 14px 10px 0;border-bottom:1px dashed var(--rule);
  color:var(--ink-mid);vertical-align:top;
}
.pricing-sla-table td:first-child{
  color:var(--ink);font-weight:500;white-space:nowrap;
}
.pricing-sla-table tr:last-child td{border-bottom:0}

/* --- FAQ --- */
.pricing-faq-h2{
  font:700 24px var(--font-display);
  color:var(--ink);letter-spacing:-.01em;margin:0 0 14px;
}
.pricing-faq-item{
  border-top:1px solid var(--rule);padding:14px 0;
}
.pricing-faq-item:last-of-type{border-bottom:1px solid var(--rule)}
.pricing-faq-item summary{
  font:600 14px var(--font-sans);color:var(--ink);
  cursor:pointer;list-style:none;
  display:flex;justify-content:space-between;align-items:center;
}
.pricing-faq-item summary::-webkit-details-marker{display:none}
.pricing-faq-item summary::after{
  content:'+';font:400 18px var(--font-mono);
  color:var(--ink-faint);margin-left:12px;transition:transform .2s;
}
.pricing-faq-item[open] summary::after{transform:rotate(45deg)}
.pricing-faq-body{
  padding:8px 0 0;font:13px var(--font-sans);line-height:1.6;color:var(--ink-mid);
}
.pricing-faq-body strong{color:var(--ink)}
.pricing-faq-body code{
  font:12px var(--font-mono);background:var(--paper-soft);
  padding:1px 6px;border-radius:3px;color:var(--ink);
}
.pricing-warn{
  background:var(--pc-warn-soft);
  border-left:2px solid var(--pc-warn);
  padding:8px 14px;margin-top:8px;
  border-radius:0 4px 4px 0;
  font:12px var(--font-sans);color:var(--pc-warn);
}
.pricing-warn strong{color:var(--pc-warn)}

/* --- CTA module --- */
.pricing-cta-section{
  background:var(--paper-soft);
  padding:56px 0 64px;text-align:center;margin-top:24px;
}
.pricing-cta-eyebrow{
  font:11px var(--font-mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-faint);margin-bottom:14px;
}
.pricing-cta-headline{
  font:600 20px var(--font-sans);color:var(--ink);margin-bottom:24px;
}
.pricing-cta-btn{
  background:var(--accent);color:var(--accent-ink);
  padding:15px 36px;border-radius:5px;
  font:600 15px var(--font-sans);display:inline-block;
  box-shadow:0 4px 14px rgba(0,0,0,.18);
  text-decoration:none;transition:transform .15s,box-shadow .15s;
}
.pricing-cta-btn:hover{
  transform:translateY(-1px);
  box-shadow:0 6px 18px rgba(0,0,0,.28);
  text-decoration:none;
}
.pricing-cta-btn::after{content:' →'}

/* --- responsive --- */
@media (max-width:960px){
  .pricing-tiers{grid-template-columns:1fr 1fr}
  .pricing-quality-sla{grid-template-columns:1fr}
}
@media (max-width:640px){
  .pricing-tiers{grid-template-columns:1fr}
  .pricing-addons{grid-template-columns:1fr}
  .pricing-steps{grid-template-columns:1fr}
  .pricing-library-strip{flex-direction:column;align-items:flex-start}
  .pricing-signup-form{flex-direction:column}
  .pricing-signup-form input,
  .pricing-signup-form button{width:100%}
}

/* ============================================================
   FEATURES PAGE
   Mounted on /features.html. Reuses existing scale + adm widgets
   from the About page; everything else is in this block.
   Disciplined palette — ink + paper + signal-red only. No
   semantic color sprawl.
   ============================================================ */

.features-hero { padding-top: 48px; }
.features-h1 {
  font: 700 clamp(34px, 5vw, 56px) var(--font-display);
  letter-spacing: -.02em; line-height: 1.05;
  margin: 12px 0 18px; color: var(--ink);
}
.features-lede {
  font: clamp(15px, 1.4vw, 17px) var(--font-sans);
  line-height: 1.55; color: var(--ink-mid); max-width: 640px;
  margin: 0 0 36px;
}
.features-h2 {
  font: 700 clamp(26px, 3.5vw, 36px) var(--font-display);
  letter-spacing: -.02em; line-height: 1.1;
  margin: 8px 0 12px; color: var(--ink);
}
.features-section-lede {
  font: 14px var(--font-sans); line-height: 1.6;
  color: var(--ink-mid); max-width: 620px; margin: 0 0 32px;
}

/* principles row in hero */
.features-principles {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px;
  border-top: 1px solid var(--rule); padding-top: 28px;
}
.features-principle { display: flex; gap: 14px; align-items: flex-start; }
.features-principle-tag {
  font: 700 11px var(--font-mono); letter-spacing: .14em;
  color: var(--accent); padding-top: 3px; flex: 0 0 auto;
}
.features-principle-body {
  font: 13px var(--font-sans); line-height: 1.55; color: var(--ink-mid);
}
.features-principle-body strong {
  color: var(--ink); display: block; margin-bottom: 4px;
  font-weight: 600; font-size: 14px;
}

/* pillars grid */
.features-pillars {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
}
.features-pillar {
  border: 1px solid var(--rule); border-radius: 6px;
  padding: 24px 22px; display: flex; flex-direction: column;
  background: var(--paper-raised);
}
.features-pillar-num {
  font: 700 11px var(--font-mono); letter-spacing: .14em;
  color: var(--accent); margin-bottom: 16px;
}
.features-pillar-title {
  font: 600 17px var(--font-display); color: var(--ink);
  margin: 0 0 4px; letter-spacing: -.01em;
}
.features-pillar-sub {
  font: 12px var(--font-sans); color: var(--ink-faint);
  margin: 0 0 16px;
}
.features-pillar ul {
  list-style: none; padding: 0; margin: 0;
  font: 12.5px var(--font-sans); line-height: 1.55; color: var(--ink-mid);
}
.features-pillar li {
  padding-left: 14px; position: relative; margin-bottom: 8px;
}
.features-pillar li::before {
  content: '·'; position: absolute; left: 4px;
  color: var(--accent); font-weight: 700;
}

/* anatomy widget */
.features-anatomy {
  display: grid; grid-template-columns: 320px 1fr;
  gap: 36px; align-items: start;
}
.features-anatomy-cover {
  background: var(--paper-raised); border: 1px solid var(--rule);
  border-radius: 8px; padding: 22px 20px;
  width: 320px; height: 380px;
  display: flex; flex-direction: column; justify-content: space-between;
  gap: 14px; position: relative; transition: border-color .2s;
}
/* hover highlight — callout hover lights up corresponding cover element */
.features-anatomy[data-hover] .anatomy-cat,
.features-anatomy[data-hover] .anatomy-rid,
.features-anatomy[data-hover] .anatomy-grade,
.features-anatomy[data-hover] .anatomy-sub { transition: background .18s, color .18s; }
.features-anatomy[data-hover="cat"] .anatomy-cat,
.features-anatomy[data-hover="rid"] .anatomy-rid,
.features-anatomy[data-hover="grade"] .anatomy-grade,
.features-anatomy[data-hover="lang"] .anatomy-sub {
  background: var(--accent-soft); padding: 4px 6px; margin: -4px -6px;
  border-radius: 3px; color: var(--accent);
}
.features-anatomy[data-hover="grade"] .anatomy-grade b { color: var(--accent); }
.anatomy-top {
  display: flex; justify-content: space-between;
  font: 11px var(--font-mono); letter-spacing: .12em; text-transform: uppercase;
}
.anatomy-cat { color: var(--accent); }
.anatomy-rid { color: var(--ink-faint); }
.anatomy-title {
  font: 700 clamp(24px, 2.8vw, 34px) var(--font-display);
  color: var(--ink); line-height: 1.05; letter-spacing: -.01em;
}
.anatomy-sub {
  font: 13px var(--font-sans); line-height: 1.5; color: var(--ink-mid);
  margin-top: 10px;
}
.anatomy-foot {
  display: flex; justify-content: space-between; align-items: center;
  font: 11px var(--font-mono); letter-spacing: .06em; color: var(--ink-faint);
}
.anatomy-grade { color: var(--ink-mid); }
.anatomy-grade b { color: var(--accent); }
.features-anatomy-callouts {
  display: flex; flex-direction: column; gap: 14px;
  align-self: stretch; justify-content: space-between;
}
.callout {
  border-left: 2px solid var(--rule); padding: 6px 12px 6px 14px;
  cursor: pointer; transition: border-left-color .15s, background .15s, padding .15s;
  border-radius: 0 4px 4px 0;
}
.callout:hover {
  border-left-color: var(--accent);
  background: var(--accent-soft);
}
.callout b {
  display: block; font: 600 13px var(--font-sans); color: var(--ink);
  margin-bottom: 3px;
}
.callout span {
  font: 12px var(--font-sans); line-height: 1.5; color: var(--ink-mid);
}

/* workflow strip */
.features-flow {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px;
  position: relative;
}
.features-flow::before {
  content: ''; position: absolute; top: 13px; left: 14px; right: 14px;
  height: 1px; background: var(--rule); z-index: 0;
}
.features-flow-step { position: relative; z-index: 1; }
.features-flow-num {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--paper); border: 1px solid var(--accent);
  color: var(--accent); font: 700 11px var(--font-mono);
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 14px;
}
.features-flow-name {
  font: 600 13px var(--font-display); color: var(--ink);
  margin-bottom: 6px;
}
.features-flow-step p {
  font: 12px var(--font-sans); line-height: 1.5; color: var(--ink-mid);
  margin: 0;
}

/* comparison side-by-side */
.features-compare {
  display: grid; grid-template-columns: 1fr 1fr; gap: 18px;
}
.features-compare-col {
  border: 1px solid var(--rule); border-radius: 6px; padding: 24px 22px;
  background: var(--paper-raised);
}
.features-compare-col.features-compare-ours {
  border-color: var(--accent); background: var(--accent-soft);
}
.features-compare-tag {
  font: 11px var(--font-mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-faint); margin-bottom: 18px;
}
.features-compare-ours .features-compare-tag { color: var(--accent); }
.features-compare-col ul {
  list-style: none; padding: 0; margin: 0;
  font: 13px var(--font-sans); line-height: 1.5; color: var(--ink-mid);
}
.features-compare-col li {
  padding: 6px 10px 6px 26px; position: relative;
  margin: 0 -10px 2px;
  border-radius: 4px;
  transition: background .15s, color .15s;
  cursor: default;
}
.features-compare-col li::before {
  content: '✕'; position: absolute; left: 10px; top: 6px;
  color: var(--ink-faint); font-weight: 500; font-size: 11px; line-height: 1.6;
}
.features-compare-ours li::before {
  content: '✓'; color: var(--accent); font-weight: 700; font-size: 13px; line-height: 1.4;
}
/* hover-pair highlighting */
.features-compare-col li:hover,
.features-compare-col li.peer-hover {
  background: var(--accent-soft); color: var(--ink);
}
.features-compare-col li:hover::before,
.features-compare-col li.peer-hover::before { color: var(--accent); }

/* "what it's good for" — buyer-perspective callout (2x2 grid of representative questions) */
.features-asks {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px;
}
.features-ask {
  background: var(--paper-raised); border: 1px solid var(--rule);
  border-radius: 6px; padding: 22px 24px;
  transition: border-color .15s;
}
.features-ask:hover { border-color: var(--accent); }
.features-ask-tag {
  font: 11px var(--font-mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 10px;
}
.features-ask p {
  font: 14px var(--font-sans); line-height: 1.5; color: var(--ink);
  margin: 0;
}

/* library proof strip — stat + list + CTA, in one card */
.features-library {
  background: var(--paper-raised); border: 1px solid var(--rule);
  border-radius: 6px; padding: 22px 28px;
  display: grid; grid-template-columns: auto 1fr auto;
  gap: 32px; align-items: center;
}
.features-library-stat { text-align: center; flex: 0 0 auto; }
.features-library-num {
  font: 700 44px var(--font-display); color: var(--accent);
  line-height: 1; letter-spacing: -.02em;
}
.features-library-label {
  font: 10px var(--font-mono); letter-spacing: .1em; text-transform: uppercase;
  color: var(--ink-faint); margin-top: 6px; line-height: 1.4;
}
.features-library-list {
  display: grid; grid-template-columns: 1fr 1fr; gap: 6px 28px;
}
.features-library-row {
  display: flex; gap: 12px; align-items: baseline;
  font: 12.5px var(--font-sans);
}
.features-library-id {
  font: 10px var(--font-mono); letter-spacing: .06em;
  color: var(--ink-faint); min-width: 110px; flex: 0 0 110px;
}
.features-library-title { color: var(--ink); }
.features-library-cta {
  white-space: nowrap; flex: 0 0 auto;
  font: 600 13px var(--font-sans); color: var(--accent);
  text-decoration: none; transition: color .15s;
}
.features-library-cta:hover { text-decoration: underline; }

/* "what runs on the graph" — meta block inside graph wrap */
.features-graph-meta {
  margin-top: 16px; padding-top: 16px;
  border-top: 1px solid var(--rule);
}
.features-graph-meta-head {
  font: 10px var(--font-mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-faint); margin-bottom: 12px;
}
.features-graph-meta-grid {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px;
}
.features-graph-meta-item {
  font: 11.5px var(--font-sans); line-height: 1.5; color: var(--ink-mid);
}
.features-graph-meta-item strong {
  display: block; font: 600 12px var(--font-sans); color: var(--ink);
  margin-bottom: 2px;
}

/* codex graph widget */
.features-graph-wrap {
  background: var(--paper-raised); border: 1px solid var(--rule);
  border-radius: 8px; padding: 18px;
}
.features-graph {
  width: 100%; height: 460px; display: block;
  border-radius: 4px; overflow: hidden;
}
.features-graph .gnode { cursor: grab; }
.features-graph .gnode:active { cursor: grabbing; }
.features-graph .gnode-subject circle { fill: var(--accent); stroke: none; }
.features-graph .gnode-subject text { fill: var(--accent-ink); font: 600 11px var(--font-display); letter-spacing: -.01em; }
.features-graph .gnode-entity circle { fill: var(--paper); stroke: var(--ink-mid); stroke-width: 1.2; }
.features-graph .gnode-entity text.glabel { fill: var(--ink-mid); font: 10px var(--font-mono); letter-spacing: .04em; }
.features-graph .gnode-claim circle { fill: transparent; stroke: var(--ink-faint); stroke-width: 1.4; stroke-dasharray: 2 2; }
.features-graph .gnode-source rect { fill: var(--paper); stroke: var(--accent); stroke-width: 1.2; }
.features-graph .gnode-source text { fill: var(--accent); font: 700 10px var(--font-mono); }
.features-graph line { stroke: var(--ink-faint); stroke-opacity: .45; transition: stroke-opacity .15s; }
.features-graph .gnode { transition: opacity .15s; }
.features-graph-legend {
  display: flex; gap: 22px; flex-wrap: wrap;
  font: 10px var(--font-mono); letter-spacing: .06em; color: var(--ink-mid);
  margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--rule);
}
.legend-item { display: inline-flex; align-items: center; gap: 7px; }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; }
.legend-dot.dot-subject { background: var(--accent); }
.legend-dot.dot-entity { background: var(--paper); border: 1px solid var(--ink-mid); }
.legend-dot.dot-claim { background: transparent; border: 1.5px dashed var(--ink-faint); border-radius: 50%; }
.legend-dot.dot-source { background: transparent; border: 1.2px solid var(--accent); border-radius: 2px; width: 14px; height: 9px; }

/* responsive */
@media (max-width: 960px) {
  .features-pillars { grid-template-columns: 1fr 1fr; }
  .features-flow { grid-template-columns: repeat(3, 1fr); }
  .features-flow::before { display: none; }
  .features-anatomy { grid-template-columns: 1fr; gap: 24px; justify-items: center; }
  .features-anatomy-cover { width: 100%; max-width: 360px; }
  .features-anatomy-callouts { width: 100%; max-width: 480px; }
  .features-graph { height: 380px; }
  .features-graph-meta-grid { grid-template-columns: repeat(2, 1fr); }
  .features-asks { grid-template-columns: 1fr; }
  .features-library { grid-template-columns: 1fr; text-align: center; gap: 20px; }
  .features-library-list { grid-template-columns: 1fr; }
  .features-library-id { flex-basis: 90px; min-width: 90px; }
}
@media (max-width: 640px) {
  .features-graph-meta-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .features-pillars { grid-template-columns: 1fr; }
  .features-principles { grid-template-columns: 1fr; }
  .features-flow { grid-template-columns: 1fr 1fr; }
  .features-compare { grid-template-columns: 1fr; }
}

/* ============================================================
   ROOK REPORTS — R# brand mark
   Replaces the legacy Corvus raven during the rebrand.
   ============================================================ */
.stamp.is-rsharp{
  width:auto;height:auto;
  min-width:46px;
  display:inline-flex;align-items:center;
}
.stamp .rsharp-mark{
  font-family:var(--font-display);font-weight:700;
  font-size:38px;line-height:1;color:var(--ink);
  letter-spacing:-.04em;display:block;white-space:nowrap;
}
.foot-brand .stamp .rsharp-mark{font-size:22px}
.cover-wm .stamp .rsharp-mark,
.cover .stamp .rsharp-mark{font-size:16px}

/* Hide the CORVUS wordmark — R# carries the brand alone for now */
.brand-text > h1{display:none}
.foot-brand > span:not(.stamp){display:none}

/* ============================================================
   DOSSIER PAGE
   Mounted on /dossiers/<slug>/index.html. Flexible across
   Person, Organization, and Threat-group entity types.
   ============================================================ */

/* dossier-specific tokens — narrower max-width + reserved left rail */
:root { --dossier-maxw: 1080px; --toc-rail: 220px; }
.dossier-hero,
.dossier-body,
.dossier-graph-section,
.dossier-trailing,
.dossier-method-footer {
  max-width: var(--dossier-maxw);
  margin-left: auto;
  margin-right: auto;
}
/* shift dossier sections right of center to reserve a left rail for the TOC,
   but only when there's genuine room (>= 1180 viewport) */
@media (min-width: 1180px) {
  .dossier-hero,
  .dossier-body,
  .dossier-graph-section,
  .dossier-trailing,
  .dossier-method-footer {
    margin-left: max(var(--toc-rail), calc((100vw - var(--dossier-maxw)) / 2 + var(--toc-rail) / 2));
    margin-right: max(var(--gutter), calc((100vw - var(--dossier-maxw)) / 2 - var(--toc-rail) / 2));
  }
  /* keep the asymmetric layout even when tucked — the rail stays reserved
     so the page doesn't reflow under the user, and the empty left margin
     reads as "the TOC lives here, peek it back" */
}

.dossier-hero { padding: 56px var(--gutter) 0; }
.dossier-eyebrow {
  font: 10px var(--font-mono);
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 14px;
}
.dossier-title {
  font: 700 clamp(34px, 5vw, 56px) var(--font-display);
  letter-spacing: -.02em; line-height: 1.05;
  margin: 0 0 14px; color: var(--ink);
}
.dossier-grade-signal {
  font: 11px var(--font-mono); letter-spacing: .04em;
  color: var(--ink-mid); margin-bottom: 32px;
  padding-bottom: 32px; border-bottom: 1px solid var(--rule);
}
.dossier-grade-signal strong { color: var(--ink); font-weight: 600; }

/* main body: infobox + content, right-floated on desktop, stacked mobile */
.dossier-body {
  padding: 0 var(--gutter) 48px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 36px;
}

.dossier-content {
  font: 15px var(--font-sans); line-height: 1.65; color: var(--ink);
  min-width: 0;
}
.dossier-lede {
  font: clamp(15px, 1.4vw, 17px) var(--font-sans);
  line-height: 1.6; color: var(--ink); margin: 0 0 28px;
}
.dossier-lede strong { font-weight: 700; }

/* infobox */
.dossier-infobox {
  background: var(--paper-raised); border: 1px solid var(--rule);
  padding: 20px 22px;
  font: 12.5px var(--font-sans); color: var(--ink);
  height: fit-content;
}
.dossier-infobox-head {
  font: 600 11px var(--font-mono); letter-spacing: .1em; text-transform: uppercase;
  color: var(--accent); margin: 0 0 14px;
  padding-bottom: 10px; border-bottom: 1px solid var(--rule);
}
.dossier-infobox-row {
  display: grid; grid-template-columns: 110px 1fr;
  gap: 12px; padding: 8px 0;
  border-bottom: 1px dashed var(--rule);
}
.dossier-infobox-row:last-child { border-bottom: 0; }
.dossier-infobox-label {
  font: 10px var(--font-mono); letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-faint); align-self: start; padding-top: 2px;
}
.dossier-infobox-value {
  color: var(--ink); line-height: 1.5;
}
.dossier-infobox-value a { color: var(--accent); text-decoration: none; }
.dossier-infobox-value a:hover { text-decoration: underline; }
.dossier-infobox-confidence {
  font: 10px var(--font-mono); color: var(--ink-faint);
  letter-spacing: .04em; margin-top: 2px;
}

/* table of contents — inline fallback (narrow screens) */
.dossier-toc {
  background: var(--paper-soft); border-left: 2px solid var(--accent);
  padding: 14px 18px; margin: 32px 0;
  font: 12px var(--font-sans);
}
.dossier-toc.is-hoisted { display: none; }
.dossier-toc-head {
  font: 10px var(--font-mono); letter-spacing: .1em; text-transform: uppercase;
  color: var(--ink-faint); margin-bottom: 8px;
}
.dossier-toc ol {
  margin: 0; padding: 0 0 0 18px; color: var(--ink-mid);
}
.dossier-toc li { padding: 2px 0; }
.dossier-toc a { color: var(--ink); text-decoration: none; }
.dossier-toc a:hover { color: var(--accent); text-decoration: underline; }

/* floating TOC — left-margin rail on wide screens */
.dossier-toc-floating {
  position: fixed;
  left: max(16px, calc((100vw - var(--dossier-maxw)) / 2 + var(--toc-rail) / 2 - 200px));
  top: 50%;
  transform: translateY(-50%) translateX(0);
  width: 180px;
  max-height: 70vh;
  background: var(--paper);
  border: 1px solid var(--rule);
  padding: 14px 14px 12px;
  font: 12px var(--font-sans);
  z-index: 80;
  transition: transform .32s cubic-bezier(.55,.05,.25,1), opacity .25s ease;
  overflow-y: auto;
  scrollbar-width: none;
}
.dossier-toc-floating::-webkit-scrollbar { display: none; }
.dossier-toc-floating.is-narrow { display: none; }
.dossier-toc-floating.is-dismissed {
  transform: translateY(-50%) translateX(calc(-100% - 32px));
  opacity: 0;
  pointer-events: none;
}
.dossier-toc-floating .dossier-toc {
  background: transparent;
  border-left: none;
  padding: 0;
  margin: 0;
  display: block !important;
}
.dossier-toc-floating .dossier-toc-head {
  font: 9.5px var(--font-mono);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-faint);
  margin: 0 0 10px;
  padding-right: 30px; /* room for tuck btn */
}
.dossier-toc-floating .dossier-toc ol {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: toc;
}
.dossier-toc-floating .dossier-toc li {
  padding: 0;
  position: relative;
  counter-increment: toc;
}
.dossier-toc-floating .dossier-toc a {
  display: block;
  padding: 5px 0 5px 22px;
  color: var(--ink-mid);
  font-size: 11.5px;
  line-height: 1.35;
  border-left: 2px solid transparent;
  margin-left: -14px;
  padding-left: 26px;
  transition: color .12s, border-color .12s, background .12s;
  position: relative;
}
.dossier-toc-floating .dossier-toc a::before {
  content: counter(toc, decimal-leading-zero);
  position: absolute;
  left: 4px;
  font: 9px var(--font-mono);
  letter-spacing: .04em;
  color: var(--ink-faint);
  top: 7px;
}
.dossier-toc-floating .dossier-toc a:hover {
  color: var(--ink);
  text-decoration: none;
  background: var(--paper-soft);
}
.dossier-toc-floating .dossier-toc a.is-current {
  color: var(--accent);
  border-left-color: var(--accent);
  background: rgba(255, 83, 71, .06);
}
.dossier-toc-floating .dossier-toc a.is-current::before { color: var(--accent); }

/* tuck-away chevron on TOC right edge */
.dossier-toc-tuck {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 22px;
  height: 22px;
  background: transparent;
  border: 1px solid transparent;
  color: var(--ink-faint);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: color .14s, border-color .14s, background .14s;
}
.dossier-toc-tuck:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: rgba(255,83,71,.06);
}

/* edge-of-screen hover zone — invisible 28px strip, active only when tucked.
   When tucked, a subtle 2px accent bar marks the rail so the user knows
   the TOC can be peeked back. */
.dossier-toc-edge {
  position: fixed;
  left: 0; top: 0; bottom: 0;
  width: 28px;
  z-index: 78;
  pointer-events: none;
}
.dossier-toc-edge.is-narrow { display: none; }
.dossier-toc-edge.is-active { pointer-events: auto; }
.dossier-toc-edge::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 2px;
  height: var(--toc-card-h, 320px);
  background: var(--accent);
  opacity: 0;
  transition: opacity .35s ease, width .15s ease;
  pointer-events: none;
}
.dossier-toc-edge.is-active::before { opacity: .32; }
.dossier-toc-edge.is-active:hover::before { opacity: .75; width: 3px; }

/* peek button — appears on edge hover when tucked */
.dossier-toc-peek {
  position: fixed;
  left: 0;
  top: 50%;
  transform: translateY(-50%) translateX(-100%);
  width: 26px;
  height: 44px;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-left: none;
  color: var(--ink-mid);
  cursor: pointer;
  z-index: 79;
  display: flex; align-items: center; justify-content: center;
  padding: 0;
  opacity: 0;
  transition: transform .22s cubic-bezier(.55,.05,.25,1), opacity .22s ease, color .14s, background .14s;
}
.dossier-toc-peek.is-narrow { display: none; }
.dossier-toc-peek.is-visible {
  transform: translateY(-50%) translateX(0);
  opacity: 1;
}
.dossier-toc-peek:hover {
  color: var(--accent);
  background: var(--paper-soft);
}
/* viewfinder caps on peek button (top-right + bottom-right corners only) */
.dossier-toc-peek::before,
.dossier-toc-peek::after {
  content: '';
  position: absolute;
  width: 8px; height: 8px;
  pointer-events: none;
  --cap: var(--accent, #ff5347);
}
.dossier-toc-peek::before {
  top: -3px; right: -3px;
  border-top: 1.5px solid var(--cap);
  border-right: 1.5px solid var(--cap);
}
.dossier-toc-peek::after {
  bottom: -3px; right: -3px;
  border-bottom: 1.5px solid var(--cap);
  border-right: 1.5px solid var(--cap);
}

/* viewfinder caps on TOC */
.dossier-toc-floating .toc-cap {
  position: absolute;
  width: 12px; height: 12px;
  pointer-events: none;
  --cap: var(--accent, #ff5347);
}
.dossier-toc-floating .toc-cap::before,
.dossier-toc-floating .toc-cap::after {
  content: ''; position: absolute; background: var(--cap);
}
.dossier-toc-floating .toc-cap::before { width: 12px; height: 1.5px; }
.dossier-toc-floating .toc-cap::after  { width: 1.5px; height: 12px; }
.dossier-toc-floating .toc-cap.cap-tl { top: -3px; left: -3px; }
.dossier-toc-floating .toc-cap.cap-tl::before { top: 0; left: 0; }
.dossier-toc-floating .toc-cap.cap-tl::after  { top: 0; left: 0; }
.dossier-toc-floating .toc-cap.cap-tr { top: -3px; right: -3px; }
.dossier-toc-floating .toc-cap.cap-tr::before { top: 0; right: 0; }
.dossier-toc-floating .toc-cap.cap-tr::after  { top: 0; right: 0; }
.dossier-toc-floating .toc-cap.cap-bl { bottom: -3px; left: -3px; }
.dossier-toc-floating .toc-cap.cap-bl::before { bottom: 0; left: 0; }
.dossier-toc-floating .toc-cap.cap-bl::after  { bottom: 0; left: 0; }
.dossier-toc-floating .toc-cap.cap-br { bottom: -3px; right: -3px; }
.dossier-toc-floating .toc-cap.cap-br::before { bottom: 0; right: 0; }
.dossier-toc-floating .toc-cap.cap-br::after  { bottom: 0; right: 0; }


/* body sections */
.dossier-content h2 {
  font: 700 clamp(20px, 2vw, 26px) var(--font-display);
  letter-spacing: -.01em; color: var(--ink);
  margin: 44px 0 14px; padding-bottom: 8px;
  border-bottom: 1px solid var(--rule);
}
.dossier-content h3 {
  font: 600 16px var(--font-sans);
  color: var(--ink); margin: 24px 0 10px;
}
.dossier-content p { margin: 0 0 14px; }
.dossier-content ul, .dossier-content ol { padding-left: 22px; }
.dossier-content li { margin-bottom: 6px; }

/* inline graded citations: [1·B2] style */
.dossier-content a.cite {
  color: var(--accent); font: 10px var(--font-mono);
  letter-spacing: .04em; text-decoration: none;
  padding: 1px 4px; border-radius: 3px;
  background: var(--accent-soft);
  vertical-align: super; line-height: 1;
  margin-left: 2px;
}
.dossier-content a.cite:hover { background: var(--accent); color: var(--accent-ink); }

/* internal links (signal-red brand accent, not Wikipedia blue) */
.dossier-content a:not(.cite) {
  color: var(--accent); text-decoration: none;
  border-bottom: 1px solid transparent; transition: border-color .15s;
}
.dossier-content a:not(.cite):hover { border-bottom-color: var(--accent); }

/* codex graph excerpt — reuses the .features-graph-wrap visual style */
.dossier-graph-section {
  padding: 32px var(--gutter) 56px;
}
.dossier-graph-section .dossier-section-head {
  font: 10px var(--font-mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--accent); margin-bottom: 12px;
}
.dossier-graph-section h2 {
  font: 700 clamp(22px, 2.4vw, 30px) var(--font-display);
  letter-spacing: -.01em; color: var(--ink); margin: 0 0 12px;
}
.dossier-graph-section p {
  font: 14px var(--font-sans); line-height: 1.55; color: var(--ink-mid);
  max-width: 620px; margin: 0 0 24px;
}
.dossier-graph-wrap {
  background: var(--paper-raised); border: 1px solid var(--rule);
  border-radius: 8px; padding: 18px;
}
.dossier-graph {
  width: 100%; height: 460px; display: block;
}
.dossier-graph { cursor: grab; }
.dossier-graph:active { cursor: grabbing; }
.dossier-graph .gnode { cursor: grab; }
.dossier-graph .gnode:active { cursor: grabbing; }
.dossier-graph .gnode-subject circle { fill: var(--accent); stroke: none; }
.dossier-graph .gnode-subject text.glabel-inset {
  fill: var(--accent-ink, #fff); font: 600 11px var(--font-display);
  paint-order: stroke fill;
  stroke: var(--accent); stroke-width: 2px;
}
.dossier-graph .gnode-entity circle { fill: var(--paper); stroke: var(--ink-mid); stroke-width: 1.2; }
.dossier-graph .gnode-entity text.glabel {
  fill: var(--ink); font: 600 10px var(--font-mono);
  paint-order: stroke fill;
  stroke: var(--paper-raised); stroke-width: 3px; stroke-linejoin: round;
}
.dossier-graph .gnode-claim circle { fill: var(--paper-raised); stroke: var(--ink-faint); stroke-width: 1.4; stroke-dasharray: 2 2; }
.dossier-graph .gnode-source rect { fill: var(--paper); stroke: var(--accent); stroke-width: 1.2; }
.dossier-graph .gnode-source text { fill: var(--accent); font: 700 10px var(--font-mono); }
.dossier-graph line { stroke: var(--ink-faint); stroke-opacity: .45; transition: stroke-opacity .15s; }
.dossier-graph-wrap { position: relative; }
.dossier-graph-hint {
  position: absolute; bottom: 10px; right: 14px;
  font: 9.5px var(--font-mono);
  letter-spacing: .06em;
  color: var(--ink-faint);
  text-transform: uppercase;
  pointer-events: none;
  user-select: none;
  opacity: .7;
}
.dossier-graph-hint kbd {
  display: inline-block;
  padding: 1px 5px;
  border: 1px solid var(--rule);
  background: var(--paper);
  color: var(--ink-mid);
  font: inherit;
  font-weight: 600;
  margin: 0 2px;
}

/* trailing sections: mentioned-in, related, external, evidence, tags */
.dossier-trailing {
  padding: 48px var(--gutter) 32px;
  border-top: 1px solid var(--rule);
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 36px;
}
.dossier-trailing-main { min-width: 0; }
.dossier-trailing-side { font: 13px var(--font-sans); }

.dossier-mentioned-in,
.dossier-related,
.dossier-external,
.dossier-evidence,
.dossier-tags {
  margin-bottom: 32px;
}
.dossier-mentioned-in h2,
.dossier-related h2,
.dossier-external h2,
.dossier-evidence h2,
.dossier-tags h2 {
  font: 700 18px var(--font-display);
  letter-spacing: -.01em; color: var(--ink);
  margin: 0 0 12px; padding-bottom: 6px;
  border-bottom: 1px solid var(--rule);
}
.dossier-mentioned-in ul,
.dossier-related ul,
.dossier-external ul {
  list-style: none; padding: 0; margin: 0;
  font: 13px var(--font-sans); color: var(--ink-mid);
}
.dossier-mentioned-in li,
.dossier-related li,
.dossier-external li { padding: 4px 0; }
.dossier-mentioned-in a,
.dossier-related a,
.dossier-external a {
  color: var(--accent); text-decoration: none;
}
.dossier-mentioned-in a:hover,
.dossier-related a:hover,
.dossier-external a:hover { text-decoration: underline; }
.dossier-external a::after {
  content: ' ↗'; font: 10px var(--font-mono); color: var(--ink-faint); margin-left: 2px;
}

/* evidence register — graded source list */
.dossier-evidence ol {
  list-style: none; padding: 0; margin: 0; counter-reset: ref;
}
.dossier-evidence li {
  counter-increment: ref; padding: 10px 0;
  border-bottom: 1px dashed var(--rule);
  font: 12.5px var(--font-sans); line-height: 1.5; color: var(--ink-mid);
  display: grid; grid-template-columns: 36px 50px 1fr; gap: 10px;
  align-items: baseline;
}
.dossier-evidence li:last-child { border-bottom: 0; }
.dossier-evidence li::before {
  content: '[' counter(ref) ']';
  font: 10px var(--font-mono); color: var(--ink-faint);
}
.dossier-evidence .evidence-grade {
  font: 700 10px var(--font-mono); color: var(--accent);
  letter-spacing: .04em; align-self: baseline;
}
.dossier-evidence .evidence-cite { color: var(--ink); }
.dossier-evidence .evidence-cite a { color: var(--accent); text-decoration: none; }
.dossier-evidence .evidence-cite a:hover { text-decoration: underline; }

/* classification tags */
.dossier-tags {
  border-top: 1px solid var(--rule); padding-top: 24px; margin-top: 8px;
}
.dossier-tags-list {
  display: flex; flex-wrap: wrap; gap: 6px;
}
.dossier-tag {
  font: 11px var(--font-mono); letter-spacing: .04em;
  color: var(--ink-mid); background: var(--paper-soft);
  border: 1px solid var(--rule);
  padding: 4px 10px; border-radius: 12px;
}

/* methodology footer */
.dossier-method-footer {
  padding: 24px var(--gutter); border-top: 1px solid var(--rule);
  font: 11px var(--font-mono); letter-spacing: .04em;
  color: var(--ink-faint); line-height: 1.6;
}

/* responsive — stack infobox above lede at 960px (matches Features breakpoint) */
@media (max-width: 960px) {
  .dossier-body,
  .dossier-trailing {
    grid-template-columns: 1fr;
  }
  .dossier-body {
    /* infobox stacks ABOVE lede on mobile */
    grid-template-areas: "infobox" "content";
  }
  .dossier-body .dossier-content { grid-area: content; }
  .dossier-body .dossier-infobox { grid-area: infobox; }
  .dossier-graph { height: 380px; }
}

/* dossier images — featured (infobox top) + in-body figures */
.dossier-infobox-image {
  display: block;
  width: calc(100% + 44px); /* extend past infobox 22px horizontal padding */
  margin: -20px -22px 14px;
  height: 200px;
  object-fit: cover;
  background: var(--paper-soft);
  border-bottom: 1px solid var(--rule);
}
.dossier-infobox-image-credit {
  font: 9.5px var(--font-mono);
  letter-spacing: .04em;
  color: var(--ink-faint);
  margin: -8px 0 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rule);
}

/* in-body figures — Wikipedia-style float right with text wrap */
.dossier-figure {
  float: right;
  margin: 6px 0 18px 24px;
  width: 280px;
  max-width: 45%;
}
.dossier-figure img {
  display: block;
  width: 100%;
  height: 180px;
  object-fit: cover;
  border: 1px solid var(--rule);
  border-radius: 4px;
}
.dossier-figure figcaption {
  font: 11px var(--font-sans);
  line-height: 1.45;
  color: var(--ink-mid);
  margin-top: 8px;
  font-style: italic;
}
.dossier-figure figcaption .credit {
  display: block;
  font: 9.5px var(--font-mono);
  font-style: normal;
  letter-spacing: .04em;
  color: var(--ink-faint);
  margin-top: 4px;
}

/* full-width body figure — for visual breaks between sections */
.dossier-figure-wide {
  margin: 28px 0;
  width: 100%;
}
.dossier-figure-wide img {
  display: block;
  width: 100%;
  height: 260px;
  object-fit: cover;
  border: 1px solid var(--rule);
  border-radius: 6px;
}
.dossier-figure-wide figcaption {
  font: 11px var(--font-sans);
  line-height: 1.45;
  color: var(--ink-mid);
  margin-top: 8px;
  font-style: italic;
  text-align: center;
}
.dossier-figure-wide figcaption .credit {
  display: inline-block;
  font: 9.5px var(--font-mono);
  font-style: normal;
  letter-spacing: .04em;
  color: var(--ink-faint);
  margin-left: 8px;
}

/* contain floats inside body sections so figures don't overflow into next section */
.dossier-content section { display: flow-root; }

/* mobile — drop float, full width */
@media (max-width: 640px) {
  .dossier-figure {
    float: none;
    margin: 24px 0;
    width: 100%;
    max-width: 100%;
  }
  .dossier-figure img { height: 220px; }
  .dossier-figure-wide img { height: 200px; }
  .dossier-infobox-image { height: 180px; }
}

/* ============================================================
   hover cards — Wikipedia-style preview popovers
   ============================================================ */
.hovercard {
  position: absolute;
  z-index: 9000;
  background: var(--paper);
  border: 1px solid var(--rule);
  color: var(--ink);
  font: 12.5px var(--font-sans);
  line-height: 1.5;
  pointer-events: none;
  opacity: 0;
  transform: translateY(-2px);
  transition: opacity .14s ease, transform .14s ease;
  box-shadow: 0 12px 38px rgba(0,0,0,.45);
  cursor: pointer;
  width: 260px;
}
html[data-theme=light] .hovercard { box-shadow: 0 12px 38px rgba(20,20,30,.18); }
.hovercard[data-size=large] { width: 340px; }
.hovercard.is-open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.hovercard.hc-above { transform: translateY(2px); }
.hovercard.hc-above.is-open { transform: translateY(0); }

/* viewfinder caps — 4px off corners, signal-red */
.hovercard-cap {
  position: absolute;
  width: 12px; height: 12px;
  pointer-events: none;
  --cap: var(--accent, #ff5347);
}
.hovercard-cap::before,
.hovercard-cap::after { content: ''; position: absolute; background: var(--cap); }
.hovercard-cap::before { width: 12px; height: 1.5px; }
.hovercard-cap::after  { width: 1.5px; height: 12px; }
.hovercard-cap.cap-tl { top: -3px; left: -3px; }
.hovercard-cap.cap-tl::before { top: 0; left: 0; }
.hovercard-cap.cap-tl::after  { top: 0; left: 0; }
.hovercard-cap.cap-tr { top: -3px; right: -3px; }
.hovercard-cap.cap-tr::before { top: 0; right: 0; }
.hovercard-cap.cap-tr::after  { top: 0; right: 0; }
.hovercard-cap.cap-bl { bottom: -3px; left: -3px; }
.hovercard-cap.cap-bl::before { bottom: 0; left: 0; }
.hovercard-cap.cap-bl::after  { bottom: 0; left: 0; }
.hovercard-cap.cap-br { bottom: -3px; right: -3px; }
.hovercard-cap.cap-br::before { bottom: 0; right: 0; }
.hovercard-cap.cap-br::after  { bottom: 0; right: 0; }

.hovercard-body { padding: 12px 14px 11px; }
.hc-head {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 6px;
}
.hc-kind {
  font: 600 9.5px var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-faint);
}
.hc-grade {
  font: 700 9.5px var(--font-mono);
  letter-spacing: .04em;
  padding: 2px 6px;
  color: var(--accent);
  border: 1px solid var(--accent);
  background: rgba(255, 83, 71, .08);
}
.hc-title {
  font: 600 14px var(--font-display, var(--font-sans));
  line-height: 1.25;
  color: var(--ink);
  margin-bottom: 6px;
}
.hc-body {
  font-size: 12px;
  color: var(--ink-mid);
}
.hovercard[data-size=small] .hc-body { font-size: 11.5px; }
.hc-foot {
  display: flex; justify-content: space-between; align-items: center; gap: 8px;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--rule);
  font: 10px var(--font-mono);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--ink-faint);
}
.hc-foot .hc-action { color: var(--accent); }
.hc-foot .hc-id { font-weight: 600; color: var(--ink-mid); }
.hc-foot .hc-meta { color: var(--ink-faint); }
.hc-host {
  display: block;
  font: 600 11.5px var(--font-mono);
  color: var(--ink);
  letter-spacing: .02em;
  word-break: break-all;
}
.hc-path {
  display: block;
  font: 10.5px var(--font-mono);
  color: var(--ink-faint);
  margin-top: 3px;
  word-break: break-all;
}

@media (max-width: 640px) {
  .hovercard { display: none !important; } /* touch devices: no hover */
}

/* ============================================================
   related reports module — small portrait cards under R# analysis
   ============================================================ */
.dossier-related-reports {
  margin-top: 26px;
  padding-top: 22px;
  border-top: 1px solid var(--rule);
}
.dossier-related-reports-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  margin-bottom: 16px;
}
.dossier-related-reports-head h3 {
  font: 600 13px var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-mid);
  margin: 0;
}
.dossier-related-reports-head .see-all {
  font: 11px var(--font-mono);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--accent);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color .15s;
}
.dossier-related-reports-head .see-all:hover { border-bottom-color: var(--accent); }
.dossier-related-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 180px));
  gap: 10px;
}
.related-card {
  position: relative;
  display: flex; flex-direction: column;
  aspect-ratio: 3 / 4;
  padding: 9px 10px 8px;
  background: var(--paper-soft, rgba(255,255,255,.02));
  border: 1px solid var(--rule);
  color: inherit;
  text-decoration: none;
  transition: border-color .15s, background .15s, transform .15s;
}
html[data-theme=light] .related-card { background: rgba(0,0,0,.015); }
.related-card:hover {
  border-color: var(--accent);
  background: var(--paper);
  transform: translateY(-1px);
}
.related-card-top {
  display: flex; justify-content: space-between; align-items: center; gap: 4px;
  font: 600 8.5px var(--font-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-faint);
}
.related-card-cat { color: var(--ink-faint); }
.related-card-grade {
  padding: 1px 4px;
  color: var(--accent);
  border: 1px solid var(--accent);
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: none;
  font-size: 8.5px;
  background: rgba(255,83,71,.08);
}
.related-card-title {
  font: 600 11px var(--font-display, var(--font-sans));
  line-height: 1.2;
  color: var(--ink);
  margin-top: 8px;
  flex: 1;
}
.related-card-foot {
  display: flex; justify-content: space-between; align-items: center; gap: 4px;
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid var(--rule);
  font: 8px var(--font-mono);
  letter-spacing: .06em;
  color: var(--ink-faint);
}
.related-card-id { color: var(--ink-mid); font-weight: 600; }
.related-card-cached {
  font-size: 8px;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--accent);
}
@media (max-width: 720px) {
  .dossier-related-grid { grid-template-columns: repeat(2, minmax(0, 180px)); }
  .dossier-related-grid .related-card:nth-child(3) { display: none; }
}
@media (max-width: 480px) {
  .dossier-related-grid { grid-template-columns: minmax(0, 180px); }
  .dossier-related-grid .related-card { aspect-ratio: 4 / 3; }
}

/* ============================================================
   image lightbox — Wikipedia-style preview with viewfinder caps
   ============================================================ */
.lightbox {
  position: fixed; inset: 0; z-index: 9999;
  display: none;
  align-items: center; justify-content: center;
}
.lightbox.is-open { display: flex; }
body.lightbox-open { overflow: hidden; }

.lightbox-backdrop {
  position: absolute; inset: 0;
  background: rgba(8, 8, 10, .88);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
html[data-theme=light] .lightbox-backdrop { background: rgba(20, 20, 22, .82); }

.lightbox-frame {
  position: relative;
  width: min(94vw, 1600px);
  height: min(88vh, 1100px);
  background: var(--paper, #0c0b0e);
  border: 1px solid var(--rule);
  display: flex; flex-direction: column;
  box-shadow: 0 24px 80px rgba(0, 0, 0, .55);
}
html[data-theme=light] .lightbox-frame { background: #1a1a1d; border-color: rgba(255,255,255,.12); }

/* viewfinder corner caps — L-brackets hovering 3-4px off the frame */
.lightbox-cap {
  position: absolute;
  width: 18px; height: 18px;
  pointer-events: none;
  --cap: var(--accent, #ff5347);
}
.lightbox-cap::before,
.lightbox-cap::after {
  content: ''; position: absolute; background: var(--cap);
}
.lightbox-cap::before { width: 18px; height: 1.5px; }
.lightbox-cap::after  { width: 1.5px; height: 18px; }
.lightbox-cap.cap-tl { top: -4px; left: -4px; }
.lightbox-cap.cap-tl::before { top: 0; left: 0; }
.lightbox-cap.cap-tl::after  { top: 0; left: 0; }
.lightbox-cap.cap-tr { top: -4px; right: -4px; }
.lightbox-cap.cap-tr::before { top: 0; right: 0; }
.lightbox-cap.cap-tr::after  { top: 0; right: 0; }
.lightbox-cap.cap-bl { bottom: -4px; left: -4px; }
.lightbox-cap.cap-bl::before { bottom: 0; left: 0; }
.lightbox-cap.cap-bl::after  { bottom: 0; left: 0; }
.lightbox-cap.cap-br { bottom: -4px; right: -4px; }
.lightbox-cap.cap-br::before { bottom: 0; right: 0; }
.lightbox-cap.cap-br::after  { bottom: 0; right: 0; }

.lightbox-stage {
  flex: 1; position: relative;
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  cursor: zoom-in;
  background:
    linear-gradient(45deg, rgba(255,255,255,.015) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.015) 75%) 0 0 / 24px 24px,
    linear-gradient(45deg, rgba(255,255,255,.015) 25%, transparent 25%, transparent 75%, rgba(255,255,255,.015) 75%) 12px 12px / 24px 24px;
}
.lightbox-stage.is-zoomed { cursor: grab; }
.lightbox-stage.is-dragging { cursor: grabbing; }
.lightbox-img {
  display: block;
  max-width: none; max-height: none;
  transform-origin: center center;
  transition: transform .12s ease-out;
  user-select: none;
  -webkit-user-drag: none;
}
.lightbox-stage.is-dragging .lightbox-img { transition: none; }

.lightbox-caption {
  flex: 0 0 auto;
  padding: 12px 18px 14px;
  border-top: 1px solid var(--rule);
  font: 12px var(--font-sans, sans-serif);
  line-height: 1.5;
  color: var(--ink-mid, #c8c8cc);
  font-style: italic;
  background: rgba(0, 0, 0, .22);
  max-height: 22vh; overflow-y: auto;
}
.lightbox-caption .credit {
  display: block;
  font: 9.5px var(--font-mono, monospace);
  font-style: normal;
  letter-spacing: .04em;
  color: var(--ink-faint, #6e6e74);
  margin-top: 6px;
}

.lightbox-controls {
  position: absolute;
  top: 18px; right: 18px;
  display: flex; gap: 6px;
  z-index: 2;
}
.lightbox-btn {
  appearance: none; -webkit-appearance: none;
  background: rgba(20, 20, 22, .85);
  border: 1px solid var(--rule);
  color: var(--ink, #e9e9e9);
  font: 600 12px var(--font-mono, monospace);
  letter-spacing: .04em;
  width: 34px; height: 34px;
  padding: 0;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 0;
  transition: background .12s, border-color .12s, color .12s;
}
.lightbox-btn:hover { background: var(--accent, #ff5347); border-color: var(--accent, #ff5347); color: #0c0b0e; }
.lightbox-pct { width: 52px; font-size: 10.5px; }
.lightbox-actual { width: 42px; font-size: 10.5px; }
.lightbox-close { margin-left: 4px; font-size: 14px; }

@media (max-width: 640px) {
  .lightbox-frame { width: 96vw; height: 92vh; }
  .lightbox-controls { top: 10px; right: 10px; }
  .lightbox-btn { width: 30px; height: 30px; font-size: 11px; }
  .lightbox-pct { width: 46px; }
  .lightbox-actual { width: 38px; }
}

/* dossier index page (placeholder for v1) */
.dossiers-index {
  max-width: var(--maxw); margin: 0 auto;
  padding: 56px var(--gutter);
}
.dossiers-index-list {
  list-style: none; padding: 0; margin: 24px 0 0;
}
.dossiers-index-list li {
  border-top: 1px solid var(--rule); padding: 18px 0;
}
.dossiers-index-list li:last-child { border-bottom: 1px solid var(--rule); }
.dossiers-index-list a {
  display: grid; grid-template-columns: 120px 1fr auto;
  gap: 18px; align-items: baseline;
  color: var(--ink); text-decoration: none;
}
.dossiers-index-list a:hover .dossiers-index-name { color: var(--accent); }
.dossiers-index-type {
  font: 10px var(--font-mono); letter-spacing: .12em; text-transform: uppercase;
  color: var(--accent);
}
.dossiers-index-name {
  font: 600 17px var(--font-display); color: var(--ink);
  transition: color .15s;
}
.dossiers-index-meta {
  font: 11px var(--font-mono); color: var(--ink-faint); white-space: nowrap;
}
