:root{--color-primary: #4A90A4;--color-primary-dark: #3A7A8E;--color-secondary: #6B8E23;--color-success: #28a745;--color-warning: #ffc107;--color-danger: #dc3545;--color-gray-100: #f8f9fa;--color-gray-200: #e9ecef;--color-gray-300: #dee2e6;--color-gray-400: #ced4da;--color-gray-500: #adb5bd;--color-gray-600: #6c757d;--color-gray-700: #495057;--color-gray-800: #343a40;--color-gray-900: #212529;--color-white: #ffffff;--color-black: #000000;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1), 0 2px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1), 0 4px 6px rgba(0, 0, 0, .05);--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--radius-full: 9999px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--transition-fast: .15s ease;--transition: .2s ease;--transition-slow: .3s ease}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Hiragino Sans,Noto Sans JP,sans-serif;line-height:1.5;color:var(--color-gray-900);background-color:var(--color-gray-100);min-height:100vh;min-height:100dvh}#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none}input,select,textarea{font-family:inherit;font-size:inherit}.container{max-width:600px;margin:0 auto;padding:0 var(--spacing-md)}.card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:var(--spacing-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius);font-weight:500;transition:all var(--transition-fast)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-white)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-secondary{background:var(--color-gray-200);color:var(--color-gray-800)}.btn-secondary:hover:not(:disabled){background:var(--color-gray-300)}.btn-success{background:var(--color-success);color:var(--color-white)}.btn-success:hover:not(:disabled){background:#218838}.btn-danger{background:var(--color-danger);color:var(--color-white)}.btn-danger:hover:not(:disabled){background:#c82333}.btn-outline{background:transparent;border:1px solid var(--color-gray-300);color:var(--color-gray-700)}.btn-outline:hover:not(:disabled){background:var(--color-gray-100)}.btn-lg{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-lg)}.btn-block{width:100%}.form-group{margin-bottom:var(--spacing-md)}.form-label{display:block;margin-bottom:var(--spacing-xs);font-weight:500;color:var(--color-gray-700)}.form-input{width:100%;padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-gray-300);border-radius:var(--radius);background:var(--color-white);transition:border-color var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #4a90a41a}.form-input::placeholder{color:var(--color-gray-500)}.text-center{text-align:center}.text-sm{font-size:var(--font-size-sm)}.text-muted{color:var(--color-gray-600)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.spinner{width:24px;height:24px;border:3px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.safe-area-top{padding-top:env(safe-area-inset-top,0)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,0)}
