:root{font-family:system-ui,"Malgun Gothic",sans-serif;color:#172c3d;background:#f5f6f8;line-height:1.6}*{box-sizing:border-box}body{margin:0}header{padding:1rem 4vw;display:flex;align-items:center;gap:1.5rem;background:#fff;border-bottom:1px solid #d4dde2;flex-wrap:wrap}header a{font-size:1.35rem;color:#284d5a;text-decoration:none;font-weight:750}#identity{margin-left:auto;font-size:.9rem}main{max-width:1200px;margin:auto;padding:1.5rem}.intro{max-width:780px;margin-bottom:2rem}.eyebrow{color:#3b6877;font-weight:700}h1{font-size:clamp(1.5rem,3vw,2.3rem);line-height:1.3}h2{font-size:1.2rem}.layout{display:grid;grid-template-columns:220px 1fr;gap:1.5rem}aside nav{display:grid;gap:.6rem}.panel,form{background:white;border:1px solid #dce2e7;border-radius:.7rem;padding:1.3rem;margin-bottom:1rem}form form{padding:0;border:0}label{display:block;font-weight:600;margin:.6rem 0}[hidden]{display:none}input,textarea,select,button{font:inherit}input:not([type=checkbox]),textarea,select{display:block;width:100%;border:1px solid #a6b5bf;border-radius:.3rem;padding:.6rem;background:#fff;color:#172c3d}textarea{min-height:5rem;resize:vertical}button{border:1px solid #597787;border-radius:.4rem;background:#284d5a;color:white;padding:.55rem .85rem;cursor:pointer;margin:.2rem .3rem .2rem 0}button.secondary{background:white;color:#284d5a}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #a67a25;outline-offset:3px}.tabs{display:flex;gap:.3rem;flex-wrap:wrap}.tabs button[aria-pressed=true]{background:#122b36;color:#fff;box-shadow:0 3px #a67a25}.muted{color:#526671;font-size:.9rem}.pill{display:inline-block;padding:.1rem .5rem;background:#e6eef0;border-radius:1rem;font-size:.85rem;margin:.2rem}pre{white-space:pre-wrap;word-break:break-word;background:#f1f4f5;padding:1rem}.row{display:flex;gap:1rem;flex-wrap:wrap}.row>label{flex:1;min-width:140px}#notice:not(:empty){padding:.8rem 4vw;background:#fff1ce;border-bottom:1px solid #ddc78b}.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;background:white;padding:.5rem;z-index:5}.danger{color:#a12632}#fixture-label{font-size:.85rem}#fixture-label select{display:inline-block;width:auto}ul{padding-left:1.4rem}@media(max-width:750px){.layout{grid-template-columns:1fr}aside nav{display:flex;overflow:auto}aside nav button{flex-shrink:0}main{padding:1rem}.intro{margin-bottom:1rem}}

/* Imported source text can contain long uninterrupted product identifiers. */
.source-panel{min-width:0;overflow-wrap:anywhere}.source-panel button:disabled{cursor:not-allowed}

.home-filters{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1rem}.home-filters select{min-width:0;max-width:min(100%,18rem)}.home-card{min-width:0;overflow-wrap:anywhere}.home-card h3{margin:.2rem 0}.home-chips{display:flex;flex-wrap:wrap;gap:.15rem}.home-tasks{list-style:none;padding:0}.home-tasks li{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.45rem 0;border-bottom:1px solid #dce2e7}.home-tasks li span{min-width:0;overflow-wrap:anywhere}@media(max-width:750px){.home-filters select{max-width:100%}.home-tasks li{align-items:flex-start;flex-direction:column}}
.product-workspace{min-width:0;overflow-wrap:anywhere}.product-workspace h3{margin:.1rem 0}.product-activity{border-top:1px solid #dce2e7;padding:.8rem 0}.product-activity h4{margin:.2rem 0}.product-activity h5{margin:.7rem 0 .2rem}.product-list{padding-left:1.2rem;margin:.25rem 0}.product-list li{padding:.3rem 0;overflow-wrap:anywhere}.product-list li button{margin-left:.5rem}@media(max-width:750px){.product-list li button{display:block;margin:.4rem 0;min-height:2.75rem}.product-activity button{min-height:2.75rem}}

.intro{max-width:100%;margin-bottom:1rem}.intro .eyebrow{margin:0 0 .1rem}.intro h1{font-size:clamp(1.2rem,2vw,1.55rem);margin:.1rem 0}.intro p:last-child{margin:.15rem 0 0}.home-view .intro{display:none}.home-view{padding-top:1rem}

/* 주간 정리 패널(ME-R2-C): 1280px PC는 위쪽 조작 줄 + 활동 카드 안 섹션 2열, 390px 모바일은 1열(가로 스크롤 0, 터치 44px 이상). */
.weekly{min-width:0;overflow-wrap:anywhere}.weekly h3{margin:.2rem 0}.weekly h4{margin:.4rem 0}.weekly h5{margin:.5rem 0 .1rem;font-size:.9rem;color:#3b6877}
.weekly-controls{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) auto;gap:.75rem;align-items:end}.weekly-controls select,.weekly-controls input,.weekly-controls button,.weekly-inputs input{min-height:2.75rem}
.weekly-actions{display:flex;flex-wrap:wrap;gap:.3rem;margin:.6rem 0}.weekly-activity{border:1px solid #dce2e7;border-radius:.6rem;padding:1rem;margin:.8rem 0;min-width:0}
.weekly-sections{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.weekly-sec{min-width:0}.weekly-list{list-style:none;padding:0;margin:.2rem 0}.weekly-list li{padding:.35rem 0;border-bottom:1px solid #eef1f3}
.weekly-candidates .weekly-candidate{padding:.6rem 0}.weekly-candidate-title{display:flex;gap:.5rem;align-items:flex-start;margin:0}.weekly-candidate-title input[type=checkbox]{width:1.4rem;height:1.4rem;flex-shrink:0;margin-top:.15rem}
.weekly-detail summary{cursor:pointer;min-height:2.75rem;display:flex;align-items:center}.weekly-inputs{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:.5rem;margin-top:.3rem}.weekly-savebar{position:sticky;bottom:0;background:#fff;border-top:1px solid #dce2e7;padding:.6rem 0;margin-top:.6rem}.weekly-savebar button{min-height:2.75rem}
@media(max-width:750px){.weekly-controls{grid-template-columns:minmax(0,1fr)}.weekly-sections{grid-template-columns:minmax(0,1fr)}.weekly-inputs{grid-template-columns:minmax(0,1fr)}.weekly-actions button,.weekly-savebar button,.weekly-controls button{width:100%;min-height:2.75rem}}

/* 커머스 상품 자료 → 검토용 홍보 문안 초안(S4): 긴 설명·내부 코드가 넘치지 않게, 휴대폰 1단 */
.commerce-handoff{min-width:0;overflow-wrap:anywhere;word-break:keep-all}.commerce-handoff h4{margin:.6rem 0 .2rem}.commerce-handoff-note{background:#f1f4f5;border-left:3px solid #3b6877;padding:.6rem .8rem}.commerce-handoff-target p{margin:.2rem 0}
.commerce-handoff-preview dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.3rem .9rem;margin:.4rem 0}.commerce-handoff-preview dt{font-weight:700;color:#3b6877}.commerce-handoff-preview dd{margin:0;min-width:0}.commerce-handoff-text{white-space:pre-wrap;max-height:16rem;overflow:auto}
.commerce-handoff-check{display:flex;gap:.5rem;align-items:flex-start}.commerce-handoff-check input{width:1.3rem;height:1.3rem;flex-shrink:0;margin-top:.2rem}.commerce-handoff-pending{border:1px solid #ddc78b;background:#fff1ce;border-radius:.5rem;padding:.7rem .9rem;margin-top:.6rem}.commerce-handoff-pending p{margin:0 0 .4rem}
@media(max-width:750px){.commerce-handoff-preview dl{grid-template-columns:minmax(0,1fr)}.commerce-handoff button{min-height:2.75rem}}

/* 방문 분석 — 게시물(추적 링크)별 방문(2026-10-23): PC는 표, 390px 모바일은 칸마다 열 이름을 붙여 쌓는다(가로 스크롤 0, 터치 44px 이상). */
.cm-visit{min-width:0;overflow-wrap:anywhere}.cm-visit h4,.cm-visit h5{margin:.8rem 0 .2rem}.cm-visit button{min-height:2.75rem}.cm-visit table{width:100%;border-collapse:collapse}.cm-visit th,.cm-visit td{padding:.4rem .5rem;border-bottom:1px solid #dce2e7;text-align:left;vertical-align:top}
@media(max-width:750px){.cm-visit table,.cm-visit tbody{display:block}.cm-visit thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.cm-visit tr{display:block;padding:.4rem 0;border-bottom:1px solid #dce2e7}.cm-visit td{display:block;padding:.1rem 0;border:0}.cm-visit td::before{content:attr(data-label) ": ";font-weight:700;color:#3b6877}.cm-visit button{width:100%}}

/* 실행 묶음(2026-10-23): 채널 선택·버튼은 PC 한 줄, 390px 모바일은 1열(가로 스크롤 0, 터치 44px 이상). 긴 문구·주소는 줄바꿈한다. */
.execution-bundle{min-width:0;overflow-wrap:anywhere}.execution-bundle h3,.execution-bundle h4{margin:.2rem 0}.execution-bundle pre{margin:.4rem 0}.execution-bundle textarea{min-height:6rem}
.execution-bundle-controls{display:flex;flex-wrap:wrap;gap:.6rem;align-items:flex-end}.execution-bundle-controls label{flex:1 1 14rem;margin:0}.execution-bundle-controls button,.execution-bundle-head button,.execution-bundle-fill button{min-height:2.75rem;margin:0}
.execution-bundle-section{border-top:1px solid #dce2e7;padding:.7rem 0}.execution-bundle-head{display:flex;gap:.6rem;align-items:center;justify-content:space-between;flex-wrap:wrap}.execution-bundle-fill{margin:.4rem 0 .8rem}
@media(max-width:750px){.execution-bundle-controls label{flex-basis:100%}.execution-bundle-controls button,.execution-bundle-head button,.execution-bundle-fill button{width:100%}}

/* 방문 분석 출처 표시(2026-10-23): mock 응답은 실제 방문이 아님을 결과 위에 글자 배지로 밝힌다. 색은 brand-tokens 의 앰버 안내 색을 쓰고, 토큰이 없으면 같은 값을 쓴다. */
.cm-provenance{display:inline-block;max-width:100%;margin:.3rem 0 .2rem;padding:.3rem .7rem;border:1px solid #eed9b0;border-radius:8px;background:var(--bl-accent-soft,#fbefd9);color:var(--bl-flag-text,#6b4408);font-size:.875rem;font-weight:600}

/* 작업 단계 탭 바·머리 버튼(2026-10-23): 750px 이하에서 모든 단추를 터치 44px 이상으로 하고 탭 바는 2열로 쌓는다(가로 스크롤 0).
   역할·aria-pressed·DOM 순서는 그대로이고, 초점 표시는 brand-theme.css 의 button:focus-visible 기존 토큰을 그대로 쓴다(여기서 outline 을 건드리지 않는다). */
@media(max-width:750px){.program-head>button,.tabs button{min-height:2.75rem}.tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;margin:.6rem 0 .4rem}.tabs button{width:100%;min-width:0;margin:0;overflow-wrap:anywhere}}
.promotion-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.promotion-variant{min-width:0;border:1px solid #dce2e7;border-radius:.7rem;padding:1rem;overflow-wrap:anywhere}.promotion-variant h4{margin:.1rem 0}.promotion-variant p{border-bottom:1px solid #dce2e7;padding:.35rem 0}.promotion-comparison button,.promotion-variant button,#tab-content form button{min-height:2.75rem}@media(max-width:750px){.promotion-comparison{grid-template-columns:minmax(0,1fr)}.promotion-variant{padding:.8rem}}
@media(max-width:750px){#tab-content [data-testid="promotion-plan-form"] :is(input,select,textarea,button),#tab-content [data-testid="b2-observation-form"] :is(input,select,textarea,button){min-height:2.75rem}}
.next-cycle{min-width:0;overflow-wrap:anywhere}.next-cycle form{margin-top:1rem}.next-cycle input[type=checkbox]{margin-right:.6rem}.next-cycle [role=alert]:not([hidden]){color:#a12632}@media(max-width:750px){.next-cycle :is(input,textarea,button){min-height:2.75rem}.next-cycle button{width:100%}}
.context-help{position:relative;float:right;z-index:5;margin:0 0 .5rem .75rem}.context-help>summary{list-style:none;display:inline-flex;align-items:center;min-height:40px;padding:.45rem .8rem;border:1px solid var(--bl-color-primary,#4c2f80);border-radius:999px;color:var(--bl-color-primary,#4c2f80);background:#fff;font-size:.9rem;font-weight:700;cursor:pointer}.context-help>summary::-webkit-details-marker{display:none}.context-help summary:focus-visible{outline:3px solid #a67a25;outline-offset:3px}.context-help-body{position:absolute;right:0;top:calc(100% + .35rem);width:min(370px,calc(100vw - 2.5rem));max-height:min(65vh,520px);overflow:auto;padding:1rem;border:1px solid #dce2e7;border-radius:.7rem;background:#fff;box-shadow:0 12px 32px #172c3d40;line-height:1.5}.context-help-body>strong{display:block;margin-bottom:.5rem}.context-help-section{border-top:1px solid #dce2e7;padding:.5rem 0}.context-help-section summary{cursor:pointer;font-weight:700}.context-help-section p{margin:.5rem 0}.context-help-body button{margin-top:.5rem}@media(max-width:750px){.context-help{margin-left:.4rem}.context-help-body{width:min(340px,calc(100vw - 2.5rem))}}

/* 방문 분석 기간 폼(2026-10-23): 750px 이하에서 날짜 입력·기간 조회 단추를 터치 44px 이상으로. brand-theme.css 의 input min-height:40px(명시도 0,1,1)보다 높게 [type=date] 를 붙였다. */
@media(max-width:750px){.cm-period input[type=date],.cm-period button{min-height:2.75rem}}

/* 기존 상세 응답만 쓰는 채널별 기록 요약. 상태를 색만으로 구분하지 않는다. */
.channel-progress{min-width:0;overflow-wrap:anywhere}.channel-progress h3,.channel-progress h4{margin:.2rem 0}.channel-progress-row{border-top:1px solid #dce2e7;padding:.65rem 0}.channel-progress-row p{margin:.35rem 0}.channel-progress-row button{min-height:2.75rem}
@media(max-width:750px){.channel-progress-row button{width:100%}}
