*{box-sizing:border-box;margin:0;padding:0}body{color:#1a1a1a;background:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{background:#fff;flex-direction:column;max-width:480px;height:100dvh;margin:0 auto;display:flex}.content{flex:1;padding:20px 16px 8px;overflow-y:auto}.navbar{background:#fff;border-top:1px solid #e5e5e5;display:flex}.nav-link{text-align:center;color:#888;flex:1;padding:14px 0;font-size:14px;font-weight:500;text-decoration:none}.nav-link.active{color:#2563eb}.page{min-height:100%}.page h1{margin-bottom:4px;font-size:22px;font-weight:700}.page .date{color:#888;margin-bottom:20px;font-size:13px}.page .muted{color:#888;margin-top:12px;font-size:14px}.page-center{color:#888;justify-content:center;align-items:center;height:100%;display:flex}.page-center.error{color:#dc2626}.habit-header{grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:12px;display:grid}.habit-header h1{margin-bottom:2px;font-size:18px}.habit-header .date{margin-bottom:0;font-size:12px}.habit-add-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;margin-top:2px;font-size:22px;line-height:1;display:flex}.add-form{background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:12px;flex-direction:column;gap:10px;margin-bottom:16px;padding:14px 16px;display:flex}.add-input{box-sizing:border-box;background:#fff;border:1.5px solid #e5e5e5;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-size:15px}.add-input:focus{border-color:#2563eb}.step-input{width:80px;padding:6px 10px;font-size:14px}.add-form-row{gap:8px;display:flex}.option-btn{cursor:pointer;background:#fff;border:1.5px solid #e5e5e5;border-radius:8px;flex:1;padding:6px 0;font-size:14px;transition:border-color .15s,background .15s}.option-btn.selected{color:#2563eb;background:#eff6ff;border-color:#2563eb;font-weight:600}.submit-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;padding:10px;font-size:15px;font-weight:600}.habit-list{flex-direction:column;gap:6px;list-style:none;display:flex}.habit-item{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:10px;transition:background .15s,border-color .15s;position:relative}.habit-item.done{background:#f0fdf4;border-color:#86efac}.habit-main{cursor:pointer;align-items:center;gap:8px;padding:7px 10px;display:flex}.habit-item .check{text-align:center;color:#888;width:20px;font-size:15px}.habit-item.done .check{color:#16a34a;font-weight:700}.habit-item .name{flex:1;font-size:13px;line-height:1.3}.habit-item .tag{font-size:15px}.habit-item.active{background:#eff6ff;border-color:#93c5fd}.habit-menu-wrap{flex-shrink:0;margin-left:4px;position:relative}.habit-menu-btn{cursor:pointer;color:#9ca3af;background:0 0;border:none;border-radius:6px;align-items:center;padding:4px 2px;display:flex}.habit-menu-btn:active{background:#f3f4f6}.habit-dropdown{z-index:100;background:#fff;border:1.5px solid #e5e7eb;border-radius:10px;flex-direction:row;display:flex;position:absolute;top:calc(100% + 2px);right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.habit-dropdown button{cursor:pointer;color:#374151;background:0 0;border:none;justify-content:center;align-items:center;padding:10px 14px;display:flex}.habit-dropdown button:active{background:#f3f4f6}.habit-dropdown button+button{border-left:1.5px solid #e5e7eb}.habit-dropdown button.danger{color:#ef4444}.delete-btn{color:#bbb;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:18px;line-height:1;transition:background .15s,color .15s;display:flex}.delete-btn:hover{color:#ef4444;background:#fee2e2}.modal-actions-gap{margin-top:8px}.modal-delete-btn{color:#dc2626;cursor:pointer;background:0 0;border:1.5px solid #fca5a5;border-radius:8px;width:100%;padding:10px;font-size:14px}.count-picker{flex-wrap:wrap;gap:8px;padding:0 16px 14px;display:flex}.count-btn{cursor:pointer;background:#fff;border:1.5px solid #e5e5e5;border-radius:8px;min-width:40px;padding:8px 10px;font-size:15px;font-weight:600;transition:border-color .15s,background .15s}.count-btn:hover{color:#2563eb;background:#eff6ff;border-color:#2563eb}.modal-backdrop{z-index:100;background:#0006;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;flex-direction:column;gap:12px;width:100%;max-width:320px;padding:24px 20px 20px;display:flex}.modal-title{text-align:center;font-size:16px;font-weight:700}.modal-date{color:#999;text-align:center;margin-top:2px;font-size:13px}.modal-sub{color:#555;text-align:center;font-size:14px}.modal-actions{gap:10px;margin-top:4px;display:flex}.modal-cancel{cursor:pointer;background:#fff;border:1.5px solid #e5e5e5;border-radius:8px;flex:1;padding:10px;font-size:15px}.modal-cancel.full{width:100%}.modal-ok{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;flex:1;padding:10px;font-size:15px;font-weight:600}.modal-ok.danger{background:#dc2626}.modal-ok.full{width:100%}.remind-list{flex-direction:column;gap:10px;margin:8px 0 12px;padding:0;list-style:none;display:flex}.remind-item label{cursor:pointer;align-items:center;gap:10px;font-size:15px;display:flex}.remind-item input[type=checkbox]{cursor:pointer;accent-color:#2563eb;width:18px;height:18px}.modal-count{padding:0}.week-track{justify-content:space-between;padding:0 10px 6px;display:flex}.week-day{flex-direction:column;align-items:center;gap:2px;display:flex}.week-label{color:#aaa;font-size:9px}.week-dot{background:#e5e5e5;border-radius:2px;width:9px;height:9px}.week-dot.done{background:#22c55e}.week-count{color:#fff;background:#22c55e;border-radius:3px;justify-content:center;align-items:center;min-width:16px;height:14px;padding:0 2px;font-size:9px;font-weight:600;display:flex}.page-tabs{border-bottom:1.5px solid #e5e5e5;margin-bottom:20px;display:flex}.page-tab{color:#888;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-1.5px;padding:10px 0;font-size:14px;font-weight:500}.page-tab.active{color:#2563eb;border-bottom-color:#2563eb}.earned-banner{color:#fff;z-index:200;text-align:center;background:#16a34a;border-radius:10px;flex-direction:column;gap:4px;max-width:320px;padding:10px 18px;font-size:14px;font-weight:500;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0003}.rewards-view{flex-direction:column;display:flex}.reward-list{flex-direction:column;gap:10px;list-style:none;display:flex}.reward-item{background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:12px;transition:border-color .15s;overflow:hidden}.reward-item.expanded{border-color:#93c5fd}.reward-main{cursor:pointer;align-items:center;gap:12px;padding:14px 16px;display:flex}.reward-info{flex-direction:column;flex:1;gap:2px;display:flex}.reward-name{font-size:15px;font-weight:500}.reward-counts{color:#888;font-size:12px}.reward-actions{align-items:center;gap:8px;display:flex}.reward-use-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:7px;padding:5px 12px;font-size:13px;font-weight:600}.reward-conditions{background:#fff;border-top:1px solid #e5e5e5;flex-direction:column;gap:6px;padding:10px 16px 12px;display:flex}.cond-empty{color:#aaa;font-size:13px}.cond-row{cursor:pointer;background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;transition:border-color .15s;display:flex}.cond-row:hover{border-color:#93c5fd}.cond-text{color:#333;font-size:14px}.cond-row-actions{align-items:center;gap:4px;display:flex}.cond-edit-hint{color:#aaa;font-size:16px}.cond-add-form{flex-direction:column;gap:8px;margin-top:2px;display:flex}.cond-add-actions{gap:8px;display:flex}.cond-add-actions .modal-cancel,.cond-add-actions .modal-ok{flex:1;padding:8px;font-size:14px}.cond-add-btn{color:#6b7280;cursor:pointer;text-align:left;background:0 0;border:1.5px dashed #d1d5db;border-radius:8px;margin-top:2px;padding:7px 10px;font-size:13px}.cond-add-btn:hover{color:#2563eb;border-color:#93c5fd}.condition-streak{color:#888;font-size:12px}.cond-and{color:#888;margin:0 2px;font-size:12px}.cond-items-editor{flex-direction:column;gap:8px;display:flex}.cond-item-row{flex-direction:column;gap:6px;display:flex}.cond-and-label{color:#6b7280;text-align:center;letter-spacing:.05em;font-size:11px;font-weight:700}.cond-item-streak-row{align-items:center;gap:6px;display:flex}.cond-item-streak-row .add-input{flex:1}.cond-remove-btn{flex-shrink:0}.exp-fab{color:#fff;cursor:pointer;z-index:50;background:#2563eb;border:none;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;font-size:28px;line-height:1;display:flex;position:fixed;bottom:80px;right:20px;box-shadow:0 4px 12px #2563eb66}.exp-row-readonly{cursor:default;background:#f4fdf9;border-color:#a7f3d0}.exp-row-note{color:#059669;flex-shrink:0;font-size:12px}.exp-day-nav{align-items:center;gap:8px;margin-bottom:16px;display:flex}.exp-month-nav{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.exp-nav-btn{cursor:pointer;color:#555;background:#fff;border:1.5px solid #e5e5e5;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:20px;display:flex}.exp-nav-btn:disabled{opacity:.3;cursor:default}.exp-day-info{text-align:center;flex:1}.exp-day-label{color:#555;font-size:14px}.exp-day-total{color:#1a1a1a;font-size:22px;font-weight:700}.exp-period-group{margin-bottom:16px}.exp-period-header{color:#888;margin-bottom:6px;padding-left:2px;font-size:13px;font-weight:600}.exp-row{cursor:pointer;text-align:left;background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:10px;align-items:center;gap:8px;width:100%;margin-bottom:6px;padding:11px 14px;display:flex}.exp-row:active{background:#eff6ff;border-color:#93c5fd}.exp-row-item{flex:1;font-size:15px}.exp-row-cat{color:#888;background:#f0f0f0;border-radius:4px;padding:2px 6px;font-size:12px}.exp-row-amount{color:#1a1a1a;flex-shrink:0;font-size:15px;font-weight:600}.exp-month-label{color:#1a1a1a;font-size:16px;font-weight:600}.exp-month-total{text-align:center;margin:12px 0 20px;font-size:28px;font-weight:700}.exp-section{margin-bottom:20px}.exp-section-title{color:#888;margin-bottom:8px;font-size:13px;font-weight:600}.exp-week-row{background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:5px;padding:9px 12px;font-size:14px;display:flex}.exp-week-label{color:#555}.exp-week-amount{font-weight:600}.exp-cat-row{cursor:pointer;text-align:left;background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:8px;justify-content:space-between;align-items:center;width:100%;margin-bottom:6px;padding:11px 12px;display:flex}.exp-cat-row:active{background:#eff6ff;border-color:#93c5fd}.exp-cat-info{flex-direction:column;gap:2px;display:flex}.exp-cat-name{font-size:15px;font-weight:500}.exp-cat-quota{font-size:12px}.exp-cat-quota.ok{color:#16a34a}.exp-cat-quota.over{color:#dc2626}.exp-cat-right{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.exp-cat-amount{font-size:15px;font-weight:600}.exp-cat-pct{color:#888;font-size:12px}.exp-cat-tab{padding-bottom:80px}.exp-cat-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.exp-cat-card{cursor:pointer;text-align:left;background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:12px;flex-direction:column;align-items:flex-start;gap:4px;padding:14px;display:flex}.exp-cat-card:active{background:#eff6ff;border-color:#93c5fd}.exp-cat-card-name{font-size:14px;font-weight:500}.exp-cat-card-quota{color:#888;font-size:12px}.exp-cat-detail{padding-bottom:24px}.exp-detail-header{align-items:center;gap:10px;margin-bottom:4px;display:flex}.exp-detail-title{font-size:18px;font-weight:700}.exp-detail-total{color:#555;margin:12px 0 16px;font-size:15px}.exp-detail-pct{color:#888}.exp-detail-items{border:1.5px solid #e5e5e5;border-radius:10px;margin-bottom:16px;overflow:hidden}.exp-detail-item-row{border-bottom:1px solid #f0f0f0;justify-content:space-between;padding:10px 14px;font-size:14px;display:flex}.exp-detail-item-row:last-child{border-bottom:none}.exp-detail-item-name{color:#333}.exp-detail-item-amount{font-weight:600}.exp-quota-section{background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:10px;padding:14px}.exp-quota-status{margin-bottom:10px;font-size:14px}.exp-quota-none{color:#888}.exp-quota-ok{color:#16a34a}.exp-quota-over{color:#dc2626}.exp-quota-btn{color:#6b7280;cursor:pointer;background:0 0;border:1.5px dashed #d1d5db;border-radius:8px;padding:7px 12px;font-size:13px}.exp-quota-btn:hover{color:#2563eb;border-color:#93c5fd}.exp-quota-edit{flex-direction:column;gap:0;display:flex}.sheet-backdrop{z-index:100;background:#0006;justify-content:center;align-items:center;padding:24px 16px;display:flex;position:fixed;inset:0}.sheet{background:#fff;border-radius:16px;flex-direction:column;gap:8px;width:100%;max-width:400px;max-height:92dvh;padding:16px 16px 0;display:flex;overflow-y:auto}.sheet .submit-btn{background:#2563eb;border-radius:0 0 16px 16px;margin:0 -16px;padding:10px 16px 14px;font-size:15px;position:sticky;bottom:0}.sheet-handle{display:none}.sheet-title{text-align:center;font-size:17px;font-weight:700}.sheet-tabs{border-bottom:1.5px solid #e5e5e5;margin-bottom:16px;display:flex}.sheet-tab{color:#888;cursor:pointer;background:0 0;border:none;border-bottom:2.5px solid #0000;flex:1;margin-bottom:-1.5px;padding:10px 0;font-size:14px;font-weight:600}.sheet-tab.active{color:#2563eb;border-bottom-color:#2563eb}.sheet-type-cat-row{align-items:center;gap:8px;display:flex}.exp-type-toggle{border:1.5px solid #e5e5e5;border-radius:8px;flex-shrink:0;display:flex;overflow:hidden}.exp-type-btn{color:#888;cursor:pointer;background:#f9f9f9;border:none;padding:9px 14px;font-size:13px;font-weight:600}.exp-type-btn+.exp-type-btn{border-left:1.5px solid #e5e5e5}.exp-type-btn.active{color:#fff;background:#2563eb}.cat-inline-select{flex:1;padding:9px 10px;font-size:13px}.sheet-title-row{align-items:center;gap:10px;display:flex}.sheet-title-row .sheet-title{text-align:left;flex:1}.sheet-back{cursor:pointer;color:#555;background:0 0;border:1.5px solid #e5e5e5;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;font-size:18px;display:flex}.sheet-field{flex-direction:column;gap:6px;display:flex}.sheet-label{color:#555;font-size:13px;font-weight:600}.item-input-area{flex-direction:column;gap:4px;display:flex}.autocomplete-item{text-align:left;cursor:pointer;color:#1a1a1a;background:0 0;border:none;border-bottom:1px solid #f5f5f5;width:100%;padding:12px 14px;font-size:15px;display:block}.autocomplete-item:last-child{border-bottom:none}.autocomplete-item:active{background:#eff6ff}.suggestion-float-wrap{position:relative}.suggestion-float{z-index:100;background:#fff;border:1.5px solid #e5e5e5;border-radius:8px;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.sheet-label-row{align-items:center;gap:8px;display:flex}.type-badge{color:#2563eb;background:#eff6ff;border-radius:4px;padding:2px 6px;font-size:12px;font-weight:500}.sheet-label-unit{color:#888;font-size:11px;font-weight:400}.amount-field .add-input{letter-spacing:.02em;height:44px;font-size:17px;font-weight:600}.sheet-amount-preview{color:#2563eb;padding-left:2px;font-size:13px;font-weight:600}.sheet-error{color:#dc2626;padding:4px 0;font-size:13px}.credits-view{padding-bottom:24px}.credits-hint{margin:-8px 0 12px;font-size:13px}.credits-row{justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.credits-badge{color:#2563eb;cursor:pointer;text-align:center;background:#eff6ff;border:1.5px solid #bfdbfe;border-radius:20px;min-width:44px;padding:4px 10px;font-size:14px;font-weight:600}.credits-edit{align-items:center;gap:6px;display:flex}.credits-input{text-align:center;border:1.5px solid #93c5fd;border-radius:8px;width:64px;padding:6px 10px;font-size:15px}.credits-cost-row{flex-direction:column;align-items:flex-start;gap:8px}.credits-cost-label{color:#888;font-size:13px;font-weight:500}.credits-balance{color:#555;margin:2px 0 0;font-size:14px}.credits-balance-num{color:#2563eb;margin-right:2px;font-size:22px;font-weight:700}.reward-cards{flex-direction:column;gap:10px;display:flex}.reward-card{cursor:pointer;background:#f9f9f9;border:1.5px solid #e5e5e5;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;transition:border-color .15s;display:flex}.reward-card:hover{border-color:#93c5fd}.reward-card-body{flex-direction:column;flex:1;gap:3px;display:flex}.reward-card-name{font-size:15px;font-weight:500}.reward-card-meta{color:#888;font-size:12px}.reward-card-actions{align-items:center;gap:8px;display:flex}.habit-name-block{flex-direction:column;flex:1;gap:1px;display:flex}.habit-credits{color:#16a34a;font-size:11px;font-weight:500;line-height:1.2}.habit-credits.bad{color:#dc2626}.habit-item.bad-habit{background:#fff8f8;border-color:#fca5a5}.habit-item.bad-habit.done{background:#fef2f2;border-color:#f87171}.habit-item.bad-habit.active{background:#fff1f2;border-color:#f87171}.habit-item.bad-habit .check{color:#dc2626}.habit-item.bad-habit.done .check{color:#b91c1c}.habit-item.bad-habit .week-dot.done,.habit-item.bad-habit .week-count{background:#f87171}.habit-form-row{align-items:center;gap:8px;display:flex}.habit-form-label{color:#888;flex-shrink:0;width:46px;font-size:12px;font-weight:500}.habit-form-btns{flex:1;gap:6px;display:flex}.habit-opt-btn{cursor:pointer;white-space:nowrap;background:#fff;border:1.5px solid #e5e5e5;border-radius:7px;flex:1;padding:5px 2px;font-size:13px;transition:border-color .15s,background .15s}.habit-opt-btn.selected{color:#2563eb;background:#eff6ff;border-color:#2563eb;font-weight:600}.habit-opt-btn.selected.bad-type{color:#dc2626;background:#fff1f2;border-color:#dc2626}.habit-opt-btn.selected.good-type{color:#16a34a;background:#f0fdf4;border-color:#16a34a}.habit-opt-btn.credit-btn{font-size:14px;font-weight:600}.credits-options{gap:8px;width:100%;display:flex}.credits-options .option-btn{border-radius:10px;flex:1;min-width:44px;padding:10px 0;font-size:16px;font-weight:600}.reward-use-btn:disabled{color:#9ca3af;cursor:not-allowed;background:#e5e7eb;border-color:#e5e7eb}.qty-picker{justify-content:center;gap:8px;margin:12px 0 4px;display:flex}.qty-btn{color:#374151;cursor:pointer;background:#fff;border:2px solid #d1d5db;border-radius:50%;width:40px;height:40px;font-size:15px;font-weight:600}.qty-btn.active{color:#fff;background:#3b82f6;border-color:#3b82f6}.qty-btn.disabled{color:#d1d5db;cursor:not-allowed;background:#f3f4f6;border-color:#e5e7eb}.credit-toast{color:#15803d;white-space:nowrap;text-align:center;z-index:200;background:#f0fdf4;border:1.5px solid #86efac;border-radius:20px;max-width:90vw;padding:8px 18px;font-size:14px;font-weight:500;animation:.2s fadeInUp;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0000001a}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%)translateY(-8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.login-page{background:#f5f5f5;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:#fff;border-radius:16px;width:100%;max-width:360px;padding:32px 24px;box-shadow:0 2px 16px #00000014}.login-title{text-align:center;color:#1a1a1a;margin:0 0 24px;font-size:28px;font-weight:700}.login-form{flex-direction:column;gap:12px;display:flex}.login-error{color:#dc2626;margin:0;font-size:13px}.login-btn{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:10px;margin-top:4px;padding:12px;font-size:15px;font-weight:600}.login-btn:disabled{opacity:.6;cursor:not-allowed}.habit-filter-group{gap:4px;display:flex}.habit-filter-btn{color:#555;cursor:pointer;white-space:nowrap;background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:500;transition:background .15s,color .15s,border-color .15s}.habit-filter-btn.active{color:#fff;background:#2563eb;border-color:#2563eb}.week-day.today .week-label,.week-day.yesterday .week-label{font-size:10px;font-weight:700}.week-day.today .week-label{color:#2563eb}.week-day.yesterday .week-label{color:#6b7280}.week-day.today .week-dot,.week-day.yesterday .week-dot{width:11px;height:11px}.week-day-annotation{color:#9ca3af;font-size:8px;line-height:1}.week-day.today .week-day-annotation{color:#2563eb}.plans-tab{flex-direction:column;gap:24px;padding:12px 16px 100px;display:flex}.plans-loading{text-align:center;color:#9ca3af;padding:40px}.plans-section{flex-direction:column;gap:8px;display:flex}.plans-section-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.plans-section-title{color:#111;font-size:16px;font-weight:700}.plans-empty{color:#9ca3af;padding:8px 0;font-size:13px}.plan-card{background:#fff;border:1.5px solid #e5e7eb;border-radius:12px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.plan-card--empty{opacity:.6}.plan-card-header{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.plan-card-name{color:#111;flex:1;min-width:0;font-size:15px;font-weight:600}.plan-badge{color:#374151;white-space:nowrap;background:#f3f4f6;border-radius:6px;padding:2px 7px;font-size:11px;font-weight:600}.plan-badge--cat{color:#2563eb;background:#eff6ff}.plan-card-status{color:#6b7280;font-size:13px}.plan-card-status--warn{color:#d97706;font-weight:600}.plan-card-actions{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.plan-btn{color:#374151;cursor:pointer;background:#f9fafb;border:1.5px solid #e5e7eb;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}.plan-btn--primary{color:#fff;background:#2563eb;border-color:#2563eb}.plan-btn--danger{color:#dc2626;background:#fff;border-color:#fecaca}.plan-btn--add{color:#2563eb;background:#eff6ff;border-color:#bfdbfe}.plan-btn:disabled{opacity:.4;cursor:not-allowed}.sheet-overlay{z-index:200;background:#00000073;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.sheet-panel{background:#fff;border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-width:480px;max-height:90dvh;display:flex;overflow-y:auto}.sheet-header{z-index:1;background:#fff;border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;padding:16px 16px 12px;display:flex;position:sticky;top:0}.sheet-title{color:#111;font-size:16px;font-weight:700}.sheet-close{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:4px;font-size:18px}.sheet-body{flex-direction:column;gap:12px;padding:16px 16px 32px;display:flex}.form-row{flex-direction:column;gap:4px;display:flex}.form-row label{color:#374151;font-size:13px;font-weight:600}.form-input{color:#111;box-sizing:border-box;background:#fafafa;border:1.5px solid #e5e7eb;border-radius:10px;outline:none;width:100%;padding:10px 12px;font-size:15px}.form-input:focus{background:#fff;border-color:#2563eb}.form-hint{color:#6b7280;font-size:13px}.form-error{color:#dc2626;font-size:13px;font-weight:600}.btn-primary{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:12px;width:100%;margin-top:4px;padding:12px;font-size:15px;font-weight:700}.btn-primary:disabled{opacity:.5;cursor:not-allowed}
