
  :root{ --ink:#4a3a30; --paper:#fbf6ee; --grid:#ece1d0; --c-card:#f8d6e6; --t-card:#efb6d2; --accent:#ff8fb0; --accent-deep:#e36f95; }
  *{box-sizing:border-box;margin:0;padding:0;}
  html{scroll-behavior:smooth;}
  body{font-family:'Gaegu',system-ui,sans-serif;color:var(--ink);background-color:var(--paper);
    background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
    background-size:28px 28px;-webkit-font-smoothing:antialiased;padding:0 22px 36px;line-height:1.45;min-height:100vh;}
  .diary{max-width:940px;margin:0 auto;}

  /* 인트로 로딩 오버레이 + 콘텐츠 등장 */
  html:not(.embed){scrollbar-gutter:stable;}
  html.embed #page-loader{display:none!important;}
  html.embed .diary{opacity:1!important;animation:none!important;}
  #page-loader{position:fixed;inset:0;z-index:9999;background-color:var(--paper);
    background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:28px 28px;
    display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:400px;gap:18px;transition:opacity .5s ease;}
  #page-loader.hide{opacity:0;pointer-events:none;}
  .pl-img{height:210px;width:auto;animation:plPop 1s ease-in-out infinite;filter:drop-shadow(0 5px 7px rgba(74,58,48,.16));}
  .pl-dots{display:flex;gap:9px;}
  .pl-dots span{width:11px;height:11px;border-radius:50%;background:var(--accent);display:block;animation:plDot .85s ease-in-out infinite;}
  .pl-dots span:nth-child(2){animation-delay:.14s;} .pl-dots span:nth-child(3){animation-delay:.28s;}
  @keyframes plPop{0%,100%{transform:translateY(0) scale(1);}50%{transform:translateY(-13px) scale(1.08);}}
  @keyframes plDot{0%,100%{opacity:.35;transform:translateY(0);}50%{opacity:1;transform:translateY(-7px);}}
  .diary{opacity:0;}
  body.ready .diary{opacity:1;animation:pageReveal .72s cubic-bezier(.18,.72,.28,1);}
  @keyframes pageReveal{from{opacity:0;transform:translateY(30px) scale(.978);}to{opacity:1;transform:translateY(0) scale(1);}}

  nav.tabs{display:flex;justify-content:center;gap:8px;padding:20px 0 8px;position:sticky;top:0;z-index:30;background:transparent;}
  nav.tabs a{font-weight:700;font-size:1.68rem;text-decoration:none;color:var(--ink);padding:6px 26px 8px;border:2.4px solid var(--ink);border-radius:16px;background:#fff;box-shadow:3px 3px 0 rgba(74,58,48,.16);transform:rotate(-1.5deg);transition:transform .15s;}
  nav.tabs a:nth-child(2){transform:rotate(1deg);} nav.tabs a:nth-child(3){transform:rotate(-.5deg);} nav.tabs a:nth-child(4){transform:rotate(.7deg);}
  nav.tabs a:hover{transform:translateY(-2px) rotate(0);}
  nav.tabs a.active{background:var(--t-card);}
  body.embed nav.tabs{display:none;}

  header.hero{margin:8px 4px 13px;}
  .hero .title{font-weight:700;font-size:3rem;line-height:1;margin:0;}
  .hero .sub{font-size:1.3rem;opacity:.6;margin-top:4px;}

  /* 달력 */
  .cal-wrap{background:#fff;border:2.6px solid var(--ink);border-radius:22px;box-shadow:6px 7px 0 rgba(74,58,48,.13);padding:14px 16px 16px;margin-bottom:22px;}
  .cal-head{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:12px;}
  .cal-nav{font-family:inherit;font-weight:700;font-size:1.5rem;cursor:pointer;color:var(--ink);background:#fff;border:2.4px solid var(--ink);border-radius:12px;width:42px;height:42px;box-shadow:2px 2px 0 rgba(74,58,48,.15);transition:transform .12s;line-height:1;}
  .cal-nav:hover{transform:translateY(-2px);}
  .cal-label{font-size:1.9rem;font-weight:700;min-width:175px;text-align:center;}
  .cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;}
  .cal-wd{text-align:center;font-size:1.15rem;font-weight:700;color:#4a3a3088;padding:3px 0;}
  .cal-wd.sun{color:var(--accent-deep);} .cal-wd.sat{color:#5f8fd6;}
  .cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
  .cal-cell{min-height:98px;border:2px solid #ece1d0;border-radius:13px;padding:6px;background:#fdfaf5;display:flex;flex-direction:column;gap:3px;overflow:hidden;transition:transform .12s,border-color .12s;}
  .cal-cell.empty{border:none;background:transparent;}
  .cal-cell.has-ev{cursor:pointer;border-color:var(--t-card);background:#fff;}
  .cal-cell.has-ev:hover{border-color:var(--accent);transform:translateY(-2px);}
  .cal-cell.today{background:#ffe9f1;border-color:var(--accent);}
  .cal-daynum{font-size:1.18rem;font-weight:700;line-height:1;}
  .cal-daynum.sun{color:var(--accent-deep);} .cal-daynum.sat{color:#5f8fd6;}
  .cal-cell.today .cal-daynum{color:var(--accent-deep);}
  .cal-ev{font-size:0.92rem;background:var(--c-card);border-radius:7px;padding:2px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;color:var(--ink);line-height:1.25;}
  .cal-ev.special{background:#efdcff;color:#8a5fb0;}
  @keyframes anniv-glow{0%,100%{box-shadow:0 0 0 0 rgba(var(--glow-rgb,255,143,176),0);transform:scale(1);}50%{box-shadow:0 0 11px 4px rgba(var(--glow-rgb,255,143,176),.85);transform:scale(1.05);}}
  .cal-cell.anniv{overflow:visible;z-index:2;}
  .cal-ev.anniv{animation:anniv-glow 1.6s ease-in-out infinite;position:relative;}
  @keyframes anniv-glow-card{0%,100%{box-shadow:4px 5px 0 rgba(74,58,48,.12),0 0 0 0 rgba(var(--glow-rgb,255,143,176),0);}50%{box-shadow:4px 5px 0 rgba(74,58,48,.12),0 0 18px 5px rgba(var(--glow-rgb,255,143,176),.65);}}
  .event-card.anniv{animation:anniv-glow-card 1.6s ease-in-out infinite;border-color:rgba(var(--glow-rgb,255,143,176),.9)!important;}
  .cal-more{font-size:0.82rem;color:#4a3a3099;padding-left:5px;font-weight:700;}
  .cal-legend{display:flex;gap:13px;flex-wrap:wrap;justify-content:center;margin-top:11px;font-size:1.02rem;color:#4a3a3099;}
  .cal-legend span{display:flex;align-items:center;gap:5px;}
  .cal-legend i{width:13px;height:13px;border-radius:4px;display:inline-block;border:1.5px solid #4a3a3022;}

  /* 다가오는 일정 */
  .sch-section{margin-bottom:30px;}
  .sch-section-title{font-size:1.7rem;font-weight:700;margin:0 4px 14px;display:flex;align-items:center;gap:8px;}
  .sch-section-title .cnt{font-size:1.1rem;color:var(--accent-deep);background:#fff;border:2.2px solid var(--accent);border-radius:13px;padding:1px 12px;font-weight:700;}
  .event-card{display:flex;background:#fff;border:2.6px solid var(--ink);border-radius:15px;box-shadow:4px 5px 0 rgba(74,58,48,.12);margin-bottom:11px;overflow:hidden;}
  .event-card.is-today{border-color:var(--accent);box-shadow:4px 5px 0 rgba(227,111,149,.2);}
  .event-date-block{flex-shrink:0;width:92px;background:var(--c-card);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 6px;border-right:2.4px dashed var(--ink);line-height:1.05;}
  .event-card.is-today .event-date-block{background:#ffd9e6;}
  .ev-day-num{font-size:2.5rem;font-weight:700;line-height:1;color:var(--ink);}
  .ev-weekday{font-size:1rem;color:#4a3a3099;font-weight:700;margin-top:4px;letter-spacing:.5px;}
  .ev-weekday.wd-today{color:var(--accent-deep);}
  .event-info{flex:1;min-width:0;display:grid;grid-template-columns:minmax(100px,0.7fr) minmax(0,2fr) minmax(0,1.5fr) minmax(82px,0.75fr);align-items:stretch;}
  .ev-cell{display:flex;align-items:center;justify-content:center;gap:5px;padding:13px 11px;min-width:0;overflow:hidden;}
  .ev-cell + .ev-cell{border-left:2px dotted #4a3a3033;}
  .ev-time{font-size:1.45rem;color:var(--accent-deep);font-weight:700;white-space:nowrap;}
  .ev-title{font-size:1.8rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
  .ev-desc{font-size:1.45rem;color:#4a3a3099;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
  .ev-tag{font-size:1.2rem;background:#fff;border:2px solid var(--ink);border-radius:12px;padding:2px 12px;font-weight:700;flex-shrink:0;white-space:nowrap;}
  .ev-badge-today{font-size:1rem;background:var(--accent);color:#fff;border:2px solid var(--ink);border-radius:12px;padding:1px 10px;font-weight:700;flex-shrink:0;}

  .empty-state{text-align:center;padding:30px;color:#4a3a3077;font-size:1.25rem;}
  .empty-state .emoji{font-size:2.2rem;margin-bottom:6px;}

  /* 날짜 모달 */
  .day-modal-bg{position:fixed;inset:0;background:rgba(74,58,48,.32);z-index:50;display:none;align-items:center;justify-content:center;padding:20px;}
  .day-modal-bg.show{display:flex;}
  .day-modal{background:#fff;border:2.6px solid var(--ink);border-radius:22px;box-shadow:7px 8px 0 rgba(74,58,48,.18);width:100%;max-width:430px;max-height:80vh;overflow:auto;padding:22px;}
  .day-modal h3{font-size:1.7rem;font-weight:700;margin-bottom:14px;}
  .day-modal-close{float:right;font-family:inherit;font-weight:700;font-size:1.4rem;cursor:pointer;background:#fff;border:2.2px solid var(--ink);border-radius:10px;width:36px;height:36px;line-height:1;}

  footer{margin:22px 4px 0;text-align:center;font-size:1.1rem;opacity:.55;}

#view-schedule .diary{opacity:1!important;animation:none!important} #view-schedule #page-loader{display:none!important}
