.sidebar{background:hsl(var(--sidebar));color:hsl(var(--sidebar-foreground));border-right:1px solid hsl(var(--sidebar-border));flex-direction:column;flex-shrink:0;height:100vh;transition:width .2s;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar.open{width:240px}.sidebar.closed{width:64px}.sidebar-header{border-bottom:1px solid hsl(var(--sidebar-border));flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;height:61px;padding:0 12px;display:flex}.sidebar.closed .sidebar-header{justify-content:center}.sidebar-title{align-items:center;margin:0;padding-left:4px;line-height:0;display:flex}.sidebar-title img{width:auto;height:22px;display:block}.sidebar-toggle{color:inherit;cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition), opacity var(--transition);opacity:.85;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:flex}.sidebar-toggle:hover{background:hsl(var(--sidebar-accent));opacity:1}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:8px;display:flex}.nav-item{color:hsl(var(--sidebar-muted-foreground));cursor:pointer;border-radius:var(--radius-md);height:36px;transition:background-color var(--transition), color var(--transition);text-align:left;font-size:var(--text-base);background:0 0;border:none;align-items:center;gap:12px;padding:0 10px;font-weight:500;display:flex}.sidebar.closed .nav-item{justify-content:center;padding:0}.nav-item:hover{background:hsl(var(--sidebar-accent) / .6);color:hsl(var(--sidebar-foreground))}.nav-item.active{background:hsl(var(--sidebar-accent));color:hsl(var(--sidebar-foreground))}.nav-icon{opacity:.8;width:18px;height:18px;transition:opacity var(--transition);flex-shrink:0}.nav-item:hover .nav-icon,.nav-item.active .nav-icon{opacity:1}.nav-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar.closed .nav-label{display:none}.sidebar-footer{border-top:1px solid hsl(var(--sidebar-border));font-size:var(--text-xs);flex-shrink:0;padding:16px}.sidebar.closed .sidebar-footer{padding:8px}.sidebar-info{color:hsl(var(--sidebar-muted-foreground));white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.sidebar::-webkit-scrollbar-thumb{background:#ffffff29}.sidebar::-webkit-scrollbar-thumb:hover{background:#ffffff47}.alert-container{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.alert{border-radius:var(--radius-md);min-width:280px;max-width:400px;font-size:var(--text-base);box-shadow:var(--shadow-md);border:1px solid #0000;padding:12px 16px;font-weight:500;line-height:1.45;animation:.12s alert-in}@keyframes alert-in{0%{opacity:0}to{opacity:1}}.alert--success{background:hsl(var(--status-success-bg));color:hsl(var(--status-success));border-color:hsl(var(--status-success) / .22)}.alert--error{background:hsl(var(--status-error-bg));color:hsl(var(--status-error));border-color:hsl(var(--status-error) / .22)}.alert--info{background:hsl(var(--status-info-bg));color:hsl(var(--status-info));border-color:hsl(var(--status-info) / .22)}.modal-overlay{background:hsl(var(--foreground) / .4);z-index:1000;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:hsl(var(--popover));color:hsl(var(--popover-foreground));border:1px solid hsl(var(--border));border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;min-width:420px;max-width:90vw;max-height:90vh;display:flex;overflow-y:auto}.modal-header{border-bottom:1px solid hsl(var(--border));justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;display:flex}.modal-title{font-size:var(--text-lg);letter-spacing:-.01em;color:hsl(var(--foreground));margin:0;font-weight:600}.modal-close{cursor:pointer;width:28px;height:28px;color:hsl(var(--muted-foreground));border-radius:var(--radius-sm);transition:color var(--transition), background-color var(--transition);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.modal-close:hover{color:hsl(var(--foreground));background:hsl(var(--accent))}.modal-body{flex:1;padding:24px}.modal--wide{min-width:700px}.project-switcher{flex-shrink:0;margin-right:12px;position:relative}.project-switcher-button{background:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:var(--radius-md);max-width:220px;color:hsl(var(--foreground));font-size:var(--text-sm);cursor:pointer;transition:background-color var(--transition);align-items:center;gap:6px;padding:6px 10px;font-weight:500;display:flex}.project-switcher-button:hover{background:hsl(var(--accent))}.project-switcher-icon{width:16px;height:16px;color:hsl(var(--muted-foreground));flex-shrink:0}.project-switcher-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-switcher-caret{color:hsl(var(--muted-foreground));font-size:var(--text-xs)}.project-modal{background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius-lg);width:240px;box-shadow:var(--shadow-md);z-index:100;flex-direction:column;padding:4px;display:flex;position:absolute;top:42px;left:0}.project-modal-title,.project-modal-empty{font-size:var(--text-sm);color:hsl(var(--muted-foreground));padding:8px 10px;font-weight:400}.project-modal-delim{background:hsl(var(--border));height:1px;margin:4px 0}.project-modal-item{color:hsl(var(--foreground));text-align:left;font-size:var(--text-base);cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition);background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-weight:400;display:flex}.project-modal-item:hover:not(:disabled){background:hsl(var(--accent))}.project-modal-item:disabled{color:hsl(var(--muted-foreground));cursor:not-allowed}.project-modal-item-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-modal-item.is-current{font-weight:500}.project-modal-check{color:hsl(var(--foreground-secondary));flex-shrink:0}.project-modal-delete{color:hsl(var(--destructive))}.project-modal-delete:hover:not(:disabled){background:hsl(var(--destructive) / .08)}.project-modal-form{flex-direction:column;gap:8px;padding:4px;display:flex}.project-modal-input{border:1px solid hsl(var(--input));border-radius:var(--radius-sm);background:hsl(var(--card));width:100%;color:hsl(var(--foreground));font-size:var(--text-sm);padding:8px 10px}.project-modal-input:focus{border-color:hsl(var(--border-strong));outline:none}.project-modal-form-actions{gap:8px;display:flex}.project-modal-submit,.project-modal-cancel{border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;transition:opacity var(--transition), background-color var(--transition);flex:1;padding:7px 10px}.project-modal-submit{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:1px solid hsl(var(--primary))}.project-modal-submit:disabled{opacity:.5;cursor:not-allowed}.project-modal-cancel{color:hsl(var(--foreground));border:1px solid hsl(var(--border));background:0 0}.project-modal-cancel:hover{background:hsl(var(--accent))}.project-confirm{flex-direction:column;gap:12px;min-width:320px;max-width:420px;display:flex}.project-confirm-text{font-size:var(--text-base);color:hsl(var(--foreground-secondary));margin:0;line-height:1.5}.project-confirm-list{font-size:var(--text-base);color:hsl(var(--foreground-secondary));flex-direction:column;gap:6px;margin:0;padding-left:20px;line-height:1.5;display:flex}.project-confirm-warn{font-size:var(--text-sm);color:hsl(var(--destructive));margin:0;font-weight:500}.project-confirm-actions{justify-content:flex-end;gap:8px;padding-top:8px;display:flex}.project-confirm-cancel{background:hsl(var(--card));border:1px solid hsl(var(--input));border-radius:var(--radius-md);height:34px;font-size:var(--text-base);color:hsl(var(--foreground));cursor:pointer;transition:background-color var(--transition);padding:0 16px;font-weight:500}.project-confirm-cancel:hover:not(:disabled){background:hsl(var(--accent))}.project-confirm-delete{background:hsl(var(--destructive));border-radius:var(--radius-md);height:34px;box-shadow:var(--shadow-xs);font-size:var(--text-base);color:hsl(var(--destructive-foreground));cursor:pointer;transition:background-color var(--transition);border:none;padding:0 16px;font-weight:500}.project-confirm-delete:hover:not(:disabled){background:hsl(var(--destructive) / .9)}.project-confirm-delete:disabled,.project-confirm-cancel:disabled{opacity:.6;cursor:not-allowed}.custom-input{border:1px solid hsl(var(--input));border-radius:var(--radius-md);background:hsl(var(--card));width:100%;height:36px;color:hsl(var(--foreground));font-size:var(--text-base);box-shadow:var(--shadow-xs);transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:0 12px}.custom-input::placeholder{color:hsl(var(--muted-foreground))}.custom-input:focus,.custom-input:focus-visible{border-color:hsl(var(--ring));box-shadow:0 0 0 3px hsl(var(--ring) / .12);outline:none}.custom-input:disabled{background:hsl(var(--muted));color:hsl(var(--muted-foreground));cursor:not-allowed}.custom-input--error{border-color:hsl(var(--destructive))}.custom-input--error:focus,.custom-input--error:focus-visible{border-color:hsl(var(--destructive));box-shadow:0 0 0 3px hsl(var(--destructive) / .12)}.tur-form{flex-direction:column;gap:18px;min-width:420px;display:flex}.tur-hint{font-size:var(--text-sm);color:hsl(var(--muted-foreground));margin:0;line-height:1.55}.tur-field{flex-direction:column;gap:6px;display:flex}.tur-label{font-size:var(--text-sm);color:hsl(var(--foreground-secondary));font-weight:500}.tur-textarea{border:1px solid hsl(var(--input));border-radius:var(--radius-md);background:hsl(var(--card));width:100%;font-size:var(--text-base);color:hsl(var(--foreground));resize:vertical;box-sizing:border-box;transition:border-color var(--transition), box-shadow var(--transition);outline:none;padding:8px 12px;font-family:inherit;line-height:1.5}.tur-textarea:focus,.tur-textarea:focus-visible{border-color:hsl(var(--ring));box-shadow:0 0 0 3px hsl(var(--ring) / .12);outline:none}.tur-error{font-size:var(--text-sm);color:hsl(var(--destructive));margin:0}.tur-actions{border-top:1px solid hsl(var(--border));justify-content:flex-end;gap:8px;padding-top:16px;display:flex}.tur-btn-cancel{background:hsl(var(--card));border:1px solid hsl(var(--input));border-radius:var(--radius-md);height:36px;font-size:var(--text-base);color:hsl(var(--foreground));cursor:pointer;transition:background-color var(--transition);padding:0 16px;font-weight:500}.tur-btn-cancel:hover{background:hsl(var(--accent))}.tur-btn-submit{background:hsl(var(--primary));height:36px;color:hsl(var(--primary-foreground));border-radius:var(--radius-md);box-shadow:var(--shadow-xs);font-size:var(--text-base);cursor:pointer;transition:background-color var(--transition);border:none;padding:0 20px;font-weight:500}.tur-btn-submit:hover:not(:disabled){background:hsl(var(--primary) / .88)}.tur-btn-submit:disabled{opacity:.5;cursor:not-allowed}.app-layout{background:hsl(var(--background));min-height:100vh;display:flex}.app-container{flex-direction:column;flex:1;min-width:0;max-height:100vh;display:flex;overflow:hidden}.app-header{background:hsl(var(--card));border-bottom:1px solid hsl(var(--border));flex-shrink:0;justify-content:space-between;align-items:center;gap:24px;height:61px;padding:0 24px;display:flex}.header-left{align-items:center;min-width:0;display:flex}.page-title{font-size:var(--text-xl);letter-spacing:-.01em;color:hsl(var(--foreground));white-space:nowrap;text-overflow:ellipsis;margin:0;font-weight:600;overflow:hidden}.header-right{align-items:center;gap:12px;display:flex}.balance-block{border:1px solid hsl(var(--border));border-radius:var(--radius-md);background:hsl(var(--card));height:36px;box-shadow:var(--shadow-xs);align-items:stretch;display:flex;overflow:hidden}.balance-amount{font-size:var(--text-base);font-variant-numeric:tabular-nums;color:hsl(var(--foreground));white-space:nowrap;justify-content:center;align-items:center;padding:0 14px;font-weight:500;display:flex}.balance-topup{background:hsl(var(--muted));color:hsl(var(--foreground));border:none;border-left:1px solid hsl(var(--border));font-size:var(--text-sm);white-space:nowrap;cursor:pointer;transition:background-color var(--transition);outline:none;justify-content:center;align-items:center;padding:0 14px;font-weight:500;display:flex}.balance-topup:hover{background:hsl(var(--accent))}.user-avatar{background:hsl(var(--primary));cursor:pointer;width:32px;height:32px;transition:opacity var(--transition);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;overflow:hidden}.user-avatar:hover{opacity:.85}.user-avatar-initial{width:100%;height:100%;font-size:var(--text-sm);color:hsl(var(--primary-foreground));-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-weight:600;display:flex}.user-modal{background:hsl(var(--popover));border:1px solid hsl(var(--border));border-radius:var(--radius-lg);width:200px;box-shadow:var(--shadow-md);z-index:100;flex-direction:column;padding:4px;display:flex;position:absolute;top:42px;right:0}.user-modal-email{font-size:var(--text-sm);color:hsl(var(--muted-foreground));white-space:nowrap;text-overflow:ellipsis;padding:8px 10px;font-weight:400;overflow:hidden}.user-modal-delim{background:hsl(var(--border));height:1px;margin:4px 0}.user-modal-item{color:hsl(var(--foreground));text-align:left;font-size:var(--text-base);cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition);background:0 0;border:none;padding:8px 10px;font-weight:400}.user-modal-item:hover{background:hsl(var(--accent))}.user-modal-logout{color:hsl(var(--destructive))}.user-modal-logout:hover{background:hsl(var(--destructive) / .08)}.app-main{flex:1;padding:24px;overflow-y:auto}.app-footer{background:hsl(var(--card));border-top:1px solid hsl(var(--border));text-align:center;font-size:var(--text-xs);color:hsl(var(--muted-foreground));flex-shrink:0;padding:12px 24px}:root{--background:240 5% 98%;--foreground:240 10% 4%;--foreground-secondary:240 5% 26%;--card:0 0% 100%;--popover:0 0% 100%;--popover-foreground:240 10% 4%;--muted:240 5% 96%;--muted-foreground:240 4% 46%;--accent:240 5% 92%;--primary:240 6% 10%;--primary-foreground:0 0% 100%;--secondary:240 5% 96%;--secondary-foreground:240 6% 10%;--destructive:0 72% 51%;--destructive-foreground:0 0% 100%;--link:221 60% 45%;--ring:221 60% 45%;--border:240 6% 90%;--border-strong:240 5% 84%;--input:240 6% 90%;--status-success:142 71% 36%;--status-success-bg:138 76% 97%;--status-error:0 72% 51%;--status-error-bg:0 86% 97%;--status-warning:21 90% 48%;--status-warning-bg:33 100% 96%;--status-warning-strong:21 80% 32%;--status-info:221 83% 53%;--status-info-bg:214 100% 97%;--status-neutral:240 4% 46%;--status-neutral-bg:240 5% 96%;--status-caution:45 93% 33%;--status-caution-bg:55 92% 95%;--status-danger:0 74% 42%;--code:240 6% 10%;--code-foreground:240 5% 84%;--code-toolbar:240 5% 14%;--code-border:240 5% 18%;--chart-series:211 68% 50%;--chart-series-hover:211 75% 62%;--chart-series-track:211 85% 89%;--chart-grid:240 6% 95%;--sidebar:240 6% 10%;--sidebar-foreground:0 0% 98%;--sidebar-muted-foreground:240 5% 80%;--sidebar-border:240 5% 18%;--sidebar-accent:240 5% 20%;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #0000000a;--shadow-sm:0 1px 3px 0 #0000000f, 0 1px 2px -1px #0000000a;--shadow-md:0 4px 12px -2px #00000014, 0 2px 6px -2px #0000000a;--shadow-lg:0 16px 40px -12px #00000029, 0 4px 12px -4px #0000000f;--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:16px;--text-xl:18px;--text-2xl:20px;--text-3xl:24px;--transition:.15s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);background:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.5}#root{display:contents}button,input,select,textarea,optgroup{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}h1,h2,h3,h4,h5,h6{letter-spacing:-.01em;font-weight:600;line-height:1.3}a{color:hsl(var(--link));text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}::selection{background:hsl(var(--primary) / .12)}*{scrollbar-width:thin;scrollbar-color:hsl(var(--foreground) / .18) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:hsl(var(--foreground) / .16);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:hsl(var(--foreground) / .28)}.text-ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.disabled-select{cursor:not-allowed;background:hsl(var(--muted))!important;color:hsl(var(--muted-foreground))!important}
