.calendar-page{max-width:800px;margin:0 auto;padding:1.25rem}.calendar-page header{text-align:center;margin-bottom:1.25rem}.calendar-page h1{margin:0 0 .5rem;font-size:1.5rem}.calendar-page .total-spent{color:#666;font-size:1rem}.calendar-section{background:#fff;border-radius:.5rem;padding:1rem;box-shadow:0 2px 8px #0000001a}.loading{text-align:center;padding:40px;color:#666}.calendar{width:100%}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.calendar-title{margin:0;font-size:1.25rem}.calendar-nav-btn{background:#f5f5f5;border:1px solid #ddd;border-radius:.25rem;padding:.5rem 1rem;cursor:pointer;font-size:1rem;transition:background .2s}.calendar-nav-btn:hover{background:#e0e0e0}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.5%;margin-bottom:.5rem}.calendar-weekday{text-align:center;font-weight:700;padding:.5rem 0;font-size:.875rem;color:#666}.calendar-weekday.sunday{color:#e53935}.calendar-weekday.saturday{color:#1e88e5}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5%}.calendar-day{aspect-ratio:1;min-height:0;background:#f9f9f9;border-radius:.25rem;padding:.5rem;display:flex;flex-direction:column;cursor:pointer;transition:background .2s}.calendar-day:hover:not(.empty){background:#f0f0f0}.calendar-day.empty{background:transparent;cursor:default}.calendar-day.today{background:#e3f2fd;border:2px solid #2196f3}.calendar-day.has-expense{background:#fff3e0}.calendar-day.has-expense.today,.calendar-day.under-budget,.calendar-day.under-budget.today{background:#e3f2fd;border:2px solid #2196f3}.calendar-day.over-budget{background:#ffebee;border:2px solid #f44336}.calendar-day.over-budget.today{background:#ffcdd2;border:2px solid #f44336}.calendar-day.sunday .calendar-day-number{color:#e53935}.calendar-day.saturday .calendar-day-number{color:#1e88e5}.calendar-day-number{font-size:.875rem;font-weight:700;margin-bottom:.25rem}.calendar-day-amounts{display:flex;flex-direction:column;gap:.125rem;margin-top:auto}.calendar-day-amount{font-size:.75rem;color:#e65100;font-weight:700}.calendar-day-amount.sub{font-size:.65rem;color:#7b1fa2;font-weight:400}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;width:90%;max-width:400px;max-height:80vh;overflow:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px;border-bottom:1px solid #eee}.modal-header h3{margin:0;font-size:1.125rem}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;line-height:1}.modal-close:hover{color:#333}.modal-body{padding:16px}.expense-list{list-style:none;padding:0;margin:0 0 16px}.expense-item{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-bottom:1px solid #eee}.expense-item:last-child{border-bottom:none}.expense-info{display:flex;flex-direction:column;gap:.25rem;flex:1}.expense-amount{font-weight:700;font-size:1rem}.expense-category{display:inline-block;padding:.125rem .5rem;background:#e3f2fd;color:#1976d2;font-size:.75rem;border-radius:.25rem;font-weight:600;width:fit-content}.expense-memo{color:#666;font-size:.875rem}.expense-actions{display:flex;gap:8px}.btn-edit,.btn-delete{padding:4px 12px;font-size:.75rem;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:background .2s}.btn-edit{background:#e3f2fd;color:#1976d2}.btn-edit:hover{background:#bbdefb}.btn-delete{background:#ffebee;color:#d32f2f}.btn-delete:hover{background:#ffcdd2}.expense-edit-form{width:100%}.edit-fields{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.edit-input{padding:8px;border:1px solid #ddd;border-radius:4px;font-size:.875rem}.edit-input.amount{width:100px}.edit-input.category{flex:1;min-width:120px;cursor:pointer}.edit-input.memo{flex:1;width:100%}.edit-actions{display:flex;gap:8px}.btn-save{padding:6px 16px;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem}.btn-save:hover{background:#43a047}.btn-cancel{padding:6px 16px;background:#9e9e9e;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem}.btn-cancel:hover{background:#757575}.expense-delete-confirm{width:100%;text-align:center}.expense-delete-confirm p{margin:0 0 8px}.delete-target{font-weight:700;color:#d32f2f}.delete-actions{display:flex;gap:8px;justify-content:center;margin-top:12px}.btn-delete-confirm{padding:6px 16px;background:#d32f2f;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem}.btn-delete-confirm:hover{background:#c62828}.expense-total{display:flex;justify-content:space-between;align-items:center;padding:16px 0 0;border-top:2px solid #333;font-weight:700;font-size:1.125rem}.no-expenses{text-align:center;color:#666;padding:24px 0;margin:0}.btn-add-new{display:block;width:100%;padding:12px;margin-top:16px;background:#2196f3;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:background .2s}.btn-add-new:hover{background:#1976d2}.expense-add-form{margin-top:16px;padding:16px;background:#e3f2fd;border-radius:8px}.add-fields{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.add-input{padding:10px;border:1px solid #90caf9;border-radius:4px;font-size:1rem}.add-input.amount{width:120px}.add-input.category{flex:1;min-width:140px;cursor:pointer}.add-input.memo{flex:1;width:100%}.add-input:focus{outline:none;border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.add-actions{display:flex;gap:8px}.btn-add-save{padding:8px 20px;background:#4caf50;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:700}.btn-add-save:hover{background:#43a047}.csv-import-btn{background:#673ab7;color:#fff;border:none;padding:.5rem 1rem;border-radius:.5rem;cursor:pointer;font-size:.875rem;margin-left:.5rem;transition:background .2s}.csv-import-btn:hover{background:#5e35b1}.csv-export-btn{background:#2e7d32;color:#fff;border:none;padding:.5rem 1rem;border-radius:.5rem;cursor:pointer;font-size:.875rem;transition:background .2s}.csv-export-btn:hover{background:#1b5e20}.csv-export-btn:disabled{background:#ccc;cursor:not-allowed}.calendar-page header{display:flex;flex-direction:column;align-items:center;gap:.75rem}.calendar-actions{display:flex;gap:.5rem}.csv-importer-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2000}.csv-importer-modal{background:#fff;border-radius:.75rem;width:90%;max-width:32rem;max-height:85vh;overflow:auto;box-shadow:0 .5rem 2rem #0003}.csv-importer-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #eee;position:sticky;top:0;background:#fff}.csv-importer-header h2{margin:0;font-size:1.25rem}.csv-importer-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0;line-height:1}.csv-importer-close:hover{color:#333}.csv-importer-body{padding:1.25rem}.csv-step-description{color:#666;margin:0 0 1rem;line-height:1.5}.csv-file-input{display:block;width:100%;padding:1rem;border:2px dashed #ccc;border-radius:.5rem;background:#fafafa;cursor:pointer;margin-bottom:1rem}.csv-file-input:hover{border-color:#673ab7;background:#f5f0ff}.csv-hint{font-size:.75rem;color:#999;margin:0}.csv-mapping-form{display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem}.csv-mapping-row{display:flex;flex-direction:column;gap:.25rem}.csv-mapping-row label{font-size:.875rem;font-weight:500;color:#333}.csv-mapping-row select{padding:.5rem;border:1px solid #ddd;border-radius:.25rem;font-size:1rem;background:#fff}.csv-preview-count{font-size:.875rem;color:#666;margin:0 0 1rem}.csv-mapping-actions,.csv-preview-actions,.csv-result-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.csv-btn-back{padding:.5rem 1rem;background:#9e9e9e;color:#fff;border:none;border-radius:.25rem;cursor:pointer;font-size:.875rem}.csv-btn-back:hover{background:#757575}.csv-btn-next,.csv-btn-import{padding:.5rem 1rem;background:#673ab7;color:#fff;border:none;border-radius:.25rem;cursor:pointer;font-size:.875rem}.csv-btn-next:hover,.csv-btn-import:hover{background:#5e35b1}.csv-btn-import:disabled{background:#ccc;cursor:not-allowed}.csv-errors{background:#ffebee;border:1px solid #ffcdd2;border-radius:.5rem;padding:.75rem;margin-bottom:1rem}.csv-errors-title{margin:0 0 .5rem;color:#c62828;font-weight:500}.csv-errors-list{margin:0;padding-left:1.25rem;font-size:.75rem;color:#b71c1c}.csv-preview-table-container{max-height:15rem;overflow:auto;border:1px solid #ddd;border-radius:.25rem;margin-bottom:1rem}.csv-preview-table{width:100%;border-collapse:collapse;font-size:.75rem}.csv-preview-table th,.csv-preview-table td{padding:.5rem;text-align:left;border-bottom:1px solid #eee}.csv-preview-table th{background:#f5f5f5;font-weight:500;position:sticky;top:0}.csv-preview-more{font-size:.75rem;color:#666;text-align:center;padding:.5rem;margin:0}.csv-import-summary{font-weight:500;color:#4caf50;margin:0}.csv-step-result{text-align:center;padding:1rem 0}.csv-result-message{font-size:1.25rem;color:#4caf50;margin:0 0 1.5rem}.csv-btn-continue{padding:.5rem 1rem;background:#fff;color:#673ab7;border:1px solid #673ab7;border-radius:.25rem;cursor:pointer;font-size:.875rem}.csv-btn-continue:hover{background:#f5f0ff}.csv-btn-done{padding:.5rem 1rem;background:#4caf50;color:#fff;border:none;border-radius:.25rem;cursor:pointer;font-size:.875rem}.csv-btn-done:hover{background:#43a047}.csv-column-hint{background:#f5f5f5;border-radius:.5rem;padding:.75rem 1rem;margin-bottom:1rem}.csv-column-hint-title{margin:0 0 .5rem;font-size:.875rem;font-weight:500;color:#333}.csv-column-order{margin:0;padding-left:1.5rem;font-size:.875rem;color:#666}.csv-column-order li{margin-bottom:.25rem}.csv-required{color:#d32f2f;font-size:.75rem;margin-left:.25rem}.csv-header-toggle{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#666;margin-bottom:1rem;cursor:pointer}.csv-header-toggle input{cursor:pointer}.csv-expand-btn{display:block;width:100%;padding:.5rem;margin-bottom:.75rem;background:#f5f5f5;border:1px solid #ddd;border-radius:.25rem;cursor:pointer;font-size:.75rem;color:#666;transition:background .2s}.csv-expand-btn:hover{background:#e0e0e0}@media(max-width:600px){.calendar-page,.calendar-section{padding:.5rem}.calendar-grid,.calendar-weekdays{gap:.25%}.calendar-day{padding:.25rem}.calendar-day-number{font-size:.7rem}.calendar-day-amount{font-size:.55rem}.calendar-day-amount.sub{font-size:.5rem}.calendar-nav-btn{padding:.375rem .75rem;font-size:.875rem}.calendar-title{font-size:1rem}.edit-fields{flex-direction:column}.edit-input.amount,.edit-input.category{width:100%}.add-fields{flex-direction:column}.add-input.amount,.add-input.category{width:100%}}
