/* ── 야모이자 워크스페이스 공통 디자인 토큰 + 표준 상단 바 ──────────────────
   모든 워크스페이스 앱 페이지가 <link rel=stylesheet href="/static/workspace.css?v=1">로 공유.
   기준 톤 = 워크스페이스 홈(/work): 밝은 회색 배경·흰 패널·Pretendard.
   포인트(호버·태그) = 야모이자 브랜드 그린(green-800 #01593F / green-500 #53A67F).
   페이지 고유 스타일은 각 페이지에 남기고, 여기는 토큰과 표준 바만 둔다. */
:root{
  /* 브랜드(야모이자 design-tokens 실측값) */
  --ws-green:#01593F; --ws-mint:#53A67F; --ws-sun:#FFB81C;
  /* 워크스페이스 홈(/work) 기본 톤 */
  --ws-bg:#F5F6F8; --ws-panel:#FFFFFF; --ws-line:#E5E7EB; --ws-line2:#D1D5DB;
  --ws-fg:#1F2937; --ws-mut:#6B7280; --ws-faint:#9CA3AF;
  --ws-accent:#01593F; --ws-dim:#F2F9F5;
  /* 다크 콘솔 톤(만족도·리셉션 스태프 콘솔) */
  --ws-dark-bg:#262322; --ws-dark-panel:#2E2B29; --ws-dark-line:#56514E; --ws-dark-fg:#F8F7F7;
  --ws-radius:12px; --ws-radius-lg:16px;
  --ws-shadow:0 1px 3px rgba(0,0,0,.04);
  --ws-sans:'Pretendard','Malgun Gothic',sans-serif;
  --ws-bar-h:52px;
}

/* ── 표준 상단 바: 모든 앱 최상단 동일 높이·동일 구성(← 워크스페이스 + 앱 제목) ── */
.ws-topbar{position:sticky;top:24px;z-index:90;display:flex;align-items:center;gap:8px;
  width:fit-content;max-width:calc(100% - 32px);margin:0 auto;box-sizing:border-box;
  height:var(--ws-bar-h);padding:8px 10px;background:var(--ws-glass-nav,rgba(255,255,255,.3));
  -webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);
  border:1px solid var(--ws-glass-line,rgba(0,0,0,.1));border-radius:16px;
  box-shadow:var(--ws-hl,inset 0 4px 4px rgba(255,255,255,.25)),0 8px 24px rgba(1,89,63,.08);
  font-family:var(--ws-sans)}
.ws-back{display:inline-flex;align-items:center;gap:7px;flex:none;
  padding:7px 14px 7px 11px;border:1px solid var(--ws-line2);border-radius:999px;
  background:var(--ws-panel);color:var(--ws-fg);font-size:13px;font-weight:600;
  line-height:1;text-decoration:none;white-space:nowrap;
  transition:color .15s,border-color .15s,box-shadow .15s,background .15s}
.ws-back svg{flex:none;transition:transform .18s}
.ws-back:hover{color:var(--ws-green);border-color:var(--ws-mint);box-shadow:0 4px 12px rgba(1,89,63,.16)}
.ws-back:hover svg{transform:translateX(-2px)}
.ws-back:focus-visible{outline:none;border-color:var(--ws-mint);box-shadow:0 0 0 3px rgba(83,166,127,.28)}
.ws-appname{font-size:14px;font-weight:700;color:var(--ws-fg);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-tag{flex:none;font-size:10px;font-weight:700;letter-spacing:.02em;color:var(--ws-green);
  background:rgba(83,166,127,.12);border:1px solid rgba(83,166,127,.45);
  border-radius:999px;padding:2px 8px}

/* ── 다크 페이지 변형(만족도 생성기·리셉션 스태프 콘솔) ── */
.ws-topbar.ws-dark{background:rgba(46,43,41,.78);border-color:var(--ws-dark-line);
  box-shadow:inset 0 4px 4px rgba(255,255,255,.08),0 8px 24px rgba(0,0,0,.25)}
.ws-topbar.ws-dark .ws-back{background:var(--ws-dark-panel);border-color:var(--ws-dark-line);color:var(--ws-dark-fg)}
.ws-topbar.ws-dark .ws-back:hover{color:var(--ws-mint);border-color:var(--ws-mint);box-shadow:0 4px 12px rgba(0,0,0,.35)}
.ws-topbar.ws-dark .ws-appname{color:var(--ws-dark-fg)}
.ws-topbar.ws-dark .ws-tag{color:var(--ws-mint);background:rgba(83,166,127,.14);border-color:rgba(83,166,127,.5)}

/* ── 앱 내부 기능 탭(한 앱 안의 화면 전환 — 예: 생성기 ↔ 실시간 견적 편집) ── */
.ws-tabs{display:flex;gap:8px;margin:0 0 14px;font-family:var(--ws-sans);flex-wrap:wrap}
.ws-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:999px;
  border:1px solid var(--ws-line2);background:var(--ws-panel);color:var(--ws-mut);
  font-size:13px;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;
  transition:color .15s,border-color .15s,background .15s,box-shadow .15s}
.ws-tab:hover{color:var(--ws-green);border-color:var(--ws-mint);box-shadow:0 4px 12px rgba(1,89,63,.12)}
.ws-tab.on,.ws-tab.on:hover{color:#fff;background:var(--ws-green);border-color:var(--ws-green);
  box-shadow:none;cursor:default}

/* ── 모바일 ── */
@media(max-width:480px){
  .ws-topbar{top:10px;max-width:calc(100% - 20px);padding:7px 8px;gap:7px}
  .ws-back{padding:7px 12px 7px 9px;font-size:12.5px}
  .ws-appname{font-size:13px}
  .ws-tab{padding:7px 13px;font-size:12.5px}
}

/* ── 리퀴드 글래스 앱 계층 (UI 통일 1차, 2026-08) ─────────────────────────
   워크스페이스 홈(/work)·디자인 게시판(/design-board)의 리퀴드 글래스 언어를
   앱 내부까지 잇는 단일 원본. opt-in = <body class=wg>. 전역 element 규칙은
   모두 .wg 하위로만 스코프해, 글래스를 채택하지 않은 앱에는 누출되지 않게 한다.
   색은 브랜드 토큰만(그린·민트·선옐로) — 파랑 금지. */
:root{
  --ws-glass:rgba(255,255,255,.42);            /* 글래스 카드 면 */
  --ws-glass-nav:rgba(255,255,255,.3);         /* 네비/바 면 */
  --ws-glass-line:rgba(0,0,0,.1);              /* 글래스 경계선 */
  --ws-hl:inset 0 4px 4px 0 rgba(255,255,255,.25);  /* 상단 하이라이트 */
  --ws-green-strong:rgba(1,89,63,.85);
  --ws-mint-ring:rgba(83,166,127,.28);
}

/* 배경 + 글로우 */
body.wg{background:#fff;color:var(--ws-fg);font-family:var(--ws-sans);
  -webkit-font-smoothing:antialiased;overflow-x:hidden;isolation:isolate}
body.wg:not(.wg-dark){--accent:var(--ws-green);--dim:rgba(83,166,127,.14)}
body.wg::before,body.wg::after{content:"";position:fixed;z-index:-1;pointer-events:none;
  border-radius:50%;filter:blur(90px)}
body.wg::before{width:640px;height:460px;left:-160px;top:-140px;background:rgba(83,166,127,.24)}
body.wg::after{width:460px;height:380px;left:40px;top:-40px;background:rgba(1,89,63,.12)}
body.wg.wg-dark{background:var(--ws-dark-bg);color:var(--ws-dark-fg)}
body.wg.wg-dark::before{background:rgba(83,166,127,.12)}
body.wg.wg-dark::after{background:rgba(1,89,63,.18)}
.wg-glow{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.wg-glow i{position:absolute;border-radius:50%;filter:blur(90px)}
.wg-glow .a{width:640px;height:460px;left:-160px;top:-140px;background:rgba(83,166,127,.24)}
.wg-glow .b{width:460px;height:380px;left:40px;top:-40px;background:rgba(1,89,63,.12)}
.wg-wrap{position:relative;z-index:1}         /* 콘텐츠를 글로우 위로 */

/* 글래스 카드 */
.wg-card{border-radius:var(--ws-radius-lg);
  -webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);
  background:var(--ws-glass);border:1px solid var(--ws-glass-line);
  box-shadow:var(--ws-hl),0 2px 8px rgba(1,89,63,.05)}

/* 폼 필드(글래스) */
.wg label{display:block;font-size:11.5px;font-weight:600;color:var(--ws-mut);margin:14px 0 6px}
.wg input[type=text],.wg input[type=password],.wg input[type=search],
.wg input[type=email],.wg input[type=number],.wg input[type=date],
.wg input[type=tel],.wg input:not([type]),.wg select,.wg textarea{
  width:100%;font:inherit;font-size:14.5px;color:var(--ws-fg);
  background:rgba(255,255,255,.7);border:1px solid var(--ws-glass-line);
  border-radius:11px;padding:11px 12px;outline:none;
  transition:border-color .15s,box-shadow .15s}
.wg input:focus-visible,.wg select:focus-visible,.wg textarea:focus-visible{
  border-color:var(--ws-mint);box-shadow:0 0 0 3px var(--ws-mint-ring)}
.wg select{cursor:pointer}

/* 버튼(글래스) */
.wg-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  font:inherit;font-size:14px;font-weight:600;cursor:pointer;
  padding:11px 18px;border-radius:12px;border:0;white-space:nowrap;
  background:var(--ws-green-strong);color:#fff;
  box-shadow:inset 0 4px 4px 0 rgba(255,255,255,.35);
  transition:transform .18s ease,background .18s}
.wg-btn:hover{transform:scale(1.02);background:var(--ws-green)}
.wg-btn:disabled{opacity:.5;cursor:wait;transform:none}
.wg-btn.ghost{background:rgba(255,255,255,.55);color:var(--ws-green);
  border:1px solid var(--ws-glass-line);box-shadow:none}
.wg-btn.ghost:hover{background:rgba(1,89,63,.06);box-shadow:0 4px 12px rgba(1,89,63,.12)}
.wg-btn svg{width:16px;height:16px;flex:none}

/* 아이콘 칩 */
.wg-ic{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;
  background:rgba(1,89,63,.08);color:var(--ws-green)}
.wg-ic svg{width:18px;height:18px}

/* Workspace UI v6 · 공통 벡터 아이콘 — OS별 모양이 달라지는 이모지 대신 한 가지 선형 아이콘을 쓴다. */
.ws-i{display:inline-block;flex:none;width:1em;height:1em;vertical-align:-.14em;
  background:currentColor;-webkit-mask:var(--ws-i) center/contain no-repeat;mask:var(--ws-i) center/contain no-repeat}
.ws-i-upload{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 16V4M7 9l5-5 5 5M5 20h14'/%3E%3C/svg%3E")}
.ws-i-search{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m16 16 4 4'/%3E%3C/svg%3E")}
.ws-i-clipboard{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='4' width='14' height='17' rx='2'/%3E%3Cpath d='M9 4.5V3h6v1.5M9 10h6M9 14h6M9 18h4'/%3E%3C/svg%3E")}
.ws-i-edit{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L8 18l-4 1 1-4Z'/%3E%3C/svg%3E")}
.ws-i-ticket{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8a2 2 0 0 0 0 4v4a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-4a2 2 0 0 0 0-4V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2Z'/%3E%3Cpath d='M13 5v2M13 11v2M13 17v2'/%3E%3C/svg%3E")}
.ws-i-check{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m8 12 2.7 2.7L16.5 9'/%3E%3C/svg%3E")}
.ws-i-image{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Ccircle cx='8.5' cy='9' r='1.5'/%3E%3Cpath d='m21 15-5-5L5 20'/%3E%3C/svg%3E")}
.ws-i-camera{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 7h3l1.5-2h7L17 7h3a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2Z'/%3E%3Ccircle cx='12' cy='13' r='4'/%3E%3C/svg%3E")}
.ws-i-tool{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a4 4 0 0 0-5-5L12 3.6 8.6 7 6.3 4.7a4 4 0 0 0 5 5L4 17.3a2.1 2.1 0 0 0 3 3l7.7-7.7a4 4 0 0 0 5-5L17.4 10 14 6.6Z'/%3E%3C/svg%3E")}
.ws-i-file{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2h8l4 4v16H6Z'/%3E%3Cpath d='M14 2v5h5M9 12h6M9 16h6'/%3E%3C/svg%3E")}
.ws-i-paperclip{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m20 12-8.5 8.5a5 5 0 0 1-7-7L14 4a3.5 3.5 0 0 1 5 5l-9.5 9.5a2 2 0 0 1-3-3L15 7'/%3E%3C/svg%3E")}
.ws-i-folder{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z'/%3E%3C/svg%3E")}
.ws-i-users{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3'/%3E%3Cpath d='M3 20v-2a5 5 0 0 1 10 0v2M16 5.3a3 3 0 0 1 0 5.4M16 14a5 5 0 0 1 5 5v1'/%3E%3C/svg%3E")}
.ws-i-money{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='5' width='20' height='14' rx='2'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M6 9v6M18 9v6'/%3E%3C/svg%3E")}
.ws-i-phone{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 2 .7 2.9a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c1 .4 1.9.6 2.9.7a2 2 0 0 1 1.7 2Z'/%3E%3C/svg%3E")}
.ws-i-calendar{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M16 3v4M8 3v4M3 10h18'/%3E%3C/svg%3E")}
.ws-i-list{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M9 6h12M9 12h12M9 18h12M3 6h.01M3 12h.01M3 18h.01'/%3E%3C/svg%3E")}
.ws-i-printer{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/%3E%3Cpath d='M6 14h12v8H6Z'/%3E%3C/svg%3E")}
.ws-i-warning{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.3 3.7 2.2 18a2 2 0 0 0 1.8 3h16a2 2 0 0 0 1.8-3L13.7 3.7a2 2 0 0 0-3.4 0Z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E")}
.ws-i-link{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.1.1l2-2a5 5 0 0 0-7.1-7.1l-1.1 1.1M14 11a5 5 0 0 0-7.1-.1l-2 2A5 5 0 0 0 12 20l1.1-1.1'/%3E%3C/svg%3E")}
.ws-i-clock{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E")}
.ws-i-pen{--ws-i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 5 4 4M13 7l4 4-9 9H4v-4Z'/%3E%3C/svg%3E")}
.hic .ws-i,.mk .ws-i{width:24px;height:24px}
.ws-tab .ws-i,.tab .ws-i,.btn .ws-i,button .ws-i,.pickbtn .ws-i{width:15px;height:15px;margin-right:5px}
.card > .ic .ws-i{width:22px;height:22px}

/* 기존 앱의 의미 있는 래퍼만 공통 글래스 표면으로 승격한다. */
body.wg .panel,body.wg .card,body.wg .frm,body.wg .create,
body.wg .scard,body.wg .sblk,body.wg .sbar,body.wg .side,
body.wg .toolbar,body.wg .summary,body.wg .editor,body.wg .upbox{
  -webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);
  background:var(--ws-glass);border-color:var(--ws-glass-line);
  box-shadow:var(--ws-hl),0 2px 8px rgba(1,89,63,.05)}
body.wg.wg-dark .panel,body.wg.wg-dark .card,body.wg.wg-dark .frm,
body.wg.wg-dark .create,body.wg.wg-dark .toolbar,body.wg.wg-dark .summary,
body.wg.wg-dark .editor{background:rgba(62,58,57,.72);border-color:var(--ws-dark-line);
  box-shadow:inset 0 4px 4px rgba(255,255,255,.06),0 4px 18px rgba(0,0,0,.18)}

/* 기존 기능명은 유지하고 상호작용 표면만 브랜드 토큰으로 통일한다. */
body.wg button,body.wg .btn,body.wg .go,body.wg .save,body.wg .upbtn,
body.wg .actionbtn{border-radius:12px;transition:transform .18s ease,background .18s,
  border-color .18s,color .18s,box-shadow .18s}
body.wg .go,body.wg .save,body.wg .upbtn,body.wg .actionbtn,
body.wg button.primary{background:var(--ws-green-strong);color:#fff;
  box-shadow:inset 0 4px 4px rgba(255,255,255,.35)}
body.wg .go:hover,body.wg .save:hover,body.wg .upbtn:hover,
body.wg .actionbtn:hover,body.wg button.primary:hover{background:var(--ws-green);transform:scale(1.02)}
body.wg button:focus-visible,body.wg a:focus-visible{outline:none;
  box-shadow:0 0 0 3px var(--ws-mint-ring)}
body.wg .seg button.on,body.wg .tab.on,body.wg .chip.on,
body.wg .tabs button.on{background:var(--ws-green);color:#fff;border-color:var(--ws-green)}

@media (prefers-reduced-motion:reduce){body.wg *,body.wg *::before,body.wg *::after{transition:none!important}}

/* ── Workspace UI v4 · 앱 간 정밀 통일 레이어 (2026-08) ───────────────
   기능별 고유 화면은 유지하고, 화면의 리듬과 조작 언어만 하나로 묶는다. */
:root{
  --ws-canvas:#F7F9F8;
  --ws-surface:rgba(255,255,255,.76);
  --ws-surface-solid:#FFFFFF;
  --ws-surface-soft:rgba(241,247,244,.78);
  --ws-ink:#17231F;
  --ws-ink-2:#46544F;
  --ws-ink-3:#7A8883;
  --ws-border:rgba(25,61,49,.12);
  --ws-border-strong:rgba(25,61,49,.2);
  --ws-brand:#075F45;
  --ws-brand-hover:#044C38;
  --ws-brand-soft:#EAF5F0;
  --ws-positive:#087B56;
  --ws-warning:#A86508;
  --ws-danger:#C43B42;
  --ws-r-sm:10px;
  --ws-r-md:14px;
  --ws-r-lg:20px;
  --ws-r-xl:26px;
  --ws-shadow-xs:0 1px 2px rgba(17,45,36,.04);
  --ws-shadow-sm:0 8px 24px rgba(17,45,36,.07),0 1px 2px rgba(17,45,36,.05);
  --ws-shadow-md:0 20px 50px rgba(17,45,36,.10),0 2px 7px rgba(17,45,36,.05);
  --ws-focus:0 0 0 4px rgba(83,166,127,.22);
  --ws-control-h:44px;
  --ws-content:1160px;
  --ws-ease:cubic-bezier(.2,.75,.25,1);
}

/* 캔버스와 배경광 */
html:has(body.wg[data-ws-app]){background:var(--ws-canvas)}
body.wg[data-ws-app]{
  min-height:100vh;background:var(--ws-canvas);color:var(--ws-ink);
  line-height:1.55;letter-spacing:-.012em;
}
body.wg[data-ws-app]::before{
  width:760px;height:560px;left:-240px;top:-230px;
  background:radial-gradient(circle,rgba(96,196,151,.24) 0,rgba(96,196,151,.09) 48%,transparent 72%);
  filter:blur(36px);opacity:.9;
}
body.wg[data-ws-app]::after{
  width:560px;height:420px;left:13vw;top:-240px;
  background:radial-gradient(circle,rgba(255,207,100,.12),rgba(83,166,127,.06) 52%,transparent 72%);
  filter:blur(42px);
}
/* 각 앱의 fixed/sticky 위치 체계를 보존한다. 배경광은 음수 z-index라 별도 강제가 필요 없다. */

/* 떠 있는 공통 내비게이션 */
body.wg[data-ws-app] > .ws-topbar{
  top:16px;z-index:200;height:54px;margin:16px auto 34px;padding:7px 9px 7px 8px;
  gap:10px;background:rgba(255,255,255,.68);border-color:rgba(25,61,49,.13);
  border-radius:18px;box-shadow:inset 0 1px 0 rgba(255,255,255,.88),0 14px 36px rgba(24,65,51,.12);
  -webkit-backdrop-filter:blur(28px) saturate(150%);backdrop-filter:blur(28px) saturate(150%);
}
body.wg[data-ws-app] .ws-back{
  min-height:38px;padding:0 14px 0 11px;border-color:transparent;background:rgba(255,255,255,.76);
  box-shadow:inset 0 0 0 1px rgba(25,61,49,.1);font-size:13px;color:var(--ws-ink-2);
}
body.wg[data-ws-app] .ws-back:hover{
  background:#fff;color:var(--ws-brand);border-color:transparent;
  box-shadow:inset 0 0 0 1px rgba(7,95,69,.24),0 5px 14px rgba(7,95,69,.1);
}
body.wg[data-ws-app] .ws-appname{display:inline-flex;align-items:center;gap:8px;color:var(--ws-ink);font-size:13.5px}
body.wg[data-ws-app] .ws-appname::before{
  content:"";width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,#72D3A6,var(--ws-brand));
  box-shadow:0 0 0 4px rgba(83,166,127,.12);
}
body.wg[data-ws-app] .ws-tag{padding:3px 8px;background:var(--ws-brand-soft);border-color:rgba(7,95,69,.14);color:var(--ws-brand)}

/* 공통 콘텐츠 폭과 세로 리듬 */
body.wg[data-ws-app] > .wrap{
  box-sizing:border-box;width:min(var(--ws-content),calc(100% - 40px));max-width:var(--ws-content);
  margin-left:auto;margin-right:auto;padding-left:0;padding-right:0;padding-bottom:72px;
}
body.wg[data-ws-app] h1{color:var(--ws-ink);letter-spacing:-.035em;font-weight:760}
body.wg[data-ws-app] h2{color:var(--ws-ink);letter-spacing:-.025em}
body.wg[data-ws-app] .sub,body.wg[data-ws-app] .muted,body.wg[data-ws-app] .lead,
body.wg[data-ws-app] .hint,body.wg[data-ws-app] .meta{color:var(--ws-ink-3)}
body.wg[data-ws-app] > .wrap > header:not(.pg),
body.wg[data-ws-app] > .wrap > .pg{
  margin:0 0 22px;padding:4px 2px;display:flex;align-items:center;gap:14px;
  border:0;background:transparent;box-shadow:none;
}
body.wg[data-ws-app] > .wrap > header h1,
body.wg[data-ws-app] > .wrap > .pg h1{margin:0;font-size:clamp(24px,2.5vw,32px);line-height:1.16}
body.wg[data-ws-app] .hic,body.wg[data-ws-app] .mk{
  display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:16px;
  background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(226,242,235,.76));
  color:var(--ws-brand);border:1px solid var(--ws-border);box-shadow:var(--ws-shadow-xs);font-size:22px;
}

/* 패널과 카드: 동일한 깊이, 테두리, 모서리 */
body.wg[data-ws-app] .panel,body.wg[data-ws-app] .card,
body.wg[data-ws-app] .frm,body.wg[data-ws-app] .create,
body.wg[data-ws-app] .sbar,body.wg[data-ws-app] .toolbar,
body.wg[data-ws-app] .summary,body.wg[data-ws-app] .editor,
body.wg[data-ws-app] .upbox,body.wg[data-ws-app] .wg-card{
  border:1px solid var(--ws-border);border-radius:var(--ws-r-lg);
  background:var(--ws-surface);box-shadow:var(--ws-shadow-sm),inset 0 1px 0 rgba(255,255,255,.76);
  -webkit-backdrop-filter:blur(22px) saturate(125%);backdrop-filter:blur(22px) saturate(125%);
}
body.wg[data-ws-app] .panel:hover,body.wg[data-ws-app] a.card:hover{
  border-color:var(--ws-border-strong);box-shadow:var(--ws-shadow-md),inset 0 1px 0 rgba(255,255,255,.84);
}
body.wg[data-ws-app] .void,body.wg[data-ws-app] .empty{
  color:var(--ws-ink-3);border-color:var(--ws-border);border-radius:var(--ws-r-md);
}

/* 폼 조작 언어 */
body.wg[data-ws-app] label{color:var(--ws-ink-2);font-size:12px;font-weight:680;letter-spacing:-.006em}
body.wg[data-ws-app] input[type=text],body.wg[data-ws-app] input[type=password],
body.wg[data-ws-app] input[type=search],body.wg[data-ws-app] input[type=email],
body.wg[data-ws-app] input[type=number],body.wg[data-ws-app] input[type=date],
body.wg[data-ws-app] input[type=tel],body.wg[data-ws-app] input:not([type]),
body.wg[data-ws-app] select,body.wg[data-ws-app] textarea{
  box-sizing:border-box;min-height:var(--ws-control-h);border:1px solid var(--ws-border-strong);
  border-radius:var(--ws-r-sm);background:rgba(255,255,255,.82);color:var(--ws-ink);
  box-shadow:inset 0 1px 2px rgba(17,45,36,.025);font-family:var(--ws-sans);
}
body.wg[data-ws-app] input::placeholder,body.wg[data-ws-app] textarea::placeholder{color:#94A19D}
body.wg[data-ws-app] input:focus-visible,body.wg[data-ws-app] select:focus-visible,
body.wg[data-ws-app] textarea:focus-visible{border-color:rgba(7,95,69,.52);box-shadow:var(--ws-focus);outline:0}
body.wg[data-ws-app] input:disabled,body.wg[data-ws-app] select:disabled,
body.wg[data-ws-app] textarea:disabled{background:rgba(235,240,238,.72);color:var(--ws-ink-3);cursor:not-allowed}

/* 버튼, 탭, 칩 */
body.wg[data-ws-app] button,body.wg[data-ws-app] .btn,body.wg[data-ws-app] .actionbtn,
body.wg[data-ws-app] .go,body.wg[data-ws-app] .save,body.wg[data-ws-app] .upbtn{
  min-height:40px;border-radius:var(--ws-r-sm);font-family:var(--ws-sans);font-weight:680;
  transition:transform .16s var(--ws-ease),box-shadow .16s var(--ws-ease),background .16s,border-color .16s;
}
body.wg[data-ws-app] .go,body.wg[data-ws-app] .save,body.wg[data-ws-app] .upbtn,
body.wg[data-ws-app] .actionbtn,body.wg[data-ws-app] button.primary,body.wg[data-ws-app] .new{
  background:linear-gradient(180deg,#087052,var(--ws-brand));color:#fff;border-color:rgba(4,76,56,.7);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),0 5px 13px rgba(7,95,69,.18);
}
body.wg[data-ws-app] .go:hover,body.wg[data-ws-app] .save:hover,body.wg[data-ws-app] .upbtn:hover,
body.wg[data-ws-app] .actionbtn:hover,body.wg[data-ws-app] button.primary:hover,body.wg[data-ws-app] .new:hover{
  background:linear-gradient(180deg,#076347,var(--ws-brand-hover));transform:translateY(-1px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 8px 18px rgba(7,95,69,.2);
}
body.wg[data-ws-app] button:active,body.wg[data-ws-app] .btn:active{transform:translateY(0)}
body.wg[data-ws-app] button:disabled{transform:none;box-shadow:none;opacity:.48}
body.wg[data-ws-app] .ghost,body.wg[data-ws-app] .btn.sec,body.wg[data-ws-app] .btn.sub,
body.wg[data-ws-app] .vbtn,body.wg[data-ws-app] .tgl,body.wg[data-ws-app] .cnav{
  background:rgba(255,255,255,.72);color:var(--ws-ink-2);border:1px solid var(--ws-border-strong);box-shadow:var(--ws-shadow-xs);
}
body.wg[data-ws-app] .ghost:hover,body.wg[data-ws-app] .btn.sec:hover,
body.wg[data-ws-app] .vbtn:hover,body.wg[data-ws-app] .tgl:hover{
  color:var(--ws-brand);border-color:rgba(7,95,69,.3);background:#fff;transform:translateY(-1px);
}
body.wg[data-ws-app] .tabs,body.wg[data-ws-app] .ws-tabs{gap:6px;margin-bottom:18px}
body.wg[data-ws-app] .tab,body.wg[data-ws-app] .ws-tab,body.wg[data-ws-app] .seg button,
body.wg[data-ws-app] .vbtn{
  min-height:38px;padding:0 15px;border-radius:999px;background:rgba(255,255,255,.68);
  border:1px solid var(--ws-border);color:var(--ws-ink-2);box-shadow:var(--ws-shadow-xs);
}
body.wg[data-ws-app] .tab.on,body.wg[data-ws-app] .ws-tab.on,
body.wg[data-ws-app] .seg button.on,body.wg[data-ws-app] .vbtn.on{
  background:var(--ws-brand);color:#fff;border-color:var(--ws-brand);
  box-shadow:0 5px 14px rgba(7,95,69,.18);
}
body.wg[data-ws-app] .chip,body.wg[data-ws-app] .tag,body.wg[data-ws-app] .badge,
body.wg[data-ws-app] .cnt{border-radius:999px}

/* 표와 목록 */
body.wg[data-ws-app] table{border-collapse:separate;border-spacing:0}
body.wg[data-ws-app] table:not(.xl) th{
  background:rgba(235,243,239,.82);color:var(--ws-ink-2);font-size:11.5px;font-weight:720;
  letter-spacing:.012em;border-color:var(--ws-border);
}
body.wg[data-ws-app] table:not(.xl) td{border-color:var(--ws-border);color:var(--ws-ink)}
body.wg[data-ws-app] table:not(.xl) tbody tr{transition:background .14s}
body.wg[data-ws-app] table:not(.xl) tbody tr:hover{background:rgba(234,245,240,.56)}
body.wg[data-ws-app] .row{border-color:var(--ws-border)}

/* 파일 놓기/빈 상태 */
body.wg[data-ws-app] .drop,body.wg[data-ws-app] .badgedrop,body.wg[data-ws-app] .pickbtn{
  border:1.5px dashed rgba(7,95,69,.28);border-radius:var(--ws-r-md);
  background:linear-gradient(145deg,rgba(255,255,255,.62),rgba(234,245,240,.62));
  transition:border-color .16s,background .16s,transform .16s var(--ws-ease);
}
body.wg[data-ws-app] .drop:hover,body.wg[data-ws-app] .badgedrop:hover,body.wg[data-ws-app] .pickbtn:hover{
  border-color:rgba(7,95,69,.55);background:rgba(234,245,240,.86);transform:translateY(-1px);
}

/* 자료 업로드 */
body.wg[data-ws-app="upload"] > .box{
  box-sizing:border-box;width:min(520px,calc(100% - 32px));margin:0 auto 72px;padding:32px;
  border-radius:var(--ws-r-xl);box-shadow:var(--ws-shadow-md),inset 0 1px 0 rgba(255,255,255,.8);
}
body.wg[data-ws-app="upload"] .box .mk{margin:0 auto 15px}
body.wg[data-ws-app="upload"] .box h1{text-align:center;font-size:28px;margin-bottom:4px}
body.wg[data-ws-app="upload"] .box .s{text-align:center;color:var(--ws-ink-3);margin-bottom:24px}

/* 자료 탐색기 */
body.wg[data-ws-app="explorer"] > .top,
body.wg[data-ws-app="explorer"] > .list{
  box-sizing:border-box;width:min(var(--ws-content),calc(100% - 40px));max-width:var(--ws-content);margin-left:auto;margin-right:auto;
}
body.wg[data-ws-app="explorer"] > .top{
  position:sticky;top:86px;z-index:80;margin-bottom:12px;padding:14px 16px;border:1px solid var(--ws-border);
  border-radius:var(--ws-r-lg);background:rgba(255,255,255,.76);box-shadow:var(--ws-shadow-sm);
  -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
}
body.wg[data-ws-app="explorer"] .crumb{font-size:13px;font-weight:650;color:var(--ws-ink-2)}
body.wg[data-ws-app="explorer"] > .top input{width:min(380px,100%);flex:0 1 380px}
body.wg[data-ws-app="explorer"] > .list{overflow:hidden;border:1px solid var(--ws-border);border-radius:var(--ws-r-lg);background:var(--ws-surface);box-shadow:var(--ws-shadow-sm)}
body.wg[data-ws-app="explorer"] > .list > .row{padding:13px 18px}

/* 업무일지 */
body.wg[data-ws-app="worklog"] > .wrap{max-width:920px}
body.wg[data-ws-app="worklog"] .panel{padding:22px}
body.wg[data-ws-app="worklog"] .head3{gap:14px;padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--ws-border)}
body.wg[data-ws-app="worklog"] .trow{gap:8px;padding:7px;border-radius:12px;transition:background .14s}
body.wg[data-ws-app="worklog"] .trow:focus-within{background:rgba(234,245,240,.65)}

/* 현장 운영 허브 */
body.wg[data-ws-app="onsite"] > .wrap{max-width:980px}
body.wg[data-ws-app="onsite"] .grid{gap:16px}
body.wg[data-ws-app="onsite"] a.card{min-height:190px;padding:24px;border-radius:var(--ws-r-lg);transform:translateY(0)}
body.wg[data-ws-app="onsite"] a.card:hover{transform:translateY(-3px)}
body.wg[data-ws-app="onsite"] a.card .ic{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--ws-brand-soft);margin-bottom:20px}
body.wg[data-ws-app="onsite"] a.card b{font-size:18px;color:var(--ws-ink)}
body.wg[data-ws-app="onsite"] a.card p{color:var(--ws-ink-3);line-height:1.65}

/* 체크인과 현장 사진 */
body.wg[data-ws-app="checkin-launch"] > .wrap,
body.wg[data-ws-app="photo"] > .wrap{max-width:760px}
body.wg[data-ws-app="checkin-launch"] .create{padding:8px;margin:10px 0 16px;gap:8px}
body.wg[data-ws-app="checkin-launch"] .ev{border-color:var(--ws-border);border-radius:var(--ws-r-lg);padding:18px}
body.wg[data-ws-app="checkin-launch"] .back,
body.wg[data-ws-app="photo"] .back{display:inline-flex;margin-bottom:12px;color:var(--ws-brand);font-size:13px;font-weight:680;text-decoration:none}
body.wg[data-ws-app="photo"] .pick{gap:12px;margin:14px 0}
body.wg[data-ws-app="photo"] .pickbtn{padding:18px;font-weight:680;color:var(--ws-brand)}
body.wg[data-ws-app="photo"] > .go{background:rgba(255,255,255,.76);border-top-color:var(--ws-border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}

/* 동향·콘텐츠·프로그램 탐색 */
body.wg[data-ws-app="trends-brief"] > .wrap,
body.wg[data-ws-app="trends"] > .wrap,
body.wg[data-ws-app="content"] > .wrap,
body.wg[data-ws-app="programs"] > .wrap{max-width:1060px}
body.wg[data-ws-app="trends"] .top{margin-bottom:14px;padding:12px 14px;border:1px solid var(--ws-border);border-radius:var(--ws-r-md);background:var(--ws-surface)}
body.wg[data-ws-app="trends"] .scards{gap:12px}
body.wg[data-ws-app="trends"] .scard{border:1px solid var(--ws-border);border-radius:var(--ws-r-md);background:rgba(255,255,255,.7);box-shadow:var(--ws-shadow-xs)}
body.wg[data-ws-app="trends"] .usmark{display:inline-flex;margin-left:5px;padding:1px 6px;border:1px solid rgba(7,95,69,.2);border-radius:999px;background:var(--ws-brand-soft);color:var(--ws-brand);font-size:9px;font-weight:750;vertical-align:1px}
body.wg[data-ws-app="trends"] .hrow,
body.wg[data-ws-app="trends-brief"] .item,
body.wg[data-ws-app="content"] .item{border-color:var(--ws-border);background:rgba(255,255,255,.64)}
body.wg[data-ws-app="content"] .card,
body.wg[data-ws-app="programs"] .card,
body.wg[data-ws-app="trends-brief"] .card{padding:22px}
body.wg[data-ws-app="programs"] .sbar{padding:8px;gap:8px}
body.wg[data-ws-app="programs"] .sbar button{min-width:84px}

/* 생성기 */
body.wg[data-ws-app="generate"] > .wrap{max-width:1040px}
body.wg[data-ws-app="generate"] > .wrap > .card{padding:22px}
body.wg[data-ws-app="generate"] .frm{padding:0;border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
body.wg[data-ws-app="generate"] .seg{padding:5px;background:rgba(234,245,240,.68);border:1px solid var(--ws-border);border-radius:var(--ws-r-md)}
body.wg[data-ws-app="generate"] .segopt{border-radius:11px}
body.wg[data-ws-app="generate"] .drop{padding:20px}
body.wg[data-ws-app="generate"] .go{min-height:48px;font-size:15px}

/* CRM */
body.wg[data-ws-app="crm"] > .top{
  box-sizing:border-box;width:min(1280px,calc(100% - 40px));max-width:1280px;margin:0 auto 14px;
  position:sticky;top:86px;z-index:80;padding:10px;border:1px solid var(--ws-border);border-radius:var(--ws-r-lg);
  background:rgba(255,255,255,.78);box-shadow:var(--ws-shadow-sm);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
}
body.wg[data-ws-app="crm"] > .wrap{max-width:1280px;width:min(1280px,calc(100% - 40px))}
body.wg[data-ws-app="crm"] > .side{
  position:fixed;inset:0 -460px 0 auto;z-index:260;width:min(440px,100vw);height:100dvh;
  margin:0;border-radius:0;border-top:0;border-right:0;border-bottom:0;
  box-shadow:none;transition:right .2s var(--ws-ease);
}
body.wg[data-ws-app="crm"] > .side.on{right:0;box-shadow:-18px 0 60px rgba(17,45,36,.2)}
body.wg[data-ws-app="crm"] .cnt{padding:0 8px;color:var(--ws-ink-3)}
body.wg[data-ws-app="crm"] > .top input{width:auto;flex:1 1 320px}
body.wg[data-ws-app="crm"] .new{min-height:40px;border-radius:999px;padding:0 18px}
body.wg[data-ws-app="crm"] .rec,body.wg[data-ws-app="crm"] .calcell{border-color:var(--ws-border);box-shadow:var(--ws-shadow-xs)}

/* 메일 병합 */
body.wg[data-ws-app="mailmerge"] > .wrap{max-width:1040px}
body.wg[data-ws-app="mailmerge"] > .wrap > header img{height:24px!important}
body.wg[data-ws-app="mailmerge"] .card{padding:22px}
body.wg[data-ws-app="mailmerge"] .fld{padding:18px 0;border-color:var(--ws-border)}
body.wg[data-ws-app="mailmerge"] .bd{border-color:var(--ws-border)}

/* 실시간 견적 편집기: 업무 문서 캔버스는 보존, 주변 UI만 통일 */
body.wg[data-ws-app="quote-editor"]{--ws-content:1460px}
body.wg[data-ws-app="quote-editor"] > .wrap{width:min(1460px,calc(100% - 40px));max-width:1460px}
body.wg[data-ws-app="quote-editor"] .pg{padding:2px 2px 8px}
body.wg[data-ws-app="quote-editor"] .pg{display:block}
body.wg[data-ws-app="quote-editor"] .pg .sub{display:block;margin-top:6px}
body.wg[data-ws-app="quote-editor"] .panel{padding:18px;margin-bottom:14px}
body.wg[data-ws-app="quote-editor"] #collabbar{border-radius:var(--ws-r-md)!important}
body.wg[data-ws-app="quote-editor"] .paperwrap{border-radius:var(--ws-r-lg);border-color:var(--ws-border);box-shadow:var(--ws-shadow-sm);overflow:hidden}
body.wg[data-ws-app="quote-editor"] .sheetctl{background:rgba(240,245,243,.94);border-color:var(--ws-border);padding:10px 14px}
body.wg[data-ws-app="quote-editor"] .paper{box-shadow:0 16px 38px rgba(20,37,31,.14)}

/* 어두운 운영 화면 공통 */
body.wg.wg-dark[data-ws-app]{
  --ws-ink:#F4F8F6;--ws-ink-2:#D0DAD6;--ws-ink-3:#94A69F;
  --ws-border:rgba(214,238,227,.13);--ws-border-strong:rgba(214,238,227,.23);
  --ws-surface:rgba(41,52,48,.76);--ws-surface-solid:#2A3531;--ws-surface-soft:rgba(55,69,64,.72);
  --ws-canvas:#1D2522;background:var(--ws-canvas);color:var(--ws-ink);
}
body.wg.wg-dark[data-ws-app] > .ws-topbar{background:rgba(35,45,41,.76);border-color:var(--ws-border)}
body.wg.wg-dark[data-ws-app] .ws-back{background:rgba(54,67,62,.82);color:var(--ws-ink-2);box-shadow:inset 0 0 0 1px var(--ws-border)}
body.wg.wg-dark[data-ws-app] .ws-appname{color:var(--ws-ink)}
body.wg.wg-dark[data-ws-app] .panel,body.wg.wg-dark[data-ws-app] .card,
body.wg.wg-dark[data-ws-app] .cfgbar{background:var(--ws-surface);border-color:var(--ws-border);box-shadow:0 14px 38px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.045)}
body.wg.wg-dark[data-ws-app] input[type=text],body.wg.wg-dark[data-ws-app] input[type=password],
body.wg.wg-dark[data-ws-app] input[type=search],body.wg.wg-dark[data-ws-app] input[type=email],
body.wg.wg-dark[data-ws-app] input[type=number],body.wg.wg-dark[data-ws-app] input[type=date],
body.wg.wg-dark[data-ws-app] input[type=tel],body.wg.wg-dark[data-ws-app] input:not([type]),
body.wg.wg-dark[data-ws-app] select,body.wg.wg-dark[data-ws-app] textarea{
  background:rgba(23,31,28,.72);border-color:var(--ws-border-strong);color:var(--ws-ink);
}
body.wg[data-ws-app="satisfaction"] > .wrap{max-width:880px}
body.wg[data-ws-app="satisfaction"] .card{padding:24px;margin-bottom:16px;border-radius:var(--ws-r-lg)}
body.wg[data-ws-app="satisfaction"] .card h2{margin-top:0;font-size:17px;color:var(--ws-brand)}
body.wg[data-ws-app="satisfaction"] .drop{
  padding:28px;background:linear-gradient(180deg,rgba(255,255,255,.94),rgba(239,248,244,.9));
  border-color:rgba(7,95,69,.28);color:var(--ws-ink);
}
body.wg[data-ws-app="satisfaction"] .drop:hover,
body.wg[data-ws-app="satisfaction"] .drop.on{background:var(--ws-brand-soft);border-color:rgba(7,95,69,.55)}
body.wg[data-ws-app="satisfaction"] .file .tag{background:var(--ws-brand-soft)}
body.wg[data-ws-app="satisfaction"] .dl a{background:#fff}
body.wg[data-ws-app="satisfaction"] .dl a:hover{background:var(--ws-brand-soft)}
body.wg[data-ws-app="satisfaction"] .go{min-height:48px}

/* 리셉션 스태프 콘솔 */
body.wg[data-ws-app="reception-admin"] > .wrap{width:min(1440px,calc(100% - 40px));max-width:1440px}
body.wg[data-ws-app="reception-admin"] > .wrap > header{
  margin-bottom:18px;padding:4px 2px 16px;border-bottom:1px solid var(--ws-border);
}
body.wg[data-ws-app="reception-admin"] > .wrap > header img{height:30px}
body.wg[data-ws-app="reception-admin"] .stats{gap:12px;margin-bottom:12px}
body.wg[data-ws-app="reception-admin"] .stats .card{padding:18px;border-radius:var(--ws-r-md)}
body.wg[data-ws-app="reception-admin"] .cfgbar{padding:14px 16px;margin-bottom:12px;border:1px solid var(--ws-border);border-radius:var(--ws-r-md)}
body.wg[data-ws-app="reception-admin"] .panel{border-radius:var(--ws-r-lg);overflow:hidden}
body.wg[data-ws-app="reception-admin"] .grid{gap:16px}

/* 반응형: 조밀하지만 워크스페이스 복귀 링크는 항상 유지 */
@media(max-width:760px){
  :root{--ws-control-h:43px}
  body.wg[data-ws-app] > .ws-topbar{top:10px;margin:10px auto 26px;max-width:calc(100% - 20px);height:50px;border-radius:16px}
  body.wg[data-ws-app] .ws-back{display:inline-flex;min-height:36px;padding:0 11px 0 9px;font-size:12px}
  body.wg[data-ws-app] .ws-appname{font-size:12.5px;max-width:42vw}
  body.wg[data-ws-app] .ws-appname::before{width:6px;height:6px}
  body.wg[data-ws-app] .ws-tag{display:none}
  body.wg[data-ws-app] > .wrap,
  body.wg[data-ws-app="explorer"] > .top,body.wg[data-ws-app="explorer"] > .list,
  body.wg[data-ws-app="crm"] > .top{width:calc(100% - 24px);padding-left:0;padding-right:0}
  body.wg[data-ws-app] > .wrap > header:not(.pg),body.wg[data-ws-app] > .wrap > .pg{margin-bottom:18px}
  body.wg[data-ws-app] > .wrap > header h1,body.wg[data-ws-app] > .wrap > .pg h1{font-size:24px}
  body.wg[data-ws-app] .hic,body.wg[data-ws-app] .mk{width:42px;height:42px;border-radius:14px;font-size:19px}
  body.wg[data-ws-app] .panel,body.wg[data-ws-app] .card{border-radius:16px}
  body.wg[data-ws-app="explorer"] > .top,body.wg[data-ws-app="crm"] > .top{top:72px;padding:9px}
  body.wg[data-ws-app="upload"] > .box{width:calc(100% - 24px);padding:24px 20px}
  body.wg[data-ws-app="worklog"] .panel,body.wg[data-ws-app="generate"] > .wrap > .card,
  body.wg[data-ws-app="satisfaction"] .card,body.wg[data-ws-app="mailmerge"] .card{padding:17px}
  body.wg[data-ws-app="quote-editor"] > .wrap{width:calc(100% - 24px)}
  body.wg[data-ws-app="quote-editor"] .panel{padding:14px}
  body.wg[data-ws-app="reception-admin"] > .wrap{width:calc(100% - 24px)}
  body.wg[data-ws-app="generate"] .frm{grid-template-columns:1fr}
  body.wg[data-ws-app="generate"] .frm .full{grid-column:1}
  body.wg[data-ws-app="satisfaction"] .f{min-width:0}
  body.wg[data-ws-app="satisfaction"] .rowbtn{min-width:0;flex-wrap:wrap;align-items:stretch}
  body.wg[data-ws-app="satisfaction"] .rowbtn select,
  body.wg[data-ws-app="satisfaction"] .rowbtn .mini{flex:1 1 100%;width:100%;min-width:0}
  body.wg[data-ws-app="reception-admin"] .cfgbar{align-items:stretch}
  body.wg[data-ws-app="reception-admin"] .cfgbar input:not([type=checkbox]){flex-basis:100%;min-width:0}
}
@media(max-width:480px){
  body.wg[data-ws-app] .ws-appname{max-width:34vw}
  body.wg[data-ws-app] .ws-back svg{width:14px}
  body.wg[data-ws-app] .tabs,body.wg[data-ws-app] .ws-tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px;scrollbar-width:none}
  body.wg[data-ws-app] .tabs::-webkit-scrollbar,body.wg[data-ws-app] .ws-tabs::-webkit-scrollbar{display:none}
  body.wg[data-ws-app] .tab,body.wg[data-ws-app] .ws-tab{flex:none}
  body.wg[data-ws-app="onsite"] .grid{grid-template-columns:1fr}
  body.wg[data-ws-app="onsite"] a.card{min-height:0}
  body.wg[data-ws-app="checkin-launch"] .create{flex-direction:column}
  body.wg[data-ws-app="checkin-launch"] .create .btn{min-height:44px}
  body.wg[data-ws-app="explorer"] > .top{position:relative;top:auto}
  body.wg[data-ws-app="explorer"] > .top input{flex-basis:100%;width:100%}
  body.wg[data-ws-app="crm"] > .top{position:relative;top:auto}
  body.wg[data-ws-app="crm"] > .top input{order:5;flex-basis:100%}
  body.wg[data-ws-app="crm"] > .top .new{order:6}
}

@media(prefers-reduced-motion:reduce){
  body.wg[data-ws-app] *,body.wg[data-ws-app] *::before,body.wg[data-ws-app] *::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* ── Workspace UI v8 · 콘텐츠 기준선형 워크스페이스 복귀 내비게이션 ── */
body.wg[data-ws-app] > .ws-topbar{
  position:sticky;top:12px;z-index:200;justify-content:flex-start;
  width:min(var(--ws-content),calc(100% - 40px));max-width:var(--ws-content);height:46px;
  margin:18px auto 26px;padding:0;gap:13px;
  background:transparent;border:0;border-radius:0;box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
body.wg[data-ws-app] .ws-back{
  min-height:44px;padding:6px 16px 6px 7px;gap:10px;border:1px solid rgba(26,62,50,.13);
  border-radius:14px;background:rgba(255,255,255,.88);color:var(--ws-ink-2);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.96),0 8px 24px rgba(24,65,51,.09);
  -webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);
  font-size:13px;font-weight:720;letter-spacing:-.01em;
}
body.wg[data-ws-app] .ws-back svg{
  width:30px;height:30px;padding:7px;border-radius:10px;background:var(--ws-brand-soft);
  color:var(--ws-brand);box-sizing:border-box;transition:transform .18s,background .18s;
}
body.wg[data-ws-app] .ws-back:hover{
  background:#fff;color:var(--ws-brand);border-color:rgba(7,95,69,.24);
  box-shadow:inset 0 1px 0 #fff,0 10px 28px rgba(7,95,69,.13);transform:translateY(-1px);
}
body.wg[data-ws-app] .ws-back:hover svg{transform:translateX(-2px);background:#DDF0E7}
body.wg[data-ws-app] .ws-appname{
  display:inline-flex;align-items:center;gap:13px;color:var(--ws-ink-3);font-size:12.5px;font-weight:680;
}
body.wg[data-ws-app] .ws-appname::before{
  content:"";width:7px;height:7px;border:0;border-top:1.5px solid #9AA7A2;border-right:1.5px solid #9AA7A2;
  border-radius:0;background:none;box-shadow:none;transform:rotate(45deg);
}
body.wg[data-ws-app] .ws-tag{margin-left:-4px}
body.wg.wg-dark[data-ws-app] > .ws-topbar{background:transparent;border:0;box-shadow:none}
body.wg.wg-dark[data-ws-app] .ws-back{
  background:rgba(42,53,49,.88);color:var(--ws-ink-2);border-color:rgba(214,238,227,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 10px 28px rgba(0,0,0,.2);
}

@media(max-width:760px){
  body.wg[data-ws-app] > .ws-topbar{
    top:10px;width:calc(100% - 24px);max-width:none;height:44px;margin:10px auto 24px;padding:0;
  }
  body.wg[data-ws-app] .ws-back{min-height:42px;padding:5px 14px 5px 6px;font-size:12.5px}
  body.wg[data-ws-app] .ws-back svg{width:30px;height:30px}
  body.wg[data-ws-app] .ws-appname,body.wg[data-ws-app] .ws-tag{display:none}
}
