/* Shared touch controls: room for labels and clear separation between actions. */
button{line-height:1.5;padding:12px 18px;border-radius:14px;max-width:100%;white-space:normal;overflow-wrap:anywhere;background:var(--bg,#f6f7f2)}
.primary,.soft-button,.danger,.text-button,.metric-pills button,.chip,.header-actions button,.auth-switch button{padding:12px 18px;border-radius:14px}
.soft-button,.primary,.danger,.text-button,a.soft-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center;text-decoration:none;box-sizing:border-box}
button,.soft-button,.text-button,.icon-button,.add-slot,.member button,.handoff button,#toast button{min-height:48px}
.button-row,.action-group{display:flex;flex-wrap:wrap;align-items:stretch;gap:14px;margin-top:16px}
.button-row>*,.action-group>*{flex:1 1 160px;min-width:0;max-width:100%;margin:0}
.button-row>.primary,.action-group>.primary{width:auto;margin:0}
.metric-pills,.chips{gap:12px;margin-block:16px}
.quick-grid,.amount-grid{gap:14px}
.quick-button{padding:14px 12px;gap:10px;min-height:100px}
.amount-grid button{padding:14px 18px;min-height:88px}
.secondary-row{gap:14px;flex-wrap:wrap;margin-top:16px}
.secondary-row>*{flex:1 1 140px;min-width:0}
.section-row,.member{gap:14px;flex-wrap:wrap}
.header-actions{gap:12px}
.member button,.handoff button,.auth-switch button,.add-slot,.conflicts .soft-button{font-size:17px}
#toast button{padding:10px 14px;font-size:17px;border-radius:12px;background:#ffffff12}
.dialog-head{gap:16px;align-items:flex-start;margin-bottom:24px;position:sticky;top:0;z-index:1;background:var(--paper,#fff)}
.dialog-head h2{flex:1;min-width:0;font-size:20px;line-height:1.5;overflow-wrap:anywhere}
.dialog-head button{flex:none;width:auto;padding:10px 16px;border-radius:14px;line-height:1.5}
dialog>button,dialog>a.soft-button,.card>button:not(.task-card):not(.event-row):not(.slot-head):not(.trend-detail),form>button,.report-controls>button{margin-top:16px}
dialog>button,form>button{width:100%}
dialog .action-group+button,dialog .button-row+button{margin-top:16px}
.amount-control{gap:12px}
.amount-control button{flex:0 0 52px;width:52px;min-width:52px;min-height:52px;padding:8px}
.date-nav{display:grid;grid-template-columns:48px minmax(0,1fr) auto 48px;gap:8px}
.date-nav input{width:100%;min-width:0;font-size:14px}
.date-nav .icon-button{width:48px;min-height:48px;padding:8px;border-radius:14px}
.date-nav [data-today]{padding:10px 12px}
.bottom-nav{gap:6px}
.nav-item{padding:8px 4px;gap:6px;min-height:72px;border-radius:14px}
.large button,.large .soft-button{min-height:56px}
.large .button-row>*,.large .action-group>*{flex-basis:190px}
.large .quick-button{min-height:112px;gap:12px}
.large .amount-grid button{min-height:96px}
.large .amount-control button{flex-basis:56px;width:56px;min-width:56px;min-height:56px}
.large .nav-item{min-height:80px}
.large .add-slot,.large .handoff button,.large .auth-switch button,.large .conflicts .soft-button,.large .dialog-head button{font-size:20px}
.large .dialog-head h2{font-size:22px}
.large .date-nav{grid-template-columns:56px minmax(0,1fr) 56px}
.large .date-nav [data-day="-1"]{grid-area:1/1}
.large .date-nav input{grid-area:1/2;font-size:20px}
.large .date-nav [data-day="1"]{grid-area:1/3}
.large .date-nav [data-today]{grid-area:2/1/3/4}
.large .date-nav .icon-button{width:56px}
.toolbar{align-items:center;flex-wrap:wrap;gap:16px}
.toolbar button,.toolbar a{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:12px 18px;min-height:48px;border-radius:14px;font-size:17px;line-height:1.5;text-decoration:none}
@media(max-width:360px){
 .date-nav{grid-template-columns:48px minmax(0,1fr) 48px}
 .date-nav [data-day="-1"]{grid-area:1/1}
 .date-nav input{grid-area:1/2;font-size:16px}
 .date-nav [data-day="1"]{grid-area:1/3}
 .date-nav [data-today]{grid-area:2/1/3/4}
 .large .date-nav input{font-size:20px}
}
.task-advanced{margin:12px 0;border:1px solid var(--line);border-radius:12px}
.task-advanced>summary{list-style:none;position:relative;padding:12px 40px 12px 14px;min-height:52px;font-size:17px}
.task-advanced>summary::-webkit-details-marker{display:none}
.task-advanced>summary::after{content:'＋';position:absolute;right:14px;top:12px;color:var(--green)}
.task-advanced[open]>summary::after{content:'−'}
.task-advanced .advanced-title{display:block;font-weight:600}
.task-advanced summary .subtle{display:block;margin-top:2px;line-height:1.5;overflow-wrap:anywhere}
.task-advanced .advanced-body{padding:0 14px 14px;border-top:1px solid var(--line)}
.task-form-footer{position:sticky;bottom:-24px;z-index:1;margin-top:16px;padding:12px 0;background:var(--paper);border-top:1px solid var(--line)}
.task-form-footer .primary{width:100%;margin:0}
.large .task-advanced>summary{font-size:20px}
.voice-entry{width:100%;margin:0 0 16px;display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left}
.voice-entry span{font-size:14px;font-weight:400;color:var(--muted)}
.voice-help{line-height:1.6;margin:0 0 12px}
#voice-input{margin:10px 0}
#voice-input>summary{line-height:1.5;overflow-wrap:anywhere;color:var(--green);font-size:16px}
#voice-input[open]>summary{padding-top:0}
.voice-context{padding:10px 12px;border-radius:10px;background:var(--soft);font-size:15px;overflow-wrap:anywhere}
.voice-input-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.voice-input-actions button{flex:1;min-width:120px}
.voice-input-actions [hidden]{display:none}
.voice-examples{margin-top:12px;color:var(--muted)}
.voice-examples summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
#voice-text{resize:vertical;min-height:88px}
#voice-status{line-height:1.5;overflow-wrap:anywhere}
.voice-card{border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:12px}
.voice-card h3{margin:0 0 8px}
.voice-card label{margin:10px 0 4px}
.voice-card input,.voice-card select{max-width:100%;min-width:0}
.voice-change{padding:12px;border:1px solid var(--line);border-radius:12px;margin-top:12px}
.voice-change button{margin:6px 4px 0 0}
.voice-footer{position:sticky;bottom:-24px;padding:12px 0;margin-top:12px;background:var(--paper);z-index:2;border-top:1px solid var(--line)}
.voice-footer button{width:100%;margin:0}
.large .voice-entry span,.large .voice-context{font-size:18px}
.large .voice-card{padding:12px}
.night-preference{border-top:1px solid var(--line);padding:12px 0}
.night-preference label{margin-top:0}
.night-preference select{min-height:48px}
.night-preference .subtle{margin-top:8px;line-height:1.5;overflow-wrap:anywhere}
.large .night-preference select{font-size:20px;min-height:56px}
