*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Noto Sans JP,Segoe UI,sans-serif}#root{width:100vw;height:100dvh;overflow:hidden}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit}.event-quick-delete{color:#fff;cursor:pointer;opacity:0;pointer-events:none;z-index:10;background:#00000047;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:.72rem;line-height:1;transition:opacity .15s,background .15s;display:flex;position:absolute;top:50%;right:3px;transform:translateY(-50%)}.cell-event:hover .event-quick-delete,.month-multi-bar:hover .event-quick-delete,.allday-event:hover .event-quick-delete,.timed-event:hover .event-quick-delete,.day-allday-event:hover .event-quick-delete,.day-timed-event:hover .event-quick-delete,.cell-event.is-active .event-quick-delete,.month-multi-bar.is-active .event-quick-delete,.allday-event.is-active .event-quick-delete,.timed-event.is-active .event-quick-delete,.day-allday-event.is-active .event-quick-delete,.day-timed-event.is-active .event-quick-delete{opacity:1;pointer-events:auto}.event-quick-delete:hover{background:#00000080}.sidebar{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:20px;width:240px;padding:20px 16px;display:flex;overflow-y:auto}.sidebar-mobile-close{display:none}@media (width<=768px){.sidebar{z-index:100;background:var(--bg-primary);width:280px;padding-top:12px;transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:4px 0 24px #0000002e}.sidebar.sidebar-open{transform:translate(0)}.sidebar-mobile-close{width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-self:flex-end;align-items:center;margin-bottom:-8px;font-size:.9rem;transition:background .15s;display:flex}.sidebar-mobile-close:hover{background:var(--bg-hover)}}.add-event-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:12px;align-items:center;gap:10px;width:100%;padding:12px 16px;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .15s,transform .1s;display:flex}.add-event-btn:hover{background:var(--accent-hover)}.add-event-btn:active{transform:scale(.98)}.add-icon{font-size:1.3rem;line-height:1}.sidebar-section-header{justify-content:space-between;align-items:center;margin-bottom:0;display:flex}.sidebar-section-header .sidebar-section-title{margin-bottom:0}.cat-add-btn{border:1.5px solid var(--border);width:22px;height:22px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;font-size:1rem;line-height:1;transition:all .15s;display:flex}.cat-add-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.cat-delete-btn{width:18px;height:18px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;margin-left:auto;padding:0;font-size:.85rem;line-height:1;transition:all .15s;display:none}.cat-palette-chip:hover .cat-delete-btn{display:flex}.cat-add-form{background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;margin-top:10px;padding:12px;display:flex}.cat-add-input{border:1.5px solid var(--border);background:var(--bg-primary);width:100%;color:var(--text-primary);border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:.85rem}.cat-add-input:focus{border-color:var(--accent)}.cat-color-swatches{flex-wrap:wrap;gap:6px;display:flex}.cat-swatch{cursor:pointer;border:2.5px solid #0000;border-radius:50%;width:22px;height:22px;padding:0;transition:transform .1s}.cat-swatch:hover{transform:scale(1.15)}.cat-swatch.selected{border-color:var(--text-primary);transform:scale(1.15)}.cat-add-actions{justify-content:flex-end;gap:6px;display:flex}.cat-cancel-btn{border:1.5px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:7px;padding:5px 12px;font-family:inherit;font-size:.8rem}.cat-save-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:7px;padding:5px 12px;font-family:inherit;font-size:.8rem;font-weight:600}.cat-save-btn:hover{background:var(--accent-hover)}.sidebar-hint{color:var(--text-muted);margin:-4px 0 8px;font-size:.72rem}.category-palette{flex-direction:column;gap:6px;display:flex}.cat-palette-chip{border:1.5px solid color-mix(in srgb, var(--cat-color) 40%, transparent);background:color-mix(in srgb, var(--cat-color) 8%, var(--bg-secondary));cursor:grab;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:8px;padding:7px 10px;transition:all .15s;display:flex}.cat-palette-chip:hover{border-color:var(--cat-color);background:color-mix(in srgb, var(--cat-color) 14%, var(--bg-secondary));transform:translate(2px)}.cat-palette-chip:active{cursor:grabbing}.cat-palette-chip.dragging{opacity:.4;cursor:grabbing}.cat-palette-dot{background:var(--cat-color);border-radius:50%;flex-shrink:0;width:10px;height:10px}.cat-palette-label{color:var(--text-primary);font-size:.85rem;font-weight:500}.cat-reorder-handle{color:var(--text-muted);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;padding:0 2px;font-size:1rem;line-height:1}.cat-reorder-handle:active{cursor:grabbing}.cat-palette-chip.reorder-dragging{opacity:.35}.cat-palette-chip.reorder-target{transform:translate(4px);border-color:var(--accent)!important;background:color-mix(in srgb, var(--accent) 12%, var(--bg-secondary))!important}.cat-show-more-btn{color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:none;margin-top:4px;padding:4px 0;font-family:inherit;font-size:.75rem;transition:color .15s}.cat-show-more-btn:hover{color:var(--text-secondary)}.mini-calendar{background:var(--bg-secondary);border-radius:12px;padding:14px}.mini-cal-header{color:var(--text-primary);justify-content:space-between;align-items:center;margin-bottom:12px;font-size:.85rem;font-weight:600;display:flex}.mini-cal-header button{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-size:1.1rem;transition:background .15s;display:flex}.mini-cal-header button:hover{background:var(--bg-hover)}.mini-cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.mini-day-label{text-align:center;color:var(--text-muted);padding:4px 0;font-size:.7rem;font-weight:500}.mini-day{aspect-ratio:1;cursor:pointer;color:var(--text-primary);background:0 0;border:none;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;font-family:inherit;font-size:.75rem;transition:background .1s;display:flex;position:relative}.mini-day:hover{background:var(--bg-hover)}.mini-day.other-month{color:var(--text-muted)}.mini-day.is-today{color:var(--accent);font-weight:700}.mini-day.is-selected{background:var(--accent);color:#fff;font-weight:600}.mini-day.is-selected.is-today{background:var(--accent);color:#fff}.mini-dot{background:var(--accent);border-radius:50%;width:4px;height:4px;position:absolute;bottom:2px}.mini-day.is-selected .mini-dot{background:#fffc}.sidebar-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;font-size:.75rem;font-weight:600}.event-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.event-item{cursor:pointer;border-radius:8px;align-items:flex-start;gap:10px;padding:8px 10px;transition:background .15s;display:flex}.event-item:hover{background:var(--bg-hover)}.ev-dot{background:var(--ev-color,var(--accent));border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:4px}.ev-info{flex-direction:column;gap:2px;min-width:0;display:flex}.ev-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.ev-date{color:var(--text-muted);font-size:.75rem}.weather-settings-btn{border:1.5px solid var(--border);width:22px;height:22px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:.85rem;transition:all .15s;display:flex}.weather-settings-btn:hover,.weather-settings-btn.active{background:var(--bg-hover);color:var(--text-primary)}.weather-location-name{color:var(--accent);margin-left:6px;font-size:.72rem;font-weight:400}.weather-settings-panel{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}.weather-search-status{color:var(--text-muted);margin:0;font-size:.78rem}.location-results{border:1.5px solid var(--border);border-radius:8px;margin:0;padding:0;list-style:none;overflow:hidden}.location-results li+li{border-top:1px solid var(--border)}.location-result-btn{background:var(--bg-primary);cursor:pointer;text-align:left;border:none;flex-direction:column;gap:2px;width:100%;padding:8px 10px;font-family:inherit;transition:background .12s;display:flex}.location-result-btn:hover{background:var(--bg-hover)}.location-result-name{color:var(--text-primary);font-size:.85rem;font-weight:600}.location-result-sub{color:var(--text-muted);font-size:.72rem}.location-reset-btn{border:1.5px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:7px;align-self:flex-start;padding:5px 10px;font-family:inherit;font-size:.78rem;transition:all .15s}.location-reset-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.weather-list{flex-direction:column;gap:4px;display:flex}.weather-row{border-radius:8px;align-items:center;gap:6px;padding:5px 8px;font-size:.8rem;display:flex}.weather-today{background:color-mix(in srgb, var(--accent) 8%, var(--bg-secondary));border:1px solid color-mix(in srgb, var(--accent) 20%, transparent)}.weather-day{width:52px;color:var(--text-primary);flex-shrink:0;font-size:.78rem;font-weight:600}.weather-emoji{flex-shrink:0;font-size:1rem}.weather-label{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.75rem;overflow:hidden}.weather-temp{flex-shrink:0;gap:4px;font-size:.78rem;display:flex}.temp-max{color:#e05050;font-weight:600}.temp-min{color:#4f87ee}.empty-text{color:var(--text-muted);text-align:center;padding:12px 0;font-size:.85rem}.month-view{flex-direction:column;height:100%;display:flex}.month-header-row{border-bottom:1px solid var(--border);flex-shrink:0;grid-template-columns:repeat(7,1fr);display:grid}.month-header-cell{text-align:center;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:8px 0;font-size:.75rem;font-weight:600}.month-header-cell.sunday{color:#f05c5c}.month-header-cell.saturday{color:#4f87ee}.month-weeks{flex-direction:column;flex:1;display:flex;overflow:hidden}.month-week-row{border-bottom:1px solid var(--border);flex-direction:column;flex:1;min-height:0;display:flex}.month-week-row:last-child{border-bottom:none}.month-cells-row{flex:1;grid-template-columns:repeat(7,1fr);min-height:0;display:grid;overflow:hidden}.month-cell{border-right:1px solid var(--border);cursor:pointer;flex-direction:column;gap:2px;padding:4px 6px;transition:background .1s;display:flex;overflow:hidden}.month-cell:last-child{border-right:none}.month-cell:hover{background:var(--bg-hover)}.month-cell.other-month{background:var(--bg-secondary)}.month-cell.other-month .cell-day-num{color:var(--text-muted)}.month-cell.sunday .cell-day-num{color:#f05c5c}.month-cell.saturday .cell-day-num{color:#4f87ee}.month-cell.is-today .cell-day-num{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.month-cell.drag-over{background:color-mix(in srgb, var(--accent) 10%, var(--bg-primary));outline:2px dashed var(--accent);outline-offset:-2px}.cell-day-row{align-items:center;gap:4px;display:flex}.cell-day-num{color:var(--text-primary);flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.85rem;font-weight:500;display:flex}.cell-events{flex-direction:column;gap:2px;display:flex;overflow:hidden}.cell-event{color:#fff;cursor:pointer;text-align:left;white-space:nowrap;border:none;border-radius:4px;align-items:center;gap:4px;width:100%;padding:2px 6px;font-family:inherit;font-size:.72rem;transition:opacity .1s;display:flex;position:relative;overflow:hidden}.cell-event:hover{opacity:.85}.cell-event.dragging{opacity:.35}.cell-event-multi{border-left:3px solid #ffffff80;border-radius:0 4px 4px 0}.cell-event-multi.continued{opacity:.8;border-left:none;border-radius:0}.cell-event-time{opacity:.85;flex-shrink:0;font-size:.68rem}.cell-event-title{text-overflow:ellipsis;overflow:hidden}.cell-more{color:var(--text-muted);padding-left:4px;font-size:.72rem}@media (width<=768px){.month-header-cell{padding:4px 0;font-size:.65rem}.month-week-row,.month-cells-row{min-height:0}.month-cell{gap:1px;min-height:0;padding:1px 2px;overflow:hidden}.cell-day-row{min-height:0}.cell-day-num{width:20px;height:20px;font-size:.72rem}.month-cell.is-today .cell-day-num{width:20px;height:20px}.cell-events{min-height:0;overflow:hidden}.cell-event{padding:1px 3px;font-size:.62rem;line-height:1.3}.event-quick-delete,.cell-event-time{display:none}.cell-more{font-size:.62rem}}.month-cell.has-cell-bg{position:relative}.month-cell.has-cell-bg:before{content:"";pointer-events:none;z-index:0;background:#ffffff94;position:absolute;inset:0}.dark .month-cell.has-cell-bg:before{background:#00000085}.month-cell.has-cell-bg .cell-day-row,.month-cell.has-cell-bg .cell-events{z-index:1;position:relative}.week-view{flex-direction:column;height:100%;display:flex;overflow:hidden}.week-header{border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.week-time-gutter{flex-shrink:0;width:56px}.week-header-cell{border-left:1px solid var(--border);flex-direction:column;flex:1;align-items:center;gap:4px;padding:10px 0 8px;display:flex}.week-day-name{color:var(--text-muted);text-transform:uppercase;font-size:.72rem;font-weight:600}.week-day-num{color:var(--text-primary);border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:1.1rem;font-weight:500;display:flex}.today-badge{background:var(--accent);color:#fff;font-weight:700}.week-header-cell.sunday .week-day-name,.week-header-cell.sunday .week-day-num{color:#f05c5c}.week-header-cell.saturday .week-day-name,.week-header-cell.saturday .week-day-num{color:#4f87ee}.week-header-cell.is-today .week-day-name{color:var(--accent)}.allday-row{border-bottom:1px solid var(--border);flex-shrink:0;min-height:36px;display:flex}.allday-label{color:var(--text-muted);justify-content:flex-end;align-items:center;padding-right:8px;font-size:.7rem;display:flex}.allday-cell{border-left:1px solid var(--border);cursor:pointer;flex-direction:column;flex:1;gap:2px;padding:4px 2px;display:flex}.allday-event{color:#fff;cursor:pointer;text-align:left;white-space:nowrap;text-overflow:ellipsis;border:none;border-radius:4px;width:100%;padding:2px 6px;font-family:inherit;font-size:.75rem;position:relative;overflow:hidden}.week-body{flex:1;display:flex;overflow-y:auto}.week-time-col{flex-shrink:0;width:56px;position:relative}.time-slot-label{height:60px;color:var(--text-muted);justify-content:flex-end;align-items:flex-start;padding-top:2px;padding-right:8px;font-size:.68rem;display:flex}.week-day-col{border-left:1px solid var(--border);cursor:pointer;flex:1;height:1440px;transition:background .1s;position:relative}.week-day-col:hover{background:color-mix(in srgb, var(--accent) 3%, transparent)}.hour-line{border-top:1px solid var(--border);position:absolute;left:0;right:0}.timed-event{color:#fff;cursor:pointer;text-align:left;z-index:1;border:none;border-radius:6px;flex-direction:column;align-items:flex-start;gap:2px;padding:4px 8px;font-family:inherit;transition:opacity .1s;display:flex;position:absolute;left:2px;right:2px;overflow:hidden}.timed-event:hover{opacity:.85}.timed-event.dragging{opacity:.3}.drag-ghost{opacity:.55;pointer-events:none;z-index:2;border:2px dashed #fff9}.allday-event.dragging{opacity:.3}.allday-cell.drag-over{background:color-mix(in srgb, var(--accent) 10%, transparent);outline:2px dashed var(--accent);outline-offset:-2px}.week-day-col.drag-active{background:color-mix(in srgb, var(--accent) 3%, transparent)}.timed-event-title{white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:.8rem;font-weight:600;overflow:hidden}.timed-event-time{opacity:.85;font-size:.7rem}.timed-event .event-quick-delete{top:4px;transform:none}@media (width<=768px){.week-view{overflow-x:auto}.week-header,.allday-row,.week-body{min-width:520px}.week-time-gutter,.week-time-col{width:40px}.week-day-name{font-size:.65rem}.week-day-num{width:28px;height:28px;font-size:.9rem}}.day-view{flex-direction:column;height:100%;display:flex}.day-header{border-bottom:1px solid var(--border);flex-shrink:0;padding:16px 20px}.day-header-info{align-items:baseline;gap:12px;display:flex}.day-weekday{color:var(--text-muted);font-size:.85rem;font-weight:500}.day-date-num{color:var(--text-primary);font-size:1.3rem;font-weight:600}.day-header-info.is-today .day-date-num{color:var(--accent)}.day-allday-row{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;min-height:40px;display:flex}.day-time-gutter{flex-shrink:0;width:64px}.allday-label{color:var(--text-muted);text-align:right;padding-right:12px;font-size:.7rem}.day-allday-events{flex-wrap:wrap;flex:1;gap:4px;padding:6px 8px;display:flex}.day-allday-event{color:#fff;cursor:pointer;border:none;border-radius:6px;padding:3px 10px;font-family:inherit;font-size:.82rem;transition:opacity .15s;position:relative}.day-allday-event:hover{opacity:.85}.day-body{flex:1;display:flex;overflow-y:auto}.day-time-col{flex-shrink:0;width:64px}.day-time-label{height:64px;color:var(--text-muted);justify-content:flex-end;align-items:flex-start;padding-top:2px;padding-right:12px;font-size:.72rem;display:flex}.day-events-col{border-left:1px solid var(--border);cursor:pointer;flex:1;height:1536px;position:relative}.day-events-col:hover{background:color-mix(in srgb, var(--accent) 2%, transparent)}.day-hour-line{border-top:1px solid var(--border);position:absolute;left:0;right:0}.day-timed-event{color:#fff;cursor:pointer;text-align:left;z-index:1;border:none;border-radius:8px;flex-direction:column;gap:3px;padding:8px 12px;font-family:inherit;transition:opacity .1s;display:flex;position:absolute;left:8px;right:8px;overflow:hidden}.day-timed-event:hover{opacity:.85}.day-timed-event.dragging{opacity:.3}.day-drag-ghost{opacity:.55;pointer-events:none;z-index:2;border:2px dashed #fff9}.day-events-col.drag-active{background:color-mix(in srgb, var(--accent) 3%, transparent)}.day-event-title{font-size:.9rem;font-weight:600}.day-event-time{opacity:.85;font-size:.78rem}.day-event-note{opacity:.75;white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;overflow:hidden}.day-timed-event .event-quick-delete{top:6px;transform:none}@media (width<=768px){.day-header{padding:10px 14px}.day-date-num{font-size:1.1rem}}.category-form{background:var(--bg-secondary);border:1.5px solid var(--border);border-radius:12px;flex-direction:column;gap:10px;margin-top:4px;padding:12px;animation:.15s formSlideIn;display:flex}@keyframes formSlideIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.category-form-input{border:1.5px solid var(--border);background:var(--bg-primary);width:100%;color:var(--text-primary);box-sizing:border-box;border-radius:8px;padding:8px 12px;font-family:inherit;font-size:.9rem;transition:border-color .15s}.category-form-input:focus{border-color:var(--accent);outline:none}.color-swatches{grid-template-columns:repeat(8,1fr);gap:6px;display:grid}.color-swatch{aspect-ratio:1;cursor:pointer;border:2.5px solid #0000;border-radius:50%;padding:0;transition:transform .1s,border-color .1s}.color-swatch:hover{transform:scale(1.15)}.color-swatch.selected{border-color:var(--text-primary);transform:scale(1.15)}.category-form-actions{justify-content:flex-end;gap:8px;display:flex}.cat-form-btn{cursor:pointer;border:none;border-radius:8px;padding:6px 16px;font-family:inherit;font-size:.85rem;font-weight:500;transition:opacity .15s}.cat-form-btn.cancel{color:var(--text-secondary);border:1.5px solid var(--border);background:0 0}.cat-form-btn.cancel:hover{background:var(--bg-hover)}.cat-form-btn.save{color:#fff}.cat-form-btn.save:disabled{opacity:.4;cursor:not-allowed}.cat-form-btn.save:not(:disabled):hover{opacity:.85}.category-picker{flex-direction:column;gap:8px;display:flex}.category-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.category-option{border:1.5px solid var(--border);cursor:pointer;color:var(--text-primary);-webkit-user-select:none;user-select:none;border-radius:10px;align-items:center;gap:8px;padding:10px 12px;font-size:.88rem;transition:all .15s;display:flex;position:relative}.category-option:hover{border-color:var(--cat-color);background:color-mix(in srgb, var(--cat-color) 8%, transparent)}.category-option.selected{border-color:var(--cat-color);background:color-mix(in srgb, var(--cat-color) 14%, transparent)}.cat-dot{background:var(--cat-color);border-radius:50%;flex-shrink:0;width:10px;height:10px}.cat-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.cat-delete-btn{width:18px;height:18px;color:var(--text-secondary);cursor:pointer;background:#0000001f;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:.6rem;transition:background .15s;display:none}.category-option:hover .cat-delete-btn{display:flex}.cat-delete-btn:hover{color:#f05c5c;background:#f05c5c40}.add-category-btn{border:1.5px dashed var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:10px;justify-content:center;align-items:center;gap:5px;padding:10px 12px;font-family:inherit;font-size:.85rem;transition:all .15s;display:flex}.add-category-btn:hover{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent)}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-primary);border-radius:16px;width:480px;max-width:95vw;max-height:90vh;padding:28px;animation:.2s modalIn;overflow-y:auto;box-shadow:0 20px 60px #0000004d}@keyframes modalIn{0%{opacity:0;transform:scale(.95)translateY(-10px)}to{opacity:1;transform:scale(1)translateY(0)}}@media (width<=768px){.modal-overlay{align-items:flex-end}.modal{border-radius:20px 20px 0 0;width:100%;max-width:100%;max-height:92vh;padding:20px 20px 32px;animation:.25s modalInMobile}@keyframes modalInMobile{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.btn{padding:11px 18px;font-size:.95rem}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.modal-header h2{color:var(--text-primary);font-size:1.1rem;font-weight:600}.modal-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;transition:background .15s;display:flex}.modal-close:hover{background:var(--bg-hover)}.form-group{margin-bottom:16px}.form-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;font-size:.8rem;font-weight:500;display:block}.form-input{border:1.5px solid var(--border);background:var(--bg-secondary);width:100%;color:var(--text-primary);box-sizing:border-box;border-radius:10px;padding:10px 14px;font-family:inherit;font-size:.95rem;transition:border-color .15s}.form-input:focus{border-color:var(--accent);outline:none}.title-input{font-size:1.1rem;font-weight:500}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.datetime-block{border:1.5px solid var(--border);border-radius:12px;flex-direction:column;gap:8px;display:flex;overflow:hidden}.datetime-row{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 14px;transition:background .15s;display:flex}.datetime-row:last-child{border-bottom:none}.datetime-icon{flex-shrink:0;font-size:1rem;line-height:1}.datetime-input{flex:1;min-width:0;background:0 0!important;border:none!important;border-radius:0!important;padding:0!important;font-size:.92rem!important}.datetime-input:focus{outline:none;border:none!important}.datetime-input:disabled{color:var(--text-muted);cursor:not-allowed}.notify-row{background:var(--bg-secondary)}.notify-select{color:var(--text-primary);cursor:pointer;appearance:none;background:0 0;border:none;outline:none;flex:1;padding:0;font-family:inherit;font-size:.92rem}.time-row{background:var(--bg-secondary)}.time-row.is-allday{opacity:.45}.time-sep{color:var(--text-muted);flex-shrink:0;font-size:.85rem}.enddate-row{background:color-mix(in srgb, var(--accent) 5%, var(--bg-secondary))}.enddate-label{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:.78rem}.clear-enddate-btn{background:var(--bg-hover);width:22px;height:22px;color:var(--text-muted);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.65rem;transition:background .15s;display:flex}.clear-enddate-btn:hover{color:#f05c5c;background:#f05c5c33}.allday-toggle{cursor:pointer;flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.allday-toggle input[type=checkbox]{display:none}.toggle-track{background:var(--border);border-radius:9px;flex-shrink:0;width:32px;height:18px;transition:background .2s;position:relative}.allday-toggle input:checked+.toggle-track{background:var(--accent)}.toggle-thumb{background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0003}.allday-toggle input:checked~.toggle-track .toggle-thumb{transform:translate(14px)}.toggle-label{color:var(--text-secondary);white-space:nowrap;font-size:.8rem}.location-input-wrap{border:1.5px solid var(--border);background:var(--bg-secondary);border-radius:10px;align-items:center;gap:8px;padding:0 14px;transition:border-color .15s;display:flex}.location-input-wrap:focus-within{border-color:var(--accent)}.location-icon{flex-shrink:0;font-size:.95rem}.location-input{background:0 0!important;border:none!important;border-radius:0!important;padding:10px 0!important}.location-input:focus{outline:none}.modal-actions{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:24px;padding-top:20px;display:flex}.modal-actions-right{gap:10px;margin-left:auto;display:flex}.btn{cursor:pointer;border:none;border-radius:10px;padding:9px 20px;font-family:inherit;font-size:.9rem;font-weight:500;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{color:var(--text-secondary);border:1.5px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--bg-hover)}.btn-danger{color:#f05c5c;background:0 0;border:1.5px solid #f05c5c}.btn-danger:hover{background:#f05c5c1a}.event-popup{background:var(--bg-primary);border:1.5px solid var(--border);z-index:500;border-radius:14px;width:272px;animation:.15s popupIn;position:fixed;overflow:hidden;box-shadow:0 8px 32px #0000002e,0 2px 8px #00000014}@keyframes popupIn{0%{opacity:0;transform:scale(.95)translateY(-4px)}to{opacity:1;transform:scale(1)translateY(0)}}.event-popup-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:13px 13px 11px;display:flex}.event-popup-dot{background:var(--ev-color);border-radius:50%;flex-shrink:0;width:12px;height:12px}.event-popup-title{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.95rem;font-weight:600;overflow:hidden}.event-popup-header-right{flex-shrink:0;align-items:center;gap:2px;display:flex}.event-popup-share{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:.9rem;font-weight:700;transition:background .15s;display:flex}.event-popup-share:hover{background:var(--bg-hover);color:var(--accent)}.event-popup-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.75rem;transition:background .15s;display:flex}.event-popup-close:hover{background:var(--bg-hover);color:var(--text-secondary)}.event-popup-info{flex-direction:column;gap:7px;padding:10px 13px;display:flex}.event-popup-row{color:var(--text-secondary);align-items:flex-start;gap:8px;font-size:.85rem;line-height:1.4;display:flex}.event-popup-row>span:first-child{flex-shrink:0;font-size:.82rem}.event-popup-note{white-space:pre-wrap;word-break:break-word;color:var(--text-primary)}.event-popup-empty{color:var(--text-muted);font-style:italic}.event-popup-actions{border-top:1px solid var(--border);gap:8px;padding:10px 13px 13px;display:flex}.event-popup-btn{cursor:pointer;border:none;border-radius:8px;flex:1;padding:7px 10px;font-family:inherit;font-size:.84rem;font-weight:500;transition:all .15s}.event-popup-btn-delete{color:#f05c5c;background:0 0;border:1.5px solid #f05c5c}.event-popup-btn-delete:hover{background:#f05c5c1a}.event-popup-btn-edit{background:var(--accent);color:#fff}.event-popup-btn-edit:hover{background:var(--accent-hover)}.event-popup-location{color:var(--accent);word-break:break-all;line-height:1.4;text-decoration:none}.event-popup-location:hover{text-decoration:underline}.event-popup-series-label{color:var(--accent);font-size:.82rem}.series-delete-panel{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding:10px 13px 13px;display:flex}.series-delete-label{color:var(--text-secondary);margin:0 0 2px;font-size:.8rem}.series-delete-options{flex-direction:column;gap:4px;display:flex}.series-delete-btn{color:#f05c5c;cursor:pointer;text-align:left;background:0 0;border:1.5px solid #f05c5c;border-radius:8px;width:100%;padding:7px 10px;font-family:inherit;font-size:.84rem;font-weight:500;transition:background .15s}.series-delete-btn:hover{background:#f05c5c1a}.series-delete-btn-all{background:#f05c5c14}.series-delete-cancel{width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px;font-family:inherit;font-size:.82rem;transition:background .15s}.series-delete-cancel:hover{background:var(--bg-hover)}@media (width<=768px){.event-popup{width:calc(100vw - 24px);left:12px!important}}.lightbox-overlay{z-index:2000;background:#000000e0;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox-close{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1rem;transition:background .15s;display:flex;position:absolute;top:20px;right:20px}.lightbox-close:hover{background:#ffffff40}.lightbox-nav{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.8rem;transition:background .15s,opacity .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:hover{background:#ffffff40}.lightbox-nav:disabled{opacity:.2;cursor:default}.lightbox-prev{left:20px}.lightbox-next{right:20px}.lightbox-content{flex-direction:column;align-items:center;gap:14px;max-width:calc(100vw - 160px);max-height:calc(100vh - 80px);display:flex}.lightbox-img{object-fit:contain;border-radius:8px;max-width:100%;max-height:calc(100vh - 160px);animation:.2s zoomIn;box-shadow:0 4px 40px #00000080}@keyframes zoomIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.lightbox-caption{color:#ffffffd9;text-align:center;max-width:600px;font-size:.9rem}.lightbox-counter{color:#ffffff80;font-size:.8rem}.daysheet-overlay{z-index:600;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000059;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.daysheet{background:var(--bg-primary);border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-width:480px;max-height:72vh;padding:20px 20px 36px;animation:.22s daysheetIn;display:flex}@keyframes daysheetIn{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}@media (width>=769px){.daysheet-overlay{align-items:center}.daysheet{border-radius:16px;max-height:80vh;padding-bottom:24px}}.daysheet-header{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.daysheet-date{align-items:baseline;gap:6px;display:flex}.daysheet-month{color:var(--text-secondary);font-size:.9rem}.daysheet-day{color:var(--text-primary);font-size:2rem;font-weight:700;line-height:1}.daysheet-dow{color:var(--text-secondary);font-size:.88rem}.daysheet-dow.sunday{color:#f05c5c}.daysheet-dow.saturday{color:#4f87ee}.daysheet-header-actions{align-items:center;gap:8px;display:flex}.daysheet-add-btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:10px;padding:7px 14px;font-family:inherit;font-size:.88rem;font-weight:500;transition:background .15s}.daysheet-add-btn:hover{background:var(--accent-hover)}.daysheet-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;transition:background .15s;display:flex}.daysheet-close:hover{background:var(--bg-hover)}.daysheet-body{flex-direction:column;flex:1;gap:16px;min-height:0;display:flex}.daysheet-events{flex-direction:column;flex:1;gap:6px;display:flex;overflow-y:auto}.daysheet-empty{text-align:center;color:var(--text-muted);padding:36px 0;font-size:.9rem}.daysheet-event{background:var(--bg-secondary);cursor:pointer;text-align:left;border:none;border-radius:10px;flex-shrink:0;align-items:center;gap:10px;width:100%;padding:10px 12px;font-family:inherit;transition:background .15s;display:flex}.daysheet-event:hover{background:var(--bg-hover)}.daysheet-event-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.daysheet-event-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.daysheet-event-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.92rem;font-weight:500;overflow:hidden}.daysheet-event-time{color:var(--text-secondary);font-size:.78rem}.daysheet-event-delete{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.9rem;transition:all .15s;display:flex}.daysheet-event-delete:hover{color:#f05c5c;background:#f05c5c26}.daysheet-photos{flex-shrink:0}.daysheet-section-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:.78rem;font-weight:600}.daysheet-photos-strip{-webkit-overflow-scrolling:touch;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.daysheet-photos-strip::-webkit-scrollbar{height:3px}.daysheet-photos-strip::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.daysheet-photo-upload-tile{border:2px dashed var(--border);background:var(--bg-secondary);cursor:pointer;width:96px;height:80px;color:var(--text-muted);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:all .15s;display:flex}.daysheet-photo-upload-tile:hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--bg-secondary));color:var(--accent)}.daysheet-photo-upload-tile.loading{cursor:not-allowed}.daysheet-upload-plus{font-size:1.6rem;font-weight:300;line-height:1}.daysheet-upload-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin;display:block}@keyframes spin{to{transform:rotate(360deg)}}.daysheet-photo-item{cursor:pointer;text-align:left;background:0 0;border:none;flex-direction:column;flex-shrink:0;gap:4px;width:96px;padding:0;font-family:inherit;transition:opacity .15s;display:flex}.daysheet-photo-item:hover{opacity:.85}.daysheet-photo-thumb{object-fit:cover;border-radius:8px;width:96px;height:80px;display:block}.daysheet-photo-caption{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;padding:0 2px;font-size:.7rem;overflow:hidden}.photo-uploader{border:2px dashed var(--border);cursor:pointer;background:var(--bg-secondary);border-radius:12px;justify-content:center;align-items:center;padding:20px;transition:all .2s;display:flex}.photo-uploader:hover,.photo-uploader.dragging{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, var(--bg-secondary))}.photo-uploader.uploading{cursor:default;opacity:.7}.uploader-content{pointer-events:none;flex-direction:column;align-items:center;gap:4px;display:flex}.uploader-icon{font-size:1.6rem;line-height:1}.uploader-text{color:var(--text-primary);font-size:.88rem;font-weight:600}.uploader-hint{color:var(--text-muted);font-size:.75rem}.uploader-spinner{border:2.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;margin-bottom:4px;animation:.8s linear infinite spin;display:block}.photo-card{flex-direction:column;gap:6px;display:flex}.photo-thumb{aspect-ratio:1;cursor:pointer;background:var(--bg-secondary);border-radius:10px;position:relative;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .2s;display:block}.photo-thumb:hover img{transform:scale(1.04)}.photo-thumb-actions{opacity:0;align-items:center;gap:4px;transition:opacity .15s;display:flex;position:absolute;top:6px;right:6px}.photo-thumb:hover .photo-thumb-actions{opacity:1}.photo-delete-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.7rem;display:flex}.photo-bg-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;background:#0000008c;border:none;border-radius:13px;height:26px;padding:0 8px;font-family:inherit;font-size:.68rem}.photo-bg-btn.active{background:#4f87eed9}.photo-bg-indicator{filter:drop-shadow(0 1px 2px #00000080);pointer-events:none;font-size:.9rem;position:absolute;bottom:6px;left:6px}.photo-thumb.is-cell-bg{outline-offset:-2px;outline:2px solid #4f87ee}.photo-caption{min-height:22px}.caption-text{color:var(--text-secondary);cursor:text;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;line-height:1.4;display:block;overflow:hidden}.caption-text.placeholder{color:var(--text-muted);font-style:italic}.caption-text:hover{color:var(--text-primary)}.caption-input{width:100%;color:var(--text-primary);background:var(--bg-secondary);border:1px solid var(--accent);box-sizing:border-box;border-radius:4px;outline:none;padding:2px 6px;font-family:inherit;font-size:.78rem}.memory-gallery{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.gallery-empty{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:40px 20px;display:flex}.gallery-empty-icon{font-size:2.4rem;line-height:1}.gallery-empty p{color:var(--text-secondary);margin:0;font-size:.88rem}.gallery-empty-sub{color:var(--text-muted)!important;font-size:.78rem!important}.memory-panel{border-left:1px solid var(--border);background:var(--bg-primary);flex-direction:column;flex-shrink:0;width:280px;animation:.22s slideInRight;display:flex;overflow:hidden}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.memory-panel-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 16px 12px;display:flex}.memory-panel-title{align-items:center;gap:10px;display:flex}.memory-panel-icon{font-size:1.4rem;line-height:1}.memory-panel-title h2{color:var(--text-primary);margin:0;font-size:.95rem;font-weight:700;line-height:1}.memory-panel-date{color:var(--text-muted);margin:3px 0 0;font-size:.75rem}.memory-panel-close{width:30px;height:30px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;transition:background .15s;display:flex}.memory-panel-close:hover{background:var(--bg-hover)}.memory-panel-body{flex-direction:column;flex:1;gap:14px;padding:14px;display:flex;overflow-y:auto}.memory-panel-section-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;min-height:16px;font-size:.72rem;font-weight:600}.memory-panel-gallery-wrap{flex-direction:column;gap:8px;display:flex}@media (width<=768px){.memory-panel{z-index:90;width:100%;animation:.25s slideInUp;position:fixed;inset:0}@keyframes slideInUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}}.settings-panel{border-left:1px solid var(--border);background:var(--bg-primary);flex-direction:column;flex-shrink:0;width:280px;display:flex;overflow-y:auto}.settings-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.settings-title{color:var(--text-primary);font-size:1rem;font-weight:600}.settings-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;font-size:.9rem;transition:background .15s;display:flex}.settings-close:hover{background:var(--bg-hover)}.settings-body{flex:1;padding:12px 0}.settings-section{border-bottom:1px solid var(--border);padding:12px 20px}.settings-section:last-child{border-bottom:none}.settings-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;font-size:.72rem;font-weight:600}.settings-row{justify-content:space-between;align-items:center;gap:12px;min-height:36px;display:flex}.settings-row-label{color:var(--text-primary);font-size:.88rem}.settings-toggle{cursor:pointer;flex-shrink:0}.settings-toggle input{display:none}.settings-toggle-track{background:var(--border);border-radius:11px;width:40px;height:22px;transition:background .2s;display:block;position:relative}.settings-toggle input:checked+.settings-toggle-track{background:var(--accent)}.settings-toggle-thumb{background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.settings-toggle input:checked~.settings-toggle-track .settings-toggle-thumb{transform:translate(18px)}.font-size-group{gap:4px;display:flex}.font-size-btn{border:1.5px solid var(--border);width:36px;height:30px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:8px;font-family:inherit;font-size:.82rem;font-weight:500;transition:all .15s}.font-size-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.font-size-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.bg-theme-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.bg-theme-btn{cursor:pointer;border:2px solid #0000;border-radius:10px;justify-content:center;align-items:flex-end;height:52px;padding-bottom:5px;font-family:inherit;transition:transform .15s,border-color .15s;display:flex}.bg-theme-btn:hover{transform:scale(1.05)}.bg-theme-btn.active{transform:scale(1.05);border-color:var(--text-primary)!important}.bg-theme-name{color:#666;white-space:nowrap;font-size:.62rem}.notif-badge{border-radius:20px;padding:3px 10px;font-size:.8rem;font-weight:500}.notif-on{color:#10b981;background:#10b98126}.notif-off{color:#f05c5c;background:#f05c5c1f}.notif-enable-btn{border:1.5px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:8px;padding:5px 12px;font-family:inherit;font-size:.82rem;font-weight:500;transition:background .15s}.notif-enable-btn:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}.notif-status-row{margin-top:8px}.settings-hint{color:var(--text-muted);margin-top:6px;font-size:.75rem;line-height:1.5}.line-settings{flex-direction:column;gap:6px;display:flex}.line-settings-label{color:var(--text-secondary);margin-top:4px;font-size:.78rem;font-weight:500}.line-settings-input{border:1.5px solid var(--border);background:var(--bg-secondary);width:100%;color:var(--text-primary);box-sizing:border-box;border-radius:8px;padding:8px 10px;font-family:inherit;font-size:.84rem;transition:border-color .15s}.line-settings-input:focus{border-color:var(--accent);outline:none}.line-settings-ok{color:#10b981;margin-top:10px;font-size:.82rem;font-weight:500}@media (width<=768px){.settings-panel{z-index:800;border-left:none;border-radius:0;width:100%;position:fixed;inset:0}}.line-test-btn{color:#fff;cursor:pointer;background:#06c755;border:none;border-radius:8px;width:100%;margin-top:8px;padding:8px;font-family:inherit;font-size:.85rem;font-weight:600}.line-test-btn:hover{background:#05a847}.pt-backdrop{z-index:300;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pt-modal{background:var(--bg-primary);border-radius:20px;flex-direction:column;align-items:center;width:340px;padding:0 0 16px;display:flex;overflow:hidden;box-shadow:0 12px 48px #00000059}.pt-head{border-bottom:1px solid var(--border);box-sizing:border-box;align-items:center;gap:8px;width:100%;padding:12px 16px;display:flex}.pt-title{flex:1;font-size:1rem;font-weight:700}.pt-score{color:var(--accent);font-size:1rem;font-weight:700}.pt-x{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:1rem}.pt-stage{background:linear-gradient(#87ceeb 0%,#b8dff8 55%,#c8e6c9 100%);border-radius:10px;width:300px;height:440px;margin:16px 0 12px;position:relative;overflow:hidden}.dark .pt-stage{background:linear-gradient(#0d1b2a 0%,#1a2d3d 55%,#1a2d1a 100%)}.pt-world{width:100%;position:absolute;top:0;left:0}.pt-piece{box-sizing:border-box;-webkit-user-select:none;user-select:none;border-radius:8px;justify-content:center;align-items:center;font-size:1.55rem;display:flex;position:absolute}.pt-gnd{background:linear-gradient(#8b5e3c 0%,#5d3a1a 100%);border:2px solid #3e2312;border-radius:6px}.pt-placed{background:#8b5a2bd1;border:2px solid #5a3714bf}.pt-cur{background:#b4783ce0;border:2px solid #dca050e6;animation:.5s ease-in-out infinite alternate pt-sway}@keyframes pt-sway{0%{transform:translateY(0)}to{transform:translateY(-5px)}}.pt-falling{background:#b4783ce0;border:2px solid #dca050e6;box-shadow:0 4px 12px #0000004d}.pt-overlay{text-align:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffc7;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:1rem;font-weight:600;display:flex;position:absolute;inset:0}.dark .pt-overlay{background:#000000ad}.pt-ol-icon{font-size:3rem}.pt-ol-over{margin:0;font-size:1.3rem;font-weight:700}.pt-ol-score{color:var(--accent);margin:0;font-size:1.6rem;font-weight:700}.pt-ol-sub{color:var(--text-muted);margin:0;font-size:.78rem;font-weight:400}.pt-retry{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;margin-top:6px;padding:8px 24px;font-family:inherit;font-size:.9rem;font-weight:600;transition:opacity .15s}.pt-retry:hover{opacity:.85}.pt-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:12px 36px;font-family:inherit;font-size:1rem;font-weight:700;transition:opacity .15s,transform .1s}.pt-btn:hover{opacity:.88}.pt-btn:active{transform:scale(.96)}.pt-btn:disabled{opacity:.35;cursor:default}.pt-hint{color:var(--text-muted);margin-top:6px;font-size:.7rem}@media (width<=768px){.pt-modal{border-radius:20px 20px 0 0;width:100%;padding-bottom:28px}.pt-backdrop{align-items:flex-end}.pt-stage{width:100%;max-width:340px}.pt-btn{width:calc(100% - 32px);max-width:340px;padding:14px;font-size:1.1rem}}.app{--bg-primary:#fff;--bg-secondary:#f5f7fa;--bg-hover:#f0f2f5;--border:#e8eaed;--text-primary:#1a1a2e;--text-secondary:#5f6368;--text-muted:#9aa0a6;--accent:#4f87ee;--accent-hover:#3b73d9;--shadow:0 2px 8px #0000001a;background:var(--bg-primary);height:100dvh;color:var(--text-primary);flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;overflow:hidden}.app.dark{--bg-primary:#1a1d23;--bg-secondary:#22262f;--bg-hover:#2a2f3a;--border:#2e3340;--text-primary:#e8eaed;--text-secondary:#9aa0a6;--text-muted:#5f6368;--accent:#5c91f5;--accent-hover:#4a7de0;--shadow:0 2px 8px #0006}.topbar{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;height:60px;padding:0 20px;display:flex}.topbar-left{align-items:center;gap:16px;display:flex}.topbar-right{align-items:center;gap:12px;display:flex}.logo{align-items:center;gap:8px;display:flex}.logo-icon{font-size:1.4rem}.logo-text{color:var(--accent);letter-spacing:-.02em;font-size:1.1rem;font-weight:700}.today-btn{border:1.5px solid var(--border);color:var(--text-primary);cursor:pointer;background:0 0;border-radius:8px;padding:6px 14px;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s}.today-btn:hover{background:var(--bg-hover)}.nav-arrows{gap:4px;display:flex}.nav-arrows button{cursor:pointer;width:32px;height:32px;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:1.3rem;transition:background .15s;display:flex}.nav-arrows button:hover{background:var(--bg-hover)}.header-label{color:var(--text-primary);margin:0;font-size:1.15rem;font-weight:600}.view-switcher{background:var(--bg-secondary);border-radius:10px;gap:2px;padding:3px;display:flex}.view-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;padding:6px 16px;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s}.view-btn.active{background:var(--bg-primary);color:var(--text-primary);box-shadow:0 1px 3px #0000001a}.memory-toggle-btn{border:1.5px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:10px;align-items:center;gap:6px;padding:7px 14px;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s;display:flex;position:relative}.memory-toggle-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.memory-toggle-btn.active{background:color-mix(in srgb, var(--accent) 10%, transparent);border-color:var(--accent);color:var(--accent)}.game-btn{border:1.5px solid var(--border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:10px;align-items:center;gap:6px;padding:7px 14px;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s;display:flex}.game-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.notif-request-btn{border:1.5px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:10px;align-items:center;gap:6px;padding:7px 14px;font-family:inherit;font-size:.85rem;font-weight:500;transition:all .15s;display:flex}.notif-request-btn:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}.dark-toggle{background:var(--bg-secondary);cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;transition:background .15s;display:flex}.dark-toggle:hover{background:var(--bg-hover)}.settings-btn{background:var(--bg-secondary);cursor:pointer;border:none;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.05rem;transition:background .15s;display:flex}.settings-btn:hover,.settings-btn.active{background:var(--bg-hover)}.app-body{flex:1;display:flex;overflow:hidden}.main-view{flex-direction:column;flex:1;display:flex;overflow:hidden}*{box-sizing:border-box}.hamburger-btn{cursor:pointer;width:36px;height:36px;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.2rem;transition:background .15s;display:none}.hamburger-btn:hover{background:var(--bg-hover)}.sidebar-overlay{display:none}@media (width<=768px){.hamburger-btn{display:flex}.sidebar-overlay{z-index:99;background:#00000059;display:block;position:fixed;inset:0}.topbar{flex-wrap:nowrap;gap:4px;height:50px;padding:0 10px}.topbar-left{flex-shrink:0;order:1;gap:4px;width:auto;padding-bottom:0}.topbar-right{border-top:none;flex-shrink:0;order:2;gap:4px;width:auto;margin-left:auto;padding:0}.logo,.today-btn{display:none}.header-label{flex-shrink:0;font-size:.9rem}.view-btn{padding:5px 10px;font-size:.82rem}.btn-label{display:none}.memory-toggle-btn{padding:6px 8px}.game-btn{display:none}.settings-btn{width:32px;height:32px}}.popup-backdrop{z-index:490;position:fixed;inset:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
