.settings-modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem;box-sizing:border-box}@media(max-width:480px){.settings-modal-overlay{align-items:flex-end;padding:0}.settings-modal-box{max-width:100%;border-radius:16px 16px 0 0;padding:1.25rem 1rem 2rem}}.settings-modal-box{background:#1e1e1e;border:1px solid #333;border-radius:16px;padding:1.75rem 2rem;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#444 #1a1a1a}.settings-modal-box::-webkit-scrollbar{width:10px}.settings-modal-box::-webkit-scrollbar-track{background:#171717;border-radius:999px}.settings-modal-box::-webkit-scrollbar-thumb{background:#3a3a3a;border:2px solid #171717;border-radius:999px}.settings-modal-box::-webkit-scrollbar-thumb:hover{background:#555}.settings-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.settings-modal-header h2{margin:0;font-size:1.2rem;font-weight:700}.settings-close-btn{background:none;border:none;color:#888;font-size:1.1rem;cursor:pointer;padding:.25rem .5rem;border-radius:6px}.settings-close-btn:hover{color:#fff;background:#2a2a2a}.settings-section{padding:1.25rem 0;border-top:1px solid #2a2a2a;display:flex;flex-direction:column;gap:.6rem}.settings-section--disabled{opacity:.4;pointer-events:none;-webkit-user-select:none;user-select:none}.settings-section--danger{border-top-color:#3a1a1a}.settings-section-title{margin:0 0 .25rem;font-size:.95rem;font-weight:600;color:#fff;display:flex;align-items:center;gap:.5rem}.settings-section-title--danger{color:#ff6b6b}.settings-badge{font-size:.7rem;font-weight:400;background:#2a2a2a;color:#666;padding:2px 7px;border-radius:10px;text-transform:none;letter-spacing:0}.settings-desc{margin:0;font-size:.85rem;color:#666}.settings-input{background:#121212;border:1px solid #333;border-radius:8px;padding:.6rem .85rem;color:#fff;font-size:.95rem;width:100%;box-sizing:border-box;transition:border-color .2s}.settings-input:focus{outline:none;border-color:#2dca8e}.settings-input:disabled{opacity:.5;cursor:not-allowed}.settings-btn{padding:.55rem 1.1rem;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:opacity .15s,background .15s;align-self:flex-start}.settings-btn:disabled{opacity:.45;cursor:not-allowed}.settings-btn--primary{background:#2dca8e;color:#111}.settings-btn--primary:hover:not(:disabled){background:#25b07b}.settings-btn--secondary{background:#2a2a2a;color:#ccc;border:1px solid #444}.settings-btn--secondary:hover:not(:disabled){background:#333}.settings-btn--danger{background:#7a1c1c;color:#fff}.settings-btn--danger:hover:not(:disabled){background:#962222}.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem .75rem;background:#171717;border:1px solid #303030;border-radius:10px;color:#ddd;font-size:.9rem}.settings-toggle-row input[type=checkbox]{width:1rem;height:1rem;cursor:pointer}.settings-toggle-row input[type=checkbox]:disabled{cursor:not-allowed}.delete-confirm-box{display:flex;flex-direction:column;gap:.75rem;background:#1a1010;border:1px solid #3a1a1a;border-radius:10px;padding:1rem}.delete-warning{margin:0;font-size:.85rem;color:#f99;line-height:1.5}.delete-ack-label{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:#ccc;cursor:pointer}.delete-ack-label input{cursor:pointer}.delete-actions{display:flex;gap:.5rem;justify-content:flex-end;flex-wrap:wrap}.habit-card{display:flex;align-items:center;gap:1rem;background:#1e1e1e;border:1px solid #2a2a2a;border-radius:12px;padding:.85rem 1rem;transition:border-color .2s,opacity .2s}.habit-card--complete{opacity:.6;border-color:#333}.habit-card:hover{border-color:#444}.habit-cube-btn{background:none;border:none;padding:0;cursor:pointer;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center}.habit-cube-btn:hover{border-color:transparent}.cube-logo{width:3.5rem;height:3.5rem;display:block}.jiggle-on-hover:hover .cube-logo{animation:logo-jiggle infinite .25s linear}.habit-body{flex:1;min-width:0}.habit-name{margin:0 0 .4rem;font-size:1rem;font-weight:600;color:#fff;word-break:break-word}.habit-days{display:flex;flex-wrap:wrap;gap:.3rem}.day-chip{font-size:.7rem;font-weight:600;padding:.15rem .45rem;border-radius:6px;background:#2a2a2a;color:#aaa;border:1px solid #333}.day-chip--today{background:#1a3a2a;color:#2dca8e;border-color:#2dca8e44}.day-chip--today-done{background:#2a2a1a;color:#c8b030;border-color:#c8b03044}.habit-notes{margin:.3rem 0 0;font-size:.8rem;color:#666;word-break:break-word;white-space:pre-wrap}.streak-badge{position:absolute;bottom:-6px;right:-6px;font-size:.65rem;font-weight:700;background:#141414e6;border:1px solid #ff8c00;border-radius:20px;padding:1px 5px;color:#ffab44;white-space:nowrap;pointer-events:none}.freeze-badge{position:absolute;top:-6px;right:-6px;font-size:.65rem;background:#141414e6;border:1px solid #7ec8e3;border-radius:20px;padding:1px 4px;pointer-events:none}.habit-actions{display:flex;flex-direction:column;gap:.4rem;flex-shrink:0}.btn-edit{border:none;border-radius:7px;padding:.35rem .8rem;font-size:.8rem;font-weight:600;cursor:pointer;transition:opacity .15s;background:#1c5a7a;color:#fff}.btn-edit:hover{opacity:.85;border-color:transparent}@media(max-width:480px){.habit-actions{flex-direction:row}.habit-card{flex-wrap:wrap}.habit-body{order:2;width:100%}.habit-cube-btn{order:1}.habit-actions{order:3;width:100%;justify-content:flex-end}}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem;box-sizing:border-box;animation:modal-fade-in .18s ease-out}@media(max-width:480px){.modal-overlay{align-items:flex-end;padding:0}}.modal-box{background:#1e1e1e;border:1px solid #333;border-radius:16px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;padding:1.75rem;box-sizing:border-box;animation:modal-pop-in .22s cubic-bezier(.34,1.2,.64,1);scrollbar-width:thin;scrollbar-color:#444 #1a1a1a}@media(max-width:480px){.modal-box{max-width:100%;max-height:92vh;border-radius:16px 16px 0 0;padding:1.25rem 1rem 2rem}}.modal-overlay--out{animation:modal-fade-out .18s ease forwards}.modal-box--out{animation:modal-pop-out .18s ease forwards}.modal-box::-webkit-scrollbar,.icon-grid::-webkit-scrollbar{width:10px}.modal-box::-webkit-scrollbar-track,.icon-grid::-webkit-scrollbar-track{background:#171717;border-radius:999px}.modal-box::-webkit-scrollbar-thumb,.icon-grid::-webkit-scrollbar-thumb{background:#3a3a3a;border:2px solid #171717;border-radius:999px}.modal-box::-webkit-scrollbar-thumb:hover,.icon-grid::-webkit-scrollbar-thumb:hover{background:#555}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.modal-title{font-size:1.25rem;font-weight:700;color:#fff;margin:0}.modal-close{background:none;border:none;color:#888;font-size:1.1rem;cursor:pointer;padding:.25rem .5rem;border-radius:6px;transition:color .15s}.modal-close:hover{color:#fff;border-color:transparent}.modal-form{display:flex;flex-direction:column;gap:.75rem}.modal-label{font-size:.8rem;font-weight:600;color:#aaa;letter-spacing:.05em;text-transform:uppercase;margin-top:.5rem}.modal-input{background:#121212;border:1px solid #333;border-radius:8px;padding:.65rem .85rem;color:#fff;font-size:1rem;width:100%;box-sizing:border-box;transition:border-color .2s}.modal-input:focus{outline:none;border-color:#2dca8e}.type-toggle{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem 0}.type-icon{width:2rem;height:2rem;animation:logo-jiggle infinite 1.5s linear}.type-label{font-size:.9rem;color:#666;font-weight:600;transition:color .2s}.type-label--active{color:#fff}.switch{position:relative;display:inline-block;width:52px;height:28px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#c0392b;transition:.3s}.slider:before{position:absolute;content:"";height:20px;width:20px;left:4px;bottom:4px;background-color:#fff;transition:.3s}input:checked+.slider{background-color:#2dca8e}input:checked+.slider:before{transform:translate(24px)}.slider.round{border-radius:28px}.slider.round:before{border-radius:50%}.recurrence-presets{display:flex;flex-wrap:wrap;gap:.5rem}.preset-btn{background:#2a2a2a;border:1px solid #333;color:#aaa;border-radius:8px;padding:.4rem .9rem;font-size:.875rem;cursor:pointer;transition:all .15s}.preset-btn:hover{border-color:#555;color:#fff}.preset-btn--active{background:#1a3a2a;border-color:#2dca8e;color:#2dca8e;font-weight:600}.custom-days{display:flex;flex-wrap:wrap;gap:.5rem}.day-toggle{display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:8px;border:1px solid #333;background:#2a2a2a;color:#888;font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none}.day-toggle input{display:none}.day-toggle:hover{border-color:#555;color:#fff}.day-toggle--on{background:#1a3a2a;border-color:#2dca8e;color:#2dca8e}.modal-submit{margin-top:.75rem;padding:.75rem;width:100%;background:#2dca8e;color:#111;font-weight:700;font-size:1rem;border:none;border-radius:8px;cursor:pointer;transition:background .2s}.modal-submit:hover{background:#25b07b;border-color:transparent}.icon-toggle-btn{display:flex;align-items:center;gap:.5rem;background:#2a2a2a;border:1px solid #333;color:#aaa;border-radius:8px;padding:.5rem .85rem;font-size:.9rem;cursor:pointer;text-align:left;transition:border-color .15s,color .15s}.icon-toggle-btn:hover,.icon-toggle-btn--open{border-color:#2dca8e;color:#fff}.icon-picker{display:flex;flex-direction:column;gap:.5rem}.icon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(2.5rem,1fr));gap:.35rem;max-height:180px;overflow-y:auto;padding:.25rem;background:#121212;border:1px solid #333;border-radius:8px}.icon-btn{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;background:#1e1e1e;border:1px solid transparent;border-radius:6px;color:#888;cursor:pointer;transition:all .12s}.icon-btn:hover{background:#2a2a2a;color:#fff}.icon-btn--selected{background:#1a3a2a;border-color:#2dca8e;color:#2dca8e}.modal-textarea{resize:vertical;min-height:80px;font-family:inherit;line-height:1.5}.modal-input--date{color-scheme:dark}.btn-set-reminder{width:fit-content;background:#22382d;border:1px solid #2dca8e66;color:#9ee6c8;border-radius:8px;padding:.45rem .7rem;font-size:.85rem;cursor:pointer}.btn-set-reminder:hover{border-color:#2dca8e;color:#c1f6df}.time-picker{display:inline-flex;align-items:center;gap:.35rem;background:#121212;border:1px solid #333;border-radius:8px;padding:.35rem .45rem}.time-select{background:#1f1f1f;border:1px solid #333;color:#f0f0f0;border-radius:6px;padding:.32rem .4rem;font-size:.85rem}.time-ampm{min-width:3.4rem}.time-sep{color:#6f6f6f;font-weight:700}.reminder-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.btn-clear-time{background:#2a2a2a;border:1px solid #333;color:#aaa;border-radius:6px;padding:.4rem .7rem;font-size:.82rem;cursor:pointer;white-space:nowrap;flex-shrink:0}.btn-clear-time:hover{color:#fff;border-color:#555}.modal-hint{font-size:.78rem;color:#666;margin:-.25rem 0 0}.e2e-placeholder{opacity:.35;pointer-events:none;-webkit-user-select:none;user-select:none}.e2e-divider{height:1px;background:#2a2a2a;margin:.5rem 0 1rem}.e2e-label{font-size:.82rem;font-weight:700;color:#aaa;margin:0 0 .25rem;text-transform:uppercase;letter-spacing:.05em}.e2e-soon{background:#2a2a2a;color:#666;font-size:.7rem;padding:1px 6px;border-radius:10px;margin-left:.4rem;font-weight:400;text-transform:none;letter-spacing:0;vertical-align:middle}.e2e-desc{font-size:.8rem;color:#555;margin:0 0 .75rem}.modal-submit--disabled{background:#333;color:#666;cursor:not-allowed;margin-top:0}.modal-submit--disabled:hover{background:#333}.danger-zone{margin-top:.25rem}.danger-divider{height:1px;background:#2a2a2a;margin:.25rem 0 .85rem}.danger-zone-title{margin:0;font-size:.95rem;font-weight:700;color:#ff7b7b}.danger-zone-desc{margin:.2rem 0 .75rem;font-size:.8rem;color:#a87171}.end-habit-row{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.75rem}.btn-end-habit{width:fit-content;background:#2a1b1b;border:1px solid #744;color:#f4b3b3;border-radius:8px;padding:.45rem .75rem;font-size:.85rem;cursor:pointer}.btn-end-habit:hover{background:#3a2323;border-color:#966}.delete-habit-row{margin-top:.15rem}.btn-delete-habit{width:fit-content;background:#3a1616;border:1px solid #8f3a3a;color:#ffc1c1;border-radius:8px;padding:.45rem .75rem;font-size:.85rem;cursor:pointer}.btn-delete-habit:hover{background:#4a1d1d;border-color:#aa4c4c}.end-habit-hint{font-size:.78rem;color:#747474;line-height:1.4}.end-confirm{background:#191515;border:1px solid #3a2828;border-radius:10px;padding:.75rem}.end-confirm-warning{color:#eaa;font-size:.82rem;margin:0 0 .6rem}.end-confirm-ack{display:flex;align-items:center;gap:.45rem;color:#c6c6c6;font-size:.82rem;margin-bottom:.65rem}.end-confirm-actions{display:flex;justify-content:flex-end;gap:.45rem}.btn-end-cancel,.btn-end-confirm{border:none;border-radius:7px;padding:.4rem .7rem;font-size:.8rem;cursor:pointer}.btn-end-cancel{background:#2a2a2a;color:#ddd}.btn-end-cancel:hover{background:#343434}.btn-end-confirm{background:#8a2a2a;color:#f8e5e5}.btn-end-confirm:hover:not(:disabled){background:#a53535}.btn-delete-confirm{border:none;border-radius:7px;padding:.4rem .7rem;font-size:.8rem;cursor:pointer;background:#9f2222;color:#fff1f1}.btn-delete-confirm:hover:not(:disabled){background:#ba2e2e}.btn-delete-confirm:disabled{opacity:.55;cursor:not-allowed}.btn-end-confirm:disabled{opacity:.55;cursor:not-allowed}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}@keyframes modal-pop-in{0%{opacity:0;transform:translateY(8px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes modal-pop-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(8px) scale(.95)}}.auth-page{min-height:calc(100vh - 57px);display:flex;align-items:center;justify-content:center;padding:1.5rem;box-sizing:border-box;animation:page-fade-in .22s ease-out}.auth-card{background:#1e1e1e;border:1px solid #2a2a2a;border-radius:16px;padding:2.5rem 2rem;width:100%;max-width:420px}.auth-title{font-size:1.75rem;font-weight:700;color:#fff;margin:0 0 1.75rem}.auth-form{display:flex;flex-direction:column;gap:.5rem}.auth-form label{font-size:.875rem;font-weight:600;color:#ccc;margin-top:.75rem}.auth-form input{width:100%;padding:.65rem .85rem;background:#121212;border:1px solid #333;border-radius:8px;color:#fff;font-size:1rem;box-sizing:border-box;transition:border-color .2s}.auth-form input:focus{outline:none;border-color:#2dca8e}.forgot-password{font-size:.8rem;color:#888;text-decoration:none;margin-top:.25rem;align-self:flex-end}.forgot-password:hover{color:#2dca8e}.auth-submit{margin-top:1.25rem;padding:.75rem;width:100%;background:#2dca8e;color:#111;font-weight:700;font-size:1rem;border:none;border-radius:8px;cursor:pointer;transition:background .2s}.auth-submit:hover:not(:disabled){background:#25b07b}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-switch{margin-top:1.5rem;text-align:center;font-size:.875rem;color:#888}.auth-switch a{color:#2dca8e;font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.optional-label{font-size:.75rem;font-weight:400;color:#666}.auth-warning{font-size:.8rem;color:#c8a030;background:#1e1800;border:1px solid #3a2e00;border-radius:6px;padding:.5rem .75rem;margin:.25rem 0 0;line-height:1.4}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#ffffffde;background-color:#121212;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:0;min-height:100vh;background:#121212;overflow-x:hidden}#root{width:100%;max-width:100vw;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}h1,h2,h3,h4,h5,h6{margin:0}a{color:inherit;text-decoration:none}button{border-radius:8px;border:1px solid transparent;padding:.5rem 1rem;font-size:.9rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all .2s ease}@keyframes logo-jiggle{0%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}to{transform:rotate(-5deg)}}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
