/* 홈 (PC 대시보드 W61 ①) — 시안 /W61/S1.html · s1.py 값 그대로.
   폰 모양(600 미만)은 app.css 의 옛 .greet · .hgrid · .hm-* 그대로 — 여기 규칙은 전부 600 이상에서만. */
@media (min-width:600px) {
  .hp{display:flex;flex-direction:column;height:100%;min-height:700px;letter-spacing:-.2px}
  .hp .num,.hp .kpi .n,.hp .big,.hp .sst b,.hp .fx b,.hp .dday strong,.hp .tm{font-variant-numeric:tabular-nums}

  /* 인사 · 큰 숫자 셋 */
  .hp .greet{display:flex;align-items:flex-end;gap:16px;padding:0;margin-bottom:16px}
  .hp .greet .lines{flex:1;min-width:0}
  .hp .greet p{font-size:13.5px;color:var(--t3);font-weight:500;line-height:1.4;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hp .greet .avatar{display:inline-block;width:auto;height:auto;border-radius:0;box-shadow:none;margin:4px 0 0;max-width:100%}
  .hp .greet h1{font-size:30px;font-weight:700;letter-spacing:-1px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    animation:rise .56s cubic-bezier(.33,1,.68,1) .18s both}
  .hp .greet .avatar:hover h1{color:#000}
  .hp .kpis{margin-left:auto;display:flex;gap:28px;flex:none}
  .hp .kpi{display:flex;flex-direction:column;align-items:flex-end;border-radius:12px}
  .hp .kpi .n{font-size:40px;font-weight:400;letter-spacing:-1.5px;line-height:1}
  .hp .kpi .n i{font-style:normal;font-size:18px;color:var(--t3);margin-left:2px;letter-spacing:-.3px}
  .hp .kpi .n{display:flex;align-items:baseline;height:40px}
  .hp .kpi .n i.none{font-size:18px;color:var(--t4);margin:0;align-self:flex-end;line-height:1.4}
  .hp .kpi.over .n{color:var(--red,#D9534F)}
  .hp .kpi span{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--t3);margin-top:6px;font-weight:500}
  .hp .kpi span em{width:20px;height:20px;border-radius:6px;background:var(--fill);display:flex;align-items:center;justify-content:center}
  .hp .kpi:hover span{color:var(--ink)}

  /* 이번 달 분류별 지출 막대 */
  .hp .bars{display:grid;gap:8px;margin-bottom:16px}
  .hp .bars div{min-width:0}
  .hp .bars div span{display:block;font-size:12.5px;color:var(--t2);margin-bottom:6px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hp .bars i{display:flex;align-items:center;height:36px;border-radius:18px;padding:0 14px;font-style:normal;font-size:12.5px;font-weight:700;white-space:nowrap}
  .hp .bars .b0{background:#22282F;color:#fff}
  .hp .bars .b1{background:#DFEBF9;color:#1A6FD1}
  .hp .bars .b2{background:repeating-linear-gradient(135deg,#F5F7FA 0 6px,#E6EAEF 6px 8px);color:#454E57}
  .hp .bars .br{border:1.5px solid #D5DAE0;color:#454E57}
  .hp .bars.none{display:block}
  .hp .bars.none i{border:1.5px dashed #D5DAE0;color:var(--t3);font-weight:500;justify-content:center}
  .hp .bars:hover .b0{background:#000}

  /* 카드 자리 — 화면 아래 끝까지 */
  .hp .hg{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1.12fr 1fr;grid-template-rows:1fr 1fr;gap:14px;
    grid-template-areas:"wx pl sp" "td pl dd"}
  .hp .hg>div{min-height:0;min-width:0;display:flex}
  .hp .hg>div>*{flex:1;min-width:0}
  .hp .a-wx{grid-area:wx}.hp .a-pl{grid-area:pl}.hp .a-sp{grid-area:sp}.hp .a-td{grid-area:td}.hp .a-dd{grid-area:dd}
  .hp .card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:18px 20px;box-shadow:none;display:flex;flex-direction:column;min-height:0;overflow:hidden}
  .hp .ct{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex:none}
  .hp .ct b{font-size:16px;font-weight:700}
  .hp .ct s{text-decoration:none;font-size:12.5px;color:var(--t3);font-weight:500}
  .hp .arr{margin-left:auto;width:32px;height:32px;border-radius:50%;border:1px solid #E3E7EC;display:flex;align-items:center;justify-content:center;flex:none}
  .hp .arr:hover{background:var(--fill)}
  .hp .fill{flex:1;min-height:0;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start;overflow:hidden}
  .hp .fill>*{width:100%}
  .hp .nil{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:16px 0}
  .hp .nil b{font-size:14px;font-weight:600;color:var(--t2)}
  .hp .nil span{font-size:12px;color:var(--t3);margin-top:5px}
  .hp .hm-plan .nil{flex:none;padding:28px 0 22px}
  .hp .nil.sm{flex:none;align-items:flex-start;padding:0 0 12px 74px}
  .hp .nil.sm span{margin:0}

  /* 날씨 — 지금 영상/그림 · 시간 알약 */
  .hp .hm-wx{border-radius:22px;box-shadow:none;background-color:#20242c}
  .hp .hm-wx .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,20,30,.15),rgba(15,20,30,.55))}
  .hp .hm-wx .in{position:relative;height:100%;padding:18px;display:flex;flex-direction:column;text-shadow:0 1px 8px rgba(6,18,38,.3)}
  .hp .hm-wx .r1{display:flex;align-items:flex-start}
  .hp .hm-wx .place{display:flex;align-items:center;gap:5px;font-size:14px;font-weight:600;color:#fff;border-radius:10px;padding:2px 6px 2px 2px;margin:-2px 0 0 -2px}
  .hp .hm-wx .place:hover{background:rgba(255,255,255,.14)}
  .hp .hm-wx .r1 s{margin-left:auto;text-decoration:none;text-align:right;font-size:12px;color:rgba(255,255,255,.8)}
  .hp .hm-wx .r1 s b{display:block;font-size:17px;font-weight:600;color:#fff}
  .hp .hm-wx .t{display:flex;align-items:center;margin-top:6px}
  .hp .hm-wx .t b{font-size:52px;font-weight:600;letter-spacing:-2px;line-height:1.15}
  .hp .hm-wx .t img{margin-left:auto;width:78px;height:78px}
  .hp .hm-wx .d{font-size:12.5px;color:rgba(255,255,255,.85)}
  .hp .hm-wx .hrs{border-top:0;margin-top:auto;display:flex;flex-wrap:wrap;gap:6px;height:78px;overflow:hidden;padding-top:10px;box-sizing:content-box}
  .hp .hm-wx .hr{flex:1 0 44px;height:78px;border-radius:18px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);
    display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11.5px}
  .hp .hm-wx .hr img{width:22px;height:22px;display:block;margin:3px auto}
  .hp .hm-wx .hr b{font-size:13px;font-weight:700}
  .hp .hm-wx .wait{position:relative;width:100%;height:100%;min-height:120px;display:flex;align-items:center;justify-content:center;font-size:13.5px;color:#fff}

  /* 오늘 · 내일 · 모레 일정 */
  .hp .hm-plan .ct .hol{margin-left:2px}
  .hp .hm-plan .sc{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;display:flex;flex-direction:column}
  .hp .tl{display:grid;grid-template-columns:62px minmax(0,1fr);gap:0 12px;position:relative}
  .hp .tl:before{content:"";position:absolute;left:30px;top:10px;bottom:10px;border-left:1.5px dashed #D5DAE0}
  .hp .tm{position:relative;z-index:1;justify-self:center;height:26px;padding:0 9px;border-radius:13px;border:1.5px solid #CBD2DA;background:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;color:var(--t2);margin-top:8px;white-space:nowrap}
  .hp .tm.now{background:var(--ink);border-color:var(--ink);color:#fff}
  .hp .ev{display:block;border-radius:16px;padding:11px 14px;margin-bottom:10px;background:var(--fill);min-width:0}
  .hp .ev:hover{background:#EEF1F5}
  .hp .ev b{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:700;min-width:0}
  .hp .ev b u{width:8px;height:8px;border-radius:50%;flex:none}
  .hp .ev span{display:block;font-size:12px;color:var(--t3);margin-top:3px;padding-left:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hp .ev.dk{background:var(--ink);color:#fff}
  .hp .ev.dk span{color:rgba(255,255,255,.65)}
  .hp .dayline{display:flex;align-items:center;gap:8px;margin:6px 0 10px;font-size:12.5px;font-weight:600;color:var(--t2);white-space:nowrap}
  .hp .dayline:after{content:"";flex:1;height:1px;background:var(--line)}
  .hp .hol{height:22px;padding:0 8px;border-radius:11px;background:#FDECEC;color:var(--red,#D9534F);font-size:11.5px;font-weight:700;display:flex;align-items:center;flex:none}

  /* 이번 달 지출 — 어두운 카드 */
  .hp .spend{background:#1F252C;border:0;color:#fff}
  .hp .spend .ct s{color:rgba(255,255,255,.6)}
  .hp .spend .arr{border-color:rgba(255,255,255,.18)}
  .hp .spend .arr:hover{background:rgba(255,255,255,.08)}
  .hp .spend .big{font-size:32px;font-weight:600;letter-spacing:-1px;line-height:1.2}
  .hp .spend .big i{font-style:normal;font-size:16px;margin-left:2px;opacity:.7}
  .hp .spend .cmp{font-size:12.5px;color:rgba(255,255,255,.7);margin-top:4px;display:flex;align-items:center;gap:4px;min-height:18px}
  .hp .dots{display:grid;grid-template-columns:repeat(var(--c3),minmax(0,24px));gap:7px;margin-top:16px;justify-content:space-between}
  .hp .dots i{aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.1);max-width:24px;width:100%}
  .hp .dots i.td{box-shadow:0 0 0 2px #fff}
  .hp .sst{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:auto;padding-top:14px;border-top:1px solid rgba(255,255,255,.1)}
  .hp .dots+.sst{margin-top:18px}
  .hp .sst span{display:block;font-size:12px;color:rgba(255,255,255,.55)}
  .hp .sst b{display:block;font-size:15px;font-weight:600;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hp .leg{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:11.5px;color:rgba(255,255,255,.55)}
  .hp .leg i{width:10px;height:10px;border-radius:50%}

  /* 할 일 */
  .hp .pg{height:6px;border-radius:3px;background:var(--fill);margin:2px 0 10px;overflow:hidden;flex:none}
  .hp .pg i{display:block;height:6px;background:var(--primary);border-radius:3px}
  .hp .todo .row{display:flex;align-items:center;gap:10px;height:34px;font-size:14px;min-width:0}
  .hp .todo .ck{width:20px;height:20px;flex:none;display:flex;padding:0}
  .hp .todo .ck i{width:20px;height:20px;border-radius:7px;border:1.7px solid #D5DAE0;display:flex;align-items:center;justify-content:center;background:#fff}
  .hp .todo .ck:hover i{border-color:var(--primary)}
  .hp .todo .row.done .ck i{background:var(--primary);border-color:var(--primary)}
  .hp .todo .row span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hp .todo .row.done span{color:var(--t4);text-decoration:line-through}
  .hp .todo .row em{margin-left:auto;font-style:normal;font-size:11.5px;color:var(--t3);flex:none}
  .hp .todo .row em.late{color:var(--red,#D9534F);font-weight:600}

  /* 다가올 날 */
  .hp .dday .ct{margin-bottom:4px}
  .hp .dday .r{display:flex;align-items:center;gap:12px;height:48px;border-bottom:1px solid var(--line);min-width:0;flex:none}
  .hp .dday .r:hover b{color:#000;text-decoration:underline;text-underline-offset:3px}
  .hp .dday .r em{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:none}
  .hp .dday .r div{min-width:0;flex:1}
  .hp .dday .r b{display:block;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .hp .dday .r span{display:block;font-size:12px;color:var(--t3);font-weight:400;margin-top:1px}
  .hp .dday .r strong{margin-left:auto;font-size:15px;font-weight:700;flex:none}
  .hp .fx{margin-top:10px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:var(--fill);font-size:13px;flex:none;white-space:nowrap;min-height:42px}
  .hp .fx:hover{background:#EEF1F5}
  .hp .fx img{width:22px;border-radius:4px}
  .hp .fx b{font-weight:700}
  .hp .fx s{margin-left:auto;text-decoration:none;color:var(--t3);font-size:12px}
  .hp .fx .fxw{color:var(--t3)}
}
/* 넓은 카드는 점을 두 줄로 · 키가 모자라면 적게/많이 줄을 뺌 */
@media (min-width:1000px) {
  .hp .a-sp{container:sp/size}
  @container sp (min-width:380px){.hp .dots{grid-template-columns:repeat(var(--c2),minmax(0,22px))}}
  @container sp (max-height:291px) or ((max-height:325px) and (max-width:379px)){.hp .spend .leg{display:none}.hp .dots{margin-top:12px}.hp .dots+.sst{margin-top:12px;padding-top:10px}}
}
/* 좁은 PC 창 — 두 칸으로 쌓고 카드는 제 키만큼 */
@media (min-width:600px) and (max-width:999px) {
  .hp .greet{flex-wrap:wrap}
  .hp .kpis{margin-left:0}
  .hp{height:auto}
  .hp .hg{grid-template-columns:1fr 1fr;grid-template-rows:auto;grid-template-areas:"wx sp" "pl pl" "td dd";min-height:0}
  .hp .hm-wx{min-height:300px}
  .hp .hm-plan .sc{overflow:visible}
}
@media (min-width:600px) and (prefers-reduced-motion:reduce){.hp .greet h1{animation:none}}
