/**
 * DVTV 書類プロセッサー フロントエンドCSS
 */

.dvtv-sp-form-wrap {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.dvtv-sp-form-wrap h3 {
    margin-top: 0;
    padding-bottom: 10px;
    border-bottom: 2px solid #0073aa;
    color: #0073aa;
}

.dvtv-sp-form-wrap h4 {
    color: #333;
    margin-bottom: 15px;
}

/* 解析セクション */
.dvtv-sp-ocr-section {
    background: #e8f4fc;
    border: 2px solid #0073aa;
    border-radius: 8px;
    padding: 20px;
    margin-bottom: 20px;
}

.dvtv-sp-ocr-section h4 {
    margin-top: 0;
    color: #0066cc;
}

/* ドロップゾーン */
.dvtv-sp-dropzone {
    border: 3px dashed #0073aa;
    border-radius: 8px;
    padding: 40px 20px;
    text-align: center;
    background: #fff;
    cursor: pointer;
    transition: all 0.3s ease;
    margin-bottom: 15px;
}

.dvtv-sp-dropzone:hover {
    background: #f0f8ff;
    border-color: #005177;
}

.dvtv-sp-dropzone-active {
    background: #e0f0ff !important;
    border-color: #005177 !important;
    border-style: solid !important;
}

.dvtv-sp-dropzone p {
    margin: 0;
    color: #666;
    font-size: 14px;
    line-height: 1.8;
}

.dvtv-sp-dropzone input[type="file"] {
    display: none;
}

/* ファイルリスト */
.dvtv-sp-file-list {
    margin-bottom: 15px;
}

.dvtv-sp-file-list ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.dvtv-sp-file-list li {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    margin-bottom: 5px;
}

.dvtv-sp-remove-file {
    margin-left: auto;
    background: none;
    border: none;
    color: #d44b4b;
    cursor: pointer;
    font-size: 16px;
    padding: 0 5px;
}

.dvtv-sp-remove-file:hover {
    color: #a00;
}

/* 解析実行ボタン */
.dvtv-sp-ocr-btn-wrap {
    text-align: center;
    margin: 20px 0;
}

#dvtv-sp-ocr-btn {
    display: inline-block;
    padding: 15px 50px;
    font-size: 18px;
    font-weight: 700;
    color: #fff;
    background: linear-gradient(135deg, #0073aa, #005a87);
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(0, 115, 170, 0.4);
    letter-spacing: 2px;
}

#dvtv-sp-ocr-btn:hover:not(:disabled) {
    background: linear-gradient(135deg, #005a87, #004066);
    box-shadow: 0 6px 20px rgba(0, 115, 170, 0.6);
    transform: translateY(-2px);
}

#dvtv-sp-ocr-btn:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 10px rgba(0, 115, 170, 0.4);
}

#dvtv-sp-ocr-btn:disabled {
    background: #999;
    color: #ccc;
    cursor: not-allowed;
    box-shadow: none;
}

#dvtv-sp-ocr-status {
    margin-top: 15px;
}

/* フォームセクション */
#dvtv-sp-form-section {
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 8px;
    padding: 20px;
    margin-top: 20px;
}

/* フォーム */
.dvtv-sp-form {
    margin-top: 15px;
}

.dvtv-sp-field {
    margin-bottom: 20px;
}

.dvtv-sp-field label {
    display: block;
    margin-bottom: 5px;
    font-weight: 600;
    color: #333;
}

.dvtv-sp-field .required {
    color: #d63638;
}

.dvtv-sp-field input[type="text"],
.dvtv-sp-field input[type="number"],
.dvtv-sp-field input[type="date"],
.dvtv-sp-field select,
.dvtv-sp-field textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 14px;
    box-sizing: border-box;
}

.dvtv-sp-field input:focus,
.dvtv-sp-field select:focus,
.dvtv-sp-field textarea:focus {
    border-color: #0073aa;
    outline: none;
    box-shadow: 0 0 0 2px rgba(0, 115, 170, 0.2);
}

/* ラジオボタングループ */
.dvtv-sp-radio-group {
    display: flex;
    gap: 20px;
    padding: 10px 0;
}

.dvtv-sp-radio-label {
    display: flex !important;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-weight: normal !important;
    padding: 10px 15px;
    border: 2px solid #ddd;
    border-radius: 8px;
    transition: all 0.2s ease;
}

.dvtv-sp-radio-label:hover {
    border-color: #0073aa;
    background: #f0f8ff;
}

.dvtv-sp-radio-label input[type="radio"] {
    width: auto;
    margin: 0;
}

.dvtv-sp-radio-label input[type="radio"]:checked + span {
    color: #0073aa;
    font-weight: 600;
}

.dvtv-sp-radio-label:has(input[type="radio"]:checked) {
    border-color: #0073aa;
    background: #e8f4fc;
}

.dvtv-sp-field-hint {
    margin-top: 5px;
    font-size: 12px;
    color: #666;
}

/* ラジオボタンのOCR入力スタイル */
.dvtv-sp-radio-group.dvtv-sp-ocr-filled .dvtv-sp-radio-label:has(input[type="radio"]:checked) {
    border-color: #00d4ff;
    background: rgba(0, 212, 255, 0.1);
    box-shadow: 0 0 8px rgba(0, 212, 255, 0.3);
}

/* 解析で入力されたフィールド - 青ネオン枠 */
.dvtv-sp-ocr-filled {
    border: 2px solid #00bfff !important;
    box-shadow: 0 0 8px #00bfff, 0 0 12px #00bfff !important;
    background-color: #f0faff !important;
}

/* 2カラム */
.dvtv-sp-row {
    display: flex;
    gap: 20px;
}

.dvtv-sp-row .dvtv-sp-field {
    flex: 1;
}

/* アクションボタン */
.dvtv-sp-actions {
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid #eee;
    display: flex;
    gap: 10px;
    justify-content: center;
}

.dvtv-sp-actions .button {
    padding: 10px 30px;
    font-size: 14px;
}

/* 登録ボタン */
#dvtv-sp-submit-btn {
    background: linear-gradient(135deg, #0073aa, #005a87) !important;
    color: #fff !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    padding: 15px 50px !important;
    border: none !important;
    border-radius: 8px !important;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(0, 115, 170, 0.3);
}

#dvtv-sp-submit-btn:hover:not(:disabled) {
    background: linear-gradient(135deg, #005a87, #004066) !important;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(0, 115, 170, 0.4);
}

#dvtv-sp-submit-btn:disabled {
    background: #999 !important;
    color: #ccc !important;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}

/* 提出先設定の保存ボタン */
#dvtv-sp-save-users-btn {
    background: linear-gradient(135deg, #0073aa, #005a87) !important;
    color: #fff !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    padding: 12px 40px !important;
    border: none !important;
    border-radius: 8px !important;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(0, 115, 170, 0.3);
}

#dvtv-sp-save-users-btn:hover:not(:disabled) {
    background: linear-gradient(135deg, #005a87, #004066) !important;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(0, 115, 170, 0.4);
}

#dvtv-sp-save-users-btn:disabled {
    background: #999 !important;
    color: #ccc !important;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}

/* 重複チェック結果 */
.dvtv-sp-duplicate-result {
    margin-top: 20px;
}

.dvtv-sp-duplicate-warning {
    background: #fff3cd;
    border: 1px solid #ffc107;
    border-radius: 8px;
    padding: 15px;
    color: #856404;
}

.dvtv-sp-duplicate-warning strong {
    font-size: 16px;
}

.dvtv-sp-duplicate-warning ul {
    margin: 10px 0;
    padding-left: 20px;
}

.dvtv-sp-duplicate-warning li {
    margin-bottom: 8px;
}

.dvtv-sp-duplicate-warning a {
    color: #0066cc;
}

.dvtv-sp-duplicate-ok {
    background: #d4edda;
    border: 1px solid #c3e6cb;
    border-radius: 8px;
    padding: 15px;
    color: #155724;
}

/* メッセージ */
.dvtv-sp-message {
    margin-top: 20px;
}

.dvtv-sp-success {
    background: #d4edda;
    border: 1px solid #c3e6cb;
    border-radius: 8px;
    padding: 15px;
    color: #155724;
}

.dvtv-sp-error {
    background: #f8d7da;
    border: 1px solid #f5c6cb;
    border-radius: 8px;
    padding: 15px;
    color: #721c24;
}

.dvtv-sp-info {
    background: #e8f4fc;
    border: 1px solid #0073aa;
    border-radius: 8px;
    padding: 15px;
    color: #0073aa;
}

/* 提出先ユーザー設定ページ */
.dvtv-sp-submit-users-wrap {
    max-width: 600px;
    margin: 0 auto;
    padding: 20px;
}

.dvtv-sp-submit-users-wrap h3 {
    margin-top: 0;
    padding-bottom: 10px;
    border-bottom: 2px solid #0073aa;
    color: #0073aa;
}

.dvtv-sp-users-list {
    max-height: 400px;
    overflow-y: auto;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 15px;
    margin: 15px 0;
    background: #fff;
}

.dvtv-sp-user-item {
    display: block;
    padding: 8px 0;
    border-bottom: 1px solid #eee;
    cursor: pointer;
}

.dvtv-sp-user-item:last-child {
    border-bottom: none;
}

.dvtv-sp-user-item:hover {
    background: #f5f5f5;
}

.dvtv-sp-user-item input[type="checkbox"] {
    margin-right: 10px;
}

/* ========================================
   詳細表示スタイル
======================================== */

.dvtv-sp-detail-wrap {
    margin-bottom: 30px;
    padding: 20px;
    background: #f9f9f9;
    border-radius: 8px;
}

.dvtv-sp-detail-table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

.dvtv-sp-detail-table th,
.dvtv-sp-detail-table td {
    padding: 12px 15px;
    border-bottom: 1px solid #eee;
    text-align: left;
}

.dvtv-sp-detail-table th {
    background: #f5f5f5;
    width: 150px;
    font-weight: 600;
    color: #333;
}

.dvtv-sp-detail-table td {
    color: #555;
}

.dvtv-sp-detail-table tr:last-child th,
.dvtv-sp-detail-table tr:last-child td {
    border-bottom: none;
}

.dvtv-sp-detail-files {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid #ddd;
}

.dvtv-sp-detail-files h4 {
    margin: 0 0 10px 0;
    color: #333;
    font-size: 14px;
}

.dvtv-sp-detail-files ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.dvtv-sp-detail-files li {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px;
    background: #fff;
    border: 1px solid #eee;
    border-radius: 4px;
    margin-bottom: 5px;
}

.dvtv-sp-file-link {
    flex: 1;
    color: #0073aa;
    text-decoration: none;
}

.dvtv-sp-file-link:hover {
    text-decoration: underline;
}

.dvtv-sp-download-btn {
    padding: 5px 10px;
    background: #0073aa;
    color: #fff !important;
    text-decoration: none;
    border-radius: 4px;
    font-size: 12px;
}

.dvtv-sp-download-btn:hover {
    background: #005177;
}

/* 解析生テキスト（折りたたみ） */
.dvtv-sp-raw-text-section {
    margin-top: 20px;
    border: 1px solid #ddd;
    border-radius: 8px;
    overflow: hidden;
}

.dvtv-sp-raw-text-section summary {
    padding: 12px 15px;
    background: #f5f5f5;
    cursor: pointer;
    font-weight: 600;
    color: #333;
    user-select: none;
}

.dvtv-sp-raw-text-section summary:hover {
    background: #eee;
}

.dvtv-sp-raw-text-content {
    padding: 15px;
    background: #fafafa;
    max-height: 400px;
    overflow-y: auto;
}

.dvtv-sp-raw-text-content pre {
    margin: 0;
    white-space: pre-wrap;
    word-wrap: break-word;
    font-size: 13px;
    line-height: 1.6;
    color: #444;
    font-family: "メイリオ", Meiryo, sans-serif;
}

/* レスポンシブ */
@media (max-width: 600px) {
    .dvtv-sp-row {
        flex-direction: column;
        gap: 0;
    }
    
    .dvtv-sp-actions {
        flex-direction: column;
    }
    
    .dvtv-sp-actions .button {
        width: 100%;
    }
    
    .dvtv-sp-detail-thumbnail img {
        max-width: 100%;
    }
    
    .dvtv-sp-detail-table th {
        width: 100px;
    }
    
    .dvtv-sp-history-table {
        font-size: 12px;
    }
    
    .dvtv-sp-history-table th,
    .dvtv-sp-history-table td {
        padding: 6px 4px;
    }
}

/* ========================================
   編集機能スタイル
======================================== */

.dvtv-sp-edit-actions {
    margin-bottom: 20px;
    padding: 15px 20px;
    background: linear-gradient(135deg, #e8f4fc 0%, #f0f8ff 100%);
    border-radius: 12px;
    text-align: right;
    border: 1px solid #cce5ff;
}

/* リッチな編集ボタン */
.dvtv-sp-edit-btn-rich {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 24px;
    background: linear-gradient(135deg, #0073aa 0%, #005177 100%);
    color: #fff !important;
    text-decoration: none;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(0, 115, 170, 0.3);
    transition: all 0.3s ease;
}

.dvtv-sp-edit-btn-rich:hover {
    background: linear-gradient(135deg, #005177 0%, #003d5c 100%);
    color: #fff !important;
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(0, 115, 170, 0.4);
}

.dvtv-sp-edit-icon {
    font-size: 18px;
}

/* テーマのアイキャッチをクリック可能に */
.dvtv-sp-clickable-thumbnail {
    display: inline-block;
    position: relative;
    cursor: pointer;
    transition: all 0.3s ease;
}

.dvtv-sp-clickable-thumbnail:hover {
    opacity: 0.9;
}

.dvtv-sp-clickable-thumbnail::after {
    content: '🔍 クリックで原本を表示';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(0, 115, 170, 0.9);
    color: #fff;
    padding: 10px;
    font-size: 14px;
    font-weight: 600;
    text-align: center;
    opacity: 0;
    transition: opacity 0.3s ease;
    pointer-events: none;
}

.dvtv-sp-clickable-thumbnail:hover::after {
    opacity: 1;
}

/* サムネイルオーバーレイ（プラグイン独自表示用） */
.dvtv-sp-detail-thumbnail {
    text-align: center;
    margin-bottom: 20px;
}

.dvtv-sp-detail-thumbnail a {
    display: inline-block;
    position: relative;
    border: 3px solid #ddd;
    border-radius: 8px;
    overflow: hidden;
    transition: all 0.3s ease;
}

.dvtv-sp-detail-thumbnail a:hover {
    border-color: #0073aa;
    box-shadow: 0 4px 12px rgba(0, 115, 170, 0.3);
}

.dvtv-sp-detail-thumbnail img {
    max-width: 400px;
    height: auto;
    display: block;
}

.dvtv-sp-thumb-overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: rgba(0, 115, 170, 0.9);
    color: #fff;
    padding: 10px;
    font-size: 14px;
    font-weight: 600;
    text-align: center;
    opacity: 0;
    transition: opacity 0.3s ease;
}

.dvtv-sp-detail-thumbnail a:hover .dvtv-sp-thumb-overlay {
    opacity: 1;
}

.dvtv-sp-edit-wrap {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.dvtv-sp-edit-wrap h3 {
    margin-top: 0;
    padding-bottom: 10px;
    border-bottom: 2px solid #0073aa;
    color: #0073aa;
}

/* ========================================
   編集履歴スタイル
======================================== */

.dvtv-sp-history-wrap {
    margin-top: 40px;
    padding: 20px;
    background: #f9f9f9;
    border-radius: 8px;
}

.dvtv-sp-history-wrap h4 {
    margin-top: 0;
    margin-bottom: 15px;
    color: #333;
    border-bottom: 1px solid #ddd;
    padding-bottom: 10px;
}

.dvtv-sp-history-table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    font-size: 13px;
}

.dvtv-sp-history-table th,
.dvtv-sp-history-table td {
    padding: 10px 12px;
    border-bottom: 1px solid #eee;
    text-align: left;
}

.dvtv-sp-history-table th {
    background: #f5f5f5;
    font-weight: 600;
    color: #333;
}

.dvtv-sp-history-table tbody tr:hover {
    background: #f9f9f9;
}

.dvtv-sp-history-old {
    color: #999;
    text-decoration: line-through;
}

.dvtv-sp-history-new {
    color: #28a745;
    font-weight: 500;
}

/* ========================================
   オーバーレイローディング（波形ネオン風 + マトリックスレイン）
======================================== */

.dvtv-sp-loading-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background: #000000 !important;
    display: flex !important;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    z-index: 99999 !important;
}

/* 完全な黒背景レイヤー */
.dvtv-sp-loading-bg {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background: #000000 !important;
    z-index: 1 !important;
}

/* マトリックスレイン Canvas */
.dvtv-sp-matrix-canvas {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    z-index: 2 !important;
}

/* コンテンツを前面に */
.dvtv-sp-loading-content {
    position: relative;
    z-index: 10;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: transparent !important;
}

/* 波形ローダー */
.dvtv-sp-wave-loader {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 60px;
}

.dvtv-sp-wave-loader span {
    width: 6px;
    height: 20px;
    background: linear-gradient(180deg, #00d4ff, #0099ff, #0066ff);
    border-radius: 3px;
    animation: dvtv-wave 1.2s ease-in-out infinite;
    box-shadow: 
        0 0 10px #00d4ff,
        0 0 20px #00d4ff,
        0 0 30px #0099ff,
        0 0 40px #0066ff;
}

.dvtv-sp-wave-loader span:nth-child(1) { animation-delay: 0s; }
.dvtv-sp-wave-loader span:nth-child(2) { animation-delay: 0.1s; }
.dvtv-sp-wave-loader span:nth-child(3) { animation-delay: 0.2s; }
.dvtv-sp-wave-loader span:nth-child(4) { animation-delay: 0.3s; }
.dvtv-sp-wave-loader span:nth-child(5) { animation-delay: 0.4s; }
.dvtv-sp-wave-loader span:nth-child(6) { animation-delay: 0.5s; }
.dvtv-sp-wave-loader span:nth-child(7) { animation-delay: 0.6s; }

@keyframes dvtv-wave {
    0%, 100% {
        height: 20px;
        opacity: 0.6;
    }
    50% {
        height: 50px;
        opacity: 1;
    }
}

.dvtv-sp-loading-text {
    color: #00d4ff;
    font-size: 20px;
    margin-top: 30px;
    font-weight: 600;
    text-shadow: 
        0 0 10px #00d4ff,
        0 0 20px #00d4ff,
        0 0 30px #0099ff;
    letter-spacing: 2px;
}

.dvtv-sp-loading-subtext {
    color: rgba(0, 212, 255, 0.7);
    font-size: 14px;
    margin-top: 10px;
    text-shadow: 0 0 10px #00d4ff;
}

.dvtv-sp-loading-progress {
    width: 200px;
    height: 3px;
    background: rgba(0, 212, 255, 0.2);
    border-radius: 2px;
    margin-top: 25px;
    overflow: hidden;
    box-shadow: 0 0 10px rgba(0, 212, 255, 0.3);
}

.dvtv-sp-loading-progress-bar {
    height: 100%;
    background: linear-gradient(90deg, #00d4ff, #0099ff, #00d4ff);
    border-radius: 2px;
    animation: dvtv-progress 2s ease-in-out infinite;
    box-shadow: 0 0 15px #00d4ff;
}

@keyframes dvtv-progress {
    0% { width: 0%; margin-left: 0; }
    50% { width: 60%; margin-left: 20%; }
    100% { width: 0%; margin-left: 100%; }
}

/* ========================================
   各種登録一覧 / 検索 / 提出一覧カレンダー v1.12
======================================== */
.dvtv-sp-list-wrap,
.dvtv-sp-list-wrap * { box-sizing: border-box; }

.dvtv-sp-list-wrap {
    --sp-border:#dfe5ee;
    --sp-text:#172033;
    --sp-muted:#667085;
    --sp-blue:#0877ff;
    --sp-blue-2:#3b82f6;
    --sp-vip:#7c3aed;
    --sp-bg:#f7f9fc;
    width:100%;
    max-width:1480px;
    margin:24px auto;
    color:var(--sp-text);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif;
}

.dvtv-sp-list-topbar {
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:24px;
    padding:28px 30px;
    border:1px solid var(--sp-border);
    border-radius:22px;
    background:
        radial-gradient(circle at 92% 20%,rgba(96,165,250,.16),transparent 30%),
        linear-gradient(135deg,#fff 0%,#f5f9ff 100%);
    box-shadow:0 16px 45px rgba(20,38,70,.08);
    overflow:hidden;
}
.dvtv-sp-list-eyebrow { display:block; color:#2f7af8; font-size:11px; font-weight:900; letter-spacing:.16em; margin-bottom:6px; }
.dvtv-sp-list-topbar h2 { margin:0!important; padding:0!important; border:0!important; font-size:28px!important; line-height:1.25!important; color:#111827!important; }
.dvtv-sp-list-topbar p { margin:8px 0 0!important; color:var(--sp-muted); font-size:14px; }
.dvtv-sp-list-total { display:flex; align-items:baseline; gap:5px; white-space:nowrap; }
.dvtv-sp-list-total strong { font-size:38px; line-height:1; letter-spacing:-.045em; color:#101828; }
.dvtv-sp-list-total span { color:var(--sp-muted); font-size:13px; font-weight:700; }

/* 検索エリア */
.dvtv-sp-list-filter {
    display:block;
    margin:18px 0;
    padding:16px;
    border:1px solid var(--sp-border);
    border-radius:18px;
    background:#fff;
    box-shadow:0 10px 30px rgba(20,38,70,.055);
}
.dvtv-sp-filter-searchrow { display:grid; grid-template-columns:minmax(260px,1fr) auto auto; gap:10px; align-items:center; margin-bottom:13px; }
.dvtv-sp-searchbox { position:relative; }
.dvtv-sp-searchbox span { position:absolute; left:14px; top:50%; transform:translateY(-50%); color:#98a2b3; font-size:20px; pointer-events:none; }
.dvtv-sp-searchbox input,
.dvtv-sp-list-filter select,
.dvtv-sp-filter-submit {
    min-height:44px!important;
    margin:0!important;
    border-radius:11px!important;
    font-size:14px!important;
    line-height:1.2!important;
    font-family:inherit!important;
}
.dvtv-sp-searchbox input {
    width:100%!important;
    padding:0 14px 0 42px!important;
    border:1px solid #d9dee8!important;
    background:#fbfcfe!important;
    color:#344054!important;
    box-shadow:none!important;
}
.dvtv-sp-searchbox input:focus,
.dvtv-sp-list-filter select:focus { border-color:#6aa6ff!important; outline:none!important; box-shadow:0 0 0 3px rgba(8,119,255,.1)!important; }
.dvtv-sp-filter-submit {
    padding:0 26px!important;
    border:0!important;
    background:linear-gradient(135deg,#0877ff,#2563eb)!important;
    color:#fff!important;
    font-weight:900!important;
    cursor:pointer;
    box-shadow:0 8px 18px rgba(8,119,255,.22);
}
.dvtv-sp-filter-clear {
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:44px;
    padding:0 13px;
    border:1px solid #e5e9f0;
    border-radius:11px;
    background:#fff;
    color:#667085!important;
    font-size:12px;
    font-weight:800;
    text-decoration:none!important;
    white-space:nowrap;
}
.dvtv-sp-filter-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.dvtv-sp-filter-field { display:block; min-width:0; margin:0!important; }
.dvtv-sp-filter-field > span { display:block; margin:0 0 5px 2px; color:#667085; font-size:10px; font-weight:900; letter-spacing:.02em; }
.dvtv-sp-list-filter select {
    width:100%!important;
    padding:0 34px 0 12px!important;
    border:1px solid #d9dee8!important;
    background-color:#fff!important;
    color:#344054!important;
    font-weight:650!important;
}

/* カレンダーアコーディオン */
.dvtv-sp-calendar-accordion {
    margin:0 0 20px;
    border:1px solid var(--sp-border);
    border-radius:19px;
    background:#fff;
    box-shadow:0 12px 34px rgba(20,38,70,.065);
    overflow:hidden;
}
.dvtv-sp-calendar-summary {
    display:grid;
    grid-template-columns:46px minmax(210px,1fr) auto auto 24px;
    align-items:center;
    gap:13px;
    min-height:78px;
    padding:14px 18px;
    cursor:pointer;
    list-style:none;
    background:
        linear-gradient(90deg,rgba(239,246,255,.9),#fff 35%),
        #fff;
    user-select:none;
}
.dvtv-sp-calendar-summary::-webkit-details-marker { display:none; }
.dvtv-sp-calendar-summary-icon {
    display:grid;
    place-items:center;
    width:42px;
    height:42px;
    border-radius:13px;
    background:linear-gradient(135deg,#0f172a,#334155);
    color:#fff;
    font-size:22px;
    box-shadow:0 8px 20px rgba(15,23,42,.18);
}
.dvtv-sp-calendar-summary-title { min-width:0; }
.dvtv-sp-calendar-summary-title strong { display:block; color:#172033; font-size:16px; font-weight:950; line-height:1.3; }
.dvtv-sp-calendar-summary-title small { display:block; margin-top:3px; color:#8a94a6; font-size:11px; font-weight:650; }
.dvtv-sp-calendar-summary-month { padding:7px 10px; border-radius:9px; background:#f4f7fb; color:#475467; font-size:12px; font-weight:850; white-space:nowrap; }
.dvtv-sp-calendar-summary-count { display:flex; align-items:baseline; gap:3px; color:#667085; font-size:11px; white-space:nowrap; }
.dvtv-sp-calendar-summary-count b { color:#0877ff; font-size:20px; }
.dvtv-sp-calendar-summary-chevron { color:#667085; font-size:20px; transition:transform .2s ease; }
.dvtv-sp-calendar-accordion[open] .dvtv-sp-calendar-summary-chevron { transform:rotate(180deg); }
.dvtv-sp-calendar-accordion[open] .dvtv-sp-calendar-summary { border-bottom:1px solid #edf1f6; }

.dvtv-sp-calendar { padding:17px; background:#fbfcfe; }
.dvtv-sp-calendar-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:12px; }
.dvtv-sp-calendar-nav { display:flex; align-items:center; gap:8px; }
.dvtv-sp-calendar-nav > a:not(.dvtv-sp-calendar-today) {
    display:grid;
    place-items:center;
    width:40px;
    height:40px;
    border:1px solid #d7deea;
    border-radius:10px;
    background:#fff;
    color:#344054!important;
    text-decoration:none!important;
    font-size:23px;
    box-shadow:0 3px 10px rgba(20,38,70,.04);
}
.dvtv-sp-calendar-nav strong { min-width:128px; padding:0 7px; text-align:center; color:#1f2937; font-size:17px; letter-spacing:.02em; }
.dvtv-sp-calendar-today {
    display:flex;
    align-items:center;
    justify-content:center;
    height:40px;
    padding:0 15px;
    border-radius:10px;
    background:#3d86d8;
    color:#fff!important;
    text-decoration:none!important;
    font-size:12px;
    font-weight:900;
    box-shadow:0 6px 15px rgba(61,134,216,.22);
}
.dvtv-sp-calendar-legend { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:8px 13px; }
.dvtv-sp-calendar-legend span { display:flex; align-items:center; gap:6px; color:#64748b; font-size:10px; font-weight:750; white-space:nowrap; }
.dvtv-sp-calendar-legend i { display:block; width:9px; height:9px; border-radius:999px; }
.dvtv-sp-calendar-legend i.is-general { background:#3b82f6; }
.dvtv-sp-calendar-legend i.is-vip { background:#7c3aed; }
.dvtv-sp-calendar-legend i.is-issued { background:#f97316; }
.dvtv-sp-calendar-legend i.is-received { background:#10b981; }

.dvtv-sp-calendar-scroll { overflow:auto; border:1px solid #dfe5ee; border-radius:14px; background:#fff; }
.dvtv-sp-calendar-board { min-width:980px; }
.dvtv-sp-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.dvtv-sp-calendar-weekdays { background:#263247; }
.dvtv-sp-calendar-weekdays > div { padding:10px 6px; text-align:center; color:#fff; font-size:11px; font-weight:950; letter-spacing:.05em; }
.dvtv-sp-calendar-weekdays .is-sunday { color:#ff7a8d; }
.dvtv-sp-calendar-weekdays .is-saturday { color:#7eb6ff; }
.dvtv-sp-calendar-days { background:#dfe5ee; gap:1px; }
.dvtv-sp-calendar-day {
    min-height:142px;
    padding:8px 7px 7px;
    background:#fff;
    overflow:hidden;
}
.dvtv-sp-calendar-day.is-outside { background:#f8fafc; }
.dvtv-sp-calendar-day.is-outside .dvtv-sp-calendar-date { opacity:.38; }
.dvtv-sp-calendar-day.is-today { background:linear-gradient(180deg,#f0f7ff 0,#fff 58%); box-shadow:inset 0 0 0 2px #60a5fa; }
.dvtv-sp-calendar-date { display:flex; align-items:center; gap:6px; min-height:23px; margin-bottom:5px; }
.dvtv-sp-calendar-date > span { color:#344054; font-size:12px; font-weight:950; }
.dvtv-sp-calendar-day:nth-child(7n+1) .dvtv-sp-calendar-date > span { color:#e11d48; }
.dvtv-sp-calendar-day:nth-child(7n) .dvtv-sp-calendar-date > span { color:#2563eb; }
.dvtv-sp-calendar-date em { padding:2px 5px; border-radius:5px; background:#0877ff; color:#fff; font-size:7px; font-style:normal; font-weight:950; letter-spacing:.05em; }
.dvtv-sp-calendar-date b { margin-left:auto; display:grid; place-items:center; min-width:20px; height:20px; padding:0 5px; border-radius:999px; background:#edf4ff; color:#2563eb; font-size:9px; }

.dvtv-sp-calendar-events { display:flex; flex-direction:column; gap:3px; min-width:0; }
.dvtv-sp-cal-event {
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:5px;
    min-height:22px;
    padding:2px 5px 2px 3px;
    border:1px solid #e6ebf2;
    border-left:3px solid #3b82f6;
    border-radius:6px;
    background:#fff;
    color:#475467!important;
    text-decoration:none!important;
    box-shadow:0 1px 2px rgba(15,23,42,.03);
    overflow:hidden;
    transition:.15s ease;
}
.dvtv-sp-cal-event:hover { transform:translateY(-1px); border-color:#bfd4f5; box-shadow:0 5px 12px rgba(37,99,235,.10); }
.dvtv-sp-cal-event.is-vip { border-left-color:#7c3aed; background:#fdfaff; }
.dvtv-sp-cal-event.is-issued .dvtv-sp-cal-event-type { background:#fff0e5; color:#d65a00; }
.dvtv-sp-cal-event.is-received .dvtv-sp-cal-event-type { background:#eafaf3; color:#087a53; }
.dvtv-sp-cal-event.is-vip:not(.is-issued):not(.is-received) .dvtv-sp-cal-event-type { background:#f3e8ff; color:#6d28d9; }
.dvtv-sp-cal-event-type { max-width:58px; padding:2px 5px; border-radius:4px; background:#eaf2ff; color:#175cd3; font-size:8px; font-weight:950; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dvtv-sp-cal-event-main { min-width:0; color:#475467; font-size:9px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dvtv-sp-cal-event-meta { color:#98a2b3; font-size:8px; white-space:nowrap; }
.dvtv-sp-cal-more { padding:2px 5px; color:#2563eb; font-size:9px; font-weight:900; }

/* 一覧ステータス */
.dvtv-sp-list-statusline { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:0 2px 10px; color:#667085; font-size:12px; }
.dvtv-sp-list-statusline > div { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }
.dvtv-sp-class-badge,
.dvtv-sp-filter-chip { display:inline-flex; align-items:center; min-height:26px; padding:4px 9px; border-radius:999px; font-weight:850; }
.dvtv-sp-class-badge { background:#eaf2ff; color:#175cd3; }
.dvtv-sp-class-badge.is-vip { background:#f3e8ff; color:#6d28d9; }
.dvtv-sp-class-badge.is-all { background:#eef2f6; color:#344054; }
.dvtv-sp-filter-chip { background:#f2f4f7; color:#475467; }

/* 一覧表 */
.dvtv-sp-table-shell { overflow:auto; border:1px solid var(--sp-border); border-radius:16px; background:#fff; box-shadow:0 10px 30px rgba(20,38,70,.06); }
.dvtv-sp-list-table { width:100%!important; min-width:1180px; margin:0!important; border:0!important; border-collapse:separate!important; border-spacing:0!important; background:#fff!important; font-size:13px!important; }
.dvtv-sp-list-table th,
.dvtv-sp-list-table td { padding:14px 13px!important; border:0!important; border-bottom:1px solid #eef0f3!important; vertical-align:middle!important; text-align:left!important; background:transparent!important; color:#344054!important; }
.dvtv-sp-list-table th { position:sticky; top:0; z-index:2; background:#f8fafc!important; color:#667085!important; font-size:11px!important; font-weight:950!important; letter-spacing:.02em; white-space:nowrap; }
.dvtv-sp-list-table tbody tr { transition:.15s ease; }
.dvtv-sp-list-table tbody tr:hover { background:#f8fbff; }
.dvtv-sp-list-table tbody tr:last-child td { border-bottom:0!important; }
.dvtv-sp-list-table td strong { display:block; color:#172033; font-weight:850; }
.dvtv-sp-list-table td small { display:block; margin-top:3px; color:#98a2b3; font-size:10px; line-height:1.3; }
.dvtv-sp-doc-type { display:inline-flex; padding:4px 8px; border-radius:7px; background:#eef4ff; color:#245fc8; font-weight:900; white-space:nowrap; }
.dvtv-sp-row-class { display:inline-flex; align-items:center; justify-content:center; min-width:44px; padding:4px 7px; border-radius:7px; font-size:10px; font-weight:950; }
.dvtv-sp-row-class.is-general { background:#eaf2ff; color:#175cd3; }
.dvtv-sp-row-class.is-vip { background:#f3e8ff; color:#6d28d9; }
.dvtv-sp-list-table .dvtv-sp-amount { font-variant-numeric:tabular-nums; font-weight:900; white-space:nowrap; color:#101828!important; }
.dvtv-sp-list-open { width:80px; }
.dvtv-sp-list-open a { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; color:#0877ff!important; font-weight:900; text-decoration:none!important; }
.dvtv-sp-list-open a span { font-size:20px; line-height:1; }
.dvtv-sp-list-empty { padding:55px 20px!important; text-align:center!important; }
.dvtv-sp-list-empty div { color:#344054; font-size:16px; font-weight:900; }
.dvtv-sp-list-empty span { display:block; margin-top:5px; color:#98a2b3; }

.dvtv-sp-pagination { display:flex; justify-content:center; flex-wrap:wrap; gap:6px; margin:20px 0 0; }
.dvtv-sp-pagination .page-numbers { display:grid; place-items:center; min-width:40px; height:40px; padding:0 11px; border:1px solid #e1e6ee; border-radius:10px; background:#fff; color:#475467!important; font-size:13px; font-weight:800; text-decoration:none!important; box-shadow:0 3px 10px rgba(20,38,70,.04); }
.dvtv-sp-pagination .page-numbers.current { border-color:#0877ff; background:#0877ff; color:#fff!important; }
.dvtv-sp-pagination a.page-numbers:hover { border-color:#9bc2ff; background:#f2f7ff; }
.dvtv-sp-list-notice { max-width:800px; margin:20px auto; padding:18px; border:1px solid #e5e7eb; border-radius:12px; background:#fff; color:#475467; }

@media (max-width:1100px) {
    .dvtv-sp-filter-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
    .dvtv-sp-calendar-toolbar { align-items:flex-start; flex-direction:column; }
    .dvtv-sp-calendar-legend { justify-content:flex-start; }
}

@media (max-width:700px) {
    .dvtv-sp-list-wrap { margin:12px auto; }
    .dvtv-sp-list-topbar { align-items:center; padding:20px; border-radius:16px; }
    .dvtv-sp-list-topbar h2 { font-size:22px!important; }
    .dvtv-sp-list-topbar p { display:none; }
    .dvtv-sp-list-total strong { font-size:28px; }
    .dvtv-sp-list-filter { padding:12px; border-radius:14px; }
    .dvtv-sp-filter-searchrow { grid-template-columns:1fr auto; }
    .dvtv-sp-searchbox { grid-column:1/-1; }
    .dvtv-sp-filter-clear { min-width:92px; }
    .dvtv-sp-filter-grid { grid-template-columns:1fr 1fr; }
    .dvtv-sp-calendar-summary { grid-template-columns:40px minmax(0,1fr) auto 20px; min-height:68px; padding:12px; gap:9px; }
    .dvtv-sp-calendar-summary-icon { width:38px; height:38px; border-radius:11px; }
    .dvtv-sp-calendar-summary-title small { display:none; }
    .dvtv-sp-calendar-summary-month { display:none; }
    .dvtv-sp-calendar-summary-count b { font-size:17px; }
    .dvtv-sp-calendar { padding:10px; }
    .dvtv-sp-calendar-nav strong { min-width:110px; font-size:15px; }
    .dvtv-sp-calendar-legend { gap:6px 10px; }
    .dvtv-sp-list-statusline { align-items:flex-start; flex-direction:column; }
}

@media (max-width:430px) {
    .dvtv-sp-filter-grid { grid-template-columns:1fr; }
}
