:root{color-scheme:dark;--bg:#0e1115;--panel:#171c22;--panel2:#222a30;--line:#2b343d;--text:#f4f7f7;--muted:#8c9ba4;--accent:#64d9ac;--accentDark:#123b31;--danger:#ff7986;--shade:rgba(0,0,0,.65);--header:rgba(14,17,21,.93);--shadow:0 20px 70px rgba(0,0,0,.4)}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard", "Noto Sans KR",system-ui,sans-serif;font-size:15px;letter-spacing:-.3px;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button{cursor:pointer}input,textarea,select{outline:none}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input::placeholder,textarea::placeholder{color:#77858d}a{color:var(--accent)}.hidden{display:none!important}.app-frame{max-width:780px;min-height:100dvh;margin:auto;padding:0 18px 120px}.boot{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center}.boot .brand-mark{font-size:58px;color:var(--accent)}.boot h1{font-size:28px;margin:10px 0 0}.boot p{color:var(--muted)}
header.topbar{height:82px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:max(env(safe-area-inset-top),4px)}.logo-wrap{display:flex;align-items:center;gap:12px;min-width:0}.logo{height:40px;width:40px;background:#172c27;color:var(--accent);border-radius:15px;display:grid;place-items:center;font-size:28px;flex:none}.brand-name{font-size:20px;font-weight:850;letter-spacing:-1px}.subline{font-size:11px;color:var(--muted);margin-top:2px}.top-actions{display:flex;align-items:center;gap:8px}.icon-btn{height:38px;min-width:38px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:13px;display:grid;place-items:center;font-size:20px}.user-avatar{background:#31413d;color:#d9f8e9;font-size:13px;font-weight:800}.page-title{font-size:28px;font-weight:850;letter-spacing:-1.4px;line-height:1.25;margin:24px 0 6px}.page-sub{font-size:13px;color:var(--muted);margin:0 0 20px}.top-kicker{color:var(--accent);font-size:12px;font-weight:750;letter-spacing:1.2px}.muted{color:var(--muted)}.small{font-size:12px}.strong{font-weight:750}.good{color:var(--accent)}.warning{color:#e4b85b}.danger{color:var(--danger)}
.bottom-nav{position:fixed;z-index:25;left:50%;bottom:max(10px, env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 24px),744px);padding:6px;display:flex;border:1px solid var(--line);background:rgba(28,34,39,.96);border-radius:25px;box-shadow:0 10px 35px rgba(0,0,0,.32);backdrop-filter:blur(20px)}.nav-item{display:flex;flex:1;flex-direction:column;align-items:center;gap:4px;color:var(--muted);border:0;border-radius:20px;background:transparent;padding:10px 4px 9px;font-weight:700;font-size:11px}.nav-item.active{background:#0f1718;color:var(--accent)}.nav-icon{font-size:22px;line-height:24px;font-family:system-ui}
.week-panel{background:var(--panel);padding:14px 12px 15px;border-radius:23px;border:1px solid var(--line)}.week-top{display:flex;align-items:center;justify-content:space-between;margin:0 4px 12px}.week-label{font-weight:800;font-size:16px}.week-actions{display:flex;gap:7px}.arrow{background:var(--panel2);color:var(--text);border:0;border-radius:50%;height:32px;width:32px;font-size:21px}.jump-today{background:var(--accentDark);color:var(--accent);padding:6px 12px;border:0;border-radius:12px;font-size:12px;font-weight:800}.days-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.day-btn{border:0;background:none;color:var(--text);display:flex;flex-direction:column;align-items:center;gap:5px;padding:4px 0 6px;border-radius:14px}.day-btn .day-name{font-size:12px;color:var(--muted)}.day-btn .day-num{width:36px;height:36px;display:grid;place-items:center;border-radius:14px;font-weight:800}.day-btn.selected .day-num{background:var(--accent);color:#091812}.day-btn.today:not(.selected) .day-num{border:1px solid var(--accent);color:var(--accent)}.day-btn.sunday .day-name{color:#e78f98}.day-btn.saturday .day-name{color:#7babea}.day-btn.othermonth{opacity:.42}.week-intro{display:flex;align-items:flex-end;justify-content:space-between;margin:25px 2px 15px;gap:14px}.week-intro h2{margin:0 0 4px;font-size:22px;letter-spacing:-.7px}.week-intro p{margin:0;color:var(--muted);font-size:12px}.pill-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:12px;font-size:12px;font-weight:750;white-space:nowrap}.progress-track{height:7px;background:#293238;border-radius:10px;overflow:hidden;margin:5px 2px 20px}.progress-track>div{height:100%;background:linear-gradient(90deg,#4eba93,#7ee7b8);border-radius:10px;transition:width .25s}
.category-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;margin-bottom:13px;overflow:hidden}.category-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:16px 15px 11px}.category-name{font-size:16px;font-weight:800;display:flex;gap:9px;align-items:center;min-width:0}.cat-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}.count{font-size:11px;color:var(--muted);font-weight:500}.small-add{background:var(--panel2);border:0;color:var(--text);border-radius:12px;font-size:23px;line-height:1;width:34px;height:34px}.tasks{padding:0 12px 10px}.task{display:flex;align-items:center;min-height:46px;gap:11px;border-top:1px solid rgba(255,255,255,.045);padding:7px 2px}.task-check{width:23px;height:23px;border:2px solid #5a6a72;background:transparent;border-radius:9px;flex:none;color:#0d1611;font-size:14px;font-weight:900}.task-check.checked{background:var(--accent);border-color:var(--accent)}.task-text{flex:1;word-break:break-word}.task-text.done{text-decoration:line-through;color:#72808a}.task-delete{border:0;background:none;color:#65737c;font-size:20px;padding:5px 8px}.empty-cat{font-size:12px;color:#64737b;padding:6px 2px 13px}.add-task-row{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding-top:12px;margin-top:8px}.task-entry{min-width:0;flex:1;background:var(--panel2);border:1px solid #3a444a;border-radius:11px;padding:11px 12px;color:var(--text)}.primary-small{color:#09241a;background:var(--accent);border:0;border-radius:10px;padding:11px 14px;font-weight:900}.no-content{padding:25px;border:1px dashed var(--line);border-radius:18px;color:var(--muted);text-align:center}.hint{color:var(--muted);font-size:12px;margin-top:12px;line-height:1.7}
.diary-paper{background:var(--panel);border:1px solid var(--line);border-radius:23px;padding:20px 20px 16px;margin-top:20px;min-height:55vh;box-shadow:inset 0 1px rgba(255,255,255,.03)}.diary-top{display:flex;justify-content:space-between;align-items:start;gap:8px}.diary-date{font-size:21px;font-weight:850;line-height:1.5}.save-status{color:var(--muted);font-size:11px}.mood-row{display:flex;gap:7px;flex-wrap:wrap;margin:18px 0 15px}.mood-btn{background:var(--panel2);border:1px solid transparent;color:var(--muted);padding:8px 11px;border-radius:13px;font-size:12px}.mood-btn.active{border-color:var(--accent);color:var(--accent);background:var(--accentDark)}.diary-title-input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);font-size:20px;font-weight:700;color:var(--text);padding:12px 0 17px}.diary-textarea{display:block;width:100%;min-height:38vh;resize:vertical;background:repeating-linear-gradient(transparent 0px,transparent 34px,rgba(255,255,255,.052) 35px,transparent 36px);border:0;color:var(--text);font-size:15px;line-height:36px;padding:10px 0;letter-spacing:.15px}.diary-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:13px;color:var(--muted);font-size:12px}.saving-pill{color:var(--accent)}
.calendar-header{display:flex;align-items:center;justify-content:space-between;gap:7px;margin:18px 0 16px}.month-label{font-size:25px;font-weight:850;letter-spacing:-1.3px}.month-actions{display:flex;gap:6px}.calendar-legend{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;margin:0 0 15px}.calendar-legend .avatars{display:flex}.calendar-legend .avatars span{display:grid;place-items:center;border:2px solid var(--bg);border-radius:50%;height:23px;width:23px;font-size:9px;font-weight:900;background:#304b41;margin-left:-5px;color:#e3f6ed}.calendar-legend .avatars span:first-child{margin-left:0;background:#493b48}.calendar-shell{border:1px solid var(--line);border-radius:19px;overflow:hidden;background:var(--panel)}.month-weekday{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:var(--panel2);padding:11px 0}.month-weekday span{text-align:center;font-size:12px;color:var(--muted)}.month-weekday span:first-child{color:#f1919a}.month-weekday span:last-child{color:#93b6f8}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0}.cal-day{position:relative;min-height:104px;padding:9px 3px 5px;min-width:0;border:0;border-top:1px solid var(--line);border-right:1px solid rgba(255,255,255,.055);background:transparent;color:var(--text);text-align:left;display:flex;flex-direction:column;gap:5px}.cal-day:nth-child(7n){border-right:0}.cal-day.selected{background:rgba(100,217,172,.085)}.cal-day.other{opacity:.45}.cal-day-number{height:27px;width:27px;border-radius:50%;display:grid;place-items:center;margin:auto auto 0;font-size:13px}.cal-day.now .cal-day-number{background:var(--accent);color:#071911;font-weight:900}.cal-day.sunday .cal-day-number{color:#ec808c}.cal-day.saturday .cal-day-number{color:#8bb4fa}.cal-day.now.sunday .cal-day-number,.cal-day.now.saturday .cal-day-number{color:#071911}.lunar{text-align:center;font-size:9px;line-height:13px;height:13px;color:#64727a}.cal-event{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:800;line-height:17px;border-radius:4px;padding:0 3px;color:#0c1519;text-align:left}.more-count{font-size:9px;color:var(--muted);padding-left:3px}.calendar-lower{margin:21px 0 100px}.agenda-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.agenda-title h3{font-size:17px;margin:0}.agenda-event{width:100%;text-align:left;display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:14px;padding:14px;margin:8px 0}.agenda-bar{width:4px;height:33px;border-radius:6px;flex:none}.agenda-main{flex:1;min-width:0}.agenda-main b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agenda-main span{font-size:12px;color:var(--muted);display:block;margin-top:3px}.fab{position:fixed;bottom:calc(max(10px, env(safe-area-inset-bottom)) + 83px);right:max(24px,calc((100vw - 730px) / 2));width:56px;height:56px;border-radius:20px;background:var(--accent);color:#123526;border:0;box-shadow:0 10px 25px rgba(0,0,0,.4);font-size:36px;line-height:1}
.overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:var(--shade);backdrop-filter:blur(4px)}.sheet{max-height:96dvh;overflow:auto;overscroll-behavior:contain;max-width:720px;width:100%;background:#171b20;color:var(--text);border:1px solid #343d45;border-radius:27px 27px 0 0;box-shadow:var(--shadow);padding:20px 20px max(24px,env(safe-area-inset-bottom))}.sheet-handle{height:5px;width:42px;border-radius:5px;background:#54616a;margin:-6px auto 21px}.sheet-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.sheet-title{font-size:22px;font-weight:850}.sheet-x{width:38px;height:38px;border:0;border-radius:50%;font-size:23px;background:var(--panel2);color:var(--text)}.sheet-save{background:var(--accent);border:0;color:#07251a;border-radius:13px;padding:10px 19px;font-weight:900}.sheet-delete{border:1px solid #79414a;background:#391e23;color:#ff9ca5;border-radius:12px;padding:11px 14px;font-weight:800}.form-title{display:block;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);font-weight:800;font-size:24px;padding:17px 0 21px;color:var(--text);margin-bottom:15px}.field-group{padding:15px 0;border-bottom:1px solid var(--line)}.field-heading{font-size:14px;color:#d1d9de;font-weight:700;margin:0 0 11px}.form-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:11px 0}.form-row>span{color:#c6d0d7;font-size:14px;flex:none}.control{background:var(--panel2);color:var(--text);border:1px solid #39424b;border-radius:12px;padding:11px 12px;width:100%;min-width:0}.control.small-control{max-width:205px}.form-row .control{max-width:225px}.form-row .control[type=checkbox]{accent-color:var(--accent);width:22px;height:22px;min-width:22px}.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.two-col .control{max-width:none}.label-colors{display:flex;gap:11px;flex-wrap:wrap}.color-choice{width:32px;height:32px;border-radius:50%;border:3px solid transparent;background:var(--color);position:relative}.color-choice.active{outline:2px solid white;outline-offset:2px}.note-field{min-height:74px;resize:vertical}.advanced-summary{border:0;background:var(--panel2);padding:12px;color:var(--accent);border-radius:13px;font-weight:700}.field-info{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.65}.sheet-footer{display:flex;justify-content:space-between;gap:10px;padding-top:22px}.category-edit-row{display:flex;align-items:center;gap:7px;border-bottom:1px solid var(--line);padding:10px 0}.category-edit-row input[type=text]{flex:1;min-width:0}.category-edit-row input[type=color]{height:40px;width:45px;border:0;background:none}.category-edit-row button{border:0;border-radius:10px;padding:11px;background:var(--panel2);color:var(--text)}.category-edit-row .remove{color:var(--danger)}.settings-card{padding:17px;background:var(--panel);border:1px solid var(--line);border-radius:17px;margin-bottom:12px}.settings-card h3{margin:0 0 12px;font-size:17px}.settings-card p{color:var(--muted);font-size:13px;line-height:1.7;margin:8px 0 12px}.settings-card .control{margin:6px 0 9px}.settings-card .pill-btn{margin-top:5px}.code-box{display:flex;justify-content:space-between;gap:8px;align-items:center;background:var(--panel2);border:1px dashed #618f77;color:var(--accent);border-radius:12px;padding:12px;font-size:14px;letter-spacing:1px;word-break:break-all;font-weight:700}.onboard{min-height:100dvh;max-width:500px;margin:auto;display:flex;flex-direction:column;justify-content:center;padding:25px}.onboard-logo{font-size:40px;color:var(--accent);margin-bottom:8px}.onboard h1{font-size:32px;letter-spacing:-1.5px;margin:7px 0 5px}.onboard p{color:var(--muted);line-height:1.75;font-size:14px}.auth-card{background:var(--panel);padding:22px;border:1px solid var(--line);border-radius:23px;margin-top:26px}.auth-card h2{font-size:20px;margin:0 0 17px}.auth-card label{font-weight:700;font-size:12px;display:block;color:#bac7ce;margin-bottom:8px}.auth-card .control{margin-bottom:16px}.auth-submit{display:block;background:var(--accent);color:#092b1c;border:0;border-radius:13px;padding:14px;font-weight:900;width:100%}.text-link{border:0;background:transparent;color:var(--accent);text-decoration:underline;padding:12px 0}.mode-banner{padding:12px 15px;background:#332b1c;color:#efcf8b;font-size:12px;line-height:1.5;border:1px solid #665334;border-radius:13px;margin:12px 0}.inline-err{color:var(--danger);font-size:12px;min-height:18px}.save-badge{font-size:11px;color:var(--accent)}
#toast{position:fixed;z-index:100;left:50%;bottom:calc(max(16px,env(safe-area-inset-bottom)) + 95px);transform:translateX(-50%) translateY(20px);background:#344038;color:#eaf7f0;border:1px solid #557362;border-radius:12px;padding:12px 19px;max-width:90vw;min-width:190px;text-align:center;opacity:0;pointer-events:none;transition:.2s;font-size:13px}#toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}.loading-dot{width:10px;height:10px;border-radius:50%;display:inline-block;background:var(--accent);margin-right:6px}.divider{border-top:1px solid var(--line);margin:16px 0}.soft{background:var(--panel2)!important}.text-danger{color:var(--danger)!important}.footer-note{font-size:11px;color:var(--muted);margin:17px 0;line-height:1.8}
@media(min-width:650px){.app-frame{padding-left:28px;padding-right:28px}.cal-day{min-height:120px;padding:11px 7px 6px}.cal-event{font-size:11px;line-height:20px}.sheet{border-radius:25px;align-self:center;max-height:89dvh}.overlay{align-items:center}.month-label{font-size:29px}.fab{bottom:105px}}
@media(max-width:370px){.app-frame{padding:0 10px 115px}.cal-day{min-height:99px;padding:7px 2px 4px}.cal-event{font-size:9px}.logo-wrap{gap:8px}.brand-name{font-size:17px}.sheet{padding:16px 13px max(20px,env(safe-area-inset-bottom))}.form-row>span{font-size:12px}.form-row .control{max-width:195px}.day-btn .day-num{width:33px;height:33px}}
/* To-do interaction and mobile refinements */
.todo-list{padding:0 14px 12px}.todo-item{display:flex;align-items:center;gap:11px;min-height:52px;padding:8px 0;border-top:1px solid rgba(255,255,255,.05)}.todo-check{width:25px;height:25px;border:2px solid #677681;background:transparent;color:#10261d;border-radius:9px;flex:none;font-weight:900;font-size:15px}.todo-check.checked{background:var(--accent);border-color:var(--accent)}.todo-text{flex:1;text-align:left;border:0;background:transparent;color:var(--text);font-size:14px;line-height:1.55;overflow-wrap:anywhere;padding:4px 0}.todo-text.completed{text-decoration:line-through;color:#7d898f}.todo-text small{display:block;font-size:11px;color:#7e939d;text-decoration:none;margin-top:2px;white-space:pre-line}.todo-more{border:0;background:none;color:#829099;padding:7px;font-size:20px}.empty-inside{padding:4px 2px 10px;color:#72828a;font-size:12px;margin:3px 0}.add-section{width:100%;background:transparent;border:1px dashed #41534e;border-radius:15px;color:var(--accent);padding:15px;font-size:12px;font-weight:800}.diary-top h2{font-size:21px;letter-spacing:-.7px;margin:7px 0 2px}.diary-decoration{font-size:42px;color:var(--accent);opacity:.6}.mood-row{align-items:center}.empty-agenda{border:1px dashed var(--line);border-radius:15px;color:var(--muted);font-size:13px;padding:26px 15px;text-align:center}.day-btn{min-width:0}.calendar-shell{margin-bottom:8px}.cal-day{cursor:pointer}.cal-day-number{margin:0 auto}.cal-day{min-height:93px}.calendar-lower{margin-bottom:100px}.modal-scroll{max-height:80vh;overflow:auto}.sheet{scrollbar-width:thin}.settings-card form{margin-bottom:6px}.category-edit-row .control{padding:10px 9px}.diary-paper{margin-bottom:90px}.field-group textarea{line-height:1.6}.control[type="color"]{cursor:pointer}
