:root{--muted:#50675b}button,input,select,summary{min-height:48px}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #b7750c;outline-offset:3px}button:disabled{opacity:.45;cursor:default}.app{padding-bottom:135px}.ball{font-size:2rem}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.quick-result{min-height:70px;text-align:left;padding:12px}.quick-result strong{display:block;font-size:1rem}.quick-result span{display:block;font-size:.73rem;font-weight:400;margin-top:4px;line-height:1.35}#quickEntry p{margin:16px 0 9px}details{margin-top:14px;border-top:1px solid var(--line)}summary{cursor:pointer;font-weight:650;padding:14px 0}#clubChoices{margin-top:12px}#clubChoices label{display:block;margin-bottom:5px}#offlineStatus{font-size:.75rem;margin:-4px 0 12px}footer{padding-bottom:max(8px,env(safe-area-inset-bottom))}.footer-inner{align-items:center}.footer-inner button{flex:1}.jump-label{display:flex;align-items:center;gap:6px;font-size:.85rem}.jump-label input{width:70px;padding:8px}#saveStatus{max-width:760px;margin:6px auto 0;font-size:.78rem;min-height:18px}.nav{margin-top:6px}.progress-wrap{margin-top:8px}#installApp{margin-bottom:12px}.tabs{margin-bottom:10px}@media(max-width:380px){.quick-result{padding:9px}.quick-result strong{font-size:.9rem}.ball{font-size:1.7rem}.card{padding:12px}.app{padding-bottom:135px}}
#shotDetails:not([open])+.nav{grid-template-columns:1fr}#shotDetails:not([open])+.nav #saveNextBtn{display:none}

/* Coaching stays compact; explanations open only when requested. */
.coach-line{display:flex;align-items:center;gap:8px;margin-top:8px}
.cue{font-size:.9rem;font-weight:650;color:var(--green);line-height:1.4;margin:6px 0}
.coach-line .cue{flex:1}
.info-button{width:48px;min-width:48px;min-height:48px;padding:8px;font-size:1.1rem;background:transparent;border-color:transparent}
.label .info-button{vertical-align:middle}
.label:has(.info-button){margin-top:6px;margin-bottom:0}
.context-line{font-size:.84rem;margin:4px 0 8px;line-height:1.5;color:var(--green)}
#quickEntry p{margin:8px 0}
.three-results button:last-child{grid-column:1/-1}
.three-results .quick-result{min-height:62px}
#adaptivePanel{margin:4px 0 8px;border:1px solid var(--line);border-radius:12px;padding:0 10px;font-size:.86rem}
#adaptivePanel summary{padding:12px 0;font-size:.85rem}
#adaptivePanel ol{padding-left:22px;line-height:1.7}
#adaptivePanel label{display:block;margin:14px 0 6px}
#adaptivePanel button{width:100%;margin-top:8px}
#situationPanel{font-size:.85rem}
#onboardingCard h2,#guidanceCard h2{font-size:1.35rem;margin:10px 0}
#onboardingCard p,#guidanceCard p{line-height:1.5}
#startSection{width:100%;margin-top:12px}
.check-label{display:flex;align-items:center;gap:10px;font-size:.85rem;min-height:48px;margin:8px 0}
.check-label input{width:22px;height:22px;min-height:22px;flex:none;accent-color:var(--green)}
label.label{display:block}
#settingsPanel>label:not(.check-label){display:block;margin-top:10px;margin-bottom:6px}
#settingsPanel summary{padding:0;display:flex;align-items:center}
#settingsPanel[open] summary{padding-bottom:10px}
dialog{border:1px solid var(--line);border-radius:18px;padding:24px;max-width:min(440px,calc(100vw - 28px));max-height:80dvh;color:var(--ink);box-shadow:var(--shadow)}
dialog::backdrop{background:rgba(23,32,25,.4)}
dialog p{line-height:1.6}dialog h2{font-size:1.2rem;margin-top:0}
#observations h3{font-size:1rem;margin:14px 0 6px}
#observations p{margin:0 0 12px;line-height:1.5}
#solidChart svg{display:block;width:100%;max-height:230px}
#solidChart text{font:10px system-ui;fill:#50675b}
#trends h2{font-size:1.15rem;margin-top:0}
#trends>label{display:block;margin-bottom:6px}
#trendRates{margin-top:16px}
.table-scroll{overflow:auto}
#trendText{font-size:.9rem;line-height:1.5}
#primaryMissTags{margin-bottom:10px}
.stat b{overflow-wrap:anywhere}
.target-box{max-width:46%;overflow-wrap:anywhere}
.section{font-size:.8rem;max-width:190px}
.app{padding-bottom:145px}
footer{z-index:5}
@media(max-width:380px){.quick-result{min-height:62px}.quick-result span{font-size:.69rem}.card{margin-bottom:10px}.shot-head{gap:8px}.section{font-size:.74rem}.app{padding-top:8px}}
@media(prefers-reduced-motion:reduce){.progress{transition:none}button:active{transform:none}}
@media(max-height:740px) and (max-width:520px){
  .session-progress{padding:8px 14px;margin-bottom:8px}
  .session-progress #sessionDate{display:none}
  .session-progress .progress-wrap{margin:0;height:6px}
  #shotCard{padding:12px}
  .quick-result{min-height:56px;padding:9px}
  .quick-result span{font-size:.7rem}
  .coach-line{margin-top:2px}
  header{margin-bottom:8px}
  .tabs{margin-bottom:8px}
}
#newRangeFields{margin-top:12px}#newRangeFields label{display:block;margin-bottom:6px}#saveRange{margin-top:8px}

/* 100balls: deep forest green, mint and warm white. */
.brand{display:flex;align-items:center;gap:9px;min-width:0}.brand img{display:block;flex:none;border-radius:12px}.brand h1{font-size:1.55rem;font-weight:800;letter-spacing:-.055em;line-height:1.05;color:var(--green)}.brand .small{font-size:.72rem;margin-top:4px}.tabs{background:#e6eee7;border-radius:16px;padding:4px;gap:4px}.tabs button{background:transparent;border-color:transparent;border-radius:12px}.tabs button.sel{background:var(--green);color:#fff;border-color:var(--green)}.progress-wrap{background:#dce8df}.target-box{color:var(--green)}.stat{background:#f6faf6}.quick-result{border-color:#bdd2c3;background:#f8fbf8}.quick-result strong{color:var(--green)}.quick-result:active{background:var(--green2)}#newSessionTop{font-size:.82rem;padding:10px 12px;border-color:#bdd2c3;color:var(--green)}#solidChart text{fill:var(--muted)}
@media(max-width:380px){.brand{gap:7px}.brand img{width:38px;height:38px}.brand h1{font-size:1.4rem}#newSessionTop{padding:9px}}
.quick-result.primary{background:var(--green);border-color:var(--green);color:#fff}.quick-result.primary strong{color:#fff}.quick-result.primary:active{background:#063b23}

#oneDrivePanel h2{font-size:1.15rem;margin-top:0}#oneDrivePanel p{line-height:1.5;overflow-wrap:anywhere}#oneDrivePanel .actions button{flex:1 1 140px}#oneDriveStatus{font-size:.9rem;color:var(--green)}

/* Session completion and history: short primary path, optional detail. */
#sessionEnding h2,#recentSessions h2{font-size:1.15rem;margin:0 0 12px}#sessionEnding>button{width:100%;margin-top:10px}#earlyFinishFields label{display:block;margin-bottom:6px}#reflectionPanel>summary{padding:0;display:flex;align-items:center}#reflectionPanel[open]>summary{padding-bottom:12px}.result-word{font-size:1rem!important;overflow-wrap:normal!important}.session-card h3{font-size:1rem;margin:0;overflow-wrap:anywhere}.session-highlights{display:flex;gap:16px;flex-wrap:wrap;font-size:.85rem}.session-highlights b{color:var(--green)}.session-card details p,.session-card li{font-size:.85rem;line-height:1.5}.session-card details summary{padding-bottom:0}.session-card details[open] summary{padding-bottom:10px}#oneDrivePanel>summary{padding:0;min-height:48px}#backupSummary{display:block;margin:4px 0 0;font-weight:400}#newSessionDialog label{display:block;margin:12px 0 6px}#newSessionDialog .actions button{flex:1}#newSessionDialog{width:420px}

#otherResult{width:100%;margin-top:8px;font-size:.85rem;color:var(--green)}#preciseEntry .btnrow button{min-height:60px;padding:10px 5px;font-size:.85rem}#preciseEntry .small{margin:10px 0}#preciseEntry button.sel{background:var(--green);color:#fff}

#shotDetails:not([open])+.nav{display:none}.nav{grid-template-columns:1fr}#editShotsDialog{width:360px}#editShotsDialog label{display:block;margin:16px 0 6px}#editShotsDialog .actions button{flex:1}#editShotsDialog #prevBtn{width:100%}#jumpError{font-size:.85rem;color:#8b2525}

.finish-backup{background:var(--green2);border-radius:12px;padding:10px 12px;margin-top:10px;font-size:.85rem;line-height:1.5}.finish-backup p{margin:0}.finish-backup button{margin-top:8px;width:100%}

.sync-panel p{font-size:.85rem;line-height:1.5}.sync-panel #syncHistoryNow{width:100%}.conflict-button{width:100%;margin:8px 0 14px;border-color:#c8a84f;background:var(--amber)}#syncConflictDialog{width:460px}#syncVersionPreview{font-size:.85rem;line-height:1.5;overflow-wrap:anywhere}#syncConflictDialog label{display:block;margin:10px 0 6px}#syncConflictDialog .actions button{flex:1}
.history-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:16px 0}.history-heading h2{margin:0}.history-sync-brief{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.8rem}.history-sync-brief button{min-height:44px;padding:8px 12px}#historySyncBadge{padding:7px 10px;border-radius:12px;background:#edf2ef;color:#354f43;max-width:100%;overflow-wrap:anywhere}#historySyncBadge[data-state="synced"]{background:#dcf2e5;color:#075033}#historySyncBadge[data-state="attention"]{background:#fff1cf;color:#6b4600}#historySyncBadge[data-state="syncing"]{background:#e4f0f6;color:#235069}
#unfinishedPracticeDialog{width:420px}#unfinishedPracticeDialog h2{margin-top:0}#resumePracticeCount{font-size:1.4rem;font-weight:750;margin:16px 0 8px}#resumePracticeDetails{line-height:1.6;overflow-wrap:anywhere}.resume-actions{display:grid;gap:10px;margin-top:20px}.resume-actions button{min-height:50px}
.app-update p{margin:0 0 10px;font-size:.9rem;line-height:1.5}.app-update .actions button{min-height:44px;flex:1}.app-update[hidden]{display:none}
