*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;min-height:100svh}#root{min-height:100svh}h1,h2,h3,h4,p,figure{margin:0}ul,ol{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}input,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img,svg{max-width:100%;display:block}body{background:var(--color-bg-primary);color:var(--color-text-primary);font-family:var(--font-body,"Manrope"), system-ui, sans-serif;transition:background-color .2s,color .2s}.card{background:var(--color-bg-card);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}:root{--header-height:70px;--tab-bar-height:90px;--nav-rail-width:84px;--sidebar-width:264px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}.app-shell{flex-direction:column;min-height:100svh;display:flex}.app-shell__header{height:calc(var(--header-height) + var(--safe-top));padding-top:var(--safe-top);flex-shrink:0;justify-content:space-between;align-items:center;padding-left:16px;padding-right:16px;display:flex}.app-shell__content{flex:1;padding:0 16px;overflow-y:auto}.app-shell__tab-bar{height:calc(var(--tab-bar-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);border-top:var(--border-width) solid var(--color-border);flex-shrink:0;grid-auto-columns:1fr;grid-auto-flow:column;display:grid}.app-shell--persistent-nav{flex-direction:row}.app-shell__main{flex-direction:column;flex:1;min-width:0;display:flex}.app-shell__content--wide{width:100%;max-width:1100px;margin:0 auto;padding:28px 32px}@media (width>=1000px){.content-columns{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:24px;display:grid}}:root{--ease-out:cubic-bezier(.22, .61, .36, 1);--ease-spring:cubic-bezier(.34, 1.4, .64, 1)}@keyframes route-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes sheet-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes check-pop{0%{transform:scale(0)}60%{transform:scale(1.18)}to{transform:scale(1)}}.anim-route{animation:route-in .26s var(--ease-out) both}.anim-pop{animation:pop-in .22s var(--ease-spring) both}.anim-sheet{animation:sheet-up .26s var(--ease-out) both}.anim-drawer{animation:drawer-in .24s var(--ease-out) both}.anim-overlay{animation:.2s both overlay-in}.anim-check{animation:check-pop .28s var(--ease-spring) both;transform-origin:50%}button:not(:disabled){transition:transform .13s var(--ease-out), background-color .15s ease, box-shadow .18s ease, opacity .15s ease, color .15s ease}button:not(:disabled):active{transform:scale(.94)}a{transition:transform .13s var(--ease-out), color .15s ease}a:active{transform:scale(.96)}.tappable{transition:transform .15s var(--ease-out), box-shadow .2s var(--ease-out)}.tappable:active{transform:scale(.985)}@media (hover:hover) and (pointer:fine){.tappable:hover{box-shadow:var(--shadow-card-strong,var(--shadow-card));transform:translateY(-2px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
