:root{font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;color:#243832;background:#f6f7f3;font-synthesis:none;line-height:1.6}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid #7cac95;outline-offset:5px}.site-header{min-height:92px;padding:20px max(32px,calc((100vw - 1120px)/2));display:flex;justify-content:space-between;align-items:center;gap:24px;background:#fff;border-bottom:1px solid #e3e8df}.brand{font-size:22px;font-weight:750;letter-spacing:-.6px;display:flex;align-items:center;gap:12px}.brand-icon{display:grid;place-items:center;background:#315b48;color:white;width:37px;height:37px;border-radius:12px;font-family:Georgia,serif;font-size:25px}nav{display:flex;gap:8px;flex-wrap:wrap}.nav-link{font-size:14px;padding:8px 12px;border-radius:8px;color:#56665b}.nav-link:hover,.nav-link[aria-current]{background:#eef2ec;color:#284d3b}main{max-width:1120px;min-height:calc(100vh - 189px);margin:auto;padding:62px 0 72px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:48px}.eyebrow{font-size:11px;letter-spacing:2.2px;font-weight:700;color:#6b806e;margin:0 0 13px}h1{font-size:34px;letter-spacing:-1.4px;line-height:1.3;margin:0;overflow-wrap:anywhere}.lead{font-size:15px;color:#778176;margin:14px 0 0}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:9px;font-size:14px;font-weight:650;cursor:pointer;border:1px solid transparent;white-space:nowrap}.primary{background:#315b48;color:white}.primary:hover{background:#234535}.secondary{background:white;border-color:#dce3d9;color:#53624f}.secondary:hover{background:#eef2ec}.section-label{font-size:14px;font-weight:700;margin-bottom:18px;display:flex;gap:9px;align-items:center}.section-label span{font-size:12px;color:#5e7560;background:#e6ecdf;border-radius:6px;padding:1px 7px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.project-card{background:#fff;border:1px solid #dfe5da;border-radius:16px;padding:25px 26px 0;min-height:274px;display:flex;flex-direction:column;transition:transform .15s,border-color .15s,box-shadow .15s}.project-card:hover{transform:translateY(-3px);border-color:#91ac94;box-shadow:0 8px 25px #314d3b0a}.card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.book-icon,.empty-icon{display:grid;place-items:center;background:#edf1e8;color:#617655;border-radius:12px;width:43px;height:43px;font-size:25px}.card-arrow{color:#8f9c8d}.project-card h2{font-size:20px;line-height:1.4;margin:0 0 10px;overflow-wrap:anywhere;letter-spacing:-.5px}.project-card p{color:#7b8278;font-size:14px;margin:0 0 26px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;white-space:pre-wrap}.card-bottom{margin-top:auto;border-top:1px solid #eef0ea;padding:15px 0;font-size:12px;color:#6e7a68;display:flex;justify-content:space-between}.empty-state{background:#fff;border:1px dashed #cfd9c9;border-radius:16px;min-height:330px;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:45px 24px;text-align:center}.empty-icon{width:56px;height:56px;font-size:32px;margin-bottom:19px}.empty-state h2{font-size:21px;letter-spacing:-.6px;margin:0 0 10px}.empty-state p{font-size:14px;color:#7b8278;margin:0 0 25px}.compact{margin-bottom:32px}.form-panel{max-width:760px;background:#fff;border:1px solid #dfe5da;border-radius:16px;padding:34px}.form-panel label{display:block;font-size:15px;font-weight:650;margin-bottom:10px}.required,.optional{font-size:11px;font-weight:500;margin-left:7px;color:#7a8876}.required{color:#486c4b}input,textarea{display:block;width:100%;border:1px solid #dce2d7;border-radius:8px;background:#fcfcfa;padding:13px 15px;color:#243832;font-size:15px}input:focus,textarea:focus{outline:2px solid #91ac94;outline-offset:1px}textarea{resize:vertical;min-height:160px}input::placeholder,textarea::placeholder{color:#9ca396}.field-help{font-size:12px;color:#86907f;margin:8px 0 28px}.form-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #edf0e8;padding-top:24px}.error{color:#9b382e;background:#fff0eb;border-radius:8px;padding:12px 15px}.description{white-space:pre-wrap;overflow-wrap:anywhere;max-width:850px}footer{max-width:1120px;margin:auto;border-top:1px solid #dfe5da;padding:23px 0 32px;font-size:12px;color:#7d8977;display:flex;gap:15px}footer span{color:#98a090}@media(max-width:1200px){main,footer{margin-left:32px;margin-right:32px}.site-header{padding:20px 32px}}@media(max-width:850px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.site-header{padding:18px 20px;align-items:flex-start;flex-direction:column;gap:12px}.nav-link{padding:7px 9px;font-size:12px}nav{gap:2px}main{padding:34px 0 48px;margin:0 20px}.page-heading{align-items:flex-start;flex-direction:column;gap:22px;margin-bottom:32px}h1{font-size:28px}.project-grid{grid-template-columns:1fr}.form-panel{padding:22px}.form-actions{flex-wrap:wrap}footer{margin:0 20px;flex-wrap:wrap}.empty-state h2{font-size:19px}}@media(prefers-reduced-motion:reduce){.project-card{transition:none}.project-card:hover{transform:none}}
.danger-outline{color:#983e35;background:#fff;border-color:#dfbdb7}.danger-outline:hover{background:#fff0eb}.danger{background:#983e35;color:#fff}.danger:hover{background:#7b3029}.delete-title{overflow-wrap:anywhere;margin-top:0}.delete-notice{font-size:14px;color:#983e35;margin:24px 0}
[hidden]{display:none!important}select{font:inherit;width:100%;padding:12px;border:1px solid #dce2d7;border-radius:8px;background:#fcfcfa;color:#243832}select:focus-visible{outline:2px solid #91ac94}.cast-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:22px}.page-heading .cast-tools{margin:0}.view-tabs{display:flex;gap:5px;padding:4px;background:#e9ede5;border-radius:12px}.cast-filters{display:flex;gap:16px;margin-bottom:24px;align-items:end;flex-wrap:wrap}.cast-filters label{font-size:12px;color:#64755e;min-width:140px}.cast-filters input,.cast-filters select{margin-top:6px}.cast-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:22px;align-items:start}.cast-main{min-width:0}.character-sidebar{position:sticky;top:20px;background:white;border:1px solid #dfe5da;border-radius:14px;padding:22px;overflow-wrap:anywhere}.character-sidebar h2{font-size:22px;line-height:1.4}.character-sidebar h3{font-size:13px;margin-top:20px}.character-sidebar p{font-size:14px}.character-sidebar .button{font-size:12px;width:100%;white-space:normal;margin-top:15px}.faction-group{background:#eff2eb;border:1px solid #dce3d6;border-top:4px solid;border-radius:14px;padding:20px;margin-bottom:22px}.faction-group h2{font-size:15px;margin:0 0 18px;overflow-wrap:anywhere}.character-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:15px}.character-card{font:inherit;color:inherit;text-align:left;background:white;border:1px solid #dbe3d5;border-radius:12px;padding:17px;display:flex;flex-direction:column;gap:8px;cursor:pointer;min-width:0}.character-card img{width:100%;height:140px;object-fit:cover;border-radius:8px}.character-card strong{font-size:18px;overflow-wrap:anywhere}.character-card>span{font-size:12px}.character-card .card-avatar{font-size:38px;background:#edf1e8;display:grid;place-items:center;border-radius:8px;min-height:90px}.character-card .card-summary{color:#75806e;overflow-wrap:anywhere}.character-card.selected{outline:3px solid #597a63;outline-offset:1px}.status-chip{display:inline-block!important;align-self:flex-start;background:#edf1e8;color:#4f6d50;border-radius:6px;padding:3px 8px;font-size:11px!important}.graph-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}.graph-controls span{font-size:11px;color:#75806e}.graph-controls .button{padding:7px 12px}.graph-viewport{height:540px;background-color:#f9faf7;background-image:radial-gradient(#d2dbc9 1px,transparent 1px);background-size:18px 18px;border:1px solid #dfe5da;border-radius:14px;overflow:hidden}.graph-viewport svg{width:100%;height:100%;touch-action:none;cursor:grab}.graph-character{cursor:pointer}.graph-character.selected>rect,.graph-character:focus>rect{stroke:#203f30;stroke-width:4}.graph-character:focus{outline:none}.mini-relation{font-size:12px;overflow-wrap:anywhere;border-bottom:1px solid #e9eee3;padding-bottom:8px}.info-panel{border:1px solid #dfe5da;border-radius:14px;background:white;padding:26px;margin-bottom:22px;overflow-wrap:anywhere}.info-panel h2,.form-panel h2{font-size:21px;margin-top:0}.info-panel h3{font-size:14px;margin-top:24px}.info-panel p{font-size:14px}.info-panel a:not(.button){text-decoration:underline}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.wide-form{max-width:100%}.wide-form textarea{min-height:105px;margin-bottom:24px}.wide-form label{margin-top:12px}.form-panel>label{margin-top:20px}.form-panel>button{margin-top:20px}.detail-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px}.portrait{width:100%;max-height:480px;object-fit:contain;border-radius:10px;margin-bottom:18px}.sidebar-portrait{width:100%;max-height:210px;object-fit:cover;border-radius:10px}.portrait-placeholder{height:240px;display:grid;place-items:center;background:#edf1e8;border-radius:10px;color:#849077;margin-bottom:20px}.portrait-panel{align-self:start}.portrait-panel .button{font-size:12px;white-space:normal}.fact-box{background:#f3f5ef;border-radius:10px;padding:0 18px 10px}.secret-box,.revision{border:1px solid #e1e6db;border-radius:10px;padding:16px;margin-top:20px}summary{cursor:pointer;font-weight:650;font-size:14px}details h4{margin-bottom:6px}.relation-row{padding-bottom:15px;border-bottom:1px solid #e8ece3;margin-bottom:18px;font-size:14px}input[type=color]{height:48px;padding:4px}button:disabled{opacity:.5;cursor:not-allowed}#image-prompt{min-height:270px;margin-bottom:18px}#copy-status{color:#315b48}@media(max-width:900px){.cast-layout{grid-template-columns:minmax(0,1fr)}.character-sidebar{position:static}.detail-layout{grid-template-columns:240px minmax(0,1fr)}}@media(max-width:650px){.field-grid,.detail-layout{grid-template-columns:1fr}.character-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.character-card{padding:12px}.cast-tools .button{font-size:12px;padding:10px 12px}.graph-viewport{height:430px}.info-panel{padding:20px}.cast-filters label{flex:1;min-width:120px}.cast-filters label:first-child{flex-basis:100%}}
fieldset{border:1px solid #dce3d6;border-radius:10px;padding:16px;margin:24px 0}legend{font-weight:650;padding:0 8px}.check-option{display:flex!important;gap:10px;align-items:center;font-weight:400!important}.check-option input{width:18px;height:18px;margin:0;flex-shrink:0}#scene-prompt{min-height:420px;margin-bottom:20px}#settings-cards .project-card{padding-top:25px}#settings-cards .project-grid{margin-bottom:24px}

/* Project chat */
#chat-toggle{position:fixed;right:24px;bottom:22px;z-index:40;border-radius:30px;box-shadow:0 6px 24px #162d2926;padding:14px 22px;background:#244c40;color:#fff;border:0;font-size:16px;cursor:pointer}
.chat-panel[hidden]{display:none!important}.chat-panel{position:fixed;right:22px;bottom:84px;width:min(590px,calc(100vw - 32px));height:min(790px,calc(100dvh - 110px));z-index:50;display:flex;flex-direction:column;background:#fcfcf8;border:1px solid #ced6cc;border-radius:20px;box-shadow:0 16px 70px #15282030;overflow:hidden;color:#263e35}.chat-heading{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#edf2e9;flex-shrink:0}.chat-heading strong{display:block;font-size:18px}.chat-heading span{display:block;color:#607067;font-size:13px;margin-top:3px}.chat-heading button{background:transparent;color:#244c40;font-size:28px;border:0;cursor:pointer;padding:0 8px}.chat-notice{font-size:12px;line-height:1.65;padding:12px 20px;margin:0;color:#58675f;background:#f7f8f1;flex-shrink:0}.chat-session-picker{display:flex;gap:8px;align-items:center;padding:12px 16px 8px;flex-shrink:0}.chat-session-picker label{font-size:12px;white-space:nowrap;margin:0}.chat-panel select{min-width:0;padding:8px;font-size:13px;border:1px solid #cbd6ca;border-radius:8px;background:#fff;width:100%;color:#243d32}.chat-session-picker select{flex:1}.chat-session-picker button{white-space:nowrap;padding:9px 12px;border:1px solid #cbd6ca;border-radius:8px;background:#f0f4eb;color:#244c40;cursor:pointer}.chat-model-picker{display:grid;grid-template-columns:1fr 135px;gap:10px;padding:0 16px 10px;flex-shrink:0}.chat-model-picker label{display:flex;align-items:center;gap:8px;font-size:12px;white-space:nowrap;margin:0}.chat-log{flex:1;min-height:80px;overflow:auto;padding:16px;background:#fff;overscroll-behavior:contain}.chat-empty{color:#6d7a73;font-size:14px}.chat-message{margin:0 0 18px;font-size:14px;line-height:1.7}.chat-message small{display:block;font-size:11px;color:#78857b;margin:0 0 6px}.chat-message-text{white-space:pre-wrap;overflow-wrap:anywhere}.chat-user{background:#eef4e9;border-radius:12px;padding:12px 14px;margin-left:32px}.chat-assistant{padding:0 4px}.chat-change{display:block;padding:9px 12px;margin-top:10px;border:1px solid #d8e3d3;border-radius:8px;background:#f4f7ef;font-size:13px;color:#28563d}.chat-error{color:#a43f32!important;white-space:pre-wrap;overflow-wrap:anywhere}#chat-status{font-size:12px;min-height:25px;padding:6px 16px;color:#647460;flex-shrink:0;max-height:100px;overflow:auto}#chat-form{padding:6px 16px 14px;border-top:1px solid #e2e7dd;flex-shrink:0}#chat-input{width:100%;min-height:70px;max-height:160px;resize:vertical;font:inherit;font-size:14px;line-height:1.6;padding:10px 12px;border:1px solid #cbd6ca;border-radius:10px;box-sizing:border-box;background:#fff;color:#243d32}.chat-send-row{display:flex;justify-content:space-between;align-items:center;margin-top:8px;gap:10px}.chat-send-row span{font-size:11px;color:#73816e}.chat-send-row button{border:0;border-radius:8px;padding:10px 18px;background:#244c40;color:#fff;cursor:pointer}.chat-panel button:disabled,.chat-panel select:disabled{opacity:.55;cursor:default}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){.chat-panel{right:8px;bottom:74px;width:calc(100vw - 16px);height:calc(100dvh - 92px);border-radius:14px}.chat-notice{padding:8px 14px;font-size:11px}.chat-model-picker{grid-template-columns:1fr 120px}.chat-heading{padding:12px 16px}#chat-toggle{right:16px;bottom:16px;padding:12px 18px}}

/* Multiple chat attachments */
.chat-drop-overlay{display:none;position:absolute;inset:8px;z-index:5;align-items:center;justify-content:center;border:2px dashed #4a785e;border-radius:14px;background:#f0f7ecef;color:#244c40;font-size:19px;font-weight:600;pointer-events:none}.chat-drop-active .chat-drop-overlay{display:flex}.chat-attach-toolbar{display:flex;align-items:center;gap:10px;padding:6px 0}.chat-attach-toolbar button{font-size:12px;padding:6px 9px;background:#f0f4eb;border:1px solid #cbd6ca;border-radius:7px;color:#244c40;cursor:pointer}.chat-attach-toolbar span,.chat-file-help{font-size:11px;color:#65745f}.chat-file-help{line-height:1.5;margin:3px 0 8px}.chat-pending-files{display:flex;flex-direction:column;gap:5px;max-height:116px;overflow:auto}.chat-file-card{display:flex;align-items:center;gap:8px;padding:5px 8px;background:#f0f4eb;border-radius:8px;font-size:12px;min-width:0}.chat-file-card img{width:32px;height:32px;object-fit:cover;border-radius:4px}.chat-file-card span{flex:1;min-width:0;overflow-wrap:anywhere}.chat-file-card button{border:0;background:transparent;font-size:20px;padding:2px 5px;color:#586f5a;cursor:pointer}.chat-saved-file{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px;border:1px solid #c8d8c2;border-radius:8px;font-size:12px;text-decoration:none;overflow-wrap:anywhere}.chat-saved-file img{width:64px;height:64px;object-fit:contain;border-radius:5px;background:#fff}.chat-saved-file span{min-width:0}.chat-panel #chat-form{max-height:52%;overflow:auto}.chat-message-text code{font-size:.95em;background:#f0f3ed;border-radius:3px;padding:1px 3px}
.chat-panel .chat-heading{padding:10px 16px}.chat-panel .chat-heading span{margin-top:0;font-size:12px}.chat-panel .chat-notice{padding:7px 16px;font-size:11px}.chat-panel .chat-session-picker{padding-top:8px}.chat-panel .chat-model-picker{padding-bottom:8px}.chat-panel #chat-input{min-height:58px}.chat-panel .chat-send-row{margin-top:5px}.chat-panel #chat-form{padding-bottom:10px}

/* Directional dialogue and shared story knowledge */
.relation-select{display:block;width:100%;white-space:pre-wrap;overflow-wrap:anywhere;text-align:left;border:1px solid #dce3d9;border-radius:9px;background:#fff;color:#315b48;padding:12px;margin:8px 0;font:inherit;font-size:13px;cursor:pointer}.relation-select:hover,.relation-select.selected{background:#e9f1e3;border-color:#608367}.graph-edge{cursor:pointer}.graph-edge.selected path:not([stroke="transparent"]),.graph-edge:focus-visible path:not([stroke="transparent"]){stroke:#274f3b;stroke-width:4}.graph-edge:focus-visible{outline:none}.secret-card-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.secret-card-heading h3{margin:0}.secret-card .secret-box{margin-bottom:16px}.save-notice{background:#e7f0e1;border:1px solid #cbdcc2;border-radius:10px;padding:12px 18px;color:#315b48}.character-sidebar h2,.character-sidebar h3,.character-sidebar summary{overflow-wrap:anywhere}.character-sidebar .button{white-space:normal}.field-grid>*{min-width:0}.secret-card .status-chip{white-space:nowrap}

/* Compact, relationship-aware faction layout */
.graph-viewport{height:clamp(560px,72vh,760px)}
.graph-edge .edge-label-crowded{opacity:0;pointer-events:none}.graph-edge:hover .edge-label-crowded,.graph-edge.selected .edge-label-crowded,.graph-edge:focus-visible .edge-label-crowded{opacity:1}
.graph-edge:hover .edge-line{stroke:#315b48;stroke-width:3}.graph-edge .edge-hit{pointer-events:stroke}.graph-edge .edge-line{pointer-events:none}
#edge-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:8px 12px;margin-top:14px}#edge-list>.field-help{grid-column:1/-1;margin:0 0 4px}#edge-list .relation-select{margin:0}
@media(max-width:650px){.graph-viewport{height:500px}}

/* Episode writing workspace */
body:has(#story-app) main{max-width:1700px;margin:0 auto;padding:34px 28px 64px}
.story-shell{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px;align-items:start}
.story-navigation{position:sticky;top:18px;max-height:calc(100dvh - 36px);overflow:auto;border:1px solid #dce3d6;border-radius:14px;padding:18px;background:#eef2e9}
.story-navigation>button{width:100%;margin-bottom:20px}.story-navigation label{display:block;font-size:13px;margin-bottom:6px}.story-navigation input{padding:10px;font-size:13px}.story-navigation .field-help{margin-bottom:14px}
#story-tree{display:block}.story-tree-group{border-top:1px solid #d1dccb;padding:14px 0}.story-tree-group a{display:block;font-size:14px;border-radius:6px;padding:5px 7px;overflow-wrap:anywhere}.story-tree-group a:hover{background:#e0e9d9}.story-tree-group a.active{background:#315b48;color:white;font-weight:650}.story-tree-group small{display:block;color:#73836e;font-size:11px;padding:3px 7px;overflow-wrap:anywhere}.story-tree-chapter{border-left:2px solid #ccd9c3;margin:9px 0 0 12px;padding-left:6px}.story-tree-group .story-jump-link{font-size:11px;color:#4c6c51;padding-top:1px}
.story-main,.story-writing,.story-conversation{min-width:0}.story-episode-heading{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.story-episode-heading h2{flex:1;min-width:150px;font-size:23px;margin:0;overflow-wrap:anywhere}.story-episode-heading button{padding:8px 12px;font-size:12px}
.story-tabs{border-bottom:1px solid #d7e1d1;gap:5px;margin:20px 0}.story-tabs a{padding:11px 13px;font-size:13px;cursor:pointer}.story-tabs a.active{background:#e3ecdc;border-bottom:3px solid #315b48;font-weight:700}.story-tabs a:last-child{margin-left:auto;color:#527356}
.story-work-columns{display:grid;grid-template-columns:minmax(300px,1.2fr) minmax(330px,1fr);gap:20px;align-items:start}.story-document{background:#fff;border:1px solid #dbe3d6;border-radius:14px;padding:22px;margin-bottom:20px}.story-document label{display:block;font-size:13px;font-weight:650;margin-bottom:16px}.story-document input,.story-document textarea{margin-top:7px}.story-document textarea{font-size:15px;line-height:1.95;background:#fffdf8;max-height:70vh;min-height:240px}.story-document .field-help{margin:0 0 14px}.story-document .cast-tools{margin:0}.story-writing .info-panel{margin-bottom:18px;padding:20px}.story-writing h2{font-size:19px;margin-top:0}.story-writing h3{font-size:16px}.story-writing .button{white-space:normal;margin:4px 4px 4px 0;padding:9px 13px;font-size:13px}.story-writing .description{max-height:450px;overflow:auto;font:inherit;font-size:14px}.story-writing details>summary{cursor:pointer;font-size:13px;padding:5px 0}.story-writing details details{border-top:1px solid #e7ece2;margin-top:8px}.story-proposal{border-left:4px solid #76945a}
.story-conversation{position:sticky;top:18px;background:#fff;border:1px solid #d2dfcc;border-radius:14px;padding:18px;max-height:calc(100dvh - 36px);overflow:auto}.story-conversation h2{font-size:18px;margin:0 0 7px}.story-conversation .field-help{margin:0 0 10px}.story-conversation label{font-size:12px;display:block}.story-conversation select{font-size:12px;padding:7px;min-width:0}.story-conversation .field-grid{gap:8px;margin:10px 0}.story-session-row{display:flex;gap:6px}.story-session-row select{flex:1}.story-session-row button{font-size:12px;padding:7px 10px}.story-chat-log{height:clamp(180px,29vh,360px);overflow:auto;overscroll-behavior:contain;border-block:1px solid #e4ebdf;margin:12px 0;padding:12px 4px}.story-chat-message{font-size:13px;padding:6px}.story-chat-message.user{background:#edf3e7;border-radius:10px;margin-left:14px;padding:10px}.story-chat-message small{color:#7b8773;font-size:10px}.story-chat-message p{margin:6px 0}.story-choice{width:100%;text-align:left;justify-content:flex-start;white-space:pre-wrap;font-size:12px;padding:10px;margin-bottom:6px}#story-choices h3{font-size:14px;margin:10px 0 5px}#story-choices p{font-size:12px;margin:5px 0 10px}#story-chat-input{min-height:80px;max-height:180px;padding:10px;font-size:13px;margin-top:5px}#story-chat-form label{margin-top:9px}#story-chat-status{font-size:12px;margin:6px 0}#story-send{width:100%;padding:9px}.story-conversation button:disabled,.story-conversation select:disabled{opacity:.5;cursor:default}
dialog:has(.story-dialog-form){width:min(680px,calc(100vw - 32px));max-height:90dvh;overflow:auto;border:1px solid #cbd9c3;border-radius:18px;padding:0;color:#243832;background:#fcfcf8;box-shadow:0 20px 80px #15282030}dialog::backdrop{background:#172b2260}.story-dialog-form{padding:28px}.story-dialog-form h2{font-size:22px;margin-top:0}.story-dialog-form label{display:block;font-size:14px;font-weight:600;margin:14px 0 6px}.story-dialog-form label input,.story-dialog-form label textarea,.story-dialog-form label select{margin-top:6px}.story-dialog-form textarea{min-height:90px}.story-dialog-form .check-option{margin:9px 0;font-size:13px}.story-dialog-form .check-option input{margin:0}.story-dialog-form fieldset{margin:15px 0}.story-dialog-form .form-actions{flex-wrap:wrap}.story-dialog-form .button{white-space:normal}.story-dialog-form .info-panel{padding:18px;margin-bottom:12px}
@media(max-width:1150px){.story-shell{grid-template-columns:180px minmax(0,1fr);gap:16px}.story-work-columns{grid-template-columns:minmax(0,1fr)}.story-conversation{position:static;max-height:none}.story-chat-log{height:320px}.story-navigation{padding:12px}}
@media(max-width:650px){body:has(#story-app) main{padding:25px 16px}.story-shell{grid-template-columns:1fr}.story-navigation{position:static;max-height:320px}.story-navigation>button{width:auto;margin-bottom:12px}.story-tabs a{padding:8px}.story-tabs a:last-child{margin-left:0}.story-episode-heading h2{flex-basis:100%}.story-dialog-form{padding:20px}.story-document{padding:15px}}

/* Recorded continuity: red/green connectors compare two explicit points in time. */
.continuity-overview .continuity-shell{display:block}.continuity-overview .continuity-outline{position:static;max-height:none;background:transparent;border:0;padding:0}.continuity-overview .continuity-outline>input{max-width:520px}.continuity-overview #continuity-index{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:20px;margin-bottom:25px}.continuity-overview .continuity-index-card{padding:24px;background:white;border:1px solid #d9e3d2;border-radius:14px;margin:0;min-height:180px}.continuity-overview .continuity-index-card strong{font-size:18px}.continuity-overview .continuity-index-card p{font-size:14px}.continuity-overview .continuity-index-card.chapter{border-top:3px solid #acc39a}
body:has(#continuity-app) main{max-width:1760px;margin:0 auto;padding:34px 28px 70px}.continuity-shell{display:grid;grid-template-columns:245px minmax(0,1fr);gap:26px;align-items:start}.continuity-outline{position:sticky;top:20px;max-height:calc(100dvh - 40px);overflow:auto;background:#eef2e9;border:1px solid #d5dfcf;border-radius:14px;padding:16px}.continuity-outline label{font-size:13px;display:block;margin-bottom:8px}.continuity-outline>button{padding:7px 12px;font-size:12px;margin:8px 0 16px}.continuity-index-card{display:block;padding:15px 12px;border-top:1px solid #d8e2d2;border-radius:6px}.continuity-index-card:hover{background:#e5eddd}.continuity-index-card.active{background:#dfead6;box-shadow:inset 3px 0 #315b48}.continuity-index-card strong{font-size:14px;display:block;overflow-wrap:anywhere}.continuity-index-card small{font-size:11px;color:#708166}.continuity-index-card p{font-size:12px;line-height:1.7;margin:7px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.continuity-index-card.chapter{margin-left:14px;border-left:1px solid #bdcdb2;padding-left:13px}
#continuity-detail{min-width:0}.continuity-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.continuity-title h2{font-size:25px;overflow-wrap:anywhere}.continuity-title a{font-size:12px;padding:9px 14px}#checkpoint-summary{min-height:120px;margin:8px 0 14px;line-height:1.8}#continuity-detail>.cast-tools{gap:8px}#continuity-detail>.cast-tools .button{font-size:12px;padding:8px 12px;white-space:normal}#continuity-detail>.cast-tools>label{font-size:12px}.continuity-legend{display:flex;gap:24px;font-size:13px;padding:12px 0;border-top:1px solid #dce5d7}.changed,.added,.removed{--flow-color:#bc4540}.unchanged{--flow-color:#38774c}.unknown{--flow-color:#899183}.continuity-legend span{color:var(--flow-color);font-weight:650}.continuity-work{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start;margin-bottom:26px}.continuity-column-labels{display:grid;grid-template-columns:1fr 70px 1fr;align-items:center;text-align:center;gap:10px;font-size:12px;color:#65765c;padding:12px 5px}.continuity-column-labels strong{overflow-wrap:anywhere}
.continuity-lane{display:grid;grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);align-items:center;gap:10px;padding:13px 0;border-bottom:1px solid #e1e7db}.continuity-node.button{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;white-space:normal;text-align:left;min-height:128px;width:100%;padding:14px;background:white;border:1px solid #d6e1ce;border-left:3px solid var(--flow-color);gap:7px;overflow:hidden}.continuity-node:hover{background:#f4f8ee}.continuity-node strong{font-size:14px;color:#233d2e;overflow-wrap:anywhere}.continuity-node small{font-size:10px;color:#7a886f}.continuity-node span{font-size:12px;line-height:1.65;font-weight:400;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.continuity-node.missing{background:#f1f2ef;border-style:dashed;opacity:.75}.continuity-connector{display:flex;flex-direction:column;color:var(--flow-color);font-size:11px;text-align:center}.continuity-line{height:22px;background:linear-gradient(var(--flow-color),var(--flow-color)) center / calc(100% - 8px) 2px no-repeat;text-align:right;font-size:25px;line-height:19px}.unknown .continuity-line{background:repeating-linear-gradient(90deg,var(--flow-color) 0 5px,transparent 5px 10px) center / calc(100% - 8px) 2px no-repeat}.continuity-diff-fields{grid-column:1/-1;margin:0;color:#9e5148;font-size:11px;padding-left:5px}.continuity-lane.unchanged .continuity-diff-fields{display:none}
#continuity-inspector{position:sticky;top:20px;max-height:calc(100dvh - 40px);overflow:auto;background:white;border:1px solid #d7e0d0;border-radius:12px;padding:18px;font-size:13px}#continuity-inspector h3{font-size:17px;margin:0 0 12px;overflow-wrap:anywhere}#continuity-inspector h4{font-size:12px;margin:16px 0 4px}#continuity-inspector label{display:block;font-size:12px;font-weight:600;margin:14px 0 6px}#continuity-inspector label small{display:block;font-weight:400;color:#839077;font-size:10px}#continuity-inspector textarea{min-height:78px;font-size:13px;padding:8px;line-height:1.7;margin-top:5px}#continuity-inspector input,#continuity-inspector select{font-size:12px;padding:8px;margin-top:5px}#continuity-inspector .field-help{margin-bottom:15px}.continuity-before-value{display:block;font-size:11px;color:#a36b57;white-space:pre-wrap;overflow-wrap:anywhere;max-height:90px;overflow:auto}#continuity-inspector .button{font-size:12px;white-space:normal;margin-top:15px}#checkpoint-proposals .info-panel{padding:20px;margin-bottom:15px}#checkpoint-proposals details{font-size:13px;padding:8px 0}#checkpoint-proposals details details{margin-left:15px}#checkpoint-history details{font-size:13px;margin:12px 0}#checkpoint-proposals .button{margin-top:12px}#project-style{min-height:240px;line-height:1.8}
@media(max-width:1400px){.continuity-shell{grid-template-columns:210px minmax(0,1fr);gap:18px}.continuity-work{grid-template-columns:minmax(0,1fr)}#continuity-inspector{position:static;max-height:600px}.continuity-column-labels{grid-template-columns:1fr 60px 1fr}.continuity-lane{grid-template-columns:minmax(0,1fr) 60px minmax(0,1fr)}}
@media(max-width:700px){body:has(#continuity-app) main{padding:25px 16px}.continuity-shell{grid-template-columns:1fr}.continuity-outline{position:static;max-height:300px}.continuity-title{flex-wrap:wrap}.continuity-column-labels{grid-template-columns:1fr 38px 1fr;gap:5px}.continuity-lane{grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr);gap:5px}.continuity-node.button{padding:10px;min-height:150px}.continuity-node strong{font-size:13px}.continuity-legend{gap:12px;font-size:11px}}
@media(min-width:1101px) and (max-width:1400px){.continuity-work{grid-template-columns:minmax(0,1fr) 270px}#continuity-inspector{position:sticky;max-height:calc(100dvh - 40px)}}

/* Database backup and restore */
.header-backup-form {display:inline-flex;margin:0}
.header-backup-form button {background:none;border:0;font:inherit;cursor:pointer;padding:0}
.backup-guide {background:var(--surface, #fff);border:1px solid #deded4;border-radius:16px;padding:8px 22px;margin-bottom:26px}
.backup-guide code,.backup-filename {overflow-wrap:anywhere}
.backup-list {display:grid;gap:14px}
.backup-card {display:flex;align-items:center;justify-content:space-between;gap:24px;border:1px solid #deded4;border-radius:16px;padding:22px;background:#fff}
.backup-card>div {min-width:0}
.backup-card h2 {font-size:17px;overflow-wrap:anywhere;margin:10px 0}
.backup-card p {margin:6px 0}
.backup-card .button {flex-shrink:0}
.backup-kind {display:inline-block;padding:3px 9px;border-radius:6px;background:#eef2e9;color:#446149;margin-right:10px;font-size:13px}
.backup-card time {font-size:13px;color:#656a61}
.success-notice {padding:16px 20px;border:1px solid #b6cfb6;background:#f0f7ed;border-radius:12px;overflow-wrap:anywhere;line-height:1.7}
.backup-confirm {display:flex;align-items:flex-start;gap:10px;margin-top:24px}
.backup-confirm input {width:auto;flex-shrink:0;margin-top:5px}
.site-header nav {flex-wrap:wrap}
@media(max-width:700px) {.backup-card {align-items:flex-start;flex-direction:column}.backup-card .button {align-self:flex-end}}
.chat-choice {display:block;width:100%;text-align:left;background:#fff;border:1px solid #94ae97;border-radius:8px;padding:10px;margin-top:7px;cursor:pointer;font:inherit;white-space:normal}
.chat-choice-row{display:flex;align-items:stretch;gap:6px;margin-top:7px}.chat-choice-row>.chat-choice{flex:1;min-width:0;width:auto;margin-top:0;overflow-wrap:anywhere}.chat-choice-compose{flex:0 0 auto;align-self:stretch;padding:8px 10px;border:1px solid #94ae97;border-radius:8px;background:#eef4ec;color:#31553d;cursor:pointer;font:inherit;white-space:nowrap}.chat-choice-compose:hover{background:#dfeadb}.chat-choice-compose:focus-visible,.chat-choice:focus-visible{outline:2px solid #426b4c;outline-offset:2px}.chat-choice-compose:disabled{opacity:.5;cursor:default}
.chat-choice:hover {background:#eef4ec}.chat-branch-button {margin-top:12px;background:none;border:0;color:#426b4c;text-decoration:underline;cursor:pointer}.chat-proposals p {margin:5px 0 14px}.chat-proposals {margin-top:14px}.chat-panel {width:min(650px,calc(100vw - 24px))}#chat-rename {align-self:flex-start;margin:0 16px}#chat-context-label,#chat-branch-label {margin-top:4px;margin-bottom:4px}.story-work-columns:has(.story-conversation[hidden]) {grid-template-columns:1fr}
/* Compact composer controls and a top-left resize grip for the anchored panel. */
.chat-options{border-bottom:1px solid #e2e7dd;margin-bottom:6px;font-size:12px}.chat-options summary{cursor:pointer;padding:7px 2px;color:#48654f;user-select:none}.chat-options .chat-model-picker{padding:2px 0 8px}.chat-options[open] summary{margin-bottom:3px}#chat-resize{position:absolute;top:0;left:0;width:26px;height:26px;z-index:6;border:0;border-radius:18px 0 8px 0;background:#dce8d7;color:#315b48;cursor:nwse-resize;touch-action:none;font-size:18px;padding:0}.chat-panel .chat-heading{padding-left:34px}.chat-resizing,.chat-resizing *{user-select:none!important}.chat-panel{max-width:calc(100vw - 16px);max-height:calc(100dvh - 92px)}.chat-panel #chat-form{max-height:45%}.chat-panel .chat-log{min-height:60px}
.chat-panel #chat-form{flex-shrink:1;min-height:100px}
/* Keep session actions together and let the writer allocate space to their draft. */
.chat-session-picker #chat-rename{margin:0;align-self:auto}.chat-session-picker{gap:6px}.chat-session-picker button{padding:8px;font-size:12px}.chat-session-picker select{width:0;min-width:60px}.chat-panel #chat-input{resize:none;min-height:58px;max-height:none;height:76px}.chat-panel #chat-form{max-height:none;min-height:0}.chat-panel #chat-log{min-height:100px}#chat-input-resize{display:flex;width:100%;height:16px;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:#8ca18b;cursor:ns-resize;touch-action:none}#chat-input-resize span{width:42px;height:5px;border-radius:8px;background:#bdcdb7;font-size:0}#chat-input-resize:hover span,#chat-input-resize:focus-visible span{background:#507255}@media(max-width:440px){.chat-session-picker{padding-left:10px;padding-right:10px}.chat-session-picker label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}}
.chat-composer-toolbar{display:flex;align-items:center;gap:7px;padding:2px 0}.chat-composer-toolbar button{border:1px solid #d3decd;border-radius:7px;background:#f4f7ef;padding:5px 10px;font-size:12px;color:#496249;cursor:pointer}.chat-composer-toolbar button[aria-expanded=true]{background:#e3ecd9;border-color:#9db28f}.chat-options[hidden]{display:none!important}.chat-options{margin:5px 0 0;border-bottom:0}.chat-options .chat-file-help{margin-bottom:0}
.chat-scene-text{font-size:15px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;padding:4px 0 12px;color:#243a31}.chat-scene-note{font-size:12px;color:#6c7c6b;margin:8px 0}.chat-scene-note summary{cursor:pointer}.chat-scene-note .chat-message-text{padding:8px 0}.chat-choice-prompt{font-weight:600;color:#416048;margin:16px 0 6px}
.story-reading-tabs{display:flex;gap:8px;margin:18px 0}.story-reading-tabs button[aria-pressed=true]{background:#315b48;color:#fff;border-color:#315b48}.story-progress-card{margin:18px 0;padding:24px;background:#fff;border:1px solid #d8e2d1;border-radius:12px;scroll-margin-top:18px}.story-progress-card h3{margin:0 0 12px;font-size:17px}.story-progress-choice{font-size:13px;color:#49684b;padding:10px 12px;background:#eef4e7;border-radius:7px;white-space:pre-wrap}.story-reading-prose{white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:2;padding:12px 0 22px}.story-progress-card details>summary{font-size:12px;color:#71836a;cursor:pointer}.story-progress-state{padding:20px;background:#f2f6ed;border:1px solid #c5d6bc;border-radius:12px;line-height:1.7}.story-progress-summary{white-space:pre-wrap;line-height:1.8}
.story-route { border:1px solid var(--border, #d6ded8); border-radius:12px; padding:16px; margin:16px 0; background:var(--surface, #fff); }
.story-route-steps { display:flex; flex-wrap:wrap; gap:8px; padding:0; list-style:none; }
.story-route-steps li { padding:6px 10px; border-radius:8px; background:#f2f3f1; color:#687069; font-size:13px; }
.story-route-steps li.done { background:#e7f2e9; color:#306543; }
.story-route-steps li.current { background:#213f33; color:#fff; font-weight:700; }

.story-source-panel{padding:16px 20px;border:1px solid #c5d6bc;border-radius:12px;background:#f2f6ed;margin:16px 0}.story-source-panel select{width:100%;max-width:900px;min-width:0}.story-source-panel .field-help{margin-bottom:0}

.auth-main{max-width:800px;margin:auto}.auth-main .form-panel{max-width:620px}.site-header nav form{display:inline-flex;margin:0}.auth-expired{position:sticky;top:0;z-index:2000;background:#fff0cf;padding:14px 20px;color:#573a13}.auth-main input[type=password]{font:inherit;width:100%;padding:12px;border:1px solid #cad4c8;border-radius:8px}.auth-main .cast-tools{flex-wrap:wrap}
