:root{--paper:#f5f2e8;--paper2:#faf8f2;--ink:#28253a;--muted:#7d788f;--line:#ddd7c9;--peri:#716fc4;--peri2:#5d5ca7;--soft:#ecebfa;--danger:#aa566a;--urgent:#8b609c;--done:#bdbac8;--shadow:0 18px 60px rgba(76,70,116,.12)}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:linear-gradient(rgba(113,111,196,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(113,111,196,.03) 1px,transparent 1px),var(--paper);background-size:28px 28px;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.page-shell{width:min(1500px,calc(100% - 40px));margin:0 auto;padding:36px 0 64px}.micro{margin:0 0 8px;color:var(--peri2);font-size:11px;letter-spacing:.18em;font-weight:800}.login-view{min-height:calc(100vh - 100px);display:grid;place-items:center}.login-card{width:min(560px,100%);background:rgba(250,248,242,.9);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:40px}.login-card h1{margin:0;color:var(--peri);font-family:Georgia,"Times New Roman",serif;font-size:clamp(52px,10vw,84px);letter-spacing:-.06em;line-height:.85}.login-copy{margin:16px 0 0;color:var(--muted);font-size:14px}.login-form{margin-top:22px;display:flex;gap:10px}.login-form input{flex:1;min-height:48px;padding:0 14px;border:1px solid var(--line);border-radius:10px;background:#fff}.login-form button,.primary-btn,.soft-btn,.danger-btn,.logout-btn{min-height:42px;padding:0 14px;border-radius:9px;font-weight:800;font-size:12px}.login-form button,.primary-btn{border:1px solid var(--peri);background:var(--peri);color:#fff}.soft-btn{border:1px solid var(--line);background:var(--paper2);color:var(--muted)}.danger-btn{border:1px solid #d6b8c0;background:#f7ecef;color:var(--danger)}.logout-btn{border:1px solid var(--line);background:var(--paper2);color:var(--muted);margin-top:10px;width:100%}.error{color:var(--danger);font-size:12px;font-weight:700;margin-top:12px}.hero{display:grid;grid-template-columns:1fr 360px;gap:24px;align-items:end;padding-bottom:26px;border-bottom:1px solid var(--peri)}.hero h1{margin:0;color:var(--peri);font-family:Georgia,"Times New Roman",serif;font-size:clamp(56px,9vw,106px);line-height:.82;letter-spacing:-.055em}.hero-copy{margin:16px 0 0;color:var(--muted);font-size:14px}.hero-side{display:flex;flex-direction:column;justify-content:flex-end}.hero-card{background:var(--peri);color:#fff;border-radius:10px;padding:24px;min-height:156px;position:relative;overflow:hidden}.hero-card:after{content:"";position:absolute;width:180px;height:180px;border:1px solid rgba(255,255,255,.2);border-radius:50%;right:-80px;top:-80px}.hero-label{font-size:10px;letter-spacing:.16em;font-weight:800;opacity:.8}.hero-badge{display:inline-grid;place-items:center;margin-top:12px;min-width:68px;padding:7px 12px;border-radius:999px;background:#fff;color:var(--peri2);font-weight:900;font-size:12px}.hero-card h2{margin:18px 0 0;font-size:25px;line-height:1.15;position:relative;z-index:1}.hero-card p{margin:10px 0 0;font-size:12px;opacity:.82}.tabs{display:flex;gap:8px;margin-top:26px}.tab{border:1px solid var(--line);background:var(--paper2);padding:0 16px;min-height:42px;border-radius:999px;font-size:12px;font-weight:900;color:var(--muted);letter-spacing:.06em}.tab.active{background:var(--peri);border-color:var(--peri);color:#fff}.tab-panel{display:none;margin-top:18px}.tab-panel.active{display:block}.grid-two{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px}.panel{background:rgba(250,248,242,.9);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 38px rgba(76,70,116,.07);padding:24px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.panel-head.compact h3,.contest-panel h3,.memo-panel h3{margin:0;color:var(--peri2);font-family:Georgia,"Times New Roman",serif;font-size:30px}.month-row{display:flex;align-items:center;gap:10px}.month-row h2{margin:0;min-width:160px;text-align:center;color:var(--peri2);font-family:Georgia,"Times New Roman",serif;font-size:34px}.arrow-btn{width:36px;height:36px;border-radius:50%;border:0;background:transparent;color:var(--peri);font-size:34px;line-height:1}.arrow-btn:hover{background:var(--soft)}.head-actions{display:flex;gap:8px;align-items:center}.weekdays{margin-top:22px;display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--peri);color:var(--peri2)}.weekdays div{padding:0 8px 10px;text-align:center;font-size:10px;font-weight:850;letter-spacing:.12em}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(128px,auto)}.day{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px;background:rgba(255,255,255,.18)}.day:nth-child(7n){border-right:0}.day.outside{opacity:.38}.day.today{background:rgba(113,111,196,.08)}.day-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11px;color:var(--muted);font-weight:800}.day.today .num{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--peri);color:#fff}.day-add{border:0;background:transparent;color:var(--peri);font-size:18px;line-height:1;opacity:0}.day:hover .day-add{opacity:1}
.event-card{display:grid;grid-template-columns:18px minmax(0,1fr);gap:6px;align-items:start;width:100%;padding:7px 8px;border-radius:7px;margin-top:6px;color:#fff;background:var(--peri);font-size:10px;font-weight:760;line-height:1.25}.event-card.urgent{background:var(--urgent)}.event-card.today-event{background:var(--danger)}.event-card.overdue{background:#5d5968}.event-card.done{background:var(--done);color:#6f6a79}.event-card.important{outline:2px solid rgba(93,92,167,.18)}.event-card.critical{outline:2px solid rgba(170,86,106,.22)}.event-body{min-width:0;cursor:pointer}.event-card.done .event-body{text-decoration:line-through}.event-sub{display:block;margin-top:4px;font-size:9px;opacity:.74}.check-btn{width:16px;height:16px;border:1.5px solid rgba(255,255,255,.9);border-radius:3px;background:transparent;display:grid;place-items:center;padding:0;color:#fff;font-size:11px;line-height:1}.event-card.done .check-btn{border-color:#77717f;background:#77717f;color:#fff}.check-btn.checked:after{content:"✓";font-size:11px;font-weight:900}
.pressure-list{margin-top:18px;display:flex;flex-direction:column;gap:9px}.pressure-card{border:1px solid var(--line);border-left:5px solid var(--peri);background:var(--paper2);border-radius:8px;padding:12px;cursor:pointer}.pressure-card.urgent{border-left-color:var(--urgent)}.pressure-card.today{border-left-color:var(--danger);background:#f7ecef}.pressure-card.overdue{border-left-color:#5d5968;background:#efedf2}.pressure-top{display:flex;justify-content:space-between;gap:10px}.pressure-d{font-size:14px;font-weight:950;color:var(--peri2)}.pressure-card.today .pressure-d{color:var(--danger)}.pressure-name{margin-top:4px;font-size:13px;font-weight:850}.pressure-meta{margin-top:6px;font-size:10px;color:var(--muted)}.count-pill{display:grid;place-items:center;min-width:34px;height:34px;border-radius:999px;background:var(--peri);color:#fff;font-size:12px;font-weight:900}
.pressure-quote{margin-top:26px;padding-top:18px;text-align:center}
.pressure-quote-line{height:1px;background:var(--line);margin-bottom:18px}
.pressure-quote p{margin:0;color:var(--peri2);font-family:Georgia,"Times New Roman",serif;font-size:18px;line-height:1.45;font-weight:700;letter-spacing:-.01em}

.memo-head{align-items:center}.memo-tabs{display:flex;gap:6px;padding:4px;border:1px solid var(--line);border-radius:999px;background:#f0ede6}.memo-tab{min-height:36px;padding:0 16px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:11px;font-weight:900;letter-spacing:.08em}.memo-tab.active{background:var(--peri);color:#fff}.memo-subpanel{display:none;margin-top:20px}.memo-subpanel.active{display:block}.memo-form{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}.memo-form-grid{display:grid;gap:12px}.account-form-grid{grid-template-columns:1fr 1fr 1fr}.note-form-grid{grid-template-columns:2fr 1fr}.memo-form label span{display:block;margin-bottom:7px;color:var(--muted);font-size:11px;font-weight:800}.memo-form input,.memo-form select,.memo-form textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:11px 12px;outline:none}.memo-form textarea{resize:vertical}.memo-note-field{grid-column:1/-1}.memo-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.saved-head{display:flex;justify-content:space-between;gap:12px;margin:18px 0 10px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:.06em}.memo-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.saved-card{border:1px solid var(--line);border-radius:10px;background:var(--paper2);padding:15px;min-width:0}.saved-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.saved-card h4{margin:0;color:var(--peri2);font-family:Georgia,"Times New Roman",serif;font-size:19px;line-height:1.2}.saved-tag{display:inline-block;margin-top:7px;padding:4px 8px;border-radius:999px;background:var(--soft);color:var(--peri2);font-size:9px;font-weight:900}.saved-meta{margin-top:10px;color:var(--muted);font-size:11px;line-height:1.6;word-break:break-all}.saved-content{margin-top:10px;font-size:12px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.saved-actions{display:flex;gap:6px;flex-shrink:0}.icon-action{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:7px;padding:6px 8px;font-size:9px;font-weight:850}.icon-action.danger{color:var(--danger)}
.contest-list{margin-top:18px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.contest-card{border:1px solid var(--line);border-radius:10px;background:var(--paper2);padding:16px;display:grid;grid-template-columns:20px minmax(0,1fr);gap:10px;align-items:start}.contest-card.completed{background:#eeeae5;color:#817c88}.contest-card.completed .contest-main{text-decoration:line-through}.contest-check{width:18px;height:18px;border:1.5px solid var(--peri);border-radius:4px;background:#fff;display:grid;place-items:center;padding:0;color:#fff;margin-top:1px}.contest-check.checked{background:var(--peri);border-color:var(--peri)}.contest-check.checked:after{content:"✓";font-size:11px;font-weight:900}.contest-main{min-width:0;cursor:pointer}.contest-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.contest-badge{display:inline-grid;place-items:center;min-width:62px;padding:6px 10px;border-radius:999px;background:var(--soft);color:var(--peri2);font-size:11px;font-weight:900}.contest-card.completed .contest-badge{background:#ddd8d2;color:#77717f}.contest-card h4{margin:12px 0 0;font-size:18px;line-height:1.25;color:var(--peri2);font-family:Georgia,"Times New Roman",serif}.contest-meta{margin-top:8px;color:var(--muted);font-size:12px;line-height:1.6}.contest-note{margin-top:10px;font-size:12px;line-height:1.65}.empty-box{margin-top:18px;border:1px dashed var(--line);border-radius:10px;padding:24px;text-align:center;color:var(--muted)}.modal{border:0;padding:0;background:transparent;width:min(620px,calc(100% - 28px))}.modal::backdrop{background:rgba(40,37,58,.34);backdrop-filter:blur(5px)}.modal-card{background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:24px;box-shadow:0 30px 90px rgba(37,35,52,.24)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.modal-head h3{margin:0;color:var(--peri2);font-family:Georgia,"Times New Roman",serif;font-size:30px}.close-btn{width:36px;height:36px;border:0;background:transparent;color:var(--muted);font-size:28px}.modal-card label{display:block;margin-top:14px}.modal-card label>span{display:block;margin-bottom:7px;color:var(--muted);font-size:11px;font-weight:800}.modal-card input,.modal-card select,.modal-card textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:11px 12px;outline:none}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-actions{display:flex;justify-content:space-between;gap:12px;margin-top:22px}.modal-actions-right{display:flex;gap:8px;margin-left:auto}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,16px);background:var(--ink);color:#fff;border-radius:999px;padding:10px 14px;font-size:11px;font-weight:800;opacity:0;pointer-events:none;transition:.2s;z-index:100}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1100px){.hero{grid-template-columns:1fr}.grid-two{grid-template-columns:1fr}.memo-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.account-form-grid,.note-form-grid{grid-template-columns:1fr}.memo-card-grid,.contest-list{grid-template-columns:1fr}.memo-head{align-items:flex-start;flex-direction:column}.memo-tabs{width:100%}.memo-tab{flex:1}}
@media(max-width:700px){.page-shell{width:calc(100% - 20px);padding:20px 0 44px}.login-card{padding:26px}.login-form,.head-actions,.modal-actions,.modal-actions-right{flex-direction:column}.tabs{overflow:auto;padding-bottom:2px}.tab{white-space:nowrap}.panel{padding:18px}.panel-head,.hero-side,.hero{gap:14px}.month-row h2{font-size:28px;min-width:138px}.calendar-grid{grid-auto-rows:minmax(92px,auto)}.day{padding:6px}.weekdays div{padding:0 2px 8px;font-size:8px}.event-card{padding:6px 5px;grid-template-columns:15px minmax(0,1fr);gap:4px;font-size:9px}.event-sub{display:none}.check-btn{width:14px;height:14px}.two-col{grid-template-columns:1fr}}


/* ===== MOBILE RESPONSIVE V5 ===== */
.calendar-panel,.calendar-grid,.weekdays,.day,.event-card,.event-body,
.hero,.hero>*,.hero-side,.panel,.grid-two,.tab-panel{min-width:0;max-width:100%}
.calendar-grid,.weekdays{grid-template-columns:repeat(7,minmax(0,1fr))}
.day{overflow:hidden}
.event-body{overflow:hidden}
.event-body>span:first-child{display:block;overflow:hidden;text-overflow:ellipsis}
.mobile-agenda{display:none}

@media(max-width:700px){
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  .page-shell{
    width:100%;
    max-width:100%;
    margin:0;
    padding:14px 10px 34px;
    overflow:hidden;
  }

  .hero{
    width:100%;
    grid-template-columns:minmax(0,1fr);
    gap:14px;
    padding:8px 0 18px;
  }
  .hero>div,.hero-side,.hero-card{width:100%;max-width:100%}
  .hero h1{
    font-size:clamp(48px,16vw,64px);
    line-height:.86;
    overflow-wrap:normal;
    word-break:keep-all;
  }
  .hero-copy{font-size:12px;line-height:1.55}
  .hero-card{
    min-height:0;
    padding:18px;
  }
  .hero-card h2{font-size:20px;overflow-wrap:anywhere}
  .logout-btn{width:100%}

  .tabs{
    width:100%;
    max-width:100%;
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:6px;
    overflow:visible;
    margin-top:16px;
  }
  .tab{
    min-width:0;
    width:100%;
    padding:0 5px;
    min-height:38px;
    font-size:10px;
    letter-spacing:.02em;
  }

  .tab-panel,.grid-two,.calendar-panel,.pressure-panel{width:100%;max-width:100%}
  .panel{
    width:100%;
    max-width:100%;
    padding:14px 10px;
    overflow:hidden;
  }

  .calendar-panel>.panel-head{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
  }
  .calendar-panel .month-row{
    width:100%;
    display:grid;
    grid-template-columns:32px minmax(0,1fr) 32px;
    gap:4px;
    align-items:center;
  }
  .calendar-panel .month-row h2{
    min-width:0;
    width:auto;
    font-size:26px;
    white-space:nowrap;
  }
  .arrow-btn{width:32px;height:32px;font-size:28px}
  .head-actions{
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:6px;
  }
  .head-actions .soft-btn,.head-actions .primary-btn{
    width:100%;
    min-height:38px;
  }

  .weekdays{
    width:100%;
    margin-top:14px;
  }
  .weekdays div{
    min-width:0;
    padding:0 0 7px;
    font-size:7px;
    letter-spacing:0;
    white-space:nowrap;
  }

  .calendar-grid{
    width:100%;
    max-width:100%;
    grid-template-columns:repeat(7,minmax(0,1fr));
    grid-auto-rows:68px;
    overflow:hidden;
  }
  .day{
    width:auto;
    min-width:0;
    height:68px;
    padding:4px 3px;
    overflow:hidden;
  }
  .day-head{
    margin:0 0 2px;
    min-width:0;
    font-size:9px;
  }
  .day.today .num{
    width:20px;height:20px;
    font-size:9px;
  }
  .day-add{
    opacity:1;
    font-size:13px;
    width:14px;
    padding:0;
  }

  /* On the month grid, events become compact dots so text can never make
     the calendar taller or force horizontal overflow. */
  .event-card{
    display:inline-block;
    width:7px;
    height:7px;
    min-width:7px;
    min-height:7px;
    border-radius:50%;
    padding:0;
    margin:3px 2px 0 0;
    overflow:hidden;
    vertical-align:top;
    outline:none!important;
    cursor:pointer;
  }
  .event-card .check-btn,.event-card .event-body{display:none}
  .event-card.done{background:var(--done)}
  .event-card.critical{box-shadow:0 0 0 1px rgba(170,86,106,.35)}

  .mobile-agenda{
    display:block;
    width:100%;
    max-width:100%;
    margin-top:14px;
    padding-top:14px;
    border-top:1px solid var(--line);
  }
  .mobile-agenda-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
  }
  .mobile-agenda-head h3{
    margin:0;
    color:var(--peri2);
    font-family:Georgia,"Times New Roman",serif;
    font-size:21px;
  }
  .mobile-agenda-head .primary-btn{
    min-height:34px;
    padding:0 11px;
  }
  .mobile-agenda-list{
    display:flex;
    flex-direction:column;
    gap:7px;
    margin-top:10px;
  }
  .mobile-agenda-item{
    display:grid;
    grid-template-columns:20px minmax(0,1fr);
    gap:8px;
    align-items:start;
    border:1px solid var(--line);
    border-left:4px solid var(--peri);
    border-radius:8px;
    background:var(--paper2);
    padding:10px;
  }
  .mobile-agenda-item.urgent{border-left-color:var(--urgent)}
  .mobile-agenda-item.today-event{border-left-color:var(--danger)}
  .mobile-agenda-item.overdue{border-left-color:#5d5968}
  .mobile-agenda-item.done{opacity:.55}
  .mobile-agenda-item.done .mobile-agenda-body{text-decoration:line-through}
  .mobile-agenda-check{
    width:18px;height:18px;
    border:1.5px solid var(--peri);
    border-radius:4px;
    background:#fff;
    color:#fff;
    display:grid;
    place-items:center;
    padding:0;
  }
  .mobile-agenda-check.checked{background:var(--peri)}
  .mobile-agenda-check.checked:after{content:"✓";font-size:11px;font-weight:900}
  .mobile-agenda-body{
    min-width:0;
    cursor:pointer;
  }
  .mobile-agenda-title{
    display:block;
    font-size:12px;
    font-weight:850;
    line-height:1.35;
    overflow-wrap:anywhere;
  }
  .mobile-agenda-meta{
    display:block;
    margin-top:4px;
    color:var(--muted);
    font-size:10px;
    line-height:1.4;
  }
  .mobile-agenda-empty{
    padding:14px 10px;
    border:1px dashed var(--line);
    border-radius:8px;
    color:var(--muted);
    text-align:center;
    font-size:11px;
  }

  .pressure-panel{margin-top:0}
  .pressure-quote p{font-size:17px}

  .memo-tabs{max-width:100%}
  .memo-tab{min-width:0;padding:0 8px}
  .saved-card,.contest-card{max-width:100%;overflow:hidden}
  .saved-card-head{flex-wrap:wrap}
  .saved-actions{margin-left:auto}
  .saved-meta,.saved-content,.contest-meta,.contest-note{overflow-wrap:anywhere}

  .modal{
    width:calc(100% - 20px);
    max-width:calc(100% - 20px);
  }
  .modal-card{padding:18px 14px}
}

/* ===== PERIOD CALENDAR + MULTI-SELECT + MATERIAL BOARD ===== */
.calendar-board-scroll{width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:var(--peri) transparent}
.calendar-board-inner{width:100%;min-width:0}
.calendar-grid.range-calendar{display:block!important;width:100%;border-left:1px solid var(--line);grid-template-columns:none;grid-auto-rows:auto}
.range-week-row{--range-lanes:1;position:relative;min-height:calc(39px + (var(--range-lanes) * 66px));border-bottom:1px solid var(--line);background:rgba(255,255,255,.12)}
.range-day-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));z-index:1}
.range-day-cell{min-width:0;border-right:1px solid var(--line);background:rgba(255,255,255,.18);transition:background .12s,box-shadow .12s}
.range-day-cell:last-child{border-right:0}
.range-day-cell.outside{background:rgba(70,66,95,.025)}
.range-day-cell.today{background:rgba(113,111,196,.06)}
.range-day-cell.selected{background:rgba(113,111,196,.095)}
.range-day-cell.drag-preview{background:rgba(113,111,196,.17)!important;box-shadow:inset 0 0 0 1px rgba(93,92,167,.25)}
.range-day-head{display:flex;justify-content:space-between;align-items:center;gap:4px;height:34px;padding:6px 7px 0}
.range-day-num{border:0;background:transparent;color:var(--muted);min-height:22px;padding:0 5px;border-radius:999px;font-size:11px;font-weight:850}
.range-day-cell.today .range-day-num{background:var(--peri);color:#fff}
.range-day-add{border:0;background:transparent;color:var(--peri);font-size:16px;line-height:1;padding:0;opacity:.45}
.range-day-cell:hover .range-day-add{opacity:1}
.range-layer{position:relative;z-index:3;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:58px;gap:8px 0;padding-top:37px;padding-bottom:5px;pointer-events:none}
.range-event-card{position:relative;pointer-events:auto;min-width:0;height:58px;margin:0 3px;border:1px solid rgba(80,78,155,.3);border-radius:8px;background:var(--peri);color:#fff;box-shadow:0 2px 7px rgba(76,70,116,.1);overflow:hidden;user-select:none;touch-action:none;cursor:grab}
.range-event-card:hover{box-shadow:0 5px 15px rgba(76,70,116,.17)}
.range-event-card:active,.range-event-card.is-dragging{cursor:grabbing}
.range-event-card.is-dragging{opacity:.78;outline:2px solid rgba(113,111,196,.26);outline-offset:1px}
.range-event-card.urgent{background:var(--urgent)}
.range-event-card.today-event{background:var(--danger)}
.range-event-card.overdue{background:#5d5968}
.range-event-card.done{background:var(--done);color:#6f6a79;border-color:#aaa6b3}
.range-event-card.important{outline:2px solid rgba(93,92,167,.18);outline-offset:-2px}
.range-event-card.critical{outline:2px solid rgba(170,86,106,.28);outline-offset:-2px}
.range-event-card.done .range-card-title{text-decoration:line-through}
.range-event-card.continues-left{border-top-left-radius:3px;border-bottom-left-radius:3px;margin-left:0}
.range-event-card.continues-right{border-top-right-radius:3px;border-bottom-right-radius:3px;margin-right:0}
.range-card-body{height:100%;min-width:0;padding:7px 10px 6px;overflow:hidden}
.range-card-top{display:flex;align-items:center;gap:7px;min-width:0}
.range-check{flex:none;width:15px;height:15px;border:1.5px solid rgba(255,255,255,.92);border-radius:3px;background:transparent;padding:0;display:grid;place-items:center;color:#fff}
.range-event-card.done .range-check{border-color:#77717f;background:#77717f}
.range-check.checked:after{content:"✓";font-size:9px;font-weight:900}
.range-card-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.25;font-weight:900}
.range-card-tags{display:flex;align-items:center;gap:4px;min-width:0;margin-top:5px;overflow:hidden}
.range-tag{flex:none;display:inline-flex;align-items:center;height:16px;padding:0 5px;border-radius:4px;background:rgba(255,255,255,.18);color:inherit;font-size:7px;line-height:1;font-weight:850;white-space:nowrap}
.range-event-card.done .range-tag{background:rgba(255,255,255,.36)}
.range-tag.worker{background:rgba(255,255,255,.28)}
.range-card-period{display:none;margin-top:4px;font-size:8px;line-height:1;font-weight:750;opacity:.72;white-space:nowrap}
.range-event-card.span-1 .range-card-body{padding-left:8px;padding-right:8px}
.range-event-card.span-1 .range-card-title{font-size:9px}
.range-event-card.span-1 .range-tag{font-size:6px;padding:0 3px}
.range-event-card.span-3 .range-card-period,.range-event-card.span-4 .range-card-period{display:block}
.resize-handle{position:absolute;z-index:6;top:0;bottom:0;width:10px;border:0;padding:0;background:transparent;cursor:ew-resize;touch-action:none}
.resize-handle::after{content:"";position:absolute;top:14px;bottom:14px;width:3px;border-radius:999px;background:rgba(255,255,255,.5);opacity:0;transition:opacity .12s}
.range-event-card:hover .resize-handle::after,.resize-handle:hover::after{opacity:1}
.range-event-card.done .resize-handle::after{background:rgba(80,76,90,.45)}
.resize-left{left:0}.resize-left::after{left:3px}.resize-right{right:0}.resize-right::after{right:3px}
.range-drag-tooltip{position:fixed;z-index:9999;width:206px;pointer-events:none;display:flex;flex-direction:column;gap:3px;padding:9px 11px;border:1px solid rgba(113,111,196,.35);border-radius:9px;background:rgba(40,37,58,.94);color:#fff;box-shadow:0 8px 24px rgba(32,20,24,.18);font-size:10px;line-height:1.4}
.range-drag-tooltip b{color:#dedcff;font-size:10px}
.event-context-menu{position:fixed;z-index:10050;display:none;min-width:112px;padding:5px;border:1px solid rgba(93,92,167,.22);border-radius:10px;background:rgba(255,253,249,.98);box-shadow:0 10px 28px rgba(44,39,68,.2);backdrop-filter:blur(10px)}
.event-context-menu.show{display:grid;gap:2px}
.event-context-menu button{width:100%;min-height:34px;padding:0 11px;border:0;border-radius:7px;background:transparent;color:var(--ink);text-align:left;font-size:11px;font-weight:650;cursor:pointer}
.event-context-menu button:hover,.event-context-menu button:focus-visible{background:var(--soft);color:var(--peri2);outline:none}
.event-context-menu button.danger{color:#a64f63}
.event-context-menu button.danger:hover,.event-context-menu button.danger:focus-visible{background:#f8e9ed;color:#963f54}

.keyword-group{margin-top:14px}
.field-label{display:block;margin-bottom:7px;color:var(--muted);font-size:11px;font-weight:800}
.multi-choice{display:flex;flex-wrap:wrap;gap:7px;width:100%;min-height:44px;padding:8px;border:1px solid var(--line);border-radius:9px;background:#fff}
.choice-chip{display:inline-flex!important;align-items:center;margin:0!important;cursor:pointer}
.choice-chip input{position:absolute;opacity:0;pointer-events:none;width:1px!important;height:1px!important;min-height:0!important;padding:0!important}
.choice-chip span{display:inline-flex!important;align-items:center;min-height:27px;margin:0!important;padding:0 9px;border:1px solid var(--line);border-radius:999px;background:var(--paper2);color:var(--muted);font-size:10px!important;font-weight:850!important;transition:.15s ease}
.choice-chip input:checked + span{border-color:rgba(93,92,167,.55);background:var(--soft);color:var(--peri2);box-shadow:0 0 0 2px rgba(113,111,196,.07)}
.modal{max-height:calc(100vh - 28px);overflow:auto}

.material-panel h3{margin:0;color:var(--peri2);font-family:Georgia,"Times New Roman",serif;font-size:30px}
.material-head{align-items:center}
.material-tabs{display:flex;gap:6px;padding:4px;border:1px solid var(--line);border-radius:999px;background:#f0ede6}
.material-tab{min-height:36px;padding:0 16px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:11px;font-weight:900}
.material-tab.active{background:var(--peri);color:#fff}
.material-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:20px;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.material-form input{width:100%;min-width:0;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:11px 12px;outline:none}
.material-list{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.material-item{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:9px;background:var(--paper2);padding:12px 13px}
.material-item.done{opacity:.58;background:#eeeae5}
.material-item.done .material-text{text-decoration:line-through;color:var(--muted)}
.material-check{width:18px;height:18px;border:1.5px solid var(--peri);border-radius:4px;background:#fff;display:grid;place-items:center;padding:0;color:#fff}
.material-check.checked{background:var(--peri);border-color:var(--peri)}
.material-check.checked:after{content:"✓";font-size:11px;font-weight:900}
.material-text{min-width:0;font-size:13px;line-height:1.45;overflow-wrap:anywhere}
.material-delete{border:0;background:transparent;color:var(--muted);padding:5px 6px;font-size:9px;font-weight:850}
.material-delete:hover{color:var(--danger)}

@media(max-width:800px){
  .material-head{align-items:flex-start;flex-direction:column}
  .material-tabs{width:100%}
  .material-tab{flex:1;min-width:0;padding:0 7px}
}
@media(max-width:700px){
  .tabs{grid-template-columns:repeat(4,minmax(0,1fr))}
  .calendar-board-scroll{margin-top:0;padding-bottom:8px}
  .calendar-board-inner{min-width:900px}
  .calendar-panel .weekdays{margin-top:14px}
  .range-week-row{min-height:calc(37px + (var(--range-lanes) * 60px))}
  .range-layer{grid-auto-rows:52px;gap:8px 0;padding-top:35px}
  .range-event-card{height:52px}
  .range-card-title{font-size:10px}
  .range-day-head{padding:5px 5px 0}
  .range-day-num{font-size:9px}
  .range-day-add{font-size:14px;opacity:.7}
  .material-form{grid-template-columns:1fr}
  .material-form .primary-btn{width:100%}
  .material-item{grid-template-columns:20px minmax(0,1fr) auto;padding:11px 10px}
}


/* ===== V7 DETAIL READABILITY + GROUPED EVENT TAGS ===== */
.range-layer{grid-auto-rows:var(--range-lane-height,58px)}
.range-event-card{height:var(--range-lane-height,58px)}
.range-card-title{font-weight:700}
.range-card-tags{display:flex;flex-direction:column;align-items:stretch;gap:2px;min-width:0;margin-top:5px;overflow:hidden}
.range-card-tag-row{display:flex;align-items:center;gap:4px;min-width:0;height:14px;overflow:hidden;white-space:nowrap}
.range-tag{height:14px;font-size:7px;font-weight:600}
.range-tag.worker{background:rgba(255,255,255,.28)}
.range-tag.status{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18)}
.range-card-period{font-weight:500}
.range-event-card.span-1 .range-tag{font-size:6px}
.field-label{font-weight:600}
.choice-chip span{font-weight:650!important}
.modal-card label>span{font-weight:600}
.mobile-agenda-title{font-weight:700}
.mobile-agenda-meta,.pressure-meta{font-weight:500}
.saved-head{font-weight:600}
.saved-tag{font-weight:700}
.icon-action{font-weight:650}
.material-delete{font-weight:600}
.material-tab{font-weight:700}
.material-form{align-items:start}
.material-form textarea{width:100%;min-width:0;min-height:104px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:11px 12px;outline:none;resize:vertical;line-height:1.55}
.material-form .primary-btn{align-self:end}

@media(max-width:700px){
  .range-layer{grid-auto-rows:var(--range-lane-height,58px)}
  .range-event-card{height:var(--range-lane-height,58px)}
  .material-form .primary-btn{align-self:stretch}
}


/* ===== V8 DEADLINE FIELD + TITLE SIZE CONSISTENCY ===== */
.range-event-card.span-1 .range-card-title{font-size:11px}
@media(max-width:700px){
 .range-event-card.span-1 .range-card-title{font-size:10px}
}


/* ===== V8.1 MONTH CARD DEADLINE VISIBILITY ===== */
.range-card-deadline{
 display:block;
 margin-top:3px;
 padding-left:22px;
 font-size:8px;
 line-height:1.15;
 font-weight:500;
 opacity:.82;
 white-space:nowrap;
 overflow:hidden;
 text-overflow:ellipsis;
}
.range-event-card.span-1 .range-card-deadline{padding-left:22px;font-size:8px}
.range-event-card.done .range-card-deadline{text-decoration:none}
@media(max-width:700px){
 .range-card-deadline{font-size:7px;margin-top:2px;padding-left:21px}
 .range-event-card.span-1 .range-card-deadline{font-size:7px;padding-left:21px}
}


/* ===== V9 MALE MATERIAL CATEGORY FILTERS ===== */
.male-material-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}
.male-material-tag{min-height:31px;padding:0 11px;border:1px solid var(--line);border-radius:999px;background:var(--paper2);color:var(--muted);font-size:10px;font-weight:650;cursor:pointer;transition:.15s ease}
.male-material-tag:hover{border-color:rgba(93,92,167,.4);color:var(--peri2)}
.male-material-tag.active{border-color:rgba(93,92,167,.55);background:var(--soft);color:var(--peri2);box-shadow:0 0 0 2px rgba(113,111,196,.07)}
@media(max-width:700px){
 .male-material-tags{gap:6px;margin-top:13px}
 .male-material-tag{min-height:30px;padding:0 9px;font-size:9px}
}
.material-text{white-space:pre-wrap}


/* ===== V11 SHARED CLOUD SYNC ===== */
.sync-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:14px 0 0;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.58)}
.sync-state{display:flex;align-items:center;gap:9px;min-width:0}
.sync-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:#aaa5ae;box-shadow:0 0 0 3px rgba(120,115,125,.08)}
.sync-dot.connected{background:#6f8f72;box-shadow:0 0 0 3px rgba(111,143,114,.12)}
.sync-dot.waiting{background:#b68a58;box-shadow:0 0 0 3px rgba(182,138,88,.12)}
.sync-dot.error{background:#b66767;box-shadow:0 0 0 3px rgba(182,103,103,.12)}
.sync-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.sync-copy strong{color:var(--peri2);font-size:10px;font-weight:700;line-height:1.3}
.sync-copy span{color:var(--muted);font-size:9px;font-weight:450;line-height:1.35}
.sync-bar .soft-btn{flex:0 0 auto;min-height:32px;padding:0 11px;font-size:9px}
@media(max-width:700px){
 .sync-bar{align-items:flex-start;flex-direction:column;gap:9px;margin-top:10px;padding:10px 11px}
 .sync-bar .soft-btn{width:100%}
}
\n\n/* ===== V11.2 READABILITY + QUIET CONNECTED STATUS ===== */
/* 정상 연결 알림은 JS에서 잠깐만 표시됩니다. 오류/저장 중/최초 이전 상태는 계속 표시됩니다. */

/* 월간 보드: 작은 글자가 뭉개지지 않도록 한 단계 확대 */
.range-card-body{padding:9px 11px 7px}
.range-card-top{gap:8px}
.range-check{width:17px;height:17px;border-width:1.5px}
.range-check.checked:after{font-size:11px}
.range-card-title,
.range-event-card.span-1 .range-card-title{font-size:13px;line-height:1.3;font-weight:700}
.range-card-deadline,
.range-event-card.span-1 .range-card-deadline{margin-top:4px;padding-left:25px;font-size:10px;line-height:1.25;font-weight:500;opacity:.9}
.range-card-tags{gap:3px;margin-top:6px}
.range-card-tag-row{height:18px;gap:5px}
.range-tag,
.range-event-card.span-1 .range-tag{height:18px;padding:0 6px;font-size:9px;line-height:1;font-weight:550;border-radius:5px}
.range-card-period{margin-top:5px;font-size:10px;line-height:1.15;font-weight:500;opacity:.84}
.range-day-num{font-size:12px;font-weight:700}
.weekdays div{font-size:11px;font-weight:700}

/* 일정 외 세부 글씨도 너무 작지 않게 조정하되 굵기는 과하게 올리지 않음 */
.micro{font-size:12px;font-weight:700}
.modal-card label>span,.field-label{font-size:12px;font-weight:550}
.choice-chip span{font-size:11px!important;font-weight:600!important}
.pressure-meta{font-size:11px;font-weight:450}
.saved-head{font-size:11px;font-weight:550}
.saved-tag{font-size:10px;font-weight:650}
.material-delete{font-size:10px;font-weight:550}
.male-material-tag{font-size:11px;font-weight:600}
.sync-copy strong{font-size:11px;font-weight:650}
.sync-copy span{font-size:10px;font-weight:450}

@media(max-width:700px){
 .range-card-title,
 .range-event-card.span-1 .range-card-title{font-size:12px}
 .range-card-deadline,
 .range-event-card.span-1 .range-card-deadline{padding-left:24px;font-size:9px;margin-top:3px}
 .range-card-tag-row{height:17px;gap:4px}
 .range-tag,
 .range-event-card.span-1 .range-tag{height:17px;padding:0 5px;font-size:8.5px}
 .range-card-period{font-size:9px}
 .range-day-num{font-size:10px}
 .weekdays div{font-size:9px}
 .micro{font-size:11px}
 .choice-chip span{font-size:10.5px!important}
 .male-material-tag{font-size:10px}
}
