*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,sans-serif;font-size:14px;line-height:1.6;color:#2d3748;background:#f5f6f8;-webkit-font-smoothing:antialiased}a{color:#1f6fb2;text-decoration:none}a:hover{text-decoration:underline}:root{--color-primary: #1F6FB2;--color-primary-light: #4A8FC6;--color-primary-dark: #175A8E;--color-secondary: #2CA6B4;--color-success: #2FB28A;--color-warning: #F5A623;--color-error: #E53935;--color-bg: #F5F6F8;--color-paper: #FFFFFF;--color-text: #2D3748;--color-text-secondary: #718096;--color-text-disabled: #A0AEC0;--color-border: #E2E8F0;--color-border-light: #EDF2F7;--color-table-header: #F7FAFC;--color-sidebar-bg: #F7F8FA;--header-height: 56px;--sidebar-width: 170px;--sidebar-collapsed-width: 50px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a0aec0}.app-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:linear-gradient(135deg,#2c3e5a,#1a2d45);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 24px;z-index:100;box-shadow:0 2px 12px #0000001f}.app-header .brand{display:flex;align-items:center;gap:12px}.app-header .brand-icon{width:32px;height:32px;background:var(--color-primary);border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff}.app-header .brand-name{font-size:16px;font-weight:700;letter-spacing:.5px}.app-header .brand-sub{font-size:11px;color:#fff9;margin-left:8px}.app-sidebar{position:fixed;top:var(--header-height);left:0;bottom:0;width:var(--sidebar-width);background:var(--color-sidebar-bg);border-right:1px solid var(--color-border);overflow-y:auto;transition:width .2s ease;z-index:90;display:flex;flex-direction:column}.app-sidebar.collapsed{width:var(--sidebar-collapsed-width)}.sidebar-nav{flex:1;padding:8px 0}.sidebar-group{margin-bottom:4px}.sidebar-group-title{padding:8px 16px 4px;font-size:10px;font-weight:600;color:var(--color-text-disabled);text-transform:uppercase;letter-spacing:.5px}.collapsed .sidebar-group-title{display:none}.sidebar-item{display:flex;align-items:center;gap:10px;padding:9px 16px;font-size:13px;color:var(--color-text-secondary);cursor:pointer;transition:all .15s;border-left:3px solid transparent;text-decoration:none}.sidebar-item:hover{background:var(--color-border-light);color:var(--color-text);text-decoration:none}.sidebar-item.active{background:#ebf4ff;color:var(--color-primary);border-left-color:var(--color-primary);font-weight:600}.sidebar-item .nav-icon{width:18px;text-align:center;font-size:14px;flex-shrink:0}.sidebar-item .nav-label{white-space:nowrap;overflow:hidden}.collapsed .nav-label{display:none}.sidebar-toggle{padding:12px 16px;border-top:1px solid var(--color-border);cursor:pointer;text-align:center;font-size:12px;color:var(--color-text-secondary);transition:background .15s}.sidebar-toggle:hover{background:var(--color-border-light)}.app-main{margin-left:var(--sidebar-width);margin-top:var(--header-height);padding:24px 32px;min-height:calc(100vh - var(--header-height));transition:margin-left .2s ease}.app-main.sidebar-collapsed{margin-left:var(--sidebar-collapsed-width)}.page-title{font-size:20px;font-weight:600;color:var(--color-text);margin-bottom:20px}.section-title{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:12px}.section-title:before{content:"■";color:var(--color-primary);margin-right:8px;font-size:12px}.text-secondary{color:var(--color-text-secondary)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.text-right{text-align:right}.text-center{text-align:center}.font-bold{font-weight:600}.amount{font-variant-numeric:tabular-nums}.card{background:var(--color-paper);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 1px 3px #0000000f}.card-header{padding:16px 20px;border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between}.card-header .card-title{font-size:15px;font-weight:600;color:var(--color-text)}.card-body{padding:20px}.stat-card{background:var(--color-paper);border:1px solid #E0E0E0;border-radius:6px;padding:20px;transition:all .15s}.stat-card:hover{background:#fafbfc;border-color:silver}.stat-card .stat-label{font-size:12px;color:var(--color-text-secondary);margin-bottom:4px}.stat-card .stat-value{font-size:24px;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.stat-card .stat-sub{font-size:12px;color:var(--color-text-secondary);margin-top:6px}.stat-card .stat-diff{font-size:13px;font-weight:600;margin-top:4px}.data-table{width:100%;border-collapse:collapse}.data-table thead th{background:var(--color-table-header);padding:10px 16px;font-size:13px;font-weight:600;color:var(--color-text-secondary);text-align:left;border-bottom:2px solid var(--color-border);white-space:nowrap}.data-table thead th.text-right{text-align:right}.data-table tbody td{padding:12px 16px;font-size:13px;color:var(--color-text);border-bottom:1px solid var(--color-border-light)}.data-table tbody tr:nth-child(2n) td{background:#fafbfc}.data-table tbody tr:hover td{background:#eef4fb}.data-table tbody tr.clickable{cursor:pointer}.data-table tbody tr.clickable:hover td{background:#e4edf9}.data-table tbody tr.row-active td{background:#dbeafe}.data-table tfoot td{padding:12px 16px;font-size:13px;font-weight:600;color:var(--color-text);background:var(--color-table-header);border-top:2px solid var(--color-border)}.data-table tbody tr.row-subtotal td{background:#eef2ff;font-weight:600;border-top:1px solid #c7d2fe}.data-table tbody tr.row-subtotal:hover{background:#e0e7ff}.data-table tbody tr.row-net td{background:#fef3c7;font-weight:700;border-top:2px solid #f59e0b;border-bottom:2px solid #f59e0b}.data-table tbody tr.row-net:hover{background:#fde68a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;text-decoration:none;line-height:1.4}.btn:hover{text-decoration:none}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-secondary{background:#f5f6f8;color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:#e8e9eb}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover{background:#279e78}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover{background:#c62828}.btn-sm{padding:4px 10px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:600;color:var(--color-text-secondary);margin-bottom:4px}.form-input,.form-select{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:6px;font-size:14px;color:var(--color-text);background:var(--color-paper);transition:border-color .15s,box-shadow .15s;font-family:inherit}.form-input:focus,.form-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #1f6fb21a}.form-input::placeholder{color:var(--color-text-disabled)}.chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600;white-space:nowrap}.chip-active{background:#e8f5e9;color:#2e7d32}.chip-sold{background:#ffebee;color:#c62828}.chip-planned,.chip-budget{background:#e3f2fd;color:#1565c0}.chip-actual{background:#e8f5e9;color:#2e7d32}.tabs{display:flex;border-bottom:2px solid var(--color-border);margin-bottom:20px}.tab{padding:10px 20px;font-size:14px;font-weight:600;color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;background:none;border-top:none;border-left:none;border-right:none}.tab:hover{color:var(--color-primary)}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;display:flex;align-items:center;justify-content:center}.modal{background:var(--color-paper);border-radius:12px;box-shadow:0 20px 60px #00000026;width:90%;max-width:600px;max-height:90vh;overflow-y:auto}.modal-header{padding:20px 24px;border-bottom:1px solid var(--color-border);font-size:16px;font-weight:600}.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:12px}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-center{display:flex;align-items:center}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.gap-24{gap:24px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mt-24{margin-top:24px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.upload-area{border:2px dashed var(--color-border);border-radius:12px;padding:40px;text-align:center;transition:all .15s;cursor:pointer}.upload-area:hover,.upload-area.dragging{border-color:var(--color-primary);background:#ebf4ff}.upload-area .upload-icon{font-size:32px;color:var(--color-text-disabled);margin-bottom:12px}.upload-area .upload-text{font-size:14px;color:var(--color-text-secondary)}.alert{padding:12px 16px;border-radius:6px;font-size:13px}.alert-success{background:#e8f5e9;color:#2e7d32;border:1px solid #C8E6C9}.alert-error{background:#ffebee;color:#c62828;border:1px solid #FFCDD2}.alert-info{background:#e3f2fd;color:#1565c0;border:1px solid #BBDEFB}.code-block{background:#1a2332;border-radius:8px;padding:16px;overflow-x:auto}.code-block pre{font-family:SF Mono,Menlo,monospace;font-size:13px;color:#7ec699;line-height:1.5;margin:0}@media (max-width: 1024px){.grid-4,.grid-5,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.app-sidebar{width:var(--sidebar-collapsed-width)}.app-main{margin-left:var(--sidebar-collapsed-width);padding:16px}.grid-2,.grid-3,.grid-4,.grid-5{grid-template-columns:1fr}.app-header{padding:0 12px}}
