@import"https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@500;700&family=Zen+Kaku+Gothic+New:wght@400;500;700&family=JetBrains+Mono:wght@400;500;700&display=swap";.app{display:flex;min-height:100vh}.spine{width:84px;flex-shrink:0;background:var(--ink);color:var(--paper);display:flex;flex-direction:column;align-items:center;padding:28px 0 20px;position:relative}.spine:after{content:"";position:absolute;right:0;top:0;bottom:0;width:6px;background-image:radial-gradient(circle,var(--paper) 1.6px,transparent 1.9px);background-size:6px 14px;background-position:0 6px;opacity:.5}.spine-mark{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--gold);display:flex;align-items:center;justify-content:center;font-family:Shippori Mincho,serif;font-size:15px;color:var(--gold);margin-bottom:22px;flex-shrink:0}.spine-title{writing-mode:vertical-rl;text-orientation:mixed;font-family:Shippori Mincho,serif;font-size:14px;letter-spacing:.12em;color:var(--paper);margin-bottom:34px;flex-shrink:0}.spine-nav{display:flex;flex-direction:column;gap:6px;width:100%;align-items:center}.spine-item{width:56px;padding:10px 0;display:flex;flex-direction:column;align-items:center;gap:6px;border-radius:var(--radius-s);color:#b8b6a6;text-decoration:none;transition:background .15s ease,color .15s ease}.spine-item svg{width:18px;height:18px}.spine-item span{font-size:10.5px;letter-spacing:.04em;writing-mode:vertical-rl}.spine-item:hover{color:var(--paper)}.spine-item.active{background:#f6f2e714;color:var(--paper);box-shadow:inset 2px 0 0 var(--gold)}.spine-foot{margin-top:auto;color:#86847a;font-size:9px;writing-mode:vertical-rl;letter-spacing:.08em}.spine-signout{margin-top:auto;background:none;border:none;color:#86847a;font-size:10px;writing-mode:vertical-rl;letter-spacing:.08em;cursor:pointer;padding:8px 0}.spine-signout:hover{color:var(--paper)}.error-banner{display:flex;align-items:flex-start;gap:12px;background:var(--stamp-soft);border:1px solid var(--stamp);color:var(--stamp);border-radius:var(--radius-m);padding:10px 14px;font-size:12.5px;margin-bottom:16px}.app-mobile .error-banner{margin:12px 16px 0}.error-banner span{flex:1}.error-banner button{background:none;border:none;color:var(--stamp);font-size:15px;line-height:1;cursor:pointer;padding:0 2px}.main{flex:1;min-width:0;padding:36px 48px 64px;max-width:1180px}.topbar{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:28px;flex-wrap:wrap;gap:16px}.topbar h1{font-family:Shippori Mincho,serif;font-size:26px;font-weight:700;margin:0 0 6px;letter-spacing:.02em}.topbar .sub{color:var(--ink-soft);font-size:13px}.section{margin-top:40px}.section-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.section-head h2{font-family:Shippori Mincho,serif;font-size:17px;font-weight:700;margin:0;display:flex;align-items:center;gap:9px}.section-head h2:before{content:"";width:6px;height:6px;background:var(--gold);border-radius:50%;display:inline-block}@media (max-width: 760px){.spine{width:60px}.main{padding:24px 18px 48px}}.app-mobile{display:flex;flex-direction:column;min-height:100vh}.mobile-header{flex-shrink:0;background:var(--ink);color:var(--paper);display:flex;align-items:center;gap:10px;padding:14px 18px;position:sticky;top:0;z-index:10}.mobile-header-mark{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--gold);display:flex;align-items:center;justify-content:center;font-family:Shippori Mincho,serif;font-size:12px;color:var(--gold);flex-shrink:0}.mobile-header-title{font-family:Shippori Mincho,serif;font-size:15px;letter-spacing:.06em;flex:1}.mobile-signout{background:none;border:1px solid rgba(246,242,231,.25);color:#b8b6a6;font-size:10.5px;letter-spacing:.02em;border-radius:999px;padding:5px 12px}.main-mobile{flex:1;width:100%;max-width:none;padding:20px 16px calc(88px + env(safe-area-inset-bottom))}.mobile-nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;background:var(--ink);padding:6px 2px calc(6px + env(safe-area-inset-bottom));border-top:1px solid rgba(246,242,231,.1)}.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0 4px;color:#b8b6a6;text-decoration:none;border-radius:var(--radius-s)}.mobile-nav-item svg{width:20px;height:20px}.mobile-nav-item span{font-size:9.5px;letter-spacing:.01em;white-space:nowrap}.mobile-nav-item.active{color:var(--paper)}.mobile-nav-item.active svg{color:var(--gold)}.section-head .num{font-family:JetBrains Mono,monospace;color:var(--ink);font-size:14px;font-weight:500}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-m);padding:20px 22px}.panel-note{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);font-size:12px;color:var(--ink-faint)}.empty-note{padding:22px;border:1.5px dashed var(--line);border-radius:var(--radius-m);color:var(--ink-soft);font-size:13px}.section-note{margin:0 0 16px;color:var(--ink-soft);font-size:12.5px;line-height:1.6}.scan-actions{display:flex;gap:8px}.table-wrap{padding:0;overflow-x:auto}.cat-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink-soft)}.field.grow{flex:1;min-width:180px}.field input,.field select{font:inherit;font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-s);padding:8px 10px}.field input:focus,.field select:focus{outline:2px solid var(--gold);outline-offset:1px}.btn-primary{background:var(--stamp);color:var(--paper);border:none;border-radius:999px;padding:9px 18px;font-size:13px;font-weight:500;cursor:pointer}.btn-primary:hover{opacity:.92}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-primary.btn-small{padding:6px 14px;font-size:12px}.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink-soft);border-radius:999px;padding:7px 14px;font-size:12.5px;cursor:pointer}.btn-ghost:hover{color:var(--ink);border-color:var(--ink-soft)}.btn-icon{background:transparent;border:none;color:var(--ink-faint);font-size:15px;line-height:1;cursor:pointer;padding:4px 6px}.btn-icon:hover{color:var(--stamp)}.hero{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-m);padding:30px 34px 26px;margin-bottom:6px;overflow:hidden}.hero:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:repeating-linear-gradient(180deg,var(--gold) 0 10px,transparent 10px 18px);opacity:.55}.hero-grid{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap}.hero-label{font-size:12.5px;color:var(--ink-soft);letter-spacing:.06em;margin-bottom:10px}.hero-amount{font-family:JetBrains Mono,monospace;font-size:46px;font-weight:700;letter-spacing:-.01em;line-height:1}.hero-amount span{font-size:22px;font-weight:500;margin-right:4px;color:var(--ink-soft)}.hero-sub{margin-top:14px;display:flex;gap:22px;flex-wrap:wrap;font-size:13px;color:var(--ink-soft)}.hero-sub b{font-family:JetBrains Mono,monospace;color:var(--ink);font-weight:500}.delta{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:6px 12px;background:var(--positive-soft);color:var(--positive);border-radius:999px;font-size:12.5px;font-weight:500}.delta svg{width:11px;height:11px}.delta.negative{background:var(--stamp-soft);color:var(--stamp)}.stamp-mark{flex-shrink:0;width:96px;height:96px;border:2px solid var(--stamp);border-radius:50%;display:flex;align-items:center;justify-content:center;transform:rotate(-9deg);position:relative;margin-top:4px}.stamp-mark:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid var(--stamp);border-radius:50%;opacity:.55}.stamp-mark span{font-family:Shippori Mincho,serif;font-weight:700;color:var(--stamp);font-size:15px;letter-spacing:.18em;writing-mode:vertical-rl}.pay-date-note{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line);font-size:12px;color:var(--ink-faint)}.breakdown-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.breakdown-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-m);padding:20px 22px 18px}.breakdown-title{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;color:var(--ink-soft);margin-bottom:12px}.breakdown-title .num{font-family:JetBrains Mono,monospace;color:var(--ink);font-size:14px;font-weight:500}.legend{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:9px 14px}@media (max-width: 760px){.breakdown-grid,.legend{grid-template-columns:1fr}}.import-row{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}.import-message{margin-top:14px;padding:10px 14px;background:var(--positive-soft);color:var(--positive);border-radius:var(--radius-s);font-size:12.5px}.manual-form{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.stackbar{display:flex;width:100%;height:14px;border-radius:999px;overflow:hidden;border:1px solid var(--line);margin-bottom:16px}.stackbar .seg{height:100%}.seg-unclassified{background:repeating-linear-gradient(45deg,var(--ink-faint) 0 4px,transparent 4px 8px);opacity:.6}.legend{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px 14px}.legend li{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-soft)}.legend li i{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}.dot-unclassified{background:repeating-linear-gradient(45deg,var(--ink-faint) 0 2px,transparent 2px 4px)}.legend li b{margin-left:auto;font-family:JetBrains Mono,monospace;font-weight:500;color:var(--ink);font-size:12px}.tx-table{width:100%;border-collapse:collapse;font-size:12.8px}.tx-table th{text-align:left;font-weight:500;color:var(--ink-faint);font-size:11.5px;letter-spacing:.03em;padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}.tx-table td{padding:10px 16px;border-bottom:1px solid var(--line-soft);vertical-align:middle;white-space:nowrap}.tx-table .col-amount{text-align:right}.tx-table .ink-faint{color:var(--ink-faint);font-size:12px}.tx-table select{font:inherit;font-size:12.5px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-s);padding:5px 8px}.tx-table select.select-unclassified{border-color:var(--stamp);color:var(--stamp)}.tx-table .cat-dot{margin-right:0;margin-left:8px}.tx-table tr.row-unclassified{background:var(--stamp-soft)}@media (max-width: 760px){.legend{grid-template-columns:1fr}}.review-message{margin-top:14px;padding:10px 14px;background:var(--positive-soft);color:var(--positive);border-radius:var(--radius-s);font-size:12.5px}.add-rule-form{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.review-table{width:100%;border-collapse:collapse;font-size:12.8px}.review-table th{text-align:left;font-weight:500;color:var(--ink-faint);font-size:11.5px;letter-spacing:.03em;padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}.review-table td{padding:10px 16px;border-bottom:1px solid var(--line-soft);vertical-align:middle;white-space:nowrap}.review-table .col-amount{text-align:right}.review-table select{font:inherit;font-size:12.5px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-s);padding:5px 8px}.category-color-input{width:34px;height:26px;padding:0;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--paper);cursor:pointer}.category-name-input{width:100%;min-width:120px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--paper);font:inherit;font-size:12.5px}.category-row-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.statement-actions{display:flex;gap:10px}.withholding-form{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;margin-bottom:16px}.withholding-form .field{min-width:140px}.pdf-error{padding:10px 14px;background:var(--stamp-soft);color:var(--stamp);border-radius:var(--radius-s);font-size:12.5px;margin-bottom:16px}.pdf-notice{padding:10px 14px;background:var(--positive-soft);color:var(--positive);border-radius:var(--radius-s);font-size:12.5px;margin-bottom:16px}.pdf-password-form{display:flex;gap:14px;align-items:flex-end;margin-bottom:16px}.statement-form{display:flex;flex-direction:column;gap:18px;margin-bottom:16px}.item-rows-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.item-rows{display:flex;flex-direction:column;gap:8px}.item-rows-title{font-size:12.5px;color:var(--ink-soft);margin-bottom:2px}.item-row{display:grid;grid-template-columns:1fr 120px auto;gap:8px;align-items:center}.item-row input{font:inherit;font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-s);padding:7px 9px}.btn-small-ghost{align-self:flex-start;padding:5px 12px;font-size:12px}.statement-table{width:100%;border-collapse:collapse;font-size:12.8px}.statement-table th{text-align:left;font-weight:500;color:var(--ink-faint);font-size:11.5px;letter-spacing:.03em;padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}.statement-table td{padding:12px 16px;border-bottom:1px solid var(--line-soft);vertical-align:middle;white-space:nowrap}.statement-table .col-amount{text-align:right}.statement-table .net{color:var(--ink);font-weight:600}.statement-table tr.row-clickable{cursor:pointer}.statement-table tr.row-clickable:hover{background:var(--line-soft)}.statement-table tr.row-detail td{background:var(--paper-deep);white-space:normal}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:8px 4px}.detail-title{font-size:12px;color:var(--ink-soft);margin-bottom:8px}.detail-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.detail-list li{display:flex;justify-content:space-between;font-size:12.5px;color:var(--ink-soft)}.detail-list li b{font-family:JetBrains Mono,monospace;color:var(--ink);font-weight:500}@media (max-width: 760px){.item-rows-grid,.detail-grid{grid-template-columns:1fr}}.chart-block{display:flex;flex-direction:column;gap:14px}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.chart-legend{display:flex;gap:18px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-soft)}.legend-item .swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.chart-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}.chart-svg-wrap{position:relative}.chart-svg{width:100%;height:auto;display:block;overflow:visible}.gridline{stroke:var(--line-soft);stroke-width:1}.axis-label{font-family:JetBrains Mono,monospace;font-size:10.5px;fill:var(--ink-faint)}.value-label{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500;fill:var(--ink)}.bar-income{fill:var(--positive);cursor:pointer}.bar-expense{fill:var(--stamp);cursor:pointer}.bar-income:hover,.bar-expense:hover{opacity:.85}.chart-tooltip{position:absolute;transform:translate(-50%,-100%) translateY(-8px);background:var(--ink);color:var(--paper);font-size:11.5px;line-height:1.5;padding:6px 10px;border-radius:var(--radius-s);pointer-events:none;white-space:nowrap;z-index:2;box-shadow:0 4px 12px #0000002e}.trend-table{width:100%;border-collapse:collapse;font-size:12.8px}.trend-table th{text-align:left;font-weight:500;color:var(--ink-faint);font-size:11.5px;letter-spacing:.03em;padding:10px 12px;border-bottom:1px solid var(--line)}.trend-table td{padding:8px 12px;border-bottom:1px solid var(--line-soft)}.trend-table .col-amount{text-align:right}.ranking-list{display:flex;flex-direction:column;gap:10px}.ranking-row{display:grid;grid-template-columns:120px 1fr 90px;align-items:center;gap:12px}.ranking-label{font-size:12.5px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ranking-track{position:relative;height:20px;background:var(--line-soft);border-radius:0 999px 999px 0}.ranking-bar{height:100%;min-width:4px;border-radius:0 999px 999px 0}.ranking-value{text-align:right;font-size:12.5px;color:var(--ink)}.ranking-tooltip{left:0;top:-6px;transform:translateY(-100%)}@media (max-width: 760px){.ranking-row{grid-template-columns:84px 1fr 74px}}.trend-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.trend-dot{pointer-events:none;stroke:var(--card);stroke-width:2}.crosshair{stroke:var(--ink-faint);stroke-width:1;stroke-dasharray:3 3;pointer-events:none}.zero-line{stroke:var(--ink-soft);stroke-width:1.2}.hover-col{fill:transparent;cursor:crosshair}.category-tooltip{transform:translate(12px);text-align:left;max-height:260px;overflow-y:auto}.category-tooltip.align-left{transform:translate(calc(-100% - 12px))}.tooltip-month{font-weight:600;margin-bottom:4px;color:var(--paper)}.tooltip-row{display:flex;align-items:center;gap:6px;white-space:nowrap}.tooltip-row b{margin-left:10px;font-family:JetBrains Mono,monospace;font-weight:500}.folder-panel{display:flex;flex-direction:column;gap:18px}.folder-current{display:flex;align-items:center;gap:14px}.folder-icon{font-size:28px;line-height:1}.folder-name{font-size:14px;font-weight:600;color:var(--ink)}.folder-status{font-size:12px;color:var(--stamp);margin-top:2px}.folder-status.ok{color:var(--positive)}.folder-actions{display:flex;flex-wrap:wrap;gap:10px}:root{--paper: #f6f2e7;--paper-deep: #efe9d9;--card: #fbf8f0;--line: #d9d0b8;--line-soft: #e6dfcb;--ink: #232524;--ink-soft: #6b6a5e;--ink-faint: #9c9a86;--stamp: #ae3b2e;--stamp-soft: rgba(174, 59, 46, .08);--positive: #3e6b4f;--positive-soft: rgba(62, 107, 79, .1);--gold: #ad8a3d;--radius-s: 3px;--radius-m: 6px;--cat-base: #ad8a3d;--cat-role: #c9a24a;--cat-commute: #d9b36c;--cat-overtime: #b85c3e;--cat-other-pay: #8b6f3e;--cat-health: #3e6b4f;--cat-pension: #2f5c5c;--cat-employment: #6b8e78;--cat-incometax: #5b5240;--cat-residenttax: #8a7b5c;--cat-other-ded: #b0a78f;--cat-work: #56707f;--cat-housing: #9a5b45;--cat-life: #2e4b5e;--cat-treat: #b85c3e;--cat-invest: #5c7a6b;--cat-transport: #7b9fae;--cat-entertain: #8a6e9c;--cat-shop: #c9a24a;--cat-fee: #9c9a86;--cat-comm: #4e7c8c;--cat-electric: #d9b36c;--cat-social: #b07a9e;--cat-insurance: #5b6b8c;--cat-furniture: #8b6f3e;--cat-gas: #a4886c;--cat-cash: #71706a;--cat-repay: #6e5a3e;--cat-wellness: #a6768a;--cat-income: #ad8a3d;--cat-settlement: #7d8a99;--cat-transfer: #7a6f8c}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100vh}body{background:var(--paper);color:var(--ink);font-family:Zen Kaku Gothic New,sans-serif;-webkit-font-smoothing:antialiased}.mono{font-family:JetBrains Mono,monospace}.serif{font-family:Shippori Mincho,serif}.app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:13.5px;text-align:center;padding:24px}a{color:inherit}
