:root{color-scheme:light;font-family:Microsoft YaHei,Segoe UI,-apple-system,sans-serif;background:#f8fafc;color:#1e293b;--primary: #4f46e5;--primary-light: #818cf8;--primary-dark: #3730a3;--accent: #f59e0b;--surface: #fff;--border: #e2e8f0;--muted: #94a3b8;--text: #1e293b;--text-light: #64748b}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--primary);text-decoration:none}button,input,textarea,select{font:inherit}.app-container{min-height:100vh;display:flex;flex-direction:column;background:#f8fafc}.app-top-bar{height:4px;background:linear-gradient(90deg,var(--primary),#8b5cf6,var(--accent))}.app-header{text-align:center;padding:1.2rem 1rem .6rem;position:relative;background:#fff;border-bottom:1px solid var(--border)}.app-header-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:center;position:relative}.app-home-link{position:absolute;left:0;top:50%;transform:translateY(-50%);font-size:.78rem;color:var(--muted);text-decoration:none;padding:.35rem .7rem;border-radius:.4rem;transition:all .2s;border:1px solid var(--border);background:#f8fafc;display:inline-flex;align-items:center;gap:.3rem}.app-home-link:hover{color:var(--primary);border-color:var(--primary-light);background:#eef2ff}.app-logo{height:2.4rem;margin-right:.8rem}.app-brand{display:flex;flex-direction:column;align-items:flex-start}.app-title{margin:0;font-size:1.3rem;font-weight:800;color:var(--text);letter-spacing:-.02em}.app-subtitle{color:var(--text-light);font-size:.78rem;display:block;margin-top:.1rem}.app-footer{text-align:center;padding:1rem;color:var(--muted);font-size:.78rem;margin-top:auto;background:#fff;border-top:1px solid var(--border)}.footer-link{color:#184e77;text-decoration:underline}.tab-nav{display:flex;justify-content:center;gap:.35rem;padding:.6rem 1rem;flex-wrap:wrap;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;box-shadow:0 1px 3px #0000000a}.tab-btn{padding:.55rem 1.2rem;border:none;border-radius:.5rem;background:transparent;color:var(--text-light);cursor:pointer;font-size:.88rem;font-weight:500;transition:all .2s;display:flex;align-items:center;gap:.4rem;position:relative}.tab-btn:hover{background:#f1f5f9;color:var(--text)}.tab-btn.active{background:#eef2ff;color:var(--primary);font-weight:600;box-shadow:inset 0 0 0 1px #4f46e526}.tab-btn.active:after{content:"";position:absolute;bottom:-.65rem;left:50%;transform:translate(-50%);width:1.5rem;height:3px;background:var(--primary);border-radius:0 0 2px 2px}.tab-icon{font-size:1rem}.tab-content{flex:1;max-width:1100px;margin:0 auto;width:100%;padding:1.2rem 1rem}.message-board{margin-top:1.2rem;background:#fffffff0;border:1px solid rgba(79,70,229,.14);box-shadow:0 10px 30px #4f46e512;border-radius:1.1rem;padding:.95rem;overflow:hidden}.message-board-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:.65rem}.message-board-head h2{margin:0;color:#184e77;font-size:1rem}.message-board-head p{margin:.15rem 0 0;color:var(--text-light);font-size:.8rem}.message-board-badge{flex-shrink:0;padding:.25rem .55rem;border-radius:999px;background:#eef2ff;color:var(--primary);border:1px solid rgba(79,70,229,.14);font-size:.75rem;font-weight:600}.update-log-panel{margin-bottom:.65rem}.update-log-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.45rem;color:#0f766e;font-size:.82rem;font-weight:800}.update-log-head em{color:var(--text-light);font-size:.72rem;font-style:normal;font-weight:600}.update-log-player{height:42px;overflow:hidden;border:1px solid #cce7df;border-radius:.8rem;background:linear-gradient(90deg,#f4fffb,#fff);position:relative}.update-log-player:before,.update-log-player:after{content:"";position:absolute;top:0;bottom:0;width:2.2rem;z-index:1;pointer-events:none}.update-log-player:before{left:0;background:linear-gradient(90deg,#f4fffb,#f4fffb00)}.update-log-player:after{right:0;background:linear-gradient(270deg,#fff,#fff0)}.update-log-track{display:inline-flex;align-items:center;gap:1rem;min-width:100%;height:100%;white-space:nowrap;animation:message-board-scroll 38s linear infinite;padding-left:100%}.update-log-player:hover .update-log-track{animation-play-state:paused}.update-log-item{display:inline-flex;align-items:center;gap:.45rem;color:#334155;font-size:.82rem}.update-log-dot{padding:.12rem .45rem;border-radius:999px;background:#ccfbf1;color:#0f766e;font-size:.72rem;font-weight:800}.message-board-player{height:42px;overflow:hidden;border:1px solid #e0e7ff;border-radius:.8rem;background:linear-gradient(90deg,#f8fbff,#fff);position:relative}.message-board-player:before,.message-board-player:after{content:"";position:absolute;top:0;bottom:0;width:2.2rem;z-index:1;pointer-events:none}.message-board-player:before{left:0;background:linear-gradient(90deg,#f8fbff,#f8fbff00)}.message-board-player:after{right:0;background:linear-gradient(270deg,#fff,#fff0)}.message-board-track{display:inline-flex;align-items:center;gap:1rem;min-width:100%;height:100%;white-space:nowrap;animation:message-board-scroll 32s linear infinite;padding-left:100%}.message-board-player:hover .message-board-track{animation-play-state:paused}.message-board-item{display:inline-flex;align-items:center;gap:.45rem;color:#334155;font-size:.84rem}.message-board-tab{padding:.12rem .45rem;border-radius:999px;background:#e0f2fe;color:#0369a1;font-size:.72rem;font-weight:700}.message-board-text{max-width:34rem;overflow:hidden;text-overflow:ellipsis}.message-board-time{color:var(--muted);font-size:.72rem}.message-board-form{display:grid;grid-template-columns:1fr auto;gap:.55rem;margin-top:.65rem}.message-board-form input{width:100%;border:1px solid #cbd5e1;border-radius:.65rem;padding:.62rem .75rem;background:#fff;color:var(--text);outline:none}.message-board-form input:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px #4f46e51f}.message-board-form button{border:none;border-radius:.65rem;padding:.62rem 1.1rem;background:linear-gradient(135deg,#184e77,#1a6b9e);color:#fff;font-weight:700;cursor:pointer}.message-board-form button:disabled{opacity:.55;cursor:not-allowed}.message-board-status{margin:.45rem 0 0;color:var(--text-light);font-size:.78rem}@keyframes message-board-scroll{0%{transform:translate(0)}to{transform:translate(-100%)}}.tab-page{animation:fadeIn .3s}.tab-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:1rem}.step-guide{display:flex;gap:.5rem;padding:.8rem 1rem;margin-bottom:1rem;background:#ffffffd9;border-radius:1rem;overflow-x:auto;border:1px solid rgba(24,78,119,.1)}.step-item{display:flex;align-items:flex-start;gap:.5rem;min-width:180px;flex:1}.step-num{width:28px;height:28px;border-radius:50%;background:#184e77;color:#fff;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;flex-shrink:0;margin-top:2px}.step-text strong{display:block;font-size:.85rem}.step-text p{margin:.15rem 0 0;font-size:.75rem;color:#6b7280}.step-arrow{color:#9ca3af;font-size:1.2rem;margin-top:4px;flex-shrink:0}.card{background:#ffffffeb;border:1px solid rgba(24,78,119,.1);box-shadow:0 10px 30px #184e770f;border-radius:1.25rem;padding:1.2rem}.card h2{margin:0 0 .8rem;font-size:1.1rem;color:#184e77}.card h3{margin:.8rem 0 .4rem;font-size:.95rem}.file-select-row{display:flex;justify-content:space-between;align-items:flex-start;padding:.7rem .9rem;margin-bottom:.5rem;border:2px dashed #bfd0df;border-radius:.9rem;transition:all .2s;background:#fbfdff;cursor:pointer}.file-select-row:hover{border-color:#93b4d3}.file-select-row.drag-over{border-color:#184e77;background:#eef4fb}.file-select-row.selected{border-style:solid;border-color:#16a34a;background:#f0fdf4}.file-info{flex:1;min-width:0}.file-label{font-weight:600;display:block;margin-bottom:.25rem}.file-hint{font-size:.85rem;color:#9ca3af}.file-list{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.2rem}.file-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.15rem .5rem;background:#dcfce7;border:1px solid #86efac;border-radius:1rem;font-size:.78rem;color:#166534}.tag-remove{background:none;border:none;color:#166534;cursor:pointer;font-size:1rem;padding:0 .15rem;margin:0}.tag-remove:hover{color:#991b1b}.file-actions{display:flex;gap:.3rem;flex-shrink:0;margin-left:.5rem}.btn-browse{padding:.4rem .8rem;background:#184e77;color:#fff;border:none;border-radius:.5rem;cursor:pointer;font-size:.8rem}.btn-browse:hover{background:#0d3b66}.btn-clear{padding:.4rem .8rem;background:transparent;color:#6b7280;border:1px solid #d1d5db;border-radius:.5rem;cursor:pointer;font-size:.8rem}.btn-clear:hover{background:#f3f4f6}.btn-clear-all{padding:.4rem .8rem;background:transparent;color:#6b7280;border:1px solid #d1d5db;border-radius:.5rem;cursor:pointer;font-size:.8rem;width:100%}.btn-clear-all:hover{background:#f3f4f6;color:#991b1b}.btn-primary{width:100%;padding:.9rem;background:linear-gradient(135deg,#184e77,#1a6b9e);color:#fff;border:none;border-radius:.8rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;margin-top:.5rem}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 15px #184e774d}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{width:100%;padding:.9rem;background:#f3f4f6;color:#374151;border:1px solid #d1d5db;border-radius:.8rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;margin-top:.5rem}.btn-secondary:hover{background:#e5e7eb}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-group{display:flex;flex-direction:column;gap:.5rem}.radio-line{display:flex;align-items:center;gap:.45rem;padding:.45rem .2rem;color:var(--text-light);font-size:.88rem;cursor:pointer}.radio-line input{accent-color:#184e77}.btn-download{padding:.5rem 1rem;background:#184e77;color:#fff;border:none;border-radius:.6rem;cursor:pointer;font-size:.85rem;white-space:nowrap}.btn-download:hover{background:#0d3b66}.btn-download:disabled{opacity:.5}.btn-download-all{padding:.7rem 1rem;background:linear-gradient(135deg,#184e77,#1a6b9e);color:#fff;border:none;border-radius:.8rem;cursor:pointer;font-size:.9rem;font-weight:600;width:100%;text-align:center}.btn-download-all:hover{background:#1a6b9e}.tip-modal{position:relative}.modal-close-x{position:absolute;top:.5rem;right:.8rem;background:none;border:none;font-size:1.5rem;color:#9ca3af;cursor:pointer;padding:0;line-height:1}.modal-close-x:hover{color:#374151}.tip-actions{display:flex;gap:.5rem;margin-top:.8rem}.tip-actions .btn-secondary{flex:1;margin-top:0}.tip-actions .btn-primary{flex:1;margin-top:0;padding:.7rem}.qr-image{max-width:200px;height:auto;display:block;margin:0 auto}.org-modal{max-width:440px}.org-list{max-height:300px;overflow-y:auto;margin:.5rem 0}.checkbox-row{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;cursor:pointer;font-size:.88rem}.checkbox-row input{width:auto;margin:0}.org-preview{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.3rem}.org-tag{display:inline-block;padding:.15rem .5rem;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.3rem;font-size:.75rem;color:#166534}.att-full-page{display:flex;flex-direction:column;min-height:100vh;background:#fafbfc}.att-loading{text-align:center;padding:4rem 1rem}.att-page-header{background:#fff;border-bottom:1px solid #e5e7eb}.att-header-top{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem}.att-header-top h1{font-size:1.1rem;margin:0;flex:1}.att-header-sub{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;padding:.3rem 1rem .5rem;font-size:.8rem;color:#6b7280}.att-logo{height:2rem;margin-right:.5rem}.att-back-btn{color:#3b82f6;background:#eff6ff;border:1px solid #bfdbfe;cursor:pointer;font-size:.8rem;padding:.25rem .6rem;border-radius:.4rem;transition:all .15s;display:inline-flex;align-items:center}.att-back-btn:hover{background:#dbeafe;color:#2563eb}.att-badge{display:inline-block;padding:.2rem .55rem;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:.4rem;font-size:.78rem;color:#374151;max-width:100%;word-break:break-word}.att-page-controls{padding:.5rem 1.5rem;background:#fff;border-bottom:1px solid #e5e7eb}.error-box{text-align:center;padding:4rem 1rem}.att-grid-modal{max-width:95vw;width:1200px;max-height:90vh;overflow-y:auto}.att-filters{display:flex;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}.att-filters select{padding:.3rem .5rem;border:1px solid #d1d5db;border-radius:.3rem;font-size:.82rem;max-width:220px;text-overflow:ellipsis}.att-filters select option{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:300px}.att-linked-section{display:flex;align-items:center;gap:.5rem;margin-bottom:.3rem;flex-wrap:wrap}.att-linked-label{font-size:.8rem;color:#6b7280;white-space:nowrap}.att-linked-tags{display:flex;gap:.25rem;flex-wrap:wrap}.att-tag{display:inline-flex;align-items:center;gap:.2rem;padding:.15rem .4rem;background:#dbeafe;border-radius:.3rem;font-size:.75rem}.att-tag-remove{background:none;border:none;color:#dc2626;cursor:pointer;font-size:.7rem;padding:0}.att-linked-add{padding:.2rem .4rem;border:1px dashed #93c5fd;border-radius:.3rem;font-size:.75rem}.att-teacher{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.3rem;align-items:center}.att-teacher-label{font-size:.8rem;color:#6b7280}.att-teacher-tag{display:inline-block;padding:.2rem .55rem;background:#fef3c7;border:1px solid #fde68a;border-radius:.4rem;font-size:.78rem;color:#92400e;max-width:100%;word-break:break-word}.att-action-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.45rem;align-items:center}.att-action-btn{width:100%;margin-top:0;padding:.55rem .75rem;min-height:2.35rem;border-radius:.65rem;font-size:.84rem}.att-confirm-btn{background:#fef08a;color:#dc2626;border-color:#facc15;font-weight:700}.att-save-hint{grid-column:1 / -1;font-size:.74rem;color:#64748b}.att-confirmation-panel{margin:0 1rem 1rem;background:#fff;border:1px solid #fde68a;border-radius:.75rem;padding:.75rem .9rem;box-shadow:0 8px 24px #0f172a0f}.att-confirmation-header{display:flex;justify-content:space-between;gap:.75rem;align-items:center;flex-wrap:wrap}.att-confirmation-title{font-size:.96rem;font-weight:700;color:#92400e}.att-confirmation-summary{font-size:.78rem;color:#6b7280;margin-top:.15rem}.att-confirmation-copy{width:auto;margin-top:0;padding:.5rem .85rem;border-radius:.65rem;font-size:.8rem}.att-confirmation-list{margin-top:.75rem;border:1px solid #fed7aa;border-radius:.65rem;background:#fff7ed;padding:.45rem .7rem;max-height:13.5rem;overflow:auto}.att-confirmation-list-title{font-size:.82rem;font-weight:700;color:#b45309;padding-bottom:.35rem}.att-confirmation-item{padding:.42rem 0;border-top:1px dashed #fed7aa}.att-confirmation-class{font-size:.82rem;font-weight:600;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-confirmation-meta{font-size:.74rem;color:#6b7280;margin-top:.08rem}.att-confirmation-entry{font-size:.72rem;color:#dc2626;margin-top:.16rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-confirmation-empty{font-size:.78rem;color:#9ca3af;padding:.35rem 0 .1rem}.att-grid-scroll{flex:1;overflow:auto;border:1px solid #e5e7eb;margin:0;min-height:400px;-webkit-overflow-scrolling:touch}.att-grid-table{border-collapse:collapse;font-size:.78rem;min-width:100%;table-layout:auto}.att-grid-table th{background:#f3f4f6;padding:.3rem .4rem;text-align:center;border:1px solid #d1d5db;white-space:nowrap}.att-grid-table td{padding:.15rem .3rem;border:1px solid #e5e7eb;text-align:center;vertical-align:middle}.att-th-fix{min-width:2.8rem;position:sticky;z-index:4;background:#eef2ff!important}.att-th-fix-col1{left:0}.att-th-fix-col2{left:2.8rem}.att-th-fix-col3{left:5.6rem}.att-td-fix{white-space:nowrap;position:sticky;z-index:2;background:#fff;font-size:.75rem}.att-td-fix-col1{left:0}.att-td-fix-col2{left:2.8rem}.att-td-fix-col3{left:5.6rem}.att-td-name{white-space:nowrap;font-size:.78rem}.att-th-stat{min-width:3rem;background:#fefce8!important}.att-td-stat{font-weight:600;font-size:.8rem}.att-positive{color:#16a34a}.att-negative{color:#dc2626}.att-total-row td{background:#f8fafc;font-weight:700}.att-total-row .att-td-fix{background:#e2e8f0;z-index:3}.att-total-label{color:#0f172a}.att-total-meta{color:#475569;font-size:.74rem}.att-td-cell{padding:0;width:2.2rem;height:2rem}.att-total-session-cell{padding:.1rem .15rem}.att-total-session{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05;gap:.08rem;min-height:1.8rem}.att-total-session-present{color:#16a34a;font-size:.72rem}.att-total-session-absent{color:#dc2626;font-size:.72rem}.att-cell-btn.att-edited{background:#fef3c7;border-color:#fde68a}.att-cell-btn.att-error{background:#fff7ed;color:#ea580c;border-color:#fed7aa;cursor:not-allowed}.att-session-num{font-size:.75rem}.att-session-date{font-size:.65rem;color:#6b7280}.att-legend{display:flex;gap:1rem;flex-wrap:wrap;font-size:.75rem;color:#6b7280}.att-legend-item{display:inline-flex;align-items:center;gap:.3rem}.att-share-box{margin:.75rem 1rem;padding:.9rem;border:1px solid #dbeafe;border-radius:.9rem;background:#f8fbff;display:grid;justify-items:center;gap:.7rem}.att-share-link-panel{width:min(100%,560px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem;align-items:center}.att-share-link-label{grid-column:1 / -1;font-size:.8rem;font-weight:700;color:#184e77;text-align:left;width:100%}.att-share-link-input{width:100%;min-width:0;padding:.55rem .65rem;border:1px solid #bfdbfe;border-radius:.55rem;background:#fff;color:#0f172a;font-size:.78rem}.att-share-copy-btn{width:auto;margin-top:0;padding:.55rem .85rem;white-space:nowrap;font-size:.8rem}.att-session-bar{display:flex;gap:.15rem;padding:.4rem .5rem;background:#f3f4f6;border-bottom:1px solid #e5e7eb;overflow-x:auto;position:sticky;top:0;z-index:5}.att-session-head{display:flex;flex-direction:column;align-items:center;min-width:3rem;font-size:.7rem;color:#374151;padding:.15rem .3rem;background:#fff;border-radius:.3rem;border:1px solid #d1d5db}.att-student-card{background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;margin:.3rem .5rem;overflow:hidden}.att-student-card:hover{border-color:#93c5fd}.att-card-header{display:flex;align-items:center;gap:.4rem;padding:.4rem .6rem;background:#f9fafb;border-bottom:1px solid #f1f5f9;font-size:.82rem}.att-card-idx{color:#9ca3af;font-size:.7rem;min-width:1.5rem}.att-card-class{color:#6b7280;font-size:.72rem;max-width:5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-card-name{font-weight:600;flex:1}.att-card-stats{display:flex;gap:.5rem;font-size:.75rem;font-weight:600;flex-shrink:0}.att-card-sessions{display:flex;gap:.2rem;padding:.4rem .6rem;overflow-x:auto;-webkit-overflow-scrolling:touch}.att-cell-btn{width:100%;height:100%;border:1px solid #d1d5db;background:#f9fafb;cursor:pointer;font-size:.85rem;font-weight:700;border-radius:.2rem;transition:.15s}.att-cell-btn:hover{border-color:#93c5fd}.att-cell-btn.att-charge{background:#fef2f2;color:#dc2626;border-color:#fecaca}.att-cell-btn.att-reverse{background:#f0fdf4;color:#16a34a;border-color:#bbf7d0}.att-cell-btn.att-empty{background:#f9fafb;color:#d1d5db}.att-cell-btn.att-modified{border:2px solid #f59e0b!important;box-shadow:0 0 0 1px #fde68a;font-weight:900}.export-row{display:flex;justify-content:space-between;align-items:center;gap:.8rem;padding:.7rem .9rem;border-radius:.8rem;border:1px solid #e3ebf3;background:#fbfdff}.export-row-main{min-width:0;flex:1 1 auto}.export-row-title,.export-row-notice{display:block;max-width:100%;overflow-wrap:anywhere;word-break:break-word}.export-row .btn-download{flex:0 0 auto;align-self:center}@media (max-width: 520px){.export-row{align-items:flex-start;flex-direction:column}.export-row .btn-download{align-self:flex-start}}.batch-management-grid{display:grid;grid-template-columns:minmax(430px,.95fr) minmax(520px,1.25fr);gap:1rem;align-items:start}.batch-management-page .card{min-width:0}.batch-management-page .btn-primary,.batch-management-page .btn-secondary{width:auto;margin-top:0;padding:.65rem .95rem;border-radius:.65rem;font-size:.88rem}.batch-table-shell{margin-top:.8rem;max-height:24rem;overflow:auto;border:1px solid #e5edf5;border-radius:.75rem;background:#fff}.batch-list-table{width:100%;table-layout:fixed;min-width:0}.batch-list-table th,.batch-list-table td{vertical-align:top}.batch-col-main{width:36%}.batch-col-school{width:26%}.batch-col-status{width:20%}.batch-col-check{width:2rem;text-align:center}.batch-col-action{width:5.6rem;white-space:normal}.batch-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.76rem;color:#334155;overflow-wrap:anywhere}.batch-name,.batch-school{margin-top:.18rem;font-size:.82rem;font-weight:600;line-height:1.35;color:#0f172a;overflow-wrap:anywhere}.batch-subtle{margin-top:.18rem;font-size:.72rem;line-height:1.3;color:#64748b}.batch-meta-line{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.25rem}.batch-meta-item{display:inline-flex;align-items:center;gap:.18rem;padding:.12rem .34rem;border:1px solid #dbeafe;border-radius:999px;background:#eff6ff;font-size:.7rem;color:#64748b}.batch-meta-item strong{color:#1e40af;font-weight:700}.batch-file-list{display:grid;gap:.55rem}.batch-file-list-with-checks{margin-top:.8rem}.batch-file-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem;align-items:center;padding:.62rem .75rem;border:1px solid #e5edf5;border-radius:.75rem;background:#fbfdff}.batch-file-list-with-checks .batch-file-row{grid-template-columns:auto minmax(0,1fr) auto}.batch-file-check{display:flex;align-items:center;justify-content:center}.batch-file-main{min-width:0}.batch-file-title{font-size:.86rem;font-weight:600;line-height:1.35;color:#0f172a;overflow-wrap:anywhere}.batch-file-notice{margin-top:.24rem;font-size:.76rem;line-height:1.35;color:#64748b}.batch-file-meta{display:flex;flex-wrap:wrap;gap:.35rem .6rem;margin-top:.28rem;font-size:.74rem;line-height:1.3;color:#64748b}.batch-file-actions{display:flex;justify-content:flex-end;align-items:center}.batch-file-select-all{display:inline-flex;align-items:center;gap:.35rem;width:fit-content;padding:.25rem .45rem;border-radius:.45rem;color:#475569;font-size:.78rem;cursor:pointer}.batch-detail-stack{display:grid;gap:1rem;margin-top:.9rem;min-width:0}.batch-detail-stack>*{min-width:0}@media (max-width: 980px){.batch-management-grid{grid-template-columns:1fr}}@media (max-width: 560px){.batch-col-school{display:none}.batch-col-main{width:54%}.batch-col-status{width:28%}.batch-file-row,.batch-file-list-with-checks .batch-file-row{grid-template-columns:auto minmax(0,1fr)}.batch-file-list:not(.batch-file-list-with-checks) .batch-file-row{grid-template-columns:minmax(0,1fr)}.batch-file-actions{grid-column:2;justify-content:flex-start}}.info-row{padding:.4rem 0;font-size:.95rem}.formula-box{padding:.7rem 1rem;margin-bottom:1rem;border-radius:.8rem;background:#fef3c7;border:1px solid #f59e0b;font-size:.8rem;color:#92400e;line-height:1.6}.formula-box strong{display:block;margin-bottom:.2rem}.formula-box .highlight{font-size:.85rem;font-weight:700;color:#b45309}.mode-section{margin-top:.8rem;padding-top:.8rem;border-top:1px solid #e3ebf3}.radio-row{display:flex;align-items:center;gap:.5rem;padding:.3rem 0;cursor:pointer}.radio-row input{width:auto;margin:0}.manual-input{margin-top:.5rem}.manual-input label{display:block;font-size:.85rem;margin-bottom:.2rem}.manual-input input{width:100%;padding:.6rem;border:1px solid #bfd0df;border-radius:.6rem}.guide-page{display:grid;gap:1rem}.guide-card{background:#ffffffe6;border-radius:1.25rem;padding:1.5rem;border:1px solid rgba(24,78,119,.1);box-shadow:0 10px 30px #184e770a}.guide-card h2{margin:0 0 .8rem;color:#184e77;font-size:1.2rem}.guide-desc{color:#6b7280;font-size:.9rem;margin-bottom:.8rem}.guide-steps{display:grid;gap:.6rem}.guide-step{display:flex;align-items:center;gap:.7rem;font-size:.9rem}.guide-step .step-num{margin-top:0}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-card{background:#fff;border-radius:1.25rem;padding:2rem;max-width:360px;width:90%;box-shadow:0 20px 60px #0003;text-align:center}.modal-card h2{margin:0 0 .5rem;font-size:1.3rem}.price-tag{font-size:1.5rem;font-weight:700;color:#184e77}.qr-container{padding:1rem;background:#fff;border:2px solid #e3ebf3;border-radius:1rem;display:inline-block}.qr-container canvas{display:block;margin:0 auto}.btn-demo{background:#f59e0b;margin-top:.5rem}.btn-demo:hover{background:#d97706}.btn-close{background:transparent;color:#6b7280;margin-top:1rem}.btn-close:hover{background:#f3f4f6}.progress-bar{margin:.8rem 0;padding:.6rem .9rem;background:#eef4fb;border-radius:.75rem;display:flex;align-items:center;gap:.6rem}.progress-fill{width:1rem;height:1rem;border-radius:50%;border:2px solid #184e77;border-top-color:transparent;animation:spin .8s linear infinite}.progress-text{font-size:.85rem;color:#184e77}.task-progress-list{display:grid;gap:.55rem;margin:.9rem 0 .2rem;max-height:16rem;overflow:auto}.task-progress-card{border:1px solid #dbe7f3;border-radius:.9rem;background:#f8fbff;padding:.7rem .75rem;width:100%;max-width:100%;min-width:0;overflow:hidden;box-sizing:border-box}.task-progress-card-inline{margin:.75rem 0}.task-progress-card.status-completed{border-color:#bbf7d0;background:#f0fdf4}.task-progress-card.status-failed{border-color:#fecdd3;background:#fff1f2}.task-progress-card.status-paused{border-color:#fde68a;background:#fffbeb}.task-progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;min-width:0}.task-progress-head>:first-child{flex:1;min-width:0}.task-progress-title{font-size:.86rem;font-weight:700;color:#0f172a;overflow-wrap:anywhere}.task-progress-meta{font-size:.7rem;color:#64748b;margin-top:.08rem}.task-progress-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.task-progress-percent{font-size:.78rem;font-weight:700;color:#184e77}.task-progress-clear{font-size:.72rem;padding:.18rem .45rem}.task-progress-track{width:100%;height:.42rem;border-radius:999px;overflow:hidden;background:#dbe7f3;margin-top:.45rem}.task-progress-value{height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#38bdf8)}.task-progress-card.status-completed .task-progress-value{background:linear-gradient(90deg,#16a34a,#4ade80)}.task-progress-card.status-failed .task-progress-value{background:linear-gradient(90deg,#dc2626,#fb7185)}.task-progress-card.status-paused .task-progress-value{background:linear-gradient(90deg,#d97706,#fbbf24)}.task-progress-detail{margin-top:.38rem;font-size:.74rem;color:#1e293b;line-height:1.45;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.task-progress-note{margin-top:.35rem;font-size:.7rem;line-height:1.4;color:#64748b;overflow-wrap:anywhere}.task-progress-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.45rem;margin-top:.45rem;min-width:0}.task-progress-stat{min-width:0;padding:.42rem .5rem;border-radius:.65rem;background:#ffffffbf;display:grid;gap:.16rem}.task-progress-stat span{font-size:.68rem;color:#64748b;overflow-wrap:anywhere}.task-progress-stat strong{font-size:.78rem;color:#0f172a;line-height:1.3;overflow-wrap:anywhere;word-break:break-word}.task-progress-log{margin-top:.4rem;border-radius:.7rem;background:#eaf2fb;padding:.35rem .45rem;display:grid;gap:.16rem;max-height:3.2rem;overflow:auto;min-width:0}.task-progress-card.status-completed .task-progress-log{background:#eaf8ef}.task-progress-card.status-failed .task-progress-log{background:#ffe8ec}.task-progress-card.status-paused .task-progress-log{background:#fef3c7}.task-progress-log-line{font-size:.68rem;line-height:1.28;color:#475569;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}.stack{display:grid;gap:.6rem}.muted{color:#6b7280;font-size:.85rem}.error{color:#9f1239;background:#ffe4e6;border:1px solid #fecdd3;padding:.6rem .8rem;border-radius:.6rem;font-size:.85rem}.error-banner{composes:error;margin-bottom:1rem}.preview{white-space:pre-wrap;overflow:auto;background:#0f172a;color:#dbeafe;padding:1rem;border-radius:1rem;max-height:320px;font-size:.8rem}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.tab-btn{padding:.5rem .8rem;font-size:.8rem}.tab-btn:not(.active) .tab-label{display:none}.tab-icon{font-size:1.3rem}.tab-grid{grid-template-columns:1fr}.step-guide{flex-wrap:wrap}.step-arrow{display:none}.message-board-head{align-items:flex-start;flex-direction:column}.message-board-form{grid-template-columns:1fr}.message-board-form button{width:100%}.message-board-text{max-width:18rem}.task-progress-head{flex-direction:column}.task-progress-actions{width:100%;justify-content:space-between}.att-page-header h1{font-size:.95rem}.att-page-header{padding:.4rem .8rem;gap:.4rem}.att-page-controls{padding:.4rem .8rem}.att-filters{flex-wrap:wrap}.att-filters select{font-size:.78rem;padding:.25rem .4rem}.att-action-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.att-action-btn{padding:.5rem .55rem;min-height:2.2rem;font-size:.78rem}.att-confirmation-panel{margin:0 .8rem .8rem;padding:.65rem .75rem}.att-confirmation-copy{width:100%}.att-confirmation-list{max-height:11rem}.att-cell-btn{font-size:.7rem}.att-session-num{font-size:.65rem}.att-session-date{font-size:.55rem}.att-legend{gap:.5rem;font-size:.7rem}}.pay-modal{max-width:340px;width:92%;padding:1.5rem;border-radius:.75rem;background:#fff;text-align:center}.pay-header{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.pay-logo{height:2.2rem}.pay-title{font-size:1.1rem;margin:0;color:#111}.pay-subtitle{font-size:.75rem;color:#6b7280;margin:.15rem 0 0}.pay-amount{margin:.6rem 0 .8rem}.pay-yen{font-size:1.1rem;color:#f97316;font-weight:600}.pay-num{font-size:1.8rem;font-weight:700;color:#f97316}.pay-qr-wrap{background:#fff;border:2px solid #e5e7eb;border-radius:.5rem;padding:.6rem;display:inline-block}.pay-qr{display:block;width:220px;height:220px}.pay-hint{font-size:.82rem;color:#374151;margin:.5rem 0 0;font-weight:500}.pay-body{display:flex;flex-direction:column;align-items:center;gap:.5rem}.pay-loading{padding:2rem 0;color:#6b7280}.pay-error{padding:1rem 0}.error-text{color:#dc2626;font-size:.85rem}.pay-close{margin-top:.8rem;background:none;border:none;color:#9ca3af;font-size:.85rem;cursor:pointer;padding:.3rem 1rem}.pay-close:hover{color:#6b7280}.spinner{display:inline-block;width:2rem;height:2rem;border:3px solid #e5e7eb;border-top-color:#f97316;border-radius:50%;animation:spin .7s linear infinite;margin-bottom:.5rem}@keyframes spin{to{transform:rotate(360deg)}}.batch-manager{margin-bottom:.8rem}.btn-batcher{padding:.4rem .8rem;background:#f1f5f9;border:1px solid var(--border);border-radius:.5rem;cursor:pointer;font-size:.82rem;color:var(--text-light)}.btn-batcher:hover{background:#e2e8f0;color:var(--text)}.batch-list{margin-top:.5rem;background:#fff;border:1px solid var(--border);border-radius:.6rem;padding:.6rem;max-height:300px;overflow-y:auto}.batch-table{width:100%;border-collapse:collapse;font-size:.82rem}.batch-table th{background:#f8fafc;padding:.35rem .5rem;text-align:left;border-bottom:1px solid var(--border)}.batch-table td{padding:.35rem .5rem;border-bottom:1px solid #f1f5f9}.batch-active td{background:#eef2ff}.batch-expiry{display:inline-flex;align-items:center;padding:.1rem .45rem;border-radius:999px;background:#ecfdf5;color:#166534;font-size:.72rem;font-weight:600;white-space:nowrap}.batch-expiry.expired{background:#fef2f2;color:#b91c1c}.btn-sm{padding:.2rem .5rem;border:1px solid var(--border);background:#fff;border-radius:.3rem;cursor:pointer;font-size:.75rem;margin-right:.25rem;color:var(--primary)}.btn-sm:hover{background:#eef2ff}.btn-danger{color:#dc2626;border-color:#fecaca}.btn-danger:hover{background:#fef2f2}.bank-info-bar{margin-bottom:.5rem}.bank-info-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .8rem;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:.5rem;font-size:.8rem}.bank-info-icon{font-size:1rem}.bank-info-name{font-weight:600;color:#166534}.bank-info-meta{color:#6b7280;font-size:.75rem}
