:root{--bg: #ffffff;--side: #fcfaf8;--line: #eeeeee;--line2: #e6e6e6;--ink: #202020;--sub: #808080;--faint: #b3b3b3;--accent: #dc4c3e;--accent-soft: #fff0ee;--hover: #f5f5f5;--p1: #d1453b;--p2: #eb8909;--p3: #246fe0;--p4: #999999;--green: #299438}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,-apple-system,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,select{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line2);border-radius:6px;padding:5px 9px;outline:none}input:focus,select:focus{border-color:var(--faint)}.shell{display:flex;height:100vh}.side{width:250px;flex-shrink:0;background:var(--side);padding:18px 12px;display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--line)}.side .brand{display:flex;align-items:center;gap:8px;padding:4px 10px 16px;font-weight:800;font-size:16px}.side .brand .dot{width:22px;height:22px;border-radius:6px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px}.nav-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:7px;font-size:14px;color:var(--ink);text-align:left;width:100%}.nav-item:hover{background:#f2efed}.nav-item.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-item .ico{width:18px;text-align:center;font-size:15px}.nav-item .cnt{margin-left:auto;font-size:12px;color:var(--faint)}.nav-item.on .cnt{color:var(--accent)}.side .sec-label{font-size:12px;font-weight:700;color:var(--sub);padding:16px 10px 6px}.side-dday{display:flex;align-items:center;gap:8px;padding:5px 10px;font-size:13px;color:var(--ink);border-radius:7px}.side-dday .dnum{font-weight:800;font-size:12px;color:var(--accent);font-variant-numeric:tabular-nums;min-width:34px}.side-dday .dnum.far{color:var(--sub)}.side-dday .x{margin-left:auto;color:var(--faint);font-size:11px;visibility:hidden}.side-dday:hover .x{visibility:visible}.side-add-dday{color:var(--sub);font-size:12.5px;padding:5px 10px;text-align:left;border-radius:7px}.side-add-dday:hover{background:#f2efed}.dday-form{display:flex;flex-direction:column;gap:6px;padding:6px 10px}.side .foot{margin-top:auto;padding:10px;display:flex;align-items:center;gap:8px;font-size:12px;color:var(--sub)}.side .foot .cloud{color:var(--green);font-weight:700}.side .foot button{color:var(--faint);font-size:12px}.side .foot button:hover{color:var(--sub)}.main{flex:1;overflow-y:auto}.view{max-width:800px;margin:0 auto;padding:40px 48px 120px}.view.wide{max-width:1060px}.view-title{font-size:22px;font-weight:800;margin-bottom:2px;display:flex;align-items:baseline;gap:10px}.view-title .sub{font-size:13px;font-weight:500;color:var(--sub)}.view-head-gap{height:18px}.sec-head{font-size:13px;font-weight:700;padding:14px 0 6px;border-bottom:1px solid var(--line);margin-bottom:2px;display:flex;align-items:center;gap:8px}.sec-head.overdue{color:var(--p1)}.sec-head .n{color:var(--faint);font-weight:600;font-size:12px}.task{display:flex;align-items:flex-start;gap:10px;padding:9px 4px;border-bottom:1px solid var(--line);position:relative}.task:hover{background:#fafafa}.tcheck{width:18px;height:18px;border-radius:50%;flex-shrink:0;margin-top:2px;border:1.7px solid var(--p4);background:transparent;position:relative;display:flex;align-items:center;justify-content:center;font-size:11px;color:transparent}.tcheck.p1{border-color:var(--p1);background:#fdf0ef}.tcheck.p2{border-color:var(--p2);background:#fdf4e6}.tcheck.p3{border-color:var(--p3);background:#eef3fc}.tcheck:hover{color:var(--sub)}.tcheck.p1:hover{color:var(--p1)}.tcheck.p2:hover{color:var(--p2)}.tcheck.p3:hover{color:var(--p3)}.tcheck.checked{background:var(--p4);border-color:var(--p4);color:#fff}.task .body{flex:1;min-width:0}.task .t-title{font-size:14px}.task.done .t-title{color:var(--faint);text-decoration:line-through}.task .t-meta{display:flex;gap:10px;font-size:12px;color:var(--sub);margin-top:1px}.task .t-meta .overdue{color:var(--p1);font-weight:600}.task .t-meta .today-chip{color:var(--green);font-weight:600}.task .t-time{font-size:12.5px;font-weight:700;color:var(--p3);font-variant-numeric:tabular-nums;margin-top:3px;min-width:38px}.task .del{color:var(--faint);font-size:12px;visibility:hidden;padding:2px 4px}.task:hover .del{visibility:visible}.task .del:hover{color:var(--p1)}.ev-mark{width:18px;height:18px;flex-shrink:0;margin-top:2px;display:flex;align-items:center;justify-content:center;font-size:12px}.qadd{display:flex;align-items:center;gap:8px;padding:10px 4px;color:var(--sub);font-size:14px;border-radius:7px;width:100%;text-align:left}.qadd:hover{color:var(--accent)}.qadd .plus{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--accent)}.qadd:hover .plus{background:var(--accent);color:#fff}.qform{border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin:8px 0;display:flex;flex-direction:column;gap:8px;background:#fff}.qform input[type=text]{border:none;padding:2px 0;font-size:14px}.qform .row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.qform .row .spacer{flex:1}.qform select,.qform input[type=date],.qform input[type=time]{font-size:12.5px;padding:3px 6px;color:var(--sub)}.btn-primary{background:var(--accent);color:#fff;font-weight:700;font-size:13px;border-radius:7px;padding:6px 14px}.btn-primary:disabled{opacity:.4;cursor:default}.btn-plain{color:var(--sub);font-size:13px;padding:6px 10px}.seg{display:flex;border:1px solid var(--line2);border-radius:7px;overflow:hidden}.seg button{padding:4px 12px;font-size:12.5px;color:var(--sub)}.seg button.on{background:var(--hover);color:var(--ink);font-weight:600}.empty{color:var(--faint);font-size:13.5px;padding:24px 0;text-align:center}.done-toggle{font-size:12.5px;color:var(--sub);margin-top:14px}.up-day{margin-bottom:6px}.cal-top{display:flex;align-items:center;gap:12px;margin-bottom:14px}.cal-top h2{font-size:18px;font-weight:800;min-width:130px}.cal-top .navbtns{display:flex;gap:2px}.cal-top .navbtns button{width:28px;height:28px;border-radius:6px;color:var(--sub);font-size:14px;display:flex;align-items:center;justify-content:center}.cal-top .navbtns button:hover{background:var(--hover)}.cal-top .today-btn{border:1px solid var(--line2);border-radius:6px;padding:3px 10px;font-size:12.5px;color:var(--sub)}.cal-wrap{display:flex;gap:20px;align-items:flex-start}.cal{flex:1;border:1px solid var(--line);border-radius:10px;overflow:hidden}.cal-wd{display:grid;grid-template-columns:repeat(7,1fr);background:#fafafa;border-bottom:1px solid var(--line)}.cal-wd div{padding:6px 8px;font-size:11.5px;font-weight:700;color:var(--sub);text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-cell{min-height:96px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 6px;text-align:left;vertical-align:top;display:flex;flex-direction:column;gap:3px;background:#fff;cursor:pointer;align-items:stretch}.cal-cell:nth-child(7n){border-right:none}.cal-cell:hover{background:#fafafa}.cal-cell.dim{background:#fcfcfc}.cal-cell.dim .dnum{color:var(--faint)}.cal-cell.sel{outline:2px solid var(--accent);outline-offset:-2px}.cal-cell .dnum{font-size:12px;font-weight:600;color:var(--ink);width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:50%}.cal-cell .dnum.sun{color:var(--p1)}.cal-cell.today .dnum{background:var(--accent);color:#fff;font-weight:800}.cal-item{font-size:11px;padding:1px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.cal-item.ev{background:#eef3fc;color:var(--p3)}.cal-item.todo{background:#f2f2f2;color:#555}.cal-item.todo.tdone{color:var(--faint);text-decoration:line-through}.cal-item.dday{background:var(--accent-soft);color:var(--accent);font-weight:700}.cal-more{font-size:10.5px;color:var(--faint);text-align:left;padding-left:4px}.day-panel{width:300px;flex-shrink:0;border:1px solid var(--line);border-radius:10px;padding:16px;position:sticky;top:24px}.day-panel h3{font-size:14.5px;font-weight:800;margin-bottom:8px;display:flex;align-items:baseline;gap:8px}.day-panel h3 .dd{font-size:12px;color:var(--accent);font-weight:700}.proj-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.pcard{border:1px solid var(--line2);border-radius:10px;padding:14px 16px}.pcard .head{display:flex;align-items:center;gap:8px}.pcard .cdot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.pcard .name{font-weight:700;font-size:14.5px;flex:1}.pcard .dday{font-size:12px;font-weight:800;color:var(--accent);white-space:nowrap}.pcard .doc-link{font-size:11.5px;font-weight:600;color:var(--p3);text-decoration:none;border:1px solid var(--line2);border-radius:6px;padding:1px 7px;white-space:nowrap}.pcard .doc-link:hover{background:#eef3fc}.status-pill{font-size:11px;font-weight:700;padding:2px 9px;border-radius:99px}.status-pill.active{background:#e8f5e9;color:var(--green)}.status-pill.paused{background:#fdf4e6;color:var(--p2)}.status-pill.done{background:#f2f2f2;color:var(--sub)}.pcard .next{font-size:13px;color:var(--sub);margin-top:8px;cursor:text}.pcard .next b{color:var(--ink);font-weight:600}.pcard .next input{width:100%;font-size:13px}.pcard .del{color:var(--faint);font-size:12px;visibility:hidden}.pcard:hover .del{visibility:visible}.login-wrap{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--side)}.login-box{background:#fff;border:1px solid var(--line2);border-radius:14px;padding:32px;width:320px;display:flex;flex-direction:column;gap:10px}.login-box h1{font-size:17px;margin-bottom:6px}.login-box .err{color:var(--p1);font-size:12.5px}
