.sidebar-overlay{position:fixed;inset:0;z-index:99;background:#00000073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sidebar-toggle{position:absolute;top:10px;left:max(12px,env(safe-area-inset-left));z-index:50;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid var(--badge-border);border-radius:50%;background:var(--badge-bg);color:var(--text-primary);cursor:pointer}.sidebar-toggle:hover{border-color:var(--text-secondary)}.sidebar-container{position:fixed;inset:0 auto 0 0;z-index:100;display:flex;flex-direction:column;width:min(280px,85vw);padding-top:max(16px,env(safe-area-inset-top));border-right:1px solid var(--badge-border);background:#fff;box-shadow:8px 0 40px #00000026;transform:translate(-100%);visibility:hidden;transition:transform .25s ease,visibility .25s}.sidebar-container.expanded{transform:translate(0);visibility:visible}.sidebar-heading{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;padding:0 12px 12px 28px}.sidebar-close{flex-shrink:0;width:44px;height:44px;border:1px solid var(--badge-border);border-radius:50%;background:var(--badge-bg);color:var(--text-primary);font-size:25px;cursor:pointer}.sidebar-content{flex:1;padding:0 16px 20px;overflow-y:auto}.sidebar-title{margin:0;color:var(--text-secondary);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.06em}.sidebar-nav{display:flex;flex-direction:column;gap:6px}.sidebar-link{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;border-radius:10px;color:var(--text-primary);text-decoration:none;font-size:14px}.sidebar-link:hover,.sidebar-link.active{background:var(--badge-bg)}.sidebar-link.active{font-weight:600}.sidebar-link.within-budget{color:#287a35}.sidebar-link.over-budget{color:#c52b2b}.sidebar-overage{flex-shrink:0;font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}@media(prefers-color-scheme:dark){.sidebar-container{background:#0c121b}.sidebar-link.within-budget{color:#7bc78a}.sidebar-link.over-budget{color:#ff8585}}.site-footer{padding:.5rem 1rem;opacity:.4;transition:opacity .2s ease}.site-footer:hover{opacity:.7}.footer-content{max-width:1200px;margin:0 auto;display:flex;justify-content:center;align-items:center;gap:.25rem}.footer-nav{display:contents}.footer-links{list-style:none;padding:0;margin:0;display:flex;align-items:center;gap:.125rem}.footer-links li{margin:0;display:flex;align-items:center}.footer-links li:not(:last-child):after{content:"·";color:#94a3b8;margin-left:.125rem;font-size:.625rem}@media(prefers-color-scheme:dark){.footer-links li:not(:last-child):after{color:#475569}}.footer-links a{color:#94a3b8;text-decoration:none;font-size:.625rem;padding:.125rem .25rem;border-radius:2px;transition:color .15s ease}.footer-links a:hover{color:#64748b}@media(prefers-color-scheme:dark){.footer-links a{color:#475569}.footer-links a:hover{color:#64748b}}.footer-copyright{display:none}.app-update{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:90;display:flex;align-items:center;justify-content:space-between;gap:24px;width:min(360px,calc(100% - 24px));padding:8px 12px 8px 16px;border:1px solid var(--badge-border, #d1d5db);border-radius:14px;background:var(--badge-bg, #f3f4f6);color:var(--text-primary, #1a1a1a);box-shadow:0 4px 24px #0002;font-size:14px}.app-update button{min-height:44px;padding:0 16px;border:0;border-radius:9px;background:var(--btn-bg, #111);color:var(--btn-text, white);font:inherit;font-weight:600;cursor:pointer}.app-update button:disabled{opacity:.65;cursor:wait}.layout-container:has(.app-update) .weight-dock-anchor{bottom:calc(92px + env(safe-area-inset-bottom,0px))}.layout-container:has(.app-update) .main-container{padding-bottom:188px}:root{--text-primary: #1a1a1a;--text-secondary: #595959;--btn-bg: #111;--btn-text: white;--btn-hover-bg: #333;--badge-bg: #f3f4f6;--badge-text: #4b5563;--badge-border: #e5e7eb;--focus-ring: #2563eb;--focus-ring-offset: 2px}@media(prefers-color-scheme:dark){:root{--text-primary: #ededed;--text-secondary: #b3b3b3;--btn-bg: #ededed;--btn-text: #171717;--btn-hover-bg: #e5e5e5;--badge-bg: #262626;--badge-text: #d4d4d4;--badge-border: #404040;--focus-ring: #60a5fa}}.skip-link{position:absolute;top:-100px;left:50%;transform:translate(-50%);background-color:var(--btn-bg);color:var(--btn-text);padding:.75rem 1.5rem;border-radius:0 0 8px 8px;z-index:1000;text-decoration:none;font-weight:500;transition:top .2s ease}.skip-link:focus{top:0;outline:3px solid var(--focus-ring);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.layout-container{font-family:Inter,system-ui,-apple-system,sans-serif;width:100%;margin:0;padding:0;color:var(--text-primary);height:100dvh;display:flex;flex-direction:column;overflow:hidden}.layout-container>main{flex:1;display:flex;flex-direction:column;overflow:hidden;width:100%;max-width:1200px;margin:0 auto;padding:0 1rem}.header{display:flex;justify-content:space-between;align-items:center;padding:.6rem 1rem}.logo{font-size:1.5rem;font-weight:700;color:var(--text-primary);letter-spacing:-.025em}.nav-container{display:flex;gap:1rem;align-items:center}.auth-wrapper{position:relative;display:flex;align-items:center;justify-content:flex-end;min-width:2.5rem;min-height:2.5rem;padding:.5rem 0;margin:-.5rem 0}.profile-loading-placeholder{width:2.5rem;height:2.5rem;box-sizing:border-box;border:1px solid var(--badge-border);border-radius:50%;background:var(--badge-bg);overflow:hidden}.profile-loading-placeholder:after{content:"";display:block;width:100%;height:100%;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.5) 45%,transparent 70%);transform:translate(-100%);animation:profile-loading-shimmer 1.4s ease-in-out infinite}@keyframes profile-loading-shimmer{to{transform:translate(100%)}}.nav-btn{color:var(--text-secondary);text-decoration:none;font-weight:500;font-size:.9rem;transition:color .2s ease}.nav-btn:hover{color:var(--text-primary)}.login-btn{background-color:var(--btn-bg);color:var(--btn-text);padding:.6rem 1.2rem;border-radius:9999px;font-weight:500;font-size:.9rem;cursor:pointer;transition:all .2s ease;border:none}.login-btn:hover{background-color:var(--btn-hover-bg);transform:translateY(-1px)}.login-btn:focus{outline:3px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.login-btn:focus:not(:focus-visible){outline:none}.login-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.login-btn.full-width{width:100%}.profile-btn{background:none;border:none;padding:0;cursor:pointer;border-radius:50%;overflow:hidden;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--badge-border)}.profile-btn:focus{outline:3px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.profile-btn:focus:not(:focus-visible){outline:none}.profile-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:var(--focus-ring-offset)}.avatar-img{width:100%;height:100%;object-fit:cover}.avatar-placeholder{width:100%;height:100%;background-color:var(--badge-bg);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:1rem}.login-dropdown{position:absolute;top:100%;right:0;width:min(350px,calc(100vw - 24px));background-color:#fff;border-radius:12px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;z-index:50;margin-top:0;border:1px solid var(--badge-border);padding:1rem}.user-menu{display:flex;flex-direction:column;gap:.5rem}.user-info{padding:.5rem 0;margin-bottom:.5rem;color:var(--text-primary);font-weight:500;text-align:center}@media(prefers-color-scheme:dark){.login-dropdown{background-color:#10161e;border-color:#282e38;--login-bg: #171717}}.layout-container.with-sidebar{position:relative;height:auto;min-height:100dvh;overflow:visible}.layout-container.with-sidebar>main{flex:1;min-height:0;margin-top:-44px;padding:0 16px;overflow:visible}.with-sidebar .header{min-height:64px;padding:10px 12px}.with-sidebar .nav-container{margin-left:auto}.with-sidebar .profile-btn,.with-sidebar .profile-loading-placeholder{width:44px;height:44px}.with-sidebar .avatar-placeholder{background:#2e611e;color:#f3f4f6;font-size:24px;font-weight:400}.with-sidebar .login-dropdown{width:min(350px,calc(100vw - 24px))}@media(prefers-color-scheme:dark){.layout-container.with-sidebar{background:#050a11;--badge-bg: #10161e;--badge-border: #282e38}}.profile-export-error{margin:4px 0;color:#b1363e;font-size:13px}@media(prefers-color-scheme:dark){.profile-export-error{color:#ff9ca4}}.user-menu{--menu-button-bg: #f5f6f8;--menu-button-hover: #e9edf1;--menu-border: #e1e5ea;--menu-text: #202833;--menu-danger: #a72d36}.user-menu .profile-menu-button{width:100%;min-height:44px;padding:12px 16px;border:1px solid var(--menu-border);border-radius:12px;background:var(--menu-button-bg);color:var(--menu-text);font:inherit;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .15s ease}.user-menu .profile-menu-button:hover{background:var(--menu-button-hover)}.user-menu .profile-menu-button:disabled{opacity:.6;cursor:wait}.user-menu .profile-sign-out{color:var(--menu-danger)}@media(prefers-color-scheme:dark){.user-menu{--menu-button-bg: #1a232f;--menu-button-hover: #253244;--menu-border: #303c4c;--menu-text: #edf1f7;--menu-danger: #ffabb2}}
