Files
ketle-manandClaude Sonnet 5 b5842b22f1 feat(auto): お題入力をモーダル化、コマから画像生成プロンプトへ送信、画像生成を独立タブに
ストーリー・脚本サブタブの左ペイン(お題・プロンプト入力)をモーダルダイアログへ移し、
中央+Chatの2ペイン構成にしてChatペインの幅を拡大。脚本タブの各コマに「Send Chat Image」
ボタンを追加し、背景描写・演技指示をワンクリックで画像生成プロンプトへ送信(既存入力は
上書き)できるようにした。あわせて右ペインの画像生成(従来はChat内の折りたたみパネル)
をChat右隣の独立タブへ分離。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-26 16:42:42 +09:00

679 lines
12 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ==============================
Autoタブ(AIマンガ自動作成)
============================== */
.auto-root {
display: flex;
flex-direction: column;
gap: 8px;
height: 100%;
min-height: 0;
}
#auto-tab.tab-content.active {
display: block;
height: 100%;
}
.auto-subtab-content {
display: flex;
flex-direction: column;
gap: 8px;
flex: 1;
min-height: 0;
}
.auto-work-bar {
display: flex;
gap: 6px;
align-items: center;
flex-wrap: wrap;
}
.auto-work-name {
width: 220px !important;
}
.auto-work-select {
width: 220px !important;
}
.auto-work-bar .auto-status {
min-width: 0;
}
/* お題・プロンプト入力ダイアログ(.text-dialog-overlay/.text-dialog を流用) */
.auto-theme-dialog {
width: 640px;
max-width: 92vw;
}
.auto-theme-dialog .auto-theme {
min-height: 200px;
}
.auto-theme-dialog .auto-hint,
.auto-theme-dialog .auto-status {
margin: 8px 0;
}
/* 3ペイン(オートレイアウトサブタブで使用) */
.auto-3pane {
display: grid;
grid-template-columns: 280px minmax(0, 1fr) 380px;
gap: 12px;
flex: 1;
min-height: 0;
}
/* 2ペイン(ストーリー・脚本サブタブ: お題・プロンプト入力はモーダル化したため中央+Chatの2ペイン) */
.auto-2pane {
display: grid;
grid-template-columns: minmax(0, 1fr) 480px;
gap: 12px;
flex: 1;
min-height: 0;
}
.auto-pane {
display: flex;
flex-direction: column;
gap: 8px;
min-height: 0;
min-width: 0;
border: 1px solid var(--border-color);
border-radius: 6px;
padding: 10px;
background: rgba(255, 255, 255, 0.02);
}
.auto-pane-center,
.auto-pane-right {
padding-top: 0;
}
.auto-label {
font-size: 12px;
color: var(--text-secondary);
}
.auto-label-fixed {
flex: 0 0 84px;
}
.auto-theme {
width: 100%;
min-height: 160px;
flex: 1;
box-sizing: border-box;
resize: none;
background: #111;
color: #fff;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 8px;
font-size: 13px;
}
.auto-row {
display: flex;
gap: 6px;
align-items: center;
}
.auto-row-buttons {
flex-wrap: wrap;
}
.auto-grow {
flex: 1;
min-width: 0;
}
.auto-full {
width: 100%;
}
.auto-page-count {
width: 72px !important;
}
.auto-hint {
font-size: 12px;
color: var(--text-secondary);
margin: 0;
line-height: 1.5;
}
.auto-status {
font-size: 12px;
min-height: 1.2em;
padding: 0;
color: var(--text-secondary);
white-space: pre-wrap;
word-break: break-word;
}
.auto-status.error {
color: #e57373;
}
.auto-status.ok {
color: #81c784;
}
.auto-status.busy {
color: #64b5f6;
}
/* 中央ペイン */
.auto-center-content,
.auto-right-content {
display: flex;
flex-direction: column;
gap: 8px;
flex: 1;
min-height: 0;
padding-top: 10px;
}
.auto-fill-textarea {
flex: 1;
width: 100%;
min-height: 0;
box-sizing: border-box;
resize: none;
background: #111;
color: #fff;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 10px;
font-size: 13px;
line-height: 1.6;
}
.auto-script-toolbar {
display: flex;
gap: 8px;
align-items: center;
}
.auto-raw-output {
font-size: 12px;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 6px 8px;
}
.auto-raw-output pre {
white-space: pre-wrap;
word-break: break-word;
max-height: 240px;
overflow: auto;
margin: 6px 0 0;
}
.auto-script-list {
flex: 1;
min-height: 0;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 12px;
padding-right: 4px;
}
.auto-page {
border: 1px solid var(--border-color);
border-radius: 6px;
padding: 8px;
display: flex;
flex-direction: column;
gap: 8px;
}
.auto-page-head,
.auto-panel-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.auto-page-title {
font-weight: bold;
font-size: 13px;
color: #64b5f6;
}
.auto-panel {
background: rgba(255, 255, 255, 0.04);
border-radius: 6px;
padding: 8px;
display: flex;
flex-direction: column;
gap: 6px;
}
.auto-panel-title {
font-size: 12px;
font-weight: bold;
}
.auto-panel textarea,
.auto-panel input[type="text"],
.auto-panel select {
background: #111;
color: #fff;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 4px 6px;
font-size: 12px;
box-sizing: border-box;
}
.auto-panel textarea {
width: 100%;
resize: vertical;
min-height: 44px;
}
.auto-field-label {
font-size: 11px;
color: var(--text-secondary);
}
.auto-dialogue-row {
display: grid;
grid-template-columns: 90px minmax(0, 1fr) 96px 26px;
gap: 4px;
align-items: center;
}
.auto-mini-btn {
background: none;
border: 1px solid var(--border-color);
color: var(--text-secondary);
border-radius: 4px;
padding: 2px 8px;
font-size: 12px;
cursor: pointer;
}
.auto-mini-btn:hover {
color: #fff;
background: var(--hover-color);
}
.auto-mini-btn.danger:hover {
color: #e57373;
}
.auto-empty {
font-size: 13px;
color: var(--text-secondary);
padding: 16px 4px;
line-height: 1.6;
}
/* 設定タブ */
.auto-settings {
overflow-y: auto;
padding-right: 4px;
}
.auto-set-section {
display: flex;
flex-direction: column;
gap: 6px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border-color);
}
.auto-set-title {
font-size: 11px;
font-weight: bold;
letter-spacing: 0.05em;
color: var(--text-secondary);
}
.auto-radio-row {
display: flex;
gap: 14px;
font-size: 13px;
}
.auto-radio-wrap {
flex-wrap: wrap;
gap: 6px 14px;
}
.auto-radio-row label,
.auto-check {
display: inline-flex;
align-items: center;
gap: 4px;
cursor: pointer;
}
.auto-check {
font-size: 13px;
}
@media (max-width: 1100px) {
.auto-3pane {
grid-template-columns: 240px minmax(0, 1fr) 320px;
}
.auto-2pane {
grid-template-columns: minmax(0, 1fr) 340px;
}
}
/* Chat */
.auto-chat-messages {
flex: 1;
min-height: 0;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 8px;
padding-right: 4px;
}
.auto-chat-msg {
border-radius: 6px;
padding: 6px 8px;
font-size: 13px;
line-height: 1.55;
display: flex;
flex-direction: column;
gap: 4px;
}
.auto-chat-msg.user {
background: rgba(0, 120, 212, 0.18);
align-self: flex-end;
max-width: 92%;
}
.auto-chat-msg.assistant {
background: rgba(255, 255, 255, 0.06);
align-self: flex-start;
max-width: 100%;
}
.auto-chat-role {
font-size: 11px;
color: var(--text-secondary);
}
.auto-chat-body {
white-space: pre-wrap;
word-break: break-word;
}
.auto-chat-actions {
display: flex;
gap: 6px;
flex-wrap: wrap;
}
.auto-chat-input {
width: 100%;
box-sizing: border-box;
resize: none;
background: #111;
color: #fff;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 6px 8px;
font-size: 13px;
}
.auto-chat-code {
margin: 4px 0;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 2px 6px;
font-size: 12px;
}
.auto-chat-code pre {
white-space: pre-wrap;
word-break: break-all;
max-height: 220px;
overflow: auto;
margin: 4px 0;
}
/* 画像生成(Chat右隣の独立タブ) */
.auto-img-gallery {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 6px;
}
.auto-img-gallery img {
width: 100%;
aspect-ratio: 1 / 1;
object-fit: cover;
border-radius: 4px;
border: 1px solid var(--border-color);
cursor: pointer;
}
.auto-set-sub {
font-size: 12px;
font-weight: bold;
margin-top: 4px;
}
/* ==============================
オートレイアウトサブタブ
============================== */
.alo-3pane {
grid-template-columns: 260px minmax(0, 1fr) 300px;
}
.alo-pane-left {
overflow-y: auto;
}
.alo-left-content {
display: flex;
flex-direction: column;
gap: 6px;
padding-top: 8px;
}
.alo-template-list {
display: flex;
flex-direction: column;
gap: 4px;
max-height: 220px;
overflow-y: auto;
}
.alo-template-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 6px;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 4px 8px;
font-size: 12px;
cursor: pointer;
}
.alo-template-item:hover {
background: var(--hover-color);
}
.alo-template-item.active {
border-color: #64b5f6;
}
.alo-template-item.mismatch {
color: var(--text-secondary);
}
.alo-toolbar,
.alo-pagenav {
flex-wrap: wrap;
}
.alo-tool-btn.active {
background-color: var(--primary-color);
border-color: var(--primary-color);
color: #fff;
}
.alo-canvas-wrap {
flex: 1;
min-height: 0;
overflow: auto;
border: 1px solid var(--border-color);
border-radius: 4px;
background: #1a1a1a;
display: flex;
align-items: flex-start;
justify-content: center;
padding: 12px;
}
#alo-canvas {
background: #fff;
}
/* vector-effect: non-scaling-stroke により、ページの実寸(0.01mm単位、数万オーダー)に
対してviewBoxが大きくても、線幅は常に画面上で一定のCSS px幅で表示される */
#alo-canvas .alo-panel-rect {
fill: rgba(100, 181, 246, 0.08);
stroke: #333;
stroke-width: 2;
vector-effect: non-scaling-stroke;
cursor: pointer;
}
#alo-canvas .alo-panel-rect:hover {
fill: rgba(100, 181, 246, 0.2);
}
#alo-canvas .alo-panel-rect.selected {
fill: rgba(100, 181, 246, 0.35);
stroke: #1976d2;
stroke-width: 3;
}
/* font-sizeはJS側(renderCanvas)でページ幅に応じた実寸値をtext要素に直接指定するため、
ここでは指定しない(実寸ページに対して固定pxを指定すると極端に小さく見えてしまうため) */
#alo-canvas .alo-panel-num {
fill: #666;
pointer-events: none;
user-select: none;
}
.alo-pane-right {
overflow-y: auto;
}
.alo-prop-title {
font-size: 13px;
font-weight: bold;
}
.alo-prop-edit {
display: flex;
flex-direction: column;
gap: 6px;
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 6px;
}
.alo-prop-image-preview {
width: 100%;
max-height: 160px;
object-fit: contain;
border: 1px solid var(--border-color);
border-radius: 4px;
background: #111;
}
/* 外側余白(上下左右): ラベルが1文字なので auto-label-fixed(84px)だと
入力欄がほぼ潰れてしまうため、専用の狭いラベル幅を使う */
.alo-margin-row {
gap: 4px;
}
.alo-margin-label {
flex: 0 0 16px;
font-size: 12px;
color: var(--text-secondary);
text-align: right;
}
.alo-margin-input {
flex: 1 1 0;
min-width: 56px;
}
.alo-margin-input:disabled {
opacity: 0.6;
}
/* Autoタブ「ストーリー・脚本」プレビュー横/縦(スクリプトタブの.script-preview-h/vと同様のスタイル。
脚本のaction=背景描写・演技指示はON/OFFで表示切替できるため専用クラスを設ける) */
.auto-preview-h {
padding: 12px;
border: 1px solid var(--border-color, #555);
border-radius: 4px;
background: var(--bg-secondary);
writing-mode: horizontal-tb;
}
.auto-preview-h-line {
font-size: 14px;
line-height: 1.8;
white-space: pre-wrap;
word-break: break-word;
}
.auto-preview-h-action {
color: var(--text-secondary);
}
.auto-preview-h-dialogue {
color: var(--text-primary);
padding-left: 1em;
}
.auto-preview-h-page-start {
margin-top: 14px;
}
.auto-preview-v {
writing-mode: vertical-rl;
height: 60vh;
padding: 12px;
border: 1px solid var(--border-color, #555);
border-radius: 4px;
background: var(--bg-secondary);
overflow-x: auto;
overflow-y: hidden;
}
.auto-preview-v-line {
font-size: 14px;
line-height: 1.8;
white-space: pre-wrap;
word-break: break-word;
}
.auto-preview-v-action {
color: var(--text-secondary);
}
.auto-preview-v-dialogue {
color: var(--text-primary);
padding-top: 1em;
}
.auto-preview-v-page-start {
margin-right: 14px;
}