/* The working app: quiet paper, precise numbers, generous touch targets.
   Layout only; theme colours remain in app.css for the contrast audit. */
#app { min-height: 100dvh; }
.workspace-brand { display: none; }
#app .view { padding: 1.4rem 1rem 2rem; }
#app h1, #app h2, .login h1 { letter-spacing: -.045em; }
#app h2 { font-size: 1.65rem; font-weight: 650; }
#app h3 { letter-spacing: -.025em; text-transform: none; color: var(--text); }
.eyebrow { margin: 0 0 .5rem; color: var(--muted); font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .14em; }
.workday-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: .4rem 0 1.5rem; }
.workday-heading h1 { font-size: clamp(2rem, 7vw, 3.1rem); line-height: 1.08; margin: 0; font-weight: 600; }
.workday-heading > p { font-size: .76rem; line-height: 1.6; text-align: right; margin: 0; }
.topbar { gap: .65rem; padding: .85rem 1rem; }
.topbar .hello { font-size: .9rem; }
.topbar .small { font-size: .72rem; }
#app .card { border-radius: 20px; box-shadow: 0 3px 12px color-mix(in srgb, var(--text) 3%, transparent); }
#app .timer-card { padding: 0; overflow: hidden; }
.timer-face { position: relative; overflow: hidden; padding: 1.2rem 1.2rem 1.5rem; background: var(--timer-ground); color: var(--timer-ink); isolation: isolate; }
.timer-face::before { content: ''; position: absolute; width: 320px; height: 320px; border: 1px solid var(--timer-line); border-radius: 50%; right: -180px; top: -100px; box-shadow: 0 0 0 28px var(--timer-line), 0 0 0 60px var(--timer-line); opacity: .3; z-index: -1; pointer-events: none; }
.timer-face .muted, .timer-face .discard-btn { color: var(--timer-muted); }
.timer-face .timer-status { color: var(--timer-ink); font-size: .7rem; }
.timer-face .elapsed { font-size: clamp(3.4rem, 17vw, 5.7rem); font-weight: 450; letter-spacing: -.055em; line-height: 1.2; margin: 1rem 0 .65rem; }
.timer-face .project-line { font-size: 1.2rem; }
.timer-face #running-earnings { margin-top: .85rem; font-size: .9rem; color: var(--timer-ink); }
.timer-controls { padding: 1.1rem; }
.timer-controls .adjust { margin-top: 1.3rem; padding-top: 1.1rem; }
.timer-controls label { text-align: left; }
.timer-controls textarea { min-height: 68px; }
.timer-controls .timer-actions { margin-top: 0; }
.sync-label { display: none; }
#app input, #app select, #app textarea, .login input { border-radius: 10px; }
#app .started-line, #app .time-btn { border-radius: 10px; }
#idle-card .card { padding: 1.3rem; }
#idle-card h2 { margin-bottom: .35rem; }
#start-btn { margin-top: 1.2rem; min-height: 56px; }
#today-summary { background: var(--surface); padding: 1.3rem; }
#today-summary h3 { margin: 0 0 1.2rem; font-size: 1.3rem; }
.stat-row > div + div { border-left: 1px solid var(--line); }
.stat-value { font-weight: 550; letter-spacing: -.04em; }
.journal-head { display: flex; gap: .5rem; align-items: center; justify-content: space-between; margin-bottom: .6rem; }
.journal-head h3 { margin: 0; font-size: 1.25rem; }
.journal-head .small-btn { font-size: .75rem; padding: .6rem; min-height: 44px; }
.recent-row { display: flex; justify-content: space-between; gap: .8rem; padding: .9rem 0; border-bottom: 1px solid var(--line); }
.recent-row strong { font-size: .87rem; font-weight: 600; }
.recent-row > div:first-child { min-width: 0; overflow-wrap: anywhere; }
.recent-row .recent-hours { white-space: nowrap; font-variant-numeric: tabular-nums; font-size: .85rem; }
.journal-note { margin: 1.1rem 0 0; line-height: 1.65; }
#app .section-head { margin-bottom: 1.5rem; align-items: center; }
#app .entry { padding: 1rem; border-radius: 14px; border-left: 3px solid var(--line); }
#app .entry:focus-visible, #app .entry:hover { border-left-color: var(--accent); }
#app .entry .title { font-weight: 600; }
#app .entry .meta { margin-top: .25rem; line-height: 1.6; }
#app .entry .hours { font-size: 1rem; font-variant-numeric: tabular-nums; }
#app .bill { border-radius: 16px; padding: 1.2rem; }
#app .summary { background: var(--surface); padding: 1.3rem; }
#app .summary .stat-row { padding-top: .8rem; }
#app .empty { border: 1px dashed var(--line); border-radius: 16px; padding: 2.5rem 1.3rem; background: var(--surface); line-height: 1.7; }
#app .menu-list { border-radius: 18px; overflow: hidden; }
#app .menu-row { padding: 1.25rem 1rem; }
#app .menu-icon { background: var(--surface-2); border: 1px solid var(--line); border-radius: 12px; }
#app .menu-why { line-height: 1.6; }
#app .settings-page > h2 { margin-top: .5rem; }
#app .tabbar { padding-inline: .4rem; }
#app .tab { font-size: .66rem; font-weight: 650; gap: .3rem; }
#app .tab > span { display: grid; place-items: center; }
#app .tab-main > span { width: 50px; height: 50px; }
#app .tab-icon { width: 22px; height: 22px; }
.sheet-inner { border-radius: 24px 24px 0 0; padding: 1.4rem; }
.sheet-head h2 { letter-spacing: -.04em; }
.login { max-width: none; background: radial-gradient(ellipse at top left, color-mix(in srgb, var(--accent) 9%, transparent), transparent 65%); }
.login-inner { padding: 2rem 0; }
.login .brand { text-align: left; margin-bottom: 2rem; }
.login .brand-mark { font-family: Georgia, serif; font-style: italic; color: var(--accent); font-size: 3.6rem; line-height: 1; }
.login .brand h1 { font-size: 2.5rem; margin: .5rem 0; }
.login form { padding: 1.4rem; background: var(--surface); border: 1px solid var(--line); border-radius: 20px; }
.kiosk .k-panel { border-radius: 24px; }
.kiosk .k-pad button { border-radius: 16px; font-weight: 500; }
@media (min-width: 1000px) {
  body:has(#app:not([hidden])) { padding-bottom: 0; }
  #app { padding-left: 216px; }
  .workspace-brand { display: flex; align-items: center; gap: .8rem; position: fixed; top: 30px; left: 24px; z-index: 40; font-size: 1.45rem; font-weight: 650; letter-spacing: -.05em; }
  .workspace-symbol { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; background: var(--accent-fill); color: var(--accent-ink); font: italic 2rem Georgia, serif; }
  .workspace-caption { display: block; margin-top: .1rem; font-size: .62rem; font-weight: 400; letter-spacing: 0; color: var(--muted); }
  #app .topbar { padding: 1.1rem 2.5rem; min-height: 82px; }
  .sync-label { display: block; max-width: 210px; text-align: right; }
  #app .view { max-width: 1140px; padding: 2.4rem 2.5rem 3rem; }
  #app .tabbar { inset: 0 auto 0 0; width: 216px; height: 100dvh; padding: 124px 16px 24px; flex-direction: column; justify-content: flex-start; gap: .5rem; border: 0; border-right: 1px solid var(--line); background: var(--surface); }
  #app .tab { flex: none; flex-direction: row; justify-content: flex-start; gap: .85rem; width: 100%; min-height: 50px; padding: .85rem 1rem; border-radius: 10px; font-size: .85rem; }
  #app .tab-main { order: -1; }
  #app .tab > span, #app .tab-main > span { width: 24px; height: 24px; margin: 0; background: none; color: inherit; outline: none; border: 0; box-shadow: none; }
  #app .tab.active { background: var(--surface-2); color: var(--accent); }
  #app #settings-tab { margin-top: auto; }
  #view-clock { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(260px, 1fr); gap: 1.25rem 1.75rem; align-items: start; }
  .workday-heading, #pin-nudge { grid-column: 1 / -1; }
  .workday-heading { margin: 0 0 .8rem; }
  .workday-heading > p { font-size: .85rem; }
  #running-card, #idle-card { grid-column: 1; grid-row: 2; }
  #view-clock:has(#pin-nudge:not([hidden])) #running-card, #view-clock:has(#pin-nudge:not([hidden])) #idle-card { grid-row: 3; }
  .day-overview { grid-column: 2; display: grid; gap: 1.25rem; }
  #today-summary, .day-journal { margin: 0; }
  .timer-face { padding: 1.5rem 1.5rem 1.8rem; }
  .timer-controls { padding: 1.4rem; }
  #view-entries .list, #bills-list { gap: .8rem; }
  #app .entry { padding: 1.2rem 1.4rem; }
  #app .filters { max-width: 640px; }
  #settings-menu { max-width: 820px; }
  #expense-form-panel { max-width: 780px; margin: auto; }
  #app .fab { right: 2.5rem; bottom: 2rem; }
  .sheet { align-items: center; }
  .sheet-inner { border-radius: 24px; }
}
@media (max-width: 359px) {
  .workday-heading > p { display: none; }
  .topbar { gap: .35rem; }
  #app .view { padding-inline: .75rem; }
}
@media (prefers-reduced-motion: no-preference) {
  #app .view { animation: workspace-in .24s ease-out; }
  @keyframes workspace-in { from { opacity: .4; transform: translateY(5px); } to { opacity: 1; transform: none; } }
}
