:root{--color-primary-50: #eff6ff;--color-primary-100: #dbeafe;--color-primary-200: #bfdbfe;--color-primary-300: #93c5fd;--color-primary-400: #60a5fa;--color-primary-500: #3b82f6;--color-primary-600: #2563eb;--color-primary-700: #1d4ed8;--color-primary-800: #1e40af;--color-primary-900: #1e3a8a;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-info: #3b82f6;--sticky-yellow: #fff9c4;--sticky-pink: #fce4ec;--sticky-blue: #e3f2fd;--sticky-green: #e8f5e9;--sticky-orange: #fff3e0;--canvas-background: #f8fafc;--canvas-dot-color: #cbd5e1;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.75;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--border-width: 1px;--border-color: var(--color-gray-200);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .06);--shadow-sticky: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-sticky-hover: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1);--transition-spring: .4s cubic-bezier(.175, .885, .32, 1.275);--z-canvas: 1;--z-objects: 10;--z-selected-object: 20;--z-toolbar: 100;--z-context-toolbar: 110;--z-header: 200;--z-modal-backdrop: 300;--z-modal: 310;--z-tooltip: 400}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;font-family:var(--font-family);color:var(--color-gray-900);background-color:var(--color-gray-50);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-x:none}button{cursor:pointer;border:none;background:none;font-family:inherit}input,textarea,select{font-family:inherit}a{color:inherit;text-decoration:none}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-weight:var(--font-medium);font-size:var(--text-sm);transition:all var(--transition-fast);cursor:pointer;border:none;line-height:var(--leading-normal);position:relative;overflow:hidden}.btn:active{transform:scale(.97)}.btn-primary{background-color:var(--color-primary-500);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover{background-color:var(--color-primary-600);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-primary:active{background-color:var(--color-primary-700);transform:translateY(0) scale(.97)}.btn-secondary{background-color:#fff;border:var(--border-width) solid var(--color-gray-300);color:var(--color-gray-700);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background-color:var(--color-gray-50);border-color:var(--color-gray-400);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-secondary:active{transform:translateY(0) scale(.97)}.btn-danger{background-color:var(--color-error);color:#fff;box-shadow:var(--shadow-sm)}.btn-danger:hover{opacity:.9;transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-danger:active{transform:translateY(0) scale(.97)}.btn-icon{width:36px;height:36px;padding:0;background-color:transparent;color:var(--color-gray-600);border-radius:var(--radius-md);transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.btn-icon:hover{background-color:var(--color-gray-100);color:var(--color-gray-800);transform:scale(1.05)}.btn-icon:active{transform:scale(.95)}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important;box-shadow:none!important}.input-field{width:100%;height:40px;padding:0 var(--space-3);border:var(--border-width) solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--text-sm);transition:all var(--transition-fast);background-color:#fff}.input-field:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-100)}.input-field:disabled{background-color:var(--color-gray-100);cursor:not-allowed}.ui-card{background-color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:var(--border-width) solid var(--color-gray-200);transition:all var(--transition-fast)}.ui-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-gray-300)}.ui-card--padding-none{padding:0}.ui-card--padding-sm{padding:var(--space-4)}.ui-card--padding-md{padding:var(--space-6)}.ui-card--padding-lg{padding:var(--space-8)}.ui-input-container{display:flex;flex-direction:column;gap:var(--space-1);width:100%}.ui-input-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-gray-700)}.ui-input-field{height:40px;padding:0 var(--space-3);font-size:var(--text-sm);color:var(--color-gray-900);background-color:#fff;border:var(--border-width) solid var(--color-gray-300);border-radius:var(--radius-md);transition:all var(--transition-fast)}.ui-input-field::placeholder{color:var(--color-gray-400)}.ui-input-field:focus{outline:none;border-color:var(--color-primary-500);box-shadow:var(--shadow-sm)}.ui-input-field.error{border-color:var(--color-error)}.ui-input-field.error:focus{border-color:var(--color-error);box-shadow:0 0 0 1px var(--color-error)}.ui-input-error-message{font-size:var(--text-xs);color:var(--color-error);margin:0}.ui-button{display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:var(--font-medium);border-radius:var(--radius-md);transition:all var(--transition-fast);cursor:pointer;border:var(--border-width) solid transparent;position:relative;overflow:hidden;line-height:var(--leading-normal)}.ui-button:disabled{opacity:.6;cursor:not-allowed;transform:none!important;box-shadow:none!important}.ui-button:active{transform:scale(.97)}.ui-button--primary{background-color:var(--color-primary-500);color:#fff;padding:var(--space-2) var(--space-4);box-shadow:var(--shadow-sm)}.ui-button--primary:hover:not(:disabled){background-color:var(--color-primary-600);box-shadow:var(--shadow-md);transform:translateY(-1px)}.ui-button--primary:active:not(:disabled){background-color:var(--color-primary-700);transform:translateY(0) scale(.97)}.ui-button--secondary{background-color:#fff;border-color:var(--color-gray-300);color:var(--color-gray-700);padding:var(--space-2) var(--space-4);box-shadow:var(--shadow-sm)}.ui-button--secondary:hover:not(:disabled){background-color:var(--color-gray-50);border-color:var(--color-gray-400);transform:translateY(-1px);box-shadow:var(--shadow-md)}.ui-button--secondary:active:not(:disabled){transform:translateY(0) scale(.97)}.ui-button--danger{background-color:var(--color-error);color:#fff;padding:var(--space-2) var(--space-4);box-shadow:var(--shadow-sm)}.ui-button--danger:hover:not(:disabled){opacity:.9;transform:translateY(-1px);box-shadow:var(--shadow-md)}.ui-button--danger:active:not(:disabled){transform:translateY(0) scale(.97)}.ui-button--icon{width:36px;height:36px;padding:0;background-color:transparent;color:var(--color-gray-600);transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.ui-button--icon:hover:not(:disabled){background-color:var(--color-gray-100);color:var(--color-gray-800);transform:scale(1.05)}.ui-button--icon:active:not(:disabled){background-color:var(--color-gray-200);transform:scale(.95)}.signin-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background-color:var(--color-gray-50);padding:var(--space-4)}.signin-card{width:100%;max-width:400px}.signin-title{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--color-primary-500);text-align:center;margin:0 0 var(--space-8) 0}.signin-form{display:flex;flex-direction:column;gap:var(--space-4)}.signin-submit-button{margin-top:var(--space-6);width:100%}.signin-footer{margin-top:var(--space-4);text-align:center;font-size:var(--text-sm);color:var(--color-gray-500)}.signin-link{color:var(--color-primary-500);font-weight:var(--font-medium);margin-left:var(--space-1)}.signin-link:hover{text-decoration:underline}.signup-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background-color:var(--color-gray-50);padding:var(--space-4)}.signup-card{width:100%;max-width:400px}.signup-title{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--color-primary-500);text-align:center;margin:0 0 var(--space-8) 0}.signup-form{display:flex;flex-direction:column;gap:var(--space-4)}.signup-submit-button{margin-top:var(--space-6);width:100%}.signup-footer{margin-top:var(--space-4);text-align:center;font-size:var(--text-sm);color:var(--color-gray-500)}.signup-link{color:var(--color-primary-500);font-weight:var(--font-medium);margin-left:var(--space-1)}.signup-link:hover{text-decoration:underline}.modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0006;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal-backdrop);opacity:0;animation:fadeIn var(--transition-normal) forwards}.modal-backdrop.closing{animation:fadeOut var(--transition-fast) forwards}.modal-container{background-color:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-2xl);width:100%;max-width:480px;position:relative;z-index:var(--z-modal);transform:translateY(10px) scale(.95);animation:slideIn var(--transition-spring) forwards}.modal-backdrop.closing .modal-container{animation:slideOut var(--transition-fast) forwards}.modal-header{padding:var(--space-4) var(--space-6);border-bottom:var(--border-width) solid var(--border-color);display:flex;align-items:center;justify-content:space-between}.modal-title{margin:0;font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-gray-900)}.modal-close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);color:var(--color-gray-500);transition:background-color var(--transition-fast),color var(--transition-fast);cursor:pointer}.modal-close-button:hover{background-color:var(--color-gray-100);color:var(--color-gray-700)}.modal-content{padding:var(--space-6)}.modal-footer{padding:var(--space-4) var(--space-6);border-top:var(--border-width) solid var(--border-color);display:flex;justify-content:flex-end;gap:var(--space-3);background-color:var(--color-gray-50);border-bottom-left-radius:var(--radius-xl);border-bottom-right-radius:var(--radius-xl)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideIn{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slideOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(10px) scale(.98)}}.create-board-field{margin-bottom:var(--space-2)}.create-board-label{display:block;margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-gray-700)}.common-header{height:56px;background-color:#fff;border-bottom:var(--border-width) solid var(--color-gray-200);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-6);position:relative;z-index:var(--z-header)}.common-header__left{display:flex;align-items:center}.common-header__logo{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--color-primary-500);margin-right:var(--space-6);text-decoration:none}.common-header__logo--text{cursor:default}.common-header__divider{width:1px;height:24px;background-color:var(--color-gray-300);margin-right:var(--space-6)}.common-header__title{font-size:var(--text-lg);font-weight:var(--font-medium);color:var(--color-gray-700);margin:0}.common-header__right{display:flex;align-items:center;gap:var(--space-4)}.common-header__user{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-gray-700)}.common-header__logout{width:32px;height:32px;border-radius:var(--radius-sm);background-color:transparent;color:var(--color-gray-600);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.common-header__logout:hover{background-color:var(--color-gray-100);color:var(--color-error)}.board-list-page{min-height:100vh;display:flex;flex-direction:column}.board-list-main{flex:1;padding:var(--space-8);max-width:1200px;width:100%;margin:0 auto}.action-bar{margin-bottom:var(--space-6)}.add-icon{margin-right:var(--space-2)}.empty-state{text-align:center;padding:var(--space-12);color:var(--color-gray-500);background-color:#fff;border-radius:var(--radius-lg);border:var(--border-width) dashed var(--color-gray-300)}.empty-icon{margin-bottom:var(--space-4);color:var(--color-gray-400)}.empty-text{margin:0}.empty-subtext{font-size:var(--text-sm);margin-top:var(--space-2)}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}.board-card{background-color:#fff;border-radius:var(--radius-lg);border:var(--border-width) solid var(--color-gray-200);padding:var(--space-4);cursor:pointer;transition:all var(--transition-fast);position:relative;height:160px;display:flex;flex-direction:column;text-decoration:none;color:inherit}.board-card:hover{transform:scale(1.02);box-shadow:var(--shadow-md);border-color:var(--color-gray-300)}.board-thumbnail{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--color-gray-400)}.board-info{margin-top:var(--space-3)}.board-title{margin:0 0 var(--space-1) 0;font-size:var(--text-base);font-weight:var(--font-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-meta{margin:0;font-size:var(--text-xs);color:var(--color-gray-500)}.board-delete-button{position:absolute;top:var(--space-2);right:var(--space-2);width:28px;height:28px;border-radius:var(--radius-sm);background-color:transparent;color:var(--color-gray-400);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:all var(--transition-fast);z-index:10}.board-card:hover .board-delete-button{opacity:1}.board-delete-button:hover{background-color:var(--color-error);color:#fff}.draggable-object-container{position:absolute;touch-action:none;-webkit-user-select:none;user-select:none}.draggable-object-container--editing{touch-action:auto;-webkit-user-select:text;user-select:text}.sticky-note{padding:16px;border-radius:var(--radius-sm);overflow:hidden;font-size:var(--text-base);line-height:var(--leading-relaxed);font-family:var(--font-family);color:#1f2937;display:flex;justify-content:center;align-items:center;text-align:center;word-break:break-word;touch-action:none;transition:box-shadow var(--transition-normal),transform var(--transition-normal)}.sticky-note--editing{-webkit-user-select:text;user-select:text;cursor:text}.sticky-note--draggable:not(.sticky-note--editing){-webkit-user-select:none;user-select:none;cursor:grab}.sticky-note--selected{z-index:10;transform:scale(1.02);box-shadow:0 0 0 2px var(--color-primary-500),var(--shadow-xl)}.sticky-note--default{box-shadow:var(--shadow-sticky);transform:scale(1);z-index:1}.sticky-note__textarea{width:100%;height:100%;background:transparent;border:none;resize:none;outline:none;text-align:center;font-family:inherit;font-size:inherit;color:inherit;overflow:hidden}.text-object{font-size:16px;line-height:1.5;padding:8px;background-color:transparent;min-height:40px;pointer-events:auto}.text-object--selected{cursor:move;border:1px solid #2196f3}.text-object--default{cursor:pointer;border:1px solid transparent}.text-object__edit-container{cursor:text;border:1px solid #2196f3;z-index:100}.text-object__textarea{width:100%;height:auto;field-sizing:content;resize:none;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;overflow:hidden}.text-object__content-text{white-space:pre-wrap;word-break:break-word;pointer-events:none}.image-object-container{max-width:100%}.image-object-container--selected{cursor:move;border:1px solid #2196f3;box-shadow:0 0 0 1px #2196f3}.image-object-container--default{cursor:pointer;border:none;box-shadow:none}.image-object-img{display:block;width:100%;height:100%;object-fit:fill;pointer-events:none}.context-toolbar{position:absolute;display:flex;align-items:center;background:#fff;padding:8px;border-radius:4px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;z-index:1000;gap:8px;transform:translate(-50%)}.context-toolbar__colors{display:flex;gap:4px}.context-toolbar__color-btn{width:24px;height:24px;border-radius:50%;border:1px solid rgba(0,0,0,.1);cursor:pointer;transition:transform .1s}.context-toolbar__color-btn:hover{transform:scale(1.1)}.context-toolbar__color-btn--active{border:2px solid #3b82f6}.context-toolbar__divider{width:1px;height:24px;background-color:#e5e7eb}.context-toolbar__delete-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:4px;color:#ef4444;cursor:pointer;font-size:18px}.context-toolbar__delete-btn:hover{background-color:#fef2f2}.canvas-container{width:100%;height:100%;overflow:hidden;position:relative;background-color:#fbfbfb;touch-action:none;overscroll-behavior:none}.canvas-grid{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;background-image:radial-gradient(#ddd 1px,transparent 1px);z-index:0}.canvas-content{position:absolute;top:0;left:0;width:100%;height:100%;transform-origin:0 0;z-index:1}.zoom-control{position:absolute;bottom:20px;right:20px;background-color:#fff;border:1px solid #e0e0e0;border-radius:8px;display:flex;align-items:center;padding:4px;box-shadow:0 2px 4px #0000001a;z-index:100}.zoom-control__button{width:32px;height:32px;border:none;background:none;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.2rem;color:#050038;transition:background-color .2s}.zoom-control__button:hover{background-color:#f0f0f0}.zoom-control__percentage{min-width:50px;text-align:center;font-size:.9rem;font-weight:500;color:#050038;padding:0 8px;-webkit-user-select:none;user-select:none}.board-page{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.board-page__content{display:flex;flex:1;overflow:hidden}.board-page__canvas-area{flex:1;position:relative;overflow:hidden}.toolbar{width:60px;background-color:#fff;border-right:1px solid #e0e0e0;display:flex;flex-direction:column;align-items:center;padding:10px 0;box-shadow:2px 0 4px #0000000d;z-index:90}.toolbar__group{display:flex;flex-direction:column;gap:8px}.toolbar__button{width:40px;height:40px;border:1px solid transparent;background:none;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.toolbar__button:hover{background-color:#f0f0f0}.toolbar__button--active{background-color:#e5efff;color:#4262ff;border-color:#4262ff}.toolbar__icon{font-size:1.2rem}
