*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;font-family:'Plus Jakarta Sans',sans-serif}
:root{
--bg:#F0F4F8;--surface:#FFFFFF;--text:#1E293B;--primary:#2563EB;--secondary:#64748B;
--urgent:#EF4444;--high:#FF8C42;--medium:#FBBF24;--low:#10B981;
}
.app-wrapper{height:100%;width:100%;overflow:auto;background:var(--bg);color:var(--text)}
.fade-in{animation:fadeIn .3s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.slide-up{animation:slideUp .35s ease}
@keyframes slideUp{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}
.card{background:var(--surface);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);transition:all .2s}
.card:hover{box-shadow:0 4px 12px rgba(0,0,0,.08)}
.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.4);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center}
.modal-content{background:var(--surface);border-radius:24px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;padding:28px;display:flex;flex-direction:column}
@media(max-width:640px){.modal-content{border-radius:20px;max-height:85vh;width:calc(100% - 24px);margin:12px}}
.justification-modal-content{overscroll-behavior:contain}
.justification-textarea{min-height:120px}
@media(max-width:640px){
  .justification-modal-overlay{
    align-items:flex-end;
    justify-content:center;
    padding:12px 12px max(12px, env(safe-area-inset-bottom));
    background:rgba(15,23,42,.52);
  }
  .justification-modal-content{
    width:100%;
    max-width:none!important;
    margin:0;
    border-radius:24px 24px 18px 18px;
    max-height:calc(var(--justification-viewport-height, 100vh) - 18px);
    padding:20px 18px calc(18px + env(safe-area-inset-bottom));
  }
  .justification-textarea{
    min-height:140px;
    max-height:34vh;
  }
}
input,textarea,select{border:1.5px solid #E2E8F0;border-radius:12px;padding:10px 14px;font-family:inherit;font-size:14px;width:100%;transition:border .2s;background:#F8FAFC}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);background:#fff}
.btn{border:none;border-radius:12px;padding:10px 20px;font-family:inherit;font-weight:600;font-size:14px;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:#1D4ED8}
.btn-danger{background:#FEE2E2;color:var(--urgent)}
.btn-danger:hover{background:#FECACA}
.btn-ghost{background:transparent;color:var(--secondary)}
.btn-ghost:hover{background:#F1F5F9}
.tab-btn{padding:8px 16px;border-radius:10px;font-weight:600;font-size:13px;border:none;cursor:pointer;background:transparent;color:var(--secondary);transition:all .15s}
.tab-btn.active{background:var(--primary);color:#fff}
.toast{position:relative;background:var(--surface);border-radius:18px;padding:14px 16px;box-shadow:0 18px 40px rgba(15,23,42,.18);display:flex;align-items:flex-start;gap:12px;font-size:14px;font-weight:600;border:1px solid rgba(148,163,184,.18);animation:slideIn .28s ease;max-width:min(420px,calc(100vw - 32px));pointer-events:auto}
@keyframes slideIn{from{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.cal-day{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;border:none;background:transparent;position:relative}
.cal-day:hover{background:#EFF6FF}
.cal-day.today{background:var(--primary);color:#fff;font-weight:700}
.cal-day.selected{outline:2px solid var(--primary);outline-offset:1px}
.calendar-jump-controls{display:grid;grid-template-columns:minmax(0,1fr) 120px auto;gap:10px;align-items:center;margin-bottom:16px}
.calendar-picker-trigger{height:46px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 14px;border-radius:14px;border:1px solid var(--picker-border,rgba(148,163,184,.22));background:var(--picker-bg,linear-gradient(180deg,rgba(255,255,255,.9) 0%,rgba(248,250,252,.98) 100%));color:var(--text);font-weight:700;font-size:14px;box-shadow:var(--picker-shadow,0 8px 24px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.82));cursor:pointer;transition:all .2s}
.calendar-picker-trigger i{color:var(--secondary)}
.calendar-picker-trigger:hover{transform:translateY(-1px);border-color:rgba(37,99,235,.35);box-shadow:0 10px 28px rgba(15,23,42,.1),inset 0 1px 0 rgba(255,255,255,.85)}
.calendar-picker-trigger.active{border-color:rgba(37,99,235,.45);box-shadow:0 0 0 3px rgba(37,99,235,.12),0 12px 28px rgba(37,99,235,.12)}
.calendar-picker-panel{display:none;margin:-4px 0 18px;padding:16px;border-radius:18px;background:var(--picker-panel-bg,linear-gradient(180deg,rgba(255,255,255,.95) 0%,rgba(248,250,252,.98) 100%));border:1px solid var(--picker-panel-border,rgba(148,163,184,.14));box-shadow:var(--picker-panel-shadow,0 18px 50px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.75))}
.calendar-picker-panel.active{display:block;animation:fadeIn .22s ease}
.calendar-picker-grid{display:grid;gap:10px}
.calendar-month-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:14px}
.calendar-year-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.calendar-picker-option{height:42px;border:none;border-radius:14px;background:var(--picker-option-bg,rgba(226,232,240,.5));color:var(--text);font-weight:700;font-size:13px;cursor:pointer;transition:all .18s;display:flex;align-items:center;justify-content:center;padding:0 10px}
.calendar-picker-option:hover{background:rgba(37,99,235,.1);color:var(--primary);transform:translateY(-1px)}
.calendar-picker-option.active{background:linear-gradient(135deg,#2563EB 0%,#4F46E5 100%);color:#fff;box-shadow:0 10px 24px rgba(37,99,235,.28)}
.calendar-year-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;padding-top:2px}
.calendar-year-toolbar span{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--secondary)}
.calendar-year-nav{padding:8px 10px;border-radius:12px;border:1px solid var(--picker-border,rgba(148,163,184,.18));background:var(--picker-subtle-bg,rgba(255,255,255,.55))}
.calendar-year-nav:hover{background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.25)}
.calendar-today-btn{height:46px;border-radius:14px;border:1px solid var(--picker-border,rgba(148,163,184,.16));background:var(--picker-subtle-bg,rgba(255,255,255,.6))}
.calendar-today-btn:hover{background:rgba(37,99,235,.08)}
.task-swipe-card{touch-action:pan-y}
.tutorial-overlay{position:fixed;inset:0;background:rgba(2,6,23,.58);backdrop-filter:blur(6px);z-index:260;pointer-events:auto}
.tutorial-spotlight{position:fixed;border-radius:22px;border:2px solid rgba(96,165,250,.95);box-shadow:0 0 0 9999px rgba(2,6,23,.48),0 0 0 6px rgba(96,165,250,.12),0 16px 38px rgba(2,6,23,.28);transition:all .25s ease;pointer-events:none}
.tutorial-card{position:fixed;right:24px;bottom:24px;width:min(380px,calc(100vw - 28px));border-radius:24px;background:linear-gradient(180deg,rgba(255,255,255,.98) 0%,rgba(248,250,252,.98) 100%);border:1px solid rgba(148,163,184,.18);box-shadow:0 28px 70px rgba(2,6,23,.28);padding:20px;display:flex;flex-direction:column;gap:16px;color:#0f172a}
.tutorial-target-active{position:relative!important;z-index:275!important;filter:none!important;opacity:1!important;box-shadow:0 0 0 2px rgba(125,211,252,.38)!important}
.tutorial-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.tutorial-step-label{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#2563eb;margin-bottom:6px}
.tutorial-title{font-size:20px;font-weight:800;letter-spacing:-.03em;line-height:1.1}
.tutorial-description{font-size:14px;line-height:1.65;color:#475569}
.tutorial-actions{display:flex;justify-content:space-between;align-items:center;gap:12px}
.tutorial-close{width:38px;height:38px;border-radius:12px;border:1px solid rgba(148,163,184,.18);background:rgba(241,245,249,.9);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;color:#334155}
.tutorial-close:hover{background:#e2e8f0}
.tutorial-prev-btn,.tutorial-next-btn,.tutorial-skip-btn{border-radius:14px}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--secondary);text-align:center}
@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.2)}100%{opacity:1;transform:scale(1)}}
::-webkit-scrollbar{width:6px}
::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:3px}

body { box-sizing: border-box; }

@media (min-width: 960px) {
        .header-desktop {
          display:flex;
          justify-content:space-between;
          align-items:center;
          gap:30px;
          padding:16px 40px;
        }
        .header-desktop-left {
          flex:1;
          display:flex;
          flex-direction:column;
          align-items:flex-start;
          gap:4px;
        }
        .header-desktop-left-greeting {
          font-size:12px;
          font-weight:600;
          letter-spacing:-0.3px;
          margin-bottom:6px;
          opacity:1;
        }
        .header-desktop-left-greeting .greeting-badge {
          display:inline-flex;
          align-items:center;
          gap:8px;
          padding:8px 12px;
          border-radius:999px;
          backdrop-filter:blur(10px);
          border:1px solid rgba(255,255,255,.14);
          box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
        }
        .header-desktop-left-datetime {
          display:flex;
          align-items:center;
          gap:8px;
        }
        .header-desktop-left-date {
          display:flex;
          align-items:center;
          gap:3px;
          font-size:11px;
          font-weight:500;
          letter-spacing:-0.3px;
          opacity:.65;
        }
        .header-desktop-left-time {
          display:flex;
          align-items:center;
          gap:3px;
          font-size:11px;
          font-weight:500;
          letter-spacing:-0.3px;
          opacity:.65;
        }
        .header-desktop-center {
          flex:1;
          display:flex;
          justify-content:center;
          align-items:center;
        }
        .header-desktop-center img {
          height:40px;
          width:auto;
          object-fit:contain;
        }
        .header-desktop-right {
          flex:1;
          display:flex;
          justify-content:flex-end;
          gap:10px;
          align-items:center;
        }
      }
      @media (max-width: 959px) {
        .header-desktop {
          display:none;
        }
      }
      @media (min-width: 960px) {
        .header-mobile {
          display:none;
        }
      }
.greeting-badge{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 14px;
  border-radius:999px;
  font-weight:700;
  letter-spacing:-0.2px;
  border:1px solid rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
}
.greeting-badge i{width:16px;height:16px;stroke-width:2.2}
.greeting-morning{background:linear-gradient(135deg,rgba(56,189,248,.3) 0%,rgba(14,165,233,.24) 100%);color:#eff6ff}
.greeting-afternoon{background:linear-gradient(135deg,rgba(249,115,22,.34) 0%,rgba(236,72,153,.26) 52%,rgba(99,102,241,.22) 100%);color:#fff7ed}
.greeting-night{background:linear-gradient(135deg,rgba(129,140,248,.24) 0%,rgba(99,102,241,.22) 100%);color:#e0e7ff}
#toast-container{position:fixed;top:18px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:10px;z-index:250;pointer-events:none}
.header-shell{background:linear-gradient(180deg,#15213c 0%,#1e2d52 100%);color:#fff;padding:18px 16px 20px;position:relative;overflow:visible;box-shadow:0 16px 30px rgba(15,23,42,.18)}
.header-shell::after{content:"";position:absolute;inset:auto 0 0 0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.22),rgba(255,255,255,0))}
.header-shell.period-morning{background:linear-gradient(180deg,#0ea5e9 0%,#38bdf8 50%,#7dd3fc 100%);box-shadow:0 16px 30px rgba(14,165,233,.24)}
.header-shell.period-afternoon{background:linear-gradient(180deg,#6d28d9 0%,#c026d3 26%,#f97316 72%,#fb7185 100%);box-shadow:0 16px 34px rgba(192,38,211,.22)}
.header-shell.period-night{background:linear-gradient(180deg,#15213c 0%,#1e2d52 100%);box-shadow:0 16px 30px rgba(15,23,42,.18)}
.header-actions button{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12);border-radius:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;transition:all .2s}
.header-actions button:hover{background:rgba(255,255,255,.18);transform:translateY(-1px)}
.search-anchor{position:relative;z-index:95}
.global-search{position:relative;display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.16);border-radius:18px;padding:0 14px;height:54px;box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.global-search i{color:rgba(255,255,255,.92);flex-shrink:0;position:relative;z-index:2}
.global-search input{background:transparent;border:none;padding:0;color:#fff;font-size:15px}
.global-search input::placeholder{color:rgba(255,255,255,.7)}
.global-search input:focus{background:transparent}
.search-overlay{position:fixed;inset:0;background:rgba(15,23,42,.42);backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity .22s ease;z-index:90}
.search-overlay.active{opacity:1;pointer-events:auto}
.search-results{position:absolute;top:calc(100% + 10px);left:0;right:0;background:#13213d;border:1px solid rgba(148,163,184,.18);border-radius:22px;box-shadow:0 22px 48px rgba(15,23,42,.3);overflow:hidden;opacity:0;transform:translateY(-6px);pointer-events:none;transition:all .22s ease;max-height:min(420px,60vh);overflow-y:auto}
.search-results.active{opacity:1;transform:translateY(0);pointer-events:auto}
.search-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.06);transition:background .18s ease}
.search-item:last-child{border-bottom:none}
.search-item:hover{background:rgba(59,130,246,.12)}
.search-meta{display:flex;flex-direction:column;gap:4px}
.search-kicker{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:rgba(148,163,184,.9)}
.search-desc{font-size:14px;color:rgba(226,232,240,.7);font-weight:500}
.search-empty{padding:20px 18px;color:rgba(226,232,240,.72);font-size:14px}
.mobile-search-panel{display:block}
.panel-shell{display:none;position:fixed;top:0;right:0;bottom:0;width:100%;max-width:380px;background:var(--surface);z-index:110;box-shadow:-16px 0 40px rgba(15,23,42,.18);overflow:auto;border-top-left-radius:24px;border-bottom-left-radius:24px;border-left:1px solid rgba(148,163,184,.14)}
.panel-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.32);backdrop-filter:blur(5px);z-index:105}
.panel-head{padding:20px;border-bottom:1px solid rgba(226,232,240,.9);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--surface);z-index:4}
.panel-body{padding:20px}
@media (min-width: 960px) {
  .header-desktop { gap:24px; padding:8px 24px; }
  .header-desktop-left { flex:1.25; }
  .header-desktop-center { flex:1.25; }
  .header-desktop-right { flex:1.2; }
}
@media(max-width:640px){.toast{max-width:calc(100vw - 24px)}#toast-container{top:12px}.header-shell{padding:16px 14px 18px}.global-search{height:50px;border-radius:16px}.mobile-search-panel{display:none}.mobile-search-panel.active{display:block;animation:fadeIn .2s ease}.panel-shell{max-width:100%;border-radius:24px 24px 0 0;top:auto;left:0;right:0;height:min(84vh,760px);bottom:0}.calendar-jump-controls{grid-template-columns:1fr 104px auto;gap:8px}.calendar-picker-trigger{height:44px;padding:0 12px;border-radius:13px;font-size:13px}.calendar-today-btn{height:44px;padding:0 10px}.calendar-month-grid,.calendar-year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-picker-panel{padding:14px}}
@media(max-width:640px){.tutorial-card{left:14px;right:14px;bottom:14px;width:auto;padding:18px;border-radius:22px}.tutorial-title{font-size:18px}.tutorial-actions{flex-direction:column;align-items:stretch}.tutorial-actions>div{display:grid;grid-template-columns:1fr 1fr}.tutorial-skip-btn{width:100%;justify-content:center}}
