Help
RSS
API
Feed
Maltego
Contact
Domain > kaitool.net
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-02-21
52.69.162.86
(
ClassC
)
2026-02-25
35.73.135.146
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: awselb/2.0Date: Wed, 25 Feb 2026 14:45:10 GMTContent-Type: text/htmlContent-Length: 134Connection: keep-aliveLocation: https://kaitool.net:443/ html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Wed, 25 Feb 2026 14:45:10 GMTContent-Type: text/html; charsetutf-8Content-Length: 104949Connection: keep-aliveServer: nginxX-Frame-Options: DENYVary: Cookie, originX-Content-Type-Options: nosniffReferrer-Policy: same-originCross-Origin-Opener-Policy: same-origin html langja>head> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno> meta namedescription content> meta nameauthor content> meta nameformat-detection contenttelephoneno> title>TOP | KAITOOL/title> link relicon typeimage/x-icon href/static/assets/img/logo/KAITOOL_icon.png/> !-- Font Awesome icons (free version)--> link relstylesheet href/static/fontawesome/css/all.min.css> !-- Google fonts--> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyLato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&familyNoto+Sans+JP:wght@100;200;300;400;500;600;700;800;900&displayswap relstylesheet> !-- Core theme CSS (includes Bootstrap)--> link href/static/css/one-page-wonder.css relstylesheet> !-- My style --> link href/static/css/mystyle.css relstylesheet> link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css> !-- Google tag (gtag.js) --> script async srchttps://www.googletagmanager.com/gtag/js?idG-1X7Z57XJFL>/script> script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-1X7Z57XJFL); /script>/head>body class> /body>div idwrapper> !-- Navigation --> nav classnavbar navbar-expand-lg navbar-dark navbar-custom fixed-top d-print-none stylez-index: 10001;> div classcontainer> a classnavbar-brand href/>img src/static/assets/img/KAITOOL%E3%83%AD%E3%82%B4%E6%96%87%E5%AD%97_%E7%99%BD%E6%9E%A0.png altlogo stylewidth: auto; height: 23px;>/a> button classnavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarResponsive aria-controlsnavbarResponsive aria-expandedfalse aria-labelToggle navigation> i classfa-solid fa-bars fa-lg>/i> /button> div classcollapse navbar-collapse idnavbarResponsive> /ul> ul classnavbar-nav ms-auto> li classnav-item> a classnav-link href/account/login/>ログイン/a> /li> /ul> /div> /div> /nav> style> :root { --lp-bg: #ffffff; --lp-bg-soft: #f8fafc; --lp-card-bg: rgba(255, 255, 255, 0.95); --lp-card-border: rgba(148, 163, 184, 0.35); --lp-accent: #2563eb; --lp-accent-soft: rgba(37, 99, 235, 0.12); --lp-accent-green: #22c55e; --lp-text-main: #1f2937; --lp-text-muted: #475569; --lp-header-height: 64px; --lp-footer-height: 72px; } .lp-wrapper { background: radial-gradient(circle at 15% 20%, rgba(148, 163, 184, 0.18), transparent 55%), radial-gradient(circle at 80% 85%, rgba(191, 219, 254, 0.25), transparent 60%), var(--lp-bg); min-height: calc(100vh - var(--lp-header-height) - var(--lp-footer-height)); padding-top: calc(var(--lp-header-height) + 2.8rem); padding-bottom: calc(var(--lp-footer-height) + 0.2rem); display: flex; align-items: center; justify-content: center; } .lp-section { color: var(--lp-text-main); } .lp-hero-badge { display: inline-flex; align-items: center; gap: .6rem; padding: .55rem 1.1rem; border-radius: 999px; background: rgba(241, 245, 249, 0.9); border: 1px solid rgba(148, 163, 184, 0.35); font-size: 1.05rem; font-weight: 600; margin-bottom: 1.4rem; } .lp-hero-badge span { display: inline-flex; align-items: center; justify-content: center; width: 1.25rem; height: 1.25rem; border-radius: 999px; background: rgba(34, 197, 94, 0.14); color: var(--lp-accent-green); font-size: .8rem; } .lp-hero-title { position: relative; display: inline-flex; flex-direction: column; padding: 0 0 1.3rem 1.0rem; color: #0b346e; font-size: clamp(2.2rem, 4vw, 3rem); font-weight: 700; letter-spacing: .012em; margin-bottom: 1.0rem; } .lp-hero-title::before { content: ; position: absolute; left: 0; top: 8%; bottom: 10%; width: 8px; border-radius: 999px; background: linear-gradient(180deg, #0b346e, #1f8a5b); } .lp-hero-title span { display: block; line-height: 1.6; } .lp-hero-title .lp-hero-suffix { font-size: .8em; font-weight: 600; margin-left: .5rem; display: inline-block; } .lp-hero-sub { font-size: 2rem; } .lp-hero-sub .lp-highlight-staff { color: #216abd; } .lp-hero-sub .lp-highlight-customer { color: #1a702e; } .lp-chip-row { display: flex; flex-wrap: wrap; gap: .4rem; margin: 1.6rem 0 1.6rem; } .lp-logo-mini { font-size: 2.2rem; } .lp-chip { font-size: 1.05rem; padding: .48rem 1.05rem; border-radius: 999px; background: rgba(226, 232, 240, 0.7); border: 1px solid rgba(148, 163, 184, 0.45); color: var(--lp-text-main); display: inline-flex; align-items: center; gap: .3rem; font-weight: 600; letter-spacing: .01em; } .lp-chip-dot { width: 9px; height: 9px; border-radius: 999px; background: var(--lp-accent); } .lp-chip-accent { background: rgba(191, 219, 254, 0.65); border-color: rgba(59, 130, 246, 0.45); color: #1d4ed8; } .lp-chip-accent .lp-chip-dot { background: var(--lp-accent-green); } .lp-chip-staff { background: rgba(226, 232, 240, 0.7); border-color: #216abd; } .lp-chip-staff .lp-chip-dot { background: #216abd; } .lp-chip-customer { background: #e2f0e8b3; border-color: #1a702e; } .lp-chip-customer .lp-chip-dot { background: #1a702e; } .lp-hero-note { font-size: .95rem; font-weight: 500; color: #1e293b; } .lp-appraise-card { border-radius: 26px; background: #f5f8f4; border: 1px solid rgba(148, 163, 184, 0.35); box-shadow: 0 26px 70px rgba(15, 23, 42, 0.18); padding: 2.0rem; display: flex; flex-direction: column; gap: 0.8rem; } .lp-appraise-topbar { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; } .lp-appraise-tabs { display: flex; flex-wrap: wrap; gap: .55rem; } .lp-appraise-tab { padding: .55rem 1.1rem; border-radius: 14px 14px 0 0; background: #e8eef5; border: 1px solid #c2cedb; font-size: .92rem; font-weight: 700; color: #475569; box-shadow: inset 0 -2px 0 rgba(255, 255, 255, 0.7); letter-spacing: .04em; } .lp-appraise-tab.is-active { background: #ffffff; color: #0f172a; border-bottom: 3px solid #2563eb; box-shadow: 0 6px 14px rgba(15, 23, 42, 0.08); } .lp-appraise-search { display: flex; align-items: center; gap: .8rem; } .lp-search-label { font-weight: 700; color: #1f2937; text-align: right; line-height: 1.35; } .lp-search-label small { display: block; font-weight: 500; color: #64748b; } .lp-switch { position: relative; width: 52px; height: 28px; } .lp-switch input { opacity: 0; width: 0; height: 0; } .lp-switch-slider { position: absolute; inset: 0; cursor: pointer; background: #cbd5e1; border-radius: 999px; transition: all .2s ease; } .lp-switch-slider::before { content: ; position: absolute; height: 22px; width: 22px; left: 3px; top: 3px; background: #ffffff; border-radius: 50%; box-shadow: 0 2px 6px rgba(15, 23, 42, 0.25); transition: all .2s ease; } .lp-switch input:checked + .lp-switch-slider { background: #2563eb; } .lp-switch input:checked + .lp-switch-slider::before { transform: translateX(24px); } .lp-appraise-form { display: flex; flex-direction: column; gap: 1.4rem; } .lp-appraise-board { display: grid; grid-template-columns: minmax(0, 1fr); align-items: stretch; } .lp-board-main { background: #ffffff; border: 2px solid #bcd9ea; border-radius: 18px; padding: 0.5rem 1.0rem; display: flex; flex-direction: column; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7); } .lp-board-items { display: flex; flex-direction: column; gap: 1.2rem; } .lp-board-meta { border: 1px solid rgba(148, 163, 184, 0.45); border-radius: 18px; padding: 1.2rem 1.4rem; background: rgba(255, 255, 255, 0.95); box-shadow: 0 14px 32px rgba(15, 23, 42, 0.14); } .lp-board-total { border-radius: 18px; display: flex; align-items: end; justify-content: end; flex-wrap: wrap; } .lp-total-display { display: flex; flex-direction: row; align-items: baseline; gap: 1rem; flex-wrap: wrap; } .lp-total-amount { display: inline-flex; align-items: baseline; gap: .35rem; color: #0f172a; } .lp-total-number { font-size: 2.3rem; font-weight: 800; line-height: 1; } .lp-total-unit { font-size: 1rem; font-weight: 700; letter-spacing: .05em; color: #475569; line-height: 1; } .lp-total-label { font-size: 1.2rem; font-weight: 700; letter-spacing: .08em; color: #475569; text-transform: uppercase; } .lp-total-controls { display: flex; align-items: center; gap: .75rem; } .lp-total-toggle-text { font-size: .85rem; font-weight: 600; color: #475569; } .lp-switch--compact { width: 44px; height: 24px; } .lp-switch--compact .lp-switch-slider::before { height: 20px; width: 20px; top: 2px; left: 2px; } .lp-switch--compact input:checked + .lp-switch-slider::before { transform: translateX(20px); } .lp-board-grid { display: grid; grid-template-columns: minmax(100px, 0.4fr) minmax(260px, 1.5fr) minmax(100px, 0.15fr) minmax(110px, 0.35fr); gap: 1.2rem; } .lp-board-column { display: flex; flex-direction: column; gap: 0.6rem; min-width: 0; } .lp-board-column--subtotal { display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-end; gap: .35rem; } .lp-trash-btn:hover { background: #fcdede; transform: translateY(-1px); } .lp-field { display: flex; flex-direction: column; gap: .35rem; min-width: 0; } .lp-field-label { font-size: .78rem; font-weight: 700; letter-spacing: .07em; color: #475569; text-transform: uppercase; } .lp-field > select, .lp-field > input, .lp-field > textarea { border: 1px solid #cbd5e1; border-radius: 10px; background: #f8fafc; padding: .4rem .8rem; font-size: .95rem; font-weight: 600; color: #0f172a; transition: border .2s ease, box-shadow .2s ease; width: 100%; } .lp-field > textarea { resize: vertical; min-width: 30px; line-height: 1; } .lp-field > input:focus, .lp-field > select:focus, .lp-field > textarea:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.2); outline: none; background: #ffffff; } .lp-status-block { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; } .lp-status-tags { display: flex; gap: .4rem; } .lp-status-tag { border-radius: 10px; border: 1px solid #cbd5e1; background: #f1f5f9; padding: .45rem .9rem; font-weight: 700; font-size: .9rem; color: #475569; cursor: pointer; transition: all .2s ease; } .lp-status-tag.is-active { background: #f97316; border-color: #ea580c; color: #ffffff; box-shadow: 0 6px 12px rgba(234, 88, 12, 0.3); } .lp-status-tag:hover { transform: translateY(-1px); } .lp-input-shell { position: relative; display: flex; align-items: center; gap: .6rem; border: 1px solid #cbd5e1; border-radius: 10px; background: #f8fafc; padding: .4rem .5rem; } .lp-input-shell i { color: #64748b; font-size: .95rem; } .lp-input-shell .lp-prefix { padding-top: 2px; font-weight: 700; color: #555e73; } .lp-input-shell input { border: none; background: transparent; flex: 1; font-size: .95rem; font-weight: 600; color: #0f172a; min-width: 0; } .lp-input-shell input:focus { outline: none; } .lp-input-shell input::placeholder { color: #94a3b8; font-weight: 500; } .lp-search-suggestions { position: absolute; left: 0; right: 0; top: calc(100% + 0.35rem); background: #ffffff; border: 1px solid rgba(148, 163, 184, 0.35); border-radius: 12px; box-shadow: 0 12px 28px rgba(15, 23, 42, 0.12); padding: 0.35rem 0; display: none; max-height: 320px; overflow-y: auto; z-index: 40; } .lp-search-suggestions.is-visible { display: block; } .lp-search-suggestion { width: 100%; border: none; background: transparent; display: flex; flex-direction: column; gap: 0.25rem; padding: 0.55rem 0.9rem; text-align: left; cursor: pointer; } .lp-search-suggestion:hover, .lp-search-suggestion:focus { background: rgba(59, 130, 246, 0.08); outline: none; } .lp-search-suggestion__header { display: flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; font-weight: 700; color: #1f2937; } .lp-search-suggestion__badge { display: inline-flex; align-items: center; justify-content: center; min-width: 2.4rem; padding: 0.15rem 0.55rem; border-radius: 999px; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.02em; color: #1d4ed8; background: rgba(191, 219, 254, 0.6); } .lp-search-suggestion__badge.is-item { color: #047857; background: rgba(134, 239, 172, 0.45); } .lp-search-suggestion__title { font-size: 0.95rem; font-weight: 700; color: #0f172a; line-height: 1.4; word-break: break-word; } .lp-search-suggestion__meta { font-size: 0.78rem; color: #475569; display: flex; flex-wrap: wrap; gap: 0.4rem; } .lp-search-suggestion__meta span { display: inline-flex; align-items: center; gap: 0.25rem; } .lp-search-suggestion__content { display: flex; flex-direction: column; gap: 0.35rem; flex: 1; min-width: 0; } .lp-search-suggestion__row { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; } .lp-search-suggestion__price { display: inline-flex; align-items: flex-end; gap: 0.25rem; font-weight: 800; color: #0f172a; } .lp-search-suggestion__price-number { font-size: 1.35rem; letter-spacing: 0.02em; } .lp-search-suggestion__price-unit { font-size: 0.75rem; font-weight: 700; color: #64748b; letter-spacing: 0.08em; } .lp-price-group { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: flex-end; width: 100%; } .lp-price-group input { text-align: right; } .lp-field--amount .lp-input-shell, .lp-field--quantity .lp-input-shell { padding: .25rem .55rem; min-height: 36px; } .lp-field--amount .lp-prefix { font-size: 1.2rem; padding-top: 0; } .lp-field--amount .lp-input-shell input, .lp-field--quantity .lp-input-shell input { font-size: 1.05rem; font-weight: 800; line-height: 1.2; } .lp-field--quantity { margin-left: auto; } .lp-field--quantity .lp-input-shell { justify-content: flex-end; } .lp-field--quantity .lp-input-shell input { flex: 0 0 52px; width: 52px; text-align: right; } .lp-price-group--stacked { flex-direction: column; align-items: stretch; } .lp-subtotal { display: flex; justify-content: flex-end; align-items: center; gap: .5rem; width: 100%; } .lp-subtotal-value { display: inline-flex; align-items: baseline; gap: .3rem; font-size: 1.2rem; font-weight: 800; color: #0f172a; background: #fff7ed; border-radius: 12px; padding: .4rem .8rem; border: 1px solid #fed7aa; min-width: 0; } .lp-subtotal-label { font-size: .78rem; font-weight: 700; letter-spacing: .07em; color: #475569; white-space: nowrap; } .lp-board-column--subtotal .lp-subtotal { width: auto; } .lp-board-column--subtotal .lp-subtotal-label { text-align: right; } .lp-subtotal-number { font-size: 1.6rem; line-height: 1; white-space: nowrap; } .lp-subtotal-unit { font-size: .9rem; font-weight: 700; color: #475569; white-space: nowrap; } .lp-coupon-block { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; justify-content: flex-end; } .lp-switch-alt { display: inline-flex; align-items: center; gap: .6rem; cursor: pointer; font-weight: 700; color: #475569; } .lp-switch-alt input { display: none; } .lp-switch-pill { width: 48px; height: 26px; border-radius: 999px; background: #cbd5e1; position: relative; transition: all .2s ease; } .lp-switch-pill::after { content: ; position: absolute; width: 20px; height: 20px; top: 3px; left: 3px; border-radius: 50%; background: #ffffff; box-shadow: 0 2px 6px rgba(15, 23, 42, 0.2); transition: all .2s ease; } .lp-switch-alt input:checked + .lp-switch-pill { background: #16a34a; } .lp-switch-alt input:checked + .lp-switch-pill::after { transform: translateX(22px); } .lp-switch-text { font-size: .9rem; } .lp-coupon-btn { border-radius: 10px; background: #0f172a; color: #ffffff; border: none; padding: .6rem 1.1rem; font-weight: 700; display: inline-flex; align-items: center; gap: .5rem; transition: background .2s ease, transform .2s ease; } .lp-coupon-btn:hover { background: #1e293b; transform: translateY(-1px); } .lp-board-footer { display: flex; flex-wrap: wrap; gap: 1.2rem; align-items: center; justify-content: space-between; } .lp-board-footer > * { flex: 1 1 220px; } .lp-jan-input { display: flex; flex-direction: column; gap: .4rem; } .lp-jan-input .lp-input-shell { width: 100%; } .lp-board-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1.2rem; align-items: center; } .lp-btn-primary { background: #0f53b2; color: #ffffff; border: none; padding: .8rem 1.4rem; border-radius: 12px; font-weight: 700; display: inline-flex; align-items: center; gap: .65rem; box-shadow: 0 12px 25px rgba(15, 83, 178, 0.3); transition: background .2s ease, transform .2s ease; } .lp-btn-primary span { font-size: .85rem; font-weight: 600; color: rgba(255, 255, 255, 0.82); } .lp-btn-primary:hover { background: #0c47a2; transform: translateY(-1px); } .lp-jan-search { display: flex; align-items: center; border: 1px solid #fde68a; border-radius: 14px; overflow: hidden; background: #fffdf3; box-shadow: inset 0 0 0 1px rgba(250, 204, 21, 0.25); } .lp-jan-search input { border: none; background: transparent; padding: .75rem 1rem; min-width: 280px; font-weight: 600; color: #92400e; } .lp-jan-search input:focus { outline: none; } .lp-jan-search button { border: none; background: #facc15; color: #92400e; padding: .75rem 1.1rem; font-weight: 700; display: flex; align-items: center; justify-content: center; transition: background .2s ease; } .lp-jan-search button:hover { background: #fbbf24; } .lp-board-highlight { border-radius: 12px; background: #fff9d9; height: 34px; } @media (max-width: 992px) { .lp-appraise-board { grid-template-columns: 1fr; } .lp-board-meta { grid-template-columns: 1fr; } .lp-board-grid { grid-template-columns: 1fr; } .lp-board-total { justify-content: center; padding: 1rem 1.2rem; } .lp-total-display { justify-content: center; text-align: center; } .lp-total-controls { justify-content: center; width: 100%; } } @media (max-width: 768px) { .lp-appraise-card { padding: 1.6rem; } .lp-board-footer { flex-direction: column; align-items: stretch; } .lp-board-footer > * { flex: 1 1 auto; } .lp-price-group--stacked .lp-subtotal-value { text-align: center; } .lp-coupon-block { justify-content: flex-start; } .lp-jan-search { flex-direction: column; align-items: stretch; } .lp-jan-search input, .lp-jan-search button { width: 100%; } } .lp-impact-card { position: relative; border-radius: 24px; background: #ffffff; border: 1px solid rgba(148, 163, 184, 0.4); padding: 2rem 2.2rem; box-shadow: 0 30px 70px rgba(15, 23, 42, 0.18); overflow: hidden; } .lp-impact-card::after { content: ; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; background: linear-gradient(135deg, rgba(59, 130, 246, 0.12), transparent 45%); } .lp-impact-card > * { position: relative; z-index: 1; } .lp-impact-card--primary { background: linear-gradient(140deg, rgba(15, 23, 42, 0.96), rgba(2, 132, 199, 0.88)); color: #e0f2fe; border: none; box-shadow: 0 40px 90px rgba(15, 23, 42, 0.45); } .lp-impact-card--primary::after { background: radial-gradient(circle at 15% 25%, rgba(56, 189, 248, 0.45), transparent 60%); } .lp-impact-card--flash { background: linear-gradient(160deg, rgba(224, 231, 255, 0.95), rgba(219, 234, 254, 0.95)); border: 1px solid rgba(129, 140, 248, 0.45); } .lp-impact-card--dark { background: #0f172a; border: none; color: #e2e8f0; box-shadow: 0 38px 80px rgba(15, 23, 42, 0.55); } .lp-impact-badge { display: inline-flex; align-items: center; gap: .65rem; padding: .55rem 1.2rem; border-radius: 999px; background: rgba(255, 255, 255, 0.18); border: 1px solid rgba(148, 163, 184, 0.3); font-size: 1rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } .lp-impact-card--primary .lp-impact-badge { color: #bae6fd; } .lp-impact-headline { font-size: clamp(2.1rem, 3.8vw, 3rem); font-weight: 800; line-height: 1.13; letter-spacing: .01em; margin: 1.2rem 0 1.6rem; } .lp-impact-card--primary .lp-impact-headline { color: #f8fafc; } .lp-impact-kpi-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.1rem; margin-bottom: 1.3rem; } .lp-impact-kpi { display: flex; flex-direction: column; gap: .3rem; } .lp-impact-value { font-size: clamp(2rem, 3.2vw, 2.8rem); font-weight: 800; letter-spacing: .01em; } .lp-impact-card--primary .lp-impact-value { color: #38bdf8; } .lp-impact-label { font-size: 1rem; letter-spacing: .06em; text-transform: uppercase; opacity: .86; } .lp-impact-caption { font-size: 1.05rem; letter-spacing: .04em; font-weight: 600; } .lp-impact-stack { display: flex; flex-direction: column; gap: .8rem; } .lp-impact-stack-item { display: flex; align-items: center; gap: .8rem; padding: .75rem 1rem; border-radius: 18px; background: rgba(148, 163, 184, 0.12); border: 1px solid rgba(148, 163, 184, 0.2); font-size: 1.05rem; font-weight: 600; } .lp-impact-stack-item i { font-size: 1.2rem; color: #2563eb; } .lp-impact-card--dark .lp-impact-stack-item { background: rgba(15, 23, 42, 0.75); border-color: rgba(148, 163, 184, 0.25); color: #e2e8f0; } .lp-impact-card--dark .lp-impact-stack-item i { color: #38bdf8; } .lp-impact-flash { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem; margin: 1.1rem 0; } .lp-impact-flash-item { padding: 1rem 1.1rem; border-radius: 16px; background: rgba(15, 23, 42, 0.08); font-size: 1.02rem; font-weight: 600; display: flex; flex-direction: column; gap: .35rem; } .lp-impact-flash-value { font-size: 1.8rem; font-weight: 800; color: #1d4ed8; } .lp-impact-flash-label { font-size: .95rem; letter-spacing: .05em; color: #1f2937; } .lp-impact-card--dark .lp-impact-flash-item { background: rgba(15, 23, 42, 0.6); color: #cbd5f5; } .lp-impact-card--dark .lp-impact-flash-value { color: #93c5fd; } .lp-impact-card--dark .lp-impact-flash-label { color: #cbd5f5; } .lp-ledger-demo { display: flex; flex-direction: column; gap: 0.8rem; border-radius: 26px; border: 1px solid rgba(148, 163, 184, 0.35); background: var(--lp-card-bg); box-shadow: 0 30px 75px rgba(15, 23, 42, 0.18); padding: 1.2rem 2.2rem; min-height: 100%; } .lp-ledger-header { display: flex; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; align-items: flex-start; } .lp-ledger-badge { display: inline-flex; align-items: center; gap: .4rem; padding: .4rem .95rem; border-radius: 999px; background: rgba(59, 130, 246, 0.12); color: #1d4ed8; font-weight: 700; font-size: 1.4rem; letter-spacing: .06em; } .lp-ledger-title { font-size: 1.5rem; font-weight: 800; color: #0f172a; margin: .5rem 0 .2rem; } .lp-ledger-description { color: var(--lp-text-muted); font-size: .88rem; margin: 0; } .lp-ledger-meta { display: flex; flex-direction: column; align-items: flex-end; gap: .5rem; font-weight: 600; color: #475569; } .lp-ledger-refresh { border: none; border-radius: 10px; background: var(--lp-accent); color: #ffffff; display: inline-flex; align-items: center; gap: .4rem; padding: .55rem 1rem; font-weight: 700; box-shadow: 0 12px 24px rgba(37, 99, 235, 0.25); transition: transform .15s ease, box-shadow .15s ease; } .lp-ledger-refresh:hover { transform: translateY(-1px); box-shadow: 0 16px 30px rgba(37, 99, 235, 0.3); } .lp-ledger-refresh.is-busy i { animation: lpRefreshSpin .8s linear infinite; } @keyframes lpRefreshSpin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .lp-ledger-filter { display: flex; flex-wrap: wrap; gap: .6rem; } .lp-ledger-filter-btn { padding: .45rem 1rem; border-radius: 999px; border: 1px solid rgba(148, 163, 184, 0.5); background: #f8fafc; font-weight: 700; color: #475569; font-size: .82rem; transition: background .15s ease, color .15s ease, border .15s ease; } .lp-ledger-filter-btn.is-active { background: #1d4ed8; color: #ffffff; border-color: #1d4ed8; box-shadow: 0 12px 22px rgba(29, 78, 216, 0.3); } .lp-ledger-columns { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; } .lp-ledger-column { border-radius: 20px; background: #ffffff; padding: 0.4rem; display: flex; flex-direction: column; gap: 1rem; min-height: 280px; transition: opacity .2s ease; } .lp-ledger-column.is-dimmed { opacity: .35; } .lp-ledger-column-head { display: flex; flex-direction: column; gap: .6rem; } .lp-ledger-head { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem 0 0 0.0rem; padding: .2rem 1rem; border-radius: 14px; background: rgba(148, 163, 184, 0.12); border: 1px solid rgba(148, 163, 184, 0.25); } .lp-ledger-status { display: inline-flex; align-items: center; gap: .4rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; font-size: .8rem; } .lp-ledger-status::before { content: ; width: 12px; height: 12px; border-radius: 999px; background: currentColor; } .lp-ledger-status--waiting { color: #f73858; } .lp-ledger-status--assessing { color: #f97316; } .lp-ledger-status--payment { color: #0891b2; } .lp-ledger-status--done { color: #16a34a; } .lp-ledger-count { font-size: 2.0rem; font-weight: 800; color: #2249a3; line-height: 1; position: relative; display: inline-flex; align-items: flex-end; } .lp-ledger-count::after { content: 件; font-size: .55em; font-weight: 700; margin-left: .3em; color: #475569; transform: translateY(-5%); } .lp-ledger-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .75rem; } .lp-ledger-card { border-radius: 18px; border: 1px solid rgba(148, 163, 184, 0.35); background: #ffffff; padding: 0.8rem 1.0rem 0.8rem; display: flex; flex-direction: column; gap: .6rem; position: relative; box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08); transform: translateY(0); transition: transform .15s ease, box-shadow .15s ease; } .lp-ledger-card:hover { box-shadow: 0 16px 38px rgba(15, 23, 42, 0.14); transform: translateY(-2px); } .lp-ledger-cardclass*is- { border-left: none; } .lp-ledger-card.is-hidden { display: none; } .lp-ledger-card-body { display: flex; flex-direction: column; gap: .55rem; margin-top: 0; } .lp-ledger-card-top { display: flex; align-items: center; gap: .6rem; } .lp-ledger-card-number { display: inline-flex; align-items: center; justify-content: center; min-width: 46px; padding: .25rem .75rem; border-radius: 999px; background: #1d4ed8; color: #ffffff; font-weight: 700; font-size: .85rem; letter-spacing: .05em; box-shadow: 0 2px 5px rgba(37, 99, 235, 0.25); position: static; } .lp-ledger-card-amount-value { font-size: 1.18em; font-weight: 800; color: #0c4a6e; letter-spacing: .02em; margin: 0 .15rem; } .lp-ledger-card-category { display: inline-flex; align-items: center; padding: .15rem .6rem; border-radius: 999px; background: rgba(148, 163, 184, 0.18); font-size: .78rem; font-weight: 700; color: #475569; letter-spacing: .04em; } .lp-ledger-card-sub, .lp-ledger-card-meta { display: flex; flex-wrap: wrap; gap: .45rem .8rem; font-size: .82rem; color: #475569; } .lp-ledger-card-sub span, .lp-ledger-card-meta span { display: inline-flex; align-items: center; gap: .3rem; } .lp-ledger-label { display: inline-flex; align-items: center; justify-content: center; padding: .12rem .55rem; border-radius: 999px; background: rgba(148, 163, 184, 0.24); color: #475569; font-size: .68rem; font-weight: 700; letter-spacing: .05em; margin-right: .35rem; } .lp-ledger-card-note { display: inline-flex; align-items: center; padding: .15rem .65rem; border-radius: 999px; background: rgba(148, 163, 184, 0.2); font-size: .75rem; font-weight: 700; color: #1f2937; letter-spacing: .04em; } .lp-ledger-timing { display: inline-flex; align-items: center; margin-left: .45rem; padding: .15rem .55rem; border-radius: 999px; background: rgba(59, 130, 246, 0.12); color: #0a1e55; font-size: .72rem; font-weight: 700; letter-spacing: .05em; } .lp-ledger-tags { display: flex; flex-wrap: wrap; gap: .35rem; } .lp-ledger-tag { border-radius: 999px; padding: .2rem .65rem; font-size: .68rem; font-weight: 700; letter-spacing: .03em; border: 1px solid transparent; } .lp-ledger-tag--priority { background: #fff56a; border-color: #f5e508; color: #000000; } .lp-ledger-tag--bundle { background: #dbeafe; border-color: #93c5fd; color: #1d4ed8; } .lp-ledger-tag--repeat { background: #dcfce7; border-color: #86efac; color: #15803d; } .lp-ledger-legend { display: flex; flex-wrap: wrap; gap: 0.6rem; border-top: 1px solid rgba(148, 163, 184, 0.25); padding-top: 0.3rem; margin-top: .1rem; font-size: .8rem; color: #475569; } .lp-ledger-legend span { display: inline-flex; align-items: center; gap: .4rem; } .lp-ledger-legend span::before { content: ; width: 12px; height: 12px; border-radius: 999px; background: currentColor; } @media (max-width: 991.98px) { .lp-ledger-demo { padding: 1.8rem; } .lp-ledger-columns { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } } @media (max-width: 767.98px) { .lp-ledger-demo { padding: 1.4rem; } .lp-ledger-header { align-items: flex-start; } .lp-ledger-meta { width: 100%; align-items: flex-start; } .lp-ledger-columns { grid-template-columns: 1fr; } } @media (max-width: 991.98px) { .lp-wrapper { padding-top: calc(var(--lp-header-height) + 0.1rem); padding-bottom: calc(var(--lp-footer-height) + 1.6rem); align-items: flex-start; padding-left: 1rem; padding-right: 1rem; } .lp-hero-title { font-size: clamp(2.2rem, 3.6vw, 2.6rem); } .lp-hero-sub { font-size: 1.8rem; } .lp-section { width: 100%; padding: 0 0.6rem; } .lp-appraise-card { padding: 2rem 1.6rem; } .lp-appraise-topbar { flex-direction: column; align-items: flex-start; gap: 1rem; } .lp-appraise-tabs { width: 100%; justify-content: flex-start; } .lp-appraise-search { width: 100%; justify-content: space-between; } .lp-impact-kpi-row, .lp-impact-flash { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 767.98px) { .lp-wrapper { padding-top: calc(var(--lp-header-height) - 1.0rem) !important; padding-bottom: calc(var(--lp-footer-height) + 1.2rem) !important; align-items: flex-start; padding-left: 1.2rem; padding-right: 1.2rem; } .lp-section { width: 100%; padding: 0 0.8rem; } .lp-logo-mini { font-size: .95rem; } .lp-hero-title { width: 100%; padding: 1.3rem 1.4rem 1.3rem 1.4rem; font-size: clamp(1.4rem, 6.0vw, 2.3rem); } .lp-hero-title::before { left: 0rem; top: 11%; bottom: 15%; } .lp-hero-sub { font-size: 1.3rem; max-width: 100%; } .lp-hero-sub strong { font-size: 1.5rem; } .lp-chip-row { flex-direction: column; gap: .55rem; } .lp-chip { width: 100%; justify-content: flex-start; font-size: 1.08rem; padding: .54rem 1.05rem; } .lp-impact-kpi-row, .lp-impact-flash { grid-template-columns: 1fr; gap: 1.05rem; } .lp-impact-card { padding: 1.8rem 1.75rem; } .lp-appraise-card { padding: 1.6rem 1.4rem; gap: 1.2rem; } .lp-appraise-tabs { width: 100%; } .lp-board-meta { gap: 1rem; } .lp-coupon-block { justify-content: flex-start; } }/style>div classlp-wrapper> div classcontainer lp-section> div classrow g-4 g-xl-5 align-items-start> !-- 左:HERO / 説明エリア --> div classcol-12 col-lg-5> div classlp-logo-mini mb-2> /div> div classlp-hero-title roleheading aria-level1> span>買取業務システムspan classlp-hero-suffix>なら、/span>/span> span>img src/static/assets/img/KAITOOL%E3%83%AD%E3%82%B4%E6%96%87%E5%AD%97_%E9%9D%92%E6%9E%A0.png altlogo stylewidth: 250px; height: auto; margin: 0.5rem 0 0 0.5rem;>/span> /div> p classlp-hero-sub> strong>span classlp-highlight-staff fs-1>スタッフ/span>の業務効率化/strong> とbr> strong>span classlp-highlight-customer fs-1>お客様/span>の買取体験向上/strong> をbr>提供します。 /p> div classlp-chip-row> div classlp-chip lp-chip-customer> span classlp-chip-dot>/span> スマホで買取受付 /div> div classlp-chip lp-chip-customer> span classlp-chip-dot>/span> 会員情報自動入力 /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> 買取履歴の活用 /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> 買取価格表管理機能 /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> お客様自動呼出し /div> div classlp-chip lp-chip-customer> span classlp-chip-dot>/span> 査定状況店内表示 /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> 自動釣銭機連携 /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> 完全ペーパーレス /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> 在庫管理機能 /div> div classlp-chip lp-chip-staff> span classlp-chip-dot>/span> 日報送信自動化 /div> /div> /div> !-- 右:進捗状況デモ --> div classcol-12 col-lg-7 d-flex> section classlp-ledger-demo w-100 aria-labelledbylp-ledger-demo-title> div classlp-ledger-header row align-items-center justify-content-center text-center> span classlp-ledger-badge justify-content-center text-center>i classfa-solid fa-clipboard-list mt-1>/i> 買取状況(デモ)/span> /div> div classlp-ledger-columns aria-livepolite> div classlp-ledger-column data-ledger-statuswaiting> div classlp-ledger-column-head> div classlp-ledger-head> span classlp-ledger-status lp-ledger-status--waiting>査定待ち/span> span classlp-ledger-count data-ledger-countwaiting>0/span> /div> /div> ol classlp-ledger-list> li classlp-ledger-card data-ledger-entry-statuswaiting> div classlp-ledger-card-body> div classlp-ledger-card-top> span classlp-ledger-card-number>107/span> span classlp-ledger-card-category>古着 おもちゃ/span> /div> div classlp-ledger-card-sub> span>span classlp-ledger-label>受付/span>15:19 span classlp-ledger-timing stylebackground-color: #ffecb6>26分前/span>/span> span>span classlp-ledger-label>更新/span>15:26 span classlp-ledger-timing stylebackground-color: #ffecb6>18分前/span>/span> /div> div classlp-ledger-card-meta> span classlp-ledger-card-amount>査定額 span classlp-ledger-card-amount-value>―/span> 円/span> /div> div classlp-ledger-tags> span classlp-ledger-tag lp-ledger-tag--bundle>まとめ買取/span> /div> /div> /li> li classlp-ledger-card data-ledger-entry-statuswaiting> div classlp-ledger-card-body> div classlp-ledger-card-top> span classlp-ledger-card-number>108/span> span classlp-ledger-card-category>本/span> /div> div classlp-ledger-card-sub> span>span classlp-ledger-label>受付/span>15:26 span classlp-ledger-timing>9分前/span>/span> span>span classlp-ledger-label>更新/span>15:34 span classlp-ledger-timing>0分前/span>/span> /div> div classlp-ledger-card-meta> span classlp-ledger-card-amount>査定額 span classlp-ledger-card-amount-value>―/span> 円/span> span classlp-ledger-card-note>段ボール/span> /div> div classlp-ledger-tags> span classlp-ledger-tag lp-ledger-tag--priority>優先査定/span> /div> /div> /li> /ol> /div> div classlp-ledger-column data-ledger-statusassessing> div classlp-ledger-column-head> div classlp-ledger-head> span classlp-ledger-status lp-ledger-status--assessing>査定中/span> span classlp-ledger-count data-ledger-countassessing>0/span> /div> /div> ol classlp-ledger-list> li classlp-ledger-card data-ledger-entry-statusassessing> div classlp-ledger-card-body> div classlp-ledger-card-top> span classlp-ledger-card-number>115/span> span classlp-ledger-card-category>家電/span> /div> div classlp-ledger-card-sub> span>span classlp-ledger-label>担当/span> 高杉/span> span>span classlp-ledger-label>査定開始/span> 15:08 span classlp-ledger-timing stylebackground-color: #fdbfc1>38分経過/span>/span> /div> div classlp-ledger-card-meta> span classlp-ledger-card-amount>査定額 span classlp-ledger-card-amount-value>64,000/span> 円/span> /div> div classlp-ledger-tags> span classlp-ledger-tag lp-ledger-tag--priority>未開封品とのこと/span> /div> /div> /li> li classlp-ledger-card data-ledger-entry-statusassessing> div classlp-ledger-card-body> div classlp-ledger-card-top> span classlp-ledger-card-number>116/span> span classlp-ledger-card-category>ホビー/span> /div> div classlp-ledger-card-sub> span>span classlp-ledger-label>担当/span> 貝多井/span> span>span classlp-ledger-label>査定開始/span> 15:15 span classlp-ledger-timing>9分経過/span>/span> /div> div classlp-ledger-card-meta> span classlp-ledger-card-amount>査定額 span classlp-ledger-card-amount-value>28,500/span> 円/span> /div> div classlp-ledger-tags> span classlp-ledger-tag lp-ledger-tag--bundle>付属品確認OK/span> /div> /div> /li> /ol> /div> div classlp-ledger-column data-ledger-statuspayment> div classlp-ledger-column-head> div classlp-ledger-head> span classlp-ledger-status lp-ledger-status--payment>精算待ち/span> span classlp-ledger-count data-ledger-countpayment>0/span> /div> /div> ol classlp-ledger-list> li classlp-ledger-card data-ledger-entry-statuspayment> div classlp-ledger-card-body> div classlp-ledger-card-top> span classlp-ledger-card-number>121/span> span classlp-ledger-card-category>古着/span> /div> div classlp-ledger-card-sub> span>span classlp-ledger-label>受付/span>15:44 span classlp-ledger-timing>0分前/span>/span> span>span classlp-ledger-label>更新/span>15:44 span classlp-ledger-timing>0分前/span>/span> /div> div classlp-ledger-card-meta> span classlp-ledger-card-amount>査定額 span classlp-ledger-card-amount-value>24,000/span> 円/span> /div> /div> /li> /ol> /div> /div> div classlp-ledger-legend d-flex justify-content-end> span stylecolor:#34d399;>10分以内/span> span stylecolor:#fbbf24;>30分以内/span> span stylecolor:#f43f5e;>30分以上/span> /div> /section> /div> /div>!-- row 上段 --> div classrow g-4 g-xl-5 align-items-stretch mt-lg-3> div classcol-12> section classlp-appraise-card w-100 aria-labelledbylp-appraise-preview-title> div classlp-ledger-header row align-items-center justify-content-center text-center mb-3> span classlp-ledger-badge justify-content-center text-center> i classfa-solid fa-clipboard-list>/i>査定画面(デモ) /span> /div> div classlp-appraise-topbar> div classlp-appraise-search> span classlp-search-label>リアルタイム検索br>small data-live-search-state>ON/small>/span> label classlp-switch> input typecheckbox checked data-live-search-toggle> span classlp-switch-slider>/span> /label> /div> /div> form classlp-appraise-form action# methodpost onsubmitreturn false;> div classlp-appraise-board> div classlp-board-main> div classlp-board-items data-item-container> div classlp-board-meta data-item-row> div classlp-board-grid> div classlp-board-column lp-board-column--assign> label classlp-field> span classlp-field-label>査定者/span> select namepreview_reviewer> option value>--- 査定者を選択 ---/option> option value0001>1 山田 花子/option> option value0002>2 佐藤 次郎/option> option value0003>3 鈴木 太郎/option> /select> /label> label classlp-field> span classlp-field-label>部門/span> select namepreview_department> option value>--- 部門を選択 ---/option> option valuecard>1 トレーディングカード/option> option valuefigure>2 ホビー/option> option valueluxury>3 ラグジュアリー/option> option valueswitch>4 Switchソフト/option> /select> /label> /div> div classlp-board-column lp-board-column--details> label classlp-field> span classlp-field-label idlp-appraise-preview-title>買取品名/span> div classlp-input-shell> i classfa-solid fa-magnifying-glass>/i> input typetext namepreview_item_name valueNintendo Switch(有機ELモデル) placeholder例:Apple iPhone 15 Pro 128GB(SIMフリー)> div classlp-search-suggestions data-search-suggestions>/div> /div> /label> label classlp-field> span classlp-field-label>備考欄(状態、傷、過不足など)/span> input typetext namepreview_note value動作確認OK placeholderコンディションや特記事項を入力してください。> /label> /div> div classlp-board-column lp-board-column--pricing> div classlp-price-group lp-price-group--stacked> label classlp-field lp-field--amount> span classlp-field-label>買取金額/span> div classlp-input-shell> span classlp-prefix>¥/span> input typenumber namepreview_price min0 max999999 step100 value5200 data-price-input> /div> /label> label classlp-field lp-field--quantity> span classlp-field-label>数量/span> div classlp-input-shell> input typenumber namepreview_quantity min1 max99 value1 data-quantity-input> /div> /label> /div> /div> div classlp-board-column lp-board-column--subtotal> span classlp-subtotal-label fs-5 text-end>小計/span> div classlp-subtotal> span classlp-subtotal-value> span classlp-subtotal-number data-subtotal-number>5,200/span> span classlp-subtotal-unit>円/span> /span> /div> /div> /div> /div> /div> div classlp-board-footer> /div> /div> div classlp-board-actions mt-4> button typebutton classlp-btn-primary data-add-row> i classfa-solid fa-plus>/i> 行の追加 span>(Ctrl + Enter)/span> /button> /div> div classlp-board-total> div classlp-total-display> span classlp-total-label>現在の合計/span> span classlp-total-amount> span classlp-total-number>0/span> span classlp-total-unit>円/span> /span> /div> /div> /div> /form> /section> /div> /div>!-- row 下段 --> script> document.addEventListener(DOMContentLoaded, function () { const statusButtons document.querySelectorAll(.lp-status-tag); statusButtons.forEach(function (button) { button.addEventListener(click, function () { statusButtons.forEach(function (target) { target.classList.remove(is-active); }); button.classList.add(is-active); }); }); const itemsContainer document.querySelector(data-item-container); const addRowButton document.querySelector(data-add-row); const totalNumberElement document.querySelector(.lp-total-number); const searchDebounceDelay 280; const realtimeSearchToggle document.querySelector(data-live-search-toggle); const realtimeSearchStateIndicator document.querySelector(data-live-search-state); let isRealtimeSearchEnabled realtimeSearchToggle ? realtimeSearchToggle.checked : true; const demoSearchEntries { type: catalog, tenant_abbreviation: 本店, catalog_id: 1001, item_name: Nintendo Switch(有機ELモデル) ホワイト, remarks: 新品・保証書付き, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 25000, buying_price_unopened: 32000, selling_price: 39800, brand_new_price: 44800, jancode: 4902370551325, tenant_name: KAITOOL 本店, }, { type: catalog, tenant_abbreviation: 札幌店, catalog_id: 1002, item_name: PlayStation 5 デジタル・エディション, remarks: 延長保証プランあり, category_id: 21, category_number: 021, category_name: ゲーム機, buying_price_used: 39000, buying_price_unopened: 47000, selling_price: 59800, brand_new_price: 65800, jancode: 4948872415205, tenant_name: KAITOOL 札幌店, }, { type: catalog, tenant_abbreviation: 秋葉原店, catalog_id: 1003, item_name: ポケモンカードゲーム バイオレットex BOX, remarks: 再販分 / シュリンク付き, category_id: 42, category_number: 042, category_name: トレーディングカード, buying_price_used: 10000, buying_price_unopened: 11800, selling_price: 13800, brand_new_price: 14800, jancode: 4521329346017, tenant_name: KAITOOL 秋葉原店, }, { type: catalog, tenant_abbreviation: 大阪店, catalog_id: 1004, item_name: Nintendo Switch(有機ELモデル) ホワイト, remarks: 中古極美品 / 付属品完備, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 26800, buying_price_unopened: 33500, selling_price: 40800, brand_new_price: 0, jancode: 4902370551325, tenant_name: KAITOOL 大阪店, }, { type: catalog, tenant_abbreviation: 仙台店, catalog_id: 1005, item_name: PlayStation 5 デジタル・エディション, remarks: 下取りキャンペーン対象, category_id: 21, category_number: 021, category_name: ゲーム機, buying_price_used: 38000, buying_price_unopened: 45500, selling_price: 58800, brand_new_price: 64000, jancode: 4948872415205, tenant_name: KAITOOL 仙台店, }, { type: catalog, tenant_abbreviation: 本店, catalog_id: 1101, item_name: Nintendo Switch 2 (仮称), remarks: 未発売モデル先行予約, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: null, buying_price_unopened: 45000, selling_price: 49800, brand_new_price: 0, jancode: null, tenant_name: KAITOOL 本店, }, { type: catalog, tenant_abbreviation: 大阪店, catalog_id: 1102, item_name: Nintendo Switch2 日本語・国内専用, remarks: 展示品あり/予約受付中, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: null, buying_price_unopened: 45500, selling_price: 50500, brand_new_price: 0, jancode: null, tenant_name: KAITOOL 大阪店, }, { type: catalog, tenant_abbreviation: 名古屋店, catalog_id: 1103, item_name: Nintendo Switch 2 (仮称), remarks: 事前予約済み在庫, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: null, buying_price_unopened: 44800, selling_price: 49200, brand_new_price: 0, jancode: null, tenant_name: KAITOOL 名古屋店, }, { type: catalog, tenant_abbreviation: 本店, catalog_id: 1111, item_name: Nintendo Switch バッテリー強化版, remarks: 付属品完備 / 箱あり, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 22000, buying_price_unopened: 28800, selling_price: 34800, brand_new_price: 0, jancode: 4902370542912, tenant_name: KAITOOL 本店, }, { type: catalog, tenant_abbreviation: 札幌店, catalog_id: 1112, item_name: Nintendo Switch バッテリー強化版, remarks: ストラップ欠品, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 21000, buying_price_unopened: 28000, selling_price: 33800, brand_new_price: 0, jancode: 4902370542912, tenant_name: KAITOOL 札幌店, }, { type: catalog, tenant_abbreviation: 仙台店, catalog_id: 1113, item_name: Nintendo Switch バッテリー強化版, remarks: Joy-Con新品交換済み, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 22500, buying_price_unopened: 29000, selling_price: 35200, brand_new_price: 0, jancode: 4902370542912, tenant_name: KAITOOL 仙台店, }, { type: catalog, tenant_abbreviation: 本店, catalog_id: 1121, item_name: Nintendo Switch (初期型), remarks: バッテリー劣化/本体のみ, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 16000, buying_price_unopened: null, selling_price: 25800, brand_new_price: 0, jancode: 4902370535709, tenant_name: KAITOOL 本店, }, { type: catalog, tenant_abbreviation: 大阪店, catalog_id: 1122, item_name: Nintendo Switch (初期型), remarks: 箱付き/スタンド補修あり, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 17000, buying_price_unopened: null, selling_price: 26500, brand_new_price: 0, jancode: 4902370535709, tenant_name: KAITOOL 大阪店, }, { type: catalog, tenant_abbreviation: 名古屋店, catalog_id: 1123, item_name: Nintendo Switch (初期型), remarks: 液晶保護フィルム付き, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price_used: 16800, buying_price_unopened: null, selling_price: 26200, brand_new_price: 0, jancode: 4902370535709, tenant_name: KAITOOL 名古屋店, }, { type: item, tenant_abbreviation: 本店, detail_url: #, karte_id: A-1021, item_name: ポケモンカードゲーム スカーレットex BOX, remarks: シュリンク破れなし, category_id: 42, category_number: 042, category_name: トレーディングカード, buying_price: 11200, item_pcs: 1, cancel: false, updated_date: 25/02/10, item_customer_id: 5501, tenant_name: KAITOOL 本店, }, { type: item, tenant_abbreviation: 名古屋店, detail_url: #, karte_id: B-2088, item_name: Apple iPhone 15 Pro 128GB(SIMフリー), remarks: バッテリー98% / 付属品完備, category_id: 35, category_number: 035, category_name: スマートフォン, buying_price: 128000, item_pcs: 1, cancel: false, updated_date: 25/01/22, item_customer_id: 6620, tenant_name: KAITOOL 名古屋店, }, { type: item, tenant_abbreviation: 大阪店, detail_url: #, karte_id: C-3310, item_name: レゴ アイデア 中世の鍛冶屋, remarks: 組立済み / 欠品なし, category_id: 58, category_number: 058, category_name: ホビー, buying_price: 14500, item_pcs: 1, cancel: false, updated_date: 24/12/18, item_customer_id: 4782, tenant_name: KAITOOL 大阪店, }, { type: item, tenant_abbreviation: 札幌店, detail_url: #, karte_id: D-4122, item_name: Nintendo Switch(有機ELモデル) ホワイト, remarks: Joy-Con若干の擦り傷, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 25500, item_pcs: 1, cancel: false, updated_date: 25/02/03, item_customer_id: 7120, tenant_name: KAITOOL 札幌店, }, { type: item, tenant_abbreviation: 秋葉原店, detail_url: #, karte_id: E-5099, item_name: PlayStation 5 デジタル・エディション, remarks: 買取保証延長1年付き, category_id: 21, category_number: 021, category_name: ゲーム機, buying_price: 40200, item_pcs: 1, cancel: false, updated_date: 25/01/28, item_customer_id: 7344, tenant_name: KAITOOL 秋葉原店, }, { type: item, tenant_abbreviation: 本店, detail_url: #, karte_id: F-6010, item_name: Nintendo Switch 2 (仮称), remarks: 先行体験キャンペーン応募券付き, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 52000, item_pcs: 1, cancel: false, updated_date: 25/02/14, item_customer_id: 7801, tenant_name: KAITOOL 本店, }, { type: item, tenant_abbreviation: 大阪店, detail_url: #, karte_id: F-6011, item_name: Nintendo Switch 2 (仮称), remarks: 展示機/保証残あり, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 51500, item_pcs: 1, cancel: false, updated_date: 25/02/12, item_customer_id: 7802, tenant_name: KAITOOL 大阪店, }, { type: item, tenant_abbreviation: 名古屋店, detail_url: #, karte_id: F-6012, item_name: Nintendo Switch 2 (仮称), remarks: コレクター品/未使用, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 52800, item_pcs: 1, cancel: false, updated_date: 25/02/15, item_customer_id: 7803, tenant_name: KAITOOL 名古屋店, }, { type: item, tenant_abbreviation: 本店, detail_url: #, karte_id: G-7021, item_name: Nintendo Switch バッテリー強化版, remarks: Joy-Conグリップ欠品, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 23800, item_pcs: 1, cancel: false, updated_date: 25/01/30, item_customer_id: 7850, tenant_name: KAITOOL 本店, }, { type: item, tenant_abbreviation: 札幌店, detail_url: #, karte_id: G-7022, item_name: Nintendo Switch バッテリー強化版, remarks: 本体小傷/動作良好, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 23200, item_pcs: 1, cancel: false, updated_date: 25/02/05, item_customer_id: 7851, tenant_name: KAITOOL 札幌店, }, { type: item, tenant_abbreviation: 仙台店, detail_url: #, karte_id: G-7023, item_name: Nintendo Switch バッテリー強化版, remarks: 液晶保護フィルム貼付済み, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 24000, item_pcs: 1, cancel: false, updated_date: 25/02/08, item_customer_id: 7852, tenant_name: KAITOOL 仙台店, }, { type: item, tenant_abbreviation: 本店, detail_url: #, karte_id: H-8031, item_name: Nintendo Switch (初期型), remarks: Joy-Conドリフトあり/現状渡し, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 18200, item_pcs: 1, cancel: false, updated_date: 25/01/18, item_customer_id: 7901, tenant_name: KAITOOL 本店, }, { type: item, tenant_abbreviation: 大阪店, detail_url: #, karte_id: H-8032, item_name: Nintendo Switch (初期型), remarks: バッテリー持ちやや低下, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 18800, item_pcs: 1, cancel: false, updated_date: 25/01/25, item_customer_id: 7902, tenant_name: KAITOOL 大阪店, }, { type: item, tenant_abbreviation: 名古屋店, detail_url: #, karte_id: H-8033, item_name: Nintendo Switch (初期型), remarks: ドック付属/軽度日焼けあり, category_id: 11, category_number: 011, category_name: ゲーム機, buying_price: 18500, item_pcs: 1, cancel: false, updated_date: 25/02/02, item_customer_id: 7903, tenant_name: KAITOOL 名古屋店, }, ; const demoSearchIndex demoSearchEntries.map(function (entry) { return { entry: entry, normalizedTarget: createNormalizedSearchTarget(entry), }; }); if (realtimeSearchStateIndicator) { realtimeSearchStateIndicator.textContent isRealtimeSearchEnabled ? ON : OFF; } function collapseSuggestionContainer(suggestionContainer) { if (!suggestionContainer) { return; } suggestionContainer.classList.remove(is-visible); suggestionContainer.innerHTML ; } function clearAllSuggestionPanels() { const suggestionContainers document.querySelectorAll(data-search-suggestions); suggestionContainers.forEach(function (suggestionContainer) { collapseSuggestionContainer(suggestionContainer); }); } if (realtimeSearchToggle) { realtimeSearchToggle.addEventListener(change, function () { isRealtimeSearchEnabled realtimeSearchToggle.checked; if (!isRealtimeSearchEnabled) { clearAllSuggestionPanels(); } if (realtimeSearchStateIndicator) { realtimeSearchStateIndicator.textContent isRealtimeSearchEnabled ? ON : OFF; } }); } function closeOtherSuggestionPanels(activeContainer) { const suggestionContainers document.querySelectorAll(data-search-suggestions); suggestionContainers.forEach(function (suggestionContainer) { if (suggestionContainer activeContainer) { return; } collapseSuggestionContainer(suggestionContainer); }); } document.addEventListener(click, function (event) { const isSuggestionArea event.target.closest(data-search-suggestions); const isSearchInput event.target.closest(inputnamepreview_item_name); if (isSuggestionArea || isSearchInput) { return; } clearAllSuggestionPanels(); }); function convertKatakanaToHiragana(text) { if (!text) { return ; } return text.replace(/\u30A1-\u30F6/g, function (character) { return String.fromCharCode(character.charCodeAt(0) - 0x60); }); } function normalizeForSearch(text) { if (!text) { return ; } const normalizedText text .normalize(NFKC) .replace(/\u3000/g, ) .replace(/\s+/g, ) .trim(); const hiraganaText convertKatakanaToHiragana(normalizedText); return hiraganaText.toLowerCase(); } function buildSearchTokens(text) { const normalizedText normalizeForSearch(text); if (!normalizedText) { return ; } return normalizedText.split( ).filter(function (token) { return token.length > 0; }); } function createNormalizedSearchTarget(entry) { const targetParts entry.item_name, entry.remarks, entry.category_name, entry.category_number, entry.tenant_name, entry.tenant_abbreviation, entry.jancode, ; return normalizeForSearch(targetParts.map(function (part) { return part null ? : String(part); }).join( )); } function findDemoSuggestions(keyword) { const tokens buildSearchTokens(keyword); if (!tokens.length) { return ; } const matchedEntries ; for (let recordIndex 0; recordIndex demoSearchIndex.length; recordIndex + 1) { const record demoSearchIndexrecordIndex; if (!record.normalizedTarget) { continue; } let isMatch true; let score 0; for (let tokenIndex 0; tokenIndex tokens.length; tokenIndex + 1) { const token tokenstokenIndex; const segments record.normalizedTarget.split(token); const occurrences segments.length - 1; if (occurrences 0) { isMatch false; break; } score + occurrences; } if (!isMatch) { continue; } const typePriority record.entry.type catalog ? 1 : 0; matchedEntries.push({ score: score, typePriority: typePriority, entry: record.entry, }); } matchedEntries.sort(function (first, second) { if (first.score second.score) { return second.typePriority - first.typePriority; } return second.score - first.score; }); return matchedEntries.slice(0, 8).map(function (matched) { return matched.entry; }); } function initializeLiveSearch(rowElement) { if (!rowElement) { return; } const itemNameInput rowElement.querySelector(inputnamepreview_item_name); if (!itemNameInput) { return; } let suggestionsContainer rowElement.querySelector(data-search-suggestions); if (!suggestionsContainer) { const shellElement itemNameInput.closest(.lp-input-shell); if (!shellElement) { return; } suggestionsContainer document.createElement(div); suggestionsContainer.className lp-search-suggestions; suggestionsContainer.setAttribute(data-search-suggestions, ); shellElement.appendChild(suggestionsContainer); } else { suggestionsContainer.innerHTML ; suggestionsContainer.classList.remove(is-visible); } if (rowElement.dataset.liveSearchInitialized true) { return; } rowElement.dataset.liveSearchInitialized true; let debounceTimerId null; function clearSuggestions() { collapseSuggestionContainer(suggestionsContainer); } function applySuggestion(result) { if (!result) { return; } const remarksInput rowElement.querySelector(inputnamepreview_note); const priceInput rowElement.querySelector(data-price-input); const quantityInput rowElement.querySelector(data-quantity-input); itemNameInput.value result.item_name || ; if (remarksInput && result.remarks) { remarksInput.value result.remarks; } const candidatePrices result.buying_price, result.buying_price_used, result.brand_new_price, result.selling_price; const suggestedPrice candidatePrices.find(function (priceCandidate) { return typeof priceCandidate number && !Number.isNaN(priceCandidate); }); if (priceInput && typeof suggestedPrice number) { priceInput.value suggestedPrice; } if (quantityInput && typeof result.item_pcs number && result.item_pcs > 0) { quantityInput.value result.item_pcs; } clearSuggestions(); updateTotals(); } function buildMetaParts(result) { const metaParts ; if (result.category_name) { metaParts.push(result.category_name); } if (result.tenant_name) { metaParts.push(result.tenant_name); } if (result.updated_date) { metaParts.push(更新 + result.updated_date); } return metaParts; } function extractDisplayPrice(result) { const candidatePrices result.buying_price, result.buying_price_used, result.brand_new_price, result.selling_price, ; const displayPrice candidatePrices.find(function (priceCandidate) { return typeof priceCandidate number && !Number.isNaN(priceCandidate) && priceCandidate > 0; }); return typeof displayPrice number ? displayPrice : null; } function renderSuggestions(results) { clearSuggestions(); if (!Array.isArray(results) || results.length 0) { return; } closeOtherSuggestionPanels(suggestionsContainer); results.forEach(function (result) { const suggestionButton document.createElement(button); suggestionButton.type button; suggestionButton.className lp-search-suggestion; const typeLabel result.type catalog ? カタログ : カルテ; const tenantLabel result.tenant_abbreviation || result.tenant_name || ; const badgeClass result.type item ? lp-search-suggestion__badge is-item : lp-search-suggestion__badge; const displayPrice extractDisplayPrice(result); const priceHtml displayPrice ! null ? div classlp-search-suggestion__price> + span classlp-search-suggestion__price-number> + displayPrice.toLocaleString(ja-JP) + /span> + span classlp-search-suggestion__price-unit>円/span> + /div> : ; const metaHtml buildMetaParts(result).map(function (metaPart) { return span> + metaPart + /span>; }).join(); suggestionButton.innerHTML + div classlp-search-suggestion__row> + div classlp-search-suggestion__content> + div classlp-search-suggestion__header> + span class + badgeClass + > + typeLabel + /span> + (tenantLabel ? span> + tenantLabel + /span> : ) + /div> + div classlp-search-suggestion__title> + (result.item_name || ) + /div> + (metaHtml ? div classlp-search-suggestion__meta> + metaHtml + /div> : ) + /div> + priceHtml + /div>; suggestionButton.addEventListener(mousedown, function (event) { event.preventDefault(); applySuggestion(result); }); suggestionsContainer.appendChild(suggestionButton); }); suggestionsContainer.classList.add(is-visible); } function requestSuggestions(keyword) { if (!isRealtimeSearchEnabled) { clearSuggestions(); return; } const trimmedKeyword keyword.trim(); if (!trimmedKeyword) { clearSuggestions(); return; } const suggestions findDemoSuggestions(trimmedKeyword); renderSuggestions(suggestions); } itemNameInput.addEventListener(input, function (event) { const value event.target.value; if (debounceTimerId) { clearTimeout(debounceTimerId); } if (!isRealtimeSearchEnabled) { clearSuggestions(); return; } if (!value.trim()) { clearSuggestions(); return; } debounceTimerId window.setTimeout(function () { requestSuggestions(value); }, searchDebounceDelay); }); itemNameInput.addEventListener(focus, function () { if (!isRealtimeSearchEnabled) { clearSuggestions(); return; } if (itemNameInput.value.trim()) { requestSuggestions(itemNameInput.value); } }); itemNameInput.addEventListener(blur, function () { window.setTimeout(function () { clearSuggestions(); }, 120); }); rowElement.addEventListener(keydown, function (event) { if (event.key Escape) { clearSuggestions(); } }); suggestionsContainer.addEventListener(mousedown, function (event) { event.preventDefault(); }); } function formatCurrency(value) { if (Number.isNaN(value)) { return 0; } return value.toLocaleString(ja-JP); } function clampInputValue(input) { if (!input) { return 0; } const raw parseInt(input.value, 10); const min parseInt(input.getAttribute(min), 10); const max parseInt(input.getAttribute(max), 10); let value Number.isNaN(raw) ? 0 : raw; if (!Number.isNaN(min) && value min) { value min; } if (!Number.isNaN(max) && value > max) { value max; } input.value value; return value; } function getItemRows() { if (!itemsContainer) { return ; } return Array.from(itemsContainer.querySelectorAll(data-item-row)); } function bindInputEvents(input) { if (!input) { return; } input, change, blur.forEach(function (eventName) { input.addEventListener(eventName, updateTotals); }); } function initializeRow(row, options) { if (!row) { return; } const config options || {}; if (config.resetValues) { row.removeAttribute(data-live-search-initialized); } const priceInput row.querySelector(data-price-input); const quantityInput row.querySelector(data-quantity-input); const subtotalNumber row.querySelector(data-subtotal-number); if (config.resetValues) { if (priceInput) { priceInput.value ; } if (quantityInput) { const minValue parseInt(quantityInput.getAttribute(min), 10); quantityInput.value Number.isNaN(minValue) ? 1 : minValue; } if (subtotalNumber) { subtotalNumber.textContent 0; } row.querySelectorAll(inputtypetext).forEach(function (input) { input.value ; }); row.querySelectorAll(select).forEach(function (select) { select.selectedIndex 0; }); const titleLabel row.querySelector(#lp-appraise-preview-title); if (titleLabel) { titleLabel.removeAttribute(id); } } bindInputEvents(priceInput); bindInputEvents(quantityInput); initializeLiveSearch(row); } function createRow() { const baseRow getItemRows()0; if (!baseRow) { return null; } const newRow baseRow.cloneNode(true); initializeRow(newRow, { resetValues: true }); return newRow; } function updateTotals() { let grandTotal 0; getItemRows().forEach(function (row) { const priceInput row.querySelector(data-price-input); const quantityInput row.querySelector(data-quantity-input); const subtotalNumber row.querySelector(data-subtotal-number); const price clampInputValue(priceInput); const quantity clampInputValue(quantityInput); const subtotal price * quantity; grandTotal + subtotal; if (subtotalNumber) { subtotalNumber.textContent formatCurrency(subtotal); } }); if (totalNumberElement) { totalNumberElement.textContent formatCurrency(grandTotal); } } getItemRows().forEach(function (row) { initializeRow(row); }); if (addRowButton && itemsContainer) { addRowButton.addEventListener(click, function () { const newRow createRow(); if (!newRow) { return; } itemsContainer.appendChild(newRow); updateTotals(); }); } updateTotals(); const couponButton document.querySelector(.lp-coupon-btn); if (couponButton) { couponButton.addEventListener(click, function () { const isClosed couponButton.getAttribute(data-state) ! open; couponButton.setAttribute(data-state, isClosed ? open : closed); couponButton.innerHTML isClosed ? クーポン適用中 i classfa-solid fa-angle-up>/i> : クーポン未使用 i classfa-solid fa-angle-down>/i>; }); } (function initLedgerDemo() { const columns document.querySelectorAll(.lp-ledger-column); if (!columns.length) { return; } const filterButtons document.querySelectorAll(.lp-ledger-filter-btn); const columnCountEls document.querySelectorAll(data-ledger-count); const updatedLabel document.querySelector(.js-ledger-updated); const refreshButton document.querySelector(data-ledger-refresh); function getEntries() { return Array.from(document.querySelectorAll(data-ledger-entry-status)); } function updateCounts() { const counts {}; getEntries().forEach(function (entry) { const status entry.dataset.ledgerEntryStatus; countsstatus (countsstatus || 0) + 1; }); columnCountEls.forEach(function (countEl) { const status countEl.dataset.ledgerCount; const value countsstatus || 0; countEl.textContent value; }); } function setFilter(targetStatus) { getEntries().forEach(function (entry) { const status entry.dataset.ledgerEntryStatus; const isVisible targetStatus all || status targetStatus; entry.classList.toggle(is-hidden, !isVisible); }); columns.forEach(function (column) { const status column.dataset.ledgerStatus; const shouldDim targetStatus ! all && status ! targetStatus; column.classList.toggle(is-dimmed, shouldDim); }); } function updateTimestamp() { if (!updatedLabel) { return; } const now new Date(); const hours now.getHours().toString().padStart(2, 0); const minutes now.getMinutes().toString().padStart(2, 0); const seconds now.getSeconds().toString().padStart(2, 0); updatedLabel.textContent hours + : + minutes + : + seconds; } filterButtons.forEach(function (button) { button.addEventListener(click, function () { filterButtons.forEach(function (target) { target.classList.remove(is-active); }); button.classList.add(is-active); setFilter(button.dataset.ledgerFilter || all); }); }); if (refreshButton) { refreshButton.addEventListener(click, function () { refreshButton.classList.add(is-busy); updateTimestamp(); setTimeout(function () { refreshButton.classList.remove(is-busy); }, 800); }); } updateCounts(); setFilter(all); updateTimestamp(); })(); }); /script> /div>!-- container -->/div> !-- Footer --> footer classpy-3 footer d-print-none> div classcontainer> div classrow align-items-center text-white small> div classcol-12 col-md-4 d-flex align-items-center justify-content-center justify-content-md-start text-center text-md-start> /div> div classcol-12 col-md-4 d-flex align-items-center justify-content-center text-center mt-4 mb-2 my-md-0> img src/static/assets/img/KAITOOL%E3%83%AD%E3%82%B4%E6%96%87%E5%AD%97_%E7%99%BD%E6%9E%A0.png altlogo stylewidth: 120px; height: auto;> /div> div classcol-12 col-md-4 d-flex align-items-center justify-content-center justify-content-md-end text-center text-md-end> © 2023-span idcurrent-year>/span>, MANSO Inc. /div> /div> /div> /footer> /div>script srchttps://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js integritysha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM crossoriginanonymous>/script>script srchttps://cdn.jsdelivr.net/npm/flatpickr>/script>script srchttps://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ja.js>/script>style> /* ホバー時にドロップダウンメニューを表示 */ .nav-item.dropdown:hover .dropdown-menu { display: block; margin-top: 0; /* デフォルトのアニメーションの影響をなくす */ } /* タブレット・モバイル (1368px以下) 用のドロップダウンメニュー調整 */ @media (max-width: 1368px) { .dropdown-menu .dropdown-item { font-size: 14px !important; padding: 8px 16px !important; } .dropdown-menu .dropdown-item i { font-size: 1.0em !important; } } /* タブレット・モバイル用:右からスライドインするサイドバーメニュー */ @media (max-width: 991.98px) { /* コンテナからはみ出させるためにposition調整 */ .navbar .container { position: static; } /* collapseメニューを右側固定のサイドバーに変換 */ .navbar-collapse { position: fixed !important; top: 0 !important; right: 0 !important; bottom: 0 !important; width: 280px !important; max-width: 80vw !important; height: 100vh !important; background-color: #1e3a5f !important; padding: 70px 20px 20px 20px !important; z-index: 10000 !important; overflow-y: auto !important; transform: translateX(100%) !important; transition: transform 0.3s ease-in-out !important; display: block !important; visibility: hidden; } /* メニューが開いている状態 */ .navbar-collapse.show, .navbar-collapse.collapsing { transform: translateX(0) !important; visibility: visible; } /* collapsingアニメーションの上書き */ .navbar-collapse.collapsing { height: 100vh !important; transition: transform 0.3s ease-in-out !important; } /* メニュー項目のスタイル調整 */ .navbar-collapse .navbar-nav { flex-direction: column !important; width: 100% !important; } .navbar-collapse .nav-item { width: 100% !important; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .navbar-collapse .nav-link { color: #fff !important; padding: 12px 15px !important; font-size: 14px !important; } .navbar-collapse .nav-link:hover { background-color: rgba(255, 255, 255, 0.1) !important; } /* ドロップダウンメニューをインライン展開(クリックのみで開閉) */ .navbar-collapse .dropdown-menu { position: static !important; background-color: transparent !important; border: none !important; box-shadow: none !important; padding-left: 15px !important; } /* アニメーション付きドロップダウン開閉 */ .navbar-collapse .nav-item.dropdown .dropdown-menu { display: block !important; max-height: 0; overflow: hidden; opacity: 0; transition: max-height 0.3s ease-out, opacity 0.2s ease-out; } .navbar-collapse .nav-item.dropdown.show > .dropdown-menu { max-height: 500px; opacity: 1; transition: max-height 0.4s ease-in, opacity 0.3s ease-in; } .navbar-collapse .dropdown-item { color: rgba(255, 255, 255, 0.8) !important; background-color: transparent !important; padding: 10px 15px !important; font-size: 13px !important; } .navbar-collapse .dropdown-item:hover { background-color: rgba(255, 255, 255, 0.1) !important; color: #fff !important; } /* オーバーレイ背景(メニューが開いている時) */ .navbar-collapse.show::before { content: ; position: fixed; top: 0; left: 0; right: 280px; bottom: 0; background-color: rgba(0, 0, 0, 0.5); z-index: -1; } /* 閉じるボタン用のスタイル */ .sidebar-close-btn { position: absolute; top: 15px; right: 15px; background: transparent; border: none; color: #fff; font-size: 24px; cursor: pointer; z-index: 10001; padding: 5px 10px; line-height: 1; } .sidebar-close-btn:hover { color: rgba(255, 255, 255, 0.7); } /* 売上集計のGoldアイテムのインデント調整(モバイルのみ) */ .gold-border-gradient .dropdown-item { border-left: 12px solid transparent !important; } } /* デスクトップサイズでは閉じるボタンを非表示 */ @media (min-width: 992px) { .sidebar-close-btn { display: none !important; } }/style>script>document.addEventListener(DOMContentLoaded, function() { const currentYearElement document.getElementById(current-year); // 要素が存在する場合のみ処理を行う if (currentYearElement) { currentYearElement.textContent new Date().getFullYear(); } // モバイルサイドバー内のドロップダウン処理 const mobileMediaQuery window.matchMedia((max-width: 991.98px)); let closeBtn null; let overlayClickHandler null; // ドロップダウンのクリックハンドラー function dropdownClickHandler(e) { // タブレット・モバイルサイズのときのみ処理 if (!mobileMediaQuery.matches) return; e.preventDefault(); e.stopPropagation(); const parentDropdown this.closest(.dropdown); const dropdownMenu parentDropdown.querySelector(.dropdown-menu); const isCurrentlyOpen parentDropdown.classList.contains(show); // 他のすべてのドロップダウンを閉じる document.querySelectorAll(.navbar-collapse .dropdown.show).forEach(function(openDropdown) { if (openDropdown ! parentDropdown) { openDropdown.classList.remove(show); openDropdown.querySelector(.dropdown-menu).classList.remove(show); } }); // 現在のドロップダウンをトグル if (isCurrentlyOpen) { parentDropdown.classList.remove(show); dropdownMenu.classList.remove(show); } else { parentDropdown.classList.add(show); dropdownMenu.classList.add(show); } } // モバイルサイドバーのセットアップ function setupMobileSidebar() { const navbarCollapse document.getElementById(navbarResponsive); if (!navbarCollapse) return; // 閉じるボタンがまだ存在しない場合のみ作成 if (!closeBtn) { closeBtn document.createElement(button); closeBtn.type button; closeBtn.className sidebar-close-btn; closeBtn.innerHTML ✕; closeBtn.setAttribute(aria-label, メニューを閉じる); navbarCollapse.insertBefore(closeBtn, navbarCollapse.firstChild); // 閉じるボタンのクリックイベント closeBtn.addEventListener(click, function() { const bsCollapse bootstrap.Collapse.getInstance(navbarCollapse); if (bsCollapse) { bsCollapse.hide(); } else { navbarCollapse.classList.remove(show); } }); } // オーバーレイ部分(メニュー外)をクリックしても閉じる if (!overlayClickHandler) { overlayClickHandler function(e) { if (navbarCollapse.classList.contains(show)) { // メニュー内部やトグルボタンをクリックした場合は閉じない if (!navbarCollapse.contains(e.target) && !e.target.closest(.navbar-toggler)) { const bsCollapse bootstrap.Collapse.getInstance(navbarCollapse); if (bsCollapse) { bsCollapse.hide(); } else { navbarCollapse.classList.remove(show); } } } }; document.addEventListener(click, overlayClickHandler); } } // ドロップダウンのイベントリスナーを追加(常に追加、条件判定はハンドラー内で) const dropdownToggles document.querySelectorAll(.navbar-collapse .dropdown-toggle); dropdownToggles.forEach(function(toggle) { toggle.addEventListener(click, dropdownClickHandler); }); // 初回判定でモバイルサイズならセットアップ if (mobileMediaQuery.matches) { setupMobileSidebar(); } // 画面サイズ変更時にモバイルサイドバーのセットアップを行う mobileMediaQuery.addEventListener(change, function(e) { if (e.matches) { setupMobileSidebar(); } });});document.addEventListener(DOMContentLoaded, function() { var lastScrollTop 0; var navbar document.querySelector(.navbar); window.addEventListener(scroll, function() { // モバイルデバイスのブレークポイントをチェック if(window.matchMedia((max-width: 1200px)).matches) { var currentScrollTop window.pageYOffset || document.documentElement.scrollTop; if (currentScrollTop > lastScrollTop) { // 下にスクロールした場合、ナビバーを隠す navbar.style.top -70px; // ナビバーの高さに応じて調整 } else { // 上にスクロールした場合、ナビバーを表示 navbar.style.top 0px; } lastScrollTop currentScrollTop 0 ? 0 : currentScrollTop; // ネガティブなスクロール値を防ぐ } }, false);});document.addEventListener(DOMContentLoaded, function() { const navbar document.querySelector(.navbar); const footer document.querySelector(.footer); const currentUrl window.location.href; // navbarとfooterが存在するか確認 if (navbar && footer) { // URLに基づいてスタイルを変更する if (currentUrl.includes(localhost)) { navbar.style.background linear-gradient(to bottom, #EA6000 0 4px, #0B346E 4px 100%); footer.style.backgroundColor #0B346E; } else { // デフォルトのスタイル navbar.style.backgroundColor #0B346E; footer.style.backgroundColor #0B346E; } }});document.addEventListener(DOMContentLoaded, function () { // 販売済のメニューを取得 let dropdown document.querySelector(.nav-item.dropdown); if (dropdown) { // 要素が存在する場合のみ実行 // ホバー時にドロップダウンを開く dropdown.addEventListener(mouseenter, function () { let dropdownMenu this.querySelector(.dropdown-menu); if (dropdownMenu) { dropdownMenu.classList.add(show); } }); // マウスが外れたらドロップダウンを閉じる dropdown.addEventListener(mouseleave, function () { let dropdownMenu this.querySelector(.dropdown-menu); if (dropdownMenu) { dropdownMenu.classList.remove(show); } }); }});/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]