:root{--fg:#1f2933;--muted:#6b7785;--line:#d9dee4;--bg:#fff;--soft:#f4f6f8;--accent:#2f7a5b;--warn-bg:#fff4e5;--warn-fg:#8a4b00;--danger:#b42318;--saturday:#1d5fb8;--sunday:#c62828;--saturday-bg:#f2f7fd;--sunday-bg:#fdf3f3;--event-bg:#f1f1ef;color:var(--fg);background:var(--bg);font-family:system-ui,-apple-system,Malgun Gothic,Apple SD Gothic Neo,sans-serif}body{background:var(--bg);margin:0}button,.button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--line);background:var(--bg);color:var(--fg);cursor:pointer;border-radius:6px;padding:6px 10px;text-decoration:none;display:inline-block}button:hover,.button:hover{background:var(--soft)}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.icon-btn{background:0 0;border:none;padding:4px 8px}.muted{color:var(--muted)}.small{font-size:.85em}.error{color:var(--danger)}.app{max-width:1400px;margin:0 auto;padding:0 16px 24px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:0 0 10px;display:flex}.app-title{text-align:center;margin:16px 0 0;font-size:1.8rem}.toolbar input[type=search]{border:1px solid var(--line);box-sizing:border-box;border-radius:6px;width:240px;padding:6px 32px 6px 10px}.toolbar input[type=search]::-webkit-search-cancel-button{display:none}.search{align-items:center;display:flex;position:relative}.search-go{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px;display:flex;position:absolute;right:4px}.search-go:hover{color:inherit}.summary-slot{align-items:center;margin-left:auto;display:flex}.calendar-box{position:relative}.calendar-footer{position:absolute;bottom:0;right:0}.banner{background:var(--warn-bg);color:var(--warn-fg);border-radius:6px;margin-top:12px;padding:8px 12px}.toast{z-index:50;background:var(--fg);color:#fff;border-radius:8px;max-width:calc(100vw - 32px);padding:8px 8px 8px 14px;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast .icon-btn{color:#fff}main{grid-template-columns:1fr;gap:16px;display:grid}.calendar{min-width:0}.fc{--fc-border-color:var(--line);--fc-event-bg-color:var(--event-bg);--fc-event-border-color:var(--event-bg);--fc-event-text-color:var(--fg)}.fc .fc-event{cursor:pointer;border-radius:6px;padding:1px 2px}.fc .fc-event:hover{filter:brightness(.95)}.fc .fc-daygrid-day{cursor:default}.fc .fc-event.needs-review{border:1px dashed var(--fg)!important}.fc.fc-theme-standard .fc-scrollgrid,.fc.fc-theme-standard td,.fc.fc-theme-standard th{border:0}.fc .fc-daygrid-day-frame{border:1px solid var(--line);box-sizing:border-box;border-radius:5px;margin:1.5px}.fc .fc-daygrid-day.fc-day-today{background:0 0}.fc .fc-day-today .fc-daygrid-day-frame{background:var(--fc-today-bg-color)}.fc .fc-button{border-radius:6px}.month-title{text-align:center;margin:8px 0 12px;font-size:2.1rem}.fc .fc-footer-toolbar{margin-top:8px}.fc .fc-footer-toolbar .fc-button{padding:.3em .6em;font-size:.8em}.fc .fc-more-popover{border-radius:8px;overflow:hidden}.fc .fc-col-header-cell.fc-day-sat a{color:var(--saturday)}.fc .fc-col-header-cell.fc-day-sun a{color:var(--sunday)}.fc .fc-day-sat:not(.fc-day-today) .fc-daygrid-day-frame{background:var(--saturday-bg)}.fc .fc-day-sun:not(.fc-day-today) .fc-daygrid-day-frame,.fc .day-holiday:not(.fc-day-today) .fc-daygrid-day-frame{background:var(--sunday-bg)}.fc .fc-daygrid-day-top{min-width:0}.fc .fc-daygrid-day-number:has(.holiday-name){align-items:baseline;gap:4px;min-width:0;display:flex}.fc .fc-daygrid-day-number:has(.holiday-name)>span:last-child{flex:none}.fc .holiday-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.8em;overflow:hidden}.fc .holiday-name.observance{color:var(--muted)}.fc .count{background:var(--accent);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:4px;padding:0 5px;font-size:.8em;display:inline-block}.overlay{z-index:40;background:#0f172059;justify-content:center;align-items:flex-start;padding:8vh 16px;display:flex;position:fixed;inset:0}.dialog{background:var(--bg);border-radius:10px;flex-direction:column;gap:10px;width:min(480px,100%);max-height:80vh;padding:12px 16px 16px;display:flex;overflow:auto}.dialog header{justify-content:space-between;align-items:center;display:flex}.dialog h2{margin:0;font-size:1.05rem}.dialog label{align-items:center;gap:8px;display:flex}.entry-list{margin:0;padding:0;list-style:none}.new-entry{gap:8px;display:flex}.new-entry input{border:1px solid var(--line);border-radius:6px;flex:1;min-width:0;padding:6px 10px}.new-entry button{flex:none}.entry-list button{text-align:left;border:none;border-bottom:1px solid var(--line);border-radius:0;flex-direction:column;gap:2px;width:100%;padding:8px 4px;display:flex}.panel{background:var(--bg);overscroll-behavior:contain;box-sizing:border-box;border-radius:12px;flex-direction:column;gap:12px;width:min(600px,100%);max-height:84vh;padding:4px 20px 20px;display:flex;overflow-y:auto;box-shadow:0 12px 40px #0f172040}.panel>*{flex-shrink:0}.panel-mobile{width:auto;max-height:none;box-shadow:none;border-radius:0;padding:8px 12px 24px;position:fixed;inset:0}.panel-top{justify-content:space-between;align-items:center;padding-top:8px;display:flex}.title-row{align-items:center;gap:8px;display:flex}.title-input{border:none;outline:none;flex:1;min-width:0;padding:4px 0;font-size:1.4rem;font-weight:600}.props{grid-template-columns:72px 1fr;align-items:start;gap:8px 10px;margin:0;display:grid}.props dt{color:var(--muted);padding-top:6px;font-size:.9em}.props dd{min-width:0;margin:0}.props input,.props select,.props textarea{border:1px solid var(--line);box-sizing:border-box;border-radius:6px;max-width:100%;padding:4px 6px}.props textarea{resize:vertical;width:100%;overflow:hidden}.panel:not(.panel-mobile) .panel-top{cursor:move;-webkit-user-select:none;user-select:none;touch-action:none}.dates{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.plain{margin:0 0 6px;padding:0;list-style:none}.plain li{word-break:break-all;align-items:center;gap:4px;display:flex}.inline{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.inline input{flex:1;min-width:120px}.panel h3{color:var(--muted);margin:8px 0 4px;font-size:.95rem}.panel-bottom{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:flex}@media (width<=767px){.app{padding:0 8px 16px}.toolbar input[type=search]{width:100%}.toolbar form{flex:100%}.summary-slot{flex:100%;margin-left:0}.month-title{font-size:1.3rem}.app-title{margin-top:10px;font-size:1.4rem}}.kinds{flex:none;display:flex}.kinds button{border-radius:0;padding:4px 10px}.kinds button:first-child{border-radius:6px 0 0 6px}.kinds button:last-child{border-radius:0 6px 6px 0;margin-left:-1px}.kinds .kind-expense[aria-checked=true]{border-color:var(--fg);background:#ffd0cc}.kinds .kind-income[aria-checked=true]{border-color:var(--fg);background:#c9ebc5}.props input.wide{width:100%}.link-row{align-items:center;gap:6px;display:flex}.link-row .button{flex:none;padding:2px 8px}.month-summary{white-space:nowrap;background:0 0;border:none;padding:6px 4px}.month-summary .negative{color:var(--danger)}.dialog section h3{margin:4px 0}@media (width<=767px){.month-summary{white-space:normal;text-align:left;padding:2px 0}}.dialog.manage{width:min(640px,100%)}.tabs{border-bottom:1px solid var(--line);gap:4px;display:flex}.tabs button{border:none;border-bottom:2px solid #0000;border-radius:0}.tabs button[aria-selected=true]{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.manage-list{margin:0 0 8px;padding:0;list-style:none}.manage-list li{align-items:center;gap:4px;padding:3px 0;display:flex}.manage-list li>input:first-child{flex:1;min-width:0}.manage-list input,.manage-list select,.quick-new input,.quick-new select,.new-entry select{border:1px solid var(--line);border-radius:6px;min-width:0;padding:4px 6px}.manage-list li.is-hidden>input{color:var(--muted);text-decoration:line-through}.quick-list li{border-bottom:1px solid var(--line);grid-template-columns:1fr 90px 70px 1fr;gap:4px;padding:6px 0;display:grid}.quick-list .row-actions{justify-content:flex-end;align-items:center;gap:4px;display:flex}.quick-new{grid-template-columns:1fr 90px 70px 1fr;gap:4px;margin-top:8px;display:grid}.manage-list button:disabled{opacity:.3;cursor:default}
