.routine-section{border-top:1px solid var(--nd-border-subtle);color:var(--nd-text-primary);margin-top:16px;padding-top:12px}.routine-section-head{justify-content:space-between;align-items:center;gap:10px;min-height:38px;display:flex}.routine-workspace{max-width:760px;margin:0 auto;padding:16px 0 40px}.routine-workspace[hidden]{display:none}.routine-workspace .routine-section{border-top:0;margin-top:0;padding-top:0}.routine-workspace h1{font-size:var(--ui-font-page);font-weight:var(--ui-weight-semibold);line-height:var(--ui-leading-heading);margin:0}.routine-workspace h2{font-size:var(--ui-font-section);font-weight:var(--ui-weight-semibold);line-height:var(--ui-leading-heading);margin:0}.routine-workspace h2 small{font-size:var(--ui-font-caption);color:var(--ui-text-muted);font-weight:400}.routine-workspace-today{padding-top:0}.routine-today .routine-week-strip{display:none}.routine-today .routine-row{grid-template-columns:minmax(0,1fr) auto}.routine-head-actions{align-items:center;gap:2px;display:inline-flex}.routine-collapse,.routine-add,.routine-more{min-height:var(--ui-control);border-radius:var(--ui-radius-sm);color:var(--nd-text-secondary);font:inherit;font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium);background:0 0;border:0;align-items:center;gap:6px;padding:5px 7px;display:inline-flex}.routine-collapse{color:var(--nd-text-primary);font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium)}.routine-collapse svg{transition:transform var(--ui-motion-fast,.15s) ease}.routine-collapse[aria-expanded=false] svg{transform:rotate(-90deg)}.routine-collapse small{border-radius:var(--ui-radius-badge);background:var(--nd-surface-subtle);min-width:20px;color:var(--nd-text-tertiary);font-size:var(--ui-font-caption);padding:1px 6px}.routine-add{color:var(--nd-accent);font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium)}.routine-collapse:hover,.routine-add:hover,.routine-more:hover{background:var(--nd-surface-subtle);color:var(--nd-text-primary)}.routine-empty{justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:4px;display:flex}.routine-empty p{color:var(--nd-text-tertiary);font-size:var(--ui-font-label);margin:0}.routine-empty button{min-height:var(--ui-control);color:var(--nd-accent);font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium);white-space:nowrap;background:0 0;border:0}.routine-list{margin:0;padding:0;list-style:none}.routine-row{--routine-color:var(--nd-accent);border-bottom:1px solid var(--nd-border-subtle);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-height:58px;padding:7px 2px;display:grid}.routine-row:last-child{border-bottom:0}.routine-amber{--routine-color:#b97818}.routine-blue{--routine-color:#3b82b8}.routine-green{--routine-color:#3f9867}.routine-coral{--routine-color:#c76556}.routine-violet{--routine-color:#8269bd}.routine-row-main{min-width:0;color:inherit;text-align:left;background:0 0;border:0;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:9px;padding:0;display:grid}.routine-icon{border-radius:var(--ui-radius-sm);background:color-mix(in srgb, var(--routine-color) 13%, var(--nd-surface));width:30px;height:30px;color:var(--routine-color);place-items:center;display:grid}.routine-row-copy{gap:2px;min-width:0;display:grid}.routine-row-copy strong{font-size:var(--ui-font-body);line-height:var(--ui-leading-body);text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.routine-row-copy>span{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption)}.routine-progress{border-radius:var(--ui-radius-badge);background:var(--nd-surface-subtle);width:min(180px,100%);height:3px;display:block;overflow:hidden}.routine-progress b{border-radius:inherit;background:var(--routine-color);height:100%;transition:width var(--ui-motion-fast,.15s) ease;display:block}.routine-week-strip{grid-template-columns:repeat(7,23px);gap:3px;display:grid}.routine-day{border:1px solid var(--nd-border-subtle);border-radius:var(--ui-radius-sm);width:23px;min-height:28px;color:var(--nd-text-tertiary);font:inherit;font-size:var(--ui-font-caption);background:0 0;grid-template-rows:repeat(2,12px);place-items:center;padding:1px 0;line-height:1;display:grid}.routine-day small{color:currentColor;font-size:var(--ui-font-caption);font-weight:var(--ui-weight-semibold)}.routine-day span{font-size:var(--ui-font-caption)}.routine-day:focus-visible{outline:2px solid var(--routine-color);outline-offset:1px}.routine-day.today{border-color:var(--routine-color);box-shadow:none}.routine-day-achieved{border-color:var(--routine-color);background:var(--routine-color);color:#fff}.routine-day-partial{border-color:var(--routine-color);background:color-mix(in srgb, var(--routine-color) 28%, transparent)}.routine-day-skipped{border-style:dashed}.routine-day-not_scheduled,.routine-day-future{border-color:var(--nd-border-subtle);background:var(--nd-surface-subtle);opacity:.78}.routine-record{min-width:60px;min-height:var(--ui-control);border:1px solid color-mix(in srgb, var(--routine-color) 45%, var(--nd-border-subtle));border-radius:var(--ui-radius-sm);background:color-mix(in srgb, var(--routine-color) 10%, var(--nd-surface));color:var(--routine-color);font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium);white-space:nowrap;padding:5px 10px}.routine-record-achieved{background:var(--routine-color);color:#fff}.routine-record:disabled{opacity:.55}.routine-more{color:var(--nd-text-tertiary);font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium);margin:3px auto 0;display:flex}.routine-error{color:var(--nd-danger);font-size:var(--ui-font-caption);margin:6px 0 0}.routine-sync{color:var(--nd-text-secondary);font-size:var(--ui-font-caption);margin:6px 0 0}.routine-sync-row{align-items:center;gap:8px;display:flex}.routine-sync-row button{min-height:var(--ui-control-sm);border-radius:var(--ui-radius-sm);color:inherit;font:inherit;font-weight:var(--ui-weight-medium);font-size:var(--ui-font-label);background:0 0;border:1px solid;padding:4px 8px}.routine-overlay{z-index:90;background:#0a0c106b;border:0;justify-content:flex-end;width:100%;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;display:flex;position:fixed;inset:0}.routine-overlay:not([open]){display:none}.routine-overlay::backdrop{background:0 0}html:has(.routine-overlay[open]){overflow-y:hidden}.routine-overlay :is(button,summary,input,select,textarea):focus-visible{outline:2px solid var(--nd-accent);outline-offset:2px}.routine-dialog,.routine-detail{border-left:1px solid var(--nd-border-subtle);background:var(--nd-surface);width:min(480px,94vw);height:100dvh;color:var(--nd-text-primary);box-shadow:var(--ui-shadow-popover);overflow:hidden}.routine-dialog{padding:0 22px 24px;overflow-y:auto}.routine-dialog>header,.routine-detail>header{border-bottom:1px solid var(--nd-border-subtle);justify-content:space-between;align-items:center;gap:12px;min-height:62px;display:flex}.routine-dialog header h2,.routine-detail header h2{font-size:var(--ui-font-section);font-weight:var(--ui-weight-semibold);line-height:var(--ui-leading-heading);margin:0}.routine-dialog header button,.routine-detail header button,.routine-calendar-head button{border-radius:var(--ui-radius-sm);width:40px;height:40px;color:var(--nd-text-secondary);background:0 0;border:0;place-items:center;display:grid}.routine-dialog header button:hover,.routine-detail header button:hover,.routine-calendar-head button:hover{background:var(--nd-surface-subtle);color:var(--nd-text-primary)}.routine-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding-top:18px;display:grid}.routine-field{min-width:0;color:var(--nd-text-secondary);font-size:var(--ui-font-label);font-weight:var(--ui-weight-medium);gap:6px;display:grid}.routine-field-wide,.routine-weekdays,.routine-form-more,.routine-form-actions,.routine-form>.routine-error{grid-column:1/-1}.routine-field :is(input,select),.routine-date-editor :is(input,textarea){width:100%;min-height:var(--ui-control);border:1px solid var(--nd-border-subtle);border-radius:var(--ui-radius-sm);background:var(--nd-surface-subtle);color:var(--nd-text-primary);font:inherit;padding:7px 9px}.routine-field :is(input,select):focus-visible,.routine-date-editor :is(input,textarea):focus-visible{outline:2px solid var(--nd-accent);outline-offset:1px}.routine-number{grid-template-columns:minmax(0,1fr) minmax(42px,.6fr);align-items:center;gap:6px;display:grid}.routine-form-hint{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption);grid-column:1/-1;margin:-4px 0 0}.routine-weekdays{border:0;flex-wrap:wrap;gap:6px;margin:0;padding:0;display:flex}.routine-weekdays legend{width:100%;color:var(--nd-text-secondary);font-size:var(--ui-font-caption);font-weight:var(--ui-weight-semibold);margin-bottom:4px}.routine-weekdays label{position:relative}.routine-weekdays input{opacity:0;position:absolute}.routine-weekdays span{border:1px solid var(--nd-border-subtle);border-radius:var(--ui-radius-sm);width:40px;height:40px;color:var(--nd-text-secondary);font-size:var(--ui-font-caption);place-items:center;display:grid}.routine-weekdays input:checked+span{border-color:var(--nd-accent);background:var(--nd-accent-soft);color:var(--nd-accent);font-weight:var(--ui-weight-semibold)}.routine-weekdays input:focus-visible+span{outline:2px solid var(--nd-accent);outline-offset:2px}.routine-form-more{border-top:1px solid var(--nd-border-subtle);padding-top:10px}.routine-form-more summary{min-height:var(--ui-control);cursor:pointer;color:var(--nd-text-secondary);font-size:var(--ui-font-caption);font-weight:var(--ui-weight-semibold)}.routine-form-more>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.routine-notify{min-height:var(--ui-control);color:var(--nd-text-secondary);font-size:var(--ui-font-caption);grid-column:1/-1;align-items:center;gap:8px;display:flex}.routine-form-actions{justify-content:flex-end;gap:8px;display:flex}.routine-manage ul{margin:12px 0 0;padding:0;list-style:none}.routine-manage li{border-bottom:1px solid var(--nd-border-subtle)}.routine-manage li>button{width:100%;min-height:58px;color:var(--nd-text-primary);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:12px;padding:8px 4px;display:flex}.routine-manage li>button:hover{background:var(--nd-surface-subtle)}.routine-manage li span{gap:2px;min-width:0;display:grid}.routine-manage li strong{font-size:var(--ui-font-label);text-overflow:ellipsis;white-space:nowrap;font-weight:var(--ui-weight-semibold);overflow:hidden}.routine-manage li small,.routine-manage>p{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption)}.routine-detail{flex-direction:column;display:flex}.routine-detail>header{flex:none;padding:0 22px}.routine-detail>header>div{min-width:0}.routine-detail>header span{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption)}.routine-detail>header h2{text-overflow:ellipsis;white-space:nowrap;font-weight:var(--ui-weight-semibold);line-height:var(--ui-leading-heading);font-size:var(--ui-font-section);overflow:hidden}.routine-detail-scroll{overscroll-behavior:contain;flex:1;min-height:0;padding:20px 22px;overflow-y:auto}.routine-day-summary,.routine-week-summary{border-radius:var(--ui-radius-md);background:var(--nd-surface-subtle);padding:14px}.routine-day-summary{margin-bottom:8px}.routine-day-summary>div:first-child,.routine-week-summary>div:first-child{justify-content:space-between;gap:10px;display:flex}.routine-day-summary strong,.routine-week-summary strong{font-size:var(--ui-font-body);font-weight:var(--ui-weight-semibold)}.routine-day-summary span,.routine-week-summary span{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption)}.routine-day-bar,.routine-week-bar{border-radius:var(--ui-radius-badge);background:var(--nd-border-subtle);height:6px;margin-top:11px;overflow:hidden}.routine-day-bar span,.routine-week-bar span{background:var(--routine-color);height:100%;display:block}.routine-week-help{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption);margin-top:8px}.routine-week-help summary{cursor:pointer;text-underline-offset:2px;width:max-content;min-height:24px;text-decoration:underline}.routine-week-help p{line-height:var(--ui-leading-body);margin:3px 0 0}.routine-calendar{margin-top:22px}.routine-calendar-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.routine-calendar-head strong{font-size:var(--ui-font-body);font-weight:var(--ui-weight-semibold)}.routine-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.routine-calendar-weekday{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption);text-align:center;padding:5px 0}.routine-calendar-day{aspect-ratio:1;border-radius:var(--ui-radius-sm);min-width:0;color:var(--nd-text-secondary);font-size:var(--ui-font-caption);background:0 0;border:1px solid #0000;place-items:center;display:grid;position:relative}.routine-calendar-day svg{position:absolute;bottom:2px;right:2px}.routine-calendar-day i{background:var(--routine-color);border-radius:50%;width:6px;height:6px;position:absolute;bottom:4px;right:4px}.routine-calendar-day small{position:absolute;bottom:2px;right:4px}.routine-calendar-day.routine-day-achieved{background:var(--routine-color);color:#fff}.routine-calendar-day.routine-day-partial{border-color:color-mix(in srgb, var(--routine-color) 55%, transparent);background:color-mix(in srgb, var(--routine-color) 23%, var(--nd-surface));color:var(--nd-text-primary)}.routine-calendar-day.routine-day-missed{background:color-mix(in srgb, var(--nd-danger) 7%, transparent)}.routine-calendar-day.routine-day-skipped{border-style:dashed;border-color:var(--nd-border)}.routine-calendar-day.routine-day-not_scheduled,.routine-calendar-day.routine-day-future{color:var(--nd-text-tertiary);opacity:.72}.routine-calendar-day.today{outline:1px solid var(--routine-color);outline-offset:1px}.routine-calendar-day.selected{border-color:var(--nd-text-primary);box-shadow:none}.routine-date-editor{border-top:1px solid var(--nd-border-subtle);gap:12px;margin-top:22px;padding-top:18px;display:grid}.routine-date-editor>div:first-child{justify-content:space-between;gap:8px;display:flex}.routine-date-editor h3{font-size:var(--ui-font-body);font-weight:var(--ui-weight-semibold);line-height:var(--ui-leading-heading);margin:0}.routine-date-editor>div>span,.routine-date-editor p{color:var(--nd-text-tertiary);font-size:var(--ui-font-caption);margin:0}.routine-date-editor label{color:var(--nd-text-secondary);font-size:var(--ui-font-caption);gap:5px;display:grid}.routine-date-actions{flex-wrap:wrap;gap:7px;display:flex}.routine-detail>footer{border-top:1px solid var(--nd-border-subtle);background:var(--nd-surface);flex-wrap:wrap;align-items:center;gap:7px;padding:12px 22px;display:flex}.routine-detail>footer .link-btn{align-items:center;gap:5px;margin-left:auto;display:inline-flex}@media (max-width:720px){.routine-week-strip{display:none}.routine-row{grid-template-columns:minmax(0,1fr) auto}.routine-section{margin-top:12px}.routine-empty{flex-direction:column;align-items:flex-start;gap:2px}.routine-empty button{margin-left:-7px}.routine-dialog,.routine-detail{width:100vw;max-width:100vw;box-shadow:none;border-left:0}.routine-dialog,.routine-detail>header,.routine-detail-scroll,.routine-detail>footer{padding-inline:14px}.routine-form{grid-template-columns:minmax(0,1fr)}.routine-field-wide,.routine-weekdays,.routine-form-more,.routine-form-actions,.routine-form-hint,.routine-form>.routine-error{grid-column:auto}.routine-form-more>div{grid-template-columns:minmax(0,1fr)}.routine-notify{grid-column:auto}.routine-calendar-grid{gap:2px}.routine-calendar-day{border-radius:var(--ui-radius-sm)}.routine-collapse,.routine-add,.routine-more,.routine-record,.routine-dialog header button,.routine-detail header button,.routine-calendar-head button{min-height:var(--ui-touch-target)}.routine-dialog header button,.routine-detail header button,.routine-calendar-head button{width:44px;height:44px}}.routine-held-list{gap:12px;margin:12px 0 0;padding:0;list-style:none;display:grid}.routine-held-record{border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);background:var(--ui-surface);font-size:var(--ui-font-label);line-height:var(--ui-leading-body);overflow-wrap:anywhere;padding:14px}.routine-held-record>strong{color:var(--ui-text);word-break:keep-all;font-weight:var(--ui-weight-semibold);display:block}.routine-held-record p{margin:8px 0}.routine-held-record summary{cursor:pointer;min-height:var(--ui-touch-target);align-content:center;display:list-item}.routine-held-record ol{padding-left:22px;list-style:decimal}.routine-held-note{white-space:pre-wrap}.routine-held-badge{color:var(--ui-text-muted);font-size:var(--ui-font-caption);display:block}.routine-held-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.routine-held-actions .btn{min-height:var(--ui-touch-target);white-space:normal}@media (prefers-reduced-motion:reduce){.routine-collapse svg,.routine-progress b{transition:none}}.routine-draft-conflict{border:1px solid var(--nd-border);border-radius:var(--ui-radius-md);background:var(--nd-surface-subtle);padding:12px}.routine-draft-conflict p{line-height:var(--ui-leading-body);word-break:keep-all}.routine-draft-conflict dl{font-size:var(--ui-font-caption);gap:10px;margin:12px 0;display:grid}.routine-draft-conflict dt{font-weight:var(--ui-weight-semibold)}.routine-draft-conflict dd{white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0}.routine-draft-conflict .btn{min-height:var(--ui-touch-target)}.routine-draft-hint{line-height:var(--ui-leading-body)}
