.shadow-layout{display:grid;grid-template-columns:minmax(0,1fr);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev)}
#view .shadow-page [hidden]{display:none!important}
.shadow-main{min-width:0;display:flex;flex-direction:column;padding:var(--ui-section-gap);gap:20px}
.shadow-stage{color:var(--text-soft);font-size:var(--fs-xs);overflow-wrap:anywhere}.shadow-stage:empty{display:none}
.shadow-log{min-height:280px;display:flex;flex-direction:column;gap:28px;width:100%;max-width:980px;margin:auto}
.shadow-avatar{border-radius:50%;object-fit:cover;flex:none;border:1px solid var(--border-strong)}
.shadow-welcome{margin:auto;text-align:center;padding:40px 8px}.shadow-welcome h2{margin:0}.shadow-suggestions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:24px}
.shadow-date{display:flex;align-items:center;gap:16px;color:var(--text-mute);font-size:var(--fs-xs)}.shadow-date:before,.shadow-date:after{content:'';height:1px;background:var(--border);flex:1}
.shadow-message{display:flex;gap:12px;align-items:flex-start;max-width:calc(100% - 60px);min-width:0;align-self:flex-start;overflow-wrap:anywhere}.shadow-message.is-user{align-self:flex-end;max-width:min(64ch,calc(100% - 60px))}
.shadow-message-body{min-width:0;max-width:76ch}.shadow-message-meta{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:var(--fs-xs);color:var(--text-soft)}.shadow-message.is-user .shadow-message-meta{justify-content:flex-end}.shadow-speaker{font-weight:550}
.shadow-bubble{border:1px solid var(--border);background:var(--bg-elev);border-radius:4px var(--radius-sm) var(--radius-sm);padding:14px 18px}.shadow-message.is-user .shadow-bubble{background:var(--accent-soft);border-color:var(--glow-line);border-radius:var(--radius-sm) 4px var(--radius-sm) var(--radius-sm)}
.shadow-bubble p{white-space:pre-wrap;margin:0;line-height:1.75}.shadow-photos{display:flex;flex-wrap:wrap;gap:8px;max-width:600px}.shadow-photos+p{margin-top:12px}.shadow-photos a{display:block;max-width:100%;font-size:var(--fs-xs);overflow-wrap:anywhere}.shadow-photos img{display:block;width:180px;max-width:100%;height:150px;object-fit:cover;border:1px solid var(--border);border-radius:8px}
.shadow-card{border:1px solid var(--border-strong);background:var(--bg-soft);border-radius:var(--radius-sm);padding:var(--ui-section-gap);overflow-wrap:anywhere;margin-left:52px;max-width:calc(100% - 52px)}.shadow-card h3{margin:0 0 16px;font-size:var(--fs-md)}
.shadow-plan-row{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;margin:12px 0}.shadow-plan-row strong{color:var(--text-soft);font-size:var(--fs-sm)}.shadow-plan-row p{white-space:pre-wrap;margin:0}
.shadow-card.is-decision .shadow-plan-row{grid-template-columns:104px minmax(0,1fr)}
.shadow-receipt{font-size:var(--fs-xs);color:var(--ok);margin:0 0 0 52px}
.shadow-receipt.is-muted{color:var(--text-mute)}
.shadow-decision-state{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:var(--fs-xs);color:var(--text-soft)}
.shadow-embedded{min-width:0;margin-bottom:var(--ui-section-gap);border:1px solid var(--glow-line);border-radius:var(--radius);background:var(--glass-surface)}
.shadow-embedded-head{display:flex;align-items:center;gap:14px;padding:var(--ui-section-gap) var(--ui-section-gap) 0}.shadow-heading{min-width:0}.shadow-heading h2{margin:0}.shadow-heading .site-hint{display:block;margin-top:2px}.shadow-embedded-head>[role=status]{margin-left:auto;color:var(--text-soft);font-size:var(--fs-xs);overflow-wrap:anywhere}
.shadow-heading .shadow-stage{margin-top:2px}
.shadow-embedded .shadow-layout{border:0;background:transparent;border-radius:0}.shadow-embedded .shadow-log{min-height:220px}.shadow-embedded .shadow-welcome{padding:24px 8px}
/* User-approved chat exception: history scrolls inside a stable viewport. */
.shadow-embedded .shadow-log{height:60svh;min-height:0;flex:none;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;overflow-anchor:none;padding:4px}
.shadow-embedded .shadow-log>*{flex-shrink:0}
.shadow-embedded .shadow-log:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}
.shadow-history{position:relative;min-width:0}
.shadow-latest.site-button{position:absolute;right:12px;bottom:12px;min-height:var(--ui-control-height);border-radius:var(--radius-pill);background:var(--bg-elev);border-color:var(--border-strong);box-shadow:var(--shadow)}
/* Keep wheel, touch and keyboard scrolling while hiding the visual tracks. */
.shadow-embedded .shadow-log,.shadow-composer .site-field textarea{scrollbar-width:none;scrollbar-gutter:auto}
.shadow-embedded .shadow-log::-webkit-scrollbar,.shadow-composer .site-field textarea::-webkit-scrollbar{display:none;width:0;height:0}
.shadow-composer-area{width:100%;max-width:980px;margin:auto;min-width:0}
.shadow-composer{border:1px solid var(--border-strong);background:var(--bg-elev);border-radius:var(--radius-sm);padding:10px;width:100%;margin:0;box-shadow:none}.shadow-composer:has(textarea:focus){border-color:var(--accent)}
.shadow-composer-entry{display:flex;align-items:flex-end;gap:8px}.shadow-composer .site-field{min-width:0;flex:1;margin:0;font-size:0;gap:0}
/* Shadow's entry keeps its height; wrapped text scrolls inside the field. */
.shadow-composer .site-field textarea{display:block;width:100%;min-height:44px;height:44px;max-height:44px;overflow-y:auto;overscroll-behavior-y:contain;overflow-wrap:anywhere;resize:none;border:0;background:transparent;box-shadow:none;border-radius:4px;padding:10px 8px;font-size:var(--fs-base);line-height:24px}.shadow-composer textarea:focus,.shadow-composer textarea:focus-visible{outline:none}
.shadow-composer .shadow-send,.shadow-composer .shadow-attach{width:44px;min-width:44px;height:44px;min-height:44px;padding:10px;flex:none;border-radius:10px;display:grid;place-items:center}.shadow-composer svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.shadow-composer-notice{display:flex;align-items:center;gap:8px;min-width:0;margin:0 4px 6px}.shadow-composer-notice .site-error,.shadow-composer-notice .site-hint{flex:1;min-width:0;margin:0;font-size:var(--fs-xs);overflow-wrap:anywhere}
.shadow-composer-retry.site-button{display:flex;align-items:center;justify-content:center;gap:6px;flex:none;min-width:44px;min-height:44px;padding:0 8px;border-color:transparent;background:transparent;color:var(--text-soft);white-space:nowrap}.shadow-composer-retry.site-button:hover{background:var(--bg-soft);color:var(--text)}.shadow-composer-retry.site-button:disabled{opacity:.55}.shadow-composer-retry svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.shadow-composer-notice[hidden]{display:none}
.shadow-draft-photos{display:flex;flex-wrap:wrap;gap:8px}.shadow-draft-photos:empty{display:none}.shadow-draft-photo{display:grid;grid-template-columns:64px minmax(0,1fr) 32px;align-items:center;gap:8px;max-width:100%;width:250px;border:1px solid var(--border);border-radius:8px;padding:6px;margin-bottom:10px}.shadow-draft-photo canvas{display:block;width:64px;height:64px;border-radius:4px}.shadow-draft-photo span{font-size:var(--fs-xs);overflow-wrap:anywhere}.shadow-draft-photo button{min-height:32px;width:32px;padding:0}
.shadow-page.is-dragging{outline:2px solid var(--accent);outline-offset:4px}.shadow-page.is-dragging .shadow-composer{border-color:var(--accent)}
@media(max-width:700px){.shadow-main{padding:16px}.shadow-log{min-height:220px;gap:22px}.shadow-message,.shadow-message.is-user{max-width:100%;gap:8px}.shadow-message>.shadow-avatar{width:32px;height:32px}.shadow-bubble{padding:12px 14px}.shadow-card{margin-left:40px;max-width:calc(100% - 40px);padding:16px}.shadow-plan-row,.shadow-card.is-decision .shadow-plan-row{grid-template-columns:1fr;gap:4px}.shadow-receipt{margin-left:40px}.shadow-embedded-head{padding:16px 16px 0;flex-wrap:wrap}.shadow-embedded-head>.shadow-avatar{width:48px;height:48px}.shadow-embedded-head>[role=status]{flex-basis:100%;margin-left:62px}.shadow-welcome{padding:24px 0}.shadow-draft-photo{grid-template-columns:64px minmax(0,1fr) 44px}.shadow-draft-photo button{width:44px;min-height:44px}}
@media(max-width:600px){.shadow-composer-retry .shadow-retry-label{display:none}}
@media(max-width:390px){.shadow-main{padding:12px}.shadow-embedded-head{padding:12px 12px 0}.shadow-composer{padding:8px}.shadow-composer-entry{gap:4px}.shadow-composer .shadow-send,.shadow-composer .shadow-attach{padding:8px}.shadow-bubble{padding:10px 12px}.shadow-photos img{width:150px;height:120px}.shadow-card{margin-left:0;max-width:100%}}
.dashboard .shadow-embedded-head{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:8px 14px;position:relative}
.shadow-header-actions{display:flex;align-items:center;justify-content:flex-end;min-width:0}
.dashboard .shadow-embedded-head>.shadow-header-status{grid-column:2/-1;margin:0;font-size:var(--fs-xs);color:var(--text-soft)}
.shadow-header-status:empty{display:none}
.shadow-confirmation-alert{position:relative}
.shadow-confirmation-toggle.site-button{position:relative;display:grid;place-items:center;width:44px;height:44px;min-width:44px;padding:10px;border-radius:var(--radius-sm)}
.shadow-confirmation-toggle .ws-icon{margin:0;width:22px;height:22px;background:transparent;color:inherit}
.shadow-confirmation-toggle .ws-icon svg{width:22px;height:22px}
.shadow-confirmation-badge{position:absolute;top:-5px;right:-5px;min-width:19px;padding:2px 5px;background:var(--danger);color:var(--button-ink);border-radius:20px;font-size:10px;line-height:15px;text-align:center}
.shadow-confirmation-popup{position:absolute;z-index:10;top:calc(100% + 12px);right:0;width:min(420px,calc(100vw - 2 * var(--ui-page-side) - 2 * var(--dash-content-inset) - 4px));max-height:none;overflow:visible;padding:20px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-elev);box-shadow:var(--shadow-lg);color:var(--text);overflow-wrap:anywhere}
.shadow-confirmation-popup:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* 2026-10-21 확인 창 정돈: 머리 한 줄(제목·개수·닫기), 상태 덩어리, 항목 카드(종류 색 띠), 나머지 안내. 모두 왼쪽 끝을 맞춘다. */
.shadow-confirm-head{display:flex;align-items:center;gap:10px;padding:0 0 14px;border-bottom:1px solid var(--border)}
.shadow-confirm-head h2{margin:0;min-width:0;font-size:var(--fs-md);font-weight:650;line-height:1.4}
.shadow-confirm-count{display:inline-grid;place-items:center;min-width:24px;height:22px;padding:0 7px;border-radius:var(--radius-pill,999px);background:var(--bg-soft);border:1px solid var(--border);color:var(--text-soft);font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums}
.shadow-confirm-count.is-on{background:var(--warn-soft);border-color:transparent;color:var(--warn)}
.shadow-confirmation-close.site-button{margin-left:auto;min-height:36px;padding:0 12px}
.shadow-confirm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.shadow-confirm-skeleton{display:grid;gap:10px;padding-top:16px}
.shadow-confirm-skeleton span{display:block;height:64px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--accent) 7%,transparent)}
.shadow-confirm-state{display:flex;align-items:flex-start;gap:12px;margin-top:16px;padding:14px 16px;border-radius:var(--radius-sm);background:var(--bg-soft);border:1px solid var(--border)}
.shadow-confirm-state.is-error{background:color-mix(in srgb,var(--danger) 8%,transparent);border-color:color-mix(in srgb,var(--danger) 28%,transparent)}
.shadow-confirm-state .ws-icon{flex:none;width:20px;height:20px;margin:1px 0 0;background:transparent;color:var(--ok)}
.shadow-confirm-state .ws-icon svg{width:20px;height:20px}
.shadow-confirm-state.is-error .ws-icon{color:var(--danger)}
.shadow-confirm-state-copy{display:grid;justify-items:start;gap:4px;min-width:0}
.shadow-confirm-state-copy strong{font-size:var(--fs-sm);font-weight:600;line-height:1.5}
.shadow-confirm-state-copy small{color:var(--text-soft);font-size:var(--fs-xs);line-height:1.6}
.shadow-confirm-retry.site-button{margin-top:8px;min-height:36px;padding:0 14px}
.shadow-confirm-note{margin:14px 0 0;color:var(--text-soft);font-size:var(--fs-xs);line-height:1.6}
.shadow-confirm-list{display:grid;gap:8px;margin:14px 0 0;padding:0;list-style:none}
.shadow-confirm-item{--tone:var(--text-mute);position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 12px 12px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-soft);overflow:hidden;transition:border-color var(--dur-fast,150ms) ease}
.shadow-confirm-item:before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tone)}
.shadow-confirm-item.is-warn{--tone:var(--warn)}.shadow-confirm-item.is-accent{--tone:var(--accent)}
.shadow-confirm-item:hover{border-color:var(--border-strong)}
.shadow-confirm-copy{display:grid;gap:3px;min-width:0}
.shadow-confirm-meta{display:flex;align-items:center;gap:8px;min-width:0;color:var(--text-soft);font-size:var(--fs-xs);line-height:1.5}
.shadow-confirm-type{color:var(--tone);font-weight:600}
.shadow-confirm-item.is-neutral .shadow-confirm-type{color:var(--text-soft)}
.shadow-confirm-meta time{margin-left:auto;color:var(--text-mute);font-variant-numeric:tabular-nums;white-space:nowrap}
.shadow-confirm-title{font-size:var(--fs-sm);font-weight:600;line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.shadow-confirm-relation{color:var(--text-mute);font-size:var(--fs-xs)}
.shadow-confirm-reason{margin:0;color:var(--text-soft);font-size:var(--fs-xs);line-height:1.6;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.shadow-confirm-go.site-button{min-height:36px;padding:0 12px;white-space:nowrap;align-self:center}
.shadow-confirm-go.is-off{color:var(--text-mute);font-size:var(--fs-xs);white-space:nowrap}
.shadow-confirm-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);color:var(--text-soft);font-size:var(--fs-xs)}
.shadow-confirm-more{color:var(--accent);font-weight:600;text-decoration:none}.shadow-confirm-more:hover{text-decoration:underline}
@media(max-width:600px){.shadow-confirm-item{gap:10px;padding:10px 10px 10px 14px}.shadow-confirm-go.site-button{padding:0 10px}}
@media(max-width:340px){.shadow-confirm-item{grid-template-columns:minmax(0,1fr)}.shadow-confirm-go.site-button{justify-self:start}}
@media(max-width:700px){.shadow-confirmation-popup{padding:16px}.dashboard .shadow-embedded-head{gap:8px 10px}.shadow-heading{overflow-wrap:anywhere}}
@media(max-width:359px){.dashboard .shadow-embedded-head{grid-template-columns:36px minmax(0,1fr) auto;column-gap:4px}.dashboard .shadow-embedded-head>.shadow-avatar{width:36px;height:36px}}
.shadow-work-section{grid-column:1/-1;min-width:0;margin-top:8px}
.shadow-work-cards{display:flex;flex-wrap:wrap;gap:8px}
.shadow-work-card.site-button{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0;width:200px;height:96px;min-height:96px;padding:14px 16px;text-align:left;background:var(--bg-soft);border-color:var(--border);font-weight:500}
.shadow-work-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:var(--fs-sm);line-height:1.5;font-weight:600;overflow-wrap:anywhere}
.shadow-work-state{font-size:var(--fs-xs);color:var(--text-soft);line-height:1.4}
.shadow-work-status{margin:0 0 8px;font-size:var(--fs-xs);color:var(--text-soft)}
.shadow-work-retry.site-button{margin-top:8px}
.shadow-work-tooltip{position:absolute;z-index:30;max-width:calc(100vw - 16px);width:380px;padding:16px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-elev);box-shadow:var(--shadow-lg);color:var(--text);font-size:var(--fs-sm);overflow-wrap:anywhere}
.shadow-work-tooltip-title{display:block;margin-bottom:12px;font-size:var(--fs-md)}
.shadow-work-tooltip p{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;margin:8px 0}.shadow-work-tooltip p strong{color:var(--text-soft);font-size:var(--fs-xs);font-weight:500}.shadow-work-tooltip p span{white-space:pre-wrap}
@media(max-width:600px){.shadow-work-card.site-button{width:calc((100% - 8px)/2);padding:12px}.shadow-work-tooltip p{grid-template-columns:1fr;gap:4px}}

/* A layout with A1 work cards; report review presentation stays unchanged. */
.dashboard .shadow-embedded-head{grid-template-columns:48px auto minmax(0,1fr) auto;column-gap:12px}
.dashboard .shadow-embedded-head>.shadow-header-actions{grid-column:4;grid-row:1}
.dashboard .shadow-embedded-head>.shadow-work-section{grid-column:3;grid-row:1;margin:0}
.shadow-work-cards{flex-wrap:nowrap;min-width:0}
.shadow-work-card.site-button{width:200px;flex:0 1 200px;min-height:64px;height:64px;padding:8px 12px;gap:4px;border-color:transparent;background:var(--bg-soft);border-radius:var(--radius-sm);justify-content:center}
.shadow-work-card.site-button:hover{border-color:var(--border-strong)}
.shadow-work-title{display:block;width:100%;max-width:100%;min-width:0;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-sm)}
.shadow-work-state{display:flex;align-items:center;gap:6px}
.shadow-work-card .shadow-work-state:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}
.shadow-work-card[data-state="review"] .shadow-work-state:before{background:var(--warn)}
.shadow-work-summary.site-button{display:none}
.shadow-work-tooltip{border-radius:var(--radius);padding:20px}
.shadow-work-list-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.shadow-work-list-head>.shadow-work-tooltip-title{margin:0}
.shadow-work-list-item{padding:16px 0;border-top:1px solid var(--border);margin-top:12px}
.shadow-work-list-item>.shadow-work-title{white-space:normal;overflow:visible}
.shadow-work-list-item>.shadow-work-state{margin:6px 0 12px}
.shadow-work-list-notice{display:block!important;color:var(--text-soft)}
@media(max-width:900px){
 .dashboard .shadow-embedded-head{grid-template-columns:32px minmax(0,1fr) auto auto;gap:8px}
 .dashboard .shadow-embedded-head>.shadow-avatar{width:32px;height:32px}
 .shadow-work-cards{display:none}
 .shadow-work-summary.site-button{display:flex;align-items:center;justify-content:center;gap:4px;min-height:44px;min-width:40px;padding:0 6px;font-size:var(--fs-xs)}
 .shadow-work-summary .gyo-icon{width:15px;height:15px;color:var(--text-mute)}
 .shadow-work-status{max-width:160px}
}
@media(max-width:390px){
 .dashboard .shadow-embedded-head{grid-template-columns:24px minmax(0,1fr) auto auto;gap:4px}
 .dashboard .shadow-embedded-head>.shadow-avatar{width:24px;height:24px}
 .dashboard .shadow-heading h2{font-size:var(--fs-md);white-space:nowrap}
 .shadow-work-summary.site-button{min-width:36px;padding:0 3px}
 .shadow-work-tooltip p{grid-template-columns:1fr;gap:4px}
}

/* Chosen W1: a defined outline and quiet, semantic state colors. */
.shadow-work-card.site-button{border:1px solid var(--border-strong);background:var(--bg-elev)}
.shadow-work-card .shadow-work-state{align-self:flex-start;padding:2px 7px;border-radius:var(--radius-pill);background:var(--bg-soft);color:var(--text-soft)}
.shadow-work-card .shadow-work-state:before{display:none}
.shadow-work-card[data-state="running"] .shadow-work-state{background:var(--accent-soft);color:var(--accent-ink)}
.shadow-work-card[data-state="review"] .shadow-work-state{background:var(--warn-soft);color:var(--warn)}

.shadow-toolbar{display:flex;justify-content:flex-end;gap:8px;padding:0 0 8px}
.shadow-trash-panel{display:grid;gap:10px;margin:0 0 14px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev)}
.shadow-trash-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--border)}
.shadow-trash-row>span{min-width:0;overflow-wrap:anywhere}
.shadow-trash-banner{display:grid;gap:8px;margin:0 0 14px;padding:14px;border:1px solid var(--warn);border-radius:var(--radius);background:var(--warn-soft);color:var(--text)}
.shadow-photo-card{display:grid;justify-items:start;gap:6px;min-width:0}
.shadow-photo-trashed{display:grid;place-items:center;min-width:96px;min-height:72px;padding:8px;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-soft);text-align:center}
@media(max-width:560px){.shadow-trash-row{align-items:flex-start;flex-direction:column}.shadow-photo-card>.site-button{min-height:36px}}

/* 2026-10-17 불러오는 중 정돈: 대화 자리 가운데 한 줄, 작업 상태는 머리 줄 가운데 높이에. */
.shadow-loading{margin:auto;padding:24px 8px;color:var(--text-mute);font-size:var(--fs-sm);text-align:center}
.dashboard .shadow-embedded-head>.shadow-work-section{align-self:center}
.dashboard .shadow-work-status{margin:0;line-height:1.5}
.dashboard .shadow-work-status:empty,.shadow-work-status[hidden]{display:none}
@media(max-width:900px){.dashboard .shadow-work-status.is-checking{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}

/* 2026-10-17 대화창 A(읽기 중심, 말풍선 유지): 가운데 760px 읽기 폭, Shadow는 작은 프로필+이름·시각 머리 줄,
   내 메시지는 오른쪽 말풍선 아래에 시각, 입력창은 같은 폭의 떠 있는 유리 막대. 승인·결정 카드는 같은 들여쓰기에 맞춘다. */
.dashboard .shadow-embedded .shadow-log{--chat-indent:42px;max-width:760px;margin:0 auto;gap:28px;padding:8px 4px 24px}
.dashboard .shadow-date{font-size:11px;letter-spacing:.08em}
.dashboard .shadow-message.is-advisor{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:14px;max-width:100%}
.dashboard .shadow-message.is-advisor>.shadow-avatar{width:28px;height:28px;margin-top:2px}
.dashboard .shadow-message-meta{gap:8px;margin:2px 0 8px}
.dashboard .shadow-message-meta time{font-family:var(--font-tech,var(--font-mono));font-size:11px;color:var(--text-mute);font-variant-numeric:tabular-nums}
.dashboard .shadow-message.is-advisor .shadow-speaker{font-size:13px;font-weight:600;color:var(--text)}
.dashboard .shadow-message-body{max-width:100%}
.dashboard .shadow-bubble p{font-size:15px;line-height:1.75;letter-spacing:-.005em}
.dashboard .shadow-message.is-advisor .shadow-bubble{border-radius:4px 16px 16px 16px;padding:14px 18px}
.dashboard .shadow-message.is-user{display:flex;justify-content:flex-end;width:100%;max-width:100%;align-self:stretch}
.dashboard .shadow-message.is-user .shadow-message-body{display:flex;flex-direction:column;align-items:flex-end;max-width:72%}
.dashboard .shadow-message.is-user .shadow-message-meta{order:2;margin:6px 4px 0}
.dashboard .shadow-message.is-user .shadow-speaker{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.dashboard .shadow-message.is-user .shadow-bubble{border-radius:16px 16px 4px 16px;padding:10px 16px}
.dashboard .shadow-card{margin-left:var(--chat-indent);max-width:calc(100% - var(--chat-indent))}
.dashboard .shadow-receipt{margin-left:var(--chat-indent)}
.dashboard .shadow-embedded .shadow-composer-area{max-width:760px;margin:0 auto}
.dashboard .shadow-composer{border-radius:16px;padding:8px}
[data-skin="tech"] .dashboard .shadow-composer{box-shadow:0 1px 0 var(--glass-hi) inset,0 18px 48px rgba(0,0,0,.42)}
[data-skin="tech"][data-theme="light"] .dashboard .shadow-composer{box-shadow:0 1px 0 var(--glass-hi) inset,0 14px 40px rgba(15,23,42,.12)}
[data-skin="tech"] .dashboard .shadow-composer:has(textarea:focus){box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent),0 18px 48px rgba(0,0,0,.42)}
.dashboard .shadow-composer .shadow-send{border-radius:12px}
.dashboard .shadow-composer .shadow-attach{border-color:transparent;background:transparent}
.dashboard .shadow-composer .shadow-attach:hover:not(:disabled){background:var(--bg-soft)}
@media(max-width:700px){
  .dashboard .shadow-embedded .shadow-log{--chat-indent:34px;gap:22px;padding:4px 0 16px}
  .dashboard .shadow-message.is-advisor{grid-template-columns:24px minmax(0,1fr);column-gap:10px}
  .dashboard .shadow-message.is-advisor>.shadow-avatar{width:24px;height:24px}
  .dashboard .shadow-message.is-user .shadow-message-body{max-width:85%}
  .dashboard .shadow-bubble p{font-size:var(--fs-base)}
}
/* 사용자 말풍선의 화면낭독기용 숨김 이름(position:absolute)이 대화창 밖 기준으로 배치돼 페이지 전체 길이를 늘리던 문제:
   대화창을 배치 기준으로 삼아 안쪽에 가둔다. */
.shadow-embedded .shadow-log{position:relative}
.shadow-message{position:relative}
/* ── 보고서 멈춤 카드 정돈 (2026-10-19) ───────────────────────────
   머리(상태 점·제목·배지) → 이유 → 문제 문장(인용) → 검토 의견·고친 횟수 → 안내 → 행동(오른쪽 아래). */
.shadow-card.is-recovery{display:grid;gap:14px;padding:20px 22px;border-color:var(--glass-line-strong,var(--border-strong));border-left:3px solid var(--warn)}
.shadow-card.is-recovery .shadow-card-head{display:flex;align-items:center;gap:10px}
.shadow-card.is-recovery .shadow-card-head h3{margin:0;font-size:var(--fs-md);font-weight:650}
.shadow-card-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--warn)}
.shadow-card-badge{margin-left:auto;padding:3px 10px;border-radius:var(--radius-xs);background:var(--warn-soft);color:var(--warn);font-size:var(--fs-xs);font-weight:600;line-height:1.5;white-space:nowrap}
.shadow-card-reason{margin:0;color:var(--text);font-size:var(--fs-sm);line-height:1.7}
.shadow-card-quote{margin:0;padding:12px 16px;border-left:2px solid var(--border-strong);border-radius:0 var(--radius-xs) var(--radius-xs) 0;background:var(--bg)}
.shadow-card-quote small{display:block;margin:0 0 4px;color:var(--text-mute);font-size:var(--fs-xs)}
.shadow-card-quote p{margin:0;font-size:var(--fs-sm);line-height:1.75;white-space:pre-wrap}
.shadow-card-facts{display:grid;gap:10px;margin:0}
.shadow-card-facts>div{display:grid;grid-template-columns:84px minmax(0,1fr);gap:12px;align-items:baseline}
.shadow-card-facts dt{color:var(--text-mute);font-size:var(--fs-xs)}
.shadow-card-facts dd{margin:0;font-size:var(--fs-sm);line-height:1.7;white-space:pre-wrap}
.shadow-chip{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-xs);background:var(--bg);border:1px solid var(--border-strong);color:var(--text-soft);font-size:var(--fs-xs);line-height:1.6}
.shadow-chip.is-warn{border-color:transparent;background:var(--warn-soft);color:var(--warn)}
.shadow-card-note{margin:0;padding-top:12px;border-top:1px solid var(--border);color:var(--text-mute);font-size:var(--fs-xs);line-height:1.7}
.shadow-card-actions{display:flex;justify-content:flex-end;gap:8px;margin:0}
.shadow-card-actions .site-button.primary{min-height:var(--ui-control-height,40px);padding:0 18px;border-color:transparent;background:var(--accent-strong);color:var(--button-ink,#fff);font-weight:600}
.shadow-card-actions .site-button.primary:hover:not(:disabled){filter:brightness(1.08)}
@media(max-width:700px){.shadow-card.is-recovery{padding:16px}.shadow-card-facts>div{grid-template-columns:1fr;gap:2px}.shadow-card-actions{justify-content:stretch}.shadow-card-actions .site-button{flex:1}}
/* 대화를 불러오기 전후로 머리 줄 높이가 달라지지 않게: 작업 카드(64px)가 나중에 들어와도 첫 줄은 처음부터 같은 높이를 쓴다. */
.dashboard .shadow-embedded-head{grid-template-rows:minmax(64px,auto)}
/* 2026-10-20 이름 위치 고정·정렬 통일: 진행 상태와 승인 대기는 Shadow 이름 바로 아래 한 줄(·로 구분)에 모은다. 이 줄은 평소 "대기 중"으로 늘 자리를 지켜, 상태가 바뀌어도 이름과 글자가 움직이지 않는다.
   계획·결정·멈춤 카드도 답변과 같은 프로필·이름 줄 아래, 같은 왼쪽 선에 놓는다. */
.shadow-subline{display:flex;align-items:baseline;gap:6px;min-width:0;margin-top:2px;color:var(--text-soft);font-size:var(--fs-xs)}
.shadow-subline:not(:has(>:not(:empty):not([hidden]))){display:none}
.shadow-subline .shadow-stage{margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shadow-subline .shadow-header-status{white-space:nowrap}
.shadow-subline .shadow-header-status:empty{display:none}
.shadow-subline .shadow-stage:not([hidden]):not(:empty)+.shadow-header-status:not(:empty)::before{content:'·';margin-right:6px;color:var(--text-mute)}
.dashboard .shadow-embedded-head>.shadow-heading{position:relative}
.shadow-message.is-card{width:100%}
.shadow-message.is-card .shadow-message-body{flex:1;max-width:none}
.shadow-message.is-card .shadow-card{margin-left:0;max-width:100%}
.dashboard .shadow-message.is-card .shadow-card{margin-left:0;max-width:100%}
/* 2026-10-20 Shadow 영상 프로필: 머리의 큰 프로필은 상황별 영상 3종 중 하나만 보이고(서서히 바뀜), 원 밖은 잘라낸다. 동작 줄이기 설정이면 정지 그림. */
.shadow-avatar-live{position:relative;display:block;overflow:hidden;border-radius:50%;background:#0b0d10;width:40px;height:40px}
.shadow-avatar-live video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s ease}
.shadow-avatar-live video.is-on{opacity:1}
.shadow-avatar-live video.is-failed{opacity:0!important}
.shadow-avatar-live{background:#090b0e center/cover no-repeat}
@media(prefers-reduced-motion:reduce){.shadow-avatar-live video{transition:none}}
/* 2026-10-20 카드 4종 한 가족(C): 계획·최종·결정·멈춤 카드가 같은 틀·간격·상태 색을 쓴다.
   간격 규칙: 안쪽 여백 20/22px, 덩어리 사이 16px, 항목 줄 사이 10px, 항목 이름 칸 88px, 아래 줄은 구분선 위 14px.
   아래 줄은 왼쪽 안내·상태 글자, 오른쪽 버튼이며 좁으면 버튼이 아래로 내려가 꽉 찬다. */
.shadow-card{display:grid;gap:16px;padding:20px 22px;border:1px solid var(--glass-line-strong,var(--border-strong));border-left:3px solid var(--tone,var(--border-strong));border-radius:var(--radius-sm);background:var(--bg-soft)}
.shadow-card[data-tone="accent"]{--tone:var(--accent);--tone-soft:var(--accent-soft);--tone-ink:var(--accent-ink,var(--accent))}
.shadow-card[data-tone="ok"]{--tone:var(--ok);--tone-soft:var(--ok-soft);--tone-ink:var(--ok)}
.shadow-card[data-tone="warn"]{--tone:var(--warn);--tone-soft:var(--warn-soft);--tone-ink:var(--warn)}
.shadow-card[data-tone="mute"]{--tone:var(--border-strong);--tone-soft:var(--bg);--tone-ink:var(--text-mute)}
.shadow-card .shadow-card-head{display:flex;align-items:center;gap:10px;min-height:26px}
.shadow-card .shadow-card-head h3{margin:0;font-size:var(--fs-md);font-weight:650;line-height:1.4}
.shadow-card[data-tone="mute"] .shadow-card-head h3{color:var(--text-soft)}
.shadow-card .shadow-card-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--tone)}
.shadow-card .shadow-card-badge{margin-left:auto;padding:3px 10px;border-radius:var(--radius-xs);background:var(--tone-soft);color:var(--tone-ink);font-size:var(--fs-xs);font-weight:600;line-height:1.5;white-space:nowrap}
.shadow-card .shadow-card-badge:empty{display:none}
.shadow-card .shadow-card-rows,.shadow-card .shadow-card-facts{display:grid;gap:10px;margin:0}
.shadow-card .shadow-plan-row,.shadow-card.is-decision .shadow-plan-row,.shadow-card .shadow-card-facts>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:12px;margin:0;align-items:baseline}
.shadow-card .shadow-plan-row strong,.shadow-card .shadow-card-facts dt{color:var(--text-mute);font-size:var(--fs-xs);font-weight:500;line-height:1.7}
.shadow-card .shadow-plan-row p,.shadow-card .shadow-card-facts dd{margin:0;font-size:var(--fs-sm);line-height:1.7;white-space:pre-wrap}
.shadow-card .shadow-card-reason{margin:0;font-size:var(--fs-sm);line-height:1.7}
.shadow-card .shadow-card-foot{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:0;padding-top:14px;border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-soft)}
.shadow-card .shadow-card-foot .shadow-card-note{flex:1 1 260px;margin:0;padding:0;border:0;color:var(--text-mute);font-size:var(--fs-xs);line-height:1.7}
.shadow-card .shadow-card-foot .shadow-card-actions{display:flex;gap:8px;margin:0 0 0 auto}
.shadow-card .shadow-card-foot .site-button{min-height:var(--ui-control-height,40px)}
.shadow-card .shadow-decision-state>span:first-child{flex:1 1 auto;min-width:0}
@media(max-width:700px){
  .shadow-card{gap:14px;padding:16px}
  .shadow-card .shadow-plan-row,.shadow-card.is-decision .shadow-plan-row,.shadow-card .shadow-card-facts>div{grid-template-columns:1fr;gap:2px}
  .shadow-card .shadow-card-foot .shadow-card-actions{flex:1 1 100%;margin:0}
  .shadow-card .shadow-card-foot .shadow-card-actions .site-button{flex:1;justify-content:center}
}
@media(max-width:700px){.shadow-card .shadow-decision-state>span:first-child{flex-basis:100%}.shadow-card .shadow-decision-state>.site-button{flex:1;justify-content:center}}
/* 2026-10-20 전송 직후 체감 속도: 보내는 중인 내 말풍선은 살짝 옅게, 답을 기다리는 진행 줄은 점 3개와 걸린 초를 보여 준다. */
.shadow-message.is-sending .shadow-bubble{opacity:.72}
.shadow-sending-state{color:var(--text-mute)}
.shadow-sending-photos{color:var(--text-soft);font-size:var(--fs-xs)}
.shadow-typing .shadow-bubble{display:inline-flex;align-items:center;gap:10px;width:auto;padding:10px 16px;color:var(--text-soft);font-size:var(--fs-sm)}
.shadow-typing-time{font-family:var(--font-tech,var(--font-mono));font-size:var(--fs-xs);color:var(--text-mute);font-variant-numeric:tabular-nums;margin-left:-6px}
.shadow-typing-dots{display:inline-flex;gap:4px}
.shadow-typing-dots i{width:6px;height:6px;border-radius:50%;background:var(--accent);opacity:.35;animation:shadow-typing 1.2s ease-in-out infinite}
.shadow-typing-dots i:nth-child(2){animation-delay:.15s}.shadow-typing-dots i:nth-child(3){animation-delay:.3s}
@keyframes shadow-typing{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){.shadow-typing-dots i{animation:none;opacity:.6}}
/* 2026-10-20 이름 칸 고정: 이름 아래 상태 문구가 길어도 오른쪽 작업 카드가 밀리지 않게 칸 너비를 240px로 고정하고, 넘치는 문구는 말줄임(마우스를 올리면 전체). */
@media(min-width:901px){
  .dashboard .shadow-embedded-head{grid-template-columns:48px 240px minmax(0,1fr) auto}
  .dashboard .shadow-embedded-head>.shadow-heading{min-width:0;overflow:hidden}
  /* 2026-10-26 작업 카드는 대화 말풍선 왼쪽 선에서 시작한다(좌측 정렬). 머리 줄과 대화 칸(760px)은 중심이 같으므로
     이름 칸 = 50% - 380 + 말풍선 들여쓰기 46 - (프로필 48 + 간격 24) = 50% - 406px. 너무 좁으면 120px, 넓어도 240px까지. */
  .dashboard .shadow-embedded-head{grid-template-columns:48px clamp(120px,calc(50% - 406px),240px) minmax(0,1fr) auto}
}
.shadow-heading .shadow-subline{overflow:hidden}
.shadow-heading .shadow-subline .shadow-header-status{flex:none}
/* 2026-10-20 사용감: 입력창 자동 늘어남(최대 6줄), 답변 알림(아래 가운데 팝업), 기다림 안내가 길면 줄을 바꾼다. */
.shadow-composer .site-field textarea{max-height:168px}
.shadow-typing .shadow-bubble{flex-wrap:wrap}
.shadow-toast{position:fixed;left:50%;bottom:28px;z-index:60;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 16px 0 12px;border:1px solid var(--border-strong);border-radius:var(--radius-pill,999px);background:var(--bg-elev);color:var(--text);font:inherit;font-size:var(--fs-sm);font-weight:600;box-shadow:var(--shadow);cursor:pointer;opacity:0;pointer-events:none;transform:translate(-50%,8px);transition:opacity .2s ease,transform .2s ease}
.shadow-toast.is-on{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.shadow-toast:hover{border-color:var(--accent)}
.shadow-toast svg{width:16px;height:16px;flex:none;color:var(--accent);fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.shadow-toast-text{white-space:nowrap}
.shadow-toast:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.shadow-toast{transition:none}}
.shadow-standin-mark{display:grid;place-items:center;flex:none;width:40px;height:40px;border:1px solid var(--border);border-radius:50%;background:var(--bg-elev);color:var(--text-soft);font-size:var(--fs-xs);font-weight:550}
/* 2026-11-05 휴대폰 입력 글자 16px(site-ui.css) 뒤: 좁은 입력창에서 안내 문구가 두 줄로 접혀 빈 입력창이 68px로 커졌다.
   비어 있을 때만 안내 문구를 한 줄로 두고 넘치면 말줄임한다(글을 쓰기 시작하면 기존처럼 줄바꿈·자동 늘어남). */
.shadow-composer .site-field textarea:placeholder-shown{white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}
