
:root{--bg:#f4f5f7;--card:#fff;--text:#17181a;--muted:#6c7077;--line:#e5e7eb;--r:18px}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.shell{height:100%;display:grid;grid-template-columns:250px 1fr;overflow:hidden}.sidebar{background:#fff;border-right:1px solid var(--line);padding:16px;overflow:auto}.brand{font-size:20px;font-weight:800;margin:4px 6px 16px}.brand small{display:block;font-size:12px;font-weight:500;color:var(--muted);margin-top:4px}.nav{width:100%;border:0;background:transparent;border-radius:14px;padding:12px 13px;margin:3px 0;text-align:left;font-size:14px}.nav.active{background:#eef0f3;font-weight:700}.main{min-width:0;min-height:0;display:flex;flex-direction:column}.topbar{height:60px;flex:0 0 auto;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:0 16px}.title{font-weight:800;flex:1}.icon-btn,.back{border:0;background:#eef0f3;width:38px;height:38px;border-radius:12px;font-size:18px}.back{display:none;font-size:22px;font-weight:700}.back.show{display:block}.content{overflow:auto;padding:18px;-webkit-overflow-scrolling:touch}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.home-grid>.card{display:flex;flex-direction:column;min-height:162px}.home-action{margin-top:auto;padding-top:12px}.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px}.card h3{margin:0 0 8px;font-size:16px}.card p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.section-title{font-size:18px;font-weight:800;margin-bottom:10px}.subtitle{font-size:13px;color:var(--muted);margin:-5px 0 12px}.btn{border:0;border-radius:12px;padding:10px 13px;background:#111827;color:#fff;font-weight:700;font-size:13px}.btn.secondary{background:#eef0f3;color:#111827}.badge{display:inline-block;font-size:12px;padding:5px 8px;background:#eef0f3;border-radius:999px;color:#555;margin-right:6px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.platform-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.platform{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;min-height:160px;display:flex;flex-direction:column}.platform h3{margin:0 0 7px}.platform p{margin:0;color:var(--muted);font-size:13px;line-height:1.55;flex:1}.platform .btn{margin-top:14px;width:100%}.file{display:block;margin-top:12px;max-width:100%}.saved{margin-top:12px}.saved-item{padding:10px 0;border-top:1px solid var(--line);font-size:13px}.notice{padding:12px;border-radius:14px;background:#fff7ed;border:1px solid #fed7aa;font-size:13px;line-height:1.55}.muted{color:var(--muted)}@media(max-width:900px){.shell{display:block}.sidebar{position:absolute;left:0;top:0;bottom:0;width:min(82vw,300px);z-index:5;transform:translateX(-105%);transition:.18s;box-shadow:0 18px 50px rgba(0,0,0,.16)}.sidebar.open{transform:translateX(0)}.main{height:100%}.grid,.platform-grid{grid-template-columns:1fr}.content{padding:14px}}@media(max-width:520px){.topbar{height:56px;padding:0 10px}.content{padding:10px}.card{padding:13px;border-radius:15px}}


/* RP Workshop brand V0.4.2 — one mascot asset everywhere */
:root{--rp-purple:#35104f}
.brand{display:flex;align-items:center;gap:10px}.brand-logo{width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center}.brand-logo img{display:block;width:100%;height:100%;object-fit:contain}.brand-copy{min-width:0}
.splash{position:fixed;inset:0;z-index:9999;background:#fff;display:grid;place-items:center;transition:opacity .28s ease,visibility .28s ease}.splash.hide{opacity:0;visibility:hidden;pointer-events:none}.splash-inner{text-align:center;width:180px}.splash-mascot{display:block;width:112px;height:auto;margin:0 auto;transform-origin:50% 88%;animation:none}.splash-wordmark{margin-top:18px;font-size:19px;font-weight:650;letter-spacing:.035em;color:var(--rp-purple);opacity:0;transform:translateY(6px);animation:none}
@keyframes rpMascotWake{
0%{opacity:0;transform:translateY(30px) scale(.38,.10) rotate(-2deg)}
7%{opacity:1;transform:translateY(28px) scale(.48,.14) rotate(-2deg)}
18%{transform:translateY(24px) scale(.70,.20) rotate(1deg)}
32%{transform:translateY(13px) scale(.88,.48) rotate(-2deg)}
46%{transform:translateY(0) scale(.96,1.05) rotate(-3deg)}
58%{transform:translate(-10px,2px) scale(1.05,.94) rotate(-8deg)}
69%{transform:translate(9px,0) scale(.98,1.02) rotate(7deg)}
79%{transform:translate(-3px,0) scale(1.02,.98) rotate(-3deg)}
88%,100%{transform:translate(0,0) scale(1,1) rotate(0)}
}
@keyframes rpWordmark{0%,78%{opacity:0;transform:translateY(6px)}90%,100%{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.splash-mascot{animation:none}.splash-wordmark{animation:none}}

/* V0.6 storyboard motion: preserve the exact approved mascot image */
.splash-inner{width:210px}.splash-stage{height:150px;display:grid;place-items:end center;position:relative}.splash-mascot{position:absolute;bottom:0;left:50%;width:122px;margin:0;opacity:0;transform-origin:50% 92%;will-change:transform,opacity}.splash-blob{position:absolute;bottom:8px;left:50%;width:74px;height:25px;border-radius:50%;background:#35104f;transform:translateX(-50%) scale(.72,.62);transform-origin:50% 100%;opacity:0;will-change:transform,opacity}.splash-wordmark{margin-top:16px}


/* V0.7 private access gate */
.auth-gate{
  position:fixed; inset:0; z-index:12000; background:#fff;
  display:grid; place-items:center; padding:24px;
}
.auth-gate.unlocked{display:none}
.auth-card{width:min(360px,92vw);text-align:center}
.auth-mascot{width:96px;height:auto;display:block;margin:0 auto 18px}
.auth-title{font-size:24px;font-weight:760;letter-spacing:.01em;color:#35104f}
.auth-subtitle{font-size:13px;color:#777;margin:6px 0 24px}
.auth-input{
  width:100%;height:48px;border:1px solid #ddd7e2;border-radius:14px;
  padding:0 14px;font-size:16px;outline:none;background:#fff;color:#17181a;
}
.auth-input:focus{border-color:#6d4b80;box-shadow:0 0 0 3px rgba(53,16,79,.08)}
.auth-button{
  width:100%;height:48px;margin-top:12px;border:0;border-radius:14px;
  background:#35104f;color:#fff;font-size:15px;font-weight:750;
}
.auth-error{min-height:20px;margin-top:10px;font-size:13px;color:#b42318}
.splash.splash-locked{display:none}

/* V0.8 universal importer */
.importer-card{overflow:hidden}
.dropzone{border:1.5px dashed #cfc7d5;border-radius:18px;padding:28px 18px;text-align:center;cursor:pointer;background:#fcfbfd;transition:.15s ease}
.dropzone:active,.dropzone.drag{background:#f6f1f8;border-color:#6d4b80}
.dropzone h3{margin:7px 0 5px}.dropzone p{margin:4px 0}
.drop-icon{width:46px;height:46px;border-radius:15px;background:#35104f;color:#fff;display:grid;place-items:center;margin:auto;font-size:27px;line-height:1}
.file-hidden{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.import-result:empty{display:none}.import-result{margin-top:14px}
.inspect-card{border-top:1px solid #eee7f1;padding-top:14px}
.inspect-top{display:flex;justify-content:space-between;align-items:center;color:#777;font-size:13px}
.status-ok{color:#256b45;font-weight:750}
.inspect-card h3{margin:10px 0 12px;overflow-wrap:anywhere}
.meta-row{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-top:1px solid #f1edf3;font-size:13px}
.meta-row span{color:#777}.meta-row strong{text-align:right;font-weight:700}
.inspect-card details{margin-top:10px}.inspect-card summary{cursor:pointer;font-size:13px;color:#5a376c}
.preview{max-height:220px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f5f8;border-radius:12px;padding:12px;font-size:11px;line-height:1.45}
.result-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.inspect-error{background:#fff4f2;border:1px solid #ffd6d0;border-radius:14px;padding:14px;color:#7a271a}
.inspect-error p{margin:6px 0 0}
.inspect-loading{padding:10px 0}
.saved-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.saved-head h3{margin:0}
.saved-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid #f0ebf2}
.saved-item:first-child{border-top:0}.saved-main{display:flex;flex-direction:column;gap:4px;min-width:0}.saved-main strong{overflow-wrap:anywhere}
.delete-btn{border:0;background:#f3eef5;color:#6b4c79;border-radius:10px;padding:7px 10px;font-size:12px;flex:0 0 auto}
.empty-state{padding:18px 0;color:#888;text-align:center}
@media(max-width:600px){.meta-row{align-items:flex-start}.saved-head{align-items:flex-start;flex-direction:column;gap:2px}.result-actions .btn{flex:1}}

.route-box{margin-top:10px;padding:12px 14px;border-radius:14px;background:#f5eff8;display:flex;align-items:center;gap:12px}
.route-box span{color:#765f80;font-size:13px}.route-box strong{margin-right:auto}.route-btn{padding:8px 13px!important}
@media(max-width:600px){.route-box{flex-wrap:wrap}.route-box strong{width:calc(100% - 90px)}}

.doctor-summary h2{margin:7px 0 10px;font-size:24px}.doctor-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.health-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.health-grid>div{background:#f7f7f9;border:1px solid #ececf0;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:4px}.health-grid strong{font-size:22px}.health-grid span{font-size:12px;color:#777}.doctor-notice{margin-top:12px}.doctor-ok{margin-top:12px}.doctor-field{padding:13px 0;border-bottom:1px solid #eee}.doctor-field:last-child{border-bottom:0}.doctor-label{font-weight:700;margin-bottom:6px}.doctor-value{white-space:pre-wrap;line-height:1.65;max-height:240px;overflow:auto;color:#333}.doctor-value.empty{color:#999;font-style:italic}@media(max-width:700px){.health-grid{grid-template-columns:1fr}.doctor-title{align-items:flex-start}.doctor-value{max-height:180px}}
/* V0.9.2 Character Doctor: inspect → edit → export */
.doctor-score{font-size:13px;font-weight:750;color:#5a376c;background:#f5eff8;border-radius:999px;padding:7px 10px}.doctor-advice{margin-top:14px;padding:13px 15px;background:#faf8fb;border:1px solid #eee7f1;border-radius:14px}.doctor-advice h4{margin:0 0 7px}.doctor-advice ul{margin:0;padding-left:20px;color:#555;font-size:13px;line-height:1.65}.doctor-editor{margin-top:12px}.doctor-edit-field{padding:13px 0;border-top:1px solid #eee}.doctor-edit-field:first-child{border-top:0}.doctor-edit-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:7px}.doctor-edit-head label{font-weight:750}.doctor-edit-head span{font-size:12px;color:#888}.doctor-edit-field textarea{width:100%;min-height:120px;resize:vertical;border:1px solid #ddd7e2;border-radius:13px;padding:12px 13px;font:inherit;font-size:13px;line-height:1.65;color:#222;background:#fff;outline:none}.doctor-edit-field textarea:focus{border-color:#765f80;box-shadow:0 0 0 3px rgba(53,16,79,.07)}.doctor-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.doctor-save-status{min-height:20px;margin-top:9px;font-size:13px}.doctor-save-status.ok{color:#256b45;font-weight:700}@media(max-width:600px){.doctor-actions .btn{width:100%}.doctor-score{align-self:flex-start}.doctor-edit-field textarea{min-height:150px}}
.lore-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.lore-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.lore-stat{background:#f7f7f9;border:1px solid #e8e8ed;border-radius:14px;padding:14px}.lore-stat strong{font-size:22px;display:block}.lore-stat span{font-size:12px;color:#6b6b74}.lore-list{display:grid;gap:10px;margin-top:12px}.lore-entry{border:1px solid #e5e5ea;border-radius:14px;padding:14px;background:#fff}.lore-entry.off{opacity:.62}.lore-entry-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.lore-entry-title{font-weight:750}.lore-entry-meta{font-size:12px;color:#777}.lore-entry textarea,.lore-entry input{width:100%;box-sizing:border-box;border:1px solid #dcdce3;border-radius:10px;padding:10px;font:inherit;background:#fbfbfc}.lore-entry textarea{min-height:110px;resize:vertical}.lore-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.lore-field label{display:block;font-size:12px;color:#666;margin-bottom:5px}.lore-entry-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.lore-warning{background:#fff8eb;border:1px solid #f1d39c;border-radius:12px;padding:10px 12px;margin-top:10px}.lore-ok{background:#f0faf4;border:1px solid #bfe3cb;border-radius:12px;padding:10px 12px;margin-top:10px}@media(max-width:800px){.lore-stats{grid-template-columns:1fr 1fr}.lore-fields{grid-template-columns:1fr}}

/* V0.9.3.1: make embedded lorebook count an obvious working entry */
.health-grid .health-link{cursor:pointer;position:relative;border:1px solid #d8c9df;background:#faf6fc;transition:.15s ease}
.health-grid .health-link:active{transform:scale(.985);background:#f1e8f5}
.health-grid .health-link span{color:#5f3b70;font-weight:650}
/* V0.9.4: Lorebook health check + restored Mufy rescue flow */
.lore-check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:10px 0}.lore-check-grid span{background:rgba(255,255,255,.62);border-radius:9px;padding:7px 9px;font-size:12px}.lore-warning small{display:block;color:#745d36;line-height:1.5}.rescue-steps{display:grid;gap:10px;margin:14px 0}.rescue-steps>div{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid #ece8ef;border-radius:13px;background:#faf9fb}.rescue-steps>div>strong{width:28px;height:28px;border-radius:9px;background:#35104f;color:#fff;display:grid;place-items:center;flex:0 0 auto}.rescue-steps span{display:flex;flex-direction:column;gap:3px}.rescue-steps small{color:#777;line-height:1.45}@media(max-width:700px){.lore-check-grid{grid-template-columns:1fr 1fr}}
/* V0.9.5.1 Mufy login: iPad-first, clearly visible */
.mufy-login-panel{margin-top:14px;padding:20px;border:1px solid #e5dce9;border-radius:18px;background:#fbf9fc}
.mufy-login-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.mufy-login-field label{display:block;margin:0 0 9px;font-size:15px;font-weight:750;color:#29232d}
.mufy-login-field input{box-sizing:border-box;width:100%;height:58px;border:1.5px solid #cfc3d5;border-radius:14px;padding:0 16px;background:#fff;color:#17181a;font:inherit;font-size:17px;outline:none;box-shadow:0 1px 2px rgba(0,0,0,.02)}
.mufy-login-field input:focus{border-color:#5b2a72;box-shadow:0 0 0 4px rgba(53,16,79,.09)}
.mufy-password-wrap{position:relative}.mufy-password-wrap input{padding-right:72px}
.mufy-eye{position:absolute;right:9px;top:9px;height:40px;padding:0 12px;border:0;border-radius:10px;background:#f0ebf3;color:#4c2b5c;font-weight:700}
.mufy-login-btn{min-width:220px;height:52px;margin-top:18px;font-size:16px;padding:0 22px}
.mufy-login-note{margin:10px 0 0!important;font-size:12px!important;color:#817687!important}
@media(max-width:760px){.mufy-login-grid{grid-template-columns:1fr}.mufy-login-panel{padding:16px}.mufy-login-btn{width:100%}}

/* v0.9.6.1: iPad desktop-width sidebar collapse and mobile drawer */
@media(min-width:901px){.shell.menu-closed{grid-template-columns:0 minmax(0,1fr)}.shell.menu-closed>.sidebar{visibility:hidden;overflow:hidden;padding-left:0;padding-right:0;border:0}.shell.menu-open{grid-template-columns:250px minmax(0,1fr)}.shell.menu-open>.sidebar{visibility:visible}}
@media(max-width:900px){.shell.menu-closed>.sidebar{pointer-events:none}.shell.menu-open>.sidebar{pointer-events:auto}}

/* v0.9.7.2: reachable drawer close control and backdrop for iPad split-screen */
.shell{position:relative}
.sidebar{position:relative}
.sidebar-close{position:absolute;right:12px;top:12px;z-index:2;width:36px;height:36px;border:0;border-radius:11px;background:#eef0f3;color:#17181a;font-size:26px;line-height:1;cursor:pointer}
.sidebar .brand{padding-right:42px}
.sidebar-scrim{display:none}
@media(max-width:900px){
 .sidebar{position:absolute;z-index:12}
 .sidebar-scrim{position:absolute;inset:0;z-index:11;border:0;background:rgba(0,0,0,.28);cursor:pointer}
 .shell.menu-open>.sidebar-scrim{display:block}
 .shell.menu-closed>.sidebar-scrim{display:none}
}
@media(min-width:901px){.sidebar-close{display:block}}
