/* /Components/Layout/CallOverlay.razor.rz.scp.css */
.call-overlay[b-lg4kfs04we] {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(0, 0, 0, 0.55);
}

.call-card[b-lg4kfs04we] {
    background-color: #fff;
    border-radius: 0.75rem;
    padding: 2rem;
    min-width: 16rem;
    text-align: center;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
}

.call-name[b-lg4kfs04we] {
    font-size: 1.25rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.call-status[b-lg4kfs04we] {
    color: #6c757d;
    margin-bottom: 1.5rem;
}

.call-error[b-lg4kfs04we] {
    color: #dc3545;
    font-size: 0.875rem;
    margin-bottom: 1rem;
}

.call-actions[b-lg4kfs04we] {
    display: flex;
    gap: 0.75rem;
    justify-content: center;
}

.call-hangup[b-lg4kfs04we] {
    min-width: 8rem;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* ========== ページ全体のシェル ==========
   position:sticky はこのアプリではスクロールコンテナがflexサイズの場合に
   信頼できない挙動になることが分かっている（Webmailで実証済み）。代わりに
   シェル全体を固定高さのflex columnにし、上部バーはflex-shrink:0の通常配置、
   実際にスクロールするのは.wg-contentだけにする。 */
.wg-shell[b-ee2iw9q6zg] {
    display: flex;
    flex-direction: column;
    height: 100dvh;
}

.wg-content[b-ee2iw9q6zg] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
    min-height: 0;
    overflow-y: auto;
    /* overflow-x:hiddenをここに追加して試したが（Home.razorの通知チップ行の
       横あふれ対策として）、この要素は縦方向の-webkit-overflow-scrolling:
       touchを持つ実質的なページビューポートであり、ここにoverflow-x:hidden
       を重ねると実機iOS Safariで子要素(.notify-scroll)自身の横スワイプが
       効かなくなる副作用が疑われたため撤回した（tomova_home_summary_scroll_fix.md
       のチェックリストが指摘する「親要素のoverflow:hiddenが子の横スクロールを
       殺す」パターンに一致・08-18）。横あふれの対策は個々のページ側
       （Home.razor.cssの.notify-scroll）で行う。 */
    /* iOS Safari/Chrome-iOS sometimes won't engage touch/momentum scrolling
       on a nested overflow:auto container without this — seen on Schedule's
       mobile day-agenda panel (confirmed on a real iPhone, 2026-08-06). */
    -webkit-overflow-scrolling: touch;
    /* Stop this container's own scroll from chaining to the document/body if
       it ever bottoms out — pairs with the same overscroll-behavior on inner
       page-owned scroll regions (e.g. Chat's .chat-messages). */
    overscroll-behavior-y: contain;
    /* Tomova Office warm greige desktop — content cards (white, bordered)
       sit on top of this. */
    background-color: var(--bg, #F0EDE8);
}

.wg-article[b-ee2iw9q6zg] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    padding-top: 1.1rem;
}

/* スマホ幅ではBootstrapのpx-3(1rem)固定だった左右余白を最小限まで詰める
   （画面が小さいほど余白のコストが高いため／08-17）。px-md-4は維持し、
   タブレット以上の見た目は変えない。 */
@media (max-width: 767.98px) {
    .wg-article[b-ee2iw9q6zg] {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}

/* ========== 上部バー ========== */
/* Tomova Office navy toolbar. */
.wg-topbar[b-ee2iw9q6zg] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    height: 4.9rem;
    flex-shrink: 0;
    padding: 0 1rem;
    background-color: var(--dark, #16213E);
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    border-bottom: 1px solid rgba(0, 0, 0, 0.3);
    color: #fff;
}

/* スマホ幅ではPCナビ(.wg-topnav)も設定歯車(.wg-settings-menu)もd-none d-md-*で
   隠れ、中身はロゴ＋アバターだけになるのに、高さはPCの4.9rem固定のまま
   だったため無駄に大きかった。tomova_home_mobile_brushup.htmlの.topnav
   (padding:9px 14px、height指定なし＝中身に合わせて自動)に合わせる
   （実機確認・08-18）。 */
@media (max-width: 767.98px) {
    .wg-topbar[b-ee2iw9q6zg] {
        height: auto;
        padding: 0.5625rem 0.875rem;
    }
}

.wg-brand[b-ee2iw9q6zg] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
    margin-right: 0.25rem;
}

.wg-brand-text[b-ee2iw9q6zg] {
    font-family: 'Montserrat', 'Noto Sans JP', sans-serif;
    font-size: 1rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    color: #fff;
}

.wg-brand-sub[b-ee2iw9q6zg] {
    font-size: 0.65rem;
    color: rgba(255, 255, 255, 0.4);
    letter-spacing: 0.06em;
    margin-left: 0.1rem;
}

.wg-topbar-spacer[b-ee2iw9q6zg] {
    flex: 1;
}

/* ========== PC用上部アイコンナビ ========== */
.wg-topnav[b-ee2iw9q6zg] {
    align-items: stretch;
    margin-left: 1rem;
    gap: 0.15rem;
    overflow-x: auto;
}

.wg-topbar[b-ee2iw9q6zg]  .top-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0.9rem 0.45rem 0.5rem;
    min-width: 3.8rem;
    height: 4.9rem;
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    border-bottom: 3px solid transparent;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    white-space: nowrap;
}

.wg-topbar[b-ee2iw9q6zg]  .top-nav-item:hover {
    background: rgba(255, 255, 255, 0.07);
    color: #fff;
}

.wg-topbar[b-ee2iw9q6zg]  .top-nav-active {
    color: #fff !important;
    border-bottom-color: var(--blue, #2B5797);
    background: rgba(43, 87, 151, 0.15);
}

.wg-topbar[b-ee2iw9q6zg]  .top-nav-icon-wrap {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.wg-topbar[b-ee2iw9q6zg]  .top-nav-icon-wrap .nav-icon {
    width: 1.45rem;
    height: 1.45rem;
    background-color: currentColor;
}

.wg-topbar[b-ee2iw9q6zg]  .top-nav-label {
    font-size: 0.72rem;
    margin-top: 0.2rem;
    letter-spacing: 0.02em;
}

/* ========== 設定メニュー（歯車） / ユーザーメニュー ========== */
.wg-settings-menu[b-ee2iw9q6zg],
.wg-user-menu[b-ee2iw9q6zg] {
    position: relative;
}

.wg-settings-menu summary[b-ee2iw9q6zg],
.wg-user-menu summary[b-ee2iw9q6zg] {
    list-style: none;
    cursor: pointer;
}

.wg-settings-menu summary[b-ee2iw9q6zg]::-webkit-details-marker,
.wg-user-menu summary[b-ee2iw9q6zg]::-webkit-details-marker {
    display: none;
}

.wg-icon-toggle[b-ee2iw9q6zg] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 6px;
    color: #fff;
}

.wg-icon-toggle:hover[b-ee2iw9q6zg] {
    background: rgba(255, 255, 255, 0.12);
}

.wg-user-toggle[b-ee2iw9q6zg] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.4rem;
    border-radius: 6px;
}

.wg-user-toggle:hover[b-ee2iw9q6zg] {
    background: rgba(255, 255, 255, 0.12);
}

.wg-avatar[b-ee2iw9q6zg] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.9rem;
    height: 1.9rem;
    border-radius: 50%;
    background: var(--blue, #2B5797);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 700;
    flex-shrink: 0;
}

.wg-username[b-ee2iw9q6zg] {
    color: #fff;
    font-size: 0.85rem;
}

.wg-user-dropdown[b-ee2iw9q6zg] {
    position: absolute;
    top: calc(100% + 0.5rem);
    right: 0;
    min-width: 12rem;
    background: #fff;
    color: #212121;
    border-radius: 8px;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.25);
    padding: 0.5rem 0;
    z-index: 200;
}

.wg-user-dropdown-name[b-ee2iw9q6zg] {
    padding: 0.4rem 1rem;
    font-weight: 700;
    font-size: 0.9rem;
}

.wg-user-dropdown-item[b-ee2iw9q6zg] {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.5rem 1rem;
    color: #212121;
    text-decoration: none;
    background: none;
    border: none;
    font-size: 0.9rem;
}

.wg-user-dropdown-item:hover[b-ee2iw9q6zg] {
    background: #f0f2f5;
}

.wg-user-dropdown-logout[b-ee2iw9q6zg] {
    color: #c62828;
}

.wg-user-dropdown hr[b-ee2iw9q6zg] {
    margin: 0.25rem 0;
}

/* ========== アイコン（マスク画像でカレントカラーに追従） ========== */
.wg-topbar[b-ee2iw9q6zg]  .nav-icon,
.wg-shell[b-ee2iw9q6zg]  .nav-icon {
    display: inline-block;
    width: 1.3rem;
    height: 1.3rem;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-home {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-schedule {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='4' y='0' width='1.6' height='3.4' rx='0.8'/%3E%3Crect x='10.4' y='0' width='1.6' height='3.4' rx='0.8'/%3E%3Crect x='1' y='2.6' width='14' height='2.6' rx='1.2'/%3E%3Crect x='1' y='6' width='14' height='9' rx='1.5'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='4' y='0' width='1.6' height='3.4' rx='0.8'/%3E%3Crect x='10.4' y='0' width='1.6' height='3.4' rx='0.8'/%3E%3Crect x='1' y='2.6' width='14' height='2.6' rx='1.2'/%3E%3Crect x='1' y='6' width='14' height='9' rx='1.5'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-todo {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5z'/%3E%3Cpath d='m8.354 10.354 7-7a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5z'/%3E%3Cpath d='m8.354 10.354 7-7a.5.5 0 0 0-.708-.708L8 9.293 5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-chat {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-mail {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586zm3.436-.586L16 11.801V4.697z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.05 3.555A2 2 0 0 1 2 2h12a2 2 0 0 1 1.95 1.555L8 8.414zM0 4.697v7.104l5.803-3.558zM6.761 8.83l-6.57 4.027A2 2 0 0 0 2 14h12a2 2 0 0 0 1.808-1.144l-6.57-4.027L8 9.586zm3.436-.586L16 11.801V4.697z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-webmail {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855A8 8 0 0 0 5.145 4H7.5zM4.09 4a9.3 9.3 0 0 1 .64-1.539 7 7 0 0 1 .597-.933A7.03 7.03 0 0 0 2.255 4zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.96 6.96 0 0 0-.656 2.5zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5zM8.5 5v2.5h2.99a12.5 12.5 0 0 0-.337-2.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5v-2.5zm3.99 0v2.5h2.653c.187-.765.306-1.608.338-2.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12zm.182 2.472a7 7 0 0 1-.597-.933A9.3 9.3 0 0 1 4.09 12H2.255a7 7 0 0 0 3.072 2.472M3.82 11a13.7 13.7 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5zm6.853 3.472A7 7 0 0 0 13.745 12H11.91a9.3 9.3 0 0 1-.64 1.539 7 7 0 0 1-.597.933M8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.7 13.7 0 0 1-.312 2.5m2.802-3.5a6.96 6.96 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5zM11.27 2.461q.316.44.598.939c.244.44.462.949.64 1.6h1.834a7 7 0 0 0-3.072-2.539M10.855 4a9 9 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m7.5-6.923c-.67.204-1.335.82-1.887 1.855A8 8 0 0 0 5.145 4H7.5zM4.09 4a9.3 9.3 0 0 1 .64-1.539 7 7 0 0 1 .597-.933A7.03 7.03 0 0 0 2.255 4zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.96 6.96 0 0 0-.656 2.5zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5zM8.5 5v2.5h2.99a12.5 12.5 0 0 0-.337-2.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5v-2.5zm3.99 0v2.5h2.653c.187-.765.306-1.608.338-2.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12zm.182 2.472a7 7 0 0 1-.597-.933A9.3 9.3 0 0 1 4.09 12H2.255a7 7 0 0 0 3.072 2.472M3.82 11a13.7 13.7 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5zm6.853 3.472A7 7 0 0 0 13.745 12H11.91a9.3 9.3 0 0 1-.64 1.539 7 7 0 0 1-.597.933M8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.7 13.7 0 0 1-.312 2.5m2.802-3.5a6.96 6.96 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5zM11.27 2.461q.316.44.598.939c.244.44.462.949.64 1.6h1.834a7 7 0 0 0-3.072-2.539M10.855 4a9 9 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-info {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 .783-.076.94-.235l.014-.048.041-.031-.114-.34.038-.147c-.09.184-.395.36-.395.145l.011-.086.71-3.342c.14-.65-.026-1.2-1.005-1.2z'/%3E%3Cpath d='M8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='m8.93 6.588-2.29.287-.082.38.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319.545 0 .783-.076.94-.235l.014-.048.041-.031-.114-.34.038-.147c-.09.184-.395.36-.395.145l.011-.086.71-3.342c.14-.65-.026-1.2-1.005-1.2z'/%3E%3Cpath d='M8 5.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-bulletin {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M3 1 L10 1 L13 4 L13 15 L3 15 Z M10 1 L13 4 L10 4 Z M5 7 H11 V7.8 H5 Z M5 9.4 H11 V10.2 H5 Z M5 11.8 H9 V12.6 H5 Z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M3 1 L10 1 L13 4 L13 15 L3 15 Z M10 1 L13 4 L10 4 Z M5 7 H11 V7.8 H5 Z M5 9.4 H11 V10.2 H5 Z M5 11.8 H9 V12.6 H5 Z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-groups {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='5' cy='6' r='3'/%3E%3Ccircle cx='11' cy='6' r='3'/%3E%3Cpath d='M0 14c0-2.5 2-4 5-4s5 1.5 5 4v1H0z'/%3E%3Cpath d='M6 14c0-1.8.9-3.1 2.3-3.8.8-.5 1.7-.7 2.7-.7 3 0 5 1.5 5 4v1H6z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='5' cy='6' r='3'/%3E%3Ccircle cx='11' cy='6' r='3'/%3E%3Cpath d='M0 14c0-2.5 2-4 5-4s5 1.5 5 4v1H0z'/%3E%3Cpath d='M6 14c0-1.8.9-3.1 2.3-3.8.8-.5 1.7-.7 2.7-.7 3 0 5 1.5 5 4v1H6z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-devices {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M11 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z'/%3E%3Cpath d='M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M11 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM5 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z'/%3E%3Cpath d='M8 14a1 1 0 1 0 0-2 1 1 0 0 0 0 2'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-users {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4'/%3E%3Cpath d='M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z'/%3E%3Cpath d='M11 6.25a5 5 0 0 1 1.535.28l.147-.706.994.207-.147.706a5 5 0 0 1 1.184.907l.573-.407.581.818-.573.406a5 5 0 0 1 .376 1.416l.7.146-.207.994-.7-.147a5 5 0 0 1-.907 1.184l.407.573-.818.581-.406-.573a5 5 0 0 1-1.416.376l-.146.7-.994-.207.147-.7a5 5 0 0 1-1.184-.907l-.573.407-.581-.818.573-.406a5 5 0 0 1-.376-1.416l-.7-.146.207-.994.7.147a5 5 0 0 1 .907-1.184zM11.5 12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4'/%3E%3Cpath d='M8.256 14a4.5 4.5 0 0 1-.229-1.004H3c.001-.246.154-.986.832-1.664C4.484 10.68 5.711 10 8 10q.39 0 .74.025c.226-.341.496-.65.804-.918Q8.844 9.002 8 9c-5 0-6 3-6 4s1 1 1 1z'/%3E%3Cpath d='M11 6.25a5 5 0 0 1 1.535.28l.147-.706.994.207-.147.706a5 5 0 0 1 1.184.907l.573-.407.581.818-.573.406a5 5 0 0 1 .376 1.416l.7.146-.207.994-.7-.147a5 5 0 0 1-.907 1.184l.407.573-.818.581-.406-.573a5 5 0 0 1-1.416.376l-.146.7-.994-.207.147-.7a5 5 0 0 1-1.184-.907l-.573.407-.581-.818.573-.406a5 5 0 0 1-.376-1.416l-.7-.146.207-.994.7.147a5 5 0 0 1 .907-1.184zM11.5 12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-gear {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872zM8 10.93a2.93 2.93 0 1 1 0-5.86 2.93 2.93 0 0 1 0 5.86'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872zM8 10.93a2.93 2.93 0 1 1 0-5.86 2.93 2.93 0 0 1 0 5.86'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-memo {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm1 0v12h10V2z'/%3E%3Cpath d='M4.5 5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1m0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1m0 3h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2 2a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm1 0v12h10V2z'/%3E%3Cpath d='M4.5 5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1m0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1m0 3h4a.5.5 0 0 1 0 1h-4a.5.5 0 0 1 0-1'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-knowledge {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783M7.5 2.836v9.789c-.936-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.891c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752zm1 9.789V2.836c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.093-.111-2.278-.039-3.213.492z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783M7.5 2.836v9.789c-.936-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.891c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752zm1 9.789V2.836c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.093-.111-2.278-.039-3.213.492z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-files {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4H2.19zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4H2.19zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139C1.72 3.042 1.95 3 2.19 3h5.396l-.707-.707z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-project {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.5 0a.5.5 0 0 1 .5.5V15h14.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5V.5A.5.5 0 0 1 .5 0M2 12a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm4-5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm3-5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M.5 0a.5.5 0 0 1 .5.5V15h14.5a.5.5 0 0 1 0 1H.5a.5.5 0 0 1-.5-.5V.5A.5.5 0 0 1 .5 0M2 12a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zm4-5a1 1 0 0 1 1-1h5a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1zm3-5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1z'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-deal {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v8A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-8A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5m1.886 6.914L15 7.151V12.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V7.15l6.614 1.764a1.5 1.5 0 0 0 .772 0M1.5 4h13a.5.5 0 0 1 .5.5v1.616L8.129 7.948a.5.5 0 0 1-.258 0L1 6.116V4.5a.5.5 0 0 1 .5-.5'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 1A1.5 1.5 0 0 0 5 2.5V3H1.5A1.5 1.5 0 0 0 0 4.5v8A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-8A1.5 1.5 0 0 0 14.5 3H11v-.5A1.5 1.5 0 0 0 9.5 1zm0 1h3a.5.5 0 0 1 .5.5V3H6v-.5a.5.5 0 0 1 .5-.5m1.886 6.914L15 7.151V12.5a.5.5 0 0 1-.5.5h-13a.5.5 0 0 1-.5-.5V7.15l6.614 1.764a1.5 1.5 0 0 0 .772 0M1.5 4h13a.5.5 0 0 1 .5.5v1.616L8.129 7.948a.5.5 0 0 1-.258 0L1 6.116V4.5a.5.5 0 0 1 .5-.5'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-workflow {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='5.5' height='5.5' rx='1.3'/%3E%3Crect x='9.5' y='9.5' width='5.5' height='5.5' rx='1.3'/%3E%3Cpath d='M6.7 6.7 L9.8 9.8' stroke='black' stroke-width='1.5' stroke-linecap='round' fill='none'/%3E%3Cpath d='M7.6 9.3 L9.8 9.8 L9.3 7.6' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='5.5' height='5.5' rx='1.3'/%3E%3Crect x='9.5' y='9.5' width='5.5' height='5.5' rx='1.3'/%3E%3Cpath d='M6.7 6.7 L9.8 9.8' stroke='black' stroke-width='1.5' stroke-linecap='round' fill='none'/%3E%3Cpath d='M7.6 9.3 L9.8 9.8 L9.3 7.6' stroke='black' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
}

.wg-shell[b-ee2iw9q6zg]  .nav-icon-apps {
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='6' height='6' rx='1'/%3E%3Crect x='9' y='1' width='6' height='6' rx='1'/%3E%3Crect x='1' y='9' width='6' height='6' rx='1'/%3E%3Crect x='9' y='9' width='6' height='6' rx='1'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect x='1' y='1' width='6' height='6' rx='1'/%3E%3Crect x='9' y='1' width='6' height='6' rx='1'/%3E%3Crect x='1' y='9' width='6' height='6' rx='1'/%3E%3Crect x='9' y='9' width='6' height='6' rx='1'/%3E%3C/svg%3E");
}

/* ========== 未読バッジ ========== */
.wg-shell[b-ee2iw9q6zg]  .nav-badge {
    position: absolute;
    top: -0.3rem;
    right: -0.5rem;
    background: var(--terra, #E8543A);
    color: #fff;
    border-radius: 999px;
    font-size: 0.6rem;
    line-height: 1;
    min-width: 1rem;
    height: 1rem;
    padding: 0 0.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* ========== スマホ用ボトムナビ（PC幅では非表示） ========== */
.wg-shell[b-ee2iw9q6zg]  .bottom-nav-bar {
    display: none;
}

@media (max-width: 767.98px) {
    .wg-shell[b-ee2iw9q6zg]  .bottom-nav-bar {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 1000;
        display: flex;
        align-items: center;
        justify-content: space-around;
        background: #fff;
        border-top: 1px solid #e0e0e0;
        padding-bottom: env(safe-area-inset-bottom);
        height: calc(3.5rem + env(safe-area-inset-bottom));
        box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.08);
    }
}

.wg-shell[b-ee2iw9q6zg]  .bottom-nav-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    height: 3.5rem;
    color: #757575;
    text-decoration: none;
    background: none;
    border: none;
    padding: 0.25rem 0;
    font-family: inherit;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-nav-btn:hover {
    color: var(--blue, #2B5797);
}

.wg-shell[b-ee2iw9q6zg]  .bottom-nav-active {
    color: var(--blue, #2B5797) !important;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-nav-icon-wrap {
    position: relative;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-nav-label {
    font-size: 0.625rem;
    margin-top: 0.15rem;
    white-space: nowrap;
}

/* スマホ時：ボトムナビに隠れないよう下余白を確保 */
@media (max-width: 767.98px) {
    .wg-article[b-ee2iw9q6zg] {
        padding-bottom: calc(4rem + env(safe-area-inset-bottom));
    }
}

/* ========== 「もっと見る」ボトムシート ========== */
.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 999;
    display: flex;
    align-items: flex-end;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet {
    background: #fff;
    width: 100%;
    border-radius: 16px 16px 0 0;
    padding-bottom: calc(3.5rem + env(safe-area-inset-bottom));
    animation: wg-sheet-slide-up-b-ee2iw9q6zg 0.2s ease-out;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-handle {
    width: 2.5rem;
    height: 0.25rem;
    background: #e0e0e0;
    border-radius: 2px;
    margin: 0.6rem auto 0.25rem;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.5rem;
    padding: 1rem;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0.75rem 0.25rem;
    text-decoration: none;
    color: #212121;
    border-radius: 8px;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-item:hover {
    background: #f0f2f5;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-item .nav-icon {
    color: var(--blue, #2B5797);
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-icon-wrap {
    position: relative;
}

.wg-shell[b-ee2iw9q6zg]  .bottom-sheet-label {
    font-size: 0.7rem;
    margin-top: 0.35rem;
    color: #616161;
}

@keyframes wg-sheet-slide-up-b-ee2iw9q6zg {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
}

/* ========== 印刷時 ========== */
/* .wg-shell is a fixed-height (100dvh), internally-scrolling flex column —
   fine on screen, but for print it would clip page content to a single
   viewport-height sheet. Printing needs normal, unbounded document flow
   instead, with the app chrome (top bar, bottom nav) hidden — pages that
   opt into printing (e.g. Webmail's message detail) show their own content
   via their own scoped @media print rules. */
@media print {
    .wg-shell[b-ee2iw9q6zg] {
        display: block;
        height: auto;
    }

    .wg-content[b-ee2iw9q6zg] {
        display: block;
        overflow: visible;
    }

    .wg-topbar[b-ee2iw9q6zg],
    .wg-shell[b-ee2iw9q6zg]  .bottom-nav-bar {
        display: none !important;
    }
}

/* ========== エラーバナー ========== */
#blazor-error-ui[b-ee2iw9q6zg] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-ee2iw9q6zg] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-w3csn8lcvi],
.components-reconnect-repeated-attempt-visible[b-w3csn8lcvi],
.components-reconnect-failed-visible[b-w3csn8lcvi],
.components-pause-visible[b-w3csn8lcvi],
.components-resume-failed-visible[b-w3csn8lcvi],
.components-rejoining-animation[b-w3csn8lcvi] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-retrying[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-failed[b-w3csn8lcvi],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-w3csn8lcvi] {
    display: block;
}


#components-reconnect-modal[b-w3csn8lcvi] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-w3csn8lcvi 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-w3csn8lcvi 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-w3csn8lcvi 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-w3csn8lcvi]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-w3csn8lcvi 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-w3csn8lcvi {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-w3csn8lcvi {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-w3csn8lcvi {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-w3csn8lcvi] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-w3csn8lcvi] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-w3csn8lcvi] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-w3csn8lcvi] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-w3csn8lcvi] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-w3csn8lcvi] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-w3csn8lcvi] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-w3csn8lcvi 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-w3csn8lcvi] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-w3csn8lcvi {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/Bulletin.razor.rz.scp.css */
.bulletin-panel[b-0vff1jksmw] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
    margin-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.bulletin-panel .btn:not(.btn-link)[b-0vff1jksmw] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.bulletin-panel .btn:not(.btn-link):hover:not(:disabled)[b-0vff1jksmw] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.bulletin-panel .btn:not(.btn-link):active:not(:disabled)[b-0vff1jksmw] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.bulletin-header[b-0vff1jksmw] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
}

.bulletin-compose-btn[b-0vff1jksmw] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 10px;
    font-weight: 600;
}

.bulletin-list[b-0vff1jksmw] {
    border-top: 1px solid #eee;
}

.bulletin-row[b-0vff1jksmw] {
    display: flex;
    gap: 1rem;
    align-items: baseline;
    padding: 0.6rem 0.5rem;
    border-bottom: 1px solid #eee;
    cursor: pointer;
    border-radius: 6px;
    transition: background 0.15s;
}

.bulletin-row:hover[b-0vff1jksmw] {
    background-color: var(--blue-l, #EBF1FA);
}

.bulletin-row-title[b-0vff1jksmw] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
    color: var(--dark, #16213E);
}

.bulletin-row-author[b-0vff1jksmw] {
    width: 8rem;
    flex-shrink: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bulletin-row-comments[b-0vff1jksmw],
.bulletin-row-date[b-0vff1jksmw] {
    flex-shrink: 0;
}

.bulletin-compose[b-0vff1jksmw],
.bulletin-detail[b-0vff1jksmw] {
    max-width: 40rem;
}

.bulletin-back-btn[b-0vff1jksmw] {
    color: var(--blue, #2B5797);
    border-color: var(--border, #E5DDD4);
    background-color: var(--white, #fff);
}

.bulletin-back-btn:hover[b-0vff1jksmw] {
    background-color: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.bulletin-detail-header[b-0vff1jksmw] {
    margin-bottom: 1rem;
    padding: 0.9rem 1.1rem;
    background-color: var(--blue-l, #EBF1FA);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 6px;
}

.bulletin-detail-title[b-0vff1jksmw] {
    margin-bottom: 0.4rem;
    word-break: break-word;
}

.bulletin-comments-heading[b-0vff1jksmw] {
    font-size: 0.9rem;
    color: var(--mid, #4B5563);
    font-weight: 700;
}

.bulletin-comments[b-0vff1jksmw] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.bulletin-comment[b-0vff1jksmw] {
    padding: 0.6rem 0.8rem;
    border-radius: 8px;
    background-color: var(--light, #F7F4F0);
}

.bulletin-post-body[b-0vff1jksmw],
.bulletin-comment-body[b-0vff1jksmw] {
    white-space: pre-wrap;
    word-break: break-word;
}
/* /Components/Pages/Chat.razor.rz.scp.css */
/* Owns the flex:1/min-height:0 fill of .wg-article — .chat-mobile-back-bar
   is a sibling of .chat-layout here (not inside .chat-main-header, which
   lives in the same scrolling flex column as .chat-messages). Keeping it
   fully outside that column means it can never get dragged along with the
   message-list's own scrolling, regardless of any flex/overflow quirk in
   .chat-main/.chat-messages. */
.chat-page[b-5co0jzxpv7] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.chat-mobile-back-bar[b-5co0jzxpv7] {
    display: none;
}

.chat-layout[b-5co0jzxpv7] {
    display: flex;
    flex: 1;
    min-height: 0;
    gap: 1rem;
    /* Same as .webmail-layout (Webmail.razor.css) — .wg-article's own
       padding-bottom only applies at mobile widths, so on desktop this
       row's flex:1 children stretched flush to the browser window's bottom
       edge with no gap. Padding here shrinks them equally, opening a plain
       page-background gap below both columns instead. */
    padding-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.chat-layout .btn:not(.btn-link)[b-5co0jzxpv7] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.chat-layout .btn:not(.btn-link):hover:not(:disabled)[b-5co0jzxpv7] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.chat-layout .btn:not(.btn-link):active:not(:disabled)[b-5co0jzxpv7] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.chat-layout .btn:not(.btn-link):disabled[b-5co0jzxpv7] {
    background-image: none;
    box-shadow: none;
}

.chat-channels[b-5co0jzxpv7] {
    width: 14rem;
    padding: 0.5rem 0.5rem 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--light, #F7F4F0);
    overflow-y: auto;
}

.chat-channels h5[b-5co0jzxpv7] {
    font-size: 0.8rem;
    color: var(--muted, #9CA3AF);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

/* Tomova風チャンネル/DM一覧（Webmail.razor.cssの.webmail-folder-item相当） */
.chat-channels .list-group-item[b-5co0jzxpv7] {
    display: flex;
    border: none;
    border-radius: 8px;
    margin-bottom: 2px;
    padding: 0.45rem 0.7rem;
    font-size: 0.85rem;
    color: var(--mid, #4B5563);
    background: transparent;
    transition: background 0.15s, color 0.15s;
}

.chat-channels .list-group-item:hover[b-5co0jzxpv7] {
    background: var(--white, #fff);
}

.chat-channels .list-group-item.active[b-5co0jzxpv7] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-weight: 700;
}

.chat-channels .text-danger[b-5co0jzxpv7] {
    color: var(--terra, #E8543A) !important;
}

.chat-main[b-5co0jzxpv7] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.chat-messages[b-5co0jzxpv7] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    /* Without this, reaching the top/bottom of this inner scroll area on
       mobile hands the gesture off to the page's own scroll container
       (.wg-content), which visibly slides the whole screen (including this
       "fixed" header) instead of just stopping — contain keeps the scroll
       gesture inside this element once its own boundary is hit. */
    overscroll-behavior: contain;
    padding: 1rem;
}

/* LINE-style layout: each message is a flex column whose children (name/time,
   bubble, attachment, read status) shrink to their own content width and
   align to one side — flex-start (left) for the other person, flex-end
   (right, via .chat-message-own below) for yourself. This is why
   .chat-message-body no longer needs display:inline-block — a flex child
   already shrinks to its content instead of stretching full width. */
.chat-message[b-5co0jzxpv7] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    margin-bottom: 0.75rem;
}

.chat-message-own[b-5co0jzxpv7] {
    align-items: flex-end;
}

.chat-message-meta[b-5co0jzxpv7] {
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
}

.chat-message-body[b-5co0jzxpv7] {
    background-color: var(--light, #F7F4F0);
    border-radius: 16px;
    padding: 0.5rem 0.75rem;
    max-width: 80%;
    white-space: pre-wrap;
    word-break: break-word;
}

.chat-message-own .chat-message-body[b-5co0jzxpv7] {
    background-color: var(--blue-l, #EBF1FA);
}

.chat-input[b-5co0jzxpv7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-top: 1px solid var(--border, #E5DDD4);
}

.chat-input .form-control[b-5co0jzxpv7] {
    flex: 1;
}

.chat-main-header[b-5co0jzxpv7] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.75rem 1rem 0;
}

/* On a wide desktop window, the message column and input bar would otherwise
   stretch to fill the whole .chat-main pane — capping them keeps long
   conversations readable. Left-aligned (flush against the channel sidebar),
   LINE-style, rather than centered — no margin:auto needed, a capped block
   box (.chat-message) and a capped flex item under the default
   align-items:stretch (.chat-input) both fall back to flex-start/left
   automatically once max-width prevents them from filling the full width.
   Left untouched below 769px: a phone's screen is already narrow enough
   that this never applies. */
@media (min-width: 769px) {
    .chat-message[b-5co0jzxpv7],
    .chat-input[b-5co0jzxpv7] {
        max-width: 42rem;
    }
}

@media (max-width: 768px) {
    .chat-channels[b-5co0jzxpv7],
    .chat-main[b-5co0jzxpv7] {
        width: 100%;
    }

    .chat-channels.chat-channels-mobile-hidden[b-5co0jzxpv7],
    .chat-main.chat-main-mobile-hidden[b-5co0jzxpv7] {
        display: none;
    }

    .chat-main-header[b-5co0jzxpv7] {
        padding: 0.5rem 0.5rem 0;
    }

    .chat-mobile-back-bar[b-5co0jzxpv7] {
        display: block;
        flex-shrink: 0;
        padding: 0.5rem 0.5rem 0;
    }

    .chat-back-button[b-5co0jzxpv7] {
        display: flex;
        width: 100%;
        align-items: center;
        justify-content: center;
        gap: 0.4rem;
        padding: 0.6rem 0.75rem;
        font-weight: 600;
        border-radius: 6px;
        color: var(--blue, #2B5797);
        border-color: var(--border, #E5DDD4);
        background-color: var(--white, #fff);
    }

    .chat-back-button:hover[b-5co0jzxpv7] {
        background-color: var(--blue-l, #EBF1FA);
        border-color: var(--blue, #2B5797);
        color: var(--blue, #2B5797);
    }
}
/* /Components/Pages/Deals.razor.rz.scp.css */
.deals-panel[b-rs0nqx2e9i] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
    margin-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.deals-panel .btn:not(.btn-link)[b-rs0nqx2e9i] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.deals-panel .btn:not(.btn-link):hover:not(:disabled)[b-rs0nqx2e9i] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.deals-panel .btn:not(.btn-link):active:not(:disabled)[b-rs0nqx2e9i] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.deals-new-btn[b-rs0nqx2e9i] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 10px;
    font-weight: 600;
}

.deals-back-btn[b-rs0nqx2e9i] {
    color: var(--blue, #2B5797);
    border-color: var(--border, #E5DDD4);
    background-color: var(--white, #fff);
}

.deals-back-btn:hover[b-rs0nqx2e9i] {
    background-color: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.deals-filter-pill[b-rs0nqx2e9i] {
    display: inline-flex;
    align-items: center;
    padding: 0.3rem 0.9rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 20px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.deals-filter-pill:hover[b-rs0nqx2e9i] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
}

.deals-filter-pill-active[b-rs0nqx2e9i],
.deals-filter-pill-active:hover[b-rs0nqx2e9i] {
    background: var(--blue, #2B5797);
    border-color: var(--blue, #2B5797);
    color: #fff;
}

.deals-section-heading[b-rs0nqx2e9i] {
    font-size: 0.95rem;
    color: var(--mid, #4B5563);
    font-weight: 700;
}

/* Status badges — Tomova palette instead of Bootstrap's bg-secondary/primary/etc. */
.deals-badge[b-rs0nqx2e9i] {
    display: inline-block;
    padding: 0.2rem 0.6rem;
    border-radius: 10px;
    font-size: 0.72rem;
    font-weight: 700;
    color: #fff;
}

.deals-badge-prospect[b-rs0nqx2e9i] {
    background: var(--muted, #9CA3AF);
}

.deals-badge-negotiating[b-rs0nqx2e9i] {
    background: var(--blue, #2B5797);
}

.deals-badge-won[b-rs0nqx2e9i] {
    background: var(--success, #2E7D32);
}

.deals-badge-lost[b-rs0nqx2e9i] {
    background: var(--terra, #E8543A);
}

.deals-badge-onhold[b-rs0nqx2e9i] {
    background: var(--gold, #F7C948);
    color: var(--dark, #16213E);
}

.deals-stat-grid[b-rs0nqx2e9i] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.75rem;
}

.deals-stat-tile[b-rs0nqx2e9i] {
    padding: 0.75rem 1rem;
    border-radius: 10px;
    background: var(--light, #F7F4F0);
    border: 1px solid var(--border, #E5DDD4);
}

.deals-table thead th[b-rs0nqx2e9i] {
    color: var(--muted, #9CA3AF);
    font-size: 0.8rem;
    font-weight: 600;
    border-bottom: 2px solid var(--border, #E5DDD4);
}

.deals-table tbody tr[b-rs0nqx2e9i] {
    border-bottom: 1px solid #eee;
    transition: background 0.15s;
}

.deal-row[b-rs0nqx2e9i] {
    cursor: pointer;
}

.deals-table tbody tr:hover[b-rs0nqx2e9i] {
    background-color: var(--blue-l, #EBF1FA);
}

.deal-description[b-rs0nqx2e9i],
.deal-history-body[b-rs0nqx2e9i] {
    white-space: pre-wrap;
}

.deals-history-form[b-rs0nqx2e9i] {
    padding: 0.9rem 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    background: var(--light, #F7F4F0);
}

.deal-history-list[b-rs0nqx2e9i] {
    max-height: 32rem;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.deal-history-item[b-rs0nqx2e9i] {
    padding: 0.6rem 0.8rem;
    border-radius: 8px;
    background-color: var(--light, #F7F4F0);
}

.deals-activity-badge[b-rs0nqx2e9i] {
    display: inline-block;
    padding: 0.1rem 0.5rem;
    border-radius: 8px;
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-size: 0.72rem;
    font-weight: 700;
}

@media (max-width: 768px) {
    .deals-stat-grid[b-rs0nqx2e9i] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Files.razor.rz.scp.css */
.files-layout[b-pb5eigcr1m] {
    display: flex;
    flex: 1;
    min-height: 0;
    border: 1px solid #dee2e6;
}

.files-folders[b-pb5eigcr1m] {
    width: 14rem;
    padding: 1rem 0.75rem;
    border-right: 1px solid #dee2e6;
    background-color: #f8f9fa;
    overflow-y: auto;
}

.files-main[b-pb5eigcr1m] {
    flex: 1;
    min-width: 0;
    overflow-y: auto;
    padding: 1rem;
}

.files-menu-button[b-pb5eigcr1m] {
    display: none;
}

@media (max-width: 768px) {
    .files-folders[b-pb5eigcr1m],
    .files-main[b-pb5eigcr1m] {
        width: 100%;
    }

    .files-folders.files-folders-mobile-hidden[b-pb5eigcr1m],
    .files-main.files-main-mobile-hidden[b-pb5eigcr1m] {
        display: none;
    }

    .files-menu-button[b-pb5eigcr1m] {
        display: inline-block;
        margin-bottom: 0.5rem;
    }
}
/* /Components/Pages/FilesEdit.razor.rz.scp.css */
/* Fills the remaining space below the app header, the same way
   Files.razor.css's .files-layout does — .wg-article (the @Body host in
   MainLayout) is already display:flex;flex-direction:column;flex:1;min-height:0,
   so this just needs to be a well-behaved flex item/container itself. */
.files-edit-page[b-xpotikrwmg] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.files-edit-header[b-xpotikrwmg] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-shrink: 0;
    margin-bottom: 0.75rem;
}

.files-edit-title[b-xpotikrwmg] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.files-edit-body[b-xpotikrwmg] {
    flex: 1;
    min-height: 0;
}
/* /Components/Pages/Groups.razor.rz.scp.css */
.groups-page-header[b-31imer57u9] {
    margin-bottom: 1rem;
}

.groups-layout[b-31imer57u9] {
    display: flex;
    flex: 1;
    min-height: 0;
    gap: 1rem;
    padding-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.groups-layout .btn:not(.btn-link)[b-31imer57u9] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.groups-layout .btn:not(.btn-link):hover:not(:disabled)[b-31imer57u9] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.groups-layout .btn:not(.btn-link):active:not(:disabled)[b-31imer57u9] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.groups-sidebar[b-31imer57u9] {
    width: 16rem;
    flex-shrink: 0;
    padding: 1rem 0.75rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--light, #F7F4F0);
    overflow-y: auto;
}

.groups-sidebar-heading[b-31imer57u9] {
    font-size: 0.8rem;
    color: var(--muted, #9CA3AF);
    font-weight: 600;
    padding: 0 0.7rem;
    margin-bottom: 0.4rem;
}

.groups-nav[b-31imer57u9] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: 0.75rem;
}

.groups-nav-item[b-31imer57u9] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    border: none;
    background: none;
    text-align: left;
    padding: 0.45rem 0.7rem;
    border-radius: 8px;
    font-size: 0.85rem;
    font-family: inherit;
    color: var(--mid, #4B5563);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.groups-nav-item:hover[b-31imer57u9] {
    background: var(--white, #fff);
}

.groups-nav-icon[b-31imer57u9] {
    font-size: 0.9rem;
    color: var(--muted, #9CA3AF);
    flex-shrink: 0;
    width: 1.1rem;
    text-align: center;
}

.groups-nav-name[b-31imer57u9] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.groups-nav-active[b-31imer57u9],
.groups-nav-active:hover[b-31imer57u9] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-weight: 700;
}

.groups-nav-active .groups-nav-icon[b-31imer57u9] {
    color: var(--blue, #2B5797);
}

.groups-create-row[b-31imer57u9] {
    border-top: 1px solid var(--border, #E5DDD4);
    padding-top: 0.75rem;
}

.groups-main[b-31imer57u9] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.groups-main-header[b-31imer57u9] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
}

.groups-member-list[b-31imer57u9] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.groups-member-item[b-31imer57u9] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0.7rem;
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.15s;
}

.groups-member-item:hover[b-31imer57u9] {
    background: var(--blue-l, #EBF1FA);
}

@media (max-width: 768px) {
    .groups-layout[b-31imer57u9] {
        flex-direction: column;
    }

    .groups-sidebar[b-31imer57u9] {
        width: 100%;
    }
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* ========== ページヘッダー ========== */
.page-header[b-2wi4jdznhv] {
    padding: 0.25rem 0 1rem;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.25rem;
}

.page-greeting[b-2wi4jdznhv] {
    font-size: 0.75rem;
    color: var(--muted, #9CA3AF);
    margin-bottom: 0.25rem;
    letter-spacing: 0.03em;
}

.page-title[b-2wi4jdznhv] {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--dark, #16213E);
}

.page-date[b-2wi4jdznhv] {
    font-size: 1rem;
    /* color: var(--muted, #000000); */
    color: #000000;
}

/* ========== サマリーカード ========== */
.summary-row-3[b-2wi4jdznhv] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-bottom: 1rem;
}

.sum-card[b-2wi4jdznhv] {
    background: var(--white, #fff);
    border-radius: 10px;
    padding: 1rem 1.1rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    border: 1px solid var(--border, #E5DDD4);
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.15s, transform 0.15s;
}

.sum-card:hover[b-2wi4jdznhv] {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    transform: translateY(-1px);
    color: inherit;
}

.sum-icon[b-2wi4jdznhv] {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 1.1rem;
}

.sum-count[b-2wi4jdznhv] {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1;
    color: var(--dark, #16213E);
}

.sum-count span[b-2wi4jdznhv] {
    color: var(--terra, #E8543A);
    font-size: 0.85rem;
    font-weight: 500;
    margin-left: 0.1rem;
}

.sum-label[b-2wi4jdznhv] {
    font-size: 0.7rem;
    color: var(--muted, #9CA3AF);
    margin-top: 0.15rem;
    font-weight: 500;
    letter-spacing: 0.02em;
}

.sum-badge[b-2wi4jdznhv] {
    margin-left: auto;
    align-self: flex-start;
    background: var(--terra, #E8543A);
    color: white;
    font-size: 0.6rem;
    font-weight: 700;
    padding: 0.1rem 0.4rem;
    border-radius: 10px;
    letter-spacing: 0.03em;
    flex-shrink: 0;
}

/* ========== お知らせチップ（掲示板・Webメール） ========== */
.notice-strip[b-2wi4jdznhv] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.notice-chip[b-2wi4jdznhv] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background: var(--light, #F7F4F0);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 20px;
    padding: 0.35rem 0.9rem;
    font-size: 0.8rem;
    color: var(--dark, #16213E);
    text-decoration: none;
}

a.notice-chip:hover[b-2wi4jdznhv] {
    background: var(--blue-l, #EBF1FA);
    color: var(--dark, #16213E);
}

.notice-chip-error[b-2wi4jdznhv] {
    color: #c62828;
}

/* ========== メイングリッド ========== */
.main-grid[b-2wi4jdznhv] {
    display: grid;
    grid-template-columns: 1fr 22rem;
    gap: 1rem;
    align-items: start;
}

/* グリッドアイテムはflexアイテムと同様、既定でmin-width:autoを持ち、
   中身（横スクロール行や長いテキストなど）が縮められない幅を要求すると
   トラック自体がその分だけ広がってしまう。.left-col/.right-col自体には
   個別のCSSが無かったため、複数のカードがまとめて少しだけ画面から
   はみ出す形で実機に現れていた（実機で指摘・08-18）。 */
.left-col[b-2wi4jdznhv],
.right-col[b-2wi4jdznhv] {
    min-width: 0;
}

@media (max-width: 992px) {
    .main-grid[b-2wi4jdznhv] {
        grid-template-columns: 1fr;
    }
}

/* ボトムナビ(MainLayout.razor.css)が固定表示される幅では、.wg-article側の
   共通padding-bottomだけでは足りず、ページ末尾のカードがボトムナビに隠れる
   (実機で確認・2026-08-06)。break-pointは.main-gridが1カラムになる992px
   に合わせるのが実測で正しかった（767.98pxでは不十分）。 */
@media (max-width: 992px) {
    .main-grid[b-2wi4jdznhv] {
        padding-bottom: 5rem;
    }
}

/* ========== カード共通 ========== */
.card[b-2wi4jdznhv] {
    background: var(--white, #fff);
    border-radius: 12px;
    border: 1px solid var(--border, #E5DDD4);
    overflow: hidden;
}

.card-header[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.8rem 1.1rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
    gap: 0.5rem;
}

.card-title[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--dark, #16213E);
}

.card-title-dot[b-2wi4jdznhv] {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background: var(--blue, #2B5797);
    flex-shrink: 0;
}

/* Unread-count badge — stays terracotta (not the new blue primary) per the
   app-wide convention that notification/unread indicators read as red. */
.card-title-badge[b-2wi4jdznhv] {
    background: var(--terra, #E8543A);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.1rem 0.45rem;
    border-radius: 10px;
}

.card-action[b-2wi4jdznhv] {
    font-size: 0.75rem;
    color: var(--blue, #2B5797);
    text-decoration: none;
    font-weight: 600;
    padding: 0.25rem 0.6rem;
    border-radius: 6px;
    white-space: nowrap;
    transition: background 0.15s;
}

.card-action:hover[b-2wi4jdznhv] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.card-header-actions[b-2wi4jdznhv] {
    display: flex;
    gap: 0.25rem;
    flex-shrink: 0;
}

.card-body[b-2wi4jdznhv] {
    padding: 1rem 1.1rem;
}

.card-body-flush[b-2wi4jdznhv] {
    padding: 0.4rem 0;
}

/* スマホ幅ではダッシュボードのカードが縦一列に積まれ、下の方(ToDo/ナレッジ等)
   が見えるまでのスクロール量が増える。各リスト行/カード内余白を詰めて、
   スクロールせず見える件数を増やす（08-17）。
   このブロックは上の無条件.card-body/.card-body-flushより後ろに置くこと
   ―詳細度が同じ場合、後に書かれた宣言が勝つため、@media内に書いても
   それより前に置くと無条件ルールに上書きされてしまう（08-17に実際発生）。 */
@media (max-width: 767.98px) {
    /* tomova_home_mobile_brushup.html の.section-headに合わせる:
       本文とのborder-bottom区切り線は無く、paddingも上下非対称
       (12px 14px 8px)。無条件.card-headerのborder-bottom/均等paddingを
       スマホ幅だけ打ち消す（今週の予定/承認待ちワークフロー/ToDo/
       最新ナレッジの4カードすべてがこの共通クラスを使っているので、
       ここを直せば一括で揃う）。 */
    .card-header[b-2wi4jdznhv] {
        /* Bootstrap既定の.card-headerが持つrgba(0,0,0,.03)の薄い背景色
           (bootstrap.css)が透けて見え、モックアップの「本文と同じ白背景」
           とズレていた（実機確認・08-18）。明示的に上書きする。 */
        background: var(--white, #fff);
        border-bottom: none;
        padding: 0.75rem 0.875rem 0.5rem;
    }

    /* tomova_home_mobile_brushup.html は.section-headの下側padding(8px)
       だけで見出しと本文の間隔を作っており、本文コンテナ側の上paddingは
       常に0（.week-strip/.event-list/.todo-list/.wf-list/.knowledge-scroll
       すべて`padding:0 ... ...`）。.card-header側で0.5remの下paddingを
       既に確保しているので、ここでも上paddingを0にしないと二重に空いて
       見出しと本文の間が広くなりすぎる（実機確認・08-18）。 */
    .card-body[b-2wi4jdznhv] {
        padding: 0 0.8rem 0.7rem;
    }

    .card-body-flush[b-2wi4jdznhv] {
        padding: 0 0 0.4rem;
    }

    .todo-item[b-2wi4jdznhv],
    .info-item[b-2wi4jdznhv],
    .know-item[b-2wi4jdznhv] {
        padding-top: 0.4rem;
        padding-bottom: 0.4rem;
    }

    .know-item[b-2wi4jdznhv] {
        padding-left: 0.8rem;
        padding-right: 0.8rem;
    }

    .info-item-icon[b-2wi4jdznhv] {
        width: 1.7rem;
        height: 1.7rem;
        font-size: 0.8rem;
    }

    /* 週間カレンダーの.home-calendar-grid自体が枠線付きなので、
       .card-body側の左右余白はほぼ無くして幅を稼ぐ（08-17）。 */
    .home-calendar-card-body[b-2wi4jdznhv] {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}

.card-action-link[b-2wi4jdznhv] {
    display: inline-block;
    margin-top: 0.6rem;
    font-size: 0.75rem;
    color: var(--blue, #2B5797);
    text-decoration: none;
    font-weight: 600;
}

.card-action-link:hover[b-2wi4jdznhv] {
    text-decoration: underline;
}

/* ========== 週スケジュール（既存のグリッド構造を流用） ========== */
.home-calendar-grid[b-2wi4jdznhv] {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 1px;
    background-color: var(--border, #E5DDD4);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 8px;
    overflow: hidden;
}

.home-calendar-cell[b-2wi4jdznhv] {
    background-color: white;
    min-width: 0;
    min-height: 6rem;
    padding: 0.25rem;
    display: flex;
    flex-direction: column;
}

.home-calendar-cell-holiday[b-2wi4jdznhv] {
    background-color: var(--terra-l, #FEF0EC);
}

/* Mobile/tablet: tapping a cell selects it (.home-day-agenda below shows its
   events) instead of the pill list, matching Schedule.razor's month view.
   Desktop never gets this class (OnHomeDayClick only sets SelectedDay when
   IsCompactViewport) — see Home.razor's @code for why.
   The selected background/border is drawn on .home-calendar-body (below),
   not the cell itself, so the date/曜日 header stays outside the blue box. */
.home-calendar-cell-selected .home-calendar-body[b-2wi4jdznhv] {
    background-color: var(--blue-l, #EBF1FA);
    box-shadow: inset 0 0 0 2px var(--blue, #2B5797);
}

/* .home-calendar-date (above) stretches to the cell's edges via negative
   margin; .home-calendar-body mirrors that on its remaining 3 sides so the
   selected border/background sits flush with the cell but starts right
   below the header instead of wrapping it. flex:1 (.home-calendar-cell is
   now a flex column) makes it fill the cell's min-height instead of
   shrink-wrapping just the +/・ content, so the border reaches the bottom
   edge even on short-content days. */
.home-calendar-body[b-2wi4jdznhv] {
    margin: 0 -0.25rem -0.25rem -0.25rem;
    padding: 0 0.25rem 0.25rem 0.25rem;
    flex: 1;
    min-height: 0;
}

.home-calendar-day-dot[b-2wi4jdznhv] {
    display: none;
}

.home-calendar-holiday-label[b-2wi4jdznhv] {
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--terra, #E8543A);
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-top: 2px;
}

.home-calendar-date[b-2wi4jdznhv] {
    display: block;
    text-align: center;
    font-size: 0.7rem;
    font-weight: 700;
    background-color: var(--light, #F7F4F0);
    padding: 0.35rem 0.15rem;
    margin: -0.25rem -0.25rem 0 -0.25rem;
}

.home-calendar-add-row[b-2wi4jdznhv] {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.2rem;
    margin-bottom: 0.15rem;
}

.home-calendar-add-btn[b-2wi4jdznhv] {
    border: none;
    background: none;
    color: var(--muted, #9CA3AF);
    font-size: 0.85rem;
    font-weight: 700;
    line-height: 1;
    width: 1.1rem;
    height: 1.1rem;
    border-radius: 50%;
    padding: 0;
    cursor: pointer;
    flex-shrink: 0;
}

.home-calendar-add-btn:hover[b-2wi4jdznhv] {
    background-color: var(--blue, #2B5797);
    color: white;
}

.home-calendar-date.home-calendar-sat[b-2wi4jdznhv] {
    background-color: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.home-calendar-date.home-calendar-sun[b-2wi4jdznhv] {
    background-color: var(--terra-l, #FEF0EC);
    color: var(--terra, #E8543A);
}

.home-calendar-date-today[b-2wi4jdznhv] {
    background-color: var(--blue, #2B5797);
    color: white;
}

.home-calendar-event[b-2wi4jdznhv] {
    display: block;
    font-size: 0.75rem;
    border-radius: 5px;
    padding: 3px 6px;
    margin-bottom: 3px;
    overflow: hidden;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    border-left: 2px solid currentColor;
    transition: opacity 0.15s, transform 0.15s;
}

.home-calendar-event:hover[b-2wi4jdznhv] {
    opacity: 0.85;
    transform: translateX(1px);
}

.home-calendar-event-time[b-2wi4jdznhv] {
    color: #495057;
}

.home-calendar-event-title[b-2wi4jdznhv] {
    overflow-wrap: break-word;
}

@media (max-width: 768px) {
    .home-calendar-cell[b-2wi4jdznhv] {
        padding: 0.15rem;
        min-height: 4.5rem;
        font-size: 0.7rem;
    }

    .home-calendar-date[b-2wi4jdznhv] {
        font-size: 0.6rem;
        /* .home-calendar-cellのpaddingがここで0.25rem→0.15remに変わるのに
           合わせないと、この負マージンがセル端を0.1remはみ出す。 */
        margin: -0.15rem -0.15rem 0 -0.15rem;
    }

    .home-calendar-body[b-2wi4jdznhv] {
        margin: 0 -0.15rem -0.15rem -0.15rem;
        padding: 0 0.15rem 0.15rem 0.15rem;
    }

    .home-calendar-event-title[b-2wi4jdznhv] {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}

/* Google Calendar-style dot instead of the pill list, same breakpoint as
   Schedule.razor.css's .calendar-day-dot for consistency. Supersedes the
   768px rule above that used to hide just .home-calendar-event-time — the
   whole pill is gone now, so that's moot. */
@media (max-width: 992px) {
    .home-calendar-cell[b-2wi4jdznhv] {
        cursor: pointer;
    }

    .home-calendar-day-dot[b-2wi4jdznhv] {
        display: block;
        width: 0.35rem;
        height: 0.35rem;
        border-radius: 50%;
        background: var(--blue, #2B5797);
        margin: 0.15rem auto 0;
    }

    .home-calendar-event[b-2wi4jdznhv] {
        display: none;
    }
}

/* ===== 日別アジェンダ（スマホ・タブレットで日付タップ時にミニカレンダー下に表示） ===== */
/* position:sticky はこのアプリのflexサイズスクロールコンテナ内では信頼できない
   （feedback_flexbox_debugging.md #2）ため使わず、Schedule.razor.cssの
   .sched-day-agendaと同じくヘッダーはflex-shrink:0、本体だけスクロールする
   構造にする。 */
.home-day-agenda[b-2wi4jdznhv] {
    background: white;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 8px;
    margin-top: 0.6rem;
    max-height: 16rem;
    display: flex;
    flex-direction: column;
}

.home-day-agenda-header[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
    flex-shrink: 0;
}

.home-day-agenda-title[b-2wi4jdznhv] {
    font-weight: 700;
    font-size: 0.8rem;
    color: var(--dark, #16213E);
}

.home-day-agenda-close[b-2wi4jdznhv] {
    border: none;
    background: none;
    font-size: 1rem;
    line-height: 1;
    color: var(--mid, #4B5563);
    cursor: pointer;
    padding: 0.2rem 0.35rem;
}

.home-day-agenda-list[b-2wi4jdznhv] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

.home-day-agenda-item[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    border-bottom: 1px solid #f1f1f1;
    font-size: 0.8rem;
}

.home-day-agenda-item:last-child[b-2wi4jdznhv] {
    border-bottom: none;
}

.home-day-agenda-item:hover[b-2wi4jdznhv] {
    background-color: #f8f9fa;
}

.home-day-agenda-item-title[b-2wi4jdznhv] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
}

.home-day-agenda-empty[b-2wi4jdznhv] {
    padding: 0.75rem;
    color: var(--mid, #4B5563);
    font-size: 0.8rem;
    text-align: center;
}

/* ========== ToDo ========== */
.todo-item[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.55rem 0;
    border-bottom: 1px solid var(--border, #E5DDD4);
    cursor: pointer;
}

.todo-item:last-of-type[b-2wi4jdznhv] {
    border-bottom: none;
}

.todo-check[b-2wi4jdznhv] {
    width: 1.1rem;
    height: 1.1rem;
    border-radius: 5px;
    border: 2px solid var(--border, #E5DDD4);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}

.todo-check:hover[b-2wi4jdznhv] {
    border-color: var(--blue, #2B5797);
}

.todo-check.done[b-2wi4jdznhv] {
    background: var(--blue, #2B5797);
    border-color: var(--blue, #2B5797);
}

.todo-check.done[b-2wi4jdznhv]::after {
    content: '✓';
    color: white;
    font-size: 0.65rem;
    font-weight: 700;
}

.todo-text[b-2wi4jdznhv] {
    flex: 1;
    font-size: 0.9rem;
    color: var(--dark, #16213E);
}

.todo-text.done-text[b-2wi4jdznhv] {
    text-decoration: line-through;
    color: var(--muted, #9CA3AF);
}

.todo-due[b-2wi4jdznhv] {
    font-size: 0.7rem;
    color: var(--muted, #9CA3AF);
    white-space: nowrap;
}

.todo-due.overdue[b-2wi4jdznhv] {
    color: var(--terra, #E8543A);
    font-weight: 700;
}

/* 期限が近い（7日以内）ToDo — 期限切れ(overdue)ほど強くないが、放置しないよう
   ゴールドのバッジで目立たせる（tomova_mobile_brushup_instructions.md 1-4）。
   PC/スマホ両方の.todo-itemに適用（このバッジ自体はd-mobile-only化しない）。 */
.todo-due.soon[b-2wi4jdznhv] {
    background: var(--gold-l, #FFFBEB);
    color: #A87A00;
    font-weight: 700;
    padding: 0.1rem 0.45rem;
    border-radius: 10px;
}

.todo-add-btn[b-2wi4jdznhv] {
    width: 100%;
    margin-top: 0.6rem;
    padding: 0.5rem;
    border: 1.5px dashed var(--border, #E5DDD4);
    border-radius: 8px;
    background: transparent;
    color: var(--muted, #9CA3AF);
    font-size: 0.8rem;
    cursor: pointer;
    font-family: inherit;
    transition: border-color 0.15s, color 0.15s;
}

.todo-add-btn:hover[b-2wi4jdznhv] {
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

/* ========== 汎用リストアイテム（承認待ちワークフロー） ========== */
/* .know-item/.todo-itemと同じ「境界線区切りのフラット行」に統一。
   以前はbackground+border-radiusで1件ごとに箱型（ミニカード）になっており、
   他の2つのリストより行の密度が低かった（08-17）。 */
.info-item[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.6rem 0.1rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
    text-decoration: none;
    color: inherit;
    transition: background 0.15s;
}

.info-item:last-child[b-2wi4jdznhv] {
    border-bottom: none;
}

.info-item:hover[b-2wi4jdznhv] {
    background: var(--light, #F7F4F0);
    color: inherit;
}

.info-item-icon[b-2wi4jdznhv] {
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 0.9rem;
}

.info-item-main[b-2wi4jdznhv] {
    flex: 1;
    min-width: 0;
}

.info-item-title[b-2wi4jdznhv] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--dark, #16213E);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.info-item-meta[b-2wi4jdznhv] {
    font-size: 0.7rem;
    color: var(--muted, #9CA3AF);
    margin-top: 0.1rem;
}

.info-item-badge[b-2wi4jdznhv] {
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.15rem 0.55rem;
    border-radius: 10px;
    white-space: nowrap;
    flex-shrink: 0;
}

.badge-warn[b-2wi4jdznhv] {
    background: #FFF8E1;
    color: var(--warning, #F57F17);
}

/* ========== ミニカレンダー ========== */
.mini-cal-btn[b-2wi4jdznhv] {
    width: 1.4rem;
    height: 1.4rem;
    border-radius: 5px;
    border: 1px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
    color: var(--mid, #4B5563);
    transition: background 0.15s;
}

.mini-cal-btn:hover[b-2wi4jdznhv] {
    background: var(--light, #F7F4F0);
}

/* ========== 最新ナレッジ ========== */
.know-item[b-2wi4jdznhv] {
    padding: 0.7rem 1.1rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
    cursor: pointer;
    transition: background 0.15s;
}

.know-item:last-child[b-2wi4jdznhv] {
    border-bottom: none;
}

.know-item:hover[b-2wi4jdznhv] {
    background: var(--light, #F7F4F0);
}

.know-cat[b-2wi4jdznhv] {
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--terra, #E8543A);
    margin-bottom: 0.15rem;
}

.know-title[b-2wi4jdznhv] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--dark, #16213E);
    margin-bottom: 0.15rem;
}

.know-meta[b-2wi4jdznhv] {
    font-size: 0.68rem;
    color: var(--muted, #9CA3AF);
}

/* ========== スマホ専用（≤767.98px、.d-mobile-onlyでPCでは非表示）==========
   tomova_home_mobile_brushup.html を参照。サマリーカード→通知チップ、
   週間グリッド→日付タブ＋タイムライン、最新ナレッジ→横スクロールカードの
   3つの代替表示。表示切り替え自体は app.css の .d-mobile-only/.d-none-mobile
   が担うので、ここでは見た目だけを定義する。 */

/* ----- 通知サマリー（縦積み3行） -----
   横スクロールチップ版（overflow-x:auto + flex-shrink:0のチップ列）は
   iPhone 12 miniの実機で3枚目が見切れる不具合が解消しなかったため廃止。
   縦積みはoverflow-x/flex-shrinkの調整が一切不要で、この種の崩れが
   構造的に起きない（tomova_mobile_brushup_instructions.md改訂版・
   home_notify_stacked.png・08-18）。 */
.notify-list[b-2wi4jdznhv] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0 0 0.75rem;
}

.notify-row[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: var(--white, #fff);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    padding: 0.75rem 0.875rem;
    position: relative;
    text-decoration: none;
    color: inherit;
}

.notify-row .ic[b-2wi4jdznhv] {
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.0625rem;
    flex-shrink: 0;
}

.notify-row.chat .ic[b-2wi4jdznhv],
.notify-row.msg .ic[b-2wi4jdznhv] {
    background: var(--blue-l, #EBF1FA);
}

.notify-row.mail .ic[b-2wi4jdznhv] {
    background: var(--terra-l, #FEF0EC);
}

.notify-row-label[b-2wi4jdznhv] {
    font-size: 0.78rem;
    color: var(--mid, #4B5563);
    font-weight: 600;
    flex: 1;
    min-width: 0;
}

.notify-row-num[b-2wi4jdznhv] {
    font-size: 1.1875rem;
    font-weight: 800;
    color: var(--dark, #16213E);
    line-height: 1;
    flex-shrink: 0;
}

.notify-row-num .unit[b-2wi4jdznhv] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--muted, #9CA3AF);
    margin-left: 0.125rem;
}

.notify-row .chevron[b-2wi4jdznhv] {
    color: var(--border, #E5DDD4);
    flex-shrink: 0;
}

.notify-row .new-badge[b-2wi4jdznhv] {
    position: absolute;
    top: 0.625rem;
    right: 2.125rem;
    background: var(--terra, #E8543A);
    color: white;
    font-size: 0.5625rem;
    font-weight: 800;
    padding: 0.125rem 0.375rem;
    border-radius: 8px;
    letter-spacing: 0.03em;
}

/* ----- 今週の予定：日付タブ＋タイムライン ----- */
.week-strip[b-2wi4jdznhv] {
    display: flex;
    min-width: 0;
    gap: 0.3rem;
    padding: 0.6rem 0.8rem 0.6rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.week-strip[b-2wi4jdznhv]::-webkit-scrollbar {
    display: none;
}

.day-chip[b-2wi4jdznhv] {
    flex-shrink: 0;
    width: 2.5rem;
    text-align: center;
    padding: 0.4rem 0;
    border-radius: 10px;
    cursor: pointer;
}

.day-chip.today[b-2wi4jdznhv] {
    background: var(--blue, #2B5797);
}

.day-chip.selected:not(.today)[b-2wi4jdznhv] {
    background: var(--blue-l, #EBF1FA);
    box-shadow: inset 0 0 0 1.5px var(--blue, #2B5797);
}

.day-chip-dow[b-2wi4jdznhv] {
    font-size: 0.6rem;
    color: var(--muted, #9CA3AF);
}

.day-chip.today .day-chip-dow[b-2wi4jdznhv] {
    color: rgba(255, 255, 255, 0.7);
}

.day-chip-num[b-2wi4jdznhv] {
    font-size: 0.85rem;
    font-weight: 800;
    color: var(--dark, #16213E);
    margin-top: 0.05rem;
}

.day-chip.today .day-chip-num[b-2wi4jdznhv] {
    color: white;
}

.day-chip.sun .day-chip-num[b-2wi4jdznhv] {
    color: var(--terra, #E8543A);
}

.day-chip.sat .day-chip-num[b-2wi4jdznhv] {
    color: var(--blue, #2B5797);
}

.day-chip-evt-dot[b-2wi4jdznhv] {
    width: 0.25rem;
    height: 0.25rem;
    border-radius: 50%;
    background: var(--blue, #2B5797);
    margin: 0.2rem auto 0;
}

.day-chip.today .day-chip-evt-dot[b-2wi4jdznhv] {
    background: white;
}

.day-chip.empty .day-chip-evt-dot[b-2wi4jdznhv] {
    visibility: hidden;
}

.mobile-event-list[b-2wi4jdznhv] {
    display: flex;
    flex-direction: column;
    padding: 0 0.8rem 0.6rem;
}

.mobile-event-item[b-2wi4jdznhv] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.5rem 0;
    border-top: 1px solid var(--light, #F7F4F0);
    cursor: pointer;
}

.mobile-event-item:first-child[b-2wi4jdznhv] {
    border-top: none;
}

.mobile-event-date[b-2wi4jdznhv] {
    width: 2.6rem;
    flex-shrink: 0;
    text-align: right;
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--dark, #16213E);
}

/* tomova_home_mobile_brushup.html の.event-bar相当。カテゴリ色は
   CalendarDisplay.EventColorClass()が付与するcat-color-*が持つcolor値
   (app.cssで定義)をcurrentColor経由でそのまま使う ―
   .home-calendar-event の border-left:2px solid currentColor と同じ手法。 */
.mobile-event-bar[b-2wi4jdznhv] {
    width: 3px;
    height: 1.75rem;
    border-radius: 2px;
    flex-shrink: 0;
    background: currentColor;
}

.mobile-event-title[b-2wi4jdznhv] {
    flex: 1;
    min-width: 0;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--dark, #16213E);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mobile-event-empty[b-2wi4jdznhv] {
    padding: 1rem 0.8rem;
    text-align: center;
    font-size: 0.75rem;
    color: var(--muted, #9CA3AF);
}

/* ----- 最新ナレッジ：横スクロールカード ----- */
.knowledge-scroll[b-2wi4jdznhv] {
    display: flex;
    min-width: 0;
    gap: 0.5rem;
    overflow-x: auto;
    padding: 0 0.8rem 0.7rem;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.knowledge-scroll[b-2wi4jdznhv]::-webkit-scrollbar {
    display: none;
}

.knowledge-card[b-2wi4jdznhv] {
    flex-shrink: 0;
    width: 10.5rem;
    background: var(--light, #F7F4F0);
    border-radius: 10px;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--border, #E5DDD4);
    cursor: pointer;
}

.knowledge-cat[b-2wi4jdznhv] {
    font-size: 0.6rem;
    font-weight: 700;
    color: var(--terra, #E8543A);
    margin-bottom: 0.25rem;
}

.knowledge-title[b-2wi4jdznhv] {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--dark, #16213E);
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: 0.4rem;
    min-height: 2.1rem;
}

.knowledge-meta[b-2wi4jdznhv] {
    font-size: 0.6rem;
    color: var(--muted, #9CA3AF);
}
/* /Components/Pages/Knowledge.razor.rz.scp.css */
/* ========== 単一パネル（詳細・履歴・編集） ========== */
.knowledge-panel[b-txw1myz4mz] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
/*    margin-bottom: 1rem;*/
}

.knowledge-panel .btn:not(.btn-link)[b-txw1myz4mz] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.knowledge-panel .btn:not(.btn-link):hover:not(:disabled)[b-txw1myz4mz] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.knowledge-panel .btn:not(.btn-link):active:not(:disabled)[b-txw1myz4mz] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.knowledge-back-btn[b-txw1myz4mz] {
    color: var(--blue, #2B5797);
    border-color: var(--border, #E5DDD4);
    background-color: var(--white, #fff);
}

.knowledge-back-btn:hover[b-txw1myz4mz] {
    background-color: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.knowledge-history-item[b-txw1myz4mz] {
    padding: 0.75rem 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 8px;
    background: var(--light, #F7F4F0);
}

.knowledge-history-body[b-txw1myz4mz] {
    white-space: pre-wrap;
    word-break: break-word;
    font-size: 0.9rem;
    margin-top: 0.5rem;
}

.knowledge-meta-row[b-txw1myz4mz] {
    border-top: 1px solid var(--border, #E5DDD4);
}

div.knowledge-meta-row.mb-3[b-txw1myz4mz] {
    border-top: none;
    border-bottom: 1px solid var(--border, #E5DDD4);
}

/* Tag/scope/status chip — replaces Bootstrap's badge bg-secondary/bg-light etc. */
.knowledge-tag[b-txw1myz4mz] {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 10px;
    background: var(--light, #F7F4F0);
    border: 1px solid var(--border, #E5DDD4);
    color: var(--mid, #4B5563);
    font-size: 0.72rem;
    font-weight: 600;
}

.knowledge-tag-blue[b-txw1myz4mz] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.knowledge-comments-section[b-txw1myz4mz] {
    padding-top: 1rem;
    border-top: 1px solid var(--border, #E5DDD4);
}

.knowledge-comment[b-txw1myz4mz] {
    padding: 0.6rem 0.8rem;
    border-radius: 8px;
    background-color: var(--light, #F7F4F0);
}

/* ========== 一覧（サイドバー＋メイン） ========== */
.knowledge-layout[b-txw1myz4mz] {
    display: flex;
    flex: 1;
    min-height: 0;
    gap: 1rem;
    padding-bottom: 1rem;
}

.knowledge-layout .btn:not(.btn-link)[b-txw1myz4mz] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.knowledge-layout .btn:not(.btn-link):hover:not(:disabled)[b-txw1myz4mz] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.knowledge-sidebar[b-txw1myz4mz] {
    width: 16rem;
    flex-shrink: 0;
    padding: 1rem 0.75rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--light, #F7F4F0);
    overflow-y: auto;
}

.knowledge-compose-btn[b-txw1myz4mz] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    border-radius: 10px;
    font-weight: 600;
}

.knowledge-sidebar-heading[b-txw1myz4mz] {
    font-size: 0.8rem;
    color: var(--muted, #9CA3AF);
    font-weight: 600;
    padding: 0 0.2rem;
    margin-bottom: 0.4rem;
}

.knowledge-folder-nav[b-txw1myz4mz] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.knowledge-folder-item-wrap[b-txw1myz4mz] {
    display: flex;
    align-items: center;
    gap: 0.2rem;
}

.knowledge-folder-item[b-txw1myz4mz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    border: none;
    background: none;
    text-align: left;
    padding: 0.45rem 0.7rem;
    border-radius: 8px;
    font-size: 0.85rem;
    font-family: inherit;
    color: var(--mid, #4B5563);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.knowledge-folder-item:hover[b-txw1myz4mz] {
    background: var(--white, #fff);
}

.knowledge-folder-icon[b-txw1myz4mz] {
    font-size: 0.9rem;
    color: var(--muted, #9CA3AF);
    flex-shrink: 0;
    width: 1.1rem;
    text-align: center;
}

.knowledge-folder-name[b-txw1myz4mz] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.knowledge-folder-active[b-txw1myz4mz],
.knowledge-folder-active:hover[b-txw1myz4mz] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-weight: 700;
}

.knowledge-folder-active .knowledge-folder-icon[b-txw1myz4mz] {
    color: var(--blue, #2B5797);
}

.knowledge-folder-delete[b-txw1myz4mz] {
    flex-shrink: 0;
    border: none;
    background: none;
    color: var(--muted, #9CA3AF);
    font-size: 0.9rem;
    line-height: 1;
    padding: 0.3rem;
    cursor: pointer;
}

.knowledge-folder-delete:hover[b-txw1myz4mz] {
    color: var(--terra, #E8543A);
}

.knowledge-tag-pill[b-txw1myz4mz] {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    padding: 0.2rem 0.6rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 20px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.knowledge-tag-pill:hover[b-txw1myz4mz] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
}

.knowledge-tag-pill-count[b-txw1myz4mz] {
    color: var(--muted, #9CA3AF);
}

.knowledge-tag-pill-active[b-txw1myz4mz],
.knowledge-tag-pill-active:hover[b-txw1myz4mz] {
    background: var(--blue, #2B5797);
    border-color: var(--blue, #2B5797);
    color: #fff;
}

.knowledge-tag-pill-active .knowledge-tag-pill-count[b-txw1myz4mz] {
    color: rgba(255, 255, 255, 0.8);
}

.knowledge-main[b-txw1myz4mz] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.knowledge-tab-pill[b-txw1myz4mz] {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 20px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.knowledge-tab-pill:hover[b-txw1myz4mz] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
}

.knowledge-tab-pill-active[b-txw1myz4mz],
.knowledge-tab-pill-active:hover[b-txw1myz4mz] {
    background: var(--blue, #2B5797);
    border-color: var(--blue, #2B5797);
    color: #fff;
}

.knowledge-card[b-txw1myz4mz] {
    padding: 0.9rem 1.1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    background-color: var(--white, #fff);
    cursor: pointer;
    transition: box-shadow 0.15s, transform 0.1s, border-color 0.15s;
}

.knowledge-card:hover[b-txw1myz4mz] {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    transform: translateY(-1px);
    border-color: var(--blue, #2B5797);
}

.knowledge-preview[b-txw1myz4mz] {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

@media (max-width: 768px) {
    .knowledge-layout[b-txw1myz4mz] {
        flex-direction: column;
    }

    .knowledge-sidebar[b-txw1myz4mz] {
        width: 100%;
    }
}
/* /Components/Pages/Mail.razor.rz.scp.css */
.mail-layout[b-f9bkp2urgv] {
    display: flex;
    flex: 1;
    min-height: 0;
    gap: 1rem;
    /* Same as .webmail-layout (Webmail.razor.css) — .wg-article's own
       padding-bottom only applies at mobile widths, so on desktop this
       row's flex:1 children stretched flush to the browser window's bottom
       edge with no gap. Padding here shrinks them equally, opening a plain
       page-background gap below both columns instead. */
    padding-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.mail-layout .btn:not(.btn-link)[b-f9bkp2urgv] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.mail-layout .btn:not(.btn-link):hover:not(:disabled)[b-f9bkp2urgv] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.mail-layout .btn:not(.btn-link):active:not(:disabled)[b-f9bkp2urgv] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.mail-layout .btn:not(.btn-link):disabled[b-f9bkp2urgv] {
    background-image: none;
    box-shadow: none;
}

.mail-folders[b-f9bkp2urgv] {
    width: 14rem;
    padding: 1rem 0.75rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--light, #F7F4F0);
    overflow-y: auto;
}

.mail-compose-btn[b-f9bkp2urgv],
.btn-compose[b-f9bkp2urgv] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    background: #2B5797 !important;       /* Tomova Blue・フラット */
    background-image: none !important;    /* グラデーション削除 */
    box-shadow: none !important;          /* 光沢削除 */
    border: none !important;
    border-radius: 8px !important;        /* 角丸を小さく */
    font-size: 13px !important;
    font-weight: 700 !important;
    padding: 10px 18px !important;
    color: white !important;
    cursor: pointer !important;
    transition: background .15s !important;
    font-family: 'Noto Sans JP', sans-serif !important;
}

.mail-compose-btn:hover[b-f9bkp2urgv],
.btn-compose:hover[b-f9bkp2urgv] {
    background: #1A3A6B !important;       /* ホバーで濃く */
}

.mail-sidebar-heading[b-f9bkp2urgv] {
    font-size: 0.8rem;
    color: var(--muted, #9CA3AF);
    font-weight: 600;
}

/* Tomova風フォルダ一覧（Webmail.razor.cssの.webmail-folder-nav相当） */
.mail-folder-nav[b-f9bkp2urgv] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.mail-folder-item[b-f9bkp2urgv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    border: none;
    background: none;
    text-align: left;
    padding: 0.45rem 0.7rem;
    border-radius: 8px;
    font-size: 0.85rem;
    font-family: inherit;
    color: var(--mid, #4B5563);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.mail-folder-item:hover[b-f9bkp2urgv] {
    background: var(--white, #fff);
}

.mail-folder-icon[b-f9bkp2urgv] {
    font-size: 0.9rem;
    color: var(--muted, #9CA3AF);
    flex-shrink: 0;
    width: 1.1rem;
    text-align: center;
}

.mail-folder-name[b-f9bkp2urgv] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mail-folder-active[b-f9bkp2urgv],
.mail-folder-active:hover[b-f9bkp2urgv] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-weight: 700;
}

.mail-folder-active .mail-folder-icon[b-f9bkp2urgv] {
    color: var(--blue, #2B5797);
}

/* overflow:hidden (not auto) — mirrors Chat.razor.css's .chat-main/.chat-messages
   split, and Webmail.razor.css's own .webmail-main (see its comment for the
   full story). .mail-list-view/.mail-detail already own their own bounded
   scroll region; .mail-compose gets the same treatment below. Without this,
   .mail-compose (which has no such region of its own) let .mail-main's
   overflow-y:auto compete with the outer .wg-content shell scroll
   (MainLayout.razor.css) one level up — on iOS a plain vertical drag over
   that ambiguity showed up as the whole form jittering up/down/left/right
   even with no keyboard involved (confirmed on a real iPhone 12 mini,
   2026-08-07). */
.mail-main[b-f9bkp2urgv] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    /* Column flex so .mail-list-view/.mail-detail can claim exactly the
       remaining space below the menu button via flex:1 and scroll
       internally — mirrors Webmail.razor.css's .webmail-main. */
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

/* Compose gives up on owning any scroll region of its own — on a real
   iPhone 12 mini this app's nested flex:1/min-height:0/overflow-y:auto
   pattern (used successfully by .mail-list-scroll/.mail-detail-scroll
   below) never reliably resolved a real height for it, so content past that
   unresolved boundary was either unreachable (scroll region) or outright
   clipped by .mail-main's overflow:hidden (fixed/footer action bar
   attempts) — all confirmed broken on-device, 2026-08-07. Home.razor's
   .main-grid was pointed to as a working comparison: it has NO overflow of
   its own at all, so .wg-content (MainLayout.razor.css) is the only
   scrolling ancestor anywhere in its chain, and it just works. Compose now
   copies that: .mail-main-flow (applied to .mail-main only while
   View==Compose, see the .mail-main rule above) switches overflow back to
   visible, and .mail-compose is otherwise a plain block form with no flex
   sizing or overflow of its own — content simply grows .wg-content's
   scrollHeight like any other page, 送信/キャンセル included as ordinary
   content at the bottom (confirmed reachable once scrolling worked again,
   2026-08-07). */
/* align-self:flex-start/height:auto/overflow:visible (the "flow, size to
   own content" behavior, kept for the iPhone-jitter reasons explained
   above) is mobile-only — see the max-width:768px media query further
   down. On desktop (min-width:769px block, also further down)
   .mail-main-flow instead keeps the base .mail-main rule's
   flex:1/min-height:0/overflow:hidden sizing (nothing overrides it there
   anymore), stretching to match .mail-folders'/受信一覧's height exactly —
   this height-mismatch fix (2026-08-08) is desktop-only and unrelated to
   the iPhone bug. */
.mail-main.mail-main-flow[b-f9bkp2urgv] {
    min-height: 0;
}

.mail-compose-actions[b-f9bkp2urgv] {
    display: flex;
    gap: 0.5rem;
    padding-top: 0.75rem;
    padding-bottom: 1rem;
    border-top: 1px solid var(--border, #E5DDD4);
    margin-top: 0.75rem;
}

.mail-list-view[b-f9bkp2urgv] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

/* .mail-main uses overflow:hidden (see its own comment above), so every view
   rendered inside it must own its own bounded scroll region — .mail-rules
   (振り分けルール, 2026-08-31) has no separate inner scroll wrapper the way
   .mail-detail-scroll/.mail-list-scroll do, so this rule itself is that
   region. Without it, a rules list + open edit form taller than .mail-main's
   available height would just be silently clipped instead of scrolling. */
.mail-rules[b-f9bkp2urgv] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

.mail-search-form[b-f9bkp2urgv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
    margin-bottom: 0.75rem;
}

.mail-search-form input[type="text"][b-f9bkp2urgv] {
    flex: 1;
    min-width: 0;
}

.mail-list-sticky[b-f9bkp2urgv] {
    flex-shrink: 0;
    background-color: #fff;
}

.mail-list-header[b-f9bkp2urgv] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding-bottom: 0.5rem;
    margin-bottom: 0.25rem;
    border-bottom: 2px solid #dee2e6;
}

.mail-list-count[b-f9bkp2urgv] {
    color: #6c757d;
    font-size: 0.85rem;
}

.mail-empty[b-f9bkp2urgv] {
    color: #6c757d;
    padding: 1rem 0.25rem;
}

.mail-list-columns[b-f9bkp2urgv] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.3rem 0.5rem 0.3rem 0.25rem;
    border-bottom: 1px solid #dee2e6;
    font-size: 0.8rem;
    font-weight: 600;
    color: #6c757d;
}

.mail-unread-dot-spacer[b-f9bkp2urgv] {
    width: 0.45rem;
    flex-shrink: 0;
}

/* Padded label gives a ~1.5rem (24px) tap target that toggles the checkbox
   (label auto-associates with its nested input) while keeping the checkbox
   itself visually small — same trick as Webmail.razor.css. */
.mail-row-checkbox-wrap[b-f9bkp2urgv] {
    width: 1.5rem;
    height: 1.5rem;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    cursor: pointer;
    margin: -0.25rem 0;
}

.mail-list-scroll[b-f9bkp2urgv] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.mail-list[b-f9bkp2urgv] {
    border-top: 1px solid #eee;
}

.mail-row[b-f9bkp2urgv] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.55rem 0.5rem 0.55rem 0.25rem;
    border-bottom: 1px solid #eee;
    cursor: pointer;
}

.mail-row:hover[b-f9bkp2urgv] {
    background-color: var(--blue-l, #EBF1FA);
}

.mail-row-unread[b-f9bkp2urgv] {
    background-color: var(--light, #F7F4F0);
}

.mail-row-unread .mail-row-from[b-f9bkp2urgv] {
    font-weight: 700;
}

.mail-unread-dot[b-f9bkp2urgv] {
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background-color: var(--terra, #E8543A);
    flex-shrink: 0;
    align-self: center;
    visibility: hidden;
}

.mail-row-unread .mail-unread-dot[b-f9bkp2urgv] {
    visibility: visible;
}

/* Only shown in a custom folder view, where rows of both directions
   (received + sent) can be mixed in the same list. */
.mail-row-kind-badge[b-f9bkp2urgv] {
    flex-shrink: 0;
    width: 2.4rem;
    color: #6c757d;
    font-size: 0.75rem;
}

.mail-row-from[b-f9bkp2urgv] {
    flex: 0 1 12rem;
    min-width: 5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mail-row-subject[b-f9bkp2urgv] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mail-row-date[b-f9bkp2urgv] {
    width: 5.5rem;
    flex-shrink: 0;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #6c757d;
    font-size: 0.85rem;
}

.mail-compose[b-f9bkp2urgv],
.mail-detail[b-f9bkp2urgv] {
    max-width: 44rem;
}

.mail-compose[b-f9bkp2urgv] {
    padding-bottom: 1rem;
}

.mail-recipients[b-f9bkp2urgv] {
    border: 1px solid #dee2e6;
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
    max-height: 10rem;
    overflow-y: auto;
}

/* The action bar (戻る/返信/転送/削除) stays visible while a long message
   body scrolls, instead of scrolling away with it — mirrors
   .webmail-detail-actions/.webmail-detail-scroll in Webmail.razor.css. */
.mail-detail[b-f9bkp2urgv] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.mail-detail-actions[b-f9bkp2urgv] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 0.9rem;
}

.mail-toolbar-divider[b-f9bkp2urgv] {
    width: 1px;
    height: 24px;
    background: var(--border, #E5DDD4);
    margin: 0 2px;
    flex-shrink: 0;
}

/* 戻る／削除: icon-only bordered buttons — same visual language as
   Webmail.razor.css's .webmail-toolbar-back/-danger. */
.mail-toolbar-back[b-f9bkp2urgv],
.mail-toolbar-danger[b-f9bkp2urgv] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    border: 1.5px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--mid, #4B5563);
    transition: background .15s, border-color .15s, color .15s;
    flex-shrink: 0;
}

.mail-toolbar-back:hover[b-f9bkp2urgv] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.mail-toolbar-danger[b-f9bkp2urgv] {
    color: var(--terra, #E8543A);
}

.mail-toolbar-danger:hover[b-f9bkp2urgv] {
    background: var(--terra-l, #FEF0EC);
    border-color: var(--terra, #E8543A);
}

.mail-toolbar-danger:disabled[b-f9bkp2urgv] {
    opacity: .5;
    cursor: not-allowed;
}

/* 返信: flat Tomova Blue, no gloss. */
.mail-toolbar-primary[b-f9bkp2urgv] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    background: var(--blue, #2B5797);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s;
    font-family: inherit;
    white-space: nowrap;
}

.mail-toolbar-primary:hover[b-f9bkp2urgv] {
    background: var(--blue-d, #1A3A6B);
}

/* 転送: outline style. */
.mail-toolbar-outline[b-f9bkp2urgv] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    border: 1.5px solid var(--border, #E5DDD4);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color .15s, color .15s, background .15s;
    font-family: inherit;
    white-space: nowrap;
}

.mail-toolbar-outline:hover[b-f9bkp2urgv] {
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
    background: var(--blue-l, #EBF1FA);
}

.mail-toolbar-outline:disabled[b-f9bkp2urgv],
.mail-toolbar-primary:disabled[b-f9bkp2urgv] {
    opacity: .6;
    cursor: not-allowed;
}

/* 選択項目の削除／添付削除など: outline shape, red text — labeled sibling
   of .mail-toolbar-danger (icon-only). Matches Webmail.razor.css's
   .webmail-toolbar-danger-outline. */
.mail-toolbar-danger-outline[b-f9bkp2urgv] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: var(--white, #fff);
    color: var(--terra, #E8543A);
    border: 1.5px solid var(--border, #E5DDD4);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color .15s, color .15s, background .15s;
    font-family: inherit;
    white-space: nowrap;
}

.mail-toolbar-danger-outline:hover[b-f9bkp2urgv] {
    border-color: var(--terra, #E8543A);
    background: var(--terra-l, #FEF0EC);
}

.mail-toolbar-danger-outline:disabled[b-f9bkp2urgv] {
    opacity: .6;
    cursor: not-allowed;
}

.mail-detail-scroll[b-f9bkp2urgv] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

.mail-detail-header[b-f9bkp2urgv] {
    margin-bottom: 1rem;
    padding: 0.9rem 1.1rem;
    background-color: var(--blue-l, #EBF1FA);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 6px;
}

.mail-detail-title[b-f9bkp2urgv] {
    margin-bottom: 0.6rem;
    word-break: break-word;
}

.mail-detail-body[b-f9bkp2urgv] {
    white-space: pre-wrap;
    word-break: break-word;
}

.mail-menu-button[b-f9bkp2urgv] {
    display: none;
}

/* Card-internal-scroll for Compose's <form> — desktop only. Mirrors
   Webmail.razor.css's identical fix; see that file's own comment on
   ".webmail-main.webmail-main-flow ::deep form.webmail-compose" for the
   full history. Short version: gating this to desktop-only isn't just
   cautious symmetry with Webmail — the equivalent unconditional version
   was confirmed BROKEN on a real iPhone 12 mini for Webmail (the outer
   wrapper's mobile revert to flow-via-.wg-content alone wasn't enough;
   this inner rule forcing flex:1/min-height:0 onto the <form> at every
   width was what actually collapsed the card's height on-device). Mail's
   identical nested-flex-depth architecture gets the same fix pre-emptively. */
@media (min-width: 769px) {
    .mail-main.mail-main-flow[b-f9bkp2urgv]  form.mail-compose {
        flex: 1;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
}

@media (max-width: 768px) {
    /* Compose, mobile only: reverted back to "flow, size to own content"
       (2026-08-08, same day) — unifying it to the same fixed-height/
       ::deep-scroll shape as List/Detail (see the ::deep rule above) was
       tried and confirmed BROKEN on a real iPhone 12 mini for the Webmail
       equivalent (本文 textarea cut off mid-field, 送信 button gone below
       a too-short card — see Webmail.razor.css's identical rule for the
       full writeup). Reverting Mail's Compose the same way pre-emptively,
       same nested-flex-depth architecture, same expected failure. Desktop
       (min-width:769px, implicit — this block only applies below 769px)
       keeps the card-internal-scroll ::deep rule above, unchanged. */
    .mail-main.mail-main-flow[b-f9bkp2urgv] {
        align-self: flex-start;
        height: auto;
        overflow: visible;
    }

    .mail-folders[b-f9bkp2urgv],
    .mail-main[b-f9bkp2urgv] {
        width: 100%;
    }

    .mail-main[b-f9bkp2urgv] {
        padding: 0.5rem;
    }

    .mail-row[b-f9bkp2urgv],
    .mail-list-columns[b-f9bkp2urgv] {
        padding-left: 0.1rem;
        padding-right: 0.25rem;
    }

    .mail-folders.mail-folders-mobile-hidden[b-f9bkp2urgv],
    .mail-main.mail-main-mobile-hidden[b-f9bkp2urgv] {
        display: none;
    }

    .mail-menu-button[b-f9bkp2urgv] {
        display: inline-block;
        margin-bottom: 0.5rem;
    }

    .mail-search-form[b-f9bkp2urgv] {
        flex-wrap: wrap;
    }

    .mail-search-form input[type="text"][b-f9bkp2urgv] {
        flex-basis: 100%;
    }

    /* Gmail-style 2-line row: line 1 is 差出人/宛先 + 日時, line 2 is 件名 on
       its own full-width line — same layout trick as Webmail.razor.css. */
    .mail-row[b-f9bkp2urgv],
    .mail-list-columns[b-f9bkp2urgv] {
        flex-wrap: wrap;
    }

    .mail-row-from[b-f9bkp2urgv] {
        order: 1;
        flex: 1 1 0%;
        min-width: 0;
        text-align: left;
    }

    .mail-row-date[b-f9bkp2urgv] {
        order: 2;
    }

    .mail-row-subject[b-f9bkp2urgv] {
        order: 3;
        flex-basis: 100%;
        margin-top: 0.15rem;
    }

    .mail-row[b-f9bkp2urgv] {
        border-bottom-color: #ced4da;
    }

    .mail-unread-dot[b-f9bkp2urgv],
    .mail-unread-dot-spacer[b-f9bkp2urgv],
    .mail-row-kind-badge[b-f9bkp2urgv] {
        display: none;
    }
}
/* /Components/Pages/Memos.razor.rz.scp.css */
.memo-item[b-ucwsr7ekpi] {
    transition: background-color 0.1s;
}

.memo-title-input:focus[b-ucwsr7ekpi] {
    box-shadow: none;
}

.col-lg-9[b-ucwsr7ekpi] {
    background-color: #fff;
    border-radius: 0.5rem;
    padding: 0.8rem;
}

.memo-back-btn[b-ucwsr7ekpi] {
    display: none;
}

/* Below md, Bootstrap's col-md-4/col-md-8 both go full-width and stack —
   which used to mean the list and the detail pane were both visible at once,
   one below the other. Below this breakpoint only, show exactly one pane at
   a time (driven by ShowMemoList) instead of letting them stack. */
@media (max-width: 767.98px) {
    .memo-col-mobile-hidden[b-ucwsr7ekpi] {
        display: none;
    }

    .memo-back-btn[b-ucwsr7ekpi] {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2rem;
        height: 2rem;
        margin-bottom: 0.5rem;
        border: none;
        background: none;
        font-size: 1.5rem;
        line-height: 1;
        color: var(--blue, #2B5797);
        cursor: pointer;
        padding: 0;
    }
}
/* /Components/Pages/Projects.razor.rz.scp.css */
.projects-panel[b-ltx114u00l] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
    /* Webmail.razor.css's .webmail-layout uses the same padding-bottom trick so
       its cards stop short of the viewport's bottom edge instead of touching it
       flush — mirrored here so the projects card gets the same breathing room. */
    margin-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.projects-panel .btn:not(.btn-link)[b-ltx114u00l] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.projects-panel .btn:not(.btn-link):hover:not(:disabled)[b-ltx114u00l] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.projects-panel .btn:not(.btn-link):active:not(:disabled)[b-ltx114u00l] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.projects-new-btn[b-ltx114u00l] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 10px;
    font-weight: 600;
}

.projects-back-btn[b-ltx114u00l] {
    color: var(--blue, #2B5797);
    border-color: var(--border, #E5DDD4);
    background-color: var(--white, #fff);
}

.projects-back-btn:hover[b-ltx114u00l] {
    background-color: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

/* Status badges — Tomova ステータスカラー（背景を薄く、文字をステータス色に） */
.projects-badge[b-ltx114u00l] {
    display: inline-block;
    padding: 0.2rem 0.6rem;
    border-radius: 10px;
    font-size: 0.72rem;
    font-weight: 700;
}

.projects-badge.status-notstarted[b-ltx114u00l] {
    background: var(--status-notstarted-bg, #F0EDE8);
    color: var(--status-notstarted, #9CA3AF);
}

.projects-badge.status-planned[b-ltx114u00l] {
    background: var(--status-planned-bg, #FFFBEB);
    color: var(--status-planned, #D4A800);
}

.projects-badge.status-progress[b-ltx114u00l] {
    background: var(--status-progress-bg, #EBF1FA);
    color: var(--status-progress, #2B5797);
}

.projects-badge.status-hold[b-ltx114u00l] {
    background: var(--status-hold-bg, #FFFBEB);
    color: var(--status-hold, #B8860B);
}

.projects-badge.status-done[b-ltx114u00l] {
    background: var(--status-done-bg, #E9F5EA);
    color: var(--status-done, #2E7D32);
}

.projects-badge.status-delay[b-ltx114u00l] {
    background: var(--status-delay-bg, #FEF0EC);
    color: var(--status-delay, #E8543A);
}

/* ========== プロジェクト一覧: サマリーカード ========== */

.summary-row[b-ltx114u00l] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 20px;
}

.sum-card[b-ltx114u00l] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 18px;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.sum-dot[b-ltx114u00l] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.sum-dot.status-progress[b-ltx114u00l] { background: var(--status-progress, #2B5797); }
.sum-dot.status-delay[b-ltx114u00l]    { background: var(--status-delay, #E8543A); }
.sum-dot.status-planned[b-ltx114u00l]  { background: var(--status-planned, #D4A800); }
.sum-dot.status-done[b-ltx114u00l]     { background: var(--status-done, #2E7D32); }

.sum-num[b-ltx114u00l] {
    font-size: 22px;
    font-weight: 800;
    color: var(--dark, #16213E);
    line-height: 1;
}

.sum-label[b-ltx114u00l] {
    font-size: 11px;
    color: var(--muted, #9CA3AF);
    margin-top: 3px;
}

/* ========== プロジェクト一覧: フィルターバー ========== */

.filter-bar[b-ltx114u00l] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

.filter-chip[b-ltx114u00l] {
    padding: 6px 15px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
    border: 1.5px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
    white-space: nowrap;
}

.filter-chip.active[b-ltx114u00l] {
    background: var(--dark, #16213E);
    border-color: var(--dark, #16213E);
    color: #fff;
}

.filter-chip:hover:not(.active)[b-ltx114u00l] {
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.filter-spacer[b-ltx114u00l] { flex: 1; }

.sort-select[b-ltx114u00l] {
    padding: 6px 12px;
    border-radius: 8px;
    border: 1.5px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    font-size: 12px;
    color: var(--mid, #4B5563);
}

/* ========== プロジェクト一覧: リスト ========== */

.list-wrap[b-ltx114u00l] {
    background: var(--white, #fff);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 14px;
    overflow: hidden;
}

.list-head[b-ltx114u00l] {
    display: grid;
    grid-template-columns: 2.2fr 1fr 0.9fr 1.6fr 0.9fr;
    gap: 12px;
    padding: 10px 18px;
    background: var(--light, #F7F4F0);
    border-bottom: 1px solid var(--border, #E5DDD4);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.5px;
    color: var(--muted, #9CA3AF);
    text-transform: uppercase;
}

.proj-row[b-ltx114u00l] {
    display: grid;
    grid-template-columns: 2.2fr 1fr 0.9fr 1.6fr 0.9fr;
    gap: 12px;
    align-items: center;
    padding: 14px 18px;
    border-bottom: 1px solid var(--border, #E5DDD4);
    cursor: pointer;
    transition: background .12s;
}

.proj-row:last-child[b-ltx114u00l] { border-bottom: none; }
.proj-row:hover[b-ltx114u00l] { background: var(--light, #F7F4F0); }

.empty-state[b-ltx114u00l] {
    padding: 50px 18px;
    text-align: center;
    color: var(--muted, #9CA3AF);
    font-size: 13px;
}

.proj-name-cell[b-ltx114u00l] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.proj-color-bar[b-ltx114u00l] {
    width: 4px;
    height: 32px;
    border-radius: 2px;
    flex-shrink: 0;
}

.proj-name-cell.status-progress   .proj-color-bar[b-ltx114u00l] { background: var(--status-progress, #2B5797); }
.proj-name-cell.status-delay      .proj-color-bar[b-ltx114u00l] { background: var(--status-delay, #E8543A); }
.proj-name-cell.status-done       .proj-color-bar[b-ltx114u00l] { background: var(--status-done, #2E7D32); }
.proj-name-cell.status-planned    .proj-color-bar[b-ltx114u00l] { background: var(--status-planned, #D4A800); }
.proj-name-cell.status-hold       .proj-color-bar[b-ltx114u00l] { background: var(--status-hold, #B8860B); }
.proj-name-cell.status-notstarted .proj-color-bar[b-ltx114u00l] { background: var(--status-notstarted, #9CA3AF); }

.proj-info[b-ltx114u00l] { min-width: 0; }

.proj-name[b-ltx114u00l] {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--dark, #16213E);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.proj-client[b-ltx114u00l] {
    font-size: 11px;
    color: var(--muted, #9CA3AF);
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.assignee[b-ltx114u00l] {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.avatar[b-ltx114u00l] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-size: 10px;
    font-weight: 700;
    flex-shrink: 0;
}

.assignee-name[b-ltx114u00l] {
    font-size: 12px;
    color: var(--mid, #4B5563);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.due-date[b-ltx114u00l] { font-size: 12px; color: var(--mid, #4B5563); }
.due-date.overdue[b-ltx114u00l] { color: var(--status-delay, #E8543A); font-weight: 700; }
.due-date.soon[b-ltx114u00l]    { color: var(--status-hold, #B8860B); font-weight: 700; }

.progress-cell[b-ltx114u00l] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.progress-cell .progress-track[b-ltx114u00l] { flex: 1; }

.progress-pct[b-ltx114u00l] {
    font-size: 11px;
    font-weight: 700;
    color: var(--dark, #16213E);
    width: 32px;
    text-align: right;
    flex-shrink: 0;
}

.status-badge[b-ltx114u00l] { white-space: nowrap; }

/* ========== レスポンシブ（プロジェクト一覧） ========== */

@media (max-width: 920px) {
    .summary-row[b-ltx114u00l] { grid-template-columns: repeat(2, 1fr); }
    .list-head[b-ltx114u00l] { display: none; }
    .proj-row[b-ltx114u00l] { grid-template-columns: 1fr; gap: 8px; }
    .assignee[b-ltx114u00l], .due-date[b-ltx114u00l], .progress-cell[b-ltx114u00l] {
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
    .due-date[b-ltx114u00l]::before { content: '期限　'; color: var(--muted, #9CA3AF); font-weight: 600; }
}

.progress-track[b-ltx114u00l] {
    height: 6px;
    background: #EEEAE4;
    border-radius: 4px;
    overflow: hidden;
}

.progress-fill[b-ltx114u00l] {
    height: 100%;
    border-radius: 4px;
    transition: width .3s;
}

.progress-fill.status-notstarted[b-ltx114u00l] { background: var(--status-notstarted, #9CA3AF); }
.progress-fill.status-planned[b-ltx114u00l]    { background: var(--status-planned, #D4A800); }
.progress-fill.status-progress[b-ltx114u00l]   { background: var(--status-progress, #2B5797); }
.progress-fill.status-hold[b-ltx114u00l]       { background: var(--status-hold, #B8860B); }
.progress-fill.status-done[b-ltx114u00l]       { background: var(--status-done, #2E7D32); }
.progress-fill.status-delay[b-ltx114u00l]      { background: var(--status-delay, #E8543A); }

.member-chip[b-ltx114u00l] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background-color: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-size: 0.8rem;
    font-weight: 700;
    position: relative;
}

.member-chip-owner[b-ltx114u00l] {
    position: absolute;
    bottom: -3px;
    right: -3px;
    font-size: 0.65rem;
    color: var(--gold, #F7C948);
}

/* ========== Gantt ========== */

.gantt-wrap[b-ltx114u00l] {
    overflow-x: auto;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 8px;
}

.gantt-grid[b-ltx114u00l] {
    display: grid;
    grid-auto-rows: min-content;
    width: max-content;
    min-width: 100%;
}

.gantt-sticky[b-ltx114u00l] {
    position: sticky;
    left: 0;
    z-index: 2;
    background-color: var(--white, #fff);
}

.gantt-corner[b-ltx114u00l] {
    border-bottom: 1px solid var(--border, #E5DDD4);
    border-right: 1px solid var(--border, #E5DDD4);
    background-color: var(--light, #F7F4F0);
}

.gantt-month-header[b-ltx114u00l] {
    background-color: var(--light, #F7F4F0);
    border-bottom: 1px solid var(--border, #E5DDD4);
    border-left: 1px solid var(--border, #E5DDD4);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.2rem 0.4rem;
    color: var(--mid, #4B5563);
    white-space: nowrap;
    overflow: hidden;
}

.gantt-day-header[b-ltx114u00l] {
    background-color: var(--light, #F7F4F0);
    border-bottom: 1px solid var(--border, #E5DDD4);
    border-left: 1px solid var(--border, #E5DDD4);
    font-size: 0.7rem;
    text-align: center;
    padding: 0.2rem 0;
    color: var(--muted, #9CA3AF);
}

.gantt-day-header.gantt-sat[b-ltx114u00l] {
    background-color: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.gantt-day-header.gantt-sun[b-ltx114u00l] {
    background-color: var(--terra-l, #FEF0EC);
    color: var(--terra, #E8543A);
}

.gantt-day-header.gantt-today-col[b-ltx114u00l] {
    background-color: var(--gold, #F7C948);
    color: var(--dark, #16213E);
    font-weight: 700;
}

.gantt-row-info[b-ltx114u00l] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 2.4rem;
    border-bottom: 1px solid #eee;
    border-right: 1px solid var(--border, #E5DDD4);
    cursor: pointer;
    font-size: 0.85rem;
    white-space: nowrap;
    overflow: hidden;
}

.gantt-row-info:hover[b-ltx114u00l] {
    background-color: var(--blue-l, #EBF1FA);
}

.gantt-row-priority-high[b-ltx114u00l] {
    box-shadow: inset 3px 0 0 var(--terra, #E8543A);
}

.gantt-collapse-btn[b-ltx114u00l] {
    border: none;
    background: none;
    padding: 0;
    width: 1rem;
    font-size: 0.7rem;
    color: var(--muted, #9CA3AF);
    flex-shrink: 0;
}

.gantt-collapse-spacer[b-ltx114u00l] {
    width: 1rem;
    flex-shrink: 0;
}

.gantt-check[b-ltx114u00l] {
    flex-shrink: 0;
    margin: 0;
}

.gantt-status-dot[b-ltx114u00l] {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    flex-shrink: 0;
}

.gantt-row-title[b-ltx114u00l] {
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1 1 auto;
    min-width: 0;
}

.gantt-assignee-badge[b-ltx114u00l] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    border-radius: 50%;
    background-color: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-size: 0.65rem;
    font-weight: 700;
    flex-shrink: 0;
}

.gantt-row-progress[b-ltx114u00l] {
    font-size: 0.7rem;
    color: var(--muted, #9CA3AF);
    flex-shrink: 0;
    width: 2.2rem;
    text-align: right;
}

.gantt-row-timeline[b-ltx114u00l] {
    position: relative;
    border-bottom: 1px solid #eee;
    background-image: repeating-linear-gradient(to right, var(--light, #F7F4F0) 0, var(--light, #F7F4F0) 1px, transparent 1px, transparent 26px);
}

.gantt-bar[b-ltx114u00l] {
    position: absolute;
    top: 6px;
    bottom: 6px;
    border-radius: 4px;
    cursor: pointer;
    overflow: hidden;
    box-sizing: border-box;
    min-width: 4px;
}

.gantt-bar-progress[b-ltx114u00l] {
    height: 100%;
    background-color: rgba(0, 0, 0, 0.2);
}

.gantt-legend[b-ltx114u00l] {
    font-size: 0.75rem;
    color: var(--muted, #9CA3AF);
}

.gantt-legend .gantt-status-dot[b-ltx114u00l] {
    margin-right: 0.15rem;
    vertical-align: middle;
}

/* ========== Status colors ========== */

.st-notstarted[b-ltx114u00l] {
    background-color: var(--status-notstarted, #9CA3AF);
}

.st-inprogress[b-ltx114u00l] {
    background-color: var(--status-progress, #2B5797);
}

.st-completed[b-ltx114u00l] {
    background-color: var(--status-done, #2E7D32);
}

.st-onhold[b-ltx114u00l] {
    background-color: var(--status-hold, #B8860B);
}

.st-delay[b-ltx114u00l] {
    background-color: var(--status-delay, #E8543A);
}
/* /Components/Pages/Schedule.razor.rz.scp.css */
/* ===== ページヘッダー／ツールバー ===== */
.sched-page-header[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
    flex-wrap: wrap;
    gap: 0.75rem;
    flex-shrink: 0;
}

.sched-toolbar[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.sched-view-switch[b-3bjxdx2qvv] {
    display: flex;
    border: 1.5px solid var(--border, #E5DDD4);
    border-radius: 8px;
    overflow: hidden;
    background: var(--white, #fff);
}

.sched-view-btn[b-3bjxdx2qvv] {
    padding: 0.44rem 1rem;
    font-size: 0.75rem;
    font-weight: 600;
    border: none;
    background: transparent;
    cursor: pointer;
    color: var(--mid, #4B5563);
    transition: background 0.15s, color 0.15s;
    font-family: inherit;
}

.sched-view-btn:not(:last-child)[b-3bjxdx2qvv] {
    border-right: 1px solid var(--border, #E5DDD4);
}

.sched-view-btn.active[b-3bjxdx2qvv] {
    background: var(--blue, #2B5797);
    color: white;
}

.sched-view-btn:hover:not(.active)[b-3bjxdx2qvv] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.sched-nav-group[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    border: 1.5px solid var(--border, #E5DDD4);
    border-radius: 8px;
    overflow: hidden;
    background: var(--white, #fff);
}

.sched-nav-arrow[b-3bjxdx2qvv] {
    padding: 0.44rem 0.75rem;
    font-size: 0.9rem;
    border: none;
    background: transparent;
    cursor: pointer;
    color: var(--mid, #4B5563);
    transition: background 0.15s;
    font-family: inherit;
}

.sched-nav-arrow:hover[b-3bjxdx2qvv] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.sched-nav-today[b-3bjxdx2qvv] {
    padding: 0.44rem 0.9rem;
    font-size: 0.75rem;
    font-weight: 600;
    border: none;
    background: transparent;
    cursor: pointer;
    color: var(--mid, #4B5563);
    border-left: 1px solid var(--border, #E5DDD4);
    border-right: 1px solid var(--border, #E5DDD4);
    transition: background 0.15s;
    font-family: inherit;
}

.sched-nav-today:hover[b-3bjxdx2qvv] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
}

.sched-nav-month[b-3bjxdx2qvv] {
    margin-left: 0.5rem;
    padding: 0.44rem 0;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--dark, #16213E);
    white-space: nowrap;
}

/* ===== スマホ専用ツールバー（tomova_schedule_mobile_brushup.htmlの.toolbar）=====
   PCの.sched-toolbar（1行に月/週・‹今日›・年月・「…」分類管理・予定を追加を
   すべて詰め込む構成）はd-none-mobileで隠し、スマホ幅だけこちらの2段構成を
   d-mobile-onlyで出す。以前ここにあった.sched-toolbar-navrow用の767.98px
   詰め込み調整は、そのブロック自体が今はd-none-mobileで非表示になるため
   到達不能になった＝削除（08-18）。 */
.sched-toolbar-mobile[b-3bjxdx2qvv] {
    /* .sched-page-header（親）はdisplay:flexでもflex-direction:row（既定）
       のため、このブロックはmain軸=横方向の通常のflexアイテムになり、
       align-items:stretchの対象になる縦方向とは違って幅は既定でcontent
       サイズにしかならない。width:100%が無いとcontent幅(=row1の中身の幅)
       までしか広がらず、.sched-toolbar-mobile-row1のjustify-content:
       space-betweenがその狭い幅の中でしか効かず、‹今日›が画面右端まで
       届かなかった（実機で指摘・08-18）。 */
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    padding: 0.75rem 0.875rem 0.625rem;
    flex-shrink: 0;
    width: 100%;
}

.sched-toolbar-mobile-row1[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.sched-mnav-group[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.sched-mnav-arrow[b-3bjxdx2qvv] {
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    border: 1px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.95rem;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-family: inherit;
}

.sched-mnav-today[b-3bjxdx2qvv] {
    padding: 0 0.75rem;
    height: 2rem;
    border-radius: 8px;
    border: 1px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.72rem;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
}

.sched-mnav-month-row[b-3bjxdx2qvv] {
    font-size: 0.875rem;
    font-weight: 800;
    color: var(--dark, #16213E);
}

.sched-btn-outline[b-3bjxdx2qvv] {
    padding: 0.5rem 1rem;
    font-size: 0.75rem;
    font-weight: 600;
    border-radius: 8px;
    border: 1.5px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s;
    font-family: inherit;
}

.sched-btn-outline:hover[b-3bjxdx2qvv] {
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

/* .sched-toolbar-navrow always spans the toolbar's full width (flex:1 1 100%
   below) so .sched-toolbar-dropdown's margin-left:auto has real leftover
   space to push into, pinning the "・・・" button to the row's right edge —
   the same row as 月/週/‹今日›/年月, per the design request. */
.sched-toolbar-navrow[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    flex: 1 1 100%;
}

.sched-toolbar-dropdown[b-3bjxdx2qvv] {
    position: relative;
    display: inline-flex;
    margin-left: auto;
}

.sched-toolbar-more[b-3bjxdx2qvv] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    border: 1.5px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--mid, #4B5563);
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    flex-shrink: 0;
    font-family: inherit;
}

.sched-toolbar-more:hover[b-3bjxdx2qvv] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.sched-toolbar-dropdown-menu[b-3bjxdx2qvv] {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    background: var(--white, #fff);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10);
    min-width: 160px;
    z-index: 100;
}

.sched-toolbar-dropdown-item[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    font-size: 13px;
    color: var(--dark, #16213E);
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s;
}

.sched-toolbar-dropdown-item:hover[b-3bjxdx2qvv] {
    background: var(--light, #F7F4F0);
}

.sched-toolbar-overlay[b-3bjxdx2qvv] {
    position: fixed;
    inset: 0;
    z-index: 99;
}

/* ===== FAB（スマホ専用、tomova_schedule_mobile_brushup.htmlの.fab）=====
   bottomは固定ボトムナビ(MainLayout.razor.cssの.bottom-nav-bar、
   calc(3.5rem + env(safe-area-inset-bottom)))の上に1remの隙間を空けて配置。 */
.sched-fab[b-3bjxdx2qvv] {
    position: fixed;
    right: 1rem;
    bottom: calc(3.5rem + env(safe-area-inset-bottom) + 1rem);
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    border: none;
    background: var(--blue, #2B5797);
    color: white;
    font-size: 1.35rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(43, 87, 151, 0.4);
    cursor: pointer;
    z-index: 60;
}

/* ページ末尾専用の余白スペーサー。固定ボトムナビ(MainLayout.razor.cssの
   .bottom-nav-bar、calc(3.5rem + safe-area))の高さぶんを、marginではなく
   このダミー要素自身のheightで確保する（.sched-cal-wrap/.sched-day-agenda
   自身のmargin-bottomでは.wg-articleのscrollHeightに反映されないことが
   実機で判明したため・08-18）。 */
.sched-bottom-spacer[b-3bjxdx2qvv] {
    /* 中身が空でflex-shrink未指定(既定1)のため、.wg-article内で場所を
       取り合うflexの「自動最小サイズ」が実質0になり、heightをいくら
       指定してもflex-shrinkで真っ先に0へ押し潰されていた
       （Home.razor.cssの.notify-scrollで最初に踏んだのと同じ罠、
       実機で再現・08-18）。flex-shrink:0で固定する。 */
    flex-shrink: 0;
    height: 0;
}

@media (max-width: 767.98px) {
    .sched-bottom-spacer[b-3bjxdx2qvv] {
        height: calc(4.5rem + env(safe-area-inset-bottom));
    }
}

/* ===== カレンダー本体 ===== */
/* flex:1/min-height:0 lets this take exactly the remaining height below
   .sched-page-header (both are direct children of .wg-article, which is
   already a flex column per MainLayout.razor.css) and scroll its own content
   — a month grid (6 rows x 8.5rem) or a week view's 24-hour column (1440px)
   both easily exceed viewport height. overflow-y:auto (not hidden) is what
   actually enables that scrolling; it still clips to the border-radius the
   same way Webmail.razor.css's .webmail-main does. Month and week view both
   use this same direct child of the page — .sched-day-agenda (below) is a
   plain normal-flow sibling of this, not wrapped together with it in any
   extra flex column, matching Home.razor.css's .card/.card-body +
   .home-day-agenda structure (confirmed reliable on a real iPhone; an
   earlier version that nested both inside a shared flex column was not,
   2026-08-06). */
.sched-cal-wrap[b-3bjxdx2qvv] {
    background: white;
    border-radius: 14px;
    border: 1px solid var(--border, #E5DDD4);
    box-shadow: 0 2px 16px rgba(0, 0, 0, 0.05);
    flex: 1;
    min-height: 0;
    margin-bottom: 1.5rem;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
}

/* ボトムナビの固定表示ぶんの余白は、この要素自身のmargin-bottomではなく
   ページ末尾の.sched-bottom-spacer（独立した高さを持つ要素）で確保する
   — flexコンテナ(.wg-article)は子のmargin-bottomをscrollHeightの計算に
   含めない挙動が実機で確認されたため（400px試しても.wg-articleの
   scrollHeightが変化せず、高さを持つ別要素にした瞬間に反映された・
   08-18）。ここでは常に通常の行間ぶんの余白だけにする。 */
@media (max-width: 767.98px) {
    .sched-cal-wrap[b-3bjxdx2qvv] {
        margin-bottom: 0.75rem;
    }
}

/* Mobile/tablet: the calendar always renders at the same compact, fixed height
   (see .calendar-cell/.calendar-grid's 992px override below) instead of
   stretching to fill leftover flex space, so day cells don't visibly resize
   depending on whether the .sched-day-agenda panel below happens to be open —
   Google Calendar mobile's look. PC/desktop keeps the original flex:1
   stretch (unchanged, outside this media query). */
@media (max-width: 992px) {
    .sched-cal-wrap[b-3bjxdx2qvv] {
        flex: 0 0 auto;
        /* Base rule (above) sets overflow-y:auto for PC, where a month with
           many events per cell can grow taller than the available space and
           needs its own internal scroll. On mobile the grid is fixed/compact
           height (never taller than its own box, per the flex:0 0 auto and
           .calendar-grid's mobile row-height override below) so this was
           always inert — but Home.razor's .main-grid has NO overflow of its
           own at this level, and unlike this element, scrolls correctly on a
           real iPhone. Calendar occupies most of the visible screen, so a
           touch-drag starting there was very likely being captured by this
           element's own (pointless, on mobile) overflow-y:auto instead of
           reaching .wg-content, the ancestor that's actually supposed to
           scroll — confirmed as the likely cause 2026-08-06 by comparing
           against Home's working structure. */
        overflow-y: visible;
        /* overflow-xだけ据え置き(base rule = hidden)だと、CSS仕様により
           「overflow-x/overflow-yの片方がvisible・もう片方がvisibleでない
           場合、visibleの方は自動的にautoとして計算される」規則が働き、
           上のoverflow-y:visibleが実際にはauto扱いのままになっていた
           （getComputedStyleで確認・overflow-x:hiddenを合わせてvisibleに
           するまで再現し続けた・08-18）。overflow:autoは見た目上スクロール
           バーが無くても独立したタッチスクロール領域として振る舞うため、
           実機でジェスチャーがこの要素に奪われ、下の.sched-day-agendaへ
           伝わっていなかった。x側もvisibleにして初めてy側のvisibleが
           本当に有効になる。 */
        overflow-x: visible;
    }
}

.calendar-grid[b-3bjxdx2qvv] {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    /* auto = day-of-week header row; the 6 week rows use minmax(8.5rem, auto)
       so each row still grows to fit a tall cell's content (many events)
       via normal content-based track sizing — an "auto" max, unlike 1fr,
       isn't diverted through the separate flexible-track algorithm that
       doesn't reliably grow with content. The 8.5rem min is just the floor.
       min-height (not height) below matters for the same reason: a fixed
       height caps this box at exactly 100% and any content taller than
       that gets visually painted UNDER the next row's opaque white cell
       background, hiding it — min-height still fills the wrap on short
       months (default align-content:stretch distributes the leftover
       space across auto-max rows) but lets the box itself grow past 100%
       when content needs more, so nothing ends up hidden behind a sibling. */
    grid-template-rows: auto repeat(6, minmax(8.5rem, auto));
    min-height: 100%;
    gap: 1px;
    background-color: var(--border, #E5DDD4);
}

.calendar-header[b-3bjxdx2qvv] {
    background-color: #f8f9fa;
    padding: 0.5rem;
    text-align: center;
    font-weight: 600;
}

.calendar-header.calendar-sat[b-3bjxdx2qvv] {
    color: var(--blue, #2B5797);
}

.calendar-header.calendar-sun[b-3bjxdx2qvv] {
    color: var(--terra, #E8543A);
}

.calendar-cell[b-3bjxdx2qvv] {
    background-color: white;
    min-width: 0;
    min-height: 8.5rem;
    padding: 0.25rem;
    cursor: pointer;
    overflow: visible;
    transition: background 0.15s;
}

.calendar-cell:hover[b-3bjxdx2qvv] {
    background-color: #f8f9fa;
}

.calendar-cell.calendar-sun[b-3bjxdx2qvv] {
    background-color: var(--cal-sun-bg, #FEF6F4);
}

.calendar-cell.calendar-sat[b-3bjxdx2qvv] {
    background-color: var(--cal-sat-bg, #F0F4FD);
}

.calendar-cell.calendar-sun:hover[b-3bjxdx2qvv] {
    background-color: #FBEAE6;
}

.calendar-cell.calendar-sat:hover[b-3bjxdx2qvv] {
    background-color: #E8EFFA;
}

.calendar-cell-outside[b-3bjxdx2qvv] {
    background-color: #f1f1f1 !important;
    color: #adb5bd;
}

/* .calendar-cell repeated here so these win over the same-specificity
   .calendar-cell.calendar-sun/.calendar-sat weekend-tint rules above,
   regardless of which weekday today/a holiday happens to fall on. */
.calendar-cell.calendar-cell-holiday[b-3bjxdx2qvv] {
    background-color: #fff5f7;
}

.calendar-cell.calendar-cell-holiday:hover[b-3bjxdx2qvv] {
    background-color: #ffe9ee;
}

.calendar-cell.calendar-cell-today[b-3bjxdx2qvv] {
    background: var(--cal-today-bg, linear-gradient(180deg, #F0F4FC 0%, #FFFFFF 60%));
}

/* Mobile/tablet: tapping a cell selects it (.sched-day-agenda shows its events)
   instead of the pill list, so give it a visible selected state. Desktop never
   gets this class (OnDayCellClick only sets SelectedDay when IsCompactViewport). */
.calendar-cell.calendar-cell-selected[b-3bjxdx2qvv] {
    background-color: var(--blue-l, #EBF1FA);
    box-shadow: inset 0 0 0 2px var(--blue, #2B5797);
}

/* Google Calendar-style dots: on mobile/tablet the pill list below is hidden
   (too cramped), so a small color-coded dot per event (same cat-color-*
   used by the PC pills and .sched-day-agenda list) is the "this day has
   events" indicator instead. Hidden on desktop, where the pills themselves
   already show that. */
.calendar-day-dots[b-3bjxdx2qvv] {
    display: none;
}

@media (max-width: 992px) {
    .calendar-day-dots[b-3bjxdx2qvv] {
        display: flex;
        align-items: center;
        justify-content: center;
        flex-wrap: wrap;
        gap: 0.15rem;
        margin: 0.1rem auto 0;
    }

    /* .category-dot (app.css) supplies the cat-color-* background; only
       shrink it here to fit several per cell. */
    .calendar-day-dot.category-dot[b-3bjxdx2qvv] {
        width: 0.35rem;
        height: 0.35rem;
    }

    .calendar-day-dot-more[b-3bjxdx2qvv] {
        font-size: 0.5rem;
        line-height: 1;
        color: var(--muted, #8a8a8a);
    }

    .calendar-cell .calendar-event[b-3bjxdx2qvv],
    .calendar-cell .calendar-more[b-3bjxdx2qvv] {
        display: none;
    }

    /* Now that a cell only ever shows a date number + dot (pills are hidden
       above, and the per-cell "+" is gone too, replaced by the day-panel/FAB),
       it doesn't need the 8.5rem floor that exists for PC's event pills —
       shrink it so all 6 weeks fit on one screen without scrolling, Google
       Calendar-style. min-height is dropped (unlike the base rule above) so
       this doesn't stretch to fill .sched-cal-wrap's flex-allocated height —
       see the "always this height" comment near .sched-cal-wrap's 992px rule.
       Row height itself must not vary with how much content/leftover space
       exists (so the day-agenda panel below doesn't cause jitter) — rows are
       "auto" and it's .calendar-cell's own aspect-ratio (below) that pins the
       height to a fixed multiple of the column width, which itself never
       changes when the agenda opens/closes. Previously this used a hardcoded
       2.75rem row height instead of aspect-ratio, which not only doesn't
       track tomova_schedule_mobile_brushup.htmlの.cal-cellの
       aspect-ratio:1/0.92 spec, but also stayed a fixed 44px regardless of
       the actual column width, so cells inside a genuine phone-width
       (~480px, 7 columns ≈68.5px wide) still looked flatter/shorter than the
       mockup's proportionally-scaled cells (実機で指摘・08-18)。 */
    .calendar-grid[b-3bjxdx2qvv] {
        grid-template-rows: auto repeat(6, auto);
        min-height: 0;
    }

    .calendar-cell[b-3bjxdx2qvv] {
        /* PCの無条件ルール(min-height:8.5rem、上の.calendar-cell基本定義)を
           打ち消さないと、aspect-ratioで計算した高さ(幅×0.92)よりmin-height
           のほうが大きく勝ってしまい、セルが136pxまで膨張して日付が
           間延びして見えなくなっていた（実機で再現・08-18）。 */
        min-height: 0;
        aspect-ratio: 1 / 0.92;
        padding: 0.15rem;
    }

    /* tomova_schedule_mobile_brushup.htmlの.cal-cellはセル内の要素を
       flex-direction:columnで中央寄せに積むだけ(日付円→ドット)で、セルごとの
       「+」ボタンは無い（予定追加は日付パネルの「＋追加」／FABに一本化）。 */
    .calendar-add-btn[b-3bjxdx2qvv] {
        display: none;
    }

    .calendar-date-row[b-3bjxdx2qvv] {
        margin-bottom: 0;
    }

    /* tomova_schedule_mobile_brushup.htmlの.cal-head-cellは背景なし・
       font-size 10.5px相当の小さい文字。現状は無条件.calendar-header
       (背景#f8f9fa・ページ既定フォントサイズ)がそのまま使われていて
       見た目が異なっていた（実機で指摘・08-18）。 */
    .calendar-header[b-3bjxdx2qvv] {
        background-color: transparent;
        padding: 0.5rem 0;
        font-size: 0.66rem;
        font-weight: 700;
        color: var(--mid, #4B5563);
    }

    .calendar-day-dots[b-3bjxdx2qvv] {
        margin-top: 0.05rem;
    }

    .calendar-holiday-label[b-3bjxdx2qvv] {
        font-size: 0.5rem;
        margin-bottom: 0;
    }
}

.calendar-date-row[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.25rem;
}

.calendar-date[b-3bjxdx2qvv] {
    font-size: 0.85rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
}

.calendar-date.calendar-sun[b-3bjxdx2qvv] {
    color: var(--terra, #E8543A);
}

.calendar-date.calendar-sat[b-3bjxdx2qvv] {
    color: var(--blue, #2B5797);
}

/* .calendar-date repeated so these win over the same-specificity
   .calendar-date.calendar-sun/.calendar-sat weekday-color rules above. */
.calendar-date.calendar-date-holiday[b-3bjxdx2qvv] {
    background-color: var(--terra-l, #FEF0EC);
    color: var(--terra, #E8543A);
}

.calendar-date.calendar-date-today[b-3bjxdx2qvv] {
    background-color: var(--blue, #2B5797);
    color: white;
}

/* 上の無条件.calendar-date-row/.calendar-dateより後ろに置くこと ―
   同じ詳細度の場合、後に書かれた宣言が勝つため、@media内に書いても
   それより前に置くと無条件ルールに上書きされてしまう
   （Home.razor.cssの.card-bodyで実際に発生した現象と同じ、08-18に
   ここでも再発）。 */
@media (max-width: 992px) {
    /* tomova_schedule_mobile_brushup.htmlの.cal-cellは日付円を単独で
       中央寄せに配置する。「+」ボタンをdisplay:noneにしただけでは
       justify-content:space-betweenのまま単独の子要素が左詰めになって
       しまうため、centerに変える（実機で指摘・08-18）。 */
    .calendar-date-row[b-3bjxdx2qvv] {
        justify-content: center;
    }

    /* tomova_schedule_mobile_brushup.htmlの.cal-daynumはwidth/height両方を
       22pxで固定した正円。min-widthだけだと2桁の日付で横に伸びて真円に
       ならず、文字が視覚的に中央からズレて見えていた（実機で指摘・08-18）。
       width固定＋line-height:1で解消する。 */
    .calendar-date[b-3bjxdx2qvv] {
        font-size: 0.75rem;
        width: 1.375rem;
        min-width: 1.375rem;
        height: 1.375rem;
        line-height: 1;
    }
}

.calendar-holiday-label[b-3bjxdx2qvv] {
    font-size: 0.65rem;
    font-weight: 700;
    color: #b3184f;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-bottom: 2px;
}

.week-day-holiday[b-3bjxdx2qvv] {
    font-size: 0.7rem;
    font-weight: 700;
    color: #b3184f;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-top: 1px;
}

.calendar-add-btn[b-3bjxdx2qvv] {
    border: none;
    background: none;
    color: #adb5bd;
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    padding: 0;
    cursor: pointer;
    /* Always visible on every device — same as Home's summary cards. Used
       to be opacity:0 with a .calendar-cell:hover reveal (PC-only), but
       that hover-gated reveal was also what made iOS Safari require two
       taps to open a .calendar-event nested in the same cell (WebKit
       synthesizes a :hover state on the first tap of a nested element
       before firing the actual click). Keeping the button always visible
       everywhere avoids that ambiguity and matches Home's UI besides. */
    opacity: 1;
    transition: background-color 0.15s, color 0.15s;
}

.calendar-add-btn:hover[b-3bjxdx2qvv] {
    background-color: var(--blue, #2B5797);
    color: white;
}

.calendar-event[b-3bjxdx2qvv] {
    font-size: 0.75rem;
    border-radius: 5px;
    padding: 3px 6px;
    margin-bottom: 3px;
    overflow: hidden;
    line-height: 1.2;
    border-left: 2px solid currentColor;
    cursor: pointer;
    transition: opacity 0.15s, transform 0.15s;
}

.calendar-event:hover[b-3bjxdx2qvv] {
    opacity: 0.85;
    transform: translateX(1px);
}

.calendar-event-time[b-3bjxdx2qvv] {
    font-weight: 600;
    font-size: 0.7rem;
}

/* スマホ・タブレットは月表示の予定ピルが狭く、タイトルを優先するため時間は
   非表示にする（週表示は縦軸で時間位置が分かるので対象外、日付一覧ポップ
   アップも対象外）。 */
@media (max-width: 992px) {
    .calendar-event .calendar-event-time[b-3bjxdx2qvv] {
        display: none;
    }
}

.calendar-event-title[b-3bjxdx2qvv] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calendar-more[b-3bjxdx2qvv] {
    font-size: 0.7rem;
    color: var(--blue, #2B5797);
    font-weight: 600;
    padding: 1px 4px;
    border-radius: 4px;
    cursor: pointer;
    transition: background 0.15s;
}

.calendar-more:hover[b-3bjxdx2qvv] {
    background: var(--blue-l, #EBF1FA);
}

.calendar-day-list-item[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.25rem;
    cursor: pointer;
    border-bottom: 1px solid #eee;
}

.calendar-day-list-item:hover[b-3bjxdx2qvv] {
    background-color: #f8f9fa;
}

.calendar-day-list-item:last-child[b-3bjxdx2qvv] {
    border-bottom: none;
}

.week-view[b-3bjxdx2qvv] {
    /* Outer border/radius/shadow now come from the .sched-cal-wrap container. */
}

.week-header-row[b-3bjxdx2qvv],
.week-allday-row[b-3bjxdx2qvv],
.week-body[b-3bjxdx2qvv] {
    display: grid;
    grid-template-columns: 3.5rem repeat(7, 1fr);
}

.week-time-gutter[b-3bjxdx2qvv] {
    border-right: 1px solid #dee2e6;
    border-bottom: 1px solid #dee2e6;
    font-size: 0.7rem;
    color: #868e96;
    display: flex;
    align-items: center;
    justify-content: center;
}

.week-day-header[b-3bjxdx2qvv] {
    min-width: 0;
    text-align: center;
    padding: 0.4rem 0.25rem;
    border-left: 1px solid #dee2e6;
    border-bottom: 1px solid #dee2e6;
    background-color: #f8f9fa;
}

.week-day-header.calendar-sat[b-3bjxdx2qvv] {
    background-color: var(--cal-sat-bg, #F0F4FD);
    color: var(--blue, #2B5797);
}

.week-day-header.calendar-sun[b-3bjxdx2qvv] {
    background-color: var(--cal-sun-bg, #FEF6F4);
    color: var(--terra, #E8543A);
}

.week-day-name[b-3bjxdx2qvv] {
    font-size: 0.75rem;
    font-weight: 600;
}

.week-day-number[b-3bjxdx2qvv] {
    font-size: 0.9rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    margin-top: 2px;
}

.week-allday-row[b-3bjxdx2qvv] {
    min-height: 2rem;
}

.week-allday-cell[b-3bjxdx2qvv] {
    min-width: 0;
    border-left: 1px solid #dee2e6;
    border-bottom: 1px solid #dee2e6;
    padding: 2px;
    cursor: pointer;
    overflow: hidden;
    transition: background 0.15s;
}

.week-allday-cell.calendar-sat[b-3bjxdx2qvv] {
    background-color: var(--cal-sat-bg, #F0F4FD);
}

.week-allday-cell.calendar-sun[b-3bjxdx2qvv] {
    background-color: var(--cal-sun-bg, #FEF6F4);
}

.week-body[b-3bjxdx2qvv] {
    position: relative;
}

.week-time-col[b-3bjxdx2qvv] {
    border-right: 1px solid #dee2e6;
}

.week-hour-label[b-3bjxdx2qvv] {
    height: 60px;
    box-sizing: border-box;
    font-size: 0.7rem;
    color: #868e96;
    text-align: right;
    padding-right: 0.25rem;
    padding-top: 2px;
    border-top: 1px solid #f1f1f1;
}

.week-hour-label:first-child[b-3bjxdx2qvv] {
    border-top: none;
}

.week-day-col[b-3bjxdx2qvv] {
    position: relative;
    min-width: 0;
    height: 1440px;
    border-left: 1px solid #dee2e6;
    cursor: pointer;
    background-image: repeating-linear-gradient(to bottom, #f1f1f1 0, #f1f1f1 1px, transparent 1px, transparent 60px);
    transition: background-color 0.15s;
}

.week-day-col:hover[b-3bjxdx2qvv] {
    background-color: #fafafa;
}

.week-day-col.calendar-sat[b-3bjxdx2qvv] {
    background-color: var(--cal-sat-bg, #F0F4FD);
}

.week-day-col.calendar-sun[b-3bjxdx2qvv] {
    background-color: var(--cal-sun-bg, #FEF6F4);
}

.week-day-col.calendar-sat:hover[b-3bjxdx2qvv] {
    background-color: #E8EFFA;
}

.week-day-col.calendar-sun:hover[b-3bjxdx2qvv] {
    background-color: #FBEAE6;
}

/* Compounded with the base class (matching .calendar-cell.calendar-cell-holiday's
   trick above) so this wins on specificity over the .calendar-sat/.calendar-sun
   weekend-tint rules regardless of which weekday a holiday happens to fall on. */
.week-day-col.week-day-col-holiday[b-3bjxdx2qvv] {
    background-color: #fff5f7;
}

.week-day-col.week-day-col-holiday:hover[b-3bjxdx2qvv] {
    background-color: #ffe9ee;
}

.week-allday-cell.week-allday-cell-holiday[b-3bjxdx2qvv] {
    background-color: #fff5f7;
}

.week-event[b-3bjxdx2qvv] {
    position: absolute;
    overflow: hidden;
    border-radius: 3px;
    padding: 2px 4px;
    font-size: 0.7rem;
    line-height: 1.2;
    cursor: pointer;
    box-sizing: border-box;
}

/* ===== 日別イベント一覧モーダル（「他N件」） ===== */
.sched-day-agenda-empty[b-3bjxdx2qvv] {
    padding: 1rem;
    color: var(--mid, #4B5563);
    font-size: 0.85rem;
    text-align: center;
}

/* ===== 日別アジェンダ（スマホ・タブレットで日付タップ時にカレンダー下に表示） =====
   以前はmax-height固定＋.sched-day-agenda-list側にflex:1/overflow-y:auto
   というパネル内スクロール構造だったが、.wg-article/.wg-content
   （MainLayout.razor.css、こちら自体がoverflow-y:autoのスクロール領域）
   の内側にネストした2つ目のoverflow-y:autoとして、実機タッチスクロールが
   外側に取られてしまい信頼できなかった（tomova_schedule_day_panel_scroll_fix_v4_ROOT_CAUSE.md
   ・08-18）。max-height/flex構造ごと廃止し、常に5件だけ描画→「他N件を
   表示」タップで全件その場に追加描画する方式に変更。全件表示時は
   このパネル自体が縦に伸び、既に実機確認済みの外側.wg-contentの通常
   スクロールだけで下まで見られる（ネストしたスクロール領域を作らない）。 */
.sched-day-agenda[b-3bjxdx2qvv] {
    background: white;
    border-radius: 14px;
    border: 1px solid var(--border, #E5DDD4);
    box-shadow: 0 2px 16px rgba(0, 0, 0, 0.05);
    margin-top: 0.75rem;
}

/* ボトムナビぶんの余白は.sched-bottom-spacerが担う（上の.sched-cal-wrap
   と同じ理由でmargin-bottomは使わない）。 */

.sched-day-agenda-header[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--border, #E5DDD4);
    flex-shrink: 0;
}

.sched-day-agenda-title[b-3bjxdx2qvv] {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--dark, #16213E);
}

.sched-day-agenda-actions[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* tomova_schedule_mobile_brushup.htmlの.day-panel-add。.sched-day-agenda
   全体がIsCompactViewport(≤992px)の時しか描画されないため、PC向けの
   メディアクエリ分岐は不要。 */
.sched-day-agenda-add[b-3bjxdx2qvv] {
    padding: 0.375rem 0.75rem;
    border-radius: 8px;
    border: none;
    background: var(--blue, #2B5797);
    color: white;
    font-size: 0.7rem;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
}

.sched-day-agenda-add:hover[b-3bjxdx2qvv] {
    background: var(--blue-d, #1A3A6B);
}

.sched-day-agenda-close[b-3bjxdx2qvv] {
    border: none;
    background: none;
    font-size: 1.1rem;
    line-height: 1;
    color: var(--mid, #4B5563);
    cursor: pointer;
    padding: 0.25rem 0.4rem;
}

.sched-day-agenda-list[b-3bjxdx2qvv] {
    /* overflow・max-heightは一切指定しない — 中身の分だけ自然に伸びる
       （ネストしたスクロール領域を作らないため、意図的に何もしない）。 */
}

.sched-day-agenda-item[b-3bjxdx2qvv] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 1rem;
    cursor: pointer;
    border-bottom: 1px solid #f1f1f1;
}

.sched-day-agenda-item:last-child[b-3bjxdx2qvv] {
    border-bottom: none;
}

.sched-day-agenda-item:hover[b-3bjxdx2qvv] {
    background-color: #f8f9fa;
}

/* tomova_schedule_mobile_brushup.htmlの.day-event-color。丸ドット(category-dot)
   ではなく縦バー。カテゴリ色はcat-color-*が付与するcolorをcurrentColor経由で
   使う（Home.razor.cssの.mobile-event-barと同じ手法）。 */
.sched-day-agenda-bar[b-3bjxdx2qvv] {
    width: 3px;
    height: 1.65rem;
    border-radius: 2px;
    flex-shrink: 0;
    background: currentColor;
}

.sched-day-agenda-item-title[b-3bjxdx2qvv] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
}

.sched-day-agenda-more[b-3bjxdx2qvv] {
    /* <div>から<button>に変更した際のブラウザ既定ボタンスタイルの
       打ち消し（枠線・背景・幅・フォント）。 */
    display: block;
    width: 100%;
    border: none;
    border-top: 1px solid var(--border, #E5DDD4);
    background: var(--light, #F7F4F0);
    border-radius: 0 0 14px 14px;
    font-family: inherit;
    padding: 0.6rem 1rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--blue, #2B5797);
    text-align: center;
    cursor: pointer;
    transition: background 0.15s;
}

.sched-day-agenda-more:hover[b-3bjxdx2qvv] {
    background: var(--blue-l, #EBF1FA);
}
/* /Components/Pages/Todo.razor.rz.scp.css */
.todo-list[b-07e8ob3e50] {
    max-width: 40rem;
}

.todo-item[b-07e8ob3e50] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.6rem 0.75rem;
}

.todo-check[b-07e8ob3e50] {
    margin-top: 0.3rem;
    flex-shrink: 0;
    cursor: pointer;
}

.todo-item-body[b-07e8ob3e50] {
    flex-grow: 1;
    min-width: 0;
    cursor: pointer;
}

.todo-item-title[b-07e8ob3e50] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.todo-stars[b-07e8ob3e50] {
    color: #f0b429;
    font-size: 0.85rem;
    letter-spacing: 1px;
}

.todo-category-badge[b-07e8ob3e50] {
    background-color: #e9ecef;
    color: #495057;
    font-weight: 500;
}

.todo-item-due[b-07e8ob3e50] {
    font-size: 0.8rem;
    color: #6c757d;
    margin-top: 0.15rem;
}

.todo-item-overdue[b-07e8ob3e50] {
    color: #c92a2a;
    font-weight: 600;
}

.todo-item-done .todo-item-title span:not(.todo-stars)[b-07e8ob3e50],
.todo-item-done .todo-item-due[b-07e8ob3e50] {
    text-decoration: line-through;
    color: #adb5bd;
}

.todo-delete-btn[b-07e8ob3e50] {
    flex-shrink: 0;
}
/* /Components/Pages/Webmail.razor.rz.scp.css */
.webmail-layout[b-fki3kdzics] {
    display: flex;
    flex: 1;
    min-height: 0;
    gap: 1rem;
    /* .wg-article's own padding-bottom (MainLayout.razor.css) only applies at
       mobile widths (for bottom-nav clearance, unrelated on PC) — on desktop
       .webmail-sidebar/.webmail-main (both flex:1 children of this element)
       stretched all the way to .wg-content's own bottom edge with no gap
       from the browser window's bottom. Padding here shrinks both cards'
       available height equally, opening a plain page-background gap below
       them instead. */
    padding-bottom: 1rem;
}

/* Glossy button look — a top-to-bottom gradient (light sheen near the top,
   fading to a darker tint at the bottom) is layered over each button's own
   background-color/border, so every Bootstrap variant (btn-primary,
   btn-outline-secondary, btn-danger, ...) keeps its color but reads as a
   raised, physical button rather than a flat rectangle. :active inverts the
   gradient (dark-to-light) to read as "pressed in". btn-link is excluded
   since it's meant to look like inline text, not a physical button. */
.webmail-layout .btn:not(.btn-link):not(.webmail-ghost-btn)[b-fki3kdzics] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.webmail-layout .btn:not(.btn-link):not(.webmail-ghost-btn):hover:not(:disabled)[b-fki3kdzics] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.webmail-layout .btn:not(.btn-link):not(.webmail-ghost-btn):active:not(:disabled)[b-fki3kdzics] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.webmail-layout .btn:not(.btn-link):not(.webmail-ghost-btn):disabled[b-fki3kdzics] {
    background-image: none;
    box-shadow: none;
}

/* 2026-08-08: briefly split this into a transparent .webmail-sidebar +
   bordered .webmail-sidebar-card (mirroring .webmail-main's own split),
   plus a mobile-only flex:1/min-height:0/padding-bottom — all reverted the
   same day. The premise was wrong: the ☰メニュー folder screen was never
   broken, the 受信一覧 card was the one that needed matching *to* it, not
   the other way around. Adding padding-bottom here made a previously-fine
   screen visibly shorter (the exact "余白が増えて低くなった" the user then
   reported). Back to the original plain card — no flex tricks needed. */
.webmail-sidebar[b-fki3kdzics] {
    width: 14rem;
    padding: 1rem 0.75rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--light, #F7F4F0);
    overflow-y: auto;
}

/* ========== Tomova風サイドバー（新規作成・アクションボタン・フォルダ一覧） ========== */
.webmail-compose-btn[b-fki3kdzics] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    border-radius: 10px;
    font-weight: 600;
}

.btn-compose[b-fki3kdzics],
.webmail-compose-btn[b-fki3kdzics] {
    background: #2B5797 !important;       /* Tomova Blue・フラット */
    background-image: none !important;    /* グラデーション削除 */
    box-shadow: none !important;          /* 光沢削除 */
    border: none !important;
    border-radius: 8px !important;        /* 角丸を小さく */
    font-size: 13px !important;
    font-weight: 700 !important;
    padding: 10px 18px !important;
    color: white !important;
    cursor: pointer !important;
    transition: background .15s !important;
    font-family: 'Noto Sans JP', sans-serif !important;
}

.btn-compose:hover[b-fki3kdzics],
.webmail-compose-btn:hover[b-fki3kdzics] {
    background: #1A3A6B !important;       /* ホバーで濃く */
}

.webmail-action-row[b-fki3kdzics] {
    display: flex;
    gap: 0.4rem;
    margin-bottom: 0.75rem;
}

.webmail-action-btn[b-fki3kdzics] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2rem;
    padding: 0.5rem 0.25rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.68rem;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.webmail-action-btn i[b-fki3kdzics] {
    font-size: 1rem;
    color: var(--blue, #2B5797);
}

.webmail-action-btn:hover:not(:disabled)[b-fki3kdzics] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--dark, #16213E);
}

.webmail-action-btn:disabled[b-fki3kdzics] {
    opacity: 0.5;
    cursor: not-allowed;
}

.webmail-folder-nav[b-fki3kdzics] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.webmail-folder-item[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    border: none;
    background: none;
    text-align: left;
    padding: 0.45rem 0.7rem;
    border-radius: 8px;
    font-size: 0.85rem;
    font-family: inherit;
    color: var(--mid, #4B5563);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.webmail-folder-item:hover[b-fki3kdzics] {
    background: var(--white, #fff);
}

.webmail-folder-icon[b-fki3kdzics] {
    font-size: 0.9rem;
    color: var(--muted, #9CA3AF);
    flex-shrink: 0;
    width: 1.1rem;
    text-align: center;
}

.webmail-folder-name[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.webmail-folder-badge[b-fki3kdzics] {
    background: var(--terra, #E8543A);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.05rem 0.4rem;
    border-radius: 10px;
    flex-shrink: 0;
}

.webmail-folder-active[b-fki3kdzics],
.webmail-folder-active:hover[b-fki3kdzics] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-weight: 700;
}

.webmail-folder-active .webmail-folder-icon[b-fki3kdzics] {
    color: var(--blue, #2B5797);
}

/* ========== Tomova風ゴーストボタン（新着確認） ========== */
.webmail-ghost-btn[b-fki3kdzics] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 20px;
    background: var(--white, #fff);
    color: var(--blue, #2B5797);
    font-weight: 600;
    transition: background 0.15s, border-color 0.15s;
}

.webmail-ghost-btn:hover:not(:disabled)[b-fki3kdzics] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
}

.webmail-ghost-btn:disabled[b-fki3kdzics] {
    opacity: 0.6;
}

/* overflow:hidden (not auto) — mirrors Chat.razor.css's .chat-main/.chat-messages
   split. Every view rendered inside .webmail-main must own its own bounded
   flex:1/min-height:0/overflow-y:auto region (.webmail-list-scroll,
   .webmail-detail-scroll, or the .webmail-compose/-settings/-rules/
   -address-book rule below) rather than relying on .webmail-main's own scroll.
   .webmail-compose used to be the one view without such a region of its own,
   so .webmail-main's overflow-y:auto was doing the real scrolling there —
   putting it in direct competition with the .wg-content shell scroll
   (MainLayout.razor.css) one level up. On iOS a plain vertical finger-drag
   over that ambiguity showed up as the whole form jittering up/down/left/right
   even with no keyboard involved (confirmed on a real iPhone 12 mini,
   2026-08-07). */
.webmail-main[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    /* Column flex so .webmail-list-view (the message list) can claim exactly
       the remaining space below the menu button/alerts via flex:1, and scroll
       internally — see .webmail-list-view/.webmail-list-scroll below. */
    display: flex;
    flex-direction: column;
    overflow: hidden;
    /* No padding/border/background here (2026-08-08, was here originally) —
       moved to each view's own inner content div (.webmail-list-view,
       .webmail-detail, .webmail-address-book; Compose/Settings/Rules
       already went through this same split earlier the same day, see
       .webmail-main.webmail-main-flow's own comment for the full
       reasoning). .webmail-main is now just an invisible flow/sizing
       wrapper everywhere, so the mobile safe-area padding-bottom below
       (still applied directly to .webmail-main) reads as page background
       below the visible card instead of blank space inside its border —
       the exact same "受信一覧のカードにも余白が" complaint already fixed
       for Compose/Settings/Rules, reported for List too. */
}

/* Compose/Settings/Rules/AddressBook each need to be the one flex:1/min-height:0
   scroll region inside .webmail-main now that .webmail-main itself no longer
   scrolls (see its own comment above) — same role .webmail-list-scroll and
   .webmail-detail-scroll already play for the list/detail views.
   Settings' scroll region has to be reached via ::deep (2026-08-08, second
   attempt — a plain ".webmail-main > form" child-combinator selector, tried
   first, still silently failed): Blazor's CSS isolation appends the scope
   attribute to the RIGHTMOST compound in a selector chain, not to every
   ancestor mentioned in it — so even a selector rooted at the correctly-
   scoped .webmail-main still expects the scope attribute on "form" itself
   (the rightmost part), which <EditForm>'s own rendered <form> never
   carries (same underlying bug as the compose-card background issue).
   ::deep is the actual, documented escape hatch for styling a child
   component's own root output from the parent's scoped stylesheet — it
   drops the scope-attribute requirement for everything after it. Narrowed
   to "form.webmail-settings" (not a bare "form") so it can't also catch
   .webmail-rule-form/.webmail-contact-form, the small nested inline-edit
   forms inside .webmail-rules/.webmail-address-book that must NOT get this
   flex:1/overflow-y:auto treatment. Compose's form doesn't need ::deep to
   avoid it — "form.webmail-settings" simply never matches
   "form.webmail-compose". .webmail-rules/.webmail-address-book are plain
   <div>s (not EditForms), so a normal scoped child-combinator selector
   already works correctly for them, confirmed 2026-08-08. */
.webmail-main[b-fki3kdzics]  form.webmail-settings,
.webmail-main > .webmail-rules[b-fki3kdzics],
.webmail-main > .webmail-address-book[b-fki3kdzics] {
    flex: 1;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.webmail-address-book[b-fki3kdzics] {
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

/* Compose gives up on owning any scroll region of its own — on a real
   iPhone 12 mini this app's nested flex:1/min-height:0/overflow-y:auto
   pattern (used successfully by .webmail-list-scroll/.webmail-detail-scroll
   below) never reliably resolved a real height for it, so content past that
   unresolved boundary was either unreachable (scroll region) or outright
   clipped by .webmail-main's overflow:hidden (fixed/footer action bar
   attempts) — all confirmed broken on-device, 2026-08-07. Home.razor's
   .main-grid was pointed to as a working comparison: it has NO overflow of
   its own at all, so .wg-content (MainLayout.razor.css) is the only
   scrolling ancestor anywhere in its chain, and it just works. Compose now
   copies that: .webmail-main-flow (applied to .webmail-main only while
   View==Compose, see the .webmail-main rule above) switches overflow back
   to visible and drops the cross-axis stretch so the card sizes to its own
   content instead of spilling past it, and .webmail-compose is otherwise a
   plain block form with no flex sizing or overflow of its own — content
   simply grows .wg-content's scrollHeight like any other page,
   送信/下書きに保存/キャンセル included as ordinary content at the bottom
   (confirmed reachable once scrolling worked again, 2026-08-07). */
/* align-self:flex-start/height:auto/overflow:visible (the "flow, size to
   own content" behavior this comment block describes) is now mobile-only —
   see the max-width:768px media query further down. On desktop
   (min-width:769px, further down too) .webmail-main-flow instead gets the
   SAME flex:1/min-height:0/overflow:hidden sizing as every other view (its
   min-height:0 already comes for free from the base .webmail-main rule
   above), stretching to match .webmail-sidebar's/受信一覧's height exactly
   — the iPhone-jitter reasoning below only ever applied to the mobile
   breakpoint; the height-mismatch this fixes (2026-08-08) was desktop-only
   and had nothing to do with that bug. */
.webmail-main.webmail-main-flow[b-fki3kdzics] {
    /* Card look (border/background/padding) moves to .webmail-compose
       itself below, so this outer box is just an invisible flow wrapper —
       lets the mobile safe-area buffer (added in the max-width:768px block
       further down) sit as blank page background BELOW the visible card,
       instead of as blank space INSIDE the card's own border (confirmed
       2026-08-08: padding/margin on this wrapper reliably resize it on a
       real device, they just used to be hidden inside the shared
       .webmail-main border/background). */
    padding: 0;
    border: none;
    background: none;
}

/* Settings/Rules have short, bounded content (a fixed set of fields / a
   short rule list) — stretching the card to match 受信一覧's full height
   (the default .webmail-main flex:1 fill) left a large blank gap below the
   content, inside the card's own border (2026-08-08). align-self:flex-start
   + height:auto lets the card shrink to fit instead. Its own inner scroll
   region (.webmail-main ::deep form.webmail-settings / .webmail-main >
   .webmail-rules, both still flex:1/min-height:0/overflow-y:auto) becomes
   a no-op sizing-wise once this outer box no longer stretches — it just
   wraps content normally, and still scrolls internally as a safety net if
   content ever grows tall enough to matter, same overflow-y:auto region
   as before, unchanged. */
.webmail-main.webmail-main-shrink[b-fki3kdzics] {
    align-self: flex-start;
    height: auto;
    /* Transparent outer flow wrapper, same reasoning as .webmail-main-flow
       above — lets the mobile safe-area padding-bottom (added further down)
       sit as blank page background BELOW the visible card, not INSIDE it.
       Settings' visible card is .webmail-form-card (an inner <div>, already
       existed for the EditForm-scope workaround); Rules' visible card is
       .webmail-rules itself (already a plain, correctly-scoped <div> — no
       new wrapper needed there), styled directly below. */
    padding: 0;
    border: none;
    background: none;
}

.webmail-rules[b-fki3kdzics] {
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.webmail-compose-actions[b-fki3kdzics] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding-top: 0.75rem;
    padding-bottom: 1rem;
    border-top: 1px solid var(--border, #E5DDD4);
    margin-top: 0.75rem;
}

.webmail-list-view[b-fki3kdzics] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.webmail-search-form[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
    margin-bottom: 0.75rem;
}

.webmail-search-form input[type="text"][b-fki3kdzics] {
    flex: 1;
    min-width: 0;
}

.webmail-search-scope[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.85rem;
    color: #495057;
    white-space: nowrap;
    cursor: pointer;
}

.webmail-row-folder[b-fki3kdzics] {
    flex: 0 1 6rem;
    min-width: 3.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #6c757d;
    font-size: 0.85rem;
}

.webmail-list-sticky[b-fki3kdzics] {
    /* Previously position:sticky, which turned out to render inconsistently
       inside this flex/scroll nesting (a scrolled-past row would sometimes
       paint above the "stuck" header despite correct z-index/position —
       apparently a browser quirk with sticky inside a flex-sized scroll
       container). Simpler and more reliable: make this a plain, non-scrolling
       header block (flex-shrink:0) and put ONLY the rows in their own
       scrolling region below (.webmail-list-scroll) — no position:sticky
       involved at all. */
    flex-shrink: 0;
    background-color: #fff;
}

.webmail-list-header[b-fki3kdzics] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 0.5rem;
    margin-bottom: 0.25rem;
    border-bottom: 2px solid #dee2e6;
}

/* Buttons here (新着確認/移動/削除) default to icon+label — a bare button has no
   white-space:nowrap of its own, so on a narrow screen with several of these
   packed into one row, the browser was wrapping a button's own text across 2-3
   lines instead of shrinking the row, ballooning the whole header's height.
   nowrap here always (harmless on desktop); the mobile media query below goes
   further and drops the label entirely, leaving an icon-only button. */
.webmail-list-header .btn[b-fki3kdzics] {
    white-space: nowrap;
}

.webmail-list-count[b-fki3kdzics] {
    color: #6c757d;
    font-size: 0.85rem;
}

.webmail-empty[b-fki3kdzics] {
    color: #6c757d;
    padding: 1rem 0.25rem;
}

.webmail-list-columns[b-fki3kdzics] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.3rem 0.5rem 0.3rem 0.25rem;
    border-bottom: 1px solid #dee2e6;
    font-size: 0.8rem;
    font-weight: 600;
    color: #6c757d;
}

.webmail-unread-dot-spacer[b-fki3kdzics] {
    width: 0.45rem;
    flex-shrink: 0;
}

/* The native checkbox's own hit area is tiny (~13px) — easy to miss and hit
   the row underneath instead, opening the message. Wrapping it in a padded
   label gives a ~1.5rem (24px) tap target that toggles the checkbox (label
   auto-associates with its nested input, no `for`/`id` needed) while keeping
   the checkbox itself visually small. */
.webmail-row-checkbox-wrap[b-fki3kdzics] {
    width: 1.5rem;
    height: 1.5rem;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    cursor: pointer;
    margin: -0.25rem 0;
}

.webmail-list-scroll[b-fki3kdzics] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.webmail-list[b-fki3kdzics] {
    border-top: 1px solid #eee;
}

.webmail-row[b-fki3kdzics] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.55rem 0.5rem 0.55rem 0.25rem;
    border-bottom: 1px solid #eee;
    cursor: pointer;
}

.webmail-row:hover[b-fki3kdzics] {
    background-color: var(--blue-l, #EBF1FA);
}

.webmail-row-unread[b-fki3kdzics] {
    background-color: var(--white, #fff);
}

/* Gmail-style: bold just the sender for unread mail. */
.webmail-row-unread .webmail-row-from[b-fki3kdzics] {
    font-weight: 700;
}

.webmail-unread-dot[b-fki3kdzics] {
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background-color: var(--terra, #E8543A);
    flex-shrink: 0;
    align-self: center;
    visibility: hidden;
}

.webmail-row-unread .webmail-unread-dot[b-fki3kdzics] {
    visibility: visible;
}

.webmail-row-from[b-fki3kdzics] {
    /* Previously flex-shrink:0 with a rigid width:12rem — on a browser window
       narrow enough that the app's nav + this folder sidebar + a fixed 12rem
       sender column + the date column exceed the available width, this column
       alone could exceed what's left with nothing able to compensate (the
       subject shrinking to 0 isn't enough when THIS column itself is the
       overflow source). Letting it shrink too (down to a 5rem floor) means the
       row can always fit; only the sender name gets truncated tighter first. */
    flex: 0 1 12rem;
    min-width: 5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.webmail-row-subject[b-fki3kdzics] {
    flex: 1;
    /* Flex items default to min-width:auto, which lets a long, non-wrapping
       subject line refuse to shrink below its natural width and push the date
       column off-screen instead of truncating — min-width:0 is what actually
       lets overflow/text-overflow below take effect. */
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.webmail-row-date[b-fki3kdzics] {
    /* Explicit width (rather than relying on content-based auto sizing) so this
       column's size is deterministic — combined with .webmail-row-subject's
       min-width:0, the row's total width is now fully bounded by fixed-size
       columns + a shrinkable subject, and can never exceed the container. */
    width: 5.5rem;
    flex-shrink: 0;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #6c757d;
    font-size: 0.85rem;
}

/* The 受信日時 column header doubles as a sort-toggle button (not shown during
   search — search results use a separate fetch path with no server-side sort
   param, see ToggleSortOrderAsync's own comment). Button-reset on top of the
   shared .webmail-row-date sizing/alignment so it still lines up with the
   plain-span date cell in every data row below it. */
.webmail-row-date-sort[b-fki3kdzics] {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.2rem;
    cursor: pointer;
}

.webmail-row-date-sort:hover[b-fki3kdzics] {
    color: var(--blue, #2B5797);
}

.webmail-row-date-sort i[b-fki3kdzics] {
    font-size: 0.7rem;
}

/* No max-width — matches 受信一覧 (.webmail-list-view), same as
   .webmail-form-card (Compose/Settings), per the same request (2026-08-08). */

/* .webmail-compose/.webmail-settings (the <EditForm>s themselves) turned out
   not to reliably carry Blazor's CSS-isolation scope attribute on their
   rendered root <form> in this app — a plain class-based rule on either one
   (border/background/max-width) never painted on any real device or the
   local emulator, confirmed 2026-08-08. Moved the visible-card styling onto
   .webmail-form-card, a genuine <div> written directly in Webmail.razor's
   own markup just inside each <EditForm>, which is guaranteed to receive
   the scope attribute. Shared by both Compose and Settings (identical card
   look); .webmail-address-book is a plain <div>, not an EditForm, so its
   own max-width rule above was never affected by this bug. */
.webmail-form-card[b-fki3kdzics] {
    /* No max-width — user asked for this to match 受信一覧
       (.webmail-list-view), which has never had a width cap and just fills
       .webmail-main's full width (confirmed 2026-08-08). */
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

/* 宛先/CC/BCC: label and its field share one row instead of stacking, with the
   label pinned to a fixed width so the three rows' fields all line up. */
.webmail-compose-row[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.webmail-compose-row > .form-label[b-fki3kdzics] {
    flex: 0 0 3rem;
    margin-bottom: 0;
    white-space: nowrap;
}

/* 宛先/CC/BCCラベルをクリックするとアドレス帳ポップアップが開く（2026-08-31、
   以前の「アドレス帳から選択」ボタン+インライン表示パネルを置き換え）。
   見た目は.form-labelのまま、ボタンとしての既定装飾だけリセットする。 */
.webmail-recipient-label-btn[b-fki3kdzics] {
    border: none;
    background: none;
    padding: 0;
    text-align: left;
    cursor: pointer;
    border-radius: 4px;
}

.webmail-recipient-label-btn:hover[b-fki3kdzics] {
    color: var(--primary, #0d6efd);
    text-decoration: underline;
}

/* Styled to look like a single Bootstrap .form-control, but is actually a flex
   container of chips + a borderless trailing text input — see
   .webmail-recipient-input below. */
.webmail-recipient-field[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem;
    min-height: calc(1.5em + 0.75rem + 2px);
    padding: 0.25rem 0.5rem;
    border: 1px solid #ced4da;
    border-radius: 0.375rem;
    background-color: #fff;
}

.webmail-recipient-field:focus-within[b-fki3kdzics] {
    border-color: #86b7fe;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.webmail-recipient-chip[b-fki3kdzics] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    background-color: #e9ecef;
    font-size: 0.85rem;
    white-space: nowrap;
}

.webmail-recipient-chip-remove[b-fki3kdzics] {
    border: none;
    background: none;
    padding: 0;
    line-height: 1;
    color: #6c757d;
    cursor: pointer;
    font-size: 0.9rem;
}

.webmail-recipient-chip-remove:hover[b-fki3kdzics] {
    color: #dc3545;
}

.webmail-recipient-input[b-fki3kdzics] {
    flex: 1 1 auto;
    min-width: 8rem;
    border: none;
    outline: none;
    padding: 0.15rem 0.2rem;
    font-size: 1rem;
    background: transparent;
}

/* 宛先/CC/BCCクリックで開くポップアップ。.webmail-attachment-previewと同じ
   理由でトップレベルに置かれる（Webmail.razor側のコメント参照）ので、この
   スタイルは.webmail-mainの入れ子フレックス構造から独立している。 */
.webmail-contact-picker-overlay[b-fki3kdzics] {
    position: fixed;
    inset: 0;
    z-index: 1060;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background-color: rgba(0, 0, 0, 0.35);
}

.webmail-contact-picker-dialog[b-fki3kdzics] {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 26rem;
    max-height: 80vh;
    border-radius: 12px;
    background-color: #fff;
    overflow: hidden;
}

.webmail-contact-picker-dialog-header[b-fki3kdzics] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    flex-shrink: 0;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid #dee2e6;
    font-weight: 600;
}

.webmail-contact-picker-dialog-body[b-fki3kdzics] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 0.5rem 1rem 1rem;
}

.webmail-contact-picker-item[b-fki3kdzics] {
    display: flex;
    align-items: flex-start;
    width: 100%;
    padding: 0.5rem;
    border: none;
    border-radius: 8px;
    background: none;
    text-align: left;
    cursor: pointer;
}

.webmail-contact-picker-item:hover[b-fki3kdzics] {
    background-color: #f4f7fc;
}

/* The action bar (戻る/返信/転送/削除) stays visible while a long mail body
   scrolls, instead of scrolling away with it — mirrors the
   .webmail-list-sticky/.webmail-list-scroll split above. Requires
   .webmail-detail to fill .webmail-main's own height as a flex column, since
   .webmail-detail-scroll's flex:1/min-height:0 only bounds it correctly if
   its immediate parent has a definite height. */
.webmail-detail[b-fki3kdzics] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
}

.webmail-detail-actions[b-fki3kdzics] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 0.9rem;
    position: relative;
}

.webmail-toolbar-divider[b-fki3kdzics] {
    width: 1px;
    height: 24px;
    background: var(--border, #E5DDD4);
    margin: 0 2px;
    flex-shrink: 0;
}

/* 戻る／削除／・・・: icon-only bordered buttons. */
.webmail-toolbar-back[b-fki3kdzics],
.webmail-toolbar-danger[b-fki3kdzics],
.webmail-toolbar-more[b-fki3kdzics] {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    border: 1.5px solid var(--border, #E5DDD4);
    background: var(--white, #fff);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--mid, #4B5563);
    transition: background .15s, border-color .15s, color .15s;
    flex-shrink: 0;
}

.webmail-toolbar-back:hover[b-fki3kdzics],
.webmail-toolbar-more:hover[b-fki3kdzics] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.webmail-toolbar-danger[b-fki3kdzics] {
    color: var(--terra, #E8543A);
}

.webmail-toolbar-danger:hover[b-fki3kdzics] {
    background: var(--terra-l, #FEF0EC);
    border-color: var(--terra, #E8543A);
}

.webmail-toolbar-back:disabled[b-fki3kdzics],
.webmail-toolbar-danger:disabled[b-fki3kdzics],
.webmail-toolbar-more:disabled[b-fki3kdzics] {
    opacity: .5;
    cursor: not-allowed;
}

/* 返信（編集）: flat Tomova Blue, no gloss. */
.webmail-toolbar-primary[b-fki3kdzics] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    background: var(--blue, #2B5797);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s;
    font-family: inherit;
    white-space: nowrap;
}

.webmail-toolbar-primary:hover[b-fki3kdzics] {
    background: var(--blue-d, #1A3A6B);
}

.webmail-toolbar-primary:disabled[b-fki3kdzics] {
    opacity: .6;
    cursor: not-allowed;
}

/* 転送／移動: outline style. */
.webmail-toolbar-outline[b-fki3kdzics] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    border: 1.5px solid var(--border, #E5DDD4);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color .15s, color .15s, background .15s;
    font-family: inherit;
    white-space: nowrap;
}

.webmail-toolbar-outline:hover[b-fki3kdzics] {
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
    background: var(--blue-l, #EBF1FA);
}

.webmail-toolbar-outline:disabled[b-fki3kdzics] {
    opacity: .6;
    cursor: not-allowed;
}

/* 選択項目の削除／添付削除など: outline shape, red text (labeled sibling of
   .webmail-toolbar-danger, which is icon-only). */
.webmail-toolbar-danger-outline[b-fki3kdzics] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: var(--white, #fff);
    color: var(--terra, #E8543A);
    border: 1.5px solid var(--border, #E5DDD4);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color .15s, color .15s, background .15s;
    font-family: inherit;
    white-space: nowrap;
}

.webmail-toolbar-danger-outline:hover[b-fki3kdzics] {
    border-color: var(--terra, #E8543A);
    background: var(--terra-l, #FEF0EC);
}

.webmail-toolbar-danger-outline:disabled[b-fki3kdzics] {
    opacity: .6;
    cursor: not-allowed;
}

.webmail-toolbar-caret[b-fki3kdzics] {
    font-size: 10px;
}

.webmail-toolbar-dropdown[b-fki3kdzics] {
    position: relative;
    display: inline-flex;
}

.webmail-toolbar-dropdown-menu[b-fki3kdzics] {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    background: var(--white, #fff);
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.10);
    min-width: 180px;
    max-height: 18rem;
    overflow-y: auto;
    z-index: 100;
}

.webmail-toolbar-dropdown-menu-right[b-fki3kdzics] {
    left: auto;
    right: 0;
}

.webmail-toolbar-dropdown-item[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    font-size: 13px;
    color: var(--dark, #16213E);
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s;
}

.webmail-toolbar-dropdown-item:hover[b-fki3kdzics] {
    background: var(--light, #F7F4F0);
}

.webmail-toolbar-overlay[b-fki3kdzics] {
    position: fixed;
    inset: 0;
    z-index: 99;
}

.webmail-detail-scroll[b-fki3kdzics] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

.webmail-body[b-fki3kdzics] {
    white-space: pre-wrap;
    word-break: break-word;
}

.webmail-body-box[b-fki3kdzics] {
    padding: 1rem;
    border: 1px solid #dee2e6;
    border-radius: 6px;
    background-color: #fff;
}

.webmail-body-frame[b-fki3kdzics] {
    width: 100%;
    height: 32rem;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    background-color: #fff;
    /* Belt-and-suspenders for webmail-body.js's mobile shrink-to-fit: old
       table-layout HTML mail can leave a few px of sub-pixel slack even after
       the content is scaled and overflow-x is locked down inside the frame's
       own document, and some browsers still let a horizontal drag pan a
       nested browsing context regardless of its internal overflow CSS.
       touch-action stops that at the gesture level instead, independent of
       whatever overflow state the framed document ends up in. */
    touch-action: pan-y;
}

/* Full-screen overlay (not a plain new-tab navigation) so there's always our
   own visible close button — as an installed PWA there's no browser tab bar
   or back gesture to fall back on. */
.webmail-attachment-preview[b-fki3kdzics] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: flex;
    flex-direction: column;
    background-color: #fff;
}

.webmail-attachment-preview-header[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #dee2e6;
    background-color: #f8f9fa;
}

.webmail-attachment-preview-name[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.webmail-attachment-preview-frame[b-fki3kdzics] {
    flex: 1;
    min-height: 0;
    width: 100%;
    border: none;
}


.webmail-detail-header[b-fki3kdzics] {
    margin-bottom: 1rem;
    padding: 0.9rem 1.1rem;
    background-color: #f4f7fc;
    border: 1px solid #dee2e6;
    border-radius: 6px;
}

.webmail-detail-title[b-fki3kdzics] {
    margin-bottom: 0.6rem;
    word-break: break-word;
}

.webmail-detail-meta-row[b-fki3kdzics] {
    display: flex;
    gap: 0.5rem;
    padding: 0.15rem 0;
    border-top: 1px solid #e6eaf0;
}

.webmail-detail-meta-row:first-child[b-fki3kdzics] {
    border-top: none;
}

.webmail-detail-meta-label[b-fki3kdzics] {
    flex: 0 0 6rem;
    color: #6c757d;
    font-size: 0.85rem;
}

.webmail-detail-meta-label i[b-fki3kdzics] {
    margin-right: 0.25rem;
}

.webmail-detail-meta-value[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    word-break: break-word;
}

@media print {
    .webmail-detail-header[b-fki3kdzics] {
        background-color: #fff;
    }
}

/* Printing a message: only .webmail-detail-scroll's content (header + body)
   should end up on paper — everything else here (folder sidebar, action
   buttons) is chrome. The app shell's own chrome (top bar, bottom nav) is
   hidden separately in MainLayout.razor.css, since it's outside this
   component's scoped-CSS reach. */
@media print {
    .webmail-sidebar[b-fki3kdzics],
    .webmail-detail-actions[b-fki3kdzics],
    .mail-topbar[b-fki3kdzics],
    .fab[b-fki3kdzics] {
        display: none !important;
    }

    .webmail-layout[b-fki3kdzics] {
        border: none;
        display: block;
    }

    .webmail-main[b-fki3kdzics] {
        overflow: visible;
        padding: 0;
    }

    .webmail-detail[b-fki3kdzics] {
        max-width: none;
        /* The visible-card border/background/padding moved here from
           .webmail-main (2026-08-08) — strip it for print, same as
           .webmail-main was already zeroed above, so the printed page
           isn't boxed in. */
        border: none;
        background: none;
        padding: 0;
    }

    .webmail-detail-scroll[b-fki3kdzics] {
        overflow: visible;
    }

    .webmail-body-frame[b-fki3kdzics] {
        border: none;
        /* Height is set inline (in px) by webmail-print.js right before
           window.print(), sized to the iframe's actual content — this just
           makes sure nothing here clips it back down. */
        overflow: visible;
    }
}

/* Card-internal-scroll for Compose's <form> — desktop only (min-width:769px
   below). Confirmed working on PC. The first mobile attempt (pitfall #9/#10)
   used a plain div for this same flex:1/min-height:0/overflow-y:auto role
   and never reliably resolved a real height on a real iPhone 12 mini; a
   second attempt via ::deep onto the <form> directly, unconditional across
   both breakpoints, was retried 2026-08-08 and broke the SAME way on a real
   iPhone 12 mini (card rendered far shorter than available height, 本文 cut
   off mid-field). The outer wrapper (.webmail-main.webmail-main-flow) was
   reverted to flow-via-.wg-content on mobile (see its own max-width:768px
   rule below) — but reverting only the outer wasn't enough on its own: this
   inner rule was still unconditionally forcing flex:1/min-height:0 onto the
   <form> at every width, and *that* (not the outer wrapper) turned out to
   be what was actually collapsing the card's height on-device even after
   the outer revert. Explicitly gating this rule to desktop-only (rather
   than assuming an auto-height outer parent makes flex:1 on this child an
   inert no-op, which was the wrong assumption on real WebKit) is the
   actual fix — the two media queries are mutually exclusive, so no
   separate mobile reset is needed below; the <form> just falls back to
   plain block behavior under max-width:768px, matching pitfall #10's
   original "otherwise a plain block form with no flex sizing or overflow
   of its own" description. */
@media (min-width: 769px) {
    .webmail-main.webmail-main-flow[b-fki3kdzics]  form.webmail-compose {
        flex: 1;
        min-height: 0;
        overflow-x: hidden;
        overflow-y: auto;
        overscroll-behavior: contain;
        -webkit-overflow-scrolling: touch;
    }
}

@media (max-width: 768px) {
    .webmail-sidebar[b-fki3kdzics],
    .webmail-main[b-fki3kdzics] {
        width: 100%;
    }

    /* .webmail-main:not(shrink):not(flow) (List/Detail/AddressBook) does NOT
       need its own padding-bottom here — REMOVED 2026-08-08 after the user
       pushed it down step by step (4rem → 3.5rem → 2rem → 1rem → safe-area
       only) with zero visible or functional change at every step (checked
       the pagination bar's actual tap targets, not just the visual gap).
       Turns out this whole rule was a redundant DOUBLE reservation on top
       of .wg-article's own generic mobile padding-bottom (calc(4rem +
       safe-area), MainLayout.razor.css) — for a fixed-height flex:1-FILL
       view, .wg-article's clearance alone already bounds .webmail-layout →
       .webmail-main → .webmail-list-view correctly (same lesson as
       feedback_flexbox_debugging.md pitfall #6, which this had drifted
       away from without anyone noticing). This is DIFFERENT from
       .webmail-main-shrink/.webmail-main-flow below, which DO still need
       their own explicit padding-bottom — those are CONTENT-SIZED cards,
       not flex:1-fill ones, so .wg-article's clearance shrinking the
       *available* space doesn't automatically bound where their
       *content-driven* height happens to end (confirmed necessary via
       pitfall #16's real-device testing) — don't remove those by analogy
       to this one, the two cases are structurally different. */

    /* Settings/Rules, mobile only: same direct-padding-bottom treatment as
       Compose below (padding on the now-transparent outer box, so it reads
       as page background below the visible inner card instead of blank
       space inside it — .webmail-form-card / .webmail-rules carry the
       visible border/background, see their own rules above). */
    .webmail-main.webmail-main-shrink[b-fki3kdzics] {
        padding-bottom: calc(6rem + env(safe-area-inset-bottom));
    }

    /* Compose, mobile only: back to "flow, size to own content" (like
       Home.razor) — the proven-stable pattern, see the big comment above
       .webmail-main.webmail-main-flow. Desktop (min-width:769px) keeps the
       card-internal-scroll ::deep rule unchanged; it was never reported
       broken there. */
    .webmail-main.webmail-main-flow[b-fki3kdzics] {
        align-self: flex-start;
        height: auto;
        overflow: visible;
        padding-bottom: calc(6rem + env(safe-area-inset-bottom));
    }

    /* 左右paddingは0にする — .wg-article(MainLayout.razor.css)が既に
       全ページ共通でpadding-left/right:0.5remを持っており、ここにも
       0.5remを足すと合計1remになってHome/Scheduleの2倍の余白になって
       いた（実機で指摘・08-18）。上下のpaddingだけ維持する。 */
    .webmail-form-card[b-fki3kdzics],
    .webmail-rules[b-fki3kdzics],
    .webmail-list-view[b-fki3kdzics],
    .webmail-detail[b-fki3kdzics],
    .webmail-address-book[b-fki3kdzics] {
        padding: 0.5rem 0;
    }

    /* tomova_webmail_mobile_brushup.htmlは一覧本体(.mail-list-wrap)とページャー
       (.pager)が別々のブロックで、一覧だけが白背景・枠線付きのカード。
       これまでは.webmail-list-view自身が検索欄～ページャーまで全部を
       ひとつの枠で囲んでいたため、ページャーが一覧カードの一部のように
       見えてしまっていた（実機で指摘・08-18）。外枠は透明にし、実際の
       一覧(.webmail-list-scroll)だけを独立したカードにする。 */
    .webmail-list-view[b-fki3kdzics] {
        border: none;
        background: transparent;
    }

    .webmail-list-scroll[b-fki3kdzics] {
        background: var(--white, #fff);
        border: 1px solid var(--border, #E5DDD4);
        border-radius: 12px;
        padding: 0 0.25rem;
    }

    .webmail-list[b-fki3kdzics] {
        border-top: none;
    }

    .webmail-row[b-fki3kdzics],
    .webmail-list-columns[b-fki3kdzics] {
        padding-left: 0.1rem;
        padding-right: 0.25rem;
    }

    /* tomova_webmail_mobile_brushup.htmlの.search-rowは常時展開（折りたたみ
       トグルが無い）。以前はここで.webmail-search-form-collapsedをdisplay:
       noneにしてShowMobileSearchでの開閉式にしていたが、周辺のh5/新着確認
       ボタンをd-none-mobileで隠した結果、検索アイコンだけが孤立して見える
       状態になっていた（実機で指摘・08-18）。スマホでは折りたたみ自体を
       無効化し常に表示する。.webmail-search-toggleはもうRazor側で使って
       いない（ボタン自体を削除済み）。 */
    .webmail-search-form-collapsed[b-fki3kdzics] {
        display: flex;
    }

    .webmail-search-form input[type="text"][b-fki3kdzics] {
        background: var(--white, #fff);
        border: 1px solid var(--border, #E5DDD4);
        border-radius: 10px;
    }

    /* tomova_webmail_mobile_brushup.htmlの.page-select。検索欄
       (.webmail-search-form)と同じ行に置くため、ここは横幅を取りすぎない
       よう最小限のpaddingにする。 */
    .page-select[b-fki3kdzics] {
        border: 1px solid var(--border, #E5DDD4);
        border-radius: 9px;
        background: var(--white, #fff);
        font-size: 0.7rem;
        color: var(--mid, #4B5563);
        padding: 0.4rem 0.3rem;
        flex-shrink: 0;
    }

    /* Gmail-style 2-line row: line 1 is 差出人 + 受信日時, line 2 is 件名 on its
       own full-width line. Achieved by wrapping the row and using `order` to
       move 件名 after 受信日時 in paint order, then giving it flex-basis:100%
       so it can't fit on line 1 and wraps to a line of its own — no HTML
       restructuring needed, .webmail-list-columns (the header) picks up the
       same layout automatically since it shares these classes. */
    .webmail-row[b-fki3kdzics],
    .webmail-list-columns[b-fki3kdzics] {
        flex-wrap: wrap;
    }

    .webmail-row-from[b-fki3kdzics] {
        order: 1;
        /* flex-basis:0% (not auto) — with basis:auto, the browser's line-wrap
           decision uses the sender name's full, unclamped content width
           (ignoring min-width/shrink, which only apply once a line's items are
           already decided), so a long name alone could exceed the line and
           push 受信日時 onto a second line. Basis:0% starts this item at zero
           for that decision, then flex-grow expands it to fill the line, and
           overflow/ellipsis (from the base .webmail-row-from rule) truncates
           it if it's still too long — never a forced wrap. */
        flex: 1 1 0%;
        min-width: 0;
        text-align: left;
    }

    .webmail-row-date[b-fki3kdzics] {
        order: 2;
    }

    .webmail-row-subject[b-fki3kdzics] {
        order: 3;
        /* この下の方で.webmail-unread-dotをスマホでも表示するよう上書きして
           いる（display:blockかつ既読行ではvisibility:hiddenでスペースだけ
           確保）ため、1行目の差出人はチェックボックス＋ドット分だけ右に
           ずれた位置から始まる。件名（2行目）はflex-wrapで折り返した独立行
           としてこの行の左端から始まってしまい、差出人と揃っていなかった
           （実機で指摘・08-18）。padding-left（box-sizing:border-boxなので
           marginと違いwidthに含まれ、右にはみ出さない）で差出人の開始位置に
           揃える: チェックボックス1.5rem + gap0.4rem + ドット0.45rem +
           gap0.4rem = 2.75rem。 */
        flex-basis: 100%;
        box-sizing: border-box;
        padding-left: 2.75rem;
        margin-top: 0.15rem;
    }

    /* Rows are now 2 lines tall, so a clear divider between messages matters
       more here than on desktop — darken it from the default #eee. */
    .webmail-row[b-fki3kdzics] {
        border-bottom-color: #ced4da;
    }

    /* The ● unread dot is desktop-only (Gmail's mobile app doesn't show one
       either) — bold sender name + the unread background are enough on
       mobile. display:none (not just visibility:hidden) removes it AND its
       reserved space entirely — previously it was still invisibly reserving
       ~1.2rem (dot width + gap) of left space even when hidden, which was
       the actual bulk of the "too much left margin" being reported.
       .webmail-unread-dot-spacer (the header row's stand-in for the dot,
       used so 差出人/件名 labels line up with the rows below) has to go too,
       for the same reason. */
    .webmail-unread-dot[b-fki3kdzics],
    .webmail-unread-dot-spacer[b-fki3kdzics] {
        display: none;
    }

    /* Icon-only 新着確認/移動/削除 — their text labels (see the wrapping <span>
       around each in Webmail.razor) just take up width these buttons don't have
       on a phone-size screen; dropping them is what actually fixes the folder
       header block ballooning to 3 lines tall (see .webmail-list-header .btn
       above for the wrap-prevention half of this fix). */
    .webmail-btn-label[b-fki3kdzics] {
        display: none;
    }

    /* .webmail-list-sticky自身のbackground-color:#fff（無条件ルール）が、
       中身の高さが0になった後も白い帯として見えてしまっていた
       （実機で指摘・08-18）。PCでは中身（フォルダ名等）があるヘッダー背景
       として必要なので、そちらはそのまま維持しスマホだけ透明にする。 */
    .webmail-list-sticky[b-fki3kdzics] {
        background-color: transparent;
    }

    /* h5/新着確認/検索トグル/件数/ページサイズはすべてd-none-mobile・
       display:noneでスマホでは非表示（上のmail-topbar/検索行が代わりに
       出す）。残るのは「選択中N件」のときだけ現れる移動/削除ボタン
       （.webmail-list-header最初のdivの一部）だけなので、枠自体の
       padding/border/marginは0にし、必要なときだけそのdiv側で
       spacingを持たせる。以前はここにPC同様のpadding-bottom等が
       残っていて、選択されていない通常時に中身の無い帯（区切り線だけ）
       が検索行と一覧の間に浮いて見えていた（実機で指摘・08-18）。 */
    .webmail-list-header[b-fki3kdzics] {
        /* padding-bottomだけ0にしてpadding-top(無条件ルールの0.5rem=8px)を
           消し忘れていたため、中身が全部隠れた後も8px分の白い帯が残って
           見えていた（実機で指摘・08-18）。 */
        padding: 0;
        margin-bottom: 0;
        border-bottom: none;
    }

    /* 「選択中N件」のときだけ現れる移動/削除ボタンの上下spacingは、
       枠(.webmail-list-header)側ではなくボタン自身に持たせる — 枠側に
       付けると中身が無い通常時にも空間だけ残ってしまうため（上のコメント
       参照）。 */
    .webmail-list-header > div:first-child > .webmail-toolbar-outline[b-fki3kdzics],
    .webmail-list-header > div:first-child > .webmail-toolbar-danger-outline[b-fki3kdzics],
    .webmail-list-header > div:first-child > select[b-fki3kdzics] {
        margin: 0.35rem 0;
    }

    /* 件数/ページサイズは検索行のlist-count-label/page-selectに完全に
       置き換わったため、スマホではブロックごと非表示にする（中身の
       .webmail-list-count/選択欄をそれぞれ隠すだけだと、この空のdiv自体は
       レイアウトに残ってしまう）。 */
    /* この2つ目のdivはBootstrapの.d-flexクラスも付いており、.d-flexは
       Bootstrap 5のレスポンシブユーティリティとしてdisplay:flex!important
       で定義されているため、!important無しのdisplay:noneでは勝てなかった
       （実機で再現・08-18）。 */
    .webmail-list-header > div:last-child[b-fki3kdzics] {
        display: none !important;
    }

    /* 差出人/件名/受信日時 column headers only make sense against the desktop
       row's own single-line column layout — mobile rows are already a 2-line
       Gmail-style stack (see .webmail-row-from/-date/-subject above) with no
       column alignment for these labels to describe, so they're just dead
       weight taking up a line. */
    .webmail-list-columns[b-fki3kdzics] {
        display: none;
    }

    /* Shorter rows so more fit on screen at once — still 2 lines (差出人+受信日時,
       then 件名) but tighter than desktop's roomier spacing. */
    .webmail-row[b-fki3kdzics] {
        padding-top: 0.3rem;
        padding-bottom: 0.3rem;
        gap: 0.4rem;
    }

    .webmail-row-from[b-fki3kdzics],
    .webmail-row-date[b-fki3kdzics] {
        font-size: 0.85rem;
    }

    .webmail-row-subject[b-fki3kdzics] {
        margin-top: 0.05rem;
        font-size: 0.85rem;
    }

    /* tomova_webmail_mobile_brushup.htmlは未読を「青ドット＋差出人/件名の
       太字＋日時の青色」の4点で示す設計（既存は差出人の太字のみ）。
       .webmail-unread-dotは元々「Gmailアプリも出さないから」という理由で
       スマホのみdisplay:noneにされていたが、今回のモックアップでは逆に
       スマホでこそ表示する仕様なので上書きする（PCの見た目・色(terra)は
       無条件ルールのまま変更しない）。 */
    .webmail-unread-dot[b-fki3kdzics] {
        display: block;
        background-color: var(--blue, #2B5797);
    }

    .webmail-unread-dot-spacer[b-fki3kdzics] {
        display: block;
    }

    .webmail-row-unread .webmail-row-subject[b-fki3kdzics] {
        font-weight: 700;
        color: var(--dark, #16213E);
    }

    .webmail-row-unread .webmail-row-date[b-fki3kdzics] {
        color: var(--blue, #2B5797);
        font-weight: 700;
    }
}

/* ========== スマホ専用（≤768px、.d-mobile-onlyでPCでは非表示）==========
   tomova_webmail_mobile_brushup.html を参照。 */

/* ----- 一覧画面ツールバー（ハンバーガー＋フォルダ名/件数＋新着確認/新規作成）----- */
.mail-topbar[b-fki3kdzics] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.625rem;
    padding: 0.625rem 0.875rem;
    background: var(--white, #fff);
    border-bottom: 1px solid var(--border, #E5DDD4);
    margin-bottom: 1rem;
    border-radius: 12px;
    /* 以前ここにmargin-top:-1.1rem（.wg-articleの共通padding-topを打ち消す
       ため）を入れていたが、副作用でアイコン/テキストの縦中央がズレて
       見えるようになった（実機のdevtoolsで確認・打ち消すと直ることを
       確認済み・08-18）。中央揃えを優先しここでは取り消す — 紺バーとの
       間の隙間は少し残る。 */
}

.mail-topbar-title[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    font-size: 0.9375rem;
    font-weight: 800;
    color: var(--dark, #16213E);
    display: flex;
    align-items: baseline;
    gap: 0.375rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mail-folder-count[b-fki3kdzics] {
    font-size: 0.6875rem;
    color: var(--muted, #9CA3AF);
    font-weight: 600;
    flex-shrink: 0;
}

.mail-topbar-actions[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

.mail-icon-btn[b-fki3kdzics] {
    width: 2.125rem;
    height: 2.125rem;
    border-radius: 9px;
    border: none;
    background: transparent;
    color: var(--mid, #4B5563);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
}

.mail-icon-btn:active[b-fki3kdzics] {
    background: var(--bg, #F0EDE8);
}

.mail-icon-btn.primary[b-fki3kdzics] {
    background: var(--blue, #2B5797);
    color: white;
}

.mail-icon-btn:disabled[b-fki3kdzics] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ----- FAB（新規作成）-----
   bottomはSchedule.razor.cssの.sched-fabと同じ考え方: 固定ボトムナビ
   (calc(3.5rem + env(safe-area-inset-bottom))) の上に1remの隙間。 */
.fab[b-fki3kdzics] {
    position: fixed;
    right: 1rem;
    bottom: calc(3.5rem + env(safe-area-inset-bottom) + 1rem);
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    border: none;
    background: var(--blue, #2B5797);
    color: white;
    font-size: 1.35rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(43, 87, 151, 0.4);
    cursor: pointer;
    z-index: 60;
}

.fab:disabled[b-fki3kdzics] {
    opacity: 0.6;
    cursor: not-allowed;
}

/* ----- ボトムシート（メニュー） -----
   display:none/blockではなくtransform/opacityのトランジションで開閉させる
   （指示書の重要ポイント — displayの切り替えだとスライドインしない）。 */
.sheet-overlay[b-fki3kdzics] {
    position: fixed;
    inset: 0;
    background: rgba(22, 33, 62, 0.4);
    z-index: 80;
    opacity: 0;
    transition: opacity 0.25s ease;
    pointer-events: none;
}

.sheet-overlay.open[b-fki3kdzics] {
    opacity: 1;
    pointer-events: auto;
}

.sheet[b-fki3kdzics] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--white, #fff);
    border-radius: 20px 20px 0 0;
    z-index: 90;
    max-height: 82vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: max(1rem, env(safe-area-inset-bottom));
    transform: translateY(100%);
    transition: transform 0.28s cubic-bezier(.32, .72, 0, 1);
    box-shadow: 0 -8px 30px rgba(0, 0, 0, 0.15);
}

.sheet.open[b-fki3kdzics] {
    transform: translateY(0);
}

.sheet-handle[b-fki3kdzics] {
    width: 2.25rem;
    height: 0.25rem;
    background: var(--border, #E5DDD4);
    border-radius: 2px;
    margin: 0.625rem auto 0.375rem;
}

.sheet-header[b-fki3kdzics] {
    padding: 0.375rem 1.125rem 0.75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.sheet-title[b-fki3kdzics] {
    font-size: 0.875rem;
    font-weight: 800;
    color: var(--dark, #16213E);
}

.sheet-close[b-fki3kdzics] {
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    background: var(--bg, #F0EDE8);
    border: none;
    color: var(--mid, #4B5563);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
    cursor: pointer;
}

.sheet-action-grid[b-fki3kdzics] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.375rem;
    padding: 0.25rem 0.875rem 0.875rem;
}

.sheet-action[b-fki3kdzics] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.375rem;
    padding: 0.625rem 0.25rem;
    border-radius: 12px;
    color: var(--dark, #16213E);
    cursor: pointer;
}

.sheet-action:active[b-fki3kdzics] {
    background: var(--bg, #F0EDE8);
}

.sheet-action .ic[b-fki3kdzics] {
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 13px;
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
}

.sheet-action.compose .ic[b-fki3kdzics] {
    background: var(--blue, #2B5797);
    color: white;
}

.sheet-action-label[b-fki3kdzics] {
    font-size: 0.65625rem;
    font-weight: 600;
    text-align: center;
}

.sheet-folder-group[b-fki3kdzics] {
    padding: 0.125rem 0.5rem 0.5rem;
}

.sheet-folder-label[b-fki3kdzics] {
    font-size: 0.625rem;
    font-weight: 700;
    color: var(--muted, #9CA3AF);
    padding: 0.5rem 0.625rem 0.25rem;
    letter-spacing: 0.03em;
}

.sheet-folder-item[b-fki3kdzics] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.6875rem 0.625rem;
    border-radius: 10px;
    color: var(--dark, #16213E);
    font-size: 0.8125rem;
    cursor: pointer;
}

.sheet-folder-item.active[b-fki3kdzics] {
    background: var(--blue-l, #EBF1FA);
    color: var(--blue, #2B5797);
    font-weight: 700;
}

.sheet-folder-item:active[b-fki3kdzics] {
    background: var(--bg, #F0EDE8);
}

.sheet-folder-item .fic[b-fki3kdzics] {
    width: 1.875rem;
    height: 1.875rem;
    border-radius: 9px;
    background: var(--bg, #F0EDE8);
    color: var(--mid, #4B5563);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 0.8rem;
}

.sheet-folder-item.active .fic[b-fki3kdzics] {
    background: var(--blue, #2B5797);
    color: white;
}

.sheet-folder-name[b-fki3kdzics] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sheet-folder-badge[b-fki3kdzics] {
    font-size: 0.65625rem;
    font-weight: 700;
    color: white;
    background: var(--terra, #E8543A);
    padding: 1px 7px;
    border-radius: 10px;
    flex-shrink: 0;
}

/* ----- 無限スクロール状態表示（tomova_webmail_mobile_instructions.md 1-4）----- */
.list-count-label[b-fki3kdzics] {
    font-size: 0.75rem;
    color: var(--muted, #9CA3AF);
    padding: 0 0.125rem 0.375rem;
}

.list-status[b-fki3kdzics] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.875rem 0;
    font-size: 0.75rem;
    color: var(--muted, #9CA3AF);
}

.list-loading-spinner[b-fki3kdzics] {
    width: 1rem;
    height: 1rem;
    border: 2px solid var(--border, #E5DDD4);
    border-top-color: var(--blue, #2B5797);
    border-radius: 50%;
    animation: webmail-spin-b-fki3kdzics 0.7s linear infinite;
}

@keyframes webmail-spin-b-fki3kdzics {
    to {
        transform: rotate(360deg);
    }
}

.list-end-label[b-fki3kdzics] {
    font-size: 0.75rem;
    color: var(--muted, #9CA3AF);
}
/* /Components/Pages/Workflow.razor.rz.scp.css */
.workflow-panel[b-mev6eziuvs] {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 12px;
    background-color: var(--white, #fff);
    margin-bottom: 1rem;
}

/* Glossy button look, matching Webmail.razor.css's .webmail-layout .btn rules. */
.workflow-panel .btn:not(.btn-link)[b-mev6eziuvs] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.05) 50%, rgba(0, 0, 0, 0.15) 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 1px 2px rgba(0, 0, 0, 0.2);
}

.workflow-panel .btn:not(.btn-link):hover:not(:disabled)[b-mev6eziuvs] {
    background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.08) 50%, rgba(0, 0, 0, 0.18) 100%);
}

.workflow-panel .btn:not(.btn-link):active:not(:disabled)[b-mev6eziuvs] {
    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.15) 100%);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.workflow-back-btn[b-mev6eziuvs] {
    color: var(--blue, #2B5797);
    border-color: var(--border, #E5DDD4);
    background-color: var(--white, #fff);
}

.workflow-back-btn:hover[b-mev6eziuvs] {
    background-color: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
    color: var(--blue, #2B5797);
}

.workflow-new-btn[b-mev6eziuvs] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 10px;
    font-weight: 600;
}

/* Generic chip — replaces Bootstrap's badge bg-secondary for non-status labels (e.g. 無効). */
.workflow-tag[b-mev6eziuvs] {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 10px;
    background: var(--light, #F7F4F0);
    border: 1px solid var(--border, #E5DDD4);
    color: var(--mid, #4B5563);
    font-size: 0.72rem;
    font-weight: 600;
}

/* Status badges — Tomova palette instead of Bootstrap's bg-warning/success/etc. */
.workflow-badge[b-mev6eziuvs] {
    display: inline-block;
    padding: 0.2rem 0.6rem;
    border-radius: 10px;
    font-size: 0.72rem;
    font-weight: 700;
    color: #fff;
}

.workflow-badge-pending[b-mev6eziuvs] {
    background: var(--gold, #F7C948);
    color: var(--dark, #16213E);
}

.workflow-badge-approved[b-mev6eziuvs] {
    background: var(--success, #2E7D32);
}

.workflow-badge-rejected[b-mev6eziuvs] {
    background: var(--terra, #E8543A);
}

.workflow-badge-withdrawn[b-mev6eziuvs] {
    background: var(--muted, #9CA3AF);
}

.workflow-badge-returned[b-mev6eziuvs] {
    background: var(--blue, #2B5797);
}

.workflow-template-list[b-mev6eziuvs] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    border-top: 1px solid #eee;
}

.workflow-template-item[b-mev6eziuvs] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.5rem;
    border-bottom: 1px solid #eee;
}

.workflow-editor-card[b-mev6eziuvs] {
    padding: 0.6rem 0.8rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 8px;
    background: var(--light, #F7F4F0);
}

.workflow-section[b-mev6eziuvs] {
    padding: 1rem 1.1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    background: var(--white, #fff);
}

.workflow-step-list[b-mev6eziuvs] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.workflow-step-item[b-mev6eziuvs] {
    padding: 0.6rem 0.8rem;
    border-radius: 8px;
    background: var(--light, #F7F4F0);
}

.workflow-step-current[b-mev6eziuvs] {
    background: var(--blue-l, #EBF1FA);
    box-shadow: inset 3px 0 0 var(--blue, #2B5797);
}

.workflow-tab-pill[b-mev6eziuvs] {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 20px;
    background: var(--white, #fff);
    color: var(--mid, #4B5563);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.workflow-tab-pill:hover[b-mev6eziuvs] {
    background: var(--blue-l, #EBF1FA);
    border-color: var(--blue, #2B5797);
}

.workflow-tab-pill-active[b-mev6eziuvs],
.workflow-tab-pill-active:hover[b-mev6eziuvs] {
    background: var(--blue, #2B5797);
    border-color: var(--blue, #2B5797);
    color: #fff;
}

.workflow-request-card[b-mev6eziuvs] {
    padding: 0.75rem 1rem;
    border: 1px solid var(--border, #E5DDD4);
    border-radius: 10px;
    background-color: var(--white, #fff);
    cursor: pointer;
    transition: box-shadow 0.15s, transform 0.1s, border-color 0.15s;
}

.workflow-request-card:hover[b-mev6eziuvs] {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    border-color: var(--blue, #2B5797);
    transform: translateY(-1px);
}
/* /Components/Shared/EventEditor.razor.rz.scp.css */
/* Tomova仕様の予定モーダル（Home/Scheduleで共用）。ダイアログの構造・機能は
   Bootstrapモーダルのまま、見た目（角丸・配色・ボタン）だけを合わせる。 */
.modal-content[b-renm6hzulw] {
    border-radius: 14px;
    border: 1px solid var(--border, #E5DDD4);
    box-shadow: 0 8px 40px rgba(0, 0, 0, 0.15);
}

.modal-header[b-renm6hzulw] {
    border-bottom: 1px solid var(--border, #E5DDD4);
    padding: 1rem 1.25rem;
}

.modal-title[b-renm6hzulw] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--dark, #16213E);
}

.modal-body[b-renm6hzulw] {
    padding: 1.1rem 1.25rem;
}

.modal-footer[b-renm6hzulw] {
    border-top: 1px solid var(--border, #E5DDD4);
}

.btn-secondary[b-renm6hzulw] {
    background: var(--white, #fff);
    border-color: var(--border, #E5DDD4);
    color: var(--mid, #4B5563);
}

.btn-secondary:hover[b-renm6hzulw] {
    background: var(--light, #F7F4F0);
    border-color: var(--border, #E5DDD4);
    color: var(--dark, #16213E);
}

.btn-outline-danger[b-renm6hzulw] {
    color: var(--terra, #E8543A);
    border-color: var(--border, #E5DDD4);
}

.btn-outline-danger:hover[b-renm6hzulw] {
    background: var(--terra-l, #FEF0EC);
    border-color: var(--terra, #E8543A);
    color: var(--terra, #E8543A);
}

.btn-primary[b-renm6hzulw],
.btn-outline-secondary[b-renm6hzulw],
.btn-link[b-renm6hzulw] {
    border-radius: 8px;
}

.btn-primary.btn-sm[b-renm6hzulw],
.btn-secondary.btn-sm[b-renm6hzulw],
.btn-outline-danger.btn-sm[b-renm6hzulw],
.btn-outline-secondary.btn-sm[b-renm6hzulw] {
    border-radius: 6px;
}

/* スマホ: このモーダルは.wg-content(overflow-y:auto)の中にDOM上ネストされているため、
   その範囲の外にはみ出た部分は描画されずクリップされる（Safari/Chromeともに、overflow
   を持つ祖先の外に出たposition:fixed子要素は消える）。フォームが縦長で画面に収まらない
   と、上端がヘッダー(4.9rem)の裏に、下端がボトムナビ(3.5rem+safe-area、ともに
   MainLayout.razor.css)の裏に隠れて操作できなくなる。ヘッダーとボトムナビの間に収まる
   高さへ制限し、はみ出た分は.modal-body内だけをスクロールさせる。 */
@media (max-width: 767.98px) {
    .modal[b-renm6hzulw] {
        top: 4.9rem;
        height: calc(100dvh - 4.9rem - 3.5rem - env(safe-area-inset-bottom));
    }

    .modal-dialog[b-renm6hzulw] {
        display: flex;
        align-items: center;
        min-height: calc(100% - 1rem);
        margin: 0.5rem auto;
    }

    .modal-content[b-renm6hzulw] {
        max-height: 100%;
        min-height: 0;
    }

    .modal-body[b-renm6hzulw] {
        overflow-y: auto;
        min-height: 0;
    }
}
