@import"https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;600;700&display=swap";:root{--green: #006442;--green-light: #23b553;--green-sage: #78be23;--green-dark: #003927;--off-white: #f4f3ea;--blue-gray: #f0f3f6;--green-gray: #eff3f2;--g900: #1a1a1a;--g800: #2d2d2d;--g700: #374151;--g600: #4b5563;--g500: #6b7280;--g400: #9ca3af;--g300: #d1d5db;--g200: #e5e7eb;--g150: #eef0f2;--g100: #f5f6f7;--white: #fff;--red: #dc2626;--red-soft: #fef2f2;--amber: #d97706;--amber-soft: #fffbeb;--blue: #2563eb;--font: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius: 6px;--radius-sm: 3px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.04);--transition: .15s cubic-bezier(.4, 0, .2, 1);--col-pj: 220px;--col-cat: 180px;--col-budget: 88px;--left-cat: 220px;--left-budget: 400px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:13px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font);background:var(--off-white);color:var(--g900);line-height:1.5}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 24px;background:linear-gradient(180deg,#004530 0%,var(--green-dark) 100%);flex-shrink:0;box-shadow:0 2px 8px #0039274d;position:relative;z-index:100}.header-brand{display:flex;align-items:center;gap:14px}.header-logo{height:24px;display:block;opacity:.95}.header-sep{width:1px;height:20px;background:#ffffff26}.header-title{font-size:13px;font-weight:400;color:#fff9;letter-spacing:.12em;text-transform:uppercase}.header-right{display:flex;align-items:center;gap:8px}.header-user{display:flex;align-items:center;gap:10px;margin-right:4px}.header-user-email{font-size:11px;color:#ffffff73;letter-spacing:.02em}.header-logout{font-size:11px;color:#ffffffb3;text-decoration:none;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);padding:5px 10px;background:#ffffff0a;transition:all var(--transition)}.header-logout:hover{background:#ffffff1f;color:#fff}.header-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);background:#ffffff0a;color:#ffffffb3;cursor:pointer;transition:all var(--transition)}.header-btn:hover{background:#ffffff1f;color:#fff}.header-btn:disabled{opacity:.25;cursor:default}.header-btn:active:not(:disabled){transform:scale(.95)}.nav{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:48px;background:var(--white);border-bottom:2px solid var(--g200);flex-shrink:0;box-shadow:0 2px 6px #0000000f;position:relative;z-index:90}.nav-tabs{display:flex;gap:0;align-items:flex-start;padding-top:10px}.nav-tab{padding:4px 20px 6px;font-size:13px;font-weight:500;font-family:var(--font);border:none;background:none;color:var(--g400);cursor:pointer;border-bottom:2px solid transparent;transition:all var(--transition);letter-spacing:.02em;position:relative}.nav-tab:hover{color:var(--g700)}.nav-tab.active{color:var(--green);border-bottom-color:var(--green);font-weight:600}.nav-controls{display:flex;align-items:center;gap:12px}.nav-select,.nav-search{height:30px;padding:0 10px;border:1px solid var(--g200);border-radius:var(--radius);font-size:12px;font-family:var(--font);color:var(--g700);background:var(--white);outline:none;transition:border-color var(--transition),box-shadow var(--transition)}.nav-select:focus,.nav-search:focus{border-color:var(--green);box-shadow:0 0 0 3px #00644214}.nav-search{width:180px}.nav-search::placeholder{color:var(--g400)}.nav-count{font-size:11px;color:var(--g400);font-variant-numeric:tabular-nums;background:var(--g100);padding:2px 8px;border-radius:10px}.main{flex:1;overflow:hidden;display:flex;flex-direction:column}.state{display:flex;align-items:center;justify-content:center;gap:12px;flex:1;color:var(--g500);font-size:13px}.state-err{color:var(--red);flex-direction:column;gap:14px}.state-err button{padding:6px 16px;border:1px solid var(--g300);border-radius:var(--radius);background:var(--white);cursor:pointer;font-family:var(--font);font-size:12px;transition:all var(--transition)}.state-err button:hover{border-color:var(--g400);background:var(--g100)}.empty{display:flex;align-items:center;justify-content:center;flex:1;color:var(--g400);font-size:13px;letter-spacing:.02em}.spinner{width:18px;height:18px;border:2px solid var(--g200);border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mx-wrap{flex:1;overflow:hidden;display:flex;flex-direction:column}.mx-toolbar{display:flex;gap:8px;padding:6px 16px;flex-shrink:0;border-bottom:1px solid var(--g200)}.mx-btn{padding:3px 12px;font-size:11px;font-family:var(--font);font-weight:500;border:1px solid var(--g300);border-radius:var(--radius);background:var(--white);color:var(--g600);cursor:pointer;transition:all var(--transition)}.mx-btn:hover:not(:disabled){border-color:var(--green);color:var(--green);background:var(--green-gray)}.mx-btn:disabled{opacity:.4;cursor:default}.mx-scroll{width:100%;flex:1;overflow:auto}.mx{border-collapse:separate;border-spacing:0;min-width:100%;font-variant-numeric:tabular-nums;table-layout:fixed}.mx thead th{position:sticky;top:0;z-index:20;background:var(--green-dark);color:#ffffffd9;font-size:10.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:0 12px;white-space:nowrap;border-bottom:none;text-align:right;height:34px}.mx thead th:first-child{border-radius:0}.th-pj{text-align:left;min-width:var(--col-pj);max-width:var(--col-pj);position:sticky;left:0;z-index:60!important;border-right:1px solid rgba(255,255,255,.1);background:var(--green-dark)!important}.th-cat{text-align:left;min-width:var(--col-cat);max-width:var(--col-cat);position:sticky;left:var(--left-cat);z-index:60!important;border-right:1px solid rgba(255,255,255,.1);background:var(--green-dark)!important}.th-budget{min-width:var(--col-budget);position:sticky;left:var(--left-budget);z-index:60!important;border-right:2px solid rgba(255,255,255,.15)!important;background:var(--green-dark)!important}.th-num{min-width:88px}.th-sep-left{border-left:2px solid rgba(255,255,255,.15)!important}.th-util{min-width:62px}.pj-tbody-placeholder{contain:strict}.td-placeholder{padding:0!important;border:none!important;background:var(--white)}.mx td{padding:0 12px;font-size:12px;white-space:nowrap;contain:layout style;background:var(--white);border-bottom:1px solid var(--g150);vertical-align:middle;height:30px;text-align:right}.td-pj{position:sticky;left:0;z-index:12;will-change:transform;min-width:var(--col-pj);max-width:var(--col-pj);text-align:left;border-right:1px solid var(--g200);vertical-align:top!important;padding:10px 14px!important;background:var(--white)}.td-cat{position:sticky;left:var(--left-cat);z-index:12;will-change:transform;min-width:var(--col-cat);max-width:var(--col-cat);text-align:left;border-right:1px solid var(--g200);font-size:11px;font-weight:500;color:var(--g600);padding-left:12px!important;background:var(--white)}.td-budget{position:sticky;left:var(--left-budget);z-index:12;will-change:transform;min-width:var(--col-budget);border-right:2px solid var(--g200)!important;background:var(--white)}.td-indent{color:var(--g400);font-weight:400;font-size:10.5px;padding-left:20px!important}.td-indent-2{padding-left:32px!important}.indent-l{color:var(--g300);margin-right:3px;font-size:10px}.td-bold{font-weight:600;color:var(--g700)}.td-num{text-align:right}.td-sep-left{border-left:2px solid var(--g200)!important}.td-cum{font-weight:600}.td-util{font-size:11px}.tr-first td{border-top:2px solid var(--g200)}.tr-last td{border-bottom:2px solid var(--g200)}.tr-sub td{background:var(--blue-gray);font-weight:600;border-top:1px solid var(--g200);border-bottom:1px solid var(--g200)}.tr-sub .td-pj,.tr-sub .td-cat,.tr-sub .td-budget{background:var(--blue-gray)}.tr-calc td{background:var(--green-gray);font-weight:600}.tr-calc .td-pj,.tr-calc .td-cat,.tr-calc .td-budget{background:var(--green-gray)}.tr-lchild td{background:#f8faf9;height:28px}.tr-lchild .td-pj,.tr-lchild .td-cat,.tr-lchild .td-budget{background:#f8faf9}.tr-lsub td{background:var(--g100);height:28px}.tr-lsub .td-pj,.tr-lsub .td-cat,.tr-lsub .td-budget{background:var(--g100)}.td-pj{cursor:pointer}.td-pj:hover{background:var(--g100)!important}.pj{display:flex;flex-direction:column;gap:2px;text-align:left}.pj-header{display:flex;align-items:flex-start;gap:6px;text-align:left}.pj-drill-icon{flex-shrink:0;font-size:8px;color:var(--g400);margin-top:4px;transition:transform var(--transition);display:inline-block}.pj-drill-icon.open{transform:rotate(90deg)}.pj-name{font-size:12.5px;font-weight:600;color:var(--g800);line-height:1.45;white-space:normal;overflow-wrap:anywhere;word-break:normal;text-align:left}.pj-client{font-size:11px;color:var(--g500);white-space:normal;line-height:1.35;padding-left:14px;text-align:left;overflow-wrap:anywhere;word-break:normal}.pj-tags{display:flex;gap:4px;margin-top:4px;padding-left:14px}.pj-st{display:inline-flex;align-items:center;font-size:10px;font-weight:600;padding:2px 6px;border-radius:var(--radius-sm);line-height:1.5;letter-spacing:.02em}.st-act{background:#dcfce7;color:#15803d}.st-won{background:#dbeafe;color:#1d4ed8}.st-done{background:var(--g100);color:var(--g400)}.st-def{background:var(--g100);color:var(--g500)}.tr-vendor td{background:var(--g100);height:28px}.tr-vendor .td-cat,.tr-vendor .td-budget{background:var(--g100)}.td-vendor-name{color:var(--g500);font-weight:400;font-size:11px}.num-zero{color:var(--g300)}.num-neg{color:var(--red)}.num-mute{color:var(--g400);font-size:11px}.util-good{color:var(--green);font-weight:600}.util-warn{color:var(--amber);font-weight:600}.util-over{color:var(--red);font-weight:600}.td-edit{cursor:pointer}.td-edit:hover{background:#00644208!important}.edit-display{display:block;width:100%;cursor:pointer;border-bottom:1px dashed var(--g300);padding-bottom:1px;transition:border-color var(--transition)}.edit-display:hover{border-bottom-color:var(--green)}.edit-empty{color:var(--g300)}.edit-saving{opacity:.5;pointer-events:none}.edit-input{width:100%;border:none;background:var(--white);text-align:right;font-size:12px;font-family:var(--font);color:var(--g900);outline:none;padding:2px 6px;box-shadow:inset 0 0 0 1.5px var(--green);border-radius:var(--radius-sm);font-variant-numeric:tabular-nums}.edit-input::-webkit-inner-spin-button,.edit-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.edit-input[type=number]{-moz-appearance:textfield}.tr-alloc td{background:var(--green-dark);font-size:11px;font-weight:500;border-top:none;color:#ffffffd9;height:34px;position:sticky;bottom:0;z-index:10}.tr-alloc .td-pj{background:var(--green-dark)!important;position:sticky;left:0;z-index:15;font-size:11px;border-right:1px solid rgba(255,255,255,.1);color:#fff9;font-weight:400;letter-spacing:.04em}.tr-alloc .td-cat{background:var(--green-dark)!important;position:sticky;left:var(--left-cat);z-index:15;border-right:1px solid rgba(255,255,255,.1);color:#fff9;font-weight:400}.tr-alloc .td-budget{background:var(--green-dark)!important;position:sticky;left:var(--left-budget);z-index:15;border-right:2px solid rgba(255,255,255,.15)!important}.tr-alloc .td-sep-left{border-left:2px solid rgba(255,255,255,.15)!important}.alloc-text{font-variant-numeric:tabular-nums}.alloc-cap{color:#fff6;font-weight:400}.alloc-ok{color:#4ade80}.alloc-dev{color:#ef4444;font-weight:600}.toast{position:fixed;bottom:20px;right:20px;background:var(--green-dark);color:var(--off-white);padding:10px 20px;border-radius:var(--radius);font-size:12.5px;font-weight:500;box-shadow:var(--shadow-md),0 0 0 1px #0039271a;animation:toastIn .25s ease;z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.toast-err{background:var(--red);color:var(--white)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.mx-scroll::-webkit-scrollbar{width:6px;height:6px}.mx-scroll::-webkit-scrollbar-track{background:transparent}.mx-scroll::-webkit-scrollbar-thumb{background:var(--g300);border-radius:3px}.mx-scroll::-webkit-scrollbar-thumb:hover{background:var(--g400)}.mx-scroll::-webkit-scrollbar-corner{background:transparent}.mx-scroll{scrollbar-width:thin;scrollbar-color:var(--g300) transparent}.edit-container{position:relative}.edit-input-error{box-shadow:inset 0 0 0 1.5px var(--red)}.edit-input:disabled{opacity:.6;cursor:wait}.edit-error{position:absolute;top:100%;left:0;right:0;margin-top:2px;background:#fff;border:1px solid var(--red);color:var(--red);font-size:11px;padding:4px 8px;border-radius:var(--radius-sm);z-index:100;white-space:normal;box-shadow:0 2px 4px #0000001a}.state-err{flex-direction:column;gap:0;padding:40px 24px;text-align:center;color:var(--g900)}.state-err-icon{font-size:48px;color:var(--red);margin-bottom:16px;line-height:1}.state-err h3{font-size:18px;font-weight:600;margin-bottom:8px}.state-err p{font-size:14px;color:var(--g600);margin-bottom:20px}.state-err-details{max-width:500px;margin:0 auto 20px;text-align:left}.state-err-details summary{font-size:12px;color:var(--g500);cursor:pointer}.state-err-details code{display:block;background:var(--g100);padding:8px;font-size:11px;overflow-x:auto;margin-top:8px;border-radius:var(--radius-sm)}.state-err button{background:var(--green-dark);color:var(--white);border:none;padding:10px 24px;border-radius:var(--radius);font-family:var(--font);font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition)}.state-err button:hover{background:var(--green)}.skeleton-container{padding:0}.skeleton-header{height:34px;background:var(--green-dark)}.skeleton-row{display:flex;gap:1px;height:30px;margin-bottom:1px;background:var(--g150)}.skeleton-cell{flex:1;background:linear-gradient(90deg,var(--g100) 25%,#e8e6dd 50%,var(--g100) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}.skeleton-cell-pj{flex:0 0 220px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.nav-label-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.skeleton-cell{animation:none;background:var(--g100)}}
