/* Open Sky styles.
   Shares Joie De Vivre's type (Syne + Noto Sans), sage borders and ochre, then goes outdoors.
   Three themes:
     light  "Field Map"    daylight topo paper, readable in direct sun
     dark   "Night Ops"    stealth field map, forest black, lichen + ochre
     saver  "Battery saver" pure black for OLED, dim text, no textures, effects or fills
   The page follows the phone's light/dark setting unless <html data-theme> says otherwise.
   JS refers to: --sun --info --warn --green2 --card --map --muted (keep these names). */

/* ---------- Field Map (light, default) ---------- */
:root {
  --font-h: 'Syne', system-ui, sans-serif;
  --font-b: 'Noto Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --font-m: 'IBM Plex Mono', ui-monospace, 'Cascadia Mono', Menlo, monospace;
  --radius: 6px; --rs: 4px; --rb: 3px; --tabh: 64px;

  --bg: #EFEADC; --card: #FBF8F0; --ink: #1B2A22; --muted: #5D6A60; --line: rgba(27,42,34,.14);
  --green2: #2F5D45; --sun: #B9812C; --warn: #B4532A; --info: #2D5B7A; --ok: #3E7A57;
  --a-tint: rgba(47,93,69,.1); --s-tint: rgba(185,129,44,.14); --w-tint: rgba(180,83,42,.1); --i-tint: rgba(45,91,122,.1); --o-tint: rgba(62,122,87,.12);
  --a-edge: transparent; --s-edge: transparent; --w-edge: transparent; --i-edge: transparent;
  --top-bg: #16241C; --top-ink: #E9BC71; --top-muted: rgba(245,242,234,.62); --top-line: rgba(0,0,0,.2); --mark: #E9BC71;
  --hero-bg: var(--card); --hero-line: var(--line); --hero-top: 4px solid var(--green2);
  --pri-bg: #16241C; --pri-ink: #E9BC71; --pri-line: #16241C; --btn-line: rgba(27,42,34,.25);
  --track: rgba(27,42,34,.1); --stat-bg: #F3EFE3; --input-bg: #FFFDF7;
  --h-tt: none; --h-ls: .01em; --label: #5D6A60; --h2-pre: ''; --h2-pre-c: transparent; --h2-line: rgba(156,127,82,.35);
  --map: #EDE7D3; --grid: rgba(45,91,122,.16); --contour: rgba(156,108,52,.36); --route: #B4532A; --casing: #FBF8F0; --tick: rgba(45,91,122,.85); --maplbl: #1B2A22;
  --tab-bg: rgba(251,248,240,.97); --tab-muted: #7D877F; --tab-on: #2F5D45;
  --ridge: rgba(27,42,34,.26); --mount-bg: linear-gradient(180deg,#22332A,#16241C); --mount-edge: #0E1813; --mount-hi: #6F7F74; --mount-ink: #E9BC71; --mount-muted: rgba(245,242,234,.5); --ring-edge: rgba(27,42,34,.28); --water: #C6D8DA; --land: #EDE7D3; --coast: #8FAAB0; --lake-line: #8FAAB0; --river: #86A9B3; --road: #C9AE7E; --border-line: #8C6E4A; --town: #3E4A42;
  --tex: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 800' preserveAspectRatio='xMidYMid slice'%3E%3Cpath d='M366 150L366 154L363 157L360 159L357 161L356 163L354 166L352 168L349 169L346 169L343 168L341 168L338 169L335 172L330 174L326 174L323 171L321 168L320 164L320 161L320 157L321 154L322 151L322 149L322 146L320 143L320 139L321 136L323 134L326 132L329 131L331 128L334 125L337 124L341 124L344 127L346 131L348 134L349 136L352 137L355 138L358 139L360 141L363 143L365 146ZM394 150L391 157L386 163L380 168L375 172L372 177L369 182L365 187L358 188L352 186L346 185L341 186L336 189L329 194L321 197L313 196L307 192L303 186L300 179L300 171L301 164L303 158L305 152L305 148L303 142L300 135L299 128L302 122L307 118L313 115L318 111L322 106L328 100L334 97L342 99L348 105L352 112L356 118L359 122L364 124L369 126L374 128L380 132L386 137L392 143ZM421 150L417 161L408 169L399 176L392 183L389 191L384 199L377 205L367 206L357 203L349 202L342 204L334 210L323 217L312 220L300 218L291 213L284 204L280 194L279 183L281 171L286 161L289 154L288 146L283 138L279 128L278 117L284 109L292 103L300 99L306 92L313 82L321 74L332 71L343 75L352 84L358 94L364 101L369 106L376 110L383 114L391 118L400 123L410 130L419 139ZM448 150L441 164L429 175L417 184L411 194L406 206L400 216L389 223L376 223L363 220L352 219L343 224L331 232L318 239L303 242L288 240L275 233L265 223L258 210L257 194L263 178L270 165L273 155L270 145L263 134L257 120L258 106L266 96L277 89L287 82L294 71L303 58L315 48L329 46L343 52L355 63L365 74L372 83L380 91L387 98L395 103L406 109L420 114L435 123L446 135ZM475 150L464 167L449 181L437 193L430 206L424 221L415 233L400 240L384 239L368 237L356 238L343 244L329 254L312 261L294 263L276 261L259 254L244 243L236 226L237 205L245 185L254 168L257 156L251 144L241 129L235 112L239 96L249 84L262 75L273 64L282 49L293 34L308 23L327 22L344 29L359 41L371 54L381 65L390 76L398 85L408 93L422 99L441 105L461 115L474 131ZM501 150L486 171L469 187L457 202L450 219L443 236L430 250L411 255L391 255L374 254L359 258L344 266L327 275L307 281L286 284L264 282L242 276L223 263L214 242L217 215L228 191L239 172L240 157L231 142L219 124L214 104L220 86L233 72L247 60L258 45L269 27L283 10L302 -1L324 -1L345 7L363 19L378 32L391 46L400 61L408 74L419 83L438 89L463 95L488 108L502 127ZM525 150L508 174L490 193L479 212L471 232L461 251L443 265L421 270L399 271L380 273L363 279L345 287L325 295L302 300L278 303L251 304L224 299L202 284L192 257L198 225L212 196L223 175L222 158L210 141L198 120L194 97L203 77L217 61L231 45L243 26L256 4L274 -14L297 -24L322 -24L346 -16L367 -5L386 9L400 27L409 47L418 64L431 74L455 78L486 85L515 100L529 123ZM548 150L530 177L513 200L502 222L492 245L478 266L456 279L431 285L407 288L386 293L366 300L346 308L323 314L298 319L270 324L238 327L205 323L180 304L172 272L181 235L197 202L207 178L202 160L188 139L176 115L176 90L186 68L201 49L215 29L227 5L243 -18L265 -37L291 -45L319 -46L347 -40L372 -30L393 -14L409 10L418 35L426 54L443 63L473 67L510 74L542 92L555 120ZM570 150L552 180L537 206L525 233L513 258L494 279L468 292L441 300L416 306L393 314L370 322L346 328L321 331L294 336L261 345L223 352L186 348L159 325L152 286L164 243L181 208L189 182L181 161L166 138L156 111L159 84L170 60L184 37L197 11L211 -16L230 -40L256 -58L286 -66L317 -68L348 -66L376 -57L401 -37L417 -7L425 24L435 44L456 52L493 55L535 63L567 85L579 116ZM86 620L86 624L84 627L81 629L77 631L74 632L73 634L71 637L70 640L68 644L65 646L61 648L57 649L53 648L50 646L48 641L47 637L46 634L44 632L41 630L38 628L37 625L37 622L38 618L39 615L38 612L37 608L37 603L39 599L42 598L47 597L51 598L55 598L58 600L61 601L63 602L66 602L70 600L74 599L78 600L82 602L83 606L83 610L83 613L85 617ZM113 620L113 627L108 634L101 638L94 641L89 644L86 649L83 654L80 660L75 666L69 672L62 677L54 679L46 677L39 671L36 662L34 653L31 648L27 644L21 641L16 636L14 630L16 623L17 617L17 611L15 603L13 595L14 586L18 580L25 576L34 574L42 574L49 576L56 579L61 582L66 584L72 583L79 580L89 578L97 579L103 584L105 592L106 600L107 607L110 613ZM140 620L138 631L131 640L121 647L111 652L104 657L100 664L95 671L89 680L82 688L74 698L63 706L51 710L38 707L29 696L24 682L21 669L17 662L9 657L0 652L-6 644L-7 634L-5 625L-4 616L-6 606L-9 595L-11 582L-9 570L-2 560L9 554L20 551L32 550L43 553L54 559L62 565L69 568L78 565L90 559L103 556L116 558L124 567L127 578L128 590L131 600L136 609ZM167 620L163 634L153 647L140 656L129 663L121 671L113 679L106 688L98 698L89 710L78 724L64 736L47 742L31 735L20 719L14 700L9 685L2 676L-9 670L-21 663L-27 652L-28 639L-26 626L-26 614L-29 601L-34 586L-35 569L-31 554L-21 542L-8 532L6 526L22 525L38 530L52 540L62 548L72 551L84 546L100 537L119 533L134 538L143 550L148 565L151 580L157 592L163 605ZM193 620L186 638L174 653L160 665L148 675L138 685L127 694L116 704L106 715L96 731L83 751L65 768L44 773L24 763L11 742L3 719L-4 702L-15 692L-28 684L-41 674L-47 659L-47 643L-47 627L-49 612L-54 596L-58 577L-58 557L-51 539L-40 523L-26 510L-9 501L11 500L32 508L50 522L63 533L75 534L91 525L111 515L134 511L152 518L163 534L168 552L174 569L183 585L191 602ZM218 620L209 641L195 659L182 674L168 688L155 699L140 709L126 718L115 732L103 753L88 779L66 800L41 805L18 790L2 764L-8 738L-18 720L-32 708L-47 698L-60 684L-66 666L-67 647L-68 629L-73 611L-79 590L-82 568L-79 546L-71 525L-60 504L-44 486L-24 475L1 475L27 487L48 505L64 517L78 516L98 504L123 491L148 489L169 499L181 518L190 539L199 558L210 577L218 598ZM241 620L231 644L218 665L204 684L189 701L171 713L152 722L135 732L123 749L111 777L93 809L67 832L37 835L11 816L-7 785L-19 757L-32 738L-49 725L-66 712L-78 693L-84 672L-87 651L-91 631L-99 609L-104 585L-105 560L-100 535L-91 510L-80 485L-64 462L-39 448L-9 450L22 467L46 489L64 501L82 497L105 481L134 468L162 468L184 482L200 503L212 525L225 546L238 569L244 594ZM263 620L253 647L241 672L228 695L210 714L187 727L163 735L144 745L132 767L119 802L99 840L69 864L34 863L5 840L-16 807L-31 778L-48 758L-67 742L-83 724L-95 702L-101 679L-107 656L-116 632L-125 607L-129 580L-126 552L-119 525L-111 495L-101 464L-84 436L-55 421L-18 427L17 449L45 473L65 483L85 476L112 458L145 446L175 449L200 465L219 487L236 510L253 534L265 561L269 591ZM285 620L275 650L266 679L253 706L231 727L202 739L173 746L153 758L141 786L128 828L104 871L70 895L32 890L-1 864L-25 830L-44 801L-64 779L-84 759L-100 736L-110 711L-119 685L-130 660L-142 634L-151 605L-152 575L-146 545L-138 515L-133 480L-124 442L-104 410L-70 396L-27 405L13 432L43 457L65 464L89 453L120 436L155 426L187 431L215 448L239 470L261 494L280 522L291 554L292 587ZM306 620L300 654L293 687L278 717L250 739L215 750L183 756L163 772L151 807L137 856L110 901L71 923L29 916L-7 887L-34 854L-58 825L-80 800L-100 774L-114 746L-125 719L-138 692L-154 666L-169 636L-176 603L-173 571L-164 538L-158 504L-155 464L-148 419L-124 384L-84 371L-35 386L9 415L41 439L66 443L93 430L127 414L164 407L199 414L231 430L260 452L287 478L307 510L316 547L313 584Z' fill='none' stroke='%239C7F52' stroke-width='1' stroke-opacity='.2'/%3E%3C/svg%3E");
  --gridbg: none;
  color-scheme: light;
}

/* ---------- Night Ops (dark) ---------- */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]):not([data-theme="saver"]) {
    --bg: #0A110E; --card: #101A15; --ink: #F5F2EA; --muted: rgba(245,242,234,.58); --line: rgba(185,200,181,.12);
    --green2: #A8C686; --sun: #E9BC71; --warn: #E07A55; --info: #8DB7C7; --ok: #A8C686;
    --a-tint: rgba(168,198,134,.08); --s-tint: rgba(233,188,113,.08); --w-tint: rgba(224,122,85,.09); --i-tint: rgba(141,183,199,.08); --o-tint: rgba(168,198,134,.08);
    --a-edge: rgba(168,198,134,.35); --s-edge: rgba(233,188,113,.4); --w-edge: rgba(224,122,85,.4); --i-edge: rgba(141,183,199,.35);
    --top-bg: rgba(10,17,14,.94); --top-ink: #F5F2EA; --top-muted: rgba(245,242,234,.5); --top-line: rgba(185,200,181,.12); --mark: #E9BC71;
    --hero-bg: linear-gradient(160deg,#13221A 0%,#0E1813 100%); --hero-line: rgba(168,198,134,.32); --hero-top: 1px solid rgba(168,198,134,.32);
    --pri-bg: #A8C686; --pri-ink: #0A110E; --pri-line: #A8C686; --btn-line: rgba(185,200,181,.25);
    --track: rgba(185,200,181,.1); --stat-bg: rgba(0,0,0,.25); --input-bg: #0C1511;
    --h-tt: uppercase; --h-ls: .06em; --label: rgba(245,242,234,.5); --h2-pre: '//'; --h2-pre-c: #A8C686; --h2-line: rgba(185,200,181,.1);
    --map: #0B1511; --grid: rgba(168,198,134,.09); --contour: rgba(185,200,181,.16); --route: #A8C686; --casing: transparent; --tick: rgba(168,198,134,.6); --maplbl: rgba(245,242,234,.75);
    --tab-bg: rgba(8,14,11,.95); --tab-muted: rgba(245,242,234,.42); --tab-on: #A8C686;
    --ridge: rgba(185,200,181,.30); --mount-bg: linear-gradient(180deg,#1C2A22,#111B16); --mount-edge: #050907; --mount-hi: #8A978C; --mount-ink: #F5F2EA; --mount-muted: rgba(245,242,234,.42); --ring-edge: rgba(0,0,0,.75); --water: #060A08; --land: #0F1914; --coast: rgba(141,183,199,.38); --lake-line: rgba(141,183,199,.32); --river: rgba(141,183,199,.26); --road: rgba(233,188,113,.28); --border-line: rgba(185,200,181,.4); --town: rgba(245,242,234,.6);
    --tex: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 800' preserveAspectRatio='xMidYMid slice'%3E%3Cpath d='M366 150L366 154L363 157L360 159L357 161L356 163L354 166L352 168L349 169L346 169L343 168L341 168L338 169L335 172L330 174L326 174L323 171L321 168L320 164L320 161L320 157L321 154L322 151L322 149L322 146L320 143L320 139L321 136L323 134L326 132L329 131L331 128L334 125L337 124L341 124L344 127L346 131L348 134L349 136L352 137L355 138L358 139L360 141L363 143L365 146ZM394 150L391 157L386 163L380 168L375 172L372 177L369 182L365 187L358 188L352 186L346 185L341 186L336 189L329 194L321 197L313 196L307 192L303 186L300 179L300 171L301 164L303 158L305 152L305 148L303 142L300 135L299 128L302 122L307 118L313 115L318 111L322 106L328 100L334 97L342 99L348 105L352 112L356 118L359 122L364 124L369 126L374 128L380 132L386 137L392 143ZM421 150L417 161L408 169L399 176L392 183L389 191L384 199L377 205L367 206L357 203L349 202L342 204L334 210L323 217L312 220L300 218L291 213L284 204L280 194L279 183L281 171L286 161L289 154L288 146L283 138L279 128L278 117L284 109L292 103L300 99L306 92L313 82L321 74L332 71L343 75L352 84L358 94L364 101L369 106L376 110L383 114L391 118L400 123L410 130L419 139ZM448 150L441 164L429 175L417 184L411 194L406 206L400 216L389 223L376 223L363 220L352 219L343 224L331 232L318 239L303 242L288 240L275 233L265 223L258 210L257 194L263 178L270 165L273 155L270 145L263 134L257 120L258 106L266 96L277 89L287 82L294 71L303 58L315 48L329 46L343 52L355 63L365 74L372 83L380 91L387 98L395 103L406 109L420 114L435 123L446 135ZM475 150L464 167L449 181L437 193L430 206L424 221L415 233L400 240L384 239L368 237L356 238L343 244L329 254L312 261L294 263L276 261L259 254L244 243L236 226L237 205L245 185L254 168L257 156L251 144L241 129L235 112L239 96L249 84L262 75L273 64L282 49L293 34L308 23L327 22L344 29L359 41L371 54L381 65L390 76L398 85L408 93L422 99L441 105L461 115L474 131ZM501 150L486 171L469 187L457 202L450 219L443 236L430 250L411 255L391 255L374 254L359 258L344 266L327 275L307 281L286 284L264 282L242 276L223 263L214 242L217 215L228 191L239 172L240 157L231 142L219 124L214 104L220 86L233 72L247 60L258 45L269 27L283 10L302 -1L324 -1L345 7L363 19L378 32L391 46L400 61L408 74L419 83L438 89L463 95L488 108L502 127ZM525 150L508 174L490 193L479 212L471 232L461 251L443 265L421 270L399 271L380 273L363 279L345 287L325 295L302 300L278 303L251 304L224 299L202 284L192 257L198 225L212 196L223 175L222 158L210 141L198 120L194 97L203 77L217 61L231 45L243 26L256 4L274 -14L297 -24L322 -24L346 -16L367 -5L386 9L400 27L409 47L418 64L431 74L455 78L486 85L515 100L529 123ZM548 150L530 177L513 200L502 222L492 245L478 266L456 279L431 285L407 288L386 293L366 300L346 308L323 314L298 319L270 324L238 327L205 323L180 304L172 272L181 235L197 202L207 178L202 160L188 139L176 115L176 90L186 68L201 49L215 29L227 5L243 -18L265 -37L291 -45L319 -46L347 -40L372 -30L393 -14L409 10L418 35L426 54L443 63L473 67L510 74L542 92L555 120ZM570 150L552 180L537 206L525 233L513 258L494 279L468 292L441 300L416 306L393 314L370 322L346 328L321 331L294 336L261 345L223 352L186 348L159 325L152 286L164 243L181 208L189 182L181 161L166 138L156 111L159 84L170 60L184 37L197 11L211 -16L230 -40L256 -58L286 -66L317 -68L348 -66L376 -57L401 -37L417 -7L425 24L435 44L456 52L493 55L535 63L567 85L579 116ZM86 620L86 624L84 627L81 629L77 631L74 632L73 634L71 637L70 640L68 644L65 646L61 648L57 649L53 648L50 646L48 641L47 637L46 634L44 632L41 630L38 628L37 625L37 622L38 618L39 615L38 612L37 608L37 603L39 599L42 598L47 597L51 598L55 598L58 600L61 601L63 602L66 602L70 600L74 599L78 600L82 602L83 606L83 610L83 613L85 617ZM113 620L113 627L108 634L101 638L94 641L89 644L86 649L83 654L80 660L75 666L69 672L62 677L54 679L46 677L39 671L36 662L34 653L31 648L27 644L21 641L16 636L14 630L16 623L17 617L17 611L15 603L13 595L14 586L18 580L25 576L34 574L42 574L49 576L56 579L61 582L66 584L72 583L79 580L89 578L97 579L103 584L105 592L106 600L107 607L110 613ZM140 620L138 631L131 640L121 647L111 652L104 657L100 664L95 671L89 680L82 688L74 698L63 706L51 710L38 707L29 696L24 682L21 669L17 662L9 657L0 652L-6 644L-7 634L-5 625L-4 616L-6 606L-9 595L-11 582L-9 570L-2 560L9 554L20 551L32 550L43 553L54 559L62 565L69 568L78 565L90 559L103 556L116 558L124 567L127 578L128 590L131 600L136 609ZM167 620L163 634L153 647L140 656L129 663L121 671L113 679L106 688L98 698L89 710L78 724L64 736L47 742L31 735L20 719L14 700L9 685L2 676L-9 670L-21 663L-27 652L-28 639L-26 626L-26 614L-29 601L-34 586L-35 569L-31 554L-21 542L-8 532L6 526L22 525L38 530L52 540L62 548L72 551L84 546L100 537L119 533L134 538L143 550L148 565L151 580L157 592L163 605ZM193 620L186 638L174 653L160 665L148 675L138 685L127 694L116 704L106 715L96 731L83 751L65 768L44 773L24 763L11 742L3 719L-4 702L-15 692L-28 684L-41 674L-47 659L-47 643L-47 627L-49 612L-54 596L-58 577L-58 557L-51 539L-40 523L-26 510L-9 501L11 500L32 508L50 522L63 533L75 534L91 525L111 515L134 511L152 518L163 534L168 552L174 569L183 585L191 602ZM218 620L209 641L195 659L182 674L168 688L155 699L140 709L126 718L115 732L103 753L88 779L66 800L41 805L18 790L2 764L-8 738L-18 720L-32 708L-47 698L-60 684L-66 666L-67 647L-68 629L-73 611L-79 590L-82 568L-79 546L-71 525L-60 504L-44 486L-24 475L1 475L27 487L48 505L64 517L78 516L98 504L123 491L148 489L169 499L181 518L190 539L199 558L210 577L218 598ZM241 620L231 644L218 665L204 684L189 701L171 713L152 722L135 732L123 749L111 777L93 809L67 832L37 835L11 816L-7 785L-19 757L-32 738L-49 725L-66 712L-78 693L-84 672L-87 651L-91 631L-99 609L-104 585L-105 560L-100 535L-91 510L-80 485L-64 462L-39 448L-9 450L22 467L46 489L64 501L82 497L105 481L134 468L162 468L184 482L200 503L212 525L225 546L238 569L244 594ZM263 620L253 647L241 672L228 695L210 714L187 727L163 735L144 745L132 767L119 802L99 840L69 864L34 863L5 840L-16 807L-31 778L-48 758L-67 742L-83 724L-95 702L-101 679L-107 656L-116 632L-125 607L-129 580L-126 552L-119 525L-111 495L-101 464L-84 436L-55 421L-18 427L17 449L45 473L65 483L85 476L112 458L145 446L175 449L200 465L219 487L236 510L253 534L265 561L269 591ZM285 620L275 650L266 679L253 706L231 727L202 739L173 746L153 758L141 786L128 828L104 871L70 895L32 890L-1 864L-25 830L-44 801L-64 779L-84 759L-100 736L-110 711L-119 685L-130 660L-142 634L-151 605L-152 575L-146 545L-138 515L-133 480L-124 442L-104 410L-70 396L-27 405L13 432L43 457L65 464L89 453L120 436L155 426L187 431L215 448L239 470L261 494L280 522L291 554L292 587ZM306 620L300 654L293 687L278 717L250 739L215 750L183 756L163 772L151 807L137 856L110 901L71 923L29 916L-7 887L-34 854L-58 825L-80 800L-100 774L-114 746L-125 719L-138 692L-154 666L-169 636L-176 603L-173 571L-164 538L-158 504L-155 464L-148 419L-124 384L-84 371L-35 386L9 415L41 439L66 443L93 430L127 414L164 407L199 414L231 430L260 452L287 478L307 510L316 547L313 584Z' fill='none' stroke='%23B9C8B5' stroke-width='1' stroke-opacity='.07'/%3E%3C/svg%3E");
    --gridbg: linear-gradient(rgba(185,200,181,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(185,200,181,.025) 1px, transparent 1px);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #0A110E; --card: #101A15; --ink: #F5F2EA; --muted: rgba(245,242,234,.58); --line: rgba(185,200,181,.12);
  --green2: #A8C686; --sun: #E9BC71; --warn: #E07A55; --info: #8DB7C7; --ok: #A8C686;
  --a-tint: rgba(168,198,134,.08); --s-tint: rgba(233,188,113,.08); --w-tint: rgba(224,122,85,.09); --i-tint: rgba(141,183,199,.08); --o-tint: rgba(168,198,134,.08);
  --a-edge: rgba(168,198,134,.35); --s-edge: rgba(233,188,113,.4); --w-edge: rgba(224,122,85,.4); --i-edge: rgba(141,183,199,.35);
  --top-bg: rgba(10,17,14,.94); --top-ink: #F5F2EA; --top-muted: rgba(245,242,234,.5); --top-line: rgba(185,200,181,.12); --mark: #E9BC71;
  --hero-bg: linear-gradient(160deg,#13221A 0%,#0E1813 100%); --hero-line: rgba(168,198,134,.32); --hero-top: 1px solid rgba(168,198,134,.32);
  --pri-bg: #A8C686; --pri-ink: #0A110E; --pri-line: #A8C686; --btn-line: rgba(185,200,181,.25);
  --track: rgba(185,200,181,.1); --stat-bg: rgba(0,0,0,.25); --input-bg: #0C1511;
  --h-tt: uppercase; --h-ls: .06em; --label: rgba(245,242,234,.5); --h2-pre: '//'; --h2-pre-c: #A8C686; --h2-line: rgba(185,200,181,.1);
  --map: #0B1511; --grid: rgba(168,198,134,.09); --contour: rgba(185,200,181,.16); --route: #A8C686; --casing: transparent; --tick: rgba(168,198,134,.6); --maplbl: rgba(245,242,234,.75);
  --tab-bg: rgba(8,14,11,.95); --tab-muted: rgba(245,242,234,.42); --tab-on: #A8C686;
    --ridge: rgba(185,200,181,.30); --mount-bg: linear-gradient(180deg,#1C2A22,#111B16); --mount-edge: #050907; --mount-hi: #8A978C; --mount-ink: #F5F2EA; --mount-muted: rgba(245,242,234,.42); --ring-edge: rgba(0,0,0,.75); --water: #060A08; --land: #0F1914; --coast: rgba(141,183,199,.38); --lake-line: rgba(141,183,199,.32); --river: rgba(141,183,199,.26); --road: rgba(233,188,113,.28); --border-line: rgba(185,200,181,.4); --town: rgba(245,242,234,.6);
  --tex: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 800' preserveAspectRatio='xMidYMid slice'%3E%3Cpath d='M366 150L366 154L363 157L360 159L357 161L356 163L354 166L352 168L349 169L346 169L343 168L341 168L338 169L335 172L330 174L326 174L323 171L321 168L320 164L320 161L320 157L321 154L322 151L322 149L322 146L320 143L320 139L321 136L323 134L326 132L329 131L331 128L334 125L337 124L341 124L344 127L346 131L348 134L349 136L352 137L355 138L358 139L360 141L363 143L365 146ZM394 150L391 157L386 163L380 168L375 172L372 177L369 182L365 187L358 188L352 186L346 185L341 186L336 189L329 194L321 197L313 196L307 192L303 186L300 179L300 171L301 164L303 158L305 152L305 148L303 142L300 135L299 128L302 122L307 118L313 115L318 111L322 106L328 100L334 97L342 99L348 105L352 112L356 118L359 122L364 124L369 126L374 128L380 132L386 137L392 143ZM421 150L417 161L408 169L399 176L392 183L389 191L384 199L377 205L367 206L357 203L349 202L342 204L334 210L323 217L312 220L300 218L291 213L284 204L280 194L279 183L281 171L286 161L289 154L288 146L283 138L279 128L278 117L284 109L292 103L300 99L306 92L313 82L321 74L332 71L343 75L352 84L358 94L364 101L369 106L376 110L383 114L391 118L400 123L410 130L419 139ZM448 150L441 164L429 175L417 184L411 194L406 206L400 216L389 223L376 223L363 220L352 219L343 224L331 232L318 239L303 242L288 240L275 233L265 223L258 210L257 194L263 178L270 165L273 155L270 145L263 134L257 120L258 106L266 96L277 89L287 82L294 71L303 58L315 48L329 46L343 52L355 63L365 74L372 83L380 91L387 98L395 103L406 109L420 114L435 123L446 135ZM475 150L464 167L449 181L437 193L430 206L424 221L415 233L400 240L384 239L368 237L356 238L343 244L329 254L312 261L294 263L276 261L259 254L244 243L236 226L237 205L245 185L254 168L257 156L251 144L241 129L235 112L239 96L249 84L262 75L273 64L282 49L293 34L308 23L327 22L344 29L359 41L371 54L381 65L390 76L398 85L408 93L422 99L441 105L461 115L474 131ZM501 150L486 171L469 187L457 202L450 219L443 236L430 250L411 255L391 255L374 254L359 258L344 266L327 275L307 281L286 284L264 282L242 276L223 263L214 242L217 215L228 191L239 172L240 157L231 142L219 124L214 104L220 86L233 72L247 60L258 45L269 27L283 10L302 -1L324 -1L345 7L363 19L378 32L391 46L400 61L408 74L419 83L438 89L463 95L488 108L502 127ZM525 150L508 174L490 193L479 212L471 232L461 251L443 265L421 270L399 271L380 273L363 279L345 287L325 295L302 300L278 303L251 304L224 299L202 284L192 257L198 225L212 196L223 175L222 158L210 141L198 120L194 97L203 77L217 61L231 45L243 26L256 4L274 -14L297 -24L322 -24L346 -16L367 -5L386 9L400 27L409 47L418 64L431 74L455 78L486 85L515 100L529 123ZM548 150L530 177L513 200L502 222L492 245L478 266L456 279L431 285L407 288L386 293L366 300L346 308L323 314L298 319L270 324L238 327L205 323L180 304L172 272L181 235L197 202L207 178L202 160L188 139L176 115L176 90L186 68L201 49L215 29L227 5L243 -18L265 -37L291 -45L319 -46L347 -40L372 -30L393 -14L409 10L418 35L426 54L443 63L473 67L510 74L542 92L555 120ZM570 150L552 180L537 206L525 233L513 258L494 279L468 292L441 300L416 306L393 314L370 322L346 328L321 331L294 336L261 345L223 352L186 348L159 325L152 286L164 243L181 208L189 182L181 161L166 138L156 111L159 84L170 60L184 37L197 11L211 -16L230 -40L256 -58L286 -66L317 -68L348 -66L376 -57L401 -37L417 -7L425 24L435 44L456 52L493 55L535 63L567 85L579 116ZM86 620L86 624L84 627L81 629L77 631L74 632L73 634L71 637L70 640L68 644L65 646L61 648L57 649L53 648L50 646L48 641L47 637L46 634L44 632L41 630L38 628L37 625L37 622L38 618L39 615L38 612L37 608L37 603L39 599L42 598L47 597L51 598L55 598L58 600L61 601L63 602L66 602L70 600L74 599L78 600L82 602L83 606L83 610L83 613L85 617ZM113 620L113 627L108 634L101 638L94 641L89 644L86 649L83 654L80 660L75 666L69 672L62 677L54 679L46 677L39 671L36 662L34 653L31 648L27 644L21 641L16 636L14 630L16 623L17 617L17 611L15 603L13 595L14 586L18 580L25 576L34 574L42 574L49 576L56 579L61 582L66 584L72 583L79 580L89 578L97 579L103 584L105 592L106 600L107 607L110 613ZM140 620L138 631L131 640L121 647L111 652L104 657L100 664L95 671L89 680L82 688L74 698L63 706L51 710L38 707L29 696L24 682L21 669L17 662L9 657L0 652L-6 644L-7 634L-5 625L-4 616L-6 606L-9 595L-11 582L-9 570L-2 560L9 554L20 551L32 550L43 553L54 559L62 565L69 568L78 565L90 559L103 556L116 558L124 567L127 578L128 590L131 600L136 609ZM167 620L163 634L153 647L140 656L129 663L121 671L113 679L106 688L98 698L89 710L78 724L64 736L47 742L31 735L20 719L14 700L9 685L2 676L-9 670L-21 663L-27 652L-28 639L-26 626L-26 614L-29 601L-34 586L-35 569L-31 554L-21 542L-8 532L6 526L22 525L38 530L52 540L62 548L72 551L84 546L100 537L119 533L134 538L143 550L148 565L151 580L157 592L163 605ZM193 620L186 638L174 653L160 665L148 675L138 685L127 694L116 704L106 715L96 731L83 751L65 768L44 773L24 763L11 742L3 719L-4 702L-15 692L-28 684L-41 674L-47 659L-47 643L-47 627L-49 612L-54 596L-58 577L-58 557L-51 539L-40 523L-26 510L-9 501L11 500L32 508L50 522L63 533L75 534L91 525L111 515L134 511L152 518L163 534L168 552L174 569L183 585L191 602ZM218 620L209 641L195 659L182 674L168 688L155 699L140 709L126 718L115 732L103 753L88 779L66 800L41 805L18 790L2 764L-8 738L-18 720L-32 708L-47 698L-60 684L-66 666L-67 647L-68 629L-73 611L-79 590L-82 568L-79 546L-71 525L-60 504L-44 486L-24 475L1 475L27 487L48 505L64 517L78 516L98 504L123 491L148 489L169 499L181 518L190 539L199 558L210 577L218 598ZM241 620L231 644L218 665L204 684L189 701L171 713L152 722L135 732L123 749L111 777L93 809L67 832L37 835L11 816L-7 785L-19 757L-32 738L-49 725L-66 712L-78 693L-84 672L-87 651L-91 631L-99 609L-104 585L-105 560L-100 535L-91 510L-80 485L-64 462L-39 448L-9 450L22 467L46 489L64 501L82 497L105 481L134 468L162 468L184 482L200 503L212 525L225 546L238 569L244 594ZM263 620L253 647L241 672L228 695L210 714L187 727L163 735L144 745L132 767L119 802L99 840L69 864L34 863L5 840L-16 807L-31 778L-48 758L-67 742L-83 724L-95 702L-101 679L-107 656L-116 632L-125 607L-129 580L-126 552L-119 525L-111 495L-101 464L-84 436L-55 421L-18 427L17 449L45 473L65 483L85 476L112 458L145 446L175 449L200 465L219 487L236 510L253 534L265 561L269 591ZM285 620L275 650L266 679L253 706L231 727L202 739L173 746L153 758L141 786L128 828L104 871L70 895L32 890L-1 864L-25 830L-44 801L-64 779L-84 759L-100 736L-110 711L-119 685L-130 660L-142 634L-151 605L-152 575L-146 545L-138 515L-133 480L-124 442L-104 410L-70 396L-27 405L13 432L43 457L65 464L89 453L120 436L155 426L187 431L215 448L239 470L261 494L280 522L291 554L292 587ZM306 620L300 654L293 687L278 717L250 739L215 750L183 756L163 772L151 807L137 856L110 901L71 923L29 916L-7 887L-34 854L-58 825L-80 800L-100 774L-114 746L-125 719L-138 692L-154 666L-169 636L-176 603L-173 571L-164 538L-158 504L-155 464L-148 419L-124 384L-84 371L-35 386L9 415L41 439L66 443L93 430L127 414L164 407L199 414L231 430L260 452L287 478L307 510L316 547L313 584Z' fill='none' stroke='%23B9C8B5' stroke-width='1' stroke-opacity='.07'/%3E%3C/svg%3E");
  --gridbg: linear-gradient(rgba(185,200,181,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(185,200,181,.025) 1px, transparent 1px);
  color-scheme: dark;
}

/* ---------- Battery saver (OLED black, minimum lit pixels) ---------- */
:root[data-theme="saver"] {
  --bg: #000; --card: #000; --ink: #CFCBC0; --muted: #7C7A72; --line: #1E221F;
  --green2: #8AA56E; --sun: #C29A5C; --warn: #C46A4A; --info: #7497A3; --ok: #8AA56E;
  --a-tint: transparent; --s-tint: transparent; --w-tint: transparent; --i-tint: transparent; --o-tint: transparent;
  --a-edge: #3A4A30; --s-edge: #5A4828; --w-edge: #5A3022; --i-edge: #2E4248;
  --top-bg: #000; --top-ink: #CFCBC0; --top-muted: #7C7A72; --top-line: #1E221F; --mark: #8C744A;
  --hero-bg: #000; --hero-line: #2C3A26; --hero-top: 1px solid #2C3A26;
  --pri-bg: transparent; --pri-ink: #8AA56E; --pri-line: #4A5E3A; --btn-line: #2A2E2B;
  --track: #141714; --stat-bg: #000; --input-bg: #000;
  --h-tt: uppercase; --h-ls: .06em; --label: #6A6862; --h2-pre: '//'; --h2-pre-c: #5E7448; --h2-line: #141714;
  --map: #000; --grid: transparent; --contour: transparent; --route: #5E7448; --casing: transparent; --tick: transparent; --maplbl: #8A877E;
  --tab-bg: #000; --tab-muted: #5E5C56; --tab-on: #8AA56E;
  --ridge: #2A2E2B; --mount-bg: #000; --mount-edge: #1E221F; --mount-hi: #3A3E3B; --mount-ink: #CFCBC0; --mount-muted: #5E5C56; --ring-edge: #000; --water: #000; --land: #000; --coast: #2A3A3E; --lake-line: #22343A; --river: transparent; --road: transparent; --border-line: #2E2E28; --town: transparent;
  --tex: none; --gridbg: none;
  color-scheme: dark;
}

/* ---------- base ---------- */
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; height: 100%; }
body {
  background-color: var(--bg); color: var(--ink);
  background-image: var(--tex), var(--gridbg); background-size: cover, 28px 28px; background-attachment: fixed, fixed;
  font: 16px/1.45 var(--font-b);
  padding-top: env(safe-area-inset-top);
}
.coord, .mono { font-family: var(--font-m); font-size: 11px; letter-spacing: .04em; color: var(--muted); }

/* top bar */
.topbar {
  position: sticky; top: 0; z-index: 5; background: var(--top-bg); color: var(--top-ink); border-bottom: 1px solid var(--top-line);
  padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.brand { display: flex; align-items: center; gap: 10px; min-width: 0; }
.brand-mark { width: 30px; height: 30px; flex: none; color: var(--mark); }
/* compass needle spins continuously (stopped by the battery saver's no-animation rule and by reduced motion) */
.brand-mark .needle { transform-box: view-box; transform-origin: 16px 16px; animation: needle-spin 8s linear infinite; }
@keyframes needle-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .brand-mark .needle { animation: none; } }
#topTitle { font: 700 16px/1 var(--font-h); letter-spacing: .22em; text-transform: uppercase; }
.top-sub { font: 600 10px/1.2 var(--font-h); letter-spacing: .2em; text-transform: uppercase; color: var(--top-muted); text-align: right; }
.saver-tag { display: none; font: 600 9px/1 var(--font-h); letter-spacing: .16em; text-transform: uppercase; color: var(--green2); border: 1px solid var(--a-edge); border-radius: 2px; padding: 4px 6px; margin-top: 5px; }
[data-theme="saver"] .saver-tag { display: inline-block; }
main { padding: 14px 14px calc(var(--tabh) + 28px + env(safe-area-inset-bottom)); max-width: 720px; margin: 0 auto; }

/* tab bar */
.tabbar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 6; display: flex;
  background: var(--tab-bg); border-top: 1px solid var(--top-line);
  padding-bottom: env(safe-area-inset-bottom); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.tab {
  flex: 1; border: 0; background: none; color: var(--tab-muted); padding: 8px 2px; height: var(--tabh); position: relative; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  font: 600 9.5px/1 var(--font-h); letter-spacing: .14em; text-transform: uppercase;
}
.tab .ti { width: 22px; height: 22px; display: block; }
.tab.active { color: var(--tab-on); }
.tab.active::before { content: ''; position: absolute; top: -1px; left: 30%; right: 30%; height: 2px; background: var(--tab-on); border-radius: 2px; }

/* type */
h2 {
  display: flex; align-items: center; gap: 8px;
  font: 600 11px/1 var(--font-h); letter-spacing: .22em; text-transform: uppercase; color: var(--label); margin: 24px 4px 10px;
}
h2::before { content: var(--h2-pre); color: var(--h2-pre-c); letter-spacing: 0; }
h2::after { content: ''; flex: 1; height: 1px; background: var(--h2-line); }
h3 { margin: 0 0 4px; font: 700 17px/1.25 var(--font-h); letter-spacing: var(--h-ls); text-transform: var(--h-tt); }
.card > b:first-child, .card > .row > b:first-child { font-family: var(--font-h); letter-spacing: var(--h-ls); text-transform: var(--h-tt); font-size: 15px; }
p { margin: 6px 0; }

/* cards */
.card {
  position: relative; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 14px; margin-bottom: 12px;
}
.card.tap { cursor: pointer; }
.card.hero { background: var(--hero-bg); border-color: var(--hero-line); border-top: var(--hero-top); }
.card.hero h3 { letter-spacing: .03em; }
/* uppercase themes: keep long stop names to fewer lines (overrides the views' inline 22px) */
:root[data-theme="dark"] .card h3[style], :root[data-theme="saver"] .card h3[style], .sheet-body h3[style*="22px"] { font-size: 19px !important; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) .card h3[style] { font-size: 19px !important; } }
.hero .coord { display: block; margin-top: 4px; }
/* Night Ops: HUD corner brackets on the hero card */
:root[data-theme="dark"] .card.hero::before, :root[data-theme="dark"] .card.hero::after { content: ''; position: absolute; width: 12px; height: 12px; border: 1.5px solid var(--sun); pointer-events: none; }
:root[data-theme="dark"] .card.hero::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
:root[data-theme="dark"] .card.hero::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) .card.hero::before, :root:not([data-theme]) .card.hero::after { content: ''; position: absolute; width: 12px; height: 12px; border: 1.5px solid var(--sun); pointer-events: none; }
  :root:not([data-theme]) .card.hero::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
  :root:not([data-theme]) .card.hero::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }
}
.muted { color: var(--muted); font-size: 14px; }
.row { display: flex; align-items: center; gap: 10px; }
.row.between { justify-content: space-between; }
.wrap { flex-wrap: wrap; }
.grow { flex: 1; min-width: 0; }

/* badges */
.badge {
  display: inline-flex; align-items: center; font: 600 10px/1 var(--font-h); letter-spacing: .12em; text-transform: uppercase;
  padding: 5px 8px; border-radius: 2px; margin: 0 4px 2px 0; white-space: nowrap;
  color: var(--green2); background: var(--a-tint); border: 1px solid var(--a-edge);
}
.badge.work, .badge.transit, .badge.home { color: var(--info); background: var(--i-tint); border-color: var(--i-edge); }
.badge.weekend { color: var(--ok); background: var(--o-tint); border-color: var(--a-edge); }
.badge.warn, .badge.birthday { color: var(--warn); background: var(--w-tint); border-color: var(--w-edge); }
.badge.draft { color: var(--sun); background: var(--s-tint); border-color: var(--s-edge); }

/* buttons */
.btn {
  appearance: none; border: 1px solid var(--btn-line); background: transparent; color: var(--ink);
  border-radius: var(--rb); padding: 12px 14px; min-height: 44px; cursor: pointer;
  font: 600 11px/1.1 var(--font-h); letter-spacing: .14em; text-transform: uppercase;
}
a.btn { text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.btn.primary { background: var(--pri-bg); border-color: var(--pri-line); color: var(--pri-ink); }
.btn.danger { color: var(--warn); }
.btn.sm { padding: 8px 10px; min-height: 36px; font-size: 10px; }
.btn.block { width: 100%; }
.btns { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }

/* gauges */
.meter { height: 6px; background: var(--track); border-radius: 1px; overflow: hidden; margin: 8px 0 4px; }
.meter > i { display: block; height: 100%; background: var(--ok); }
.meter.warn > i { background: var(--sun); }
.meter.bad > i { background: var(--warn); }
:root[data-theme="dark"] .meter > i { background-image: repeating-linear-gradient(90deg, transparent 0 5px, rgba(10,17,14,.9) 5px 7px); }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) .meter > i { background-image: repeating-linear-gradient(90deg, transparent 0 5px, rgba(10,17,14,.9) 5px 7px); } }

/* weather: hero strip and forecast day tiles */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(64px, 1fr)); gap: 6px; margin-top: 12px; }
.stat { border: 1px solid var(--line); border-radius: var(--rs); padding: 8px 9px; background: var(--stat-bg); min-width: 0; }
.stat span { display: block; font: 600 9px/1 var(--font-h); letter-spacing: .18em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.stat b { display: block; font: 700 16px/1.1 var(--font-h); letter-spacing: .02em; color: var(--ink); white-space: nowrap; }
.stat b small { font: 500 10px var(--font-m); color: var(--muted); letter-spacing: 0; }
.stat.warn { border-color: var(--sun); } .stat.warn b { color: var(--sun); }
.stat.bad { border-color: var(--warn); } .stat.bad b { color: var(--warn); }
.stat.info { border-color: var(--info); } .stat.info b { color: var(--info); }
/* place line at the top of a card that has a section heading above it */
.card-place { margin: 0 0 10px; }
/* visual weather tiles (Today hero): icon, value, label; one row */
.wxv-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin-top: 12px; }
.wxv-row.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.wxv { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 10px 4px 8px; border: 1px solid var(--line); border-radius: var(--rs); background: var(--stat-bg); min-width: 0; }
.wxv-ic { height: 30px; display: flex; align-items: center; justify-content: center; gap: 4px; color: var(--muted); }
.wxv b { font: 700 15px/1.1 var(--font-h); color: var(--ink); white-space: nowrap; }
.wxv b small { font: 500 10px var(--font-m); color: var(--muted); }
.wxv span { font: 600 8.5px/1.1 var(--font-h); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.wxi { width: 26px; height: 26px; }
.wxi.sun { color: var(--sun); } .wxi.cloud { color: var(--sun); } .wxi.rainy { color: var(--info); } .wxi.windy { color: var(--ink); }
.wxv.sky.good .wxi, .wxv.sky.good b { color: var(--green2); }
.wxv.sky.warn .wxi, .wxv.sky.warn b { color: var(--sun); }
.wxv.sky.bad .wxi, .wxv.sky.bad b { color: var(--warn); }
.wxv.warn { border-color: var(--sun); } .wxv.warn b { color: var(--sun); } .wxv.warn .wxi.windy { color: var(--sun); }
.wxv.bad { border-color: var(--warn); } .wxv.bad b { color: var(--warn); }
.wxv.info { border-color: var(--info); } .wxv.info b { color: var(--info); }
.wxi.drop { color: var(--info); } .drop-fill { fill: var(--info); opacity: .55; }
.wbars { display: inline-flex; align-items: flex-end; gap: 2px; height: 14px; }
.wbars i { width: 3px; border-radius: 1px; background: var(--line); }
.wbars i.on { background: var(--green2); } .wbars.warn i.on { background: var(--sun); }
.wx-day .wxi { width: 22px; height: 22px; margin: 2px 0 4px; }
.wx-days { display: grid; grid-template-columns: repeat(auto-fit, minmax(66px, 1fr)); gap: 6px; margin-bottom: 4px; }
.wx-day { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; border: 1px solid var(--line); border-top: 2px solid var(--line); border-radius: var(--rs); padding: 8px 8px 9px; background: var(--stat-bg); min-width: 0; }
.wx-day .wd { font: 600 9.5px/1 var(--font-h); letter-spacing: .16em; text-transform: uppercase; color: var(--ink); }
.wx-day .dt { font: 500 9.5px/1.2 var(--font-m); color: var(--muted); margin-bottom: 4px; }
.wx-day b { font: 700 19px/1 var(--font-h); color: var(--ink); }
.wx-day .lo { font: 500 11px/1.2 var(--font-m); color: var(--muted); margin-bottom: 4px; }
.wx-day .wl { font: 500 9.5px/1.35 var(--font-m); color: var(--muted); white-space: nowrap; }
.wx-day.warn { border-top-color: var(--sun); }
.wx-day.bad { border-top-color: var(--warn); }
.wx-day.info { border-top-color: var(--info); }
/* Thunderstorms: forecast storm days and official Environment Canada alerts */
.wx-day.storm { border-color: var(--warn); border-top: 3px solid var(--warn); }
.wx-day.storm .wxi { color: var(--warn); }
.wx-day .storm-tag { color: var(--warn); font-weight: 700; }
.alert.storm { border-color: var(--warn); background: color-mix(in srgb, var(--warn) 10%, transparent); }
.alert.official { border: 1.5px solid var(--sun); background: color-mix(in srgb, var(--sun) 9%, transparent); }
.alert.official.warning, .alert.official.red { border-color: var(--warn); background: color-mix(in srgb, var(--warn) 11%, transparent); animation: al-pulse 2s ease-in-out infinite; }
.alert.official b { display: block; color: var(--ink); }
.alert.official.warning b, .alert.official.red b { color: var(--warn); }
.alert.official p { margin: 6px 0 0; line-height: 1.5; color: var(--ink); }
.alert.official small { display: block; margin-top: 8px; font: 500 11px/1.4 var(--font-m); color: var(--muted); }
.alert.official details summary { margin-top: 6px; font: 500 11px var(--font-m); color: var(--muted); cursor: pointer; }
.al-foot { font: 500 11px/1.4 var(--font-m); }
@keyframes al-pulse { 0%, 100% { border-color: var(--warn); } 50% { border-color: color-mix(in srgb, var(--warn) 30%, transparent); } }
@media (prefers-reduced-motion: reduce) { .alert.official { animation: none; } }
.wx-day b.warn, .wx-day .wl.warn { color: var(--sun); }
.wx-day b.bad { color: var(--warn); }
.wx-day .wl.info { color: var(--info); }
.wx-day .wl.warn, .wx-day .wl.info { font-weight: 700; }
.wx-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; font-size: 12.5px; }
.wx-foot a { color: inherit; }

/* lists */
.item { display: flex; gap: 12px; align-items: flex-start; padding: 12px 0; border-top: 1px solid var(--line); }
.item:first-child { border-top: 0; }
.item input[type=checkbox] { width: 22px; height: 22px; margin-top: 1px; accent-color: var(--green2); flex: none; }
.item.done .t { text-decoration: line-through; color: var(--muted); }
.item .t { font-weight: 600; }
/* checkbox rows are <label class="item">: keep normal body text, not the small caps used for field labels */
label.item { font: 16px/1.45 var(--font-b); letter-spacing: normal; text-transform: none; color: var(--ink); margin: 0; cursor: pointer; }
.item .t .badge { vertical-align: 2px; margin-left: 4px; }
.item.done .qty, .item.done .due { opacity: .55; }
.qty { font-size: 14px; color: var(--ink); margin-top: 2px; }
.qty b { font-weight: 700; color: var(--green2); }
.ing { font-size: 13px; color: var(--muted); margin-top: 4px; }
.aisle { font: 600 10.5px/1 var(--font-h); letter-spacing: .2em; text-transform: uppercase; color: var(--sun); margin: 18px 0 2px; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.aisle + .item { border-top: 0; }
.due { font-size: 13px; color: var(--muted); }
.due.over { color: var(--warn); font-weight: 600; }
.due.soon { color: var(--sun); font-weight: 600; }

.week { margin: 20px 4px 8px; font: 600 11px/1 var(--font-h); letter-spacing: .2em; text-transform: uppercase; color: var(--green2); }
.timeline { border-left: 2px solid var(--line); margin-left: 6px; padding-left: 12px; }
.alert {
  background: var(--w-tint); color: var(--warn); border: 1px solid var(--w-edge); border-radius: var(--rs); padding: 10px 12px; margin: 10px 0; font-size: 14px;
}
.alert.info { background: var(--i-tint); color: var(--info); border-color: var(--i-edge); }

/* forms */
input[type=text], input[type=url], input[type=date], input[type=number], textarea, select {
  width: 100%; padding: 11px 12px; font: inherit; color: var(--ink); background: var(--input-bg);
  border: 1px solid var(--line); border-radius: var(--rs); min-height: 44px;
}
input:focus, textarea:focus, select:focus { outline: 2px solid var(--green2); outline-offset: -1px; }
textarea { min-height: 90px; resize: vertical; }
label { display: block; font: 600 10.5px/1.3 var(--font-h); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin: 14px 0 6px; }
details summary { cursor: pointer; font-weight: 700; padding: 6px 0; }
ul.plain { margin: 6px 0 0; padding-left: 20px; }
ul.plain li { margin: 4px 0; }
.seg { display: flex; border: 1px solid var(--line); border-radius: var(--rs); overflow: hidden; }
.seg button {
  flex: 1; border: 0; border-left: 1px solid var(--line); background: transparent; color: var(--muted); padding: 10px 4px; min-height: 44px; cursor: pointer;
  font: 600 10px/1.1 var(--font-h); letter-spacing: .1em; text-transform: uppercase;
}
.seg button:first-child { border-left: 0; }
.seg button.on { background: var(--a-tint); color: var(--green2); box-shadow: inset 0 -2px 0 var(--green2); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.chip { display: inline-flex; align-items: center; gap: 6px; font: 600 14px/1.2 var(--font-b); letter-spacing: 0; text-transform: none; color: var(--ink); margin: 0; padding: 6px 10px; border: 1px solid var(--line); border-radius: var(--rs); }
.chip input { width: 20px; height: 20px; accent-color: var(--green2); }
.tbl { width: 100%; border-collapse: collapse; font-size: 14px; margin: 10px 0; }
.tbl th { text-align: left; color: var(--muted); font: 600 10px/1.2 var(--font-h); letter-spacing: .12em; text-transform: uppercase; padding: 4px 4px 6px 0; }
.tbl td { padding: 6px 4px 6px 0; border-top: 1px solid var(--line); }
input.sm { min-height: 36px; padding: 6px 8px; width: 74px; }
.photos { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0; }
.photos img { width: 96px; height: 96px; object-fit: cover; border-radius: var(--rs); background: var(--line); }

/* route map */
.map { display: block; width: 100%; background: var(--map); border-radius: var(--rs); }
.map .grid { stroke: var(--grid); stroke-width: 1; }
.map .water { fill: var(--water); }
.map .land { fill: var(--land); stroke: var(--coast); stroke-width: .8; stroke-linejoin: round; }
.map .lake { fill: var(--water); stroke: var(--lake-line); stroke-width: .6; }
.map .river { fill: none; stroke: var(--river); stroke-width: .8; stroke-linejoin: round; stroke-linecap: round; }
.map .road { fill: none; stroke: var(--road); stroke-width: 1.1; stroke-linejoin: round; stroke-linecap: round; }
.map .border { fill: none; stroke: var(--border-line); stroke-width: 1; stroke-dasharray: 5 3 1 3; }
.map .ferry { fill: none; stroke: var(--river); stroke-width: .9; stroke-dasharray: 3 3; }
/* route modifiers: ferry crossings, short connectors from campsite to highway, and legs with no highway */
.map .route.ferry-leg { stroke-dasharray: 2 4 !important; }
.map .route.link { stroke-width: 1.2; stroke-dasharray: 2 3 !important; opacity: .85; }
.map .route.off { stroke-dasharray: 7 5 !important; opacity: .7; }
.map path.casing { fill: none; }
.map .town { fill: var(--town); }
.map .townlbl { font: 500 8.5px var(--font-b); fill: var(--town); }
.map .lbl { paint-order: stroke; stroke: var(--land); stroke-width: 3px; stroke-linejoin: round; }
.map .townlbl { paint-order: stroke; stroke: var(--land); stroke-width: 2.5px; stroke-linejoin: round; }
.map .route { fill: none; stroke: var(--route); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.map .casing { fill: none; stroke: var(--casing); stroke-width: 5; stroke-linejoin: round; stroke-linecap: round; }
.map .stop { fill: var(--card); stroke: var(--green2); stroke-width: 2; cursor: pointer; }
.map .stop.home { stroke: var(--info); }
.map .stop.via { fill: var(--sun); stroke: var(--card); stroke-width: 1.5; }
.map .stop.birthday { stroke: var(--warn); }
.map .cur { fill: var(--sun); cursor: pointer; }
.map .ring { fill: none; stroke: var(--sun); stroke-width: 1.2; }
.map .me { fill: none; stroke: var(--warn); stroke-width: 2.5; }
.map .lbl { font: 500 9px var(--font-m); fill: var(--maplbl); letter-spacing: .03em; }
.map .tick { font: 500 8px var(--font-m); fill: var(--tick); }
.map .ui { stroke: var(--maplbl); fill: none; stroke-width: 1; opacity: .5; }
.map .north { fill: var(--maplbl); }
:root[data-theme="dark"] .map .route { stroke-dasharray: 5 4; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) .map .route { stroke-dasharray: 5 4; } }
.map-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-top: 10px; }

/* trip date dial: a fixed mount on top, and one continuous knurled ring under it that slides like a lens ring.
   The day under the index mark is selected. Column width (60px) is a multiple of the 6px ridge pitch,
   so the ridges run unbroken from day to day. */
.dial { position: relative; margin: -2px -14px 14px; border-bottom: 1px solid var(--line); }
.dial-mount {
  position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 8px;
  height: 34px; padding: 0 12px; background: var(--mount-bg); border-bottom: 1px solid var(--mount-edge);
  box-shadow: 0 2px 6px rgba(0,0,0,.35);
}
.dial-mount .screw { width: 7px; height: 7px; border-radius: 50%; flex: none; background: radial-gradient(circle at 35% 35%, var(--mount-hi), var(--mount-edge)); box-shadow: inset 0 0 0 1px rgba(0,0,0,.35); }
.dial-mount .dial-side { font: 500 9px/1 var(--font-m); letter-spacing: .1em; text-transform: uppercase; color: var(--mount-muted); flex: 1; }
.dial-mount .dial-side:last-of-type { text-align: right; }
.dial-read { font: 600 10.5px/1 var(--font-h); letter-spacing: .16em; text-transform: uppercase; color: var(--mount-ink); white-space: nowrap; }
/* index mark: a triangle hanging from the mount into the ring */
.dial-mount::after { content: ''; position: absolute; left: 50%; bottom: -8px; margin-left: -7px; border: 7px solid transparent; border-bottom: 0; border-top: 8px solid var(--sun); filter: drop-shadow(0 1px 1px rgba(0,0,0,.4)); }

.dial-ring { position: relative; background: var(--card); }
.dial-track {
  display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain;
  padding: 0 calc(50% - 30px);
}
.dial-track::-webkit-scrollbar { display: none; }
.dday {
  flex: 0 0 60px; width: 60px; scroll-snap-align: center; border: 0; background: none; padding: 12px 0 0; margin: 0; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; color: var(--muted); position: relative;
}
.dday .dm { height: 10px; font: 600 8.5px/1 var(--font-h); letter-spacing: .16em; text-transform: uppercase; color: var(--sun); }
.dday .dw { font: 600 9px/1 var(--font-h); letter-spacing: .14em; text-transform: uppercase; margin-top: 3px; }
.dday .dn { font: 700 20px/1.1 var(--font-h); color: var(--ink); margin: 3px 0 7px; text-underline-offset: 4px; }
/* knurling: one pattern, no gaps between days */
.dday .dr { position: relative; width: 100%; height: 26px; border-top: 1px solid var(--line);
  background-image: repeating-linear-gradient(90deg, var(--ridge) 0 2px, transparent 2px 6px), linear-gradient(180deg, rgba(255,255,255,.04), rgba(0,0,0,.14)); }
.dday .dr::after { content: ''; position: absolute; left: 50%; top: 0; width: 2px; height: 10px; margin-left: -1px; background: var(--muted); }
.dday .ds { width: 100%; height: 3px; }
.dday .dp { width: 5px; height: 5px; border-radius: 50%; margin: 5px 0 6px; }
/* days outside the trip: same ring, faded, not selectable */
.dday.ghost { scroll-snap-align: none; cursor: default; opacity: .28; }
.dday.ghost .dr::after { opacity: .6; }
.dday.wknd .dw { color: var(--green2); }
.dday.move .dn { text-decoration: underline 2px var(--sun); }
.dday.today .dn { color: var(--info); }
.dday.has .dp { background: var(--sun); }
.dday.sel .dn { color: var(--sun); }
.dday.sel .dw { color: var(--ink); }
/* fixed index line through the ring, under the mount's triangle */
.dial-index { position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; margin-left: -.5px; background: var(--sun); opacity: .55; pointer-events: none; }
/* cylinder shading: the ring turns away at both edges */
.dial-shade { position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, var(--ring-edge) 0%, transparent 28%, transparent 72%, var(--ring-edge) 100%), linear-gradient(180deg, rgba(255,255,255,.05), transparent 30%, rgba(0,0,0,.12)); }

/* journey: the whole trip as one route line, home -> stops -> home, with the drives on the line */
.jhead { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; margin: 20px 4px 4px; }
.jhead .week { margin: 0; }
.journey { position: relative; padding: 4px 0 4px; }
.journey::before { content: ''; position: absolute; left: 17px; top: 20px; bottom: 20px; width: 2px; background: var(--route); opacity: .55; }
:root[data-theme="dark"] .journey::before { background: repeating-linear-gradient(180deg, var(--route) 0 6px, transparent 6px 10px); opacity: .7; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) .journey::before { background: repeating-linear-gradient(180deg, var(--route) 0 6px, transparent 6px 10px); opacity: .7; } }
.jmark {
  position: relative; z-index: 1; flex: none; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center;
  background: var(--bg); border: 2px solid var(--route); color: var(--ink); font: 700 13px/1 var(--font-h);
}
.jmark.home { border-color: var(--info); color: var(--info); font-size: 18px; }
.jstop { display: flex; gap: 12px; align-items: flex-start; padding: 2px 0; cursor: pointer; }
.jstop .jmark { margin-top: 10px; }
.jstop.cur .jmark { background: var(--sun); border-color: var(--sun); color: var(--bg); }
.jbody { flex: 1; min-width: 0; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; }
.jstop.cur .jbody { border-color: var(--green2); }
.jbody h3 { font-size: 15px; margin: 8px 0 2px; }
.jbody .muted { margin: 2px 0 0; font-size: 13px; }
.jwarn { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 8px; }
.jwarn .badge { white-space: normal; text-align: left; line-height: 1.3; }
.jleg { margin: 2px 0 2px 48px; padding: 8px 0; font: 500 11px/1.4 var(--font-m); color: var(--muted); }
.jleg-d { color: var(--green2); font-weight: 600; }
.jvia { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.jvia span { color: var(--sun); }
.jtrip { margin-top: 6px; font: 500 11px/1.4 var(--font-m); color: var(--sun); }
.drivechk { margin: 10px 0; padding: 10px 12px; border: 1px solid var(--s-edge); border-left: 3px solid var(--sun); border-radius: var(--rs); }
.drivechk .muted { margin: 2px 0 0; }
.drivechk .btns { margin-top: 8px; }
.daytrip { margin: 10px 0; padding: 10px 12px; border-left: 3px solid var(--sun); background: var(--s-tint); border-radius: var(--rs); }
.daytrip .muted { margin: 4px 0 0; }
.jgap { margin: 4px 0 4px 48px; padding: 8px 10px; font-size: 13px; color: var(--warn); border: 1px dashed var(--w-edge); border-radius: var(--rs); }
.jend { display: flex; gap: 12px; align-items: center; padding: 4px 0; font-size: 14px; }

/* daylight day dial: 24-hour ring, gold daylight and blue civil twilight over a dark night ring */
:root { --dl-sun: #B9812C; --dl-tw: #2A6FA8; }
:root[data-theme="dark"], :root[data-theme="saver"] { --dl-sun: #BF8730; --dl-tw: #3F8FCF; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) { --dl-sun: #BF8730; --dl-tw: #3F8FCF; } }
:root { --sd-night: #34495C; } :root[data-theme="dark"] { --sd-night: #0E2233; } :root[data-theme="saver"] { --sd-night: #0B141C; }
@media (prefers-color-scheme: dark) { :root:not([data-theme]) { --sd-night: #0E2233; } }
.sd-wrap { display: flex; flex-direction: column; align-items: center; gap: 14px; margin-top: 12px; }
.sundial { flex: none; max-width: 100%; height: auto; display: block; margin: 0 auto; cursor: pointer; }
.sd-num { font: 500 7.5px var(--font-m); fill: var(--muted); }
.sd-note { margin: 10px 0 0; line-height: 1.55; } /* same type as the card's "Near …" line (.coord) */
.sd-num.day { fill: var(--ink); }
.sd-night { fill: none; stroke: var(--sd-night); }
.sd-tw { fill: none; stroke: var(--dl-tw); }
.sd-day { fill: none; stroke: var(--dl-sun); }
.sd-tick { stroke: var(--muted); stroke-width: 1; }
.sd-hour { font: 600 9px var(--font-h); letter-spacing: .08em; text-transform: uppercase; fill: var(--muted); }
.sd-sun { fill: var(--card); stroke: var(--dl-sun); stroke-width: 2; }
.sd-now { stroke: var(--ink); stroke-width: 3; stroke-linecap: round; }
.sd-now-dot { fill: var(--ink); } .sd-hub { fill: var(--ink); }
.sd-big { font: 700 17px var(--font-h); fill: var(--ink); } .sd-small { font: 500 10px var(--font-b); fill: var(--muted); }
.sd-times { width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.sd-times span { display: block; font: 600 9px/1 var(--font-h); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); margin-bottom: 4px; }
.sd-times b { font: 700 15px var(--font-h); color: var(--ink); }
.sd-sum b { color: var(--green2); }
.dl-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0 8px; font-size: 12px; color: var(--muted); }
.dl-legend span { display: inline-flex; align-items: center; gap: 6px; }
/* Moon card: disc (dark side matches the dial's night ring), week strip */
:root { --mn-lit: #F1EAD6; } :root[data-theme="saver"] { --mn-lit: #8F8A7E; }
.moon { display: block; flex: none; }
.mn-dark { fill: var(--sd-night); }
.mn-lit { fill: var(--mn-lit); }
.mn-ring { fill: none; stroke: var(--sd-night); stroke-width: 1; }
.mn-head { display: flex; align-items: center; gap: 18px; margin: 12px 0 16px; }
.mn-name { display: block; font: 700 19px var(--font-h); color: var(--ink); }
.mn-pct { display: block; margin-top: 4px; font-size: 13px; color: var(--muted); }
.mn-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line); text-align: center; }
.mn-day { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.mn-day span { font: 600 9px/1 var(--font-h); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.mn-day b { font: 500 11px var(--font-m); color: var(--muted); }
.mn-day.on span, .mn-day.on b { color: var(--ink); }
/* Terrain card: shaded-relief topo map and plain-language notes */
.tr-map { position: relative; width: 100%; max-width: 320px; margin: 12px auto 0; aspect-ratio: 1; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; }
.tr-canvas { display: block; width: 100%; height: 100%; touch-action: none; cursor: grab; }
.tr-canvas:active { cursor: grabbing; }
.tr-ctrls { position: absolute; top: 6px; right: 6px; display: flex; flex-direction: column; gap: 4px; }
.tr-btn { width: 34px; height: 34px; display: grid; place-items: center; padding: 0; border: 1px solid var(--line); border-radius: 6px; background: var(--card); color: var(--ink); font: 600 18px/1 var(--font-h); cursor: pointer; opacity: .92; }
.tr-status { text-align: center; margin: -8px 0 12px; min-height: 0; }
.tr-status:empty { display: none; }
.tr-n { position: absolute; top: 6px; left: 8px; font: 700 10px var(--font-h); letter-spacing: .12em; color: var(--ink); background: var(--card); padding: 2px 5px; border-radius: 3px; opacity: .85; }
.tr-scale { text-align: center; margin: 6px 0 14px; }
.sd-times em { display: block; margin-top: 2px; font: 500 11px var(--font-m); font-style: normal; color: var(--muted); }
.tr-spot { margin: 14px 0 6px; font-size: 14px; color: var(--muted); } .tr-spot b { color: var(--ink); }
.tr-notes { margin: 0; padding-left: 18px; font-size: 14px; line-height: 1.5; color: var(--ink); } .tr-notes li { margin: 4px 0; }
.lg-box { width: 12px; height: 10px; border-radius: 2px; display: inline-block; }
.lg-box.day { background: var(--dl-sun); }
.lg-box.tw { background: var(--dl-tw); }
.lg-box.night { background: var(--sd-night); }
.dl-table { margin-top: 8px; }
/* same type as the card's "Near …" line (.coord) */
.dl-table summary { font-family: var(--font-m); font-size: 11px; letter-spacing: .04em; text-transform: none; color: var(--muted); padding: 8px 0; cursor: pointer; }
.dl-scroll { overflow-x: auto; }
.dl-table .tbl { font-size: 12px; white-space: nowrap; }
.dl-table .tbl td, .dl-table .tbl th { padding-right: 10px; }
.dl-table tr.on td { color: var(--sun); font-weight: 600; }

/* Today quick actions */
.quick { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 12px; }
.qbtn {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 84px; padding: 12px 6px; cursor: pointer;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink);
  font: 600 10px/1.2 var(--font-h); letter-spacing: .12em; text-transform: uppercase; text-align: center;
}
.qbtn svg { width: 26px; height: 26px; color: var(--green2); }
.qbtn:active { border-color: var(--green2); }
.sheet-body h2 { margin: 20px 0 8px; }

/* run sheet: one aligned grid for every row: time | what | checkbox (right) */
.runsheet { margin-bottom: 4px; }
.rs-row { display: grid; grid-template-columns: 78px minmax(0, 1fr) 24px; column-gap: 10px; align-items: start; padding: 11px 0; border-top: 1px solid var(--line); margin: 0; font: inherit; letter-spacing: normal; text-transform: none; color: var(--ink); }
label.rs-row { cursor: pointer; }
.rs-time { font: 500 12px/20px var(--font-m); color: var(--sun); white-space: nowrap; }
.rs-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.rs-title { font: 600 14px/20px var(--font-b); color: var(--ink); }
.rs-note { font: 400 12px/1.4 var(--font-b); color: var(--muted); }
.rs-acts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 5px; }
.rs-row input[type=checkbox] { width: 22px; height: 22px; margin: 0; justify-self: end; accent-color: var(--green2); }
.rs-row.done .rs-title { text-decoration: line-through; color: var(--muted); }
.rs-mark { padding: 8px 0; border-top-style: dashed; }
.rs-mark .rs-time { color: var(--muted); }
.rs-mark .rs-title { font-weight: 400; color: var(--muted); }
.rs-mark.warn .rs-title, .rs-row.warn .rs-title, .rs-row.warn .rs-note { color: var(--warn); }
.rs-now { border-top: 2px solid var(--sun); padding: 6px 0; }
.rs-now .rs-title { font: 600 10px/20px var(--font-h); letter-spacing: .16em; text-transform: uppercase; color: var(--sun); }

/* day planner */
.day-card h2 { margin: 18px 0 6px; }
.tm { font: 500 13px var(--font-m); color: var(--sun); margin-right: 10px; }
.day-add { display: grid; grid-template-columns: 104px 1fr auto; gap: 6px; margin-top: 12px; }
.day-add input { min-width: 0; }
button.chip { background: transparent; cursor: pointer; font-size: 13px; font-weight: 600; }
button.chip .coord { font-size: 10px; }
label.item > .btn.sm.danger { flex: none; min-height: 32px; padding: 2px 10px; font-size: 18px; line-height: 1; letter-spacing: 0; }

/* sheets and toast */
.sheet { position: fixed; inset: 0; z-index: 20; }
.sheet[hidden] { display: none; }
.sheet-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.55); }
.sheet-body {
  position: absolute; left: 0; right: 0; bottom: 0; max-height: 92%; overflow: auto; background: var(--bg);
  border-top: 1px solid var(--line); border-radius: 14px 14px 0 0; padding: 22px 14px calc(24px + env(safe-area-inset-bottom));
  max-width: 720px; margin: 0 auto;
}
.sheet-close { position: absolute; right: 10px; top: 6px; border: 0; background: none; font-size: 32px; color: var(--muted); cursor: pointer; }
.toast {
  position: fixed; left: 50%; bottom: calc(var(--tabh) + 18px); transform: translateX(-50%); z-index: 30;
  background: var(--ink); color: var(--bg); padding: 10px 16px; border-radius: var(--rs); font-size: 14px; max-width: 90%;
}
.toast[hidden] { display: none; }

/* Battery saver: drop every effect that costs GPU or lights pixels */
[data-theme="saver"] *, [data-theme="saver"] *::before, [data-theme="saver"] *::after { box-shadow: none !important; text-shadow: none !important; transition: none !important; animation: none !important; }
[data-theme="saver"] .tabbar { backdrop-filter: none; -webkit-backdrop-filter: none; }
[data-theme="saver"] .map .road, [data-theme="saver"] .map .ferry, [data-theme="saver"] .map .river, [data-theme="saver"] .map .town, [data-theme="saver"] .map .townlbl, [data-theme="saver"] .map .grid, [data-theme="saver"] .map .tick, [data-theme="saver"] .map .ring { display: none; }
[data-theme="saver"] .sheet-backdrop { background: #000; }
[data-theme="saver"] .seg button.on { box-shadow: inset 0 -2px 0 var(--green2) !important; }

/* More > Compass */
.cmp-card { text-align: center; }
.cmp { display: block; width: 100%; max-width: 300px; margin: 6px auto 16px; }
.cmp-face { fill: var(--stat-bg, var(--card)); stroke: var(--line); stroke-width: 1.5; }
.cmp-tick { stroke: var(--muted); stroke-width: 1; }
.cmp-tick.big { stroke: var(--ink); stroke-width: 1.6; }
.cmp-num { font: 500 7px var(--font-m); fill: var(--muted); }
text.cmp-cd { fill: var(--ink); font: 700 13px var(--font-h); }
text.cmp-cd.n { fill: var(--warn); }
.cmp-lubber { fill: var(--sun); }
.cmp-needle { stroke: var(--sun); stroke-width: 2; stroke-linecap: round; }
.cmp-camp { fill: var(--sun); stroke: var(--card); stroke-width: 1; }
.cmp-deg { font: 700 26px var(--font-h); fill: var(--ink); }
.cmp-dir { font: 600 11px var(--font-h); letter-spacing: .18em; fill: var(--muted); }
.cmp-note { margin: 10px 0 0; text-align: left; }
.cmp-card .muted { text-align: left; }
#cmpDial { transition: transform .12s linear; }
