:root{
  color-scheme:dark;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px);
  --space-1:6px;--space-2:10px;--space-3:14px;--space-4:18px;--space-5:24px;--space-6:32px;
  --radius-frame:12px;--radius-inner:8px;--radius-control:8px;
  --font-display:Georgia,"Times New Roman",serif;
  --font-body:"Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;overflow-x:clip}
body{font-family:var(--font-body);-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
a{color:inherit}
svg{display:block}
.is-hidden{display:none!important}
.app-shell{width:min(100%,960px);margin:0 auto;padding:calc(16px + var(--safe-top)) calc(12px + var(--safe-right)) calc(36px + var(--safe-bottom)) calc(12px + var(--safe-left))}
#viewRoot{outline:none}
.stack{display:grid;gap:var(--space-4)}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}
.row{display:flex;align-items:center;gap:var(--space-3)}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:420px){
  .app-shell{padding-left:10px;padding-right:10px}
  .grid-2{gap:10px}
}


/* v3.02 — Cross-theme decorative icon cleanup.
   These icons were rendering as oversized raw SVG shapes in Android WebView.
   Keep functional card/button icons, but remove the large decorative header art. */
.map-list-section > .section-heading h3 > svg{
  display:none!important;
}
.settings-hero-icon{
  display:none!important;
}
.settings-hero{
  grid-template-columns:minmax(0,1fr)!important;
}
.settings-hero > div{
  min-width:0;
}


/* v3.03 — Cross-theme raw-SVG repair.
   Decorative artwork is removed; functional icons are hard-limited so an
   unthemed SVG can never expand into a full-size black shape in WebView. */
.settings-status-icon,
.time-focus-icon,
.time-year-position > span:first-child{
  display:none!important;
}
.settings-status-card{grid-template-columns:minmax(0,1fr)!important}
.time-month-focus{grid-template-columns:minmax(0,1fr) auto!important}
.time-year-position{grid-template-columns:minmax(0,1fr)!important}
.service-month-open svg{display:none!important}
.settings-stat-icon svg,
.toolbox-resource-icon svg,
.time-entry-icon svg,
.native-picker-icon svg,
.service-month-open svg{
  width:22px!important;
  height:22px!important;
  max-width:22px!important;
  max-height:22px!important;
  stroke:currentColor!important;
  fill:none!important;
}
@media(max-width:420px){
  .time-month-focus{grid-template-columns:minmax(0,1fr)!important}
  .time-focus-total{justify-self:start!important}
}


/* v3.05 — Permanent fixed-navigation background shield.
   This is a real DOM layer rather than body::after, so theme artwork and
   pseudo-element cleanup rules cannot accidentally disable it. */
.nav-shield{
  display:none;
  position:fixed;
  top:0;
  left:0;
  right:0;
  height:calc(var(--ui2-dock-top,calc(var(--safe-top) + 5px)) + var(--ui2-nav-dock-height,160px) + 16px);
  z-index:86;
  pointer-events:none;
  background:#050403;
  box-shadow:0 10px 18px rgba(0,0,0,.22);
}
body.ui2-nav-docked .nav-shield{display:block}
body.aqua-glass .nav-shield{
  background:linear-gradient(180deg,#05233a 0%,#075d87 100%);
  box-shadow:0 12px 22px rgba(0,25,52,.34);
}
body.soft-radiance .nav-shield{
  background:linear-gradient(180deg,#fffaf3 0%,#fff3ea 100%);
  box-shadow:0 10px 20px rgba(142,78,61,.12);
}
body.editorial-minimalist .nav-shield{
  background:#f7f5f0;
  box-shadow:0 1px 0 #cbc6be,0 8px 18px rgba(31,29,25,.06);
}

/* =========================================================
   v3.06 — Whole-control color-flash feedback
   No ripple, dot, ring, detached graphic, or delayed action.
   ========================================================= */
:is(button,.action,.menu-button,.settings-row,.settings-toggle-row,.dialog-close,.time-inline-action,.time-scope-option,.time-month-shift,.time-year-shift,.time-goal-option){
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
  transform-origin:center center;
}
.ui2-color-release{
  animation:ui2ColorFlashRelease .18s cubic-bezier(.18,.78,.22,1) both!important;
}
@keyframes ui2ColorFlashRelease{
  0%{transform:translateZ(0) scale(.965)}
  58%{transform:translateZ(0) scale(1.018)}
  100%{transform:translateZ(0) scale(1)}
}
@media(prefers-reduced-motion:reduce){
  .ui2-color-release{animation:none!important;transform:none!important}
}
