:root{--canvas: #F8F8FB;--surface: #FFFFFF;--surface-2: #FAFAFD;--ink: #191B26;--muted: #5C6079;--faint: #8B90A8;--line: #E6E7F0;--line-2: #D8DAE8;--hairline: #EFF0F7;--accent: #3B4E8C;--accent-d: #2B3A6B;--accent-soft: #E8EBF6;--side: #1B2140;--side-2: #12172E;--side-ink: #D3D6E6;--side-muted: #9298B5;--danger: #B02A37;--cost: #2E6B55;--cost-soft: #E7F1EC;--cost-tint: #F5FAF7;--radius: 10px;--shadow-sm: 0 1px 2px rgba(27,33,64,.06);--shadow: 0 1px 3px rgba(27,33,64,.07), 0 8px 24px rgba(27,33,64,.06)}*{box-sizing:border-box}html,body{margin:0;padding:0;overscroll-behavior-y:none}body{font-family:Hiragino Kaku Gothic ProN,Yu Gothic,Meiryo,system-ui,sans-serif;background:var(--canvas);color:var(--ink);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}input,select,textarea,button{font-family:inherit}.num{font-variant-numeric:tabular-nums}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(1200px 500px at 80% -10%,rgba(59,78,140,.11),transparent 60%),linear-gradient(180deg,#f8f8fb,#ecedf6)}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:34px 30px;width:100%;max-width:372px;box-shadow:var(--shadow);display:flex;flex-direction:column}.login-brand{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:4px}.login-brand .dot{width:20px;height:20px;border-radius:6px;background:linear-gradient(135deg,#6e80c7,#3b4e8c)}.login-logo{font-size:20px;font-weight:700;letter-spacing:.02em}.login-sub{font-size:12.5px;color:var(--muted);text-align:center;margin:8px 0 22px}.login-card label{font-size:12px;font-weight:600;color:var(--muted);margin:12px 0 5px}.login-card input{padding:11px 13px;border:1px solid var(--line-2);border-radius:9px;font-size:15px;background:#fff}.login-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3b4e8c26}.login-err{color:var(--danger);font-size:12.5px;margin-top:12px}.shell{display:grid;grid-template-columns:216px 1fr;min-height:100vh}.sidebar{background:linear-gradient(180deg,var(--side) 0%,var(--side-2) 100%);color:var(--side-ink);display:flex;flex-direction:column;padding:18px 14px;position:sticky;top:0;height:100vh}.sb-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}.sb-brand .dot{width:20px;height:20px;border-radius:6px;background:linear-gradient(135deg,#7c8dd4,#3b4e8c);flex-shrink:0}.sb-brand .name{font-size:15px;font-weight:700;color:#fff;letter-spacing:.02em}.sb-nav{display:flex;flex-direction:column;gap:3px}.sb-item{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:8px;font-size:13px;color:var(--side-muted);background:transparent;border:none;text-align:left;cursor:pointer;width:100%;transition:background .12s,color .12s}.sb-item:hover{background:#ffffff0f;color:var(--side-ink)}.sb-item.on{background:#7c8dd447;color:#fff;font-weight:600}.sb-item .ic{width:16px;text-align:center;opacity:.9}.sb-spacer{flex:1}.sb-user{border-top:1px solid rgba(255,255,255,.1);padding-top:14px}.sb-user .u-name{font-size:13px;color:#fff;font-weight:600}.sb-user .u-role{font-size:11px;color:var(--side-muted);margin-bottom:10px}.sb-logout{width:100%;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);color:var(--side-ink);padding:8px;border-radius:8px;font-size:12px;cursor:pointer}.sb-logout:hover{background:#ffffff1f}.content{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:10;background:#f8f8fbd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:14px 26px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.topbar h1{font-size:18px;font-weight:700;margin:0}.main{padding:22px 26px 60px;max-width:1120px;width:100%}.btn{border:1px solid transparent;border-radius:9px;padding:9px 15px;font-size:13px;font-weight:600;cursor:pointer;transition:all .12s;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 11px;font-size:12px;border-radius:8px}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-d)}.btn-outline{background:#fff;border-color:var(--line-2);color:var(--ink)}.btn-outline:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-ghost{background:transparent;border-color:transparent;color:var(--muted)}.btn-ghost:hover:not(:disabled){background:var(--hairline);color:var(--ink)}.btn-danger{color:var(--danger)}.btn-danger:hover:not(:disabled){background:#fbecee}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:15px 17px;box-shadow:var(--shadow-sm)}.kpi .k{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.kpi .v{font-size:26px;font-weight:700;margin-top:5px;line-height:1.15}.kpi .v.accent{color:var(--accent)}.kpi .v.cost{color:var(--cost)}.kpi .v-sub{font-size:11px;color:var(--faint);margin-left:4px;font-weight:400}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:16px;overflow:hidden}.card-hd{padding:13px 18px;border-bottom:1px solid var(--line);background:var(--surface-2);font-weight:600;font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.muted{font-size:12px;color:var(--faint);font-weight:400}.filters{display:flex;gap:10px;flex-wrap:wrap;padding:14px 18px}.filters input,.filters select{padding:8px 12px;border:1px solid var(--line-2);border-radius:8px;font-size:13px;background:#fff;color:var(--ink)}.filters input:focus,.filters select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3b4e8c21}.filter-search{flex:1 1 220px}.tbl-wrap{overflow-x:auto}.q-table{width:100%;border-collapse:collapse;min-width:720px}.q-table th{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);text-align:left;font-weight:600;padding:10px 18px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap}.q-table th.r,.q-table td.r{text-align:right}.q-table td{padding:13px 18px;border-bottom:1px solid var(--hairline);font-size:13px;vertical-align:middle}.q-table tr:last-child td{border-bottom:none}.q-table tbody tr:hover td{background:var(--surface-2)}.q-table .no{font-size:11.5px;color:var(--faint);font-weight:600;white-space:nowrap}.q-table .cust{font-weight:600}.q-table .subj{font-size:11.5px;color:var(--muted);margin-top:1px}.q-table .amt{font-weight:700;white-space:nowrap}.q-table .date{font-size:12px;color:var(--muted);white-space:nowrap}.row-actions{display:flex;gap:4px;justify-content:flex-end}.icon-btn{background:transparent;border:1px solid var(--line-2);color:var(--muted);border-radius:7px;padding:5px 8px;font-size:12px;cursor:pointer;line-height:1}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.icon-btn.danger:hover{border-color:var(--danger);color:var(--danger);background:#fbecee}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.chip{font-size:11px;padding:3px 11px;border-radius:999px;font-weight:600;white-space:nowrap;display:inline-block}.chip.draft{background:#fbf1dd;color:#8a6520}.chip.sent{background:#e1f0f1;color:#0f6e78}.chip.won{background:var(--accent-soft);color:var(--accent)}.chip.lost{background:#efefef;color:#777}.status-sel{border:1px solid var(--line-2);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:600;background:#fff;cursor:pointer;color:var(--ink)}.status-sel:focus{outline:none;border-color:var(--accent)}.empty{text-align:center;padding:44px 16px;color:var(--faint);font-size:13px}.db-error{background:#fbecee;border:1px solid #E7BFC4;color:#7a1f28;padding:12px 15px;border-radius:9px;margin-bottom:16px;font-size:13px}.fg{display:grid;grid-template-columns:1fr 1fr;gap:15px;padding:17px 18px}.fld{display:flex;flex-direction:column;gap:5px}.fld label{font-size:12px;font-weight:600;color:var(--muted)}.fld .req{color:var(--danger)}.fld input,.fld select,.fld textarea{width:100%;padding:9px 12px;border:1px solid var(--line-2);border-radius:8px;font-size:14px;background:#fff;color:var(--ink)}.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3b4e8c24}.fc{grid-column:1 / -1}.tbl-scroll{overflow-x:auto;padding:6px 14px 0}.live-wrap{padding:14px 18px 18px;background:var(--surface-2)}.live-frame{width:100%;height:78vh;min-height:520px;border:1px solid var(--line);border-radius:8px;background:#fff;box-shadow:0 1px 6px #00000014;display:block}.q-items{width:100%;border-collapse:collapse;min-width:960px}.q-items th{background:var(--surface-2);border:1px solid var(--line);padding:8px 7px;font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}.q-items td{border:1px solid var(--line);padding:6px 7px;vertical-align:middle}.q-items td.c{text-align:center}.q-items td.r{text-align:right;white-space:nowrap;font-weight:700}.q-items input{width:100%;padding:7px 6px;border:1px solid var(--line-2);border-radius:7px;font-size:13px;background:#fff}.q-items input[type=number]{padding:7px 5px}.q-items input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #3b4e8c24}.q-items .q-note{margin-top:4px;font-size:12px;color:var(--muted)}.q-items .q-amt-auto{text-align:right;font-weight:700;padding:7px 2px;color:var(--ink)}.q-del{background:transparent;border:none;color:var(--danger);cursor:pointer;font-size:15px;padding:4px 7px;border-radius:6px}.q-del:hover{background:#fbecee}.q-del:disabled{color:var(--line-2);cursor:not-allowed;background:transparent}.cat-block{border:1px solid var(--line);border-radius:10px;margin:14px 18px 0;overflow:hidden}.cat-hd{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--line);flex-wrap:wrap}.cat-badge{font-size:11px;font-weight:700;color:#fff;background:var(--side);padding:3px 9px;border-radius:6px;white-space:nowrap}.cat-name{flex:1 1 260px;min-width:180px;padding:8px 11px;border:1px solid var(--line-2);border-radius:8px;font-size:14px;font-weight:600;background:#fff}.cat-name:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #3b4e8c24}.cat-sub{font-size:13px;font-weight:700;color:var(--accent);white-space:nowrap}.cat-covno{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap}.cat-covno select{padding:6px 8px;border:1px solid var(--line-2);border-radius:8px;font-size:13px;background:#fff;font-weight:600}.q-items th.cost-col{background:var(--cost-soft);color:var(--cost)}.q-items td.cost-col{background:var(--cost-tint)}.cost-bar{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:12px 18px;margin:0 0 2px;background:var(--cost-tint);border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.cost-bar b{color:var(--ink);margin-left:3px}.cost-tag{font-size:11px;font-weight:700;color:var(--cost);background:var(--cost-soft);padding:3px 9px;border-radius:6px}.cost-note{font-size:11px;color:var(--faint)}.q-bottom{display:flex;flex-wrap:wrap;gap:22px;align-items:flex-start;padding:16px 18px 0}.q-sum{min-width:260px;border-collapse:collapse}.q-sum td{border:1px solid var(--line);padding:9px 13px;font-size:14px}.q-sum td.k{background:var(--surface-2);font-weight:600;color:var(--muted)}.q-sum td.v{text-align:right;white-space:nowrap;font-weight:700}.q-sum tr.gt td{background:var(--accent);color:#fff;font-weight:700;font-size:15px;border-color:var(--accent)}.issuer-info{display:flex;flex-wrap:wrap;gap:18px 24px;align-items:flex-start;padding:16px 18px}.issuer-fixed{flex:1 1 260px}.issuer-co{font-size:15px;font-weight:700}.issuer-ad{font-size:12.5px;color:var(--muted);margin-top:4px}.actions-bar{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:26px}@media (max-width: 760px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;flex-wrap:wrap;padding:12px 14px;gap:8px}.sb-brand{padding:0 8px 0 4px}.sb-nav{flex-direction:row;flex:1;gap:4px}.sb-item{width:auto}.sb-spacer{display:none}.sb-user{border-top:none;padding-top:0;display:flex;align-items:center;gap:10px}.sb-user .u-role,.sb-user .u-name{display:none}.sb-logout{width:auto;padding:8px 12px}.kpis,.fg{grid-template-columns:1fr}.fld input,.fld select,.fld textarea{font-size:16px}.main,.topbar{padding-left:16px;padding-right:16px}}
