:root{--color-bg: #f4f6f5;--color-surface: #ffffff;--color-border: #e1e5e3;--color-text: #1f2a24;--color-text-muted: #6b7570;--color-primary: #2f6f4f;--color-primary-dark: #1f4f37;--color-income: #2f6f4f;--color-expense: #b3432b;--color-warning: #b9891f;--color-danger: #c23b3b;--color-sidebar-bg: #1f2a24;--color-sidebar-text: #d9e2dc;--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Hiragino Sans,Yu Gothic,Meiryo,system-ui,sans-serif;background:var(--color-bg);color:var(--color-text)}.app-shell{display:flex;min-height:100vh}.sidebar{width:200px;flex-shrink:0;background:var(--color-sidebar-bg);color:var(--color-sidebar-text);padding:20px 12px}.sidebar h1{font-size:16px;margin:0 0 20px;padding:0 8px;color:#fff}.sidebar nav{display:flex;flex-direction:column;gap:4px}.sidebar button{all:unset;cursor:pointer;padding:10px 12px;border-radius:var(--radius);font-size:14px}.sidebar button:hover{background:#ffffff14}.sidebar button.active{background:var(--color-primary);color:#fff}.content{flex:1;padding:24px 32px;overflow-y:auto}.content h2{margin-top:0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px 20px;margin-bottom:16px}.card h3{margin-top:0;font-size:15px;color:var(--color-text-muted)}.summary-row{display:flex;gap:16px;flex-wrap:wrap}.summary-tile{flex:1;min-width:140px}.summary-tile .value{font-size:22px;font-weight:700}.value.income{color:var(--color-income)}.value.expense{color:var(--color-expense)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--color-border)}th{color:var(--color-text-muted);font-weight:600}.table-scroll{overflow-x:auto}tr.edit-row input,tr.edit-row select{width:96px;box-sizing:border-box}tr.edit-row td{vertical-align:top}form.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:16px}form.inline-form label{display:flex;flex-direction:column;font-size:12px;color:var(--color-text-muted);gap:4px}input,select,textarea{font-family:inherit;font-size:14px;padding:6px 8px;border:1px solid var(--color-border);border-radius:6px;background:#fff;color:var(--color-text)}button.primary{background:var(--color-primary);color:#fff;border:none;border-radius:6px;padding:7px 16px;font-size:14px;cursor:pointer}button.primary:hover{background:var(--color-primary-dark)}button.ghost{background:transparent;border:1px solid var(--color-border);border-radius:6px;padding:6px 12px;font-size:13px;cursor:pointer;color:var(--color-text)}button.ghost:hover{background:var(--color-bg)}button.danger{background:transparent;border:1px solid var(--color-danger);color:var(--color-danger);border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer}.month-nav{display:flex;align-items:center;gap:8px;margin-bottom:16px}.month-nav .label{font-weight:700;font-size:16px;min-width:90px;text-align:center}.budget-bar{height:8px;border-radius:4px;background:var(--color-border);overflow:hidden;margin-top:4px}.budget-bar>div{height:100%}.status-ok{background:var(--color-income)}.status-warning{background:var(--color-warning)}.status-over{background:var(--color-danger)}.status-no_budget{background:var(--color-border)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.overdue{background:#c23b3b1f;color:var(--color-danger)}.badge.due_soon{background:#b9891f24;color:var(--color-warning)}.badge.paid{background:#2f6f4f1f;color:var(--color-primary)}.empty-state{color:var(--color-text-muted);font-size:14px;padding:12px 0}.login-screen{max-width:420px;margin:80px auto;padding:32px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:center}.login-screen h1{font-size:1.3rem;margin-top:0}.login-screen__error{color:var(--color-danger);margin-top:16px}.app-loading{padding:40px;text-align:center;color:var(--color-text-muted)}
