/* Approved Field Guide faces. Originals and redistribution notices live beside
   the local WOFF2s; field-guide-font-manifest.json records their identities. */
@font-face {
  font-family: "Special Elite";
  src: url("../fonts/special-elite.woff2?v=db01f60a01ca1cfbeb023d9fbb8fbadb24e96591a29c355764a4d60b505e5f3f") format("woff2"), url("../fonts/special-elite.ttf?v=9f59e3a0e1c0008f2ef97b1c94e5d96c43748bbc92993570d1133454a484254c") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: block;
}
@font-face {
  font-family: Caveat;
  src: url("../fonts/caveat.woff2?v=ef674f05e764e67a38664686e454321472664092ed2ccf297b29b02f849362c5") format("woff2"), url("../fonts/caveat.ttf?v=012f33f9814bf9614973983335c3a375fe267c094e7c09a02a276cd1dcd4180a") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: block;
}
@font-face {
  font-family: Splatter;
  src: url("../fonts/splatter.woff2?v=83b6c5d88796e9d7be456de3796968c582905fba3ce7fb8eaa8b558f60615d3b") format("woff2"), url("../fonts/splatter.ttf?v=abbe18f52b83559bdf70a0b6d2f44c20efb9f67f7f1446f5848f1bd78d96a33b") format("truetype");
  font-display: block;
}
@font-face {
  font-family: Wear;
  src: url("../fonts/wear.woff2?v=d4c1213f93ca67de40af8e9ef6ac8f9c98f03188aa899527e873161494667bb9") format("woff2"), url("../fonts/wear.ttf?v=46a0d3835a5dc6b7295644ea409670084e4f4c6ca5b69320a61933b3f70498c0") format("truetype");
  font-display: block;
}

/* One actual Regular face on every typed surface. Pin family independently of
   legacy font shorthands, including controls, syntax and generated tables. */
body.wu-theme,
body.wu-theme *,
body.wu-theme *::before,
body.wu-theme *::after {
  font-family: "Special Elite", "Courier New", monospace !important;
  font-synthesis: none;
}
body.wu-theme :is(.hand, .handwritten),
body.wu-theme :is(.hand, .handwritten) * {
  font-family: Caveat, cursive !important;
}
body.wu-theme :is(.ink-speck, .ink-speck-small, .ink-splatter) {
  font-family: Splatter !important;
}
body.wu-theme :is(.handled-edge, .wear-mark) {
  font-family: Wear !important;
}

/* Sparse build-time impressions keep long catalogs within a bounded DOM cost.
   The intact original is the accessible text; visual words retain selection.
   Native Special Elite advances avoid wrapping every letter in a machine cell. */
.tw-text { position: relative; }
.tw-access {
  position: absolute !important;
  left: 0;
  top: 0;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: pre !important;
  border: 0 !important;
  user-select: none;
}
.tw-word {
  display: inline-block;
  white-space: nowrap;
  opacity: var(--strike-opacity, .9);
  text-shadow: 0 0 .009em currentColor;
}
.tw-glyph { display: inline-block; position: relative; }
.tw-chip {
  -webkit-mask-image: radial-gradient(ellipse .055em .09em at 72% 52%, transparent 95%, #000 110%);
  mask-image: radial-gradient(ellipse .055em .09em at 72% 52%, transparent 95%, #000 110%);
}
.tw-raised { transform: translateY(-.065em) rotate(-1.1deg); }
.tw-double { text-shadow: .025em .012em 0 currentColor; }
.tw-glyph[class*="tw-counter-"]::after {
  position: absolute;
  content: "";
  inset: 0;
  height: 1em;
  background: currentColor;
  opacity: .38;
  pointer-events: none;
  -webkit-mask: var(--counter-mask) center / 100% 100% no-repeat;
  mask: var(--counter-mask) center / 100% 100% no-repeat;
}

/* A clean impression retains Special Elite's inherent worn outline. Numeric
   facts and exact commands are left undecorated by the build pass altogether. */
.wu-clean .tw-word, .clean .tw-word {
  opacity: 1;
  text-shadow: none;
}
.wu-clean .tw-glyph, .clean .tw-glyph {
  transform: none;
  -webkit-mask: none;
  mask: none;
}
.wu-clean .tw-glyph::after, .clean .tw-glyph::after { display: none; }

@media print {
  .tw-word { opacity: 1; text-shadow: none; }
  .tw-glyph { transform: none; -webkit-mask: none; mask: none; }
  .tw-glyph::after { display: none; }
}

/* Counter contours extracted from the verified SpecialElite-Regular face;
   source paths are retained in assets/field-guide-glyphs.json. */
.tw-counter-o { --counter-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201195%202048%22%3E%3Cpath%20transform%3D%22translate%280%201440.0%29%20scale%281%20-1%29%22%20d%3D%22M1012%20430Q1012%20446%201000.0%20449.5Q988%20453%20973.0%20454.0Q958%20455%20943.5%20457.0Q929%20459%20924%20472V482Q924%20504%20918.5%20533.5Q913%20563%20905.0%20593.5Q897%20624%20888.0%20653.5Q879%20683%20871.0%20706.0Q863%20729%20858.0%20743.0Q853%20757%20853%20757Q845%20755%20840%20755Q823%20755%20810.5%20762.0Q798%20769%20782.5%20777.0Q767%20785%20744.5%20792.0Q722%20799%20685%20799Q644%20799%20604.0%20804.5Q564%20810%20523%20810Q467%20810%20418.0%20784.5Q369%20759%20332.0%20717.5Q295%20676%20274.0%20624.0Q253%20572%20253%20519Q253%20497%20254.0%20467.5Q255%20438%20259.0%20408.5Q263%20379%20272.0%20353.5Q281%20328%20297%20315V287Q301%20283%20307.5%20282.5Q314%20282%20320.5%20282.0Q327%20282%20332.0%20280.5Q337%20279%20340%20272Q353%20235%20374.0%20215.5Q395%20196%20419.0%20182.5Q443%20169%20467.0%20155.5Q491%20142%20511%20116Q519%20117%20528.0%20117.5Q537%20118%20545%20118Q577%20118%20607.5%20113.5Q638%20109%20669%20109Q702%20109%20728.5%20126.0Q755%20143%20774%20169Q786%20186%20796.0%20198.0Q806%20210%20816.5%20220.5Q827%20231%20839.5%20240.5Q852%20250%20869%20262Q875%20266%20883.5%20272.0Q892%20278%20900.5%20285.5Q909%20293%20915.0%20300.5Q921%20308%20921%20315Q921%20324%20918.5%20333.0Q916%20342%20916%20351Q916%20361%20919.0%20375.0Q922%20389%20928.5%20402.0Q935%20415%20944.5%20423.5Q954%20432%20968%20432Q979%20432%20990.0%20427.0Q1001%20422%201010%20415Q1012%20425%201012%20430Z%22%2F%3E%3C%2Fsvg%3E"); }
.tw-counter-a { --counter-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201158%202048%22%3E%3Cpath%20transform%3D%22translate%280%201440.0%29%20scale%281%20-1%29%22%20d%3D%22M819%20424Q819%20430%20818.5%20445.0Q818%20460%20816.0%20475.5Q814%20491%20809.5%20503.0Q805%20515%20796%20515Q794%20515%20791.0%20513.5Q788%20512%20786%20512Q748%20491%20721.0%20477.5Q694%20464%20667.5%20455.5Q641%20447%20611.0%20444.0Q581%20441%20536%20441Q530%20441%20503.0%20436.0Q476%20431%20444.0%20424.5Q412%20418%20384.0%20411.5Q356%20405%20349%20403Q336%20398%20330.5%20393.0Q325%20388%20322.0%20382.0Q319%20376%20316.0%20369.5Q313%20363%20305%20356Q295%20348%20283.5%20343.0Q272%20338%20262%20328Q247%20313%20234.0%20288.5Q221%20264%20221%20242Q221%20215%20235.0%20194.0Q249%20173%20272.0%20158.0Q295%20143%20324.0%20132.0Q353%20121%20382.5%20115.0Q412%20109%20439.5%20106.0Q467%20103%20487%20103Q511%20103%20544.0%20106.5Q577%20110%20610.0%20117.5Q643%20125%20672.0%20138.0Q701%20151%20718%20171Q725%20179%20728.0%20185.5Q731%20192%20734.5%20198.5Q738%20205%20742.5%20212.0Q747%20219%20757%20227Q780%20246%20792.5%20269.0Q805%20292%20811.0%20317.0Q817%20342%20818.0%20369.0Q819%20396%20819%20424Z%22%2F%3E%3C%2Fsvg%3E"); }
.tw-counter-O { --counter-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201263%202048%22%3E%3Cpath%20transform%3D%22translate%280%201440.0%29%20scale%281%20-1%29%22%20d%3D%22M1011%20680Q1011%20736%201001.5%20791.0Q992%20846%20983%20901Q979%20921%20970.5%20939.0Q962%20957%20956%20976Q944%201012%20933.0%201048.0Q922%201084%20911%201120Q904%201142%20883.0%201158.5Q862%201175%20834.0%201186.5Q806%201198%20773.5%201205.5Q741%201213%20711.0%201217.5Q681%201222%20655.5%201223.5Q630%201225%20617%201225L630%201226L619%201225Q597%201225%20575.5%201227.0Q554%201229%20532%201229Q514%201229%20496.5%201226.5Q479%201224%20465%201213Q432%201187%20403.0%201164.5Q374%201142%20355%201103Q349%201090%20342.0%201084.5Q335%201079%20328.5%201073.5Q322%201068%20317.0%201061.0Q312%201054%20310%201038Q305%201009%20298.5%20980.5Q292%20952%20292%20923Q292%20892%20286.5%20861.5Q281%20831%20269%20802Q266%20794%20263.5%20787.0Q261%20780%20261%20772Q261%20757%20268.0%20746.5Q275%20736%20275%20728Q275%20724%20272.5%20723.5Q270%20723%20267.5%20721.5Q265%20720%20262.5%20715.0Q260%20710%20260%20697Q260%20668%20260.5%20638.0Q261%20608%20266%20579Q269%20562%20276.5%20546.5Q284%20531%20284%20514Q284%20503%20279.0%20492.0Q274%20481%20274%20469Q274%20455%20282.0%20446.5Q290%20438%20298%20427Q304%20419%20308.5%20406.5Q313%20394%20317.5%20383.0Q322%20372%20326.0%20364.0Q330%20356%20335%20356Q339%20356%20342.0%20357.5Q345%20359%20349%20359Q369%20359%20379.5%20341.5Q390%20324%20390%20307Q390%20293%20398.0%20283.5Q406%20274%20417.0%20266.0Q428%20258%20439.5%20250.5Q451%20243%20459%20234Q472%20219%20479.5%20214.0Q487%20209%20493.0%20207.5Q499%20206%20504.5%20205.0Q510%20204%20519%20198Q530%20190%20541.5%20180.5Q553%20171%20564%20163Q595%20141%20633.5%20136.5Q672%20132%20709%20132Q724%20132%20737.0%20139.0Q750%20146%20763.0%20154.5Q776%20163%20789.5%20170.0Q803%20177%20819%20177Q832%20177%20846%20171Q869%20206%20890.0%20227.0Q911%20248%20928.0%20268.0Q945%20288%20957.0%20314.0Q969%20340%20974%20385Q976%20404%20984.5%20420.5Q993%20437%20995%20455Q1000%20495%201000.5%20535.0Q1001%20575%201007%20615Q1009%20631%201010.0%20647.0Q1011%20663%201011%20680Z%22%2F%3E%3C%2Fsvg%3E"); }
.tw-counter-B { --counter-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201237%202048%22%3E%3Cpath%20transform%3D%22translate%280%201440.0%29%20scale%281%20-1%29%22%20d%3D%22M949%201025Q949%201036%20946.0%201051.0Q943%201066%20939.0%201081.5Q935%201097%20931.0%201112.5Q927%201128%20925%201140Q922%201155%20916.0%201164.5Q910%201174%20902.0%201180.5Q894%201187%20884.0%201193.5Q874%201200%20864%201209Q839%201231%20816.0%201244.0Q793%201257%20768.0%201264.0Q743%201271%20715.0%201273.5Q687%201276%20653%201276Q631%201276%20607.5%201275.0Q584%201274%20565%201269Q561%201267%20560.0%201264.0Q559%201261%20555.5%201258.0Q552%201255%20543.0%201252.5Q534%201250%20515%201250Q486%201250%20467.5%201242.0Q449%201234%20438.5%201219.5Q428%201205%20424.0%201184.5Q420%201164%20419%201138Q418%201105%20417.5%201070.0Q417%201035%20414.0%201000.5Q411%20966%20403.5%20933.0Q396%20900%20380%20869Q436%20855%20494.0%20847.0Q552%20839%20608%20839Q647%20839%20686.5%20842.0Q726%20845%20764%20852Q778%20855%20801.5%20863.0Q825%20871%20847.5%20883.0Q870%20895%20887.5%20910.0Q905%20925%20907%20941Q909%20953%20915.5%20963.0Q922%20973%20929.5%20982.5Q937%20992%20943.0%201002.0Q949%201012%20949%201025Z%20M982%20357Q982%20383%20975.5%20409.0Q969%20435%20965%20461Q962%20485%20959.5%20499.0Q957%20513%20951.5%20523.5Q946%20534%20936.0%20544.0Q926%20554%20907%20570Q902%20592%20896.5%20596.0Q891%20600%20885%20600Q880%20600%20874.5%20599.5Q869%20599%20864%20599L850%20627Q831%20640%20816.5%20647.0Q802%20654%20779%20656Q759%20658%20739.5%20664.0Q720%20670%20699%20670Q690%20670%20685.0%20663.0Q680%20656%20677%20656Q671%20656%20663.0%20658.5Q655%20661%20646.0%20663.5Q637%20666%20627.5%20668.5Q618%20671%20610%20671Q565%20671%20522.5%20661.5Q480%20652%20437%20641Q429%20620%20421.5%20595.0Q414%20570%20408.0%20544.0Q402%20518%20398.0%20492.5Q394%20467%20394%20445Q394%20434%20396.0%20427.5Q398%20421%20401.0%20416.0Q404%20411%20406.0%20406.0Q408%20401%20408%20394Q408%20354%20399.5%20315.5Q391%20277%20391%20237Q391%20211%20398.0%20187.0Q405%20163%20422%20143Q442%20143%20460.0%20135.5Q478%20128%20498%20128Q512%20128%20525.5%20135.0Q539%20142%20547%20142Q555%20142%20559.5%20135.0Q564%20128%20575%20128H579Q582%20133%20590.0%20136.5Q598%20140%20608.5%20141.5Q619%20143%20631.0%20143.5Q643%20144%20654%20144Q675%20144%20686.5%20143.0Q698%20142%20713%20142Q755%20151%20793%20164Q825%20175%20858.5%20192.0Q892%20209%20911%20232Q921%20242%20933.5%20257.0Q946%20272%20956.5%20288.5Q967%20305%20974.5%20322.5Q982%20340%20982%20357Z%22%2F%3E%3C%2Fsvg%3E"); }
