* {
    font-family: 'Noto Sans JP', sans-serif!important;
}
:root {
    --cp-bg: #070b17;
    --cp-bg-deep: #03050b;
    --cp-panel: rgba(11, 20, 41, 0.92);
    --cp-panel-strong: rgba(10, 18, 35, 0.94);
    --cp-panel-soft: rgba(17, 30, 56, 0.7);
    --cp-line: rgba(96, 249, 255, 0.26);
    --cp-line-strong: rgba(255, 74, 196, 0.45);
    --cp-text: #d9f6ff;
    --cp-text-soft: #8db4cb;
    --cp-accent: #61f9ff;
    --cp-accent-2: #ff4ac4;
    --cp-accent-3: #ffe45c;
    --cp-success: #5df2b6;
    --cp-danger: #ff667d;
    --cp-shadow: 0 0 24px rgba(97, 249, 255, 0.18);
    --cp-shadow-strong: 0 0 36px rgba(255, 74, 196, 0.22);
    color-scheme: dark;
}
html[data-bs-theme='light'] {
    --cp-bg: #edf6ff;
    --cp-bg-deep: #d8ecff;
    --cp-panel: rgba(255, 255, 255, 0.9);
    --cp-panel-strong: rgba(255, 255, 255, 0.96);
    --cp-panel-soft: rgba(231, 243, 255, 0.92);
    --cp-line: rgba(18, 145, 196, 0.24);
    --cp-line-strong: rgba(215, 63, 161, 0.3);
    --cp-text: #0c1630;
    --cp-text-soft: #45627f;
    --cp-accent: #008fd6;
    --cp-accent-2: #d93a98;
    --cp-accent-3: #b88a00;
    --cp-success: #0f9f74;
    --cp-danger: #cc3958;
    --cp-shadow: 0 12px 28px rgba(22, 93, 140, 0.12);
    --cp-shadow-strong: 0 16px 36px rgba(217, 58, 152, 0.14);
    color-scheme: light;
}
html {
    min-height: 100%;
    background:
        radial-gradient(circle at top left, rgba(97, 249, 255, 0.18), transparent 28%),
        radial-gradient(circle at top right, rgba(255, 74, 196, 0.16), transparent 26%),
        linear-gradient(135deg, #04070f 0%, #091120 44%, #03060d 100%);
}
html[data-bs-theme='light'] {
    background:
        radial-gradient(circle at top left, rgba(0, 143, 214, 0.14), transparent 30%),
        radial-gradient(circle at top right, rgba(217, 58, 152, 0.12), transparent 28%),
        linear-gradient(135deg, #f7fbff 0%, #e2f1ff 46%, #f9fcff 100%);
}
body.app-shell {
    min-height: 100vh;
    color: var(--cp-text);
    background:
        linear-gradient(rgba(4, 8, 18, 0.84), rgba(4, 8, 18, 0.92)),
        repeating-linear-gradient(90deg, rgba(97, 249, 255, 0.04) 0, rgba(97, 249, 255, 0.04) 1px, transparent 1px, transparent 120px),
        repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.025) 0, rgba(255, 255, 255, 0.025) 1px, transparent 1px, transparent 96px);
    position: relative;
}
html[data-bs-theme='light'] body.app-shell {
    background:
        linear-gradient(rgba(245, 251, 255, 0.88), rgba(233, 245, 255, 0.92)),
        repeating-linear-gradient(90deg, rgba(0, 143, 214, 0.045) 0, rgba(0, 143, 214, 0.045) 1px, transparent 1px, transparent 120px),
        repeating-linear-gradient(0deg, rgba(12, 22, 48, 0.03) 0, rgba(12, 22, 48, 0.03) 1px, transparent 1px, transparent 96px);
}
body.app-shell::before,
body.app-shell::after {
    content: '';
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: -1;
}
body.app-shell::before {
    background:
        radial-gradient(circle at 18% 16%, rgba(97, 249, 255, 0.16), transparent 24%),
        radial-gradient(circle at 82% 10%, rgba(255, 74, 196, 0.14), transparent 22%),
        radial-gradient(circle at 50% 100%, rgba(117, 83, 255, 0.12), transparent 30%);
    filter: blur(12px);
}
html[data-bs-theme='light'] body.app-shell::before {
    background:
        radial-gradient(circle at 18% 16%, rgba(0, 143, 214, 0.14), transparent 24%),
        radial-gradient(circle at 82% 10%, rgba(217, 58, 152, 0.12), transparent 22%),
        radial-gradient(circle at 50% 100%, rgba(90, 128, 255, 0.1), transparent 30%);
}
body.app-shell::after {
    background: linear-gradient(transparent 0%, rgba(97, 249, 255, 0.03) 48%, transparent 100%);
    opacity: 0.6;
}
html[data-bs-theme='light'] body.app-shell::after {
    background: linear-gradient(transparent 0%, rgba(0, 143, 214, 0.03) 48%, transparent 100%);
}
a {
    color: var(--cp-accent);
    transition: color .2s ease, text-shadow .2s ease;
}
a:hover {
    color: #b3fcff;
    text-shadow: 0 0 12px rgba(97, 249, 255, 0.45);
}
.app-content {
    position: relative;
}
.app-navbar {
    background: linear-gradient(135deg, rgba(8, 16, 32, 0.96), rgba(11, 24, 47, 0.88))!important;
    border-color: var(--cp-line)!important;
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.28), 0 0 0 1px rgba(97, 249, 255, 0.08), var(--cp-shadow);
    backdrop-filter: blur(18px);
}
html[data-bs-theme='light'] .app-navbar {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(240, 248, 255, 0.92))!important;
    border-color: rgba(18, 145, 196, 0.18)!important;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 143, 214, 0.08);
}
.app-brand img {
    filter: drop-shadow(0 0 14px rgba(97, 249, 255, 0.45));
}
html[data-bs-theme='light'] .app-brand img {
    filter: drop-shadow(0 0 8px rgba(0, 143, 214, 0.2));
}
.theme-switcher {
    color: var(--cp-text);
    border-radius: 999px;
    transition: transform .2s ease, color .2s ease, text-shadow .2s ease;
}
.theme-switcher:hover {
    color: var(--cp-accent);
    transform: translateY(-1px);
    text-shadow: 0 0 16px rgba(97, 249, 255, 0.45);
}
html[data-bs-theme='light'] #btn-nightSwitcher,
html[data-bs-theme='dark'] #btn-sunSwitcher {
    display: none;
}
html[data-bs-theme='light'] .theme-switcher {
    color: var(--cp-accent);
}
html[data-bs-theme='light'] .theme-switcher:hover {
    text-shadow: 0 0 16px rgba(0, 143, 214, 0.3);
}
.user-menu-trigger,
.btn.btn-secondary,
.btn.btn-primary,
.btn.btn-success,
.btn.btn-danger,
.btn.btn-light {
    border: 1px solid rgba(97, 249, 255, 0.24);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04), 0 0 18px rgba(97, 249, 255, 0.08);
}
html[data-bs-theme='light'] .user-menu-trigger,
html[data-bs-theme='light'] .btn.btn-secondary,
html[data-bs-theme='light'] .btn.btn-primary,
html[data-bs-theme='light'] .btn.btn-success,
html[data-bs-theme='light'] .btn.btn-danger,
html[data-bs-theme='light'] .btn.btn-light {
    border: 1px solid rgba(0, 143, 214, 0.2);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.btn {
    border-radius: 12px;
}
.btn.btn-secondary {
    background: linear-gradient(135deg, rgba(18, 34, 68, 0.9), rgba(13, 20, 38, 0.96));
    color: var(--cp-text);
}
html[data-bs-theme='light'] .btn.btn-secondary {
    background: linear-gradient(135deg, rgba(240, 248, 255, 0.94), rgba(210, 229, 248, 0.96));
}
.btn.btn-primary {
    background: linear-gradient(135deg, rgba(33, 199, 255, 0.85), rgba(86, 87, 255, 0.82));
    border-color: rgba(97, 249, 255, 0.5);
}
.btn.btn-success {
    background: linear-gradient(135deg, rgba(49, 224, 171, 0.86), rgba(29, 127, 117, 0.9));
    border-color: rgba(93, 242, 182, 0.45);
}
.btn.btn-danger {
    background: linear-gradient(135deg, rgba(255, 95, 134, 0.9), rgba(152, 34, 72, 0.95));
    border-color: rgba(255, 102, 125, 0.45);
}
.btn.btn-light {
    background: linear-gradient(135deg, rgba(228, 238, 255, 0.92), rgba(171, 197, 227, 0.92));
    color: #091120;
    border-color: rgba(255, 255, 255, 0.45);
}
.btn:hover {
    transform: translateY(-1px);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06), 0 0 22px rgba(97, 249, 255, 0.16);
}
.app-navbar-toggler {
    border-color: rgba(97, 249, 255, 0.35);
    box-shadow: 0 0 16px rgba(97, 249, 255, 0.12);
}
html[data-bs-theme='light'] .app-navbar-toggler {
    border-color: rgba(0, 143, 214, 0.3);
    box-shadow: 0 0 8px rgba(0, 143, 214, 0.08);
}
.app-navbar-toggler .navbar-toggler-icon {
    filter: invert(1) brightness(1.6);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.app-sidebar {
    background:
        linear-gradient(180deg, rgba(7, 14, 28, 0.94), rgba(5, 10, 19, 0.94))!important;
    border-color: var(--cp-line)!important;
    box-shadow: inset -1px 0 0 rgba(97, 249, 255, 0.12);
    backdrop-filter: blur(18px);
}
html[data-bs-theme='light'] .app-sidebar {
    background:
        linear-gradient(180deg, rgba(244, 250, 255, 0.98), rgba(228, 240, 252, 0.98))!important;
    border-color: rgba(18, 145, 196, 0.18)!important;
    box-shadow: inset -1px 0 0 rgba(0, 143, 214, 0.1);
}
.sidebar .sticky-top {
    min-height: 100%;
    background:
        linear-gradient(180deg, rgba(97, 249, 255, 0.05), transparent 22%),
        linear-gradient(180deg, transparent, rgba(255, 74, 196, 0.06));
}
html[data-bs-theme='light'] .sidebar .sticky-top {
    background:
        linear-gradient(180deg, rgba(0, 143, 214, 0.04), transparent 22%),
        linear-gradient(180deg, transparent, rgba(217, 58, 152, 0.04));
}
.nav-item {
    margin-bottom: 0.35rem;
}
.nav-link {
    position: relative;
    margin: 0 0.75rem;
    padding: 0.8rem 1rem;
    border: 1px solid transparent;
    border-radius: 14px;
    color: var(--cp-text-soft);
    letter-spacing: 0.03em;
    transition: color .2s ease, border-color .2s ease, background-color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.nav-link svg {
    color: var(--cp-accent);
    filter: drop-shadow(0 0 10px rgba(97, 249, 255, 0.22));
}
html[data-bs-theme='light'] .nav-link svg {
    filter: drop-shadow(0 0 8px rgba(0, 143, 214, 0.16));
}
.nav-link:hover,
.nav-link:focus {
    color: var(--cp-text);
    background: linear-gradient(135deg, rgba(97, 249, 255, 0.08), rgba(255, 74, 196, 0.08));
    border-color: rgba(97, 249, 255, 0.22);
    box-shadow: var(--cp-shadow);
    transform: translateX(4px);
}
html[data-bs-theme='light'] .nav-link:hover,
html[data-bs-theme='light'] .nav-link:focus {
    background: linear-gradient(135deg, rgba(0, 143, 214, 0.08), rgba(217, 58, 152, 0.06));
}
.nav-item.ms-2 .nav-link {
    padding-left: 1.4rem;
    font-size: 0.96rem;
}
.nav-item ul {
    list-style: none;
    margin-block-start: 0;
    margin-block-end: 0;
    padding-inline-start: 0;
    visibility: hidden;
    opacity: 0;
    z-index: 10;
    position: fixed;
}
.nav-item ul {
    border-radius: 16px;
    overflow: hidden;
}
.navbar:before, .navbar:after {
    content: " ";
    display: table;
}
.nav-item > ul {
    width: 150px;
    float: left;
}
.nav-item > ul {
    position: absolute;
    top: 40px;
    width: 200px;
    background: linear-gradient(180deg, rgba(11, 20, 41, 0.96), rgba(7, 13, 25, 0.96));
    border: 1px solid rgba(97, 249, 255, 0.2);
    box-shadow: 0 14px 26px rgba(0, 0, 0, 0.28), var(--cp-shadow);
    -webkit-transition: all .2s ease;
    transition: all .2s ease;
}
.nav-item > ul > li:hover {
    background: rgba(97, 249, 255, 0.08);
}
.nav-item:hover > ul {
    top: 50px;
    visibility: visible;
    opacity: 1;
}
.fs-7 {
    font-size: calc(.7em + .3vw)!important;
}
.main-title {
    padding: 0.7em 0.9em;
    color: var(--cp-text);
    background: linear-gradient(90deg, rgba(97, 249, 255, 0.12), rgba(255, 74, 196, 0.08));
    border-left: solid 5px var(--cp-accent);
    border-bottom: solid 1px rgba(255, 74, 196, 0.3);
    box-shadow: inset 0 0 0 1px rgba(97, 249, 255, 0.08), var(--cp-shadow);
    border-radius: 0 14px 14px 0;
    margin: 20px 0;
}
.neon-yellow {
    color: #fff6b1;
    filter:
        drop-shadow(0 0 1rem rgba(255, 255, 255, 0.8))
        drop-shadow(0 0 0.2rem rgba(255, 230, 92, 0.9))
        drop-shadow(0 0 0.4rem rgba(255, 193, 7, 0.75));
}
.switch-off {
    display: none;
}
#numpad {
    touch-action: manipulation;
}
.app-main {
    position: relative;
    padding-bottom: 2rem;
}
.app-main > *:not(script) {
    position: relative;
    z-index: 1;
}
.card,
.modal-content,
.toast,
.dropdown-menu,
.alert,
main .table-responsive,
main .list-group,
main .accordion,
main .ck-editor,
main .ck-toolbar,
main .ck-editor__main,
main .pagination,
main .content-box {
    background: var(--cp-panel);
    border: 1px solid rgba(97, 249, 255, 0.14)!important;
    box-shadow: 0 14px 32px rgba(0, 0, 0, 0.24), var(--cp-shadow);
    backdrop-filter: blur(18px);
}
.dropdown-menu,
.modal-content,
.toast {
    background: var(--cp-panel-strong);
}
.dropdown-item {
    color: var(--cp-text-soft);
}
.dropdown-item:hover,
.dropdown-item:focus {
    color: var(--cp-text);
    background: linear-gradient(90deg, rgba(97, 249, 255, 0.12), rgba(255, 74, 196, 0.1));
}
.table {
    --bs-table-color: var(--cp-text);
    --bs-table-bg: transparent;
    --bs-table-striped-bg: rgba(97, 249, 255, 0.04);
    --bs-table-hover-bg: rgba(255, 74, 196, 0.07);
    --bs-table-border-color: rgba(97, 249, 255, 0.14);
}
.table thead th {
    color: #9ffcff;
    border-bottom-color: rgba(97, 249, 255, 0.26);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.82rem;
}
.form-control,
.form-select,
.input-group-text {
    background-color: rgba(5, 12, 24, 0.88);
    border: 1px solid rgba(97, 249, 255, 0.18);
    color: var(--cp-text);
    box-shadow: inset 0 0 18px rgba(97, 249, 255, 0.04);
}
.form-control:focus,
.form-select:focus {
    background-color: rgba(8, 16, 32, 0.96);
    color: var(--cp-text);
    border-color: rgba(97, 249, 255, 0.42);
    box-shadow: 0 0 0 0.2rem rgba(97, 249, 255, 0.14), 0 0 18px rgba(97, 249, 255, 0.12);
}
.form-control::placeholder {
    color: rgba(141, 180, 203, 0.6);
}
html[data-bs-theme='light'] .form-control,
html[data-bs-theme='light'] .form-select,
html[data-bs-theme='light'] .input-group-text {
    background-color: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(18, 145, 196, 0.22);
    color: var(--cp-text);
    box-shadow: inset 0 0 12px rgba(0, 143, 214, 0.04);
}
html[data-bs-theme='light'] .form-control:focus,
html[data-bs-theme='light'] .form-select:focus {
    background-color: #fff;
    border-color: rgba(0, 143, 214, 0.45);
}
html[data-bs-theme='light'] .form-control::placeholder {
    color: rgba(69, 98, 127, 0.6);
}
.alert {
    color: var(--cp-text);
}
.alert-success {
    background: linear-gradient(135deg, rgba(27, 118, 95, 0.78), rgba(13, 43, 52, 0.88));
    border-color: rgba(93, 242, 182, 0.32)!important;
}
.alert-danger {
    background: linear-gradient(135deg, rgba(124, 31, 57, 0.8), rgba(49, 13, 24, 0.9));
    border-color: rgba(255, 102, 125, 0.34)!important;
}
.app-footer {
    color: var(--cp-text-soft);
    border-top: 1px solid rgba(97, 249, 255, 0.12);
    background: linear-gradient(180deg, transparent, rgba(7, 14, 28, 0.48));
}
.app-footer a {
    color: #b3fcff;
}
.modal-header,
.modal-footer {
    border-color: rgba(97, 249, 255, 0.14);
}
.btn-close {
    filter: invert(1) brightness(1.4);
}
.small_logo {
    width: 16px;
    height: 16px;
    margin-right: 6px;
}
img.preview {
    width: 100px;
    height: 100px;
}
img.preview:before {
    content: '';
    background-image: url('/img/noimage.png');
    background-size: contain;
    position: absolute;
    width: 100px;
    height: 100px;
}
.required:before {
    content: '*';
    color: var(--bs-danger);
    font-weight: bold;
}
.ck.ck-toolbar,
.ck.ck-editor__main > .ck-editor__editable,
.ck.ck-content {
    background: rgba(8, 16, 32, 0.94)!important;
    color: var(--cp-text)!important;
    border-color: rgba(97, 249, 255, 0.16)!important;
}
.ck.ck-button,
.ck.ck-button .ck-button__label {
    color: var(--cp-text-soft)!important;
}
.ck.ck-button:hover {
    background: rgba(97, 249, 255, 0.08)!important;
}
.webapp {
    display: none;
}
@media (display-mode: standalone) {
    .webapp {
        display: block!important;
    }
}
/* ──────── スマホ共通 ──────── */
@media (max-width: 767px) {
    /* サイドバー：ドキュメントフローから切り離してオーバーレイ */
    .app-sidebar {
        box-shadow: 0 24px 40px rgba(0, 0, 0, 0.32);
    }
    #sidebar.show {
        position: fixed !important;
        top: 55px;
        left: 0;
        right: 0;
        width: 100% !important;
        max-width: 100% !important;
        z-index: 1040;
        max-height: calc(100vh - 55px);
        overflow-y: auto;
    }
    .nav-link {
        margin: 0 0.5rem;
    }

    /* ナビバー：グリッドレイアウトで [ハンバーガー | ロゴ中央 | アイコン] */
    .app-navbar .d-flex.col-12 {
        display: grid !important;
        grid-template-columns: auto 1fr auto;
        align-items: center;
        flex-wrap: nowrap !important;
    }
    /* ハンバーガーを1列目（左） */
    .app-navbar-toggler {
        grid-column: 1;
        grid-row: 1;
        margin: 0 !important;
        order: unset !important;
    }
    /* ロゴを2列目（中央） */
    .app-brand {
        grid-column: 2;
        grid-row: 1;
        text-align: center;
        margin: 0 auto !important;
    }
    /* テーマ切り替え等を3列目（右） */
    .app-navbar .col-md-5.d-flex {
        grid-column: 3;
        grid-row: 1;
        justify-content: flex-end;
    }
    /* テーマボタン周りの余分なスペースをリセット */
    .app-navbar .col-md-5 > div:first-child {
        margin-left: 0 !important;
        padding-left: 0 !important;
    }
    /* d-none d-md-block の空divはグリッドに影響させない */
    .app-navbar .col-md-4 {
        display: none !important;
    }
}

/* ライトモード：ハンバーガーアイコンを暗くする */
html[data-bs-theme='light'] .app-navbar-toggler .navbar-toggler-icon {
    filter: invert(0) brightness(0.2);
}
