:root{--ink:#1b2433;--ink-soft:#36435a;--steel:#5a6679;--steel-light:#8b95a7;--muted:#7a8699;--paper:#f1f5fc;--paper-deep:#e7edf8;--surface:#fff;--surface-alt:#f7f9fe;--line:#e6ebf4;--line-strong:#d3dbe9;--primary:#2f6bff;--primary-dark:#1f53d6;--primary-ink:#143a96;--primary-soft:#e9f0ff;--primary-glow:rgba(47,107,255,.16);--sky:#2bc4e6;--sky-soft:#ddf6fc;--success:#0f9d58;--success-soft:#dcf5e8;--danger:#e23b54;--danger-soft:#fde4e8;--warning:#c77800;--warning-soft:#fff2d4;--fs-2xs:10.5px;--fs-xs:12px;--fs-sm:13px;--fs-base:14.5px;--fs-md:16px;--fs-lg:18px;--fs-xl:21px;--fs-2xl:27px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:40px;--s-9:56px;--r-xs:4px;--r-sm:7px;--r:11px;--r-lg:16px;--r-pill:999px;--shadow-1:0 1px 2px rgba(27,36,51,.04);--shadow-2:0 4px 14px -6px rgba(27,36,51,.12) , 0 1px 3px rgba(27,36,51,.05);--shadow-3:0 18px 48px -16px rgba(31,83,150,.28) , 0 4px 12px rgba(27,36,51,.06);--shadow-focus:0 0 0 4px var(--primary-glow);--font-jp:'Zen Kaku Gothic New' , 'Hiragino Sans' , 'Yu Gothic Medium' , 'Yu Gothic' , 'Meiryo' , sans-serif;--font-num:'Zen Kaku Gothic New' , 'Hiragino Sans' , 'Yu Gothic' , 'Meiryo' , sans-serif;--t-fast:130ms cubic-bezier(.4,0,.2,1);--t-base:200ms cubic-bezier(.4,0,.2,1);--t-slow:320ms cubic-bezier(.16,1,.3,1)}*,*::before,*::after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{margin:0;padding:0}body{font-family: var(--font-jp);font-size:var(--fs-base);line-height:1.75;letter-spacing:.01em;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(900px 500px at 8% -8%,rgba(47,107,255,.07),transparent 60%) , radial-gradient(700px 500px at 105% 0%,rgba(43,196,230,.06),transparent 55%) , linear-gradient(to right,rgba(27,36,51,.022) 1px,transparent 1px) , linear-gradient(to bottom,rgba(27,36,51,.022) 1px,transparent 1px);background-size:auto , auto , 26px 26px , 26px 26px;background-attachment:fixed , fixed , fixed , fixed;min-height:100vh}::selection{background:var(--primary);color:#fff}a{color:var(--primary);text-decoration:none;transition:color var(--t-fast)}a:hover{color:var(--primary-dark)}p{margin:0 0 var(--s-3)}.num,td.num,input[type="number"],input[type="tel"],code,kbd,samp{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" on}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-pill);border:3px solid var(--paper)}::-webkit-scrollbar-thumb:hover{background:var(--steel-light)}.app-header{background:rgba(255,255,255,.86);backdrop-filter:saturate(160%) blur(10px);-webkit-backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(255,255,255,.6) , 0 6px 24px -18px rgba(31,83,150,.5);position:sticky;top:0;z-index:50}.app-header::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,var(--primary) 0%,var(--sky) 60%,transparent 100%);opacity:.85}.app-header__inner{position:relative;max-width:1240px;margin:0 auto;padding:var(--s-3) var(--s-6);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--s-5)}.app-header__brand{display:flex;align-items:center;gap:var(--s-3);min-width:0}.app-header__logo{height:30px;width:auto;border-radius:4px}.app-header__title{display:flex;flex-direction:column;line-height:1.1;min-width:0}.app-header__lockup{font-size:var(--fs-lg);font-weight:900;color:var(--ink);letter-spacing:.02em}.app-header__lockup::after{content:'';display:inline-block;width:7px;height:7px;margin-left:5px;border-radius:50%;background:var(--primary);vertical-align:middle}.app-header__sub{font-size:9.5px;color:var(--muted);letter-spacing:.26em;font-weight:700;text-transform:uppercase;margin-top:2px}.app-header__nav{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px}.app-header__nav a{color:var(--steel);padding:var(--s-2) var(--s-3);font-size:var(--fs-sm);font-weight:500;letter-spacing:.02em;border-radius:var(--r-sm);position:relative;transition:all var(--t-fast)}.app-header__nav a:hover{color:var(--primary-dark);background:var(--primary-soft)}.app-header__nav a.active{color:var(--primary-dark);background:var(--primary-soft);font-weight:700}.app-header__nav a.active::after{content:'';position:absolute;left:14%;right:14%;bottom:-7px;height:2.5px;background:var(--primary);border-radius:2px}.app-header__user{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-xs);color:var(--muted)}.app-header__user-name{font-weight:700;color:var(--ink);padding-right:var(--s-2);border-right:1px solid var(--line-strong)}.app-header__user-role{background:var(--primary);color:#fff;font-size:9.5px;font-weight:800;letter-spacing:.14em;padding:2px 7px;border-radius:var(--r-xs)}.app-header__logout{color:var(--steel);padding:var(--s-1) var(--s-2);border-radius:var(--r-sm);font-size:var(--fs-xs);transition:all var(--t-fast)}.app-header__logout:hover{color:var(--danger);background:var(--danger-soft)}.container{max-width:1240px;margin:0 auto;padding:var(--s-7) var(--s-6) var(--s-9)}.page-title{font-size:var(--fs-xl);font-weight:900;margin:0 0 var(--s-5);color:var(--ink);letter-spacing:.01em;display:flex;align-items:baseline;gap:var(--s-3)}.page-title::before{content:'';display:inline-block;width:5px;height:19px;background:var(--primary);border-radius:2px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s-6);margin-bottom:var(--s-5);box-shadow:var(--shadow-1);transition:box-shadow var(--t-base) , transform var(--t-base) , border-color var(--t-base)}.card:hover{box-shadow:var(--shadow-2);border-color:var(--line-strong)}.card h2{margin:0 0 var(--s-5);font-size:var(--fs-lg);font-weight:700;letter-spacing:.01em;color:var(--ink);padding-bottom:var(--s-3);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}.card h2::before{content:'';display:inline-block;width:4px;height:1.05em;background:linear-gradient(var(--primary),var(--sky));border-radius:2px}label{display:block;font-size:var(--fs-xs);color:var(--steel);margin-bottom:5px;font-weight:700;letter-spacing:.04em}input[type="text"],input[type="password"],input[type="tel"],input[type="date"],input[type="number"],input[type="email"],input[type="search"],input[type="file"],select,textarea{width:100%;padding:10px 13px;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);font-size:var(--fs-base);font-family:inherit;background:var(--surface);color:var(--ink);line-height:1.5;transition:border-color var(--t-fast) , box-shadow var(--t-fast) , background var(--t-fast)}input[type="date"],input[type="number"],input[type="tel"]{font-family: var(--font-num)}input:hover:not(:disabled), select:hover:not(:disabled), textarea:hover:not(:disabled) {border-color:var(--steel-light)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-alt);color:var(--muted);cursor:not-allowed}textarea{resize:vertical;min-height:84px}input[type="file"]{padding:7px 9px;font-size:var(--fs-sm);cursor:pointer}input[type="checkbox"],input[type="radio"]{width:17px;height:17px;accent-color:var(--primary);cursor:pointer}select{appearance:none;background-image:url(data:image/svg+xml;utf8,<svg\ xmlns=\'http://www.w3.org/2000/svg\'\ width=\'10\'\ height=\'6\'\ viewBox=\'0\ 0\ 10\ 6\'><path\ d=\'M1\ 1l4\ 4\ 4-4\'\ stroke=\'%232f6bff\'\ stroke-width=\'1.6\'\ fill=\'none\'\ stroke-linecap=\'round\'/></svg>);background-repeat:no-repeat;background-position:right 13px center;padding-right:32px}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s-4);margin-bottom:var(--s-4)}.form-row:last-child{margin-bottom:0}.form-actions{margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:var(--s-2);justify-content:flex-end;align-items:center}label .req{color:var(--danger);font-weight:800}.btn{--btn-bg:var(--primary);--btn-bg-hover:var(--primary-dark);--btn-text:#fff;--btn-border:var(--primary);--btn-border-hover:var(--primary-dark);display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);padding:10px 20px;background:var(--btn-bg);color:var(--btn-text);border:1.5px solid var(--btn-border);border-radius:var(--r-sm);font-size:var(--fs-base);font-weight:700;font-family:inherit;letter-spacing:.02em;cursor:pointer;white-space:nowrap;flex-shrink:0;line-height:1.4;text-decoration:none;transition:background var(--t-fast) , border-color var(--t-fast) , transform var(--t-fast) , box-shadow var(--t-fast) , color var(--t-fast);user-select:none}.btn:hover{background:var(--btn-bg-hover);border-color:var(--btn-border-hover);transform:translateY(-1px);box-shadow:0 6px 16px -6px var(--primary-glow)}.btn:active{transform:translateY(0);box-shadow:none}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-secondary{--btn-bg:#fff;--btn-bg-hover:var(--surface-alt);--btn-text:var(--steel);--btn-border:var(--line-strong);--btn-border-hover:var(--steel-light)}.btn-secondary:hover{color:var(--ink)}.btn-danger{--btn-bg:var(--danger);--btn-bg-hover:#c12a42;--btn-border:var(--danger);--btn-border-hover:#c12a42}.btn-success{--btn-bg:var(--success);--btn-bg-hover:#0b7d45;--btn-border:var(--success);--btn-border-hover:#0b7d45}.btn-outline{--btn-bg:#fff;--btn-bg-hover:var(--primary);--btn-text:var(--primary);--btn-border:var(--primary);--btn-border-hover:var(--primary)}.btn-outline:hover{color:#fff}.btn-large{padding:13px 26px;font-size:var(--fs-md);font-weight:700}.btn-sm{padding:5px 11px;font-size:var(--fs-xs)}.btn+.btn,.btn+a.btn,a.btn+.btn,a.btn+a.btn{margin-left:6px}.toggle-group{display:inline-flex;border:1.5px solid var(--primary);border-radius:var(--r-pill);overflow:hidden;background:var(--surface);padding:2px;gap:2px}.toggle-group button{border:0;background:transparent;padding:7px 18px;font-size:var(--fs-sm);font-family:inherit;cursor:pointer;color:var(--primary);font-weight:700;min-width:76px;border-radius:var(--r-pill);transition:all var(--t-fast)}.toggle-group button:hover{background:var(--primary-soft)}.toggle-group button.active{background:var(--primary);color:#fff;box-shadow:0 2px 6px -1px var(--primary-glow)}table.data{width:100%;border-collapse:collapse;font-size:var(--fs-sm);background:var(--surface)}table.data thead th{background:var(--surface-alt);color:var(--steel);font-weight:700;text-align:left;padding:11px 13px;border-bottom:2px solid var(--primary-soft);font-size:var(--fs-xs);letter-spacing:.05em;white-space:nowrap}table.data td{padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink-soft)}table.data tbody tr{transition:background var(--t-fast)}table.data tbody tr:hover td{background:var(--primary-soft);color:var(--ink)}table.data td.num{text-align:right;font-family: var(--font-num)}table.data a{color:var(--primary);font-weight:700}table.lines{width:100%;border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-sm);overflow:hidden}table.lines thead th{background:linear-gradient(var(--ink),#141c29);color:#fff;font-size:var(--fs-xs);font-weight:600;padding:11px 10px;letter-spacing:.04em;text-align:left;white-space:nowrap;border-right:1px solid rgba(255,255,255,.07)}table.lines thead th:last-child{border-right:0}table.lines tbody td{padding:8px 9px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);vertical-align:middle;background:var(--surface);transition:background var(--t-fast)}table.lines tbody td:last-child{border-right:0}table.lines tbody tr:last-child td{border-bottom:0}table.lines tbody tr:hover td{background:var(--primary-soft)}table.lines td input,table.lines td select{width:100%;border:1.5px solid var(--line-strong);background:var(--surface);padding:7px 10px;border-radius:var(--r-xs);font-size:var(--fs-sm);transition:border-color var(--t-fast) , box-shadow var(--t-fast) , background var(--t-fast)}table.lines td input:hover:not(:disabled), table.lines td select:hover:not(:disabled) {border-color:var(--steel-light)}table.lines td input:focus,table.lines td select:focus{outline:none;background:#fff;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);position:relative;z-index:1}table.lines td.num,table.lines td input.qty,table.lines td input.price-input{text-align:right;font-family: var(--font-num)}table.lines td input.price-input{background:var(--warning-soft);border-color:rgba(199,120,0,.3)}table.lines td input.price-input:focus{background:#fff;border-color:var(--warning);box-shadow:0 0 0 3px rgba(199,120,0,.18)}table.lines td.unit-cell{text-align:center;color:var(--steel);font-size:var(--fs-sm);background:var(--surface-alt)}table.lines .line-amount{font-weight:700;color:var(--primary-ink);text-align:right;font-family: var(--font-num);font-size:var(--fs-md);background:var(--surface-alt)}table.lines td .btn-danger{padding:5px 9px;font-size:var(--fs-sm);line-height:1;min-width:32px}.total-row{text-align:right;margin-top:var(--s-5);padding:var(--s-4) var(--s-5);background:linear-gradient(180deg,var(--primary-soft),#fff);border:1px solid var(--line);border-top:2.5px solid var(--primary);border-radius:var(--r-sm);font-size:var(--fs-md);color:var(--ink-soft);display:flex;align-items:baseline;justify-content:flex-end;gap:var(--s-3);flex-wrap:wrap}.total-row .yen{font-family: var(--font-num);font-size:var(--fs-2xl);color:var(--primary-ink);font-weight:700;letter-spacing:-.01em}.total-row .tax-note{font-size:var(--fs-xs);color:var(--muted)}.app-body--login{background:radial-gradient(circle at 50% 8%,rgba(47,107,255,.12),transparent 55%) , radial-gradient(circle at 85% 95%,rgba(43,196,230,.10),transparent 50%) , var(--paper)}.app-body--login .container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--s-6)}.login-wrap{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-9) var(--s-7);box-shadow:var(--shadow-3);position:relative;overflow:hidden}.login-wrap::before{content:'';position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--primary),var(--sky))}.login-wrap::after{content:'DsfX · PAPER';position:absolute;top:var(--s-4);right:var(--s-5);font-size:9px;letter-spacing:.3em;color:var(--line-strong);font-weight:800}.login-wrap h1{text-align:center;font-size:var(--fs-2xl);color:var(--ink);margin:0 0 var(--s-2);line-height:1.25;font-weight:900;letter-spacing:.02em}.login-wrap form{margin-top:var(--s-6)}.login-wrap label{margin-top:var(--s-4)}.login-wrap label:first-child{margin-top:0}.login-wrap .btn{width:100%;padding:14px;font-size:var(--fs-md);font-weight:700;letter-spacing:.08em;margin-top:var(--s-6)}.login-wrap .form-actions{margin-top:0;padding-top:0;border-top:0}.alert{padding:var(--s-3) var(--s-4);border-radius:var(--r-sm);margin-bottom:var(--s-4);font-size:var(--fs-sm);line-height:1.6;border-left:4px solid;background:var(--surface);display:flex;align-items:flex-start;gap:var(--s-2);box-shadow:var(--shadow-1)}.alert.error{background:var(--danger-soft);border-left-color:var(--danger);color:#9a2238}.alert.ok{background:var(--success-soft);border-left-color:var(--success);color:#0a6b3c}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--r-pill);font-size:var(--fs-2xs);font-weight:800;letter-spacing:.06em;line-height:1.5;border:1px solid transparent;white-space:nowrap}.badge.quote{background:var(--primary-soft);color:var(--primary-dark);border-color:rgba(47,107,255,.2)}.badge.detail{background:var(--sky-soft);color:#0b7c93;border-color:rgba(43,196,230,.25)}.badge.pref{background:var(--primary);color:#fff}.badge.draft{background:#eef1f6;color:#5a6679;border-color:var(--line-strong)}.badge.confirmed{background:var(--success-soft);color:var(--success);border-color:rgba(15,157,88,.25)}.badge.void{background:var(--danger-soft);color:var(--danger);border-color:rgba(226,59,84,.22)}.badge.type-estimate{background:var(--primary-soft);color:var(--primary-dark);border-color:rgba(47,107,255,.2)}.badge.type-invoice{background:var(--sky-soft);color:#0b7c93;border-color:rgba(43,196,230,.25)}.badge.type-receipt{background:var(--success-soft);color:var(--success);border-color:rgba(15,157,88,.25)}.badge.type-payment_notice{background:#efe9ff;color:#6a3bd9;border-color:rgba(106,59,217,.22)}.muted{color:var(--muted)}.text-right{text-align:right}.text-center{text-align:center}.action-buttons-row{display:flex;gap:var(--s-3);flex-wrap:wrap;margin-top:var(--s-3)}.card-flex-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--s-3);margin:0 0 var(--s-4);padding-bottom:var(--s-3);border-bottom:1px solid var(--line)}.card-flex-head h2{margin:0;padding:0;border:0}hr.divider{border:0;border-top:1px solid var(--line);margin:var(--s-5) 0}h2 .badge{margin-left:var(--s-2)}@media (max-width:980px){.app-header__inner{grid-template-columns:1fr;gap:var(--s-2);padding:var(--s-3)}.app-header__nav{order:3;justify-content:flex-start;gap:0;margin:0 -4px}.app-header__user{order:2;justify-content:flex-end}}@media (max-width:700px){:root{--fs-base:14px;--fs-md:15px;--fs-lg:16.5px;--fs-xl:19px;--fs-2xl:23px}.container{padding:var(--s-5) var(--s-4) var(--s-8)}.card{padding:var(--s-4)}.form-row{grid-template-columns:1fr;gap:var(--s-3)}table.lines th,table.lines td{padding:5px 6px;font-size:var(--fs-xs)}table.data th,table.data td{padding:8px 8px;font-size:var(--fs-xs)}.total-row .yen{font-size:var(--fs-xl)}.app-header__sub{display:none}.login-wrap{padding:var(--s-7) var(--s-5)}}@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }.card{animation:fadeUp var(--t-slow) both}.card:nth-child(1){animation-delay:0ms}.card:nth-child(2){animation-delay:55ms}.card:nth-child(3){animation-delay:110ms}.card:nth-child(4){animation-delay:165ms}.card:nth-child(5){animation-delay:220ms}.card:nth-child(6){animation-delay:275ms}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}