
  @import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,400;0,600;0,700;0,800;0,900;1,700&family=Barlow:wght@400;500;600&display=swap');
  @import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable.min.css');
  :root{
    --bg: #0c0a18;
    --bg-card: #15122a;
    --bg-soft: #1b1736;
    --bg-soft2: #251f47;
    --ink: #ece8ff;
    --ink-soft: #a59dcf;
    --ink-faint: #6d6499;
    --line: #2a2350;
    --line-strong: #3d3470;
    --accent: #ff2e88;
    --accent-soft: #2c1230;
    --accent-deep: #ff5fa2;
    --good: #2bf5c8;
    --good-soft: #0c2b2c;
    --warn: #ffc14d;
    --warn-soft: #2e2410;
    --bad: #ff4d6d;
    --bad-soft: #2e1320;
    --kr: #2de2ff;
    --kr-soft: #0c2533;
    --math: #b14dff;
    --math-soft: #1f1338;
    --eng: #2bf5c8;
    --eng-soft: #0c2b2c;
    --flip-bg: #120f24;
    --flip-bg2: #1c1838;
    --flip-num: #2de2ff;
    --flip-num-dim: #3d3470;
    --radius-s: 7px;
    --radius-m: 12px;
    --radius-l: 20px;
    --font: "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;
    --font-num: "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;
    --shadow-card: 0 1px 2px rgba(0,0,0,0.4), 0 8px 30px rgba(120,40,200,0.12);
    --glow-accent: 0 0 16px rgba(var(--accent-rgb),0.4);
    --glow-cyan: 0 0 16px rgba(var(--c-cyan-rgb),0.35);
    --ink-on: rgba(var(--w-rgb),0.9);
    --ink-on-soft: rgba(var(--w-rgb),0.55);
    --ink-on-faint: rgba(var(--w-rgb),0.3);
    --bs-cyan: #2de2ff;
    --bs-mint: #2bf5c8;
    --bs-purple: #b14dff;
    --bs-pink: #ff2e88;
    --bs-red: #ff6b6b;
    --bs-warn: #ffc14d;
    --bs-bubble: rgba(10,10,30,0.95);
    --elev: #13132b;
    --elev-bd: rgba(var(--w-rgb),0.12);
    --accent-rgb: 255,46,136;
    --good-rgb: 43,245,200;
    --w-rgb: 255,255,255;
    --cal-sun: #ff6e6e;
    --cal-sat: #6bb4ff;
    --on-solid: #07071a;
    --cat-pink: #ff2e88;
    --phy: #ff9f43;
    --ea: #ff6b6b;
    --event: #6f7bc4;
    --ames-rgb: 255,46,136;
    --ames: #ff5fa2;
    --c-cyan-rgb: 45,226,255;
    --c-purple-rgb: 177,77,255;
  }
  /* ===== LIGHT THEME (미니멀: 화이트 배경 + 그레이 라인 + 옅은 파스텔) ===== */
  html[data-theme="light"]{
    --bg: #f4f5f7;
    --bg-card: #ffffff;
    --bg-soft: #eceef1;
    --bg-soft2: #e2e5e9;
    --ink: #202124;
    --ink-soft: #5f6368;
    --ink-faint: #9aa0a6;
    --line: #e3e6ea;
    --line-strong: #d2d6db;
    --accent: #1a73e8;
    --accent-soft: #e8f0fe;
    --accent-deep: #1765cc;
    --good: #1e8e5a;
    --good-soft: #e6f4ec;
    --warn: #c77700;
    --warn-soft: #fbf0df;
    --bad: #d93a3f;
    --bad-soft: #fceded;
    --kr: #1a8aa8;
    --kr-soft: #e4f2f6;
    --math: #7248c4;
    --math-soft: #efeafa;
    --eng: #1e8e5a;
    --eng-soft: #e6f4ec;
    --flip-bg: #eceef1;
    --flip-bg2: #e2e5e9;
    --flip-num: #202124;
    --flip-num-dim: #c4c8cd;
    --shadow-card: 0 1px 2px rgba(60,64,67,0.08), 0 1px 3px 1px rgba(60,64,67,0.05);
    --glow-accent: none;
    --glow-cyan: none;
    --ink-on: var(--ink);
    --ink-on-soft: var(--ink-soft);
    --ink-on-faint: var(--ink-faint);
    --bs-cyan: var(--accent);
    --bs-mint: var(--good);
    --bs-purple: var(--math);
    --bs-pink: var(--accent);
    --bs-red: var(--bad);
    --bs-warn: var(--warn);
    --bs-bubble: var(--bg-soft);
    --elev: var(--bg-card);
    --elev-bd: var(--line);
    --accent-rgb: 26,115,232;
    --good-rgb: 30,142,90;
    --w-rgb: 32,33,36;
    --cal-sun: #d93a3f;
    --cal-sat: #1a73e8;
    --on-solid: #ffffff;
    --cat-pink: #d6407f;
    --phy: #d97b16;
    --ea: #d93a3f;
    --event: #55618f;
    --ames-rgb: 214,64,127;
    --ames: #d6407f;
    --c-cyan-rgb: 128,134,139;
    --c-purple-rgb: 128,134,139;
  }
  *{box-sizing:border-box;}
  body{
    margin:0; background:var(--bg); color:var(--ink); font-family:var(--font);
    -webkit-font-smoothing:antialiased; letter-spacing:-0.01em; overflow-x:hidden;
    font-variant-numeric:tabular-nums;
    position:relative;
  }
  .app{padding:0; position:relative; z-index:1;}

  /* ===== 셸 레이아웃: 좌측 사이드바 + 상단바 + 메인 ===== */
  .shell{display:flex; min-height:100vh; align-items:stretch;}
  .side{
    width:184px; flex:0 0 184px; position:sticky; top:0; height:100vh;
    display:flex; flex-direction:column; padding:16px 10px 14px;
    background:var(--bg-card); border-right:1px solid var(--line);
    box-sizing:border-box; overflow-y:auto;
    transition:width .16s ease, flex-basis .16s ease, padding .16s ease, opacity .12s ease;
  }
  .shell.sidebar-collapsed .side{
    width:0; flex:0 0 0; padding-left:0; padding-right:0; opacity:0;
    border-right:none; overflow:hidden; pointer-events:none;
  }
  .topbar-ham{
    width:34px; height:34px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center;
    color:var(--ink-soft); flex-shrink:0; transition:background .12s, color .12s; cursor:pointer;
  }
  .topbar-ham:hover{background:var(--bg-soft); color:var(--ink);}
  .topbar-ham .ic{width:18px; height:18px;}
  .side-logo{display:flex; align-items:center; gap:9px; padding:2px 8px 16px;}
  .side-logo-mark{
    width:28px; height:28px; border-radius:9px; flex-shrink:0;
    background:var(--accent); color:#fff;
    display:inline-flex; align-items:center; justify-content:center;
  }
  .side-logo-mark svg{width:16px; height:16px;}
  .side-logo-txt{font-size:14.5px; font-weight:800; letter-spacing:0.14em; color:var(--ink);}
  .side-nav{display:flex; flex-direction:column; gap:2px;}
  .side-sep{height:1px; background:var(--line); margin:8px 6px;}
  .side-item{
    display:flex; align-items:center; gap:9px; padding:8px 10px; border-radius:9px;
    font-size:14.5px; color:var(--ink-soft); cursor:pointer; user-select:none;
    font-weight:500; transition:background .12s,color .12s; white-space:nowrap;
  }
  .side-item:hover{background:var(--bg-soft); color:var(--ink);}
  .side-item.active{background:var(--accent-soft); color:var(--accent); font-weight:700;}
  .side-ico{font-size:15px; width:18px; text-align:center; flex-shrink:0;}
  .side-bottom{margin-top:auto; display:flex; flex-direction:column; gap:8px; padding-top:12px;}
  .side-ames{
    display:flex; align-items:center; gap:9px; padding:8px 9px; border-radius:11px; cursor:pointer;
    background:rgba(var(--ames-rgb),0.08); border:1px solid rgba(var(--ames-rgb),0.35);
    transition:background .15s;
  }
  .side-ames:hover{background:rgba(var(--ames-rgb),0.15);}
  .side-ames img{width:26px; height:26px; border-radius:50%; object-fit:cover; flex-shrink:0;}
  .side-ames-txt{display:flex; flex-direction:column; line-height:1.25; min-width:0;}
  .side-ames-name{font-size:13.5px; font-weight:700; color:var(--ames);}
  .side-ames-sub{font-size:11.5px; color:var(--ink-faint);}
  .side-foot{display:flex; align-items:center; justify-content:space-between; padding:0 4px;}
  .side-ames-plain{display:flex; align-items:center; justify-content:center; gap:7px; width:34px; height:34px; border-radius:10px; cursor:pointer; background:var(--bg-soft); border:1px solid var(--line); color:var(--ink-soft); transition:background .15s, border-color .15s, color .15s;}
  .side-ames-plain:hover{background:var(--bg-soft2); border-color:var(--line-strong); color:var(--ink);}

  .main{flex:1; min-width:0; display:flex; flex-direction:column;}
  .topbar{
    position:sticky; top:0; z-index:60; display:flex; align-items:center; justify-content:space-between;
    gap:12px; padding:10px 20px; background:var(--bg); border-bottom:1px solid var(--line);
  }
  .topbar-left{display:flex; align-items:center; gap:4px; min-width:0;}
  .topbar-title{font-size:16.5px; font-weight:800; color:var(--ink);}
  .topbar-sub{font-size:13.5px; color:var(--ink-faint); margin-left:10px; font-family:var(--font-num); white-space:nowrap;}
  .topbar-right{display:flex; align-items:center; gap:8px;}
  .topbar-ames{
    width:34px; height:34px; border-radius:10px; border:1px solid rgba(var(--ames-rgb),0.4);
    background:rgba(var(--ames-rgb),0.1); color:var(--ames); font-size:16px; cursor:pointer;
    display:inline-flex; align-items:center; justify-content:center; transition:background .15s;
  }
  .topbar-ames:hover{background:rgba(var(--ames-rgb),0.18);}
  .main-content{max-width:1020px; width:100%; margin:0 auto; padding:20px 20px 90px; box-sizing:border-box;}
  .main-content.wide{max-width:1520px;}

  /* ---- 모바일 하단 탭바 + 전체메뉴 드로어 (기본: 데스크톱에서 숨김) ---- */
  .mobile-tabbar{display:none;}
  .mobile-drawer-backdrop{display:none;}
  .mobile-drawer{display:none;}

  @media (max-width:640px){
    .shell{flex-direction:column;}
    .side{display:none;}
    .main-content{padding-bottom:78px;} /* 하단 탭바에 안 가리게 */

    .mobile-tabbar{
      display:flex; position:fixed; left:0; right:0; bottom:0; z-index:70;
      background:var(--bg-card); border-top:1px solid var(--line);
      padding:6px 4px calc(6px + env(safe-area-inset-bottom));
      box-shadow:0 -2px 10px rgba(0,0,0,0.06);
    }
    .mobile-tab-item{
      flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
      gap:2px; padding:6px 2px; border-radius:10px; min-height:48px; box-sizing:border-box;
      color:var(--ink-faint); font-weight:600;
    }
    .mobile-tab-item .side-ico{width:auto; font-size:19px;}
    .mobile-tab-item .side-ico svg{width:21px; height:21px;}
    .mobile-tab-label{font-size:10.5px; font-weight:700;}
    .mobile-tab-item.active{color:var(--accent); background:none;}

    .mobile-drawer-backdrop{
      display:block; position:fixed; inset:0; z-index:80; background:rgba(0,0,0,0);
      pointer-events:none; transition:background .18s ease;
    }
    .mobile-drawer-backdrop.open{background:rgba(0,0,0,0.35); pointer-events:auto;}
    .mobile-drawer{
      display:flex; flex-direction:column; position:fixed; left:0; right:0; bottom:0; z-index:81;
      max-height:78vh; background:var(--bg-card); border-radius:18px 18px 0 0;
      padding:14px 14px calc(14px + env(safe-area-inset-bottom));
      box-sizing:border-box; overflow-y:auto;
      transform:translateY(100%); transition:transform .22s ease;
    }
    .mobile-drawer.open{transform:translateY(0);}
    .mobile-drawer-head{display:flex; align-items:center; justify-content:space-between; padding:2px 4px 12px;}
    .mobile-drawer .side-nav{flex-direction:column;}
    .mobile-drawer .side-item{padding:11px 10px; font-size:15px;}
    .mobile-drawer .side-label{display:inline;}
    .mobile-drawer .side-ico{width:20px;}
    .mini-timer{bottom:calc(78px + 10px);}

    /* 공용 터치 타겟 확대 — 교재/모의고사/과목분석/코드노트/메모 등에서 두루 쓰이는 ibtn/btn 대상. 플래너 전용 요소(.tl-*, .yp-*, .planner-hero 등)는 리디자인 예정이라 손대지 않음 */
    .ibtn{width:38px; height:38px;}
    .h2-datenav .ibtn{width:32px; height:32px;}
    .btn{padding:10px 16px;}
    .aml-about-edit{width:24px; height:24px;}
  }

  /* 테마 토글 버튼 */
  .theme-toggle{
    flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center;
    width:34px; height:34px; border-radius:10px; cursor:pointer;
    background:var(--bg-soft); border:1px solid var(--line);
    color:var(--ink-soft); font-size:17px; line-height:1;
    transition:background .15s, border-color .15s, color .15s;
  }
  .theme-toggle:hover{ border-color:var(--line-strong); color:var(--ink); }

  /* ===== LIGHT: 일반 화면 네온 글로우/텍스트섀도 제거 (이미지1 톤 통일) ===== */
  html[data-theme="light"] .dday-exam-tag,
  html[data-theme="light"] .planner-navbtn:hover,
  html[data-theme="light"] .mascot-refresh:hover,
  html[data-theme="light"] .tb-p-check:checked,
  html[data-theme="light"] .tb-plan-dot.partial,
  html[data-theme="light"] .tb-plan-tmrbtn.on,
  html[data-theme="light"] .amr-send,
  html[data-theme="light"] .amr-send:hover,
  html[data-theme="light"] .focus-stop,
  html[data-theme="light"] .pbar-accent{background:linear-gradient(90deg,var(--accent),var(--accent-deep));box-shadow:none;}
  html[data-theme="light"] .pbar-time{background:linear-gradient(90deg,var(--kr),var(--accent));box-shadow:none;}
  html[data-theme="light"] .pbar-done{background:linear-gradient(90deg,var(--good),var(--kr));box-shadow:none;}
  html[data-theme="light"] .amr-send:hover{ background:var(--accent-deep); }
  html[data-theme="light"] .dday-card{ box-shadow:var(--shadow-card); }
  /* LIGHT: 히어로 카드 색 워시/색 테두리 제거 -> 깔끔한 흰 카드 (회색 배경 위 레이어) */
  html[data-theme="light"] .dday-card{
    background:var(--bg-card);
    border:1px solid var(--line);
    box-shadow:var(--shadow-card);
  }
  html[data-theme="light"] .planner-hero{
    background:var(--bg-card);
    border:1px solid var(--line);
  }
  /* LIGHT: 시간예산 바 파스텔톤 (다크테마보다 채도 확 낮춤) */
  html[data-theme="light"] .ph2-budget-track{background:#f4f5f7;}
  html[data-theme="light"] .ph2-budget-plan{background:repeating-linear-gradient(-45deg, rgba(var(--accent-rgb),0.07) 0 6px, rgba(var(--accent-rgb),0.03) 6px 12px);}
  html[data-theme="light"] .ph2-budget-actual{background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 40%, white), color-mix(in srgb, var(--accent) 62%, white));}
  html[data-theme="light"] .ph2-budget-actual span{color:var(--accent-deep);}
  /* LIGHT: 컴팩트 D-day 카드 */
  html[data-theme="light"] .dday-card{ padding:18px 22px; }
  .dday-compact{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
  .dday-compact-right{ display:flex; align-items:baseline; gap:10px; }
  .dday-compact-num{ font-size:34px; font-weight:800; color:var(--ink); font-family:var(--font-num); letter-spacing:-0.02em; }
  .dday-compact-time{ font-size:15px; color:var(--ink-faint); font-family:var(--font-num); }
  /* 통합 캘린더 (구글식) */
  .ucal-wrap{ background:var(--bg-card); border:1px solid var(--line); border-radius:14px; overflow:hidden; box-shadow:var(--shadow-card); }
  .dc-cell:hover{ background:var(--bg-soft) !important; }
  .dc-cell.today{ box-shadow:inset 0 2px 0 var(--accent); }
  /* LIGHT: 시안 데코 워시가 남는 카드류 정리 (흰 카드로) */
  html[data-theme="light"] .card,
  html[data-theme="light"] .mascot-panel,
  html[data-theme="light"] .metric{
    background:var(--bg-card);
  }
  /* 탭 활성: 글로우 제거, 밑줄만 */
  /* 텍스트 글로우류 제거 */
  html[data-theme="light"] .flip-digit .face{ text-shadow:none; }
  /* 에이메스 아바타 핑크 글로우 → 옅은 테두리 */
  html[data-theme="light"] .mascot-avatar{ box-shadow:0 0 0 1px var(--line-strong); }
  html[data-theme="light"] .mascot-avatar:hover{ filter:none; }
  /* 모달 셸 */
  html[data-theme="light"] .modal{
    box-shadow:0 20px 60px rgba(20,20,40,0.14);
  }

  /* ===== 홈 대시보드 2칼럼 레이아웃 ===== */
  .home-grid{display:grid; grid-template-columns:1fr; gap:16px;}
  @media (min-width:900px){
    .home-grid{grid-template-columns:1fr 340px; align-items:start;}}
  @media (min-width:1100px){
    .home-grid{grid-template-columns:1fr 380px;}}
  .home-main{display:flex; flex-direction:column; gap:14px;}
  .home-side{display:flex; flex-direction:column; gap:14px;}
  .home-planner-card{}
  .home-planner-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:14px; flex-wrap:wrap;}
  .home-day-pct{font-size:14.5px; font-weight:700; color:var(--accent); font-family:var(--font-num);}
  .home-day-pct.done{color:var(--good);}

  /* ===== 홈 탭 v2: 메트릭 아이콘 + 위젯 그리드 + 오늘 계획 만듦새 강화 ===== */
  .h2-metric-row{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px;}
  .h2-metric{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-m); box-shadow:var(--shadow-card); padding:17px 18px; cursor:pointer; transition:border-color .12s, transform .12s;}
  .h2-metric:hover{border-color:var(--line-strong); transform:translateY(-1px);}
  .h2-metric .head{display:flex; align-items:center; gap:7px; margin-bottom:11px;}
  .h2-metric .head .ic{width:14px; height:14px; color:var(--ink-faint); stroke-width:1.8;}
  .h2-metric .lbl{font-size:12.5px; color:var(--ink-faint); font-weight:700;}
  .h2-metric .val{font-size:26px; font-weight:800; letter-spacing:-0.02em; font-variant-numeric:tabular-nums; color:var(--ink);}
  .h2-metric .val small{font-size:14px; font-weight:700; color:var(--ink-faint); margin-left:2px;}
  .h2-metric .val.accent{color:var(--accent);}
  .h2-metric .val.warn{color:var(--warn);}

  .h2-widgets{display:grid; grid-template-columns:1.15fr 1fr 1fr; gap:14px; align-items:start;}
  .h2-wcol{display:flex; flex-direction:column; gap:14px; min-width:0;}
  .h2-widget{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-m); box-shadow:var(--shadow-card); overflow:hidden;}
  .h2-widget-head{display:flex; align-items:center; gap:9px; padding:18px 20px 6px;}
  .h2-widget-head h3{font-size:15.5px; font-weight:800; letter-spacing:-0.015em; color:var(--ink);}
  .h2-widget-head .cnt{font-size:12.5px; font-weight:800; color:var(--ink); background:var(--bg-soft); padding:3px 10px; border-radius:20px; font-variant-numeric:tabular-nums;}
  .h2-widget-head .more{margin-left:auto; display:flex; align-items:center; gap:1px; font-size:12.5px; color:var(--ink-faint); font-weight:700; cursor:pointer;}
  .h2-widget-head .more:hover{color:var(--ink);}
  .h2-widget-head .more .ic{width:13px; height:13px; stroke-width:2.2;}
  .h2-widget-body{padding:10px 20px 20px;}

  .h2-due-row{display:flex; align-items:center; gap:12px; padding:11px 4px; border-bottom:1px solid var(--line); cursor:pointer; border-radius:10px; transition:background .12s; margin:0 -4px;}
  .h2-due-row:hover{background:var(--bg-soft);}
  .h2-due-row:last-child{border-bottom:none;}
  .h2-due-badge{width:34px; height:34px; border-radius:10px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; background:var(--scs); color:var(--sc);}
  .h2-due-info{flex:1; min-width:0;}
  .h2-due-title{font-size:13.5px; font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .h2-due-sub{font-size:11.5px; color:var(--ink-faint); margin-top:2px; font-weight:500;}
  .h2-due-dday{font-size:12.5px; font-weight:800; flex-shrink:0; font-variant-numeric:tabular-nums;}
  .h2-due-dday.bad{color:var(--bad);} .h2-due-dday.warn{color:var(--warn);} .h2-due-dday.ok{color:var(--ink-faint);}

  .h2-week-chart{display:flex; align-items:flex-end; gap:7px; height:104px; padding:6px 0 0;}
  .h2-week-col{flex:1; display:flex; flex-direction:column; align-items:center; gap:8px;}
  .h2-week-track{width:100%; height:76px; display:flex; align-items:flex-end; position:relative;}
  .h2-week-hrs{position:absolute; top:-19px; left:0; right:0; text-align:center; font-size:10.5px; font-weight:700; color:var(--ink-faint); opacity:0; transition:opacity .12s;}
  .h2-week-col:hover .h2-week-hrs{opacity:1;}
  .h2-week-bar{width:100%; border-radius:6px 6px 3px 3px; background:var(--line-strong); transition:background .15s; min-height:3px;}
  .h2-week-bar.today{background:var(--accent);}
  .h2-week-col:hover .h2-week-bar{background:var(--accent-deep);}
  .h2-week-dow{font-size:11.5px; color:var(--ink-faint); font-weight:700;}
  .h2-week-dow.today{color:var(--accent); font-weight:800;}
  .h2-week-total{display:flex; justify-content:space-between; align-items:baseline; margin-top:16px; padding-top:16px; border-top:1px solid var(--line);}
  .h2-week-total .lbl{font-size:12.5px; color:var(--ink-faint); font-weight:700;}
  .h2-week-total .val{font-size:17px; font-weight:800; letter-spacing:-0.01em; color:var(--ink); font-variant-numeric:tabular-nums;}
  .h2-week-total .val small{font-size:12px; color:var(--good); font-weight:800; margin-left:5px;}

  .h2-event-row, .h2-exam-row{display:flex; align-items:center; gap:12px; padding:10px 4px; border-radius:10px; transition:background .12s; margin:0 -4px;}
  .h2-event-row:hover, .h2-exam-row:hover{background:var(--bg-soft);}
  .h2-event-date{width:40px; height:40px; border-radius:10px; background:var(--bg-soft); flex-shrink:0; display:flex; flex-direction:column; align-items:center; justify-content:center;}
  .h2-event-date .m{font-size:8.5px; font-weight:800; color:var(--ink-faint); letter-spacing:.02em;}
  .h2-event-date .d{font-size:15px; font-weight:800; line-height:1.1; color:var(--ink);}
  .h2-event-info{flex:1; min-width:0;}
  .h2-event-title{font-size:13px; font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .h2-event-sub{font-size:11px; color:var(--ink-faint); margin-top:1px; font-weight:500;}
  .h2-event-dday{font-size:11.5px; color:var(--ink-faint); font-weight:700; flex-shrink:0;}

  .h2-ames-row{display:flex; gap:13px; align-items:flex-start;}
  .h2-ames-face{width:38px; height:38px; border-radius:50%; background:rgba(var(--ames-rgb),0.1); border:1px solid rgba(var(--ames-rgb),0.3); flex-shrink:0; display:flex; align-items:center; justify-content:center; overflow:hidden;}
  .h2-ames-face .ic{width:18px; height:18px; color:var(--ames); stroke-width:1.8;}
  .h2-ames-face img{width:100%; height:100%; object-fit:cover; object-position:top center;}
  .h2-ames-msg{flex:1; font-size:13.5px; color:var(--ink-soft); line-height:1.65; padding-top:4px; font-weight:500;}
  .h2-ames-msg b{color:var(--ames); font-weight:800;}
  .h2-ames-more{margin-top:12px; display:inline-flex; align-items:center; gap:3px; font-size:12.5px; font-weight:700; color:var(--ames);}
  .h2-ames-more .ic{width:12px; height:12px; stroke-width:2.4;}
  .h2-ames-hero{position:relative; display:flex; align-items:center; gap:16px; background:linear-gradient(135deg, rgba(var(--ames-rgb),0.12), rgba(var(--ames-rgb),0.03)); border:1px solid rgba(var(--ames-rgb),0.25); border-radius:var(--radius-l); padding:16px 18px; margin-bottom:14px;}
  .h2-ames-hero-face{position:relative; flex-shrink:0; width:104px; height:104px; border-radius:26px; overflow:hidden; background:rgba(var(--ames-rgb),0.12); border:1px solid rgba(var(--ames-rgb),0.3); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:transform .15s ease; -webkit-tap-highlight-color:transparent;}
  .h2-ames-hero-face:active{transform:scale(0.94);}
  .h2-ames-hero-face img{width:100%; height:100%; object-fit:cover; object-position:top center;}
  .h2-ames-hero-face .ic{width:46px; height:46px; color:var(--ames);}
  .h2-ames-hero-body{flex:1; min-width:0;}
  .h2-ames-hero-name{font-size:15px; font-weight:800; color:var(--ames); margin-bottom:4px;}
  .h2-ames-hero-msg{font-size:13.5px; color:var(--ink-soft); line-height:1.6;}
  .h2-ames-hero-msg b{color:var(--ames); font-weight:800;}
  .h2-ames-hero-more{margin-top:10px; display:inline-flex; align-items:center; gap:3px; font-size:12.5px; font-weight:700; color:var(--ames);}
  .h2-ames-hero-more .ic{width:12px; height:12px; stroke-width:2.4;}
  .h2-ames-hero-face.tapping{animation:amesHeroTap .45s ease;}
  @keyframes amesHeroTap{0%{transform:scale(1);} 30%{transform:scale(0.92);} 60%{transform:scale(1.05);} 100%{transform:scale(1);}}
  .h2-ames-hero-bubble{position:absolute; left:16px; top:0; transform:translateY(-100%) translateY(-10px); max-width:260px; min-width:130px; background:linear-gradient(160deg, rgba(34,22,54,0.97), rgba(22,15,40,0.97)); border:1px solid rgba(255,150,200,0.35); border-radius:14px; padding:10px 13px; font-size:12.5px; line-height:1.5; color:#ece8ff; box-shadow:0 6px 28px rgba(255,100,180,0.2); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); z-index:5; pointer-events:none; opacity:0; transition:opacity .25s ease;}
  .h2-ames-hero-bubble.show{opacity:1;}
  @keyframes amesHeroBubblePop{0%{opacity:0; transform:translateY(-100%) translateY(2px) scale(0.9);} 100%{opacity:1; transform:translateY(-100%) translateY(-10px) scale(1);}}
  html[data-theme="light"] .h2-ames-hero-bubble{background:var(--bg-card); border:1px solid rgba(var(--ames-rgb),0.4); color:var(--ink); box-shadow:0 6px 20px rgba(0,0,0,0.08);}

  /* 오늘 계획 위젯 v3: 날짜 네비 + 도넛 링 + 시간순 타임라인 */
  .h2-datenav{display:flex; align-items:center; gap:4px;}
  .h2-datenav .ibtn{width:26px; height:26px;}
  .h2-datenav .ibtn .ic{width:13px; height:13px;}
  .h2-datenav-label{font-size:13.5px; font-weight:800; color:var(--ink); padding:0 2px; min-width:92px; text-align:center; cursor:pointer;}
  .h2-datenav-label:hover{color:var(--accent);}
  .h2-datenav-today{font-size:11.5px; font-weight:700; color:var(--ink-faint); padding:3px 9px; border-radius:7px; border:1px solid var(--line-strong); margin-left:2px;}
  .h2-datenav-today:hover{color:var(--ink); border-color:var(--ink-faint);}

  .h2-plan-summary{display:flex; align-items:center; gap:18px; margin:16px 0 20px; padding-bottom:18px; border-bottom:1px solid var(--line);}
  .h2-donut{position:relative; width:64px; height:64px; flex-shrink:0;}
  .h2-donut svg{transform:rotate(-90deg);}
  .h2-donut-pct{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:15px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums;}
  .h2-plan-stats{display:flex; flex-direction:column; gap:5px; min-width:0;}
  .h2-plan-stats .big{font-size:14.5px; font-weight:700; color:var(--ink);}
  .h2-plan-stats .big b{color:var(--accent); font-weight:800;}
  .h2-plan-stats .sub{font-size:12px; color:var(--ink-faint); font-weight:500;}

  .h2-tl-row{position:relative; display:flex; gap:12px;}
  .h2-tl-time{width:42px; flex-shrink:0; text-align:right; font-size:11px; font-weight:700; color:var(--ink-faint); padding-top:11px; font-variant-numeric:tabular-nums;}
  .h2-tl-rail{width:14px; flex-shrink:0; position:relative; display:flex; justify-content:center;}
  .h2-tl-line{position:absolute; top:14px; bottom:-2px; width:2px; background:var(--line); left:50%; transform:translateX(-50%);}
  .h2-tl-row:last-child .h2-tl-line{display:none;}
  .h2-tl-dot{width:10px; height:10px; border-radius:50%; margin-top:12px; flex-shrink:0; z-index:1; background:var(--sc); box-shadow:0 0 0 3px var(--bg-card);}
  .h2-tl-dot.pending{background:var(--bg-card); border:2px solid var(--line-strong);}
  .h2-tl-dot.running{box-shadow:0 0 0 3px var(--bg-card), 0 0 0 6px var(--scs);}
  .h2-tl-content{flex:1; min-width:0; display:flex; align-items:center; gap:9px; padding:9px 10px; border-radius:11px; transition:background .12s;}
  .h2-tl-content:hover{background:var(--bg-soft);}
  .h2-tl-subj-tag{font-size:10.5px; font-weight:800; padding:3px 8px; border-radius:7px; background:var(--scs); color:var(--sc); flex-shrink:0;}
  .h2-tl-title{flex:1; font-size:14px; font-weight:600; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .h2-tl-row.done .h2-tl-title{color:var(--ink-faint); text-decoration:line-through; font-weight:500;}
  .h2-tl-dur{font-size:11px; color:var(--ink-faint); flex-shrink:0; font-variant-numeric:tabular-nums; font-weight:600;}

  @media (max-width:900px){
    .h2-widgets{grid-template-columns:1fr;}
    .h2-metric-row{grid-template-columns:repeat(2,1fr);}
  }
  .home-task-subj{margin:10px 0 5px; padding:4px 0; border-bottom:1px solid var(--line);}

  /* ===== D-day flip clock ===== */
  .dday-card{
    position:relative;
    background:
      linear-gradient(135deg, rgba(var(--accent-rgb),0.06), transparent 40%),
      linear-gradient(225deg, rgba(var(--c-cyan-rgb),0.06), transparent 40%),
      var(--bg-card);
    border:1px solid var(--accent);
    border-radius:var(--radius-l);
    padding:30px 32px 28px; margin-bottom:18px;
    box-shadow:
      0 0 0 1px rgba(var(--accent-rgb),0.25),
      0 0 24px rgba(var(--accent-rgb),0.18),
      inset 0 0 30px rgba(var(--c-purple-rgb),0.06),
      var(--shadow-card);
    clip-path:polygon(0 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 18px 100%, 0 calc(100% - 18px));
    overflow:hidden;
  }
  /* 상단 네온 스캔 라인 */
  .dday-card::before{
    content:''; position:absolute; top:0; left:0; right:0; height:2px;
    background:linear-gradient(90deg, transparent, var(--accent), var(--kr), transparent);
    box-shadow:0 0 12px var(--accent);
    animation:ddayScan 5s linear infinite;
  }
  @keyframes ddayScan{ 0%{opacity:0.5;} 50%{opacity:1;} 100%{opacity:0.5;} }
  @media (prefers-reduced-motion: reduce){ .dday-card::before{animation:none;}}
  .dday-top{display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap; margin-bottom:22px; position:relative; z-index:1;}
  .dday-title{font-size:17.5px; font-weight:700; margin:0 0 4px; letter-spacing:0.01em; color:var(--ink);}
  .dday-date{font-size:14px; color:var(--ink-faint); margin:0; font-family:var(--font-num);}
  .dday-exam-tag{
    font-size:12.5px; font-weight:600; color:var(--accent); background:var(--accent-soft);
    padding:4px 10px; border-radius:99px; white-space:nowrap;
    border:1px solid var(--accent); box-shadow:0 0 10px rgba(var(--accent-rgb),0.3);
  }

  .flip-row{display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; position:relative; z-index:1;}
  .flip-group{display:flex; flex-direction:column; align-items:center; gap:8px;}
  .flip-group.days .flip-unit{min-width:34px;}
  .flip-unit-stack{display:flex; gap:3px;}
  .flip-digit{
    position:relative; width:38px; height:54px; border-radius:6px;
    background:var(--flip-bg); overflow:hidden;
    box-shadow:inset 0 0 0 1px rgba(var(--c-cyan-rgb),0.18), 0 0 12px rgba(var(--c-cyan-rgb),0.15);
  }
  .flip-digit::after{
    content:''; position:absolute; left:0; right:0; top:50%; height:1px;
    background:rgba(0,0,0,0.5); z-index:3;
  }
  .flip-digit .face{
    position:absolute; left:0; right:0; height:50%; overflow:hidden;
    font-family:var(--font-num); font-weight:700; font-size:32px; color:var(--flip-num);
    background:var(--flip-bg2); text-shadow:0 0 8px rgba(var(--c-cyan-rgb),0.6);
  }
  .flip-digit .face span{
    position:absolute; left:0; right:0; text-align:center; height:54px; line-height:54px;
  }
  .flip-digit .face.top{top:0; border-radius:6px 6px 0 0;}
  .flip-digit .face.top span{top:0;}
  .flip-digit .face.bottom{top:50%; border-radius:0 0 6px 6px;}
  .flip-digit .face.bottom span{bottom:0;}
  .flip-group.animate .flip-digit .face span{animation:flipIn 0.4s ease-out;}
  @keyframes flipIn{ from{opacity:0.35;} to{opacity:1;} }
  .flip-label{font-size:12.5px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.04em;}
  .flip-colon{font-size:22px; color:var(--ink-faint); padding-bottom:22px; font-family:var(--font-num);}

  @media (max-width:640px){
    .main-content{padding:16px 14px 70px;}
    .dday-card{padding:20px 18px 18px; border-radius:16px;}
    .dday-top{margin-bottom:18px; gap:10px;}
    .dday-title{font-size:16px;}
    .dday-date{font-size:13px;}
    .dday-exam-tag{font-size:11.5px; padding:3px 8px;}
    .flip-row{gap:6px; justify-content:center;}
    .flip-digit{width:32px; height:46px;}
    .flip-digit .face{font-size:26px;}
    .flip-digit .face span{height:46px; line-height:46px;}
    .flip-colon{font-size:17px; padding-bottom:18px;}
    .flip-label{font-size:11.5px;}
    .card{padding:16px 16px; border-radius:16px;}
    .section-title{font-size:15px;}
    .metric .value{font-size:19.5px;}
    .grid2{grid-template-columns:1fr;}
    .grid3{grid-template-columns:1fr 1fr;}
    table{font-size:13.5px;}
    th, td{padding:8px 5px;}
    .table-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch;}
    .table-wrap table{min-width:440px;}
    .modal{padding:18px; border-radius:16px;}
    .row > .card{min-width:100% !important; flex:1 1 100% !important;}}
  @media (max-width:380px){
    .flip-digit{width:27px; height:40px;}
    .flip-digit .face{font-size:22px;}
    .flip-digit .face span{height:40px; line-height:40px;}
    .flip-row{gap:4px;}
    .flip-colon{font-size:15px; padding-bottom:16px;}}

  /* ===== Tabs ===== */
  /* ===== Generic ===== */
  .row{display:flex; gap:14px; flex-wrap:wrap;}
  .card{
    background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l);
    padding:20px 22px; box-shadow:var(--shadow-card);
  }
  .section-title{font-size:16px; font-weight:700; margin:0 0 14px; letter-spacing:0.01em; display:flex; align-items:center; gap:8px;}
  .section-title::before{content:''; width:3px; height:14px; background:var(--accent); border-radius:2px; box-shadow:0 0 8px var(--accent);}
  .muted{color:var(--ink-soft); font-size:14.5px;}
  .btn{
    background:var(--bg-card); border:1px solid var(--line-strong); border-radius:var(--radius-s);
    padding:8px 15px; font-size:14.5px; color:var(--ink); cursor:pointer; font-weight:500;
    transition:border-color 0.15s, background 0.15s; white-space:nowrap;
  }
  .btn:hover{border-color:var(--accent); background:var(--accent-soft);}
  .btn.primary{background:var(--accent); color:#fff; border-color:var(--accent); font-weight:600; box-shadow:var(--glow-accent);}
  .btn.primary:hover{opacity:0.92; background:var(--accent);}
  .btn-row{display:flex; gap:8px; flex-wrap:wrap;}

  input, select, textarea{
    font-family:var(--font); font-size:15px; color:var(--ink); background:var(--bg-card);
    border:1px solid var(--line-strong); border-radius:var(--radius-s); padding:9px 11px;
    width:100%;
  }
  input:focus, select:focus, textarea:focus{outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft);}
  label{font-size:13.5px; color:var(--ink-soft); display:block; margin-bottom:5px; font-weight:500;}
  .field{margin-bottom:12px;}
  .grid2{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
  .grid3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px;}

  table{width:100%; border-collapse:collapse; font-size:14.5px;}
  th, td{padding:10px 8px; text-align:left; border-bottom:1px solid var(--line);}
  th{color:var(--ink-faint); font-weight:600; font-size:13px; text-transform:uppercase; letter-spacing:0.02em;}
  tr:last-child td{border-bottom:none;}
  tr:hover td{background:var(--bg-soft);}

  .badge{display:inline-block; padding:3px 10px; border-radius:99px; font-size:12.5px; font-weight:600;}
  .badge.kr{background:var(--kr-soft); color:var(--kr);}
  .badge.math{background:var(--math-soft); color:var(--math);}
  .badge.eng{background:var(--eng-soft); color:var(--eng);}
  .badge.expl{background:rgba(255,159,67,0.15); color:#ff9f43;}
  .badge.expl2{background:rgba(255,107,107,0.15); color:var(--bs-red);}
  .badge.all{background:var(--bg-soft2); color:var(--ink-soft);}
  .badge.good{background:var(--good-soft); color:var(--good);}
  .badge.warn{background:var(--warn-soft); color:var(--warn);}
  .badge.bad{background:var(--bad-soft); color:var(--bad);}

  .empty{
    text-align:center; padding:46px 20px; color:var(--ink-faint); font-size:14.5px;
  }
  .metric-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(140px,1fr)); gap:12px; margin-bottom:16px;}
  .metric{background:var(--bg-soft); border-radius:var(--radius-m); padding:14px 16px;}
  .metric .label{font-size:13px; color:var(--ink-soft); margin-bottom:5px; font-weight:500;}
  .metric .value{font-size:21px; font-weight:700; letter-spacing:-0.01em;}

  .boot-screen{
    min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px;
  }
  .boot-mark{
    width:42px; height:42px; border-radius:12px; display:flex; align-items:center; justify-content:center;
    background:var(--accent-soft); color:var(--accent);
    animation:boot-mark-in .5s cubic-bezier(.2,.9,.25,1) both;
  }
  .boot-mark svg{width:20px; height:20px;}
  .boot-name{
    font-size:15px; font-weight:800; letter-spacing:0.24em; color:var(--ink); padding-left:0.24em;
    animation:boot-fade-in .5s ease .08s both;
  }
  .boot-dots{display:flex; gap:5px; margin-top:2px; animation:boot-fade-in .5s ease .16s both;}
  .boot-dots span{
    width:5px; height:5px; border-radius:50%; background:var(--ink-faint);
    animation:boot-pulse 1.1s ease-in-out infinite;
  }
  .boot-dots span:nth-child(2){animation-delay:.15s;}
  .boot-dots span:nth-child(3){animation-delay:.3s;}
  @keyframes boot-pulse{
    0%,80%,100%{opacity:0.25; transform:scale(0.75);}
    40%{opacity:1; transform:scale(1);}
  }
  @keyframes boot-mark-in{
    from{opacity:0; transform:scale(0.85);}
    to{opacity:1; transform:scale(1);}
  }
  @keyframes boot-fade-in{
    from{opacity:0; transform:translateY(3px);}
    to{opacity:1; transform:translateY(0);}
  }
  ::-webkit-scrollbar{height:6px; width:6px;}
  ::-webkit-scrollbar-thumb{background:var(--line-strong); border-radius:3px;}

  .modal-bg{
    position:fixed; inset:0; background:rgba(20,17,12,0.45); display:none;
    align-items:center; justify-content:center; z-index:10000; padding:20px;
    backdrop-filter:blur(2px);
  }
  .modal-bg.open{display:flex;}
  .modal{
    background:var(--bg-card); border-radius:var(--radius-l); padding:22px;
    width:100%; max-width:420px; max-height:85vh; overflow-y:auto; position:relative;
    border:1px solid var(--line);
  }
  .modal h3{margin:0 0 16px; font-size:17px; font-weight:600;}

  .ames-group-room-card{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:transparent;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease}
  .ames-group-room-card:hover{border-color:rgba(var(--ames-rgb),.42);background:rgba(var(--ames-rgb),.045)}
  .ames-group-room-card.active{border-color:var(--ames);background:rgba(var(--ames-rgb),.08)}
  .ames-group-room-card.disabled{cursor:default;opacity:.62}
  .ames-group-room-card.disabled:hover{border-color:var(--line);background:transparent;transform:none}
  .ames-group-sheet-button{flex:0 0 auto;padding:6px 10px!important;font-size:11.5px!important;white-space:nowrap}
  .ames-group-sheet-editor{padding-top:2px}
  .ames-group-sheet-kicker{margin-bottom:4px;color:var(--ames);font-size:11px;font-weight:800;letter-spacing:.08em}
  .ames-group-sheet-editor>h3{margin-bottom:10px}
  .ames-group-sheet-members{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:13px}
  .ames-group-sheet-member{display:inline-flex;align-items:center;gap:6px;padding:5px 9px 5px 5px;border:1px solid var(--line);border-radius:999px;background:var(--bg-soft);color:var(--ink-soft);font-size:12px}
  .ames-group-sheet-member img{width:23px;height:23px;border-radius:50%;object-fit:cover}
  .ames-group-sheet-member b{font-weight:700}
  .ames-group-sheet-note{display:flex;flex-direction:column;gap:4px;padding:11px 12px;border:1px solid rgba(var(--ames-rgb),.2);border-radius:11px;background:rgba(var(--ames-rgb),.055);line-height:1.5}
  .ames-group-sheet-note b{color:var(--ink);font-size:12.5px}
  .ames-group-sheet-note span{color:var(--ink-faint);font-size:11.5px}
  .ames-group-sheet-field{margin-top:14px}
  .ames-group-sheet-label{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .ames-group-sheet-label>span{color:var(--ink-faint);font-size:11px;font-variant-numeric:tabular-nums}
  .ames-group-sheet-field textarea{width:100%;min-height:300px;margin-top:7px;padding:13px 14px;resize:vertical;font-size:13px;line-height:1.65;tab-size:2}
  .ames-group-sheet-field>p{margin:6px 2px 0;color:var(--ink-faint);font-size:11.5px;line-height:1.5}
  .ames-group-sheet-actions{justify-content:flex-end;margin-top:15px}
  @media(max-width:560px){.ames-group-room-card{align-items:flex-start;flex-wrap:wrap}.ames-group-sheet-button{width:100%;margin-left:68px}.ames-group-sheet-field textarea{min-height:42vh}}
  .close-x{position:absolute; top:16px; right:18px; cursor:pointer; color:var(--ink-faint); font-size:18.5px; line-height:1;}
  .close-x:hover{color:var(--ink);}

  .progress-bar{height:7px; background:var(--bg-soft2); border-radius:99px; overflow:hidden; margin-top:6px;}
  .progress-fill{height:100%; background:var(--accent); border-radius:99px; transition:width 0.3s;}

  /* ===== 과목 색 토큰 ===== */
  .sub-kr{--sc:var(--kr); --scs:var(--kr-soft);}
  .sub-math{--sc:var(--math); --scs:var(--math-soft);}
  .sub-eng{--sc:var(--eng); --scs:var(--eng-soft);}
  .sub-expl{--sc:#ff9f43; --scs:rgba(255,159,67,0.12);}
  .sub-expl2{--sc:#ff6b6b; --scs:rgba(255,107,107,0.12);}
  .sub-all{--sc:var(--ink-soft); --scs:var(--bg-soft2);}

  /* ===== SVG 아이콘 ===== */
  .ic{width:15px; height:15px; display:block;}
  .ibtn{
    width:30px; height:30px; border-radius:8px; border:1px solid var(--line);
    background:var(--bg-card); color:var(--ink-faint); cursor:pointer;
    display:flex; align-items:center; justify-content:center; flex:0 0 auto;
    transition:color 0.12s, border-color 0.12s, background 0.12s;
  }
  .ibtn:hover{color:var(--accent); border-color:var(--accent); background:var(--accent-soft);}

  /* ===== 교재 탭: 목록 (gx2 리스트 패턴 재사용, 목표 탭과 통일) ===== */
  .subj-add-btn{
    width:100%; margin-top:8px; padding:10px; border-radius:var(--radius-m);
    border:1px dashed var(--line-strong); background:transparent; color:var(--ink-soft);
    font-family:var(--font); font-size:13.5px; font-weight:600; cursor:pointer; transition:all 0.12s;
  }
  .subj-add-btn:hover{border-color:var(--sc); color:var(--sc); background:var(--scs);}
  .bk-done-row:hover{color:var(--good) !important;}
  .bk-row-del{opacity:0; transition:opacity .12s, color .12s; color:var(--ink-faint); flex:0 0 auto; display:flex; align-items:center; padding:4px; border-radius:6px;}
  .bk-row-del .ic{width:14px; height:14px;}
  .gx2-row:hover .bk-row-del{opacity:1;}
  .bk-row-del:hover{color:var(--bad);}
  .bk-row-link{display:flex; align-items:center; color:var(--ink-faint);}
  .bk-row-link .ic{width:14px; height:14px;}

  /* ===== 교재 탭: 타임라인 ===== */
  .bktl-card{background:var(--bg-card); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-card); overflow:hidden; padding:16px 18px;}
  .bktl-scroll{overflow-x:auto; -webkit-overflow-scrolling:touch;}
  .bktl-inner{position:relative; min-width:560px;}
  .bktl-head{display:flex; margin-bottom:10px;}
  .bktl-head-spacer{flex:0 0 auto;}
  .bktl-head-ticks{flex:1; display:flex; justify-content:space-between; font-size:11px; font-weight:700; color:var(--ink-faint);}
  .bktl-today{position:absolute; top:0; bottom:0; width:1px; background:var(--accent); z-index:2;}
  .bktl-today::before{content:''; position:absolute; top:-4px; left:50%; transform:translateX(-50%); width:6px; height:6px; border-radius:50%; background:var(--accent);}
  .bktl-group-name{font-size:11.5px; font-weight:800; color:var(--ink-faint); padding:14px 0 6px; text-transform:uppercase; letter-spacing:.04em;}
  .bktl-group:first-child .bktl-group-name{padding-top:0;}
  .bktl-row{display:flex; align-items:center; padding:6px 0;}
  .bktl-label{flex:0 0 auto; font-size:13px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .bktl-track{position:relative; flex:1; height:20px;}
  .bktl-span{position:absolute; top:0; height:100%; border-radius:5px; min-width:6px; overflow:hidden;}
  .bktl-fill{position:absolute; top:0; left:0; height:100%; border-radius:5px 0 0 5px;}

  /* ===== 교재 탭: 상세 페이지 (강별 목차 + 메모) ===== */
  .bk-back{display:inline-flex; align-items:center; gap:3px; background:none; border:none; color:var(--ink-faint); font-family:var(--font); font-size:13.5px; font-weight:600; cursor:pointer; padding:6px 0; margin-bottom:14px;}
  .bk-back:hover{color:var(--ink);}
  .bk-back .ic{width:14px; height:14px;}
  .bk-detail-head{display:flex; align-items:center; gap:14px; margin-bottom:14px;}
  .bk-detail-titlewrap{flex:1; min-width:0;}
  .bk-detail-title{font-size:19px; font-weight:800; color:var(--ink); word-break:break-word;}
  .bk-detail-sub{font-size:13px; color:var(--ink-faint); margin-top:3px;}
  .bk-detail-memo{font-size:14px; color:var(--ink-soft); background:var(--bg-soft); border-radius:var(--radius-m); padding:12px 14px; margin-bottom:14px; line-height:1.6; white-space:pre-wrap;}
  .bk-unit-list{background:var(--bg-card); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-card); overflow:hidden;}
  .bk-unit{border-bottom:1px solid var(--line);}
  .bk-unit:last-child{border-bottom:none;}
  .bk-unit.next{background:var(--scs);}
  .bk-unit-row{display:flex; align-items:center; gap:10px; padding:12px 16px; cursor:pointer; transition:background .12s;}
  .bk-unit-row:hover{background:var(--bg-soft);}
  .bk-unit.next .bk-unit-row:hover{background:color-mix(in srgb, var(--sc) 12%, var(--bg-card));}
  .bk-unit.done .bk-unit-name{color:var(--ink-faint);}
  .bk-unit-check{width:16px; height:16px; flex:0 0 auto; color:var(--good); display:flex; align-items:center; justify-content:center;}
  .bk-unit-check .ic{width:14px; height:14px;}
  .bk-unit-name{flex:1; min-width:0; font-size:14.5px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .bk-unit-next-tag{font-size:10.5px; font-weight:800; color:var(--sc); background:var(--bg-card); border:1px solid var(--sc); padding:1px 8px; border-radius:99px; flex:0 0 auto;}
  .bk-unit-rename{opacity:0; transition:opacity .12s; color:var(--ink-faint); display:flex; padding:3px; flex:0 0 auto;}
  .bk-unit-row:hover .bk-unit-rename{opacity:1;}
  .bk-unit-rename .ic{width:13px; height:13px;}
  .bk-unit-notecount{font-size:11px; font-weight:800; color:var(--sc); background:var(--scs); padding:2px 8px; border-radius:99px; flex:0 0 auto; white-space:nowrap;}
  .bk-unit-row .chev{width:12px; height:12px; color:var(--ink-faint); transition:transform .15s; flex:0 0 auto;}
  .bk-unit-notes{padding:2px 16px 14px 42px; display:flex; flex-direction:column; gap:2px;}
  .bk-note-line{display:flex; align-items:flex-start; gap:8px; padding:7px 0 7px 14px; border-left:2px solid var(--line-strong); margin:3px 0;}
  .bk-note-type-tag{font-size:11px; font-weight:800; color:var(--sc); flex:0 0 auto; white-space:nowrap; padding-top:1px;}
  .bk-note-txt{flex:1; min-width:0; font-size:13.5px; color:var(--ink-soft); line-height:1.5; white-space:pre-wrap;}
  .bk-unit-addnote{display:flex; align-items:center; justify-content:center; gap:5px; background:none; border:1px dashed var(--line-strong); border-radius:var(--radius-m); color:var(--ink-faint); font-family:var(--font); font-size:13px; font-weight:600; padding:8px 10px; cursor:pointer; width:100%; margin-top:4px;}
  .bk-unit-addnote:hover{border-color:var(--sc); color:var(--sc);}
  .bk-done-toggle{display:flex; align-items:center; gap:6px; padding:11px 16px; font-size:13px; font-weight:600; color:var(--ink-faint); cursor:pointer; border-bottom:1px solid var(--line); user-select:none;}
  .bk-done-toggle:hover{color:var(--ink);}
  .bk-done-toggle .chev{width:11px; height:11px; transition:transform .15s;}
  .bk-composer{background:var(--bg-soft); border:1px solid var(--line-strong); border-radius:var(--radius-m); padding:10px; margin-top:6px;}
  .bk-composer-types{display:flex; gap:5px; flex-wrap:wrap; margin-bottom:8px;}
  .bk-type-chip{font-size:12px; font-weight:600; padding:4px 11px; border-radius:99px; border:1px solid var(--line-strong); background:var(--bg-card); color:var(--ink-soft); cursor:pointer; transition:all .12s;}
  .bk-type-chip.active{background:var(--sc); border-color:var(--sc); color:var(--on-solid);}
  .bk-composer-input{width:100%; resize:vertical; font-size:13.5px; line-height:1.55; box-sizing:border-box; border:1px solid var(--line); border-radius:8px; padding:8px 10px; font-family:var(--font); background:var(--bg-card); color:var(--ink);}
  .bk-composer-actions{display:flex; justify-content:flex-end; gap:8px; margin-top:8px;}
  .bk-unit-addnote:hover{border-color:var(--sc); color:var(--sc);}
  .bk-unit-addnote .ic{width:13px; height:13px;}
  .bk-unit-pin{display:flex; padding:3px; flex:0 0 auto; cursor:pointer; color:var(--ink-faint); opacity:0; transition:opacity .12s, color .12s;}
  .bk-unit-row:hover .bk-unit-pin, .bk-unit-pin.active{opacity:1;}
  .bk-unit-pin.active{color:var(--warn);}
  .bk-unit-pin:hover{color:var(--sc);}
  .bk-unit-pin .ic{width:13px; height:13px;}
  .timer-quick-memo{position:fixed; bottom:78px; right:18px; z-index:250; width:300px; max-width:calc(100vw - 36px); background:var(--bg-card); border:1px solid var(--line-strong); border-radius:var(--radius-m); padding:14px; box-shadow:var(--shadow-card);}
  .timer-quick-memo .tqm-label{font-size:11.5px; color:var(--ink-faint); margin-bottom:4px;}
  .timer-quick-memo .tqm-unit{font-size:14px; font-weight:800; color:var(--sc); margin-bottom:10px;}
  .timer-quick-memo .tqm-unit input{width:48px; font-size:14px; font-weight:800; color:var(--sc); border:1px solid var(--line-strong); border-radius:6px; padding:2px 6px; background:var(--bg-soft); font-family:var(--font); text-align:center;}

  .day-tag{font-size:12.5px; color:var(--ink-faint);}
  .item-list{display:flex; flex-direction:column; gap:8px;}
  .item-row{
    display:flex; justify-content:space-between; align-items:center; gap:10px;
    padding:11px 14px; background:var(--bg-soft); border-radius:var(--radius-m);
  }
  .item-row .left{flex:1; min-width:0;}
  .item-row .title{font-size:15px; font-weight:500; margin:0 0 2px; word-break:break-word;}
  .item-row .sub{font-size:13.5px; color:var(--ink-soft);}

  /* ===== Planner 재디자인 ===== */
  .planner-hero{
    background:var(--bg-card);
    border:1px solid var(--line); border-radius:var(--radius-l);
    padding:20px 26px 22px; margin-bottom:16px; box-shadow:var(--shadow-card);
  }
  .ph2-top{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px;}
  .ph2-left{display:flex; align-items:center; gap:12px; flex-wrap:wrap;}
  .planner-navbtn{
    width:32px; height:32px; flex:0 0 auto; border-radius:9px; border:1px solid var(--line-strong);
    background:var(--bg-card); color:var(--ink-soft); font-size:18px; line-height:1; cursor:pointer;
    transition:all 0.12s;
  }
  .planner-navbtn:hover{color:var(--accent); border-color:var(--accent); background:var(--accent-soft);}
  .planner-date-big{font-size:20px; font-weight:800; color:var(--ink); letter-spacing:-0.01em; white-space:nowrap;}
  .planner-date-rel{
    font-size:12px; font-weight:700; color:var(--accent); vertical-align:middle; margin-left:6px;
    background:var(--accent-soft); padding:2px 9px; border-radius:99px;
  }
  .planner-date-sub{font-size:12.5px; color:var(--ink-faint); margin-top:2px; font-family:var(--font-num);}
  .ph2-duty{
    display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:800;
    color:var(--dc); background:color-mix(in srgb, var(--dc) 9%, transparent);
    border:1px solid color-mix(in srgb, var(--dc) 25%, transparent);
    padding:7px 14px; border-radius:99px; margin-left:4px;
  }
  .ph2-duty .sub{font-weight:600; color:var(--ink-soft); font-size:12px;}
  .ph2-stats{display:flex; align-items:center;}
  .ph2-stat{display:flex; flex-direction:column; gap:1px; text-align:right;}
  .ph2-stat + .ph2-stat{padding-left:18px; margin-left:18px; border-left:1px solid var(--line);}
  .ph2-stat .v{font-size:19px; font-weight:800; letter-spacing:-0.01em; font-variant-numeric:tabular-nums; color:var(--ink);}
  .ph2-stat .v.study{color:var(--good);}
  .ph2-stat .v.streak{color:var(--warn);}
  .ph2-stat .v small{font-size:12px; font-weight:700; color:var(--ink-faint); margin-left:1px;}
  .ph2-stat .k{font-size:11.5px; color:var(--ink-faint); font-weight:700;}
  .ph2-budget-track{position:relative; height:30px; background:var(--bg-soft); border-radius:9px; overflow:hidden; border:1px solid var(--line);}
  .ph2-budget-plan{position:absolute; left:0; top:0; bottom:0; background:repeating-linear-gradient(-45deg, rgba(var(--accent-rgb),0.13) 0 6px, rgba(var(--accent-rgb),0.05) 6px 12px);}
  .ph2-budget-actual{position:absolute; left:0; top:0; bottom:0; background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 82%, white), var(--accent)); display:flex; align-items:center; justify-content:flex-end; padding-right:9px; transition:width .5s cubic-bezier(0.22,1,0.36,1);}
  .ph2-budget-actual span{font-size:11.5px; font-weight:800; color:var(--on-solid);}
  .ph2-budget-labels{display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-top:8px; font-size:11.5px; font-weight:700; color:var(--ink-faint);}
  .ph2-budget-labels b{color:var(--ink-soft);}
  .ph2-budget-labels .cap{color:var(--cat-pink);}

  .h2-budget-mini{margin:10px 0 2px;}
  .h2-budget-mini-track{position:relative; height:14px; background:var(--bg-soft); border-radius:7px; overflow:hidden; border:1px solid var(--line);}
  .h2-budget-mini-plan{position:absolute; left:0; top:0; bottom:0; background:repeating-linear-gradient(-45deg, rgba(var(--accent-rgb),0.13) 0 5px, rgba(var(--accent-rgb),0.05) 5px 10px);}
  .h2-budget-mini-actual{position:absolute; left:0; top:0; bottom:0; background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 82%, white), var(--accent)); transition:width .5s cubic-bezier(0.22,1,0.36,1);}
  .h2-budget-mini-lbl{display:flex; justify-content:space-between; gap:8px; margin-top:5px; font-size:10.5px; font-weight:700; color:var(--ink-faint);}
  .h2-budget-mini-lbl .cap{color:var(--cat-pink);}

  @keyframes timerPulse{0%,100%{box-shadow:0 0 12px rgba(255,77,109,0.5);} 50%{box-shadow:0 0 20px rgba(255,77,109,0.8);}}

  /* ===== 집중 모드 오버레이 (전체화면, 방해요소 없음) ===== */
  .focus-overlay{
    position:fixed; inset:0; z-index:200; display:none; overflow:hidden;
    align-items:center; justify-content:center;
    background:var(--bg-card);
    animation:focusIn 0.3s ease;
  }
  @keyframes focusIn{from{opacity:0;} to{opacity:1;}}
  .focus-wash{position:absolute; inset:-20%; pointer-events:none;
    background:radial-gradient(ellipse 55% 45% at 30% 18%, color-mix(in srgb, var(--sc,var(--accent)) 12%, transparent) 0%, transparent 65%),
               radial-gradient(ellipse 50% 40% at 75% 85%, color-mix(in srgb, var(--sc,var(--accent)) 7%, transparent) 0%, transparent 65%);
    animation:focusBreathe 8s ease-in-out infinite;
  }
  @keyframes focusBreathe{0%,100%{opacity:0.85; transform:scale(1);} 50%{opacity:1; transform:scale(1.03);}}
  .focus-vignette{position:absolute; inset:0; pointer-events:none; background:radial-gradient(ellipse 90% 80% at 50% 45%, transparent 55%, rgba(0,0,0,0.05) 100%);}

  .focus-inner{position:relative; z-index:1; text-align:center; display:flex; flex-direction:column; align-items:center; padding:40px 24px; width:100%; max-width:460px; max-height:100vh; overflow-y:auto;}

  .focus-subj{display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:800; color:var(--sc); background:var(--scs); padding:6px 15px; border-radius:99px; margin-bottom:18px; letter-spacing:0.01em;}
  .focus-subj::before{content:''; width:7px; height:7px; border-radius:50%; background:var(--sc); flex:0 0 auto;}
  .focus-task{font-size:21px; font-weight:800; letter-spacing:-0.01em; margin-bottom:5px; line-height:1.35; color:var(--ink); word-break:keep-all;}
  .focus-book{font-size:13.5px; color:var(--ink-faint); margin-bottom:30px; font-variant-numeric:tabular-nums;}

  .focus-ring-wrap{position:relative; width:240px; height:240px; margin-bottom:14px; flex:0 0 auto;}
  .focus-ring-wrap svg{display:block;}
  .focus-ring-center{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center;}
  .focus-clock{font-family:var(--font-num); font-variant-numeric:tabular-nums; font-size:44px; font-weight:800; letter-spacing:-0.01em; line-height:1; color:var(--ink);}
  .focus-clock.overtime{color:var(--warn);}
  .focus-clock-sub{font-size:12.5px; color:var(--ink-faint); font-weight:600; margin-top:8px;}
  .focus-ot-pill{margin-top:8px; font-size:11px; font-weight:800; color:#fff; background:var(--warn); padding:3px 12px; border-radius:99px;}

  .focus-dots{display:flex; gap:7px; margin-bottom:22px; align-items:center; flex-wrap:wrap; justify-content:center;}
  .focus-dot{width:8px; height:8px; border-radius:50%; background:var(--line-strong);}
  .focus-dot.done{background:var(--sc); opacity:0.45;}
  .focus-dot.now{width:22px; border-radius:5px; background:var(--sc);}
  .focus-dot.now.overtime{background:var(--warn);}
  .focus-dots-lbl{font-size:11.5px; color:var(--ink-faint); font-weight:600; margin-left:5px;}

  .focus-today{font-size:14px; color:var(--ink-soft); margin-bottom:22px;}
  .focus-today strong{color:var(--good); font-family:var(--font-num); font-weight:800;}

  .focus-ames{display:flex; align-items:flex-start; gap:11px; width:100%; max-width:330px; padding:13px 16px; background:rgba(var(--ames-rgb),0.05); border:1px solid rgba(var(--ames-rgb),0.18); border-radius:var(--radius-m); margin-bottom:24px; text-align:left; cursor:pointer; transition:border-color .15s;}
  .focus-ames:hover{border-color:rgba(var(--ames-rgb),0.4);}
  .focus-ames-face{width:32px; height:32px; border-radius:50%; background:rgba(var(--ames-rgb),0.12); border:1px solid rgba(var(--ames-rgb),0.3); flex:0 0 auto; display:flex; align-items:center; justify-content:center;}
  .focus-ames-face .ic{width:15px; height:15px; color:var(--ames);}
  .focus-ames-msg{font-size:13.5px; color:var(--ink-soft); line-height:1.6; font-weight:500; padding-top:2px;}
  .focus-ames-msg b{color:var(--ames); font-weight:800;}

  .focus-btns{display:flex; gap:9px; width:100%; max-width:330px; flex-wrap:wrap;}
  .focus-stop, .focus-min{
    flex:1; display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:13px 0;
    border-radius:12px; font-size:14px; font-weight:700; cursor:pointer; font-family:var(--font);
    border:1px solid var(--line-strong); background:var(--bg-card); color:var(--ink-soft); transition:.15s;
  }
  .focus-stop{background:var(--bad); border-color:var(--bad); color:#fff; flex:1.35; box-shadow:0 4px 14px rgba(217,58,63,0.25);}
  .focus-stop:hover{opacity:0.92;}
  .focus-min:hover{color:var(--ink); border-color:var(--ink-soft);}
  .focus-stop .ic, .focus-min .ic{width:14px; height:14px;}
  @media (prefers-reduced-motion: reduce){ .focus-wash{animation:none;} .focus-overlay{animation:none;}}
  @media (max-width:480px){ .focus-ring-wrap{width:210px; height:210px;} .focus-clock{font-size:38px;} }


  /* ===== AI 마스코트 패널 ===== */
  .mascot-panel{
    display:flex; flex-direction:column; align-items:center; gap:0; margin-bottom:16px;
    background:linear-gradient(160deg, rgba(255,192,220,0.07), rgba(var(--c-cyan-rgb),0.04));
    border:1px solid rgba(255,192,220,0.2);
    border-radius:var(--radius-l); padding:16px 18px 14px;
    box-shadow:0 0 30px rgba(255,150,200,0.1), var(--shadow-card);
    position:relative; text-align:center;
  }
  .mascot-avatar{
    flex:0 0 auto; cursor:pointer; transition:transform 0.25s;
    filter:drop-shadow(0 4px 10px rgba(255,150,200,0.4));
  }
  .ames-img{
    width:140px; height:auto; display:block;
  }
  .mascot-avatar:hover{transform:scale(1.05) translateY(-4px); filter:drop-shadow(0 8px 18px rgba(255,150,200,0.6));}
  .mascot-bubble{width:100%; margin-top:12px;}
  .mascot-text{margin:0; font-size:15px; line-height:1.8; color:var(--ink-soft); word-break:keep-all;}
  .mascot-loading{color:var(--ink-faint);}
  .mascot-dots::after{content:''; animation:mascotDots 1.2s steps(4,end) infinite;}
  @keyframes mascotDots{0%{content:'';}25%{content:'.';}50%{content:'..';}75%{content:'...';}100%{content:'';}}
  .mascot-refresh{
    position:absolute; top:10px; right:10px;
    width:26px; height:26px; border-radius:7px; border:1px solid var(--line);
    background:transparent; color:var(--ink-faint); cursor:pointer;
    display:flex; align-items:center; justify-content:center; transition:all 0.15s;
  }
  .mascot-refresh:hover{color:var(--accent); border-color:var(--accent); box-shadow:0 0 8px rgba(var(--accent-rgb),0.3);}
  .mascot-refresh .ic{width:13px; height:13px;}
  @media (min-width:640px){
    .mascot-panel{flex-direction:row; text-align:left; align-items:flex-end; gap:16px;}
    .mascot-bubble{margin-top:0;}}

  /* ===== 에이메스 플로팅 유령 ===== */
  .ames-ghost{
    position:fixed; z-index:180; display:flex; flex-direction:column; align-items:center;
    width:max-content; max-width:300px;
  }
  .ames-ghost.side-left{align-items:flex-start;}
  .ames-ghost.side-right{align-items:flex-end;}
  .ames-sprite{
    cursor:pointer; pointer-events:auto;
    filter:drop-shadow(0 4px 12px rgba(255,150,200,0.45));
    animation:amesFloat 3.5s ease-in-out infinite;
    transition:filter 0.2s, transform 0.2s;
  }
  .ames-sprite img, .ames-sprite .ames-img{height:auto; display:block;}
  .ames-img{width:90px;}
  .ames-img.peek{width:80px;}
  .ames-sprite:hover{filter:drop-shadow(0 6px 18px rgba(255,150,200,0.75)) brightness(1.06);}
  @keyframes amesFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}

  /* 말풍선 */
  .ames-bubble{
    pointer-events:auto; margin-bottom:8px; max-width:280px; min-width:150px;
    background:linear-gradient(160deg, rgba(34,22,54,0.97), rgba(22,15,40,0.97));
    border:1px solid rgba(255,150,200,0.35); border-radius:14px; padding:12px 14px;
    box-shadow:0 6px 28px rgba(255,100,180,0.2), 0 0 0 1px rgba(var(--c-cyan-rgb),0.08);
    backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
    animation:bubblePop 0.35s cubic-bezier(0.2,1.3,0.4,1) both;
  }
  html[data-theme="light"] .ames-bubble{
    background:var(--bg-card);
    border:1px solid rgba(var(--ames-rgb),0.4);
    box-shadow:0 10px 30px rgba(20,20,40,0.14);
    backdrop-filter:none; -webkit-backdrop-filter:none;
  }
  @keyframes bubblePop{0%{opacity:0; transform:scale(0.8) translateY(8px);}100%{opacity:1; transform:scale(1) translateY(0);}}
  .ames-bubble.bubble-out{animation:bubbleOut 0.35s ease-in both;}
  @keyframes bubbleOut{0%{opacity:1; transform:scale(1);}100%{opacity:0; transform:scale(0.85) translateY(6px);}}
  .ames-ghost.side-right .ames-bubble{border-bottom-right-radius:4px;}
  .ames-ghost.side-left .ames-bubble{border-bottom-left-radius:4px;}
  .ames-bubble .mascot-loading{color:var(--ink-faint);}
  .ames-msg{font-size:14.5px; line-height:1.7; color:var(--ink); word-break:keep-all;}
  .ames-reply button .ic{width:14px; height:14px;}
  .mascot-dots::after{content:''; animation:mascotDots 1.2s steps(4,end) infinite;}
  @keyframes mascotDots{0%{content:'';}25%{content:'.';}50%{content:'..';}75%{content:'...';}100%{content:'';}}

  /* 등장 팝 */
  .ames-ghost.ames-in:not(.peeking) .ames-sprite{animation:amesPop 0.5s cubic-bezier(0.2,1.3,0.4,1) both, amesFloat 3.5s ease-in-out 0.5s infinite;}
  @keyframes amesPop{0%{transform:scale(0.5);opacity:0;}55%{transform:scale(1.08);opacity:1;}100%{transform:scale(1);}}
  @media (prefers-reduced-motion: reduce){
    .ames-sprite{animation:none !important;}
    .ames-bubble{animation:none;}}
  @media (max-width:640px){
    .ames-img{width:72px;}
    .ames-bubble{max-width:210px; font-size:14px;}}

  /* ===== 에이메스 채팅 패널 ===== */
  .ames-chat-panel{width:300px;display:flex;flex-direction:column;background:var(--elev);border:1px solid var(--elev-bd);border-radius:14px;overflow:hidden;pointer-events:auto;margin-bottom:8px;}
  .ames-chat-hdr{display:flex;align-items:center;gap:6px;padding:9px 12px;border-bottom:1px solid rgba(var(--w-rgb),0.07);flex-shrink:0;}
  .ames-chat-hdr-name{font-size:14px;font-weight:700;color:var(--ames);flex:1;}
  .ames-chat-hdr button{width:24px;height:24px;border-radius:6px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;background:rgba(var(--w-rgb),0.05);color:var(--ink-on-soft);font-size:13.5px;font-family:inherit;}
  .ames-chat-hdr button:hover{background:rgba(var(--w-rgb),0.1);color:var(--ink-on);}
  .ames-chat-hdr button.active{background:var(--warn-soft);color:var(--warn);}
  .ames-chat-msgs{flex:1;overflow-y:auto;padding:8px 8px 4px;display:flex;flex-direction:column;gap:5px;max-height:240px;min-height:60px;}
  .ames-chat-msgs::-webkit-scrollbar{width:3px;}
  .ames-chat-msgs::-webkit-scrollbar-thumb{background:rgba(var(--w-rgb),0.12);border-radius:2px;}
  .ames-mrow{display:flex;flex-direction:column;max-width:88%;}
  .ames-mrow.user{align-self:flex-end;align-items:flex-end;}
  .ames-mrow.bot{align-self:flex-start;align-items:flex-start;}
  .ames-mbubble{font-size:13.5px;line-height:1.65;padding:6px 10px;border-radius:10px;word-break:keep-all;white-space:pre-wrap;}
  .ames-mrow.user .ames-mbubble{background:var(--bg-soft);color:var(--ink-on);border-radius:10px 10px 2px 10px;border:1px solid var(--line);}
  .ames-mrow.bot .ames-mbubble{background:var(--bg-card);color:var(--ink-on);border-radius:10px 10px 10px 2px;border:1px solid rgba(var(--ames-rgb),0.45);}
  .ames-mbubble .mascot-loading{color:var(--ink-on-soft);}
  .ames-action-btns{display:flex;gap:5px;margin-top:5px;}
  .ames-action-btns button{font-size:12.5px;padding:4px 10px;border-radius:6px;cursor:pointer;border:none;font-family:inherit;}
  .ames-btn-confirm{background:rgba(43,245,200,0.15);color:var(--bs-mint);border:1px solid rgba(43,245,200,0.25) !important;}
  .ames-btn-cancel{background:rgba(var(--w-rgb),0.06);color:var(--ink-on-soft);}
  .ames-sticky-panel{max-height:200px;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:4px;background:rgba(var(--w-rgb),0.04);}
  .ames-sticky-panel-empty{font-size:12.5px;color:var(--ink-on-faint);padding:8px 4px;text-align:center;}
  .ames-sticky-item{display:flex;align-items:flex-start;gap:6px;padding:6px 8px;background:rgba(255,214,0,0.06);border:1px solid rgba(255,214,0,0.15);border-radius:6px;}
  .ames-sticky-item-txt{flex:1;font-size:12.5px;color:var(--ink-on);line-height:1.55;}
  .ames-sticky-item-date{font-size:11.5px;color:var(--ink-on-faint);margin-top:2px;}
  .ames-about-panel{padding:10px;background:rgba(var(--w-rgb),0.04);display:flex;flex-direction:column;gap:8px;}
  .ames-about-note{font-size:12px;color:var(--ink-on-soft);line-height:1.5;}
  .ames-about-ta{width:100%;min-height:200px;max-height:340px;resize:vertical;background:rgba(var(--w-rgb),0.04);border:1px solid rgba(var(--w-rgb),0.1);border-radius:8px;padding:9px 10px;color:var(--ink-on);font-size:13px;line-height:1.65;font-family:inherit;}
  .ames-about-ta:focus{outline:none;border-color:rgba(var(--c-cyan-rgb),0.5);}
  .ames-about-btns{display:flex;gap:6px;align-items:center;}
  .ames-about-btns button{font-size:12.5px;padding:6px 11px;border-radius:7px;cursor:pointer;font-family:inherit;border:1px solid rgba(var(--w-rgb),0.12);background:rgba(var(--w-rgb),0.05);color:var(--ink-on);}
  .ames-about-btns .save{background:rgba(var(--c-cyan-rgb),0.16);border-color:rgba(var(--c-cyan-rgb),0.4);color:#7eeaff;font-weight:600;}
  .ames-about-btns .save:hover{background:rgba(var(--c-cyan-rgb),0.26);}
  .ames-sticky-del{flex-shrink:0;cursor:pointer;opacity:0.35;font-size:14.5px;line-height:1;padding:0 2px;}
  .ames-sticky-del:hover{opacity:0.9;color:var(--bs-pink);}
  .ames-chat-inp{display:flex;gap:5px;padding:7px 8px;border-top:1px solid rgba(var(--w-rgb),0.07);flex-shrink:0;}
  .ames-chat-inp input{flex:1;min-width:0;background:rgba(0,0,0,0.3);border:1px solid rgba(var(--w-rgb),0.1);border-radius:7px;padding:5px 8px;font-size:13.5px;color:var(--ink);font-family:var(--font);}
  .ames-chat-inp input:focus{outline:none;border-color:var(--accent);}
  .ames-chat-inp button{flex-shrink:0;width:28px;height:28px;border-radius:7px;border:none;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;}
  @media(max-width:640px){.ames-chat-panel{width:256px;}}

  /* ===== 에이메스 모달 채팅 (레이아웃 3종: 세로/가로 메신저, 비주얼노벨) ===== */
  .ames-modal-wrap{
    position:relative; z-index:1; display:flex; flex-direction:column;
    border-radius:20px; overflow:hidden;
    box-shadow:0 32px 80px rgba(0,0,0,0.45);
    animation:amesModalIn .28s cubic-bezier(0.2,1.2,0.4,1) both;
  }
  .ames-modal-wrap.layout-vertical{ width:min(520px,95vw); height:min(760px,92vh); }
  .ames-modal-wrap.layout-wide{ width:min(940px,94vw); height:min(640px,90vh); }
  .ames-modal-wrap.layout-novel{ width:min(940px,94vw); height:min(640px,90vh); }
  @keyframes amesModalIn{from{opacity:0;transform:scale(0.94) translateY(12px);}to{opacity:1;transform:scale(1) translateY(0);}}
  @keyframes amesModalOut{from{opacity:1;transform:scale(1);}to{opacity:0;transform:scale(0.94) translateY(8px);}}

  .ames-modal-right{
    flex:1; min-height:0; display:flex; flex-direction:column; position:relative;
    background:var(--bg-card);
  }
  /* 배경 일러스트 레이어 — 패널 전체를 채워서 헤더·입력창 뒤로도 은은히 비침 */
  .amr-bg{
    position:absolute; inset:0; z-index:0;
    background-color:var(--bg-soft); background-size:cover; background-position:center; background-repeat:no-repeat;
    animation:amrBgDrift 26s ease-in-out infinite alternate;
  }
  @keyframes amrBgDrift{ from{ transform:scale(1); } to{ transform:scale(1.045); } }

  .amr-header{
    display:flex; align-items:center; gap:8px;
    padding:12px 12px;
    flex-shrink:0;
  }
  /* 세로/가로 메신저 — 헤더가 배경 위에 반투명하게 떠 있음 */
  .amr-header-float{
    position:absolute; top:0; left:0; right:0; z-index:2;
    background:var(--amr-chrome-tint, rgba(255,255,255,0.6)); -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
    border-bottom:1px solid rgba(255,255,255,0.35);
  }
  .amr-back{
    width:30px; height:30px; border-radius:9px; border:none; cursor:pointer; flex-shrink:0;
    background:transparent; color:var(--ink-soft); font-size:19px;
    display:flex; align-items:center; justify-content:center; font-family:inherit; transition:background .12s;
  }
  .amr-back:hover{background:rgba(255,255,255,0.4); color:var(--ink);}
  .amr-header-info{flex:1; min-width:0;}
  .amr-title{font-size:14.5px; font-weight:700; color:var(--ink); margin:0;}
  .amr-hint{font-size:11.5px; color:var(--good); font-weight:600; display:flex; align-items:center; gap:5px; margin-top:1px;}
  .amr-hint .aml-dot{width:6px; height:6px; border-radius:50%; background:var(--good); box-shadow:0 0 6px var(--good); animation:amesPulse 2s ease-in-out infinite;}
  @keyframes amesPulse{0%,100%{opacity:1;}50%{opacity:0.4;}}
  .amr-settings, .amr-close{
    width:30px; height:30px; border-radius:9px; border:none; cursor:pointer; flex-shrink:0;
    background:transparent; color:var(--ink-soft); font-size:17px;
    display:flex; align-items:center; justify-content:center; font-family:inherit; transition:background .12s;
  }
  .amr-settings:hover, .amr-close:hover{background:rgba(255,255,255,0.4); color:var(--ink);}
  .amr-mind-btn{
    width:30px; height:30px; border-radius:9px; border:none; cursor:pointer; flex-shrink:0;
    background:transparent; font-size:16px; opacity:0.8;
    display:flex; align-items:center; justify-content:center; font-family:inherit; transition:background .12s;
  }
  .amr-mind-btn:hover{background:rgba(255,255,255,0.4); opacity:1;}

  /* 비주얼노벨형 전용 — 헤더는 배경 위에 완전 투명하게 얹힘 */
  .amr-header-novel{
    position:absolute; top:0; left:0; right:0; z-index:2;
    background:transparent; border-bottom:none;
  }
  .amr-header-novel .amr-back, .amr-header-novel .amr-settings, .amr-header-novel .amr-mind-btn{
    color:#fff; filter:drop-shadow(0 1px 3px rgba(0,0,0,0.5));
  }
  .amr-header-novel .amr-back:hover, .amr-header-novel .amr-settings:hover{background:rgba(255,255,255,0.15);}
  .amr-novel-bg{
    position:absolute; inset:0; z-index:0;
    background-color:var(--bg-soft); background-size:cover; background-position:center; background-repeat:no-repeat;
    animation:amrBgDrift 26s ease-in-out infinite alternate;
  }
  .amr-novel-dialogue{
    position:relative; z-index:1; margin-top:auto;
    background:rgba(15,12,10,0.72); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
    padding:18px 22px 6px;
  }
  .amr-novel-tag{
    display:inline-block; background:var(--accent); color:#fff; font-size:12.5px; font-weight:600;
    padding:3px 12px; border-radius:6px; margin-bottom:9px;
  }
  .amr-novel-text{
    margin:0 0 10px; font-size:15.5px; line-height:1.75; color:#fff;
    max-height:180px; overflow-y:auto;
  }
  .amr-novel-history-link{
    font-size:11.5px; color:rgba(255,255,255,0.6); cursor:pointer; margin-bottom:9px; text-align:right;
  }
  .amr-novel-history-link:hover{color:#fff;}
  .amr-novel-input-wrap{
    position:relative; z-index:1;
    background:rgba(15,12,10,0.72); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
    border-top:none !important; padding:10px 22px 20px !important;
  }

  .amr-msgs{
    position:relative; z-index:1;
    flex:1; overflow-y:auto;
    padding:70px 14px 84px;
    display:flex; flex-direction:column; gap:10px;
    min-height:0;
  }
  .amr-msgs::-webkit-scrollbar{width:4px;}
  .amr-msgs::-webkit-scrollbar-track{background:transparent;}
  .amr-msgs::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15); border-radius:2px;}
  .amr-msg-row{display:flex; gap:8px; align-items:flex-end; animation:amrMsgIn .22s ease both;}
  @keyframes amrMsgIn{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);}}
  .amr-msg-row.user{flex-direction:row-reverse;}
  .amr-avatar{
    width:38px; height:38px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    font-size:13px; font-weight:700; overflow:hidden;
  }
  .amr-avatar.bot{
    background:rgba(255,255,255,0.55); border:1.5px solid rgba(255,255,255,0.8); box-shadow:0 1px 4px rgba(0,0,0,0.18);
  }
  .amr-avatar.bot img{width:38px; height:38px; object-fit:cover;}
  .amr-avatar.user-av{
    background:var(--bg-card); border:1.5px solid var(--line-strong);
    color:var(--ink-soft);
  }
  .amr-bubble-col{display:flex; flex-direction:column; max-width:76%; gap:3px;}
  .ames-modal-wrap.layout-wide .amr-bubble-col{max-width:440px;}
  .amr-msg-row.user .amr-bubble-col{align-items:flex-end;}
  .amr-bubble{
    padding:9px 13px; border-radius:14px; font-size:14px;
    line-height:1.6; word-break:keep-all; white-space:pre-wrap;
  }
  .amr-msg-row.bot .amr-bubble{
    background:rgba(255,255,255,0.97);
    -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
    border:1px solid rgba(255,255,255,0.7);
    border-radius:3px 14px 14px 14px;
    color:#1c1c1c;
    box-shadow:0 3px 14px rgba(0,0,0,0.3);
  }
  .amr-msg-row.user .amr-bubble{
    background:var(--accent);
    border-radius:14px 3px 14px 14px;
    color:#fff;
    box-shadow:0 3px 14px rgba(0,0,0,0.3);
  }
  .amr-time{font-size:11px; color:var(--ink-faint); padding:0 3px;}
  .amr-msg-row.bot .amr-time{color:rgba(255,255,255,0.92); text-shadow:0 1px 2px rgba(0,0,0,0.4);}
  .amr-action-btns{display:flex; gap:6px; margin-top:2px;}
  .amr-btn-confirm{
    font-size:13px; padding:5px 14px; border-radius:7px; cursor:pointer;
    background:var(--good-soft); color:var(--good);
    border:1px solid var(--good); font-family:inherit;
    transition:all .12s;
  }
  .amr-btn-confirm:hover{filter:brightness(1.05);}
  .amr-btn-cancel{
    font-size:13px; padding:5px 14px; border-radius:7px; cursor:pointer;
    background:rgba(255,255,255,0.75); color:var(--ink-soft);
    border:1px solid var(--line); font-family:inherit;
  }
  .amr-typing{display:flex; gap:4px; align-items:center; padding:4px 0;}
  .amr-typing span{
    width:5px; height:5px; border-radius:50%; background:rgba(0,0,0,0.35);
    animation:amrTyping 1.2s ease-in-out infinite;
  }
  .amr-typing span:nth-child(2){animation-delay:.2s;}
  .amr-typing span:nth-child(3){animation-delay:.4s;}
  @keyframes amrTyping{0%,60%,100%{transform:translateY(0);}30%{transform:translateY(-5px);}}
  .amr-input-wrap{
    display:flex; align-items:flex-end; gap:8px;
    padding:10px 14px 14px;
    flex-shrink:0;
  }
  /* 세로/가로 메신저 — 입력창도 배경 위에 반투명하게 떠 있음 */
  .amr-input-float{
    position:absolute; left:0; right:0; bottom:0; z-index:2;
    background:var(--amr-chrome-tint, rgba(255,255,255,0.6)); -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
    border-top:1px solid rgba(255,255,255,0.35);
  }
  .amr-input{
    flex:1; min-width:0;
    background:rgba(255,255,255,0.6); border:1px solid rgba(255,255,255,0.5);
    border-radius:12px; padding:10px 14px; font-size:14.5px;
    color:var(--ink); font-family:var(--font);
    resize:none; max-height:100px; overflow-y:auto; line-height:1.5;
    transition:border-color .15s;
  }
  .amr-input:focus{outline:none; border-color:var(--accent);}
  .amr-input::placeholder{color:var(--ink-faint);}
  .amr-send{
    width:38px; height:38px; border-radius:10px; border:none; cursor:pointer;
    background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center;
    flex-shrink:0; transition:all .15s;
  }
  .amr-send:hover{background:var(--accent-deep);}
  .amr-send:disabled{opacity:0.4; cursor:not-allowed;}
  .amr-attach-btn{
    width:38px; height:38px; border-radius:10px; border:none; cursor:pointer;
    background:rgba(255,255,255,0.55); color:var(--ink-soft); display:flex; align-items:center; justify-content:center;
    flex-shrink:0; font-size:18px; transition:all .15s;
  }
  .amr-attach-btn:hover{background:rgba(255,255,255,0.85);}
  .amr-img-preview-wrap{display:flex; align-items:flex-start; gap:8px; padding:8px 14px 0; position:relative;}
  .amr-img-preview-wrap img{width:52px; height:52px; object-fit:cover; border-radius:10px; border:1px solid rgba(255,255,255,0.6); display:block;}
  .amr-img-preview-remove{
    position:absolute; top:2px; left:46px; width:20px; height:20px; border-radius:50%;
    background:rgba(0,0,0,0.6); color:#fff; border:none; cursor:pointer; font-size:12px; line-height:1;
    display:flex; align-items:center; justify-content:center;
  }
  .amr-bubble img.amr-msg-img{max-width:180px; max-height:180px; border-radius:10px; display:block; margin-bottom:4px; object-fit:cover;}

  /* 채팅 전용 설정 패널(⋮) 안의 이미지 업로드 카드 */
  .cs-img-card{flex:1;}
  .cs-img-card label{font-size:12px; color:var(--ink-soft);}
  .cs-img-preview{margin-top:6px; aspect-ratio:1; border-radius:10px; overflow:hidden; background:var(--bg-soft);}
  .cs-img-preview img{width:100%; height:100%; object-fit:cover; display:block;}
  .cs-img-upload-btn{width:100%; margin-top:6px; font-size:12px; padding:6px;}
  .cs-sticky-row{display:flex; gap:6px; align-items:flex-start; background:var(--bg-soft); border-radius:8px; padding:6px 8px;}
  .cs-sticky-row span.txt{flex:1; font-size:12.5px; color:var(--ink); line-height:1.5;}
  .cs-sticky-row span.del{cursor:pointer; color:var(--ink-faint); font-size:13px;}
  .cs-sticky-row span.del:hover{color:var(--bad);}

  @media(max-width:640px){
    .ames-modal-wrap.layout-vertical,
    .ames-modal-wrap.layout-wide,
    .ames-modal-wrap.layout-novel{width:100vw; height:100vh; height:100dvh; max-width:100vw; border-radius:0; border:none;}
    .ames-modal-wrap.layout-wide .amr-bubble-col{max-width:78%;}
  }


  /* 플로팅 미니 타이머 (집중모드 최소화 시) */
  .mini-timer{
    position:fixed; bottom:18px; right:18px; z-index:150;
    display:flex; align-items:center; gap:10px; padding:10px 14px;
    background:var(--bg-card); border:1px solid var(--good); border-radius:99px;
    box-shadow:0 0 20px rgba(43,245,200,0.3), var(--shadow-card); cursor:pointer;
    animation:miniIn 0.3s ease;
  }
  @keyframes miniIn{from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:translateY(0);}}
  .mini-timer-dot{width:8px; height:8px; border-radius:50%; background:var(--good); box-shadow:0 0 8px var(--good); animation:livePulse 1.4s ease-in-out infinite; flex:0 0 auto;}
  .mini-timer-clock{font-family:var(--font-num); font-size:16px; font-weight:800; color:var(--good);}
  .mini-timer.overtime .mini-timer-clock{color:var(--warn);}
  .mini-timer-over{font-size:11.5px; font-weight:700; color:var(--warn); background:rgba(255,193,77,0.10); border:1px solid rgba(255,193,77,0.28); border-radius:4px; padding:1px 5px; flex-shrink:0; margin-left:2px;}
  .mini-timer-label{font-size:13.5px; color:var(--ink-soft); max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .yp-rtmr.on.overtime{background:var(--warn); border-color:var(--warn); box-shadow:0 0 16px -4px var(--warn);}
  .yp-rtmr.on.overtime .ic{color:var(--on-solid);}
  @media (prefers-reduced-motion: reduce){ .mini-timer-dot{animation:none;} .mini-timer{animation:none;}}

  @media (max-width:640px){
    .planner-hero{padding:16px 18px;}
    .planner-date-big{font-size:19px;}
    /* 히어로: 상단 요소 세로로 쌓고 근무칩/스탯 줄바꿈 */
    .ph2-top{flex-direction:column; align-items:stretch; gap:14px;}
    .ph2-left{gap:10px;}
    .ph2-duty{margin-left:0; font-size:12px; padding:6px 12px;}
    .ph2-duty .sub{display:none;} /* 좁은 화면에선 근무 라벨만, 상세시간은 예산 바 라벨에 이미 있음 */
    .ph2-stats{justify-content:space-between;}
    .ph2-stat{text-align:left; flex:1;}
    .ph2-stat + .ph2-stat{padding-left:12px; margin-left:12px;}
    .ph2-stat .v{font-size:17px;}
    .ph2-budget-labels{font-size:11px;}
    /* 타임라인 음영 존 라벨이 좁을 때 겹치지 않게 */
    .tl-offzone span{font-size:10px; padding:1px 7px;}
  }

  /* ===== 타임박싱 플래너 ===== */
  /* 전체 2컬럼: 왼쪽(Top5+BrainDump) | 오른쪽(TimeBox) */
  .tb-main{display:grid; grid-template-columns:1fr 1.45fr 0.85fr; gap:14px; margin-bottom:16px; align-items:stretch;}
  @media (max-width:640px){.tb-main{grid-template-columns:1fr;}}
  .tb-left{display:flex; flex-direction:column; gap:10px;}
  /* 과목별 세션 리스트 (열품타 스타일) */
  .yp-card{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l); box-shadow:var(--shadow-card); padding:16px 16px 12px; display:flex; flex-direction:column;}
  .yp-top{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:14px; padding-bottom:14px; border-bottom:1px solid var(--line);}
  .yp-top-label{font-size:12.5px; font-weight:800; letter-spacing:0.1em; color:var(--ink-faint); text-transform:uppercase;}
  .yp-top-time{font-size:21px; font-weight:800; font-family:var(--font-num); color:var(--good); letter-spacing:0.04em;}
  .yp-group{padding:9px 0;}
  .yp-group + .yp-group{border-top:1px solid rgba(var(--w-rgb),0.05);}
  .yp-ghd{display:flex; align-items:center; gap:10px; margin-bottom:6px;}
  .yp-gbar{width:4px; height:22px; border-radius:2px; flex:0 0 auto; background:var(--sc,var(--accent)); box-shadow:0 0 8px -1px var(--sc);}
  .yp-gname{font-size:16px; font-weight:800; color:var(--ink); flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .yp-gtime{font-size:17.5px; font-weight:800; font-family:var(--font-num); color:var(--sc,var(--ink)); letter-spacing:0.04em;}
  .yp-list{display:flex; flex-direction:column; gap:2px; padding-left:14px;}
  .yp-row{display:flex; align-items:center; gap:10px; padding:7px 9px; border-radius:9px; transition:background .12s;}
  .yp-row:hover{background:rgba(var(--w-rgb),0.035);}
  .yp-row.running{background:rgba(var(--w-rgb),0.04);}
  .yp-check{width:22px; height:22px; flex:0 0 auto; border-radius:50%; border:2px solid var(--sc,var(--ink-faint)); background:transparent; cursor:pointer; padding:0; display:flex; align-items:center; justify-content:center; box-sizing:border-box; transition:background .15s, border-color .15s;}
  .yp-check .ic{width:13px; height:13px; color:var(--on-solid); opacity:0; stroke-width:2.6;}
  .yp-check:hover{background:rgba(var(--w-rgb),0.06);}
  .yp-check.on{background:var(--sc,var(--good)); border-color:var(--sc,var(--good));}
  .yp-check.on .ic{opacity:1;}
  .yp-check.on.partial{background:var(--warn); border-color:var(--warn);}
  .yp-check.on.partial .ic{color:var(--on-solid); opacity:1;}
  .yp-partial-badge{display:inline-flex; align-items:center; background:rgba(255,193,77,0.10); border:1px solid rgba(255,193,77,0.28); color:var(--warn); border-radius:4px; font-size:11.5px; font-weight:700; padding:1px 6px; margin-top:3px; width:fit-content; letter-spacing:0;}
  .yp-info{flex:1; min-width:0;}
  .yp-label{font-size:14.5px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.3;}
  .yp-label.done{text-decoration:line-through; color:var(--ink-faint);}
  .yp-rtime{font-size:12.5px; color:var(--ink-faint); font-family:var(--font-num); margin-top:1px;}
  .yp-rtmr{width:34px; height:34px; flex:0 0 auto; border-radius:50%; border:1.5px solid rgba(var(--w-rgb),0.12); background:transparent; color:var(--ink-soft); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .15s, color .15s, box-shadow .15s;}
  .yp-rtmr .ic{width:15px; height:15px;}
  .yp-rtmr:hover{background:rgba(var(--w-rgb),0.08); color:var(--ink); border-color:var(--ink-on-faint);}
  .yp-rtmr.on{background:var(--sc,var(--good)); border-color:var(--sc,var(--good)); color:var(--on-solid); box-shadow:0 0 16px -4px var(--sc);}
  .yp-rtmr.on .ic{color:var(--on-solid);}
  .yp-empty{display:flex; flex-direction:column; align-items:center; gap:8px; padding:34px 12px; color:var(--ink-faint); text-align:center;}
  .yp-empty .ic{width:30px; height:30px; opacity:0.4;}
  .yp-empty-t{font-size:14.5px;} .yp-empty-s{font-size:13px; opacity:0.7;}
  .yp-add-btn{display:none;} /* 아래 별도 행 제거 */
  .yp-ghost{display:flex; align-items:center; gap:8px; padding:8px 9px; margin-top:3px; border-radius:10px; border:1.5px dashed var(--line-strong); color:var(--ink-faint); font-size:13px; font-weight:600; cursor:pointer; transition:border-color .15s, color .15s, background .15s;}
  .yp-ghost .ic{width:14px; height:14px;}
  .yp-ghost:hover{border-color:var(--sc,var(--accent)); color:var(--sc,var(--accent)); background:color-mix(in srgb, var(--sc,var(--accent)) 5%, transparent);}
  .pl-ames{display:flex; align-items:flex-start; gap:11px; margin-top:8px; padding:12px 14px; background:rgba(var(--ames-rgb),0.05); border:1px solid rgba(var(--ames-rgb),0.2); border-radius:var(--radius-m);}
  .pl-ames-face{width:32px; height:32px; border-radius:50%; background:rgba(var(--ames-rgb),0.12); border:1px solid rgba(var(--ames-rgb),0.3); flex:0 0 auto; display:flex; align-items:center; justify-content:center;}
  .pl-ames-face .ic{width:15px; height:15px; color:var(--ames);}
  .pl-ames-msg{font-size:13px; color:var(--ink-soft); line-height:1.6; font-weight:500;}
  .pl-ames-msg b{color:var(--ames); font-weight:800;}
  /* ── 인라인 추가 폼 ── */
  .il-form{margin:6px 0 8px 14px; background:rgba(var(--w-rgb),0.03); border:1px solid rgba(var(--w-rgb),0.08); border-left:2px solid var(--sc,var(--accent)); border-radius:10px; padding:12px 13px; display:flex; flex-direction:column; gap:10px;}
  .il-books{display:flex; flex-wrap:wrap; gap:6px;}
  .il-book{font-size:14px; color:var(--ink-soft); background:transparent; border:1px solid var(--line); border-radius:8px; padding:6px 12px; cursor:pointer; transition:border-color .12s, color .12s;}
  .il-book:hover{border-color:var(--sc,var(--accent));}
  .il-book.active{border-color:var(--sc,var(--accent)); color:var(--sc,var(--ink)); font-weight:700; background:rgba(var(--w-rgb),0.04);}
  .il-time-row{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
  .il-t2{display:flex; align-items:center; gap:4px;}
  .il-th{width:42px; padding:6px 4px; text-align:center; font-size:17px; font-weight:700; font-family:var(--font-num); color:var(--ink); background:var(--bg-soft); border:1.5px solid var(--line); border-radius:8px; -moz-appearance:textfield; appearance:textfield;}
  .il-th::-webkit-outer-spin-button,.il-th::-webkit-inner-spin-button{-webkit-appearance:none;}
  .il-th:focus{border-color:var(--accent); outline:none;}
  .il-tsep{font-size:17px; font-weight:700; color:var(--ink-faint); font-family:var(--font-num);}
  .il-tm{font-size:16px; font-weight:600; font-family:var(--font-num); color:var(--ink); background:var(--bg-soft); border:1.5px solid var(--line); border-radius:8px; padding:6px 5px; cursor:pointer; color-scheme:dark;}
  .il-tm:focus{border-color:var(--accent); outline:none;}
  .il-arr{color:var(--ink-faint); font-size:14.5px; flex:0 0 auto;}
  .il-dur{font-size:13.5px; font-weight:600; color:var(--ink-faint); background:transparent; border:1px solid var(--line); border-radius:8px; padding:6px 9px; cursor:pointer; transition:border-color .12s, color .12s;}
  .il-dur:hover{border-color:var(--accent); color:var(--accent);}
  .il-unit-row{display:flex; align-items:center; gap:10px;}
  .il-ustep{width:28px; height:28px; border-radius:7px; border:1px solid var(--line); background:transparent; color:var(--ink); font-size:17px; cursor:pointer;}
  .il-ustep:hover{border-color:var(--accent); color:var(--accent);}
  .il-uval{font-size:16px; font-weight:800; font-family:var(--font-num); color:var(--ink); min-width:28px; text-align:center;}
  .il-ulabel{font-size:14.5px; color:var(--ink-soft);}
  .il-actions{display:flex; gap:7px; justify-content:flex-end; margin-top:2px;}
  .il-cancel{font-size:14px; color:var(--ink-faint); background:transparent; border:1px solid var(--line); border-radius:8px; padding:7px 14px; cursor:pointer;}
  .il-cancel:hover{border-color:var(--ink-on-faint); color:var(--ink);}
  .il-save{font-size:14px; font-weight:700; color:var(--on-solid); background:var(--sc,var(--accent)); border:none; border-radius:8px; padding:7px 16px; cursor:pointer; transition:filter .12s;}
  .il-save:hover{filter:brightness(1.1);}
  /* ── 에디터 시간 2분할 피커 ── */
  .tle-t2{display:flex; align-items:center; gap:5px;}
  .tle-th{width:52px; padding:9px 6px; text-align:center; font-size:19.5px; font-weight:700; font-family:var(--font-num); color:var(--ink); background:var(--bg-soft); border:1.5px solid var(--line); border-radius:10px; -moz-appearance:textfield; appearance:textfield;}
  .tle-th::-webkit-outer-spin-button,.tle-th::-webkit-inner-spin-button{-webkit-appearance:none;}
  .tle-th:focus{border-color:var(--accent); outline:none;}
  .tle-tsep{font-size:19.5px; font-weight:700; color:var(--ink-faint); font-family:var(--font-num);}
  .tle-tm{font-size:18.5px; font-weight:600; font-family:var(--font-num); color:var(--ink); background:var(--bg-soft); border:1.5px solid var(--line); border-radius:10px; padding:9px 7px; cursor:pointer; color-scheme:dark;}
  .tle-tm:focus{border-color:var(--accent); outline:none;}
  /* 왼쪽 버튼 */
  .tb-ai-btn{width:100%; padding:12px 10px; border-radius:11px; font-size:14.5px; font-weight:600; font-family:var(--font); cursor:pointer; display:flex; align-items:center; justify-content:center; gap:7px; transition:filter .15s;}
  .tb-ai-btn:hover{filter:brightness(1.12);}
  .tb-ai-btn .ic{width:15px; height:15px;}
  /* 툴팁 */
  #tlTip{position:fixed; z-index:9999; pointer-events:none; background:var(--elev); border:1px solid var(--elev-bd); border-radius:10px; padding:9px 12px; font-size:13.5px; color:var(--ink); box-shadow:0 8px 24px -8px rgba(0,0,0,0.7); min-width:160px; max-width:240px; display:none;}
  #tlTip .tip-subj{font-size:14.5px; font-weight:800; margin-bottom:4px;}
  #tlTip .tip-row{display:flex; justify-content:space-between; gap:16px; font-size:13px; color:var(--ink-soft); padding:1px 0;}
  #tlTip .tip-row span:first-child{color:var(--ink-faint);}
  /* TOP 5 */
  .tb-top5{display:flex; flex-direction:column; gap:6px;}
  .tb-p-row{display:flex; align-items:center; gap:9px;}
  .tb-p-num{font-size:12px; font-weight:800; font-family:var(--font-num); color:var(--accent); width:12px; flex:0 0 auto; text-align:center;}
  .tb-p-check{width:17px; height:17px; flex:0 0 auto; cursor:pointer; appearance:none; -webkit-appearance:none; border-radius:5px; border:1.5px solid var(--line-strong); background:transparent; transition:all 0.15s; position:relative;}
  .tb-p-check:checked{background:var(--accent); border-color:var(--accent); box-shadow:0 0 7px rgba(var(--accent-rgb),0.5);}
  .tb-p-check:checked::after{content:''; position:absolute; inset:0; background:url("data:image/svg+xml,%3Csvg viewBox='0 0 10 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='1,4 4,7 9,1' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E") center/55% no-repeat;}
  .tb-p-input{flex:1; min-width:0; background:transparent; border:none; border-bottom:1px solid var(--line); padding:3px 2px; font-size:14.5px; font-family:var(--font); color:var(--ink); outline:none; transition:border-color 0.15s;}
  .tb-p-input:focus{border-bottom-color:var(--accent);}
  .tb-p-input.done{text-decoration:line-through; color:var(--ink-faint);}
  /* BRAIN DUMP */
  .tb-dump{width:100%; flex:1; min-height:80px; background:transparent; border:none; resize:none; font-size:14.5px; font-family:var(--font); color:var(--ink-soft); line-height:1.7; outline:none; padding:0;}
  .tb-dump::placeholder{color:var(--ink-faint);}
  /* TIME BOX 그리드 */
  .tb-grid-wrap{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l); overflow:hidden; box-shadow:var(--shadow-card); display:flex; flex-direction:column;}
  .tb-grid-wrap .tb-grid{flex:1;}
  .tb-grid{width:100%; border-collapse:collapse; table-layout:fixed;}
  .tb-grid thead th{font-size:11.5px; font-weight:800; letter-spacing:0.1em; color:var(--ink-faint); padding:8px 10px; text-align:left; border-bottom:1px solid var(--line-strong); background:var(--bg-soft2); text-transform:uppercase; overflow:hidden;}
  .tb-grid thead th.tb-th-time{text-align:center; width:50px;}
  .tb-grid thead th.tb-th-do{text-align:center; width:46%;}
  .tb-grid tbody tr{border-bottom:1px solid rgba(var(--w-rgb),0.04);}
  .tb-grid tbody tr:last-child{border-bottom:none;}
  .tb-grid tbody tr:hover{background:rgba(var(--w-rgb),0.02);}
  /* ===== 연속 타임라인 (세션 기반) — 통합 카드형 ===== */
  .tl-wrap{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l); box-shadow:var(--shadow-card); padding:14px 16px 16px; overflow:hidden;}
  .tl-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; gap:10px; flex-wrap:wrap;}
  .tl-title{font-size:12.5px; font-weight:800; letter-spacing:0.16em; color:var(--ink-faint); text-transform:uppercase;}
  .tl-head-btns{display:flex; gap:7px;}
  .tl-addbtn{display:inline-flex; align-items:center; gap:5px; height:33px; padding:0 13px; font-size:13.5px; font-weight:600; font-family:var(--font); color:var(--kr); background:rgba(var(--c-cyan-rgb),0.08); border:1px solid rgba(var(--c-cyan-rgb),0.30); border-radius:9px; cursor:pointer; white-space:nowrap; transition:background .15s, border-color .15s;}
  .tl-addbtn .ic{width:14px; height:14px;}
  .tl-addbtn:hover{background:rgba(var(--c-cyan-rgb),0.17); border-color:rgba(var(--c-cyan-rgb),0.5);}
  .tl-addbtn.nl{color:var(--accent); background:rgba(var(--accent-rgb),0.07); border-color:rgba(var(--accent-rgb),0.30);}
  .tl-addbtn.nl:hover{background:rgba(var(--accent-rgb),0.16); border-color:rgba(var(--accent-rgb),0.5);}
  .tl-addbtn.tl-collapse-btn{color:var(--ink-faint); background:var(--bg-soft); border-color:var(--line);}
  .tl-addbtn.tl-collapse-btn:hover{color:var(--ink-soft); border-color:var(--line-strong);}
  .tl-collapsed-hint{padding:22px 16px; text-align:center; font-size:13px; color:var(--ink-faint); font-weight:600; cursor:pointer; border:1.5px dashed var(--line-strong); border-radius:var(--radius-m); margin-top:2px; transition:border-color .15s, color .15s;}

  /* ===== 플래너 3번째 컬럼: 이번 주 리듬 + 이월 대기함 ===== */
  .tb-side3{display:flex; flex-direction:column; gap:14px; min-width:0;}
  .tb-card2{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l); box-shadow:var(--shadow-card); padding:14px 16px 16px;}
  .tb-card2-title{font-size:12px; font-weight:800; letter-spacing:0.06em; color:var(--ink-faint); text-transform:uppercase; margin-bottom:12px;}
  .rhy-row{display:flex; align-items:center; gap:8px; padding:5px 4px; border-radius:8px; cursor:pointer; transition:background .12s;}
  .rhy-row:hover{background:var(--bg-soft);}
  .rhy-row.today{background:var(--accent-soft);}
  .rhy-dow{font-size:11.5px; font-weight:700; color:var(--ink-faint); width:16px; flex:0 0 auto;}
  .rhy-row.today .rhy-dow{color:var(--accent); font-weight:800;}
  .rhy-track{position:relative; flex:1; height:9px; background:#f4f5f7; border-radius:5px; overflow:hidden; min-width:0;}
  .rhy-plan{position:absolute; left:0; top:0; bottom:0; background:repeating-linear-gradient(-45deg, rgba(var(--accent-rgb),0.16) 0 4px, rgba(var(--accent-rgb),0.06) 4px 8px);}
  .rhy-actual{position:absolute; left:0; top:0; bottom:0; background:color-mix(in srgb, var(--accent) 55%, white); border-radius:5px 0 0 5px;}
  .rhy-day{font-size:11px; color:var(--ink-faint); width:18px; text-align:right; flex:0 0 auto; font-variant-numeric:tabular-nums;}
  .wait-row{display:flex; align-items:baseline; gap:7px; padding:8px 9px; border-radius:9px; background:var(--bg-soft); margin-bottom:6px; cursor:pointer; transition:background .12s;}
  .wait-row:hover{background:var(--scs,var(--bg-soft2));}
  .wait-row:last-child{margin-bottom:0;}
  .wait-subj{font-size:11px; font-weight:800; color:var(--sc,var(--ink-faint)); flex:0 0 auto;}
  .wait-title{font-size:13px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .wait-empty{font-size:12.5px; color:var(--ink-faint); text-align:center; padding:8px 2px;}
  .tl-collapsed-hint:hover{border-color:var(--accent); color:var(--accent);}
  .tl-grid{position:relative; width:100%; user-select:none;
    background:repeating-linear-gradient(to bottom, rgba(var(--w-rgb),0.014) 0, rgba(var(--w-rgb),0.014) 128px, transparent 128px, transparent 256px);}
  .tl-gutter{position:absolute; left:0; top:0; bottom:0; width:48px; pointer-events:none;}
  .tl-tick{position:absolute; right:10px; transform:translateY(-50%); font-size:11.5px; color:var(--ink-faint); font-family:var(--font-num); letter-spacing:0.02em;}
  .tl-hline{position:absolute; left:48px; right:0; border-top:1px solid rgba(var(--w-rgb),0.038); pointer-events:none;}
  .tl-plan{position:absolute; left:48px; right:0; top:0; bottom:0; touch-action:none;}
  .tl-plan-hint{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--ink-faint); font-size:13.5px; opacity:0; transition:opacity .2s; pointer-events:none;}
  .tl-plan:hover .tl-plan-hint{opacity:0.4;}
  .tl-now{position:absolute; left:48px; right:0; height:0; border-top:2px solid var(--accent); z-index:6; pointer-events:none;}
  .tl-now::before{content:''; position:absolute; left:-4.5px; top:-5.5px; width:9px; height:9px; border-radius:50%; background:var(--accent); box-shadow:0 0 0 3px rgba(var(--accent-rgb),0.18);}
  .tl-now-chip{position:absolute; left:1px; transform:translateY(-50%); font-size:10px; font-weight:800; font-family:var(--font-num); color:var(--on-solid); background:var(--accent); padding:2px 6px; border-radius:99px; z-index:12; pointer-events:none; letter-spacing:0.02em; white-space:nowrap;}
  /* 지나간 시간 오버레이 + 일과 음영 존 */
  .tl-past{position:absolute; left:48px; right:0; top:0; background:rgba(var(--w-rgb),0.022); pointer-events:none; z-index:0;}
  .tl-offzone{
    position:absolute; left:0; right:0; border-radius:8px; pointer-events:none; z-index:0;
    background:repeating-linear-gradient(-45deg, rgba(var(--w-rgb),0.05) 0 7px, transparent 7px 14px);
    border:1px dashed var(--line-strong);
    display:flex; align-items:center; justify-content:center;
  }
  .tl-offzone span{font-size:11px; font-weight:700; color:var(--ink-faint); background:var(--bg-card); padding:2px 10px; border-radius:99px; border:1px solid var(--line);}
  /* 세션 블록 (계획 + 진행 + 컨트롤 통합) */
  .tl-block{position:absolute; border-radius:12px; overflow:hidden; box-sizing:border-box;
    border:1px solid color-mix(in srgb, var(--sc,var(--accent)) 30%, transparent);
    border-left:4px solid var(--sc,var(--accent));
    background:color-mix(in srgb, var(--sc,var(--accent)) 9%, var(--bg-card));
    cursor:grab; touch-action:none;
    transition:box-shadow .18s, transform .12s, opacity .2s, border-color .18s;}
  .tl-block:hover{box-shadow:0 4px 14px rgba(60,64,67,0.14), 0 1px 3px rgba(60,64,67,0.08); transform:translateY(-1px);}
  .tl-block.running{box-shadow:0 0 0 2px color-mix(in srgb, var(--sc,var(--accent)) 35%, transparent), 0 4px 14px rgba(60,64,67,0.14);}
  .tl-block.running.overtime{box-shadow:0 0 0 2px rgba(255,193,77,0.55), 0 4px 14px rgba(60,64,67,0.14);}
  .tl-block.running.overtime .tl-fill{background:var(--warn);}
  .tl-block.done{opacity:0.5;}
  .tl-tint{position:absolute; inset:0; background:var(--sc,transparent); opacity:0.055; pointer-events:none;}
  .tl-block.done .tl-label{text-decoration:line-through; text-decoration-color:var(--ink-faint);}
  .tl-fill{position:absolute; top:0; bottom:0; left:0; width:0; background:var(--sc,var(--good)); opacity:0.14; pointer-events:none; transition:width .5s ease;}
  .tl-block-in{position:relative; z-index:1; height:100%; box-sizing:border-box; padding:6px 9px; display:flex; flex-direction:column; gap:2px; overflow:hidden;}
  .tl-row1{display:flex; align-items:center; gap:8px; min-width:0;}
  .tl-check{width:22px; height:22px; flex:0 0 auto; border-radius:6px; border:2px solid var(--sc,var(--ink-faint)); background:transparent; cursor:pointer; padding:0; display:flex; align-items:center; justify-content:center; box-sizing:border-box; transition:background .15s, border-color .15s;}
  .tl-check .ic{width:15px; height:15px; color:var(--on-solid); opacity:0; stroke-width:2.4;}
  .tl-check:hover{border-color:var(--sc,var(--accent)); background:rgba(var(--w-rgb),0.05);}
  .tl-check.on{background:var(--sc,var(--good)); border-color:var(--sc,var(--good));}
  .tl-check.on .ic{opacity:1;}
  .tl-subj{flex:0 1 auto; font-size:14px; font-weight:800; letter-spacing:-0.01em; color:var(--sc,var(--ink)); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0;}
  .tl-time{flex:0 0 auto; font-size:12.5px; font-family:var(--font-num); color:var(--ink-soft); letter-spacing:0.01em; white-space:nowrap;}
  .tl-time-dur{color:var(--ink-faint); margin-left:3px;}
  .tl-tmr{margin-left:auto; flex:0 0 auto; display:inline-flex; align-items:center; gap:6px; height:26px; min-width:26px; padding:0 9px; justify-content:center; border-radius:999px; border:1px solid var(--sc,var(--ink-faint)); background:rgba(var(--w-rgb),0.04); color:var(--sc,var(--ink)); font-size:13px; font-weight:700; font-family:var(--font-num); cursor:pointer; white-space:nowrap; transition:background .15s, color .15s, box-shadow .15s;}
  .tl-tmr .ic{width:14px; height:14px;}
  .tl-tmr:hover{background:rgba(var(--w-rgb),0.09);}
  .tl-tmr.on{background:var(--sc,var(--good)); color:var(--on-solid); border-color:var(--sc,var(--good)); box-shadow:0 0 14px -3px var(--sc);}
  .tl-tmr.on:hover{filter:brightness(1.06);}
  .tl-tmr-dot{width:6px; height:6px; border-radius:50%; background:var(--on-solid); animation:tlpulse 1.1s ease-in-out infinite;}
  @keyframes tlpulse{0%,100%{opacity:1;} 50%{opacity:0.25;}}
  .tl-label{font-size:13px; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding-left:1px;}
  .tl-meta{display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--ink-faint); font-family:var(--font-num); padding-left:1px;}
  .tl-act{margin-left:auto; color:var(--sc,var(--ink-faint)); opacity:0.85;}
  .tl-rz{position:absolute; left:0; right:0; height:10px; cursor:ns-resize; z-index:5; touch-action:none;}
  .tl-rz-top{top:-1px;} .tl-rz-bot{bottom:-1px;}
  .tl-rz::after{content:''; position:absolute; left:50%; transform:translateX(-50%); width:26px; height:3px; border-radius:2px; background:var(--sc,var(--accent)); opacity:0; transition:opacity .15s;}
  .tl-rz-top::after{top:2px;} .tl-rz-bot::after{bottom:2px;}
  .tl-block:hover .tl-rz::after{opacity:0.55;}
  .tl-ghost{position:absolute; left:0; right:0; border-radius:11px; border:1.5px dashed var(--accent); background:rgba(var(--accent-rgb),0.10); pointer-events:none; z-index:8;}
  .tl-empty{text-align:center; color:var(--ink-faint); font-size:14px; padding:18px 8px 4px; line-height:1.6;}
  .tl-preset{font-size:13px; color:var(--ink-soft); background:var(--bg-soft); border:1px solid var(--line); border-radius:8px; padding:7px 13px; cursor:pointer; font-family:var(--font);}
  .tl-preset:hover{border-color:var(--accent); color:var(--accent);}
  .tl-step{width:30px; height:30px; border-radius:8px; border:1px solid var(--line); background:var(--bg-soft); color:var(--ink); font-size:17.5px; cursor:pointer; line-height:1;}
  .tl-step:hover{border-color:var(--accent); color:var(--accent);}
  /* ===== 세션 에디터 (고급) ===== */
  .tle-subj-title{display:flex; align-items:center; gap:9px; font-size:19.5px; font-weight:800; margin-bottom:18px;}
  .tle-subj-dot{width:11px; height:11px; border-radius:50%; flex:0 0 auto; background:var(--sc,var(--accent)); box-shadow:0 0 8px -1px var(--sc);}
  .tle-subj-change{margin-left:auto; font-size:13.5px; font-weight:600; color:var(--ink-faint); background:transparent; border:1px solid var(--line); border-radius:7px; padding:4px 10px; cursor:pointer; transition:color .15s, border-color .15s;}
  .tle-subj-change:hover{color:var(--accent); border-color:var(--accent);}
  .tle-label{font-size:12.5px; font-weight:700; letter-spacing:0.06em; color:var(--ink-faint); text-transform:uppercase; margin-bottom:7px;}
  .tle-section{margin-bottom:18px;}
  .tle-time-row{display:flex; align-items:center; gap:10px;}
  .tle-pill{position:relative; flex:0 0 auto;}
  .tle-pill-btn{font-size:18.5px; font-weight:700; font-family:var(--font-num); letter-spacing:0.04em; color:var(--ink); background:var(--bg-soft); border:1.5px solid var(--line); border-radius:11px; padding:11px 18px; cursor:pointer; transition:border-color .15s, background .15s; min-width:96px; text-align:center;}
  .tle-pill-btn:hover{border-color:var(--ink-on-faint);}
  .tle-pill-btn.open{border-color:var(--accent); background:rgba(var(--accent-rgb),0.06);}
  .tle-arrow{color:var(--ink-faint); font-size:16px; flex:0 0 auto;}
  .tle-dur-btn{font-size:14.5px; font-weight:600; font-family:var(--font-num); color:var(--ink-soft); background:transparent; border:1px solid var(--line); border-radius:9px; padding:9px 12px; cursor:pointer; display:inline-flex; align-items:center; gap:5px; transition:border-color .15s, color .15s;}
  .tle-dur-btn:hover, .tle-dur-btn.open{border-color:var(--accent); color:var(--accent);}
  .tle-dur-btn .car{font-size:10.5px; opacity:0.7;}
  .tle-menu{position:absolute; top:calc(100% + 5px); left:0; min-width:108px; max-height:208px; overflow-y:auto; background:var(--elev); border:1px solid var(--elev-bd); border-radius:11px; box-shadow:0 12px 32px -8px rgba(0,0,0,0.7); z-index:30; padding:5px;}
  .tle-menu.dur{min-width:92px;}
  .tle-menu-item{padding:8px 13px; font-size:15px; font-family:var(--font-num); color:var(--ink-soft); border-radius:7px; cursor:pointer; white-space:nowrap; transition:background .1s;}
  .tle-menu-item:hover{background:rgba(var(--w-rgb),0.06); color:var(--ink);}
  .tle-menu-item.sel{background:var(--accent); color:#fff; font-weight:700;}
  .tle-book-row{display:flex; flex-wrap:wrap; gap:7px;}
  .tle-book{font-size:14.5px; color:var(--ink-soft); background:var(--bg-soft); border:1px solid var(--line); border-radius:9px; padding:8px 13px; cursor:pointer; transition:border-color .15s, color .15s; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .tle-book:hover{border-color:var(--sc,var(--accent));}
  .tle-book.active{border-color:var(--sc,var(--accent)); color:var(--sc,var(--ink)); background:var(--scs,var(--bg-soft)); font-weight:700;}
  .tle-subj-chip{font-size:15px; color:var(--ink-soft); background:var(--bg-soft); border:1px solid var(--line); border-radius:9px; padding:8px 14px; cursor:pointer; transition:border-color .15s, color .15s;}
  .tle-subj-chip:hover{border-color:var(--sc,var(--accent));}
  .tle-subj-chip.active{border-color:var(--sc,var(--accent)); color:var(--sc,var(--ink)); background:var(--scs,var(--bg-soft)); font-weight:700;}
  .tle-unit{display:inline-flex; align-items:center; gap:12px;}
  .tle-unit-step{width:34px; height:34px; border-radius:9px; border:1px solid var(--line); background:var(--bg-soft); color:var(--ink); font-size:18.5px; cursor:pointer; line-height:1; transition:border-color .15s, color .15s;}
  .tle-unit-step:hover{border-color:var(--accent); color:var(--accent);}
  .tle-unit-val{font-size:17.5px; font-weight:800; font-family:var(--font-num); color:var(--ink); min-width:34px; text-align:center;}
  .tle-text{width:100%; border:1.5px solid var(--line); background:var(--bg-soft); padding:11px 13px; border-radius:11px; color:var(--ink); font-family:var(--font); font-size:15px;}
  .tle-text:focus{border-color:var(--accent); outline:none;}
  .tb-plan-cell{padding:5px 8px; vertical-align:middle; overflow:hidden;}
  .tb-plan-entries{display:flex; flex-direction:row; align-items:stretch; gap:4px; width:100%; min-width:0;}
  /* 빈 행 클릭 영역 */
  .tb-plan-empty-row{flex:1; display:flex; align-items:center; padding:6px 8px; border-radius:7px; border:1px dashed rgba(var(--w-rgb),0.07); cursor:pointer; transition:all 0.15s; min-width:0;}
  .tb-plan-empty-row:hover{border-color:rgba(var(--accent-rgb),0.3); background:rgba(var(--accent-rgb),0.03);}
  .tb-plan-placeholder{font-size:13px; color:var(--ink-on-faint); font-style:italic; pointer-events:none;}
  .tb-plan-empty-row:hover .tb-plan-placeholder{color:rgba(var(--accent-rgb),0.45);}
  /* 1개일 때 우측 + 슬롯 */
  .tb-plan-add-slot{flex:0 0 26px; width:26px; display:flex; align-items:center; justify-content:center; border-radius:6px; border:1px dashed rgba(var(--w-rgb),0.1); color:var(--ink-on-faint); font-size:16px; font-weight:300; cursor:pointer; transition:all 0.12s; align-self:stretch;}
  .tb-plan-add-slot:hover{border-color:rgba(var(--accent-rgb),0.45); color:rgba(var(--accent-rgb),0.8); background:rgba(var(--accent-rgb),0.05);}
  /* 계획 엔트리 */
  .tb-plan-entry{flex:1; display:flex; align-items:center; gap:5px; cursor:pointer; padding:5px 5px; border-radius:6px; transition:background 0.12s; min-width:0; overflow:hidden;}
  .tb-plan-entry:hover{background:rgba(var(--w-rgb),0.05);}
  .tb-plan-badge{font-size:10.5px; font-weight:700; padding:1px 5px; border-radius:4px; flex:0 0 auto; color:var(--sc); background:var(--scs); border:1px solid var(--sc); white-space:nowrap; max-width:36px; overflow:hidden; text-overflow:ellipsis;}
  .tb-plan-text{font-size:13px; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; flex:1;}
  .tb-plan-del{flex:0 0 auto; width:15px; height:15px; border:none; background:transparent; color:var(--ink-faint); cursor:pointer; border-radius:3px; display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity 0.12s; padding:0;}
  .tb-plan-entry:hover .tb-plan-del{opacity:1;}
  .tb-plan-del:hover{color:var(--bad);}
  .tb-plan-del .ic{width:10px; height:10px;}
  /* Do 블록 그룹 (2 plans 좌우 분할) */
  .tb-do-group{display:flex; gap:3px; flex:1; min-width:0;}
  .tb-do-sep{width:2px; flex:0 0 2px; background:rgba(var(--w-rgb),0.12); border-radius:1px; margin:4px 2px;}
  /* Plan 완료 상태 도트 */
  .tb-plan-dot{width:10px; height:10px; border-radius:50%; flex:0 0 10px; border:1.5px solid rgba(var(--w-rgb),0.22); cursor:pointer; transition:all 0.15s; background:transparent; position:relative;}
  .tb-plan-dot:hover{border-color:var(--sc); transform:scale(1.15);}
  .tb-plan-dot.partial{background:linear-gradient(to right, var(--warn) 50%, transparent 50%); border-color:var(--warn); box-shadow:0 0 5px rgba(255,193,77,0.5);}
  .tb-plan-dot.done{background:var(--sc); border-color:var(--sc); box-shadow:0 0 6px var(--sc);}
  /* Plan 인라인 타이머 버튼 */
  .tb-plan-tmrbtn{flex:0 0 auto; width:19px; height:19px; border-radius:5px; border:1px solid rgba(var(--w-rgb),0.12); background:transparent; color:var(--good); cursor:pointer; display:flex; align-items:center; justify-content:center; opacity:0; transition:all 0.12s; padding:0;}
  .tb-plan-entry:hover .tb-plan-tmrbtn{opacity:1;}
  .tb-plan-tmrbtn.on{opacity:1; background:var(--bad); border-color:var(--bad); color:#fff; box-shadow:0 0 8px rgba(255,77,109,0.6); animation:timerPulse 1.5s ease-in-out infinite;}
  .tb-plan-tmrbtn .ic{width:10px; height:10px;}
  /* Plan 완료 시 텍스트 효과 */
  .tb-plan-entry.state-done .tb-plan-text{text-decoration:line-through; opacity:0.5;}
  .tb-plan-entry.state-partial .tb-plan-badge{opacity:0.7;}
  /* Plan 분 배분 chip */
  .tb-plan-mins{flex:0 0 auto; font-size:11.5px; font-weight:700; font-family:var(--font-num); color:var(--ink-faint); cursor:pointer; padding:1px 5px; border-radius:4px; border:1px solid rgba(var(--w-rgb),0.1); transition:all 0.12s; white-space:nowrap;}
  .tb-plan-mins:hover{border-color:var(--accent); color:var(--accent); background:var(--accent-soft);}
  /* Do 실제 타이머 바 */
  .tb-do-bar-wrap{display:flex; gap:3px; margin-top:5px; padding:0 1px; align-items:center;}
  .tb-do-bar-seg{height:4px; border-radius:2px; background:rgba(var(--w-rgb),0.07); overflow:hidden; min-width:0; position:relative;}
  .tb-do-bar-fill{height:100%; border-radius:2px; transition:width 1s linear; opacity:0.9;}

  /* ===== 브리핑 & 피드백 오버레이 — CYBERPUNK DARK ===== */
  .brief-overlay{position:fixed;inset:0;z-index:1100;background:rgba(0,0,6,0.9);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:12px;}
  .brief-modal{
    width:96vw;max-width:1440px;height:92vh;
    background:#07071a;
    border:1px solid rgba(var(--c-cyan-rgb),0.18);
    border-radius:3px;overflow:hidden;display:flex;flex-direction:column;
    box-shadow:0 0 80px rgba(var(--c-cyan-rgb),0.06),0 0 160px rgba(var(--c-purple-rgb),0.04),0 40px 100px rgba(0,0,0,0.8);
    position:relative;
    font-family:"Pretendard Variable","Pretendard",-apple-system,sans-serif;
  }
  .brief-modal::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(var(--c-cyan-rgb),0.02) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--c-cyan-rgb),0.02) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0;}
  .brief-header{display:flex;align-items:center;justify-content:space-between;padding:11px 26px;border-bottom:1px solid rgba(var(--c-cyan-rgb),0.1);background:rgba(var(--c-cyan-rgb),0.02);position:relative;z-index:2;}
  .brief-dots{display:flex;gap:0;align-items:center;flex:1;margin:0 20px;}
  .brief-dot{height:2px;flex:1;background:rgba(var(--w-rgb),0.07);transition:all .3s;}
  .brief-dot.active{background:#2de2ff;box-shadow:0 0 10px rgba(var(--c-cyan-rgb),0.8);}
  .brief-hud-left{font-size:11.5px;letter-spacing:.22em;color:rgba(var(--c-cyan-rgb),0.45);font-family:"Pretendard Variable","Pretendard",sans-serif;font-weight:700;text-transform:uppercase;}
  .brief-hud-right{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--c-cyan-rgb),0.45);font-family:"Pretendard Variable","Pretendard",sans-serif;font-weight:700;text-transform:uppercase;}
  .brief-hud-right span{color:var(--bs-cyan);text-shadow:0 0 10px rgba(var(--c-cyan-rgb),0.6);}
  .brief-close{background:transparent;border:1px solid rgba(var(--c-cyan-rgb),0.15);color:rgba(var(--c-cyan-rgb),0.5);font-size:15px;cursor:pointer;padding:4px 9px;line-height:1;transition:all .15s;border-radius:2px;}
  .brief-close:hover{color:var(--bs-cyan);border-color:rgba(var(--c-cyan-rgb),0.5);}
  .brief-content{flex:1;overflow-y:auto;min-height:0;position:relative;z-index:1;}
  .brief-loading{display:flex;align-items:center;justify-content:center;padding:80px 20px;color:rgba(var(--c-cyan-rgb),0.4);font-size:13.5px;font-family:"Pretendard Variable",sans-serif;letter-spacing:.18em;font-weight:600;text-transform:uppercase;}
  .brief-next{padding:9px 26px;background:transparent;border:1px solid rgba(var(--c-cyan-rgb),0.35);color:var(--bs-cyan);font-size:11.5px;letter-spacing:.22em;font-family:"Pretendard Variable","Pretendard",sans-serif;font-weight:800;white-space:nowrap;transition:all .2s;text-transform:uppercase;cursor:pointer;border-radius:2px;}
  .brief-next:hover{background:rgba(var(--c-cyan-rgb),0.08);border-color:var(--bs-cyan);box-shadow:0 0 14px rgba(var(--c-cyan-rgb),0.25);}
  .brief-next.last{border-color:rgba(var(--accent-rgb),0.5);color:var(--bs-pink);}
  .brief-next.last:hover{background:rgba(var(--accent-rgb),0.1);box-shadow:0 0 14px rgba(var(--accent-rgb),0.3);}
  /* ============ LIGHT: 브리핑/피드백 모달 라이트 전환 ============ */
  html[data-theme="light"] .brief-overlay{ background:rgba(230,232,240,0.72); backdrop-filter:blur(6px); }
  html[data-theme="light"] .brief-modal{
    background:#ffffff; border:1px solid var(--line); border-radius:14px;
    box-shadow:0 30px 90px rgba(20,20,40,0.18);
  }
  html[data-theme="light"] .brief-modal::before{ display:none; }
  html[data-theme="light"] .brief-header{ background:var(--bg-soft); border-bottom:1px solid var(--line); }
  html[data-theme="light"] .brief-hud-left,
  html[data-theme="light"] .brief-hud-right{ color:var(--ink-faint); }
  html[data-theme="light"] .brief-dot{ background:var(--line-strong); }
  html[data-theme="light"] .brief-dot.active{ background:var(--accent); box-shadow:none; }
  html[data-theme="light"] .brief-close{ color:var(--ink-soft); border-color:var(--line); }
  html[data-theme="light"] .brief-close:hover{ color:var(--accent); border-color:var(--accent); }
  html[data-theme="light"] .brief-loading{ color:var(--ink-faint); }
  html[data-theme="light"] .brief-next{ color:var(--accent); border-color:var(--accent); }
  html[data-theme="light"] .brief-next:hover{ background:var(--accent-soft); border-color:var(--accent); box-shadow:none; }
  html[data-theme="light"] .brief-next.last{ border-color:var(--accent); color:var(--accent); }
  html[data-theme="light"] .brief-next.last:hover{ background:var(--accent-soft); box-shadow:none; }
  /* 카드/칩 배경 */
  html[data-theme="light"] .bs-stat-card,
  html[data-theme="light"] .bs-kpi-card,
  html[data-theme="light"] .bs-goal-stat-card,
  html[data-theme="light"] .bs-exam-subj-card,
  html[data-theme="light"] .bs-music-card,
  html[data-theme="light"] .bs-quote-card{
    background:var(--bg-soft); border-color:var(--line); box-shadow:none;
  }
  html[data-theme="light"] .bs-quote-card{ background:var(--accent-soft); }
  /* 슬라이드 레이아웃 */
  .bs-slide{padding:26px 40px 18px;min-height:0;flex:1;position:relative;}
  .bs-slide-2col{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;}
  .bs-slide-1col{display:flex;flex-direction:column;}
  .bs-eyebrow{font-size:11.5px;letter-spacing:.26em;color:rgba(var(--c-cyan-rgb),0.45);margin-bottom:8px;font-family:"Pretendard Variable","Pretendard",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-h1{font-size:68px;font-weight:900;color:var(--ink);line-height:1;letter-spacing:-.02em;margin-bottom:6px;font-family:"Pretendard Variable","Pretendard",sans-serif;text-transform:uppercase;}
  .bs-h1 .bsa{color:var(--bs-pink);}
  .bs-h2{font-size:46px;font-weight:900;color:var(--ink);line-height:1.05;letter-spacing:-.01em;margin-bottom:6px;font-family:"Pretendard Variable","Pretendard",sans-serif;}
  .bs-h2 .bsa{color:var(--bs-pink);}
  .bs-h2 .bsa2{color:var(--bs-mint);}
  .bs-caption{font-size:12.5px;color:var(--ink-on-faint);letter-spacing:.14em;margin-bottom:22px;font-family:"Pretendard Variable",sans-serif;font-weight:600;text-transform:uppercase;}
  .bs-stat-stack{display:flex;flex-direction:column;gap:16px;margin-top:4px;}
  .bs-si-label{font-size:12.5px;letter-spacing:.2em;color:rgba(var(--c-cyan-rgb),0.4);margin-bottom:3px;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-si-val{font-size:34px;font-weight:800;color:var(--ink);line-height:1;font-family:"Pretendard Variable",sans-serif;}
  .bs-si-val .sm{font-size:15px;color:var(--ink-on-faint);font-weight:400;margin-left:3px;}
  .bs-si-val .bsa{color:var(--bs-pink);}
  .bs-ring-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:6px;}
  .bs-ring-label{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-ring-sub{font-size:13.5px;color:var(--ink-on-faint);font-family:"Pretendard Variable",sans-serif;letter-spacing:.08em;font-weight:600;}
  /* 어제 리뷰 */
  .bs-total-line{display:flex;align-items:baseline;gap:6px;margin-bottom:20px;}
  .bs-total-num{font-size:58px;font-weight:900;color:var(--ink);line-height:1;font-family:"Pretendard Variable",sans-serif;}
  .bs-total-unit{font-size:17px;color:var(--ink-on-faint);font-family:"Pretendard Variable",sans-serif;letter-spacing:.1em;}
  .bs-subj-chart{display:flex;flex-direction:column;gap:10px;}
  .bs-sc-row{display:flex;align-items:center;gap:12px;}
  .bs-sc-label{font-size:15px;font-weight:800;width:60px;flex-shrink:0;color:var(--ink);font-family:"Pretendard Variable",sans-serif;}
  .bs-sc-label.warn{color:var(--bs-red);}
  .bs-sc-track{flex:1;height:26px;background:rgba(var(--w-rgb),0.04);border:1px solid rgba(var(--w-rgb),0.05);}
  .bs-sc-fill{height:100%;}
  .bs-sc-val{font-size:14.5px;color:var(--ink-on-soft);width:52px;text-align:right;flex-shrink:0;font-family:"Pretendard Variable",sans-serif;font-weight:600;}
  .bs-sc-val.warn{color:var(--bs-red);}
  .bs-sc-warn-tag{font-size:10.5px;color:var(--bs-red);letter-spacing:.1em;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;display:block;}
  .bs-donut-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:4px;}
  .bs-donut-label{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-donut-sub{font-size:13.5px;color:var(--ink-on-faint);font-family:"Pretendard Variable",sans-serif;letter-spacing:.08em;font-weight:600;}
  /* 주간 */
  .bs-week-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;}
  .bs-wh-label{font-size:11.5px;letter-spacing:.2em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-wh-avg{font-size:34px;font-weight:900;color:var(--ink);font-family:"Pretendard Variable",sans-serif;}
  .bs-wh-avg .sm{font-size:14.5px;color:var(--ink-on-faint);font-weight:400;}
  .bs-week-bars{display:flex;align-items:flex-end;gap:6px;height:160px;position:relative;}
  .bs-wc{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;height:100%;}
  .bs-wc-inner{flex:1;width:100%;display:flex;align-items:flex-end;}
  .bs-wb{width:100%;background:rgba(var(--w-rgb),0.05);min-height:2px;}
  .bs-wb.hit{background:var(--accent);}
  .bs-wb.low{background:rgba(255,77,109,0.4);}
  .bs-wb.mid{background:rgba(var(--w-rgb),0.14);}
  .bs-wb.today{background:rgba(var(--c-cyan-rgb),0.08);border:1px dashed rgba(var(--c-cyan-rgb),0.3);}
  .bs-wc-stack{width:100%;display:flex;flex-direction:column;border-radius:3px 3px 0 0;overflow:hidden;}
  .bs-wc-stack.today-bar{box-shadow:0 0 0 2px var(--accent);}
  .bs-wc-seg{width:100%;min-height:2px;}
  .bs-wv-goal{height:14px;text-align:center;font-size:12.5px;line-height:14px;color:var(--bs-warn);}
  .bs-wc-qstripe{width:100%;height:4px;border-radius:0 0 2px 2px;flex-shrink:0;}
  .bs-week-subjbar{display:flex;height:6px;border-radius:4px;overflow:hidden;margin-top:14px;gap:1px;}
  .bs-week-subjbar-seg{height:100%;}
  .bs-week-subjlegend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:7px;}
  .bs-week-subjleg-item{display:flex;align-items:center;gap:4px;font-size:12px;font-family:"Pretendard Variable",sans-serif;color:var(--ink-on-soft);}
  .bs-week-subjleg-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
  .bs-wd{font-size:11.5px;color:var(--ink-on-faint);letter-spacing:.06em;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-wd.on{color:var(--bs-cyan);}
  .bs-wv{font-size:11.5px;color:var(--ink-on-faint);font-family:"Pretendard Variable",sans-serif;font-weight:600;}
  .bs-week-summary{display:flex;gap:0;margin-top:14px;padding-top:12px;border-top:1px solid rgba(var(--c-cyan-rgb),0.07);}
  .bs-wsum-item{flex:1;padding:0 10px 0 0;border-right:1px solid rgba(var(--c-cyan-rgb),0.06);}
  .bs-wsum-item:last-child{border-right:none;}
  .bs-wsum-label{font-size:11.5px;letter-spacing:.14em;color:rgba(var(--c-cyan-rgb),0.35);margin-bottom:3px;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-wsum-val{font-size:20px;font-weight:800;color:var(--ink);font-family:"Pretendard Variable",sans-serif;}
  .bs-wsum-val .sm{font-size:13.5px;color:var(--ink-on-faint);font-weight:400;}
  .bs-wsum-val .bsa{color:var(--bs-pink);}
  .bs-wsum-val .good{color:var(--bs-mint);}
  .bs-week-subj{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
  .bs-wsubj-tag{font-size:12.5px;padding:4px 10px;font-family:"Pretendard Variable",sans-serif;font-weight:700;letter-spacing:.04em;border:1px solid rgba(var(--w-rgb),0.1);border-radius:2px;}
  /* ── 목표 슬라이드 ── */
  .bs-book-header{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid rgba(var(--c-cyan-rgb),0.12);margin-bottom:8px;font-size:11.5px;letter-spacing:.12em;color:rgba(var(--c-cyan-rgb),0.45);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-book-rows{display:flex;flex-direction:column;gap:0;}
  .bs-book-row{display:flex;align-items:center;gap:8px;padding:11px 0;border-bottom:1px solid rgba(var(--w-rgb),0.06);}
  .bs-book-row:last-child{border-bottom:none;}
  .bs-book-sub{font-size:16px;font-weight:900;width:48px;flex-shrink:0;font-family:"Pretendard Variable",sans-serif;letter-spacing:.01em;}
  .bs-book-sub.warn{color:var(--bs-red);}
  .bs-book-name-wrap{flex:0 0 205px;display:flex;align-items:center;gap:5px;overflow:hidden;flex-shrink:0;min-width:0;}
  .bs-book-name{font-size:16px;color:var(--ink-on);font-family:"Pretendard Variable",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;}
  .bs-book-tracks{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
  .bs-book-track-wrap{position:relative;height:5px;background:rgba(var(--w-rgb),0.05);border-radius:2px;overflow:hidden;}
  .bs-book-track-elapsed{position:absolute;top:0;left:0;height:100%;background:rgba(var(--w-rgb),0.14);border-radius:2px;}
  .bs-book-track-progress{position:absolute;top:0;left:0;height:100%;border-radius:2px;}
  .bs-book-track-label{font-size:13.5px;color:var(--ink-on-soft);font-family:"Pretendard Variable",sans-serif;letter-spacing:.02em;display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:3px;}
  .bs-book-dl{font-size:12.5px;width:50px;text-align:center;flex-shrink:0;font-family:"Barlow Condensed",monospace;font-weight:700;letter-spacing:.08em;}
  .bs-book-dl.urgent{color:var(--bs-red);}
  .bs-book-dl.warn{color:var(--bs-warn);}
  .bs-book-dl.ok{color:var(--ink-on-faint);}
  .bs-book-stat{font-size:13.5px;width:54px;text-align:right;flex-shrink:0;color:var(--ink-on-soft);font-family:"Pretendard Variable",sans-serif;font-weight:600;}
  .bs-book-stat.warn{color:var(--bs-red);}
  .bs-goal-right{display:flex;flex-direction:column;gap:14px;padding-top:4px;}
  .bs-goal-donut-wrap{display:flex;flex-direction:column;align-items:center;gap:6px;}
  .bs-goal-donut-label{font-size:11.5px;letter-spacing:.16em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-goal-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .bs-goal-stat-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.06);padding:12px 14px;border-radius:3px;}
  .bs-goal-stat-label{font-size:11.5px;letter-spacing:.14em;color:var(--ink-on-faint);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;margin-bottom:5px;}
  .bs-goal-stat-val{font-size:32px;font-weight:900;line-height:1;font-family:"Pretendard Variable",sans-serif;}
  /* ── 주간페이스 슬라이드 ── */
  .bs-week-chart-wrap{position:relative;margin-bottom:10px;}
  .bs-right-panel{display:flex;flex-direction:column;gap:16px;padding-top:4px;}
  .bs-right-panel-title{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;margin-bottom:8px;}
  .bs-subj-bars{display:flex;flex-direction:column;gap:8px;}
  .bs-subj-bar-row{display:flex;align-items:center;gap:10px;}
  .bs-subj-bar-name{font-size:14.5px;font-weight:800;width:52px;flex-shrink:0;font-family:"Pretendard Variable",sans-serif;}
  .bs-subj-bar-track{flex:1;height:10px;background:rgba(var(--w-rgb),0.05);border-radius:2px;overflow:hidden;}
  .bs-subj-bar-fill{height:100%;border-radius:2px;}
  .bs-subj-bar-val{font-size:14.5px;color:var(--ink-on-soft);width:36px;text-align:right;flex-shrink:0;font-family:"Barlow Condensed",monospace;font-weight:600;}
  .bs-stat-grid-2x2{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .bs-stat-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.06);padding:12px 14px;border-radius:3px;}
  .bs-stat-card-label{font-size:11.5px;letter-spacing:.12em;color:var(--ink-on-faint);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;margin-bottom:5px;}
  .bs-stat-card-val{font-size:30px;font-weight:900;line-height:1;font-family:"Pretendard Variable",sans-serif;}
  /* ── 오늘 타임박스 슬라이드 ── */
  .bs-plan-right{display:flex;flex-direction:column;gap:14px;padding-top:4px;}
  .bs-subj-time-bars{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
  .bs-stb-row{display:flex;align-items:center;gap:10px;}
  .bs-stb-name{font-size:14.5px;font-weight:800;width:52px;flex-shrink:0;font-family:"Pretendard Variable",sans-serif;}
  .bs-stb-track{flex:1;height:10px;background:rgba(var(--w-rgb),0.05);border-radius:2px;overflow:hidden;}
  .bs-stb-fill{height:100%;border-radius:2px;}
  .bs-stb-val{font-size:14.5px;color:var(--ink-on-soft);width:36px;text-align:right;flex-shrink:0;font-family:"Barlow Condensed",monospace;font-weight:600;}
  .bs-top5-item.done{text-decoration:line-through;color:var(--ink-on-faint);}
  /* ── Overview 3행 redesign ── */
  .bs-overview-top{display:flex;align-items:baseline;gap:20px;margin-bottom:10px;flex-wrap:wrap;}
  .bs-overview-mid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px;}
  .bs-overview-bot{display:grid;grid-template-columns:1fr 280px;gap:32px;align-items:stretch;}
  .bs-overview-bot>div:first-child{display:flex;flex-direction:column;}
  .bs-kpi-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.07);padding:14px 16px;border-radius:3px;transition:border-color .2s;}
  .bs-kpi-card:hover{border-color:rgba(var(--c-cyan-rgb),0.2);}
  .bs-kpi-label{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;margin-bottom:7px;}
  .bs-kpi-val{font-size:30px;font-weight:900;color:var(--ink);line-height:1;font-family:"Pretendard Variable",sans-serif;}
  .bs-kpi-val .sm{font-size:14.5px;color:var(--ink-on-faint);font-weight:400;margin-left:2px;}
  .bs-kpi-val .accent{color:var(--bs-pink);}
  .bs-kpi-sub{font-size:11.5px;color:var(--ink-on-faint);margin-top:5px;font-family:"Pretendard Variable",sans-serif;letter-spacing:.04em;}
  .bs-heatmap-wrap{display:flex;flex-direction:column;gap:8px;margin-bottom:22px;}
  .bs-heatmap-label{font-size:11.5px;letter-spacing:.18em;color:rgba(var(--c-cyan-rgb),0.4);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-heatmap-grid{display:flex;flex-wrap:wrap;gap:4px;}
  .bs-heatmap-cell{width:18px;height:18px;border-radius:3px;flex-shrink:0;}
  .bs-ring-col{display:flex;flex-direction:column;align-items:center;gap:8px;}
  .bs-ring-col .bs-ames-block{margin-top:10px;align-items:center;gap:8px;}
  .bs-ring-col .bs-ames-speech{align-items:center;max-width:255px;}
  .bs-ring-col .bs-ames-bubble{font-size:13.5px;line-height:1.5;padding:10px 14px;max-width:255px;text-align:center;border-radius:12px;}
  .bs-ring-col .bs-ames-avatar-wrap{width:60px;height:60px;}
  .bs-ring-col .bs-ames-avatar-wrap img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
  .bs-ring-col .bs-ames-name{display:none;}
  /* ── LP 레코드 (시그니처) ── */
  .bs-lp-zone{display:flex;align-items:center;gap:26px;flex:1;}
  .bs-lp-stage{position:relative;width:210px;height:210px;flex-shrink:0;}
  .bs-lp{position:absolute;inset:0;border-radius:50%;
    background:
      repeating-radial-gradient(circle at 50% 50%,rgba(var(--w-rgb),0.025) 0px,rgba(var(--w-rgb),0.025) 1px,transparent 1px,transparent 4px),
      radial-gradient(circle at 38% 32%,rgba(var(--w-rgb),0.07) 0%,transparent 42%),
      radial-gradient(circle at 50% 50%,#15151f 0%,#0a0a12 70%,#050509 100%);
    box-shadow:0 0 0 1px rgba(var(--c-purple-rgb),0.18),0 14px 40px rgba(0,0,0,0.6),0 0 50px rgba(var(--c-purple-rgb),0.12);
    animation:lpSpin 4.5s linear infinite;animation-play-state:paused;}
  .bs-lp-active .bs-lp{animation-play-state:running;}
  @keyframes lpSpin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
  .bs-lp-sheen{position:absolute;inset:0;border-radius:50%;background:linear-gradient(125deg,transparent 30%,rgba(var(--c-cyan-rgb),0.06) 48%,transparent 56%);pointer-events:none;}
  .bs-lp-label{position:absolute;top:50%;left:50%;width:62px;height:62px;transform:translate(-50%,-50%);border-radius:50%;
    background:radial-gradient(circle at 50% 50%,#ff2e88 0%,#b14dff 100%);
    display:flex;align-items:center;justify-content:center;
    box-shadow:0 0 16px rgba(var(--accent-rgb),0.4),inset 0 0 12px rgba(0,0,0,0.3);}
  .bs-lp-label::after{content:'';width:9px;height:9px;border-radius:50%;background:#07071a;box-shadow:inset 0 0 3px rgba(0,0,0,0.8);}
  .bs-lp-label-txt{position:absolute;font-size:8.5px;font-weight:800;letter-spacing:.1em;color:var(--ink-on);font-family:"Barlow Condensed",monospace;text-transform:uppercase;transform:translateY(-17px);white-space:nowrap;}
  .bs-lp-arm{position:absolute;top:-6px;right:6px;width:90px;height:90px;transform-origin:top right;transform:rotate(-26deg);transition:transform .6s cubic-bezier(0.34,1.56,0.64,1);z-index:3;}
  .bs-lp-active .bs-lp-arm{transform:rotate(-8deg);}
  .bs-lp-arm::before{content:'';position:absolute;top:0;right:0;width:13px;height:13px;border-radius:50%;background:var(--accent);}
  .bs-lp-arm::after{content:'';position:absolute;top:6px;right:6px;width:2px;height:86px;background:linear-gradient(180deg,rgba(var(--c-cyan-rgb),0.7),rgba(var(--c-cyan-rgb),0.25));transform-origin:top;transform:rotate(34deg);border-radius:2px;}
  .bs-lp-info{display:flex;flex-direction:column;gap:7px;min-width:0;}
  .bs-lp-eyebrow{font-size:10.5px;letter-spacing:.22em;color:rgba(var(--c-purple-rgb),0.5);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-lp-now{font-size:16px;font-weight:700;color:var(--ink-on);font-family:"Pretendard Variable",sans-serif;line-height:1.4;letter-spacing:.01em;}
  .bs-lp-status{font-size:12.5px;color:rgba(var(--c-cyan-rgb),0.45);font-family:"Pretendard Variable",sans-serif;letter-spacing:.06em;display:flex;align-items:center;gap:6px;}
  .bs-lp-status-dot{width:6px;height:6px;border-radius:50%;background:rgba(var(--w-rgb),0.2);transition:all .3s;}
  .bs-lp-active .bs-lp-status-dot{background:var(--good);}
  /* ── 모의고사 트렌드 슬라이드 ── */
  .bs-exam-list{display:flex;flex-direction:column;gap:0;}
  .bs-exam-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid rgba(var(--w-rgb),0.05);}
  .bs-exam-row:last-child{border-bottom:none;}
  .bs-exam-date{font-size:11.5px;color:var(--ink-on-faint);width:52px;flex-shrink:0;font-family:"Barlow Condensed",monospace;letter-spacing:.06em;}
  .bs-exam-name{font-size:13.5px;color:var(--ink-on-soft);flex:1;font-family:"Pretendard Variable",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bs-exam-subject{font-size:11.5px;padding:2px 6px;border:1px solid;border-radius:2px;font-family:"Pretendard Variable",sans-serif;font-weight:800;letter-spacing:.06em;flex-shrink:0;}
  .bs-exam-score{font-size:22px;font-weight:900;color:var(--ink);font-family:"Pretendard Variable",sans-serif;width:48px;text-align:right;flex-shrink:0;}
  .bs-exam-delta{font-size:12.5px;font-weight:700;font-family:"Barlow Condensed",monospace;width:36px;text-align:right;flex-shrink:0;}
  .bs-exam-delta.up{color:var(--bs-mint);}
  .bs-exam-delta.dn{color:var(--bs-red);}
  .bs-exam-delta.eq{color:var(--ink-on-faint);}
  .bs-exam-subj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:2px;}
  .bs-exam-subj-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.06);padding:10px 12px;border-radius:3px;}
  .bs-exam-subj-name{font-size:11.5px;letter-spacing:.12em;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;margin-bottom:5px;}
  .bs-exam-subj-score{font-size:26px;font-weight:900;line-height:1;font-family:"Pretendard Variable",sans-serif;}
  .bs-exam-subj-meta{font-size:11.5px;color:var(--ink-on-faint);margin-top:3px;font-family:"Pretendard Variable",sans-serif;}
  /* ── BGM 플레이어 (컴팩트·커스텀) ── */
  .brief-bgm-player{display:flex;align-items:center;gap:16px;padding:11px 28px;background:linear-gradient(135deg,rgba(var(--c-purple-rgb),0.08) 0%,rgba(var(--c-cyan-rgb),0.035) 100%);border-top:1px solid rgba(var(--c-purple-rgb),0.18);flex-shrink:0;position:relative;z-index:3;}
  .brief-bgm-player::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(var(--c-purple-rgb),0.012) 3px,rgba(var(--c-purple-rgb),0.012) 4px);pointer-events:none;}
  .bgm-eq{display:flex;align-items:flex-end;gap:2px;height:22px;flex-shrink:0;}
  .bgm-eq-bar{display:inline-block;width:3px;border-radius:1px;background:#b14dff;min-height:3px;box-shadow:0 0 4px rgba(var(--c-purple-rgb),0.6);transform-origin:bottom;animation:bgmEq 0.9s ease-in-out infinite;animation-play-state:paused;}
  .bgm-playing .bgm-eq-bar{animation-play-state:running;}
  .bgm-eq-bar:nth-child(1){height:7px;animation-delay:0s;}
  .bgm-eq-bar:nth-child(2){height:16px;animation-delay:.13s;}
  .bgm-eq-bar:nth-child(3){height:10px;animation-delay:.26s;}
  .bgm-eq-bar:nth-child(4){height:20px;animation-delay:.07s;}
  .bgm-eq-bar:nth-child(5){height:9px;animation-delay:.19s;}
  @keyframes bgmEq{0%,100%{transform:scaleY(0.3);}50%{transform:scaleY(1);}}
  .bgm-ctrl-btn{width:42px;height:42px;background:rgba(var(--c-purple-rgb),0.14);border:1.5px solid rgba(var(--c-purple-rgb),0.5);border-radius:50%;color:var(--bs-purple);font-size:16px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;box-shadow:0 0 14px rgba(var(--c-purple-rgb),0.2),inset 0 0 8px rgba(var(--c-purple-rgb),0.06);transition:all .15s;padding:0;line-height:1;}
  .bgm-ctrl-btn:hover{background:rgba(var(--c-purple-rgb),0.28);box-shadow:0 0 24px rgba(var(--c-purple-rgb),0.45);}
  .bgm-track{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px;}
  .bgm-title-row{display:flex;align-items:baseline;gap:10px;}
  .bgm-label{font-size:9.5px;letter-spacing:.22em;color:rgba(var(--c-purple-rgb),0.5);font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;flex-shrink:0;}
  .bgm-title{font-size:13.5px;letter-spacing:.04em;color:var(--ink-on);font-family:"Pretendard Variable",sans-serif;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bgm-seek-row{display:flex;align-items:center;gap:10px;}
  .bgm-time{font-size:11.5px;color:rgba(var(--c-cyan-rgb),0.5);font-family:"Barlow Condensed",monospace;letter-spacing:.08em;flex-shrink:0;width:34px;}
  .bgm-time.r{text-align:right;}
  /* 커스텀 슬라이더 — fill과 thumb가 동일 % */
  .bgm-slider{position:relative;height:14px;display:flex;align-items:center;cursor:pointer;flex:1;touch-action:none;}
  .bgm-slider.vol{flex:0 0 84px;width:84px;}
  .bgm-slider-track{position:relative;width:100%;height:4px;border-radius:2px;background:rgba(var(--w-rgb),0.1);overflow:visible;}
  .bgm-slider-fill{position:absolute;top:0;left:0;height:100%;border-radius:2px;}
  .bgm-slider-thumb{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;transform:translate(-50%,-50%);transition:transform .1s;}
  .bgm-slider:hover .bgm-slider-thumb{transform:translate(-50%,-50%) scale(1.18);}
  .bgm-slider.seek .bgm-slider-fill{background:#b14dff;box-shadow:0 0 8px rgba(var(--c-purple-rgb),0.5);}
  .bgm-slider.seek .bgm-slider-thumb{background:#b14dff;box-shadow:0 0 10px rgba(var(--c-purple-rgb),0.9);}
  .bgm-slider.vol .bgm-slider-fill{background:#2de2ff;box-shadow:0 0 8px rgba(var(--c-cyan-rgb),0.5);}
  .bgm-slider.vol .bgm-slider-thumb{background:#2de2ff;box-shadow:0 0 10px rgba(var(--c-cyan-rgb),0.9);}
  .bgm-vol-row{display:flex;align-items:center;gap:8px;flex-shrink:0;}
  .bgm-vol-icon{font-size:14.5px;color:rgba(var(--c-cyan-rgb),0.4);flex-shrink:0;}
  .bs-timeline{display:flex;flex-direction:column;gap:0;}
  .bs-tl-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid rgba(var(--w-rgb),0.04);}
  .bs-tl-row:last-child{border-bottom:none;}
  .bs-tl-time{font-size:12.5px;color:rgba(var(--c-cyan-rgb),0.45);width:36px;flex-shrink:0;letter-spacing:.08em;font-family:"Pretendard Variable",sans-serif;font-weight:700;}
  .bs-tl-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
  .bs-tl-sub{font-size:11.5px;padding:2px 7px;letter-spacing:.1em;flex-shrink:0;font-family:"Pretendard Variable",sans-serif;font-weight:800;text-transform:uppercase;border:1px solid;border-radius:2px;}
  .bs-tl-txt{font-size:15px;color:var(--ink-on);flex:1;font-family:"Pretendard Variable",sans-serif;}
  /* 클로징 */
  .bs-closing-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:20px 0;text-align:center;}
  /* eyebrow 양쪽 라인 */
  .bs-closing-eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:10.5px;font-weight:800;letter-spacing:.26em;color:rgba(var(--c-cyan-rgb),0.45);text-transform:uppercase;font-family:"Pretendard Variable",sans-serif;}
  .bs-closing-eyebrow::before,.bs-closing-eyebrow::after{content:'';display:block;width:32px;height:1px;background:linear-gradient(to right,transparent,var(--line-strong));}
  .bs-closing-eyebrow::before{transform:scaleX(-1);}
  /* 명언 카드 */
  .bs-quote-card{position:relative;max-width:560px;padding:28px 36px;border:1px solid rgba(var(--w-rgb),0.07);border-radius:14px;background:rgba(var(--w-rgb),0.02);box-shadow:inset 0 1px 0 rgba(var(--w-rgb),0.05);overflow:hidden;}
  /* 뒤에 깔리는 대형 따옴표 */
  .bs-quote-card::before{
    content:'\201C';
    position:absolute;top:-10px;left:12px;
    font-size:160px;font-weight:900;line-height:1;
    color:rgba(var(--accent-rgb),0.06);
    font-family:"Pretendard Variable",sans-serif;
    pointer-events:none;user-select:none;
    letter-spacing:-.05em;
  }
  .bs-quote-card::after{
    content:'\201D';
    position:absolute;bottom:-40px;right:12px;
    font-size:160px;font-weight:900;line-height:1;
    color:rgba(var(--c-cyan-rgb),0.05);
    font-family:"Pretendard Variable",sans-serif;
    pointer-events:none;user-select:none;
    letter-spacing:-.05em;
  }
  .bs-quote-text{font-size:22px;font-weight:800;color:var(--ink);line-height:1.5;font-family:"Pretendard Variable",sans-serif;letter-spacing:-.01em;position:relative;z-index:1;}
  /* 그라디언트 구분선 */
  .bs-quote-divider{width:100%;height:1px;background:linear-gradient(to right,transparent,var(--line-strong) 50%,transparent);margin:4px 0;}
  .bs-quote-author{font-size:12.5px;letter-spacing:.22em;color:rgba(var(--c-cyan-rgb),0.5);font-family:"Pretendard Variable",sans-serif;font-weight:700;}
  /* 음악 카드 */
  .bs-music-card{display:flex;align-items:center;gap:14px;padding:13px 20px;border:1px solid rgba(var(--w-rgb),0.08);cursor:pointer;width:100%;max-width:380px;transition:all .2s;text-decoration:none;background:rgba(var(--w-rgb),0.02);border-radius:8px;}
  .bs-music-card:hover{border-color:rgba(var(--c-cyan-rgb),0.3);background:rgba(var(--c-cyan-rgb),0.04);}
  .bs-music-icon{font-size:18.5px;color:var(--bs-pink);flex-shrink:0;}
  .bs-music-info .bs-music-title{font-size:15px;font-weight:700;color:var(--ink);font-family:"Pretendard Variable",sans-serif;}
  .bs-music-info .bs-music-artist{font-size:13.5px;color:var(--ink-on-faint);margin-top:2px;font-family:"Pretendard Variable",sans-serif;}
  .bs-music-link{font-size:11.5px;color:rgba(var(--c-cyan-rgb),0.45);letter-spacing:.14em;margin-left:auto;flex-shrink:0;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  /* 시작 버튼 */
  .bs-start-btn{padding:13px 52px;background:rgba(var(--accent-rgb),0.1);border:1px solid rgba(var(--accent-rgb),0.5);color:var(--bs-pink);font-size:12.5px;letter-spacing:.26em;cursor:pointer;font-family:"Pretendard Variable","Pretendard",sans-serif;font-weight:800;text-transform:uppercase;transition:all .2s;border-radius:6px;}
  .bs-start-btn:hover{background:rgba(var(--accent-rgb),0.18);}
  /* 에이메스 블록 — 오른쪽에 아바타, 위에 말풍선 */
  .bs-ames-block{display:flex;flex-direction:column;align-items:flex-end;gap:6px;margin-top:18px;}
  .bs-ames-speech{display:flex;flex-direction:column;align-items:flex-end;gap:4px;max-width:320px;}
  .bs-ames-name{font-size:11.5px;color:rgba(var(--c-cyan-rgb),0.4);letter-spacing:.18em;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;padding-right:4px;}
  .bs-ames-bubble{background:var(--bs-bubble);color:var(--ink-on);font-size:15px;line-height:1.65;padding:14px 18px;border:1px solid rgba(var(--c-cyan-rgb),0.25);border-radius:12px 12px 0 12px;font-family:"Pretendard Variable","Pretendard",sans-serif;opacity:0;transform:translateY(6px);transition:opacity .4s,transform .4s;max-width:440px;text-align:right;}
  .bs-ames-bubble.show{opacity:1;transform:translateY(0);}
  .bs-ames-avatar-wrap{position:relative;width:96px;height:96px;flex-shrink:0;}
  .bs-ames-avatar-wrap img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
  .bs-ames-avatar-wrap::after{content:'';position:absolute;inset:-3px;border:1.5px solid rgba(var(--c-cyan-rgb),0.4);border-radius:50%;animation:ames-pulse 2.2s ease-in-out infinite;}
  @keyframes ames-pulse{0%,100%{opacity:.35;transform:scale(1);}50%{opacity:.75;transform:scale(1.06);}}
  .bs-ames-float{position:absolute;bottom:18px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:5px;z-index:10;pointer-events:none;max-width:280px;}
  .bs-ames-tag{font-size:10.5px;color:rgba(var(--c-cyan-rgb),0.4);letter-spacing:.16em;font-family:"Pretendard Variable",sans-serif;font-weight:700;text-transform:uppercase;}
  .bs-ames-cursor{display:inline-block;width:5px;height:10px;background:var(--accent);margin-left:2px;vertical-align:middle;animation:bsblink 1s infinite;}
  @keyframes bsblink{0%,100%{opacity:1;}50%{opacity:0;}}
  /* 하단 바 */
  .brief-footer{display:flex;align-items:center;justify-content:space-between;padding:11px 26px;border-top:1px solid rgba(var(--c-cyan-rgb),0.08);background:rgba(var(--c-cyan-rgb),0.02);position:relative;z-index:2;}
  .bs-comp-dot.done{background:var(--good);border-color:var(--good);}
  .bs-fb-head.good{color:var(--good);}
  .bs-fb-head.warn{color:var(--warn);}
  /* 에이메스 그리팅 브리핑 버튼 */
  .ames-briefing-actions{display:flex;gap:7px;margin-top:10px;}
  .ames-brief-btn{flex:1;padding:8px 0;border-radius:8px;border:1px solid var(--line);background:rgba(var(--w-rgb),0.05);color:var(--ink);cursor:pointer;font-size:13.5px;font-family:var(--font);font-weight:600;transition:all 0.15s;}
  .ames-brief-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 3px 10px rgba(var(--accent-rgb),0.3);}
  html[data-theme="light"] .ames-brief-btn.primary{box-shadow:0 2px 8px rgba(59,127,245,0.25);}
  html[data-theme="light"] .ames-brief-btn{background:var(--bg-soft);}
  .ames-brief-btn:hover{filter:brightness(1.15);}
  /* 피드백 컨디션 */
  .fd-inc-list{display:flex; flex-direction:column; gap:6px;}
  .fd-inc-row{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 10px; background:var(--bg-soft); border-radius:9px; flex-wrap:wrap;}
  .fd-inc-info{display:flex; align-items:baseline; gap:7px; min-width:0; flex-wrap:wrap;}
  .fd-inc-subj{font-size:11.5px; font-weight:800; color:var(--ink-faint);}
  .fd-inc-title{font-size:13.5px; font-weight:600; color:var(--ink);}
  .fd-inc-time{font-size:11.5px; color:var(--ink-faint); font-variant-numeric:tabular-nums;}
  .fd-inc-btns{display:flex; gap:6px; flex:0 0 auto;}
  .feed-cond-label input{display:none;}
  .feed-cond-btn{display:block;padding:8px 14px;border-radius:10px;border:1px solid var(--line);cursor:pointer;font-size:14.5px;transition:all 0.12s;user-select:none;}
  .feed-cond-label input:checked + .feed-cond-btn{background:rgba(var(--accent-rgb),0.15);border-color:var(--accent);color:var(--accent);}
  /* 피드백 집중도 1-5 */
  .fd-focus-label{flex:1;}
  .fd-focus-label input{display:none;}
  .fd-focus-btn{display:block;text-align:center;padding:9px 0;border-radius:9px;border:1px solid var(--line);cursor:pointer;font-size:15px;font-weight:800;font-family:var(--font-num);color:var(--ink-faint);transition:all 0.12s;user-select:none;}
  .fd-focus-label input:checked + .fd-focus-btn{background:rgba(var(--c-cyan-rgb),0.15);border-color:var(--bs-cyan);color:var(--bs-cyan);box-shadow:0 0 12px rgba(var(--c-cyan-rgb),0.25);}
  /* 피드백 감정 칩 */
  .fd-mood-label input{display:none;}
  .fd-mood-btn{display:block;padding:6px 13px;border-radius:99px;border:1px solid var(--line);cursor:pointer;font-size:14px;font-weight:700;color:var(--ink-faint);transition:all 0.12s;user-select:none;}
  .fd-mood-label input:checked + .fd-mood-btn{background:color-mix(in srgb, var(--mc) 16%, transparent);border-color:var(--mc);color:var(--mc);box-shadow:0 0 12px color-mix(in srgb, var(--mc) 30%, transparent);}
  /* ===== 피드백 슬라이드 (브리핑 디자인 공유) ===== */
  /* ② achievement */
  .fd-ach-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;}
  .fd-ach-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.07);border-radius:6px;padding:10px 13px;}
  .fd-ach-top{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
  .fd-ach-sub{font-size:12.5px;font-weight:800;flex-shrink:0;padding:2px 7px;border-radius:3px;letter-spacing:.04em;font-family:"Pretendard Variable",sans-serif;}
  .fd-ach-name{font-size:14.5px;color:var(--ink-on);font-family:"Pretendard Variable",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;}
  .fd-ach-gain{font-size:13.5px;font-weight:800;color:var(--bs-mint);flex-shrink:0;font-family:"Barlow Condensed",monospace;letter-spacing:.04em;}
  .fd-ach-track{position:relative;height:6px;background:rgba(var(--w-rgb),0.04);border-radius:99px;overflow:hidden;}
  .fd-ach-base{position:absolute;top:0;left:0;height:100%;border-radius:99px;}
  .fd-ach-delta{position:absolute;top:0;height:100%;border-radius:99px;animation:fdGainGrow .9s cubic-bezier(.22,1,.36,1);}
  .fd-ach-sep{position:absolute;top:0;width:2px;height:100%;background:rgba(var(--w-rgb),0.55);margin-left:-1px;}
  @keyframes fdGainGrow{from{width:0 !important;}}
  .fd-ach-bar-wrap{position:relative;margin-bottom:5px;}
  .fd-ach-ddm{position:absolute;top:0;display:flex;flex-direction:column;align-items:center;transform:translateX(-50%);}
  .fd-ach-ddpin{display:block;font-size:10.5px;font-weight:800;white-space:nowrap;padding:1px 5px;border-radius:2px;font-family:"Barlow Condensed",monospace;letter-spacing:.08em;margin-bottom:2px;}
  .fd-ach-ddline{width:1.5px;flex:1;min-height:3px;border-radius:1px;opacity:.75;}
  .fd-ach-ddaybadge{font-size:11.5px;font-weight:800;padding:1px 6px;border-radius:3px;border:1px solid;font-family:"Barlow Condensed",monospace;letter-spacing:.06em;flex-shrink:0;}
  .fd-ach-gain2{font-size:14.5px;font-weight:900;flex-shrink:0;font-family:"Barlow Condensed",monospace;letter-spacing:.04em;}
  .fd-ach-gain2 .gu{font-size:12px;font-weight:500;margin-left:2px;opacity:.7;}
  .fd-ach-bottom{display:flex;align-items:center;font-size:12.5px;font-family:"Pretendard Variable",sans-serif;margin-top:4px;}
  .fd-ach-predict{margin-left:auto;font-size:11.5px;color:var(--ink-on-faint);font-style:italic;white-space:nowrap;padding-left:8px;}
  .fd-ach-empty{display:flex;flex-direction:column;align-items:center;gap:14px;padding:34px 0 26px;}
  .fd-ach-empty-icon{font-size:38px;opacity:.7;}
  .fd-ach-empty-txt{font-size:14.5px;color:var(--ink-on-soft);text-align:center;line-height:1.7;font-family:"Pretendard Variable",sans-serif;}
  .fd-ach-empty-txt b{color:var(--bs-mint);font-weight:700;}
  .fd-ach-subtitle{font-size:13.5px;color:var(--ink-on-faint);margin:-2px 0 12px;font-family:"Pretendard Variable",sans-serif;}
  .fd-ach-summary{display:flex;gap:24px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(var(--w-rgb),0.06);}
  .fd-ach-sitem{display:flex;flex-direction:column;gap:3px;}
  .fd-ach-slabel{font-size:11px;letter-spacing:.14em;color:var(--ink-on-faint);text-transform:uppercase;font-weight:700;font-family:"Pretendard Variable",sans-serif;}
  .fd-ach-sval{font-size:20px;font-weight:900;color:var(--ink);line-height:1;font-family:"Pretendard Variable",sans-serif;}
  .fd-ach-sval .su{font-size:12.5px;color:var(--ink-on-faint);font-weight:400;margin-left:2px;}
  /* ③ progress_pulse */
  .fd-focus-dots{display:flex;gap:2px;justify-content:center;height:5px;align-items:center;}
  .fd-focus-dot{width:3px;height:3px;border-radius:50%;background:rgba(var(--w-rgb),0.12);}
  .fd-focus-dot.on{background:#2de2ff;box-shadow:0 0 4px rgba(var(--c-cyan-rgb),0.7);}
  .fd-legend{font-size:12px;color:var(--ink-on-faint);letter-spacing:.04em;margin-top:12px;text-align:center;font-family:"Pretendard Variable",sans-serif;font-weight:500;}
  /* ④ feedback_main */
  .fd-fb-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;}
  .fd-fb-col{background:rgba(var(--w-rgb),0.025);border:1px solid rgba(var(--w-rgb),0.06);border-radius:4px;padding:12px 13px;}
  .fd-fb-col.good{border-left:3px solid rgba(43,245,200,0.5);}
  .fd-fb-col.warn{border-left:3px solid rgba(var(--accent-rgb),0.45);}
  .fd-fb-head{font-size:11.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;margin-bottom:9px;}
  .fd-fb-head.good{color:var(--bs-mint);}
  .fd-fb-head.warn{color:var(--bs-pink);}
  .fd-fb-item-top{display:flex;align-items:flex-start;gap:6px;font-size:14.5px;color:var(--ink-on);line-height:1.55;padding:4px 0;font-family:"Pretendard Variable",sans-serif;border-bottom:1px solid rgba(var(--w-rgb),0.04);}
  .fd-fb-item-top:last-child{border-bottom:none;}
  .fd-fb-mark.good{color:var(--bs-mint);font-weight:800;flex-shrink:0;}
  .fd-fb-mark.warn{color:var(--bs-pink);font-weight:800;flex-shrink:0;}
  .fd-fb-subj-pill{font-size:11.5px;font-weight:800;padding:1px 6px;border-radius:3px;flex-shrink:0;margin-top:2px;font-family:"Pretendard Variable",sans-serif;letter-spacing:.02em;}
  .fd-fb-repeat-badge{font-size:10.5px;font-weight:800;padding:1px 5px;border-radius:2px;background:rgba(255,77,109,0.15);color:var(--bs-red);border:1px solid rgba(255,77,109,0.3);flex-shrink:0;margin-top:3px;margin-left:auto;font-family:"Barlow Condensed",monospace;letter-spacing:.06em;white-space:nowrap;}
  /* 오답 분석 */
  .fd-err-section{margin-top:12px;background:rgba(255,193,77,0.05);border:1px solid rgba(255,193,77,0.18);border-radius:5px;padding:10px 13px;}
  .fd-err-label{font-size:11px;letter-spacing:.15em;color:rgba(255,193,77,0.55);font-weight:700;text-transform:uppercase;margin-bottom:7px;font-family:"Pretendard Variable",sans-serif;}
  .fd-err-row{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-bottom:4px;}
  .fd-err-pill{font-size:12.5px;font-weight:800;padding:2px 8px;border-radius:3px;font-family:"Pretendard Variable",sans-serif;}
  .fd-err-reason{font-size:12.5px;padding:2px 8px;border-radius:3px;background:rgba(var(--w-rgb),0.07);color:var(--ink-on-soft);font-family:"Pretendard Variable",sans-serif;}
  .fd-err-sep{color:var(--ink-on-faint);font-size:12.5px;}
  .fd-err-memo{font-size:13px;color:var(--ink-on-soft);margin-top:6px;padding-top:6px;border-top:1px solid rgba(var(--w-rgb),0.05);font-family:"Pretendard Variable",sans-serif;line-height:1.5;}
  /* 핵심 TO-DO */
  .fd-todo-box{margin-top:10px;background:rgba(var(--accent-rgb),0.07);border:1px solid rgba(var(--accent-rgb),0.22);border-radius:5px;padding:9px 13px;display:flex;gap:10px;align-items:flex-start;}
  .fd-todo-label{font-size:11px;letter-spacing:.12em;color:rgba(var(--accent-rgb),0.65);font-weight:700;text-transform:uppercase;flex-shrink:0;white-space:nowrap;margin-top:2px;font-family:"Pretendard Variable",sans-serif;}
  .fd-todo-text{font-size:14.5px;color:#f0e0ff;font-weight:700;line-height:1.5;font-family:"Pretendard Variable",sans-serif;}
  /* weekly pattern 배지 */
  .fd-wp-badge{display:inline-block;font-size:10.5px;font-weight:800;padding:1px 6px;border-radius:2px;background:rgba(var(--c-purple-rgb),0.2);color:var(--bs-purple);border:1px solid rgba(var(--c-purple-rgb),0.3);font-family:"Barlow Condensed",monospace;letter-spacing:.06em;vertical-align:middle;margin-left:6px;}
  .fd-week-pattern{margin-top:12px;background:rgba(var(--c-purple-rgb),0.07);border:1px solid rgba(var(--c-purple-rgb),0.22);border-radius:5px;padding:11px 14px;font-size:14.5px;color:var(--ink);font-family:"Pretendard Variable",sans-serif;line-height:1.55;}
  .fd-week-pattern-label{display:block;font-size:10.5px;letter-spacing:.2em;color:rgba(var(--c-purple-rgb),0.7);font-weight:800;text-transform:uppercase;margin-bottom:6px;}
  /* ⑤ tomorrow_plan */
  .fd-prio-list{display:flex;flex-direction:column;gap:9px;}
  .fd-prio-card{display:flex;align-items:flex-start;gap:12px;background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.06);border-radius:4px;padding:11px 14px;}
  .fd-prio-rank{font-size:26px;font-weight:900;line-height:1;flex-shrink:0;font-family:"Barlow Condensed",monospace;width:24px;text-align:center;}
  .fd-prio-body{flex:1;min-width:0;}
  .fd-prio-name{font-size:16px;display:flex;align-items:baseline;gap:8px;font-family:"Pretendard Variable",sans-serif;}
  .fd-prio-h{font-size:13.5px;color:var(--ink-on-soft);font-family:"Barlow Condensed",monospace;font-weight:600;}
  .fd-prio-reason{font-size:13.5px;color:var(--ink-on-soft);line-height:1.5;margin-top:3px;font-family:"Pretendard Variable",sans-serif;}
  .fd-hard-note{margin-top:14px;background:rgba(255,214,0,0.05);border:1px solid rgba(255,214,0,0.18);border-radius:4px;padding:11px 14px;font-size:14.5px;color:var(--ink-on);font-family:"Pretendard Variable",sans-serif;line-height:1.5;}
  .fd-hard-label{display:block;font-size:10.5px;letter-spacing:.16em;color:rgba(255,214,0,0.7);font-weight:800;text-transform:uppercase;margin-bottom:5px;}
  .fd-slot{border:1px solid;border-radius:7px;padding:9px 12px;margin-bottom:7px;}
  .fd-slot-head{display:flex;align-items:center;gap:9px;}
  .fd-slot-time{font-size:13.5px;color:var(--ink-on-soft);font-family:"Barlow Condensed",monospace;font-weight:600;letter-spacing:.03em;}
  .fd-slot-energy{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:8px;border:1px solid;margin-left:auto;}
  .fd-slot-subs{display:flex;flex-direction:column;gap:3px;margin-top:6px;padding-left:2px;}
  .fd-slot-sub{display:flex;align-items:center;gap:7px;font-size:14px;font-family:"Pretendard Variable",sans-serif;}
  .fd-slot-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;}
  .fd-slot-note{font-size:12px;color:var(--ink-on-faint);margin-top:4px;padding-left:2px;font-style:italic;font-family:"Pretendard Variable",sans-serif;}
  .fd-apply-btn{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:11px 0;background:rgba(43,245,200,0.1);border:1px solid rgba(43,245,200,0.3);border-radius:8px;font-size:14.5px;font-weight:800;color:var(--bs-mint);cursor:pointer;font-family:"Pretendard Variable",sans-serif;transition:all .15s;}
  .fd-apply-btn:hover{background:rgba(43,245,200,0.18);box-shadow:0 0 18px rgba(43,245,200,0.25);}
  .fd-apply-btn svg{width:15px;height:15px;}
  .fd-sum-row{display:flex;gap:0;margin-top:18px;padding-top:14px;border-top:1px solid rgba(var(--c-cyan-rgb),0.07);}
  .fd-sum-item{flex:1;padding-right:12px;border-right:1px solid rgba(var(--w-rgb),0.05);}
  .fd-sum-item:last-child{border-right:none;padding-right:0;}
  .fd-sum-label{font-size:11px;letter-spacing:.14em;color:var(--ink-on-faint);font-weight:700;text-transform:uppercase;margin-bottom:5px;font-family:"Pretendard Variable",sans-serif;}
  .fd-sum-val{font-size:24px;font-weight:900;color:var(--ink);line-height:1;font-family:"Pretendard Variable",sans-serif;}
  .fd-sum-val .fd-sum-unit{font-size:13.5px;color:var(--ink-on-faint);font-weight:400;margin-left:2px;}
  .fd-sum-val.good{color:var(--bs-mint);}
  .fd-sum-val.warn{color:var(--bs-red);}
  /* 홈 액션 바 */
  .home-brief-bar{display:flex;gap:10px;margin-bottom:0;}
  .home-brief-btn{flex:1;padding:13px 14px;border-radius:14px;border:1px solid var(--line);background:var(--bg-soft);color:var(--ink);cursor:pointer;font-size:14.5px;font-family:var(--font);font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;transition:all 0.15s;}
  .home-brief-btn:hover{background:rgba(var(--w-rgb),0.07);border-color:var(--line-strong);transform:translateY(-1px);}
  .home-brief-btn.accent{border-color:rgba(var(--accent-rgb),0.35);background:rgba(var(--accent-rgb),0.07);color:var(--accent);}
  .home-brief-btn.accent:hover{background:rgba(var(--accent-rgb),0.12);}
  /* 주간 미니 바차트 */
  .weekly-mini-chart{display:flex;gap:5px;align-items:flex-end;height:70px;margin-top:10px;}
  .wmc-bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;height:100%;}
  .wmc-bar{flex:1;width:100%;background:rgba(var(--w-rgb),0.07);border-radius:4px;overflow:hidden;position:relative;min-height:4px;}
  .wmc-fill{position:absolute;bottom:0;left:0;right:0;background:var(--accent);border-radius:4px 4px 0 0;opacity:0.75;}
  .wmc-label{font-size:11px;color:var(--ink-faint);}
  /* T(시간) 셀 */
  .tb-time-cell{width:52px; text-align:center; border-left:1px solid rgba(var(--w-rgb),0.05); border-right:1px solid rgba(var(--w-rgb),0.05); padding:0; vertical-align:middle;}
  .tb-hour{font-size:12px; font-family:var(--font-num); font-weight:700; padding:8px 4px; letter-spacing:0.02em; line-height:1;}
  .tb-hour.am{color:var(--ink-faint);}
  .tb-hour.pm{color:var(--kr); opacity:0.85;}
  /* DO 블록 셀 */
  .tb-do-cell{width:46%; padding:6px 10px; vertical-align:middle; overflow:hidden;}
  .tb-do-blocks{display:flex; gap:3px; justify-content:center;}
  .tb-do-block{flex:1; height:26px; border-radius:4px; background:rgba(var(--w-rgb),0.06); cursor:pointer; border:1px solid rgba(var(--w-rgb),0.08); transition:all 0.12s; min-width:0;}
  .tb-do-block:hover{background:rgba(var(--w-rgb),0.14); border-color:var(--ink-on-faint);}
  .tb-do-block.planned{background:var(--sc,rgba(var(--w-rgb),0.15)); border-color:var(--sc,rgba(var(--w-rgb),0.2)); opacity:0.22;}
  .tb-do-block.planned:hover{opacity:0.4;}
  .tb-do-block.on{background:var(--sc,var(--accent)); border-color:var(--sc,var(--accent)); box-shadow:0 0 6px var(--sc,var(--accent)); opacity:1;}
  .tb-do-block.on:hover{filter:brightness(1.15);}
  /* Plan 선택 모달 */
  .tb-pf-label{font-size:12.5px; font-weight:700; letter-spacing:0.08em; color:var(--ink-faint); text-transform:uppercase; margin-bottom:8px;}
  .tb-pf-subjects{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:4px;}
  .tb-pf-subj{padding:6px 13px; border-radius:8px; border:1px solid var(--line-strong); background:var(--bg-soft); color:var(--ink-soft); font-size:14.5px; font-family:var(--font); cursor:pointer; transition:all 0.12s;}
  .tb-pf-subj:hover{border-color:var(--accent); color:var(--accent);}
  .tb-pf-subj.active{border-color:var(--accent); background:var(--accent-soft); color:var(--accent); font-weight:700;}
  .tb-pf-books{display:flex; flex-direction:column; gap:5px;}
  .tb-pf-book{padding:8px 12px; border-radius:8px; border:1px solid var(--line); background:var(--bg-soft); color:var(--ink); font-size:14.5px; font-family:var(--font); cursor:pointer; text-align:left; transition:all 0.12s;}
  .tb-pf-book:hover{border-color:var(--sc,var(--accent)); background:rgba(var(--w-rgb),0.04);}
  .tb-pf-book.active{border-color:var(--sc,var(--accent)); background:var(--scs,var(--accent-soft)); font-weight:600;}
  .task-row.done{opacity:0.6;}
  .task-row.done .task-title{text-decoration:line-through; color:var(--ink-soft);}

  /* ===== Heatmap (잔디) ===== */
  .heatmap-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:4px;}
  .heatmap{display:flex; gap:3px; min-width:max-content;}
  .hm-col{display:flex; flex-direction:column; gap:3px;}
  .hm-cell{width:13px; height:13px; border-radius:3px; background:var(--bg-soft2); flex:0 0 auto;}
  .hm-cell.lv0{background:var(--bg-soft2);}
  .hm-cell.lv1{background:var(--accent-soft);}
  .hm-cell.lv2{background:#e0a589;}
  .hm-cell.lv3{background:#c66b47;}
  .hm-cell.lv4{background:var(--accent);}
  .hm-cell.future{background:transparent; border:1px dashed var(--line);}

  /* ===== Progress bar ===== */
  .pbar-block{margin:0;}
  .pbar-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px;}
  .pbar-label{font-size:14.5px; color:var(--ink-soft); font-weight:500;}
  .pbar-pct{font-size:15px; font-weight:800; color:var(--ink);}
  .pbar-track{
    position:relative; height:16px; background:var(--bg-soft2); border-radius:99px; overflow:hidden;
  }
  .pbar-fill{
    position:absolute; left:0; top:0; height:100%; border-radius:99px; min-width:0;
    transition:width 0.9s cubic-bezier(0.22,1,0.36,1);
  }
  .pbar-accent{background:linear-gradient(90deg, #b14dff, #ff2e88); box-shadow:0 0 12px rgba(var(--accent-rgb),0.5);}
  .pbar-time{background:linear-gradient(90deg, #2de2ff, #2b8fff); box-shadow:0 0 12px rgba(var(--c-cyan-rgb),0.45);}
  .pbar-done{background:linear-gradient(90deg, #2bf5c8, #2de2ff); box-shadow:0 0 12px rgba(43,245,200,0.5);}
  .pbar-tip{
    position:absolute; right:0; top:0; height:100%; width:14px; border-radius:99px;
    background:rgba(var(--w-rgb),0.55); filter:blur(2px);
  }
  .pbar-milestone{
    position:absolute; top:50%; width:3px; height:8px; transform:translate(-50%,-50%);
    background:var(--bg-card); opacity:0.6; border-radius:2px; z-index:2;
  }
  .pbar-milestone.reached{opacity:0.25;}
  @media (prefers-reduced-motion: reduce){
    .pbar-fill{transition:none;}}

  .streak-banner{display:flex; align-items:center; gap:16px; margin-bottom:14px;}
  .streak-icon{
    width:48px; height:48px; border-radius:14px; flex:0 0 auto;
    display:flex; align-items:center; justify-content:center;
    background:var(--bg-soft2); color:var(--ink-faint);
  }
  .streak-icon .ic{width:24px; height:24px;}
  .streak-icon.active{background:var(--accent-soft); color:var(--accent); box-shadow:var(--glow-accent);}
  .streak-num{font-size:26px; font-weight:800; line-height:1.1;}
  .streak-num span{font-size:15px; font-weight:600; color:var(--ink-soft); margin-left:5px;}
  .badge.book-badge{display:inline-flex; align-items:center; gap:3px; background:var(--bg-soft2); color:var(--ink-soft);}
  .badge.book-badge .ic{width:12px; height:12px;}

  .pace-msg{
    margin-top:12px; padding:8px 12px; border-radius:var(--radius-s); font-size:14px; font-weight:500;
  }
  .pace-msg.good{background:var(--good-soft); color:var(--good);}
  .pace-msg.warn{background:var(--warn-soft); color:var(--warn);}
  .pace-msg.bad{background:var(--bad-soft); color:var(--bad);}

  /* ===== Subject mini bars ===== */
  .subj-bar-row{display:flex; align-items:center; gap:12px; margin-bottom:12px;}
  .subj-bar-row:last-child{margin-bottom:0;}
  .subj-bar-label{flex:0 0 52px;}
  .subj-bar-track{flex:1; height:14px; background:var(--bg-soft2); border-radius:99px; overflow:hidden;}
  .subj-bar-fill{height:100%; border-radius:99px; width:0; transition:width 0.9s cubic-bezier(0.22,1,0.36,1);}
  .subj-bar-val{flex:0 0 auto; font-size:14.5px; font-weight:700; color:var(--ink); min-width:38px; text-align:right;}
  .sb-kr{background:linear-gradient(90deg,#1a8fb0,var(--kr)); box-shadow:0 0 8px rgba(var(--c-cyan-rgb),0.4);}
  .sb-math{background:linear-gradient(90deg,#7a2dd0,var(--math)); box-shadow:0 0 8px rgba(var(--c-purple-rgb),0.4);}
  .sb-eng{background:linear-gradient(90deg,#1aa888,var(--eng)); box-shadow:0 0 8px rgba(43,245,200,0.4);}
  .sb-expl{background:linear-gradient(90deg,#cc6600,#ff9f43); box-shadow:0 0 8px rgba(255,159,67,0.4);}
  .sb-expl2{background:linear-gradient(90deg,#c03030,#ff6b6b); box-shadow:0 0 8px rgba(255,107,107,0.4);}
  .sb-etc{background:linear-gradient(90deg,#6d6499,var(--ink-soft));}

  /* ===== Roadmap ===== */
  .subj-chips{display:flex; gap:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; margin-bottom:16px; padding-bottom:2px;}
  .subj-chip{
    flex:0 0 auto; padding:7px 14px; border-radius:99px; border:1px solid var(--line-strong);
    background:var(--bg-card); color:var(--ink-soft); font-size:14.5px; font-weight:500; cursor:pointer;
    font-family:var(--font); transition:all 0.12s; white-space:nowrap;
  }
  .subj-chip:hover{border-color:var(--accent);}
  .subj-chip.active{background:var(--accent); color:#fdf8f1; border-color:var(--accent); font-weight:600;}
  .subj-chip .chip-n{opacity:0.7; font-size:12.5px;}
  .roadmap{display:flex; flex-direction:column; gap:12px;}
  .phase-card{display:flex; gap:14px; background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l); padding:16px 18px; box-shadow:var(--shadow-card);}
  .phase-card.current{border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-soft), var(--shadow-card);}
  .phase-line{flex:0 0 4px; border-radius:2px; background:var(--line-strong);}
  .phase-card.current .phase-line{background:var(--accent);}
  .phase-body{flex:1; min-width:0;}
  .phase-head{display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap;}
  .phase-period{font-size:16px; font-weight:700;}
  .phase-goal{margin:0; font-size:15px; color:var(--ink-soft); line-height:1.55; white-space:pre-wrap;}

  /* ===== Roadmap Gantt v2 ===== */
  .rmg-toolbar{display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap;}
  .rmg-stats{display:flex; align-items:center; gap:14px; font-size:12.5px; color:var(--ink-faint); font-weight:600;}
  .rmg-stats b{color:var(--ink-soft); font-weight:800;}
  .rmg-stats .dot{width:6px; height:6px; border-radius:50%; display:inline-block; margin-right:5px;}
  .rmg-scroll{overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--line); border-radius:var(--radius-l); background:var(--bg-card); box-shadow:var(--shadow-card);}
  .rmg{min-width:680px;}
  .rmg-head{display:flex; background:var(--bg-soft); border-bottom:1px solid var(--line); border-radius:var(--radius-l) var(--radius-l) 0 0;}
  .rmg-corner{flex:0 0 88px; border-right:1px solid var(--line);}
  .rmg-cols{flex:1; display:flex; position:relative;}
  .rmg-mcell{flex:1; text-align:center; padding:13px 0; font-size:13px; font-weight:600; color:var(--ink-faint); letter-spacing:0.01em; position:relative;}
  .rmg-mcell.cur{color:var(--accent); font-weight:800;}
  .rmg-mcell.cur::after{content:''; position:absolute; left:50%; bottom:0; transform:translateX(-50%); width:20px; height:2.5px; background:var(--accent); border-radius:2px 2px 0 0;}
  .rmg-mcell.exam{color:var(--bad); font-size:12.5px; font-weight:800;}
  .rmg-today-tag{position:absolute; bottom:-9px; transform:translateX(-50%); background:var(--accent); color:#fff; font-size:10px; font-weight:800; padding:2px 8px; border-radius:99px; white-space:nowrap; z-index:6; pointer-events:none;}
  .rmg-body{padding:16px 18px 18px;}
  .rmg-row{display:flex; align-items:stretch; border-top:1px solid var(--line);}
  .rmg-row.first{border-top:none;}
  .rmg-slabel{flex:0 0 88px; display:flex; align-items:center; gap:8px; padding:0 10px 0 12px; position:relative;}
  .rmg-slabel::before{content:''; position:absolute; left:0; top:10px; bottom:10px; width:3px; border-radius:0 3px 3px 0; background:var(--rl-c, var(--line-strong));}
  .rmg-sdot{width:8px; height:8px; border-radius:50%; flex:0 0 auto;}
  .rmg-sname{font-size:14.5px; font-weight:700; white-space:nowrap; color:var(--ink);}
  .rmg-track{flex:1; position:relative;}
  .rmg-grid{position:absolute; inset:0; display:flex; pointer-events:none; z-index:0;}
  .rmg-gcell{flex:1; border-left:1px solid var(--bg-soft);}
  .rmg-gcell:first-child{border-left:none;}
  .rmg-gcell.cur{background:var(--accent-soft); opacity:0.5;}
  .rmg-today{position:absolute; top:-6px; bottom:-6px; width:2px; background:var(--accent); z-index:3; pointer-events:none; border-radius:1px;}
  .rmg-clickcell{position:absolute; top:6px; bottom:6px; z-index:1; cursor:pointer; border-radius:7px; transition:background 0.12s;}
  .rmg-clickcell:hover{background:var(--bg-soft);}
  .rmg-connector{position:absolute; height:2px; z-index:1; opacity:0.4; pointer-events:none;}
  .rmg-bar{position:absolute; z-index:2; border-radius:10px; padding:7px 12px; cursor:pointer; overflow:hidden; display:flex; flex-direction:column; justify-content:center; transition:transform 0.12s ease, box-shadow 0.12s ease;}
  .rmg-bar:hover{transform:translateY(-2px); box-shadow:0 4px 12px rgba(0,0,0,0.10);}
  .rmg-bar.cur{box-shadow:0 1px 3px rgba(0,0,0,0.06);}
  .rmg-bar-t{font-size:13.5px; font-weight:600; line-height:1.32; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .rmg-bar-meta{font-size:11px; opacity:0.75; margin-top:3px; white-space:nowrap; display:flex; align-items:center; gap:5px;}
  .rmg-chip{font-size:9.5px; font-weight:800; padding:1px 6px; border-radius:99px; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,0.10); flex:0 0 auto;}
  .rmg-bar.done{background:var(--bg-soft) !important; border-left:3px solid var(--line-strong) !important; opacity:0.72;}
  .rmg-bar.done .rmg-bar-t,.rmg-bar.done .rmg-bar-meta{color:var(--ink-faint) !important;}
  .rmg-bar.done .rmg-bar-t::before{content:'\2713 '; font-weight:800;}
  .rmg-bar.future{background:var(--bg-card) !important; border:1.5px dashed var(--line-strong) !important; border-left-width:1.5px !important;}
  .rmg-bar.future .rmg-bar-t{color:var(--ink-soft) !important;}
  .rmg-bar.future .rmg-bar-meta{color:var(--ink-faint) !important;}
  .rmg-emptyrow{display:flex; align-items:center; justify-content:center; height:100%; font-size:12.5px; color:var(--ink-faint); opacity:0.35; pointer-events:none;}
  .rmg-memo{margin-top:14px; padding:18px 20px; background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-l); box-shadow:var(--shadow-card);}
  .rmg-memo-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:12px;}
  .rmg-memo-title{font-size:14.5px; font-weight:700; color:var(--ink); display:flex; align-items:center; gap:7px;}
  .rmg-memo-edit{font-size:13px; background:none; border:none; color:var(--ink-faint); cursor:pointer; padding:2px 4px; display:flex; align-items:center; gap:4px;}
  .rmg-memo-edit:hover{color:var(--accent);}
  .rmg-memo-body{font-size:14.5px; color:var(--ink-soft); line-height:1.85; white-space:pre-wrap; padding-left:16px; border-left:3px solid var(--accent-soft);}
  .rmg-memo-empty{font-size:14px; color:var(--ink-faint); opacity:0.6; padding-left:16px; border-left:3px solid var(--line);}

  /* duty calendar cell hover study hours */
  .dc-cell .dc-sh{ opacity:0; transition:opacity .18s; pointer-events:none; }
  .dc-cell:hover .dc-sh{ opacity:1; }

  /* ===== Goals / Kanban ===== */
  .kanban{display:flex; gap:12px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:4px;}
  .kanban-col{flex:1; min-width:200px; background:var(--bg-soft); border-radius:var(--radius-l); padding:12px;}
  .kanban-col-head{font-size:14.5px; font-weight:700; margin-bottom:10px; color:var(--ink-soft);}
  .goal-card{
    position:relative; background:var(--bg-card); border:1px solid var(--line);
    border-radius:var(--radius-m); padding:13px 15px 13px 17px; margin-bottom:8px; box-shadow:var(--shadow-card);
    overflow:hidden;
  }
  .goal-card::before{content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--sc);}
  .kanban-col .goal-card:last-child{margin-bottom:0;}
  .goal-title{margin:0; font-size:15px; font-weight:600; line-height:1.5; word-break:break-word;}
  .goal-card.done{opacity:0.6;}
  .goal-card.done .goal-title{text-decoration:line-through;}
  .goal-card.overdue{box-shadow:0 0 0 1px var(--bad-soft), var(--shadow-card);}
  .goal-card.overdue::before{background:var(--bad);}
  .goal-prog{display:flex; align-items:center; gap:9px; margin-top:9px;}
  .goal-prog-bar{flex:1; height:7px; background:var(--bg-soft2); border-radius:99px; overflow:hidden;}
  .goal-prog-fill{height:100%; border-radius:99px; background:var(--sc); transition:width 0.5s cubic-bezier(0.22,1,0.36,1);}
  .goal-prog-pct{font-size:13.5px; font-weight:800; color:var(--sc); min-width:34px; text-align:right;}
  .goal-foot{display:flex; align-items:center; gap:8px; margin-top:9px; flex-wrap:wrap;}
  .goal-date{font-size:13px; color:var(--ink-faint); font-variant-numeric:tabular-nums;}
  .goal-done-check{display:inline-flex; align-items:center; gap:5px; font-size:13.5px; color:var(--ink-soft); cursor:pointer; user-select:none;}
  .goal-done-check input{width:auto; cursor:pointer; margin:0;}

  /* ===== 진행중 중심 목표 레이아웃 ===== */
  .goals-active-head{display:flex; align-items:center; gap:10px; margin-bottom:14px;}
  .goals-active-title{font-size:18.5px; font-weight:800; color:var(--ink); letter-spacing:0.01em;}
  .goals-active-count{
    font-family:var(--font-num); font-size:14.5px; font-weight:700; color:var(--accent);
    background:var(--accent-soft); border:1px solid var(--accent); border-radius:99px; padding:2px 10px;
    box-shadow:0 0 10px rgba(var(--accent-rgb),0.25);
  }
  .goals-overdue-tag{
    margin-left:auto; font-size:13.5px; font-weight:700; color:var(--bad);
    background:var(--bad-soft); border:1px solid var(--bad); border-radius:99px; padding:3px 11px;
    box-shadow:0 0 12px rgba(255,77,109,0.35); animation:overduePulse 1.8s ease-in-out infinite;
  }
  @keyframes overduePulse{0%,100%{box-shadow:0 0 12px rgba(255,77,109,0.35);} 50%{box-shadow:0 0 20px rgba(255,77,109,0.6);}}
  .goals-active-grid{display:grid; grid-template-columns:1fr; gap:12px; margin-bottom:24px;}
  @media (min-width:720px){ .goals-active-grid{grid-template-columns:repeat(2,1fr);}}
  @media (min-width:1100px){ .goals-active-grid{grid-template-columns:repeat(3,1fr);}}

  /* 진행중 큰 카드 */
  .goal-card.big{padding:16px 18px 16px 20px; margin-bottom:0; border-radius:var(--radius-l);}
  .goal-card.big::before{width:4px;}
  .goal-card.big .goal-title{font-size:16px;}
  /* 초과된 진행중 카드 — 강한 빨강 강조 */
  .goal-card.overdue{
    border-color:var(--bad);
    box-shadow:0 0 0 1px var(--bad), 0 0 20px rgba(255,77,109,0.28), var(--shadow-card);
    background:linear-gradient(135deg, rgba(255,77,109,0.08), transparent 50%), var(--bg-card);
  }
  .goal-card.overdue::before{background:var(--bad); box-shadow:0 0 10px var(--bad);}
  .goal-overdue-banner{
    margin:-2px -2px 10px; padding:6px 12px; border-radius:8px;
    background:var(--bad); color:#fff; font-size:13px; font-weight:700; letter-spacing:0.01em;
    box-shadow:0 0 14px rgba(255,77,109,0.5); text-align:center;
  }
  /* 큰 D-day 뱃지 + 임박 펄스 */
  .dday-badge{font-family:var(--font-num); font-weight:800; font-size:13.5px;}
  .dday-badge.dday-pulse{animation:ddayBadgePulse 1.2s ease-in-out infinite;}
  @keyframes ddayBadgePulse{0%,100%{box-shadow:0 0 8px rgba(255,77,109,0.4);} 50%{box-shadow:0 0 16px rgba(255,77,109,0.8);}}

  /* 예정/완료 — 덜 강조, 접이식 */
  .goals-minor{display:flex; flex-direction:column; gap:8px;}
  .goals-minor-block{background:var(--bg-soft); border-radius:var(--radius-m); overflow:hidden;}
  .goals-minor-head{
    width:100%; display:flex; align-items:center; gap:8px; padding:11px 14px;
    background:transparent; border:none; color:var(--ink-soft); font-family:var(--font);
    font-size:15px; font-weight:700; cursor:pointer; text-align:left;
  }
  .goals-minor-head .muted{font-weight:500;}
  .goals-minor-list{padding:0 12px 12px; display:flex; flex-direction:column; gap:8px;}
  .goals-minor-list .goal-card{margin-bottom:0; background:var(--bg-card);}

  /* ===== 목표 탭 v3: Things3/Linear식 로우 리스트 — 상단 통합 툴바 + 우측 보조 위젯 ===== */
  .gx2-pagewrap{max-width:1080px; margin:0 auto;}

  /* ===== 캘린더 탭: 레일 + 월간 그리드(목표+일정 공유 레인) + 패널 ===== */
  .cal2-wrap{display:grid; grid-template-columns:220px minmax(0,1fr) 300px; gap:14px; align-items:start;}
  .cal2-rail{position:sticky; top:66px; display:flex; flex-direction:column; gap:12px;}
  .cal2-toolbar{display:flex; align-items:center; gap:6px; margin-bottom:10px;}
  .cal2-toolbar-date{font-size:15.5px; font-weight:700; padding:0 4px; color:var(--ink);}
  .cal2-chkrow{display:flex; align-items:center; gap:8px; padding:6px 5px; border-radius:7px; cursor:pointer;}
  .cal2-chkrow:hover{background:var(--bg-soft);}
  .cal2-cbox{width:15px; height:15px; border-radius:5px; border:1.5px solid var(--line-strong); display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; font-size:9px; color:var(--on-solid); font-weight:800;}
  .cal2-chkrow .cname{font-size:12.5px; font-weight:500; color:var(--ink-soft); flex:1;}
  .cal2-chkrow.on .cname{color:var(--ink); font-weight:600;}
  .cal2-duty-legend{display:flex; flex-direction:column; gap:2px;}
  .cal2-duty-item{display:flex; align-items:center; gap:8px; padding:6px 5px; border-radius:7px; cursor:default;}
  .cal2-duty-dot{width:9px; height:9px; border-radius:3px; flex-shrink:0;}
  .cal2-duty-item .lbl{font-size:12px; color:var(--ink-soft); flex:1;}
  .cal2-duty-item .study{font-size:10.5px; color:var(--ink-faint);}

  .cal2-cal{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-m); box-shadow:var(--shadow-card); overflow:hidden;}
  .cal2-dow{display:grid; grid-template-columns:repeat(7,1fr);}
  .cal2-dow div{text-align:left; padding:9px 0 7px 11px; font-size:11.5px; font-weight:600; color:var(--ink-faint); border-right:1px solid var(--line); border-bottom:1px solid var(--line);}
  .cal2-dow div:last-child{border-right:none;}
  .cal2-dow div.su{color:var(--cal-sun);} .cal2-dow div.sa{color:var(--cal-sat);}
  .cal2-week{display:grid; grid-template-columns:repeat(7,1fr); grid-template-rows:32px repeat(3,26px) 20px; border-bottom:1px solid var(--line);}
  .cal2-week:last-child{border-bottom:none;}
  .cal2-cell{grid-row:1/-1; border-right:1px solid var(--line); cursor:pointer; transition:filter .12s; position:relative;}
  .cal2-cell:nth-child(7n){border-right:none;}
  .cal2-cell:hover{filter:brightness(.97);}
  .cal2-cell.suneung{background:color-mix(in srgb, var(--bad) 10%, transparent);}
  .cal2-num{font-size:12px; font-weight:500; color:var(--ink-soft); width:23px; height:23px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; margin:4px 0 0 6px; position:relative; z-index:1;}
  .cal2-cell.dim .cal2-num{opacity:.4;}
  .cal2-cell.sun .cal2-num{color:var(--cal-sun);} .cal2-cell.sat .cal2-num{color:var(--cal-sat);}
  .cal2-cell.holiday .cal2-num{color:var(--cal-sun);}
  .cal2-cell.today .cal2-num{background:var(--accent); color:var(--on-solid); font-weight:700;}
  .cal2-day-flag{position:absolute; top:5px; left:32px; right:4px; font-size:9.5px; font-weight:700; z-index:1; color:var(--bad); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .cal2-duty-flag{position:absolute; top:5px; left:32px; font-size:9px; font-weight:800; z-index:1; color:#fff; padding:2px 6px; border-radius:5px; max-width:56px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .cal2-overflow{grid-row:5; align-self:center; justify-self:start; font-size:10px; font-weight:600; color:var(--ink-faint); padding:1px 6px; margin-left:4px; border-radius:6px;}
  .cal2-overflow:hover{background:var(--bg-soft);}

  .cal2-bar{height:20px; margin:3px 4px; padding:0 7px; border-radius:6px; font-size:11px; font-weight:700; display:flex; align-items:center; gap:5px; overflow:hidden; white-space:nowrap; cursor:pointer; z-index:2; position:relative; transition:filter .12s;}
  .cal2-bar:hover{filter:brightness(.97);}
  .cal2-bar.event{border:1.5px dashed color-mix(in srgb, currentColor 50%, transparent);}
  .cal2-bar.done{opacity:.45;}
  .cal2-bar.cont-l{border-radius:0 6px 6px 0; margin-left:0; padding-left:6px;}
  .cal2-bar.cont-r{border-radius:6px 0 0 6px; margin-right:0;}
  .cal2-bar.faded{opacity:.15;}
  .cal2-bar.selected{box-shadow:0 0 0 2px var(--bg-card), 0 0 0 3.5px var(--ink-soft);}

  .cal2-panel{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-m); box-shadow:var(--shadow-card); overflow:hidden; position:sticky; top:66px; display:flex; flex-direction:column; max-height:calc(100vh - 84px);}
  .cal2-panel-head{padding:13px 15px 11px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:8px;}
  .cal2-panel-head h2{font-size:14px; font-weight:700; color:var(--ink);}
  .cal2-panel-cnt{font-size:11px; font-weight:700; color:var(--accent); background:var(--accent-soft); padding:1px 8px; border-radius:10px;}
  .cal2-panel-body{overflow-y:auto; padding:8px 10px 14px;}
  .cal2-item{padding:9px 9px 8px; border-radius:9px; cursor:pointer;}
  .cal2-item:hover{background:var(--bg-soft);}
  .cal2-item .r1{display:flex; align-items:center; gap:7px;}
  .cal2-item .dot{width:7px; height:7px; border-radius:3px; flex-shrink:0;}
  .cal2-item .ttl{flex:1; font-size:12.5px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .cal2-item .dday{font-size:11px; font-weight:800; flex-shrink:0;}
  .cal2-item .kind{font-size:9.5px; font-weight:700; color:var(--ink-faint); padding-left:14px; margin-top:2px;}
  .cal2-empty{padding:18px 8px; text-align:center; font-size:12.5px; color:var(--ink-faint);}
  .cal2-duty-quickset{display:flex; gap:6px; margin-top:10px; padding-top:10px; border-top:1px solid var(--line); flex-wrap:wrap;}
  .cal2-duty-chip{font-size:11.5px; font-weight:700; padding:5px 10px; border-radius:8px; border:1px solid var(--line-strong); color:var(--ink-soft); background:var(--bg-card); cursor:pointer;}
  .cal2-duty-chip:hover{border-color:var(--ink-faint);}
  .cal2-study-hours{font-size:11.5px; color:var(--ink-soft); margin-top:8px; padding:8px 10px; background:var(--bg-soft); border-radius:8px;}

  @media (max-width:1180px){ .cal2-wrap{grid-template-columns:minmax(0,1fr) 280px;} .cal2-rail{display:none;} }
  @media (max-width:860px){ .cal2-wrap{grid-template-columns:1fr;} .cal2-panel{position:static; max-height:none;} }

  /* ---- 모바일 캘린더: 압축 월 그리드 + 아젠다 ---- */
  .cal2m-wrap{display:flex; flex-direction:column;}
  .cal2m-cal{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-m); overflow:hidden; margin-bottom:12px; touch-action:pan-y;}
  .cal2m-dow{display:grid; grid-template-columns:repeat(7,1fr); border-bottom:1px solid var(--line);}
  .cal2m-dow div{text-align:center; padding:8px 0 6px; font-size:11.5px; font-weight:600; color:var(--ink-faint);}
  .cal2m-dow div.su{color:var(--cal-sun);} .cal2m-dow div.sa{color:var(--cal-sat);}
  .cal2m-grid{display:grid; grid-template-columns:repeat(7,1fr);}
  .cal2m-cell{min-height:48px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; cursor:pointer;}
  .cal2m-cell.dim{visibility:hidden;}
  .cal2m-num{font-size:13px; font-weight:500; color:var(--ink-soft); width:26px; height:26px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%;}
  .cal2m-cell.sun .cal2m-num{color:var(--cal-sun);} .cal2m-cell.sat .cal2m-num{color:var(--cal-sat);}
  .cal2m-cell.holiday .cal2m-num{color:var(--cal-sun);}
  .cal2m-cell.today .cal2m-num{background:var(--accent); color:var(--on-solid); font-weight:700;}
  .cal2m-cell.sel{background:var(--accent-soft);}
  .cal2m-cell.suneung{background:color-mix(in srgb, var(--bad) 10%, transparent);}
  .cal2m-dots{display:flex; gap:3px; height:5px;}
  .cal2m-dots i{width:5px; height:5px; border-radius:50%; display:block;}
  .cal2m-agenda .cal2-panel-head{position:static;}
  .cal2m-agenda{background:var(--bg-card); border:1px solid var(--line); border-radius:var(--radius-m); overflow:hidden;}
  .gx2-toolbar{display:flex; align-items:center; gap:16px; margin-bottom:20px; flex-wrap:wrap;}
  .gx2-navtabs{display:flex; gap:2px; background:var(--bg-soft); border-radius:10px; padding:2px;}
  .gx2-navtab{height:32px; padding:0 13px; border-radius:8px; font-size:12.5px; font-weight:700; color:var(--ink-faint); transition:all .12s; white-space:nowrap; background:transparent; border:none; cursor:pointer;}
  .gx2-navtab.on{background:var(--bg-card); color:var(--ink); box-shadow:var(--shadow-card);}
  .gx2-navtab .n{margin-left:5px; font-size:11px; color:var(--ink-faint);}
  .gx2-navtab.on .n{color:var(--accent);}
  .gx2-subj-chips{display:flex; gap:5px; flex-wrap:wrap;}
  .gx2-subj-chip{height:30px; padding:0 11px; border-radius:20px; font-size:12px; font-weight:600; border:1px solid var(--line-strong); color:var(--ink-soft); background:var(--bg-card); display:inline-flex; align-items:center; gap:5px; cursor:pointer;}
  .gx2-subj-chip .dot{width:6px; height:6px; border-radius:50%;}
  .gx2-subj-chip.on{border-color:var(--ink); background:var(--ink); color:var(--on-solid);}
  .gx2-toolbar .spacer{flex:1;}
  .gx2-toolbar .btn.primary{flex-shrink:0; display:inline-flex; align-items:center; gap:6px; white-space:nowrap;}

  .gx2-layout{display:grid; grid-template-columns:minmax(0,1fr) 280px; gap:22px; align-items:start;}
  .gx2-list-col{min-width:0; max-width:720px;}
  .gx2-page-head{margin-bottom:14px;}
  .gx2-page-head h1{font-size:17px; font-weight:800; letter-spacing:-.02em; color:var(--ink);}

  .gx2-section{margin-bottom:8px;}
  .gx2-section-head{display:flex; align-items:baseline; gap:8px; padding:0 2px; margin-bottom:6px;}
  .gx2-section-head h2{font-size:12px; font-weight:800; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.05em;}
  .gx2-section-head .cnt{font-size:12px; color:var(--ink-faint); font-weight:600;}
  .gx2-section-head.collapsible{cursor:pointer;}
  .gx2-section-head .chev{width:11px; height:11px; color:var(--ink-faint); transition:transform .15s; margin-left:auto;}
  .gx2-section-head.open .chev{transform:rotate(90deg);}

  .gx2-list{background:var(--bg-card); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow-card); overflow:hidden; margin-bottom:24px;}
  .gx2-row{display:flex; align-items:center; gap:14px; padding:16px 19px 16px 16px; border-bottom:1px solid var(--line); border-left:3px solid var(--rc,transparent); cursor:pointer; transition:background .12s;}
  .gx2-row:last-child{border-bottom:none;}
  .gx2-row:hover{background:var(--bg-soft);}
  .gx2-row.done{opacity:.5;}
  .gx2-ring{width:36px; height:36px; flex-shrink:0; position:relative;}
  .gx2-ring svg{transform:rotate(-90deg);}
  .gx2-ring-check{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--good);}
  .gx2-ring-check .ic{width:14px; height:14px;}
  .gx2-dot{width:9px; height:9px; border-radius:50%; flex-shrink:0; margin:0 11.5px;}
  .gx2-row-main{flex:1; min-width:0;}
  .gx2-row-title{font-size:15.5px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .gx2-row.done .gx2-row-title{text-decoration:line-through; color:var(--ink-faint); font-weight:500;}
  .gx2-row-sub{font-size:12.5px; color:var(--ink-faint); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
  .gx2-row-sub .pw{color:var(--warn); font-weight:600;} .gx2-row-sub .pb{color:var(--bad); font-weight:600;} .gx2-row-sub .pg{color:var(--good); font-weight:600;}
  .gx2-row-right{display:flex; align-items:center; gap:10px; flex-shrink:0;}
  .gx2-row-subj{font-size:11.5px; font-weight:800; color:var(--rc,var(--ink-faint));}
  .gx2-row-dday{font-size:12.5px; font-weight:800; min-width:38px; text-align:right;}
  .gx2-row-dday.bad{color:var(--bad);} .gx2-row-dday.warn{color:var(--warn);} .gx2-row-dday.ok{color:var(--ink-faint);} .gx2-row-dday.fin{color:var(--good);}
  .gx2-empty{padding:50px 20px; text-align:center; color:var(--ink-faint); background:var(--bg-card); border:1px dashed var(--line-strong); border-radius:14px;}
  .gx2-empty .big{font-size:14.5px; font-weight:600; margin-bottom:5px; color:var(--ink-soft);}
  .gx2-empty .small{font-size:12.5px;}

  .gx2-wcol{display:flex; flex-direction:column; gap:14px; position:sticky; top:20px;}
  .gx2-subj-prog-row{display:flex; align-items:center; gap:9px; margin-bottom:11px;}
  .gx2-subj-prog-row:last-child{margin-bottom:0;}
  .gx2-subj-prog-name{font-size:12.5px; font-weight:700; width:54px; flex-shrink:0; color:var(--ink);}
  .gx2-subj-prog-track{flex:1; height:6px; background:var(--bg-soft); border-radius:3px; overflow:hidden;}
  .gx2-subj-prog-fill{height:100%; border-radius:3px;}
  .gx2-subj-prog-pct{font-size:11.5px; font-weight:700; color:var(--ink-faint); width:32px; text-align:right; flex-shrink:0;}

  @media (max-width:980px){ .gx2-layout{grid-template-columns:1fr;} .gx2-wcol{position:static;} }

  @media (prefers-reduced-motion: reduce){
    .subj-bar-fill{transition:none;}}

  h2.subhead{font-size:15.5px; font-weight:600; margin:24px 0 12px; color:var(--ink); display:flex; align-items:center; gap:8px;}
  h2.subhead:first-child{margin-top:0;}
  h2.subhead::before{content:''; width:3px; height:14px; background:var(--accent); border-radius:2px; display:inline-block;}

  .backup-bar{
    margin-top:28px; padding-top:16px; border-top:1px solid var(--line);
    display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap;
  }
  @media (max-width:640px){
    .backup-bar{flex-direction:column; align-items:flex-start;}}
  .btn.danger{color:var(--bad); border-color:var(--bad);}
  .btn.danger:hover{background:var(--bad-soft);}

  /* ===== 마감 임박 목표 ===== */
  .deadline-card{border-color:var(--line-strong);}
  .deadline-row{
    display:flex; justify-content:space-between; align-items:center; gap:10px;
    padding:11px 14px; background:var(--bg-soft); border-radius:var(--radius-m); cursor:pointer;
    border-left:3px solid var(--ink-faint); transition:background 0.12s;
  }
  .deadline-row:hover{background:var(--bg-soft2);}
  .deadline-row .left{flex:1; min-width:0;}
  .deadline-row .title{font-size:15px; font-weight:500; margin:0 0 2px; word-break:break-word;}
  .deadline-row .sub{font-size:13.5px; color:var(--ink-soft);}
  .deadline-row.soon{border-left-color:var(--warn); background:var(--warn-soft);}
  .deadline-row.urgent{border-left-color:var(--bad); background:var(--bad-soft);}
  .deadline-row.urgent .title{font-weight:700;}
  .sync-badge{font-size:13.5px; font-weight:600;}
  .sync-off{color:var(--ink-faint);}
  .sync-ing{color:var(--warn);}
  .sync-ok{color:var(--good);}
  .sync-err{color:var(--bad);}
  .goal-cal-wrap{font-family:'Pretendard Variable',sans-serif;}
  .goal-cal-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
  .goal-cal-title{font-size:17px;font-weight:800;color:var(--ink);min-width:130px;text-align:center;}
  .goal-cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px;}
  .goal-cal-dow>div{text-align:center;font-size:11.5px;font-weight:700;letter-spacing:.1em;color:var(--ink-on-faint);padding:3px 0;}
  .goal-cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:6px;}
  .goal-cal-cell{grid-row:1;min-height:44px;background:rgba(var(--w-rgb),0.025);border:1px solid rgba(var(--w-rgb),0.07);border-radius:7px;padding:6px 7px;cursor:pointer;transition:background .13s;}
  .goal-cal-cell:hover{background:rgba(var(--w-rgb),0.055);}
  .goal-cal-cell.today{background:rgba(var(--c-cyan-rgb),0.08);border-color:rgba(var(--c-cyan-rgb),0.4);}
  .goal-cal-cell.selected{background:rgba(var(--c-cyan-rgb),0.14);border-color:rgba(var(--c-cyan-rgb),0.6);}
  .goal-cal-cell.dim{opacity:.45;}
  .goal-cal-cell.weekend .goal-cal-num{color:var(--ink-on-faint);}
  .goal-cal-num{font-size:14.5px;font-weight:700;color:var(--ink-on);line-height:1;}
  .goal-cal-cell.today .goal-cal-num{color:var(--bs-cyan);font-size:15px;font-weight:900;}
  .goal-cal-dots{display:flex;flex-wrap:wrap;gap:3px;margin-top:5px;}
  .goal-cal-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
  .goal-cal-bar{height:22px;display:flex;align-items:center;padding:0 8px;overflow:hidden;cursor:pointer;transition:filter .13s,outline .13s;border-radius:3px;}
  .goal-cal-bar:hover{filter:brightness(1.25);outline:1px solid rgba(var(--w-rgb),0.35);}
  .goal-cal-bar-label{font-size:12.5px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-shadow:0 1px 4px rgba(0,0,0,.7);}
  .goal-cal-bar-dday{font-size:11.5px;font-weight:800;flex-shrink:0;margin-left:5px;text-shadow:0 1px 3px rgba(0,0,0,.6);}
  .goal-cal-list{display:flex;flex-direction:column;gap:8px;}
  .goal-cal-list-item{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.08);border-radius:10px;padding:12px 14px;transition:background .13s;}
  .goal-cal-list-item:hover{background:rgba(var(--w-rgb),0.055);}
  .goal-cal-list-item.done{opacity:.45;}
  .goal-cal-section-head{font-size:11.5px;font-weight:800;letter-spacing:.13em;color:var(--ink-on-faint);margin:18px 0 9px;text-transform:uppercase;}
  .color-swatches{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}
  .color-swatch{width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .12s,border-color .12s;flex-shrink:0;}
  .color-swatch:hover{transform:scale(1.2);}
  .color-swatch.active{border-color:#fff;transform:scale(1.18);}
  .memo-grid{display:grid;grid-template-columns:1fr;gap:12px;}
  @media(min-width:680px){.memo-grid{grid-template-columns:repeat(2,1fr);}}
  @media(min-width:1080px){.memo-grid{grid-template-columns:repeat(3,1fr);}}
  .memo-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.08);border-top:3px solid rgba(var(--c-cyan-rgb),0.5);border-radius:10px;padding:14px 15px;cursor:pointer;transition:background .13s;display:flex;flex-direction:column;gap:7px;}
  .memo-card:hover{background:rgba(var(--w-rgb),0.055);}
  .memo-card-title{font-size:15px;font-weight:800;color:var(--ink);line-height:1.4;word-break:break-word;}
  .memo-card-preview{font-size:13.5px;color:var(--ink-on-soft);line-height:1.65;white-space:pre-wrap;word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
  .memo-card-meta{font-size:12.5px;color:var(--ink-on-faint);margin-top:auto;}
  .memo-editor-title{width:100%;background:rgba(var(--w-rgb),0.05);border:1px solid rgba(var(--w-rgb),0.12);border-radius:8px;padding:10px 13px;font-size:17px;font-weight:800;color:var(--ink);font-family:'Pretendard Variable',sans-serif;margin-bottom:10px;box-sizing:border-box;}
  .memo-editor-body{width:100%;background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.10);border-radius:8px;padding:12px 13px;font-size:14.5px;color:var(--ink-on);font-family:'Pretendard Variable',sans-serif;line-height:1.7;resize:vertical;min-height:280px;box-sizing:border-box;}
  .memo-editor-title:focus,.memo-editor-body:focus{outline:none;border-color:rgba(var(--c-cyan-rgb),0.4);}
  /* 복습 탭 */
  .review-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap;}
  .review-filters{display:flex;gap:6px;flex-wrap:wrap;}
  .review-chip{font-size:13.5px;padding:5px 12px;border-radius:20px;border:1px solid rgba(var(--w-rgb),0.12);background:rgba(var(--w-rgb),0.03);color:var(--ink-on-soft);cursor:pointer;transition:all .13s;white-space:nowrap;}
  .review-chip:hover{background:rgba(var(--w-rgb),0.06);}
  .review-chip.active{background:rgba(var(--c-cyan-rgb),0.15);border-color:rgba(var(--c-cyan-rgb),0.4);color:var(--bs-cyan);}
  .review-grid{display:grid;grid-template-columns:1fr;gap:10px;}
  @media(min-width:680px){.review-grid{grid-template-columns:repeat(2,1fr);}}
  @media(min-width:1080px){.review-grid{grid-template-columns:repeat(3,1fr);}}
  .review-card{background:rgba(var(--w-rgb),0.03);border:1px solid rgba(var(--w-rgb),0.08);border-radius:10px;padding:13px 15px;cursor:pointer;transition:background .13s;display:flex;flex-direction:column;gap:7px;}
  .review-card:hover{background:rgba(var(--w-rgb),0.055);}
  .review-card.done{opacity:0.55;}
  .review-card-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .review-type-tag{font-size:12px;font-weight:700;padding:2px 8px;border-radius:5px;background:rgba(var(--w-rgb),0.08);color:var(--ink-on-soft);}
  .review-card-content{font-size:14.5px;color:var(--ink);line-height:1.55;white-space:pre-wrap;word-break:break-word;}
  .review-card-source{font-size:13px;color:var(--ink-on-faint);}
  .review-card-note{font-size:13px;color:rgba(var(--c-cyan-rgb),0.7);margin-top:2px;padding-top:6px;border-top:1px solid rgba(var(--w-rgb),0.06);line-height:1.5;}
  .review-card-meta{font-size:12.5px;color:var(--ink-on-faint);margin-top:auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;}
  .review-chip .cnt{opacity:.6;font-weight:700;margin-left:2px;}
  .rv-crumb{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--ink-on-faint);margin-bottom:14px;flex-wrap:wrap;}
  .rv-crumb span{cursor:pointer;}
  .rv-crumb span.on{color:var(--ink);font-weight:800;cursor:default;}
  .rv-crumb .sep{color:var(--ink-on-faint);cursor:default;}
  .rv-title-row{margin-bottom:2px;}
  .rv-title-row h1{font-size:18.5px;font-weight:800;color:var(--ink);margin:0;}
  .rv-title-sub{font-size:12.5px;color:var(--ink-faint);margin:2px 0 14px;}
  .rv-headline{display:flex;align-items:center;gap:8px;padding:13px 18px;background:var(--bg-soft);border-radius:14px;font-size:14px;font-weight:700;color:var(--ink-soft);margin-bottom:12px;}
  .rv-headline .n{font-size:20px;font-weight:900;color:var(--accent);}
  .rv-top{display:flex;gap:12px;margin-bottom:12px;align-items:stretch;}
  .rv-hero{flex:1.05;min-width:0;border-radius:16px;padding:16px 18px;display:flex;flex-direction:column;cursor:pointer;background:var(--scs);}
  .rv-hero .hd{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
  .rv-hero .dot{width:9px;height:9px;border-radius:50%;background:var(--sc);flex-shrink:0;}
  .rv-hero .name{font-size:15px;font-weight:800;color:var(--sc);}
  .rv-hero .big{margin-left:auto;font-size:20px;font-weight:800;color:var(--sc);}
  .rv-hero .sub{font-size:12px;color:var(--sc);margin:0 0 12px;opacity:.85;}
  .rv-hero .bar{height:5px;background:rgba(255,255,255,.55);border-radius:99px;overflow:hidden;margin-top:auto;}
  .rv-hero .bar>span{display:block;height:100%;background:var(--sc);}
  .rv-hero .meta{font-size:11.5px;color:var(--sc);opacity:.8;margin-top:7px;}
  .rv-stat-grid{flex:1.4;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
  .rv-stat{background:var(--bg-soft);border-radius:14px;padding:14px;display:flex;flex-direction:column;justify-content:center;}
  .rv-stat .lbl{font-size:11.5px;color:var(--ink-faint);margin:0 0 4px;}
  .rv-stat .val{font-size:21px;font-weight:800;margin:0;color:var(--ink);}
  .rv-stat .val.good{color:var(--good);}
  .rv-subj-list{display:flex;flex-direction:column;gap:6px;}
  .rv-subj-row{display:flex;align-items:center;gap:10px;padding:10px 13px;border-radius:10px;background:var(--bg-card);border:1px solid var(--line);}
  .rv-subj-row.has{cursor:pointer;}
  .rv-subj-row.has:hover{background:var(--bg-soft);}
  .rv-subj-row.empty{opacity:.55;}
  .rv-subj-row .dot{width:7px;height:7px;border-radius:50%;background:var(--sc);flex-shrink:0;}
  .rv-subj-row .nm{font-size:13px;font-weight:700;color:var(--ink);width:64px;flex-shrink:0;}
  .rv-subj-row .track{flex:1;height:5px;background:var(--bg-soft);border-radius:99px;overflow:hidden;}
  .rv-subj-row .track>span{display:block;height:100%;background:var(--sc);}
  .rv-subj-row .cnt{font-size:12px;color:var(--ink-faint);font-weight:700;width:42px;text-align:right;flex-shrink:0;}
  .rv-book-row{background:var(--bg-card);border:1px solid var(--line);border-left:3px solid var(--sc);border-radius:0 12px 12px 0;padding:0.95rem 1.1rem;cursor:pointer;margin-bottom:10px;}
  .rv-book-row .top{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
  .rv-book-row .title{font-size:14.5px;font-weight:800;color:var(--ink);margin:0;}
  .rv-book-row .sub{font-size:12px;color:var(--ink-faint);margin:2px 0 0;}
  .rv-book-row .meta{font-size:11px;color:var(--ink-faint);margin:3px 0 0;display:flex;gap:8px;flex-wrap:wrap;}
  .rv-book-row .stat{margin-left:auto;text-align:right;}
  .rv-book-row .stat .lbl2{font-size:10.5px;color:var(--ink-faint);margin:0 0 2px;}
  .rv-book-row .stat .n{font-size:18px;font-weight:800;margin:0;color:var(--ink);}
  .rv-book-row .stat .n small{font-size:11.5px;color:var(--ink-faint);font-weight:400;}
  .rv-book-row .chev{width:14px;height:14px;color:var(--ink-faint);flex-shrink:0;}
  .rv-book-row .bar{height:4px;background:var(--bg-soft);border-radius:99px;overflow:hidden;}
  .rv-book-row .bar > span{display:block;height:100%;background:var(--sc);}
  .rv-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
  @media(max-width:640px){.rv-gallery{grid-template-columns:repeat(2,minmax(0,1fr));}}
  .rv-gal-card{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;overflow:hidden;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;}
  .rv-gal-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.10);border-color:var(--sc);}
  .rv-gal-card .bar{height:4px;background:var(--sc);}
  .rv-gal-card .body{padding:0.7rem 0.8rem;}
  .rv-gal-card .idx{font-size:11px;color:var(--ink-faint);margin:0 0 4px;}
  .rv-gal-card .ttl{font-size:12.5px;font-weight:700;color:var(--ink);margin:0 0 8px;line-height:1.35;min-height:32px;}
  .rv-gal-card .row2{display:flex;align-items:center;justify-content:space-between;gap:6px;}
  .rv-gal-card .cnt{font-size:16.5px;font-weight:800;margin:0;color:var(--ink);}
  .rv-gal-card .cnt small{font-size:10.5px;color:var(--ink-faint);font-weight:400;}
  .rv-gal-card .status{display:flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;color:var(--ink-faint);}
  .rv-gal-card .status .d{width:6px;height:6px;border-radius:50%;background:var(--line-strong);flex-shrink:0;}
  .rv-gal-card .status.today{color:var(--good);} .rv-gal-card .status.today .d{background:var(--good);}
  .rv-gal-card .status.seen{color:var(--sc);} .rv-gal-card .status.seen .d{background:var(--sc);}
  .rv-memo-list{display:flex;flex-direction:column;gap:10px;}
  .rv-memo-row{background:var(--bg-card);border:1px solid var(--line);border-radius:12px;padding:13px 15px;transition:box-shadow .12s;}
  .rv-memo-row:hover{box-shadow:var(--shadow-card);}
  .rv-memo-row .txt{font-size:14px;color:var(--ink);line-height:1.6;display:block;margin-bottom:10px;}
  .rv-memo-row .meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
  .rv-memo-row .type{font-size:11px;padding:3px 9px;border-radius:99px;background:var(--scs);color:var(--sc);flex-shrink:0;}
  .rv-memo-row .rc{font-size:11.5px;padding:3px 10px;border-radius:99px;flex-shrink:0;background:var(--bg-soft);color:var(--ink-faint);}
  .rv-memo-row .rc.seen{background:rgba(120,200,140,.16);color:var(--good);}
  .rv-memo-row .ago{font-size:11px;color:var(--ink-faint);margin-left:auto;}
  .rv-ai-msg{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;}
  .rv-ai-msg.expanded{-webkit-line-clamp:unset;overflow:visible;}
  .rv-ai-more{font-size:12px;font-weight:700;color:var(--ames);background:none;border:none;cursor:pointer;padding:6px 0 0;margin-left:51px;}
  .btn-mini{font-size:11px;padding:3px 9px;flex-shrink:0;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg-card);color:var(--ink-soft);cursor:pointer;font-family:var(--font);}
  .btn-mini:hover{border-color:var(--sc);color:var(--sc);}
  .review-unseen-tag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:5px;background:rgba(var(--c-cyan-rgb),0.14);color:var(--bs-cyan);}
  .review-count-badge{font-size:12px;font-weight:700;color:var(--ink-on-soft);}
  .review-count-btn{font-size:11.5px;font-weight:800;padding:2px 8px;border-radius:6px;border:1px solid rgba(var(--w-rgb),0.14);background:rgba(var(--w-rgb),0.04);color:var(--ink-on-soft);cursor:pointer;transition:all .12s;}
  .review-count-btn:hover{background:rgba(var(--c-cyan-rgb),0.15);border-color:rgba(var(--c-cyan-rgb),0.4);color:var(--bs-cyan);}
/* 복습 중요도 */
.rv-priority{display:inline-flex;align-items:center;margin-right:7px;padding:2px 7px;border-radius:999px;font-size:10.5px;font-weight:800;vertical-align:1px;white-space:nowrap}.rv-priority.high{color:#9a5a00;background:#fff3cf;border:1px solid #f2cf76}.rv-priority.urgent{color:#b42335;background:#ffe5e9;border:1px solid #f3a7b2}.rv-priority-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px;flex-wrap:wrap}.rv-filter-group{display:flex;gap:6px;flex-wrap:wrap}.rv-priority-tools .btn-mini.active{background:var(--ink);color:var(--on-solid);border-color:var(--ink)}.rv-priority-tools select{min-height:31px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);padding:4px 9px;font:inherit;font-size:12px}.rv-priority-pick{gap:7px;flex-wrap:wrap}.tqm-priority{display:flex;align-items:center;gap:10px;margin:9px 0}.tqm-priority>span{font-size:12px;font-weight:800;color:var(--ink-soft)}


/* ===== HOME V3 PRODUCT REDESIGN ===== */
html[data-theme="light"]{
  --bg:#f6f8fb;
  --bg-soft:#f1f4f8;
  --bg-soft2:#e9eef5;
  --line:#e4e9f0;
  --line-strong:#d6dde8;
  --ink:#172033;
  --ink-soft:#5d687a;
  --ink-faint:#909bad;
  --accent:#246bfe;
  --accent-soft:#eaf1ff;
  --accent-deep:#1857d9;
  --shadow-card:0 1px 2px rgba(15,23,42,.04),0 8px 24px rgba(15,23,42,.055);
}
#ddayCard{display:none!important;}
[onclick*="__openBriefing"],[onclick*="__openFeedback"],[onclick*="__openDemoFeedback"]{display:none!important;}
.side{width:190px;flex-basis:190px;padding:18px 12px 16px;}
.side-logo{padding:2px 8px 20px;}
.side-logo-mark{width:30px;height:30px;border-radius:10px;background:linear-gradient(145deg,#2f7cff,#1558e8);box-shadow:0 7px 16px rgba(36,107,254,.2);}
.side-item{padding:9px 11px;border-radius:10px;font-size:14px;gap:10px;}
.side-item.active{background:#eaf1ff;color:#1d63ed;box-shadow:inset 0 0 0 1px rgba(36,107,254,.04);}
.side-sep{margin:10px 7px;background:#e6ebf2;}
.topbar{padding:12px 24px;background:#f6f8fb;border-bottom:1px solid #e7ebf1;}
.topbar-title{font-size:18px;letter-spacing:-.03em;}
.topbar-sub{font-size:13px;}
.main-content.wide{max-width:1540px;padding:18px 28px 96px;}
.home-v3{display:flex;flex-direction:column;gap:16px;max-width:1360px;margin:0 auto;color:var(--ink);}
.hv3-hero,.hv3-card{background:var(--bg-card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-card);}
.hv3-hero{padding:26px 30px 22px;display:grid;grid-template-columns:minmax(250px,.9fr) minmax(560px,1.7fr);gap:20px 38px;align-items:center;position:relative;overflow:hidden;}
.hv3-hero:after{content:"";position:absolute;width:360px;height:360px;border-radius:50%;right:-160px;top:-240px;background:radial-gradient(circle,rgba(36,107,254,.09),transparent 68%);pointer-events:none;}
.hv3-hero-main{min-width:0;}
.hv3-eyebrow{font-size:12px;font-weight:800;color:var(--ink-faint);letter-spacing:.02em;margin-bottom:8px;}
.hv3-dday{font-size:29px;font-weight:850;letter-spacing:-.045em;line-height:1.12;}
.hv3-dday strong{color:var(--accent);font-size:34px;margin-left:6px;}
.hv3-date{font-size:13px;color:var(--ink-faint);margin-top:9px;}
.hv3-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:0;position:relative;z-index:1;}
.hv3-metric{appearance:none;border:0;background:transparent;display:flex;align-items:center;gap:13px;text-align:left;padding:5px 22px;cursor:pointer;color:var(--ink);min-width:0;border-left:1px solid var(--line);}
.hv3-metric:first-child{border-left:0;}
.hv3-metric:hover b{color:var(--accent);}
.hv3-metric-icon{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.hv3-metric-icon .ic{width:20px;height:20px;}
.hv3-metric-icon.blue{background:#e9f1ff;color:#246bfe;}.hv3-metric-icon.mint{background:#e8f7f2;color:#11866c;}.hv3-metric-icon.orange{background:#fff2e8;color:#c45b19;}
.hv3-metric span:last-child{display:flex;flex-direction:column;gap:5px;min-width:0;}
.hv3-metric small{font-size:12px;color:var(--ink-faint);font-weight:650;}
.hv3-metric b{font-size:23px;letter-spacing:-.04em;white-space:nowrap;transition:color .15s;}
.hv3-progress{grid-column:1/-1;margin-top:2px;position:relative;z-index:1;}
.hv3-progress-copy{display:flex;justify-content:space-between;gap:14px;font-size:13px;color:var(--ink-soft);margin-bottom:10px;}
.hv3-progress-copy b{color:var(--ink);}.hv3-progress-copy strong{color:var(--ink-soft);font-size:13px;}
.hv3-progress-track{height:8px;border-radius:999px;background:#edf1f6;overflow:hidden;}
.hv3-progress-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#246bfe,#4d8cff);transition:width .4s ease;min-width:0;}
.hv3-main-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(330px,.82fr);gap:16px;align-items:stretch;}
.hv3-card{padding:22px;min-width:0;}
.hv3-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;}
.hv3-card-head>div:first-child{display:flex;align-items:center;gap:9px;flex-wrap:wrap;}
.hv3-card-head h2{font-size:17px;line-height:1.25;letter-spacing:-.03em;margin:0;font-weight:800;}
.hv3-card-head p{font-size:12.5px;color:var(--ink-faint);margin:4px 0 0;width:100%;}
.hv3-card-head p strong{font-size:20px;color:var(--accent);margin-right:3px;}
.hv3-count{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:800;}
.hv3-link{appearance:none;border:0;background:transparent;color:var(--accent);font:inherit;font-size:12px;font-weight:750;display:inline-flex;align-items:center;gap:3px;cursor:pointer;white-space:nowrap;padding:3px 0;}
.hv3-link .ic{width:13px;height:13px;}
.hv3-task-list{display:flex;flex-direction:column;gap:8px;}
.hv3-task{display:grid;grid-template-columns:64px minmax(0,1fr) auto 18px;align-items:center;gap:14px;min-height:76px;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s;}
.hv3-task:hover{border-color:#cfd8e6;box-shadow:0 5px 16px rgba(15,23,42,.05);transform:translateY(-1px);}
.hv3-task.primary{border-color:rgba(114,72,196,.28);background:linear-gradient(90deg,rgba(114,72,196,.045),rgba(36,107,254,.02));}
.hv3-task.done{opacity:.62;}
.hv3-subject{display:inline-flex;align-items:center;justify-content:center;padding:6px 7px;border-radius:9px;font-size:11px;font-weight:800;white-space:nowrap;}
.hv3-subject.sub-math{background:#f0eaff;color:#7547c8}.hv3-subject.sub-kr{background:#e8f4ff;color:#2274c9}.hv3-subject.sub-eng{background:#e8f7ef;color:#188454}.hv3-subject.sub-phy{background:#fff1e5;color:#c6621d}.hv3-subject.sub-ea{background:#ffebee;color:#d64355}.hv3-subject.sub-etc{background:#eef1f5;color:#616b79}
.hv3-task-copy{min-width:0;}.hv3-task-copy h3{font-size:14.5px;margin:0 0 6px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.hv3-task-copy p{font-size:12px;color:var(--ink-faint);margin:0;}
.hv3-task-action{appearance:none;border:1px solid #cbd7e9;background:#fff;color:var(--accent);border-radius:10px;padding:9px 13px;font:inherit;font-size:12px;font-weight:800;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap;}
.hv3-task-action.primary{background:var(--accent);border-color:var(--accent);color:white;box-shadow:0 6px 14px rgba(36,107,254,.18);}.hv3-task-action.done{color:var(--good);border-color:#cfe7dc;background:#f5fbf8;}.hv3-task-action .ic{width:14px;height:14px;}.hv3-chevron{color:var(--ink-faint);display:flex;}.hv3-chevron .ic{width:15px;height:15px;}
.hv3-empty{min-height:224px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px dashed var(--line-strong);border-radius:14px;background:#fafbfd;padding:24px;}.hv3-empty-icon{width:44px;height:44px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;margin-bottom:10px;}.hv3-empty h3{font-size:15px;margin:0 0 6px}.hv3-empty p{font-size:12.5px;color:var(--ink-faint);margin:0 0 14px}.hv3-primary-btn{appearance:none;border:0;background:var(--accent);color:white;border-radius:10px;padding:10px 14px;font:inherit;font-size:12px;font-weight:800;cursor:pointer;}
.hv3-attention-list{display:flex;flex-direction:column;gap:10px;}
.hv3-focus-item{appearance:none;width:100%;position:relative;text-align:left;border:1px solid var(--line);background:#fff;border-radius:14px;padding:17px 42px 16px 17px;color:var(--ink);cursor:pointer;min-height:126px;transition:border-color .15s,transform .15s;}
.hv3-focus-item:hover{border-color:#ccd7e7;transform:translateY(-1px);}.hv3-focus-item.deadline{background:linear-gradient(135deg,#fff,#fffaf6);}.hv3-focus-item.review{background:linear-gradient(135deg,#fff,#fff8fb);}.hv3-focus-top{display:flex;align-items:center;gap:8px;margin-bottom:11px;}.hv3-focus-label{font-size:12px;font-weight:800;color:#c35a1b;display:inline-flex;align-items:center;gap:5px;}.hv3-focus-item.review .hv3-focus-label{color:var(--ink-soft);}.hv3-focus-top>strong{margin-left:auto;font-size:14px;color:#e05721;}.hv3-focus-item h3{font-size:14.5px;margin:0 0 7px;line-height:1.35;}.hv3-focus-item p{font-size:12px;color:var(--ink-faint);margin:0;}.hv3-focus-arrow{position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--ink-faint);}.hv3-focus-arrow .ic{width:15px;height:15px;}.hv3-priority-badge{display:inline-flex;padding:4px 7px;border-radius:7px;font-size:10px;font-weight:850;}.hv3-priority-badge.urgent{background:#ffe8ee;color:#d23255}.hv3-priority-badge.high{background:#fff1d7;color:#a96500}.hv3-focus-item.empty{cursor:default;background:#fafbfd;display:flex;flex-direction:column;justify-content:center;}.hv3-focus-item.empty:hover{transform:none;border-color:var(--line);}
.hv3-support-grid{display:grid;grid-template-columns:1fr .94fr .92fr;gap:16px;}
.hv3-week-chart{height:146px;display:grid;grid-template-columns:repeat(7,1fr);gap:10px;align-items:end;padding:14px 2px 0;}.hv3-week-col{height:100%;display:grid;grid-template-rows:20px 1fr 20px;align-items:end;text-align:center;}.hv3-week-value{font-size:10px;color:var(--ink-faint);}.hv3-week-track{height:94px;width:22px;margin:0 auto;border-radius:7px 7px 3px 3px;background:#f0f3f7;display:flex;align-items:flex-end;overflow:hidden;}.hv3-week-bar{display:block;width:100%;background:#dce3ec;border-radius:6px 6px 2px 2px;min-height:3px;}.hv3-week-bar.today{background:linear-gradient(180deg,#3a82ff,#1f64ed);}.hv3-week-day{font-size:11px;color:var(--ink-faint);align-self:end;}.hv3-week-day.today{font-weight:800;color:var(--accent);}
.hv3-schedule-list{display:flex;flex-direction:column;}.hv3-schedule-list button{appearance:none;border:0;border-bottom:1px solid var(--line);background:transparent;display:grid;grid-template-columns:52px 58px minmax(0,1fr) 16px;align-items:center;gap:8px;padding:14px 2px;text-align:left;color:var(--ink);cursor:pointer;}.hv3-schedule-list button:last-child{border-bottom:0}.hv3-schedule-list button:hover strong{color:var(--accent)}.hv3-schedule-dday{display:inline-flex;justify-content:center;padding:5px 7px;border-radius:999px;background:#fff0e7;color:#d45d1a;font-size:10px;font-weight:850;}.hv3-schedule-date{font-size:11px;color:var(--ink-faint);}.hv3-schedule-list strong{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s;}.hv3-schedule-list .ic{width:14px;height:14px;color:var(--ink-faint);}.hv3-small-empty{min-height:150px;display:flex;align-items:center;justify-content:center;color:var(--ink-faint);font-size:12.5px;}
.hv3-ai{border-color:rgba(var(--ames-rgb),.22);}.hv3-ai .hv3-card-head h2{color:var(--ames);}.hv3-ai-body{min-height:150px;border:1px solid rgba(var(--ames-rgb),.2);background:linear-gradient(135deg,rgba(var(--ames-rgb),.035),rgba(var(--ames-rgb),.075));border-radius:14px;padding:17px;display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:14px;align-items:center;}.hv3-ai-copy p{font-size:13px;line-height:1.65;margin:0 0 14px;color:var(--ink-soft);}.hv3-ai-copy button{appearance:none;border:1px solid rgba(var(--ames-rgb),.3);background:#fff;color:var(--ames);border-radius:9px;padding:8px 11px;font:inherit;font-size:11.5px;font-weight:800;display:inline-flex;align-items:center;gap:4px;cursor:pointer;}.hv3-ai-copy button .ic{width:13px;height:13px}.hv3-ai-face{width:66px;height:66px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:0 8px 22px rgba(var(--ames-rgb),.16);}.hv3-ai-face img,.hv3-ai-face .ames-img{width:100%;height:100%;object-fit:cover;}
.hv3-footnote{font-size:11.5px;color:var(--ink-faint);text-align:right;padding:0 4px;}.hv3-footnote strong{color:var(--ink-soft);}
@media(max-width:1180px){.hv3-hero{grid-template-columns:1fr}.hv3-metrics{border-top:1px solid var(--line);padding-top:16px}.hv3-main-grid{grid-template-columns:1fr}.hv3-attention-list{display:grid;grid-template-columns:1fr 1fr}.hv3-support-grid{grid-template-columns:1fr 1fr}.hv3-ai{grid-column:1/-1}}
@media(max-width:760px){.main-content.wide{padding:12px 12px 86px}.home-v3{gap:12px}.hv3-hero,.hv3-card{border-radius:15px}.hv3-hero{padding:20px 18px}.hv3-dday{font-size:24px}.hv3-dday strong{font-size:28px}.hv3-metrics{grid-template-columns:1fr;gap:8px}.hv3-metric{border-left:0;padding:7px 0}.hv3-metric-icon{width:38px;height:38px}.hv3-main-grid,.hv3-support-grid,.hv3-attention-list{grid-template-columns:1fr}.hv3-ai{grid-column:auto}.hv3-card{padding:18px}.hv3-task{grid-template-columns:54px minmax(0,1fr) 18px}.hv3-task-action{grid-column:1/-1;justify-content:center}.hv3-task .hv3-chevron{grid-column:3;grid-row:1}.hv3-progress-copy{font-size:12px}.hv3-support-grid{gap:12px}}

/* AMES HOME V4 START */
.main-content.wide:has(.home-v4){max-width:1520px;padding-top:20px;}
.home-v4{display:flex;flex-direction:column;gap:16px;color:var(--ink);}
.home-v4 button{font-family:var(--font);}
.hv4-card{background:var(--bg-card);border:1px solid var(--line);border-radius:18px;box-shadow:0 1px 2px rgba(15,23,42,.035),0 12px 30px rgba(15,23,42,.025);}
.hv4-card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:28px;}
.hv4-card-head>div{display:flex;align-items:center;gap:9px;min-width:0;}
.hv4-card-head h2{margin:0;font-size:17px;line-height:1.2;letter-spacing:-.025em;color:var(--ink);}
.hv4-link{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:var(--accent);font-size:11.5px;font-weight:780;white-space:nowrap;cursor:pointer;padding:5px 0;}
.hv4-link svg,.hv4-goal-all svg{width:12px;height:12px;}
.hv4-exam-banner{min-height:112px;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:18px;background:linear-gradient(112deg,var(--bg-card) 0%,color-mix(in srgb,var(--accent-soft) 58%,var(--bg-card)) 64%,color-mix(in srgb,#dfe8ff 52%,var(--bg-card)) 100%);box-shadow:0 8px 24px rgba(var(--accent-rgb),.055);overflow:hidden;position:relative;}
.hv4-exam-banner:after{content:"";position:absolute;right:-3%;bottom:-85px;width:50%;height:180px;border-radius:50%;background:radial-gradient(ellipse at center,rgba(var(--accent-rgb),.10),transparent 68%);pointer-events:none;}
.hv4-exam-banner h1{margin:0;font-size:20px;letter-spacing:-.025em;color:var(--ink);}
.hv4-exam-banner p{margin:9px 0 0;font-size:12.5px;color:var(--ink-faint);font-weight:600;}
.hv4-exam-right{display:flex;align-items:center;gap:22px;position:relative;z-index:1;}
.hv4-exam-right strong{font-size:46px;line-height:1;color:#3026a7;letter-spacing:-.055em;font-variant-numeric:tabular-nums;}
.hv4-exam-right span{min-width:100px;height:38px;padding:0 13px;display:flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:10px;background:rgba(255,255,255,.56);color:var(--ink-soft);font-size:13px;font-variant-numeric:tabular-nums;}
.hv4-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.hv4-stat{position:relative;min-height:128px;padding:19px 20px 17px;display:flex;align-items:flex-start;gap:11px;text-align:left;border:1px solid var(--line);border-radius:16px;background:var(--bg-card);color:var(--ink);cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.035),0 9px 22px rgba(15,23,42,.025);overflow:hidden;}
.hv4-stat:hover{border-color:color-mix(in srgb,var(--accent) 24%,var(--line));transform:translateY(-1px);}
.hv4-stat-icon{width:28px;height:28px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;border-radius:9px;}
.hv4-stat-icon svg{width:16px;height:16px;}
.hv4-stat-icon.blue{color:var(--accent);background:var(--accent-soft);}.hv4-stat-icon.orange{color:#e88400;background:rgba(255,154,37,.11);}
.hv4-stat>div:not(.hv4-stat-progress){min-width:0;display:flex;flex-direction:column;}
.hv4-stat small{font-size:11.5px;font-weight:740;color:var(--ink-faint);}
.hv4-stat strong{margin-top:9px;font-size:25px;line-height:1;color:var(--ink);font-weight:830;letter-spacing:-.035em;font-variant-numeric:tabular-nums;}
.hv4-stat strong em{font-style:normal;color:var(--accent);}.hv4-stat strong.orange{color:#eb8500;}.hv4-stat strong.orange em,.hv4-stat:nth-child(4) strong em{font-size:14px;margin-left:2px;}
.hv4-stat p{margin:10px 0 0;font-size:11.5px;color:var(--ink-faint);font-weight:600;}
.hv4-stat-progress{position:absolute;left:20px;right:20px;bottom:15px;height:4px;border-radius:99px;background:var(--bg-soft);overflow:hidden;}
.hv4-stat-progress i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),#7a6cff);}
.hv4-spark{position:absolute;right:18px;bottom:18px;width:80px;height:35px;overflow:visible;}.hv4-spark polyline{fill:none;stroke:#7c68ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.hv4-work-grid{display:grid;grid-template-columns:minmax(520px,1.75fr) minmax(260px,.82fr) minmax(310px,1fr);gap:14px;align-items:start;}
.hv4-tasks,.hv4-goals,.hv4-calendar{padding:18px;min-width:0;}
.hv4-tasks{border-color:color-mix(in srgb,var(--accent) 25%,var(--line));box-shadow:0 1px 2px rgba(15,23,42,.035),0 12px 30px rgba(var(--accent-rgb),.035);}
.hv4-count{height:22px;padding:0 8px;display:inline-flex;align-items:center;border-radius:999px;background:var(--bg-soft);color:var(--ink-soft);font-size:10.5px;font-weight:760;}
.hv4-task-summary{margin-top:15px;min-height:68px;padding:12px 15px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid color-mix(in srgb,var(--accent) 17%,var(--line));border-radius:13px;background:linear-gradient(110deg,color-mix(in srgb,var(--accent-soft) 50%,var(--bg-card)),var(--bg-card));}
.hv4-bolt{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-card);color:var(--accent);box-shadow:0 5px 14px rgba(var(--accent-rgb),.11);}.hv4-bolt svg{width:20px;height:20px;}
.hv4-task-summary-copy{display:flex;flex-direction:column;gap:5px;min-width:0;}.hv4-task-summary-copy strong{font-size:15px;letter-spacing:-.02em;}.hv4-task-summary-copy strong em{font-style:normal;color:var(--accent);}.hv4-task-summary-copy span{font-size:11.5px;color:var(--ink-faint);font-weight:600;}
.hv4-steps{display:flex;align-items:flex-start;gap:0;}
.hv4-steps span{position:relative;min-width:54px;padding-top:20px;text-align:center;font-size:9.5px;color:var(--ink-faint);font-weight:700;}
.hv4-steps span:before{content:"";position:absolute;top:6px;left:0;width:100%;height:3px;background:var(--bg-soft2);}.hv4-steps span:first-child:before{left:50%;width:50%;}.hv4-steps span:last-child:before{width:50%;}
.hv4-steps i{position:absolute;z-index:1;top:2px;left:50%;width:11px;height:11px;border:3px solid var(--bg-card);border-radius:50%;background:var(--bg-soft2);transform:translateX(-50%);box-shadow:0 0 0 1px var(--line);}
.hv4-steps span.on i{background:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 40%,var(--line));}.hv4-steps span.on:before{background:color-mix(in srgb,var(--accent) 35%,var(--bg-soft2));}
.hv4-task-list{margin-top:10px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg-card);}
.hv4-task-row{min-height:76px;padding:12px 12px 12px 14px;display:grid;grid-template-columns:68px minmax(0,1fr) auto;align-items:center;gap:13px;border:0;background:var(--bg-card);cursor:pointer;transition:background .15s;}
.hv4-task-row+.hv4-task-row{border-top:1px solid var(--line);}.hv4-task-row:hover{background:color-mix(in srgb,var(--accent-soft) 28%,var(--bg-card));}.hv4-task-row.primary{background:linear-gradient(90deg,color-mix(in srgb,var(--accent-soft) 34%,var(--bg-card)),var(--bg-card) 55%);}
.hv4-task-row.done{opacity:.62;}.hv4-task-sub{display:flex;flex-direction:column;align-items:flex-start;gap:6px;}
.hv4-task-sub>span{height:24px;min-width:48px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-size:11.5px;font-weight:820;color:var(--sc);background:var(--scs);}
.hv4-task-sub time{font-size:11px;font-weight:760;color:var(--ink-soft);font-variant-numeric:tabular-nums;padding-left:5px;}
.hv4-task-copy{min-width:0;}.hv4-task-copy h3{margin:0;font-size:16.5px;line-height:1.3;color:var(--ink);font-weight:820;letter-spacing:-.022em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.hv4-task-copy p{margin:7px 0 0;font-size:11.5px;color:var(--ink-faint);font-weight:600;}
.hv4-task-btn{min-width:90px;height:36px;padding:0 14px;border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));border-radius:10px;background:var(--bg-card);color:var(--accent);font-size:11.5px;font-weight:820;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;}.hv4-task-btn:hover{background:var(--accent-soft);}.hv4-task-btn.primary{min-width:116px;border-color:transparent;background:linear-gradient(100deg,#2678f3,#963fee);color:#fff;box-shadow:0 7px 17px rgba(83,76,220,.20);font-size:12.5px;}.hv4-task-btn.primary:hover{filter:brightness(.98);transform:translateY(-1px);}.hv4-task-btn svg{width:14px;height:14px;}.hv4-task-btn.done{color:var(--good);border-color:color-mix(in srgb,var(--good) 28%,var(--line));}
.hv4-empty{min-height:260px;margin-top:15px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1px dashed var(--line-strong);border-radius:14px;background:var(--bg-soft);}.hv4-empty>div{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--accent-soft);color:var(--accent);}.hv4-empty h3{margin:13px 0 0;font-size:15px;}.hv4-empty p{margin:7px 0 14px;font-size:12px;color:var(--ink-faint);}.hv4-empty button{height:36px;padding:0 14px;border:0;border-radius:9px;background:var(--accent);color:#fff;font-weight:800;cursor:pointer;}
.hv4-goals{display:flex;flex-direction:column;}.hv4-goal-week{font-size:10.5px;color:var(--ink-faint);font-weight:740;white-space:nowrap;}.hv4-goal-list{margin-top:14px;display:flex;flex-direction:column;}.hv4-goal-row{min-height:57px;padding:9px 8px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:9px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;border-radius:10px;}.hv4-goal-row:last-child{border-bottom:0;}.hv4-goal-row:hover{background:var(--bg-soft);}.hv4-goal-row.featured{margin-bottom:5px;padding:10px;border:1px solid rgba(184,92,220,.18);background:linear-gradient(95deg,rgba(173,84,224,.075),rgba(255,255,255,.2));}.hv4-goal-sub{height:24px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:var(--sc);background:var(--scs);font-size:10px;font-weight:820;}.hv4-goal-copy{display:flex;flex-direction:column;min-width:0;}.hv4-goal-copy strong{font-size:11.5px;line-height:1.35;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.hv4-goal-copy small{margin-top:3px;font-size:9.5px;color:var(--ink-faint);}.hv4-goal-row>b{font-size:11px;color:#ef4444;white-space:nowrap;font-variant-numeric:tabular-nums;}.hv4-goal-all{margin-top:auto;height:35px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--accent);font-size:11px;font-weight:800;cursor:pointer;}
.hv4-cal-grid{margin-top:15px;display:grid;grid-template-columns:repeat(7,1fr);gap:5px;align-items:center;}.hv4-cal-dow{text-align:center;font-size:9.5px;color:var(--ink-faint);font-weight:740;padding-bottom:4px;}.hv4-cal-dow.d0{color:var(--bad);}.hv4-cal-dow.d6{color:var(--cal-sat);}.hv4-cal-day{aspect-ratio:1;min-width:0;border:0;border-radius:50%;background:transparent;color:var(--ink);font-size:10.5px;font-weight:650;cursor:pointer;position:relative;}.hv4-cal-day:hover{background:var(--bg-soft);}.hv4-cal-day.d0{color:var(--bad);}.hv4-cal-day.d6{color:var(--cal-sat);}.hv4-cal-day.today{background:var(--accent);color:#fff;font-weight:830;box-shadow:0 5px 10px rgba(var(--accent-rgb),.22);}.hv4-cal-day.duty:not(.today){background:rgba(55,190,132,.12);}.hv4-cal-day.event:not(.today){box-shadow:inset 0 -3px 0 #ef7ab9;}.hv4-cal-day.exam:not(.today){box-shadow:inset 0 -3px 0 #8a69e8;}.hv4-cal-day.plan:not(.today):after{content:"";position:absolute;bottom:3px;left:50%;width:3px;height:3px;border-radius:50%;background:#36b98a;transform:translateX(-50%);}.hv4-cal-legend{margin-top:13px;padding-top:11px;border-top:1px solid var(--line);display:flex;gap:11px;flex-wrap:wrap;}.hv4-cal-legend span{display:flex;align-items:center;gap:5px;font-size:9.5px;color:var(--ink-faint);font-weight:700;}.hv4-cal-legend i{width:6px;height:6px;border-radius:2px;}.hv4-cal-legend .event i{background:#ef7ab9;}.hv4-cal-legend .exam i{background:#8a69e8;}.hv4-cal-legend .plan i{background:#36b98a;}
.hv4-bottom-grid{display:grid;grid-template-columns:minmax(520px,1.75fr) minmax(0,1.82fr);gap:14px;align-items:stretch;}.hv4-ai{min-height:128px;padding:19px 20px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:15px;border-color:rgba(255,76,155,.18);}.hv4-ai-mark{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:linear-gradient(145deg,#ff79b8,#f32791);color:#fff;font-size:12px;font-weight:900;box-shadow:0 8px 18px rgba(243,39,145,.17);}.hv4-ai-copy{min-width:0;}.hv4-ai-copy h2{margin:0;color:#f1278a;font-size:16px;}.hv4-ai-copy p{margin:9px 0 0;color:var(--ink-soft);font-size:11.5px;line-height:1.65;word-break:keep-all;}.hv4-ai>button{height:38px;padding:0 16px;border:1px solid #f149a1;border-radius:10px;background:var(--bg-card);color:#ef278c;font-size:11.5px;font-weight:820;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap;}.hv4-ai>button:hover{background:rgba(241,39,140,.05);}
.hv4-weekly{padding:17px 19px;}.hv4-weekly-body{margin-top:10px;display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:20px;align-items:end;}.hv4-week-bars{height:93px;display:grid;grid-template-columns:repeat(7,1fr);gap:13px;align-items:end;}.hv4-week-col{height:100%;display:grid;grid-template-rows:15px 1fr 18px;gap:3px;text-align:center;}.hv4-week-value{font-size:8.5px;color:var(--ink-faint);font-variant-numeric:tabular-nums;}.hv4-week-track{height:100%;display:flex;align-items:flex-end;justify-content:center;}.hv4-week-track i{display:block;width:22px;min-height:4px;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,#cfd5df,#e5e9ef);}.hv4-week-track i.today{background:linear-gradient(180deg,#176ef0,#8db9ff);box-shadow:0 5px 10px rgba(23,110,240,.14);}.hv4-week-col b{font-size:9.5px;color:var(--ink-faint);}.hv4-week-col b.today{color:var(--accent);}.hv4-week-total{position:relative;padding-left:18px;border-left:1px solid var(--line);display:flex;flex-direction:column;}.hv4-week-total small{font-size:10px;color:var(--ink-faint);font-weight:700;}.hv4-week-total strong{margin-top:5px;font-size:22px;letter-spacing:-.03em;font-variant-numeric:tabular-nums;}.hv4-week-total span{margin-top:5px;font-size:10px;color:var(--ink-faint);}.hv4-week-total>div{margin-top:11px;height:5px;border-radius:99px;background:var(--bg-soft);overflow:hidden;}.hv4-week-total>div i{display:block;height:100%;background:var(--accent);border-radius:99px;}.hv4-week-total em{position:absolute;right:0;bottom:-1px;font-style:normal;font-size:9.5px;color:var(--ink-faint);}
.hv4-small-empty{min-height:220px;display:flex;align-items:center;justify-content:center;color:var(--ink-faint);font-size:12px;}
@media(max-width:1260px){.hv4-work-grid{grid-template-columns:minmax(480px,1.5fr) minmax(260px,.85fr);}.hv4-calendar{grid-column:1/-1;}.hv4-calendar .hv4-cal-grid{max-width:520px;margin-left:auto;margin-right:auto;}.hv4-bottom-grid{grid-template-columns:1fr 1fr;}.hv4-stat-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:860px){.hv4-exam-banner{min-height:96px;padding:18px;}.hv4-exam-right strong{font-size:34px;}.hv4-exam-right span{display:none;}.hv4-stat-grid,.hv4-work-grid,.hv4-bottom-grid{grid-template-columns:1fr;}.hv4-calendar{grid-column:auto;}.hv4-task-summary{grid-template-columns:auto 1fr;}.hv4-steps{grid-column:1/-1;justify-content:flex-end;}.hv4-task-row{grid-template-columns:62px minmax(0,1fr);}.hv4-task-btn{grid-column:1/-1;width:100%;}.hv4-ai{grid-template-columns:auto 1fr;}.hv4-ai>button{grid-column:1/-1;justify-content:center;}.hv4-weekly-body{grid-template-columns:1fr;}.hv4-week-total{padding:12px 0 0;border-left:0;border-top:1px solid var(--line);}}
/* AMES HOME V4 END */

/* ============ CALENDAR HUB V2: MONTH / WEEK / GOALS ============ */
.ch-top{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(280px,1fr);align-items:center;gap:18px;margin-bottom:14px}.ch-title{display:flex;align-items:center;gap:12px}.ch-title>span{display:inline-flex;align-items:center;height:26px;padding:0 9px;border-radius:7px;background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 72%,#7c63d8));color:#fff;font-size:9px;font-weight:900;letter-spacing:.13em;box-shadow:0 5px 14px rgba(var(--accent-rgb),.18)}.ch-title h1{margin:0;color:var(--ink);font-size:20px;line-height:1.15;letter-spacing:-.045em}.ch-title p{margin:3px 0 0;color:var(--ink-faint);font-size:11px}.ch-tabs{display:flex;align-items:center;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--bg-card);box-shadow:0 2px 8px rgba(35,43,58,.04)}.ch-tabs button{min-width:78px;height:34px;border:0;border-radius:8px;background:transparent;color:var(--ink-soft);font:750 13px var(--font);cursor:pointer;transition:.15s ease}.ch-tabs button:hover{background:var(--bg-soft);color:var(--ink)}.ch-tabs button.active{background:linear-gradient(135deg,var(--accent-soft),#eef3ff);color:var(--accent);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.16)}.ch-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.ch-ghost,.ch-primary,.ch-month-nav button,.ch-focus button,.ch-side-title button,.ch-goal-empty button,.ch-week-cta button,.ch-goal-hero button{height:36px;padding:0 13px;border:1px solid var(--line);border-radius:9px;background:var(--bg-card);color:var(--ink-soft);font:750 12.5px var(--font);cursor:pointer;transition:.14s ease}.ch-ghost:hover,.ch-month-nav button:hover,.ch-focus button:hover,.ch-side-title button:hover,.ch-week-cta button:hover,.ch-goal-hero button:hover{border-color:var(--line-strong);background:var(--bg-soft);color:var(--ink)}.ch-primary{border-color:var(--accent);background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 76%,#6f61d3));color:#fff;box-shadow:0 7px 16px rgba(var(--accent-rgb),.2)}.ch-primary:hover{transform:translateY(-1px);box-shadow:0 9px 19px rgba(var(--accent-rgb),.24)}.ch-month-nav{display:flex;align-items:center;height:36px;border:1px solid var(--line);border-radius:10px;background:var(--bg-card);overflow:hidden}.ch-month-nav button{width:36px;height:34px;padding:0;border:0;border-radius:0;font-size:21px}.ch-month-nav strong{min-width:124px;padding:0 12px;text-align:center;color:var(--ink);font-size:13px}
.ch-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.ch-stat{position:relative;display:flex;align-items:center;gap:11px;min-height:72px;padding:13px 15px;border:1px solid var(--line);border-radius:13px;background:linear-gradient(145deg,#fff,#fbfcff);box-shadow:0 5px 18px rgba(35,43,58,.045);overflow:hidden}.ch-stat:after{content:"";position:absolute;inset:auto -22px -32px auto;width:82px;height:82px;border-radius:50%;background:color-mix(in srgb,var(--tone,var(--accent)) 10%,transparent)}.ch-stat>span{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:11px;background:color-mix(in srgb,var(--tone,var(--accent)) 11%,#fff);color:var(--tone,var(--accent));flex:0 0 auto}.ch-stat>span .ic{width:18px;height:18px}.ch-stat>div{position:relative;z-index:1;display:flex;flex-direction:column;min-width:0}.ch-stat small{font-size:10.5px;color:var(--ink-faint);font-weight:700}.ch-stat strong{font-size:18px;line-height:1.35;color:var(--ink);font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-stat em{font-size:9.5px;color:var(--ink-faint);font-style:normal}.ch-stat.green{--tone:var(--good)}.ch-stat.purple{--tone:var(--math)}.ch-stat.orange{--tone:var(--warn)}.ch-stat.pink{--tone:#d44f83}.ch-stat.blue{--tone:var(--accent)}
.ch-month-goals{margin-bottom:14px;padding:15px;border:1px solid color-mix(in srgb,var(--accent) 14%,var(--line));border-radius:14px;background:linear-gradient(135deg,#fbfcff 0%,#f6f8ff 100%);box-shadow:0 5px 18px rgba(35,43,58,.04)}.ch-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:12px}.ch-section-head>div>span{display:block;margin-bottom:2px;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.14em}.ch-section-head h2{margin:0;color:var(--ink);font-size:16px;letter-spacing:-.035em}.ch-section-head button{display:flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--accent);font:750 11px var(--font);cursor:pointer}.ch-section-head button .ic{width:13px;height:13px}.ch-goal-deck{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.ch-goal-card{position:relative;min-height:112px;padding:12px;border:1px solid color-mix(in srgb,var(--gc) 17%,var(--line));border-radius:11px;background:linear-gradient(145deg,#fff 25%,var(--gs));text-align:left;font-family:var(--font);cursor:pointer;overflow:hidden;transition:.15s ease}.ch-goal-card:after{content:"";position:absolute;right:-25px;bottom:-35px;width:92px;height:92px;border-radius:50%;background:color-mix(in srgb,var(--gc) 9%,transparent)}.ch-goal-card:hover{transform:translateY(-2px);box-shadow:0 8px 18px color-mix(in srgb,var(--gc) 12%,transparent)}.ch-goal-card>div{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:7px}.ch-goal-card>div>span:first-child{padding:3px 7px;border-radius:999px;background:var(--gs);color:var(--gc);font-size:9px;font-weight:850}.ch-goal-card h3{position:relative;z-index:1;margin:9px 0 3px;color:var(--ink);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-goal-card p{position:relative;z-index:1;margin:0;color:var(--ink-faint);font-size:9.5px}.ch-goal-bar{position:absolute!important;z-index:1!important;left:12px;right:44px;bottom:13px;height:5px;border-radius:999px;background:rgba(255,255,255,.72);overflow:hidden}.ch-goal-bar i{display:block;height:100%;border-radius:999px;background:var(--gc)}.ch-goal-card>strong{position:absolute;z-index:1;right:12px;bottom:9px;color:var(--gc);font-size:11px}.ch-goal-empty{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:12px;min-height:72px;color:var(--ink-faint)}.ch-goal-empty b{font-size:12px}.ch-goal-empty button{height:30px;color:var(--accent)}
.ch-month-layout{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:14px;align-items:start}.ch-calendar,.ch-side-card,.ch-focus,.ch-week,.ch-week-cta,.ch-goals-main,.ch-goal-detail>section{border:1px solid var(--line);border-radius:14px;background:var(--bg-card);box-shadow:0 6px 20px rgba(35,43,58,.045)}.ch-calendar{overflow:hidden}.ch-weekdays{display:grid;grid-template-columns:repeat(7,1fr);height:39px;align-items:center;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fafbfc,#f7f8fb)}.ch-weekdays span{text-align:center;color:var(--ink-faint);font-size:10.5px;font-weight:800}.ch-weekdays .sat{color:var(--cal-sat)}.ch-weekdays .sun{color:var(--cal-sun)}.ch-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.ch-day{position:relative;min-height:118px;padding:9px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;color:var(--ink);font-family:var(--font);text-align:left;cursor:pointer;transition:.13s ease}.ch-day:nth-child(7n){border-right:0}.ch-day:nth-last-child(-n+7){border-bottom:0}.ch-day:hover{z-index:2;background:#f9fbff;box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.15)}.ch-day.muted{background:#fafbfc;color:var(--ink-faint)}.ch-day.selected{z-index:3;background:linear-gradient(145deg,#f8fbff,#f2f6ff);box-shadow:inset 0 0 0 2px var(--accent)}.ch-day-top{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}.ch-day-top>strong{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:8px;font-size:12px;font-weight:850}.ch-day.today .ch-day-top>strong{background:var(--accent);color:#fff;box-shadow:0 4px 10px rgba(var(--accent-rgb),.22)}.ch-day.sun .ch-day-top>strong{color:var(--cal-sun)}.ch-day.sat .ch-day-top>strong{color:var(--cal-sat)}.ch-day.today.sun .ch-day-top>strong,.ch-day.today.sat .ch-day-top>strong{color:#fff}.ch-day-top span{display:flex;justify-content:flex-end;min-width:0}.ch-day-top b{max-width:70px;padding:3px 5px;border-radius:5px;background:var(--accent-soft);color:var(--accent);font-size:8px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-day-top b.holiday{background:var(--bad-soft);color:var(--bad)}.ch-day-top b.duty{background:color-mix(in srgb,var(--duty) 10%,#fff);color:var(--duty)}.ch-day-items{display:flex;flex-direction:column;gap:4px;min-height:48px;margin-top:7px}.ch-day-items em{display:flex;align-items:center;gap:5px;min-width:0;padding:3px 5px;border-radius:5px;font-size:8.5px;font-weight:720;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-day-items em i{width:5px;height:5px;border-radius:50%;flex:0 0 auto}.ch-day-items .exam{background:var(--math-soft);color:var(--math)}.ch-day-items .exam i{background:var(--math)}.ch-day-items .event{background:#fff0f5;color:#bf3f76}.ch-day-items .event i{background:#d74f87}.ch-day-items .goal{background:#eef4fb;color:#526577}.ch-day-items .more{align-self:flex-start;background:var(--bg-soft);color:var(--ink-faint)}.ch-day-foot{position:absolute;left:9px;right:9px;bottom:8px;display:flex;align-items:center;gap:7px}.ch-day-foot>span{width:52px;color:var(--ink-faint);font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-day-foot>div{flex:1;height:4px;border-radius:999px;background:var(--bg-soft2);overflow:hidden}.ch-day-foot i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 65%,var(--good)))}.ch-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 13px;border-top:1px solid var(--line);background:#fafbfc;color:var(--ink-faint);font-size:9.5px}.ch-legend span{display:flex;align-items:center;gap:5px}.ch-legend i{width:7px;height:7px;border-radius:50%}.ch-legend .exam{background:var(--math)}.ch-legend .event{background:#d74f87}.ch-legend .goal{background:#637a91}.ch-legend .study{background:var(--accent)}
.ch-rail,.ch-week-rail,.ch-goal-detail{display:flex;flex-direction:column;gap:11px;min-width:0}.ch-focus{padding:16px;background:linear-gradient(145deg,#fff 10%,#f4f7ff)}.ch-focus>span{display:block;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.08em}.ch-focus h2{margin:5px 0 3px;color:var(--ink);font-size:20px;letter-spacing:-.045em}.ch-focus h2 em{color:var(--ink-soft);font-size:12px;font-style:normal}.ch-focus p{margin:0;color:var(--ink-faint);font-size:10px}.ch-focus>div{display:grid;grid-template-columns:1fr auto;gap:7px;margin-top:14px}.ch-focus button:first-child{color:#fff;border-color:var(--accent);background:var(--accent)}.ch-side-card{padding:14px}.ch-side-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.ch-side-title h3{margin:0;color:var(--ink);font-size:12.5px}.ch-side-title>span{color:var(--ink-faint);font-size:9.5px}.ch-side-title button{height:25px;padding:0 5px;border:0;background:transparent;color:var(--accent);font-size:10px}.ch-agenda{display:flex;flex-direction:column;gap:5px}.ch-agenda>div{display:grid;grid-template-columns:36px 1fr;gap:7px;padding:7px 8px;border-radius:8px;background:var(--bg-soft)}.ch-agenda>div small{color:var(--ink-faint);font-size:8.5px}.ch-agenda>div b{color:var(--ink);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-agenda .holiday{background:var(--bad-soft)}.ch-agenda .exam{background:var(--math-soft)}.ch-agenda .event{background:#fff0f5}.ch-empty{margin:6px 0;color:var(--ink-faint);font-size:10.5px;line-height:1.5}.ch-study-snapshot>strong{font-size:19px;color:var(--ink)}.ch-study-snapshot>div{height:6px;margin:8px 0 5px;border-radius:999px;background:var(--bg-soft2);overflow:hidden}.ch-study-snapshot i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--good))}.ch-study-snapshot p{margin:0;color:var(--ink-faint);font-size:9.5px}.ch-mini-sessions,.ch-mini-goals,.ch-linked{display:flex;flex-direction:column;margin-top:9px}.ch-mini-sessions button,.ch-mini-goals button,.ch-linked button{display:flex;align-items:center;gap:7px;width:100%;padding:7px 3px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.ch-mini-sessions button:hover,.ch-mini-goals button:hover,.ch-linked button:hover{background:var(--bg-soft);border-radius:7px}.ch-mini-sessions button>i,.ch-mini-goals button>i{width:6px;height:6px;border-radius:50%;flex:0 0 auto}.ch-mini-sessions button>span,.ch-linked button>span{display:flex;flex:1;min-width:0;flex-direction:column}.ch-mini-sessions b,.ch-linked b{color:var(--ink);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-mini-sessions small,.ch-linked small{color:var(--ink-faint);font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-mini-sessions em,.ch-mini-goals em,.ch-linked em{color:var(--ink-faint);font-size:8.5px;font-style:normal;white-space:nowrap}.ch-mini-goals button>span{flex:1;min-width:0;color:var(--ink);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-week-layout{display:grid;grid-template-columns:minmax(750px,1fr) 275px;gap:14px;align-items:start}.ch-week{overflow:hidden}.ch-week-head{display:grid;grid-template-columns:48px repeat(7,minmax(92px,1fr));border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fafbfc,#f7f8fb)}.ch-week-head>div{border-right:1px solid var(--line)}.ch-week-head button{height:65px;border:0;border-right:1px solid var(--line);background:transparent;color:var(--ink-soft);font-family:var(--font);cursor:pointer}.ch-week-head button:last-child{border-right:0}.ch-week-head button span,.ch-week-head button strong,.ch-week-head button small{display:block}.ch-week-head button span{font-size:8.5px}.ch-week-head button strong{margin:2px auto;font-size:15px;color:var(--ink)}.ch-week-head button small{font-size:8px;color:var(--ink-faint)}.ch-week-head button.today strong{display:flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:50%;background:var(--accent);color:#fff}.ch-week-head button.selected{background:var(--accent-soft)}.ch-all-day{display:grid;grid-template-columns:48px repeat(7,minmax(92px,1fr));min-height:42px;border-bottom:1px solid var(--line);background:#fff}.ch-all-day>span{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--line);color:var(--ink-faint);font-size:8px}.ch-all-day>div{display:flex;flex-direction:column;gap:2px;padding:4px;border-right:1px solid var(--line);overflow:hidden}.ch-all-day>div:last-child{border-right:0}.ch-all-day em{display:block;padding:2px 4px;border-radius:4px;font-size:7.5px;font-weight:750;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-all-day .exam{background:var(--math-soft);color:var(--math)}.ch-all-day .event{background:#fff0f5;color:#bf3f76}.ch-all-day .more{background:var(--bg-soft);color:var(--ink-faint)}.ch-week-scroll{max-height:690px;overflow:auto}.ch-week-canvas{position:relative;min-width:720px}.ch-time-axis{position:absolute;left:0;top:0;width:48px;height:100%;border-right:1px solid var(--line);background:#fafbfc}.ch-time-axis span{position:absolute;right:7px;transform:translateY(-50%);color:var(--ink-faint);font-size:8px}.ch-week-columns{position:absolute;left:48px;right:0;top:0;height:100%;display:grid;grid-template-columns:repeat(7,1fr)}.ch-week-col{position:relative;border-right:1px solid var(--line);cursor:pointer}.ch-week-col:last-child{border-right:0}.ch-week-col.selected{background:rgba(var(--accent-rgb),.025)}.ch-hour-line{position:absolute;left:0;right:0;height:1px;background:var(--line)}.ch-week-block{position:absolute;z-index:3;left:4px;right:4px;padding:5px 6px;border:1px solid color-mix(in srgb,var(--bc) 28%,transparent);border-left:3px solid var(--bc);border-radius:7px;background:linear-gradient(145deg,#fff,var(--bs));color:var(--bc);font-family:var(--font);text-align:left;overflow:hidden;cursor:pointer;box-shadow:0 2px 5px rgba(35,43,58,.07);transition:.12s ease}.ch-week-block:hover{z-index:8;transform:translateY(-1px);box-shadow:0 8px 18px rgba(35,43,58,.14)}.ch-week-block>div{display:flex;align-items:center;justify-content:space-between;gap:4px}.ch-week-block b{font-size:9.5px}.ch-week-block span{font-size:7.5px;opacity:.78}.ch-week-block small{display:block;margin-top:2px;max-width:100%;font-size:7.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-week-block.done{opacity:.58}.ch-week-block.done:after{content:"✓";position:absolute;right:4px;bottom:3px;font-size:9px;font-weight:900}.ch-week-block.running{box-shadow:0 0 0 2px color-mix(in srgb,var(--bc) 17%,transparent),0 8px 18px rgba(35,43,58,.12)}.ch-now{position:absolute;z-index:9;left:0;right:0;height:1px;background:#e24b55;pointer-events:none}.ch-now:after{content:"";position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:#e24b55}.ch-now span{position:absolute;left:-43px;top:-7px;padding:2px 4px;border-radius:4px;background:#e24b55;color:#fff;font-size:7px}.ch-week-goals{display:flex;flex-direction:column}.ch-week-goals button{display:grid;grid-template-columns:44px minmax(0,1fr) 30px;align-items:center;gap:7px;padding:8px 2px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.ch-week-goals button:first-child{border-top:0}.ch-week-goals button:hover{background:var(--bg-soft);border-radius:7px}.ch-week-goals button>span{display:flex;align-items:center;justify-content:center;height:22px;border-radius:999px;background:var(--gs);color:var(--gc);font-size:8px;font-weight:800}.ch-week-goals button>div{min-width:0}.ch-week-goals b{display:block;color:var(--ink);font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-week-goals button>div>div{height:4px;margin-top:5px;border-radius:999px;background:var(--bg-soft2);overflow:hidden}.ch-week-goals i{display:block;height:100%;border-radius:999px}.ch-week-goals em{color:var(--ink-faint);font-size:8.5px;font-style:normal;text-align:right}.ch-balance{display:flex;flex-direction:column;gap:8px}.ch-balance>div{display:grid;grid-template-columns:50px 1fr 46px;align-items:center;gap:7px}.ch-balance span{color:var(--ink-soft);font-size:9px}.ch-balance b{height:5px;border-radius:999px;background:var(--bg-soft2);overflow:hidden}.ch-balance i{display:block;height:100%;border-radius:999px}.ch-balance em{color:var(--ink-faint);font-size:8px;font-style:normal;text-align:right}.ch-week-cta{display:flex;align-items:center;gap:9px;padding:13px;background:linear-gradient(145deg,#f9fbff,#f2f5ff)}.ch-week-cta>span{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.ch-week-cta>div{flex:1;min-width:0}.ch-week-cta b{color:var(--ink);font-size:10.5px}.ch-week-cta p{margin:2px 0 0;color:var(--ink-faint);font-size:8.5px}.ch-week-cta button{height:29px;color:var(--accent)}
.ch-goal-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.ch-goal-tools>div{display:flex;gap:6px;flex-wrap:wrap}.ch-goal-tools button{height:31px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--bg-card);color:var(--ink-soft);font:750 11px var(--font);cursor:pointer}.ch-goal-tools button.active{border-color:rgba(var(--accent-rgb),.28);background:var(--accent-soft);color:var(--accent)}.ch-goal-tools select{height:34px;min-width:118px;padding:0 10px;border:1px solid var(--line);border-radius:9px;background:var(--bg-card);color:var(--ink);font-family:var(--font)}.ch-goals-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:start}.ch-goals-main{overflow:hidden}.ch-goal-list{display:flex;flex-direction:column}.ch-goal-row{display:grid;grid-template-columns:70px minmax(180px,1fr) minmax(135px,190px) 46px 78px 14px;align-items:center;gap:10px;min-height:70px;padding:10px 14px;border:0;border-bottom:1px solid var(--line);background:#fff;font-family:var(--font);text-align:left;cursor:pointer;transition:.12s ease}.ch-goal-row:last-child{border-bottom:0}.ch-goal-row:hover{background:#fafcff}.ch-goal-row.selected{position:relative;z-index:2;background:linear-gradient(90deg,#f4f8ff,#fafcff);box-shadow:inset 3px 0 0 var(--accent),inset 0 0 0 1px rgba(var(--accent-rgb),.16)}.ch-subject{display:flex;align-items:center;justify-content:center;height:25px;padding:0 8px;border:1px solid color-mix(in srgb,var(--gc) 18%,transparent);border-radius:999px;background:var(--gs);color:var(--gc);font-size:9.5px;font-weight:850}.ch-goal-name{display:flex;flex-direction:column;min-width:0}.ch-goal-name b{color:var(--ink);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ch-goal-name small{margin-top:3px;color:var(--ink-faint);font-size:9.5px}.ch-row-progress{display:flex;flex-direction:column;gap:4px}.ch-row-progress>i{height:5px;border-radius:999px;background:var(--bg-soft2);overflow:hidden}.ch-row-progress>i>b{display:block;height:100%;border-radius:999px}.ch-row-progress small{color:var(--ink-faint);font-size:8.5px;text-align:right}.ch-goal-row>strong{color:var(--ink);font-size:12px;text-align:right}.ch-goal-row>em{color:var(--ink-faint);font-size:17px;font-style:normal}.ch-status{display:inline-flex;align-items:center;gap:5px;font-size:9px;font-weight:800;white-space:nowrap}.ch-status i{width:6px;height:6px;border-radius:50%}.ch-status.active{color:var(--good)}.ch-status.active i,.ch-status.done i{background:var(--good)}.ch-status.done{color:var(--good)}.ch-status.future{color:var(--accent)}.ch-status.future i{background:var(--accent)}.ch-status.risk{color:var(--warn)}.ch-status.risk i{background:var(--warn)}.ch-goal-list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:250px;gap:5px}.ch-goal-list-empty b{color:var(--ink);font-size:13px}.ch-goal-list-empty span{color:var(--ink-faint);font-size:10.5px}.ch-goal-detail>section{padding:15px}.ch-goal-hero{background:linear-gradient(145deg,#fff 12%,var(--gs));border-color:color-mix(in srgb,var(--gc) 20%,var(--line))!important}.ch-goal-hero>div:first-child{display:flex;align-items:center;justify-content:space-between}.ch-goal-hero>div:first-child>span{padding:4px 8px;border-radius:999px;background:var(--gs);color:var(--gc);font-size:9px;font-weight:850}.ch-goal-hero button{height:26px;border:0;background:transparent;color:var(--gc)}.ch-goal-hero h2{margin:13px 0 4px;color:var(--ink);font-size:18px;letter-spacing:-.04em}.ch-goal-hero>p{margin:0;color:var(--ink-faint);font-size:9.5px}.ch-detail-number{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.ch-detail-number>strong{color:var(--gc);font-size:25px}.ch-detail-bar{height:7px;margin:7px 0;border-radius:999px;background:rgba(255,255,255,.78);overflow:hidden}.ch-detail-bar i{display:block;height:100%;border-radius:999px;background:var(--gc)}.ch-goal-hero>small{color:var(--ink-faint);font-size:9px}.ch-linked button>i{width:8px;height:8px;border:1.5px solid var(--line-strong);border-radius:50%;flex:0 0 auto}.ch-linked button>i.done{border-color:var(--good);background:var(--good)}.ch-goal-note{display:flex;gap:9px;background:linear-gradient(145deg,#f8fbff,#f2f5ff)!important;border-color:rgba(var(--accent-rgb),.18)!important}.ch-goal-note>span{display:flex;color:var(--accent)}.ch-goal-note>span .ic{width:16px;height:16px}.ch-goal-note b{color:var(--ink);font-size:10.5px}.ch-goal-note p{margin:4px 0 0;color:var(--ink-soft);font-size:9.5px;line-height:1.6}.ch-modal-check{display:flex;align-items:center;gap:8px;color:var(--ink-soft);font-size:12px}
@media(max-width:1240px){.ch-top{grid-template-columns:1fr auto}.ch-title{grid-column:1}.ch-tabs{grid-column:2}.ch-actions{grid-column:1/-1;justify-content:flex-start}.ch-goal-deck{grid-template-columns:repeat(2,1fr)}.ch-month-layout,.ch-week-layout{grid-template-columns:minmax(0,1fr) 260px}.ch-goals-layout{grid-template-columns:minmax(0,1fr) 300px}.ch-goal-row{grid-template-columns:66px minmax(150px,1fr) 130px 42px 72px 12px;gap:7px}}
@media(max-width:980px){.ch-stats{grid-template-columns:repeat(2,1fr)}.ch-month-layout,.ch-week-layout,.ch-goals-layout{grid-template-columns:1fr}.ch-rail,.ch-week-rail,.ch-goal-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.ch-focus,.ch-goal-hero{grid-column:1/-1}.ch-week{overflow-x:auto}.ch-week-head,.ch-all-day,.ch-week-canvas{min-width:780px}.ch-goals-main{overflow-x:auto}.ch-goal-list{min-width:720px}}
@media(max-width:700px){.ch-top{display:flex;align-items:stretch;flex-direction:column}.ch-title>span{display:none}.ch-title p{display:none}.ch-tabs{width:100%}.ch-tabs button{flex:1;min-width:0}.ch-actions{display:grid;grid-template-columns:auto 1fr auto;width:100%}.ch-month-nav strong{min-width:0;width:100%}.ch-stats{display:flex;overflow-x:auto}.ch-stat{min-width:155px}.ch-goal-deck{display:flex;overflow-x:auto}.ch-goal-card{min-width:210px}.ch-calendar{overflow-x:auto}.ch-weekdays,.ch-grid,.ch-legend{min-width:700px}.ch-rail,.ch-week-rail,.ch-goal-detail{display:flex}.ch-goal-tools{align-items:flex-start;flex-direction:column}.ch-goal-tools select{width:100%}.ch-goal-row{grid-template-columns:65px minmax(165px,1fr) 135px 42px 72px 12px}.ch-day{min-height:112px}}
@media(max-width:460px){.ch-actions{grid-template-columns:1fr 1fr}.ch-month-nav{grid-column:1/-1;grid-row:1}.ch-ghost,.ch-primary{width:100%}.ch-stat{min-width:142px;padding:11px}.ch-stat>span{width:34px;height:34px}.ch-stat strong{font-size:16px}.ch-month-goals{padding:12px}.ch-goal-card{min-width:195px}.ch-side-card,.ch-focus,.ch-goal-detail>section{padding:13px}}

/* ============ CALENDAR HUB V3: READABILITY & VISUAL POLISH ============ */
.calendar-hub-v3{color:var(--ink)}
.calendar-hub-v3 .ch-top{grid-template-columns:minmax(270px,1fr) auto minmax(330px,1fr);gap:22px;margin-bottom:18px}
.calendar-hub-v3 .ch-title{gap:14px}
.calendar-hub-v3 .ch-title>span{height:30px;padding:0 11px;border-radius:9px;font-size:10px;letter-spacing:.15em}
.calendar-hub-v3 .ch-title h1{font-size:24px;letter-spacing:-.045em}
.calendar-hub-v3 .ch-title p{margin-top:5px;font-size:13px;line-height:1.45}
.calendar-hub-v3 .ch-tabs{padding:5px;border-radius:14px}
.calendar-hub-v3 .ch-tabs button{min-width:92px;height:40px;border-radius:10px;font-size:14px}
.calendar-hub-v3 .ch-actions{gap:10px}
.calendar-hub-v3 .ch-ghost,.calendar-hub-v3 .ch-primary,.calendar-hub-v3 .ch-month-nav button{height:40px;font-size:13.5px;border-radius:10px}
.calendar-hub-v3 .ch-month-nav{height:40px;border-radius:11px}
.calendar-hub-v3 .ch-month-nav button{width:40px;height:38px;font-size:23px}
.calendar-hub-v3 .ch-month-nav strong{min-width:142px;padding:0 14px;font-size:14px}
.calendar-hub-v3 .ch-stats{gap:13px;margin-bottom:18px}
.calendar-hub-v3 .ch-stat{min-height:88px;padding:16px 18px;border-radius:16px;box-shadow:0 8px 24px rgba(35,43,58,.055)}
.calendar-hub-v3 .ch-stat>span{width:44px;height:44px;border-radius:13px}
.calendar-hub-v3 .ch-stat>span .ic{width:20px;height:20px}
.calendar-hub-v3 .ch-stat small{font-size:12px}
.calendar-hub-v3 .ch-stat strong{font-size:22px}
.calendar-hub-v3 .ch-stat em{font-size:11px}

.chv3-focus-strip{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:18px;margin-bottom:18px;padding:17px 18px;border:1px solid color-mix(in srgb,var(--accent) 18%,var(--line));border-radius:17px;background:linear-gradient(115deg,#fbfdff 0%,#f3f7ff 60%,#f8f5ff 100%);box-shadow:0 9px 26px rgba(35,43,58,.05)}
.chv3-focus-heading{display:flex;align-items:center;gap:12px;min-width:210px}
.chv3-focus-heading>span{display:flex;align-items:center;height:30px;padding:0 9px;border-radius:8px;background:#e9f1ff;color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.13em}
.chv3-focus-heading h2{margin:0;font-size:17px;letter-spacing:-.03em}
.chv3-focus-heading p{margin:4px 0 0;color:var(--ink-faint);font-size:11px;white-space:nowrap}
.chv3-focus-items{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;min-width:0}
.chv3-focus-item{position:relative;display:grid;grid-template-columns:9px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;height:56px;padding:8px 10px 12px;border:1px solid color-mix(in srgb,var(--gc) 18%,var(--line));border-radius:11px;background:linear-gradient(145deg,#fff,var(--gs));font-family:var(--font);text-align:left;cursor:pointer;overflow:hidden}
.chv3-focus-item:hover{transform:translateY(-1px);box-shadow:0 7px 16px color-mix(in srgb,var(--gc) 11%,transparent)}
.chv3-focus-dot{width:8px;height:8px;border-radius:50%;background:var(--gc)}
.chv3-focus-item>div{display:flex;flex-direction:column;min-width:0}
.chv3-focus-item b{font-size:11.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chv3-focus-item small{margin-top:3px;font-size:9px;color:var(--ink-faint);white-space:nowrap}
.chv3-focus-item strong{font-size:11px;color:var(--gc)}
.chv3-focus-item>i{position:absolute;left:10px;right:10px;bottom:6px;height:4px;border-radius:99px;background:rgba(255,255,255,.75);overflow:hidden}
.chv3-focus-item>i em{display:block;height:100%;border-radius:99px;background:var(--gc)}
.chv3-focus-empty{grid-column:1/-1;height:56px;border:1px dashed var(--line-strong);border-radius:11px;background:rgba(255,255,255,.72);color:var(--ink-soft);font-family:var(--font);cursor:pointer}
.chv3-focus-empty b{font-size:12px}.chv3-focus-empty span{margin-left:8px;color:var(--accent);font-size:11px;font-weight:800}
.chv3-focus-all{display:flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--accent);font:800 12px var(--font);white-space:nowrap;cursor:pointer}
.chv3-focus-all .ic{width:14px;height:14px}

.chv3-month-layout{display:grid;grid-template-columns:minmax(0,1fr) 326px;gap:18px;align-items:start}
.chv3-calendar,.chv3-date-hero,.chv3-side-card,.chv3-week,.chv3-week-selected{border:1px solid var(--line);border-radius:17px;background:var(--bg-card);box-shadow:0 8px 26px rgba(35,43,58,.055)}
.chv3-calendar{overflow:hidden}
.chv3-weekdays{display:grid;grid-template-columns:repeat(7,1fr);height:46px;align-items:center;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fbfcfe,#f7f9fc)}
.chv3-weekdays span{text-align:center;color:var(--ink-soft);font-size:12px;font-weight:850}
.chv3-weekdays .sat{color:var(--cal-sat)}.chv3-weekdays .sun{color:var(--cal-sun)}
.chv3-month-week{position:relative;min-height:174px;border-bottom:1px solid var(--line)}
.chv3-month-week:last-of-type{border-bottom:0}
.chv3-period-layer{position:absolute;inset:0 0 auto 0;height:116px;z-index:5;pointer-events:none}
.chv3-period-bar{position:absolute;z-index:6;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;height:21px;padding:0 8px;border:1px solid color-mix(in srgb,var(--gc) 24%,transparent);border-left:4px solid var(--gc);border-radius:7px;background:linear-gradient(90deg,var(--gs),color-mix(in srgb,var(--gs) 75%,#fff));color:var(--gc);font-family:var(--font);text-align:left;pointer-events:auto;cursor:pointer;overflow:hidden;box-shadow:0 2px 7px color-mix(in srgb,var(--gc) 10%,transparent)}
.chv3-period-bar.continues-left{border-left-width:1px;border-radius:3px 7px 7px 3px}.chv3-period-bar.continues-right{border-radius:7px 3px 3px 7px}
.chv3-period-bar:hover{z-index:10;transform:translateY(-1px);box-shadow:0 7px 15px color-mix(in srgb,var(--gc) 16%,transparent)}
.chv3-period-bar span{position:relative;z-index:2;font-size:10.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chv3-period-bar strong{position:relative;z-index:2;font-size:9.5px;white-space:nowrap}
.chv3-period-bar>i{position:absolute;left:0;bottom:0;height:3px;background:var(--gc);opacity:.72}
.chv3-period-more{position:absolute;right:7px;top:112px;padding:2px 6px;border-radius:999px;background:var(--bg-soft);color:var(--ink-faint);font-size:9px;font-weight:800}
.chv3-week-cells{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:174px}
.chv3-day{position:relative;min-height:174px;padding:119px 11px 36px;border:0;border-right:1px solid var(--line);background:#fff;color:var(--ink);font-family:var(--font);text-align:left;cursor:pointer;transition:.15s ease}
.chv3-day:last-child{border-right:0}
.chv3-day:hover{z-index:3;background:#f8fbff;box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.18)}
.chv3-day.muted{background:#fafbfd;color:var(--ink-faint)}
.chv3-day.selected{z-index:4;background:linear-gradient(145deg,#f9fbff,#f1f6ff);box-shadow:inset 0 0 0 2px var(--accent)}
.chv3-day-head{position:absolute;top:8px;left:10px;right:10px;display:flex;align-items:center;justify-content:space-between;gap:7px}
.chv3-day-head>strong{display:flex;align-items:center;justify-content:center;width:29px;height:29px;border-radius:9px;font-size:14px;font-weight:900}
.chv3-day.today .chv3-day-head>strong{background:var(--accent);color:#fff;box-shadow:0 5px 12px rgba(var(--accent-rgb),.22)}
.chv3-day.sun .chv3-day-head>strong{color:var(--cal-sun)}.chv3-day.sat .chv3-day-head>strong{color:var(--cal-sat)}
.chv3-day.today.sun .chv3-day-head>strong,.chv3-day.today.sat .chv3-day-head>strong{color:#fff}
.chv3-day-head span{display:flex;justify-content:flex-end;min-width:0}
.chv3-day-head b{max-width:82px;padding:4px 6px;border-radius:6px;font-size:9px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chv3-day-head b.today{background:var(--accent-soft);color:var(--accent)}
.chv3-day-head b.holiday{background:var(--bad-soft);color:var(--bad)}
.chv3-day-head b.duty{background:color-mix(in srgb,var(--duty) 10%,#fff);color:var(--duty)}
.chv3-day-events{display:flex;flex-direction:column;gap:5px;min-height:34px}
.chv3-day-events em{display:flex;align-items:center;gap:6px;min-width:0;padding:5px 7px;border-radius:7px;font-size:10.5px;font-weight:760;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chv3-day-events em i{width:6px;height:6px;border-radius:50%;flex:0 0 auto}
.chv3-day-events .exam{background:var(--math-soft);color:var(--math)}.chv3-day-events .exam i{background:var(--math)}
.chv3-day-events .event{background:#fff0f5;color:#b93d73}.chv3-day-events .event i{background:#d44f83}
.chv3-day-events .more{align-self:flex-start;background:var(--bg-soft);color:var(--ink-faint)}
.chv3-day-study{position:absolute;left:11px;right:11px;bottom:9px}
.chv3-day-study>div{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:6px}
.chv3-day-study span{font-size:10px;color:var(--ink-faint);white-space:nowrap}.chv3-day-study strong{font-size:10px;color:var(--ink-soft)}
.chv3-day-study>i{display:block;height:5px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}
.chv3-day-study>i b{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),#59a1ff)}
.chv3-legend{display:flex;align-items:center;gap:19px;flex-wrap:wrap;padding:13px 15px;border-top:1px solid var(--line);background:#fafbfc;color:var(--ink-faint);font-size:11px}
.chv3-legend span{display:flex;align-items:center;gap:6px}.chv3-legend i{width:8px;height:8px;border-radius:50%}
.chv3-legend .period{background:#6d52c8}.chv3-legend .exam{background:var(--math)}.chv3-legend .event{background:#d44f83}.chv3-legend .study{background:var(--accent)}

.chv3-rail,.chv3-week-rail{display:flex;flex-direction:column;gap:13px;min-width:0}
.chv3-date-hero{padding:19px;background:linear-gradient(145deg,#fff 0%,#f1f6ff 100%)}
.chv3-date-kicker{display:flex;align-items:center;justify-content:space-between;gap:8px}.chv3-date-kicker span{color:var(--accent);font-size:11px;font-weight:850}.chv3-date-kicker b{padding:3px 6px;border-radius:6px;background:var(--accent);color:#fff;font-size:8px;letter-spacing:.08em}
.chv3-date-hero h2{margin:8px 0 5px;font-size:23px;letter-spacing:-.045em}.chv3-date-hero h2 em{font-size:13px;color:var(--ink-soft);font-style:normal}
.chv3-date-hero p{margin:0;color:var(--ink-faint);font-size:12px;line-height:1.5}
.chv3-date-hero>div:last-child{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:16px}
.chv3-date-hero button,.chv3-week-selected button{height:40px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink-soft);font:800 12.5px var(--font);cursor:pointer}
.chv3-date-hero button:first-child,.chv3-week-selected button{border-color:var(--accent);background:var(--accent);color:#fff}
.chv3-side-card{padding:17px}
.chv3-side-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px}.chv3-side-title h3{margin:0;font-size:14px}.chv3-side-title>span,.chv3-side-title>strong{font-size:11px;color:var(--ink-faint)}.chv3-side-title button{border:0;background:transparent;color:var(--accent);font:800 11px var(--font);cursor:pointer}
.chv3-agenda{display:flex;flex-direction:column;gap:7px}.chv3-agenda>div{display:grid;grid-template-columns:43px 1fr;gap:8px;padding:9px 10px;border-radius:9px;background:var(--bg-soft)}.chv3-agenda small{font-size:10px;color:var(--ink-faint)}.chv3-agenda b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv3-agenda .holiday{background:var(--bad-soft)}.chv3-agenda .exam{background:var(--math-soft)}.chv3-agenda .event{background:#fff0f5}
.chv3-empty{margin:8px 0;color:var(--ink-faint);font-size:12px;line-height:1.6}
.chv3-study-summary{display:grid;grid-template-columns:1fr auto;align-items:end;gap:5px}.chv3-study-summary>b{font-size:24px}.chv3-study-summary>span{font-size:11px;color:var(--ink-faint)}.chv3-study-summary>i{grid-column:1/-1;display:block;height:7px;margin-top:5px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}.chv3-study-summary>i em{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--good))}
.chv3-session-list,.chv3-goal-list{display:flex;flex-direction:column;margin-top:10px}.chv3-session-list button,.chv3-goal-list button{display:flex;align-items:center;gap:9px;width:100%;min-height:48px;padding:8px 4px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.chv3-session-list button:hover,.chv3-goal-list button:hover{background:var(--bg-soft);border-radius:8px}.chv3-session-list button>i,.chv3-goal-list button>i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.chv3-session-list button>span{display:flex;flex:1;min-width:0;flex-direction:column}.chv3-session-list b{font-size:12px}.chv3-session-list small{margin-top:2px;font-size:10px;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv3-session-list button>em,.chv3-goal-list button>strong{font-size:10px;color:var(--ink-faint);font-style:normal;white-space:nowrap}.chv3-goal-list button>span{flex:1;min-width:0;font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.chv3-week-layout{display:grid;grid-template-columns:minmax(860px,1fr) 320px;gap:18px;align-items:start}
.chv3-week{overflow:hidden}.chv3-week-head{display:grid;grid-template-columns:62px repeat(7,minmax(108px,1fr));border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fcfdff,#f7f9fc)}
.chv3-week-head .axis-title{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--line);color:var(--ink-faint);font-size:10px;font-weight:800}
.chv3-week-head button{height:78px;border:0;border-right:1px solid var(--line);background:transparent;color:var(--ink-soft);font-family:var(--font);cursor:pointer}.chv3-week-head button:last-child{border-right:0}.chv3-week-head button:hover{background:#f5f8fd}.chv3-week-head button.selected{background:var(--accent-soft)}
.chv3-week-head button span,.chv3-week-head button strong,.chv3-week-head button small{display:block}.chv3-week-head button span{font-size:11px;font-weight:750}.chv3-week-head button strong{margin:4px auto 3px;font-size:19px;color:var(--ink)}.chv3-week-head button small{font-size:10px;color:var(--ink-faint)}.chv3-week-head button.today strong{display:flex;align-items:center;justify-content:center;width:31px;height:31px;border-radius:50%;background:var(--accent);color:#fff;box-shadow:0 5px 12px rgba(var(--accent-rgb),.2)}
.chv3-all-day{display:grid;grid-template-columns:62px repeat(7,minmax(108px,1fr));min-height:54px;border-bottom:1px solid var(--line);background:#fff}.chv3-all-day>span{display:flex;align-items:center;justify-content:center;border-right:1px solid var(--line);color:var(--ink-faint);font-size:10px;font-weight:750}.chv3-all-day>div{display:flex;flex-direction:column;gap:3px;padding:6px;border-right:1px solid var(--line);overflow:hidden}.chv3-all-day>div:last-child{border-right:0}.chv3-all-day em{display:block;padding:4px 6px;border-radius:6px;font-size:10px;font-weight:780;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv3-all-day .exam{background:var(--math-soft);color:var(--math)}.chv3-all-day .event{background:#fff0f5;color:#b93d73}.chv3-all-day .more{background:var(--bg-soft);color:var(--ink-faint)}
.chv3-week-scroll{max-height:720px;overflow:auto}.chv3-week-canvas{position:relative;min-width:820px;background:#fff}.chv3-time-axis{position:absolute;left:0;top:0;width:62px;height:100%;border-right:1px solid var(--line);background:#fafbfd}.chv3-time-axis span{position:absolute;right:10px;transform:translateY(-50%);color:var(--ink-faint);font-size:10.5px;font-variant-numeric:tabular-nums}
.chv3-week-columns{position:absolute;left:62px;right:0;top:0;height:100%;display:grid;grid-template-columns:repeat(7,1fr)}.chv3-week-col{position:relative;border-right:1px solid var(--line);cursor:pointer;background:linear-gradient(180deg,rgba(248,250,253,.45),rgba(255,255,255,.15))}.chv3-week-col:nth-child(even){background:#fcfdff}.chv3-week-col:last-child{border-right:0}.chv3-week-col.selected{background:rgba(var(--accent-rgb),.038)}.chv3-week-col.today{box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.13)}
.chv3-hour-line{position:absolute;left:0;right:0;height:1px;background:#e8edf3}.chv3-week-block{position:absolute;z-index:3;left:7px;right:7px;padding:9px 10px;border:1px solid color-mix(in srgb,var(--bc) 28%,transparent);border-left:4px solid var(--bc);border-radius:11px;background:linear-gradient(145deg,#fff 15%,var(--bs));color:var(--bc);font-family:var(--font);text-align:left;overflow:hidden;cursor:pointer;box-shadow:0 4px 12px rgba(35,43,58,.08);transition:.14s ease}.chv3-week-block:hover{z-index:9;transform:translateY(-2px);box-shadow:0 10px 24px rgba(35,43,58,.15)}
.chv3-week-block>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.chv3-week-block>div span{padding:3px 6px;border-radius:6px;background:color-mix(in srgb,var(--bc) 10%,#fff);font-size:10.5px;font-weight:850}.chv3-week-block time{font-size:10px;font-weight:750;opacity:.82;white-space:nowrap}.chv3-week-block>strong{display:block;margin-top:6px;color:var(--ink);font-size:12.5px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv3-week-block>small{display:block;margin-top:4px;font-size:10px;color:var(--ink-faint)}.chv3-week-block.compact{padding-top:6px;padding-bottom:6px}.chv3-week-block.compact>strong{margin-top:3px;font-size:11.5px}.chv3-week-block.compact>small{display:none}.chv3-week-block.done{opacity:.58}.chv3-week-block.done:after{content:"✓";position:absolute;right:8px;bottom:6px;font-size:12px;font-weight:900}.chv3-week-block.running{box-shadow:0 0 0 2px color-mix(in srgb,var(--bc) 22%,transparent),0 10px 22px rgba(35,43,58,.13)}
.chv3-now{position:absolute;z-index:10;left:0;right:0;height:2px;background:#e5484d;pointer-events:none}.chv3-now:before{content:"";position:absolute;left:-4px;top:-4px;width:9px;height:9px;border-radius:50%;background:#e5484d}.chv3-now span{position:absolute;left:-57px;top:-9px;padding:2px 5px;border-radius:5px;background:#e5484d;color:#fff;font-size:9px}
.chv3-week-selected{padding:18px;background:linear-gradient(145deg,#fff,#f2f6ff)}.chv3-week-selected>span{color:var(--accent);font-size:10px;font-weight:900;letter-spacing:.06em}.chv3-week-selected h3{margin:6px 0 4px;font-size:21px}.chv3-week-selected p{margin:0 0 14px;color:var(--ink-faint);font-size:11.5px}.chv3-week-selected button{width:100%}
.chv3-week-goals{display:flex;flex-direction:column}.chv3-week-goals button{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;min-height:56px;padding:8px 2px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.chv3-week-goals button:hover{background:var(--bg-soft);border-radius:8px}.chv3-week-goals button>span{display:flex;align-items:center;justify-content:center;height:24px;border-radius:999px;background:var(--gs);color:var(--gc);font-size:9.5px;font-weight:850}.chv3-week-goals button>div{display:flex;flex-direction:column;min-width:0}.chv3-week-goals b{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv3-week-goals button>div>i{display:block;height:5px;margin-top:6px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}.chv3-week-goals button>div>i em{display:block;height:100%;border-radius:99px}.chv3-week-goals button>strong{font-size:10.5px;color:var(--ink-faint)}
.chv3-balance{display:flex;flex-direction:column;gap:10px}.chv3-balance>div{display:grid;grid-template-columns:55px 1fr 58px;align-items:center;gap:8px}.chv3-balance span{font-size:11px;font-weight:750}.chv3-balance>div>i{display:block;height:7px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}.chv3-balance>div>i em{display:block;height:100%;border-radius:99px}.chv3-balance strong{font-size:10px;color:var(--ink-faint);text-align:right}

.calendar-hub-v3 .ch-goal-tools{margin-bottom:14px}.calendar-hub-v3 .ch-goal-tools button{height:36px;padding:0 14px;font-size:12.5px}.calendar-hub-v3 .ch-goal-tools select{height:38px;font-size:13px}
.calendar-hub-v3 .ch-goals-layout{grid-template-columns:minmax(0,1fr) 360px;gap:18px}.calendar-hub-v3 .ch-goal-row{grid-template-columns:82px minmax(220px,1fr) minmax(180px,250px) 58px 100px 20px;min-height:86px;padding:13px 17px;gap:14px}.calendar-hub-v3 .ch-subject{height:30px;font-size:11px}.calendar-hub-v3 .ch-goal-name b{font-size:14px}.calendar-hub-v3 .ch-goal-name small{margin-top:5px;font-size:11.5px}.calendar-hub-v3 .ch-row-progress i{height:7px}.calendar-hub-v3 .ch-row-progress small{font-size:10.5px}.calendar-hub-v3 .ch-goal-row>strong{font-size:14px}.calendar-hub-v3 .ch-status{font-size:11px}.calendar-hub-v3 .ch-goal-hero{padding:20px}.calendar-hub-v3 .ch-goal-hero h2{font-size:22px}.calendar-hub-v3 .ch-goal-hero p{font-size:12px}.calendar-hub-v3 .ch-detail-number strong{font-size:29px}.calendar-hub-v3 .ch-goal-detail .ch-side-card{padding:18px}.calendar-hub-v3 .ch-linked button{min-height:50px}.calendar-hub-v3 .ch-linked b{font-size:12px}.calendar-hub-v3 .ch-linked small{font-size:10px}.calendar-hub-v3 .ch-goal-note{padding:17px}.calendar-hub-v3 .ch-goal-note b{font-size:13px}.calendar-hub-v3 .ch-goal-note p{font-size:11.5px;line-height:1.6}

.side-logo{min-height:76px;padding:0 16px;gap:11px}
.side-logo-mark.ames-brand-mark{width:36px;height:36px;border-radius:12px;background:linear-gradient(145deg,#2f86ff 0%,#1767ee 58%,#5556d9 100%);color:#fff;box-shadow:0 8px 18px rgba(32,105,238,.25),inset 0 1px 0 rgba(255,255,255,.24);display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.side-logo-mark.ames-brand-mark svg{width:25px;height:25px;overflow:visible}
.side-logo-mark.ames-brand-mark .ames-a{fill:none;stroke:#fff;stroke-width:2.15;stroke-linecap:round;stroke-linejoin:round}
.side-logo-mark.ames-brand-mark .ames-check{fill:none;stroke:#bde6ff;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.side-logo-txt.ames-wordmark{display:flex;flex-direction:column;align-items:flex-start;line-height:1}
.side-logo-txt.ames-wordmark b{font-size:15.5px;font-weight:920;letter-spacing:.14em;color:#101828}
.side-logo-txt.ames-wordmark small{margin-top:5px;color:#2b71eb;font-size:7.5px;font-weight:900;letter-spacing:.18em}
.sidebar-collapsed .side-logo-txt.ames-wordmark{display:none}

@media(max-width:1380px){
  .chv3-focus-items{grid-template-columns:repeat(2,minmax(0,1fr))}.chv3-focus-strip{grid-template-columns:auto minmax(0,1fr)}.chv3-focus-all{grid-column:1/-1;justify-self:end}
  .chv3-month-layout{grid-template-columns:minmax(0,1fr) 300px}.chv3-week-layout{grid-template-columns:minmax(780px,1fr) 300px}
}
@media(max-width:1080px){
  .calendar-hub-v3 .ch-top{grid-template-columns:1fr auto}.calendar-hub-v3 .ch-actions{grid-column:1/-1;justify-content:flex-start}.calendar-hub-v3 .ch-stats{grid-template-columns:repeat(2,1fr)}
  .chv3-month-layout,.chv3-week-layout,.calendar-hub-v3 .ch-goals-layout{grid-template-columns:1fr}.chv3-rail,.chv3-week-rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.chv3-date-hero,.chv3-week-selected{grid-column:1/-1}
}
@media(max-width:760px){
  .calendar-hub-v3 .ch-top{display:flex;flex-direction:column;align-items:stretch}.calendar-hub-v3 .ch-tabs{width:100%}.calendar-hub-v3 .ch-tabs button{flex:1;min-width:0}.calendar-hub-v3 .ch-actions{display:grid;grid-template-columns:auto 1fr auto}.calendar-hub-v3 .ch-month-nav strong{min-width:0}.calendar-hub-v3 .ch-stats{display:flex;overflow-x:auto}.calendar-hub-v3 .ch-stat{min-width:180px}
  .chv3-focus-strip{display:flex;flex-direction:column;align-items:stretch}.chv3-focus-heading{min-width:0}.chv3-focus-items{display:flex;overflow-x:auto}.chv3-focus-item{min-width:220px}.chv3-focus-all{align-self:flex-end}
  .chv3-calendar,.chv3-week{overflow-x:auto}.chv3-weekdays,.chv3-month-week,.chv3-legend{min-width:820px}.chv3-week-head,.chv3-all-day{min-width:880px}.chv3-month-layout{display:block}.chv3-rail,.chv3-week-rail{display:flex;margin-top:14px}.chv3-day{min-height:168px}.chv3-month-week{min-height:168px}
  .calendar-hub-v3 .ch-goals-main{overflow-x:auto}.calendar-hub-v3 .ch-goal-list{min-width:780px}
}
@media(max-width:480px){
  .calendar-hub-v3 .ch-title h1{font-size:21px}.calendar-hub-v3 .ch-title p{font-size:11.5px}.calendar-hub-v3 .ch-actions{grid-template-columns:1fr 1fr}.calendar-hub-v3 .ch-month-nav{grid-column:1/-1;grid-row:1}.calendar-hub-v3 .ch-ghost,.calendar-hub-v3 .ch-primary{width:100%}
}

/* ============ CALENDAR MONTH V4: DEADLINE-FIRST ============ */
.main-content.wide:has(.calendar-hub-v3){max-width:1580px}

.chv4-focus{margin-bottom:18px;padding:17px 18px 18px;border:1px solid color-mix(in srgb,var(--accent) 16%,var(--line));border-radius:18px;background:linear-gradient(120deg,#fbfdff 0%,#f4f8ff 62%,#faf7ff 100%);box-shadow:0 8px 26px rgba(35,43,58,.05)}
.chv4-focus-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:14px}
.chv4-focus-head>div>span{display:block;margin-bottom:4px;color:var(--accent);font-size:9.5px;font-weight:900;letter-spacing:.14em}
.chv4-focus-head h2{margin:0;font-size:18px;letter-spacing:-.035em;color:var(--ink)}
.chv4-focus-head p{margin:5px 0 0;color:var(--ink-faint);font-size:11.5px}
.chv4-focus-head>button{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--accent);font:800 12px var(--font);cursor:pointer;white-space:nowrap}
.chv4-focus-head>button .ic{width:14px;height:14px}
.chv4-focus-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.chv4-focus-card{position:relative;min-width:0;height:82px;border:1px solid color-mix(in srgb,var(--gc) 17%,var(--line));border-radius:13px;background:linear-gradient(145deg,#fff 20%,var(--gs));overflow:hidden;transition:border-color .15s,box-shadow .15s,transform .15s}
.chv4-focus-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--gc) 35%,var(--line));box-shadow:0 8px 18px color-mix(in srgb,var(--gc) 11%,transparent)}
.chv4-focus-card.active{border-color:color-mix(in srgb,var(--gc) 55%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--gc) 13%,transparent),0 8px 18px color-mix(in srgb,var(--gc) 12%,transparent)}
.chv4-focus-main{position:absolute;inset:0;width:100%;padding:11px 38px 13px 12px;border:0;background:transparent;font-family:var(--font);text-align:left;cursor:pointer}
.chv4-focus-subject{position:absolute;left:12px;top:11px;display:inline-flex;align-items:center;height:21px;padding:0 7px;border-radius:999px;background:color-mix(in srgb,var(--gc) 10%,#fff);color:var(--gc);font-size:9px;font-weight:900}
.chv4-focus-main>div{position:absolute;left:12px;right:70px;top:38px;display:flex;flex-direction:column;min-width:0}
.chv4-focus-main>div b{color:var(--ink);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chv4-focus-main>div small{margin-top:3px;color:var(--ink-faint);font-size:9px;white-space:nowrap}
.chv4-focus-main>strong{position:absolute;right:36px;top:13px;color:var(--gc);font-size:10px;font-weight:900}
.chv4-focus-main>i{position:absolute;left:12px;right:44px;bottom:8px;height:5px;border-radius:99px;background:rgba(255,255,255,.82);overflow:hidden}
.chv4-focus-main>i em{display:block;height:100%;border-radius:99px;background:var(--gc)}
.chv4-focus-pct{position:absolute;right:10px;bottom:6px;color:var(--gc);font-size:9.5px;font-weight:900}
.chv4-focus-detail{position:absolute;right:7px;top:7px;width:27px;height:27px;padding:0;border:0;border-radius:8px;background:rgba(255,255,255,.68);color:var(--gc);cursor:pointer;display:flex;align-items:center;justify-content:center}
.chv4-focus-detail:hover{background:#fff;box-shadow:0 3px 9px rgba(35,43,58,.08)}
.chv4-focus-detail .ic{width:13px;height:13px}
.chv4-focus-active{position:absolute;left:12px;top:12px;transform:translateY(-30px);pointer-events:none}
.chv4-focus-card.active:after{content:"기간 표시 중";position:absolute;left:75px;top:13px;color:var(--gc);font-size:8.5px;font-weight:900;letter-spacing:.02em}
.chv4-focus-more{min-height:82px;border:1px dashed var(--line-strong);border-radius:13px;background:rgba(255,255,255,.68);color:var(--ink-soft);font:750 11px var(--font);cursor:pointer}
.chv4-focus-more:hover{border-color:var(--accent);color:var(--accent);background:#fff}
.chv4-focus-more span{font-size:10px;color:var(--accent)}
.chv4-focus-empty{grid-column:1/-1;display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:74px;padding:12px 14px;border:1px dashed var(--line-strong);border-radius:13px;background:rgba(255,255,255,.72);font-family:var(--font);text-align:left;cursor:pointer}
.chv4-focus-empty>span{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent)}
.chv4-focus-empty>span .ic{width:18px;height:18px}.chv4-focus-empty>div{display:flex;flex-direction:column}.chv4-focus-empty b{font-size:13px}.chv4-focus-empty small{margin-top:4px;color:var(--ink-faint);font-size:11px}.chv4-focus-empty em{color:var(--accent);font-size:11px;font-weight:850;font-style:normal}

.chv4-month-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start}
.chv4-calendar,.chv4-rail-panel{border:1px solid var(--line);border-radius:18px;background:var(--bg-card);box-shadow:0 8px 28px rgba(35,43,58,.055)}
.chv4-calendar{overflow:hidden}
.chv4-weekdays{display:grid;grid-template-columns:repeat(7,1fr);height:46px;align-items:center;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fcfdff,#f7f9fc)}
.chv4-weekdays span{text-align:center;color:var(--ink-soft);font-size:12px;font-weight:850}.chv4-weekdays .sat{color:var(--cal-sat)}.chv4-weekdays .sun{color:var(--cal-sun)}
.chv4-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.chv4-day{position:relative;min-height:137px;padding:44px 10px 38px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;color:var(--ink);font-family:var(--font);text-align:left;cursor:pointer;overflow:hidden;transition:background .14s,box-shadow .14s,filter .14s}
.chv4-day:nth-child(7n){border-right:0}.chv4-day:nth-last-child(-n+7){border-bottom:0}
.chv4-day:hover{z-index:3;background:#f9fbff;box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.18)}
.chv4-day.muted{background:#fafbfd;color:var(--ink-faint)}
.chv4-day.selected{z-index:4;background:linear-gradient(145deg,#f8fbff,#eef4ff);box-shadow:inset 0 0 0 2px var(--accent)}
.chv4-day.focus-range:not(.selected){background:linear-gradient(180deg,color-mix(in srgb,var(--focus) 5%,#fff),#fff 58%);box-shadow:inset 0 2px 0 color-mix(in srgb,var(--focus) 28%,transparent),inset 0 -2px 0 color-mix(in srgb,var(--focus) 16%,transparent)}
.chv4-day.focus-range.muted{background:linear-gradient(180deg,color-mix(in srgb,var(--focus) 4%,#fafbfd),#fafbfd 58%)}
.chv4-day.focus-start{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--focus) 48%,transparent),inset 0 2px 0 color-mix(in srgb,var(--focus) 28%,transparent),inset 0 -2px 0 color-mix(in srgb,var(--focus) 16%,transparent)}
.chv4-day.focus-end{box-shadow:inset -3px 0 0 color-mix(in srgb,var(--focus) 48%,transparent),inset 0 2px 0 color-mix(in srgb,var(--focus) 28%,transparent),inset 0 -2px 0 color-mix(in srgb,var(--focus) 16%,transparent)}
.chv4-day-head{position:absolute;left:10px;right:10px;top:8px;display:flex;align-items:center;justify-content:space-between;gap:7px}
.chv4-day-head>strong{display:flex;align-items:center;justify-content:center;width:29px;height:29px;border-radius:9px;color:var(--ink);font-size:14px;font-weight:900}
.chv4-day.today .chv4-day-head>strong{background:var(--accent);color:#fff;box-shadow:0 5px 12px rgba(var(--accent-rgb),.22)}
.chv4-day.sun .chv4-day-head>strong{color:var(--cal-sun)}.chv4-day.sat .chv4-day-head>strong{color:var(--cal-sat)}.chv4-day.today.sun .chv4-day-head>strong,.chv4-day.today.sat .chv4-day-head>strong{color:#fff}
.chv4-day-head span{display:flex;justify-content:flex-end;min-width:0}.chv4-day-head b{max-width:84px;padding:4px 6px;border-radius:6px;font-size:9px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv4-day-head b.today{background:var(--accent-soft);color:var(--accent)}.chv4-day-head b.holiday{background:var(--bad-soft);color:var(--bad)}.chv4-day-head b.duty{background:color-mix(in srgb,var(--duty) 10%,#fff);color:var(--duty)}
.chv4-range-label{position:absolute;right:9px;top:36px;color:var(--focus);font-size:8.5px;font-weight:900}
.chv4-range-label:before{content:"";display:inline-block;width:5px;height:5px;margin-right:4px;border-radius:50%;background:var(--focus)}
.chv4-day-items{display:flex;flex-direction:column;gap:5px;min-height:54px}
.chv4-day-items em{display:flex;align-items:center;gap:6px;min-width:0;padding:5px 7px;border-radius:7px;font-size:10.5px;font-weight:760;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chv4-day-items em>i{width:6px;height:6px;border-radius:50%;flex:0 0 auto}
.chv4-day-items .deadline{position:relative;padding-right:38px;border:1px solid color-mix(in srgb,var(--item) 16%,transparent);background:linear-gradient(90deg,var(--soft),#fff);color:var(--item)}
.chv4-day-items .deadline>span{display:flex;flex:0 0 auto}.chv4-day-items .deadline .ic{width:11px;height:11px}.chv4-day-items .deadline>b{position:absolute;right:6px;padding:2px 4px;border-radius:4px;background:color-mix(in srgb,var(--item) 11%,#fff);font-size:8px}
.chv4-day-items .exam{background:var(--math-soft);color:var(--math)}.chv4-day-items .exam i{background:var(--math)}
.chv4-day-items .event{background:#fff0f5;color:#b93d73}.chv4-day-items .event i{background:#d44f83}
.chv4-day-items .more{align-self:flex-start;padding:3px 6px;background:var(--bg-soft);color:var(--ink-faint);font-size:9px}
.chv4-day-foot{position:absolute;left:10px;right:10px;bottom:9px}.chv4-day-foot>div{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:6px}.chv4-day-foot span{color:var(--ink-faint);font-size:10px;white-space:nowrap}.chv4-day-foot strong{color:var(--ink-soft);font-size:9.5px;white-space:nowrap}.chv4-day-foot>i{display:block;height:5px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}.chv4-day-foot>i b{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),#63a7ff)}
.chv4-legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;min-height:45px;padding:11px 14px;border-top:1px solid var(--line);background:#fafbfd;color:var(--ink-faint);font-size:10.5px}.chv4-legend span{display:flex;align-items:center;gap:6px}.chv4-legend span>i{width:8px;height:8px;border-radius:50%}.chv4-legend .deadline{background:#6d52c8}.chv4-legend .exam{background:var(--math)}.chv4-legend .event{background:#d44f83}.chv4-legend .study{background:var(--accent)}.chv4-legend button{margin-left:auto;border:0;background:transparent;color:var(--accent);font:800 10.5px var(--font);cursor:pointer}

.chv4-rail{min-width:0}.chv4-rail-panel{position:sticky;top:16px;overflow:hidden}
.chv4-rail-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:19px 19px 17px;background:linear-gradient(145deg,#fff 0%,#f1f6ff 100%)}
.chv4-rail-panel>header>div>span{display:block;color:var(--accent);font-size:10.5px;font-weight:900;letter-spacing:.04em}.chv4-rail-panel>header h2{margin:7px 0 5px;color:var(--ink);font-size:23px;letter-spacing:-.045em}.chv4-rail-panel>header h2 em{color:var(--ink-soft);font-size:13px;font-style:normal}.chv4-rail-panel>header p{margin:0;color:var(--ink-faint);font-size:11.5px}.chv4-rail-panel>header>b{padding:4px 7px;border-radius:6px;background:var(--accent);color:#fff;font-size:8px;letter-spacing:.08em}
.chv4-rail-actions{display:grid;grid-template-columns:1fr auto;gap:8px;padding:0 19px 17px;background:linear-gradient(145deg,#fff 0%,#f1f6ff 100%)}
.chv4-rail-actions button{height:40px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink-soft);font:800 12px var(--font);cursor:pointer}.chv4-rail-actions button:first-child{border-color:var(--accent);background:var(--accent);color:#fff}
.chv4-rail-section{padding:16px 19px;border-top:1px solid var(--line)}
.chv4-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px}.chv4-section-head h3{margin:0;color:var(--ink);font-size:13.5px}.chv4-section-head>span,.chv4-section-head>strong{color:var(--ink-faint);font-size:10.5px}.chv4-section-head>button{border:0;background:transparent;color:var(--accent);font:800 10.5px var(--font);cursor:pointer}
.chv4-selected-goal{background:linear-gradient(145deg,#fff,var(--gs))}.chv4-selected-goal-main{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;padding:0;border:0;background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.chv4-selected-goal-main>span{display:flex;align-items:center;height:24px;padding:0 7px;border-radius:999px;background:color-mix(in srgb,var(--gc) 10%,#fff);color:var(--gc);font-size:9px;font-weight:900}.chv4-selected-goal-main>div{display:flex;min-width:0;flex-direction:column}.chv4-selected-goal-main b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv4-selected-goal-main small{margin-top:3px;color:var(--ink-faint);font-size:9px}.chv4-selected-goal-main>strong{color:var(--gc);font-size:12px}.chv4-selected-goal>i{display:block;height:6px;margin-top:10px;border-radius:99px;background:rgba(255,255,255,.82);overflow:hidden}.chv4-selected-goal>i em{display:block;height:100%;border-radius:99px;background:var(--gc)}
.chv4-agenda{display:flex;flex-direction:column;gap:7px}.chv4-agenda>div{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:8px;padding:9px 10px;border-radius:9px;background:var(--bg-soft)}.chv4-agenda small{font-size:9.5px;color:var(--ink-faint)}.chv4-agenda b{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv4-agenda .holiday{background:var(--bad-soft)}.chv4-agenda .exam{background:var(--math-soft)}.chv4-agenda .event{background:#fff0f5}
.chv4-empty{margin:7px 0;color:var(--ink-faint);font-size:11.5px;line-height:1.55}
.chv4-study>div{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}.chv4-study>div b{font-size:23px}.chv4-study>div span{color:var(--ink-faint);font-size:10.5px}.chv4-study>i{display:block;height:7px;margin-top:9px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}.chv4-study>i em{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--good))}
.chv4-sessions,.chv4-goals{display:flex;flex-direction:column;margin-top:10px}.chv4-sessions button,.chv4-goals button{display:flex;align-items:center;gap:9px;width:100%;min-height:46px;padding:8px 3px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.chv4-sessions button:hover,.chv4-goals button:hover{background:var(--bg-soft);border-radius:8px}.chv4-sessions button>i,.chv4-goals button>i{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.chv4-sessions button>span{display:flex;flex:1;min-width:0;flex-direction:column}.chv4-sessions b{font-size:11.5px}.chv4-sessions small{margin-top:2px;color:var(--ink-faint);font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv4-sessions button>em{color:var(--ink-faint);font-size:9px;font-style:normal}.chv4-goals button>span{flex:1;min-width:0;font-size:11.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv4-goals button>strong{color:var(--ink-faint);font-size:10px}

@media(max-width:1360px){.chv4-focus-list{grid-template-columns:repeat(2,minmax(0,1fr))}.chv4-month-layout{grid-template-columns:minmax(0,1fr) 310px}.chv4-day{min-height:132px}}
@media(max-width:1040px){.chv4-month-layout{grid-template-columns:1fr}.chv4-rail-panel{position:static}.chv4-rail-panel{display:grid;grid-template-columns:1fr 1fr}.chv4-rail-panel>header,.chv4-rail-actions{grid-column:1/-1}.chv4-rail-section{border-top:1px solid var(--line);border-right:1px solid var(--line)}.chv4-rail-section:nth-child(even){border-right:0}}
@media(max-width:760px){.chv4-focus-list{display:flex;overflow-x:auto}.chv4-focus-card{min-width:240px}.chv4-focus-more{min-width:120px}.chv4-calendar{overflow-x:auto}.chv4-weekdays,.chv4-grid,.chv4-legend{min-width:820px}.chv4-rail-panel{display:block;margin-top:14px}.chv4-rail-section{border-right:0}.chv4-day{min-height:132px}.chv4-focus-head p{display:none}}
@media(max-width:480px){.chv4-focus{padding:15px}.chv4-focus-head h2{font-size:16px}.chv4-focus-card{min-width:226px}}

/* ============ CALENDAR MONTH V5: CALENDAR-FIRST ============ */
.calendar-hub-v3 .ch-top{margin-bottom:12px}
.chv4-month-layout{grid-template-columns:minmax(0,1fr) 330px;gap:16px}
.chv5-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:54px;padding:0 16px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff,#fbfcfe)}
.chv5-calendar-head>div:first-child{display:flex;align-items:baseline;gap:9px}.chv5-calendar-head>div:first-child span{font-size:9px;font-weight:900;letter-spacing:.14em;color:var(--accent)}.chv5-calendar-head>div:first-child strong{font-size:16px;color:var(--ink)}
.chv5-calendar-meta{display:flex;align-items:center;justify-content:flex-end;gap:11px;color:var(--ink-faint);font-size:10.5px;white-space:nowrap}.chv5-calendar-meta>span b{margin-left:3px;color:var(--ink)}.chv5-calendar-meta>button{display:flex;align-items:center;gap:6px;max-width:240px;height:29px;padding:0 9px;border:1px solid rgba(var(--accent-rgb),.18);border-radius:999px;background:var(--accent-soft);color:var(--accent);font:800 10px var(--font);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chv5-calendar-meta>button i{width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.chv4-rail-panel{top:12px}
.chv5-month-overview{padding:17px 18px 16px;border-bottom:1px solid var(--line);background:linear-gradient(150deg,#f9fbff 0%,#f5f7ff 58%,#fbf9ff 100%)}
.chv5-overview-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}.chv5-overview-head>div>span{display:block;margin-bottom:3px;color:var(--accent);font-size:8.5px;font-weight:900;letter-spacing:.14em}.chv5-overview-head h2{margin:0;font-size:17px}.chv5-overview-head>button{display:flex;align-items:center;gap:4px;border:0;background:transparent;color:var(--accent);font:800 10.5px var(--font);cursor:pointer}.chv5-overview-head>button .ic{width:12px;height:12px}
.chv5-month-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:13px}.chv5-month-stats>div{padding:10px 11px;border:1px solid rgba(125,145,175,.15);border-radius:11px;background:rgba(255,255,255,.82)}.chv5-month-stats span,.chv5-month-stats strong,.chv5-month-stats small{display:block}.chv5-month-stats span{font-size:9px;color:var(--ink-faint)}.chv5-month-stats strong{margin-top:3px;font-size:15px;color:var(--ink)}.chv5-month-stats small{margin-top:2px;font-size:8.5px;color:var(--ink-faint)}.chv5-month-stats .warn strong{color:var(--warn)}
.chv5-focus-head{display:flex;align-items:center;justify-content:space-between;margin-top:15px}.chv5-focus-head h3{margin:0;font-size:12.5px}.chv5-focus-head span{font-size:9px;color:var(--ink-faint)}
.chv5-focus-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}.chv5-focus-row{display:grid;grid-template-columns:minmax(0,1fr) 30px;border:1px solid color-mix(in srgb,var(--gc) 14%,var(--line));border-radius:10px;background:rgba(255,255,255,.86);overflow:hidden}.chv5-focus-row.active{background:linear-gradient(90deg,var(--gs),#fff);box-shadow:inset 3px 0 0 var(--gc)}.chv5-focus-row:hover{border-color:color-mix(in srgb,var(--gc) 30%,var(--line))}
.chv5-focus-main{position:relative;display:grid;grid-template-columns:7px minmax(0,1fr);align-items:center;gap:8px;min-height:48px;padding:8px 10px 12px;border:0;background:transparent;text-align:left;font-family:var(--font);cursor:pointer}.chv5-focus-main>i{width:7px;height:7px;border-radius:50%;background:var(--gc)}.chv5-focus-main>div{display:flex;flex-direction:column;min-width:0}.chv5-focus-main b{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chv5-focus-main small{margin-top:3px;font-size:9px;color:var(--ink-faint)}.chv5-focus-main>span{position:absolute;left:25px;right:10px;bottom:6px;height:4px;border-radius:99px;background:var(--bg-soft2);overflow:hidden}.chv5-focus-main>span em{display:block;height:100%;border-radius:99px;background:var(--gc)}
.chv5-focus-detail{display:flex;align-items:center;justify-content:center;border:0;border-left:1px solid color-mix(in srgb,var(--gc) 12%,var(--line));background:transparent;color:var(--gc);cursor:pointer}.chv5-focus-detail .ic{width:13px;height:13px}
.chv5-focus-empty{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:56px;padding:8px 10px;border:1px dashed var(--line-strong);border-radius:10px;background:rgba(255,255,255,.72);text-align:left;font-family:var(--font);cursor:pointer}.chv5-focus-empty>span{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9px;background:var(--accent-soft);color:var(--accent)}.chv5-focus-empty>span .ic{width:15px;height:15px}.chv5-focus-empty>div{display:flex;flex-direction:column}.chv5-focus-empty b{font-size:10.5px}.chv5-focus-empty small{margin-top:3px;font-size:8.5px;color:var(--ink-faint)}.chv5-focus-empty em{font-size:10px;font-weight:850;font-style:normal;color:var(--accent)}
.chv5-date-header{background:linear-gradient(145deg,#fff 0%,#f4f7ff 100%)!important}.chv4-rail-panel>header.chv5-date-header{padding-top:17px}
.chv4-weekdays{height:42px}.chv4-day{min-height:131px}
@media(max-width:1360px){.chv4-month-layout{grid-template-columns:minmax(0,1fr) 310px}.chv5-calendar-meta>button{max-width:180px}}
@media(max-width:1080px){.chv4-month-layout{grid-template-columns:1fr}.chv4-rail-panel{position:static}.chv5-month-overview{display:grid;grid-template-columns:1fr 1fr;gap:14px}.chv5-overview-head{grid-column:1/-1}.chv5-month-stats{margin-top:0}.chv5-focus-head{margin-top:0}.chv5-focus-list{grid-column:2;grid-row:2 / span 2;margin-top:0}}
@media(max-width:760px){.chv5-calendar-head{min-width:820px}.chv5-month-overview{display:block}.chv5-month-stats{margin-top:13px}.chv5-focus-head{margin-top:15px}.chv5-focus-list{margin-top:8px}.chv5-calendar-meta>button{max-width:170px}}

/* ============ CALENDAR MONTH V6: GENERAL / STUDY ============ */
.cgm-modebar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px;padding:10px 12px 10px 16px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(100deg,#fff 0%,#f8faff 100%);box-shadow:0 5px 18px rgba(35,43,58,.035)}
.cgm-modecopy{display:flex;min-width:220px;flex-direction:column}.cgm-modecopy span{color:var(--accent);font-size:8.5px;font-weight:900;letter-spacing:.14em}.cgm-modecopy b{margin-top:4px;color:var(--ink-soft);font-size:11.5px}
.cgm-modes{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:6px;padding:4px;border-radius:12px;background:var(--bg-soft)}
.cgm-modes>button{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:8px;min-height:47px;padding:6px 11px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--ink-faint);font-family:var(--font);text-align:left;cursor:pointer;transition:.15s ease}
.cgm-modes>button>.ic{width:18px;height:18px;justify-self:center}.cgm-modes>button>span{display:flex;min-width:0;flex-direction:column}.cgm-modes>button b{color:inherit;font-size:11.5px}.cgm-modes>button small{margin-top:2px;color:inherit;font-size:8.5px;white-space:nowrap}
.cgm-modes>button:hover{color:var(--ink);background:rgba(255,255,255,.65)}.cgm-modes>button.active{border-color:rgba(var(--accent-rgb),.18);background:#fff;color:var(--accent);box-shadow:0 3px 10px rgba(45,61,91,.08)}

.cgm-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}
.cgm-calendar,.cgm-panel{border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 8px 28px rgba(35,43,58,.055);overflow:hidden}
.cgm-calendar-head{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:61px;padding:0 17px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff,#fafcff)}
.cgm-calendar-head>div:first-child span{display:block;color:var(--accent);font-size:8.5px;font-weight:900;letter-spacing:.14em}.cgm-calendar-head h2{margin:4px 0 0;color:var(--ink);font-size:17px;letter-spacing:-.025em}
.cgm-calendar-head>div:last-child{display:flex;align-items:center;gap:13px;color:var(--ink-faint);font-size:10.5px}.cgm-calendar-head>div:last-child b{margin-left:3px;color:var(--ink)}
.cgm-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));height:42px;align-items:center;border-bottom:1px solid var(--line);background:#fafbfd}.cgm-weekdays span{text-align:center;color:var(--ink-soft);font-size:11.5px;font-weight:850}.cgm-weekdays .sat{color:var(--cal-sat)}.cgm-weekdays .sun{color:var(--cal-sun)}
.cgm-week{position:relative;height:137px;border-bottom:1px solid var(--line)}.cgm-week:last-of-type{border-bottom:0}.cgm-cells{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));height:100%}
.cgm-day{position:relative;min-width:0;padding:8px 9px;border:0;border-right:1px solid var(--line);background:#fff;color:var(--ink);font-family:var(--font);text-align:left;cursor:pointer;overflow:hidden;transition:background .13s,box-shadow .13s}.cgm-day:last-child{border-right:0}.cgm-day:hover{z-index:2;background:#f7faff;box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.16)}.cgm-day.muted{background:#fafbfd;color:#aab1bc}.cgm-day.selected{background:linear-gradient(145deg,#f8fbff,#f0f5ff);box-shadow:inset 0 0 0 2px rgba(var(--accent-rgb),.66)}
.cgm-date{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;font-size:13px;font-weight:850}.cgm-day.today .cgm-date{background:var(--accent);color:#fff;box-shadow:0 5px 12px rgba(var(--accent-rgb),.22)}.cgm-day.sun:not(.today) .cgm-date{color:var(--cal-sun)}.cgm-day.sat:not(.today) .cgm-date{color:var(--cal-sat)}
.cgm-today,.cgm-holiday{position:absolute;right:8px;top:10px;max-width:76px;padding:3px 6px;border-radius:6px;font-size:8.5px;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cgm-today{background:var(--accent-soft);color:var(--accent)}.cgm-holiday{background:var(--bad-soft);color:var(--bad)}
.cgm-add{position:absolute;right:8px;bottom:7px;display:flex;align-items:center;justify-content:center;width:23px;height:23px;border-radius:7px;background:#fff;color:var(--accent);font-size:17px;font-weight:500;opacity:0;box-shadow:0 3px 10px rgba(38,55,86,.12);transform:translateY(3px);transition:.13s}.cgm-day:hover .cgm-add{opacity:1;transform:none}
.cgm-bars{position:absolute;z-index:4;inset:0;pointer-events:none}.cgm-event-bar{position:absolute;display:flex;align-items:center;height:21px;padding:0 7px;border:1px solid color-mix(in srgb,var(--event-color) 24%,transparent);border-radius:6px;background:color-mix(in srgb,var(--event-color) 13%,#fff);color:color-mix(in srgb,var(--event-color) 82%,#24324a);font:780 9.5px var(--font);text-align:left;cursor:pointer;pointer-events:auto;overflow:hidden;transition:filter .12s,box-shadow .12s}.cgm-event-bar:before{content:"";width:5px;height:5px;margin-right:5px;border-radius:50%;background:var(--event-color);flex:0 0 auto}.cgm-event-bar span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cgm-event-bar time{margin-right:5px;font-size:8.5px;font-weight:900}.cgm-event-bar:hover{filter:saturate(1.12);box-shadow:0 4px 9px color-mix(in srgb,var(--event-color) 17%,transparent)}.cgm-event-bar.exam{background:color-mix(in srgb,#7957c8 12%,#fff);color:#6645b7}.cgm-event-bar.continues-left{border-left:0;border-radius:0 6px 6px 0}.cgm-event-bar.continues-right{border-right:0;border-radius:6px 0 0 6px}.cgm-event-bar.continues-left.continues-right{border-radius:0}
.cgm-overflow{position:absolute;right:7px;bottom:6px;padding:2px 5px;border-radius:5px;background:var(--bg-soft);color:var(--ink-faint);font-size:8.5px;font-weight:800}
.cgm-legend{display:flex;align-items:center;gap:17px;min-height:45px;padding:10px 14px;border-top:1px solid var(--line);background:#fafbfd;color:var(--ink-faint);font-size:10px}.cgm-legend span{display:flex;align-items:center;gap:6px}.cgm-legend i{width:8px;height:8px;border-radius:50%}.cgm-legend .event{background:#4f74d8}.cgm-legend .exam{background:#7957c8}.cgm-legend .holiday{background:var(--bad)}.cgm-legend em{margin-left:auto;font-style:normal}

.cgm-panel{position:sticky;top:12px}.cgm-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:19px;background:linear-gradient(145deg,#fff 0%,#f1f6ff 100%);border-bottom:1px solid var(--line)}.cgm-panel-head span{display:block;color:var(--accent);font-size:9.5px;font-weight:900;letter-spacing:.04em}.cgm-panel-head h2{margin:6px 0 0;font-size:22px;letter-spacing:-.04em}.cgm-panel-head h2 em{color:var(--ink-soft);font-size:12px;font-style:normal}.cgm-panel-head>button{height:34px;padding:0 11px;border:1px solid var(--accent);border-radius:9px;background:var(--accent);color:#fff;font:800 11px var(--font);cursor:pointer}
.cgm-agenda{display:flex;min-height:230px;max-height:610px;padding:13px;flex-direction:column;gap:7px;overflow:auto}.cgm-agenda>button,.cgm-agenda>div:not(.cgm-empty){display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;min-height:54px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-family:var(--font);text-align:left}.cgm-agenda>button{cursor:pointer}.cgm-agenda>button:hover{background:var(--bg-soft)}.cgm-agenda>button>i,.cgm-agenda>div>i{width:7px;height:34px;border-radius:99px;background:var(--event-color,#4f74d8)}.cgm-agenda .exam>i{background:#7957c8}.cgm-agenda .holiday>i{background:var(--bad)}.cgm-agenda span{display:flex;min-width:0;flex-direction:column}.cgm-agenda small{color:var(--ink-faint);font-size:9px}.cgm-agenda b{margin-top:4px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cgm-agenda em{color:var(--accent);font-size:9px;font-weight:800;font-style:normal}
.cgm-empty{display:flex;min-height:220px;align-items:center;justify-content:center;flex-direction:column;color:var(--ink-faint);text-align:center}.cgm-empty>span{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:14px;background:var(--accent-soft);color:var(--accent)}.cgm-empty .ic{width:20px;height:20px}.cgm-empty b{margin-top:12px;color:var(--ink-soft);font-size:12px}.cgm-empty p{margin:5px 0 0;font-size:10px}

.cgm-editor-top{display:flex;align-items:center;justify-content:space-between;padding:17px 18px;border-bottom:1px solid var(--line);background:linear-gradient(145deg,#fff,#f4f7ff)}.cgm-editor-top span{display:block;color:var(--accent);font-size:8.5px;font-weight:900;letter-spacing:.14em}.cgm-editor-top h2{margin:4px 0 0;font-size:18px}.cgm-editor-top>button{display:flex;align-items:center;justify-content:center;width:31px;height:31px;border:0;border-radius:9px;background:rgba(255,255,255,.78);color:var(--ink-soft);font-size:21px;cursor:pointer}
.cgm-form{display:flex;padding:16px 17px 18px;flex-direction:column;gap:14px}.cgm-form label,.cgm-field{margin:0}.cgm-form label>span,.cgm-field>span{display:block;margin-bottom:6px;color:var(--ink-soft);font-size:10px;font-weight:800}.cgm-form input,.cgm-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font:inherit;font-size:11.5px;outline:none}.cgm-form input{height:39px;padding:0 10px}.cgm-form textarea{padding:10px;line-height:1.5;resize:vertical}.cgm-form input:focus,.cgm-form textarea:focus{border-color:rgba(var(--accent-rgb),.6);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.09)}
.cgm-title-field input{height:46px;border-width:0 0 2px;border-radius:0;padding:0 2px;font-size:16px;font-weight:720}.cgm-title-field input:focus{box-shadow:none}
.cgm-date-range,.cgm-time-row>div{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);align-items:center;gap:4px}.cgm-date-range>i,.cgm-time-row>div>i{color:var(--ink-faint);font-size:12px;font-style:normal;text-align:center}
.cgm-all-day{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:var(--bg-soft);cursor:pointer}.cgm-all-day>span{display:flex!important;margin:0!important;flex-direction:column}.cgm-all-day b{font-size:11px}.cgm-all-day small{margin-top:3px;color:var(--ink-faint);font-size:8.5px;font-weight:600}.cgm-all-day>input{position:absolute;opacity:0;pointer-events:none}.cgm-all-day>i{position:relative;width:38px;height:22px;border-radius:99px;background:#cbd2dc;transition:.15s;flex:0 0 auto}.cgm-all-day>i:after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.16);transition:.15s}.cgm-all-day>input:checked+i{background:var(--accent)}.cgm-all-day>input:checked+i:after{transform:translateX(16px)}
.cgm-time-row.hidden{display:none}.cgm-colors{display:flex;gap:9px}.cgm-colors label{cursor:pointer}.cgm-colors input{position:absolute;width:1px;height:1px;opacity:0}.cgm-colors i{display:block;width:23px;height:23px;border:3px solid #fff;border-radius:50%;background:var(--pick);box-shadow:0 0 0 1px var(--line)}.cgm-colors input:checked+i{box-shadow:0 0 0 2px var(--pick)}
.cgm-memo span small{margin-left:3px;color:var(--ink-faint);font-size:8px}
.cgm-editor-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 17px;border-top:1px solid var(--line);background:#fafbfd}.cgm-editor-actions>div{display:flex;gap:7px}.cgm-editor-actions button{height:36px;padding:0 13px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink-soft);font:800 10.5px var(--font);cursor:pointer}.cgm-editor-actions .save{border-color:var(--accent);background:var(--accent);color:#fff}.cgm-editor-actions .delete{border-color:transparent;background:var(--bad-soft);color:var(--bad)}
.chv4-day-items .event small{flex:0 0 auto;color:#9a3966;font-size:8px;font-weight:900}

@media(max-width:1080px){.cgm-layout{grid-template-columns:1fr}.cgm-panel{position:static}.cgm-agenda{min-height:130px}.cgm-form{display:grid;grid-template-columns:1fr 1fr}.cgm-title-field,.cgm-all-day,.cgm-memo{grid-column:1/-1}.cgm-editor-actions{grid-column:1/-1}}
@media(max-width:760px){.cgm-modebar{align-items:stretch;flex-direction:column}.cgm-modecopy{min-width:0}.cgm-modes{grid-template-columns:1fr 1fr}.cgm-modes>button{grid-template-columns:24px minmax(0,1fr);padding:6px 8px}.cgm-calendar{overflow-x:auto}.cgm-calendar-head,.cgm-weekdays,.cgm-week,.cgm-legend{min-width:820px}.cgm-form{display:flex}.cgm-panel{margin-top:14px}}
@media(max-width:480px){.cgm-modecopy{display:none}.cgm-modebar{padding:6px}.cgm-modes{width:100%;box-sizing:border-box}.cgm-modes>button small{display:none}.cgm-modes>button{min-height:42px}.cgm-calendar-head>div:last-child{display:none}}

/* ============ CALENDAR MONTH V7: FULL-VIEW TOOLBAR ============ */
.cgm-month-shell{--cgm-toolbar-h:54px}
.cgm-toolbar{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:12px;min-height:var(--cgm-toolbar-h);margin-bottom:10px;padding:6px 7px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.96);box-shadow:0 5px 18px rgba(35,43,58,.04)}
.cgm-view-tabs,.cgm-toolbar-modes{display:flex;align-items:center;padding:3px;border-radius:10px;background:var(--bg-soft)}
.cgm-view-tabs button,.cgm-toolbar-modes button{height:34px;padding:0 14px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ink-faint);font:800 11.5px var(--font);cursor:pointer}
.cgm-view-tabs button:hover,.cgm-toolbar-modes button:hover{color:var(--ink);background:rgba(255,255,255,.65)}
.cgm-view-tabs button.active,.cgm-toolbar-modes button.active{border-color:rgba(var(--accent-rgb),.17);background:#fff;color:var(--accent);box-shadow:0 2px 8px rgba(38,55,86,.07)}
.cgm-toolbar-modes button{display:flex;align-items:center;gap:6px;padding:0 11px}.cgm-toolbar-modes .ic{width:14px;height:14px}
.cgm-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
.cgm-toolbar-actions>button,.cgm-toolbar-month{height:38px;border:1px solid var(--line);border-radius:10px;background:#fff}
.cgm-toolbar-actions>button{padding:0 13px;color:var(--ink-soft);font:800 11.5px var(--font);cursor:pointer}.cgm-toolbar-actions>button:hover{border-color:var(--line-strong);background:var(--bg-soft)}
.cgm-toolbar-actions>button.add{border-color:var(--accent);background:var(--accent);color:#fff;box-shadow:0 5px 12px rgba(var(--accent-rgb),.18)}
.cgm-toolbar-month{display:grid;grid-template-columns:36px minmax(108px,auto) 36px;align-items:center;overflow:hidden}.cgm-toolbar-month button{height:36px;border:0;background:transparent;color:var(--ink-soft);font:700 20px var(--font);cursor:pointer}.cgm-toolbar-month button:hover{background:var(--bg-soft)}.cgm-toolbar-month strong{padding:0 8px;text-align:center;color:var(--ink);font-size:12.5px;white-space:nowrap}

.cgm-month-shell.general .cgm-layout{grid-template-columns:minmax(0,1fr)}
.cgm-month-shell.general .cgm-layout.with-panel{grid-template-columns:minmax(0,1fr) 330px}
.cgm-month-shell.general .cgm-calendar{display:grid;grid-template-rows:38px repeat(6,minmax(0,1fr));height:calc(100dvh - 158px);min-height:600px;max-height:900px}
.cgm-month-shell.general .cgm-weekdays{height:auto}
.cgm-month-shell.general .cgm-week{height:auto;min-height:0;overflow:hidden}
.cgm-month-shell.general .cgm-day{padding:0}
.cgm-month-shell.general .cgm-date{position:absolute;z-index:6;left:8px;top:6px;width:26px;height:26px}
.cgm-month-shell.general .cgm-today,.cgm-month-shell.general .cgm-holiday{z-index:6;top:8px}
.cgm-month-shell.general .cgm-event-bar{height:18px;padding:0 6px;font-size:9px}
.cgm-month-shell.general .cgm-event-bar:before{width:4px;height:4px;margin-right:4px}
.cgm-month-shell.general .cgm-event-bar time{font-size:8px}
.cgm-month-shell.general .cgm-overflow{z-index:5}

@media(max-width:1200px){
  .cgm-toolbar{grid-template-columns:auto 1fr}.cgm-toolbar-actions{grid-column:1/-1;justify-content:space-between}.cgm-toolbar-month{flex:1;max-width:270px}
  .cgm-month-shell.general .cgm-calendar{height:auto;min-height:760px}
}
@media(max-width:1080px){
  .cgm-month-shell.general .cgm-layout.with-panel{grid-template-columns:1fr}.cgm-month-shell.general .cgm-panel{position:static}
}
@media(max-width:760px){
  .cgm-toolbar{display:flex;align-items:stretch;flex-direction:column;padding:7px}.cgm-view-tabs,.cgm-toolbar-modes{display:grid;grid-template-columns:repeat(3,1fr)}.cgm-toolbar-modes{grid-template-columns:repeat(2,1fr)}.cgm-toolbar-actions{display:grid;grid-template-columns:auto minmax(0,1fr) auto}.cgm-toolbar-month{width:auto;max-width:none}
  .cgm-month-shell.general .cgm-calendar{height:auto;min-height:820px}.cgm-month-shell.general .cgm-weekdays,.cgm-month-shell.general .cgm-week{min-width:820px}
}
@media(max-width:480px){
  .cgm-toolbar-actions{grid-template-columns:1fr 1fr}.cgm-toolbar-month{grid-column:1/-1;grid-row:1}.cgm-toolbar-actions>button{width:100%}
}

/* ============ SHELL V8: SIDEBAR CONTROLS + FLOATING CHAT ============ */
.main{min-height:100vh}
.side-logo{position:relative;padding-right:8px}
.side-collapse-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;margin-left:auto;padding:0;border:0;border-radius:8px;background:transparent;color:var(--ink-faint);cursor:pointer;transition:background .14s,color .14s}
.side-collapse-btn:hover{background:var(--bg-soft);color:var(--ink)}.side-collapse-btn .ic{width:16px;height:16px}
.side-reopen-btn{position:fixed;z-index:62;left:14px;top:14px;display:flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.96);color:var(--ink-soft);box-shadow:0 7px 22px rgba(35,43,58,.12);cursor:pointer}.side-reopen-btn:hover{color:var(--accent);border-color:rgba(var(--accent-rgb),.28)}.side-reopen-btn .ic{width:19px;height:19px}
.side-date-status{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 11px;border:1px solid var(--line);border-radius:11px;background:var(--bg-soft);color:var(--ink-faint)}.side-date-status span{font-size:10.5px;white-space:nowrap}.side-date-status strong{color:var(--accent);font-size:11.5px;white-space:nowrap}
.side-mode-toggle{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:8px;width:100%;min-height:48px;padding:7px 9px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink-soft);font-family:var(--font);text-align:left;cursor:pointer;transition:background .14s,border-color .14s,color .14s}.side-mode-toggle:hover{border-color:var(--line-strong);background:var(--bg-soft)}.side-mode-toggle.active{border-color:rgba(var(--ames-rgb),.3);background:rgba(var(--ames-rgb),.07);color:var(--ames)}.side-mode-toggle>svg{width:18px;height:18px;justify-self:center}.side-mode-toggle>span{display:flex;min-width:0;flex-direction:column}.side-mode-toggle b{font-size:12px}.side-mode-toggle small{margin-top:2px;color:var(--ink-faint);font-size:9px;white-space:nowrap}
.ames-chat-fab{position:fixed;z-index:68;right:22px;bottom:22px;display:flex;align-items:center;justify-content:center;width:54px;height:54px;padding:0;border:1px solid rgba(var(--ames-rgb),.28);border-radius:18px;background:#fff;color:var(--ames);box-shadow:0 12px 30px rgba(35,43,58,.18),0 3px 10px rgba(var(--ames-rgb),.1);cursor:pointer;transition:transform .16s,box-shadow .16s,background .16s}.ames-chat-fab:hover{transform:translateY(-2px);background:rgba(var(--ames-rgb),.05);box-shadow:0 16px 34px rgba(35,43,58,.21),0 4px 12px rgba(var(--ames-rgb),.14)}.ames-chat-fab>svg{width:22px;height:22px}.ames-chat-fab.character{overflow:hidden;border-radius:50%;border-color:rgba(var(--ames-rgb),.4)}.ames-chat-fab.character>img{width:100%;height:100%;object-fit:cover}.ames-chat-fab .ames-proactive-dot{right:2px!important;top:2px!important;width:10px!important;height:10px!important}
.main-content.calendar-page{max-width:none;padding:12px 18px 28px}

/* ============ CALENDAR MONTH V8: WIDER + READABLE ============ */
.cgm-toolbar{gap:14px;margin-bottom:8px;min-height:56px;padding:7px 8px}
.cgm-view-tabs button,.cgm-toolbar-modes button{height:37px;font-size:13.5px}
.cgm-toolbar-actions>button{font-size:13.5px}.cgm-toolbar-month strong{font-size:14.5px}
.cgm-month-shell.general .cgm-calendar{height:calc(100dvh - 88px);min-height:620px;max-height:none}
.cgm-weekdays span{font-size:13.5px}
.cgm-month-shell.general .cgm-date{left:10px;top:7px;width:30px;height:30px;font-size:16px}
.cgm-month-shell.general .cgm-today,.cgm-month-shell.general .cgm-holiday{right:9px;top:9px;max-width:96px;font-size:10.5px}
.cgm-month-shell.general .cgm-event-bar{height:24px;padding:0 8px;border-color:color-mix(in srgb,var(--event-color) 38%,transparent);background:color-mix(in srgb,var(--event-color) 24%,#fff);color:color-mix(in srgb,var(--event-color) 88%,#172033);font-size:11.5px;font-weight:820;box-shadow:0 1px 2px color-mix(in srgb,var(--event-color) 10%,transparent)}
.cgm-month-shell.general .cgm-event-bar:before{width:6px;height:6px;margin-right:6px}
.cgm-month-shell.general .cgm-event-bar time{font-size:10px}
.cgm-month-shell.general .cgm-event-bar.exam{border-color:color-mix(in srgb,#7957c8 38%,transparent);background:color-mix(in srgb,#7957c8 23%,#fff);color:#57379f}
.cgm-month-shell.general .cgm-event-bar:hover{filter:saturate(1.18);box-shadow:0 4px 10px color-mix(in srgb,var(--event-color) 20%,transparent)}
.cgm-month-shell.general .cgm-overflow{right:8px;bottom:7px;font-size:10px}

@media(max-width:1200px){
  .cgm-month-shell.general .cgm-calendar{height:auto;min-height:760px}
}
@media(max-width:760px){
  .main-content.calendar-page{padding:8px 10px 86px}
  .side-reopen-btn{display:none}
  .ames-chat-fab{right:14px;bottom:82px;width:50px;height:50px;border-radius:16px}
}

/* ============ PLANNER TIMELINE V7: WEEKLY VISUAL LANGUAGE ============ */
.tl-wrap.tl-modern{overflow:hidden;border:1px solid var(--line);border-radius:17px;background:var(--bg-card);box-shadow:0 8px 26px rgba(35,43,58,.055)}
.tl-modern .tl-head{min-height:64px;padding:12px 15px 12px 18px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff 0%,#f8fafd 100%)}
.tl-modern .tl-title{font-size:15px;font-weight:850;letter-spacing:-.025em;color:var(--ink)}
.tl-modern .tl-title:before{content:"DAY TIMELINE";display:block;margin-bottom:3px;color:var(--accent);font-size:8px;font-weight:900;letter-spacing:.14em}
.tl-modern .tl-head-btns{gap:7px}
.tl-modern .tl-addbtn{height:34px;padding:0 11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink-soft);font-size:11.5px;font-weight:780;box-shadow:0 1px 2px rgba(35,43,58,.035)}
.tl-modern .tl-addbtn:hover{border-color:var(--line-strong);background:var(--bg-soft);color:var(--ink)}
.tl-modern .tl-addbtn:first-child{border-color:rgba(var(--accent-rgb),.26);background:var(--accent-soft);color:var(--accent)}
.tl-modern .tl-addbtn .ic{width:14px;height:14px}
.tl-modern .tl-grid{position:relative;background:linear-gradient(90deg,#fafbfd 0 66px,#fff 66px 100%)}
.tl-modern .tl-gutter{position:absolute;z-index:2;left:0;top:0;bottom:0;width:66px;border-right:1px solid #e5eaf0;background:#fafbfd}
.tl-modern .tl-tick{right:11px;transform:translateY(-50%);color:#8b95a3;font-size:10.5px;font-weight:650;font-variant-numeric:tabular-nums}
.tl-modern .tl-tick:after{content:":00";font-size:9px;font-weight:550;color:#b0b7c1}
.tl-modern .tl-hline{left:66px;right:0;height:1px;background:#e8edf3}
.tl-modern .tl-hline:after{content:"";position:absolute;left:0;right:0;top:38px;border-top:1px dashed rgba(218,224,232,.52)}
.tl-modern .tl-plan{position:absolute;left:66px;right:0;top:0;bottom:0;background:linear-gradient(180deg,rgba(248,250,253,.32),rgba(255,255,255,.08))}
.tl-modern .tl-plan-hint{top:22px;left:18px;padding:8px 11px;border:1px dashed var(--line-strong);border-radius:9px;background:rgba(255,255,255,.82);color:var(--ink-faint);font-size:11px}
.tl-modern .tl-offzone{left:0;right:0;border-top:1px solid rgba(160,168,180,.13);border-bottom:1px solid rgba(160,168,180,.13);background:repeating-linear-gradient(135deg,rgba(148,158,171,.055) 0,rgba(148,158,171,.055) 7px,rgba(255,255,255,.38) 7px,rgba(255,255,255,.38) 14px)}
.tl-modern .tl-offzone span{top:8px;right:10px;padding:3px 7px;border:1px solid rgba(148,158,171,.16);border-radius:999px;background:rgba(255,255,255,.86);color:#8b95a3;font-size:9px;font-weight:750}
.tl-modern .tl-block{--block-color:var(--sc,var(--accent));z-index:5;border:1px solid color-mix(in srgb,var(--block-color) 27%,var(--line));border-left:4px solid var(--block-color);border-radius:12px;background:linear-gradient(145deg,#fff 12%,color-mix(in srgb,var(--block-color) 8%,#fff));color:var(--ink);box-shadow:0 4px 13px rgba(35,43,58,.085);overflow:hidden;transition:transform .14s ease,box-shadow .14s ease,filter .14s ease}
.tl-modern .tl-block:hover{z-index:12;transform:translateY(-2px);box-shadow:0 11px 25px rgba(35,43,58,.16);filter:saturate(1.04)}
.tl-modern .tl-block.running{border-color:color-mix(in srgb,var(--block-color) 48%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--block-color) 17%,transparent),0 10px 24px rgba(35,43,58,.14)}
.tl-modern .tl-block.done{opacity:.63;filter:saturate(.72)}
.tl-modern .tl-block.partial{opacity:.78}
.tl-modern .tl-tint{display:none}
.tl-modern .tl-fill{z-index:0;top:auto!important;bottom:0;height:4px!important;border-radius:0 99px 99px 0;background:var(--block-color);opacity:.72}
.tl-modern .tl-block-in{position:relative;z-index:2;height:100%;padding:9px 11px 8px;overflow:hidden}
.tl-modern .tl-row1{display:flex;align-items:center;justify-content:space-between;gap:9px;min-width:0}
.tl-modern .tl-subj{display:inline-flex;align-items:center;min-width:0;height:24px;padding:0 7px;border-radius:7px;background:color-mix(in srgb,var(--block-color) 10%,#fff);color:var(--block-color);font-size:10.5px;font-weight:900;white-space:nowrap}
.tl-modern .tl-time{margin-left:auto;color:color-mix(in srgb,var(--block-color) 72%,var(--ink-soft));font-size:10.5px;font-weight:760;font-variant-numeric:tabular-nums;white-space:nowrap}
.tl-modern .tl-time-dur{display:none}
.tl-modern .tl-label{margin-top:7px;color:var(--ink);font-size:13px;font-weight:760;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-modern .tl-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:5px;color:var(--ink-faint);font-size:10px;font-weight:630;white-space:nowrap}
.tl-modern .tl-meta span:last-child{color:color-mix(in srgb,var(--block-color) 70%,var(--ink-soft));font-weight:780}
.tl-modern .tl-state-mark{position:absolute;z-index:5;right:8px;top:8px;display:flex;align-items:center;justify-content:center}
.tl-modern .tl-state-mark.done{width:19px;height:19px;border-radius:50%;background:color-mix(in srgb,var(--good) 12%,#fff);color:var(--good)}
.tl-modern .tl-state-mark.done .ic{width:12px;height:12px}
.tl-modern .tl-state-mark.running{width:9px;height:9px;margin:5px;border-radius:50%;background:var(--block-color);box-shadow:0 0 0 4px color-mix(in srgb,var(--block-color) 13%,transparent);animation:tlpulse 1.1s ease-in-out infinite}
.tl-modern .tl-block.compact .tl-block-in{padding-top:6px;padding-bottom:5px}
.tl-modern .tl-block.compact .tl-subj{height:20px;padding:0 6px;font-size:9.5px}
.tl-modern .tl-block.compact .tl-time{font-size:9.5px}
.tl-modern .tl-block.compact .tl-label{margin-top:3px;font-size:11.5px}
.tl-modern .tl-block.compact .tl-meta{display:none}
.tl-modern .tl-rz{z-index:8;opacity:0;transition:opacity .12s}
.tl-modern .tl-block:hover .tl-rz{opacity:1}
.tl-modern .tl-rz-top,.tl-modern .tl-rz-bot{height:7px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--block-color) 27%,transparent),transparent)}
.tl-modern .tl-past{left:66px;background:linear-gradient(180deg,rgba(240,243,247,.38),rgba(240,243,247,.12));pointer-events:none}
.tl-modern .tl-now{z-index:16;left:66px;right:0;height:2px;background:#e5484d;box-shadow:0 1px 4px rgba(229,72,77,.18);pointer-events:none}
.tl-modern .tl-now:before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:#e5484d;box-shadow:0 0 0 4px rgba(229,72,77,.11)}
.tl-modern .tl-now-chip{z-index:17;left:7px;transform:translateY(-50%);padding:3px 6px;border-radius:6px;background:#e5484d;color:#fff;font-size:9px;font-weight:850;box-shadow:0 3px 8px rgba(229,72,77,.2)}
.tl-modern .tl-empty{margin:14px;border:1px dashed var(--line-strong);border-radius:12px;background:linear-gradient(145deg,#fbfcfe,#f5f8fc);color:var(--ink-faint);font-size:12px;line-height:1.7}
.tl-modern .tl-collapsed-hint{margin:12px 14px 14px;padding:15px;border:1px dashed var(--line-strong);border-radius:12px;background:linear-gradient(145deg,#fbfcfe,#f5f8fc);color:var(--ink-soft);font-size:12px;font-weight:650}
@media(max-width:1100px){
  .tl-modern .tl-block-in{padding-left:9px;padding-right:9px}.tl-modern .tl-label{font-size:12px}.tl-modern .tl-time{font-size:9.5px}.tl-modern .tl-meta{font-size:9px}
}
@media(max-width:640px){
  .tl-wrap.tl-modern{border-radius:14px}.tl-modern .tl-head{align-items:flex-start;gap:9px;padding:12px}.tl-modern .tl-head-btns{width:100%;display:grid;grid-template-columns:1fr 1fr}.tl-modern .tl-collapse-btn{grid-column:1/-1}.tl-modern .tl-addbtn{width:100%}.tl-modern .tl-grid{background:linear-gradient(90deg,#fafbfd 0 54px,#fff 54px 100%)}.tl-modern .tl-gutter{width:54px}.tl-modern .tl-hline,.tl-modern .tl-plan,.tl-modern .tl-past,.tl-modern .tl-now{left:54px}.tl-modern .tl-tick{right:7px;font-size:9.5px}.tl-modern .tl-block{border-radius:10px}.tl-modern .tl-block-in{padding-left:8px;padding-right:8px}.tl-modern .tl-subj{font-size:9.5px}.tl-modern .tl-label{font-size:11.5px}
}
/* 다인 캐릭터 대화 — 기존 메신저 흐름 안에서 화자만 또렷하게 구분 */
.amr-group-head-avatars{display:flex;align-items:center;padding-left:7px;margin-right:2px;flex:0 0 auto}
.amr-group-head-avatars img{width:34px;height:34px;object-fit:cover;border-radius:50%;border:2px solid rgba(255,255,255,.88);margin-left:-7px;box-shadow:0 2px 8px rgba(25,38,52,.13)}
.amr-speaker-name{font-size:11px;font-weight:750;line-height:1.25;color:var(--speaker-color,var(--ink-faint));margin:0 0 4px 3px}
.amr-msg-row.group-speaker .amr-bubble{border-left:3px solid var(--speaker-color,var(--ames));padding-left:13px}
.amr-msg-row.group-speaker .amr-stage{border-left-color:var(--speaker-color,var(--ames))}
.amr-recipient-label{font-size:10.5px;font-weight:750;line-height:1.2;color:rgba(255,255,255,.9);text-shadow:0 1px 2px rgba(0,0,0,.32);margin:0 4px 2px}
.amr-input-wrap.has-group-recipient{flex-wrap:wrap;padding-top:8px}
.amr-recipient-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;width:100%;flex:0 0 100%;padding:3px;background:rgba(255,255,255,.28);border:1px solid rgba(255,255,255,.3);border-radius:11px;box-sizing:border-box}
.amr-recipient-option{min-width:0;border:0;border-radius:8px;padding:6px 5px;background:transparent;color:var(--ink-soft);font:700 11.5px/1.2 var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}
.amr-recipient-option:hover{background:rgba(255,255,255,.42)}
.amr-recipient-option.active{background:rgba(255,255,255,.9);color:var(--accent-deep);box-shadow:0 2px 8px rgba(25,38,52,.12)}
