:root{--bg: #0b1020;--bg-2: #0f172a;--surface: #18213a;--surface-2: #1f2a48;--border: #283454;--text: #f1f5f9;--text-dim: #94a3b8;--text-mute: #64748b;--primary: #a78bfa;--primary-2: #22d3ee;--success: #34d399;--warning: #fbbf24;--danger: #f87171;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--radius: 16px;--radius-sm: 10px;--safe-top: env(safe-area-inset-top);--safe-bottom: env(safe-area-inset-bottom)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.4;overscroll-behavior-y:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.app{min-height:100%;display:flex;flex-direction:column;padding-top:var(--safe-top);padding-bottom:calc(96px + var(--safe-bottom));background:radial-gradient(80% 60% at 0% 0%,rgba(167,139,250,.15),transparent 60%),radial-gradient(80% 60% at 100% 0%,rgba(34,211,238,.1),transparent 60%),var(--bg)}.app__header{padding:20px 20px 8px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.app__brand{margin:0;font-size:28px;font-weight:800;letter-spacing:-.02em;background:linear-gradient(135deg,var(--primary),var(--primary-2));-webkit-background-clip:text;background-clip:text;color:transparent}.app__date{margin:4px 0 0;font-size:14px;color:var(--text-dim)}.app__summary{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:8px 14px;display:flex;flex-direction:column;align-items:center;min-width:64px;transition:background .2s,border-color .2s}.app__summary.is-done{background:#34d3991f;border-color:#34d39966}.app__summary-num{font-size:18px;font-weight:700}.app__summary.is-done .app__summary-num{color:var(--success)}.app__summary-label{font-size:11px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.06em}.app__main{flex:1;padding:12px 20px 20px;display:flex;flex-direction:column;gap:16px}.app__notice{margin:0;padding:14px 16px;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-dim);font-size:14px}.section-title{margin:16px 0 0;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-mute);font-weight:600}.pill-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.pill-card{display:flex;align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:transform .15s,border-color .2s,background .2s}.pill-card:active{transform:scale(.99)}.pill-card.is-complete{background:linear-gradient(135deg,rgba(52,211,153,.1),var(--surface));border-color:#34d39959}.pill-card.is-finished{opacity:.55}.pill-card__main{flex:1;display:flex;flex-direction:column;gap:10px;padding:14px 16px;text-align:left}.pill-card__title-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.pill-card__name{font-size:17px;font-weight:600;letter-spacing:-.01em}.pill-card__day{font-size:12px;color:var(--text-mute);white-space:nowrap}.pill-card__progress{height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden}.pill-card__progress-bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-2));transition:width .3s ease;border-radius:999px}.pill-card.is-complete .pill-card__progress-bar{background:linear-gradient(90deg,var(--success),#6ee7b7)}.pill-card__week{display:flex;gap:4px;align-items:center;justify-content:space-between;padding:2px 0}.day-pill{flex:1;text-align:center;font-size:22px;line-height:1;transition:opacity .2s,filter .2s,transform .2s;position:relative;display:inline-block;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.day-pill--full{opacity:1;filter:drop-shadow(0 0 6px rgba(167,139,250,.35))}.day-pill--partial{opacity:.85;filter:saturate(.55)}.day-pill--missed,.day-pill--today{opacity:.32;filter:grayscale(1)}.day-pill--inactive,.day-pill--future{opacity:.12;filter:grayscale(1)}.day-pill--today-mark{transform:scale(1.08)}.day-pill--today-mark:after{content:"";position:absolute;left:50%;bottom:-4px;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--primary)}.pill-card__streak{font-size:13px;font-weight:600;color:#fb923c}.pill-card__meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.pill-card__count{font-size:14px;font-weight:600;color:var(--text)}.pill-card__meta-label{color:var(--text-mute);font-weight:400;font-size:12px;margin-left:2px}.pill-card__badge{font-size:12px;color:var(--success);font-weight:600}.pill-card__actions{display:flex;flex-direction:column;border-left:1px solid var(--border)}.pill-card__btn{display:flex;align-items:center;justify-content:center;width:64px;flex:1;font-size:26px;font-weight:300;color:var(--text);background:var(--surface-2);transition:background .15s,transform .15s}.pill-card__btn:active{transform:scale(.95)}.pill-card__btn--take{background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#0f172a;font-weight:600}.pill-card__btn--take:disabled{background:var(--surface-2);color:var(--success);font-size:22px;font-weight:700;cursor:default}.pill-card__btn--ghost{background:var(--surface-2);color:var(--text-dim);font-size:22px;border-bottom:1px solid var(--border)}.calendar-cta{margin:16px 20px 0;padding:16px;border-radius:var(--radius);background:linear-gradient(135deg,#a78bfa1f,#22d3ee14);border:1px solid rgba(167,139,250,.25);display:flex;flex-direction:column;gap:8px;align-items:center}.btn--calendar{background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#0f172a;border-radius:var(--radius-sm);padding:12px 20px;font-size:15px;font-weight:600;width:100%;max-width:320px;transition:transform .1s}.btn--calendar:active{transform:scale(.98)}.calendar-cta__hint{margin:0;font-size:12px;color:var(--text-mute);text-align:center;line-height:1.4}.times{display:flex;flex-direction:column;gap:8px;background:#a78bfa0f;border:1px solid rgba(167,139,250,.2);border-radius:var(--radius-sm);padding:12px}.time-field{display:flex;align-items:center;justify-content:space-between;gap:12px}.time-field__label{font-size:13px;color:var(--text-dim);font-weight:500}.time-field__input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;color:var(--text);font-size:16px;outline:none;font-family:inherit;width:130px;text-align:center;transition:border-color .15s}.time-field__input:focus{border-color:var(--primary)}.app__footer{margin:24px 20px 0;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--text-mute);font-size:12px}.link-btn{font-size:12px;color:var(--text-dim);padding:6px 8px;border-radius:6px;transition:color .15s,background .15s}.link-btn:hover{color:var(--text)}.link-btn:active{background:var(--surface)}.link-sep{opacity:.5}.toast{position:fixed;left:50%;bottom:calc(100px + var(--safe-bottom));transform:translate(-50%);background:var(--surface);border:1px solid var(--border);color:var(--text);padding:10px 16px;border-radius:999px;font-size:13px;font-weight:500;box-shadow:var(--shadow);animation:toast-in .2s ease;z-index:200}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}.fab{position:fixed;right:20px;bottom:calc(20px + var(--safe-bottom));width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#0f172a;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;transition:transform .15s;z-index:10}.fab:active{transform:scale(.94)}.fab__plus{font-size:36px;font-weight:300;line-height:1;margin-top:-2px}.empty{text-align:center;margin:60px auto;max-width:320px;display:flex;flex-direction:column;align-items:center;gap:12px}.empty__icon{font-size:64px}.empty__title{margin:0;font-size:20px;font-weight:700}.empty__text{margin:0;color:var(--text-dim);font-size:14px}.empty .btn{margin-top:8px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;z-index:100;animation:fade .18s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet{width:100%;max-width:480px;background:var(--bg-2);border-top-left-radius:24px;border-top-right-radius:24px;padding:8px 20px calc(20px + var(--safe-bottom));display:flex;flex-direction:column;gap:16px;border-top:1px solid var(--border);animation:slideUp .25s ease;max-height:92vh;overflow-y:auto}.sheet--detail{gap:14px}.sheet__handle{width:40px;height:4px;background:var(--border);border-radius:999px;margin:4px auto}.sheet__title{margin:0;font-size:20px;font-weight:700}.sheet__actions{display:flex;gap:10px;margin-top:4px}.sheet__actions .btn{flex:1}.import__text{margin:0;font-size:14px;line-height:1.5;color:var(--text-dim)}.import__text strong{color:var(--text)}.field{display:flex;flex-direction:column;gap:6px;flex:1}.field__label{font-size:13px;color:var(--text-dim);font-weight:500}.field__input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;color:var(--text);font-size:16px;outline:none;transition:border-color .15s,background .15s}.field__input:focus{border-color:var(--primary);background:var(--surface-2)}.field-row{display:flex;gap:12px}.stepper{display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.stepper__btn{width:44px;height:48px;font-size:22px;color:var(--text);background:var(--surface);transition:background .15s}.stepper__btn:active{background:var(--surface-2)}.stepper__value{flex:1;text-align:center;font-size:17px;font-weight:600;padding:0 6px}.btn{border-radius:var(--radius-sm);padding:14px 18px;font-size:15px;font-weight:600;transition:background .15s,transform .1s,opacity .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#0f172a}.btn--ghost{background:var(--surface);border:1px solid var(--border);color:var(--text)}.btn--danger{background:#f871711f;border:1px solid rgba(248,113,113,.3);color:var(--danger)}.detail__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.icon-btn{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface);color:var(--text-dim);font-size:14px}.detail__stats{display:flex;gap:10px}.stat{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;display:flex;flex-direction:column;gap:2px}.stat__label{font-size:11px;color:var(--text-mute);text-transform:uppercase;letter-spacing:.05em}.stat__value{font-size:16px;font-weight:700}.detail__subtitle{margin:4px 0 0;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-mute);font-weight:600}.detail__sub{display:flex;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--text-dim)}.detail__reminders{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:13px}.detail__reminders-label{color:var(--text-mute);font-size:12px}.reminder-chip{background:#a78bfa1f;border:1px solid rgba(167,139,250,.3);color:var(--primary);padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.heatmap{display:flex;flex-direction:column;gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch}.heatmap__months{display:grid;grid-template-columns:16px repeat(12,1fr);gap:3px;font-size:10px;color:var(--text-mute);text-transform:lowercase;padding-left:20px;min-width:100%}.heatmap__month{text-align:left}.heatmap__body{display:flex;gap:4px;align-items:stretch}.heatmap__dows{display:grid;grid-template-rows:repeat(7,1fr);gap:3px;font-size:9px;color:var(--text-mute);width:14px}.heatmap__dows span{display:flex;align-items:center;justify-content:flex-end;height:100%}.heatmap__grid{flex:1;display:grid;grid-template-columns:repeat(12,1fr);gap:3px;min-width:0}.heatmap__col{display:grid;grid-template-rows:repeat(7,1fr);gap:3px}.heatmap__cell{aspect-ratio:1;border-radius:3px;background:var(--surface);border:1px solid var(--border)}.heatmap__cell--inactive,.heatmap__cell--future{background:transparent;border-color:transparent}.heatmap__cell--missed{background:var(--surface-2);border-color:var(--border)}.heatmap__cell--partial{background:#fbbf248c;border-color:#fbbf24b3}.heatmap__cell--full{background:var(--success);border-color:#34d399e6}.heatmap__cell--today{outline:2px solid var(--primary);outline-offset:1px}button.heatmap__cell--tappable{padding:0;cursor:pointer;font:inherit;-webkit-tap-highlight-color:transparent;transition:transform .08s ease}button.heatmap__cell--tappable:active{transform:scale(.85)}.detail__hint{margin:-4px 0 8px;font-size:12px;color:var(--text-dim)}.heatmap-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-dim)}.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:middle}.dot--full{background:var(--success)}.dot--partial{background:#fbbf2499}.dot--missed{background:var(--surface-2);border:1px solid var(--border)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.toggle-row__text{display:flex;flex-direction:column;gap:2px}.toggle-row__label{font-size:15px;font-weight:500}.toggle-row__hint{font-size:12px;color:var(--text-mute)}.switch{width:48px;height:28px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);position:relative;transition:background .2s,border-color .2s;flex-shrink:0}.switch__thumb{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:var(--text-dim);transition:transform .2s,background .2s}.switch.is-on{background:linear-gradient(135deg,var(--primary),var(--primary-2));border-color:transparent}.switch.is-on .switch__thumb{transform:translate(20px);background:#0f172a}
