@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
:root{
  --ink:#2c1810;--ink-light:#5c3d2e;
  --gold:#c9a84c;--gold-light:#e8d5a3;--gold-dim:rgba(201,168,76,0.6);
  --crimson:#8b1a1a;--crimson-light:#fcebeb;
  --parchment:#f0e8d0;--parchment-dark:#e0d0a8;
  --bg:#f9f7f4;--surface:#ffffff;
  --border:#e2ddd5;--border-dark:#c4bfb5;
  --text:#1a1410;--text-muted:#6b5f55;--text-light:#9e9088;
  --success:#0f6e56;--success-bg:#e1f5ee;
  --error:#a32d2d;--error-bg:#fcebeb;
  --shadow:0 1px 3px rgba(0,0,0,0.08);
  --shadow-md:0 4px 16px rgba(0,0,0,0.12);
  --radius:8px;--radius-lg:12px;
  --font-display:'Cinzel',Georgia,serif;
}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:#0a0806;background-image:url('/images/Chronicle_background.png');background-size:cover;background-position:center;background-attachment:fixed;color:var(--text);min-height:100vh;font-size:14px;line-height:1.5;}

.hidden{display:none!important;}
.flex{display:flex;}.items-center{align-items:center;}.justify-between{justify-content:space-between;}
.gap-1{gap:8px;}.gap-2{gap:16px;}.w-full{width:100%;}

/* BUTTONS */
.btn{padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;border:1px solid rgba(201,168,76,0.3);background:rgba(30,20,10,0.7);color:var(--gold-light);white-space:nowrap;transition:all 0.15s;display:inline-flex;align-items:center;gap:6px;}
.btn:hover{background:rgba(201,168,76,0.15);border-color:rgba(201,168,76,0.6);color:var(--gold);}
.btn:active{transform:scale(0.98);}
.btn:disabled{opacity:0.5;cursor:not-allowed;transform:none;}
.btn-primary{background:var(--gold);color:var(--ink);border-color:var(--gold);font-weight:600;}
.btn-primary:hover{background:var(--gold-light);border-color:var(--gold-light);color:var(--ink);}
.btn-danger{background:rgba(139,26,26,0.4);color:#f09595;border-color:rgba(240,149,149,0.4);}
.btn-danger:hover{background:rgba(139,26,26,0.6);color:#ffb0b0;}
.btn-sm{padding:5px 10px;font-size:12px;}
.btn-lg{padding:12px 24px;font-size:14px;}
.btn-ghost{border-color:transparent;background:transparent;}
.btn-ghost:hover{background:rgba(201,168,76,0.1);}

/* FORMS */
.form-group{margin-bottom:16px;}
.form-label{display:block;font-size:11px;font-weight:600;color:rgba(201,168,76,0.6);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:5px;}
.form-input{width:100%;padding:9px 12px;border:1px solid rgba(201,168,76,0.2);border-radius:var(--radius);font-size:13px;background:rgba(20,12,4,0.75);color:var(--parchment);font-family:inherit;transition:border-color 0.15s;}
.form-input:focus{outline:none;border-color:rgba(201,168,76,0.6);}
.form-input::placeholder{color:rgba(201,168,76,0.2);}
.form-textarea{width:100%;padding:9px 12px;border:1px solid rgba(201,168,76,0.2);border-radius:var(--radius);font-size:13px;background:rgba(20,12,4,0.75);color:var(--parchment);font-family:inherit;min-height:120px;resize:vertical;transition:border-color 0.15s;}
.form-textarea:focus{outline:none;border-color:rgba(201,168,76,0.6);}
.form-textarea::placeholder{color:rgba(201,168,76,0.2);}
.form-hint{font-size:11px;color:rgba(201,168,76,0.35);margin-top:4px;}

/* ALERTS */
.alert{padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:16px;}
.alert-error{background:rgba(139,26,26,0.35);border:1px solid rgba(240,149,149,0.4);color:#f09595;}
.alert-success{background:rgba(15,110,86,0.3);border:1px solid rgba(134,212,186,0.4);color:#86d4ba;}

/* ===== APP HEADER ===== */
.app-header{
  background:var(--ink);
  padding:0 1.5rem;
  display:flex;
  align-items:center;
  gap:12px;
  height:56px;
  position:relative;
  z-index:50;
  border-bottom:1px solid rgba(201,168,76,0.15);
  box-shadow:0 2px 12px rgba(0,0,0,0.4);
}
.app-logo{
  width:38px;height:38px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.app-logo img{width:38px;height:38px;object-fit:contain;}
.app-name{
  font-family:var(--font-display);
  font-size:20px;
  font-weight:700;
  color:var(--gold);
  letter-spacing:3px;
  text-shadow:0 0 20px rgba(201,168,76,0.3);
}
.app-header-right{margin-left:auto;display:flex;align-items:center;gap:4px;}

/* USER MENU */
.user-menu-wrap{position:relative;}
.user-menu-btn{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--radius);cursor:pointer;border:1px solid rgba(201,168,76,0.2);background:rgba(255,255,255,0.05);color:rgba(201,168,76,0.8);font-size:13px;transition:all 0.15s;}
.user-menu-btn:hover{background:rgba(255,255,255,0.1);border-color:rgba(201,168,76,0.4);}
.user-avatar{width:28px;height:28px;border-radius:50%;background:var(--gold);color:var(--ink);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-display);}
.user-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--ink);border:1px solid rgba(201,168,76,0.2);border-radius:var(--radius-lg);box-shadow:0 8px 24px rgba(0,0,0,0.5);min-width:190px;overflow:hidden;display:none;z-index:100;}
.user-menu-dropdown.open{display:block;}
.user-menu-item{padding:10px 14px;font-size:13px;color:var(--gold-light);cursor:pointer;display:flex;align-items:center;gap:8px;transition:background 0.1s;}
.user-menu-item:hover{background:rgba(201,168,76,0.1);}
.user-menu-item.danger{color:#f09595;}
.user-menu-item.danger:hover{background:rgba(139,26,26,0.3);}
.user-menu-divider{height:1px;background:rgba(201,168,76,0.15);margin:4px 0;}
.user-menu-header{padding:10px 14px;font-size:11px;color:rgba(201,168,76,0.5);border-bottom:1px solid rgba(201,168,76,0.15);}

/* BREADCRUMB */
.breadcrumb{padding:9px 1.5rem;background:rgba(20,15,8,0.75);border-bottom:1px solid rgba(201,168,76,0.15);display:flex;align-items:center;gap:6px;font-size:12px;color:rgba(201,168,76,0.6);flex-wrap:wrap;backdrop-filter:blur(8px);}
.breadcrumb-link{color:var(--gold);cursor:pointer;font-weight:500;}
.breadcrumb-link:hover{text-decoration:underline;}
.breadcrumb-sep{color:rgba(201,168,76,0.3);font-size:11px;}
.breadcrumb-current{color:var(--gold-light);font-weight:500;}

/* LAYOUT */
.app-layout{display:flex;min-height:calc(100vh - 56px - 35px);}
.sidebar{width:220px;background:rgba(20,15,8,0.82);border-right:1px solid rgba(201,168,76,0.15);flex-shrink:0;padding:12px 0;backdrop-filter:blur(8px);}
.sidebar-section{margin-bottom:4px;}
.sidebar-label{font-size:10px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:0.1em;padding:0 14px;margin-bottom:3px;margin-top:10px;font-family:var(--font-display);}
.sidebar-item{padding:8px 14px;font-size:13px;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;gap:8px;border-left:2px solid transparent;transition:all 0.12s;}
.sidebar-item:hover{background:var(--bg);color:var(--text);}
.sidebar-item.active{background:var(--crimson-light);color:var(--crimson);border-left-color:var(--crimson);font-weight:500;}
.sidebar-divider{height:1px;background:var(--border);margin:8px 14px;}
.main-content{flex:1;overflow-y:auto;max-width:100%;}

/* ===== CAMPAIGNS VIEW — epic background ===== */
#view-campaigns{
  min-height:calc(100vh - 56px - 35px);
  background:#0a0806;
  background-image:url('/images/Chronicle_background.png');
  background-size:cover;
  background-position:center;
  position:relative;
  padding:2rem 1.5rem;
}
#view-campaigns::before{
  content:'';
  position:absolute;
  inset:0;
  background:rgba(0,0,0,0.55);
  pointer-events:none;
}
#view-campaigns .page-header,
#view-campaigns .campaigns-grid{
  position:relative;
  z-index:1;
}
#view-campaigns .page-title{
  font-family:var(--font-display);
  color:var(--gold);
  font-size:26px;
  letter-spacing:2px;
  text-shadow:0 2px 8px rgba(0,0,0,0.6);
}
#view-campaigns .page-subtitle{
  color:rgba(201,168,76,0.6);
  font-size:13px;
}

/* PAGE */
.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;gap:12px;}
.page-title{font-size:20px;font-weight:600;color:var(--text);letter-spacing:-0.3px;}
.page-subtitle{font-size:13px;color:var(--text-muted);margin-top:2px;}
.main-content > div:not(#view-campaigns){padding:1.5rem;}

/* Glass dark panels for all views except campaigns */
#view-sessions,#view-characters,#view-novel,
#view-session-detail,#view-settings{
  background:rgba(12,8,4,0.72);
  min-height:calc(100vh - 56px - 35px);
  backdrop-filter:blur(10px);
}
#view-sessions .page-title,#view-characters .page-title,
#view-novel .page-title,#view-session-detail .page-title,
#view-settings .page-title{
  color:var(--gold);font-family:var(--font-display);letter-spacing:1px;
}
#view-sessions .page-subtitle,#view-characters .page-subtitle,
#view-novel .page-subtitle,#view-session-detail .page-subtitle,
#view-settings .page-subtitle{color:rgba(201,168,76,0.5);}

/* Make cards and surfaces slightly translucent */
.session-item{background:rgba(30,22,12,0.85);border-color:rgba(201,168,76,0.15);color:var(--gold-light);}
.session-item:hover{border-color:var(--gold);background:rgba(50,35,15,0.92);box-shadow:0 0 0 1px rgba(201,168,76,0.3);}
.session-name{color:var(--gold-light);}
.session-date{color:rgba(201,168,76,0.45);}
.session-num{background:rgba(201,168,76,0.1);border-color:rgba(201,168,76,0.2);color:var(--gold);}
.char-card{background:rgba(25,18,10,0.85);border-color:rgba(201,168,76,0.15);}
.char-card:hover{border-color:rgba(201,168,76,0.4);}
.char-name{color:var(--gold-light);}
.char-player{color:rgba(201,168,76,0.5);}
.char-desc{color:rgba(201,168,76,0.45);}
.char-badge{background:rgba(201,168,76,0.08);border-color:rgba(201,168,76,0.15);color:rgba(201,168,76,0.6);}
.char-btn{background:rgba(201,168,76,0.08);border-color:rgba(201,168,76,0.2);color:rgba(201,168,76,0.6);}
.char-btn:hover{background:rgba(201,168,76,0.2);color:var(--gold);}
.char-btn-delete:hover{background:rgba(139,26,26,0.4);color:#f09595;border-color:rgba(240,149,149,0.4);}
.add-char-card{background:rgba(20,14,6,0.6);border-color:rgba(201,168,76,0.2);color:rgba(201,168,76,0.4);}
.add-char-card:hover{border-color:rgba(201,168,76,0.5);color:var(--gold);background:rgba(40,28,10,0.7);}
.moment-card{background:rgba(25,18,10,0.85);border-color:rgba(201,168,76,0.15);}
.moment-img{background:rgba(15,10,5,0.6);border-bottom-color:rgba(201,168,76,0.1);}
.moment-title{color:var(--gold-light);}
.moment-desc{color:rgba(201,168,76,0.5);}
.moment-prompt{color:rgba(201,168,76,0.35);border-top-color:rgba(201,168,76,0.1);}
.settings-section{background:rgba(25,18,10,0.85);border-color:rgba(201,168,76,0.15);}
.settings-section-title{color:var(--gold-light);}
.settings-section-desc{color:rgba(201,168,76,0.5);}
.form-label{color:rgba(201,168,76,0.6);}
.form-input{background:rgba(15,10,5,0.7);border-color:rgba(201,168,76,0.2);color:var(--gold-light);}
.form-input:focus{border-color:rgba(201,168,76,0.6);}
.form-input::placeholder{color:rgba(201,168,76,0.2);}
.form-textarea{background:rgba(15,10,5,0.7);border-color:rgba(201,168,76,0.2);color:var(--gold-light);}
.form-textarea:focus{border-color:rgba(201,168,76,0.6);}
.form-textarea::placeholder{color:rgba(201,168,76,0.2);}
.form-hint{color:rgba(201,168,76,0.35);}
.transcript-box{background:rgba(15,10,5,0.7);border-color:rgba(201,168,76,0.2);color:var(--parchment);}
.transcript-box:focus{border-color:rgba(201,168,76,0.5);}
.transcript-box::placeholder{color:rgba(201,168,76,0.2);}
.sess-tab{color:rgba(201,168,76,0.45);}
.sess-tab:hover{color:var(--gold);}
.sess-tab.active{color:var(--gold);border-bottom-color:var(--gold);}
.sess-tabs{border-bottom-color:rgba(201,168,76,0.15);}
.sidebar-item{color:rgba(201,168,76,0.5);}
.sidebar-item:hover{background:rgba(201,168,76,0.08);color:var(--gold);}
.sidebar-item.active{background:rgba(201,168,76,0.12);color:var(--gold);border-left-color:var(--gold);}
.sidebar-label{color:rgba(201,168,76,0.35);}
.sidebar-divider{background:rgba(201,168,76,0.12);}
.novel-session-block{background:rgba(25,18,10,0.85);border-color:rgba(201,168,76,0.15);}
.novel-session-header{background:rgba(15,10,5,0.6);border-bottom-color:rgba(201,168,76,0.1);}
.novel-session-title{color:var(--gold-light);}
.novel-session-date{color:rgba(201,168,76,0.45);}
.novel-moment-row{border-bottom-color:rgba(201,168,76,0.1);}
.novel-moment-title{color:var(--gold-light);}
.novel-moment-desc{color:rgba(201,168,76,0.5);}
.key-input-field{background:rgba(15,10,5,0.7);border-color:rgba(201,168,76,0.2);color:var(--gold-light);}
.progress-bar{background:rgba(201,168,76,0.1);}
.progress-fill{background:var(--gold);}
.progress-msg{color:rgba(201,168,76,0.6);}
.chip{background:rgba(25,18,10,0.7);border-color:rgba(201,168,76,0.2);color:rgba(201,168,76,0.5);}
.chip:hover{border-color:rgba(201,168,76,0.4);color:var(--gold);}
.chip.sel{background:rgba(201,168,76,0.15);color:var(--gold);border-color:rgba(201,168,76,0.5);}
.storyboard-header{color:rgba(201,168,76,0.5);}
.empty-state h3{color:var(--gold-light);}
.empty-state p{color:rgba(201,168,76,0.45);}
.modal{background:rgba(18,12,6,0.95);border:1px solid rgba(201,168,76,0.2);}
.modal-title{color:var(--gold);}
.modal-close{color:rgba(201,168,76,0.5);}
.modal-footer{border-top-color:rgba(201,168,76,0.15);}
.image-upload-area{background:rgba(15,10,5,0.6);border-color:rgba(201,168,76,0.2);}
.image-upload-area:hover{border-color:rgba(201,168,76,0.5);}


/* CAMPAIGN CARDS */
.campaigns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;}
.campaign-card{
  background:rgba(20,15,8,0.85);
  border:1px solid rgba(201,168,76,0.25);
  border-radius:var(--radius-lg);
  padding:16px;
  cursor:pointer;
  transition:all 0.2s;
  box-shadow:0 4px 16px rgba(0,0,0,0.4);
  backdrop-filter:blur(4px);
}
.campaign-card:hover{
  border-color:rgba(201,168,76,0.6);
  box-shadow:0 6px 24px rgba(0,0,0,0.5),0 0 0 1px rgba(201,168,76,0.3);
  transform:translateY(-2px);
}
.campaign-card-icon{width:40px;height:40px;margin-bottom:10px;}
.campaign-card-icon img{width:40px;height:40px;object-fit:contain;}
.campaign-card-name{font-size:14px;font-weight:600;color:var(--gold);margin-bottom:4px;font-family:var(--font-display);letter-spacing:0.5px;}
.campaign-card-desc{font-size:12px;color:rgba(201,168,76,0.55);line-height:1.5;margin-bottom:10px;}
.campaign-card-meta{font-size:11px;color:rgba(201,168,76,0.35);}
.add-campaign-card{
  background:rgba(20,15,8,0.6);
  border:1px dashed rgba(201,168,76,0.25);
  border-radius:var(--radius-lg);
  padding:16px;
  cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:8px;min-height:130px;
  color:rgba(201,168,76,0.4);
  font-size:13px;
  transition:all 0.2s;
  backdrop-filter:blur(4px);
}
.add-campaign-card:hover{border-color:rgba(201,168,76,0.5);color:var(--gold);}
.add-campaign-card .plus{font-size:28px;line-height:1;}

/* SESSIONS */
.sessions-list{display:flex;flex-direction:column;gap:10px;}
.session-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;cursor:pointer;transition:all 0.15s;display:flex;align-items:center;justify-content:space-between;}
.session-item:hover{border-color:var(--crimson);box-shadow:var(--shadow);}
.session-item-left{display:flex;align-items:center;gap:12px;}
.session-num{width:32px;height:32px;background:var(--bg);border:1px solid var(--border);border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text-muted);flex-shrink:0;}
.session-name{font-size:13px;font-weight:500;color:var(--text);}
.session-date{font-size:11px;color:var(--text-muted);margin-top:1px;}
.session-badge{font-size:10px;padding:2px 7px;border-radius:99px;background:var(--success-bg);color:var(--success);font-weight:500;}
.session-badge.empty{background:var(--bg);color:var(--text-light);border:1px solid var(--border);}

/* CHARACTERS */
.char-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;}
.char-card{border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--surface);box-shadow:var(--shadow);}
.char-card-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px;}
.char-avatar{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;border:2px solid var(--border);}
.char-actions{display:flex;gap:4px;}
.char-btn{padding:3px 8px;font-size:10px;border-radius:4px;cursor:pointer;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);}
.char-btn:hover{background:var(--border);}
.char-btn-delete:hover{background:var(--error-bg);color:var(--error);border-color:#f09595;}
.char-name{font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px;}
.char-player{font-size:11px;color:var(--text-muted);margin-bottom:3px;}
.char-desc{font-size:11px;color:var(--text-muted);line-height:1.5;}
.char-badge{display:inline-block;font-size:10px;padding:2px 6px;border-radius:4px;margin-top:6px;background:var(--bg);color:var(--text-muted);border:1px solid var(--border);}
.add-char-card{border:1px dashed var(--border-dark);border-radius:var(--radius-lg);padding:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;min-height:120px;color:var(--text-muted);font-size:12px;transition:all 0.15s;}
.add-char-card:hover{border-color:var(--crimson);color:var(--crimson);}

/* SESSION TABS */
.sess-tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:20px;}
.sess-tab{padding:10px 18px;font-size:13px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color 0.15s;}
.sess-tab:hover{color:var(--text);}
.sess-tab.active{color:var(--crimson);border-bottom-color:var(--crimson);font-weight:500;}

/* STORYBOARD */
.storyboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.moments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;align-items:start;}
.moment-card{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface);box-shadow:var(--shadow);}
.moment-img{width:100%;aspect-ratio:4/3;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:12px;border-bottom:1px solid var(--border);}
.moment-img-inner{font-size:11px;color:var(--text-muted);text-align:center;line-height:1.5;}
.moment-body{padding:10px;}
.moment-num{font-size:10px;color:var(--text-muted);margin-bottom:3px;}
.moment-title{font-size:12px;font-weight:600;color:var(--text);margin-bottom:4px;line-height:1.4;}
.moment-desc{font-size:11px;color:var(--text-muted);line-height:1.5;}
.moment-prompt{font-size:10px;color:var(--text-light);line-height:1.4;margin-top:6px;padding-top:6px;border-top:1px solid var(--border);font-style:italic;}
.moment-type{display:inline-block;font-size:10px;padding:2px 6px;border-radius:4px;margin-top:5px;font-weight:500;}
.type-combat{background:#fcebeb;color:#a32d2d;}
.type-drama{background:#eeedfe;color:#3c3489;}
.type-discovery{background:#e1f5ee;color:#0f6e56;}
.type-humor{background:#faeeda;color:#854f0b;}

/* TRANSCRIPT */
.transcript-box{width:100%;min-height:220px;border:1px solid var(--border);border-radius:var(--radius);padding:12px;font-size:13px;line-height:1.7;color:var(--text);background:var(--surface);resize:vertical;font-family:inherit;}
.transcript-box:focus{outline:none;border-color:var(--crimson);}

/* STYLE CHIPS */
.style-row{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 16px;}
.chip{padding:5px 13px;border-radius:99px;font-size:12px;border:1px solid var(--border);cursor:pointer;color:var(--text-muted);background:var(--surface);transition:all 0.12s;}
.chip:hover{border-color:var(--border-dark);color:var(--text);}
.chip.sel{background:var(--ink);color:var(--gold);border-color:var(--ink);}

/* PROGRESS */
.progress-wrap{margin-top:14px;display:none;}
.progress-bar{height:4px;background:var(--border);border-radius:2px;overflow:hidden;margin-bottom:8px;}
.progress-fill{height:100%;background:var(--crimson);border-radius:2px;width:0%;transition:width 0.3s;}
.progress-msg{font-size:12px;color:var(--text-muted);text-align:center;}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;}
.modal{background:var(--surface);border-radius:var(--radius-lg);padding:24px;width:100%;max-width:500px;box-shadow:var(--shadow-md);max-height:90vh;overflow-y:auto;}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;}
.modal-title{font-size:16px;font-weight:600;color:var(--text);font-family:var(--font-display);letter-spacing:0.5px;}
.modal-close{background:none;border:none;cursor:pointer;font-size:20px;color:var(--text-muted);padding:0;line-height:1;}
.modal-close:hover{color:var(--text);}
.modal-footer{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;padding-top:16px;border-top:1px solid var(--border);}

/* IMAGE UPLOAD */
.image-upload-area{border:1px dashed var(--border-dark);border-radius:var(--radius);padding:16px;text-align:center;cursor:pointer;background:var(--bg);transition:border-color 0.15s;}
.image-upload-area:hover{border-color:var(--crimson);}
.image-preview{width:80px;height:80px;border-radius:50%;object-fit:cover;display:none;margin:10px auto 0;border:2px solid var(--border);}

/* EMPTY STATES */
.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted);}
.empty-state-icon{font-size:48px;margin-bottom:12px;}
.empty-state h3{font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px;font-family:var(--font-display);}
.empty-state p{font-size:13px;margin-bottom:16px;max-width:300px;margin-left:auto;margin-right:auto;}

/* SETTINGS */
.settings-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:16px;}
.settings-section-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:4px;font-family:var(--font-display);letter-spacing:0.5px;}
.settings-section-desc{font-size:12px;color:var(--text-muted);margin-bottom:16px;}
.key-input-field{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:12px;background:var(--surface);color:var(--text);font-family:monospace;}
.key-input-field:focus{outline:none;border-color:var(--crimson);}

/* NOVEL */
.novel-session-block{border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:14px;overflow:hidden;background:var(--surface);}
.novel-session-header{padding:12px 16px;background:var(--bg);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.novel-session-title{font-size:13px;font-weight:600;color:var(--text);font-family:var(--font-display);letter-spacing:0.5px;}
.novel-session-date{font-size:11px;color:var(--text-muted);}
.novel-session-moments{padding:12px 16px;}
.novel-moment-row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);}
.novel-moment-row:last-child{border-bottom:none;}
.novel-moment-num{width:24px;height:24px;border-radius:4px;background:var(--ink);color:var(--gold);font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;}
.novel-moment-title{font-size:12px;font-weight:600;color:var(--text);}
.novel-moment-desc{font-size:11px;color:var(--text-muted);margin-top:2px;line-height:1.5;}
.novel-empty{text-align:center;padding:12px;font-size:12px;color:var(--text-light);font-style:italic;}
.novel-cover{padding:2rem 1.5rem;background:var(--ink);text-align:center;color:var(--gold);}
.novel-cover-eyebrow{font-size:10px;opacity:0.5;letter-spacing:0.12em;text-transform:uppercase;margin-bottom:10px;font-family:var(--font-display);}
.novel-cover-title{font-size:22px;font-weight:700;margin-bottom:4px;font-family:var(--font-display);letter-spacing:1px;}
.novel-cover-divider{width:40px;height:1px;background:var(--gold);margin:12px auto;opacity:0.4;}
.novel-cover-sub{font-size:12px;opacity:0.6;}
.novel-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:#222;padding:2px;}
.novel-panel{background:var(--bg);aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;}
.novel-panel.wide{grid-column:1/-1;aspect-ratio:16/7;}
.novel-panel-inner{font-size:11px;color:var(--text-muted);text-align:center;padding:8px;line-height:1.5;}
.novel-caption{position:absolute;bottom:0;left:0;right:0;background:rgba(0,0,0,0.75);color:white;font-size:9px;padding:4px 7px;line-height:1.4;}
.novel-chapter-header{background:var(--ink);color:var(--gold);padding:8px 12px;font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;font-family:var(--font-display);}

/* IMAGE GENERATION */
.moment-img-generated{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;}
.moment-img-shimmer{
  width:100%;aspect-ratio:4/3;
  background:linear-gradient(90deg,rgba(201,168,76,0.05) 25%,rgba(201,168,76,0.12) 50%,rgba(201,168,76,0.05) 75%);
  background-size:200% 100%;
  animation:shimmer 1.5s infinite;
  display:flex;align-items:center;justify-content:center;
}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.moment-img-shimmer-text{font-size:11px;color:rgba(201,168,76,0.5);text-align:center;}
.moment-card{position:relative;}
.moment-regen-btn{
  position:absolute;top:6px;right:6px;
  padding:3px 8px;font-size:10px;
  background:rgba(0,0,0,0.6);color:rgba(201,168,76,0.8);
  border:1px solid rgba(201,168,76,0.3);border-radius:4px;
  cursor:pointer;opacity:0;transition:opacity 0.15s;
}
.moment-card:hover .moment-regen-btn{opacity:1;}
.moment-regen-btn:hover{background:rgba(0,0,0,0.8);color:var(--gold);}

/* DRAG AND DROP */
.image-upload-area{transition:all 0.2s;cursor:pointer;}
.image-upload-area.drag-over{
  border-color:var(--gold) !important;
  background:rgba(201,168,76,0.1) !important;
  transform:scale(1.02);
  box-shadow:0 0 0 3px rgba(201,168,76,0.2);
}
.char-card-drop{
  position:relative;
  transition:all 0.2s;
}
.char-card-drop.drag-over{
  border-color:var(--gold) !important;
  background:rgba(201,168,76,0.12) !important;
  transform:scale(1.02);
  box-shadow:0 0 0 3px rgba(201,168,76,0.25);
}
.char-card-drop.drag-over::after{
  content:'Drop portrait here';
  position:absolute;
  inset:0;
  background:rgba(12,8,4,0.75);
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--gold);
  font-size:12px;
  font-weight:600;
  border-radius:var(--radius-lg);
  letter-spacing:0.5px;
}

/* LIGHTBOX */
.lightbox-overlay{
  position:fixed;inset:0;
  background:rgba(0,0,0,0.92);
  z-index:999;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  cursor:zoom-out;
  animation:lightbox-in 0.2s ease;
}
@keyframes lightbox-in{from{opacity:0}to{opacity:1}}
.lightbox-img{
  max-width:90vw;max-height:88vh;
  object-fit:contain;
  border-radius:var(--radius-lg);
  box-shadow:0 8px 60px rgba(0,0,0,0.8),0 0 0 1px rgba(201,168,76,0.2);
  animation:lightbox-scale 0.2s ease;
}
@keyframes lightbox-scale{from{transform:scale(0.92)}to{transform:scale(1)}}
.lightbox-caption{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  background:rgba(18,12,6,0.9);
  color:var(--gold-light);
  padding:8px 20px;border-radius:99px;
  font-size:13px;
  border:1px solid rgba(201,168,76,0.2);
  white-space:nowrap;
  max-width:80vw;overflow:hidden;text-overflow:ellipsis;
}
.lightbox-close{
  position:fixed;top:20px;right:20px;
  width:36px;height:36px;
  background:rgba(18,12,6,0.9);
  border:1px solid rgba(201,168,76,0.2);
  border-radius:50%;
  color:var(--gold);font-size:18px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
}
.lightbox-close:hover{background:rgba(201,168,76,0.15);}

/* Make images show zoom cursor */
.moment-img-generated{cursor:zoom-in;}
.char-avatar img{cursor:zoom-in;}

/* CHARACTER IMAGE SLOTS */
.image-slot{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  min-height:80px;transition:all 0.2s;cursor:pointer;
}
.image-slot.drag-over{
  border-color:var(--gold) !important;
  background:rgba(201,168,76,0.12) !important;
  transform:scale(1.02);
}
.slot-preview{
  width:100%;height:100%;object-fit:cover;
  border-radius:6px;max-height:120px;
  cursor:zoom-in;
}
.slot-placeholder{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;pointer-events:none;
}
.slot-preview.hidden{display:none;}

/* Character card image grid */
.char-img-grid{
  display:grid;grid-template-columns:1fr 1fr;
  gap:3px;margin-top:8px;border-radius:6px;overflow:hidden;
}
.char-img-thumb{
  aspect-ratio:1;object-fit:cover;
  width:100%;cursor:zoom-in;
  transition:opacity 0.15s;
}
.char-img-thumb:hover{opacity:0.85;}

/* NARRATIVE EDITOR */
.narrative-section {
  margin-bottom: 20px;
  border: 1px solid rgba(201,168,76,0.15);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: rgba(20,12,4,0.6);
}
.narrative-section-header {
  padding: 8px 14px;
  background: rgba(201,168,76,0.08);
  border-bottom: 1px solid rgba(201,168,76,0.12);
  font-family: var(--font-display);
  font-size: 11px;
  color: rgba(201,168,76,0.6);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 8px;
}
.narrative-section-img {
  width: 48px;
  height: 36px;
  object-fit: cover;
  border-radius: 3px;
  flex-shrink: 0;
}
.narrative-textarea {
  width: 100%;
  padding: 12px 14px;
  background: transparent;
  border: none;
  color: var(--parchment);
  font-family: 'Georgia', serif;
  font-size: 13px;
  line-height: 1.7;
  resize: vertical;
  min-height: 80px;
  font-style: italic;
}
.narrative-textarea:focus {
  outline: none;
  background: rgba(201,168,76,0.03);
}
.narrative-textarea::placeholder {
  color: rgba(201,168,76,0.2);
  font-style: italic;
}

/* NEW STORYBOARD LAYOUT WITH INLINE NARRATIVE */
.storyboard-panel {
  border: 1px solid rgba(201,168,76,0.15);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: rgba(20,12,4,0.7);
  position: relative;
  break-inside: avoid;
}
.storyboard-panel-img {
  position: relative;
  width: 100%;
}
.storyboard-panel-img .moment-img-generated {
  width: 100%;
  max-height: 420px;
  object-fit: cover;
  display: block;
  cursor: zoom-in;
}
.storyboard-panel-img .moment-img-placeholder {
  width: 100%;
  min-height: 200px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: rgba(15,10,5,0.5);
  padding: 24px;
}
.storyboard-panel-meta {
  padding: 10px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-top: 1px solid rgba(201,168,76,0.1);
  flex-wrap: wrap;
}
.moment-prompt-text {
  padding: 8px 14px;
  font-size: 10px;
  color: rgba(201,168,76,0.3);
  font-style: italic;
  line-height: 1.5;
  border-top: 1px solid rgba(201,168,76,0.08);
}

/* NARRATIVE BLOCKS */
.narrative-block {
  margin: 12px 0;
  border: 1px solid rgba(201,168,76,0.12);
  border-radius: var(--radius);
  overflow: hidden;
  background: rgba(12,8,4,0.5);
}
.narrative-block-header {
  padding: 6px 12px;
  background: rgba(201,168,76,0.06);
  border-bottom: 1px solid rgba(201,168,76,0.1);
  font-size: 10px;
  color: rgba(201,168,76,0.45);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.narrative-regen-btn {
  padding: 2px 8px;
  font-size: 10px;
  background: rgba(201,168,76,0.08);
  border: 1px solid rgba(201,168,76,0.2);
  border-radius: 4px;
  color: rgba(201,168,76,0.6);
  cursor: pointer;
  transition: all 0.15s;
}
.narrative-regen-btn:hover {
  background: rgba(201,168,76,0.15);
  color: var(--gold);
}
.narrative-inline-box {
  width: 100%;
  padding: 14px 16px;
  background: transparent;
  border: none;
  color: var(--parchment);
  font-family: 'Georgia', serif;
  font-size: 13px;
  line-height: 1.8;
  resize: vertical;
  min-height: 120px;
  font-style: italic;
  field-sizing: content;
  overflow-y: hidden;
}
.narrative-inline-box:focus {
  outline: none;
  background: rgba(201,168,76,0.03);
}
.narrative-inline-box::placeholder {
  color: rgba(201,168,76,0.15);
  font-style: italic;
}

/* NARRATIVE SAVE BUTTON */
.narrative-save-btn {
  padding: 2px 8px;
  font-size: 10px;
  background: rgba(15,110,86,0.2);
  border: 1px solid rgba(134,212,186,0.3);
  border-radius: 4px;
  color: rgba(134,212,186,0.7);
  cursor: pointer;
  transition: all 0.15s;
}
.narrative-save-btn:hover {
  background: rgba(15,110,86,0.35);
  color: #86d4ba;
}

/* Publish tab - no top padding */
#session-tab-export {
  padding-top: 0 !important;
  margin-top: 0 !important;
}

/* Storyboard panel caption - gold parchment */
.storyboard-panel-meta {
  color: var(--gold-light) !important;
}
.storyboard-panel-meta .moment-num {
  color: rgba(201,168,76,0.6) !important;
}
.storyboard-panel-meta .moment-title {
  color: var(--gold-light) !important;
}
.moment-prompt-text {
  color: rgba(201,168,76,0.35) !important;
}

/* Fix regenerate button visibility on storyboard panels */
.storyboard-panel .moment-regen-btn {
  opacity: 0;
  position: absolute;
  top: 8px;
  right: 8px;
}
.storyboard-panel:hover .moment-regen-btn {
  opacity: 1;
}

/* Narrative blocks span full width in storyboard grid */
.moments-grid .narrative-block {
  grid-column: 1 / -1;
}

/* Storyboard layout - alternating narrative and image panels */
#moments-grid {
  display: block;
}
.panels-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  align-items: start;
}
@media (max-width: 700px) {
  .panels-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .panels-grid { grid-template-columns: 1fr; }
}
/* Narrative panels sit in the grid same as image panels */
.narrative-panel {
  border: 1px solid rgba(201,168,76,0.12);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: rgba(12,8,4,0.5);
  display: flex;
  flex-direction: column;
}
.narrative-panel .narrative-inline-box {
  flex: 1;
  min-height: 160px;
}

/* TIER WATERMARK */
.watermarked {
  position: relative;
}
.watermarked::after {
  content: 'CHRONICLE TRIAL';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(-30deg);
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 700;
  color: rgba(255,255,255,0.35);
  letter-spacing: 4px;
  pointer-events: none;
  white-space: nowrap;
  text-shadow: 0 1px 3px rgba(0,0,0,0.5);
}

/* ACCOUNT PAGE PLAN CARDS */
.plan-card-current {
  box-shadow: 0 0 0 2px var(--gold);
}

/* Trial expiry banner */
.trial-expired-banner {
  background: rgba(139,26,26,0.4);
  border: 1px solid rgba(240,149,149,0.4);
  color: #f09595;
  padding: 12px 16px;
  border-radius: var(--radius);
  font-size:13px;
  margin-bottom: 16px;
  text-align: center;
}
