:root{--ink:#171a1f;--red:#e4002b;--red-dark:#c60025;--green:#0a8f62;--bg:#f4f5f7;--muted:#68707a;--line:#dfe2e6;--white:#fff}
*{box-sizing:border-box}
/* 반응형 안전장치: flex/grid 자식이 콘텐츠 때문에 부모 밖으로 밀려나 가로 스크롤을 만들지 않게 한다. */
#app,main,.view,.workspace,.editor,.preview-shell,.admin-layout,.admin-content,.toolbar,.actions,.quote-type,.section-head,.internal-head{min-width:0}
img{max-width:100%;height:auto}
p,h1,h2,h3,strong,small,span,td,th,label,summary,li{overflow-wrap:break-word}
body{margin:0;font:14px/1.5 Pretendard,"Noto Sans KR",Arial,sans-serif;color:#222;background:var(--bg);letter-spacing:-.01em;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit}
button{min-height:40px;max-width:100%;cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 15px;color:var(--ink);font-weight:650;transition:.16s}
/* 작업/메뉴/모드/탭 버튼은 라벨이 글자 단위로 줄바꿈되지 않도록 한 줄 유지. (여러 줄이 필요한 카탈로그 버튼은 아래에서 예외 처리) */
.actions button,.mode button,nav button,.admin-layout aside button,.quote-type>span,.user button,header .ghost{white-space:nowrap}
button:hover:not(:disabled){border-color:#9ba1a8;background:#fafafa}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #e4002b24;outline-offset:1px;border-color:var(--red)}
button:disabled{cursor:not-allowed;opacity:.48}
button.primary{background:var(--red);border-color:var(--red);color:#fff;font-weight:750;box-shadow:0 3px 10px #e4002b2e}
button.primary:hover:not(:disabled){background:var(--red-dark)}
button.ghost{min-height:36px;background:transparent;color:#d8dbe0;border-color:#51555c}
.hidden{display:none!important}
#signup-form{margin:24px 0}#signup-form label{margin:12px 0}#signup-form h1{margin-top:16px}
@media print{#profile-dialog,#signup-form{display:none!important}}
.login-screen{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px calc(16px + env(safe-area-inset-right)) 24px calc(16px + env(safe-area-inset-left));background:radial-gradient(circle at 15% 10%,#343942 0,transparent 34%),linear-gradient(145deg,#171a1f,#252a31)}
.login-card{width:min(408px,100%);background:#fff;border-radius:16px;padding:clamp(24px,6vw,40px);box-shadow:0 28px 70px #0007;border-top:4px solid var(--red)}
.login-card .brand-mark{display:grid;place-items:center;width:56px;height:56px;border-radius:10px;background:var(--red);color:#fff;font-size:23px;font-weight:900}
.login-card h1{margin:22px 0 6px;font-size:26px}.login-card p,.login-card small{color:var(--muted)}
label{display:flex;flex-direction:column;gap:7px;font-weight:650;color:#444a52}.login-card label{margin:20px 0}.login-card button{width:100%;height:46px}.login-card small{display:block;margin-top:18px;text-align:center}
input,select,textarea{width:100%;border:1px solid #c9cdd2;border-radius:8px;background:#fff;padding:9px 12px;min-height:42px;color:#222;font-size:14px}
textarea{resize:vertical;line-height:1.55}
header{height:72px;background:var(--ink);color:#fff;display:flex;align-items:center;padding:0 28px;gap:56px;position:sticky;top:0;z-index:20;box-shadow:0 2px 10px #0003}
.brand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brand>span{display:grid;place-items:center;width:42px;height:38px;background:var(--red);border-radius:7px;font-size:17px;font-weight:900}.brand>div{display:flex;flex-direction:column}.brand strong{font-size:16px;line-height:1.3}.brand small{font-size:9px;color:#9fa4ac;letter-spacing:1.2px}
nav{display:flex;align-self:stretch;gap:4px}nav button{border:0;border-radius:0;background:transparent;color:#aeb3ba;padding:0 20px;border-bottom:3px solid transparent}nav button:hover:not(:disabled){background:#ffffff08;color:#fff}nav button.active{color:#fff;border-color:var(--red);font-weight:750}
.user{margin-left:auto;display:flex;align-items:center;gap:14px}.user-profile{display:flex;align-items:center;gap:8px}.badge{font-size:11px;background:#ffffff18;border:1px solid #ffffff20;padding:3px 8px;border-radius:20px;color:#d9dce1}
.view{display:none}.view.active{display:block}
.toolbar{min-height:72px;padding:12px 28px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 7px #171a1f0a;position:relative;z-index:10}
.quote-type{display:flex;align-items:center;gap:14px}.quote-type>span{font-size:12px;color:var(--muted);font-weight:700}.mode{display:flex;background:#eceef1;border-radius:9px;padding:4px}.mode button{min-height:38px;border:0;background:transparent;padding:8px 18px}.mode button.active{background:#fff;box-shadow:0 2px 7px #0002;font-weight:750}.actions{display:flex;align-items:center;gap:8px}.actions button{height:44px}.actions .primary{padding-inline:22px}.strong-action{border-color:var(--ink)}.action-divider{height:24px;width:1px;background:var(--line);margin:0 3px}
.workspace{display:grid;grid-template-columns:minmax(0,42%) minmax(0,58%);height:calc(100vh - 144px);height:calc(100dvh - 144px)}
.editor{padding:24px;overflow:auto;scrollbar-gutter:stable}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:22px;margin-bottom:18px;box-shadow:0 2px 9px #171a1f09}
.panel h2{font-size:17px;line-height:1.3;margin:0 0 18px;color:var(--ink)}.panel h2>span:first-child{display:inline-grid;place-items:center;width:28px;height:24px;margin-right:8px;border-radius:5px;background:#fff0f3;color:var(--red);font-size:11px;font-weight:800}
.section-head,.internal-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-head h2{margin:0}.small{min-height:34px;padding:6px 11px;font-size:13px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.wide{grid-column:1/-1}.filters{display:grid;grid-template-columns:1fr 150px;gap:10px;margin:16px 0 10px}
.catalog{max-height:420px;overflow:auto;margin-bottom:12px}.catalog-group{border:1px solid var(--line);border-radius:8px;margin-bottom:8px;overflow:hidden}.catalog-group summary,.admin-group summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;background:#f3f4f6;font-weight:700;font-size:13px;color:var(--ink)}.catalog-group summary::-webkit-details-marker,.admin-group summary::-webkit-details-marker{display:none}.catalog-group .cat-count{font-size:11px;font-weight:750;color:var(--red);background:#fff0f3;border-radius:20px;padding:2px 9px;min-height:0}.catalog-group .cat-count:empty{display:none}.catalog-items{padding:6px}.catalog button{display:grid;grid-template-columns:1fr auto;align-items:center;width:100%;border:0;border-bottom:1px solid #eceef0;border-radius:4px;text-align:left;padding:9px 10px}.catalog-items button:last-child{border-bottom:0}.catalog em{font-style:normal;color:var(--red);font-weight:750}.catalog-items button small{grid-column:1/-1;color:var(--muted);font-size:11px;font-weight:500;margin-top:2px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{font-size:12px;color:#59616b;background:#f3f4f6;text-align:left;font-weight:700}th,td{padding:11px 10px;border-bottom:1px solid #e5e7ea;white-space:nowrap;height:42px}td input[type=number]{width:72px;min-height:36px}.empty td,.empty{text-align:center;color:var(--muted);padding:30px}
.terminal-row td{color:var(--muted);font-size:12px;height:34px;padding-top:6px;padding-bottom:6px;border-bottom:1px solid #eef0f2}.terminal-row td:nth-child(2){padding-left:24px}
.admin-group{border:1px solid var(--line);border-radius:8px;margin-bottom:10px}.admin-group .cat-count{font-size:11px;font-weight:750;color:#59616b;background:#eceef0;border-radius:20px;padding:2px 9px}.admin-group .table-wrap{max-height:420px}
.info-box{padding:14px;background:#f5f6f8;border:1px solid #e5e7ea;border-radius:8px;margin-top:14px;color:#555d66}
.internal{background:#f7f7f8;border:1px solid #c7cbd0;border-left:5px solid var(--ink);box-shadow:none}.internal-head h2{margin:2px 0 0}.internal-kicker{font-size:10px;color:var(--muted);font-weight:850;letter-spacing:1.3px}.internal-badge{font-size:11px;background:var(--ink);color:#fff;padding:5px 9px;border-radius:5px}.internal-help{margin:10px 0 16px;color:var(--muted);font-size:12px}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.metrics div{background:#fff;border:1px solid #e1e3e6;padding:13px;border-radius:7px}.metrics span{font-size:11px;color:var(--muted);display:block}.metrics strong{display:block;margin-top:6px;font-size:15px}.metrics .metric-total{background:var(--ink);border-color:var(--ink)}.metrics .metric-total span{color:#aeb3ba}.metrics .metric-total strong{color:#fff}.error{color:#c40025;margin-top:10px;font-weight:650}
.preview-shell{background:#dfe2e6;padding:20px 26px 32px;overflow:auto;border-left:1px solid #d2d5d9}.preview-label{width:min(820px,100%);margin:0 auto 12px;display:flex;justify-content:space-between;align-items:center;color:#414850}.preview-label>div{display:flex;flex-direction:column}.preview-label strong{font-size:13px}.preview-label span{font-size:11px;color:#6c747d}.preview-label .a4-label{border:1px solid #b6bbc1;background:#eef0f2;border-radius:5px;padding:4px 7px;font-size:10px;font-weight:750}
#a4-frame{width:min(820px,100%);margin:0 auto}
.a4{width:100%;min-height:1123px;margin:0 auto;background:#fff;padding:52px 58px;box-shadow:0 10px 32px #171a1f2b;position:relative;border-radius:2px}
.doc-head{display:flex;justify-content:space-between;border-top:8px solid var(--ink);padding-top:22px}.eyebrow{letter-spacing:2px;font-size:10px;color:var(--red);font-weight:850}.doc-head h1{font-size:31px;line-height:1.2;margin:7px 0 6px}.doc-head p{margin:0 0 28px;font-size:11px;color:var(--muted)}.doc-meta{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:5px;padding-top:3px}.doc-meta>span:first-child{color:var(--red);font-size:9px;letter-spacing:1px;font-weight:800}.doc-meta strong{font-size:11px;max-width:280px;overflow-wrap:anywhere}.doc-meta>span:last-child{color:var(--muted);font-size:10px}.doc-meta b{color:var(--ink);margin-left:6px}
.client-strip{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--ink);border-top-width:2px;padding:16px 20px}.client-strip>div{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:2px 12px}.client-strip>div+div{border-left:1px solid var(--line);padding-left:22px}.client-strip span,.support-note span{color:var(--muted);font-size:11px;grid-row:1/3}.client-strip strong{font-size:14px}.client-strip small{font-size:10px;color:var(--muted)}
.doc-section{margin-top:26px}.doc-section-title{display:flex;align-items:center;gap:8px;margin-bottom:10px}.doc-section-title>span{color:var(--red);font-size:10px;font-weight:850}.doc-section h3,.notice h3{font-size:14px;margin:0}.a4 th,.a4 td{font-size:11px;padding:9px 7px;height:38px}.a4 th{border-top:2px solid var(--ink);border-bottom:1px solid #bfc3c8;background:#f3f4f5}.a4 td:nth-last-child(-n+3),.a4 th:nth-last-child(-n+3){text-align:right}
.card-summary{margin-top:18px;background:#fff5f6;border:1px solid #e5a9b4;border-left:4px solid var(--red);border-radius:6px;padding:13px 18px;display:flex;justify-content:space-between;align-items:center}.card-summary>div:last-child{text-align:right}.card-summary span,.card-summary small{display:block;color:var(--muted);font-size:10px}.card-summary div>strong{font-size:14px}.card-summary>div:last-child strong{color:var(--red);font-size:19px}
.price-area{margin-top:20px;border:1px solid var(--ink)}.price-line{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid var(--line);font-size:12px}.price-line strong{font-size:17px}.final-price{background:var(--ink);color:#fff;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;border-left:6px solid var(--red)}.final-price>div{display:flex;flex-direction:column}.final-price span{font-size:14px;font-weight:750}.final-price strong{font-size:34px;line-height:1;color:#fff;font-weight:850}.final-price small{color:#b9bdc3;font-size:10px}
.saving-grid{display:grid;grid-template-columns:repeat(3,1fr);margin-top:16px;border:1px solid var(--line);border-top:2px solid var(--ink)}.saving-grid div{padding:14px 16px;border-right:1px solid var(--line)}.saving-grid div:last-child{border:0}.saving-grid span{display:block;font-size:10px;color:var(--muted)}.saving-grid strong{display:block;margin-top:5px;font-size:15px}.saving-grid div:nth-child(n+2){background:#f3faf7}.saving-grid div:nth-child(n+2) strong{color:var(--green);font-weight:800}
.support-note{margin-top:13px;padding:12px 16px;background:#f4f5f7;border-left:3px solid #9da3aa;display:flex;justify-content:space-between}.notice{margin-top:22px}.notice p{font-size:11px;line-height:1.7;white-space:pre-wrap;color:#555;margin:9px 0 0;padding:13px 15px;background:#fafafa;border:1px solid #eceef0}.a4 footer{position:absolute;bottom:42px;left:58px;right:58px;border-top:1px solid var(--ink);padding-top:13px;display:flex;justify-content:space-between;align-items:end}.a4 footer div{display:grid;grid-template-columns:auto auto;gap:1px 14px;font-size:10px}.a4 footer div>span:first-child{grid-column:1/-1;color:var(--muted);font-size:9px}.a4 footer b{font-size:25px;color:var(--red)}.warning{width:min(820px,100%);margin:0 auto 10px;background:#fff5d9;border:1px solid #e2ca7d;padding:10px 12px;border-radius:7px;color:#705800;font-weight:650}
.page-title{padding:32px 36px 20px;display:flex;justify-content:space-between;align-items:end}.page-title h1{margin:0;font-size:26px}.page-title p{color:var(--muted);margin-bottom:0}.page-title input{width:360px}#history-view>.panel{margin:0 36px}.admin-layout{display:grid;grid-template-columns:230px 1fr;gap:20px;padding:0 36px}.admin-layout aside{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px;height:max-content}.admin-layout aside button{text-align:left;border:0}.admin-layout aside button.active{background:#fff0f2;color:var(--red);font-weight:750}.admin-content{min-width:0}
dialog{border:0;border-radius:12px;padding:0;box-shadow:0 20px 60px #0005;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);margin:auto}dialog::backdrop{background:#0008}dialog form{padding:24px;width:min(460px,calc(100vw - 28px));max-height:calc(100dvh - 28px);display:flex;flex-direction:column}dialog form>.section-head{flex:0 0 auto}.send-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.send-options button{display:flex;justify-content:space-between}.dialog-actions{flex:0 0 auto;display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-bottom:env(safe-area-inset-bottom)}#profile-fields{overflow:auto}#admin-fields{margin-top:18px;overflow:auto;flex:1 1 auto}#toast{position:fixed;bottom:calc(24px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(30px);opacity:0;background:var(--ink);color:#fff;border-radius:8px;padding:12px 20px;max-width:calc(100vw - 32px);text-align:center;transition:.2s;z-index:99}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* ===== 반응형: 특정 기기/UA가 아니라 CSS viewport·컨테이너 폭 기준으로 유동 대응 ===== */
/* safe-area(노치·홈 인디케이터·라운드 모서리)와 대형 데스크톱 여백 */
header{--pad:28px;padding-left:max(var(--pad),env(safe-area-inset-left));padding-right:max(var(--pad),env(safe-area-inset-right));padding-top:env(safe-area-inset-top)}
.editor,.preview-shell,.page-title,.admin-layout,#history-view>.panel,.toolbar{padding-left:max(var(--pad,24px),env(safe-area-inset-left));padding-right:max(var(--pad,24px),env(safe-area-inset-right))}
.editor{--pad:24px}.preview-shell{--pad:26px}.page-title{--pad:36px}.admin-layout{--pad:36px}.toolbar{--pad:28px}
/* 태블릿 가로·소형 노트북 */
@media(max-width:1280px){header{gap:24px}nav button{padding-inline:14px}.workspace{grid-template-columns:minmax(0,42%) minmax(0,58%)}.editor{--pad:18px}.preview-shell{--pad:18px}.a4{padding-inline:46px}.a4 footer{left:46px;right:46px}}
/* 태블릿 세로 이하: 좌우 분할 해제 → 세로 스택 */
@media(max-width:1024px){header{gap:16px}.brand small{display:none}.user-profile{display:none}.workspace{display:block;height:auto}.editor{overflow:visible}.preview-shell{overflow:visible;border-left:0;border-top:1px solid #d2d5d9}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{align-items:stretch;gap:12px;flex-wrap:wrap}.actions{flex-wrap:wrap;justify-content:flex-end}.admin-layout{grid-template-columns:180px minmax(0,1fr)}.page-title{--pad:24px}.admin-layout{--pad:20px}#history-view>.panel{--pad:20px}}
/* 화면용 A4 미리보기를 컨테이너 폭에 맞게 축소(출력은 @media print에서 원본 규격 유지). */
@media(max-width:1024px){
  .preview-shell{overflow:hidden}
  #a4-frame{width:100%;overflow:hidden;container-type:inline-size}
  .a4{width:820px;transform-origin:top left;transform:scale(var(--a4-scale, min(1, 100cqw / 820px)))}
  .preview-label,.warning{width:100%}
}
/* 대형 휴대전화 이하 */
@media(max-width:767px){
  body{font-size:13.5px}
  header{--pad:12px;height:auto;flex-wrap:wrap;row-gap:8px;padding-top:calc(10px + env(safe-area-inset-top));padding-bottom:10px;gap:10px}
  .brand{order:1}.brand>span{width:34px;height:31px;font-size:14px}.brand strong{font-size:14px}
  .user{order:2;margin-left:auto;gap:6px}
  header .ghost{min-height:38px;padding:7px 10px;font-size:12px}
  nav{order:3;width:100%;gap:2px}nav button{flex:1;padding:0 6px;height:44px;font-size:13px}
  .toolbar{--pad:12px;padding-top:10px;padding-bottom:10px;flex-direction:column;align-items:stretch}
  .quote-type{flex-direction:column;align-items:stretch;gap:6px;width:100%}
  .mode{width:100%}.mode button{flex:1;min-height:44px;font-size:clamp(11px,3vw,13px);padding:10px 4px}
  .actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%}
  .actions button{width:100%;min-height:44px;height:auto;padding-inline:10px}
  .actions .action-divider{display:none}
  #new-from-snapshot,#print{grid-column:1/-1}
  .editor{--pad:12px;padding-top:12px;padding-bottom:12px}
  .panel{padding:14px;margin-bottom:14px}
  .panel h2{font-size:15px;margin-bottom:14px}
  .form-grid{grid-template-columns:1fr;gap:12px}.wide{grid-column:auto}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filters{grid-template-columns:1fr}
  .catalog{max-height:min(360px,50dvh)}
  .preview-shell{--pad:10px;padding-top:12px;padding-bottom:calc(20px + env(safe-area-inset-bottom))}
  .preview-label{flex-wrap:wrap;gap:6px}
  .page-title{--pad:14px;flex-direction:column;align-items:stretch;gap:10px;padding-top:20px}.page-title h1{font-size:21px}.page-title input{width:100%}
  #history-view>.panel{--pad:14px;margin-left:14px;margin-right:14px}
  .admin-layout{--pad:14px;grid-template-columns:1fr;gap:12px}
  .admin-layout aside{flex-direction:row;overflow-x:auto;height:auto;-webkit-overflow-scrolling:touch}
  .admin-layout aside button{flex:0 0 auto;text-align:center}
  .admin-group .table-wrap,.admin-content>.table-wrap{max-height:none;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:8px}
  .admin-content th,.admin-content td,#history-rows td,#history-view th{padding:9px 8px;font-size:12px}
  dialog form{padding:18px}
  .send-options{grid-template-columns:1fr}
  /* 편집 화면 상품표를 카드형 세로 배치로 전환(출력용 A4 표에는 영향 없음) */
  .editor .table-wrap{overflow:visible}
  .editor .table-wrap table,.editor .table-wrap tbody{display:block;width:100%}
  .editor .table-wrap thead{display:none}
  #item-rows tr{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:8px}
  #item-rows tr.empty{display:block;text-align:center;padding:22px}
  #item-rows td{border:0;height:auto;min-height:0;padding:2px 0;white-space:normal;display:flex;align-items:center;gap:8px}
  #item-rows td:empty{display:none}
  #item-rows td::before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:700;flex:0 0 auto;min-width:36px}
  #item-rows td[data-label="분류"]{grid-column:1/-1;color:var(--muted);font-size:12px}
  #item-rows td[data-label="상품"]{grid-column:1/-1;font-weight:700;font-size:14px;flex-wrap:wrap}
  #item-rows td[data-label="상품"]::before{display:none}
  #item-rows td[data-label="상품"] select{flex:1 1 100%;margin-top:4px}
  #item-rows td[data-label="월요금"]{justify-content:flex-end;font-weight:700}
  #item-rows tr:not(.terminal-row) td:last-child{grid-column:1/-1;justify-content:flex-end}
  #item-rows td input[type=number]{width:96px}
  #item-rows .terminal-row{grid-template-columns:1fr;border-style:dashed}
  #item-rows .terminal-row td{padding-left:0}
  select[data-option]{max-width:100%}
}
/* 소형 휴대전화·플립 외부·폴드 외부 등 매우 좁은 폭 */
@media(max-width:439px){
  .metrics{grid-template-columns:1fr}
  .mode button{font-size:11px;letter-spacing:-.03em}
  .catalog-items button{grid-template-columns:1fr}
  .catalog em{margin-top:2px}
  header .badge{display:none}
}
/* 세로로 매우 짧은 화면(가로 폴더블·키보드 노출 등): 큰 여백·큰 제목 축소 */
@media(max-height:520px) and (max-width:900px){
  header{position:static}
  .panel{padding:12px}
  .a4{min-height:0}
}
/* 입력 자동 확대 방지 + 터치 타깃 44px: 좁은 화면(=터치 가능성 높음)에서 폼 컨트롤·버튼 최소 크기 확보 */
@media(max-width:900px){
  input,select,textarea{font-size:16px;min-height:44px}
  button,.small,.ghost,header .ghost,.mode button,nav button,[data-edit],[data-rate],[data-remove],.dialog-close{min-height:44px}
  .small{padding:8px 12px}
  td input[type=number]{font-size:16px}
}
/* 출력(인쇄·PDF)은 화면 반응형과 완전히 분리: A4 원본 규격을 그대로 사용하고 화면용 축소·safe-area를 모두 해제한다. */
@media print{
  body{background:#fff}
  header,.toolbar,.editor,.preview-label,.warning,#toast{display:none!important}
  .workspace{display:block;height:auto}
  .preview-shell{padding:0;background:#fff;overflow:visible;border:0}
  #a4-frame{width:auto!important;height:auto!important;overflow:visible!important;container-type:normal!important;margin:0}
  .a4{box-shadow:none;width:210mm;height:297mm;min-height:0;padding:14mm 15mm;margin:0;border-radius:0;transform:none!important}
  .a4 footer{left:15mm;right:15mm;bottom:12mm}
  .final-price{print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .saving-grid div:nth-child(n+2){background:#fff}
  .saving-grid div:nth-child(n+2) strong,.card-summary>div:last-child strong{color:#111}
  .card-summary{background:#fff;border-color:#555}
  @page{size:A4;margin:0}
}
/* PNG 캡처 중에는 화면 축소를 일시 해제해 html2canvas가 원본 A4를 그대로 캡처하게 한다. */
body.capturing #a4-frame{width:auto!important;height:auto!important;overflow:visible!important;container-type:normal!important}
body.capturing .a4{width:820px!important;transform:none!important}

@media (max-width: 480px) {
  #draft-recovery-banner {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 12px;
  }
  #draft-recovery-banner > div {
    width: 100%;
    justify-content: flex-end;
  }
}
