* { box-sizing: border-box; } :root { --step-height: 52px; --bg-deep: #04140f; --bg-mid: #0a2e23; --bg-panel: rgba(7, 43, 33, 0.78); --bg-panel-strong: rgba(8, 37, 29, 0.88); --surface-soft: #f4f1e8; --surface-plain: #fbf8f1; --surface-tint: #eef4ef; --line-soft: rgba(129, 201, 171, 0.18); --line-strong: rgba(215, 166, 84, 0.42); --text-main: #f3f1e8; --text-soft: #bbd3c5; --text-muted: #83a293; --ink-strong: #183128; --ink-soft: #51655b; --accent: #d3a45f; --accent-strong: #f0c574; --accent-soft: rgba(211, 164, 95, 0.16); --signal-blue: #62b2ff; --shadow-deep: 0 24px 60px rgba(0, 0, 0, 0.34); } html { min-height: 100%; overflow-y: auto; } body { margin: 0; font-family: "Segoe UI", "Noto Sans KR", sans-serif; color: var(--text-main); min-height: 100vh; background: linear-gradient(rgba(120, 186, 158, 0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(120, 186, 158, 0.08) 1px, transparent 1px), radial-gradient(circle at 74% 26%, rgba(38, 114, 88, 0.38), transparent 28%), radial-gradient(circle at 20% 72%, rgba(191, 149, 82, 0.14), transparent 22%), linear-gradient(135deg, #04120d 0%, #0a241b 45%, #0f4534 100%); background-size: 40px 40px, 40px 40px, auto, auto, auto; position: relative; overflow-x: auto; overflow-y: auto; } body::before, body::after { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0; } body::before { inset: 0; background: radial-gradient(circle at 28% 24%, rgba(239, 192, 109, 0.12), transparent 18%); opacity: 1; box-shadow: none; } body::after { background: linear-gradient(90deg, rgba(0, 0, 0, 0.34), transparent 22%, transparent 78%, rgba(0, 0, 0, 0.42)), radial-gradient(circle at center, transparent 50%, rgba(0, 0, 0, 0.2) 100%); } .board { width: 100%; max-width: 100%; min-height: 100vh; height: auto; padding: 16px 12px 12px; overflow-x: auto; overflow-y: visible; position: relative; z-index: 1; } .sitemap-fab { position: fixed; left: 16px; top: 16px; z-index: 25; width: 44px; height: 44px; border-radius: 999px; border: 1px solid rgba(223, 182, 110, 0.52); background: linear-gradient(180deg, rgba(10, 55, 42, 0.96) 0%, rgba(6, 35, 28, 0.96) 100%); color: var(--accent-strong); font-size: 11px; font-weight: 900; line-height: 1; cursor: pointer; box-shadow: 0 12px 24px rgba(0, 0, 0, 0.26); } .data-io { position: fixed; left: 16px; bottom: 16px; z-index: 24; display: grid; gap: 7px; justify-items: start; } .floating-edit-btn { width: 42px; min-width: 42px; height: 42px; border: 1px solid rgba(133, 183, 160, 0.26); background: linear-gradient(180deg, rgba(10, 51, 40, 0.96) 0%, rgba(5, 33, 26, 0.96) 100%); color: var(--text-soft); border-radius: 999px; padding: 0; font-size: 11px; font-weight: 900; letter-spacing: .01em; cursor: pointer; box-shadow: 0 10px 18px rgba(0, 0, 0, 0.22); white-space: nowrap; display: grid; place-items: center; } .floating-edit-btn:hover { border-color: rgba(229, 188, 114, 0.62); background: linear-gradient(180deg, rgba(22, 72, 57, 0.98) 0%, rgba(8, 40, 31, 0.98) 100%); color: var(--accent-strong); } .floating-edit-btn.active { border-color: rgba(241, 202, 128, 0.7); background: linear-gradient(135deg, #c08a3f 0%, #f1c16f 100%); color: #11281f; box-shadow: 0 12px 24px rgba(120, 74, 17, 0.34); } .sync-status { width: 42px; height: 42px; min-height: 42px; padding: 0; border-radius: 999px; border: 1px solid rgba(133, 183, 160, 0.26); background: rgba(7, 41, 32, 0.92); color: var(--text-soft); font-size: 10px; font-weight: 800; box-shadow: 0 10px 18px rgba(0, 0, 0, 0.2); white-space: nowrap; display: grid; place-items: center; line-height: 1; } .sync-status[data-state="loading"] { border-color: rgba(98, 178, 255, 0.45); background: rgba(11, 44, 55, 0.96); color: #b4deff; } .sync-status[data-state="saving"] { border-color: rgba(240, 197, 116, 0.44); background: rgba(69, 53, 22, 0.9); color: #ffe29d; } .sync-status[data-state="ready"] { border-color: rgba(98, 201, 160, 0.44); background: rgba(7, 56, 43, 0.96); color: #bcead4; } .sync-status[data-state="cache"] { border-color: rgba(240, 197, 116, 0.44); background: rgba(74, 56, 21, 0.9); color: #ffd897; } .sync-status[data-state="error"] { border-color: rgba(236, 119, 100, 0.42); background: rgba(72, 21, 18, 0.9); color: #ffb4a9; } .data-io-btn { width: 38px; height: 38px; border: 1px solid rgba(133, 183, 160, 0.26); background: rgba(7, 41, 32, 0.94); color: var(--text-soft); border-radius: 999px; padding: 0; font-weight: 800; cursor: pointer; display: grid; place-items: center; box-shadow: 0 10px 18px rgba(0, 0, 0, 0.2); } .data-io-btn svg { width: 22px; height: 22px; stroke: currentColor; stroke-width: 2.6; fill: none; stroke-linecap: round; stroke-linejoin: round; } .data-io-btn:hover { border-color: rgba(229, 188, 114, 0.62); background: rgba(15, 61, 47, 0.96); } .data-io-btn.export { color: #ffd793; } .data-io-btn.import { color: #bfe8d6; } .data-io-input { display: none; } .board-track { width: 100%; max-width: 100%; min-width: 0; min-height: calc(100vh - 20px); margin: 0; padding-left: var(--track-side-pad, 64px); padding-right: var(--track-side-pad, 64px); display: flex; gap: 14px; align-items: flex-start; flex-wrap: nowrap; justify-content: flex-start; position: relative; z-index: 1; } .board-track.map-bar-layout { justify-content: flex-start; } #drillColumns { display: flex; gap: 14px; align-items: flex-start; } .flow-panel { width: 188px; min-width: 188px; background: linear-gradient(180deg, rgba(11, 54, 43, 0.82) 0%, rgba(7, 34, 28, 0.9) 100%); border: 1px solid rgba(132, 187, 161, 0.18); border-radius: 20px; box-shadow: var(--shadow-deep); backdrop-filter: blur(10px); box-shadow: var(--shadow-deep), inset 0 1px 0 rgba(255, 245, 222, 0.06); padding: 12px 12px 14px; height: calc(100vh - 20px); max-height: calc(100vh - 20px); overflow: auto; } .flow-panel.flow-bar-mode { --bar-panel-width: 58px; width: var(--bar-panel-width); min-width: var(--bar-panel-width); padding: 10px 8px 12px; background: linear-gradient(180deg, rgba(8, 45, 35, 0.96) 0%, rgba(4, 27, 22, 0.96) 100%); border-color: rgba(132, 187, 161, 0.18); box-shadow: inset 0 1px 0 rgba(255, 240, 214, 0.08), 0 12px 24px rgba(0, 0, 0, 0.26); position: relative; } .bar-toggle-title { cursor: pointer; user-select: none; } .bar-toggle-title:hover { color: #1d4ed8; } .bar-restore-btn { border: 1px solid #cbd5e1; background: #ffffff; color: #334155; border-radius: 12px; width: 40px; height: 40px; font-size: 24px; font-weight: 900; line-height: 1; cursor: pointer; margin: 2px auto 8px; display: grid; place-items: center; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.16); } .bar-collapse-btn { width: 26px; height: 26px; border: 1px solid #cbd5e1; border-radius: 999px; background: #ffffff; color: #334155; font-size: 18px; font-weight: 900; line-height: 1; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; flex: 0 0 auto; } .bar-restore-btn:hover { border-color: #93c5fd; background: #eff6ff; color: #1d4ed8; } .bar-collapse-btn:hover { border-color: #93c5fd; background: #eff6ff; color: #1d4ed8; } .flow-panel.flow-bar-mode .project-title, .flow-panel.flow-bar-mode .mode-btn, .flow-panel.flow-bar-mode .panel-badge, .flow-panel.flow-bar-mode .title { display: none; } .flow-panel.flow-bar-mode .panel-head, .flow-panel.flow-bar-mode .panel-title-row { display: none; } .flow-panel.flow-bar-mode .flow-list { gap: 10px; justify-items: center; position: relative; padding: 6px 0 10px; } .flow-panel.flow-bar-mode .flow-list::before { content: ""; position: absolute; left: 50%; top: 8px; bottom: 10px; width: 1px; transform: translateX(-50%); background: repeating-linear-gradient( to bottom, #d8e2f1 0 4px, transparent 4px 8px ); } .flow-panel.flow-bar-mode .step-btn { width: 42px; min-width: 42px; height: 42px; border-radius: 12px; padding: 0; border: 1px solid #cbd5e1; background: #ffffff; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18); font-size: 0; color: transparent; overflow: visible; justify-content: center; text-align: center; position: relative; z-index: 1; transition: transform 0.14s ease, box-shadow 0.14s ease, border-color 0.14s ease, background 0.14s ease; } .flow-panel.flow-bar-mode .step-btn.with-meta { display: inline-flex; align-items: center; justify-content: center; gap: 0; } .flow-panel.flow-bar-mode .step-main, .flow-panel.flow-bar-mode .step-meta { display: none; } .flow-panel.flow-bar-mode .step-btn::before { content: ""; width: 12px; height: 12px; border-radius: 999px; background: rgba(8, 39, 31, 0.94); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.14); } .flow-panel.flow-bar-mode .step-btn:hover { transform: translateY(-1px); border-color: rgba(229, 188, 114, 0.58); box-shadow: 0 12px 22px rgba(0, 0, 0, 0.24); } .flow-panel.flow-bar-mode .step-btn.active { background: linear-gradient(135deg, #b8833d 0%, #efc06d 100%); border-color: rgba(241, 202, 128, 0.7); box-shadow: 0 12px 24px rgba(120, 74, 17, 0.34); } .flow-panel.flow-bar-mode .step-btn.active::before { background: rgba(8, 39, 31, 0.94); } .flow-panel.flow-bar-mode .down-arrow { width: 1px; height: 14px; margin: 0 auto; background: transparent; color: transparent; font-size: 0; border-radius: 999px; position: relative; z-index: 1; } .flow-panel.flow-bar-mode .down-arrow.broken { background: transparent; } .flow-panel.flow-bar-mode .down-arrow.broken::after { content: ""; position: absolute; left: calc(50% + 6px); top: 50%; transform: translate(0, -50%); width: 0; height: 0; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-right: 8px solid #d9b261; } .flow-panel.flow-bar-mode .link-reason, .flow-panel.flow-bar-mode .insert-row, .flow-panel.flow-bar-mode .step-actions { display: none; } .flow-panel.flow-bar-mode .common-head, .flow-panel.flow-bar-mode .common-title, .flow-panel.flow-bar-mode .common-add-btn { display: none; } .flow-panel.flow-bar-mode .common-section { border-top: 1px solid rgba(132, 187, 161, 0.16); margin-top: 10px; padding-top: 10px; gap: 12px; justify-items: center; } .flow-panel.flow-bar-mode .common-list { gap: 12px; justify-items: center; } .flow-panel.flow-bar-mode .common-row { grid-template-columns: 1fr; gap: 0; justify-items: center; } .flow-panel.flow-bar-mode .common-btn { width: 42px; min-width: 42px; height: 42px; border-radius: 12px; padding: 0; border: 1px solid #cbd5e1; background: #ffffff; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18); font-size: 0; color: transparent; overflow: visible; justify-content: center; text-align: center; position: relative; z-index: 1; transition: transform 0.14s ease, box-shadow 0.14s ease, border-color 0.14s ease, background 0.14s ease; } .flow-panel.flow-bar-mode .common-btn::before { content: ""; width: 12px; height: 12px; border-radius: 999px; background: rgba(8, 39, 31, 0.94); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.14); } .flow-panel.flow-bar-mode .common-btn:hover { transform: translateY(-1px); border-color: rgba(229, 188, 114, 0.58); box-shadow: 0 12px 22px rgba(0, 0, 0, 0.24); } .flow-panel.flow-bar-mode .common-btn.active { background: linear-gradient(135deg, #b8833d 0%, #efc06d 100%); border-color: rgba(241, 202, 128, 0.7); box-shadow: 0 12px 24px rgba(120, 74, 17, 0.34); } .flow-panel.flow-bar-mode .common-btn.active::before { background: rgba(8, 39, 31, 0.94); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.14); } .bar-step-tooltip { position: fixed; left: 0; top: 0; transform: translateY(-50%); background: rgba(5, 24, 19, 0.94); color: #f5efe1; border-radius: 8px; padding: 5px 8px; font-size: 12px; font-weight: 700; line-height: 1.2; white-space: nowrap; letter-spacing: 0; pointer-events: none; z-index: 9999; opacity: 0; visibility: hidden; transition: opacity 0.12s ease, visibility 0.12s ease; } .bar-step-tooltip.show { opacity: 1; visibility: visible; } #mainPanel { display: block; overflow: auto; } #mainFlow { overflow: visible; min-height: auto; max-height: none; padding-right: 2px; } .common-section { border-top: 1px solid rgba(132, 187, 161, 0.16); padding-top: 10px; margin-top: 10px; display: grid; gap: 8px; min-height: auto; overflow: visible; } .common-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .common-title { margin: 0; font-size: 11px; color: var(--accent-strong); font-weight: 900; letter-spacing: .03em; text-transform: uppercase; } .project-title { margin: 0 0 8px; font-size: 11px; color: var(--accent-strong); font-weight: 900; letter-spacing: .03em; text-transform: uppercase; } .common-add-btn { border: 1px solid rgba(224, 181, 108, 0.45); background: rgba(79, 58, 24, 0.52); color: #ffe19f; border-radius: 7px; padding: 3px 8px; font-size: 10px; font-weight: 800; cursor: pointer; } .common-list { display: grid; gap: 6px; } .common-row { display: grid; grid-template-columns: 1fr; gap: 4px; align-items: stretch; } .common-btn { border: 1px solid rgba(184, 195, 185, 0.9); background: var(--surface-soft); border-radius: 10px; padding: 0 10px; text-align: left; font-size: 13px; font-weight: 800; color: var(--ink-strong); cursor: pointer; width: 100%; height: var(--step-height); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; transition: all .15s ease; } .common-btn:hover { border-color: rgba(229, 188, 114, 0.58); } .common-btn.active { border-color: rgba(241, 202, 128, 0.7); background: linear-gradient(135deg, #b8833d 0%, #efc06d 100%); box-shadow: 0 12px 24px rgba(120, 74, 17, 0.32); color: #10241c; } .common-empty { border: 1px dashed rgba(132, 187, 161, 0.22); border-radius: 8px; padding: 8px; font-size: 11px; color: var(--text-muted); font-weight: 700; background: rgba(255, 255, 255, 0.04); text-align: center; } .title { margin: 0 0 10px; font-size: 13px; font-weight: 900; color: var(--accent-strong); letter-spacing: .02em; text-transform: uppercase; } .panel-title-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; gap: 8px; } .panel-badge { border-radius: 999px; background: rgba(208, 160, 88, 0.16); color: #ffe0a3; border: 1px solid rgba(224, 181, 108, 0.32); padding: 4px 9px; font-size: 11px; font-weight: 900; letter-spacing: .02em; line-height: 1; white-space: nowrap; } .panel-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; } .panel-head .title { margin: 0; } .mode-btn { border: 1px solid rgba(132, 187, 161, 0.2); background: rgba(255, 255, 255, 0.04); color: var(--text-soft); border-radius: 7px; padding: 5px 8px; font-size: 11px; font-weight: 800; cursor: pointer; white-space: nowrap; } .mode-btn.active { background: linear-gradient(135deg, #b8833d 0%, #efc06d 100%); color: #10241c; border-color: rgba(241, 202, 128, 0.7); } .panel-tools { display: flex; gap: 6px; align-items: center; } .add-end-btn { border: 1px solid rgba(224, 181, 108, 0.45); background: rgba(79, 58, 24, 0.52); color: #ffe19f; border-radius: 7px; padding: 4px 8px; font-size: 11px; font-weight: 800; cursor: pointer; } .flow-list { display: grid; gap: 6px; align-content: start; } .step-row { display: grid; grid-template-columns: 1fr; gap: 4px; align-items: stretch; } .step-actions { display: flex; gap: 4px; align-items: center; justify-content: flex-end; width: 100%; } .step-row > .step-actions, .common-row > .step-actions { grid-column: 1; } .step-edit-meta { width: 100%; font-size: 10px; font-weight: 700; color: var(--text-muted); line-height: 1.25; white-space: pre-line; padding: 0 2px; } .icon-btn { border: 1px solid rgba(132, 187, 161, 0.2); background: rgba(255, 255, 255, 0.04); color: var(--text-soft); border-radius: 6px; width: 26px; height: 26px; font-size: 13px; font-weight: 900; cursor: pointer; line-height: 1; display: grid; place-items: center; } .icon-btn.delete { color: #ffb4a9; border-color: rgba(236, 119, 100, 0.42); background: rgba(72, 21, 18, 0.9); } .step-btn { border: 1px solid rgba(184, 195, 185, 0.92); background: linear-gradient(180deg, var(--surface-plain) 0%, var(--surface-soft) 100%); border-radius: 11px; padding: 0 10px; text-align: left; font-size: 14px; font-weight: 800; color: var(--ink-strong); cursor: pointer; transition: all .15s ease; width: 100%; height: var(--step-height); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; } .step-btn:hover { border-color: rgba(229, 188, 114, 0.58); } .step-btn.active { border-color: rgba(241, 202, 128, 0.7); background: linear-gradient(135deg, #b8833d 0%, #efc06d 100%); box-shadow: 0 12px 24px rgba(120, 74, 17, 0.32); color: #10241c; } .step-btn.with-meta { white-space: normal; display: grid; align-content: center; gap: 1px; height: var(--step-height); } .step-main { font-size: 14px; font-weight: 800; color: var(--ink-strong); line-height: 1.2; } .step-btn.active .step-main { color: #10241c; } .step-meta { font-size: 10px; font-weight: 700; color: var(--ink-soft); line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .step-btn.active .step-meta { color: rgba(16, 36, 28, 0.72); } .down-arrow { text-align: center; color: rgba(132, 187, 161, 0.42); font-size: 18px; line-height: 1; user-select: none; } .insert-row { text-align: center; display: grid; justify-items: center; gap: 4px; } .insert-btn { border: 1px dashed rgba(229, 188, 114, 0.56); background: rgba(79, 58, 24, 0.38); color: #ffe19f; border-radius: 999px; width: 26px; height: 26px; font-size: 14px; font-weight: 900; cursor: pointer; line-height: 1; } .link-edit-btn { border: 1px solid rgba(239, 192, 109, 0.62); background: rgba(79, 58, 24, 0.62); color: #ffe09b; border-radius: 999px; padding: 2px 7px; font-size: 10px; font-weight: 800; cursor: pointer; line-height: 1.2; white-space: nowrap; } .link-clear-btn { border: 1px solid rgba(236, 119, 100, 0.42); background: rgba(72, 21, 18, 0.9); color: #ffb4a9; border-radius: 999px; padding: 2px 7px; font-size: 10px; font-weight: 800; cursor: pointer; line-height: 1.2; white-space: nowrap; } .down-arrow.broken { color: #ffd18a; font-weight: 900; } .link-reason { width: fit-content; max-width: 170px; border: 1px solid rgba(247, 214, 143, 0.92); background: linear-gradient(180deg, #f5d48d 0%, #e2b255 100%); color: #3f2d08; border-radius: 999px; padding: 3px 10px; font-size: 9px; font-weight: 900; line-height: 1.2; text-align: center; word-break: keep-all; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; justify-self: center; box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18), inset 0 1px 0 rgba(255, 248, 226, 0.7); letter-spacing: .01em; } .empty { border: 1px dashed rgba(132, 187, 161, 0.22); border-radius: 10px; padding: 12px; font-size: 12px; color: var(--text-muted); font-weight: 700; background: rgba(255, 255, 255, 0.04); line-height: 1.4; } .editor-panel { --viewer-note-font-size: 18px; --viewer-note-line-height: 1.35; display: none; width: 1396px; min-width: 1396px; max-width: 1396px; flex: 0 0 1396px; height: calc(100vh - 20px); max-height: calc(100vh - 20px); background: linear-gradient(180deg, rgba(10, 52, 41, 0.88) 0%, rgba(7, 34, 28, 0.95) 100%); border: 1px solid rgba(132, 187, 161, 0.18); border-radius: 20px; box-shadow: var(--shadow-deep); box-shadow: var(--shadow-deep), inset 0 1px 0 rgba(255, 245, 222, 0.06); grid-template-rows: auto 1fr; overflow: hidden; overscroll-behavior: none; } .board-track.map-bar-layout .editor-panel { --viewer-note-font-size: 18px; --viewer-note-line-height: 1.35; } .board-track.map-bar-layout .editor-title { font-size: 18px; } .board-track.map-bar-layout .editor-viewer-title { font-size: var(--viewer-note-font-size); } .board-track.map-bar-layout .preview { border-width: 2px; padding: 0; } .board-track.map-bar-layout .preview img { width: 100%; height: 100%; max-width: 100%; max-height: 100%; } .editor-panel.open { display: grid; } .editor-panel.viewer-mode .uploader { display: none; } .editor-input-only {} .editor-panel .editor-view-only { display: none !important; } .editor-panel.viewer-mode .editor-input-only { display: none !important; } .editor-panel.viewer-mode .editor-view-only { display: block !important; } .editor-panel.viewer-mode .path-input, .editor-panel.viewer-mode .note-input, .editor-panel.viewer-mode .mini-input { background: rgba(255, 255, 255, 0.05); color: var(--text-soft); border-color: rgba(132, 187, 161, 0.16); box-shadow: none; } .editor-panel.viewer-mode .path-input:focus, .editor-panel.viewer-mode .note-input:focus, .editor-panel.viewer-mode .mini-input:focus { border-color: rgba(132, 187, 161, 0.16); box-shadow: none; } .editor-head { padding: 16px 16px 14px; border-bottom: 1px solid rgba(132, 187, 161, 0.16); display: flex; align-items: center; justify-content: space-between; gap: 10px; background: rgba(8, 37, 29, 0.92); flex-wrap: nowrap; } .editor-head-info { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: 6px; } .editor-panel.viewer-mode .editor-head { align-items: flex-start; padding: 18px 18px 16px; } .editor-head-path { display: flex; align-items: center; gap: 8px; flex: 0 0 630px; min-width: 420px; } .editor-head-path .label { margin: 0; white-space: nowrap; } .editor-head-path .path-wrap { flex: 1 1 auto; } .editor-head-path .path-input { padding: 8px 10px; height: 34px; } .editor-title { margin: 0; font-size: 17px; font-weight: 900; color: var(--text-main); line-height: 1.2; } .editor-sub { margin: 4px 0 0; font-size: 11px; font-weight: 700; color: var(--text-muted); } .editor-viewer-summary { display: flex; align-items: center; justify-content: space-between; gap: 40px; flex-wrap: nowrap; width: 100%; } .editor-viewer-title { margin: 0; flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; font-size: var(--viewer-note-font-size); line-height: var(--viewer-note-line-height); font-weight: 800; color: var(--accent-strong); word-break: keep-all; } .viewer-title-line { position: relative; display: block; width: 100%; padding-left: 22px; } .viewer-title-line::before { content: ""; position: absolute; left: 0; top: 0.55em; transform: translateY(-50%); } .viewer-title-line.is-primary::before { width: 14px; height: 14px; border-radius: 3px; background: linear-gradient(135deg, #f0c86f 0%, #c9973c 100%); box-shadow: 0 0 0 1px rgba(255, 236, 186, 0.22), 0 4px 10px rgba(24, 10, 0, 0.18); top: 50%; transform: translateY(-50%); } .viewer-title-line.is-continuation { padding-left: 0; color: inherit; font-size: inherit; font-weight: inherit; } .viewer-title-line.is-continuation::before { content: none; } .editor-viewer-meta { display: flex; flex: 0 0 auto; flex-wrap: nowrap; align-items: center; justify-content: flex-end; gap: 0; margin-top: 13px; margin-left: auto; max-width: none; white-space: nowrap; } .editor-viewer-chip { display: inline-flex; align-items: center; padding: 0; color: var(--text-soft); font-size: 12px; font-weight: 500; white-space: nowrap; } .editor-viewer-chip + .editor-viewer-chip { position: relative; margin-left: 10px; padding-left: 11px; } .editor-viewer-chip + .editor-viewer-chip::before { content: ""; position: absolute; left: 0; top: 50%; width: 1px; height: 12px; background: rgba(132, 187, 161, 0.24); transform: translateY(-50%); } .editor-viewer-chip.is-empty { display: none; } .editor-close { border: 1px solid rgba(132, 187, 161, 0.18); background: rgba(255, 255, 255, 0.04); color: var(--text-soft); width: 34px; height: 34px; border-radius: 999px; font-weight: 900; cursor: pointer; line-height: 1; } .editor-head-actions { display: flex; align-items: center; gap: 4px; flex: 0 0 auto; } .ci-logo { display: block; width: auto; height: 30px; max-width: 132px; object-fit: contain; flex: 0 0 auto; } .editor-ci-logo { margin: 0; } .editor-panel.viewer-mode .editor-ci-logo, .editor-panel.viewer-mode .editor-close { display: none; } .editor-panel.viewer-mode .editor-body { display: flex; flex-direction: column; min-height: 0; } .editor-panel.viewer-mode .flow-info-card.open { margin-top: 17px; } .editor-panel.viewer-mode .flow-info-card.open .viewer-mini-grid { margin-top: 13px; } .editor-panel.viewer-mode .flow-info-card.open + .section-divider { margin-top: 15px; } .editor-panel.viewer-mode .flow-info-card.open + .section-divider + .screen-info-section { margin-top: 13px; } .editor-body { padding: 14px 16px 16px; overflow: auto; display: grid; align-content: start; gap: 12px; background: linear-gradient(180deg, #f7f4ec 0%, #eef4ef 100%); min-height: 0; overscroll-behavior: none; } .editor-card { background: transparent; border: 0; border-radius: 0; padding: 0; } .image-card { --preview-ratio: var(--dynamic-preview-ratio, 2); min-height: 0; display: grid; grid-template-rows: auto auto auto auto; gap: 10px; align-content: start; overscroll-behavior: none; } .image-card > .label-row, .image-card > .image-nav, .image-card > .uploader { display: flex; gap: 8px; } .image-card > .image-nav { align-items: center; justify-content: center; flex-wrap: nowrap; } .image-note-field { display: grid; gap: 4px; align-content: start; } .label { margin: 0 0 4px; font-size: 10px; color: var(--accent-strong); font-weight: 900; letter-spacing: .03em; text-transform: uppercase; } .label-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 0; } .label-row .label { margin: 0; white-space: nowrap; } .uploader { display: flex; gap: 6px; align-items: center; margin-bottom: 0; width: 100%; } .file-input-hidden { display: none; } .file-btn { border: 1px solid #564cf5; background: linear-gradient(135deg, #3f55f2 0%, #6b3cf1 100%); color: #fff; border-radius: 10px; padding: 10px 14px; font-size: 13px; font-weight: 800; cursor: pointer; line-height: 1.2; white-space: nowrap; flex: 1; text-align: center; } .file-status { font-size: 10px; font-weight: 700; color: #475569; white-space: nowrap; display: none; } .path-wrap { margin-bottom: 0; } .path-input { width: 100%; border: 1px solid #cbd5e1; border-radius: 9px; padding: 10px 12px; font-size: 12px; outline: none; background: #fff; } .path-input:focus { border-color: #3b82f6; box-shadow: 0 0 0 2px #dbeafe; } .viewer-value, .viewer-meta-value { border: 1px solid #dbe5f2; border-radius: 12px; background: #ffffff; color: #1e293b; font-size: 13px; line-height: 1.6; font-weight: 700; } .viewer-value { min-height: 44px; padding: 12px 14px; white-space: pre-wrap; word-break: break-word; box-shadow: inset 0 1px 0 rgba(255,255,255,0.7); } .viewer-value.is-empty, .viewer-meta-value.is-empty { color: #94a3b8; font-weight: 600; } .viewer-mini-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; } .editor-panel.viewer-mode .viewer-mini-grid { display: grid !important; } .viewer-meta-card { display: grid; gap: 4px; align-content: start; } .viewer-meta-value { min-height: 42px; padding: 10px 12px; display: flex; align-items: center; } .editor-panel.viewer-mode .step-info-section { display: none; } .editor-panel.viewer-mode .screen-info-section .section-title, .editor-panel.viewer-mode .screen-info-section .path-card > .label, .editor-panel.viewer-mode .screen-info-section .image-note-card > .label, .editor-panel.viewer-mode .screen-info-section .image-card > .label-row > .label { display: none; } .editor-panel.viewer-mode .screen-info-section { display: grid; grid-template-rows: auto auto auto; flex: 0 0 auto; min-height: 0; gap: 2px; } .editor-panel.viewer-mode .screen-info-section .path-card { margin-top: -2px; } .editor-panel.viewer-mode #editorPathView { border: 0; border-radius: 0; background: transparent; box-shadow: none; min-height: 1.35em; padding: 0; color: #475569; font-size: 12px; line-height: 1.35; font-weight: 500; text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .editor-panel.viewer-mode #editorNoteView, .editor-panel.viewer-mode #editorImageNoteView { font-family: "Segoe UI", "Noto Sans KR", sans-serif !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; min-height: 2.2em !important; max-height: 2.2em !important; padding: 0 !important; color: #22483a !important; font-size: var(--viewer-note-font-size) !important; line-height: var(--viewer-note-line-height) !important; font-weight: 800 !important; letter-spacing: 0 !important; text-align: left !important; white-space: normal !important; word-break: break-word !important; overflow: hidden !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; } .editor-panel.viewer-mode #editorImageNoteView { position: relative; padding-left: 18px !important; } .editor-panel.viewer-mode #editorImageNoteView:not(.is-empty)::before { content: ""; position: absolute; left: 0; top: calc(var(--viewer-note-line-height) * 0.5em); width: 7px; height: 7px; border-radius: 999px; background: #2d6758; box-shadow: 0 0 0 2px rgba(45, 103, 88, 0.12); transform: translateY(-50%); } .editor-panel.viewer-mode .screen-info-section .image-card { height: auto; min-height: 0; grid-template-rows: auto auto; align-content: start; margin-top: 0; gap: 4px; } .editor-panel.viewer-mode .screen-info-section .preview { aspect-ratio: auto; height: clamp(450px, 70vh, 828px); min-height: 450px; max-height: 828px; } .editor-panel.viewer-mode .screen-info-section .image-nav { margin-top: 10px; margin-bottom: 16px; min-height: 34px; display: flex !important; visibility: visible !important; opacity: 1 !important; } .clear-btn { border: 1px solid #cfd7d0; border-radius: 10px; background: #f5f1e8; color: var(--ink-strong); font-size: 13px; font-weight: 800; padding: 10px 14px; cursor: pointer; white-space: nowrap; } .preview { border: 1px solid #d7ddd6; border-radius: 12px; background: #fcfaf5; width: 100%; aspect-ratio: var(--preview-ratio); display: grid; place-items: center; overflow: hidden; flex-shrink: 0; overscroll-behavior: none; } .image-nav { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 2px; } .nav-btn { border: 1px solid #cfd7d0; background: #fffdf8; color: var(--ink-strong); border-radius: 9px; padding: 8px 10px; font-size: 11px; font-weight: 800; cursor: pointer; } .nav-btn:disabled { opacity: 0.45; cursor: default; } .page-info { min-width: 54px; text-align: center; font-size: 11px; font-weight: 800; color: var(--ink-soft); } .editor-panel *::-webkit-scrollbar { width: 0; height: 0; } .image-modal { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.72); display: none; align-items: center; justify-content: center; z-index: 80; padding: 24px; } .image-modal.open { display: flex; } .image-modal-inner { position: relative; width: min(92vw, 1600px); height: min(90vh, 980px); background: #f6f2ea; border: 1px solid #cfd7d0; border-radius: 12px; overflow: hidden; display: grid; place-items: center; } .image-modal-nav { position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%); display: flex; align-items: center; gap: 8px; z-index: 2; background: rgba(15, 23, 42, 0.55); border: 1px solid rgba(148, 163, 184, 0.35); border-radius: 999px; padding: 6px 8px; } .image-modal-note { position: absolute; left: 50%; bottom: 58px; transform: translateX(-50%); max-width: min(84vw, 1200px); z-index: 2; background: rgba(15, 23, 42, 0.62); border: 1px solid rgba(148, 163, 184, 0.35); border-radius: 12px; color: #f7f3e8; font-size: 13px; font-weight: 700; line-height: 1.35; padding: 8px 12px; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: none; } .image-modal-note.show { display: block; } .image-modal-btn { border: 1px solid #64748b; background: rgba(15, 23, 42, 0.6); color: #e2e8f0; border-radius: 999px; padding: 5px 10px; font-size: 12px; font-weight: 800; cursor: pointer; line-height: 1.1; } .image-modal-btn:disabled { opacity: 0.4; cursor: default; } .image-modal-page { min-width: 56px; text-align: center; color: #e2e8f0; font-size: 12px; font-weight: 800; } .image-modal img { width: 100%; height: 100%; object-fit: contain; background: #f6f2ea; } .image-modal-close { position: absolute; top: 10px; right: 10px; border: 1px solid #475569; background: rgba(15, 23, 42, 0.75); color: #fff; width: 32px; height: 32px; border-radius: 999px; font-size: 18px; font-weight: 900; cursor: pointer; line-height: 1; } .sitemap-modal { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.45); display: none; align-items: center; justify-content: center; z-index: 70; padding: 18px; } .sitemap-modal.open { display: flex; } .sitemap-modal-inner { width: min(99.4vw, 1720px); height: min(95vh, 1180px); background: #ffffff; border: 1px solid #dbe5f2; border-radius: 28px; box-shadow: 0 28px 60px rgba(15, 23, 42, 0.22); overflow: hidden; display: grid; grid-template-rows: auto 1fr; } .sitemap-modal-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "title tools" "legend legend"; align-items: start; column-gap: 20px; row-gap: 14px; padding: 32px 40px 26px; border-bottom: 1px solid #dbe5f2; background: #ffffff; } .sitemap-modal-head > div:first-child { grid-area: title; min-width: 0; } .sitemap-modal-title { margin: 0; font-size: 34px; font-weight: 900; color: #132949; letter-spacing: .01em; text-transform: none; } .sitemap-modal-sub { margin: 6px 0 0; font-size: 15px; font-weight: 700; color: #6f819d; } .sitemap-close-btn { border: 1px solid #dbe5f2; background: #f3f7fc; color: #5f738f; width: 40px; height: 40px; border-radius: 999px; font-size: 24px; font-weight: 900; cursor: pointer; line-height: 1; flex: 0 0 auto; } .sitemap-toolbar { grid-area: tools; display: flex; gap: 14px; align-items: center; flex-wrap: nowrap; margin-top: 0; align-self: start; } .sitemap-ci-logo { height: 28px; max-width: 124px; margin-left: 4px; } .sm-select { border: 1px solid #ced9e8; background: #fff; color: #0f172a; border-radius: 12px; padding: 11px 14px; font-size: 15px; font-weight: 700; min-width: 220px; } .sm-legend { grid-area: legend; margin-top: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 10px 12px; } .sm-legend-item { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border: 1px solid #dbe5f2; border-radius: 999px; background: #fff; font-size: 13px; font-weight: 700; color: #334155; line-height: 1; } .sm-legend-swatch { width: 12px; height: 12px; border-radius: 999px; border: 1px solid #cbd5e1; flex: 0 0 auto; } .sitemap-full { display: grid; gap: 0; align-content: start; font-size: 15px; color: #0f172a; font-weight: 800; overflow-y: auto; overflow-x: hidden; background: #ffffff; padding: 18px 40px 32px; } .sm-section-title { margin: 0; padding: 16px 0 10px; font-size: 13px; font-weight: 900; color: #60738f; letter-spacing: .03em; text-transform: uppercase; } .sm-row { display: flex; align-items: flex-start; gap: 24px; flex-wrap: nowrap; min-width: 100%; padding: 18px 0; border-bottom: 1px solid #e2e8f0; } .sm-main { min-width: 156px; font-weight: 900; color: #0f2343; font-size: 21px; line-height: 1.25; padding-top: 3px; } .sm-chain { display: flex; align-items: center; gap: 0; flex-wrap: nowrap; min-width: 0; flex: 1 1 auto; } .sm-arrow { position: relative; display: inline-block; width: 34px; height: 2px; margin: 0; background: #4b5563; font-size: 0; line-height: 0; flex: 0 0 auto; } .sm-arrow::after { content: ""; position: absolute; right: -1px; top: -4px; width: 0; height: 0; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 8px solid #4b5563; } .sm-link-wrap { display: inline-flex; align-items: center; gap: 0; min-width: 34px; flex: 0 0 auto; justify-content: stretch; } .sm-link-arrow-frag { color: #d97706; font-size: 0; font-weight: 800; letter-spacing: .01em; line-height: 0; flex: 1 1 12px; min-width: 12px; height: 0; border-top: 2px dashed #f59e0b; display: inline-block; } .sm-arrow.broken { color: #d97706; width: 34px; height: 2px; margin: 0; background: repeating-linear-gradient(90deg, #f59e0b 0 5px, transparent 5px 8px); font-size: 0; font-weight: 900; line-height: 0; } .sm-arrow.broken::after { display: block; border-left-color: #f59e0b; } .sm-chip { border: 1px solid #d2ddeb; border-radius: 16px; width: 108px; min-width: 108px; min-height: 44px; padding: 6px 8px; background: #f8fbff; font-size: 13px; font-weight: 800; color: #3b5b80; line-height: 1.25; white-space: normal; word-break: keep-all; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; text-align: center; } .sm-chip:hover { box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.16) inset; } .sm-chip.match { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.18) inset; } .sm-chip.system-colored { background: var(--sys-bg, #f8fbff); border-color: var(--sys-border, #d2ddeb); color: var(--sys-text, #1f2937); } .sm-chip.multi-system { background: linear-gradient(135deg, var(--sys-bg-a, #eef2ff) 0 49.5%, var(--sys-bg-b, #ecfeff) 50% 100%); border-color: var(--sys-border-a, #b6c6e0); color: #1f2937; box-shadow: inset -1px -1px 0 0 var(--sys-border-b, #b6c6e0); } .sm-chip.no-system { background: #e5e7eb; border-color: #cbd5e1; color: #6b7280; } .sm-chip.dim { opacity: 0.14; filter: grayscale(0.2); } .sm-link-reason { border: 0; background: #fffbeb; color: #b45309; border-radius: 12px; padding: 2px 5px; font-size: 10px; font-weight: 700; line-height: 1.2; max-width: 86px; white-space: normal; overflow: visible; text-overflow: clip; text-align: center; word-break: keep-all; flex: 0 1 auto; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .sm-link-wrap.manual { gap: 0; min-width: 0; } .sm-link-wrap.manual .sm-link-arrow-frag:first-child { margin-right: 0; } .sm-link-wrap.manual .sm-link-arrow-frag:last-child { position: relative; margin-left: 0; } .sm-link-wrap.manual .sm-link-arrow-frag:last-child::after { content: ""; position: absolute; right: -2px; top: 50%; transform: translateY(-50%); width: 0; height: 0; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 8px solid #f59e0b; } .sm-link-wrap:not(.manual) .sm-arrow { width: 100%; flex: 1 1 auto; } .sm-shared-box { display: inline-flex; align-items: center; gap: 0; flex-wrap: nowrap; border: 1px dashed #f97316; border-radius: 12px; padding: 6px 8px; background: #fff7ed; } .sm-arrow.dim, .sm-main.dim { opacity: 0.14; } .preview img { width: 100%; height: 100%; max-width: 100%; max-height: 100%; object-fit: contain; object-position: center center; display: block; background: transparent; } .note-card { display: block; } .editor-section { display: grid; gap: 12px; align-content: start; } .section-title { margin: 0; font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: #295240; } .flow-info-card { display: none; } .flow-info-card.open { display: grid; gap: 6px; align-content: start; margin-top: 4px; } .section-divider { display: block; height: 1px; border-top: 1px solid #dbe5f2; margin: 2px 0; } .mini-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; } .mini-label { margin: 0 0 4px; font-size: 10px; color: #587064; font-weight: 900; letter-spacing: .03em; text-transform: uppercase; } .mini-input { width: 100%; border: 1px solid #cbd5e1; border-radius: 9px; padding: 10px 12px; font-size: 12px; outline: none; background: #fffdf8; } .mini-input:focus { border-color: #3b82f6; box-shadow: 0 0 0 2px #dbeafe; } .preview-empty { margin: 0; padding: 8px; color: #6b7f76; font-size: 11px; font-weight: 700; text-align: center; line-height: 1.35; } .note-input { width: 100%; border: 1px solid #cbd5e1; border-radius: 10px; padding: 10px 12px; font-size: 12px; height: 42px; outline: none; background: #fff; } .note-input:focus { border-color: #3b82f6; box-shadow: 0 0 0 2px #dbeafe; } @media (max-width: 1000px) { .board-track { padding-left: var(--track-side-pad, 15px); padding-right: var(--track-side-pad, 15px); } .sitemap-fab { left: 10px; top: 10px; width: 40px; height: 40px; font-size: 10px; } .data-io { left: 10px; bottom: 10px; } .data-io-btn { width: 34px; height: 34px; font-size: 14px; } .floating-edit-btn { width: 36px; min-width: 36px; height: 36px; padding: 0; font-size: 10px; } .flow-panel { width: 165px; min-width: 165px; } .flow-panel.flow-bar-mode { width: var(--bar-panel-width, 58px); min-width: var(--bar-panel-width, 58px); } .step-btn { font-size: 14px; } .editor-panel { width: 900px; min-width: 900px; max-width: 900px; flex: 0 0 900px; } .board-track.map-bar-layout .editor-panel { } .mini-grid { grid-template-columns: 1fr; } .viewer-mini-grid { grid-template-columns: 1fr; } .editor-viewer-summary { flex-direction: column; align-items: flex-start; } .editor-viewer-meta { max-width: 100%; justify-content: flex-start; margin-left: 0; white-space: normal; } .preview { min-height: 240px; } .sitemap-modal-inner { width: min(98vw, 1000px); height: 92vh; } .editor-head-path { flex: 1 1 auto; min-width: 0; } .ci-logo { height: 26px; max-width: 108px; } .sitemap-modal-head { padding: 18px 18px 14px; } .sitemap-modal-title { font-size: 22px; } .sitemap-modal-sub { font-size: 14px; } .sm-select { min-width: 180px; font-size: 14px; } .sitemap-full { padding: 10px 18px 16px; } .sm-main { min-width: 118px; font-size: 18px; padding-top: 2px; } .sm-chain { gap: 0; } .sm-chip { width: 96px; min-width: 96px; min-height: 40px; font-size: 13px; padding: 6px 8px; } .sm-link-reason { max-width: 72px; font-size: 10px; padding: 2px 4px; } .sm-link-arrow-frag { min-width: 8px; } .sm-arrow, .sm-arrow.broken, .sm-link-wrap { min-width: 28px; width: 28px; } .sm-link-wrap.manual { min-width: 0; } }