/* Same dark theme tokens and component language as the reviewed mockup
   (MapAlerter_Registration_Mockup_v2.html) — carried over 1:1 so the real app matches
   what was signed off, just server-rendered instead of a click-through prototype. */
:root{
  --navy:#002237;
  --navy-2:#01324f;
  --green:#1F5209;
  --green-bright:#4c9a1a;
  --lime:#9fd857;
  --white:#ffffff;
  --muted:#cfe0ea;
  --danger:#ff9d9d;
  --danger-bg:#3a1414;
}
*{box-sizing:border-box;}
/* html needs the same background as body: when page content is shorter than the
   viewport, it's html's own (default white) background that shows through below it,
   not body's — this is what was causing the white area under the card. */
html{
  min-height:100%;
  background:var(--navy);
}
body{
  margin:0;
  min-height:100vh;
  background:var(--navy);
  color:var(--white);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
.page{display:flex;justify-content:center;padding:32px 16px;}
.card-shell{width:100%;max-width:420px;}

/* Home-screen logo: a plain block-level image, not shared with other screens (kept off
   secondary/guest screens per the approved mockup — only the home screen needs the brand
   mark). Ported 1:1 from MapAlerter_Registration_Mockup_v2.html's .home-logo rule. */
.home-logo{
  width:170px;height:48px;margin:0 0 12px;
  background-repeat:no-repeat;background-position:left center;background-size:contain;
  background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHdpZHRoPSIxODguMTY3cHgiIGhlaWdodD0iNTMuNXB4IiB2aWV3Qm94PSIwIC0yMS41IDE4OC4xNjcgNTMuNSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIC0yMS41IDE4OC4xNjcgNTMuNSINCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iTG9nbzEiIGRpc3BsYXk9Im5vbmUiPg0KCTxwYXRoIGRpc3BsYXk9ImlubGluZSIgZmlsbD0iIzczQkU0NCIgZD0iTTUxLjE3OC04LjM4MUwzMy41NjksOS4yMzFsLTkuNDktOS40OTFsMTcuMjQyLTE3LjI0Mw0KCQlDNDUuNTU1LTE1LjY3Myw0OS4wMzUtMTIuNDMsNTEuMTc4LTguMzgxIi8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjRkZGRkZGIiBkPSJNMzMuNzI5LDExLjU2N2MtMi40OTUsMC00LjUyNC0yLjAyOC00LjUyNC00LjUyYzAtMi40OTcsMi4wMjktNC41MjgsNC41MjQtNC41MjgNCgkJYzIuNDk3LDAsNC41MjUsMi4wMzEsNC41MjUsNC41MjhDMzguMjU0LDkuNTM5LDM2LjIyNiwxMS41NjcsMzMuNzI5LDExLjU2NyBNMzMuNzI5LDMuNjc0Yy0xLjg1OCwwLTMuMzY4LDEuNTEzLTMuMzY4LDMuMzc0DQoJCWMwLDEuODU0LDEuNTEsMy4zNjQsMy4zNjgsMy4zNjRzMy4zNjctMS41MTEsMy4zNjctMy4zNjRDMzcuMDk2LDUuMTg3LDM1LjU4NywzLjY3NCwzMy43MjksMy42NzQiLz4NCgk8cGF0aCBkaXNwbGF5PSJpbmxpbmUiIGZpbGw9IiNGRkZGRkYiIGQ9Ik0zMy43MjksMTQuMzMzYy00LjAxOSwwLTcuMjg2LTMuMjcxLTcuMjg2LTcuMjg1YzAtNC4wMiwzLjI2Ny03LjI5Myw3LjI4Ni03LjI5Mw0KCQljNC4wMiwwLDcuMjg5LDMuMjczLDcuMjg5LDcuMjkzQzQxLjAxOCwxMS4wNjMsMzcuNzQ5LDE0LjMzMywzMy43MjksMTQuMzMzIE0zMy43MjksMC45MWMtMy4zNzksMC02LjEzLDIuNzU0LTYuMTMsNi4xMzgNCgkJYzAsMy4zNzgsMi43NTEsNi4xMjksNi4xMyw2LjEyOWMzLjM4LDAsNi4xMzItMi43NTEsNi4xMzItNi4xMjlDMzkuODYxLDMuNjY0LDM3LjEwOSwwLjkxLDMzLjcyOSwwLjkxIi8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjRkZGRkZGIiBkPSJNMzMuNzI5LDE3LjExOWMtNS41NTQsMC0xMC4wNzUtNC41MTYtMTAuMDc1LTEwLjA3MWMwLTUuNTYsNC41MjEtMTAuMDc4LDEwLjA3NS0xMC4wNzgNCgkJYzUuNTU1LDAsMTAuMDc0LDQuNTE5LDEwLjA3NCwxMC4wNzhDNDMuODAzLDEyLjYwNCwzOS4yODQsMTcuMTE5LDMzLjcyOSwxNy4xMTkgTTMzLjcyOS0xLjg3NGMtNC45MTYsMC04LjkxNiw0LjAwMS04LjkxNiw4LjkyMQ0KCQljMCw0LjkxOCw0LDguOTE0LDguOTE2LDguOTE0YzQuOTE5LDAsOC45Mi0zLjk5Niw4LjkyLTguOTE0QzQyLjY0OSwyLjEyNywzOC42NDgtMS44NzQsMzMuNzI5LTEuODc0Ii8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjRkZGRkZGIiBkPSJNMzMuNzI5LDE5LjczNGMtNi45OTcsMC0xMi42ODgtNS42OTItMTIuNjg4LTEyLjY4N2MwLTcuMDAxLDUuNjkxLTEyLjY5MSwxMi42ODgtMTIuNjkxDQoJCWM2Ljk5OSwwLDEyLjY5LDUuNjksMTIuNjksMTIuNjkxQzQ2LjQxOSwxNC4wNDIsNDAuNzI4LDE5LjczNCwzMy43MjksMTkuNzM0IE0zMy43MjktNC40ODdjLTYuMzU5LDAtMTEuNTMxLDUuMTc0LTExLjUzMSwxMS41MzUNCgkJYzAsNi4zNTUsNS4xNzIsMTEuNTMsMTEuNTMxLDExLjUzYzYuMzU4LDAsMTEuNTM0LTUuMTc1LDExLjUzNC0xMS41M0M0NS4yNjMsMC42ODcsNDAuMDg3LTQuNDg3LDMzLjcyOS00LjQ4NyIvPg0KCTxwYXRoIGRpc3BsYXk9ImlubGluZSIgZmlsbD0iIzAwMjIzNyIgZD0iTTIwLjQ1Ni0wLjI2bC02Ljc0OSw2Ljc1MWMtMC40NzYtMS43MTQtMC43MjctMy41MjctMC43MjctNS4zOTUNCgkJYzAtMi42MjQsMC40OTctNS4xMjgsMS40MDQtNy40MjdMMjAuNDU2LTAuMjZ6Ii8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjMDAyMjM3IiBkPSJNMzEuNzYxLDExLjA0NGwtOC41MzEsOC41MjRsLTMuMjQ3LTMuMTZjLTIuMjc3LTEuOTY4LTQuMTE1LTQuNDM3LTUuMzM1LTcuMjM2VjkuMTY3DQoJCWw3LjYxOS03LjYxNkwzMS43NjEsMTEuMDQ0eiIvPg0KCTxwb2x5Z29uIGRpc3BsYXk9ImlubGluZSIgZmlsbD0iIzAwMjIzNyIgcG9pbnRzPSI0MS43NTcsMjEuMDQzIDMzLjI2NCwyOS4zMzIgMjUuMDY1LDIxLjM1NCAzMy41NjksMTIuODU0IAkiLz4NCgk8cGF0aCBkaXNwbGF5PSJpbmxpbmUiIGZpbGw9IiMwMDIyMzciIGQ9Ik0zOC42NDYtMTguNDVMMjIuMjY4LTIuMDY4bC02LjcxOC02LjcyM2MzLjQ2Ny02LjE5OSwxMC4wOTEtMTAuMzg0LDE3LjcwMi0xMC4zODQNCgkJQzM1LjExOC0xOS4xNzUsMzYuOTI4LTE4LjkyMSwzOC42NDYtMTguNDUiLz4NCgk8cGF0aCBkaXNwbGF5PSJpbmxpbmUiIGZpbGw9IiMwMDIyMzciIGQ9Ik01My41MjEsMS4wOTZjMCw2LjE2OC0yLjc0NiwxMS42OTMtNy4wOTgsMTUuMzk1bC0yLjgzLDIuNzYzbC04LjIxNC04LjIxM0w1Mi4yOTQtNS44NzcNCgkJQzUzLjA5MS0zLjcwMyw1My41MjEtMS4zNTMsNTMuNTIxLDEuMDk2Ii8+DQoJPHBvbHlnb24gZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjNzNCRTQ0IiBwb2ludHM9Ijc2LjM3NSwxMy4xNjMgNzYuMzc1LDAuMTUgNzEuMTMzLDEzLjE2MyA3MC4zNDQsMTMuMTYzIDY1LjA3NiwwLjE1IA0KCQk2NS4wNzYsMTMuMTYzIDYzLjE1MiwxMy4xNjMgNjMuMTUyLC0yLjMxIDY1LjkxMiwtMi4zMSA3MC43MzYsOS42MTQgNzUuNTQxLC0yLjMxIDc4LjMwMSwtMi4zMSA3OC4zMDEsMTMuMTYzIAkiLz4NCgk8cGF0aCBkaXNwbGF5PSJpbmxpbmUiIGZpbGw9IiM3M0JFNDQiIGQ9Ik04OS45NjksMTMuMTY0di0xLjY2OGMtMC44MzQsMS4xMzQtMi4yMDMsMS45NDgtMy43ODMsMS45NDgNCgkJYy0yLjkyMiwwLTQuOTg2LTIuMjI5LTQuOTg2LTUuODY5YzAtMy41OTksMi4wNjQtNS44OTQsNC45ODYtNS44OTRjMS41MTIsMCwyLjg3OSwwLjc0MiwzLjc4MywxLjk3MlYxLjk1OGgxLjc0djExLjIwNkg4OS45Njl6DQoJCSBNODkuOTY5LDEwLjEwM1Y1LjA0NWMtMC42MDQtMC45NzMtMS45NzMtMS44MS0zLjM0LTEuODFjLTIuMjczLDAtMy42MjEsMS44NTYtMy42MjEsNC4zNGMwLDIuNDgsMS4zNDgsNC4zMTMsMy42MjEsNC4zMTMNCgkJQzg3Ljk5NiwxMS44ODgsODkuMzY1LDExLjA3Nyw4OS45NjksMTAuMTAzIi8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjNzNCRTQ0IiBkPSJNOTYuOTMsMTEuNDd2NS45NjRoLTEuNzRWMS45NThoMS43NFYzLjYzYzAuODExLTEuMTM4LDIuMjAzLTEuOTQ5LDMuNzgxLTEuOTQ5DQoJCWMyLjk0MywwLDQuOTg2LDIuMjI2LDQuOTg2LDUuODY2YzAsMy42MjEtMi4wNDMsNS44OTYtNC45ODYsNS44OTZDOTkuMTgsMTMuNDQ0LDk3Ljg1NSwxMi42OTksOTYuOTMsMTEuNDcgTTEwMy44NjUsNy41NDgNCgkJYzAtMi40NzktMS4zNDYtNC4zMTMtMy41OTYtNC4zMTNjLTEuMzY3LDAtMi43MzYsMC44MTEtMy4zNCwxLjc4NnY1LjA1NWMwLjYwNCwwLjk3OCwxLjk3MywxLjgxMiwzLjM0LDEuODEyDQoJCUMxMDIuNTIsMTEuODg4LDEwMy44NjUsMTAuMDMyLDEwMy44NjUsNy41NDgiLz4NCgk8cGF0aCBkaXNwbGF5PSJpbmxpbmUiIGZpbGw9IiMwMDIyMzciIGQ9Ik0xMTkuODQ4LDEzLjE2NGwtMS41MjktMy44MDZoLTguMTg5bC0xLjUzMSwzLjgwNmgtMS41MzFsNi4zMzItMTUuNDczaDEuNjQ4DQoJCWw2LjMzMiwxNS40NzNIMTE5Ljg0OHogTTExNC4yMzItMC44OTNsLTMuNjY0LDkuMDQ0aDcuMzExTDExNC4yMzItMC44OTN6Ii8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjMDAyMjM3IiBkPSJNMTIzLjYwNSwxMS4wMDdWLTIuMzA5aDEuMjA1VjEwLjgyYzAsMC45MDcsMC4zNzMsMS41MzIsMS4xNjIsMS41MzINCgkJYzAuNTMzLDAsMC45OTYtMC4yNTQsMS4yNTItMC41MzNsMC40NjctMC45MjZjLTAuNDQxLDAuNDE4LTAuOTc5LDAuNjk5LTEuOTAyLDAuNjk5QzEyNC4zMjQsMTMuNDQ0LDEyMy42MDUsMTIuNTM3LDEyMy42MDUsMTEuMDA3DQoJCSIvPg0KCTxwYXRoIGRpc3BsYXk9ImlubGluZSIgZmlsbD0iIzAwMjIzNyIgZD0iTTEyOC45MTgsNy41NDhjMC0zLjI0NSwyLjI3NS01Ljg2Nyw1LjM4NS01Ljg2N2MzLjQwOCwwLDUuMjg1LDIuNjkyLDUuMjg1LDUuOTM4djAuMzI1DQoJCWgtOS4zNzFjMC4xMTcsMi40MzYsMS43NDIsNC40NTUsNC4zODUsNC40NTVjMS40MTYsMCwyLjcxNS0wLjUzNCwzLjY2Ni0xLjU1NWwwLjYyOSwwLjc4OWMtMS4xMTUsMS4xNTktMi41MzEsMS44MTEtNC4zODcsMS44MTENCgkJQzEzMS4yMzgsMTMuNDQ0LDEyOC45MTgsMTEuMDA3LDEyOC45MTgsNy41NDggTTEzNC4yNzUsMi43MjNjLTIuNjQzLDAtMy45NjUsMi4zMjItNC4wNTksNC4yNzFoOC4xNDUNCgkJQzEzOC4zMzgsNS4wOTEsMTM3LjA4NiwyLjcyMywxMzQuMjc1LDIuNzIzIi8+DQoJPHBhdGggZGlzcGxheT0iaW5saW5lIiBmaWxsPSIjMDAyMjM3IiBkPSJNMTQyLjY5NywxMy4xNjNWMS45NThoMS4yMDd2MS45MjZjMC45NTEtMS4yNTMsMi4yMjctMi4xNTgsMy43NzktMi4xNTh2MS4zMjQNCgkJYy0wLjIwNy0wLjA0Ny0wLjM2OS0wLjA0Ny0wLjYwMi0wLjA0N2MtMS4xMzcsMC0yLjY2OCwxLjAxOS0zLjE3OCwxLjk5NXY4LjE2NUgxNDIuNjk3eiIvPg0KCTxwYXRoIGRpc3BsYXk9ImlubGluZSIgZmlsbD0iIzAwMjIzNyIgZD0iTTE1MS4yMTMsMTEuMDMydi03Ljk4aC0xLjg1NFYxLjk4NmgxLjg1NHYtMy4wNjJoMS4yM3YzLjA2MmgyLjI3MXYxLjA2NmgtMi4yNzF2Ny43OTQNCgkJYzAsMC45MDgsMC4zNzEsMS41MzMsMS4xNjIsMS41MzNjMC41MjksMCwwLjk5Ni0wLjI1NSwxLjI1LTAuNTM1bDAuNDYzLDAuOTI5Yy0wLjQ0MSwwLjQxNi0wLjk3MywwLjY5Ni0xLjkwMiwwLjY5Ng0KCQlDMTUxLjkzMiwxMy40NjksMTUxLjIxMywxMi41NjUsMTUxLjIxMywxMS4wMzIiLz4NCgk8cGF0aCBkaXNwbGF5PSJpbmxpbmUiIGZpbGw9IiMwMDIyMzciIGQ9Ik0xNTYuNzM0LDcuNTc1YzAtMy4yNDcsMi4yNzEtNS44NjksNS4zODEtNS44NjljMy40MTIsMCw1LjI5MSwyLjY5MSw1LjI5MSw1LjkzOXYwLjMyNg0KCQloLTkuMzczYzAuMTE1LDIuNDMzLDEuNzM4LDQuNDUzLDQuMzg1LDQuNDUzYzEuNDE2LDAsMi43MTUtMC41MzQsMy42NjYtMS41NTVsMC42MjUsMC43ODdjLTEuMTEzLDEuMTYyLTIuNTI3LDEuODEyLTQuMzg1LDEuODEyDQoJCUMxNTkuMDU1LDEzLjQ2OSwxNTYuNzM0LDExLjAzMSwxNTYuNzM0LDcuNTc1IE0xNjIuMDk0LDIuNzVjLTIuNjQ1LDAtMy45NjksMi4zMjItNC4wNjEsNC4yN2g4LjE0Mw0KCQlDMTY2LjE1NCw1LjExNywxNjQuOSwyLjc1LDE2Mi4wOTQsMi43NSIvPg0KCTxwYXRoIGRpc3BsYXk9ImlubGluZSIgZmlsbD0iIzAwMjIzNyIgZD0iTTE3MC41MTQsMTMuMTg4VjEuOTg2aDEuMjA1djEuOTI1YzAuOTUxLTEuMjUzLDIuMjI5LTIuMTU4LDMuNzgxLTIuMTU4djEuMzI1DQoJCWMtMC4yMDctMC4wNDktMC4zNzEtMC4wNDktMC42MDItMC4wNDljLTEuMTM5LDAtMi42NywxLjAyMS0zLjE4LDEuOTk2djguMTY0SDE3MC41MTR6Ii8+DQo8L2c+DQo8ZyBpZD0iTG9nbzIiPg0KCTxwYXRoIGZpbGw9IiM3M0JFNDQiIGQ9Ik01MS4xMzQtOC40NDhMMzMuNTI1LDkuMTY1bC05LjQ4OS05LjQ5Mkw0MS4yNzctMTcuNTdDNDUuNTEtMTUuNzQsNDguOTktMTIuNDk4LDUxLjEzNC04LjQ0OCIvPg0KCTxwYXRoIGZpbGw9IiMwMDIyMzciIGQ9Ik0zMy42ODUsMTEuNWMtMi40OTQsMC00LjUyMy0yLjAyOS00LjUyMy00LjUyMWMwLTIuNDk2LDIuMDI5LTQuNTI4LDQuNTIzLTQuNTI4DQoJCWMyLjQ5NywwLDQuNTI2LDIuMDMyLDQuNTI2LDQuNTI4QzM4LjIxMSw5LjQ3MSwzNi4xODIsMTEuNSwzMy42ODUsMTEuNSBNMzMuNjg1LDMuNjA3Yy0xLjg1OCwwLTMuMzY4LDEuNTEzLTMuMzY4LDMuMzcyDQoJCWMwLDEuODU2LDEuNTEsMy4zNjQsMy4zNjgsMy4zNjRjMS44NTksMCwzLjM2OC0xLjUwOCwzLjM2OC0zLjM2NEMzNy4wNTMsNS4xMjEsMzUuNTQ0LDMuNjA3LDMzLjY4NSwzLjYwNyIvPg0KCTxwYXRoIGZpbGw9IiMwMDIyMzciIGQ9Ik0zMy42ODUsMTQuMjY0Yy00LjAxNywwLTcuMjg3LTMuMjY5LTcuMjg3LTcuMjg0YzAtNC4wMiwzLjI3MS03LjI5Miw3LjI4Ny03LjI5Mg0KCQljNC4wMjEsMCw3LjI5LDMuMjcyLDcuMjksNy4yOTJDNDAuOTc1LDEwLjk5NSwzNy43MDUsMTQuMjY0LDMzLjY4NSwxNC4yNjQgTTMzLjY4NSwwLjg0MWMtMy4zNzksMC02LjEzMSwyLjc1NS02LjEzMSw2LjEzOA0KCQljMCwzLjM3OSwyLjc1Miw2LjEyOSw2LjEzMSw2LjEyOWMzLjM4LDAsNi4xMzItMi43NSw2LjEzMi02LjEyOUMzOS44MTYsMy41OTYsMzcuMDY0LDAuODQxLDMzLjY4NSwwLjg0MSIvPg0KCTxwYXRoIGZpbGw9IiMwMDIyMzciIGQ9Ik0zMy42ODUsMTcuMDUzYy01LjU1MywwLTEwLjA3NC00LjUxOC0xMC4wNzQtMTAuMDc0YzAtNS41NTksNC41MjEtMTAuMDc2LDEwLjA3NC0xMC4wNzYNCgkJYzUuNTU2LDAsMTAuMDc0LDQuNTE4LDEwLjA3NCwxMC4wNzZDNDMuNzU5LDEyLjUzNSwzOS4yNCwxNy4wNTMsMzMuNjg1LDE3LjA1MyBNMzMuNjg1LTEuOTQxYy00LjkxNywwLTguOTE2LDQuMDAxLTguOTE2LDguOTE5DQoJCWMwLDQuOTIsMy45OTksOC45MTYsOC45MTYsOC45MTZjNC45MiwwLDguOTIxLTMuOTk2LDguOTIxLTguOTE2QzQyLjYwNSwyLjA2LDM4LjYwNC0xLjk0MSwzMy42ODUtMS45NDEiLz4NCgk8cGF0aCBmaWxsPSIjMDAyMjM3IiBkPSJNMzMuNjg1LDE5LjY2NmMtNi45OTYsMC0xMi42ODgtNS42OTEtMTIuNjg4LTEyLjY4OGMwLTcsNS42OTItMTIuNjkyLDEyLjY4OC0xMi42OTINCgkJYzYuOTk5LDAsMTIuNjkxLDUuNjkyLDEyLjY5MSwxMi42OTJDNDYuMzc2LDEzLjk3NSw0MC42ODQsMTkuNjY2LDMzLjY4NSwxOS42NjYgTTMzLjY4NS00LjU1Ng0KCQljLTYuMzU4LDAtMTEuNTMyLDUuMTc1LTExLjUzMiwxMS41MzVjMCw2LjM1OCw1LjE3NCwxMS41MzMsMTEuNTMyLDExLjUzM2M2LjM2LDAsMTEuNTM1LTUuMTc1LDExLjUzNS0xMS41MzMNCgkJQzQ1LjIyLDAuNjE5LDQwLjA0NS00LjU1NiwzMy42ODUtNC41NTYiLz4NCgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjAuNDEtMC4zMjdsLTYuNzQ5LDYuNzUxYy0wLjQ3Ni0xLjcxNC0wLjcyNy0zLjUyNy0wLjcyNy01LjM5NWMwLTIuNjI0LDAuNDk4LTUuMTI4LDEuNDA0LTcuNDI3DQoJCUwyMC40MS0wLjMyN3oiLz4NCgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMzEuNzE2LDEwLjk3N2wtOC41Myw4LjUyNWwtMy4yNDgtMy4xNmMtMi4yNzUtMS45NjktNC4xMTMtNC40MzgtNS4zMzMtNy4yMzZWOS4xbDcuNjE3LTcuNjE3DQoJCUwzMS43MTYsMTAuOTc3eiIvPg0KCTxwb2x5Z29uIGZpbGw9IiNGRkZGRkYiIHBvaW50cz0iNDEuNzEzLDIwLjk3NSAzMy4yMTksMjkuMjY0IDI1LjAyMSwyMS4yODYgMzMuNTI1LDEyLjc4OCAJIi8+DQoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTM4LjYwMS0xOC41MTdMMjIuMjIyLTIuMTM2bC02LjcxNy02LjcyM2MzLjQ2Ny02LjE5NiwxMC4wOTEtMTAuMzg0LDE3LjcwMy0xMC4zODQNCgkJQzM1LjA3MS0xOS4yNDMsMzYuODg1LTE4Ljk4OCwzOC42MDEtMTguNTE3Ii8+DQoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTUzLjQ3NywxLjAyOWMwLDYuMTY4LTIuNzQ1LDExLjY5MS03LjA5NywxNS4zOTVsLTIuODMsMi43NjRsLTguMjE0LTguMjE1TDUyLjI1MS01Ljk0Mw0KCQlDNTMuMDQ3LTMuNzcxLDUzLjQ3Ny0xLjQyMSw1My40NzcsMS4wMjkiLz4NCgk8cG9seWdvbiBmaWxsPSIjNzNCRTQ0IiBwb2ludHM9Ijc2LjM0MSwxMy4yMjkgNzYuMzQxLDAuMjEyIDcxLjA5NywxMy4yMjkgNzAuMzA3LDEzLjIyOSA2NS4wNDEsMC4yMTIgNjUuMDQxLDEzLjIyOSANCgkJNjMuMTE3LDEzLjIyOSA2My4xMTcsLTIuMjQ1IDY1Ljg3NywtMi4yNDUgNzAuNyw5LjY3NyA3NS41MDUsLTIuMjQ1IDc4LjI2NSwtMi4yNDUgNzguMjY1LDEzLjIyOSAJIi8+DQoJPHBhdGggZmlsbD0iIzczQkU0NCIgZD0iTTg5LjkzMywxMy4yMjl2LTEuNjdjLTAuODM0LDEuMTM1LTIuMjAzLDEuOTQ3LTMuNzgsMS45NDdjLTIuOTI0LDAtNC45ODgtMi4yMjgtNC45ODgtNS44NjkNCgkJYzAtMy41OTUsMi4wNjQtNS44OTMsNC45ODgtNS44OTNjMS41MDksMCwyLjg3NywwLjc0MiwzLjc4LDEuOTczVjIuMDIxaDEuNzQxdjExLjIwN0g4OS45MzN6IE04OS45MzMsMTAuMTY2VjUuMTA3DQoJCWMtMC42MDQtMC45NzMtMS45NzMtMS44MDktMy4zMzktMS44MDljLTIuMjc1LDAtMy42MiwxLjg1NS0zLjYyLDQuMzM4YzAsMi40ODIsMS4zNDUsNC4zMTYsMy42Miw0LjMxNg0KCQlDODcuOTYsMTEuOTUzLDg5LjMyOCwxMS4xNCw4OS45MzMsMTAuMTY2Ii8+DQoJPHBhdGggZmlsbD0iIzczQkU0NCIgZD0iTTk2Ljg5NSwxMS41MzN2NS45NjNoLTEuNzQxVjIuMDIyaDEuNzQxdjEuNjcxYzAuODExLTEuMTM3LDIuMjAxLTEuOTQ5LDMuNzgtMS45NDkNCgkJYzIuOTQ2LDAsNC45ODgsMi4yMjcsNC45ODgsNS44NjhjMCwzLjYyMS0yLjA0Miw1Ljg5Ni00Ljk4OCw1Ljg5NkM5OS4xNDMsMTMuNTA3LDk3LjgyLDEyLjc2NCw5Ni44OTUsMTEuNTMzIE0xMDMuODI5LDcuNjExDQoJCWMwLTIuNDc5LTEuMzQ2LTQuMzEzLTMuNTk1LTQuMzEzYy0xLjM2OCwwLTIuNzM5LDAuODExLTMuMzQsMS43ODV2NS4wNThjMC42MDEsMC45NzYsMS45NzIsMS44MTIsMy4zNCwxLjgxMg0KCQlDMTAyLjQ4MywxMS45NTMsMTAzLjgyOSwxMC4wOTUsMTAzLjgyOSw3LjYxMSIvPg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xMTkuODEzLDEzLjIyOWwtMS41MzEtMy44MDVoLTguMTlsLTEuNTMsMy44MDVoLTEuNTNsNi4zMzMtMTUuNDczaDEuNjQ1bDYuMzM1LDE1LjQ3M0gxMTkuODEzeg0KCQkgTTExNC4xOTgtMC44MzFsLTMuNjY0LDkuMDQ1aDcuMzA3TDExNC4xOTgtMC44MzF6Ii8+DQoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTEyMy41NjgsMTEuMDdWLTIuMjQ0aDEuMjA3djEzLjEyN2MwLDAuOTA3LDAuMzczLDEuNTMzLDEuMTYxLDEuNTMzYzAuNTMzLDAsMC45OTctMC4yNTYsMS4yNTMtMC41MzQNCgkJbDAuNDY2LDAuOTI3Yy0wLjQ0MiwwLjQyLTAuOTc3LDAuNjk4LTEuOTAzLDAuNjk4QzEyNC4yODksMTMuNTA3LDEyMy41NjgsMTIuNjAyLDEyMy41NjgsMTEuMDciLz4NCgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTI4Ljg4Myw3LjYxMWMwLTMuMjQ1LDIuMjc0LTUuODY4LDUuMzgzLTUuODY4YzMuNDA4LDAsNS4yODcsMi42OTMsNS4yODcsNS45MzlWOC4wMWgtOS4zNzMNCgkJYzAuMTE4LDIuNDMyLDEuNzQyLDQuNDUzLDQuMzg2LDQuNDUzYzEuNDE1LDAsMi43MTYtMC41MzQsMy42NjYtMS41NTVsMC42MjcsMC43ODdjLTEuMTE1LDEuMTYtMi41MjksMS44MTItNC4zODUsMS44MTINCgkJQzEzMS4yMDIsMTMuNTA3LDEyOC44ODMsMTEuMDcsMTI4Ljg4MywxMC4wOTUsMTAzLjgyOSw3LjYxMSIvPg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xNDIuNjYyLDEzLjIyOVYyLjAyMmgxLjIwN3YxLjkyN2MwLjk1LTEuMjU0LDIuMjI3LTIuMTU4LDMuNzgtMi4xNTh2MS4zMjINCgkJYy0wLjIwOS0wLjA0Ny0wLjM3LTAuMDQ3LTAuNjA0LTAuMDQ3Yy0xLjEzNSwwLTIuNjY4LDEuMDIxLTMuMTc3LDEuOTk3djguMTY2SDE0Mi42NjJ6Ii8+DQoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTE1MS4xNzgsMTEuMDk4VjMuMTE1aC0xLjg1NVYyLjA0OGgxLjg1NXYtMy4wNjFoMS4yMjl2My4wNjFoMi4yNzN2MS4wNjdoLTIuMjczdjcuNzk0DQoJCWMwLDAuOTA3LDAuMzcyLDEuNTMzLDEuMTYxLDEuNTMzYzAuNTMzLDAsMC45OTctMC4yNTUsMS4yNTEtMC41MzNsMC40NjQsMC45MjZjLTAuNDM5LDAuNDE5LTAuOTcyLDAuNjk4LTEuOTAxLDAuNjk4DQoJCUMxNTEuODk2LDEzLjUzMywxNTEuMTc4LDEyLjYyOSwxNTEuMTc4LDExLjA5OCIvPg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xNTYuNjk3LDcuNjM5YzAtMy4yNDcsMi4yNzMtNS44Nyw1LjM4My01Ljg3YzMuNDEsMCw1LjI4OSwyLjY5Myw1LjI4OSw1Ljk0djAuMzI1aC05LjM3Mw0KCQljMC4xMTcsMi40MzUsMS43NDEsNC40NTUsNC4zODYsNC40NTVjMS40MTUsMCwyLjcxNi0wLjUzNSwzLjY2Ni0xLjU1NmwwLjYyNSwwLjc4OWMtMS4xMTMsMS4xNi0yLjUyNywxLjgxMS00LjM4NiwxLjgxMQ0KCQlDMTU5LjAxOSwxMy41MzMsMTU2LjY5NywxMS4wOTgsMTU2LjY5Nyw3LjYzOSBNMTYyLjA1OCwyLjgxM2MtMi42NDYsMC0zLjk2OCwyLjMyMS00LjA2Miw0LjI3MWg4LjE0Mw0KCQlDMTY2LjExOCw1LjE4LDE2NC44NjMsMi44MTMsMTYyLjA1OCwyLjgxMyIvPg0KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xNzAuNDc5LDEzLjI1NFYyLjA0OGgxLjIwNXYxLjkyNWMwLjk1Mi0xLjI1MiwyLjIyOS0yLjE1OCwzLjc4Mi0yLjE1OHYxLjMyMw0KCQljLTAuMjA5LTAuMDQ1LTAuMzc0LTAuMDQ1LTAuNjA0LTAuMDQ1Yy0xLjEzOSwwLTIuNjY5LDEuMDE5LTMuMTc5LDEuOTk1djguMTY2SDE3MC40Nzl6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==");
}

h1.hero{font-size:26px;line-height:1.25;font-weight:800;margin:6px 0 10px;color:var(--white);}
p.sub{color:var(--muted);font-size:14.5px;line-height:1.5;margin:0 0 20px;}

.field-label{font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 0 6px;display:block;}
.uk-input, .uk-select, select.uk-select{
  background:#0d2c40 !important;
  border:1.5px solid #204a63 !important;
  color:var(--white) !important;
  border-radius:12px !important;
  height:44px;
  width:100%;
  padding:0 14px;
  font-size:16px;
}
.uk-input::placeholder{color:#6f8ba0;}
.uk-input:focus, .uk-select:focus{
  outline:none;
  border-color:var(--lime) !important;
  box-shadow:0 0 0 3px rgba(159,216,87,.25) !important;
}
.uk-select option{color:var(--white);background:#0d2c40;}

.field-error{color:var(--danger);font-size:12px;margin:6px 0 0;}

.btn-primary{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;height:50px;border-radius:14px;border:none;
  background:var(--lime);color:#052400;font-weight:800;font-size:15.5px;
  letter-spacing:.02em;cursor:pointer;margin-top:16px;
}
.btn-primary:hover{filter:brightness(1.05);}
.btn-primary:disabled, .btn-primary[aria-disabled="true"]{opacity:.4;cursor:not-allowed;}
.btn-secondary{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;height:50px;border-radius:14px;
  background:transparent;color:var(--white);font-weight:700;font-size:15px;
  border:1.5px solid #2c5972;cursor:pointer;
}
.btn-secondary:disabled, .btn-secondary[aria-disabled="true"]{opacity:.4;cursor:not-allowed;}
.btn-ghost{
  background:none;border:none;color:var(--lime);font-weight:700;font-size:14px;
  cursor:pointer;padding:8px 0;text-align:left;
}
.btn-row{display:flex;gap:10px;margin-top:12px;}
a{color:var(--lime);}

.banner{
  display:flex;gap:10px;background:var(--danger-bg);border:1px solid #5c2323;
  border-radius:12px;padding:12px 14px;margin:0 0 16px;font-size:13.5px;color:var(--white);
}
.banner.warn{background:#3a2c10;border-color:#5c4a1f;}
.banner.info{background:#0d3349;border:1px solid #2f7a12;}
.banner.info .banner-icon{color:var(--lime);}
.banner-icon{flex:0 0 auto;margin-top:1px;}

/* Push-permission prompt, ported from the mockup's home screen: while undecided, everything
   else on the page is muted so the prompt reads as the one thing needing attention; restores
   to normal brightness the instant the person responds either way (button.body loses
   .push-pending — see home.php's inline script). */
.dim-when-pending{transition:opacity .3s ease, filter .3s ease;}
body.push-pending .dim-when-pending{opacity:.4;filter:saturate(.4);}
body.push-pending #push-banner{
  box-shadow:0 0 0 1px rgba(159,216,87,.5), 0 6px 24px rgba(159,216,87,.25);
  transition:box-shadow .3s ease;
}

/* Shared back/home nav shown at the top of every screen except the entry home screen and
   the logged-in portal landing (see $hideTopNav in _head.php / _topnav.php). */
.topnav{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px;}
.topnav-back, .topnav-home{
  color:var(--muted);font-size:13.5px;font-weight:700;text-decoration:none;
  padding:4px 0;
}
.topnav-back:hover, .topnav-home:hover{color:var(--lime);}

.map-wrap{height:280px;border-radius:14px;overflow:hidden;margin:10px 0;}
#map{height:100%;width:100%;}

/* Official MapAlerter pin icon used as the draggable marker on the map-confirm screen,
   instead of Leaflet's default blue teardrop — see map.php's inline <symbol id="brand-pin">
   and the L.divIcon() that references it. */
.ma-pin-icon{background:none;border:none;filter:drop-shadow(0 3px 4px rgba(0,0,0,.45));cursor:grab;}
.ma-pin-icon:active{cursor:grabbing;}

.avatar-badge{
  width:44px;height:44px;border-radius:50%;background:var(--white);
  display:flex;align-items:center;justify-content:center;
}
