.character-map-layer{position:absolute;z-index:28;inset:0;overflow:hidden;pointer-events:none}.character-map{box-sizing:border-box;border:1px solid #9caeb8;border-radius:16px;background:#fffdf8;color:#263a44;box-shadow:0 16px 38px #263a4433;font:600 12px/1.5 system-ui,sans-serif;pointer-events:auto}.character-map--draft{position:absolute;inset:16px;display:flex;flex-direction:column;gap:10px;overflow:auto;padding:14px}.character-map--approved{position:absolute;display:flex;flex-direction:column;gap:10px;overflow:auto;padding:14px}.character-map__header{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #d9e1e5;padding-bottom:9px}.character-map__header strong{font-size:15px}.character-map__header span{border-radius:999px;background:#eaf1f4;padding:4px 8px;color:#31586b;font-size:10px}.character-map__header .is-stale{background:#fff0dc;color:#8a4b18}.character-map__evidence{display:grid;grid-template-columns:auto 1fr;gap:10px;border:1px solid #dec783;border-radius:12px;background:#fff8d9;padding:9px}.character-map__evidence span{font-weight:900;color:#705817}.character-map__evidence blockquote{margin:0;font-family:"Noto Serif KR","Nanum Myeongjo",serif;font-size:14px;font-weight:700}.character-map__nodes{display:flex;flex-wrap:wrap;gap:7px}.character-map__node{border:1px solid #7995a4;border-radius:999px;background:#edf4f7;padding:6px 10px;color:#294f61;font-weight:900}.character-map__form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.character-map__field{display:flex;min-width:0;flex-direction:column;gap:4px;font-size:10px;font-weight:900}.character-map__field input,.character-map__field select,.character-map__field textarea{box-sizing:border-box;width:100%;min-height:44px;border:1px solid #9fb3bd;border-radius:9px;padding:7px;background:#fff;color:#263a44;font:600 12px/1.5 system-ui,sans-serif}.character-map__field textarea{min-height:70px;resize:vertical}.character-map__confirm{display:flex;align-items:flex-start;gap:7px;min-height:44px;border-radius:10px;background:#edf2f4;padding:9px;color:#395865}.character-map__confirm input{width:20px;height:20px;flex:0 0 auto}.character-map__message{margin:0;color:#775e26}.character-map__message.is-error{color:#9a3f36}.character-map__actions{display:flex;justify-content:flex-end;gap:7px}.character-map__actions button{min-height:44px;border:1px solid #728894;border-radius:9px;padding:0 13px;background:#fff;color:#294f61;font-weight:900;cursor:pointer}.character-map__actions .is-primary{background:#315e73;color:#fff}.character-map__timeline{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}.character-map__event{display:grid;grid-template-columns:110px minmax(120px,.8fr) minmax(130px,1fr);gap:5px 10px;border-left:5px solid #668da0;border-radius:10px;background:#f2f6f7;padding:9px}.character-map__scene{color:#476777}.character-map__relation{color:#6b5123}.character-map__event blockquote{grid-column:1/-1;margin:0;border-radius:7px;background:#fff8d9;padding:6px;font-family:"Noto Serif KR","Nanum Myeongjo",serif}.character-map__event small{grid-column:1/-1;color:#53686f}.character-map__boundary{color:#53686f}
@media(max-width:700px){.character-map--draft{inset:8px;padding:10px}.character-map__evidence{grid-template-columns:1fr}.character-map__form-grid{grid-template-columns:1fr 1fr}.character-map__actions{position:sticky;bottom:0;background:#fffdf8;padding-top:7px}.character-map__actions button{flex:1}.character-map__event{grid-template-columns:1fr}.character-map__event blockquote,.character-map__event small{grid-column:auto}.character-map--approved{padding:10px}}
@media(max-width:430px){.character-map__form-grid{grid-template-columns:1fr}}
@media print{.character-map-layer{position:static;overflow:visible}.character-map{position:relative!important;inset:auto!important;width:100%!important;height:auto!important;box-shadow:none;break-inside:avoid}.character-map--draft{display:none}}
@media(forced-colors:active){.character-map,.character-map__node,.character-map__evidence,.character-map__event{border:2px solid CanvasText;background:Canvas!important}.character-map__event{border-left:6px double CanvasText}}
