@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800;900&display=swap');
/* 설치관리 원본 CSS — #inst-app 스코프 격리 (원본 무수정 이식) */
#inst-app * {box-sizing:border-box;margin:0;padding:0}
#inst-app {
  --bg:#F0F4F8;--surface:#fff;--border:#E2E8F0;
  --text:#0F172A;--text2:#475569;--text3:#94A3B8;--accent:#2563EB;
  --ng:#1D4ED8;--ps:#DC2626;--bt:#059669;--co:#7C3AED;
}
#inst-app {font-family:'Noto Sans KR',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;padding-bottom:80px}
#inst-app .c-ng {--c:#1D4ED8;--cl:#EFF6FF;--cm:#93C5FD}
#inst-app .c-ng2 {--c:#0891B2;--cl:#ECFEFF;--cm:#A5F3FC}
#inst-app .c-ng3 {--c:#7C3AED;--cl:#FAF5FF;--cm:#DDD6FE}
#inst-app .c-ps {--c:#DC2626;--cl:#FEF2F2;--cm:#FCA5A5}
#inst-app .c-ps2 {--c:#16A34A;--cl:#F0FDF4;--cm:#BBF7D0}
#inst-app .c-ps3 {--c:#BE185D;--cl:#FDF2F8;--cm:#F9A8D4}
#inst-app .c-ps4 {--c:#0D9488;--cl:#F0FDFA;--cm:#99F6E4}
#inst-app .c-bt {--c:#059669;--cl:#ECFDF5;--cm:#A7F3D0}
#inst-app .c-bt2 {--c:#0284C7;--cl:#E0F2FE;--cm:#BAE6FD}
#inst-app .c-co {--c:#7C3AED;--cl:#FAF5FF;--cm:#DDD6FE}
#inst-app .c-co2 {--c:#BE185D;--cl:#FDF2F8;--cm:#FBCFE8}
#inst-app .event-stripe {background:var(--c,#2563EB)}
#inst-app .ev-time {background:var(--c,#2563EB)}
#inst-app .ev-badge {color:var(--c);background:var(--cl);border-color:var(--cm)}
@media (max-width: 600px) {
#inst-app .top-bar { padding: 10px 12px 6px; }
#inst-app .top-bar h1 { font-size:18px; }
#inst-app .main-tabs { gap: 4px; padding: 0 8px; overflow-x: auto; flex-wrap: nowrap; }
#inst-app .main-tab { font-size:14px; padding: 7px 10px; white-space: nowrap; flex-shrink: 0; }
#inst-app .filter-bar { gap: 5px; padding: 6px 10px; overflow-x: auto; flex-wrap: nowrap; }
#inst-app .filter-btn { font-size:15px; padding: 5px 10px; white-space: nowrap; flex-shrink: 0; }
#inst-app .event-card { border-radius: 10px; }
#inst-app .event-body { padding: 9px 10px 8px; }
#inst-app .event-address { font-size:16px; }
#inst-app .event-meta-item { font-size:15px; }
#inst-app .btn { font-size:14px; padding: 6px 10px; min-height: 34px; }
#inst-app .add-fab { width: 52px; height: 52px; font-size:27px; bottom: 20px; right: 16px; }
#inst-app .cal-chip { font-size:13px; }
#inst-app .chip-addr { max-width: 60px; }
#inst-app .modal-sheet { border-radius: 20px 20px 0 0; max-height: 95vh; }
#inst-app .form-label { font-size:15px; }
#inst-app .form-input { font-size:17px; padding: 9px 11px; }
#inst-app #day-popup-list > div { margin-bottom: 8px; }
#inst-app .unsched-card { border-radius: 10px; }

}
@media (min-width: 900px) {
#inst-app .schedule-container { max-width: 100%; padding: 20px 28px 0; }
#inst-app .event-body { padding: 16px 20px; }
#inst-app .event-address { font-size:20px; font-weight: 800; margin-bottom: 6px; }
#inst-app .ev-time { font-size:17px !important; padding: 4px 14px !important; }
#inst-app .ev-done { font-size:16px; padding: 4px 12px; }
#inst-app .ev-badge { font-size:15px; padding: 4px 11px; }
#inst-app .ev-person { font-size:15px; padding: 4px 11px; }
#inst-app .event-top { gap: 8px; margin-bottom: 10px; }
#inst-app .event-meta-item { font-size:17px; }
#inst-app .pay-box { padding: 7px 14px; }
#inst-app .pay-box .pay-label { font-size:14px; }
#inst-app .pay-box .pay-val { font-size:18px; font-weight: 800; }
#inst-app .special-note { font-size:16px; padding: 8px 12px; }
#inst-app .btn { font-size:16px; padding: 7px 12px; min-height: 36px; }
#inst-app .event-actions { gap: 8px; padding-top: 10px; }
#inst-app .photo-thumb { width: 72px; height: 72px; }
#inst-app .photo-thumb video { width: 72px; height: 72px; }
#inst-app .card-pc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 6px;
  }
#inst-app .card-left { min-width: 0; }
#inst-app .card-right { min-width: 0; }
#inst-app .card-right .items-code { font-size:15px !important; }
#inst-app .card-right .items-name { font-size:16px !important; }
#inst-app .card-right .items-qty { font-size:16px !important; }

}
#inst-app .add-fab {position:fixed;bottom:24px;right:20px;width:52px;height:52px;border-radius:50%;background:#2563EB;color:#fff;border:none;font-size:29px;cursor:pointer;box-shadow:0 4px 16px rgba(37,99,235,.4);display:flex;align-items:center;justify-content:center;z-index:300}
#inst-app .toast {position:fixed;bottom:88px;left:50%;transform:translateX(-50%);background:#0F172A;color:#fff;padding:9px 18px;border-radius:20px;font-size:16px;font-weight:600;z-index:700;opacity:0;transition:opacity .3s;pointer-events:none;white-space:nowrap}
#inst-app .toast.show {opacity:1}
#inst-app .loading {text-align:center;padding:50px 20px;color:var(--text3);font-size:17px}
#inst-app .no-events {text-align:center;padding:40px 20px;color:var(--text3);font-size:17px}
#inst-app #ptr-indicator {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 0;
  overflow: hidden;
  transition: height 0.2s;
  background: #EFF6FF;
  font-size:15px;
  font-weight: 700;
  color: #2563EB;
}
#inst-app #ptr-indicator.ptr-ready { height: 48px; }
#inst-app #ptr-spin {
  width: 16px; height: 16px;
  border: 2px solid #BFDBFE;
  border-top-color: #2563EB;
  border-radius: 50%;
}
@keyframes spin { to { transform: rotate(360deg); } }
#inst-app #ptr-spin.spinning { animation: spin 0.6s linear infinite; }
@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
#inst-app .skeleton {
  background: linear-gradient(90deg, #F1F5F9 25%, #E2E8F0 50%, #F1F5F9 75%);
  background-size: 200% 100%;
  animation: shimmer 1.4s infinite;
  border-radius: 8px;
}
#inst-app .skeleton-card {
  background: #fff;
  border: 1px solid #E2E8F0;
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 8px;
  overflow: hidden;
}
#inst-app .skeleton-line { height: 12px; margin-bottom: 8px; }
#inst-app .skeleton-line.w-60 { width: 60%; }
#inst-app .skeleton-line.w-80 { width: 80%; }
#inst-app .skeleton-line.w-40 { width: 40%; }
#inst-app .empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 60px 20px;
  text-align: center;
}
#inst-app .empty-icon { font-size:51px; margin-bottom: 16px; opacity: 0.5; }
#inst-app .empty-title { font-size:19px; font-weight: 800; color: #334155; margin-bottom: 8px; }
#inst-app .empty-desc { font-size:16px; color: #94A3B8; margin-bottom: 24px; line-height: 1.6; }
#inst-app .empty-btn {
  padding: 10px 24px;
  background: #2563EB;
  color: #fff;
  border: none;
  border-radius: 20px;
  font-family: inherit;
  font-size:17px;
  font-weight: 700;
  cursor: pointer;
}
#inst-app .schedule-container {max-width:900px;margin:0 auto;padding:16px 14px 0}
#inst-app .day-block {margin-bottom:20px;scroll-margin-top:200px}
#inst-app .day-header {display:flex;align-items:center;gap:12px;margin-bottom:10px}
#inst-app .day-circle {width:40px;height:40px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;font-weight:900;background:#E2E8F0;color:#475569}
#inst-app .day-circle .d-num {font-size:19px;line-height:1}
#inst-app .day-circle .d-dow {font-size:12px;font-weight:700;margin-top:1px}
#inst-app .day-info {flex:1}
#inst-app .day-date-full {font-size:17px;font-weight:800}
#inst-app .day-count {font-size:14px;color:var(--text3);margin-top:1px}
#inst-app .assignee-section {margin-bottom:8px}
#inst-app .assignee-label {display:flex;align-items:center;gap:6px;font-size:14px;font-weight:800;padding:3px 8px 5px;color:var(--text3)}
#inst-app .alabel-dot {width:7px;height:7px;border-radius:50%}
#inst-app .event-card {background:var(--surface);border-radius:12px;margin-bottom:8px;border:1px solid var(--border);overflow:hidden;transition:transform .12s,box-shadow .12s}
#inst-app .event-card:hover {transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.07)}
#inst-app .event-card.is-done {opacity:.75}
#inst-app .event-card-inner {display:flex;align-items:stretch}
#inst-app .event-stripe {width:5px;flex-shrink:0}
#inst-app .event-body {padding:10px 12px;flex:1;min-width:0}
#inst-app .event-top {display:flex;align-items:center;gap:6px;margin-bottom:5px;flex-wrap:wrap}
#inst-app .ev-time {font-size:14px;font-weight:800;padding:2px 8px;border-radius:16px;color:#fff}
#inst-app .ev-done {font-size:13px;font-weight:800;padding:2px 8px;border-radius:16px;background:#DCFCE7;color:#16A34A;border:1px solid #BBF7D0}
#inst-app .ev-badge {font-size:13px;font-weight:700;padding:2px 7px;border-radius:16px;border:1px solid}
#inst-app .ev-person {font-size:13px;font-weight:700;padding:2px 7px;border-radius:16px;background:#F1F5F9;color:#475569;border:1px solid #E2E8F0}
#inst-app .event-address {font-size:16px;font-weight:700;color:var(--text);margin-bottom:4px;line-height:1.4}
#inst-app .event-meta {display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
#inst-app .event-meta-item {display:flex;align-items:center;gap:3px;font-size:15px;color:var(--text2)}
#inst-app .pay-row {display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}
#inst-app .pay-box {background:#F8FAFC;border:1px solid var(--border);border-radius:8px;padding:5px 10px;font-size:14px}
#inst-app .pay-box .pay-label {color:var(--text3);font-size:13px;font-weight:700;margin-bottom:1px}
#inst-app .pay-box .pay-val {font-weight:800;color:var(--text)}
#inst-app .pay-box.unpaid .pay-val {color:#DC2626}
#inst-app .special-note {font-size:15px;color:#92400E;margin-bottom:4px}
#inst-app .meta-lbl {font-size:14px;font-weight:700;color:#94A3B8;margin-right:4px}
#inst-app .info-box {border:1px solid #E2E8F0;border-radius:10px;padding:8px 12px;margin-bottom:8px;background:#F8FAFC}
#inst-app .detail-box {border:1px solid #E2E8F0;border-radius:10px;padding:8px 12px;margin-bottom:8px;background:#FAFAFA}
#inst-app .photo-section {margin-bottom:6px}
#inst-app .photo-label {font-size:13px;font-weight:800;color:var(--text3);margin-bottom:4px}
#inst-app .photo-grid {display:flex;gap:5px;flex-wrap:wrap}
#inst-app .photo-thumb {width:60px;height:60px;object-fit:cover;border-radius:8px;border:1px solid var(--border);cursor:pointer}
#inst-app .photo-thumb video {width:60px;height:60px;object-fit:cover;border-radius:8px;cursor:pointer}
#inst-app.done-locked .is-done {pointer-events:none;opacity:0.85}
#inst-app.done-locked .is-done::after {content:"🔒";position:absolute;top:6px;right:10px;font-size:17px;z-index:2;pointer-events:none}
#inst-app .photo-item {position:relative}
#inst-app .photo-del {position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;background:#EF4444;color:#fff;border:none;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}
#inst-app .event-actions {display:flex;gap:5px;flex-wrap:wrap;padding-top:7px;border-top:1px solid var(--border)}
#inst-app .btn {font-family:inherit;font-size:14px;font-weight:700;padding:5px 9px;border-radius:7px;border:none;cursor:pointer;display:flex;align-items:center;gap:3px;transition:all .12s;white-space:nowrap}
#inst-app .btn-done {background:#DCFCE7;color:#16A34A}
#inst-app .btn-done:hover {background:#BBF7D0}
#inst-app .btn-undone {background:#FEF9C3;color:#A16207}
#inst-app .btn-undone:hover {background:#FEF08A}
#inst-app .btn-photo {background:#EFF6FF;color:#2563EB}
#inst-app .btn-photo:hover {background:#DBEAFE}
#inst-app .btn-edit {background:#F1F5F9;color:#475569}
#inst-app .btn-edit:hover {background:#E2E8F0}
#inst-app .btn-delete {background:#FFF1F2;color:#E11D48}
#inst-app .btn-delete:hover {background:#FFE4E6}
#inst-app .btn-dl {background:#F0FDF4;color:#16A34A}
#inst-app .btn-dl:hover {background:#DCFCE7}
#inst-app .my-sched-container {max-width:640px;margin:0 auto;padding:14px 14px 0}
#inst-app .eng-selector {display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
#inst-app .eng-btn {padding:8px 16px;border-radius:20px;border:1px solid var(--border);background:#fff;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;color:var(--text2)}
#inst-app .eng-btn.active-ng {background:var(--ng);color:#fff;border-color:var(--ng)}
#inst-app .eng-btn.active-ps {background:var(--ps);color:#fff;border-color:var(--ps)}
#inst-app .eng-btn.active-bt {background:var(--bt);color:#fff;border-color:var(--bt)}
#inst-app .eng-btn.active-co {background:var(--co);color:#fff;border-color:var(--co)}
#inst-app .my-stats {display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
#inst-app .stat-box {background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px;text-align:center}
#inst-app .stat-num {font-size:27px;font-weight:900;line-height:1}
#inst-app .stat-label {font-size:14px;color:var(--text3);margin-top:3px;font-weight:600}
#inst-app .my-section-title {font-size:16px;font-weight:800;color:var(--text2);margin-bottom:8px;display:flex;align-items:center;gap:6px}
#inst-app .my-item {background:var(--surface);border-radius:11px;margin-bottom:7px;border:1px solid var(--border);overflow:hidden;display:flex;align-items:stretch}
#inst-app .my-item.done-item {opacity:.55}
#inst-app .my-stripe {width:4px;flex-shrink:0}
#inst-app .my-body {padding:10px 12px;flex:1;min-width:0}
#inst-app .my-top {display:flex;align-items:center;gap:6px;margin-bottom:4px;flex-wrap:wrap}
#inst-app .my-date {font-size:14px;font-weight:800;color:var(--text2)}
#inst-app .my-time {font-size:14px;font-weight:700;color:var(--text3)}
#inst-app .my-addr {font-size:16px;font-weight:700;margin-bottom:3px}
#inst-app .my-detail {font-size:15px;color:var(--text2)}
#inst-app .swipe-wrapper {
  position: relative;
  overflow: hidden;
  border-radius: 12px;
  margin-bottom: 8px;
}
#inst-app .swipe-actions {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  display: flex;
  align-items: stretch;
  transform: translateX(100%);
  transition: transform 0.2s;
}
#inst-app .swipe-action-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  font-size:13px;
  font-weight: 800;
  border: none;
  cursor: pointer;
  gap: 3px;
  color: #fff;
}
#inst-app .swipe-done-btn { background: #16A34A; }
#inst-app .swipe-delete-btn { background: #EF4444; }
#inst-app .swipe-content {
  transition: transform 0.2s;
  will-change: transform;
}
#inst-app .swipe-wrapper.swiped .swipe-actions { transform: translateX(0); }
#inst-app .day-block.day-flash {animation:dayFlash 1.6s ease-out}
@keyframes dayFlash {
  0%,55%{background:#FEF9C3;box-shadow:0 0 0 8px #FEF9C3;border-radius:12px}
  100%{background:transparent;box-shadow:0 0 0 8px transparent;border-radius:12px}
}
#inst-app .cal-day-col.selected-col {background:#DBEAFE;box-shadow:inset 0 0 0 2px #2563EB}
#inst-app .day-filter-banner {display:flex;align-items:center;justify-content:space-between;gap:8px;background:#EFF6FF;border:1px solid #BFDBFE;border-radius:10px;padding:9px 13px;margin-bottom:13px;font-size:15px;color:#1D4ED8;font-weight:800}
#inst-app .day-filter-banner button {background:#2563EB;color:#fff;border:none;border-radius:8px;padding:6px 13px;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap}
#inst-app .unsched-container {max-width:640px;margin:0 auto;padding:16px 14px}
#inst-app .unsched-card {background:var(--surface);border-radius:12px;margin-bottom:10px;border:1px solid var(--border);overflow:hidden;transition:transform .12s,box-shadow .12s}
#inst-app .unsched-card:hover {transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.07)}
#inst-app .unsched-inner {display:flex;align-items:stretch}
#inst-app .unsched-body {padding:10px 12px;flex:1}
#inst-app .unsched-top {display:flex;align-items:center;gap:6px;margin-bottom:5px;flex-wrap:wrap}
#inst-app .unsched-badge {font-size:13px;font-weight:800;padding:3px 9px;border-radius:16px;background:#FEF9C3;color:#A16207;border:1px solid #FDE68A}
#inst-app .docs-container {max-width:640px;margin:0 auto;padding:16px 14px}
#inst-app .docs-notice {background:#FFF7ED;border:1px solid #FED7AA;border-radius:12px;padding:14px 16px;margin-bottom:14px;font-size:16px;color:#92400E;line-height:1.7}
#inst-app .docs-notice b {font-weight:800}
#inst-app .docs-card {background:var(--surface);border-radius:12px;border:1px solid var(--border);padding:14px 16px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:12px}
#inst-app .docs-info {flex:1}
#inst-app .docs-name {font-size:17px;font-weight:800;margin-bottom:3px}
#inst-app .docs-desc {font-size:15px;color:var(--text2)}
#inst-app .docs-actions {display:flex;gap:6px;flex-wrap:wrap}
#inst-app .btn-view {background:#EFF6FF;color:#2563EB;font-family:inherit;font-size:14px;font-weight:700;padding:6px 12px;border-radius:8px;border:none;cursor:pointer}
#inst-app .btn-upload-doc {background:#F0FDF4;color:#16A34A;font-family:inherit;font-size:14px;font-weight:700;padding:6px 12px;border-radius:8px;border:none;cursor:pointer}
#inst-app .doc-img-preview {max-width:100%;border-radius:10px;margin-top:10px;display:none}
#inst-app .mcal-grid {display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
#inst-app .mcal-head {text-align:center;font-size:14px;font-weight:700;color:#94A3B8;padding:4px 0}
#inst-app .mcal-cell {min-height:72px;border:1px solid #E2E8F0;border-radius:8px;padding:4px;background:#fff;cursor:pointer;transition:background .1s}
#inst-app .mcal-cell:hover {background:#F8FAFC}
#inst-app .mcal-cell.today-cell {background:#EFF6FF;border-color:#3B82F6}
#inst-app .mcal-cell.other-month {opacity:.35}
#inst-app .mcal-cell.has-event {border-color:#CBD5E1}
#inst-app .mcal-date {font-size:14px;font-weight:700;color:#334155;margin-bottom:3px}
#inst-app .mcal-date.sunday {color:#EF4444}
#inst-app .mcal-date.saturday {color:#3B82F6}
#inst-app .mcal-dot {font-size:13px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:4px;padding:1px 3px;margin-bottom:1px}
#inst-app .mcal-dot.ng-dot {background:#DBEAFE;color:#1D4ED8}
#inst-app .mcal-dot.ps-dot {background:#FEE2E2;color:#DC2626}
#inst-app .mcal-dot.bt-dot {background:#D1FAE5;color:#059669}
#inst-app .mcal-dot.done-dot {opacity:.5}
#inst-app .doc-section {background:var(--surface);border-radius:12px;border:1px solid var(--border);margin-bottom:14px;overflow:hidden}
#inst-app .doc-section-header {display:flex;align-items:center;justify-content:space-between;padding:12px 16px;cursor:pointer;user-select:none}
#inst-app .doc-section-title {font-size:17px;font-weight:800}
#inst-app .doc-section-sub {font-size:14px;color:var(--text3);margin-top:1px}
#inst-app .doc-dl-btn {background:#EFF6FF;color:#2563EB;font-family:inherit;font-size:14px;font-weight:700;padding:6px 14px;border-radius:8px;border:none;cursor:pointer;flex-shrink:0}
#inst-app .doc-img-wrap {padding:0 14px 14px;display:none}
#inst-app .doc-img-wrap.open {display:block}
#inst-app .doc-img-wrap img {width:100%;border-radius:10px;border:1px solid var(--border)}
#inst-app .header {background:#0F172A;padding:16px 20px 12px;text-align:center;position:sticky;top:0;z-index:200;box-shadow:0 4px 20px rgba(0,0,0,.25);position:relative}
#inst-app .header-label {font-size:13px;font-weight:700;letter-spacing:4px;color:#64B5F6;margin-bottom:3px}
#inst-app .header-title {font-size:27px;font-weight:900;color:#fff}
#inst-app .header-sub {font-size:14px;color:#64748B;margin-top:3px}
#inst-app .done-lock-btn {position:absolute;top:50%;right:14px;transform:translateY(-50%);background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.18);border-radius:10px;color:#94A3B8;font-size:19px;padding:5px 10px;cursor:pointer;transition:all .2s;line-height:1;font-family:inherit}
#inst-app .done-lock-btn:hover {background:rgba(255,255,255,0.15);color:#fff}
#inst-app .done-lock-btn.unlocked {background:rgba(234,88,12,0.3);border-color:#EA580C;color:#fff}
#inst-app .main-tabs {display:flex;background:#1E293B;position:sticky;top:64px;z-index:190}
#inst-app .main-tab {flex:1;padding:10px 4px;border:none;background:transparent;font-family:inherit;font-size:15px;font-weight:700;color:#CBD5E1;cursor:pointer;border-bottom:3px solid transparent}
#inst-app .main-tab.active {color:#fff;border-color:#2563EB}
#inst-app .filter-bar {display:flex;background:#F8FAFC;border-bottom:1px solid var(--border);padding:8px 12px;gap:6px;overflow-x:auto;flex-wrap:nowrap}
#inst-app .filter-btn {flex-shrink:0;padding:5px 12px;border-radius:20px;border:1px solid var(--border);background:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;color:var(--text2);white-space:nowrap}
#inst-app .filter-btn.active {color:#fff;border-color:transparent}
#inst-app .filter-btn.f-all.active {background:#0F172A}
#inst-app .filter-btn.f-ng.active {background:var(--ng)}
#inst-app .filter-btn.f-ps.active {background:var(--ps)}
#inst-app .filter-btn.f-bt.active {background:var(--bt)}
#inst-app .filter-btn.f-co.active {background:var(--co)}
#inst-app .month-nav {display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border)}
#inst-app .month-nav button {background:none;border:1px solid var(--border);border-radius:8px;width:30px;height:30px;font-size:18px;cursor:pointer;color:var(--text2)}
#inst-app .month-label {font-size:19px;font-weight:800;min-width:100px;text-align:center}
#inst-app .mini-cal {background:var(--surface);border-bottom:2px solid var(--border)}
#inst-app .week-nav {display:flex;align-items:center;justify-content:space-between;padding:7px 12px;border-bottom:1px solid var(--border)}
#inst-app .week-nav button {background:none;border:1px solid var(--border);border-radius:7px;width:26px;height:26px;font-size:16px;cursor:pointer;color:var(--text2)}
#inst-app .week-range-label {font-size:15px;font-weight:700;color:var(--text2)}
#inst-app .week-row {display:flex;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#CBD5E1 transparent}
#inst-app .week-row::-webkit-scrollbar {height:3px}
#inst-app .week-row::-webkit-scrollbar-thumb {background:#CBD5E1;border-radius:2px}
#inst-app .cal-day-col {flex:0 0 130px;min-height:86px;border-right:1px solid var(--border);padding:6px 5px 7px;display:flex;flex-direction:column;gap:2px;cursor:pointer;transition:background .1s}
#inst-app .cal-day-col:last-child {border-right:none}
#inst-app .cal-day-col:hover {background:#F8FAFC}
#inst-app .cal-day-col.today-col {background:#EFF6FF}
#inst-app .cal-day-col.no-event {opacity:.38}
#inst-app .col-header {display:flex;align-items:center;gap:4px;margin-bottom:3px}
#inst-app .col-date-num {font-size:17px;font-weight:800;line-height:1}
#inst-app .col-date-num.sunday {color:#EF4444}
#inst-app .col-date-num.saturday {color:#3B82F6}
#inst-app .col-date-num.today-num {background:var(--accent);color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:15px}
#inst-app .col-dow {font-size:12px;font-weight:700;color:var(--text3)}
#inst-app .cal-chip {display:flex;align-items:center;gap:2px;border-radius:6px;padding:4px 6px 4px 4px;background:#F1F5F9;width:100%;min-height:28px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0.05)}
#inst-app .cal-chip.done-chip {opacity:.45}
#inst-app .chip-name {font-size:12px;font-weight:900;color:#fff;border-radius:3px;padding:1px 3px;flex-shrink:0;line-height:1.4}
#inst-app .chip-name.ng {background:var(--ng)}
#inst-app .chip-name.ps {background:var(--ps)}
#inst-app .chip-name.bt {background:var(--bt)}
#inst-app .chip-name.co {background:var(--co)}
#inst-app .chip-time {font-size:12px;font-weight:700;color:var(--text2);flex-shrink:0;white-space:nowrap}
#inst-app .chip-addr {font-size:12px;font-weight:600;color:#64748B;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#inst-app .search-bar {padding:10px 14px;background:var(--surface);border-bottom:1px solid var(--border)}
#inst-app .search-input-wrap {display:flex;align-items:center;gap:8px;background:#F1F5F9;border-radius:12px;padding:8px 14px}
#inst-app .search-input-wrap input {flex:1;border:none;background:transparent;font-family:inherit;font-size:17px;color:var(--text);outline:none}
#inst-app .search-clear {background:none;border:none;font-size:19px;cursor:pointer;color:var(--text3);padding:0;line-height:1}
#inst-app .search-results {max-width:640px;margin:0 auto;padding:14px 14px 0}
#inst-app .search-result-item {background:var(--surface);border-radius:12px;margin-bottom:8px;border:1px solid var(--border);padding:12px 14px;cursor:pointer;transition:box-shadow .12s}
#inst-app .search-result-item:hover {box-shadow:0 4px 14px rgba(0,0,0,.07)}
#inst-app .sri-top {display:flex;align-items:center;gap:7px;margin-bottom:5px;flex-wrap:wrap}
#inst-app .sri-assignee {font-size:14px;font-weight:800;padding:2px 8px;border-radius:12px;color:#fff}
#inst-app .sri-date {font-size:14px;color:var(--text3);font-weight:600}
#inst-app .sri-addr {font-size:16px;font-weight:700;color:var(--text);margin-bottom:3px}
#inst-app .sri-meta {font-size:15px;color:var(--text2)}
#inst-app .search-empty {text-align:center;padding:40px 20px;color:var(--text3);font-size:17px}
#inst-app .search-hint {text-align:center;padding:30px 20px;color:var(--text3);font-size:16px;line-height:1.8}
#inst-app #today-summary {
  display: flex;
  gap: 8px;
  padding: 8px 14px;
  background: #0F172A;
  overflow-x: auto;
  scrollbar-width: none;
}
#inst-app #today-summary::-webkit-scrollbar { display: none; }
#inst-app .summary-chip {
  display: flex;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 20px;
  padding: 4px 10px;
  white-space: nowrap;
  flex-shrink: 0;
  font-size:14px;
  font-weight: 700;
  color: rgba(255,255,255,0.8);
  cursor: pointer;
}
#inst-app .summary-chip .sc-num {
  font-size:16px;
  font-weight: 900;
  color: #fff;
}
#inst-app .summary-chip.sc-warn { border-color: rgba(239,68,68,0.4); background: rgba(239,68,68,0.15); }
#inst-app .summary-chip.sc-warn .sc-num { color: #FCA5A5; }
#inst-app .modal-overlay {position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:400;display:flex;align-items:flex-end;justify-content:center}
#inst-app .hidden {display:none!important}
#inst-app #card-popup-overlay:not(.hidden) {display:flex!important}
#inst-app .modal-overlay.hidden {display:none}
#inst-app .modal {background:#fff;border-radius:20px 20px 0 0;padding:20px 18px 40px;width:100%;max-width:480px;max-height:92vh;overflow-y:auto}
#inst-app .modal-title {font-size:20px;font-weight:900;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}
#inst-app .modal-close {background:none;border:none;font-size:23px;cursor:pointer;color:var(--text3)}
#inst-app .form-row {margin-bottom:12px}
#inst-app .form-label {font-size:15px;font-weight:700;color:var(--text2);margin-bottom:4px;display:block}
#inst-app .form-input {width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:17px;color:var(--text);background:#F8FAFC}
#inst-app .form-input:focus {outline:none;border-color:var(--accent);background:#fff}
#inst-app .form-row-2 {display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
#inst-app .form-row-3 {display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:12px}
#inst-app .time-row {display:flex;gap:8px;margin-bottom:12px}
#inst-app .time-sel {flex:1}
#inst-app .time-inp {flex:2}
#inst-app .date-toggle {display:flex;gap:8px;margin-bottom:12px}
#inst-app .date-toggle-btn {flex:1;padding:8px;border:1px solid var(--border);border-radius:9px;background:#F8FAFC;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;color:var(--text2);text-align:center}
#inst-app .date-toggle-btn.active {background:var(--accent);color:#fff;border-color:var(--accent)}
#inst-app .section-divider {font-size:14px;font-weight:800;color:var(--text3);letter-spacing:1px;margin:14px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border)}
#inst-app .btn-submit {width:100%;padding:13px;background:var(--accent);color:#fff;border:none;border-radius:10px;font-family:inherit;font-size:18px;font-weight:800;cursor:pointer;margin-top:8px}
#inst-app .btn-submit:disabled {background:#94A3B8;cursor:not-allowed}
#inst-app .auto-tab-btn {flex:1;padding:8px;border:1px solid var(--border);border-radius:9px;background:#F8FAFC;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;color:var(--text2)}
#inst-app .auto-tab-btn.auto-tab-active {background:#0F172A;color:#fff;border-color:#0F172A}
#inst-app .ocr-upload-area {border:2px dashed var(--border);border-radius:12px;padding:16px;text-align:center;cursor:pointer;background:#FAFAFA;transition:all .15s;margin-bottom:12px}
#inst-app .ocr-upload-area:hover {border-color:#2563EB;background:#EFF6FF}
#inst-app .ocr-upload-area.has-file {border-color:#059669;background:#F0FDF4}
#inst-app .ocr-upload-area.drag-over {border-color:#2563EB;background:#EFF6FF;transform:scale(1.02)}
#inst-app #ocr-paste-area:empty:before {content:attr(data-placeholder);color:#94A3B8;pointer-events:none}
#inst-app #ocr-chat-input:empty:before {content:attr(data-placeholder);color:#94A3B8;pointer-events:none}
#inst-app .ocr-loading {display:none;text-align:center;padding:16px;font-size:16px;color:#2563EB;font-weight:700}
#inst-app .ocr-loading.show {display:block}
#inst-app .ocr-result-banner {display:none;background:#F0FDF4;border:1px solid #BBF7D0;border-radius:10px;padding:10px 14px;font-size:15px;color:#15803D;font-weight:700;margin-bottom:10px}
#inst-app .ocr-result-banner.show {display:flex;align-items:center;gap:8px}
#inst-app .install-type-btn {padding:7px 12px;border:1px solid var(--border);border-radius:9px;background:#F8FAFC;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;color:var(--text2)}
#inst-app .install-type-btn.it-active {background:#0F172A;color:#fff;border-color:#0F172A}
#inst-app .dochaso-link {display:inline-flex;align-items:center;gap:5px;font-size:15px;font-weight:700;color:#2563EB;text-decoration:none;background:#EFF6FF;padding:4px 10px;border-radius:8px;border:1px solid #BFDBFE}
#inst-app .blog-check-row {display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
#inst-app .blog-check-label {display:flex;align-items:center;gap:5px;font-size:15px;font-weight:700;color:#64748B;background:#F8FAFC;border:1px solid #E2E8F0;border-radius:8px;padding:5px 10px;cursor:pointer;transition:all .15s;user-select:none}
#inst-app .blog-check-label input {accent-color:#059669;width:14px;height:14px;cursor:pointer}
#inst-app .blog-check-label.blog-checked {background:#F0FDF4;border-color:#86EFAC;color:#059669}
#inst-app .ampm-btn {padding:8px 14px;border:1px solid var(--border);border-radius:9px;background:#F8FAFC;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer;color:var(--text2);flex-shrink:0}
#inst-app .ampm-btn.ampm-active {background:var(--accent);color:#fff;border-color:var(--accent)}
#inst-app .pay-type-btn {padding:7px 12px;border:1px solid var(--border);border-radius:9px;background:#F8FAFC;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;color:var(--text2)}
#inst-app .pay-type-btn.pt-active {background:#0F172A;color:#fff;border-color:#0F172A}
#inst-app .del-overlay {position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:500;display:flex;align-items:center;justify-content:center;padding:20px}
#inst-app .del-overlay.hidden {display:none}
#inst-app .del-box {background:#fff;border-radius:16px;padding:24px;width:100%;max-width:320px;text-align:center}
#inst-app .del-icon {font-size:39px;margin-bottom:12px}
#inst-app .del-title {font-size:20px;font-weight:900;margin-bottom:8px}
#inst-app .del-desc {font-size:16px;color:var(--text2);margin-bottom:20px;line-height:1.6}
#inst-app .del-btns {display:flex;gap:10px}
#inst-app .del-cancel {flex:1;padding:11px;background:#F1F5F9;color:var(--text2);border:none;border-radius:10px;font-family:inherit;font-size:17px;font-weight:700;cursor:pointer}
#inst-app .del-confirm {flex:1;padding:11px;background:#EF4444;color:#fff;border:none;border-radius:10px;font-family:inherit;font-size:17px;font-weight:700;cursor:pointer}
#inst-app .photo-modal {position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:600;display:flex;align-items:center;justify-content:center}
#inst-app .photo-modal.hidden {display:none}
#inst-app .photo-modal img {max-width:95vw;max-height:85vh;border-radius:10px}
#inst-app .photo-modal-close {position:absolute;top:16px;right:16px;background:rgba(255,255,255,.2);border:none;color:#fff;font-size:25px;width:38px;height:38px;border-radius:50%;cursor:pointer}
#inst-app .photo-modal-dl {position:absolute;bottom:24px;left:50%;transform:translateX(-50%);background:#2563EB;color:#fff;border:none;border-radius:20px;padding:8px 20px;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer}

/* ===== 네이티브 재구축 셸(ERP 내장용) — 원본 헤더/탭바 대체 ===== */
#inst-app{display:block;background:var(--bg);min-height:calc(100vh - 0px);padding-bottom:80px}
#inst-app .inst-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border-bottom:1px solid var(--border);padding:11px 16px}
#inst-app .inst-title{font-size:17px;font-weight:900;color:var(--text)}
#inst-app .inst-sub{font-size:13px;font-weight:600;color:var(--text3);margin-left:6px}
#inst-app .inst-top-actions{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#inst-app .inst-summary{display:flex;gap:6px;flex-wrap:wrap}
#inst-app .summary-chip{background:#F1F5F9;border:1px solid var(--border);border-radius:16px;padding:4px 11px;font-size:13.5px;font-weight:700;color:var(--text2);cursor:pointer}
#inst-app .summary-chip .sc-num{color:#2563EB;font-weight:900;margin:0 2px}
#inst-app .summary-chip.sc-warn{background:#FEF2F2;border-color:#FECACA;color:#B91C1C}
#inst-app .summary-chip.sc-warn .sc-num{color:#DC2626}
#inst-app .inst-lock{background:#F1F5F9;border:1px solid var(--border);border-radius:10px;font-size:18px;width:40px;height:38px;cursor:pointer;line-height:1}
#inst-app .inst-lock.unlocked{background:#FEF3C7;border-color:#FDE68A}
#inst-app .inst-mtabs{display:flex;gap:4px;padding:8px 12px 0;background:#fff;border-bottom:1px solid var(--border);overflow-x:auto;flex-wrap:nowrap}
#inst-app .inst-mtab{border:none;background:none;padding:9px 12px 11px;font-size:14px;font-weight:700;color:var(--text3);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;flex-shrink:0;font-family:inherit}
#inst-app .inst-mtab.active{color:#2563EB;border-bottom-color:#2563EB}
/* 미디어 뷰어 */
#inst-app .inst-media-ov{position:fixed;inset:0;background:rgba(15,23,42,.85);z-index:9998;display:flex;align-items:center;justify-content:center;padding:20px}
#inst-app .inst-media-body{max-width:100%;max-height:85vh}
#inst-app .inst-media-x{position:fixed;top:16px;right:20px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;border:none;font-size:20px;cursor:pointer;z-index:9999}
/* dochaso 링크 */
#inst-app .dochaso-link{display:inline-block;font-size:15px;font-weight:700;color:#2563EB;text-decoration:none;background:#EFF6FF;border:1px solid #BFDBFE;border-radius:8px;padding:5px 11px}
/* 날짜 팝업(월별 달력) */
#inst-app .inst-day-popup-ov{position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:9990;display:flex;align-items:flex-end;justify-content:center}
#inst-app .inst-day-popup{background:var(--bg);width:100%;max-width:900px;max-height:88vh;border-radius:20px 20px 0 0;overflow:auto;padding:0 0 24px}
#inst-app .inst-day-popup-head{position:sticky;top:0;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);font-size:17px;font-weight:800;z-index:1}
#inst-app .inst-dp-x{border:none;background:#F1F5F9;width:36px;height:36px;border-radius:50%;font-size:16px;cursor:pointer;flex-shrink:0}
#inst-app #inst-day-popup-list{padding:14px}
/* 오프라인 배지 */
#inst-app .inst-offline-badge{position:fixed;top:12px;right:14px;z-index:60;background:#F59E0B;color:#fff;font-size:12.5px;font-weight:800;padding:7px 13px;border-radius:20px;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.2);display:flex;align-items:center;gap:5px}
/* ===== 블로거(잇마케팅) 읽기전용 모드 — 완료건 사진다운·블로그체크만 ===== */
#inst-app.inst-blogger .add-fab{display:none}
#inst-app.inst-blogger .event-actions{display:none}      /* 완료/재오픈·결제·수정·삭제·사진업로드 숨김 */
#inst-app.inst-blogger .inst-lock{display:none}          /* 완료잠금 버튼 숨김(블로거는 잠금무관) */
#inst-app.inst-blogger .photo-del{display:none}          /* 사진 삭제 버튼 숨김(다운로드만) */
#inst-app.inst-blogger .inst-mtab[onclick*="'schedule'"],
#inst-app.inst-blogger .inst-mtab[onclick*="'cal'"],
#inst-app.inst-blogger .inst-mtab[onclick*="'unsched'"],
#inst-app.inst-blogger .inst-mtab[onclick*="'stats'"]{display:none} /* 일정관리 탭 숨김(완료·서류만) */
