:root{--bg-0: #0d1130;--bg-1: #141242;--bg-2: #1b0f36;--text: #eef0ff;--muted: rgba(238, 240, 255, .62);--glass: rgba(255, 255, 255, .06);--glass-border: rgba(255, 255, 255, .12);--pink: #f28ab8;--blue: #7fb2ff;--violet: #8a7bff;--sidebar-w: 264px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:Onest,Segoe UI,system-ui,sans-serif;color:var(--text);background:linear-gradient(160deg,var(--bg-0) 0%,var(--bg-1) 45%,var(--bg-2) 100%) fixed;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:var(--blue);text-decoration:none}a:hover{color:var(--pink)}button{font:inherit;color:inherit}.display{font-family:Unbounded,Segoe UI,system-ui,sans-serif}.muted{color:var(--muted)}.glass{background:var(--glass);border:1px solid var(--glass-border);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.bg{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0;pointer-events:none}.blob{position:absolute;border-radius:50%;filter:blur(96px)}.blob--1{left:-10%;top:-20%;width:44vw;height:44vw;background:#3b5bdb8c}.blob--2{left:38%;top:18%;width:46vw;height:46vw;background:#7048e873}.blob--3{left:68%;top:56%;width:42vw;height:42vw;background:#d6336c61}.app{position:relative;z-index:1;min-height:100vh;min-height:100dvh}.sidebar{position:fixed;left:20px;top:20px;bottom:20px;width:var(--sidebar-w);display:flex;flex-direction:column;padding:26px 18px 20px;border-radius:24px}.sidebar__nav{display:flex;flex-direction:column;gap:6px}.sidebar__spacer{flex-grow:1}.brand{display:flex;align-items:center;gap:12px;padding:0 6px 26px}.brand--compact{padding:0}.brand__name{font-size:17px;font-weight:600;letter-spacing:-.01em}.brand--compact .brand__name{font-size:14px;color:#eef0ffcc}.brand__mark{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--pink),var(--blue));color:#12142a}.brand__mark--lg{width:56px;height:56px;border-radius:18px}.nav-item{display:flex;align-items:center;gap:12px;height:46px;padding:0 14px;border-radius:14px;border:1px solid transparent;color:#eef0ffa8;font-size:15px;font-weight:500;transition:background .15s,color .15s}.nav-item:hover{background:#ffffff0d;color:var(--text)}.nav-item.active{background:#ffffff1a;color:#fff;border-color:#ffffff24}.days-card{padding:18px 16px;border-radius:18px;background:linear-gradient(135deg,#f28ab82e,#7fb2ff2e);border:1px solid rgba(255,255,255,.14)}.days-card__num{font-size:34px;font-weight:600;line-height:1;letter-spacing:-.02em}.days-card__label{margin-top:6px;font-size:14px;font-weight:500}.days-card__since{margin-top:2px;font-size:12px}.logout{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px 12px;border-radius:12px;background:transparent;border:0;cursor:pointer;color:var(--muted);font-size:13px}.logout:hover{color:var(--text);background:#ffffff0d}.logout--icon{margin:0;padding:8px}.topbar{display:none}.content{margin-left:calc(var(--sidebar-w) + 20px);padding:52px 56px 40px 48px;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;gap:28px}.tabbar{display:none}.page-head{display:flex;flex-direction:column;gap:14px}.page-title{margin:0;font-size:34px;font-weight:600;line-height:1.15;letter-spacing:-.02em}.page-sub{margin:0;max-width:560px;font-size:16px;line-height:1.5}.chip{display:inline-flex;align-self:flex-start;align-items:center;gap:8px;height:30px;padding:0 12px 0 10px;border-radius:999px;background:#f28ab824;border:1px solid rgba(242,138,184,.35);color:#f7b6d2;font-size:13px;font-weight:500}.card{border-radius:20px;padding:22px}.card__title{font-size:16px;font-weight:600}.card__hint{font-size:13px;line-height:1.5}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.summary,.summary__body{display:flex;flex-direction:column;gap:14px}.icon-badge{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;flex:none}.icon-badge--blue{background:#7fb2ff29;color:var(--blue)}.icon-badge--pink{background:#f28ab829;color:var(--pink)}.skeletons{display:flex;flex-direction:column;gap:8px}.skeleton{height:10px;border-radius:6px;background:#ffffff1a}.memory{display:flex;gap:24px}.memory__photo{flex:none;width:320px;min-height:160px;border-radius:16px;border:1px dashed rgba(255,255,255,.22);background:#ffffff08;display:flex;align-items:center;justify-content:center;color:#eef0ff73}.memory__text{display:flex;flex-direction:column;gap:10px;justify-content:center;max-width:420px}.placeholder{flex-grow:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:40px;border-radius:24px;border-style:dashed;border-color:#fff3;text-align:center}.placeholder__icon{display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:22px;color:#fff;background:linear-gradient(135deg,#f28ab847,#7fb2ff47);border:1px solid rgba(255,255,255,.16)}.placeholder__title{font-size:22px;font-weight:600;letter-spacing:-.01em}.placeholder__text{font-size:15px;line-height:1.5;max-width:380px}.login-screen{position:relative;z-index:1;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{display:flex;flex-direction:column;gap:24px;width:100%;max-width:400px;padding:36px 32px 32px;border-radius:28px}.login-card__head{display:flex;flex-direction:column;align-items:center;gap:14px}.login-card__title{font-size:22px;font-weight:600;letter-spacing:-.01em}.field{display:flex;align-items:center;gap:10px;height:48px;padding:0 14px;border-radius:14px;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);color:#eef0ff80}.field:focus-within{border-color:#f28ab899;color:var(--text)}.field+.field{margin-top:-12px}.field input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--text);font:inherit;font-size:15px}.field input::placeholder{color:#eef0ff80}.login-error{margin-top:-8px;font-size:13px;color:#f7b6d2;text-align:center}.btn-primary{display:flex;align-items:center;justify-content:center;height:50px;border-radius:16px;border:0;cursor:pointer;background:linear-gradient(135deg,var(--pink),var(--violet));color:#12142a;font-size:15px;font-weight:600}.btn-primary:disabled{opacity:.6;cursor:default}@media(max-width:860px){.sidebar{display:none}.blob{filter:blur(80px)}.blob--1{left:-35%;top:-15%;width:100vw;height:100vw}.blob--2{left:30%;top:30%;width:100vw;height:100vw}.blob--3{left:15%;top:65%;width:100vw;height:100vw}.topbar{display:flex;align-items:center;justify-content:space-between;padding:calc(20px + env(safe-area-inset-top)) 20px 0}.topbar__right{display:flex;align-items:center;gap:6px}.days-pill{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px 0 10px;border-radius:999px;font-size:13px;font-weight:500}.days-pill .display{font-size:14px;font-weight:600}.days-pill__heart{color:var(--pink)}.content{margin-left:0;padding:30px 20px calc(110px + env(safe-area-inset-bottom));min-height:0;gap:26px}.page-head{gap:12px}.page-title{font-size:26px;line-height:1.2}.page-sub{font-size:15px}.chip{height:28px;font-size:12px}.summary-grid{grid-template-columns:1fr;gap:12px}.summary{flex-direction:row;align-items:center;padding:16px;border-radius:18px}.summary .icon-badge{width:44px;height:44px;border-radius:13px}.summary .card__title{font-size:15px}.summary__body{flex-grow:1;gap:8px}.summary .skeleton:nth-child(2),.summary .card__hint{display:none}.memory{flex-direction:column;gap:12px;padding:16px;border-radius:18px;flex-grow:0}.memory__photo{width:100%;min-height:96px}.memory .card__hint{display:none}.placeholder{padding:32px 24px;border-radius:22px;gap:16px;min-height:320px}.placeholder__icon{width:64px;height:64px;border-radius:20px}.placeholder__title{font-size:18px}.placeholder__text{font-size:14px}.tabbar{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));display:flex;gap:2px;padding:6px;border-radius:22px;z-index:2}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;flex:1 1 0;height:56px;border-radius:14px;color:#eef0ff8c;font-size:11px;font-weight:500}.tab.active{color:var(--pink)}}
