  @font-face{font-family:'NanumSquare';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/NanumSquare-Regular.woff2') format('woff2');}
  @font-face{font-family:'NanumSquare';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/NanumSquare-Bold.woff2') format('woff2');}
  @font-face{font-family:'NanumSquare';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/NanumSquare-ExtraBold.woff2') format('woff2');}
  @font-face{font-family:'Fraunces';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/Fraunces-SemiBold.woff2') format('woff2');}

  :root{
    --ink:#081B3A; --ink-2:#11325C;
    --card:#F2F4F7; --card-edge:#E6F1FF;
    --gold:#FFC629; --memo-bg:#FFF8E3; --memo-edge:#F0DCA4;
    --teal:#2e7d6b; --rust:#a64b3a;
    --text:#081B3A; --muted:#7a7f8c; --muted-2:rgba(242,244,247,0.65);
    --safe-top:env(safe-area-inset-top, 0px);
    --safe-bottom:env(safe-area-inset-bottom, 0px);
  }
  *{box-sizing:border-box;}
  #authView, #tripListView, #itineraryView, #adminView, #notesView, #profileView{
    opacity:0;
    transition:opacity .28s ease;
  }
  #authView.view-visible, #tripListView.view-visible, #itineraryView.view-visible,
  #adminView.view-visible, #notesView.view-visible, #profileView.view-visible{
    opacity:1;
  }
  html,body{margin:0;padding:0;}
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
  button, input, select, textarea{font-family:inherit;}
  body{
    background:#F2F4F7;
    color:var(--text);
    font-family:'NanumSquare','Malgun Gothic',sans-serif;
    -webkit-font-smoothing:antialiased;
    min-height:100vh;
    user-select:none; -webkit-user-select:none;
    -webkit-touch-callout:none;
    -webkit-tap-highlight-color:transparent;
  }
  body.is-offline .fab-add,
  body.is-offline #itinMenuEditModeBtn,
  body.is-offline #notePhotoAddBtn,
  body.is-offline .voucher-upload-btn,
  body.is-offline #evSave,
  body.is-offline #memoSaveBtn,
  body.is-offline .note-comment-send,
  body.is-offline .note-edit-btn,
  body.is-offline .note-delete-btn,
  body.is-offline .voucher-row-actions{
    opacity:.4;
  }
  body.is-offline .fab-add,
  body.is-offline #itinMenuEditModeBtn,
  body.is-offline #notePhotoAddBtn,
  body.is-offline .voucher-upload-btn,
  body.is-offline .note-comment-send,
  body.is-offline .note-edit-btn,
  body.is-offline .note-delete-btn,
  body.is-offline .voucher-row-actions{
    pointer-events:none;
  }
  body.is-offline #evSave,
  body.is-offline #memoSaveBtn{
    pointer-events:auto; cursor:not-allowed;
  }
  .offline-media-placeholder{
    display:flex; align-items:center; justify-content:center; min-height:110px;
    padding:16px; border-radius:10px; background:rgba(8,27,58,.08);
    color:var(--muted); font-size:12.5px; font-weight:700; text-align:center;
  }
  .offline-notes-truncated{padding:14px 4px; color:var(--muted); font-size:12.5px; text-align:center;}
  input, textarea, select{
    user-select:text; -webkit-user-select:text;
    -webkit-touch-callout:default;
  }
  .wrap{max-width:560px;margin:0 auto;padding:0 16px;}
  #itineraryView .wrap{padding-top:16px;}
  #notesView > header{padding:calc(11px + var(--safe-top)) 16px 11px;}
  .notes-count-wrap{display:inline-flex; align-items:center;}
  #notesView .wrap{padding-top:16px;}
  .mono{font-family:'NanumSquare','IBM Plex Mono',monospace;}
  a{color:inherit;}

  #itineraryView{background:var(--card); min-height:100vh; padding-bottom:calc(60px + var(--safe-bottom)); position:relative;}
  #itinSettingsMenu{top:calc(50px + var(--safe-top));}
  #itineraryView > header{background:var(--ink);}
  #adminView > header{background:var(--ink);}
  #notesView > header{background:var(--ink);}
  header{padding:calc(16px + var(--safe-top)) 16px 18px;color:#E6F1FF;text-align:center;position:relative;}
  #itineraryView > header{padding:calc(11px + var(--safe-top)) 16px 12px;}
  h1{font-family:'NanumSquare',sans-serif;font-weight:800;font-size:26px;line-height:1.2;margin:0 0 6px;color:#fff;}
  #adminView{background:var(--card); min-height:100vh;}
  #notesView{background:var(--card); min-height:100vh; padding-bottom:calc(90px + var(--safe-bottom));}
  #profileView{background:var(--card); min-height:100vh; padding-bottom:calc(40px + var(--safe-bottom));}
  .profile-header{
    display:grid; grid-template-columns:32px 1fr 32px; align-items:center;
    background:var(--ink); padding:calc(12px + var(--safe-top)) 16px 12px; color:#E6F1FF;
  }
  .profile-header h1{grid-column:2; justify-self:center; min-width:0; margin:0; font-size:22px; max-width:60vw; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .profile-header-spacer{grid-column:3;}
  #profileView .wrap{padding-top:16px;}

  .profile-section{background:#fff; border-radius:12px; padding:16px; margin-bottom:12px; box-shadow:0 2px 8px rgba(20,30,50,0.04);}
  .profile-section-title{font-size:16px; font-weight:800; color:var(--ink-2); margin-bottom:10px;}
  .profile-subgroup-title{font-size:16px; font-weight:800; color:var(--ink-2); margin:16px 0 8px; padding-top:14px; border-top:1px solid var(--card-edge);}
  #profileUsernameInput{background:var(--card); color:var(--muted); cursor:default;}
  .profile-email-row{display:flex; gap:8px; align-items:center;}
  .profile-email-row input{flex:1; background:var(--card); color:var(--muted); cursor:default;}
  #profileChangeEmailBtn{
    flex-shrink:0; font-size:12.5px; font-weight:700; color:var(--ink-2); background:#fff;
    border:1.5px solid var(--card-edge); border-radius:9px; padding:9px 12px; cursor:pointer; font-family:'NanumSquare',sans-serif;
  }
  #profileChangeEmailBtn.active{color:#fff; background:var(--ink-2); border-color:var(--ink-2);}
  #profileEmailChangeForm{
    margin-top:12px; padding:14px; border:1.5px solid #C8DDF7; border-radius:12px;
    background:#EEF5FF;
  }
  .profile-email-form-header{display:flex; align-items:flex-start; gap:10px; margin-bottom:14px;}
  .profile-email-form-heading{min-width:0; flex:1;}
  .profile-email-form-title{font-size:14px; font-weight:800; line-height:1.4; color:var(--ink-2);}
  .profile-email-form-desc{margin:4px 0 0; font-size:12px; line-height:1.5; color:var(--muted); overflow-wrap:anywhere;}
  .profile-email-cancel-btn{
    flex-shrink:0; min-height:32px; padding:6px 10px; border:1px solid #B8CEE9; border-radius:8px;
    background:#fff; color:var(--muted); font:700 12px 'NanumSquare',sans-serif; cursor:pointer;
  }
  .profile-email-cancel-btn:active{background:#E2ECF8;}
  .profile-email-action-btn{
    font-size:13px; font-weight:700; color:var(--ink); background:var(--gold); border:none;
    border-radius:9px; padding:9px 14px; cursor:pointer; font-family:'NanumSquare',sans-serif; margin-top:4px;
  }
  .profile-email-action-btn:disabled{opacity:.55;cursor:not-allowed;}
  .profile-danger-zone{border:1.5px solid rgba(166,75,58,0.3); background:#FDF4F2;}
  .profile-danger-desc{font-size:12.5px; color:#8a5347; line-height:1.6; margin-bottom:12px;}
  .profile-delete-account-btn{
    background:var(--rust); color:#fff; border:none; border-radius:20px; padding:10px 18px;
    font-size:14px; font-weight:700; cursor:pointer; font-family:'NanumSquare',sans-serif;
  }
  .itin-header-top{display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px; margin-bottom:16px; min-height:32px;}
  #tripName{
    grid-column:2; justify-self:center; min-width:0; margin:0; font-size:22px; max-width:55vw;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .budget-toggle-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;min-height:26px;}
  .budget-toggle-row #budgetToggleBtn{margin-left:auto;}
  .offline-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:800;line-height:1.2;white-space:nowrap;color:var(--muted);background:#fff;border:1px solid var(--card-edge);border-radius:20px;padding:4px 9px;}
  .offline-chip::before{content:"";flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:var(--rust);}
  .voucher-offline-btn{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:800;line-height:1.2;white-space:nowrap;color:var(--ink-2);background:#fff;border:1px solid var(--card-edge);border-radius:20px;padding:4px 9px;cursor:pointer;}
  .voucher-offline-btn svg{width:13px;height:13px;}
  .voucher-offline-btn[disabled]{opacity:.55;cursor:default;}
  .voucher-offline-btn.done{color:var(--muted);border-color:var(--card-edge);cursor:pointer;}
  .voucher-offline-btn.done svg{color:var(--teal);}
  .voucher-offline-btn.err{color:#7a3b1d;border-color:#E4C3B0;background:#fff;text-decoration:underline;}
  .voucher-offline-btn.saving svg{animation:voucher-spin 1s linear infinite;}
  @keyframes voucher-spin{to{transform:rotate(360deg);}}
  .offline-chip[hidden],.voucher-offline-btn[hidden]{display:none;}
  #budgetToggleBtn{
    display:flex; align-items:center; gap:5px; background:none; border:none; cursor:pointer;
    font-size:12.5px; font-weight:700; color:var(--muted); padding:4px 2px; font-family:'NanumSquare',sans-serif;
  }
  #budgetToggleBtn svg{width:15px; height:15px; display:block;}
  #budgetToggleBtn.active{color:var(--ink-2);}
  .admin-h1{
    grid-column:2; justify-self:center; min-width:0; margin:0; font-size:22px; max-width:55vw;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  #notesTitle{
    grid-column:2; justify-self:center; min-width:0; margin:0; font-size:22px; max-width:55vw;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .back-btn-inline{
    justify-self:start;
    white-space:nowrap; flex-shrink:0;
    background:none;border:none; color:#E6F1FF;
    width:32px; height:32px; cursor:pointer; padding:0;
    display:flex; align-items:center; justify-content:center;
  }
  .ui-icon{width:11px; height:11px; vertical-align:middle; display:inline-block;}
  .back-btn-inline .ui-icon{width:22px; height:22px;}
  .header-right-group{justify-self:end; display:flex; gap:5px; align-items:center; flex-shrink:0; position:relative;}
  .hdr-edit-btn{
    background:none;border:none; color:#E6F1FF;
    width:32px; height:32px; border-radius:10px; cursor:pointer; padding:0;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .hdr-edit-btn svg{width:19px; height:19px;}
  .hdr-edit-btn.active{background:var(--gold);color:var(--ink);}
  .trip-meta-row{display:flex; align-items:center; justify-content:center; margin-top:-4px; margin-bottom:0; flex-wrap:wrap; line-height:1.2; font-size:13px;}
  .trip-meta-row .mono{font-family:'NanumSquare','IBM Plex Mono',monospace;font-size:13px;color:#fff;}
  .meta-sep{color:rgba(255,255,255,0.5); font-size:12px; margin:0 6px;}
  #tripMetaLine .flag-icon{width:16px; vertical-align:-2px;}
  .tt-label{color:var(--gold); font-weight:800;}

  .notif-badge{
    display:inline-block; min-width:16px; height:16px; padding:0 3px; margin-left:5px;
    background:var(--rust); color:#fff; border-radius:9px; font-size:10px; line-height:16px;
    text-align:center; font-weight:700;
  }

  .tc-shadow-wrap{border-radius:14px; margin-bottom:5px;}
  .tc-swipe-wrap{
    position:relative; border-radius:14px; overflow:hidden;
    -webkit-mask-image:-webkit-radial-gradient(white, black); /* 일부 안드로이드 웹뷰에서 overflow:hidden+radius 클리핑 안 되는 버그 우회 */
  }
  .tc-actions{
    position:absolute; top:0; right:0; bottom:0; display:flex; align-items:stretch; gap:4px;
    padding:5px 6px 5px 10px; z-index:1; background:none;
  }
  .tc-act-btn{
    width:60px; border:none; color:#fff; font-size:12.5px; font-family:'NanumSquare',sans-serif; font-weight:700;
    display:flex; align-items:center; justify-content:center; cursor:pointer; border-radius:12px;
  }
  .tc-edit{background:var(--ink-2);}
  .tc-delete{background:#9CA3AF;}
  .trip-card{
    display:flex; align-items:stretch;
    background:#fff; border-radius:14px;
    cursor:pointer; overflow:hidden; position:relative; user-select:none; z-index:2;
    -webkit-tap-highlight-color:transparent; touch-action:pan-y;
    /* 사진 캐러셀과 같은 감속 곡선 — 처음에 빠르게 나가고 끝에서 부드럽게 멎는다 */
    transition:transform .28s cubic-bezier(0.22, 1, 0.36, 1); will-change:transform;
  }
  .trip-card img{-webkit-user-drag:none; user-drag:none; pointer-events:none;}
  .trip-card.no-anim{transition:none;}
  .trip-card .t-stripe{flex-shrink:0; width:8px; position:relative;}
  .trip-card .t-stripe.upcoming{background:var(--gold);}
  .trip-card .t-stripe.ongoing{background:var(--ink-2);}
  .trip-card .t-stripe.done{background:#C7CDD6;}
  .trip-card .t-stripe::after{
    content:""; position:absolute; left:100%; top:50%; transform:translate(-50%,-50%);
    width:12px; height:12px; border-radius:50%; background:var(--card);
  }
  .trip-card .t-body{flex:1; min-width:0; display:flex; align-items:center; gap:12px; padding:15px 14px 15px 16px;}
  .trip-card .t-icon{
    flex-shrink:0; width:48px; height:48px; border-radius:12px;
    background:#F2F4F7; color:var(--ink-2);
    display:flex; align-items:center; justify-content:center;
  }
  .trip-card .t-icon svg{width:21px; height:21px;}
  .trip-card .t-icon img{width:38px; height:38px; object-fit:contain;}
  .trip-card .t-main{flex:1; min-width:0;}
  .trip-card .t-name{font-family:'NanumSquare',sans-serif;font-weight:800;font-size:16.5px; color:var(--text);}
  .trip-card .t-dates{font-family:'NanumSquare','IBM Plex Mono',monospace;font-size:12.5px;color:var(--muted);margin-top:3px;}
  .trip-card .t-shared{
    display:inline-block; margin-top:6px; font-size:10px; font-family:'NanumSquare','IBM Plex Mono',monospace;
    color:var(--teal); background:rgba(46,125,107,0.10); border:1px solid rgba(46,125,107,0.25);
    padding:2px 7px; border-radius:12px;
  }
  .trip-card .t-side{flex-shrink:0;}
  .trip-card .t-badge{
    font-size:13px; font-weight:700; font-family:'NanumSquare',sans-serif; white-space:nowrap;
  }
  .trip-card .t-badge.upcoming{color:var(--gold);}
  .trip-card .t-badge.ongoing{color:#2F80ED;}
  .trip-card .t-badge.done{
    display:flex; align-items:center; gap:5px; font-size:13px; color:#8A93A3; font-weight:700;
    font-family:'NanumSquare',sans-serif;
  }
  .trip-card .t-badge.done .t-check{
    width:17px; height:17px; border-radius:50%; background:#9CA3AF;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .trip-card .t-badge.done .t-check svg{width:11px; height:11px; color:#fff;}
  .new-trip-box{
    background:#fff; border:1.5px dashed rgba(8,27,58,0.18); border-radius:16px;
    margin-bottom:14px; overflow:hidden;
  }
  .new-trip-card{
    display:flex; align-items:center; gap:14px;
    padding:16px 18px; cursor:pointer;
  }
  .new-trip-card .ntc-icon{
    flex-shrink:0; width:40px; height:40px; border-radius:10px;
    border:1.5px dashed var(--ink-2); color:var(--ink-2);
    display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:700;
  }
  .new-trip-card .ntc-text{flex:1; min-width:0; text-align:left;}
  .new-trip-card .ntc-title{color:var(--text); font-weight:800; font-size:15.5px;}
  .new-trip-card .ntc-sub{color:var(--muted); font-size:12.5px; margin-top:2px;}
  .new-trip-card .ntc-arrow{color:var(--muted); font-size:22px; flex-shrink:0; transition:transform .25s ease; display:inline-block;}
  .new-trip-box.expanded .ntc-arrow{transform:rotate(90deg);}
  .trip-type-picker{display:flex; gap:8px; flex-wrap:wrap;}
  .country-picker{position:relative;}
  .country-picker input[type="text"]{padding-left:38px !important;}
  .country-flag-preview{
    position:absolute; left:10px; top:50%; transform:translateY(-50%);
    width:20px; height:20px; display:flex; align-items:center; justify-content:center;
    pointer-events:none; z-index:2; color:var(--muted);
  }
  .country-flag-preview .flag-icon{width:20px; height:auto; border-radius:2px; display:block;}
  .country-flag-preview svg{width:19px; height:19px;}
  .flag-icon{width:20px; height:auto; border-radius:2px; vertical-align:middle; box-shadow:0 0 0 1px rgba(0,0,0,0.06);}
  .country-dropdown{
    display:none; position:absolute; top:calc(100% + 4px); left:0; right:0;
    background:#fff; border:1px solid var(--card-edge); border-radius:10px;
    box-shadow:0 10px 24px rgba(0,0,0,0.15); max-height:220px; overflow-y:auto; z-index:15;
  }
  .country-dropdown.show{display:block;}
  .country-opt{
    display:flex; align-items:center; gap:8px; padding:9px 12px; cursor:pointer; font-size:14px;
    font-family:'NanumSquare',sans-serif; color:var(--text);
  }
  .country-opt:hover{background:var(--card);}
  .country-opt .flag-icon{width:22px;}
  .country-empty{padding:10px 12px; font-size:13px; color:var(--muted);}
  .tt-opt{
    width:44px; height:44px; border-radius:12px;
    border:1.5px solid var(--card-edge); background:#fff; cursor:pointer;
    display:flex; align-items:center; justify-content:center; padding:6px;
  }
  .tt-opt img{width:100%; height:100%; object-fit:contain;}
  .tt-opt.active{border-color:var(--gold); background:#FFF8E5; box-shadow:0 0 0 2px rgba(255,198,41,0.35);}
  .new-trip-form-wrap{max-height:0; overflow:hidden; transition:max-height .35s ease;}
  .new-trip-form{padding:0 18px 18px;}
  .new-trip-form .field label{color:var(--text); font-weight:700;}
  .new-trip-form .field input[type="text"]{background:#fff; color:var(--text);}
  .new-trip-form .form-actions{justify-content:stretch;}
  #ntSave{background:var(--gold); color:var(--ink); border:none; font-weight:800; width:100%; padding:11px 16px;}
  #authView{
    position:fixed; inset:0; z-index:40;
    flex-direction:column; justify-content:center;
    background:#F2F4F7;
    overflow-y:auto;
  }
  .auth-lang-btn{
    position:absolute; top:calc(22px + var(--safe-top)); right:16px; z-index:2;
    width:38px; height:38px; display:flex; align-items:center; justify-content:center;
    border-radius:50%; border:1px solid var(--card-edge); background:#fff; color:var(--ink-2);
    box-shadow:0 2px 8px rgba(20,30,50,0.10); cursor:pointer;
  }
  .auth-lang-btn svg{width:19px; height:19px; display:block;}
  .auth-lang-menu{top:calc(66px + var(--safe-top)); right:16px; min-width:180px;}
  .tl-dd-btn.lang-opt-auth{height:40px; box-sizing:border-box;}
  .tl-dd-btn.lang-opt-auth.active{color:var(--ink-2); font-weight:800;}
  .tl-dd-btn.lang-opt-auth.active .lang-check{display:block;}
  /* #authView가 flex column이라 margin:0 auto(.wrap)만 있으면 stretch가 풀려
     너비가 fit-content가 된다 → 언어마다 폼 폭이 달라짐. width로 고정한다 */
  .auth-wrap{flex-shrink:0; width:100%;}

  /* ---------- 여행 목록 화면: 밝은 테마 ---------- */
  #tripListView{background:var(--card); min-height:100vh; padding-bottom:calc(40px + var(--safe-bottom));}
  .tl-topbar{
    display:grid; grid-template-columns:1fr auto 1fr; align-items:center;
    padding:calc(9px + var(--safe-top)) 14px 9px; background:var(--ink); box-shadow:0 1px 0 rgba(0,0,0,0.15);
    position:sticky; top:0; z-index:15;
  }
  #hamburgerBtn{justify-self:start;}
  .tl-icon-btn{
    background:none; border:none; font-size:19px; color:#E6F1FF; cursor:pointer;
    width:38px; height:38px; display:flex; align-items:center; justify-content:center;
    position:relative; border-radius:50%; flex-shrink:0;
  }
  .tl-icon-btn:hover{background:rgba(255,255,255,0.12);}
  .tl-icon-btn .ui-icon{width:23px; height:23px;}
  .tl-right-group{justify-self:end; display:flex; align-items:center; gap:2px;}
  .tl-logo-small{justify-self:center;}
  .tl-logo-small img{height:32px; display:block;}
  .notif-dot{
    position:absolute; top:4px; right:4px; width:8px; height:8px; border-radius:50%;
    background:#FF9500; border:1.5px solid #fff;
  }
  .tl-dropdown{
    display:block; position:absolute; top:calc(56px + var(--safe-top)); background:#fff; border-radius:14px;
    box-shadow:0 14px 30px rgba(0,0,0,0.2); padding:8px; min-width:210px; z-index:20;
    max-height:65vh; overflow-y:auto;
    opacity:0; visibility:hidden; pointer-events:none; transform:translateY(-6px) scale(0.97);
    transition:opacity .16s ease, transform .16s ease, visibility .16s;
  }
  .tl-dropdown.show{opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0) scale(1);}
  #hamburgerMenu{left:12px;}
  .tl-dropdown-right{right:12px;}
  .tl-dd-btn{
    display:flex; align-items:center; justify-content:space-between; width:100%; text-align:left; padding:10px 12px; border-radius:10px;
    background:none; border:none; cursor:pointer; font-size:14px; color:var(--text); font-family:'NanumSquare',sans-serif;
  }
  .tl-dd-btn-main{display:flex; align-items:center; gap:8px; min-width:0;}
  .tl-dd-icon{display:flex; flex-shrink:0; width:17px; height:17px; color:var(--muted);}
  .tl-dd-icon svg{width:100%; height:100%;}
  .tl-dd-btn.lang-opt, .tl-dd-btn.lang-opt-detail{height:40px; box-sizing:border-box;}
  .tl-dd-btn:hover{background:var(--card);}
  .tl-dd-divider{height:1px; background:var(--card-edge); margin:6px 4px;}
  .tl-dd-header{font-size:10.5px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; padding:6px 12px 4px;}
  .tl-dd-btn.lang-opt.active, .tl-dd-btn.lang-opt-detail.active{color:var(--ink-2); font-weight:800;}
  .lang-check{display:none; width:16px; height:16px; flex-shrink:0;}
  .lang-check svg{width:100%; height:100%; display:block;}
  .tl-dd-btn.lang-opt.active .lang-check, .tl-dd-btn.lang-opt-detail.active .lang-check{display:block;}
  .tl-no-notif{padding:24px 10px; text-align:center; color:var(--muted); font-size:13px;}

  .tl-welcome{font-size:17px; font-weight:800; color:var(--text); padding:18px 2px 9px;}

  .tl-section-head{display:flex; align-items:center; justify-content:space-between; margin:22px 2px 10px;}
  .tl-section-head-right{display:flex; align-items:center; gap:10px;}
  .tl-view-toggle-btn{
    display:flex; align-items:center; justify-content:center; width:26px; height:26px;
    background:none; border:none; cursor:pointer; color:var(--muted); padding:0;
  }
  .tl-view-toggle-btn svg{width:18px; height:18px; display:block;}
  .tl-view-toggle-btn:hover{color:var(--ink-2);}

  .cal-nav{display:flex; align-items:center; justify-content:center; gap:18px; margin-bottom:10px;}
  .cal-nav button{background:none; border:none; cursor:pointer; color:var(--muted); display:flex; padding:4px;}
  .cal-nav button svg{width:18px; height:18px; display:block;}
  #calMonthLabel{font-size:15px; font-weight:700; color:var(--text); min-width:90px; text-align:center;}
  #tripList, #tripCalendar{transition:opacity .18s ease;}
  .cal-weekdays{display:grid; grid-template-columns:repeat(7,1fr); gap:2px; text-align:center; font-size:clamp(9px, 3vw, 11.5px); color:var(--muted); font-weight:700; margin-bottom:2px; line-height:1.3;}
  .cal-grid{display:flex; flex-direction:column; gap:2px;}
  .cal-week-row{display:flex; gap:2px;}
  .cal-cell-outer{flex:1 1 0; min-width:0; position:relative; padding-bottom:14.28%;}
  .cal-cell{
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    font-size:clamp(9.5px, 3.2vw, 12.5px); color:var(--text); border-radius:6px; cursor:default; box-sizing:border-box;
    background:#fff;
  }
  .cal-cell.empty{opacity:0; pointer-events:none; background:none;}
  .cal-cell.has-trip{background:rgba(255,198,41,0.38); cursor:pointer; font-weight:700; border-radius:0;}
  .cal-cell.has-trip.range-start{border-top-left-radius:14px; border-bottom-left-radius:14px;}
  .cal-cell.has-trip.range-end{border-top-right-radius:14px; border-bottom-right-radius:14px;}
  .cal-cell.today{box-shadow:inset 0 0 0 1.5px var(--ink-2);}
  .cal-trip-bubble{
    position:absolute; bottom:calc(100% + 3px); left:0; z-index:2;
    background:var(--ink-2); color:#fff; font-size:11.5px; font-weight:700;
    padding:4px 8px; border-radius:7px; white-space:nowrap; pointer-events:none;
    max-width:150px; overflow:hidden; text-overflow:ellipsis;
  }
  .cal-trip-bubble::after{
    content:""; position:absolute; top:100%; left:9px;
    border:4px solid transparent; border-top-color:var(--ink-2);
  }
  .tl-section-head span{font-weight:800; font-size:16.5px; color:var(--text); font-family:'NanumSquare',sans-serif;}
  .tl-section-head .offline-chip{font-size:11.5px;color:var(--muted);line-height:1.2;}
  @media(max-width:380px){body.is-offline .tl-section-head .tl-viewall{display:none;}.tl-section-head-right{gap:6px;}}
  .tl-viewall{font-size:13px; color:var(--muted); text-decoration:none; font-family:'NanumSquare',sans-serif;}

  .auth-logo-pc{
    display:block; width:100%; margin:0 auto 20px; padding:0 16px; box-sizing:border-box;
  }
  /* 로그인은 세로형(logo.svg), 그 외 화면은 가로형(logo-navy.png)을 쓴다 — showAuthBox()에서 src를 바꿈 */
  .auth-logo-pc img{width:55%; height:auto; display:block; margin:0 auto;}
  #authView.auth-box-compact .auth-logo-pc{margin-bottom:14px;}
  #authView.auth-box-compact .auth-logo-pc img{width:100%; max-width:180px;}
  .auth-tagline{
    text-align:center; color:var(--text); font-size:14.5px; font-weight:600;
    margin-top:3px;
  }

  /* ---------- PC(데스크톱) 전용 로그인 화면 ---------- */
  @media (min-width: 860px) {
    #authView{
      background:#F2F4F7;
      justify-content:center;
    }
    .auth-wrap{max-width:400px;}
    .auth-logo-pc{max-width:400px; margin:0 auto 22px;}
  }
  .visually-hidden{
    position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
    clip:rect(0,0,0,0); white-space:nowrap; border:0;
  }
  #loginBox, #registerBox, #forgotBox{
    padding:4px 0 0; margin-top:8px;
  }
  .auth-switch{text-align:center;font-size:14px;color:var(--muted);margin-top:16px;}
  .auth-switch a{color:var(--ink-2);font-weight:700;text-decoration:underline;}
  #authView .field label{font-size:14px;color:var(--text);font-weight:700;}
  .reg-lang-picker{display:flex; gap:6px; flex-wrap:wrap;}
  .reg-lang-opt{
    flex:0.85; min-width:0; font-size:12.5px; font-weight:700; padding:9px 6px; border-radius:9px;
    border:1.5px solid var(--card-edge); background:#fff; color:var(--muted); cursor:pointer;
    font-family:'NanumSquare',sans-serif; white-space:nowrap;
  }
  .reg-lang-opt[data-lang="id"]{flex:1.5;}
  .reg-lang-opt.active{border-color:var(--ink-2); color:var(--ink-2); background:rgba(17,50,92,0.06);}
  .reg-agree-row{margin:14px 0 4px;}
  .reg-agree-label{display:flex; align-items:flex-start; gap:8px; font-size:12.5px; color:var(--muted); cursor:pointer; line-height:1.5;}
  .reg-agree-label input[type="checkbox"]{width:16px; height:16px; flex-shrink:0; margin-top:1px; accent-color:var(--ink-2); cursor:pointer;}
  .reg-agree-label a{color:var(--ink-2); font-weight:700; text-decoration:underline;}
  #authView .field input{font-size:16px;padding:10px 12px;border:1px solid var(--muted);}
  #profileView .field input, #profileEmailInput{border:1px solid var(--muted);}
  .input-icon-wrap{position:relative;}
  .input-icon-wrap input{width:100%;padding-left:38px !important;}
  .input-icon{
    position:absolute; left:11px; top:50%; transform:translateY(-50%);
    width:17px; height:17px; color:var(--muted); pointer-events:none;
  }
  .pw-wrap input{padding-right:42px !important;}
  .pw-toggle{
    position:absolute; right:4px; top:50%; transform:translateY(-50%);
    background:none; border:none; cursor:pointer;
    padding:6px; opacity:0.5; color:var(--muted); display:flex; align-items:center;
  }
  .pw-toggle svg{width:18px; height:18px;}
  .pw-toggle.active{opacity:1; color:var(--ink-2);}
  .forgot-link-row{text-align:right; margin-top:10px;}
  .forgot-tabs{display:flex; gap:6px; margin-bottom:16px; border-bottom:1px solid var(--card-edge);}
  .modal-tabs{display:flex; gap:6px; margin:4px 0 16px; border-bottom:1px solid var(--card-edge);}
  .modal-tab{
    flex:1; background:none; border:none; padding:10px 4px; cursor:pointer;
    font-size:16px; font-weight:700; color:var(--muted); font-family:'NanumSquare',sans-serif;
    position:relative;
  }
  .modal-tab.active{color:var(--ink-2);}
  .modal-tab.active::after{content:""; position:absolute; left:0; right:0; bottom:-1px; height:2.5px; background:var(--ink-2);}
  .forgot-tab{
    flex:1; background:none; border:none; padding:10px 4px; cursor:pointer;
    font-size:14px; font-weight:700; color:var(--muted); font-family:'NanumSquare',sans-serif;
    position:relative;
  }
  .forgot-tab.active{color:var(--ink-2);}
  .forgot-tab.active::after{content:""; position:absolute; left:0; right:0; bottom:-1px; height:2.5px; background:var(--ink-2);}
  .forgot-link-row a{font-size:12.5px; color:var(--muted); text-decoration:underline;}
  .login-submit-btn{
    width:100%; display:block; margin-top:16px;
    border-radius:10px; border:none; background:var(--ink-2); color:#fff;
  }
  #authView .back-to-main{
    display:inline-flex; align-items:center; gap:6px;
    font-size:13.5px; color:var(--ink-2); font-weight:600; margin-bottom:14px;
    background:#fff; border:1px solid var(--card-edge); border-radius:10px; padding:8px 14px;
    cursor:pointer; font-family:'NanumSquare',sans-serif;
  }
  #authView .back-to-main .ui-icon{width:17px; height:17px;}
  .auth-msg{text-align:center;font-size:12.5px;margin-top:10px;min-height:1em;}
  .auth-msg.err{color:#e39a8a;}
  .auth-msg.ok{color:var(--teal);}
  .admin-user-card{
    background:var(--card); border-radius:14px; padding:14px 16px; margin-bottom:10px;
    box-shadow:0 6px 16px rgba(0,0,0,0.22);
  }
  .admin-user-card .au-top{display:flex;justify-content:space-between;align-items:center;gap:8px;}
  .admin-user-card .au-email{font-weight:700;font-size:14.5px;}
  .admin-user-card .au-name{font-size:13px;color:#565b68;margin-top:2px;line-height:1.4;}
  .invite-card{border:1px solid var(--card-edge);box-shadow:none;}
  .invite-actions{display:flex; gap:10px; margin-top:12px; justify-content:center;}
  .drive-cleanup-card{border:1px solid var(--card-edge);box-shadow:none;}
  .drive-cleanup-desc{font-size:12.5px;line-height:1.5;color:#565b68;}
  .drive-cleanup-warn{margin-top:5px;font-size:11.5px;color:var(--rust);font-weight:700;}
  .drive-cleanup-actions{display:flex;gap:6px;margin-top:10px;}
  .drive-cleanup-actions .act-btn{flex:1;justify-content:center;}
  .invite-act-btn{
    width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    cursor:pointer; flex-shrink:0;
  }
  .invite-act-btn svg{width:18px; height:18px;}
  .invite-accept{background:var(--gold); border:none; color:var(--ink);}
  .invite-decline{background:#fff; border:1.5px solid #5A6270; color:#5A6270;}
  .admin-user-card .au-actions{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;}
  .member-row{display:flex;align-items:center;gap:8px;min-height:42px;box-sizing:border-box;background:#fff;border:1px solid var(--card-edge);border-radius:8px;padding:6px 10px;font-size:12.5px;}

  /* ---------- 관리자 페이지: 탭 ---------- */
  .ssl-reminder-card{
    display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px;
    background:#FFF8E5; border:1px solid var(--gold); border-radius:12px; padding:14px 16px; margin-top:16px;
  }
  .ssl-reminder-text{display:flex; flex-direction:column; gap:2px; font-size:13px; color:#8a6d10;}
  .ssl-reminder-text b{font-size:14px;}
  .ssl-reminder-form{display:flex; gap:6px; align-items:center;}
  .ssl-reminder-form input[type="date"]{font-size:13px; padding:6px 8px; border-radius:8px; border:1px solid var(--card-edge); font-family:'NanumSquare',sans-serif;}
  .ssl-reminder-form button{
    font-size:12.5px; font-weight:700; color:var(--ink); background:var(--gold); border:none;
    border-radius:8px; padding:7px 12px; cursor:pointer; white-space:nowrap; font-family:'NanumSquare',sans-serif;
  }
  /* ---------- 관리자 페이지: 검색+일괄 액션 툴바 ---------- */
  .admin-toolbar{display:flex; align-items:center; gap:10px; margin-bottom:12px; margin-top:16px; flex-wrap:wrap;}
  .admin-search-wrap{position:relative; flex:1; min-width:160px;}
  .admin-db-backup-btn{
    display:flex; align-items:center; gap:6px; flex-shrink:0; font-size:12.5px; font-weight:700;
    color:var(--ink-2); background:#fff; border:1.5px solid var(--card-edge); border-radius:9px;
    padding:9px 12px; cursor:pointer; font-family:'NanumSquare',sans-serif;
  }
  .admin-db-backup-btn svg{width:15px; height:15px; flex-shrink:0;}
  .admin-search-icon{position:absolute; left:11px; top:50%; transform:translateY(-50%); width:16px; height:16px; color:var(--muted); pointer-events:none;}
  .admin-search-wrap input{width:100%; padding:9px 10px 9px 34px; border-radius:9px; border:1px solid var(--card-edge); font-size:14px; font-family:'NanumSquare',sans-serif; box-sizing:border-box;}
  .admin-bulk-actions{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
  .admin-bulk-count{font-size:12.5px; color:var(--muted); font-weight:700; white-space:nowrap;}
  .admin-bulk-btn{
    display:inline-flex; align-items:center; justify-content:center; gap:6px; font-size:12.5px; font-weight:700; border-radius:9px;
    padding:9px 12px 8px; line-height:1; cursor:pointer; white-space:nowrap; font-family:'NanumSquare',sans-serif;
  }
  .admin-bulk-btn svg{width:15px; height:15px; display:block; flex-shrink:0;}
  .admin-bulk-btn span{display:block; line-height:1;}
  .admin-bulk-reset{background:var(--gold); border:none; color:var(--ink);}
  .admin-bulk-ban{background:var(--ink); border:none; color:#fff;}

  /* ---------- 관리자 페이지: 회원 테이블 ---------- */
  .admin-user-count{
    display:flex; align-items:center; justify-content:center; gap:6px; font-size:13px; color:#E6F1FF; font-weight:600;
    margin-top:2px;
  }
  .admin-user-count svg{width:16px; height:16px;}
  .admin-table-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch;}
  .admin-table{width:100%; border-collapse:collapse; font-size:12.5px; table-layout:fixed;}
  .admin-table thead th{
    text-align:left; font-size:10.5px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em;
    padding:8px 6px; border-bottom:1.5px solid var(--card-edge); white-space:nowrap; overflow:hidden;
  }
  .admin-th-check{width:24px;}
  .admin-table thead th.admin-th-verified{text-align:center;}
  .admin-th-verified{width:44px;}
  .admin-th-actions{width:50px;}
  .admin-table tbody td{padding:10px 6px; border-bottom:1px solid var(--card-edge); vertical-align:middle; overflow:hidden;}
  .admin-table tbody tr:last-child td{border-bottom:none;}
  .admin-table tbody tr.checked{background:rgba(47,128,237,0.10);}
  .admin-row-username{font-weight:700; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .admin-row-name{color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .admin-row-email{color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .admin-row-verified{text-align:center; padding-left:0 !important; padding-right:0 !important;}
  .admin-row-verified svg{width:17px; height:17px; color:var(--teal); display:block; margin:0 auto;}
  .admin-row-approve-btn{
    font-size:12px; font-weight:700; color:var(--ink); background:var(--gold); border:none;
    border-radius:8px; padding:6px 10px; cursor:pointer; white-space:nowrap; font-family:'NanumSquare',sans-serif;
  }
  .member-row .mr-email{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .member-row .mr-role{font-size:10px;color:var(--muted);font-family:'IBM Plex Mono','NanumSquare',monospace;}
  .member-row .mr-role-select{
    font-size:11px; font-family:'NanumSquare',sans-serif; padding:3px 6px; border-radius:6px;
    border:1px solid var(--card-edge); background:#fff; color:var(--text); flex-shrink:0;
  }
  .member-row .mr-role,.member-row .mr-role-select{flex-shrink:0;height:26px;box-sizing:border-box;display:flex;align-items:center;}
  .member-row .mr-remove{color:var(--rust);cursor:pointer;font-weight:600;padding:0 3px;}
  .field{margin-bottom:10px;}
  .field label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:4px;}
  .field input, .field select, .field textarea{
    width:100%; font-size:15.5px; padding:9px 10px; border-radius:8px;
    border:1px solid var(--card-edge); font-family:'NanumSquare',sans-serif; box-sizing:border-box;
    resize:vertical;
  }
  #notesSearchRow{
    background:#E4E7EC; padding:0 16px; max-height:0; opacity:0; overflow:hidden;
    transition:max-height .25s ease, opacity .2s ease, padding .25s ease;
  }
  #notesSearchRow.show{max-height:70px; opacity:1; padding:10px 16px;}
  #notesSearchRow input{
    width:100%; box-sizing:border-box; padding:9px 12px; border-radius:20px; border:1px solid var(--card-edge);
    background:#fff; color:var(--text); font-size:14px; font-family:'NanumSquare',sans-serif;
  }
  #notesSearchRow input::placeholder{color:var(--muted);}

  #notesEventContext{margin-bottom:14px;}
  .notes-event-card{
    display:flex; align-items:center; gap:10px; background:#fff; border-radius:12px; padding:12px 14px;
    box-shadow:0 2px 8px rgba(20,30,50,0.04);
  }
  .notes-event-card .icon{width:34px; height:34px; border-radius:50%; background:var(--card); display:flex; align-items:center; justify-content:center; font-size:16px; flex-shrink:0;}
  .notes-event-card-title{font-size:14px; font-weight:700; color:var(--text);}
  .notes-event-card-place{font-size:12px; color:var(--muted); margin-top:1px;}
  .notes-event-hint{font-size:12px; color:var(--muted); text-align:center; margin-top:8px;}

  .note-card{background:#fff; border-radius:12px; padding:12px 14px; margin-bottom:10px; box-shadow:0 2px 8px rgba(20,30,50,0.04);}
  .note-card-head{display:flex; align-items:center; gap:8px; margin-bottom:6px;}
  .note-avatar{
    width:22px; height:22px; border-radius:50%; background:var(--gold); color:var(--ink);
    font-size:11px; font-weight:700; display:flex; align-items:center; justify-content:center; flex-shrink:0;
  }
  .note-author{font-size:12px; color:var(--text); font-weight:700;}
  .note-time{font-size:11px; color:var(--muted);}
  .note-actions-wrap{margin-left:auto; position:relative; display:flex; align-items:center;}
  .note-more-btn{background:none; border:none; cursor:pointer; color:var(--muted); padding:2px; display:flex;}
  .note-more-btn svg{width:16px; height:16px; display:block;}
  .note-actions-wrap.expanded .note-more-btn{display:none;}
  .note-actions{
    display:flex; gap:6px; opacity:0; max-width:0; overflow:hidden; transform:translateX(8px);
    transition:opacity .25s ease, max-width .25s ease, transform .25s ease;
  }
  .note-actions-wrap.expanded .note-actions{opacity:1; max-width:160px; transform:translateX(0);}
  .note-edit-btn, .note-delete-btn{
    display:flex; align-items:center; justify-content:center; width:26px; height:26px;
    border-radius:50%; border:none; cursor:pointer; flex-shrink:0;
  }
  .note-edit-btn svg, .note-delete-btn svg{width:14px; height:14px; display:block;}
  .note-edit-btn{background:var(--card); color:var(--ink-2);}
  .note-delete-btn{background:#FDECEC; color:var(--rust);}
  .note-content{font-size:13.5px; color:#333; line-height:1.55; white-space:pre-wrap; word-break:break-word;}
  .note-linked-event{background:var(--card); border-radius:9px; padding:8px 10px; margin-top:8px; display:flex; align-items:center; gap:8px;}
  .note-linked-event-icon{font-size:18px; flex-shrink:0; line-height:1;}
  .note-linked-event-line{font-size:12px; font-weight:700; color:var(--ink-2);}
  .note-linked-event-place{font-size:11.5px; color:var(--muted); margin-top:1px;}
  .note-comments{margin-top:10px; border-top:1px solid var(--card-edge); padding-top:8px;}
  .note-comment-toggle{
    display:flex; align-items:center; gap:5px; padding:2px 0; border:none; background:none;
    color:var(--muted); font-family:'NanumSquare',sans-serif; font-size:12.5px; font-weight:700; cursor:pointer;
  }
  .note-comment-toggle svg{width:14px; height:14px; display:block; flex-shrink:0;}
  .note-comment-body{display:none; margin-top:8px;}
  .note-comments.open .note-comment-body{display:block;}
  .note-comment{display:flex; align-items:flex-start; gap:7px; margin-bottom:8px;}
  .note-comment-avatar{width:20px; height:20px; font-size:10px; margin-top:1px;}
  .note-comment-main{flex:1; min-width:0;}
  .note-comment-meta{display:flex; align-items:center; gap:4px;}
  .note-comment-author{font-size:11.5px; font-weight:700; color:var(--text);}
  .note-comment-time{font-size:10.5px; color:var(--muted);}
  .note-comment-text{font-size:13px; color:#333; line-height:1.5; white-space:pre-wrap; word-break:break-word; margin-top:1px;}
  .note-comment-del{
    flex-shrink:0; width:20px; height:20px; border:none; border-radius:50%; background:none;
    color:var(--muted); font-size:11px; line-height:1; cursor:pointer;
  }
  .note-comment-form{display:flex; gap:6px; align-items:stretch; margin-top:6px;}
  .note-comment-input{
    flex:1; min-width:0; min-height:36px; box-sizing:border-box; padding:7px 10px;
    border:1px solid var(--card-edge); border-radius:18px; background:var(--card);
    font-family:'NanumSquare',sans-serif; font-size:13px;
  }
  .note-comment-send{
    flex-shrink:0; min-height:36px; padding:7px 14px; border:none; border-radius:18px;
    background:var(--ink-2); color:#fff; font-family:'NanumSquare',sans-serif;
    font-size:12.5px; font-weight:700; cursor:pointer;
  }
  .note-comment-send:disabled{opacity:.5; cursor:wait;}
  .note-highlight{background:#FFE58A; color:inherit; border-radius:3px; padding:0 1px;}
  .note-content a{color:#2f7fc4;}
  /* 사진은 카드 본문보다 한 단계 더 안쪽으로 넣는다 (카드 좌우 패딩 14px의 1.5배) */
  .note-photo-block{margin:8px 7px 0;}
  /* 글 폭에 맞춰 반응형으로 커지되 비율은 항상 1:1 */
  .note-photos{position:relative; border-radius:10px; overflow:hidden; background:#0d1729; aspect-ratio:1/1;}
  .note-photo-track{display:flex; height:100%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch; cursor:grab; touch-action:pan-y pinch-zoom;}
  .note-photo-track::-webkit-scrollbar{display:none;}
  /* 끄는 동안과 붙는 애니메이션 중에는 스냅을 꺼야 매 프레임 되돌려지지 않는다 */
  .note-photo-track.dragging,
  .note-photo-track.animating{scroll-snap-type:none;}
  .note-photo-track.dragging{cursor:grabbing;}
  .note-photo{flex:0 0 100%; scroll-snap-align:center; width:100%; height:100%; display:block; object-fit:cover; object-position:center; cursor:pointer; user-select:none; -webkit-user-drag:none;}
  .note-photo-nav{
    position:absolute; top:50%; transform:translateY(-50%); z-index:2;
    width:30px; height:30px; border-radius:50%; border:none; padding:0;
    background:rgba(45,50,60,0.35); color:#fff; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:background .15s ease;
  }
  .note-photo-nav:hover{background:rgba(45,50,60,0.55);}
  .note-photo-nav svg{width:18px; height:18px; display:block;}
  .note-photo-nav.prev{left:8px;}
  .note-photo-nav.next{right:8px;}
  .note-photo-nav[hidden]{display:none;}
  .note-photo-dots{display:flex; justify-content:center; gap:4px; margin-top:6px;}
  .note-photo-dots span{width:6px; height:6px; border-radius:2px; box-sizing:border-box; border:1.5px solid var(--ink-2); background:transparent;}
  .note-photo-dots span.active{background:var(--ink-2);}
  .note-link-card{
    display:flex; margin-top:8px; border:1px solid var(--card-edge); border-radius:8px; overflow:hidden; text-decoration:none;
  }
  .note-link-thumb{width:64px; height:64px; flex-shrink:0; background:#eee; object-fit:cover;}
  .note-link-body{padding:8px 10px; min-width:0; display:flex; flex-direction:column; justify-content:center;}
  .note-link-title{font-size:12.5px; font-weight:700; color:var(--text); overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;}
  .note-link-url{font-size:11px; color:var(--muted); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .form-row{display:flex; gap:8px;}
  .form-row .field{flex:1;}
  .btn{
    font-size:14.5px; line-height:1.4; padding:9px 16px; border-radius:20px; border:1px solid var(--card-edge);
    background:var(--ink-2); color:#E6F1FF; cursor:pointer; font-weight:600; font-family:'NanumSquare',sans-serif;
  }
  .btn.ghost{background:#fff; color:var(--text);}
  .form-actions{display:flex; gap:8px; justify-content:flex-end; margin-top:4px;}

  .day-card{background:#fff;border-radius:16px;margin-bottom:16px;box-shadow:0 3px 8px rgba(20,30,50,0.10);overflow:hidden;}
  .day-head{display:flex;width:100%;border:none;background:none;padding:0;cursor:pointer;text-align:left;font:inherit;color:inherit;position:relative;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
  .day-stub{flex:0 0 78px;background:var(--gold);color:var(--ink);padding:14px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;}
  .day-stub .d-date{font-family:'Fraunces',serif;font-weight:600;font-size:20px;}
  .day-stub .d-dow{font-size:11.5px;color:rgba(19,27,50,0.65);margin-top:2px;}
  .day-stub::after{content:"";position:absolute;left:100%;top:50%;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background:#fff;}
  .day-main{flex:1;padding:14px 14px 14px 20px;display:flex;flex-direction:column;justify-content:center;gap:3px;border-left:1.5px dashed var(--card-edge);}
  .day-route{font-size:16px;font-weight:600;}
  .day-summary{font-size:13px;color:var(--muted);}
  .day-controls{display:flex; align-items:center; gap:8px; flex-shrink:0; padding:0 14px;}
  .day-controls-divider{width:1px; height:16px; background:var(--card-edge); flex-shrink:0;}
  .day-edit-btn{
    border:none; background:none; cursor:pointer; padding:5px; border-radius:6px; flex-shrink:0;
  }
  .day-edit-btn svg{width:13px; height:13px; display:block; opacity:0.75;}
  .day-edit-btn:hover{background:var(--card);}
  .day-edit-btn:hover svg{opacity:1;}
  .day-toggle{display:flex; align-items:center; flex-shrink:0;}
  .day-toggle svg{width:14px; height:14px; transition:transform .25s ease;}
  .day-card.open .day-toggle svg{transform:rotate(180deg);}
  .events{max-height:0;overflow:hidden;transition:max-height .35s ease;}
  .event{padding:16px 16px 17px 16px;border-top:1px solid var(--card-edge);display:flex;gap:10px;align-items:flex-start;}
  .event-time{
    flex:0 0 36px; text-align:center; padding-top:2px;
    font-family:'NanumSquare','IBM Plex Mono',monospace; font-size:12px; color:var(--text); font-weight:600; line-height:1.5;
  }
  .event-time .et-sep{color:var(--muted); font-size:10px;}
  .event .icon{
    flex:0 0 32px; width:32px; height:32px; border-radius:50%; background:#E6F1FF;
    font-size:15px; display:flex; align-items:center; justify-content:center;
  }
  .event .body{flex:1;min-width:0;}
  .event-memo-card{
    margin:6px 16px 6px 64px; padding:13px 14px; border:1px solid var(--memo-edge);
    border-left-width:4px; border-left-color:var(--gold); border-radius:5px 12px 12px 5px; background:var(--memo-bg);
    box-shadow:0 2px 6px rgba(20,30,50,0.07); cursor:pointer; position:relative;
  }
  .event-memo-card.memo-readonly{cursor:default;}
  .event-memo-text{
    margin:0; color:var(--ink); font-size:14px; line-height:1.55; white-space:pre-wrap;
    overflow-wrap:anywhere; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:5; overflow:hidden;
  }
  .event-memo-card.expanded .event-memo-text{display:block; overflow:visible;}
  .memo-more-btn{
    display:block; margin:7px 0 0 auto; padding:3px 2px; border:0; background:none;
    color:var(--ink-2); font-size:12px; font-weight:800; cursor:pointer;
  }
  .event-memo-author{margin-top:5px; text-align:right; font-size:11px; color:var(--ink-2); opacity:.62;}
  .body-row{display:flex; align-items:flex-start; gap:10px;}
  .body-left{flex:1; min-width:0;}
  .event .title{font-weight:600;font-size:15.5px;}
  .ev-price-inline{font-size:13px; font-weight:400; color:var(--muted); margin-left:5px;}
  .body-right{flex-shrink:0; display:flex; flex-direction:column; align-items:flex-end; gap:6px;}
  .quick-actions{display:flex; flex-direction:column; align-items:flex-end; gap:8px; margin-bottom:4px;}
  .qa-row{display:flex; align-items:center; gap:6px;}
  .qa-btn{
    width:28px; height:28px; border-radius:50%; background:#fff; border:1px solid var(--card-edge);
    display:flex; align-items:center; justify-content:center; cursor:pointer; padding:5px; flex-shrink:0;
    position:relative; color:var(--ink-2);
  }
  .qa-btn svg{width:16px; height:16px;}
  .qa-btn.is-empty{color:#C3C9D4;}
  .qa-btn .icon-sticky{transform:translate(1px,1px);}
  .event .place{font-size:13px;color:#565b68;margin-top:2px;}
  .event .meta{display:flex;align-items:center;gap:7px;margin-top:7px;flex-wrap:wrap;}
  .tag{font-size:11.5px;line-height:1.4;font-family:'NanumSquare','IBM Plex Mono',monospace;background:rgba(47,127,196,0.10);color:#2f7fc4;border:1px solid rgba(47,127,196,0.28);padding:2px 7px;border-radius:20px;}
  .tag.move{background:rgba(166,75,58,0.12);color:var(--rust);border-color:rgba(166,75,58,0.32);}
  .price{font-family:'NanumSquare','IBM Plex Mono',monospace;font-size:12px;font-weight:600; flex-shrink:0; white-space:nowrap;}
  .actions{display:flex;gap:6px;margin-top:9px;flex-wrap:wrap;}
  .act-btn{display:flex;align-items:center;gap:4px;font-size:12px;line-height:1.3;background:#fff;border:1px solid var(--card-edge);padding:5px 9px;border-radius:20px;cursor:pointer;color:var(--text);}
  .act-btn.has-item{border-color:var(--gold);color:#8a6d10;background:#FFF8E5;}
  .act-btn.danger{color:var(--rust);}
  .act-btn svg{width:14px;height:14px;}

  .att-panel{margin-top:9px;border:1px dashed var(--card-edge);border-radius:10px;padding:10px;display:none;}
  .att-panel.show{display:block;}
  .voucher-section-title{display:flex;align-items:center;gap:6px;}
  .voucher-title-icon{display:inline-block;width:18px;line-height:1;text-align:center;flex-shrink:0;}
  .voucher-section{margin-bottom:20px;}
  .voucher-section:last-child{margin-bottom:0;}
  .voucher-section-title{font-size:13px; font-weight:800; color:var(--ink-2); margin-bottom:10px;}
  .voucher-section-card{background:#fff; border:1px solid #D7E0EA; border-radius:12px; padding:14px 16px;}
  .voucher-section-card .voucher-note{color:#5A6172;}
  .voucher-count{font-weight:400; color:var(--muted); font-size:12px;}
  .voucher-empty{text-align:center; color:var(--muted); font-size:12px; line-height:1.5; padding:18px 12px; border:1px dashed #C8D3DF; border-radius:10px; background:rgba(255,255,255,.55);}
  #evTabContentVoucher .att-row{display:flex;align-items:stretch;gap:8px;margin-bottom:8px;}
  #modalVoucherLinkInput{flex:1;min-width:0;min-height:44px;box-sizing:border-box;font-size:14px;line-height:1.4;padding:7px 9px;border-radius:8px;border:1px solid #B8C5D2;font-family:'NanumSquare',sans-serif;}
  .att-row button{flex-shrink:0;}
  .att-row button, .file-btn{font-size:13px;line-height:1.4;padding:7px 10px;border-radius:8px;border:1px solid var(--card-edge);background:#F2F4F7;cursor:pointer;white-space:nowrap;}
  #modalSaveLinkBtn{min-height:44px;box-sizing:border-box;font-size:14px;line-height:1.4;background:#fff;border-color:#B8C5D2;color:var(--text);}
  .te-members-head{margin-bottom:10px;}
  .te-members-title{font-size:14px;font-weight:800;color:var(--ink-2);margin-bottom:4px;}
  .te-members-desc{margin:0;font-size:12px;line-height:1.5;color:var(--muted);}
  #teInviteRow{display:flex;align-items:stretch;gap:8px;margin-bottom:8px;}
  #teInviteEmail{flex:1;min-width:0;min-height:44px;box-sizing:border-box;font-size:14px;line-height:1.4;padding:7px 9px;border:1px solid var(--card-edge);border-radius:8px;font-family:'NanumSquare',sans-serif;}
  #teInviteBtn{flex-shrink:0;min-height:44px;box-sizing:border-box;padding:7px 14px;font-size:14px;line-height:1.4;white-space:nowrap;cursor:pointer;border:1px solid var(--ink-2);border-radius:8px;background:var(--ink-2);color:#fff;font-weight:800;font-family:'NanumSquare',sans-serif;}
  #teInviteBtn:active{filter:brightness(.85);transform:translateY(1px);}
  #teInviteBtn:disabled{opacity:.48;cursor:wait;}
  .voucher-upload-btn{width:100%;min-height:46px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:9px;border:1px solid var(--ink-2);background:var(--ink-2);color:#fff;font-family:'NanumSquare',sans-serif;font-size:14px;font-weight:800;line-height:1.4;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:filter .12s ease,transform .12s ease,opacity .12s ease;}
  .voucher-upload-btn:active:not(:disabled){filter:brightness(.82);transform:translateY(1px);}
  .voucher-upload-btn:disabled{opacity:.48;cursor:wait;}
  .voucher-native-notice{display:none;padding:12px;border:1px solid #D7E0EA;border-radius:9px;background:#F2F4F7;color:#5A6172;font-size:13px;line-height:1.5;text-align:center;}
  .offline-voucher-notice{display:none;margin-top:10px;padding:10px;border:1px solid rgba(122,59,29,.25);border-radius:9px;background:rgba(122,59,29,.08);color:#7a3b1d;font-size:12.5px;font-weight:700;line-height:1.5;text-align:center;}
  body.is-offline .voucher-link-entry .att-row,
  body.is-offline .voucher-link-entry .voucher-note{opacity:.4;pointer-events:none;}
  body.is-offline .offline-voucher-notice{display:block;}
  .voucher-upload-icon{display:block;width:19px;height:19px;flex-shrink:0;}
  #aiFillLabel{
    background:var(--gold); border-color:var(--gold); color:var(--ink); font-weight:800;
    display:inline-flex; align-items:center; justify-content:center; gap:5px; line-height:1;
  }
  .ai-fill-icon{width:18px; height:18px; display:block; flex-shrink:0;}
  #aiFillLabelText{display:block; line-height:1; margin-top:2px;}
  .att-list{display:flex;flex-direction:column;gap:8px;}
  .att-chip{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;font-size:14px;background:#fff;border:1px solid var(--card-edge);border-radius:8px;padding:8px 9px;}
  .att-chip a{color:var(--teal);text-decoration:none;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .att-chip .del{cursor:pointer;color:var(--rust);font-weight:600;padding:0 3px;line-height:1;flex-shrink:0;}
  .att-chip .tr-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .voucher-chip-icon{flex:0 0 auto;font-size:18px;}
  .voucher-chip-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;}
  .voucher-chip-copy .voucher-chip-label{display:block;flex:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .voucher-chip-status{display:block;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .voucher-chip-action{flex:0 0 30px;width:30px;height:30px;border:1px solid var(--card-edge);border-radius:50%;background:#fff;color:var(--ink-2);font-weight:800;cursor:pointer;}
  .voucher-chip-action.del{color:var(--rust);padding:0;}
  .att-chip.is-renaming .voucher-chip-action{display:none;}
  .att-chip.is-renaming .voucher-chip-copy{flex-direction:row;align-items:center;}
  .att-chip.is-renaming .voucher-inline-rename .act-btn{min-height:30px;padding:5px 8px;white-space:nowrap;}

  .qa-btn{position:relative;}
  .qa-badge{position:absolute;top:-7px;right:-7px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--ink-2);color:#fff;font-size:11px;font-weight:700;line-height:20px;text-align:center;box-sizing:border-box;}

  .voucher-sheet-overlay{align-items:flex-end!important;}
  .voucher-sheet{width:100%;max-width:560px;margin:0 auto!important;border-radius:20px 20px 0 0!important;max-height:75vh;overflow:auto;overscroll-behavior:contain;}
  .voucher-sheet-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--card);z-index:4;padding-bottom:8px;}
  .voucher-sheet-head h3{margin:0;}
  .voucher-sheet-head .voucher-sheet-close{position:static;flex:0 0 30px;}
  .voucher-storage-sheet-summary{font-size:15px;font-weight:800;color:var(--text);padding:6px 4px 0;}
  .voucher-storage-sheet-note{font-size:12.5px;color:var(--muted);line-height:1.55;padding:6px 4px 14px;}
  .voucher-sheet-row{display:flex;gap:12px;align-items:center;min-height:56px;padding:13px 4px;border-top:1px solid var(--card-edge);cursor:pointer;}
  .voucher-sheet-row:first-child{border-top:0;}
  /* 이름 수정 중에는 입력칸이 행 전체를 쓴다 (.att-chip.is-renaming과 같은 방식) */
  .voucher-sheet-row.is-renaming .voucher-sheet-icon,
  .voucher-sheet-row.is-renaming .voucher-offline-save-btn,
  .voucher-sheet-row.is-renaming .voucher-row-actions{display:none;}
  .voucher-sheet-row.is-renaming .voucher-sheet-main{flex:1 1 100%;min-width:0;}
  .voucher-sheet-icon{flex:0 0 auto;font-size:24px;}
  .voucher-sheet-main{flex:1;min-width:0;}
  .voucher-sheet-label{display:block;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .voucher-sheet-sub{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.35;}
  .voucher-row-actions{position:relative;flex:0 0 auto;}
  .voucher-more-btn{width:38px;height:38px;border:1px solid var(--card-edge);border-radius:50%;background:#fff;color:var(--ink-2);font-size:22px;font-weight:800;line-height:1;cursor:pointer;}
  .voucher-row-menu{display:none;position:absolute;right:0;top:42px;z-index:6;min-width:130px;padding:7px;background:#fff;border:1px solid var(--card-edge);border-radius:12px;box-shadow:0 8px 24px rgba(8,27,58,.16);}
  .voucher-row-menu.show{display:flex;flex-direction:column;gap:6px;}
  .voucher-row-menu .act-btn{justify-content:center;width:100%;min-height:36px;}
  .voucher-offline-save-btn[hidden],.voucher-file-delete-item[hidden]{display:none;}
  .voucher-inline-rename{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center;width:100%;}
  .voucher-inline-rename input{min-width:0;width:100%;height:36px;padding:7px 9px;border:1px solid var(--card-edge);border-radius:9px;}

  .modal-overlay.voucher-preview-overlay{display:none;position:fixed;inset:0;background:var(--card);z-index:80;flex-direction:column;align-items:stretch;justify-content:stretch;pointer-events:none;}
  .modal-overlay.voucher-preview-overlay.show{display:flex;pointer-events:auto;background:var(--card);}
  .voucher-preview-bar{display:flex;align-items:center;gap:8px;min-height:58px;padding:calc(8px + env(safe-area-inset-top)) 10px 8px;border-bottom:1px solid rgba(255,255,255,.12);background:var(--ink);color:#E6F1FF;}
  .voucher-preview-bar .voucher-preview-close{position:static;flex:0 0 34px;width:34px;height:34px;background:rgba(255,255,255,.12);color:#E6F1FF;}
  .voucher-preview-bar strong{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .voucher-preview-actions{display:flex;gap:5px;align-items:center;}
  .voucher-preview-actions .act-btn{white-space:nowrap;font-size:11px;padding:6px 8px;background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22);color:#E6F1FF;}
  .voucher-preview-actions .act-btn svg{color:#E6F1FF;}
  .modal-overlay.voucher-rename-overlay{z-index:90;}
  .voucher-preview-body{position:relative;flex:1;display:flex;flex-direction:column;background:var(--card);min-height:0;}
  .voucher-preview-content{position:relative;flex:1;display:flex;min-height:0;}
  .voucher-preview-content iframe,.voucher-preview-content img{position:relative;z-index:2;width:100%;height:100%;border:0;background:#fff;object-fit:contain;}
  .voucher-open-native{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:100%;min-height:220px;padding:24px;background:var(--card);border:1.5px dashed var(--card-edge);border-radius:14px;color:var(--ink-2);font-size:14px;font-weight:700;line-height:1.6;white-space:pre-line;text-align:center;cursor:pointer;}
  .voucher-open-native .von-icon svg{width:34px;height:34px;opacity:.7;}
  .voucher-open-native:active{background:var(--card-edge);}
  .voucher-preview-loading{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;background:var(--card);color:var(--muted);font-size:14px;pointer-events:none;}
  .voucher-preview-helper{flex:0 0 auto;padding:10px 14px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--card-edge);background:var(--card);color:var(--muted);font-size:12.5px;text-align:center;}
  .voucher-preview-helper button{border:0;background:none;color:var(--ink-2);font:inherit;font-weight:800;text-decoration:underline;cursor:pointer;padding:0;}
  .voucher-preview-warning{flex:0 0 auto;padding:10px 14px;background:rgba(166,75,58,.1);border-bottom:1px solid rgba(166,75,58,.22);color:var(--rust);font-size:13px;font-weight:800;text-align:center;}
  .voucher-preview-fallback{margin:auto;text-align:center;padding:24px;color:var(--text);}
  .voucher-preview-fallback button{display:block;margin:14px auto;padding:12px 18px;}
  .modal-scroll-lock{position:fixed;width:100%;overflow:hidden;}
  /* 링크로 추가 / 파일 업로드 섹션의 안내 문구는 전부 이 한 가지 양식으로 통일 */
  .voucher-note{display:flex;align-items:flex-start;gap:6px;margin-top:7px;color:var(--muted);font-size:12.5px;line-height:1.45;}
  .voucher-note-icon{flex:0 0 auto;line-height:1.45;}
  @media (max-width:480px){
    .day-main{padding-left:13px;}
    .voucher-preview-bar{align-items:center;flex-wrap:nowrap;}
    .voucher-preview-actions{flex-shrink:0;}
    .voucher-preview-actions .act-btn{font-size:10px;padding:5px 6px;}
  }
  .file-label{font-size:12px;color:var(--muted);line-height:1.5;margin-top:8px;}
  .uploading{font-size:12px;color:var(--teal);line-height:1.5;margin-top:8px;}
  .ai-help-btn{
    display:inline-flex; align-items:center; justify-content:center;
    width:20px; height:20px; margin-left:6px; vertical-align:middle;
    border-radius:50%; border:1.5px solid var(--muted); background:none;
    color:var(--muted); font-size:12px; font-weight:700; cursor:pointer; padding:0;
  }
  .ai-help-btn.active{border-color:var(--teal); color:var(--teal);}
  .ai-help-box{
    margin-top:10px; padding:10px 12px; border-radius:10px;
    background:rgba(46,125,107,0.08); border:1px solid rgba(46,125,107,0.25);
    font-size:12.5px; line-height:1.6; color:var(--text);
  }

  .section-title{font-family:'NanumSquare',sans-serif;font-weight:800;color:#E6F1FF;font-size:20px;margin:24px 0 12px;padding-left:2px;}
  .tl-dropdown .section-title{color:var(--ink); font-size:15px; margin:6px 10px;}

  .fab{
    position:fixed; right:20px; bottom:calc(24px + var(--safe-bottom)); width:56px;height:56px;border-radius:50%;
    background:var(--gold); color:var(--ink); border:none; font-size:28.5px; box-shadow:0 8px 20px rgba(0,0,0,0.4);
    cursor:pointer; z-index:30; display:flex;align-items:center;justify-content:center;padding:0;
  }
  .event-memo-card.collapsed{display:none;}
  .fab-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;transition:transform .16s ease;}
  .fab.active .fab-icon{transform:rotate(45deg);}
  .fab-menu{
    position:fixed; right:20px; bottom:calc(90px + var(--safe-bottom)); z-index:31; display:flex; flex-direction:column; gap:8px;
    opacity:0; visibility:hidden; pointer-events:none; transform:translateY(8px);
    transition:opacity .16s ease, transform .16s ease, visibility .16s;
  }
  .fab-menu.show{opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0);}
  .fab-menu button{
    min-width:136px; min-height:44px; display:flex; align-items:center; gap:9px; padding:9px 14px;
    border:1px solid var(--card-edge); border-radius:22px; background:#fff; color:var(--ink);
    box-shadow:0 5px 16px rgba(0,0,0,0.20); font-size:14px; font-weight:800; cursor:pointer;
  }
  .fab-menu button.disabled{opacity:.48;}
  .fab-menu-icon{width:22px; height:22px; display:flex; align-items:center; justify-content:center; color:var(--ink-2); font-size:18px;}

  .modal-overlay{
    position:fixed;inset:0;background:rgba(10,14,26,0);display:none;align-items:flex-end;justify-content:center;z-index:60;
    transition:background .3s ease; pointer-events:none;
  }
  .modal-overlay.show{background:rgba(10,14,26,0.6); pointer-events:auto;}
  .modal{
    background:var(--card); width:100%; max-width:560px; border-radius:20px 20px 0 0;
    padding:20px 20px calc(26px + var(--safe-bottom)); max-height:88vh; overflow-y:auto; overscroll-behavior:contain; position:relative;
    transform:translateY(100%); transition:transform .32s cubic-bezier(0.16, 1, 0.3, 1);
  }
  .modal-overlay.show .modal{transform:translateY(0);}
  .modal h3{font-family:'NanumSquare',sans-serif;font-weight:800;margin:0 0 14px;font-size:22px;padding-right:36px;}
  .modal-close-btn{
    position:absolute; top:14px; right:14px; width:30px; height:30px;
    border-radius:50%; border:none; background:rgba(0,0,0,0.06);
    color:var(--muted); font-size:15px; font-weight:700; cursor:pointer;
    display:flex; align-items:center; justify-content:center; line-height:1;
  }
  .memo-modal textarea{min-height:104px; max-height:240px; resize:none; overflow-y:auto; line-height:1.55;}
  .memo-char-count{text-align:right; margin-top:4px; color:var(--muted); font-size:11px;}
  /* 오류 문구 자리(.auth-msg)는 비어 있어도 min-height로 공간을 잡고 있어
     버튼 위쪽만 유독 넓어 보인다. 메시지가 실제로 있을 때만 자리를 내준다. */
  .memo-modal .auth-msg:empty{min-height:0; margin-top:0;}
  .memo-form-actions{justify-content:space-between; align-items:center; margin-top:16px;}
  .memo-form-actions-main{display:flex; gap:8px; margin-left:auto;}
  .memo-delete-btn{color:var(--rust) !important; border-color:var(--rust) !important;}
  .ev-form-actions{justify-content:space-between;align-items:center;margin-top:12px;}
  .ev-form-actions-main{display:flex;gap:8px;margin-left:auto;}
  .ev-delete-btn{color:var(--rust) !important;border-color:var(--rust) !important;}

  /* !important로 배경을 고정하면 .show를 떼도 색이 그대로라 페이드아웃이 사라지고,
     320ms 뒤 display:none만 걸려 "한 박자 늦게 툭 꺼지는" 느낌이 된다.
     상태별 규칙으로 나눠 열 때·닫을 때 모두 부드럽게 사라지게 한다. */
  .modal-overlay.note-photo-viewer-overlay{align-items:center; justify-content:center; z-index:70;}
  .modal-overlay.note-photo-viewer-overlay.show{background:rgba(10,14,26,0.92);}
  .note-photo-viewer-close{position:fixed; top:18px; right:16px; z-index:2; background:rgba(255,255,255,0.12); color:#fff;}
  .note-photo-viewer-track{display:flex; width:100%; height:100%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none;}
  .note-photo-viewer-track,
  .note-photo-viewer-close{opacity:0; transition:opacity .22s ease;}
  .modal-overlay.note-photo-viewer-overlay.show .note-photo-viewer-track,
  .modal-overlay.note-photo-viewer-overlay.show .note-photo-viewer-close{opacity:1;}
  .note-photo-viewer-track::-webkit-scrollbar{display:none;}
  .note-photo-viewer-slide{flex:0 0 100%; scroll-snap-align:center; display:flex; align-items:center; justify-content:center; padding:20px; box-sizing:border-box;}
  .note-photo-viewer-slide img{max-width:100%; max-height:100%; object-fit:contain; display:block;}

  /* 점선 테두리는 이 앱에서 "여기에 추가하세요"를 뜻한다 (.add-event-hint, .att-panel과 같은 언어) */
  #notePhotoAddBtn{
    display:flex; align-items:center; justify-content:center; gap:7px;
    width:100%; min-height:46px; box-sizing:border-box; padding:11px 14px;
    border:1.5px dashed #B8C5D2; border-radius:11px; background:#fff; color:var(--ink-2);
    font-family:'NanumSquare',sans-serif; font-size:13.5px; font-weight:700; line-height:1;
    cursor:pointer; transition:border-color .15s ease, background .15s ease;
  }
  #notePhotoAddBtn:hover{border-color:var(--ink-2); background:var(--card);}
  #notePhotoAddBtn:active{transform:translateY(1px);}
  .note-photo-add-icon{width:18px; height:18px; display:block; flex-shrink:0;}
  .note-photo-strip{display:flex; gap:8px; overflow-x:auto; margin-top:10px; padding-bottom:2px;}
  .note-photo-strip:empty{display:none;}
  .note-photo-thumb{
    position:relative; flex:0 0 auto; width:76px; height:76px; border-radius:10px;
    overflow:hidden; background:var(--card); border:1px solid var(--card-edge);
  }
  .note-photo-thumb img{width:100%; height:100%; object-fit:cover; display:block;}
  .note-photo-thumb .del{
    position:absolute; top:4px; right:4px; width:20px; height:20px; border-radius:50%;
    background:rgba(8,27,58,0.72); color:#fff; display:flex; align-items:center; justify-content:center;
    font-size:11px; line-height:1; cursor:pointer;
  }
  .note-photo-progress{font-size:12px; color:var(--muted); margin-top:8px;}

  footer{text-align:center;color:var(--muted-2);font-size:12px;line-height:1.6;margin-top:26px;padding:0 24px;}
  .empty{color:var(--ink-2);font-weight:600;white-space:pre-line;text-align:center;font-size:14.5px;line-height:1.55;padding:30px 0;}
  .add-event-hint{
    display:flex; align-items:center; gap:14px; cursor:pointer;
    border:1.5px dashed var(--card-edge); border-radius:16px; background:#fff;
    padding:16px 18px; margin-top:8px; margin-bottom:20px;
  }
  .add-event-hint .aeh-icon{
    flex-shrink:0; width:34px; height:34px; border-radius:10px;
    border:1.5px dashed var(--muted); color:var(--muted);
    display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:700;
  }
  .add-event-hint .aeh-title{color:var(--text); font-weight:800; font-size:15px;}
  .add-event-hint .aeh-sub{color:var(--muted); font-size:12.5px; margin-top:2px;}

  .voucher-offline-status{margin-top:6px;color:var(--muted);font-size:12px;font-weight:700;}
  .voucher-offline-status.err{color:var(--danger,#c94b4b);}
  .voucher-fail-item{padding:14px 4px;border-top:1px solid var(--card-edge);}
  .voucher-fail-item:first-child{border-top:0;}
  .voucher-fail-event{font-size:12px;color:var(--muted);font-weight:700;margin-bottom:4px;}
  .voucher-fail-label{font-size:14px;color:var(--text);font-weight:800;overflow-wrap:anywhere;}
  .voucher-fail-reason{font-size:12px;color:var(--danger,#c94b4b);line-height:1.45;margin-top:5px;}
  .voucher-fail-actions{display:flex;justify-content:flex-end;margin-top:9px;}
  .voucher-fail-retry[disabled]{opacity:.55;cursor:wait;}
  .voucher-offline-save-btn{flex:0 0 auto;white-space:nowrap;font-size:11px;padding:7px 9px;}
  .voucher-offline-save-btn:disabled{opacity:.55;cursor:wait;}
  .native-voucher-storage{display:none;}
  body.is-native .native-voucher-storage{display:block;}
  .voucher-storage-row{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--ink-2);font-size:13px;}
  .voucher-storage-row button{border:1px solid var(--card-edge);border-radius:9px;background:#fff;color:var(--ink-2);padding:8px 11px;font:700 12px 'NanumSquare',sans-serif;}
